@indielayer/ui 1.15.1 → 1.15.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1 -1
  3. package/docs/components/common/CodeSnippet.vue +4 -3
  4. package/lib/components/index.js +117 -116
  5. package/lib/components/popover/Popover.vue2.js +2 -3
  6. package/lib/components/popover/Popover.vue3.js +3 -2
  7. package/lib/components/select/Select.vue.js +1 -1
  8. package/lib/components/tooltip/ToggleTip.vue.js +7 -7
  9. package/lib/components/tooltip/Tooltip.vue.d.ts +29 -9
  10. package/lib/components/tooltip/Tooltip.vue.js +106 -29
  11. package/lib/components/tooltip/index.d.ts +1 -1
  12. package/lib/components/tooltip/theme/Tooltip.base.theme.d.ts +3 -0
  13. package/lib/components/tooltip/theme/Tooltip.base.theme.js +8 -0
  14. package/lib/components/tooltip/theme/Tooltip.carbon.theme.d.ts +3 -0
  15. package/lib/components/tooltip/theme/Tooltip.carbon.theme.js +5 -0
  16. package/lib/index.js +1 -1
  17. package/lib/index.umd.js +4 -4
  18. package/lib/theme.d.ts +2 -1
  19. package/lib/themes/base/components.d.ts +1 -0
  20. package/lib/themes/base/components.js +12 -10
  21. package/lib/themes/carbon/components.d.ts +1 -0
  22. package/lib/themes/carbon/components.js +12 -10
  23. package/lib/version.d.ts +1 -1
  24. package/lib/version.js +1 -1
  25. package/package.json +2 -2
  26. package/src/components/tooltip/ToggleTip.vue +1 -1
  27. package/src/components/tooltip/Tooltip.vue +191 -15
  28. package/src/components/tooltip/index.ts +1 -1
  29. package/src/components/tooltip/theme/Tooltip.base.theme.ts +9 -0
  30. package/src/components/tooltip/theme/Tooltip.carbon.theme.ts +7 -0
  31. package/src/theme.ts +2 -0
  32. package/src/themes/base/components.ts +1 -0
  33. package/src/themes/carbon/components.ts +1 -0
  34. package/src/version.ts +1 -1
