@indielayer/ui 1.9.2 → 1.10.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.
Files changed (98) hide show
  1. package/docs/components/menu/DocsMenu.vue +1 -0
  2. package/docs/pages/component/form/usage.vue +2 -0
  3. package/docs/pages/component/menu/usage.vue +2 -0
  4. package/docs/pages/component/select/index.vue +7 -0
  5. package/docs/pages/component/select/multiple.vue +42 -0
  6. package/docs/pages/component/select/usage.vue +8 -12
  7. package/docs/pages/component/table/virtual.vue +19 -6
  8. package/docs/pages/component/toggle/index.vue +1 -1
  9. package/docs/pages/component/tooltip/index.vue +1 -1
  10. package/docs/pages/component/upload/index.vue +29 -0
  11. package/docs/pages/component/upload/usage.vue +115 -0
  12. package/docs/search/components.json +1 -1
  13. package/lib/common/icons.d.ts +2 -0
  14. package/lib/common/icons.js +17 -15
  15. package/lib/components/checkbox/Checkbox.vue2.js +9 -9
  16. package/lib/components/datepicker/Datepicker.vue.d.ts +4 -4
  17. package/lib/components/datepicker/Datepicker.vue.js +1 -1
  18. package/lib/components/drawer/Drawer.vue.js +1 -17
  19. package/lib/components/form/Form.vue.d.ts +4 -4
  20. package/lib/components/form/Form.vue.js +34 -34
  21. package/lib/components/formGroup/FormGroup.vue.d.ts +1 -1
  22. package/lib/components/formGroup/FormGroup.vue.js +39 -37
  23. package/lib/components/index.d.ts +1 -0
  24. package/lib/components/index.js +68 -66
  25. package/lib/components/label/theme/Label.base.theme.js +7 -7
  26. package/lib/components/menu/Menu.vue.d.ts +2 -0
  27. package/lib/components/menu/MenuItem.vue.d.ts +15 -3
  28. package/lib/components/menu/MenuItem.vue.js +1 -1
  29. package/lib/components/menu/MenuItem.vue2.js +43 -37
  30. package/lib/components/modal/Modal.vue.d.ts +4 -4
  31. package/lib/components/modal/Modal.vue.js +38 -34
  32. package/lib/components/notifications/Notifications.vue.d.ts +15 -0
  33. package/lib/components/notifications/Notifications.vue.js +149 -127
  34. package/lib/components/progress/Progress.vue.d.ts +4 -4
  35. package/lib/components/progress/Progress.vue.js +7 -7
  36. package/lib/components/scroll/Scroll.vue2.js +1 -1
  37. package/lib/components/select/Select.vue.d.ts +43 -1
  38. package/lib/components/select/Select.vue.js +358 -258
  39. package/lib/components/select/theme/Select.base.theme.js +1 -0
  40. package/lib/components/tab/Tab.vue.js +1 -1
  41. package/lib/components/tab/TabGroup.vue.js +2 -2
  42. package/lib/components/table/Table.vue.d.ts +4 -4
  43. package/lib/components/table/Table.vue.js +37 -37
  44. package/lib/components/table/TableCell.vue.d.ts +1 -1
  45. package/lib/components/tag/Tag.vue.js +23 -21
  46. package/lib/components/textarea/Textarea.vue.js +1 -1
  47. package/lib/components/upload/Upload.vue.d.ts +195 -0
  48. package/lib/components/upload/Upload.vue.js +264 -0
  49. package/lib/components/upload/Upload.vue2.js +4 -0
  50. package/lib/components/upload/__tests__/Upload.spec.d.ts +1 -0
  51. package/lib/components/upload/index.d.ts +2 -0
  52. package/lib/components/upload/theme/Upload.base.theme.d.ts +3 -0
  53. package/lib/components/upload/theme/Upload.base.theme.js +8 -0
  54. package/lib/components/upload/theme/Upload.carbon.theme.d.ts +3 -0
  55. package/lib/components/upload/theme/Upload.carbon.theme.js +5 -0
  56. package/lib/composables/useVirtualList.js +56 -53
  57. package/lib/index.js +43 -41
  58. package/lib/index.umd.js +4 -4
  59. package/lib/node_modules/.pnpm/@vueuse_core@11.1.0_vue@3.5.10_typescript@5.2.2_/node_modules/@vueuse/core/index.js +501 -0
  60. package/lib/node_modules/.pnpm/@vueuse_shared@11.1.0_vue@3.5.10_typescript@5.2.2_/node_modules/@vueuse/shared/index.js +96 -0
  61. package/lib/theme.d.ts +2 -1
  62. package/lib/themes/base/components.d.ts +1 -0
  63. package/lib/themes/base/components.js +23 -21
  64. package/lib/themes/carbon/components.d.ts +1 -0
  65. package/lib/themes/carbon/components.js +23 -21
  66. package/lib/version.d.ts +1 -1
  67. package/lib/version.js +1 -1
  68. package/package.json +3 -3
  69. package/src/common/icons.ts +2 -0
  70. package/src/components/checkbox/Checkbox.vue +5 -5
  71. package/src/components/drawer/Drawer.vue +0 -16
  72. package/src/components/form/Form.vue +10 -4
  73. package/src/components/formGroup/FormGroup.vue +2 -0
  74. package/src/components/index.ts +1 -0
  75. package/src/components/label/theme/Label.base.theme.ts +7 -5
  76. package/src/components/menu/Menu.vue +2 -0
  77. package/src/components/menu/MenuItem.vue +8 -6
  78. package/src/components/modal/Modal.vue +6 -1
  79. package/src/components/notifications/Notifications.vue +34 -4
  80. package/src/components/progress/Progress.vue +2 -2
  81. package/src/components/select/Select.vue +165 -67
  82. package/src/components/select/theme/Select.base.theme.ts +2 -0
  83. package/src/components/table/Table.vue +2 -3
  84. package/src/components/tag/Tag.vue +11 -9
  85. package/src/components/upload/Upload.vue +365 -0
  86. package/src/components/upload/__tests__/Upload.spec.ts +11 -0
  87. package/src/components/upload/index.ts +2 -0
  88. package/src/components/upload/theme/Upload.base.theme.ts +9 -0
  89. package/src/components/upload/theme/Upload.carbon.theme.ts +7 -0
  90. package/src/composables/useInputtable.ts +1 -1
  91. package/src/composables/useVirtualList.ts +8 -5
  92. package/src/theme.ts +2 -0
  93. package/src/themes/base/components.ts +1 -0
  94. package/src/themes/carbon/components.ts +1 -0
  95. package/src/version.ts +1 -1
  96. package/volar.d.ts +1 -0
  97. package/lib/node_modules/.pnpm/@vueuse_core@10.2.0_vue@3.5.10_typescript@5.2.2_/node_modules/@vueuse/core/index.js +0 -412
  98. package/lib/node_modules/.pnpm/@vueuse_shared@10.2.0_vue@3.5.10_typescript@5.2.2_/node_modules/@vueuse/shared/index.js +0 -90
