@andyagent/ainorix-ui 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/README.md +219 -0
- package/dist/ainorix-ui.cjs +2 -0
- package/dist/ainorix-ui.cjs.map +1 -0
- package/dist/ainorix-ui.js +2065 -0
- package/dist/ainorix-ui.js.map +1 -0
- package/dist/components/AAccordion/AAccordion.types.d.ts +13 -0
- package/dist/components/AAccordion/AAccordion.types.d.ts.map +1 -0
- package/dist/components/AAccordion/AAccordion.vue.d.ts +20 -0
- package/dist/components/AAccordion/AAccordion.vue.d.ts.map +1 -0
- package/dist/components/AAccordion/index.d.ts +3 -0
- package/dist/components/AAccordion/index.d.ts.map +1 -0
- package/dist/components/AAlert/AAlert.types.d.ts +14 -0
- package/dist/components/AAlert/AAlert.types.d.ts.map +1 -0
- package/dist/components/AAlert/AAlert.vue.d.ts +27 -0
- package/dist/components/AAlert/AAlert.vue.d.ts.map +1 -0
- package/dist/components/AAlert/index.d.ts +3 -0
- package/dist/components/AAlert/index.d.ts.map +1 -0
- package/dist/components/AAvatar/AAvatar.types.d.ts +12 -0
- package/dist/components/AAvatar/AAvatar.types.d.ts.map +1 -0
- package/dist/components/AAvatar/AAvatar.vue.d.ts +9 -0
- package/dist/components/AAvatar/AAvatar.vue.d.ts.map +1 -0
- package/dist/components/AAvatar/index.d.ts +3 -0
- package/dist/components/AAvatar/index.d.ts.map +1 -0
- package/dist/components/AAvatarGroup/AAvatarGroup.types.d.ts +10 -0
- package/dist/components/AAvatarGroup/AAvatarGroup.types.d.ts.map +1 -0
- package/dist/components/AAvatarGroup/AAvatarGroup.vue.d.ts +7 -0
- package/dist/components/AAvatarGroup/AAvatarGroup.vue.d.ts.map +1 -0
- package/dist/components/AAvatarGroup/index.d.ts +3 -0
- package/dist/components/AAvatarGroup/index.d.ts.map +1 -0
- package/dist/components/ABadge/ABadge.types.d.ts +14 -0
- package/dist/components/ABadge/ABadge.types.d.ts.map +1 -0
- package/dist/components/ABadge/ABadge.vue.d.ts +23 -0
- package/dist/components/ABadge/ABadge.vue.d.ts.map +1 -0
- package/dist/components/ABadge/index.d.ts +3 -0
- package/dist/components/ABadge/index.d.ts.map +1 -0
- package/dist/components/ABanner/ABanner.types.d.ts +14 -0
- package/dist/components/ABanner/ABanner.types.d.ts.map +1 -0
- package/dist/components/ABanner/ABanner.vue.d.ts +28 -0
- package/dist/components/ABanner/ABanner.vue.d.ts.map +1 -0
- package/dist/components/ABanner/index.d.ts +3 -0
- package/dist/components/ABanner/index.d.ts.map +1 -0
- package/dist/components/ABreadcrumbs/ABreadcrumbs.types.d.ts +12 -0
- package/dist/components/ABreadcrumbs/ABreadcrumbs.types.d.ts.map +1 -0
- package/dist/components/ABreadcrumbs/ABreadcrumbs.vue.d.ts +6 -0
- package/dist/components/ABreadcrumbs/ABreadcrumbs.vue.d.ts.map +1 -0
- package/dist/components/ABreadcrumbs/index.d.ts +3 -0
- package/dist/components/ABreadcrumbs/index.d.ts.map +1 -0
- package/dist/components/AButton/AButton.types.d.ts +22 -0
- package/dist/components/AButton/AButton.types.d.ts.map +1 -0
- package/dist/components/AButton/AButton.vue.d.ts +32 -0
- package/dist/components/AButton/AButton.vue.d.ts.map +1 -0
- package/dist/components/AButton/index.d.ts +3 -0
- package/dist/components/AButton/index.d.ts.map +1 -0
- package/dist/components/ACard/ACard.types.d.ts +16 -0
- package/dist/components/ACard/ACard.types.d.ts.map +1 -0
- package/dist/components/ACard/ACard.vue.d.ts +23 -0
- package/dist/components/ACard/ACard.vue.d.ts.map +1 -0
- package/dist/components/ACard/index.d.ts +3 -0
- package/dist/components/ACard/index.d.ts.map +1 -0
- package/dist/components/AChartFrame/AChartFrame.types.d.ts +11 -0
- package/dist/components/AChartFrame/AChartFrame.types.d.ts.map +1 -0
- package/dist/components/AChartFrame/AChartFrame.vue.d.ts +19 -0
- package/dist/components/AChartFrame/AChartFrame.vue.d.ts.map +1 -0
- package/dist/components/AChartFrame/index.d.ts +3 -0
- package/dist/components/AChartFrame/index.d.ts.map +1 -0
- package/dist/components/ACheckbox/ACheckbox.types.d.ts +18 -0
- package/dist/components/ACheckbox/ACheckbox.types.d.ts.map +1 -0
- package/dist/components/ACheckbox/ACheckbox.vue.d.ts +33 -0
- package/dist/components/ACheckbox/ACheckbox.vue.d.ts.map +1 -0
- package/dist/components/ACheckbox/index.d.ts +3 -0
- package/dist/components/ACheckbox/index.d.ts.map +1 -0
- package/dist/components/ADrawer/ADrawer.types.d.ts +18 -0
- package/dist/components/ADrawer/ADrawer.types.d.ts.map +1 -0
- package/dist/components/ADrawer/ADrawer.vue.d.ts +31 -0
- package/dist/components/ADrawer/ADrawer.vue.d.ts.map +1 -0
- package/dist/components/ADrawer/index.d.ts +3 -0
- package/dist/components/ADrawer/index.d.ts.map +1 -0
- package/dist/components/AEmptyState/AEmptyState.types.d.ts +13 -0
- package/dist/components/AEmptyState/AEmptyState.types.d.ts.map +1 -0
- package/dist/components/AEmptyState/AEmptyState.vue.d.ts +23 -0
- package/dist/components/AEmptyState/AEmptyState.vue.d.ts.map +1 -0
- package/dist/components/AEmptyState/index.d.ts +3 -0
- package/dist/components/AEmptyState/index.d.ts.map +1 -0
- package/dist/components/AFileUpload/AFileUpload.types.d.ts +14 -0
- package/dist/components/AFileUpload/AFileUpload.types.d.ts.map +1 -0
- package/dist/components/AFileUpload/AFileUpload.vue.d.ts +12 -0
- package/dist/components/AFileUpload/AFileUpload.vue.d.ts.map +1 -0
- package/dist/components/AFileUpload/index.d.ts +3 -0
- package/dist/components/AFileUpload/index.d.ts.map +1 -0
- package/dist/components/AFormField/AFormField.types.d.ts +14 -0
- package/dist/components/AFormField/AFormField.types.d.ts.map +1 -0
- package/dist/components/AFormField/AFormField.vue.d.ts +21 -0
- package/dist/components/AFormField/AFormField.vue.d.ts.map +1 -0
- package/dist/components/AFormField/index.d.ts +3 -0
- package/dist/components/AFormField/index.d.ts.map +1 -0
- package/dist/components/AIcon/AIcon.types.d.ts +10 -0
- package/dist/components/AIcon/AIcon.types.d.ts.map +1 -0
- package/dist/components/AIcon/AIcon.vue.d.ts +6 -0
- package/dist/components/AIcon/AIcon.vue.d.ts.map +1 -0
- package/dist/components/AIcon/index.d.ts +3 -0
- package/dist/components/AIcon/index.d.ts.map +1 -0
- package/dist/components/AInput/AInput.types.d.ts +29 -0
- package/dist/components/AInput/AInput.types.d.ts.map +1 -0
- package/dist/components/AInput/AInput.vue.d.ts +32 -0
- package/dist/components/AInput/AInput.vue.d.ts.map +1 -0
- package/dist/components/AInput/index.d.ts +3 -0
- package/dist/components/AInput/index.d.ts.map +1 -0
- package/dist/components/AKpiCard/AKpiCard.types.d.ts +13 -0
- package/dist/components/AKpiCard/AKpiCard.types.d.ts.map +1 -0
- package/dist/components/AKpiCard/AKpiCard.vue.d.ts +21 -0
- package/dist/components/AKpiCard/AKpiCard.vue.d.ts.map +1 -0
- package/dist/components/AKpiCard/index.d.ts +3 -0
- package/dist/components/AKpiCard/index.d.ts.map +1 -0
- package/dist/components/AModal/AModal.types.d.ts +23 -0
- package/dist/components/AModal/AModal.types.d.ts.map +1 -0
- package/dist/components/AModal/AModal.vue.d.ts +38 -0
- package/dist/components/AModal/AModal.vue.d.ts.map +1 -0
- package/dist/components/AModal/index.d.ts +3 -0
- package/dist/components/AModal/index.d.ts.map +1 -0
- package/dist/components/ANumberInput/ANumberInput.types.d.ts +14 -0
- package/dist/components/ANumberInput/ANumberInput.types.d.ts.map +1 -0
- package/dist/components/ANumberInput/ANumberInput.vue.d.ts +12 -0
- package/dist/components/ANumberInput/ANumberInput.vue.d.ts.map +1 -0
- package/dist/components/ANumberInput/index.d.ts +3 -0
- package/dist/components/ANumberInput/index.d.ts.map +1 -0
- package/dist/components/APagination/APagination.types.d.ts +15 -0
- package/dist/components/APagination/APagination.types.d.ts.map +1 -0
- package/dist/components/APagination/APagination.vue.d.ts +16 -0
- package/dist/components/APagination/APagination.vue.d.ts.map +1 -0
- package/dist/components/APagination/index.d.ts +3 -0
- package/dist/components/APagination/index.d.ts.map +1 -0
- package/dist/components/APopover/APopover.types.d.ts +13 -0
- package/dist/components/APopover/APopover.types.d.ts.map +1 -0
- package/dist/components/APopover/APopover.vue.d.ts +26 -0
- package/dist/components/APopover/APopover.vue.d.ts.map +1 -0
- package/dist/components/APopover/index.d.ts +3 -0
- package/dist/components/APopover/index.d.ts.map +1 -0
- package/dist/components/AProgress/AProgress.types.d.ts +9 -0
- package/dist/components/AProgress/AProgress.types.d.ts.map +1 -0
- package/dist/components/AProgress/AProgress.vue.d.ts +6 -0
- package/dist/components/AProgress/AProgress.vue.d.ts.map +1 -0
- package/dist/components/AProgress/index.d.ts +3 -0
- package/dist/components/AProgress/index.d.ts.map +1 -0
- package/dist/components/ARadio/ARadio.types.d.ts +17 -0
- package/dist/components/ARadio/ARadio.types.d.ts.map +1 -0
- package/dist/components/ARadio/ARadio.vue.d.ts +11 -0
- package/dist/components/ARadio/ARadio.vue.d.ts.map +1 -0
- package/dist/components/ARadio/index.d.ts +3 -0
- package/dist/components/ARadio/index.d.ts.map +1 -0
- package/dist/components/ASegmented/ASegmented.types.d.ts +14 -0
- package/dist/components/ASegmented/ASegmented.types.d.ts.map +1 -0
- package/dist/components/ASegmented/ASegmented.vue.d.ts +10 -0
- package/dist/components/ASegmented/ASegmented.vue.d.ts.map +1 -0
- package/dist/components/ASegmented/index.d.ts +3 -0
- package/dist/components/ASegmented/index.d.ts.map +1 -0
- package/dist/components/ASelect/ASelect.types.d.ts +29 -0
- package/dist/components/ASelect/ASelect.types.d.ts.map +1 -0
- package/dist/components/ASelect/ASelect.vue.d.ts +24 -0
- package/dist/components/ASelect/ASelect.vue.d.ts.map +1 -0
- package/dist/components/ASelect/index.d.ts +3 -0
- package/dist/components/ASelect/index.d.ts.map +1 -0
- package/dist/components/ASidebarNav/ASidebarNav.types.d.ts +21 -0
- package/dist/components/ASidebarNav/ASidebarNav.types.d.ts.map +1 -0
- package/dist/components/ASidebarNav/ASidebarNav.vue.d.ts +10 -0
- package/dist/components/ASidebarNav/ASidebarNav.vue.d.ts.map +1 -0
- package/dist/components/ASidebarNav/index.d.ts +3 -0
- package/dist/components/ASidebarNav/index.d.ts.map +1 -0
- package/dist/components/ASkeleton/ASkeleton.types.d.ts +10 -0
- package/dist/components/ASkeleton/ASkeleton.types.d.ts.map +1 -0
- package/dist/components/ASkeleton/ASkeleton.vue.d.ts +8 -0
- package/dist/components/ASkeleton/ASkeleton.vue.d.ts.map +1 -0
- package/dist/components/ASkeleton/index.d.ts +3 -0
- package/dist/components/ASkeleton/index.d.ts.map +1 -0
- package/dist/components/ASlider/ASlider.types.d.ts +13 -0
- package/dist/components/ASlider/ASlider.types.d.ts.map +1 -0
- package/dist/components/ASlider/ASlider.vue.d.ts +14 -0
- package/dist/components/ASlider/ASlider.vue.d.ts.map +1 -0
- package/dist/components/ASlider/index.d.ts +3 -0
- package/dist/components/ASlider/index.d.ts.map +1 -0
- package/dist/components/ASpinner/ASpinner.types.d.ts +11 -0
- package/dist/components/ASpinner/ASpinner.types.d.ts.map +1 -0
- package/dist/components/ASpinner/ASpinner.vue.d.ts +8 -0
- package/dist/components/ASpinner/ASpinner.vue.d.ts.map +1 -0
- package/dist/components/ASpinner/index.d.ts +3 -0
- package/dist/components/ASpinner/index.d.ts.map +1 -0
- package/dist/components/AStatusPill/AStatusPill.types.d.ts +10 -0
- package/dist/components/AStatusPill/AStatusPill.types.d.ts.map +1 -0
- package/dist/components/AStatusPill/AStatusPill.vue.d.ts +21 -0
- package/dist/components/AStatusPill/AStatusPill.vue.d.ts.map +1 -0
- package/dist/components/AStatusPill/index.d.ts +3 -0
- package/dist/components/AStatusPill/index.d.ts.map +1 -0
- package/dist/components/AStepper/AStepper.types.d.ts +14 -0
- package/dist/components/AStepper/AStepper.types.d.ts.map +1 -0
- package/dist/components/AStepper/AStepper.vue.d.ts +8 -0
- package/dist/components/AStepper/AStepper.vue.d.ts.map +1 -0
- package/dist/components/AStepper/index.d.ts +3 -0
- package/dist/components/AStepper/index.d.ts.map +1 -0
- package/dist/components/ASwitch/ASwitch.types.d.ts +13 -0
- package/dist/components/ASwitch/ASwitch.types.d.ts.map +1 -0
- package/dist/components/ASwitch/ASwitch.vue.d.ts +26 -0
- package/dist/components/ASwitch/ASwitch.vue.d.ts.map +1 -0
- package/dist/components/ASwitch/index.d.ts +3 -0
- package/dist/components/ASwitch/index.d.ts.map +1 -0
- package/dist/components/ATable/ATable.types.d.ts +52 -0
- package/dist/components/ATable/ATable.types.d.ts.map +1 -0
- package/dist/components/ATable/ATable.vue.d.ts +59 -0
- package/dist/components/ATable/ATable.vue.d.ts.map +1 -0
- package/dist/components/ATable/index.d.ts +3 -0
- package/dist/components/ATable/index.d.ts.map +1 -0
- package/dist/components/ATabs/ATabs.types.d.ts +16 -0
- package/dist/components/ATabs/ATabs.types.d.ts.map +1 -0
- package/dist/components/ATabs/ATabs.vue.d.ts +11 -0
- package/dist/components/ATabs/ATabs.vue.d.ts.map +1 -0
- package/dist/components/ATabs/index.d.ts +3 -0
- package/dist/components/ATabs/index.d.ts.map +1 -0
- package/dist/components/ATag/ATag.types.d.ts +12 -0
- package/dist/components/ATag/ATag.types.d.ts.map +1 -0
- package/dist/components/ATag/ATag.vue.d.ts +26 -0
- package/dist/components/ATag/ATag.vue.d.ts.map +1 -0
- package/dist/components/ATag/index.d.ts +3 -0
- package/dist/components/ATag/index.d.ts.map +1 -0
- package/dist/components/ATimeline/ATimeline.types.d.ts +14 -0
- package/dist/components/ATimeline/ATimeline.types.d.ts.map +1 -0
- package/dist/components/ATimeline/ATimeline.vue.d.ts +6 -0
- package/dist/components/ATimeline/ATimeline.vue.d.ts.map +1 -0
- package/dist/components/ATimeline/index.d.ts +3 -0
- package/dist/components/ATimeline/index.d.ts.map +1 -0
- package/dist/components/AToast/AToast.types.d.ts +20 -0
- package/dist/components/AToast/AToast.types.d.ts.map +1 -0
- package/dist/components/AToast/AToast.vue.d.ts +13 -0
- package/dist/components/AToast/AToast.vue.d.ts.map +1 -0
- package/dist/components/AToast/AToastHost.vue.d.ts +10 -0
- package/dist/components/AToast/AToastHost.vue.d.ts.map +1 -0
- package/dist/components/AToast/index.d.ts +4 -0
- package/dist/components/AToast/index.d.ts.map +1 -0
- package/dist/components/ATooltip/ATooltip.types.d.ts +11 -0
- package/dist/components/ATooltip/ATooltip.types.d.ts.map +1 -0
- package/dist/components/ATooltip/ATooltip.vue.d.ts +21 -0
- package/dist/components/ATooltip/ATooltip.vue.d.ts.map +1 -0
- package/dist/components/ATooltip/index.d.ts +3 -0
- package/dist/components/ATooltip/index.d.ts.map +1 -0
- package/dist/components/index.d.ts +40 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/composables/index.d.ts +5 -0
- package/dist/composables/index.d.ts.map +1 -0
- package/dist/composables/useDensity.d.ts +6 -0
- package/dist/composables/useDensity.d.ts.map +1 -0
- package/dist/composables/useDisclosure.d.ts +7 -0
- package/dist/composables/useDisclosure.d.ts.map +1 -0
- package/dist/composables/useTheme.d.ts +8 -0
- package/dist/composables/useTheme.d.ts.map +1 -0
- package/dist/composables/useToast.d.ts +34 -0
- package/dist/composables/useToast.d.ts.map +1 -0
- package/dist/directives/focus.d.ts +3 -0
- package/dist/directives/focus.d.ts.map +1 -0
- package/dist/directives/index.d.ts +2 -0
- package/dist/directives/index.d.ts.map +1 -0
- package/dist/icons/CheckIcon.d.ts +7 -0
- package/dist/icons/CheckIcon.d.ts.map +1 -0
- package/dist/icons/index.d.ts +2 -0
- package/dist/icons/index.d.ts.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/plugin.d.ts +877 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/styles/entry.d.ts +1 -0
- package/dist/styles/entry.d.ts.map +1 -0
- package/dist/styles.cjs +2 -0
- package/dist/styles.cjs.map +1 -0
- package/dist/styles.css +1 -0
- package/dist/styles.d.ts +1 -0
- package/dist/styles.js +2 -0
- package/dist/styles.js.map +1 -0
- package/dist/tokens/index.d.ts +3 -0
- package/dist/tokens/index.d.ts.map +1 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/utils/chartTheme.d.ts +9 -0
- package/dist/utils/chartTheme.d.ts.map +1 -0
- package/dist/utils/id.d.ts +2 -0
- package/dist/utils/id.d.ts.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ainorix-ui.js","sources":["../src/directives/focus.ts","../src/components/ASpinner/ASpinner.vue","../src/components/AButton/AButton.vue","../src/components/AInput/AInput.vue","../src/components/AFormField/AFormField.vue","../src/components/ASelect/ASelect.vue","../src/components/ACheckbox/ACheckbox.vue","../src/components/ARadio/ARadio.vue","../src/components/ASwitch/ASwitch.vue","../src/components/ASegmented/ASegmented.vue","../src/components/ASlider/ASlider.vue","../src/components/AModal/AModal.vue","../src/components/AToast/AToast.vue","../src/composables/useToast.ts","../src/components/AToast/AToastHost.vue","../src/components/APagination/APagination.vue","../src/components/ASkeleton/ASkeleton.vue","../src/components/ATable/ATable.vue","../src/components/ABadge/ABadge.vue","../src/components/ATag/ATag.vue","../src/components/AStatusPill/AStatusPill.vue","../src/components/ACard/ACard.vue","../src/components/AIcon/AIcon.vue","../src/components/AAlert/AAlert.vue","../src/components/AProgress/AProgress.vue","../src/components/ATabs/ATabs.vue","../src/components/ABreadcrumbs/ABreadcrumbs.vue","../src/components/AAvatar/AAvatar.vue","../src/components/AAvatarGroup/AAvatarGroup.vue","../src/components/AEmptyState/AEmptyState.vue","../src/components/AKpiCard/AKpiCard.vue","../src/components/ATooltip/ATooltip.vue","../src/components/ASidebarNav/ASidebarNav.vue","../src/components/ANumberInput/ANumberInput.vue","../src/components/ADrawer/ADrawer.vue","../src/components/AAccordion/AAccordion.vue","../src/components/APopover/APopover.vue","../src/components/ABanner/ABanner.vue","../src/components/AFileUpload/AFileUpload.vue","../src/components/AStepper/AStepper.vue","../src/components/ATimeline/ATimeline.vue","../src/components/AChartFrame/AChartFrame.vue","../src/plugin.ts","../src/composables/useDisclosure.ts","../src/composables/useDensity.ts","../src/composables/useTheme.ts","../src/icons/CheckIcon.ts","../src/utils/chartTheme.ts","../src/utils/id.ts"],"sourcesContent":["import type { Directive } from 'vue';\n\nexport const vAFocus: Directive<HTMLElement, boolean | undefined> = {\n mounted(el, binding) {\n if (binding.value === false) return;\n el.focus();\n }\n};\n","<template>\n <span class=\"spinner\" :data-size=\"size\" :data-tone=\"tone\" role=\"status\" :aria-label=\"label\">\n <span class=\"spinner__track\" aria-hidden=\"true\" />\n <span v-if=\"label\" class=\"spinner__label\">{{ label }}</span>\n </span>\n</template>\n\n<script setup lang=\"ts\">\nimport type { ASpinnerProps } from './ASpinner.types';\n\ndefineOptions({ name: 'ASpinner' });\n\nwithDefaults(defineProps<ASpinnerProps>(), {\n size: 'md',\n tone: 'accent',\n label: 'Loading'\n});\n</script>\n\n<style scoped>\n.spinner {\n display: inline-flex;\n color: var(--accent);\n}\n\n.spinner[data-tone=\"onaccent\"] {\n color: #fff;\n}\n\n.spinner[data-tone=\"muted\"] {\n color: var(--text-tertiary);\n}\n\n.spinner[data-size=\"sm\"] {\n width: 16px;\n height: 16px;\n}\n\n.spinner[data-size=\"md\"] {\n width: 20px;\n height: 20px;\n}\n\n.spinner[data-size=\"lg\"] {\n width: 24px;\n height: 24px;\n}\n\n.spinner__track {\n width: 100%;\n height: 100%;\n border: var(--bw-thick) solid var(--bg-muted);\n border-top-color: currentColor;\n border-radius: var(--r-full);\n animation: ain-spin var(--dur-slower) linear infinite;\n}\n\n.spinner__label {\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</style>\n","<template>\n <button\n class=\"btn\"\n :type=\"type\"\n :data-variant=\"variant\"\n :data-size=\"size\"\n :data-block=\"block || null\"\n :data-icon-only=\"iconOnly || null\"\n :aria-label=\"ariaLabel\"\n :disabled=\"disabled || loading\"\n @click=\"emit('click', $event)\"\n >\n <ASpinner v-if=\"loading\" :size=\"size === 'sm' ? 'sm' : 'md'\" tone=\"onaccent\" />\n <slot name=\"icon-left\" />\n <slot />\n <slot name=\"icon-right\" />\n </button>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, useSlots } from 'vue';\nimport ASpinner from '../ASpinner/ASpinner.vue';\nimport type { AButtonProps } from './AButton.types';\n\ndefineOptions({ name: 'AButton' });\n\nconst props = withDefaults(defineProps<AButtonProps>(), {\n variant: 'primary',\n size: 'md',\n type: 'button',\n disabled: false,\n loading: false,\n block: false\n});\n\nconst emit = defineEmits<{\n click: [event: MouseEvent];\n}>();\n\nconst slots = useSlots();\nconst iconOnly = computed(() => Boolean(props.ariaLabel && !slots.default && (slots['icon-left'] || slots['icon-right'])));\n</script>\n\n<style scoped>\n.btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--s-2);\n font-family: var(--font-sans);\n font-weight: var(--fw-medium);\n white-space: nowrap;\n cursor: pointer;\n user-select: none;\n border: var(--bw-thin) solid transparent;\n transition: background var(--dur-fast) var(--ease-standard),\n border-color var(--dur-fast) var(--ease-standard),\n color var(--dur-fast) var(--ease-standard),\n filter var(--dur-fast) var(--ease-standard);\n}\n\n.btn:focus-visible {\n outline: none;\n box-shadow: 0 0 0 var(--bw-focus) var(--focus-ring);\n}\n\n.btn:disabled {\n cursor: not-allowed;\n opacity: 0.7;\n box-shadow: none;\n background: var(--bg-muted);\n color: var(--text-tertiary);\n border-color: transparent;\n}\n\n.btn[data-block] {\n width: 100%;\n}\n\n.btn[data-size=\"sm\"] {\n height: var(--ctrl-sm);\n padding-inline: var(--s-3);\n font-size: 13px;\n border-radius: var(--r-sm);\n}\n\n.btn[data-size=\"md\"] {\n height: var(--ctrl-md);\n padding-inline: var(--s-4);\n font-size: 14px;\n border-radius: var(--r-md);\n}\n\n.btn[data-size=\"lg\"] {\n height: var(--ctrl-lg);\n padding-inline: var(--s-5);\n font-size: 15px;\n border-radius: var(--r-md);\n}\n\n.btn[data-icon-only] {\n width: var(--ctrl-md);\n padding-inline: 0;\n}\n\n.btn[data-variant=\"primary\"] {\n background: var(--btn-primary-bg);\n color: var(--btn-primary-fg);\n border-color: var(--btn-primary-bg);\n box-shadow: var(--shadow-xs);\n}\n\n.btn[data-variant=\"primary\"]:not(:disabled):hover {\n background: var(--btn-primary-bg-hover);\n border-color: var(--btn-primary-bg-hover);\n}\n\n.btn[data-variant=\"primary\"]:not(:disabled):active {\n background: var(--accent-active);\n border-color: var(--accent-active);\n}\n\n.btn[data-variant=\"secondary\"] {\n background: var(--bg-surface);\n color: var(--text-primary);\n border-color: var(--border-strong);\n box-shadow: var(--shadow-xs);\n}\n\n.btn[data-variant=\"secondary\"]:not(:disabled):hover {\n background: var(--bg-subtle);\n border-color: var(--text-tertiary);\n}\n\n.btn[data-variant=\"outline\"] {\n background: transparent;\n color: var(--accent);\n border-color: var(--accent-border);\n}\n\n.btn[data-variant=\"outline\"]:not(:disabled):hover {\n background: var(--accent-subtle);\n}\n\n.btn[data-variant=\"ghost\"] {\n background: transparent;\n color: var(--text-secondary);\n border-color: transparent;\n}\n\n.btn[data-variant=\"ghost\"]:not(:disabled):hover {\n background: var(--bg-hover);\n color: var(--text-primary);\n}\n\n.btn[data-variant=\"danger\"] {\n background: var(--danger);\n color: #fff;\n border-color: var(--danger);\n box-shadow: var(--shadow-xs);\n}\n\n.btn[data-variant=\"danger\"]:not(:disabled):hover {\n filter: brightness(0.95);\n}\n\n.btn[data-variant=\"link\"] {\n background: transparent;\n color: var(--accent);\n border-color: transparent;\n padding-inline: var(--s-2);\n text-decoration: underline;\n text-underline-offset: 3px;\n text-decoration-color: var(--accent-border);\n}\n\n.btn[data-variant=\"link\"]:not(:disabled):hover {\n text-decoration-color: var(--accent);\n}\n\n@media (prefers-reduced-motion: reduce) {\n .btn {\n transition: none;\n }\n}\n</style>\n","<template>\n <div class=\"field\" :data-size=\"size\" :data-disabled=\"disabled || null\" :data-error=\"hasError || null\">\n <label v-if=\"label\" class=\"field__label\" :for=\"id\">{{ label }}</label>\n <div class=\"field__control\">\n <span v-if=\"slots['icon-left']\" class=\"field__icon\"><slot name=\"icon-left\" /></span>\n <slot name=\"addon-before\" />\n <input\n :id=\"id\"\n class=\"field__input\"\n :value=\"modelValue\"\n :type=\"type\"\n :name=\"name\"\n :placeholder=\"placeholder\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :autocomplete=\"autocomplete\"\n :aria-invalid=\"hasError || undefined\"\n @input=\"emit('update:modelValue', ($event.target as HTMLInputElement).value)\"\n />\n <slot name=\"addon-after\" />\n </div>\n <p v-if=\"errorMessage\" class=\"field__msg field__msg--error\">{{ errorMessage }}</p>\n <p v-else-if=\"helper\" class=\"field__msg\">{{ helper }}</p>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, useSlots } from 'vue';\nimport type { AInputProps } from './AInput.types';\n\ndefineOptions({ name: 'AInput' });\n\nconst props = withDefaults(defineProps<AInputProps>(), {\n modelValue: '',\n type: 'text',\n size: 'md',\n disabled: false,\n readonly: false,\n error: false\n});\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: string];\n}>();\n\nconst slots = useSlots();\nconst hasError = computed(() => props.error !== false && props.error != null && props.error !== '');\nconst errorMessage = computed(() => (typeof props.error === 'string' ? props.error : ''));\n</script>\n\n<style scoped>\n.field {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.field__label {\n color: var(--text-primary);\n font-size: 13px;\n font-weight: var(--fw-medium);\n}\n\n.field__control {\n display: flex;\n align-items: center;\n gap: var(--s-2);\n background: var(--field-bg);\n border: var(--bw-thin) solid var(--field-border);\n border-radius: var(--field-radius);\n padding-inline: var(--pad-x);\n transition: border-color var(--dur-fast) var(--ease-standard),\n box-shadow var(--dur-fast) var(--ease-standard);\n}\n\n.field[data-size=\"sm\"] .field__control {\n height: var(--ctrl-sm);\n}\n\n.field[data-size=\"md\"] .field__control {\n height: var(--ctrl-md);\n}\n\n.field[data-size=\"lg\"] .field__control {\n height: var(--ctrl-lg);\n}\n\n.field__control:focus-within {\n border-color: var(--accent);\n box-shadow: 0 0 0 var(--bw-focus) var(--focus-ring);\n}\n\n.field[data-error] .field__control {\n border-color: var(--danger);\n}\n\n.field[data-error] .field__control:focus-within {\n box-shadow: 0 0 0 var(--bw-focus) var(--danger-subtle);\n}\n\n.field[data-disabled] .field__control {\n background: var(--bg-subtle);\n border-color: var(--border);\n}\n\n.field[data-disabled] .field__input {\n color: var(--text-tertiary);\n cursor: not-allowed;\n}\n\n.field__input {\n flex: 1 1 auto;\n min-width: 0;\n border: none;\n outline: none;\n background: transparent;\n color: var(--text-primary);\n font-family: var(--font-sans);\n font-size: 14px;\n padding: 0;\n}\n\n.field__input::placeholder {\n color: var(--text-tertiary);\n}\n\n.field__icon {\n display: inline-flex;\n color: var(--text-tertiary);\n flex-shrink: 0;\n}\n\n.field__msg {\n margin: 0;\n color: var(--text-tertiary);\n font-size: 12px;\n}\n\n.field__msg--error {\n color: var(--danger);\n}\n</style>\n","<template>\n <div class=\"a-form-field\">\n <label v-if=\"label\" class=\"a-form-field__label\" :for=\"id\">\n {{ label }}\n <span v-if=\"required\" aria-hidden=\"true\">*</span>\n </label>\n <slot />\n <p v-if=\"error\" class=\"a-form-field__message a-form-field__message--error\">{{ error }}</p>\n <p v-else-if=\"hint\" class=\"a-form-field__message\">{{ hint }}</p>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport type { AFormFieldProps } from './AFormField.types';\n\ndefineOptions({ name: 'AFormField' });\n\nwithDefaults(defineProps<AFormFieldProps>(), {\n required: false\n});\n</script>\n","<template>\n <div ref=\"rootRef\" class=\"select-field\" :data-size=\"size\" :data-disabled=\"disabled || null\" :data-error=\"hasError || null\">\n <label v-if=\"label\" class=\"select-field__label\" :id=\"labelId\" :for=\"triggerId\">{{ label }}</label>\n <button\n :id=\"triggerId\"\n ref=\"triggerRef\"\n class=\"select-field__trigger\"\n type=\"button\"\n role=\"combobox\"\n :aria-labelledby=\"label ? labelId : undefined\"\n :aria-controls=\"listboxId\"\n :aria-expanded=\"open\"\n :aria-haspopup=\"'listbox'\"\n :aria-invalid=\"hasError || undefined\"\n :disabled=\"disabled\"\n @click=\"toggle\"\n @keydown=\"onTriggerKeydown\"\n >\n <span class=\"select-field__value\" :data-placeholder=\"!selectedOption || null\">\n {{ selectedOption?.label || placeholder || defaultLabel }}\n </span>\n <span class=\"select-field__chevron\" aria-hidden=\"true\">v</span>\n </button>\n\n <Teleport to=\"body\">\n <div\n v-if=\"open\"\n ref=\"panelRef\"\n class=\"select-menu\"\n :style=\"panelStyle\"\n @keydown=\"onMenuKeydown\"\n >\n <input\n v-if=\"isSearchable\"\n ref=\"searchRef\"\n v-model=\"query\"\n class=\"select-menu__search\"\n type=\"search\"\n :placeholder=\"searchPlaceholder\"\n @keydown.stop=\"onSearchKeydown\"\n />\n <ul :id=\"listboxId\" class=\"select-menu__list\" role=\"listbox\" :aria-activedescendant=\"activeOptionId\">\n <li\n v-for=\"(option, index) in filteredOptions\"\n :id=\"optionId(index)\"\n :key=\"option.value\"\n class=\"select-menu__item\"\n :data-active=\"index === activeIndex || null\"\n :data-selected=\"option.value === modelValue || null\"\n :data-disabled=\"option.disabled || null\"\n role=\"option\"\n :aria-selected=\"option.value === modelValue\"\n @mouseenter=\"activeIndex = index\"\n @mousedown.prevent=\"selectOption(option)\"\n >\n <span>{{ option.label }}</span>\n <span v-if=\"option.value === modelValue\" aria-hidden=\"true\">✓</span>\n </li>\n <li v-if=\"filteredOptions.length === 0\" class=\"select-menu__empty\">{{ emptyText }}</li>\n </ul>\n </div>\n </Teleport>\n\n <input v-if=\"name\" type=\"hidden\" :name=\"name\" :value=\"modelValue\" />\n <p v-if=\"errorMessage\" class=\"select-field__msg select-field__msg--error\">{{ errorMessage }}</p>\n <p v-else-if=\"helper\" class=\"select-field__msg\">{{ helper }}</p>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, nextTick, onBeforeUnmount, ref, watch } from 'vue';\nimport type { ASelectOption, ASelectProps } from './ASelect.types';\n\ndefineOptions({ name: 'ASelect' });\n\nconst props = withDefaults(defineProps<ASelectProps>(), {\n options: () => [],\n size: 'md',\n disabled: false,\n error: false,\n searchable: undefined,\n searchPlaceholder: 'Search',\n emptyText: 'No options',\n defaultLabel: 'Select option'\n});\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: string | number];\n change: [value: string | number];\n}>();\n\nconst uid = Math.random().toString(36).slice(2);\nconst triggerId = computed(() => props.id || `a-select-${uid}`);\nconst labelId = `a-select-label-${uid}`;\nconst listboxId = `a-select-listbox-${uid}`;\n\nconst rootRef = ref<HTMLElement>();\nconst triggerRef = ref<HTMLButtonElement>();\nconst panelRef = ref<HTMLElement>();\nconst searchRef = ref<HTMLInputElement>();\nconst open = ref(false);\nconst query = ref('');\nconst activeIndex = ref(0);\nconst panelStyle = ref<Record<string, string>>({});\n\nconst hasError = computed(() => props.error !== false && props.error != null && props.error !== '');\nconst errorMessage = computed(() => (typeof props.error === 'string' ? props.error : ''));\nconst isSearchable = computed(() => props.searchable ?? props.options.length > 7);\nconst selectedOption = computed(() => props.options.find((option) => option.value === props.modelValue));\nconst filteredOptions = computed(() => {\n const value = query.value.trim().toLowerCase();\n if (!value) return props.options;\n return props.options.filter((option) => option.label.toLowerCase().includes(value));\n});\nconst activeOptionId = computed(() => (open.value && filteredOptions.value[activeIndex.value] ? optionId(activeIndex.value) : undefined));\n\nfunction optionId(index: number) {\n return `a-select-option-${uid}-${index}`;\n}\n\nfunction syncPanelPosition() {\n const rect = triggerRef.value?.getBoundingClientRect();\n if (!rect) return;\n panelStyle.value = {\n position: 'fixed',\n top: `${rect.bottom + 6}px`,\n left: `${rect.left}px`,\n width: `${rect.width}px`\n };\n}\n\nasync function show() {\n if (props.disabled) return;\n open.value = true;\n query.value = '';\n activeIndex.value = Math.max(0, props.options.findIndex((option) => option.value === props.modelValue));\n await nextTick();\n syncPanelPosition();\n if (isSearchable.value) searchRef.value?.focus();\n}\n\nfunction close({ focusTrigger = false } = {}) {\n open.value = false;\n if (focusTrigger) triggerRef.value?.focus();\n}\n\nfunction toggle() {\n if (open.value) close();\n else void show();\n}\n\nfunction selectOption(option: ASelectOption) {\n if (option.disabled) return;\n emit('update:modelValue', option.value);\n emit('change', option.value);\n close({ focusTrigger: true });\n}\n\nfunction move(delta: number) {\n const available = filteredOptions.value;\n if (available.length === 0) return;\n let next = activeIndex.value;\n for (let i = 0; i < available.length; i += 1) {\n next = (next + delta + available.length) % available.length;\n if (!available[next]?.disabled) break;\n }\n activeIndex.value = next;\n}\n\nfunction chooseActive() {\n const option = filteredOptions.value[activeIndex.value];\n if (option) selectOption(option);\n}\n\nfunction onTriggerKeydown(event: KeyboardEvent) {\n if (['ArrowDown', 'ArrowUp', 'Enter', ' '].includes(event.key)) {\n event.preventDefault();\n if (!open.value) void show();\n else if (event.key === 'ArrowDown') move(1);\n else if (event.key === 'ArrowUp') move(-1);\n else chooseActive();\n }\n}\n\nfunction onMenuKeydown(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n event.preventDefault();\n close({ focusTrigger: true });\n }\n}\n\nfunction onSearchKeydown(event: KeyboardEvent) {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n move(1);\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n move(-1);\n } else if (event.key === 'Enter') {\n event.preventDefault();\n chooseActive();\n } else if (event.key === 'Escape') {\n close({ focusTrigger: true });\n }\n}\n\nfunction onDocumentPointerDown(event: PointerEvent) {\n const target = event.target as Node;\n if (rootRef.value?.contains(target) || panelRef.value?.contains(target)) return;\n close();\n}\n\nfunction onWindowChange() {\n if (open.value) syncPanelPosition();\n}\n\nwatch(open, (value) => {\n if (typeof document === 'undefined' || typeof window === 'undefined') return;\n if (value) {\n document.addEventListener('pointerdown', onDocumentPointerDown);\n window.addEventListener('resize', onWindowChange);\n window.addEventListener('scroll', onWindowChange, true);\n } else {\n document.removeEventListener('pointerdown', onDocumentPointerDown);\n window.removeEventListener('resize', onWindowChange);\n window.removeEventListener('scroll', onWindowChange, true);\n }\n});\n\nwatch(filteredOptions, () => {\n activeIndex.value = Math.min(activeIndex.value, Math.max(0, filteredOptions.value.length - 1));\n});\n\nonBeforeUnmount(() => {\n if (typeof document === 'undefined' || typeof window === 'undefined') return;\n document.removeEventListener('pointerdown', onDocumentPointerDown);\n window.removeEventListener('resize', onWindowChange);\n window.removeEventListener('scroll', onWindowChange, true);\n});\n</script>\n\n<style scoped>\n.select-field {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.select-field__label {\n color: var(--text-primary);\n font-size: 13px;\n font-weight: var(--fw-medium);\n}\n\n.select-field__trigger {\n display: flex;\n width: 100%;\n align-items: center;\n justify-content: space-between;\n gap: var(--s-2);\n border: var(--bw-thin) solid var(--field-border);\n border-radius: var(--field-radius);\n background: var(--field-bg);\n color: var(--text-primary);\n font-family: var(--font-sans);\n font-size: 14px;\n padding-inline: var(--pad-x);\n text-align: left;\n transition: border-color var(--dur-fast) var(--ease-standard),\n box-shadow var(--dur-fast) var(--ease-standard);\n}\n\n.select-field[data-size=\"sm\"] .select-field__trigger {\n height: var(--ctrl-sm);\n}\n\n.select-field[data-size=\"md\"] .select-field__trigger {\n height: var(--ctrl-md);\n}\n\n.select-field[data-size=\"lg\"] .select-field__trigger {\n height: var(--ctrl-lg);\n}\n\n.select-field__trigger:focus-visible,\n.select-field__trigger[aria-expanded=\"true\"] {\n outline: none;\n border-color: var(--accent);\n box-shadow: 0 0 0 var(--bw-focus) var(--focus-ring);\n}\n\n.select-field[data-error] .select-field__trigger {\n border-color: var(--danger);\n}\n\n.select-field[data-disabled] .select-field__trigger {\n background: var(--bg-subtle);\n color: var(--text-tertiary);\n cursor: not-allowed;\n}\n\n.select-field__value {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.select-field__value[data-placeholder] {\n color: var(--text-tertiary);\n}\n\n.select-field__chevron {\n color: var(--text-tertiary);\n}\n\n.select-field__msg {\n margin: 0;\n color: var(--text-tertiary);\n font-size: 12px;\n}\n\n.select-field__msg--error {\n color: var(--danger);\n}\n\n.select-menu {\n z-index: var(--z-dropdown);\n border: var(--bw-thin) solid var(--border);\n border-radius: var(--r-md);\n background: var(--bg-surface);\n box-shadow: var(--shadow-md);\n padding: 6px;\n}\n\n.select-menu__search {\n width: 100%;\n height: var(--ctrl-sm);\n margin-bottom: 6px;\n border: var(--bw-thin) solid var(--field-border);\n border-radius: var(--r-sm);\n background: var(--field-bg);\n color: var(--text-primary);\n font: inherit;\n padding-inline: var(--s-2);\n}\n\n.select-menu__search:focus {\n outline: none;\n border-color: var(--accent);\n}\n\n.select-menu__list {\n display: grid;\n max-height: 260px;\n gap: 2px;\n margin: 0;\n padding: 0;\n overflow: auto;\n list-style: none;\n}\n\n.select-menu__item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--s-2);\n border-radius: var(--r-sm);\n color: var(--text-primary);\n cursor: pointer;\n font-size: 13.5px;\n padding: 8px 10px;\n}\n\n.select-menu__item[data-active] {\n background: var(--bg-hover);\n}\n\n.select-menu__item[data-selected] {\n background: var(--accent-subtle);\n color: var(--accent);\n font-weight: var(--fw-semibold);\n}\n\n.select-menu__item[data-disabled] {\n color: var(--text-tertiary);\n cursor: not-allowed;\n}\n\n.select-menu__empty {\n color: var(--text-tertiary);\n font-size: 13px;\n padding: 8px 10px;\n}\n</style>\n","<template>\n <label class=\"checkbox\" :data-disabled=\"disabled || null\" :data-error=\"error || null\">\n <input\n :id=\"id\"\n ref=\"inputRef\"\n class=\"checkbox__input\"\n type=\"checkbox\"\n :checked=\"modelValue\"\n :disabled=\"disabled\"\n :name=\"name\"\n :aria-label=\"ariaLabel\"\n :aria-invalid=\"error || undefined\"\n @change=\"emit('update:modelValue', ($event.target as HTMLInputElement).checked)\"\n />\n <span class=\"checkbox__box\" aria-hidden=\"true\" />\n <span v-if=\"label || $slots.default\" class=\"checkbox__label\">\n <slot>{{ label }}</slot>\n </span>\n </label>\n</template>\n\n<script setup lang=\"ts\">\nimport { onMounted, ref, watch } from 'vue';\nimport type { ACheckboxProps } from './ACheckbox.types';\n\ndefineOptions({ name: 'ACheckbox' });\n\nconst props = withDefaults(defineProps<ACheckboxProps>(), {\n modelValue: false,\n indeterminate: false,\n disabled: false,\n error: false,\n ariaLabel: undefined\n});\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: boolean];\n}>();\n\nconst inputRef = ref<HTMLInputElement>();\n\nfunction syncIndeterminate() {\n if (inputRef.value) inputRef.value.indeterminate = props.indeterminate;\n}\n\nonMounted(syncIndeterminate);\nwatch(() => props.indeterminate, syncIndeterminate);\n</script>\n\n<style scoped>\n.checkbox {\n display: inline-flex;\n align-items: center;\n gap: 10px;\n color: var(--text-primary);\n cursor: pointer;\n font-size: 14px;\n}\n\n.checkbox__input {\n position: absolute;\n opacity: 0;\n}\n\n.checkbox__box {\n display: inline-flex;\n width: 18px;\n height: 18px;\n align-items: center;\n justify-content: center;\n border: var(--bw-medium) solid var(--border-strong);\n border-radius: 5px;\n background: var(--field-bg);\n transition: background var(--dur-fast) var(--ease-standard),\n border-color var(--dur-fast) var(--ease-standard),\n box-shadow var(--dur-fast) var(--ease-standard);\n}\n\n.checkbox__input:checked + .checkbox__box,\n.checkbox__input:indeterminate + .checkbox__box {\n border-color: var(--accent);\n background: var(--accent);\n}\n\n.checkbox__input:checked + .checkbox__box::after {\n width: 9px;\n height: 5px;\n border: solid #fff;\n border-width: 0 0 2px 2px;\n content: \"\";\n transform: rotate(-45deg) translateY(-1px);\n}\n\n.checkbox__input:indeterminate + .checkbox__box::after {\n width: 9px;\n height: 2px;\n border-radius: var(--r-full);\n background: #fff;\n content: \"\";\n}\n\n.checkbox__input:focus-visible + .checkbox__box {\n box-shadow: 0 0 0 var(--bw-focus) var(--focus-ring);\n}\n\n.checkbox[data-disabled] {\n cursor: not-allowed;\n opacity: 0.7;\n}\n\n.checkbox[data-error] .checkbox__box {\n border-color: var(--danger);\n}\n</style>\n","<template>\n <div class=\"radio-group\" role=\"radiogroup\" :data-disabled=\"disabled || null\">\n <label v-for=\"option in options\" :key=\"option.value\" class=\"radio\">\n <input\n class=\"radio__input\"\n type=\"radio\"\n :name=\"name\"\n :value=\"option.value\"\n :checked=\"modelValue === option.value\"\n :disabled=\"disabled || option.disabled\"\n @change=\"emit('update:modelValue', option.value)\"\n />\n <span class=\"radio__mark\" aria-hidden=\"true\" />\n <span>{{ option.label }}</span>\n </label>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport type { ARadioProps } from './ARadio.types';\n\ndefineOptions({ name: 'ARadio' });\n\nwithDefaults(defineProps<ARadioProps>(), {\n options: () => [],\n disabled: false\n});\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: string | number];\n}>();\n</script>\n\n<style scoped>\n.radio-group {\n display: grid;\n gap: var(--s-2);\n}\n\n.radio {\n display: inline-flex;\n align-items: center;\n gap: 10px;\n color: var(--text-primary);\n cursor: pointer;\n font-size: 14px;\n}\n\n.radio__input {\n position: absolute;\n opacity: 0;\n}\n\n.radio__mark {\n width: 18px;\n height: 18px;\n border: var(--bw-medium) solid var(--border-strong);\n border-radius: var(--r-full);\n background: var(--field-bg);\n}\n\n.radio__input:checked + .radio__mark {\n border: 5px solid var(--accent);\n}\n\n.radio__input:focus-visible + .radio__mark {\n box-shadow: 0 0 0 var(--bw-focus) var(--focus-ring);\n}\n\n.radio-group[data-disabled],\n.radio:has(.radio__input:disabled) {\n cursor: not-allowed;\n opacity: 0.7;\n}\n</style>\n","<template>\n <label class=\"switch\" :data-disabled=\"disabled || null\">\n <input class=\"switch__input\" type=\"checkbox\" :checked=\"modelValue\" :disabled=\"disabled\" @change=\"emit('update:modelValue', ($event.target as HTMLInputElement).checked)\" />\n <span class=\"switch__track\" aria-hidden=\"true\"><span class=\"switch__knob\" /></span>\n <span v-if=\"label || $slots.default\"><slot>{{ label }}</slot></span>\n </label>\n</template>\n\n<script setup lang=\"ts\">\nimport type { ASwitchProps } from './ASwitch.types';\n\ndefineOptions({ name: 'ASwitch' });\n\nwithDefaults(defineProps<ASwitchProps>(), {\n modelValue: false,\n disabled: false\n});\n\nconst emit = defineEmits<{ 'update:modelValue': [value: boolean] }>();\n</script>\n\n<style scoped>\n.switch {\n display: inline-flex;\n align-items: center;\n gap: var(--s-2);\n color: var(--text-primary);\n cursor: pointer;\n font-size: 14px;\n}\n\n.switch__input {\n position: absolute;\n opacity: 0;\n}\n\n.switch__track {\n width: 38px;\n height: 22px;\n border-radius: var(--r-full);\n background: var(--bg-muted);\n padding: 2px;\n transition: background var(--dur-base) var(--ease-standard);\n}\n\n.switch__knob {\n display: block;\n width: 18px;\n height: 18px;\n border-radius: var(--r-full);\n background: var(--gray-0);\n box-shadow: var(--shadow-sm);\n transition: transform var(--dur-base) var(--ease-standard);\n}\n\n.switch__input:checked + .switch__track {\n background: var(--accent);\n}\n\n.switch__input:checked + .switch__track .switch__knob {\n transform: translateX(16px);\n}\n\n.switch__input:focus-visible + .switch__track {\n box-shadow: 0 0 0 var(--bw-focus) var(--focus-ring);\n}\n\n.switch[data-disabled] {\n cursor: not-allowed;\n opacity: 0.7;\n}\n</style>\n","<template>\n <div class=\"segmented\" role=\"group\">\n <button\n v-for=\"option in options\"\n :key=\"option.value\"\n class=\"segmented__item\"\n type=\"button\"\n :data-active=\"modelValue === option.value || null\"\n @click=\"emit('update:modelValue', option.value)\"\n >\n {{ option.label }}\n </button>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport type { ASegmentedProps } from './ASegmented.types';\n\ndefineOptions({ name: 'ASegmented' });\n\nwithDefaults(defineProps<ASegmentedProps>(), {\n options: () => []\n});\n\nconst emit = defineEmits<{ 'update:modelValue': [value: string | number] }>();\n</script>\n\n<style scoped>\n.segmented {\n display: inline-flex;\n gap: 3px;\n border: var(--bw-thin) solid var(--border);\n border-radius: var(--r-md);\n background: var(--bg-subtle);\n padding: 3px;\n}\n\n.segmented__item {\n height: var(--ctrl-sm);\n border: 0;\n border-radius: var(--r-sm);\n background: transparent;\n color: var(--text-tertiary);\n font-size: 13.5px;\n padding-inline: var(--s-3);\n}\n\n.segmented__item[data-active] {\n background: var(--bg-surface);\n color: var(--text-primary);\n font-weight: var(--fw-semibold);\n box-shadow: var(--shadow-xs);\n}\n\n.segmented__item:focus-visible {\n outline: none;\n box-shadow: 0 0 0 var(--bw-focus) var(--focus-ring);\n}\n</style>\n","<template>\n <input\n class=\"slider\"\n type=\"range\"\n :value=\"modelValue\"\n :min=\"min\"\n :max=\"max\"\n :step=\"step\"\n :disabled=\"disabled\"\n @input=\"emit('update:modelValue', Number(($event.target as HTMLInputElement).value))\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport type { ASliderProps } from './ASlider.types';\n\ndefineOptions({ name: 'ASlider' });\n\nwithDefaults(defineProps<ASliderProps>(), {\n modelValue: 0,\n min: 0,\n max: 100,\n step: 1,\n disabled: false\n});\n\nconst emit = defineEmits<{ 'update:modelValue': [value: number] }>();\n</script>\n\n<style scoped>\n.slider {\n width: 100%;\n accent-color: var(--accent);\n}\n\n.slider:focus-visible {\n outline: none;\n box-shadow: 0 0 0 var(--bw-focus) var(--focus-ring);\n}\n</style>\n","<template>\n <Teleport to=\"body\">\n <div v-if=\"modelValue\" class=\"modal\" role=\"presentation\" @click=\"onBackdrop\" @keydown=\"onKeydown\">\n <section ref=\"panelRef\" class=\"modal__panel\" :data-size=\"size\" :data-tone=\"tone\" role=\"dialog\" aria-modal=\"true\" :aria-label=\"title\" tabindex=\"-1\">\n <header v-if=\"title || $slots.header\" class=\"modal__header\">\n <slot name=\"header\">\n <span v-if=\"tone !== 'neutral'\" class=\"modal__tone\" aria-hidden=\"true\" />\n <h2 class=\"modal__title\">{{ title }}</h2>\n </slot>\n <button class=\"modal__close\" type=\"button\" :aria-label=\"closeLabel\" @click=\"close\">x</button>\n </header>\n <div class=\"modal__body\">\n <slot />\n </div>\n <footer v-if=\"$slots.footer\" class=\"modal__footer\">\n <slot name=\"footer\" />\n </footer>\n </section>\n </div>\n </Teleport>\n</template>\n\n<script setup lang=\"ts\">\nimport { nextTick, onBeforeUnmount, ref, watch } from 'vue';\nimport type { AModalProps } from './AModal.types';\n\ndefineOptions({ name: 'AModal' });\n\nconst props = withDefaults(defineProps<AModalProps>(), {\n modelValue: false,\n size: 'md',\n tone: 'neutral',\n closeOnBackdrop: true,\n closeOnEsc: true,\n closeLabel: 'Close'\n});\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: boolean];\n close: [];\n}>();\n\nconst panelRef = ref<HTMLElement>();\nlet previousActiveElement: Element | null = null;\n\nconst focusableSelector = [\n 'a[href]',\n 'button:not([disabled])',\n 'textarea:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])'\n].join(',');\n\nfunction getFocusableElements() {\n return Array.from(panelRef.value?.querySelectorAll<HTMLElement>(focusableSelector) || []).filter(\n (element) => !element.hasAttribute('disabled') && element.tabIndex !== -1\n );\n}\n\nasync function focusModal() {\n await nextTick();\n const explicit = props.initialFocus ? panelRef.value?.querySelector<HTMLElement>(props.initialFocus) : undefined;\n const first = explicit || getFocusableElements()[0] || panelRef.value;\n first?.focus();\n}\n\nfunction close() {\n emit('update:modelValue', false);\n emit('close');\n}\n\nfunction onBackdrop(event: MouseEvent) {\n if (props.closeOnBackdrop && event.target === event.currentTarget) close();\n}\n\nfunction onKeydown(event: KeyboardEvent) {\n if (typeof document === 'undefined') return;\n if (event.key === 'Escape' && props.closeOnEsc) {\n event.preventDefault();\n close();\n return;\n }\n\n if (event.key !== 'Tab') return;\n const focusable = getFocusableElements();\n if (focusable.length === 0) {\n event.preventDefault();\n panelRef.value?.focus();\n return;\n }\n\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n if (event.shiftKey && document.activeElement === first) {\n event.preventDefault();\n last?.focus();\n } else if (!event.shiftKey && document.activeElement === last) {\n event.preventDefault();\n first?.focus();\n }\n}\n\nwatch(\n () => props.modelValue,\n (open) => {\n if (typeof document === 'undefined') return;\n if (open) {\n previousActiveElement = document.activeElement;\n void focusModal();\n document.body.style.overflow = 'hidden';\n } else {\n document.body.style.overflow = '';\n if (previousActiveElement instanceof HTMLElement) previousActiveElement.focus();\n }\n },\n { immediate: true }\n);\n\nonBeforeUnmount(() => {\n if (typeof document === 'undefined') return;\n document.body.style.overflow = '';\n});\n</script>\n\n<style scoped>\n.modal {\n position: fixed;\n inset: 0;\n z-index: var(--z-overlay);\n display: grid;\n place-items: center;\n padding: var(--s-4);\n background: rgba(13, 17, 23, 0.35);\n backdrop-filter: blur(2px);\n}\n\n.modal__panel {\n z-index: var(--z-modal);\n width: min(100%, 560px);\n overflow: hidden;\n border: var(--bw-thin) solid var(--border);\n border-radius: var(--r-xl);\n background: var(--bg-surface);\n color: var(--text-primary);\n box-shadow: var(--shadow-xl);\n}\n\n.modal__panel[data-size=\"sm\"] {\n width: min(100%, 420px);\n}\n\n.modal__panel[data-size=\"lg\"] {\n width: min(100%, 760px);\n}\n\n.modal__header,\n.modal__footer {\n display: flex;\n align-items: center;\n gap: var(--s-3);\n padding: var(--s-4);\n}\n\n.modal__header {\n border-bottom: var(--bw-thin) solid var(--border);\n}\n\n.modal__footer {\n justify-content: flex-end;\n border-top: var(--bw-thin) solid var(--border);\n background: var(--bg-inset);\n}\n\n.modal__title {\n flex: 1;\n margin: 0;\n font-size: var(--fs-h3);\n line-height: var(--lh-tight);\n font-weight: var(--fw-semibold);\n}\n\n.modal__body {\n padding: var(--s-4);\n color: var(--text-secondary);\n}\n\n.modal__close {\n display: inline-flex;\n width: 30px;\n height: 30px;\n align-items: center;\n justify-content: center;\n border: 0;\n border-radius: var(--r-sm);\n background: transparent;\n color: var(--text-tertiary);\n}\n\n.modal__close:hover {\n background: var(--bg-hover);\n color: var(--text-primary);\n}\n\n.modal__tone {\n width: 32px;\n height: 32px;\n border-radius: var(--r-md);\n background: var(--accent-subtle);\n}\n\n.modal__panel[data-tone=\"danger\"] .modal__tone {\n background: var(--danger-subtle);\n}\n</style>\n","<template>\n <div class=\"toast-host\" :data-position=\"position\" aria-live=\"polite\">\n <article v-for=\"item in items\" :key=\"item.id\" class=\"toast\" :data-tone=\"item.status || 'neutral'\">\n <span class=\"toast__icon\" aria-hidden=\"true\" />\n <div class=\"toast__content\">\n <strong v-if=\"item.title\" class=\"toast__title\">{{ item.title }}</strong>\n <p class=\"toast__message\">{{ item.message }}</p>\n </div>\n <button v-if=\"closable\" class=\"toast__close\" type=\"button\" :aria-label=\"closeLabel\" @click=\"emit('close', item.id)\">x</button>\n </article>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport type { AToastProps } from './AToast.types';\n\ndefineOptions({ name: 'AToast' });\n\nwithDefaults(defineProps<AToastProps>(), {\n items: () => [],\n position: 'top-right',\n closable: false,\n closeLabel: 'Close toast'\n});\n\nconst emit = defineEmits<{\n close: [id: string | number];\n}>();\n</script>\n\n<style scoped>\n.toast-host {\n position: fixed;\n z-index: var(--z-toast);\n display: grid;\n gap: var(--s-3);\n width: min(calc(100vw - var(--s-8)), 380px);\n}\n\n.toast-host[data-position=\"top-right\"] {\n top: var(--s-4);\n right: var(--s-4);\n}\n\n.toast-host[data-position=\"top-left\"] {\n top: var(--s-4);\n left: var(--s-4);\n}\n\n.toast-host[data-position=\"bottom-right\"] {\n right: var(--s-4);\n bottom: var(--s-4);\n}\n\n.toast-host[data-position=\"bottom-left\"] {\n bottom: var(--s-4);\n left: var(--s-4);\n}\n\n.toast {\n display: flex;\n gap: var(--s-3);\n border: var(--bw-thin) solid var(--border);\n border-radius: var(--r-md);\n padding: var(--s-3);\n background: var(--bg-surface);\n color: var(--text-primary);\n box-shadow: var(--shadow-lg);\n animation: ain-toast-in var(--dur-slow) var(--ease-standard);\n}\n\n.toast__icon {\n width: 28px;\n height: 28px;\n border-radius: var(--r-full);\n background: var(--accent-subtle);\n}\n\n.toast[data-tone=\"success\"] .toast__icon {\n background: var(--success-subtle);\n}\n\n.toast[data-tone=\"warning\"] .toast__icon {\n background: var(--warning-subtle);\n}\n\n.toast[data-tone=\"danger\"] .toast__icon {\n background: var(--danger-subtle);\n}\n\n.toast__content {\n flex: 1;\n min-width: 0;\n}\n\n.toast__title,\n.toast__message {\n margin: 0;\n}\n\n.toast__title {\n font-size: 14px;\n font-weight: var(--fw-semibold);\n}\n\n.toast__message {\n color: var(--text-secondary);\n font-size: 13.5px;\n}\n\n.toast__close {\n align-self: start;\n border: 0;\n border-radius: var(--r-sm);\n background: transparent;\n color: var(--text-tertiary);\n}\n\n.toast__close:hover {\n background: var(--bg-hover);\n color: var(--text-primary);\n}\n</style>\n","import { readonly, ref } from 'vue';\nimport type { AToastItem } from '../components/AToast/AToast.types';\nimport type { AStatus } from '../types';\n\nexport interface ToastOptions {\n message?: string;\n duration?: number;\n}\n\nconst toasts = ref<AToastItem[]>([]);\nconst timers = new Map<string | number, ReturnType<typeof setTimeout>>();\nlet toastId = 0;\n\nfunction schedule(id: string | number, duration = 5000) {\n if (typeof window === 'undefined' || duration <= 0) return;\n clear(id);\n timers.set(\n id,\n window.setTimeout(() => {\n dismiss(id);\n }, duration)\n );\n}\n\nfunction clear(id: string | number) {\n const timer = timers.get(id);\n if (timer) window.clearTimeout(timer);\n timers.delete(id);\n}\n\nfunction push(status: AStatus, title: string, options: ToastOptions = {}) {\n toastId += 1;\n const id = `toast-${toastId}`;\n const item: AToastItem = {\n id,\n title,\n message: options.message || title,\n status,\n duration: options.duration ?? 5000\n };\n toasts.value = [item, ...toasts.value].slice(0, 5);\n schedule(id, item.duration);\n return id;\n}\n\nfunction dismiss(id: string | number) {\n clear(id);\n toasts.value = toasts.value.filter((toast) => toast.id !== id);\n}\n\nfunction pause(id: string | number) {\n clear(id);\n}\n\nfunction resume(id: string | number) {\n const item = toasts.value.find((toast) => toast.id === id);\n if (item) schedule(id, item.duration);\n}\n\nexport function useToast() {\n return {\n toasts: readonly(toasts),\n dismiss,\n pause,\n resume,\n toast: {\n success: (title: string, options?: ToastOptions) => push('success', title, options),\n info: (title: string, options?: ToastOptions) => push('info', title, options),\n warning: (title: string, options?: ToastOptions) => push('warning', title, options),\n error: (title: string, options?: ToastOptions) => push('danger', title, options)\n }\n };\n}\n","<template>\n <div class=\"toast-host\" :data-position=\"position\" aria-live=\"polite\">\n <article\n v-for=\"item in toasts\"\n :key=\"item.id\"\n class=\"toast\"\n :data-tone=\"item.status || 'neutral'\"\n @mouseenter=\"pause(item.id)\"\n @mouseleave=\"resume(item.id)\"\n >\n <span class=\"toast__icon\" aria-hidden=\"true\" />\n <div class=\"toast__content\">\n <strong v-if=\"item.title\" class=\"toast__title\">{{ item.title }}</strong>\n <p class=\"toast__message\">{{ item.message }}</p>\n </div>\n <button class=\"toast__close\" type=\"button\" :aria-label=\"closeLabel\" @click=\"dismiss(item.id)\">x</button>\n </article>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { useToast } from '../../composables/useToast';\n\ndefineOptions({ name: 'AToastHost' });\n\nwithDefaults(\n defineProps<{\n position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left';\n closeLabel?: string;\n }>(),\n {\n position: 'top-right',\n closeLabel: 'Close toast'\n }\n);\n\nconst { toasts, dismiss, pause, resume } = useToast();\n</script>\n\n<style scoped>\n@import \"./AToastHost.shared.css\";\n</style>\n","<template>\n <nav class=\"pagination\" :aria-label=\"ariaLabel\">\n <span class=\"pagination__range\">{{ start }}-{{ end }} {{ ofLabel }} {{ total }}</span>\n <button class=\"pagination__btn\" type=\"button\" :disabled=\"modelValue <= 1\" @click=\"emit('update:modelValue', modelValue - 1)\">{{ previousLabel }}</button>\n <span class=\"pagination__page\">{{ modelValue }} / {{ pageCount }}</span>\n <button class=\"pagination__btn\" type=\"button\" :disabled=\"modelValue >= pageCount\" @click=\"emit('update:modelValue', modelValue + 1)\">{{ nextLabel }}</button>\n </nav>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport type { APaginationProps } from './APagination.types';\n\ndefineOptions({ name: 'APagination' });\n\nconst props = withDefaults(defineProps<APaginationProps>(), {\n modelValue: 1,\n total: 0,\n pageSize: 20,\n previousLabel: 'Prev',\n nextLabel: 'Next',\n ariaLabel: 'Pagination',\n ofLabel: 'of'\n});\n\nconst emit = defineEmits<{ 'update:modelValue': [value: number] }>();\n\nconst pageCount = computed(() => Math.max(1, Math.ceil(props.total / props.pageSize)));\nconst start = computed(() => (props.total === 0 ? 0 : (props.modelValue - 1) * props.pageSize + 1));\nconst end = computed(() => Math.min(props.total, props.modelValue * props.pageSize));\n</script>\n\n<style scoped>\n.pagination {\n display: inline-flex;\n align-items: center;\n gap: var(--s-2);\n color: var(--text-secondary);\n font-size: 13px;\n}\n\n.pagination__range,\n.pagination__page {\n font-family: var(--font-mono);\n}\n\n.pagination__btn {\n height: 32px;\n border: var(--bw-thin) solid var(--border);\n border-radius: var(--r-sm);\n background: var(--bg-surface);\n color: var(--text-primary);\n padding-inline: var(--s-3);\n}\n\n.pagination__btn:hover:not(:disabled) {\n background: var(--bg-hover);\n}\n\n.pagination__btn:disabled {\n color: var(--text-tertiary);\n cursor: not-allowed;\n}\n</style>\n","<template>\n <span class=\"skeleton\" :data-rounded=\"rounded || null\" :style=\"{ width: w, height: h }\" />\n</template>\n\n<script setup lang=\"ts\">\nimport type { ASkeletonProps } from './ASkeleton.types';\n\ndefineOptions({ name: 'ASkeleton' });\n\nwithDefaults(defineProps<ASkeletonProps>(), {\n w: '100%',\n h: '16px',\n rounded: false\n});\n</script>\n\n<style scoped>\n.skeleton {\n display: block;\n border-radius: var(--r-sm);\n background: linear-gradient(90deg, var(--bg-muted) 25%, var(--bg-subtle) 37%, var(--bg-muted) 63%);\n background-size: 200% 100%;\n animation: ain-shimmer 1.4s linear infinite;\n}\n\n.skeleton[data-rounded] {\n border-radius: var(--r-full);\n}\n</style>\n","<template>\n <div class=\"data-table\" :data-striped=\"striped || null\" :data-loading=\"loading || null\">\n <div v-if=\"toolbar || $slots.toolbar\" class=\"data-table__toolbar\">\n <slot name=\"toolbar\">\n <AInput v-model=\"searchValue\" size=\"sm\" :placeholder=\"searchPlaceholder\" @update:model-value=\"emit('search', $event)\" />\n <div class=\"data-table__toolbar-spacer\" />\n <AButton variant=\"secondary\" size=\"sm\" @click=\"emit('export')\">{{ exportLabel }}</AButton>\n <AButton size=\"sm\" @click=\"emit('add')\">{{ addLabel }}</AButton>\n </slot>\n </div>\n\n <div class=\"data-table__scroll\">\n <table class=\"data-table__table\">\n <thead>\n <tr>\n <th v-if=\"selectable\" class=\"data-table__select-cell\">\n <ACheckbox :model-value=\"allVisibleSelected\" :indeterminate=\"someVisibleSelected\" :aria-label=\"selectAllLabel\" @update:model-value=\"toggleAll\" />\n </th>\n <th\n v-for=\"column in columns\"\n :key=\"column.key\"\n :data-align=\"column.align || (column.numeric ? 'right' : 'left')\"\n :style=\"{ width: column.width }\"\n >\n <button v-if=\"column.sortable\" class=\"data-table__sort\" type=\"button\" @click=\"toggleSort(column)\">\n <span>{{ column.label }}</span>\n <span class=\"data-table__sort-icon\" :data-active=\"sort?.key === String(column.key) || null\">\n {{ sort?.key === String(column.key) ? (sort.dir === 'asc' ? 'up' : 'down') : 'sort' }}\n </span>\n </button>\n <span v-else>{{ column.label }}</span>\n </th>\n </tr>\n </thead>\n <tbody>\n <template v-if=\"loading\">\n <tr v-for=\"index in 5\" :key=\"`loading-${index}`\">\n <td v-if=\"selectable\" class=\"data-table__select-cell\"><ASkeleton w=\"18px\" h=\"18px\" rounded /></td>\n <td v-for=\"column in columns\" :key=\"column.key\"><ASkeleton h=\"14px\" /></td>\n </tr>\n </template>\n <tr v-else-if=\"rows.length === 0\">\n <td class=\"data-table__empty\" :colspan=\"columns.length + (selectable ? 1 : 0)\">\n <slot name=\"empty\">{{ emptyText }}</slot>\n </td>\n </tr>\n <tr v-for=\"(row, rowIndex) in rows\" v-else :key=\"getRowKey(row, rowIndex)\" :data-selected=\"isSelected(row, rowIndex) || null\">\n <td v-if=\"selectable\" class=\"data-table__select-cell\">\n <ACheckbox :model-value=\"isSelected(row, rowIndex)\" @update:model-value=\"toggleRow(row, rowIndex)\" />\n </td>\n <td v-for=\"column in columns\" :key=\"column.key\" :data-align=\"column.align || (column.numeric ? 'right' : 'left')\" :data-numeric=\"column.numeric || column.align === 'right' || null\">\n <slot :name=\"`cell-${String(column.key)}`\" :row=\"row\" :value=\"row[column.key]\" :column=\"column\">\n {{ row[column.key] }}\n </slot>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <footer v-if=\"showFooter\" class=\"data-table__footer\">\n <span class=\"data-table__range\">{{ footerText }}</span>\n <APagination v-if=\"total > pageSize\" :model-value=\"page\" :total=\"total\" :page-size=\"pageSize\" @update:model-value=\"emit('update:page', $event)\" />\n </footer>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\nimport AButton from '../AButton/AButton.vue';\nimport ACheckbox from '../ACheckbox/ACheckbox.vue';\nimport AInput from '../AInput/AInput.vue';\nimport APagination from '../APagination/APagination.vue';\nimport ASkeleton from '../ASkeleton/ASkeleton.vue';\nimport type { ATableColumn, ATableProps, ATableSort } from './ATable.types';\n\ndefineOptions({ name: 'ATable' });\n\nconst props = withDefaults(defineProps<ATableProps>(), {\n columns: () => [],\n rows: () => [],\n rowKey: 'id',\n emptyText: 'No data',\n striped: false,\n selectable: false,\n loading: false,\n sort: null,\n modelSelected: () => [],\n page: 1,\n pageSize: 20,\n total: 0,\n toolbar: false,\n searchPlaceholder: 'Search',\n exportLabel: 'Export',\n addLabel: 'Add',\n selectedLabel: 'selected',\n ofLabel: 'of',\n selectAllLabel: 'Select all'\n});\n\nconst emit = defineEmits<{\n 'update:sort': [sort: ATableSort | null];\n 'update:modelSelected': [selected: Array<string | number>];\n 'update:page': [page: number];\n search: [value: string];\n export: [];\n add: [];\n}>();\n\nconst searchValue = ref('');\n\nconst effectiveTotal = computed(() => props.total || props.rows.length);\nconst showFooter = computed(() => props.selectable || effectiveTotal.value > props.pageSize);\nconst selectedSet = computed(() => new Set(props.modelSelected));\nconst visibleKeys = computed(() => props.rows.map((row, index) => getRowKey(row, index)));\nconst allVisibleSelected = computed(() => visibleKeys.value.length > 0 && visibleKeys.value.every((key) => selectedSet.value.has(key)));\nconst someVisibleSelected = computed(() => !allVisibleSelected.value && visibleKeys.value.some((key) => selectedSet.value.has(key)));\nconst footerText = computed(() => {\n const start = effectiveTotal.value === 0 ? 0 : (props.page - 1) * props.pageSize + 1;\n const end = Math.min(effectiveTotal.value, props.page * props.pageSize);\n const selected = props.modelSelected.length ? `${props.modelSelected.length} ${props.selectedLabel} · ` : '';\n return `${selected}${start}-${end} ${props.ofLabel} ${effectiveTotal.value}`;\n});\n\nfunction getRowKey(row: Record<string, unknown>, index: number): string | number {\n if (typeof props.rowKey === 'function') return props.rowKey(row, index);\n return (row[props.rowKey] as string | number | undefined) ?? index;\n}\n\nfunction isSelected(row: Record<string, unknown>, index: number) {\n return selectedSet.value.has(getRowKey(row, index));\n}\n\nfunction toggleRow(row: Record<string, unknown>, index: number) {\n const next = new Set(selectedSet.value);\n const key = getRowKey(row, index);\n if (next.has(key)) next.delete(key);\n else next.add(key);\n emit('update:modelSelected', Array.from(next));\n}\n\nfunction toggleAll(value: boolean) {\n const next = new Set(selectedSet.value);\n visibleKeys.value.forEach((key) => {\n if (value) next.add(key);\n else next.delete(key);\n });\n emit('update:modelSelected', Array.from(next));\n}\n\nfunction toggleSort(column: ATableColumn) {\n const key = String(column.key);\n if (!props.sort || props.sort.key !== key) {\n emit('update:sort', { key, dir: 'asc' });\n } else if (props.sort.dir === 'asc') {\n emit('update:sort', { key, dir: 'desc' });\n } else {\n emit('update:sort', null);\n }\n}\n</script>\n\n<style scoped>\n.data-table {\n width: 100%;\n overflow: hidden;\n border: var(--bw-thin) solid var(--border);\n border-radius: var(--r-lg);\n background: var(--bg-surface);\n box-shadow: var(--shadow-xs);\n}\n\n.data-table__toolbar,\n.data-table__footer {\n display: flex;\n align-items: center;\n gap: var(--s-2);\n padding: var(--s-4);\n}\n\n.data-table__toolbar {\n border-bottom: var(--bw-thin) solid var(--border);\n}\n\n.data-table__toolbar-spacer {\n flex: 1;\n}\n\n.data-table__scroll {\n overflow-x: auto;\n}\n\n.data-table__table {\n width: 100%;\n border-collapse: collapse;\n color: var(--text-primary);\n font-size: 13.5px;\n}\n\n.data-table th,\n.data-table td {\n height: var(--row-h);\n padding: 0 var(--s-4);\n border-bottom: var(--bw-thin) solid var(--border);\n vertical-align: middle;\n}\n\n.data-table th {\n background: var(--bg-inset);\n color: var(--text-tertiary);\n font-size: 11.5px;\n font-weight: var(--fw-semibold);\n letter-spacing: var(--ls-wide);\n text-transform: uppercase;\n}\n\n.data-table tbody tr:hover {\n background: var(--bg-hover);\n}\n\n.data-table tbody tr[data-selected] {\n background: var(--accent-subtle);\n}\n\n.data-table[data-striped] tbody tr:nth-child(even) {\n background: var(--bg-subtle);\n}\n\n.data-table tr:last-child td {\n border-bottom: 0;\n}\n\n.data-table [data-align=\"left\"] {\n text-align: left;\n}\n\n.data-table [data-align=\"center\"] {\n text-align: center;\n}\n\n.data-table [data-align=\"right\"] {\n text-align: right;\n}\n\n.data-table [data-numeric] {\n font-family: var(--font-mono);\n}\n\n.data-table__select-cell {\n width: 44px;\n padding-inline: var(--s-3);\n}\n\n.data-table__sort {\n display: inline-flex;\n align-items: center;\n gap: var(--s-1);\n border: 0;\n background: transparent;\n color: inherit;\n font: inherit;\n letter-spacing: inherit;\n text-transform: inherit;\n}\n\n.data-table__sort-icon[data-active] {\n color: var(--accent);\n}\n\n.data-table__empty {\n color: var(--text-tertiary);\n text-align: center;\n}\n\n.data-table__footer {\n justify-content: space-between;\n border-top: var(--bw-thin) solid var(--border);\n background: var(--bg-inset);\n color: var(--text-secondary);\n font-size: 13px;\n}\n\n.data-table__range {\n font-family: var(--font-mono);\n}\n</style>\n","<template>\n <span class=\"badge\" :data-tone=\"resolvedTone\" :data-appearance=\"appearance\">\n <span v-if=\"dot\" class=\"badge__dot\" aria-hidden=\"true\" />\n <slot />\n </span>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport type { ABadgeProps } from './ABadge.types';\n\ndefineOptions({ name: 'ABadge' });\n\nconst props = withDefaults(defineProps<ABadgeProps>(), {\n tone: 'neutral',\n appearance: 'subtle',\n dot: false\n});\n\nconst resolvedTone = computed(() => props.status || props.tone);\n</script>\n\n<style scoped>\n.badge {\n display: inline-flex;\n align-items: center;\n gap: var(--s-1);\n font-weight: var(--fw-semibold);\n white-space: nowrap;\n}\n\n.badge[data-tone=\"neutral\"] {\n --fg: var(--text-secondary);\n --bg: var(--bg-subtle);\n --bd: var(--border);\n --solid-bg: var(--bg-muted);\n --solid-fg: var(--text-secondary);\n --dot: var(--text-tertiary);\n}\n\n.badge[data-tone=\"accent\"] {\n --fg: var(--accent);\n --bg: var(--accent-subtle);\n --bd: var(--accent-border);\n --solid-bg: var(--accent);\n --solid-fg: #fff;\n --dot: var(--accent);\n}\n\n.badge[data-tone=\"success\"] {\n --fg: var(--success);\n --bg: var(--success-subtle);\n --bd: var(--success-border);\n --solid-bg: var(--success);\n --solid-fg: #fff;\n --dot: var(--success);\n}\n\n.badge[data-tone=\"warning\"] {\n --fg: var(--warning);\n --bg: var(--warning-subtle);\n --bd: var(--warning-border);\n --solid-bg: var(--warning);\n --solid-fg: #fff;\n --dot: var(--warning);\n}\n\n.badge[data-tone=\"danger\"] {\n --fg: var(--danger);\n --bg: var(--danger-subtle);\n --bd: var(--danger-border);\n --solid-bg: var(--danger);\n --solid-fg: #fff;\n --dot: var(--danger);\n}\n\n.badge[data-tone=\"info\"] {\n --fg: var(--info);\n --bg: var(--info-subtle);\n --bd: var(--info-border);\n --solid-bg: var(--accent);\n --solid-fg: #fff;\n --dot: var(--info);\n}\n\n.badge[data-appearance=\"subtle\"],\n.badge[data-appearance=\"solid\"],\n.badge[data-appearance=\"outline\"] {\n height: 22px;\n padding-inline: var(--s-2);\n border-radius: var(--r-sm);\n font-size: 12px;\n}\n\n.badge[data-appearance=\"subtle\"] {\n background: var(--bg);\n color: var(--fg);\n}\n\n.badge[data-appearance=\"solid\"] {\n background: var(--solid-bg);\n color: var(--solid-fg);\n}\n\n.badge[data-appearance=\"outline\"] {\n border: var(--bw-thin) solid var(--bd);\n background: transparent;\n color: var(--fg);\n}\n\n.badge[data-appearance=\"pill\"] {\n height: 24px;\n padding-inline: var(--s-2);\n border: var(--bw-thin) solid var(--bd);\n border-radius: var(--r-full);\n background: var(--bg);\n color: var(--fg);\n font-size: 12.5px;\n}\n\n.badge__dot {\n width: 6px;\n height: 6px;\n border-radius: var(--r-full);\n background: var(--dot);\n flex-shrink: 0;\n}\n</style>\n","<template>\n <span class=\"tag\">\n <span v-if=\"color\" class=\"tag__swatch\" :style=\"{ background: color }\" aria-hidden=\"true\" />\n <slot />\n <button v-if=\"removable\" class=\"tag__remove\" type=\"button\" :aria-label=\"removeLabel\" @click=\"emit('remove')\">x</button>\n </span>\n</template>\n\n<script setup lang=\"ts\">\nimport type { ATagProps } from './ATag.types';\n\ndefineOptions({ name: 'ATag' });\n\nwithDefaults(defineProps<ATagProps>(), {\n removable: false,\n removeLabel: 'Remove'\n});\n\nconst emit = defineEmits<{ remove: [] }>();\n</script>\n\n<style scoped>\n.tag {\n display: inline-flex;\n height: 26px;\n align-items: center;\n gap: var(--s-1);\n border: var(--bw-thin) solid var(--border);\n border-radius: var(--r-sm);\n background: var(--bg-subtle);\n color: var(--text-secondary);\n font-size: 12.5px;\n padding-inline: var(--s-2);\n}\n\n.tag__swatch {\n width: 8px;\n height: 8px;\n border-radius: var(--r-xs);\n}\n\n.tag__remove {\n border: 0;\n background: transparent;\n color: var(--text-tertiary);\n}\n</style>\n","<template>\n <ABadge :tone=\"tone\" appearance=\"pill\" dot>\n <slot />\n </ABadge>\n</template>\n\n<script setup lang=\"ts\">\nimport ABadge from '../ABadge/ABadge.vue';\nimport type { AStatusPillProps } from './AStatusPill.types';\n\ndefineOptions({ name: 'AStatusPill' });\n\nwithDefaults(defineProps<AStatusPillProps>(), {\n tone: 'neutral'\n});\n</script>\n","<template>\n <section class=\"card\" :data-padded=\"padded || null\">\n <header v-if=\"title || subtitle || $slots.header\" class=\"card__header\">\n <slot name=\"header\">\n <div>\n <h3 v-if=\"title\" class=\"card__title\">{{ title }}</h3>\n <p v-if=\"subtitle\" class=\"card__subtitle\">{{ subtitle }}</p>\n </div>\n </slot>\n </header>\n <div class=\"card__body\">\n <slot />\n </div>\n <footer v-if=\"$slots.footer\" class=\"card__footer\">\n <slot name=\"footer\" />\n </footer>\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport type { ACardProps } from './ACard.types';\n\ndefineOptions({ name: 'ACard' });\n\nwithDefaults(defineProps<ACardProps>(), {\n padded: true\n});\n</script>\n\n<style scoped>\n.card {\n border: var(--bw-thin) solid var(--card-border);\n border-radius: var(--card-radius);\n background: var(--card-bg);\n color: var(--text-primary);\n box-shadow: var(--card-shadow);\n}\n\n.card[data-padded] .card__body,\n.card__header,\n.card__footer {\n padding: var(--card-pad);\n}\n\n.card__header {\n border-bottom: var(--bw-thin) solid var(--border);\n}\n\n.card__footer {\n display: flex;\n justify-content: flex-end;\n gap: var(--s-2);\n border-top: var(--bw-thin) solid var(--border);\n background: var(--bg-inset);\n}\n\n.card__title,\n.card__subtitle {\n margin: 0;\n}\n\n.card__title {\n font-size: var(--fs-h3);\n line-height: var(--lh-tight);\n font-weight: var(--fw-semibold);\n}\n\n.card__subtitle {\n margin-top: var(--s-1);\n color: var(--text-secondary);\n font-size: var(--fs-caption);\n}\n</style>\n","<template>\n <svg class=\"icon\" :width=\"size\" :height=\"size\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path :d=\"path\" />\n </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport type { AIconProps } from './AIcon.types';\n\ndefineOptions({ name: 'AIcon' });\n\nconst props = withDefaults(defineProps<AIconProps>(), {\n size: 20\n});\n\nconst paths: Record<string, string> = {\n home: 'M3 11.5 12 4l9 7.5V20a1 1 0 0 1-1 1h-5v-6H9v6H4a1 1 0 0 1-1-1v-8.5Z',\n grid: 'M4 4h6v6H4V4Zm10 0h6v6h-6V4ZM4 14h6v6H4v-6Zm10 0h6v6h-6v-6Z',\n wallet: 'M4 7h16v12H4a2 2 0 0 1-2-2V7a3 3 0 0 1 3-3h13v3',\n doc: 'M6 3h8l4 4v14H6V3Zm8 0v5h5',\n users: 'M16 19c0-2-2-4-4-4s-4 2-4 4m8-10a4 4 0 1 1-8 0 4 4 0 0 1 8 0Zm3 10c0-1.5-1-2.8-2.4-3.5M17 5.2a3 3 0 0 1 0 5.6',\n chart: 'M4 19V5m0 14h16M8 16v-5m5 5V8m5 8v-9',\n settings: 'M12 8a4 4 0 1 1 0 8 4 4 0 0 1 0-8Zm8 4h2M2 12h2m12.8-6.8 1.4-1.4M5.8 18.2l1.4-1.4m0-11.6L5.8 3.8m12.4 14.4-1.4-1.4',\n search: 'M10.5 18a7.5 7.5 0 1 1 0-15 7.5 7.5 0 0 1 0 15Zm5.5-2 5 5',\n bell: 'M18 9a6 6 0 1 0-12 0c0 7-3 7-3 7h18s-3 0-3-7Zm-4 10a2 2 0 0 1-4 0',\n plus: 'M12 5v14M5 12h14',\n check: 'M20 6 9 17l-5-5',\n x: 'M6 6l12 12M18 6 6 18',\n arrow: 'M5 12h14m-6-6 6 6-6 6',\n chevron: 'm8 10 4 4 4-4',\n down: 'm7 9 5 5 5-5',\n up: 'm7 15 5-5 5 5',\n calendar: 'M7 3v4m10-4v4M4 9h16M5 5h14v16H5V5Z',\n filter: 'M4 5h16l-6 7v6l-4 2v-8L4 5Z',\n upload: 'M12 16V4m-5 5 5-5 5 5M5 20h14',\n trash: 'M4 7h16M9 7V4h6v3m-8 0 1 14h8l1-14',\n pencil: 'M4 20h4L19 9l-4-4L4 16v4Z',\n star: 'm12 3 2.8 5.7 6.2.9-4.5 4.4 1.1 6.2L12 17.6 6.5 20l1-6.2L3 9.4l6.2-.9L12 3Z',\n clock: 'M12 21a9 9 0 1 1 0-18 9 9 0 0 1 0 18Zm0-13v5l3 2',\n lock: 'M7 10V7a5 5 0 0 1 10 0v3M6 10h12v11H6V10Z',\n mail: 'M4 6h16v12H4V6Zm0 0 8 7 8-7',\n info: 'M12 17v-6m0-4h.01M12 22a10 10 0 1 1 0-20 10 10 0 0 1 0 20Z',\n warn: 'M12 4 2 21h20L12 4Zm0 6v5m0 3h.01',\n sort: 'M8 7h8M10 12h6M12 17h4',\n dots: 'M5 12h.01M12 12h.01M19 12h.01',\n card: 'M3 6h18v12H3V6Zm0 4h18'\n};\n\nconst path = computed(() => paths[props.name] || paths.info);\n</script>\n\n<style scoped>\n.icon {\n display: inline-block;\n flex-shrink: 0;\n fill: none;\n stroke: currentColor;\n stroke-linecap: round;\n stroke-linejoin: round;\n stroke-width: 1.7;\n}\n</style>\n","<template>\n <section class=\"alert\" :data-tone=\"tone\" role=\"status\">\n <AIcon class=\"alert__icon\" :name=\"tone === 'warning' || tone === 'danger' ? 'warn' : 'info'\" />\n <div class=\"alert__content\">\n <strong v-if=\"title\" class=\"alert__title\">{{ title }}</strong>\n <div class=\"alert__body\"><slot /></div>\n </div>\n <button v-if=\"dismissible\" class=\"alert__close\" type=\"button\" :aria-label=\"dismissLabel\" @click=\"emit('dismiss')\">x</button>\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport AIcon from '../AIcon/AIcon.vue';\nimport type { AAlertProps } from './AAlert.types';\n\ndefineOptions({ name: 'AAlert' });\n\nwithDefaults(defineProps<AAlertProps>(), {\n tone: 'info',\n dismissible: false,\n dismissLabel: 'Dismiss'\n});\n\nconst emit = defineEmits<{ dismiss: [] }>();\n</script>\n\n<style scoped>\n.alert {\n display: flex;\n gap: var(--s-3);\n border: var(--bw-thin) solid var(--info-border);\n border-radius: var(--r-md);\n background: var(--info-subtle);\n color: var(--text-primary);\n padding: var(--s-3);\n}\n\n.alert[data-tone=\"success\"] {\n border-color: var(--success-border);\n background: var(--success-subtle);\n}\n\n.alert[data-tone=\"warning\"] {\n border-color: var(--warning-border);\n background: var(--warning-subtle);\n}\n\n.alert[data-tone=\"danger\"] {\n border-color: var(--danger-border);\n background: var(--danger-subtle);\n}\n\n.alert__icon {\n color: var(--info);\n}\n\n.alert[data-tone=\"success\"] .alert__icon {\n color: var(--success);\n}\n\n.alert[data-tone=\"warning\"] .alert__icon {\n color: var(--warning);\n}\n\n.alert[data-tone=\"danger\"] .alert__icon {\n color: var(--danger);\n}\n\n.alert__content {\n flex: 1;\n}\n\n.alert__title {\n display: block;\n font-size: 14px;\n font-weight: var(--fw-semibold);\n}\n\n.alert__body {\n color: var(--text-secondary);\n font-size: 13.5px;\n}\n\n.alert__close {\n border: 0;\n background: transparent;\n color: var(--text-tertiary);\n}\n</style>\n","<template>\n <div class=\"progress\">\n <div v-if=\"label\" class=\"progress__label\">\n <span>{{ label }}</span>\n <span>{{ normalized }}%</span>\n </div>\n <div class=\"progress__track\" role=\"progressbar\" :aria-valuenow=\"normalized\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n <span class=\"progress__fill\" :style=\"{ width: `${normalized}%` }\" />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport type { AProgressProps } from './AProgress.types';\n\ndefineOptions({ name: 'AProgress' });\n\nconst props = withDefaults(defineProps<AProgressProps>(), {\n value: 0\n});\n\nconst normalized = computed(() => Math.min(100, Math.max(0, props.value)));\n</script>\n\n<style scoped>\n.progress {\n display: grid;\n gap: var(--s-2);\n}\n\n.progress__label {\n display: flex;\n justify-content: space-between;\n color: var(--text-secondary);\n font-size: 13px;\n}\n\n.progress__label span:last-child {\n font-family: var(--font-mono);\n}\n\n.progress__track {\n height: 8px;\n overflow: hidden;\n border-radius: var(--r-full);\n background: var(--bg-muted);\n}\n\n.progress__fill {\n display: block;\n height: 100%;\n border-radius: inherit;\n background: var(--accent);\n}\n</style>\n","<template>\n <div class=\"tabs\" :data-variant=\"variant\" role=\"tablist\">\n <button\n v-for=\"(tab, index) in tabs\"\n :key=\"tab.value\"\n :ref=\"(element) => setTabRef(element as HTMLButtonElement | null, index)\"\n class=\"tabs__item\"\n type=\"button\"\n role=\"tab\"\n :aria-selected=\"modelValue === tab.value\"\n :tabindex=\"modelValue === tab.value ? 0 : -1\"\n :data-active=\"modelValue === tab.value || null\"\n @click=\"emit('update:modelValue', tab.value)\"\n @keydown.left.prevent=\"focusSibling(index, -1)\"\n @keydown.right.prevent=\"focusSibling(index, 1)\"\n >\n {{ tab.label }}\n <span v-if=\"tab.count != null\" class=\"tabs__count\">{{ tab.count }}</span>\n </button>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport type { ATabsProps } from './ATabs.types';\n\ndefineOptions({ name: 'ATabs' });\n\nwithDefaults(defineProps<ATabsProps>(), {\n tabs: () => [],\n variant: 'underline'\n});\n\nconst emit = defineEmits<{ 'update:modelValue': [value: string | number] }>();\nconst tabRefs = ref<HTMLButtonElement[]>([]);\n\nfunction setTabRef(element: HTMLButtonElement | null, index: number) {\n if (!element) return;\n tabRefs.value[index] = element;\n}\n\nfunction focusSibling(index: number, delta: number) {\n const nextIndex = (index + delta + tabRefs.value.length) % tabRefs.value.length;\n tabRefs.value[nextIndex]?.focus();\n}\n</script>\n\n<style scoped>\n.tabs {\n display: flex;\n gap: var(--s-1);\n}\n\n.tabs[data-variant=\"underline\"] {\n border-bottom: var(--bw-thin) solid var(--border);\n}\n\n.tabs[data-variant=\"pill\"] {\n display: inline-flex;\n border: var(--bw-thin) solid var(--border);\n border-radius: var(--r-md);\n background: var(--bg-subtle);\n padding: var(--s-1);\n}\n\n.tabs__item {\n display: inline-flex;\n align-items: center;\n gap: var(--s-1);\n border: 0;\n background: transparent;\n color: var(--text-tertiary);\n font-size: 14px;\n padding: var(--s-2) var(--s-3);\n}\n\n.tabs__item[data-active] {\n color: var(--text-primary);\n font-weight: var(--fw-semibold);\n}\n\n.tabs[data-variant=\"underline\"] .tabs__item[data-active] {\n box-shadow: inset 0 -2px 0 var(--accent);\n}\n\n.tabs[data-variant=\"pill\"] .tabs__item[data-active] {\n border-radius: var(--r-sm);\n background: var(--bg-surface);\n box-shadow: var(--shadow-xs);\n}\n\n.tabs__count {\n border-radius: var(--r-full);\n background: var(--bg-muted);\n color: var(--text-secondary);\n font-size: 11px;\n padding-inline: 6px;\n}\n</style>\n","<template>\n <nav class=\"breadcrumbs\" aria-label=\"Breadcrumbs\">\n <ol class=\"breadcrumbs__list\">\n <li v-for=\"(item, index) in items\" :key=\"`${item.label}-${index}`\" class=\"breadcrumbs__item\">\n <a v-if=\"item.href && index < items.length - 1\" class=\"breadcrumbs__link\" :href=\"item.href\">{{ item.label }}</a>\n <span v-else class=\"breadcrumbs__current\">{{ item.label }}</span>\n </li>\n </ol>\n </nav>\n</template>\n\n<script setup lang=\"ts\">\nimport type { ABreadcrumbsProps } from './ABreadcrumbs.types';\n\ndefineOptions({ name: 'ABreadcrumbs' });\n\nwithDefaults(defineProps<ABreadcrumbsProps>(), {\n items: () => []\n});\n</script>\n\n<style scoped>\n.breadcrumbs__list {\n display: flex;\n align-items: center;\n gap: var(--s-2);\n margin: 0;\n padding: 0;\n list-style: none;\n font-size: 13px;\n}\n\n.breadcrumbs__item {\n display: inline-flex;\n align-items: center;\n gap: var(--s-2);\n}\n\n.breadcrumbs__item:not(:last-child)::after {\n color: var(--text-tertiary);\n content: \"/\";\n}\n\n.breadcrumbs__link {\n color: var(--text-secondary);\n text-decoration: none;\n}\n\n.breadcrumbs__link:hover,\n.breadcrumbs__current {\n color: var(--text-primary);\n}\n\n.breadcrumbs__current {\n font-weight: var(--fw-semibold);\n}\n</style>\n","<template>\n <span class=\"avatar\" :data-shape=\"shape\" :data-status=\"status\" :style=\"{ width: `${size}px`, height: `${size}px` }\">\n <img v-if=\"src\" class=\"avatar__image\" :src=\"src\" :alt=\"name\" />\n <span v-else class=\"avatar__initials\">{{ initials }}</span>\n <span v-if=\"status !== 'none'\" class=\"avatar__status\" aria-hidden=\"true\" />\n </span>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport type { AAvatarProps } from './AAvatar.types';\n\ndefineOptions({ name: 'AAvatar' });\n\nconst props = withDefaults(defineProps<AAvatarProps>(), {\n name: '',\n size: 32,\n shape: 'circle',\n status: 'none'\n});\n\nconst initials = computed(() =>\n props.name\n .split(' ')\n .filter(Boolean)\n .slice(0, 2)\n .map((part) => part[0]?.toUpperCase())\n .join('') || '?'\n);\n</script>\n\n<style scoped>\n.avatar {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--r-full);\n background: var(--accent);\n color: #fff;\n font-weight: var(--fw-semibold);\n overflow: visible;\n}\n\n.avatar[data-shape=\"square\"] {\n border-radius: var(--r-md);\n}\n\n.avatar__image {\n width: 100%;\n height: 100%;\n border-radius: inherit;\n object-fit: cover;\n}\n\n.avatar__status {\n position: absolute;\n right: 0;\n bottom: 0;\n width: 12px;\n height: 12px;\n border-radius: var(--r-full);\n background: var(--success);\n box-shadow: 0 0 0 var(--bw-ring) var(--bg-surface);\n}\n\n.avatar[data-status=\"away\"] .avatar__status {\n background: var(--warning);\n}\n\n.avatar[data-status=\"busy\"] .avatar__status {\n background: var(--danger);\n}\n</style>\n","<template>\n <div class=\"avatar-group\">\n <AAvatar v-for=\"(item, index) in visibleItems\" :key=\"`${item.name}-${index}`\" v-bind=\"item\" />\n <span v-if=\"overflow > 0\" class=\"avatar-group__overflow\">+{{ overflow }}</span>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport AAvatar from '../AAvatar/AAvatar.vue';\nimport type { AAvatarGroupProps } from './AAvatarGroup.types';\n\ndefineOptions({ name: 'AAvatarGroup' });\nconst props = withDefaults(defineProps<AAvatarGroupProps>(), { items: () => [], max: 4 });\nconst visibleItems = computed(() => props.items.slice(0, props.max));\nconst overflow = computed(() => Math.max(0, props.items.length - props.max));\n</script>\n\n<style scoped>\n.avatar-group { display: inline-flex; align-items: center; }\n.avatar-group :deep(.avatar), .avatar-group__overflow { margin-left: -10px; box-shadow: 0 0 0 var(--bw-ring) var(--bg-surface); }\n.avatar-group :deep(.avatar:first-child) { margin-left: 0; }\n.avatar-group__overflow { display: inline-grid; width: 32px; height: 32px; place-items: center; border-radius: var(--r-full); background: var(--bg-muted); color: var(--text-secondary); font-size: 12px; font-weight: var(--fw-semibold); }\n</style>\n","<template>\n <section class=\"empty\" :data-tone=\"tone\">\n <div class=\"empty__icon\" aria-hidden=\"true\">{{ icon }}</div>\n <h3 class=\"empty__title\">{{ title }}</h3>\n <p v-if=\"desc\" class=\"empty__desc\">{{ desc }}</p>\n <div v-if=\"$slots.action\" class=\"empty__action\"><slot name=\"action\" /></div>\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport type { AEmptyStateProps } from './AEmptyState.types';\n\ndefineOptions({ name: 'AEmptyState' });\n\nwithDefaults(defineProps<AEmptyStateProps>(), {\n tone: 'no-data',\n title: 'No data',\n icon: 'i'\n});\n</script>\n\n<style scoped>\n.empty {\n display: grid;\n justify-items: center;\n gap: var(--s-3);\n border: var(--bw-thin) dashed var(--border-strong);\n border-radius: var(--r-lg);\n background: var(--bg-surface);\n padding: var(--s-10);\n text-align: center;\n}\n\n.empty__icon {\n display: grid;\n width: 52px;\n height: 52px;\n place-items: center;\n border-radius: var(--r-lg);\n background: var(--bg-subtle);\n color: var(--text-tertiary);\n}\n\n.empty__title,\n.empty__desc {\n margin: 0;\n}\n\n.empty__title {\n font-size: 15px;\n font-weight: var(--fw-semibold);\n}\n\n.empty__desc {\n max-width: 34ch;\n color: var(--text-secondary);\n font-size: 14px;\n}\n</style>\n","<template>\n <ACard>\n <div class=\"kpi\">\n <div class=\"kpi__top\">\n <span class=\"kpi__label\">{{ label }}</span>\n <ABadge v-if=\"delta\" :tone=\"deltaTone\" appearance=\"pill\">{{ delta }}</ABadge>\n </div>\n <strong class=\"kpi__value\">{{ value }}</strong>\n <slot />\n </div>\n </ACard>\n</template>\n\n<script setup lang=\"ts\">\nimport ABadge from '../ABadge/ABadge.vue';\nimport ACard from '../ACard/ACard.vue';\nimport type { AKpiCardProps } from './AKpiCard.types';\n\ndefineOptions({ name: 'AKpiCard' });\n\nwithDefaults(defineProps<AKpiCardProps>(), {\n deltaTone: 'neutral'\n});\n</script>\n\n<style scoped>\n.kpi {\n display: grid;\n gap: var(--s-3);\n}\n\n.kpi__top {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--s-2);\n}\n\n.kpi__label {\n color: var(--text-secondary);\n font-size: 13px;\n}\n\n.kpi__value {\n color: var(--text-primary);\n font-family: var(--font-mono);\n font-size: var(--fs-h2);\n line-height: var(--lh-tight);\n}\n</style>\n","<template>\n <span class=\"tooltip\" @mouseenter=\"open = true\" @mouseleave=\"open = false\" @focusin=\"open = true\" @focusout=\"open = false\">\n <slot />\n <span v-if=\"open\" class=\"tooltip__bubble\" :data-placement=\"placement\" role=\"tooltip\">{{ content }}</span>\n </span>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport type { ATooltipProps } from './ATooltip.types';\n\ndefineOptions({ name: 'ATooltip' });\nwithDefaults(defineProps<ATooltipProps>(), { placement: 'top' });\nconst open = ref(false);\n</script>\n\n<style scoped>\n.tooltip { position: relative; display: inline-flex; }\n.tooltip__bubble {\n position: absolute; z-index: var(--z-tooltip); width: max-content; max-width: 240px;\n border-radius: var(--r-sm); background: var(--gray-900); color: #fff;\n box-shadow: var(--shadow-md); font-size: 12px; padding: 6px 10px; pointer-events: none;\n}\n.tooltip__bubble[data-placement=\"top\"] { bottom: calc(100% + 8px); left: 50%; transform: translateX(-50%); }\n.tooltip__bubble[data-placement=\"bottom\"] { top: calc(100% + 8px); left: 50%; transform: translateX(-50%); }\n.tooltip__bubble[data-placement=\"left\"] { right: calc(100% + 8px); top: 50%; transform: translateY(-50%); }\n.tooltip__bubble[data-placement=\"right\"] { left: calc(100% + 8px); top: 50%; transform: translateY(-50%); }\n</style>\n","<template>\n <nav class=\"sidebar-nav\">\n <section v-for=\"(group, groupIndex) in groups\" :key=\"group.label || groupIndex\" class=\"sidebar-nav__group\">\n <h3 v-if=\"group.label\" class=\"sidebar-nav__caption\">{{ group.label }}</h3>\n <a v-for=\"item in group.items\" :key=\"item.label\" class=\"sidebar-nav__item\" :data-active=\"item.active || null\" :href=\"item.href || '#'\" @click=\"emit('select', item)\">\n <AIcon v-if=\"item.icon\" :name=\"item.icon\" :size=\"20\" />\n <span>{{ item.label }}</span>\n <span v-if=\"item.badge != null\" class=\"sidebar-nav__badge\">{{ item.badge }}</span>\n </a>\n </section>\n </nav>\n</template>\n\n<script setup lang=\"ts\">\nimport AIcon from '../AIcon/AIcon.vue';\nimport type { ASidebarNavItem, ASidebarNavProps } from './ASidebarNav.types';\n\ndefineOptions({ name: 'ASidebarNav' });\nwithDefaults(defineProps<ASidebarNavProps>(), { groups: () => [] });\nconst emit = defineEmits<{ select: [item: ASidebarNavItem] }>();\n</script>\n\n<style scoped>\n.sidebar-nav { display: grid; gap: var(--s-5); }\n.sidebar-nav__group { display: grid; gap: var(--s-1); }\n.sidebar-nav__caption { margin: 0 0 var(--s-1); color: var(--text-tertiary); font-size: 10.5px; letter-spacing: var(--ls-wide); text-transform: uppercase; }\n.sidebar-nav__item { display: flex; align-items: center; gap: 10px; border-radius: var(--r-sm); color: var(--text-secondary); font-size: 13.5px; padding: 8px 10px; text-decoration: none; }\n.sidebar-nav__item:hover { background: var(--bg-hover); }\n.sidebar-nav__item[data-active] { background: var(--accent-subtle); color: var(--accent); font-weight: var(--fw-semibold); }\n.sidebar-nav__badge { margin-left: auto; border-radius: var(--r-full); background: var(--bg-muted); color: var(--text-secondary); font-size: 11px; padding-inline: 6px; }\n</style>\n","<template>\n <div class=\"number-input\" :data-disabled=\"disabled || null\">\n <button type=\"button\" :disabled=\"disabled\" @click=\"change(-step)\">-</button>\n <span v-if=\"prefix\" class=\"number-input__prefix\">{{ prefix }}</span>\n <input :value=\"modelValue\" :disabled=\"disabled\" type=\"number\" :min=\"min\" :max=\"max\" :step=\"step\" @input=\"set(Number(($event.target as HTMLInputElement).value))\" />\n <button type=\"button\" :disabled=\"disabled\" @click=\"change(step)\">+</button>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport type { ANumberInputProps } from './ANumberInput.types';\ndefineOptions({ name: 'ANumberInput' });\nconst props = withDefaults(defineProps<ANumberInputProps>(), { modelValue: 0, step: 1, disabled: false });\nconst emit = defineEmits<{ 'update:modelValue': [value: number] }>();\nfunction clamp(value: number) { return Math.min(props.max ?? value, Math.max(props.min ?? value, value)); }\nfunction set(value: number) { emit('update:modelValue', clamp(value)); }\nfunction change(delta: number) { set((props.modelValue ?? 0) + delta); }\n</script>\n<style scoped>\n.number-input { display: inline-flex; height: var(--ctrl-md); align-items: center; overflow: hidden; border: var(--bw-thin) solid var(--field-border); border-radius: var(--field-radius); background: var(--field-bg); }\n.number-input button { width: 36px; height: 100%; border: 0; background: transparent; color: var(--text-secondary); }\n.number-input button:hover:not(:disabled) { background: var(--bg-hover); }\n.number-input input { width: 80px; border: 0; outline: 0; background: transparent; color: var(--text-primary); font-family: var(--font-mono); text-align: center; }\n.number-input__prefix { color: var(--text-tertiary); font-family: var(--font-mono); }\n</style>\n","<template>\n <Teleport to=\"body\">\n <div v-if=\"modelValue\" class=\"drawer\" :data-side=\"side\" @click=\"onBackdrop\">\n <aside class=\"drawer__panel\" :data-size=\"size\">\n <header class=\"drawer__header\"><h2>{{ title }}</h2><button type=\"button\" :aria-label=\"closeLabel\" @click=\"close\">x</button></header>\n <div class=\"drawer__body\"><slot /></div>\n <footer v-if=\"$slots.footer\" class=\"drawer__footer\"><slot name=\"footer\" /></footer>\n </aside>\n </div>\n </Teleport>\n</template>\n<script setup lang=\"ts\">\nimport type { ADrawerProps } from './ADrawer.types';\ndefineOptions({ name: 'ADrawer' });\nwithDefaults(defineProps<ADrawerProps>(), { modelValue: false, side: 'right', size: 'md', closeLabel: 'Close drawer' });\nconst emit = defineEmits<{ 'update:modelValue': [value: boolean]; close: [] }>();\nfunction close() { emit('update:modelValue', false); emit('close'); }\nfunction onBackdrop(event: MouseEvent) { if (event.target === event.currentTarget) close(); }\n</script>\n<style scoped>\n.drawer { position: fixed; inset: 0; z-index: var(--z-overlay); display: flex; background: rgba(13,17,23,.35); }\n.drawer[data-side=\"right\"] { justify-content: flex-end; }\n.drawer__panel { display: flex; width: min(100%, 420px); flex-direction: column; background: var(--bg-surface); box-shadow: var(--shadow-xl); }\n.drawer__panel[data-size=\"sm\"] { width: min(100%, 340px); }\n.drawer__panel[data-size=\"lg\"] { width: min(100%, 620px); }\n.drawer__header, .drawer__footer { display: flex; align-items: center; justify-content: space-between; gap: var(--s-3); padding: var(--s-4); border-bottom: var(--bw-thin) solid var(--border); }\n.drawer__footer { justify-content: flex-end; border-top: var(--bw-thin) solid var(--border); border-bottom: 0; background: var(--bg-inset); }\n.drawer__header h2 { margin: 0; font-size: var(--fs-h3); }\n.drawer__header button { border: 0; background: transparent; color: var(--text-tertiary); }\n.drawer__body { flex: 1; overflow: auto; padding: var(--s-4); }\n@media (max-width: 767px) { .drawer__panel { width: 100%; } }\n</style>\n","<template>\n <div class=\"accordion\">\n <section v-for=\"item in items\" :key=\"item.key\" class=\"accordion__item\">\n <button class=\"accordion__header\" type=\"button\" :aria-expanded=\"openKeys.has(item.key)\" :aria-controls=\"bodyId(item.key)\" @click=\"toggle(item.key)\">\n <span>{{ item.label }}</span><span :data-open=\"openKeys.has(item.key) || null\">v</span>\n </button>\n <div v-if=\"openKeys.has(item.key)\" :id=\"bodyId(item.key)\" class=\"accordion__body\"><slot :name=\"`item-${item.key}`\">{{ item.content }}</slot></div>\n </section>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport type { AAccordionProps } from './AAccordion.types';\ndefineOptions({ name: 'AAccordion' });\nconst props = withDefaults(defineProps<AAccordionProps>(), { items: () => [], multiple: false });\nconst openKeys = ref(new Set<string | number>());\nfunction toggle(key: string | number) { const next = props.multiple ? new Set(openKeys.value) : new Set<string | number>(); next.has(key) ? next.delete(key) : next.add(key); openKeys.value = next; }\nfunction bodyId(key: string | number) { return `a-accordion-panel-${key}`; }\n</script>\n<style scoped>\n.accordion { border: var(--bw-thin) solid var(--border); border-radius: var(--r-lg); overflow: hidden; }\n.accordion__item + .accordion__item { border-top: var(--bw-thin) solid var(--border); }\n.accordion__header { display: flex; width: 100%; align-items: center; justify-content: space-between; border: 0; background: var(--bg-surface); color: var(--text-primary); padding: var(--s-3) var(--s-4); text-align: left; }\n.accordion__header:hover { background: var(--bg-hover); }\n.accordion__header span[data-open] { transform: rotate(180deg); }\n.accordion__body { padding: var(--s-4); color: var(--text-secondary); }\n</style>\n","<template>\n <span ref=\"rootRef\" class=\"popover\">\n <button class=\"popover__trigger\" type=\"button\" :aria-expanded=\"open\" :aria-haspopup=\"'dialog'\" @click=\"open = !open\" @keydown.esc.prevent=\"open = false\">\n <slot name=\"trigger\" />\n </button>\n <div v-if=\"open\" class=\"popover__panel\" :data-placement=\"placement\" role=\"dialog\">\n <strong v-if=\"title\">{{ title }}</strong>\n <slot />\n </div>\n </span>\n</template>\n<script setup lang=\"ts\">\nimport { onBeforeUnmount, onMounted, ref } from 'vue';\nimport type { APopoverProps } from './APopover.types';\ndefineOptions({ name: 'APopover' });\nwithDefaults(defineProps<APopoverProps>(), { placement: 'bottom' });\nconst open = ref(false); const rootRef = ref<HTMLElement>();\nfunction onDoc(e: PointerEvent) { if (!rootRef.value?.contains(e.target as Node)) open.value = false; }\nonMounted(() => { if (typeof document !== 'undefined') document.addEventListener('pointerdown', onDoc); }); onBeforeUnmount(() => { if (typeof document !== 'undefined') document.removeEventListener('pointerdown', onDoc); });\n</script>\n<style scoped>\n.popover { position: relative; display: inline-flex; }\n.popover__trigger { border: 0; background: transparent; padding: 0; }\n.popover__panel { position: absolute; z-index: var(--z-popover); min-width: 240px; border: var(--bw-thin) solid var(--border); border-radius: var(--r-lg); background: var(--bg-surface); box-shadow: var(--shadow-lg); color: var(--text-primary); padding: var(--s-4); }\n.popover__panel[data-placement=\"bottom\"] { top: calc(100% + 8px); left: 0; }\n.popover__panel[data-placement=\"top\"] { bottom: calc(100% + 8px); left: 0; }\n.popover__panel[data-placement=\"right\"] { left: calc(100% + 8px); top: 0; }\n.popover__panel[data-placement=\"left\"] { right: calc(100% + 8px); top: 0; }\n</style>\n","<template><section v-if=\"visible\" class=\"banner\" :data-tone=\"tone\"><slot /><span class=\"banner__action\"><slot name=\"action\" /></span><button v-if=\"dismissible\" type=\"button\" :aria-label=\"dismissLabel\" @click=\"visible = false; emit('dismiss')\">x</button></section></template>\n<script setup lang=\"ts\">\nimport { ref } from 'vue'; import type { ABannerProps } from './ABanner.types';\ndefineOptions({ name: 'ABanner' }); withDefaults(defineProps<ABannerProps>(), { tone: 'info', dismissible: false, dismissLabel: 'Dismiss banner' }); const emit = defineEmits<{ dismiss: [] }>(); const visible = ref(true);\n</script>\n<style scoped>\n.banner { display: flex; align-items: center; gap: var(--s-3); border: var(--bw-thin) solid var(--info-border); background: var(--info-subtle); color: var(--text-primary); padding: var(--s-3) var(--s-4); }\n.banner[data-tone=\"system\"] { background: var(--gray-900); color: #fff; border-color: var(--gray-900); }\n.banner[data-tone=\"warning\"] { background: var(--warning-subtle); border-color: var(--warning-border); }\n.banner[data-tone=\"danger\"] { background: var(--danger-subtle); border-color: var(--danger-border); }\n.banner__action { margin-left: auto; } .banner button { border: 0; background: transparent; color: inherit; }\n</style>\n","<template>\n <label class=\"file-upload\" :data-dragging=\"dragging || null\" @dragover.prevent=\"dragging = true\" @dragleave.prevent=\"dragging = false\" @drop.prevent=\"onDrop\">\n <input class=\"file-upload__input\" type=\"file\" :accept=\"accept\" :multiple=\"multiple\" @change=\"onInput\" />\n <span class=\"file-upload__icon\">{{ iconLabel }}</span>\n <strong>{{ label }}</strong>\n <span v-if=\"resolvedHint\" class=\"file-upload__hint\">{{ resolvedHint }}</span>\n </label>\n</template>\n<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\nimport type { AFileUploadProps } from './AFileUpload.types';\ndefineOptions({ name: 'AFileUpload' });\nconst props = withDefaults(defineProps<AFileUploadProps>(), {\n multiple: false,\n label: 'Drop files here or choose files',\n iconLabel: '+'\n});\nconst emit = defineEmits<{ files: [files: File[]] }>();\nconst dragging = ref(false);\nconst resolvedHint = computed(() => props.hint || (props.maxSize ? `Max ${Math.round(props.maxSize / 1024 / 1024)} MB` : ''));\nfunction send(list: FileList | null) { if (list) emit('files', Array.from(list)); }\nfunction onInput(event: Event) { send((event.target as HTMLInputElement).files); }\nfunction onDrop(event: DragEvent) { dragging.value = false; send(event.dataTransfer?.files || null); }\n</script>\n<style scoped>\n.file-upload { display: grid; justify-items: center; gap: var(--s-2); border: var(--bw-thin) dashed var(--border-strong); border-radius: var(--r-lg); background: var(--bg-surface); color: var(--text-primary); cursor: pointer; padding: var(--s-8); text-align: center; }\n.file-upload[data-dragging], .file-upload:hover { border-color: var(--accent); background: var(--accent-subtle); }\n.file-upload__input { position: absolute; opacity: 0; pointer-events: none; }\n.file-upload__icon { display: grid; width: 44px; height: 44px; place-items: center; border-radius: var(--r-lg); background: var(--bg-subtle); color: var(--text-tertiary); }\n.file-upload__hint { color: var(--text-tertiary); font-size: 12px; }\n</style>\n","<template><ol class=\"stepper\" :data-orientation=\"orientation\"><li v-for=\"(step, index) in steps\" :key=\"step.key\" class=\"stepper__item\" :data-state=\"state(index)\"><span class=\"stepper__circle\">{{ index < current ? '✓' : index + 1 }}</span><span>{{ step.label }}</span></li></ol></template>\n<script setup lang=\"ts\">\nimport type { AStepperProps } from './AStepper.types';\ndefineOptions({ name: 'AStepper' }); const props = withDefaults(defineProps<AStepperProps>(), { steps: () => [], current: 0, orientation: 'horizontal' });\nfunction state(index: number) { return index < props.current ? 'done' : index === props.current ? 'current' : 'upcoming'; }\n</script>\n<style scoped>\n.stepper { display: flex; gap: var(--s-4); margin: 0; padding: 0; list-style: none; }\n.stepper[data-orientation=\"vertical\"] { flex-direction: column; }\n.stepper__item { display: flex; align-items: center; gap: var(--s-2); color: var(--text-tertiary); }\n.stepper__circle { display: grid; width: 30px; height: 30px; place-items: center; border: var(--bw-medium) solid var(--border-strong); border-radius: var(--r-full); font-family: var(--font-mono); }\n.stepper__item[data-state=\"done\"] .stepper__circle { border-color: var(--accent); background: var(--accent); color: #fff; }\n.stepper__item[data-state=\"current\"] { color: var(--accent); font-weight: var(--fw-semibold); }\n.stepper__item[data-state=\"current\"] .stepper__circle { border-color: var(--accent); background: var(--accent-subtle); }\n</style>\n","<template><ol class=\"timeline\"><li v-for=\"(item, index) in items\" :key=\"`${item.time}-${index}`\" class=\"timeline__item\"><span class=\"timeline__node\">{{ item.icon || '' }}</span><p><strong>{{ item.actor }}</strong> {{ item.action }} <time>{{ item.time }}</time></p></li></ol></template>\n<script setup lang=\"ts\">\nimport type { ATimelineProps } from './ATimeline.types';\ndefineOptions({ name: 'ATimeline' }); withDefaults(defineProps<ATimelineProps>(), { items: () => [] });\n</script>\n<style scoped>\n.timeline { display: grid; gap: var(--s-4); margin: 0; padding: 0; list-style: none; }\n.timeline__item { position: relative; display: grid; grid-template-columns: 36px 1fr; gap: var(--s-3); }\n.timeline__item:not(:last-child)::before { position: absolute; top: 36px; bottom: calc(var(--s-4) * -1); left: 17px; width: 2px; background: var(--border); content: \"\"; }\n.timeline__node { display: grid; width: 36px; height: 36px; place-items: center; border-radius: var(--r-full); background: var(--bg-subtle); color: var(--text-tertiary); }\n.timeline p { margin: 0; color: var(--text-secondary); font-size: 14px; }\n.timeline strong { color: var(--text-primary); } .timeline time { color: var(--text-tertiary); font-family: var(--font-mono); font-size: 12px; }\n</style>\n","<template><ACard><header v-if=\"title || subtitle\" class=\"chart-frame__header\"><h3>{{ title }}</h3><p v-if=\"subtitle\">{{ subtitle }}</p></header><div class=\"chart-frame__body\"><slot /></div></ACard></template>\n<script setup lang=\"ts\">\nimport ACard from '../ACard/ACard.vue'; import type { AChartFrameProps } from './AChartFrame.types';\ndefineOptions({ name: 'AChartFrame' }); defineProps<AChartFrameProps>();\n</script>\n<style scoped>\n.chart-frame__header { display: grid; gap: var(--s-1); margin-bottom: var(--s-4); }\n.chart-frame__header h3, .chart-frame__header p { margin: 0; }\n.chart-frame__header h3 { font-size: var(--fs-h3); }\n.chart-frame__header p { color: var(--text-secondary); font-size: 13px; }\n.chart-frame__body { min-height: 220px; color: var(--text-secondary); }\n</style>\n","import type { App, Plugin } from 'vue';\nimport { vAFocus } from './directives';\nimport { AButton } from './components/AButton';\nimport { AInput } from './components/AInput';\nimport { AFormField } from './components/AFormField';\nimport { ASelect } from './components/ASelect';\nimport { ACheckbox } from './components/ACheckbox';\nimport { ARadio } from './components/ARadio';\nimport { ASwitch } from './components/ASwitch';\nimport { ASegmented } from './components/ASegmented';\nimport { ASlider } from './components/ASlider';\nimport { AModal } from './components/AModal';\nimport { AToast, AToastHost } from './components/AToast';\nimport { ATable } from './components/ATable';\nimport { ABadge } from './components/ABadge';\nimport { ATag } from './components/ATag';\nimport { AStatusPill } from './components/AStatusPill';\nimport { ACard } from './components/ACard';\nimport { ASpinner } from './components/ASpinner';\nimport { AIcon } from './components/AIcon';\nimport { AAlert } from './components/AAlert';\nimport { AProgress } from './components/AProgress';\nimport { ASkeleton } from './components/ASkeleton';\nimport { ATabs } from './components/ATabs';\nimport { ABreadcrumbs } from './components/ABreadcrumbs';\nimport { APagination } from './components/APagination';\nimport { AAvatar } from './components/AAvatar';\nimport { AAvatarGroup } from './components/AAvatarGroup';\nimport { AEmptyState } from './components/AEmptyState';\nimport { AKpiCard } from './components/AKpiCard';\nimport { ATooltip } from './components/ATooltip';\nimport { ASidebarNav } from './components/ASidebarNav';\nimport { ANumberInput } from './components/ANumberInput';\nimport { ADrawer } from './components/ADrawer';\nimport { AAccordion } from './components/AAccordion';\nimport { APopover } from './components/APopover';\nimport { ABanner } from './components/ABanner';\nimport { AFileUpload } from './components/AFileUpload';\nimport { AStepper } from './components/AStepper';\nimport { ATimeline } from './components/ATimeline';\nimport { AChartFrame } from './components/AChartFrame';\n\nexport const components = [\n AButton,\n AInput,\n AFormField,\n ASelect,\n ACheckbox,\n ARadio,\n ASwitch,\n ASegmented,\n ASlider,\n AModal,\n AToast,\n AToastHost,\n ATable,\n ABadge,\n ATag,\n AStatusPill,\n ACard,\n ASpinner,\n AIcon,\n AAlert,\n AProgress,\n ASkeleton,\n ATabs,\n ABreadcrumbs,\n APagination,\n AAvatar,\n AAvatarGroup,\n AEmptyState,\n AKpiCard,\n ATooltip,\n ASidebarNav,\n ANumberInput,\n ADrawer,\n AAccordion,\n APopover,\n ABanner,\n AFileUpload,\n AStepper,\n ATimeline,\n AChartFrame\n] as const;\n\nexport const AinorixUI: Plugin = {\n install(app: App) {\n components.forEach((component) => {\n if (component.name) app.component(component.name, component);\n });\n app.directive('a-focus', vAFocus);\n }\n};\n\nexport default AinorixUI;\n","import { ref } from 'vue';\n\nexport function useDisclosure(initialOpen = false) {\n const isOpen = ref(initialOpen);\n const open = () => {\n isOpen.value = true;\n };\n const close = () => {\n isOpen.value = false;\n };\n const toggle = () => {\n isOpen.value = !isOpen.value;\n };\n\n return { isOpen, open, close, toggle };\n}\n","import { ref } from 'vue';\nimport type { ADensity } from '../tokens';\n\nconst storageKey = 'ainorix-density';\nconst density = ref<ADensity>('comfortable');\nlet initialized = false;\n\nfunction getInitialDensity(): ADensity {\n if (typeof window === 'undefined') return 'comfortable';\n const stored = window.localStorage.getItem(storageKey);\n return stored === 'compact' || stored === 'comfortable' ? stored : 'comfortable';\n}\n\nfunction applyDensity(value: ADensity) {\n if (typeof document === 'undefined') return;\n document.documentElement.dataset.density = value;\n}\n\nfunction ensureInitialized() {\n if (initialized) return;\n density.value = getInitialDensity();\n applyDensity(density.value);\n initialized = true;\n}\n\nexport function useDensity() {\n ensureInitialized();\n function set(value: ADensity) {\n density.value = value;\n applyDensity(value);\n if (typeof window !== 'undefined') {\n window.localStorage.setItem(storageKey, value);\n }\n }\n\n return { density, set };\n}\n","import { computed, ref } from 'vue';\nimport type { ATheme } from '../tokens';\n\nconst storageKey = 'ainorix-theme';\nconst theme = ref<ATheme>('light');\nlet initialized = false;\n\nfunction getInitialTheme(): ATheme {\n if (typeof window === 'undefined') return 'light';\n const stored = window.localStorage.getItem(storageKey);\n if (stored === 'light' || stored === 'dark') return stored;\n return window.matchMedia?.('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n}\n\nfunction applyTheme(value: ATheme) {\n if (typeof document === 'undefined') return;\n document.documentElement.classList.toggle('dark', value === 'dark');\n}\n\nfunction ensureInitialized() {\n if (initialized) return;\n theme.value = getInitialTheme();\n applyTheme(theme.value);\n initialized = true;\n}\n\nexport function useTheme() {\n ensureInitialized();\n const isDark = computed(() => theme.value === 'dark');\n\n function set(value: ATheme) {\n theme.value = value;\n applyTheme(value);\n if (typeof window !== 'undefined') {\n window.localStorage.setItem(storageKey, value);\n }\n }\n\n function toggle() {\n set(theme.value === 'dark' ? 'light' : 'dark');\n }\n\n return { theme, isDark, set, toggle };\n}\n","import { h } from 'vue';\n\nexport const CheckIcon = {\n name: 'CheckIcon',\n render() {\n return h('svg', { viewBox: '0 0 20 20', fill: 'none', 'aria-hidden': 'true' }, [\n h('path', {\n d: 'M16.25 5.75 8.5 13.5 4.75 9.75',\n stroke: 'currentColor',\n 'stroke-width': '2',\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round'\n })\n ]);\n }\n};\n","export interface AChartTheme {\n accent: string;\n text: string;\n muted: string;\n grid: string;\n surface: string;\n}\n\nexport function getChartTheme(root?: Element): AChartTheme {\n const target = root ?? (typeof document !== 'undefined' ? document.documentElement : null);\n if (!target) {\n return {\n accent: '',\n text: '',\n muted: '',\n grid: '',\n surface: ''\n };\n }\n const styles = getComputedStyle(target);\n const read = (name: string) => styles.getPropertyValue(name).trim();\n return {\n accent: read('--accent'),\n text: read('--text-primary'),\n muted: read('--text-tertiary'),\n grid: read('--chart-grid'),\n surface: read('--bg-surface')\n };\n}\n","let idCounter = 0;\n\nexport function createAId(prefix = 'a'): string {\n idCounter += 1;\n return `${prefix}-${idCounter}`;\n}\n"],"names":["vAFocus","el","binding","_createElementBlock","__props","_createElementVNode","_hoisted_2","_toDisplayString","props","emit","__emit","slots","useSlots","iconOnly","computed","_cache","$event","_createBlock","ASpinner","_renderSlot","_ctx","hasError","errorMessage","_hoisted_3","_unref","_openBlock","_hoisted_4","_hoisted_6","_hoisted_7","_hoisted_1","_createTextVNode","_hoisted_5","uid","triggerId","labelId","listboxId","rootRef","ref","triggerRef","panelRef","searchRef","open","query","activeIndex","panelStyle","isSearchable","selectedOption","option","filteredOptions","value","activeOptionId","optionId","index","syncPanelPosition","rect","_a","show","nextTick","close","focusTrigger","toggle","selectOption","move","delta","available","next","i","chooseActive","onTriggerKeydown","event","onMenuKeydown","onSearchKeydown","onDocumentPointerDown","target","_b","onWindowChange","watch","onBeforeUnmount","_Teleport","_Fragment","_renderList","_withModifiers","_hoisted_8","_hoisted_9","_hoisted_11","_hoisted_12","inputRef","syncIndeterminate","onMounted","$slots","previousActiveElement","focusableSelector","getFocusableElements","element","focusModal","first","onBackdrop","onKeydown","focusable","last","item","toasts","timers","toastId","schedule","id","duration","clear","dismiss","timer","push","status","title","options","toast","pause","resume","useToast","readonly","pageCount","start","end","_normalizeStyle","searchValue","effectiveTotal","showFooter","selectedSet","visibleKeys","row","getRowKey","allVisibleSelected","key","someVisibleSelected","footerText","isSelected","toggleRow","toggleAll","toggleSort","column","_createVNode","AInput","AButton","ACheckbox","_hoisted_10","ASkeleton","rowIndex","_hoisted_14","_hoisted_16","_hoisted_17","APagination","resolvedTone","ABadge","paths","path","AIcon","normalized","tabRefs","setTabRef","focusSibling","nextIndex","tab","_withKeys","initials","part","visibleItems","overflow","AAvatar","_mergeProps","ACard","group","groupIndex","clamp","set","change","openKeys","bodyId","onDoc","e","visible","dragging","resolvedHint","send","list","onInput","onDrop","state","step","components","AFormField","ASelect","ARadio","ASwitch","ASegmented","ASlider","AModal","AToast","AToastHost","ATable","ATag","AStatusPill","AAlert","AProgress","ATabs","ABreadcrumbs","AAvatarGroup","AEmptyState","AKpiCard","ATooltip","ASidebarNav","ANumberInput","ADrawer","AAccordion","APopover","ABanner","AFileUpload","AStepper","ATimeline","AChartFrame","AinorixUI","app","component","useDisclosure","initialOpen","isOpen","storageKey","density","initialized","getInitialDensity","stored","applyDensity","ensureInitialized","useDensity","theme","getInitialTheme","applyTheme","useTheme","isDark","CheckIcon","h","getChartTheme","root","styles","read","name","idCounter","createAId","prefix"],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface AAccordionItem {
|
|
2
|
+
key: string | number;
|
|
3
|
+
label: string;
|
|
4
|
+
content?: string;
|
|
5
|
+
}
|
|
6
|
+
export interface AAccordionProps {
|
|
7
|
+
items?: AAccordionItem[];
|
|
8
|
+
multiple?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface AAccordionEmits {
|
|
11
|
+
}
|
|
12
|
+
export type AAccordionSlots = Partial<Record<`item-${string | number}`, () => unknown>>;
|
|
13
|
+
//# sourceMappingURL=AAccordion.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AAccordion.types.d.ts","sourceRoot":"","sources":["../../../src/components/AAccordion/AAccordion.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AACD,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;CAAG;AAEnC,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,MAAM,GAAG,MAAM,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { AAccordionProps } from './AAccordion.types';
|
|
2
|
+
declare function __VLS_template(): {
|
|
3
|
+
attrs: Partial<{}>;
|
|
4
|
+
slots: Partial<Record<NonNullable<`item-${string}` | `item-${number}`>, (_: {}) => any>>;
|
|
5
|
+
refs: {};
|
|
6
|
+
rootEl: HTMLDivElement;
|
|
7
|
+
};
|
|
8
|
+
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
9
|
+
declare const __VLS_component: import('vue').DefineComponent<AAccordionProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<AAccordionProps> & Readonly<{}>, {
|
|
10
|
+
items: import('./AAccordion.types').AAccordionItem[];
|
|
11
|
+
multiple: boolean;
|
|
12
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
|
|
13
|
+
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
14
|
+
export default _default;
|
|
15
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
16
|
+
new (): {
|
|
17
|
+
$slots: S;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=AAccordion.vue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AAccordion.vue.d.ts","sourceRoot":"","sources":["../../../src/components/AAccordion/AAccordion.vue"],"names":[],"mappings":"AAUA;AA8BA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAW1D,iBAAS,cAAc;WA4DT,OAAO,IAA6B;uFAXmC,GAAG;;;EAgBvF;AAYD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;wFAQnB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAapG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/AAccordion/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACzD,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface AAlertProps {
|
|
2
|
+
tone?: 'info' | 'success' | 'warning' | 'danger';
|
|
3
|
+
title?: string;
|
|
4
|
+
dismissible?: boolean;
|
|
5
|
+
dismissLabel?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface AAlertEmits {
|
|
8
|
+
dismiss: [];
|
|
9
|
+
}
|
|
10
|
+
export interface AAlertSlots {
|
|
11
|
+
/** Alert description content. */
|
|
12
|
+
default?: () => unknown;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=AAlert.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AAlert.types.d.ts","sourceRoot":"","sources":["../../../src/components/AAlert/AAlert.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,EAAE,CAAC;CACb;AAED,MAAM,WAAW,WAAW;IAC1B,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC;CACzB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { AAlertProps } from './AAlert.types';
|
|
2
|
+
declare function __VLS_template(): {
|
|
3
|
+
attrs: Partial<{}>;
|
|
4
|
+
slots: {
|
|
5
|
+
default?(_: {}): any;
|
|
6
|
+
};
|
|
7
|
+
refs: {};
|
|
8
|
+
rootEl: HTMLElement;
|
|
9
|
+
};
|
|
10
|
+
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
11
|
+
declare const __VLS_component: import('vue').DefineComponent<AAlertProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
12
|
+
dismiss: () => any;
|
|
13
|
+
}, string, import('vue').PublicProps, Readonly<AAlertProps> & Readonly<{
|
|
14
|
+
onDismiss?: (() => any) | undefined;
|
|
15
|
+
}>, {
|
|
16
|
+
tone: "info" | "success" | "warning" | "danger";
|
|
17
|
+
dismissible: boolean;
|
|
18
|
+
dismissLabel: string;
|
|
19
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLElement>;
|
|
20
|
+
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
21
|
+
export default _default;
|
|
22
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
23
|
+
new (): {
|
|
24
|
+
$slots: S;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=AAlert.vue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AAlert.vue.d.ts","sourceRoot":"","sources":["../../../src/components/AAlert/AAlert.vue"],"names":[],"mappings":"AAUA;AA4FA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAqBlD,iBAAS,cAAc;WAqET,OAAO,IAA6B;;yBAVrB,GAAG;;;;EAe/B;AAYD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;;;;qFASnB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAapG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/AAlert/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,cAAc,CAAC;AACjD,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface AAvatarProps {
|
|
2
|
+
name?: string;
|
|
3
|
+
src?: string;
|
|
4
|
+
size?: 24 | 32 | 40 | 48 | 64;
|
|
5
|
+
shape?: 'circle' | 'square';
|
|
6
|
+
status?: 'online' | 'away' | 'busy' | 'none';
|
|
7
|
+
}
|
|
8
|
+
export interface AAvatarEmits {
|
|
9
|
+
}
|
|
10
|
+
export interface AAvatarSlots {
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=AAvatar.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AAvatar.types.d.ts","sourceRoot":"","sources":["../../../src/components/AAvatar/AAvatar.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IAC9B,KAAK,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,MAAM,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CAC9C;AAED,MAAM,WAAW,YAAY;CAAG;AAEhC,MAAM,WAAW,YAAY;CAAG"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AAvatarProps } from './AAvatar.types';
|
|
2
|
+
declare const _default: import('vue').DefineComponent<AAvatarProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<AAvatarProps> & Readonly<{}>, {
|
|
3
|
+
name: string;
|
|
4
|
+
size: 24 | 32 | 40 | 48 | 64;
|
|
5
|
+
status: "online" | "away" | "busy" | "none";
|
|
6
|
+
shape: "circle" | "square";
|
|
7
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLSpanElement>;
|
|
8
|
+
export default _default;
|
|
9
|
+
//# sourceMappingURL=AAvatar.vue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AAvatar.vue.d.ts","sourceRoot":"","sources":["../../../src/components/AAvatar/AAvatar.vue"],"names":[],"mappings":"AAOA;AA6EA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;;;;;;;AA8FpD,wBAQG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/AAvatar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,eAAe,CAAC;AACnD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { AAvatarProps } from '../AAvatar';
|
|
2
|
+
export interface AAvatarGroupProps {
|
|
3
|
+
items?: AAvatarProps[];
|
|
4
|
+
max?: number;
|
|
5
|
+
}
|
|
6
|
+
export interface AAvatarGroupEmits {
|
|
7
|
+
}
|
|
8
|
+
export interface AAvatarGroupSlots {
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=AAvatarGroup.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AAvatarGroup.types.d.ts","sourceRoot":"","sources":["../../../src/components/AAvatarGroup/AAvatarGroup.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB;CAAG;AAErC,MAAM,WAAW,iBAAiB;CAAG"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { AAvatarGroupProps } from './AAvatarGroup.types';
|
|
2
|
+
declare const _default: import('vue').DefineComponent<AAvatarGroupProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<AAvatarGroupProps> & Readonly<{}>, {
|
|
3
|
+
max: number;
|
|
4
|
+
items: import('..').AAvatarProps[];
|
|
5
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
|
|
6
|
+
export default _default;
|
|
7
|
+
//# sourceMappingURL=AAvatarGroup.vue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AAvatarGroup.vue.d.ts","sourceRoot":"","sources":["../../../src/components/AAvatarGroup/AAvatarGroup.vue"],"names":[],"mappings":"AAMA;AA4BA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;;;;;AA2E9D,wBAQG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/AAvatarGroup/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7D,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type ABadgeTone = 'neutral' | 'accent' | 'success' | 'warning' | 'danger' | 'info';
|
|
2
|
+
export type ABadgeAppearance = 'subtle' | 'solid' | 'outline' | 'pill';
|
|
3
|
+
export interface ABadgeProps {
|
|
4
|
+
tone?: ABadgeTone;
|
|
5
|
+
status?: ABadgeTone;
|
|
6
|
+
appearance?: ABadgeAppearance;
|
|
7
|
+
dot?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface ABadgeEmits {
|
|
10
|
+
}
|
|
11
|
+
export interface ABadgeSlots {
|
|
12
|
+
default?: () => unknown;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=ABadge.types.d.ts.map
|