@code-coaching/vuetiful 0.26.0 → 0.28.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 (266) hide show
  1. package/README.md +47 -55
  2. package/dist/css/animations.css +2 -0
  3. package/{src → dist}/css/overrides/quasar.css +73 -58
  4. package/dist/css/transitions/fade.css +9 -0
  5. package/{src/styles → dist/css}/transitions/slide.css +0 -24
  6. package/dist/favicon.ico +0 -0
  7. package/dist/types/components/atoms/VAvatar.vue.d.ts +39 -90
  8. package/dist/types/components/atoms/VBadge.vue.d.ts +34 -21
  9. package/dist/types/components/atoms/VButton.vue.d.ts +42 -48
  10. package/dist/types/components/atoms/VChip.vue.d.ts +33 -21
  11. package/dist/types/components/atoms/VRadio/VRadioDescription.vue.d.ts +7 -12
  12. package/dist/types/components/atoms/VRadio/VRadioGroup.vue.d.ts +54 -83
  13. package/dist/types/components/atoms/VRadio/VRadioItem.vue.d.ts +46 -12
  14. package/dist/types/components/atoms/VRadio/VRadioLabel.vue.d.ts +7 -12
  15. package/dist/types/components/atoms/VSwitch/VSwitch.vue.d.ts +52 -73
  16. package/dist/types/components/atoms/VSwitch/VSwitchDescription.vue.d.ts +32 -11
  17. package/dist/types/components/atoms/VSwitch/VSwitchGroup.vue.d.ts +32 -11
  18. package/dist/types/components/atoms/VSwitch/VSwitchLabel.vue.d.ts +33 -20
  19. package/dist/types/components/atoms/index.d.ts +1 -2
  20. package/dist/types/components/molecules/VAccordion/VAccordion.vue.d.ts +39 -28
  21. package/dist/types/components/molecules/VAccordion/VAccordionItem.vue.d.ts +35 -19
  22. package/dist/types/components/molecules/VAlert.vue.d.ts +50 -73
  23. package/dist/types/components/molecules/VCard/VCard.vue.d.ts +37 -48
  24. package/dist/types/components/molecules/VCard/VCardBody.vue.d.ts +33 -12
  25. package/dist/types/components/molecules/VCard/VCardFooter.vue.d.ts +36 -20
  26. package/dist/types/components/molecules/VCard/VCardHeader.vue.d.ts +36 -20
  27. package/dist/types/components/molecules/VCodeBlock.vue.d.ts +15 -16
  28. package/dist/types/components/molecules/VDrawer.vue.d.ts +13 -7
  29. package/dist/types/components/molecules/VListbox/VListbox.vue.d.ts +54 -132
  30. package/dist/types/components/molecules/VListbox/VListboxButton.vue.d.ts +22 -21
  31. package/dist/types/components/molecules/VListbox/VListboxItem.vue.d.ts +22 -19
  32. package/dist/types/components/molecules/VListbox/VListboxItems.vue.d.ts +19 -30
  33. package/dist/types/components/molecules/VListbox/VListboxLabel.vue.d.ts +7 -12
  34. package/dist/types/components/molecules/VPreview.vue.d.ts +57 -74
  35. package/dist/types/components/molecules/VRail/VRail.vue.d.ts +28 -13
  36. package/dist/types/components/molecules/VRail/VRailTile.vue.d.ts +49 -16
  37. package/dist/types/components/molecules/VShell.vue.d.ts +76 -44
  38. package/dist/types/components/molecules/VShellConfigurator.vue.d.ts +99 -0
  39. package/dist/types/components/molecules/VTabs/VTab.vue.d.ts +52 -20
  40. package/dist/types/components/molecules/VTabs/VTabPanel.vue.d.ts +8 -1
  41. package/dist/types/components/molecules/VTabs/VTabs.vue.d.ts +43 -101
  42. package/dist/types/components/molecules/Vuetiful.vue.d.ts +22 -0
  43. package/dist/types/components/molecules/index.d.ts +3 -4
  44. package/dist/types/directives/click-outside-group.d.ts +1 -1
  45. package/dist/types/directives/click-outside.d.ts +1 -1
  46. package/dist/types/directives/clipboard.d.ts +1 -1
  47. package/dist/types/index.d.ts +1 -8
  48. package/dist/types/props/props.d.ts +1 -14
  49. package/dist/types/services/drawer.service.d.ts +2 -2
  50. package/dist/types/services/index.d.ts +3 -4
  51. package/dist/types/utils/id-generator.d.ts +1 -0
  52. package/dist/types/utils/index.d.ts +7 -5
  53. package/dist/types/utils/tailwind-merge.d.ts +1 -0
  54. package/dist/types/utils/theme/VLightSwitch.vue.d.ts +16 -0
  55. package/dist/types/utils/theme/VThemeSwitch.vue.d.ts +41 -0
  56. package/dist/types/{services → utils/theme}/dark-mode.service.d.ts +1 -1
  57. package/dist/types/utils/theme/rocket.theme.d.ts +223 -0
  58. package/dist/types/utils/theme/theme.service.d.ts +6 -9
  59. package/dist/types/utils/theme/themes.d.ts +3 -39
  60. package/dist/types/utils/theme/vuetiful.theme.d.ts +224 -0
  61. package/dist/vuetiful.es.mjs +54782 -49507
  62. package/dist/vuetiful.umd.cjs +189 -0
  63. package/package.json +53 -37
  64. package/dist/style.css +0 -10
  65. package/dist/types/components/VBootstrap.vue.d.ts +0 -15
  66. package/dist/types/components/atoms/VAvatar.test.d.ts +0 -1
  67. package/dist/types/components/atoms/VBadge.test.d.ts +0 -1
  68. package/dist/types/components/atoms/VButton.test.d.ts +0 -1
  69. package/dist/types/components/atoms/VChip.test.d.ts +0 -1
  70. package/dist/types/components/atoms/VLightSwitch.test.d.ts +0 -1
  71. package/dist/types/components/atoms/VLightSwitch.vue.d.ts +0 -95
  72. package/dist/types/components/atoms/VRadio/VRadioDescription.test.d.ts +0 -1
  73. package/dist/types/components/atoms/VRadio/VRadioGroup.test.d.ts +0 -1
  74. package/dist/types/components/atoms/VRadio/VRadioItem.test.d.ts +0 -1
  75. package/dist/types/components/atoms/VRadio/VRadioLabel.test.d.ts +0 -1
  76. package/dist/types/components/atoms/VSwitch/VSwitch.test.d.ts +0 -1
  77. package/dist/types/components/atoms/VSwitch/VSwitchDescription.test.d.ts +0 -1
  78. package/dist/types/components/atoms/VSwitch/VSwitchGroup.test.d.ts +0 -1
  79. package/dist/types/components/atoms/VSwitch/VSwitchLabel.test.d.ts +0 -1
  80. package/dist/types/components/molecules/VAccordion/VAccordion.test.d.ts +0 -1
  81. package/dist/types/components/molecules/VAccordion/VAccordionItem.test.d.ts +0 -1
  82. package/dist/types/components/molecules/VAlert.test.d.ts +0 -1
  83. package/dist/types/components/molecules/VCard/VCard.test.d.ts +0 -1
  84. package/dist/types/components/molecules/VCard/VCardBody.test.d.ts +0 -1
  85. package/dist/types/components/molecules/VCard/VCardFooter.test.d.ts +0 -1
  86. package/dist/types/components/molecules/VCard/VCardHeader.test.d.ts +0 -1
  87. package/dist/types/components/molecules/VCodeBlock.test.d.ts +0 -1
  88. package/dist/types/components/molecules/VDrawer.test.d.ts +0 -1
  89. package/dist/types/components/molecules/VListbox/VListbox.test.d.ts +0 -1
  90. package/dist/types/components/molecules/VListbox/VListboxButton.test.d.ts +0 -1
  91. package/dist/types/components/molecules/VListbox/VListboxItem.test.d.ts +0 -1
  92. package/dist/types/components/molecules/VListbox/VListboxItems.test.d.ts +0 -1
  93. package/dist/types/components/molecules/VListbox/VListboxLabel.test.d.ts +0 -1
  94. package/dist/types/components/molecules/VPreview.test.d.ts +0 -1
  95. package/dist/types/components/molecules/VRail/VRail.test.d.ts +0 -1
  96. package/dist/types/components/molecules/VRail/VRailTile.test.d.ts +0 -1
  97. package/dist/types/components/molecules/VShell.test.d.ts +0 -1
  98. package/dist/types/components/molecules/VTabs/VTab.test.d.ts +0 -1
  99. package/dist/types/components/molecules/VTabs/VTabPanel.test.d.ts +0 -1
  100. package/dist/types/components/molecules/VTabs/VTabs.test.d.ts +0 -1
  101. package/dist/types/directives/click-outside-group.test.d.ts +0 -1
  102. package/dist/types/directives/click-outside.test.d.ts +0 -1
  103. package/dist/types/directives/clipboard.test.d.ts +0 -1
  104. package/dist/types/services/dark-mode.service.test.d.ts +0 -1
  105. package/dist/types/services/drawer.service.test.d.ts +0 -1
  106. package/dist/types/services/highlight.service.test.d.ts +0 -1
  107. package/dist/types/services/rail.service.test.d.ts +0 -1
  108. package/dist/types/services/settings.service.test.d.ts +0 -1
  109. package/dist/types/types/index.d.ts +0 -54
  110. package/dist/types/types/tailwind.d.ts +0 -4
  111. package/dist/types/utils/colors/colors.service.d.ts +0 -69
  112. package/dist/types/utils/platform/platform.service.test.d.ts +0 -1
  113. package/dist/types/utils/theme/callback.test.d.ts +0 -1
  114. package/dist/types/utils/theme/remove.test.d.ts +0 -1
  115. package/dist/types/utils/theme/theme-switcher.vue.d.ts +0 -69
  116. package/dist/types/utils/theme/theme.service.test.d.ts +0 -1
  117. package/dist/vuetiful.umd.js +0 -99
  118. package/src/assets/fonts/myfont.woff +0 -0
  119. package/src/assets/main.css +0 -17
  120. package/src/components/VBootstrap.vue +0 -62
  121. package/src/components/atoms/VAvatar.test.ts +0 -175
  122. package/src/components/atoms/VAvatar.vue +0 -89
  123. package/src/components/atoms/VBadge.test.ts +0 -28
  124. package/src/components/atoms/VBadge.vue +0 -17
  125. package/src/components/atoms/VButton.test.ts +0 -180
  126. package/src/components/atoms/VButton.vue +0 -76
  127. package/src/components/atoms/VChip.test.ts +0 -33
  128. package/src/components/atoms/VChip.vue +0 -17
  129. package/src/components/atoms/VLightSwitch.test.ts +0 -69
  130. package/src/components/atoms/VLightSwitch.vue +0 -121
  131. package/src/components/atoms/VRadio/VRadioDescription.test.ts +0 -55
  132. package/src/components/atoms/VRadio/VRadioDescription.vue +0 -14
  133. package/src/components/atoms/VRadio/VRadioGroup.test.ts +0 -81
  134. package/src/components/atoms/VRadio/VRadioGroup.vue +0 -88
  135. package/src/components/atoms/VRadio/VRadioItem.test.ts +0 -183
  136. package/src/components/atoms/VRadio/VRadioItem.vue +0 -36
  137. package/src/components/atoms/VRadio/VRadioLabel.test.ts +0 -55
  138. package/src/components/atoms/VRadio/VRadioLabel.vue +0 -16
  139. package/src/components/atoms/VSwitch/VSwitch.test.ts +0 -100
  140. package/src/components/atoms/VSwitch/VSwitch.vue +0 -106
  141. package/src/components/atoms/VSwitch/VSwitchDescription.test.ts +0 -55
  142. package/src/components/atoms/VSwitch/VSwitchDescription.vue +0 -16
  143. package/src/components/atoms/VSwitch/VSwitchGroup.test.ts +0 -26
  144. package/src/components/atoms/VSwitch/VSwitchGroup.vue +0 -16
  145. package/src/components/atoms/VSwitch/VSwitchLabel.test.ts +0 -89
  146. package/src/components/atoms/VSwitch/VSwitchLabel.vue +0 -20
  147. package/src/components/atoms/index.ts +0 -31
  148. package/src/components/index.ts +0 -2
  149. package/src/components/molecules/VAccordion/VAccordion.test.ts +0 -27
  150. package/src/components/molecules/VAccordion/VAccordion.vue +0 -32
  151. package/src/components/molecules/VAccordion/VAccordionItem.test.ts +0 -134
  152. package/src/components/molecules/VAccordion/VAccordionItem.vue +0 -68
  153. package/src/components/molecules/VAlert.test.ts +0 -100
  154. package/src/components/molecules/VAlert.vue +0 -137
  155. package/src/components/molecules/VCard/VCard.test.ts +0 -47
  156. package/src/components/molecules/VCard/VCard.vue +0 -74
  157. package/src/components/molecules/VCard/VCardBody.test.ts +0 -39
  158. package/src/components/molecules/VCard/VCardBody.vue +0 -16
  159. package/src/components/molecules/VCard/VCardFooter.test.ts +0 -63
  160. package/src/components/molecules/VCard/VCardFooter.vue +0 -31
  161. package/src/components/molecules/VCard/VCardHeader.test.ts +0 -86
  162. package/src/components/molecules/VCard/VCardHeader.vue +0 -53
  163. package/src/components/molecules/VCodeBlock.test.ts +0 -133
  164. package/src/components/molecules/VCodeBlock.vue +0 -113
  165. package/src/components/molecules/VDrawer.test.ts +0 -14
  166. package/src/components/molecules/VDrawer.vue +0 -87
  167. package/src/components/molecules/VListbox/VListbox.test.ts +0 -146
  168. package/src/components/molecules/VListbox/VListbox.vue +0 -149
  169. package/src/components/molecules/VListbox/VListboxButton.test.ts +0 -66
  170. package/src/components/molecules/VListbox/VListboxButton.vue +0 -57
  171. package/src/components/molecules/VListbox/VListboxItem.test.ts +0 -51
  172. package/src/components/molecules/VListbox/VListboxItem.vue +0 -39
  173. package/src/components/molecules/VListbox/VListboxItems.test.ts +0 -44
  174. package/src/components/molecules/VListbox/VListboxItems.vue +0 -42
  175. package/src/components/molecules/VListbox/VListboxLabel.test.ts +0 -30
  176. package/src/components/molecules/VListbox/VListboxLabel.vue +0 -14
  177. package/src/components/molecules/VPreview.test.ts +0 -73
  178. package/src/components/molecules/VPreview.vue +0 -230
  179. package/src/components/molecules/VRail/VRail.test.ts +0 -14
  180. package/src/components/molecules/VRail/VRail.vue +0 -33
  181. package/src/components/molecules/VRail/VRailTile.test.ts +0 -97
  182. package/src/components/molecules/VRail/VRailTile.vue +0 -49
  183. package/src/components/molecules/VShell.test.ts +0 -14
  184. package/src/components/molecules/VShell.vue +0 -63
  185. package/src/components/molecules/VTabs/VTab.test.ts +0 -143
  186. package/src/components/molecules/VTabs/VTab.vue +0 -50
  187. package/src/components/molecules/VTabs/VTabPanel.test.ts +0 -24
  188. package/src/components/molecules/VTabs/VTabPanel.vue +0 -9
  189. package/src/components/molecules/VTabs/VTabs.test.ts +0 -92
  190. package/src/components/molecules/VTabs/VTabs.vue +0 -104
  191. package/src/components/molecules/index.ts +0 -51
  192. package/src/directives/click-outside-group.test.ts +0 -44
  193. package/src/directives/click-outside-group.ts +0 -39
  194. package/src/directives/click-outside.test.ts +0 -38
  195. package/src/directives/click-outside.ts +0 -28
  196. package/src/directives/clipboard.test.ts +0 -26
  197. package/src/directives/clipboard.ts +0 -9
  198. package/src/directives/index.ts +0 -5
  199. package/src/env.d.ts +0 -8
  200. package/src/index.ts +0 -21
  201. package/src/props/index.ts +0 -1
  202. package/src/props/props.ts +0 -62
  203. package/src/services/dark-mode.service.test.ts +0 -104
  204. package/src/services/dark-mode.service.ts +0 -75
  205. package/src/services/drawer.service.test.ts +0 -45
  206. package/src/services/drawer.service.ts +0 -46
  207. package/src/services/highlight.service.test.ts +0 -24
  208. package/src/services/highlight.service.ts +0 -19
  209. package/src/services/index.ts +0 -8
  210. package/src/services/rail.service.test.ts +0 -13
  211. package/src/services/rail.service.ts +0 -11
  212. package/src/services/settings.service.test.ts +0 -17
  213. package/src/services/settings.service.ts +0 -136
  214. package/src/styles/all.css +0 -24
  215. package/src/styles/core.css +0 -66
  216. package/src/styles/elements/alerts.css +0 -17
  217. package/src/styles/elements/badges.css +0 -31
  218. package/src/styles/elements/breadcrumbs.css +0 -26
  219. package/src/styles/elements/buttons.css +0 -103
  220. package/src/styles/elements/cards.css +0 -32
  221. package/src/styles/elements/chips.css +0 -22
  222. package/src/styles/elements/forms.css +0 -269
  223. package/src/styles/elements/lists.css +0 -48
  224. package/src/styles/elements/logo-clouds.css +0 -29
  225. package/src/styles/elements/modals.css +0 -15
  226. package/src/styles/elements/placeholders.css +0 -17
  227. package/src/styles/elements/popups.css +0 -16
  228. package/src/styles/elements/tables.css +0 -102
  229. package/src/styles/elements.css +0 -19
  230. package/src/styles/highlight-js.css +0 -116
  231. package/src/styles/tailwind.css +0 -16
  232. package/src/styles/transitions/fade.css +0 -14
  233. package/src/styles/transitions.css +0 -2
  234. package/src/styles/typography.css +0 -101
  235. package/src/styles/variants.css +0 -156
  236. package/src/tailwind/core.cjs +0 -37
  237. package/src/tailwind/generated/intellisense-classes.cjs +0 -558
  238. package/src/tailwind/intellisense.cjs +0 -21
  239. package/src/tailwind/settings.cjs +0 -20
  240. package/src/tailwind/theme/colors.cjs +0 -20
  241. package/src/tailwind/tokens/backgrounds.cjs +0 -48
  242. package/src/tailwind/tokens/border-radius.cjs +0 -21
  243. package/src/tailwind/tokens/borders.cjs +0 -24
  244. package/src/tailwind/tokens/fills.cjs +0 -20
  245. package/src/tailwind/tokens/rings.cjs +0 -50
  246. package/src/tailwind/tokens/text.cjs +0 -35
  247. package/src/tailwind/vuetiful.cjs +0 -19
  248. package/src/themes/theme-rocket.css +0 -119
  249. package/src/themes/theme-sahara.css +0 -128
  250. package/src/themes/theme-seafoam.css +0 -120
  251. package/src/themes/theme-seasonal.css +0 -115
  252. package/src/themes/theme-skeleton.css +0 -115
  253. package/src/themes/theme-vintage.css +0 -125
  254. package/src/themes/theme-vuetiful.css +0 -136
  255. package/src/types/index.ts +0 -59
  256. package/src/types/tailwind.ts +0 -7
  257. package/src/utils/colors/colors.service.ts +0 -293
  258. package/src/utils/index.ts +0 -8
  259. package/src/utils/platform/platform.service.test.ts +0 -19
  260. package/src/utils/platform/platform.service.ts +0 -8
  261. package/src/utils/theme/callback.test.ts +0 -28
  262. package/src/utils/theme/remove.test.ts +0 -27
  263. package/src/utils/theme/theme-switcher.vue +0 -78
  264. package/src/utils/theme/theme.service.test.ts +0 -269
  265. package/src/utils/theme/theme.service.ts +0 -173
  266. package/src/utils/theme/themes.ts +0 -282