package/lib/theme.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { ColorLibrary } from './composables/useColors';
2
- import type { AccordionTheme, AccordionItemTheme, AlertTheme, AvatarTheme, BadgeTheme, BreadcrumbsTheme, ButtonTheme, ButtonGroupTheme, CardTheme, CarouselTheme, CarouselSlideTheme, CheckboxTheme, ContainerTheme, DatepickerTheme, DividerTheme, DrawerTheme, FormTheme, FormGroupTheme, IconTheme, ImageTheme, InputTheme, InputFooterTheme, LabelTheme, LinkTheme, LoaderTheme, MenuTheme, MenuItemTheme, ModalTheme, NotificationsTheme, PaginationTheme, PaginationItemTheme, PopoverTheme, PopoverContainerTheme, ProgressTheme, QrCodeTheme, RadioTheme, ScrollTheme, SelectTheme, SkeletonTheme, SliderTheme, StepperTheme, TabTheme, TabGroupTheme, TableTheme, TableCellTheme, TableHeadTheme, TableHeaderTheme, TableRowTheme, TagTheme, TextareaTheme, ToggleTheme, UploadTheme } from './components';
2
+ import type { AccordionTheme, AccordionItemTheme, AlertTheme, AvatarTheme, BadgeTheme, BreadcrumbsTheme, ButtonTheme, ButtonGroupTheme, CardTheme, CarouselTheme, CarouselSlideTheme, CheckboxTheme, ContainerTheme, DatepickerTheme, DividerTheme, DrawerTheme, FormTheme, FormGroupTheme, IconTheme, ImageTheme, InputTheme, InputFooterTheme, LabelTheme, LinkTheme, LoaderTheme, MenuTheme, MenuItemTheme, ModalTheme, NotificationsTheme, PaginationTheme, PaginationItemTheme, PopoverTheme, PopoverContainerTheme, ProgressTheme, QrCodeTheme, RadioTheme, ScrollTheme, SelectTheme, SkeletonTheme, SliderTheme, StepperTheme, TabTheme, TabGroupTheme, TableTheme, TableCellTheme, TableHeadTheme, TableHeaderTheme, TableRowTheme, TagTheme, TextareaTheme, ToggleTheme, TooltipTheme, UploadTheme } from './components';
3
3
  export type ComponentThemes = {
4
4
  Accordion: AccordionTheme;
5
5
  AccordionItem: AccordionItemTheme;
@@ -52,6 +52,7 @@ export type ComponentThemes = {
52
52
  Tag: TagTheme;
53
53
  Textarea: TextareaTheme;
54
54
  Toggle: ToggleTheme;
55
+ Tooltip: TooltipTheme;
55
56
  Upload: UploadTheme;
56
57
  };
57
58
  export type UITheme = {
@@ -49,4 +49,5 @@ export { default as TableRow } from '../../components/table/theme/TableRow.base.
49
49
  export { default as Tag } from '../../components/tag/theme/Tag.base.theme';
50
50
  export { default as Textarea } from '../../components/textarea/theme/Textarea.base.theme';
51
51
  export { default as Toggle } from '../../components/toggle/theme/Toggle.base.theme';
52
+ export { default as Tooltip } from '../../components/tooltip/theme/Tooltip.base.theme';
52
53
  export { default as Upload } from '../../components/upload/theme/Upload.base.theme';
@@ -1,11 +1,11 @@
1
1
  import { default as a } from "../../components/accordion/theme/Accordion.base.theme.js";
2
2
  import { default as t } from "../../components/accordion/theme/AccordionItem.base.theme.js";
3
3
  import { default as l } from "../../components/alert/theme/Alert.base.theme.js";
4
- import { default as u } from "../../components/avatar/theme/Avatar.base.theme.js";
4
+ import { default as p } from "../../components/avatar/theme/Avatar.base.theme.js";
5
5
  import { default as m } from "../../components/badge/theme/Badge.base.theme.js";
6
6
  import { default as x } from "../../components/breadcrumbs/theme/Breadcrumbs.base.theme.js";
7
7
  import { default as i } from "../../components/button/theme/Button.base.theme.js";
8
- import { default as b } from "../../components/button/theme/ButtonGroup.base.theme.js";
8
+ import { default as T } from "../../components/button/theme/ButtonGroup.base.theme.js";
9
9
  import { default as g } from "../../components/card/theme/Card.base.theme.js";
10
10
  import { default as I } from "../../components/carousel/theme/Carousel.base.theme.js";
11
11
  import { default as P } from "../../components/carousel/theme/CarouselSlide.base.theme.js";
@@ -28,11 +28,11 @@ import { default as ee } from "../../components/menu/theme/MenuItem.base.theme.j
28
28
  import { default as ae } from "../../components/modal/theme/Modal.base.theme.js";
29
29
  import { default as te } from "../../components/notifications/theme/Notifications.base.theme.js";
30
30
  import { default as le } from "../../components/pagination/theme/Pagination.base.theme.js";
31
- import { default as ue } from "../../components/pagination/theme/PaginationItem.base.theme.js";
31
+ import { default as pe } from "../../components/pagination/theme/PaginationItem.base.theme.js";
32
32
  import { default as me } from "../../components/popover/theme/Popover.base.theme.js";
33
33
  import { default as xe } from "../../components/popover/theme/PopoverContainer.base.theme.js";
34
34
  import { default as ie } from "../../components/progress/theme/Progress.base.theme.js";
35
- import { default as be } from "../../components/qrCode/theme/QrCode.base.theme.js";
35
+ import { default as Te } from "../../components/qrCode/theme/QrCode.base.theme.js";
36
36
  import { default as ge } from "../../components/radio/theme/Radio.base.theme.js";
37
37
  import { default as Ie } from "../../components/scroll/theme/Scroll.base.theme.js";
38
38
  import { default as Pe } from "../../components/select/theme/Select.base.theme.js";
@@ -49,16 +49,17 @@ import { default as ze } from "../../components/table/theme/TableRow.base.theme.
49
49
  import { default as Je } from "../../components/tag/theme/Tag.base.theme.js";
50
50
  import { default as Oe } from "../../components/textarea/theme/Textarea.base.theme.js";
51
51
  import { default as We } from "../../components/toggle/theme/Toggle.base.theme.js";
52
- import { default as Ye } from "../../components/upload/theme/Upload.base.theme.js";
52
+ import { default as Ye } from "../../components/tooltip/theme/Tooltip.base.theme.js";
53
+ import { default as _e } from "../../components/upload/theme/Upload.base.theme.js";
53
54
  export {
54
55
  a as Accordion,
55
56
  t as AccordionItem,
56
57
  l as Alert,
57
- u as Avatar,
58
+ p as Avatar,
58
59
  m as Badge,
59
60
  x as Breadcrumbs,
60
61
  i as Button,
61
- b as ButtonGroup,
62
+ T as ButtonGroup,
62
63
  g as Card,
63
64
  I as Carousel,
64
65
  P as CarouselSlide,
@@ -81,11 +82,11 @@ export {
81
82
  ae as Modal,
82
83
  te as Notifications,
83
84
  le as Pagination,
84
- ue as PaginationItem,
85
+ pe as PaginationItem,
85
86
  me as Popover,
86
87
  xe as PopoverContainer,
87
88
  ie as Progress,
88
- be as QrCode,
89
+ Te as QrCode,
89
90
  ge as Radio,
90
91
  Ie as Scroll,
91
92
  Pe as Select,
@@ -102,5 +103,6 @@ export {
102
103
  Je as Tag,
103
104
  Oe as Textarea,
104
105
  We as Toggle,
105
- Ye as Upload
106
+ Ye as Tooltip,
107
+ _e as Upload
106
108
  };
@@ -49,4 +49,5 @@ export { default as TableRow } from '../../components/table/theme/TableRow.carbo
49
49
  export { default as Tag } from '../../components/tag/theme/Tag.carbon.theme';
50
50
  export { default as Textarea } from '../../components/textarea/theme/Textarea.carbon.theme';
51
51
  export { default as Toggle } from '../../components/toggle/theme/Toggle.carbon.theme';
52
+ export { default as Tooltip } from '../../components/tooltip/theme/Tooltip.carbon.theme';
52
53
  export { default as Upload } from '../../components/upload/theme/Upload.carbon.theme';
@@ -1,11 +1,11 @@
1
1
  import { default as a } from "../../components/accordion/theme/Accordion.carbon.theme.js";
2
2
  import { default as t } from "../../components/accordion/theme/AccordionItem.carbon.theme.js";
3
3
  import { default as l } from "../../components/alert/theme/Alert.carbon.theme.js";
4
- import { default as u } from "../../components/avatar/theme/Avatar.carbon.theme.js";
4
+ import { default as p } from "../../components/avatar/theme/Avatar.carbon.theme.js";
5
5
  import { default as m } from "../../components/badge/theme/Badge.carbon.theme.js";
6
6
  import { default as x } from "../../components/breadcrumbs/theme/Breadcrumbs.carbon.theme.js";
7
7
  import { default as i } from "../../components/button/theme/Button.carbon.theme.js";
8
- import { default as b } from "../../components/button/theme/ButtonGroup.carbon.theme.js";
8
+ import { default as T } from "../../components/button/theme/ButtonGroup.carbon.theme.js";
9
9
  import { default as g } from "../../components/card/theme/Card.carbon.theme.js";
10
10
  import { default as I } from "../../components/carousel/theme/Carousel.carbon.theme.js";
11
11
  import { default as P } from "../../components/carousel/theme/CarouselSlide.carbon.theme.js";
@@ -28,11 +28,11 @@ import { default as ee } from "../../components/menu/theme/MenuItem.carbon.theme
28
28
  import { default as ae } from "../../components/modal/theme/Modal.carbon.theme.js";
29
29
  import { default as te } from "../../components/notifications/theme/Notifications.carbon.theme.js";
30
30
  import { default as le } from "../../components/pagination/theme/Pagination.carbon.theme.js";
31
- import { default as ue } from "../../components/pagination/theme/PaginationItem.carbon.theme.js";
31
+ import { default as pe } from "../../components/pagination/theme/PaginationItem.carbon.theme.js";
32
32
  import { default as me } from "../../components/popover/theme/Popover.carbon.theme.js";
33
33
  import { default as xe } from "../../components/popover/theme/PopoverContainer.carbon.theme.js";
34
34
  import { default as ie } from "../../components/progress/theme/Progress.carbon.theme.js";
35
- import { default as be } from "../../components/qrCode/theme/QrCode.carbon.theme.js";
35
+ import { default as Te } from "../../components/qrCode/theme/QrCode.carbon.theme.js";
36
36
  import { default as ge } from "../../components/radio/theme/Radio.carbon.theme.js";
37
37
  import { default as Ie } from "../../components/scroll/theme/Scroll.carbon.theme.js";
38
38
  import { default as Pe } from "../../components/select/theme/Select.carbon.theme.js";
@@ -49,16 +49,17 @@ import { default as ze } from "../../components/table/theme/TableRow.carbon.them
49
49
  import { default as Je } from "../../components/tag/theme/Tag.carbon.theme.js";
50
50
  import { default as Oe } from "../../components/textarea/theme/Textarea.carbon.theme.js";
51
51
  import { default as We } from "../../components/toggle/theme/Toggle.carbon.theme.js";
52
- import { default as Ye } from "../../components/upload/theme/Upload.carbon.theme.js";
52
+ import { default as Ye } from "../../components/tooltip/theme/Tooltip.carbon.theme.js";
53
+ import { default as _e } from "../../components/upload/theme/Upload.carbon.theme.js";
53
54
  export {
54
55
  a as Accordion,
55
56
  t as AccordionItem,
56
57
  l as Alert,
57
- u as Avatar,
58
+ p as Avatar,
58
59
  m as Badge,
59
60
  x as Breadcrumbs,
60
61
  i as Button,
61
- b as ButtonGroup,
62
+ T as ButtonGroup,
62
63
  g as Card,
63
64
  I as Carousel,
64
65
  P as CarouselSlide,
@@ -81,11 +82,11 @@ export {
81
82
  ae as Modal,
82
83
  te as Notifications,
83
84
  le as Pagination,
84
- ue as PaginationItem,
85
+ pe as PaginationItem,
85
86
  me as Popover,
86
87
  xe as PopoverContainer,
87
88
  ie as Progress,
88
- be as QrCode,
89
+ Te as QrCode,
89
90
  ge as Radio,
90
91
  Ie as Scroll,
91
92
  Pe as Select,
@@ -102,5 +103,6 @@ export {
102
103
  Je as Tag,
103
104
  Oe as Textarea,
104
105
  We as Toggle,
105
- Ye as Upload
106
+ Ye as Tooltip,
107
+ _e as Upload
106
108
  };
package/lib/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- declare const _default: "1.15.1";
1
+ declare const _default: "1.15.3";
2
2
  export default _default;
package/lib/version.js CHANGED
@@ -1,4 +1,4 @@
1
- const e = "1.15.1";
1
+ const e = "1.15.3";
2
2
  export {
3
3
  e as default
4
4
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@indielayer/ui",
3
- "version": "1.15.1",
3
+ "version": "1.15.3",
4
4
  "description": "Indielayer UI Components with Tailwind CSS build for Vue 3",
5
5
  "author": {
6
6
  "name": "João Teixeira",
@@ -68,7 +68,7 @@
68
68
  "jsdom": "^22.1.0",
69
69
  "postcss": "^8.4.4",
70
70
  "rollup-plugin-visualizer": "^5.9.2",
71
- "shiki": "1.0.0-beta.1",
71
+ "shiki": "^3.15.0",
72
72
  "stylelint": "^14.16.1",
73
73
  "tailwindcss": "^3.3.2",
74
74
  "typescript": "^5.2.2",
@@ -22,7 +22,7 @@ const computedIcon = computed(() => props.icon || infoIcon)
22
22
  </script>
23
23
 
24
24
  <template>
25
- <x-tooltip placement="auto">
25
+ <x-tooltip position="right">
26
26
  <x-icon :icon="computedIcon" class="text-secondary-500 dark:text-secondary-300 cursor-pointer" />
27
27
  <template #tooltip>
28
28
  <div v-html="content"></div>
@@ -1,37 +1,213 @@
1
1
  <script lang="ts">
2
2
  const tooltipProps = {
3
+ tag: {
4
+ type: String,
5
+ default: 'div',
6
+ },
3
7
  tooltip: String,
4
- placement: {
5
- type: String as PropType<PopoverPlacement>,
8
+ disabled: Boolean,
9
+ position: {
10
+ type: String as PropType<TooltipPosition>,
6
11
  default: 'bottom',
7
12
  },
8
13
  }
9
14
 
10
- export type PopoverPlacement = Placement
15
+ export type TooltipPosition = 'top' | 'bottom' | 'left' | 'right'
11
16
 
12
17
  export type TooltipProps = ExtractPublicPropTypes<typeof tooltipProps>
13
18
 
19
+ type InternalClasses = 'tooltip'
20
+ export interface TooltipTheme extends ThemeComponent<TooltipProps, InternalClasses> {}
21
+
14
22
  export default { name: 'XTooltip' }
15
23
  </script>
16
24
 
17
25
  <script setup lang="ts">
26
+ import { computed, ref, useSlots } from 'vue'
18
27
  import type { ExtractPublicPropTypes, PropType } from 'vue'
19
- import XPopover from '../../components/popover/Popover.vue'
20
- import XPopoverContainer from '../../components/popover/PopoverContainer.vue'
21
- import { type Placement } from 'floating-vue'
28
+ import { useTheme, type ThemeComponent } from '../../composables/useTheme'
29
+
30
+ const props = defineProps(tooltipProps)
31
+
32
+ const triggerRef = ref<HTMLElement | null>(null)
33
+ const tooltipRef = ref<HTMLElement | null>(null)
34
+ const isVisible = ref(false)
35
+ const tooltipStyle = ref<Record<string, string>>({})
36
+ const actualPosition = ref<TooltipPosition>(props.position)
37
+
38
+ const slots = useSlots()
39
+ const hasTooltip = computed(() => props.tooltip || slots.tooltip)
40
+
41
+ const computedDisabled = computed(() => props.disabled || !hasTooltip.value)
42
+
43
+ const arrowPositionClasses = computed(() => {
44
+ if (computedDisabled.value) return ''
45
+
46
+ const placements = {
47
+ top: '-bottom-2.5 left-1/2 -translate-x-1/2 w-3.5',
48
+ bottom: '-top-2.5 left-1/2 -translate-x-1/2 w-3.5',
49
+ left: '-right-2.5 top-1/2 -translate-y-1/2 h-3.5',
50
+ right: '-left-2.5 top-1/2 -translate-y-1/2 h-3.5',
51
+ }
52
+
53
+ return placements[actualPosition.value]
54
+ })
55
+
56
+ const arrowRotationClasses = computed(() => {
57
+ if (computedDisabled.value) return ''
58
+
59
+ const placements = {
60
+ top: '-rotate-45 origin-top-left',
61
+ bottom: 'rotate-45 origin-bottom-left',
62
+ left: 'rotate-45 origin-top-left',
63
+ right: '-rotate-45 origin-top-right',
64
+ }
65
+
66
+ return placements[actualPosition.value]
67
+ })
68
+
69
+ const animationOriginClasses = computed(() => {
70
+ if (computedDisabled.value) return ''
71
+
72
+ const origins = {
73
+ top: 'origin-bottom',
74
+ bottom: 'origin-top',
75
+ left: 'origin-right',
76
+ right: 'origin-left',
77
+ }
22
78
 
23
- defineProps(tooltipProps)
79
+ return origins[actualPosition.value]
80
+ })
81
+
82
+ const calculatePosition = () => {
83
+ if (!triggerRef.value || !tooltipRef.value) return
84
+
85
+ const triggerRect = triggerRef.value.getBoundingClientRect()
86
+ const tooltipRect = tooltipRef.value.getBoundingClientRect()
87
+ const spacing = 8 // 0.5rem = 8px
88
+ const viewportWidth = window.innerWidth
89
+ const viewportHeight = window.innerHeight
90
+
91
+ let position = props.position
92
+ let top = 0
93
+ let left = 0
94
+
95
+ // Calculate initial position based on placement
96
+ switch (position) {
97
+ case 'top':
98
+ top = triggerRect.top - tooltipRect.height - spacing
99
+ left = triggerRect.left + triggerRect.width / 2 - tooltipRect.width / 2
100
+ // Check if tooltip goes off-screen top
101
+ if (top < 0) {
102
+ position = 'bottom'
103
+ top = triggerRect.bottom + spacing
104
+ }
105
+ break
106
+ case 'bottom':
107
+ top = triggerRect.bottom + spacing
108
+ left = triggerRect.left + triggerRect.width / 2 - tooltipRect.width / 2
109
+ // Check if tooltip goes off-screen bottom
110
+ if (top + tooltipRect.height > viewportHeight) {
111
+ position = 'top'
112
+ top = triggerRect.top - tooltipRect.height - spacing
113
+ }
114
+ break
115
+ case 'left':
116
+ top = triggerRect.top + triggerRect.height / 2 - tooltipRect.height / 2
117
+ left = triggerRect.left - tooltipRect.width - spacing
118
+ // Check if tooltip goes off-screen left
119
+ if (left < 0) {
120
+ position = 'right'
121
+ left = triggerRect.right + spacing
122
+ }
123
+ break
124
+ case 'right':
125
+ top = triggerRect.top + triggerRect.height / 2 - tooltipRect.height / 2
126
+ left = triggerRect.right + spacing
127
+ // Check if tooltip goes off-screen right
128
+ if (left + tooltipRect.width > viewportWidth) {
129
+ position = 'left'
130
+ left = triggerRect.left - tooltipRect.width - spacing
131
+ }
132
+ break
133
+ }
134
+
135
+ // Adjust horizontal position to stay within viewport
136
+ if (position === 'top' || position === 'bottom') {
137
+ if (left < 0) left = spacing
138
+ if (left + tooltipRect.width > viewportWidth) {
139
+ left = viewportWidth - tooltipRect.width - spacing
140
+ }
141
+ }
142
+
143
+ // Adjust vertical position to stay within viewport
144
+ if (position === 'left' || position === 'right') {
145
+ if (top < 0) top = spacing
146
+ if (top + tooltipRect.height > viewportHeight) {
147
+ top = viewportHeight - tooltipRect.height - spacing
148
+ }
149
+ }
150
+
151
+ actualPosition.value = position
152
+ tooltipStyle.value = {
153
+ top: `${top}px`,
154
+ left: `${left}px`,
155
+ }
156
+ }
157
+
158
+ const showTooltip = () => {
159
+ if (computedDisabled.value) return
160
+ isVisible.value = true
161
+ setTimeout(calculatePosition, 0)
162
+ }
163
+
164
+ const hideTooltip = () => {
165
+ if (computedDisabled.value) return
166
+ isVisible.value = false
167
+ }
168
+
169
+ const { classes, className } = useTheme('Tooltip', {}, props)
24
170
  </script>
25
171
 
26
172
  <template>
27
- <x-popover :triggers="['hover', 'click']" class="inline-block" :hide-arrow="false" :placement="placement">
173
+ <component
174
+ :is="tag"
175
+ ref="triggerRef"
176
+ :class="[
177
+ className,
178
+ {
179
+ 'inline-block': !$attrs.class,
180
+ }]"
181
+ @mouseenter="showTooltip"
182
+ @mouseleave="hideTooltip"
183
+ >
28
184
  <slot></slot>
29
- <template #content>
30
- <div class="dark">
31
- <x-popover-container class="p-2 text-white text-xs w-max max-w-xs">
185
+
186
+ <teleport v-if="!computedDisabled" to="body">
187
+ <transition
188
+ enter-active-class="transition-opacity duration-150 ease-out"
189
+ leave-active-class="transition-opacity duration-150 ease-in"
190
+ enter-from-class="opacity-0"
191
+ enter-to-class="opacity-100"
192
+ leave-from-class="opacity-100"
193
+ leave-to-class="opacity-0"
194
+ >
195
+ <div
196
+ v-if="isVisible"
197
+ ref="tooltipRef"
198
+ :style="tooltipStyle"
199
+ class="fixed z-[10001] pointer-events-none"
200
+ :class="[
201
+ classes.tooltip,
202
+ animationOriginClasses
203
+ ]"
204
+ >
32
205
  <slot name="tooltip">{{ tooltip }}</slot>
33
- </x-popover-container>
34
- </div>
35
- </template>
36
- </x-popover>
206
+ <div :class="['absolute overflow-hidden shadow-lg z-10', arrowPositionClasses]">
207
+ <div :class="['h-2.5 w-2.5 bg-secondary-700 transform border border-secondary-800', arrowRotationClasses]"></div>
208
+ </div>
209
+ </div>
210
+ </transition>
211
+ </teleport>
212
+ </component>
37
213
  </template>
@@ -1,5 +1,5 @@
1
1
  export { default as XTooltip } from './Tooltip.vue'
2
- export type { TooltipProps } from './Tooltip.vue'
2
+ export type { TooltipProps, TooltipPosition, TooltipTheme } from './Tooltip.vue'
3
3
 
4
4
  export { default as XToggleTip } from './ToggleTip.vue'
5
5
  export type { ToggleTipProps } from './ToggleTip.vue'
@@ -0,0 +1,9 @@
1
+ import type { TooltipTheme } from '../Tooltip.vue'
2
+
3
+ const theme: TooltipTheme = {
4
+ classes: {
5
+ tooltip: 'bg-secondary-700 shadow-lg rounded-md border border-secondary-800 p-2 text-white text-xs w-max max-w-sm',
6
+ },
7
+ }
8
+
9
+ export default theme
@@ -0,0 +1,7 @@
1
+ import type { TooltipTheme } from '../Tooltip.vue'
2
+
3
+ import BaseTheme from './Tooltip.base.theme'
4
+
5
+ const theme: TooltipTheme = BaseTheme
6
+
7
+ export default theme
package/src/theme.ts CHANGED
@@ -51,6 +51,7 @@ import type {
51
51
  TagTheme,
52
52
  TextareaTheme,
53
53
  ToggleTheme,
54
+ TooltipTheme,
54
55
  UploadTheme,
55
56
  } from './components'
56
57
 
@@ -106,6 +107,7 @@ export type ComponentThemes = {
106
107
  Tag: TagTheme;
107
108
  Textarea: TextareaTheme;
108
109
  Toggle: ToggleTheme;
110
+ Tooltip: TooltipTheme;
109
111
  Upload: UploadTheme;
110
112
  }
111
113
 
@@ -49,4 +49,5 @@ export { default as TableRow } from '../../components/table/theme/TableRow.base.
49
49
  export { default as Tag } from '../../components/tag/theme/Tag.base.theme'
50
50
  export { default as Textarea } from '../../components/textarea/theme/Textarea.base.theme'
51
51
  export { default as Toggle } from '../../components/toggle/theme/Toggle.base.theme'
52
+ export { default as Tooltip } from '../../components/tooltip/theme/Tooltip.base.theme'
52
53
  export { default as Upload } from '../../components/upload/theme/Upload.base.theme'
@@ -49,4 +49,5 @@ export { default as TableRow } from '../../components/table/theme/TableRow.carbo
49
49
  export { default as Tag } from '../../components/tag/theme/Tag.carbon.theme'
50
50
  export { default as Textarea } from '../../components/textarea/theme/Textarea.carbon.theme'
51
51
  export { default as Toggle } from '../../components/toggle/theme/Toggle.carbon.theme'
52
+ export { default as Tooltip } from '../../components/tooltip/theme/Tooltip.carbon.theme'
52
53
  export { default as Upload } from '../../components/upload/theme/Upload.carbon.theme'
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export default '1.15.1'
1
+ export default '1.15.3'