import type { UiAdapter, UiAdapterCapability } from '../contracts'
import Button from './NativeButtonAdapter.vue'
import TextField from './NativeTextFieldAdapter.vue'
import TextArea from './NativeTextAreaAdapter.vue'
import Select from './NativeSelectAdapter.vue'
import MultiSelect from './NativeMultiSelectAdapter.vue'
import Checkbox from './NativeCheckboxAdapter.vue'
import DateField from './NativeDateFieldAdapter.vue'
import NumberField from './NativeNumberFieldAdapter.vue'
import Dialog from './NativeDialogAdapter.vue'
import StatusTag from './NativeStatusTagAdapter.vue'
import InlineMessage from './NativeInlineMessageAdapter.vue'
import Paginator from './NativePaginatorAdapter.vue'
import Tabs from './NativeTabsAdapter.vue'
import DataGrid from './NativeDataGridAdapter.vue'

const capabilities: ReadonlySet<UiAdapterCapability> = new Set([
  'button','text-field','text-area','select','multi-select','checkbox','date-field','number-field',
  'dialog','status-tag','inline-message','paginator','tabs','data-grid'
])

export const nativeUiAdapter: UiAdapter = Object.freeze({
  descriptor: Object.freeze({ id: 'native-accessible', version: '2.0.0', contractVersion: '4.0', vendor: 'HTML platform primitives', capabilities, productionEligible: false, accessibilityBaseline: 'WCAG_2_2_AA_TARGET' }),
  components: Object.freeze({ Button, TextField, TextArea, Select, MultiSelect, Checkbox, DateField, NumberField, Dialog, StatusTag, InlineMessage, Paginator, Tabs, DataGrid })
})