@@ -24,6 +24,7 @@ const components = [
24
24
  { to: '/component/slider', label: 'Slider' },
25
25
  { to: '/component/textarea', label: 'Textarea' },
26
26
  { to: '/component/toggle', label: 'Toggle' },
27
+ { to: '/component/upload', label: 'Upload' },
27
28
  ],
28
29
  },
29
30
  {
@@ -39,7 +39,9 @@ function onSubmit(isValid: string) {
39
39
  :rules="[rules.isRequired, rules.isEmail]"
40
40
  name="email"
41
41
  label="Email"
42
+ required
42
43
  placeholder="Enter your email"
44
+ tooltip="We will never share your email with anyone"
43
45
  />
44
46
  <x-input
45
47
  v-model="password"
@@ -24,6 +24,8 @@ const menu2: MenuArrayItem[] = [{
24
24
  target: '_blank',
25
25
  icon: 'smile',
26
26
  href: 'https://indielayer.com',
27
+ prefix: '👉',
28
+ suffix: '👈',
27
29
  }, {
28
30
  to: 'menu',
29
31
  label: 'Menu item 2',
@@ -2,6 +2,8 @@
2
2
  import { XSelect } from '@indielayer/ui'
3
3
  import UsageDemoCode from './usage.vue?raw'
4
4
  import UsageDemo from './usage.vue'
5
+ import MultipleDemoCode from './multiple.vue?raw'
6
+ import MultipleDemo from './multiple.vue'
5
7
  import SizeDemoCode from './size.vue?raw'
6
8
  import SizeDemo from './size.vue'
7
9
  import StatesDemoCode from './states.vue?raw'
@@ -15,6 +17,11 @@ const demos = [{
15
17
  description: '',
16
18
  code: UsageDemoCode,
17
19
  component: UsageDemo,
20
+ }, {
21
+ name: 'Multiple',
22
+ description: '',
23
+ code: MultipleDemoCode,
24
+ component: MultipleDemo,
18
25
  }, {
19
26
  name: 'Size',
20
27
  description: '',
@@ -0,0 +1,42 @@
1
+ <script setup lang="ts">
2
+ import { ref } from 'vue'
3
+
4
+ const selectedMultiple = ref<string[]>(['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M'])
5
+
6
+ const options = ref([
7
+ { value: 'A', label: 'Option lorem ipsum' },
8
+ { value: 'B', label: 'Option B ipsum' },
9
+ { value: 'C', label: 'Option C lorem ipsum' },
10
+ { value: 'D', label: 'D' },
11
+ { value: 'E', label: 'E ipsum' },
12
+ { value: 'F', label: 'Option F' },
13
+ { value: 'G', label: 'Option lorem ipsum qoiwjdoqiwjdoqiwjdoqiwjdoi' },
14
+ { value: 'H', label: 'Option H' },
15
+ { value: 'I', label: 'lorem ipsum dolo' },
16
+ { value: 'J', label: 'Option J' },
17
+ { value: 'K', label: 'Option K' },
18
+ { value: 'L', label: 'consectetur adipi' },
19
+ { value: 'M', label: 'Option M' },
20
+ ])
21
+ </script>
22
+
23
+ <template>
24
+ <div class="grid md:grid-cols-2 gap-4">
25
+ <x-select
26
+ v-model="selectedMultiple"
27
+ label="Multi select"
28
+ placeholder="Multiple"
29
+ :options="options"
30
+ filterable
31
+ multiple
32
+ />
33
+ <x-select
34
+ v-model="selectedMultiple"
35
+ label="Multi select - truncate"
36
+ placeholder="Multiple"
37
+ :options="options"
38
+ multiple
39
+ truncate
40
+ />
41
+ </div>
42
+ </template>
@@ -3,10 +3,10 @@ import { ref } from 'vue'
3
3
 
4
4
  const selected = ref<undefined | string>()
5
5
  const selected2 = ref<undefined | string>()
6
- const selectedMultiple = ref<string[]>(['A', 'B'])
7
6
  const options = ref([
8
- { value: 'A', label: 'Option A', disabled: true },
7
+ { value: 'A', label: 'Option A' },
9
8
  { value: 'B', label: 'Option B' },
9
+ { value: 'C', label: 'Option C' },
10
10
  ])
11
11
 
12
12
  // function to generate
@@ -14,7 +14,7 @@ function genOptions(x: number) {
14
14
  const options = []
15
15
 
16
16
  for (let i = 0; i < x; i++) {
17
- options.push({ value: i.toString(), label: 'Option ' + i })
17
+ options.push({ value: i.toString(), label: 'Option ' + i, suffix: i })
18
18
  }
19
19
 
20
20
  return options
@@ -42,14 +42,10 @@ const options2 = ref(genOptions(1000))
42
42
  virtual-list
43
43
  :virtual-list-item-height="33"
44
44
  :options="options2"
45
- />
46
- <x-select
47
- v-model="selectedMultiple"
48
- label="Multi select"
49
- placeholder="Multiple"
50
- :options="options"
51
- filterable
52
- multiple
53
- />
45
+ >
46
+ <template #suffix="{ item }">
47
+ <span class="text-secondary-400 text-xs font-mono w-2">#{{ item.suffix }}</span>
48
+ </template>
49
+ </x-select>
54
50
  </div>
55
51
  </template>
@@ -3,11 +3,12 @@ import { type TableHeader } from '@indielayer/ui'
3
3
  import { computed, ref } from 'vue'
4
4
 
5
5
  const headers: TableHeader[] = [
6
- { text: '#', value: 'id', sortable: true, align: 'center' },
7
- { text: 'Title', value: 'title' },
8
- { text: 'Description', value: 'description' },
9
- { text: 'Published', value: 'published' },
6
+ { text: '#', value: 'id', sortable: true, align: 'center', width: 50 },
7
+ { text: 'Title', value: 'title', width: 120, truncate: true },
8
+ { text: 'Description', value: 'description', width: 240, truncate: true },
9
+ { text: 'Published', value: 'published', width: 140, truncate: true },
10
10
  { text: 'Status', value: 'status' },
11
+ { value: 'action', align: 'right' },
11
12
  ]
12
13
 
13
14
  const sort = ref([])
@@ -43,11 +44,23 @@ const items = ref(generateItems(1000))
43
44
  <x-card>
44
45
  <x-table
45
46
  v-model:sort="sort"
46
- class="!h-80"
47
47
  :headers="headers"
48
48
  :items="itemsSorted"
49
+ class="!h-80"
50
+ fixed
49
51
  virtual-list
50
52
  :virtual-list-item-height="54"
51
- />
53
+ >
54
+ <template #item-action="{ item }">
55
+ <x-button
56
+ icon="x"
57
+ light
58
+ outlined
59
+ color="error"
60
+ size="xs"
61
+ @click="items = items.filter((i) => i.id !== item.id)"
62
+ />
63
+ </template>
64
+ </x-table>
52
65
  </x-card>
53
66
  </template>
@@ -27,7 +27,7 @@ const demos = [{
27
27
  component: StatesDemo,
28
28
  }]
29
29
  const back = 'textarea'
30
- const next = 'accordion'
30
+ const next = 'upload'
31
31
  </script>
32
32
 
33
33
  <template>
@@ -13,7 +13,7 @@ const demos = [{
13
13
  component: UsageDemo,
14
14
  }]
15
15
  const back = 'tag'
16
- const next = ''
16
+ const next = 'upload'
17
17
  </script>
18
18
 
19
19
  <template>
@@ -0,0 +1,29 @@
1
+ <script setup lang="ts">
2
+ import { XUpload } from '@indielayer/ui'
3
+ import UsageDemoCode from './usage.vue?raw'
4
+ import UsageDemo from './usage.vue'
5
+
6
+ const title = 'Upload'
7
+ const description = 'The upload component is used to upload files.'
8
+ const components = [XUpload]
9
+ const demos = [{
10
+ name: 'Usage',
11
+ description: '',
12
+ code: UsageDemoCode,
13
+ component: UsageDemo,
14
+ }]
15
+ const back = 'toggle'
16
+ const next = 'accordion'
17
+ </script>
18
+
19
+ <template>
20
+ <document-page
21
+ github="https://github.com/indielayer/ui/blob/main/packages/ui/docs/pages/component/upload"
22
+ :title="title"
23
+ :description="description"
24
+ :components="components"
25
+ :demos="demos"
26
+ :back="back"
27
+ :next="next"
28
+ />
29
+ </template>
@@ -0,0 +1,115 @@
1
+ <script setup lang="ts">
2
+ import { ref } from 'vue'
3
+ import { useNotifications, type UploadFile } from '@indielayer/ui'
4
+
5
+ const notifications = useNotifications()
6
+
7
+ const imageFiles = ref<UploadFile[]>([])
8
+ const jsonFile = ref<UploadFile[]>([])
9
+
10
+ const rules = {
11
+ isRequired: (v: string) => {
12
+ if (Array.isArray(v)) return !!v.length || 'Field is required'
13
+
14
+ return !!v || 'Field is required'
15
+ },
16
+ isValidUpload: (v: UploadFile[]) => {
17
+ if (!v || !v.length) return 'Field is required'
18
+ if (v.some((file) => file.error)) return 'File upload has errors.'
19
+
20
+ return v.every((file) => file.completed) || 'File upload is not completed.'
21
+ },
22
+ }
23
+
24
+ const previewImg = ref<string>()
25
+
26
+ function onChangeImage(event: Event) {
27
+ const target = event.target as HTMLInputElement
28
+ const files = target.files as FileList
29
+
30
+ if (!files || files.length === 0) return
31
+
32
+ const file = files[0]
33
+
34
+ // set preview image
35
+ const reader = new FileReader()
36
+
37
+ reader.onload = (e) => {
38
+ previewImg.value = reader.result as string
39
+ }
40
+
41
+ reader.readAsDataURL(file)
42
+ }
43
+
44
+ function onUploadComplete(response: any) {
45
+ console.log('onUploadComplete', response)
46
+ }
47
+
48
+ const jsonFileOutput = ref<string>()
49
+
50
+ function onChangeJSON(event: Event) {
51
+ const target = event.target as HTMLInputElement
52
+ const files = target.files as FileList
53
+
54
+ if (!files || files.length === 0) return
55
+
56
+ const fileReader = new FileReader()
57
+
58
+ fileReader.onloadend = (e) => {
59
+ try {
60
+ jsonFileOutput.value = fileReader.result?.toString() || ''
61
+ } catch (error) {
62
+ notifications?.error('Invalid file!')
63
+ }
64
+ }
65
+
66
+ fileReader.readAsText(files[0])
67
+ }
68
+
69
+ function onSubmit(isValid: boolean) {
70
+ if (!isValid) return
71
+
72
+ notifications?.success('Valid! Submitted.')
73
+ }
74
+
75
+ const action = 'https://run.mocky.io/v3/6904ae0b-3cfa-4ae1-bbf2-243a4dd32a3c'
76
+ </script>
77
+
78
+ <template>
79
+ <div >
80
+ <x-form @submit="onSubmit">
81
+ <div class="grid md:grid-cols-2 gap-2">
82
+ <x-upload
83
+ v-model="imageFiles"
84
+
85
+ :action="action"
86
+ method="POST"
87
+ :with-credentials="false"
88
+ :rules="[rules.isValidUpload]"
89
+
90
+ placeholder="Upload game title cover image"
91
+ max-file-size="2000000"
92
+ label="Cover Image"
93
+ tooltip="Title cover image should be 16:9 aspect ratio and max 2MB"
94
+ helper="Title cover image should be 16:9 aspect ratio and max 2MB"
95
+ @upload="onUploadComplete"
96
+ @change="onChangeImage"
97
+ />
98
+ <x-upload
99
+ v-model="jsonFile"
100
+ placeholder="Upload your json file"
101
+ label="JSON File"
102
+ accept=".json"
103
+ :rules="[rules.isRequired]"
104
+ helper="JSON file"
105
+ @change="onChangeJSON"
106
+ />
107
+ </div>
108
+ <x-button type="submit">Submit</x-button>
109
+ </x-form>
110
+ <div v-if="previewImg">
111
+ <h2>Preview Image</h2>
112
+ <img :src="previewImg" alt="preview" class="max-w-lg max-h-96" />
113
+ </div>
114
+ </div>
115
+ </template>
@@ -1 +1 @@
1
- [{"name":"Accordion","description":"Accordion","url":"/component/accordion"},{"name":"Alert","description":"Alerts are used to communicate a state that affects a system, feature or page.","url":"/component/alert"},{"name":"Avatar","description":"Avatars are used to represent a user.","url":"/component/avatar"},{"name":"Badge","description":"Badges are used to display a small amount of information.","url":"/component/badge"},{"name":"Breadcrumbs","description":"Breadcrumbs are used to indicate the current page\\","url":"/component/breadcrumbs"},{"name":"Button","description":"Used to trigger an action, such as submitting a form, opening a menu, or performing a command.","url":"/component/button"},{"name":"Card","description":"Cards are used to display content in an organized manner.","url":"/component/card"},{"name":"Carousel","description":"A carousel is a rotating set of images.","url":"/component/carousel"},{"name":"Checkbox","description":"Checkboxes allow the user to select one or more items from a set. Checkboxes can be used to turn an option on or off.","url":"/component/checkbox"},{"name":"Container","description":"Containers are used to wrap content in an organized manner.","url":"/component/container"},{"name":"Datepicker","description":"The datepicker component is used to select a date or time.","url":"/component/datepicker"},{"name":"Divider","description":"Dividers are used to separate content.","url":"/component/divider"},{"name":"Drawer","description":"Drawers are used to display content in a side panel.","url":"/component/drawer"},{"name":"Form","description":"Forms are used to collect user input.","url":"/component/form"},{"name":"FormGroup","description":"A form group is a wrapper for form elements.","url":"/component/formGroup"},{"name":"Icon","description":"Icons are used to represent an action or an object.","url":"/component/icon"},{"name":"Image","description":"Image is used to load an image file with a skeleton as placeholder and on load display the image.","url":"/component/image"},{"name":"Input","description":"This is a text input component that allows users to enter and edit text.","url":"/component/input"},{"name":"Link","description":"Links are used to navigate to a different page.","url":"/component/link"},{"name":"Loader","description":"Loader component is used to show a loading state.","url":"/component/loader"},{"name":"Menu","description":"Menus are used to display a list of options.","url":"/component/menu"},{"name":"Modal","description":"Modals are used to display content on top of the current page.","url":"/component/modal"},{"name":"Notifications","description":"Notifications are used to display a message to the user.","url":"/component/notifications"},{"name":"Pagination","description":"Pagination is used to navigate through a list of items.","url":"/component/pagination"},{"name":"Popover","description":"Popover is used to display content in a small overlay.","url":"/component/popover"},{"name":"Progress","description":"Progress is used to show the progress of an operation.","url":"/component/progress"},{"name":"QR Code","description":"The QR Code component is used to generate a QR code.","url":"/component/qrCode"},{"name":"Radio","description":"Radios allow the user to select one option from a set. Use radio buttons for exclusive selection if you think that the user needs to see all available options side-by-side.","url":"/component/radio"},{"name":"Scroll","description":"Scroll is used to scroll through a list of items with added features like inner shadows to indicate there is more to scroll.","url":"/component/scroll"},{"name":"Select","description":"Selects allow the user to select one or more options from a set.","url":"/component/select"},{"name":"Skeleton","description":"Skeletons are used to display a loading state.","url":"/component/skeleton"},{"name":"Slider","description":"Sliders are used to select a value from a range.","url":"/component/slider"},{"name":"Spacer","description":"Spacer is used to add space between elements inside a display flex wrapper.","url":"/component/spacer"},{"name":"Spinner","description":"Spinners are used to indicate that an operation is in progress.","url":"/component/spinner"},{"name":"Stepper","description":"Stepper is a navigation component that guides users through the steps of a task.","url":"/component/stepper"},{"name":"Table","description":"Tables are used to display data in a tabular format.","url":"/component/table"},{"name":"Tabs","description":"Tabs are used to navigate through a set of views.","url":"/component/tabs"},{"name":"Tag","description":"Tags are used to display a label.","url":"/component/tag"},{"name":"Textarea","description":"Textareas allow the user to enter text.","url":"/component/textarea"},{"name":"Toggle","description":"Toggles are used to switch between two states.","url":"/component/toggle"},{"name":"Tooltip","description":"Tooltips are used to display a message when hovering over an element.","url":"/component/tooltip"}]
1
+ [{"name":"Accordion","description":"Accordion","url":"/component/accordion"},{"name":"Alert","description":"Alerts are used to communicate a state that affects a system, feature or page.","url":"/component/alert"},{"name":"Avatar","description":"Avatars are used to represent a user.","url":"/component/avatar"},{"name":"Badge","description":"Badges are used to display a small amount of information.","url":"/component/badge"},{"name":"Breadcrumbs","description":"Breadcrumbs are used to indicate the current page\\","url":"/component/breadcrumbs"},{"name":"Button","description":"Used to trigger an action, such as submitting a form, opening a menu, or performing a command.","url":"/component/button"},{"name":"Card","description":"Cards are used to display content in an organized manner.","url":"/component/card"},{"name":"Carousel","description":"A carousel is a rotating set of images.","url":"/component/carousel"},{"name":"Checkbox","description":"Checkboxes allow the user to select one or more items from a set. Checkboxes can be used to turn an option on or off.","url":"/component/checkbox"},{"name":"Container","description":"Containers are used to wrap content in an organized manner.","url":"/component/container"},{"name":"Datepicker","description":"The datepicker component is used to select a date or time.","url":"/component/datepicker"},{"name":"Divider","description":"Dividers are used to separate content.","url":"/component/divider"},{"name":"Drawer","description":"Drawers are used to display content in a side panel.","url":"/component/drawer"},{"name":"Form","description":"Forms are used to collect user input.","url":"/component/form"},{"name":"FormGroup","description":"A form group is a wrapper for form elements.","url":"/component/formGroup"},{"name":"Icon","description":"Icons are used to represent an action or an object.","url":"/component/icon"},{"name":"Image","description":"Image is used to load an image file with a skeleton as placeholder and on load display the image.","url":"/component/image"},{"name":"Input","description":"This is a text input component that allows users to enter and edit text.","url":"/component/input"},{"name":"Link","description":"Links are used to navigate to a different page.","url":"/component/link"},{"name":"Loader","description":"Loader component is used to show a loading state.","url":"/component/loader"},{"name":"Menu","description":"Menus are used to display a list of options.","url":"/component/menu"},{"name":"Modal","description":"Modals are used to display content on top of the current page.","url":"/component/modal"},{"name":"Notifications","description":"Notifications are used to display a message to the user.","url":"/component/notifications"},{"name":"Pagination","description":"Pagination is used to navigate through a list of items.","url":"/component/pagination"},{"name":"Popover","description":"Popover is used to display content in a small overlay.","url":"/component/popover"},{"name":"Progress","description":"Progress is used to show the progress of an operation.","url":"/component/progress"},{"name":"QR Code","description":"The QR Code component is used to generate a QR code.","url":"/component/qrCode"},{"name":"Radio","description":"Radios allow the user to select one option from a set. Use radio buttons for exclusive selection if you think that the user needs to see all available options side-by-side.","url":"/component/radio"},{"name":"Scroll","description":"Scroll is used to scroll through a list of items with added features like inner shadows to indicate there is more to scroll.","url":"/component/scroll"},{"name":"Select","description":"Selects allow the user to select one or more options from a set.","url":"/component/select"},{"name":"Skeleton","description":"Skeletons are used to display a loading state.","url":"/component/skeleton"},{"name":"Slider","description":"Sliders are used to select a value from a range.","url":"/component/slider"},{"name":"Spacer","description":"Spacer is used to add space between elements inside a display flex wrapper.","url":"/component/spacer"},{"name":"Spinner","description":"Spinners are used to indicate that an operation is in progress.","url":"/component/spinner"},{"name":"Stepper","description":"Stepper is a navigation component that guides users through the steps of a task.","url":"/component/stepper"},{"name":"Table","description":"Tables are used to display data in a tabular format.","url":"/component/table"},{"name":"Tabs","description":"Tabs are used to navigate through a set of views.","url":"/component/tabs"},{"name":"Tag","description":"Tags are used to display a label.","url":"/component/tag"},{"name":"Textarea","description":"Textareas allow the user to enter text.","url":"/component/textarea"},{"name":"Toggle","description":"Toggles are used to switch between two states.","url":"/component/toggle"},{"name":"Tooltip","description":"Tooltips are used to display a message when hovering over an element.","url":"/component/tooltip"},{"name":"Upload","description":"The upload component is used to upload files.","url":"/component/upload"}]
@@ -16,3 +16,5 @@ export declare const externalIcon = "<line x1=\"7\" y1=\"17\" x2=\"17\" y2=\"7\"
16
16
  export declare const stepperPristineIcon = "<path d=\"M7.5 4.21v.01M4.21 7.5v.01M3 12v.01m1.21 4.49v.01m3.29 3.28v.01M12 21v.01m4.5-1.22v.01m3.29-3.3v.01M21 12v.01M19.79 7.5v.01m-3.29-3.3v.01M12 3v.01\"/>";
17
17
  export declare const stepperIncompleteIcon = "<svg focusable=\"false\" preserveAspectRatio=\"xMidYMid meet\" fill=\"currentColor\" viewBox=\"0 0 32 32\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M23.7642 6.8593l1.2851-1.5315A13.976 13.976 0 0020.8672 2.887l-.6836 1.8776A11.9729 11.9729 0 0123.7642 6.8593zM27.81 14l1.9677-.4128A13.8888 13.8888 0 0028.14 9.0457L26.4087 10A12.52 12.52 0 0127.81 14zM20.1836 27.2354l.6836 1.8776a13.976 13.976 0 004.1821-2.4408l-1.2851-1.5315A11.9729 11.9729 0 0120.1836 27.2354zM26.4087 22L28.14 23a14.14 14.14 0 001.6382-4.5872L27.81 18.0659A12.1519 12.1519 0 0126.4087 22zM16 30V2a14 14 0 000 28z\"></path></svg>";
18
18
  export declare const chevronDownIcon = "<path d=\"M19 9l-7 7-7-7\" />";
19
+ export declare const uploadIcon = "<path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"></path><polyline points=\"17 8 12 3 7 8\"></polyline><line x1=\"12\" y1=\"3\" x2=\"12\" y2=\"15\"></line>";
20
+ export declare const fileIcon = "<path d=\"M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z\"></path><polyline points=\"13 2 13 9 20 9\"></polyline>";
@@ -1,20 +1,22 @@
1
- const t = '<path d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />', c = '<path d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" />', o = '<path d="M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />', n = '<path d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" />', a = '<path d="M6 18L18 6M6 6l12 12" />', M = '<path d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z" />', e = '<path d="M15 12a3 3 0 11-6 0 3 3 0 016 0z" /><path d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z" />', s = '<path d="M13.875 18.825A10.05 10.05 0 0112 19c-4.478 0-8.268-2.943-9.543-7a9.97 9.97 0 011.563-3.029m5.858.908a3 3 0 114.243 4.243M9.878 9.878l4.242 4.242M9.88 9.88l-3.29-3.29m7.532 7.532l3.29 3.29M3 3l3.59 3.59m0 0A9.953 9.953 0 0112 5c4.478 0 8.268 2.943 9.543 7a10.025 10.025 0 01-4.132 5.411m0 0L21 21" />', h = '<path d="M5 12h.01M12 12h.01M19 12h.01M6 12a1 1 0 11-2 0 1 1 0 012 0zm7 0a1 1 0 11-2 0 1 1 0 012 0zm7 0a1 1 0 11-2 0 1 1 0 012 0z" />', l = '<path d="M15 19l-7-7 7-7" />', p = '<path d="M9 5l7 7-7 7" />', v = '<path d="M5 13l4 4L19 7" />', d = '<path d="M8 9l4-4 4 4m0 6l-4 4-4-4" />', m = '<line x1="7" y1="17" x2="17" y2="7" /><polyline points="7 7 17 7 17 17" />', r = '<path d="M7.5 4.21v.01M4.21 7.5v.01M3 12v.01m1.21 4.49v.01m3.29 3.28v.01M12 21v.01m4.5-1.22v.01m3.29-3.3v.01M21 12v.01M19.79 7.5v.01m-3.29-3.3v.01M12 3v.01"/>', I = '<svg focusable="false" preserveAspectRatio="xMidYMid meet" fill="currentColor" viewBox="0 0 32 32" aria-hidden="true" xmlns="http://www.w3.org/2000/svg"><path d="M23.7642 6.8593l1.2851-1.5315A13.976 13.976 0 0020.8672 2.887l-.6836 1.8776A11.9729 11.9729 0 0123.7642 6.8593zM27.81 14l1.9677-.4128A13.8888 13.8888 0 0028.14 9.0457L26.4087 10A12.52 12.52 0 0127.81 14zM20.1836 27.2354l.6836 1.8776a13.976 13.976 0 004.1821-2.4408l-1.2851-1.5315A11.9729 11.9729 0 0120.1836 27.2354zM26.4087 22L28.14 23a14.14 14.14 0 001.6382-4.5872L27.81 18.0659A12.1519 12.1519 0 0126.4087 22zM16 30V2a14 14 0 000 28z"></path></svg>', i = '<path d="M19 9l-7 7-7-7" />';
1
+ const n = '<path d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />', o = '<path d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" />', t = '<path d="M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />', c = '<path d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" />', a = '<path d="M6 18L18 6M6 6l12 12" />', e = '<path d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z" />', l = '<path d="M15 12a3 3 0 11-6 0 3 3 0 016 0z" /><path d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z" />', p = '<path d="M13.875 18.825A10.05 10.05 0 0112 19c-4.478 0-8.268-2.943-9.543-7a9.97 9.97 0 011.563-3.029m5.858.908a3 3 0 114.243 4.243M9.878 9.878l4.242 4.242M9.88 9.88l-3.29-3.29m7.532 7.532l3.29 3.29M3 3l3.59 3.59m0 0A9.953 9.953 0 0112 5c4.478 0 8.268 2.943 9.543 7a10.025 10.025 0 01-4.132 5.411m0 0L21 21" />', M = '<path d="M5 12h.01M12 12h.01M19 12h.01M6 12a1 1 0 11-2 0 1 1 0 012 0zm7 0a1 1 0 11-2 0 1 1 0 012 0zm7 0a1 1 0 11-2 0 1 1 0 012 0z" />', s = '<path d="M15 19l-7-7 7-7" />', h = '<path d="M9 5l7 7-7 7" />', v = '<path d="M5 13l4 4L19 7" />', d = '<path d="M8 9l4-4 4 4m0 6l-4 4-4-4" />', i = '<line x1="7" y1="17" x2="17" y2="7" /><polyline points="7 7 17 7 17 17" />', m = '<path d="M7.5 4.21v.01M4.21 7.5v.01M3 12v.01m1.21 4.49v.01m3.29 3.28v.01M12 21v.01m4.5-1.22v.01m3.29-3.3v.01M21 12v.01M19.79 7.5v.01m-3.29-3.3v.01M12 3v.01"/>', r = '<svg focusable="false" preserveAspectRatio="xMidYMid meet" fill="currentColor" viewBox="0 0 32 32" aria-hidden="true" xmlns="http://www.w3.org/2000/svg"><path d="M23.7642 6.8593l1.2851-1.5315A13.976 13.976 0 0020.8672 2.887l-.6836 1.8776A11.9729 11.9729 0 0123.7642 6.8593zM27.81 14l1.9677-.4128A13.8888 13.8888 0 0028.14 9.0457L26.4087 10A12.52 12.52 0 0127.81 14zM20.1836 27.2354l.6836 1.8776a13.976 13.976 0 004.1821-2.4408l-1.2851-1.5315A11.9729 11.9729 0 0120.1836 27.2354zM26.4087 22L28.14 23a14.14 14.14 0 001.6382-4.5872L27.81 18.0659A12.1519 12.1519 0 0126.4087 22zM16 30V2a14 14 0 000 28z"></path></svg>', I = '<path d="M19 9l-7 7-7-7" />', z = '<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="17 8 12 3 7 8"></polyline><line x1="12" y1="3" x2="12" y2="15"></line>', y = '<path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"></path><polyline points="13 2 13 9 20 9"></polyline>';
2
2
  export {
3
- M as avatarIcon,
3
+ e as avatarIcon,
4
4
  v as checkIcon,
5
- i as chevronDownIcon,
5
+ I as chevronDownIcon,
6
6
  a as closeIcon,
7
- h as dotsIcon,
8
- o as errorIcon,
9
- m as externalIcon,
10
- e as eyeIcon,
11
- s as eyeVisibleIcon,
12
- t as infoIcon,
13
- p as nextIcon,
14
- l as prevIcon,
7
+ M as dotsIcon,
8
+ t as errorIcon,
9
+ i as externalIcon,
10
+ l as eyeIcon,
11
+ p as eyeVisibleIcon,
12
+ y as fileIcon,
13
+ n as infoIcon,
14
+ h as nextIcon,
15
+ s as prevIcon,
15
16
  d as selectIcon,
16
- I as stepperIncompleteIcon,
17
- r as stepperPristineIcon,
18
- c as successIcon,
19
- n as warningIcon
17
+ r as stepperIncompleteIcon,
18
+ m as stepperPristineIcon,
19
+ o as successIcon,
20
+ z as uploadIcon,
21
+ c as warningIcon
20
22
  };
@@ -1,18 +1,18 @@
1
1
  import { defineComponent as R, ref as w, watch as m, unref as o, openBlock as i, createElementBlock as p, normalizeStyle as T, normalizeClass as u, createElementVNode as d, withKeys as H, withModifiers as O, withDirectives as U, mergeProps as X, toHandlers as j, vModelCheckbox as J, createBlock as V, renderSlot as C, toDisplayString as Q, createCommentVNode as W } from "vue";
2
- import { useTheme as Y } from "../../composables/useTheme.js";
2
+ import { useColors as Y } from "../../composables/useColors.js";
3
3
  import { useCommon as I } from "../../composables/useCommon.js";
4
- import { useColors as Z } from "../../composables/useColors.js";
5
- import { useInteractive as z } from "../../composables/useInteractive.js";
6
4
  import { useInputtable as f } from "../../composables/useInputtable.js";
7
- import x from "../spinner/Spinner.vue.js";
8
- import _ from "../inputFooter/InputFooter.vue.js";
5
+ import { useInteractive as z } from "../../composables/useInteractive.js";
6
+ import { useTheme as Z } from "../../composables/useTheme.js";
7
+ import x from "../inputFooter/InputFooter.vue.js";
8
+ import _ from "../spinner/Spinner.vue.js";
9
9
  const ee = ["onKeypress"], se = ["id", "name", "aria-checked", "aria-disabled", "disabled", "required"], le = {
10
10
  key: 1,
11
11
  name: "check-icon",
12
12
  class: "w-2/3 h-[2px] bg-white dark:bg-secondary-900"
13
13
  }, ae = ["textContent"], oe = {
14
14
  ...I.props(),
15
- ...Z.props("primary"),
15
+ ...Y.props("primary"),
16
16
  ...z.props(),
17
17
  ...f.props(),
18
18
  value: [String, Number],
@@ -73,7 +73,7 @@ const ee = ["onKeypress"], se = ["id", "name", "aria-checked", "aria-disabled",
73
73
  l.validateOnInput && !q.value && k(l.modelValue);
74
74
  }, 0);
75
75
  }
76
- }, { styles: M, classes: t, className: D } = Y("Checkbox", {}, l, { checked: a, isInsideForm: S, isInsideFormGroup: c });
76
+ }, { styles: M, classes: t, className: D } = Z("Checkbox", {}, l, { checked: a, isInsideForm: S, isInsideFormGroup: c });
77
77
  return B({ focus: h, blur: F, toggle: y, reset: E, validate: k, setError: K }), (e, s) => (i(), p("label", {
78
78
  style: T(o(M)),
79
79
  class: u([
@@ -107,7 +107,7 @@ const ee = ["onKeypress"], se = ["id", "name", "aria-checked", "aria-disabled",
107
107
  [e.glow && !e.disabled && !e.loading ? e.$style["checkbox--glow"] : ""]
108
108
  ])
109
109
  }, [
110
- e.loading ? (i(), V(x, {
110
+ e.loading ? (i(), V(_, {
111
111
  key: 0,
112
112
  size: e.size,
113
113
  class: "absolute"
@@ -129,7 +129,7 @@ const ee = ["onKeypress"], se = ["id", "name", "aria-checked", "aria-disabled",
129
129
  }, null, 8, ae)) : C(e.$slots, "default", { key: 1 })
130
130
  ], 2)
131
131
  ], 42, ee),
132
- o(N) ? W("", !0) : (i(), V(_, {
132
+ o(N) ? W("", !0) : (i(), V(x, {
133
133
  key: 0,
134
134
  error: o(G),
135
135
  helper: e.helper
@@ -294,7 +294,7 @@ declare const datepickerProps: {
294
294
  default: string;
295
295
  };
296
296
  weekStart: {
297
- type: PropType<0 | 1 | 2 | "0" | "1" | 3 | 4 | 5 | 6 | "2" | "3" | "4" | "5" | "6" | undefined>;
297
+ type: PropType<0 | 1 | "0" | "1" | 2 | 3 | 4 | 5 | 6 | "2" | "3" | "4" | "5" | "6" | undefined>;
298
298
  default: number;
299
299
  };
300
300
  weekNumbers: {
@@ -861,7 +861,7 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<im
861
861
  default: string;
862
862
  };
863
863
  weekStart: {
864
- type: PropType<0 | 1 | 2 | "0" | "1" | 3 | 4 | 5 | 6 | "2" | "3" | "4" | "5" | "6" | undefined>;
864
+ type: PropType<0 | 1 | "0" | "1" | 2 | 3 | 4 | 5 | 6 | "2" | "3" | "4" | "5" | "6" | undefined>;
865
865
  default: number;
866
866
  };
867
867
  weekNumbers: {
@@ -1427,7 +1427,7 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<im
1427
1427
  default: string;
1428
1428
  };
1429
1429
  weekStart: {
1430
- type: PropType<0 | 1 | 2 | "0" | "1" | 3 | 4 | 5 | 6 | "2" | "3" | "4" | "5" | "6" | undefined>;
1430
+ type: PropType<0 | 1 | "0" | "1" | 2 | 3 | 4 | 5 | 6 | "2" | "3" | "4" | "5" | "6" | undefined>;
1431
1431
  default: number;
1432
1432
  };
1433
1433
  weekNumbers: {
@@ -1794,7 +1794,7 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<im
1794
1794
  quarter: number;
1795
1795
  year: number;
1796
1796
  }) => boolean) | Partial<import("@vuepic/vue-datepicker").Highlight> | undefined;
1797
- weekStart: 0 | 1 | 2 | "0" | "1" | 3 | 4 | 5 | 6 | "2" | "3" | "4" | "5" | "6" | undefined;
1797
+ weekStart: 0 | 1 | "0" | "1" | 2 | 3 | 4 | 5 | 6 | "2" | "3" | "4" | "5" | "6" | undefined;
1798
1798
  weekNumbers: import("@vuepic/vue-datepicker").WeekNumberType | {
1799
1799
  type: import("@vuepic/vue-datepicker").WeekNumberType;
1800
1800
  hideOnOffsetDates?: boolean | undefined;
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as O, ref as d, openBlock as D, createElementBlock as C, normalizeStyle as I, unref as n, normalizeClass as P, createVNode as u, createSlots as T, withCtx as m, withKeys as p, withModifiers as R, renderList as j, renderSlot as F, normalizeProps as A, guardReactiveProps as z } from "vue";
2
- import { useMutationObserver as L } from "../../node_modules/.pnpm/@vueuse_core@10.2.0_vue@3.5.10_typescript@5.2.2_/node_modules/@vueuse/core/index.js";
2
+ import { useMutationObserver as L } from "../../node_modules/.pnpm/@vueuse_core@11.1.0_vue@3.5.10_typescript@5.2.2_/node_modules/@vueuse/core/index.js";
3
3
  import { useCommon as q } from "../../composables/useCommon.js";
4
4
  import { useInputtable as f } from "../../composables/useInputtable.js";
5
5
  import { useInteractive as M } from "../../composables/useInteractive.js";
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as X, ref as a, watchEffect as j, watch as K, computed as v, onMounted as M, openBlock as y, createBlock as O, Teleport as q, createVNode as w, Transition as F, withCtx as g, withDirectives as G, createElementVNode as k, normalizeClass as $, unref as n, createElementBlock as H, createCommentVNode as x, normalizeStyle as I, renderSlot as f, vShow as J } from "vue";
2
- import { useBreakpoints as Q, breakpointsTailwind as U, useEventListener as S, useSwipe as W } from "../../node_modules/.pnpm/@vueuse_core@10.2.0_vue@3.5.10_typescript@5.2.2_/node_modules/@vueuse/core/index.js";
2
+ import { useBreakpoints as Q, breakpointsTailwind as U, useEventListener as S, useSwipe as W } from "../../node_modules/.pnpm/@vueuse_core@11.1.0_vue@3.5.10_typescript@5.2.2_/node_modules/@vueuse/core/index.js";
3
3
  import { useTheme as Y } from "../../composables/useTheme.js";
4
4
  import Z from "../scroll/Scroll.vue.js";
5
5
  const ee = {
@@ -50,22 +50,6 @@ const ee = {
50
50
  e.key === "Escape" && s.value && l();
51
51
  }
52
52
  W(d, {
53
- // passive: false,
54
- // onSwipe(e: TouchEvent) {
55
- // if (lengthX.value < 0) {
56
- // const length = Math.abs(lengthX.value)
57
- // left.value = `${length}px`
58
- // } else {
59
- // left.value = '0'
60
- // }
61
- // },
62
- // onSwipeEnd(e: TouchEvent, direction: UseSwipeDirection) {
63
- // if (lengthX.value < 0 && props.width && (Math.abs(lengthX.value) / props.width) >= 0.5) {
64
- // left.value = '100%'
65
- // } else {
66
- // left.value = '0'
67
- // }
68
- // },
69
53
  onSwipeEnd(e, o) {
70
54
  i.value && (t.position === "left" && o === "left" || t.position === "right" && o === "right" || t.position === "top" && o === "up" || t.position === "bottom" && o === "down") && l();
71
55
  }
@@ -11,7 +11,7 @@ declare const formProps: {
11
11
  };
12
12
  disabled: BooleanConstructor;
13
13
  errors: {
14
- type: PropType<[FormError[], FormError]>;
14
+ type: PropType<FormError | FormError[]>;
15
15
  default: () => never[];
16
16
  };
17
17
  title: StringConstructor;
@@ -51,7 +51,7 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<im
51
51
  };
52
52
  disabled: BooleanConstructor;
53
53
  errors: {
54
- type: PropType<[FormError[], FormError]>;
54
+ type: PropType<FormError | FormError[]>;
55
55
  default: () => never[];
56
56
  };
57
57
  title: StringConstructor;
@@ -71,7 +71,7 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<im
71
71
  };
72
72
  disabled: BooleanConstructor;
73
73
  errors: {
74
- type: PropType<[FormError[], FormError]>;
74
+ type: PropType<FormError | FormError[]>;
75
75
  default: () => never[];
76
76
  };
77
77
  title: StringConstructor;
@@ -86,7 +86,7 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<im
86
86
  autoValidate: boolean;
87
87
  autoFocus: boolean;
88
88
  disabled: boolean;
89
- errors: [FormError[], FormError];
89
+ errors: FormError | FormError[];
90
90
  hasFooter: boolean;
91
91
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, {
92
92
  header?(_: {}): any;