@@ -1,50 +0,0 @@
1
- <script setup lang="ts">
2
- import { unstyledProp } from '@/props';
3
- import { useSettings } from '@/services';
4
- import { Tab } from '@headlessui/vue';
5
- import { computed, inject } from 'vue';
6
-
7
- const props = defineProps({
8
- disabled: {
9
- type: Boolean,
10
- default: false,
11
- },
12
- unstyled: unstyledProp,
13
- });
14
-
15
- const activeClass = inject('active') as string;
16
- const hoverClass = inject('hover') as string;
17
- const vertical = inject('vertical') as boolean;
18
- const classTab = inject('classTab') as string;
19
- const hideSeparator = inject('hideSeparator') as boolean;
20
- const classTabSeparator = inject('classTabSeparator') as string;
21
-
22
- const tabClass = computed(() => {
23
- return classTab ? classTab : 'w-full px-4 py-2';
24
- });
25
-
26
- const { settings } = useSettings();
27
- const isUnstyled = settings.global.unstyled || settings.components.tab.unstyled || props.unstyled;
28
- </script>
29
-
30
- <template>
31
- <Tab
32
- :disabled="disabled"
33
- v-slot="{ selected }"
34
- class="vuetiful-tab"
35
- :class="`flex ${vertical ? 'flex-row justify-between' : 'flex-col'}`"
36
- >
37
- <div
38
- data-test="slot-container"
39
- class="vuetiful-tab-content"
40
- :class="`text-base ${isUnstyled ? '' : 'rounded-token'} ${selected ? activeClass : hoverClass} ${tabClass}`"
41
- >
42
- <slot />
43
- </div>
44
- <div
45
- v-show="selected && !hideSeparator"
46
- class="vuetiful-tab-separator"
47
- :class="`z-10 ${vertical ? 'mr-[-2px] h-full border-r-2' : 'mb-[-2px] w-full border-b-2'} ${classTabSeparator}`"
48
- ></div>
49
- </Tab>
50
- </template>
@@ -1,24 +0,0 @@
1
- import { TabGroup } from '@headlessui/vue';
2
- import { mount } from '@vue/test-utils';
3
- import { describe, expect, test } from 'vitest';
4
- import { VTabPanel } from '..';
5
-
6
- describe('VTabs', () => {
7
- test('default props', () => {
8
- const wrapper = mount({
9
- template: /*html*/ `
10
- <TabGroup>
11
- <v-tab-panel data-test='tab-panel'>John Duck</v-tab-panel>
12
- </TabGroup>
13
- `,
14
- components: {
15
- TabGroup: TabGroup,
16
- 'v-tab-panel': VTabPanel,
17
- },
18
- });
19
-
20
- const tabPanel = wrapper.find("[data-test='tab-panel']");
21
- expect(tabPanel.text()).toEqual('John Duck');
22
- expect(tabPanel.attributes('tabindex')).toEqual('-1');
23
- });
24
- });
@@ -1,9 +0,0 @@
1
- <script setup lang="ts">
2
- import { TabPanel } from '@headlessui/vue';
3
- </script>
4
-
5
- <template>
6
- <TabPanel tabindex="-1" class="vuetiful-tab-panel">
7
- <slot />
8
- </TabPanel>
9
- </template>
@@ -1,92 +0,0 @@
1
- import { mount } from '@vue/test-utils';
2
- import { describe, expect, test } from 'vitest';
3
- import { VTab, VTabPanel, VTabs } from '..';
4
-
5
- describe('VTabs', () => {
6
- test('hide separator', () => {
7
- const wrapper = mount({
8
- template: /*html*/ `
9
- <v-tabs hide-separator></v-tabs>
10
- `,
11
- components: {
12
- 'v-tabs': VTabs,
13
- },
14
- });
15
-
16
- const separator = wrapper.find("[data-test='vuetiful-separator']");
17
- expect(separator.exists()).toBeFalsy();
18
- });
19
-
20
- test('default props', () => {
21
- const wrapper = mount({
22
- template: /*html*/ `
23
- <v-tabs>
24
- <template v-slot:tabs>
25
- <v-tab>John Duck</v-tab>
26
- </template>
27
- <v-tab-panel>John Duck Panel</v-tab-panel>
28
- </v-tabs>
29
- `,
30
- components: {
31
- 'v-tabs': VTabs,
32
- 'v-tab': VTab,
33
- 'v-tab-panel': VTabPanel,
34
- },
35
- });
36
-
37
- const tabList = wrapper.find("[data-test='vuetiful-tab-list']");
38
- expect(tabList.classes()).toEqual([
39
- 'vuetiful-tab-list',
40
- 'flex',
41
- '!rounded-bl-none',
42
- '!rounded-br-none',
43
- 'rounded-container-token',
44
- ]);
45
- expect(tabList.classes()).not.toContain('flex-col');
46
-
47
- const tabPanels = wrapper.find("[data-test='vuetiful-tab-panels']");
48
- expect(tabPanels.classes()).toEqual([
49
- 'vuetiful-tab-panels',
50
- 'p-4',
51
- '!rounded-tl-none',
52
- '!rounded-tr-none',
53
- 'rounded-container-token',
54
- ]);
55
- });
56
-
57
- test('vertical', () => {
58
- const wrapper = mount({
59
- template: /*html*/ `
60
- <v-tabs vertical>
61
- <template v-slot:tabs>
62
- <v-tab>Tab 1</v-tab>
63
- </template>
64
- <v-tab-panel>Panel 1</v-tab-panel>
65
- </v-tabs>
66
- `,
67
- components: {
68
- 'v-tabs': VTabs,
69
- 'v-tab': VTab,
70
- 'v-tab-panel': VTabPanel,
71
- },
72
- });
73
- const tabList = wrapper.find("[data-test='vuetiful-tab-list']");
74
- expect(tabList.classes()).toEqual([
75
- 'vuetiful-tab-list',
76
- 'flex',
77
- 'flex-col',
78
- '!rounded-br-none',
79
- '!rounded-tr-none',
80
- 'rounded-container-token',
81
- ]);
82
-
83
- const tabPanels = wrapper.find("[data-test='vuetiful-tab-panels']");
84
- expect(tabPanels.classes()).toEqual([
85
- 'vuetiful-tab-panels',
86
- 'p-4',
87
- '!rounded-bl-none',
88
- '!rounded-tl-none',
89
- 'rounded-container-token',
90
- ]);
91
- });
92
- });
@@ -1,104 +0,0 @@
1
- <script setup lang="ts">
2
- import { unstyledProp } from '@/props';
3
- import { useSettings } from '@/services';
4
- import { TabGroup, TabList, TabPanels } from '@headlessui/vue';
5
- import { provide } from 'vue';
6
-
7
- const props = defineProps({
8
- hideSeparator: {
9
- type: Boolean,
10
- default: false,
11
- },
12
-
13
- vertical: {
14
- type: Boolean,
15
- default: false,
16
- },
17
-
18
- active: {
19
- type: String,
20
- default: '',
21
- },
22
- hover: {
23
- type: String,
24
- default: 'hover:variant-ghost',
25
- },
26
-
27
- classPanels: {
28
- type: String,
29
- default: '',
30
- },
31
- classTabs: {
32
- type: String,
33
- default: '',
34
- },
35
- classTab: {
36
- type: String,
37
- default: '',
38
- },
39
- classSeparator: {
40
- type: String,
41
- default: 'border-surface-400-500-token',
42
- },
43
- classTabSeparator: {
44
- type: String,
45
- default: 'border-surface-900-50-token',
46
- },
47
-
48
- defaultIndex: {
49
- type: Number,
50
- default: 0,
51
- },
52
-
53
- unstyled: unstyledProp,
54
- });
55
-
56
- provide('active', props.active);
57
- provide('hover', props.hover);
58
- provide('vertical', props.vertical);
59
- provide('classTab', props.classTab);
60
- provide('hideSeparator', props.hideSeparator);
61
- provide('classTabSeparator', props.classTabSeparator);
62
-
63
- const { settings } = useSettings();
64
- const isUnstyled = settings.global.unstyled || settings.components.tabs.unstyled || props.unstyled;
65
- </script>
66
-
67
- <template>
68
- <TabGroup
69
- as="div"
70
- :vertical="vertical"
71
- :defaultIndex="defaultIndex"
72
- class="vuetiful-tab-group"
73
- :class="`${vertical ? 'flex' : ''}`"
74
- >
75
- <TabList
76
- data-test="vuetiful-tab-list"
77
- :class="`vuetiful-tab-list flex ${vertical ? 'flex-col' : ''}
78
- ${
79
- isUnstyled
80
- ? ''
81
- : `${
82
- vertical ? '!rounded-br-none !rounded-tr-none' : '!rounded-bl-none !rounded-br-none'
83
- } rounded-container-token `
84
- }
85
- ${classTabs}`"
86
- >
87
- <slot name="tabs" />
88
- </TabList>
89
- <div data-test="vuetiful-tab-separator" v-if="!hideSeparator" :class="`border ${classSeparator}`"></div>
90
- <TabPanels
91
- data-test="vuetiful-tab-panels"
92
- :class="`vuetiful-tab-panels
93
- ${
94
- isUnstyled
95
- ? ''
96
- : `p-4 ${
97
- vertical ? '!rounded-bl-none !rounded-tl-none' : '!rounded-tl-none !rounded-tr-none'
98
- } rounded-container-token`
99
- } ${classPanels}`"
100
- >
101
- <slot />
102
- </TabPanels>
103
- </TabGroup>
104
- </template>
@@ -1,51 +0,0 @@
1
- import VDrawer from './VDrawer.vue';
2
- import VPreview from './VPreview.vue';
3
- import VRail from './VRail/VRail.vue';
4
- import VRailTile from './VRail/VRailTile.vue';
5
- import VShell from './VShell.vue';
6
-
7
- import VListbox from './VListbox/VListbox.vue';
8
- import VListboxButton from './VListbox/VListboxButton.vue';
9
- import VListboxItem from './VListbox/VListboxItem.vue';
10
- import VListboxItems from './VListbox/VListboxItems.vue';
11
- import VListboxLabel from './VListbox/VListboxLabel.vue';
12
-
13
- import VTab from './VTabs/VTab.vue';
14
- import VTabPanel from './VTabs/VTabPanel.vue';
15
- import VTabs from './VTabs/VTabs.vue';
16
-
17
- import VAccordion from './VAccordion/VAccordion.vue';
18
- import VAccordionItem from './VAccordion/VAccordionItem.vue';
19
-
20
- import VAlert from './VAlert.vue';
21
-
22
- import VCard from './VCard/VCard.vue';
23
- import VCardBody from './VCard/VCardBody.vue';
24
- import VCardFooter from './VCard/VCardFooter.vue';
25
- import VCardHeader from './VCard/VCardHeader.vue';
26
-
27
- import VCodeBlock from './VCodeBlock.vue';
28
-
29
- export {
30
- VAccordion,
31
- VAccordionItem,
32
- VAlert,
33
- VCard,
34
- VCardBody,
35
- VCardFooter,
36
- VCardHeader,
37
- VCodeBlock,
38
- VDrawer,
39
- VListbox,
40
- VListboxButton,
41
- VListboxItem,
42
- VListboxItems,
43
- VListboxLabel,
44
- VPreview,
45
- VRail,
46
- VRailTile,
47
- VShell,
48
- VTab,
49
- VTabPanel,
50
- VTabs,
51
- };
@@ -1,44 +0,0 @@
1
- import { mount } from '@vue/test-utils';
2
- import { describe, test, vi, expect } from 'vitest'
3
- import { vClickOutsideGroup } from '.';
4
-
5
- interface HTMLElementWithClickOutsideHandler extends HTMLElement {
6
- _clickOutsideHandler?: (event: MouseEvent) => void;
7
- }
8
-
9
- describe('vClickOutsideGroup Directive', () => {
10
- test("should call the callback when clicking outside the element", async () => {
11
- const callback = vi.fn();
12
-
13
- const innerElement = document.createElement('div');
14
- const outerElement = document.createElement('div');
15
- outerElement.id = 'outer';
16
- document.body.appendChild(outerElement);
17
- document.body.appendChild(innerElement);
18
-
19
- const directiveBinding = { value: {
20
- elementsInGroup: ['#outer'],
21
- callback
22
- } } as any;
23
- vClickOutsideGroup.mounted(innerElement, directiveBinding);
24
-
25
- innerElement.click();
26
- expect(callback).not.toHaveBeenCalled();
27
- outerElement.click();
28
- expect(callback).not.toHaveBeenCalled();
29
- document.body.click();
30
- expect(callback).toHaveBeenCalled();
31
- })
32
-
33
- test("should remove _clickOutsideHandler when unmounted", async () => {
34
- const callback = vi.fn();
35
- const directiveBinding = { value: callback } as any;
36
- const innerElement = document.createElement('div') as HTMLElementWithClickOutsideHandler;
37
- document.body.appendChild(innerElement);
38
- vClickOutsideGroup.mounted(innerElement, directiveBinding);
39
-
40
- expect(innerElement._clickOutsideHandler).toBeDefined();
41
- vClickOutsideGroup.beforeUnmount(innerElement);
42
- expect(innerElement._clickOutsideHandler).toBeUndefined();
43
- })
44
- });
@@ -1,39 +0,0 @@
1
- import { DirectiveBinding } from 'vue';
2
-
3
- interface HTMLElementWithClickOutsideHandler extends HTMLElement {
4
- _clickOutsideHandler?: (event: MouseEvent) => void;
5
- }
6
-
7
- const clickOutsideGroup = {
8
- mounted(el: HTMLElementWithClickOutsideHandler, binding: DirectiveBinding) {
9
- const { elementsInGroup = [], callback } = binding.value;
10
-
11
- const elementsToIgnore = elementsInGroup.map((selector: string) => {
12
- const allElements = document.querySelectorAll(selector);
13
- const elements = Array.from(allElements) as HTMLElement[];
14
- return elements;
15
- });
16
-
17
- const allElementsToIgnore = elementsToIgnore.flat();
18
-
19
- const clickOutsideHandler = (event: MouseEvent) => {
20
- const clickedIgnoreElement = allElementsToIgnore.some((el: HTMLElement) => el?.contains(event.target as Node));
21
- if (!el.contains(event.target as Node) && !clickedIgnoreElement) {
22
- callback();
23
- }
24
- };
25
-
26
- document.addEventListener('click', clickOutsideHandler);
27
-
28
- el._clickOutsideHandler = clickOutsideHandler;
29
- },
30
-
31
- beforeUnmount(el: HTMLElementWithClickOutsideHandler) {
32
- if (el._clickOutsideHandler) {
33
- document.removeEventListener('click', el._clickOutsideHandler);
34
- delete el._clickOutsideHandler;
35
- }
36
- },
37
- };
38
-
39
- export default clickOutsideGroup;
@@ -1,38 +0,0 @@
1
- import { mount } from '@vue/test-utils';
2
- import { describe, test, vi, expect } from 'vitest'
3
- import { vClickOutside } from '.';
4
-
5
- interface HTMLElementWithClickOutsideHandler extends HTMLElement {
6
- _clickOutsideHandler?: (event: MouseEvent) => void;
7
- }
8
-
9
- describe('vClickOutside Directive', () => {
10
- test("should call the callback when clicking outside the element", async () => {
11
- const callback = vi.fn();
12
-
13
- const innerElement = document.createElement('div');
14
- document.body.appendChild(innerElement);
15
-
16
- const directiveBinding = { value: callback } as any;
17
- vClickOutside.mounted(innerElement, directiveBinding);
18
-
19
- innerElement.click();
20
- expect(callback).not.toHaveBeenCalled();
21
- document.body.click();
22
- expect(callback).toHaveBeenCalled();
23
- })
24
-
25
- test("should remove _clickOutsideHandler when unmounted", async () => {
26
- const callback = vi.fn();
27
-
28
- const innerElement = document.createElement('div') as HTMLElementWithClickOutsideHandler;
29
- document.body.appendChild(innerElement);
30
-
31
- const directiveBinding = { value: callback } as any;
32
- vClickOutside.mounted(innerElement, directiveBinding);
33
-
34
- expect(innerElement._clickOutsideHandler).toBeDefined();
35
- vClickOutside.beforeUnmount(innerElement);
36
- expect(innerElement._clickOutsideHandler).toBeUndefined();
37
- })
38
- });
@@ -1,28 +0,0 @@
1
- import { DirectiveBinding } from 'vue';
2
-
3
- interface HTMLElementWithClickOutsideHandler extends HTMLElement {
4
- _clickOutsideHandler?: (event: MouseEvent) => void;
5
- }
6
-
7
- const clickOutside = {
8
- mounted(el: HTMLElementWithClickOutsideHandler, binding: DirectiveBinding) {
9
- const clickOutsideHandler = (event: MouseEvent) => {
10
- if (!el.contains(event.target as Node)) {
11
- binding.value();
12
- }
13
- };
14
-
15
- document.addEventListener('click', clickOutsideHandler);
16
-
17
- el._clickOutsideHandler = clickOutsideHandler;
18
- },
19
-
20
- beforeUnmount(el: HTMLElementWithClickOutsideHandler) {
21
- if (el._clickOutsideHandler) {
22
- document.removeEventListener('click', el._clickOutsideHandler);
23
- delete el._clickOutsideHandler;
24
- }
25
- },
26
- };
27
-
28
- export default clickOutside;
@@ -1,26 +0,0 @@
1
- import { afterEach, describe, expect, vi, test } from 'vitest';
2
- import { DirectiveBinding } from 'vue';
3
- import { vClipboard } from '.';
4
-
5
- const navigatorMock = {
6
- clipboard: {
7
- writeText: vi.fn(),
8
- } as any,
9
- } as any;
10
-
11
- describe('clipboard', () => {
12
- afterEach(() => {
13
- vi.resetAllMocks();
14
- });
15
- describe('given the v-clipboard directive is used', () => {
16
- test('should copy text to the clipboard on click', () => {
17
- window.navigator = navigatorMock;
18
-
19
- const el = document.createElement('div');
20
- vClipboard(el, { value: 'John Duck' } as DirectiveBinding);
21
- el.click();
22
-
23
- expect(navigator.clipboard.writeText).toHaveBeenCalledWith('John Duck');
24
- });
25
- });
26
- });
@@ -1,9 +0,0 @@
1
- import { DirectiveBinding } from 'vue';
2
-
3
- const clipboard = (el: HTMLElement, binding: DirectiveBinding) => {
4
- el.addEventListener('click', () => {
5
- navigator.clipboard.writeText(binding.value);
6
- });
7
- };
8
-
9
- export default clipboard;
@@ -1,5 +0,0 @@
1
- import vClickOutside from './click-outside';
2
- import vClickOutsideGroup from './click-outside-group';
3
- import vClipboard from './clipboard';
4
-
5
- export { vClickOutside, vClickOutsideGroup, vClipboard };
package/src/env.d.ts DELETED
@@ -1,8 +0,0 @@
1
- /// <reference types="vite/client" />
2
-
3
- declare module '*.vue' {
4
- import { DefineComponent } from 'vue';
5
- // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types
6
- const component: DefineComponent<{}, {}, any>;
7
- export default component;
8
- }
package/src/index.ts DELETED
@@ -1,21 +0,0 @@
1
- import * as components from './components';
2
-
3
- function install(app: any) {
4
- for (const key in components) {
5
- // @ts-expect-error
6
- app.component(key, components[key]);
7
- }
8
- }
9
-
10
- import './assets/main.css';
11
- import './styles/tailwind.css';
12
-
13
- export default { install };
14
-
15
- export * from './components';
16
- export * from './utils';
17
- export * from './directives';
18
- export * from './services';
19
-
20
- // This type alias is to identify CSS classes within component props, which enables Tailwind IntelliSense
21
- export type CssClasses = string;
@@ -1 +0,0 @@
1
- export * from './props';
@@ -1,62 +0,0 @@
1
- import { Size, Variant } from '@/types';
2
- import { PropType } from 'vue';
3
-
4
- const sizeProp = {
5
- type: String as PropType<'xs' | 'sm' | 'md' | 'lg' | 'xl'>,
6
- default: Size.MD,
7
- };
8
-
9
- const unstyledProp = {
10
- type: Boolean,
11
- default: false,
12
- };
13
-
14
- const variantProp = {
15
- // explicit string union because TypeScript type won't throw error if invalid value is passed
16
- type: String as PropType<
17
- | ''
18
- | 'filled'
19
- | 'filled-primary'
20
- | 'filled-secondary'
21
- | 'filled-tertiary'
22
- | 'filled-success'
23
- | 'filled-warning'
24
- | 'filled-error'
25
- | 'filled-surface'
26
- | 'ringed'
27
- | 'ringed-primary'
28
- | 'ringed-secondary'
29
- | 'ringed-tertiary'
30
- | 'ringed-success'
31
- | 'ringed-warning'
32
- | 'ringed-error'
33
- | 'ringed-surface'
34
- | 'ghost'
35
- | 'ghost-primary'
36
- | 'ghost-secondary'
37
- | 'ghost-tertiary'
38
- | 'ghost-success'
39
- | 'ghost-warning'
40
- | 'ghost-error'
41
- | 'ghost-surface'
42
- | 'soft'
43
- | 'soft-primary'
44
- | 'soft-secondary'
45
- | 'soft-tertiary'
46
- | 'soft-success'
47
- | 'soft-warning'
48
- | 'soft-error'
49
- | 'soft-surface'
50
- | 'glass'
51
- | 'glass-primary'
52
- | 'glass-secondary'
53
- | 'glass-tertiary'
54
- | 'glass-success'
55
- | 'glass-warning'
56
- | 'glass-error'
57
- | 'glass-surface'
58
- >,
59
- default: Variant.Filled,
60
- };
61
-
62
- export { sizeProp, unstyledProp, variantProp };