@meistrari/tela-build 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +75 -0
- package/app.config.ts +73 -0
- package/components/tela/animated/animated-calculating-number.vue +16 -0
- package/components/tela/animated/animated-number.mdx +248 -0
- package/components/tela/animated/animated-number.stories.ts +52 -0
- package/components/tela/animated/animated-number.vue +23 -0
- package/components/tela/animated/animated-text.vue +124 -0
- package/components/tela/animated/animated-value.vue +68 -0
- package/components/tela/avatar/avatar.mdx +117 -0
- package/components/tela/avatar/avatar.stories.ts +62 -0
- package/components/tela/avatar/avatar.vue +71 -0
- package/components/tela/avatar/group/avatar-group.stories.ts +78 -0
- package/components/tela/avatar/group/avatar-group.vue +46 -0
- package/components/tela/badge/badge.mdx +154 -0
- package/components/tela/badge/badge.stories.ts +82 -0
- package/components/tela/badge/badge.vue +41 -0
- package/components/tela/button/button.mdx +155 -0
- package/components/tela/button/button.stories.ts +202 -0
- package/components/tela/button/button.vue +107 -0
- package/components/tela/card.vue +30 -0
- package/components/tela/chart/chart-bar.vue +58 -0
- package/components/tela/chat/chat.mdx +268 -0
- package/components/tela/chat/chat.stories.ts +253 -0
- package/components/tela/chat/command/index.vue +41 -0
- package/components/tela/chat/command/mention/index.vue +138 -0
- package/components/tela/chat/index.vue +112 -0
- package/components/tela/chat/pure-text-input/chat-text-input.vue +190 -0
- package/components/tela/chat/text-input/chat-text-input.stories.ts +128 -0
- package/components/tela/chat/text-input/index.vue +217 -0
- package/components/tela/chat/text-message/chat-text-message.stories.ts +138 -0
- package/components/tela/chat/text-message/index.vue +355 -0
- package/components/tela/chat/types.ts +19 -0
- package/components/tela/checkbox/checkbox-card.vue +30 -0
- package/components/tela/checkbox/checkbox.mdx +164 -0
- package/components/tela/checkbox/checkbox.stories.ts +104 -0
- package/components/tela/checkbox/checkbox.vue +43 -0
- package/components/tela/collapsible/Collapsible.vue +15 -0
- package/components/tela/collapsible/CollapsibleContent.vue +59 -0
- package/components/tela/collapsible/CollapsibleTrigger.vue +12 -0
- package/components/tela/collapsible/collapsible.mdx +157 -0
- package/components/tela/collapsible-section/collapsible-section.mdx +180 -0
- package/components/tela/collapsible-section/collapsible-section.stories.ts +53 -0
- package/components/tela/collapsible-section/collapsible-section.vue +51 -0
- package/components/tela/collapsible-section-with-actions.vue +98 -0
- package/components/tela/combobox/combobox-anchor.vue +24 -0
- package/components/tela/combobox/combobox-empty.vue +19 -0
- package/components/tela/combobox/combobox-group.vue +24 -0
- package/components/tela/combobox/combobox-indicator.vue +22 -0
- package/components/tela/combobox/combobox-input.vue +31 -0
- package/components/tela/combobox/combobox-item.vue +28 -0
- package/components/tela/combobox/combobox-label.vue +24 -0
- package/components/tela/combobox/combobox-list.vue +90 -0
- package/components/tela/combobox/combobox-module-selector.vue +366 -0
- package/components/tela/combobox/combobox-root.vue +15 -0
- package/components/tela/combobox/combobox-trigger.vue +12 -0
- package/components/tela/combobox/combobox.mdx +285 -0
- package/components/tela/combobox/combobox.stories.ts +232 -0
- package/components/tela/combobox/combobox.vue +497 -0
- package/components/tela/command/command-dialog.vue +22 -0
- package/components/tela/command/command-empty.vue +25 -0
- package/components/tela/command/command-group.vue +46 -0
- package/components/tela/command/command-input.vue +38 -0
- package/components/tela/command/command-item.vue +78 -0
- package/components/tela/command/command-list.vue +78 -0
- package/components/tela/command/command-separator.vue +23 -0
- package/components/tela/command/command-shortcut.vue +13 -0
- package/components/tela/command/command.vue +88 -0
- package/components/tela/command/dialog-base.vue +15 -0
- package/components/tela/command/dialog-content.vue +50 -0
- package/components/tela/command/utils.ts +15 -0
- package/components/tela/complex-table/complex-table-cell.stories.ts +145 -0
- package/components/tela/complex-table/complex-table-cell.vue +45 -0
- package/components/tela/complex-table/complex-table-header-cell.stories.ts +103 -0
- package/components/tela/complex-table/complex-table-header-cell.vue +48 -0
- package/components/tela/complex-table/complex-table-header.stories.ts +89 -0
- package/components/tela/complex-table/complex-table-header.vue +70 -0
- package/components/tela/complex-table/complex-table-row.vue +199 -0
- package/components/tela/complex-table/complex-table-virtualized.vue +326 -0
- package/components/tela/complex-table/complex-table.stories.ts +358 -0
- package/components/tela/complex-table/complex-table.vue +237 -0
- package/components/tela/complex-table/composables/table-common.ts +93 -0
- package/components/tela/complex-table/composables/table-selection.ts +87 -0
- package/components/tela/complex-table/composables/virtual-scroll.ts +252 -0
- package/components/tela/complex-table/styles/table-shared.css +170 -0
- package/components/tela/complex-table/types.ts +63 -0
- package/components/tela/complex-table/utils.ts +35 -0
- package/components/tela/confirm-button/confirm-button.vue +137 -0
- package/components/tela/confirmation-modal/confirmation-modal.vue +72 -0
- package/components/tela/copy-button.vue +86 -0
- package/components/tela/date-range-picker.vue +221 -0
- package/components/tela/dialog/dialog.mdx +170 -0
- package/components/tela/dialog/dialog.vue +182 -0
- package/components/tela/disabled-area.vue +16 -0
- package/components/tela/disclaimer/disclaimer.mdx +238 -0
- package/components/tela/disclaimer/disclaimer.stories.ts +196 -0
- package/components/tela/disclaimer/disclaimer.vue +125 -0
- package/components/tela/dropdown-menu/DropdownMenu.vue +121 -0
- package/components/tela/dropdown-menu/DropdownMenuCheckboxItem.vue +40 -0
- package/components/tela/dropdown-menu/DropdownMenuContent.vue +75 -0
- package/components/tela/dropdown-menu/DropdownMenuGroup.vue +12 -0
- package/components/tela/dropdown-menu/DropdownMenuItem.vue +137 -0
- package/components/tela/dropdown-menu/DropdownMenuLabel.vue +26 -0
- package/components/tela/dropdown-menu/DropdownMenuRadioGroup.vue +18 -0
- package/components/tela/dropdown-menu/DropdownMenuRadioItem.vue +40 -0
- package/components/tela/dropdown-menu/DropdownMenuRoot.vue +15 -0
- package/components/tela/dropdown-menu/DropdownMenuSeparator.vue +21 -0
- package/components/tela/dropdown-menu/DropdownMenuShortcut.vue +14 -0
- package/components/tela/dropdown-menu/DropdownMenuSub.vue +18 -0
- package/components/tela/dropdown-menu/DropdownMenuSubContent.vue +30 -0
- package/components/tela/dropdown-menu/DropdownMenuSubTrigger.vue +35 -0
- package/components/tela/dropdown-menu/DropdownMenuTrigger.vue +14 -0
- package/components/tela/dropdown-menu/dropdown-menu.mdx +265 -0
- package/components/tela/dropdown-menu/dropdown-menu.stories.ts +156 -0
- package/components/tela/expandable-input.vue +96 -0
- package/components/tela/file-drop.vue +37 -0
- package/components/tela/file-upload/file-upload.mdx +189 -0
- package/components/tela/file-upload/file-upload.stories.ts +48 -0
- package/components/tela/file-upload/file-upload.vue +205 -0
- package/components/tela/filters/checkbox-filter.stories.ts +218 -0
- package/components/tela/filters/checkbox-filter.vue +165 -0
- package/components/tela/filters/date-filter.stories.ts +258 -0
- package/components/tela/filters/date-filter.vue +200 -0
- package/components/tela/filters/user-filter.stories.ts +344 -0
- package/components/tela/filters/user-filter.vue +271 -0
- package/components/tela/hover-card/hover-card.mdx +221 -0
- package/components/tela/hover-card/hover-card.stories.ts +87 -0
- package/components/tela/hover-card/hover-card.vue +61 -0
- package/components/tela/icon/custom.vue +319 -0
- package/components/tela/icon/spinner.vue +12 -0
- package/components/tela/icon-button/icon-button.vue +114 -0
- package/components/tela/icon.vue +37 -0
- package/components/tela/initials.vue +28 -0
- package/components/tela/inline-input.vue +77 -0
- package/components/tela/input/input.mdx +182 -0
- package/components/tela/input/input.stories.ts +153 -0
- package/components/tela/input/tela-input.vue +240 -0
- package/components/tela/kbd/kbd-return.vue +6 -0
- package/components/tela/kbd/kbd.mdx +238 -0
- package/components/tela/kbd/kbd.vue +18 -0
- package/components/tela/label/label.mdx +121 -0
- package/components/tela/label/label.stories.ts +37 -0
- package/components/tela/label/label.vue +25 -0
- package/components/tela/link-decoration/link-decoration.vue +19 -0
- package/components/tela/live-label.vue +32 -0
- package/components/tela/long-press-button.vue +98 -0
- package/components/tela/menubar/menubar-content.vue +77 -0
- package/components/tela/menubar/menubar-item.vue +32 -0
- package/components/tela/menubar/menubar-label.vue +14 -0
- package/components/tela/menubar/menubar-menu.vue +12 -0
- package/components/tela/menubar/menubar-root.vue +30 -0
- package/components/tela/menubar/menubar-separator.vue +17 -0
- package/components/tela/menubar/menubar-shortcut.vue +14 -0
- package/components/tela/menubar/menubar-sub-content.vue +36 -0
- package/components/tela/menubar/menubar-sub-trigger.vue +28 -0
- package/components/tela/menubar/menubar-sub.vue +20 -0
- package/components/tela/menubar/menubar-trigger.vue +27 -0
- package/components/tela/menubar/menubar.vue +298 -0
- package/components/tela/modal/modal.mdx +145 -0
- package/components/tela/modal/modal.vue +242 -0
- package/components/tela/multiple-select/multiple-select.mdx +274 -0
- package/components/tela/multiple-select/multiple-select.stories.ts +325 -0
- package/components/tela/multiple-select/multiple-select.vue +666 -0
- package/components/tela/pane.vue +110 -0
- package/components/tela/popover/popover-content.vue +48 -0
- package/components/tela/popover/popover-trigger.vue +12 -0
- package/components/tela/popover/popover.mdx +239 -0
- package/components/tela/popover/popover.stories.ts +150 -0
- package/components/tela/popover/popover.vue +15 -0
- package/components/tela/popover-list/popover-list-nested.vue +104 -0
- package/components/tela/popover-list/popover-list.stories.ts +330 -0
- package/components/tela/popover-list/popover-list.vue +191 -0
- package/components/tela/radio-button.vue +66 -0
- package/components/tela/radio-group/radio-group-item.vue +40 -0
- package/components/tela/radio-group/radio-group-root.vue +26 -0
- package/components/tela/radio-group/radio-group.mdx +78 -0
- package/components/tela/radio-group/radio-group.stories.ts +106 -0
- package/components/tela/radio-group/radio-group.vue +23 -0
- package/components/tela/range-calendar.stories.ts +110 -0
- package/components/tela/range-calendar.vue +109 -0
- package/components/tela/scroll-area/scroll-area.mdx +183 -0
- package/components/tela/scroll-area/scroll-area.vue +30 -0
- package/components/tela/scroll-area/scroll-bar.vue +31 -0
- package/components/tela/segment-toggle.stories.ts +114 -0
- package/components/tela/segment-toggle.vue +66 -0
- package/components/tela/select-menu/select-menu-content.vue +106 -0
- package/components/tela/select-menu/select-menu-down-button.vue +20 -0
- package/components/tela/select-menu/select-menu-group.vue +16 -0
- package/components/tela/select-menu/select-menu-item.vue +40 -0
- package/components/tela/select-menu/select-menu-root.vue +15 -0
- package/components/tela/select-menu/select-menu-trigger.vue +34 -0
- package/components/tela/select-menu/select-menu-up-button.vue +20 -0
- package/components/tela/select-menu/select-menu-value.vue +12 -0
- package/components/tela/select-menu/select-menu.mdx +221 -0
- package/components/tela/select-menu/select-menu.stories.ts +91 -0
- package/components/tela/select-menu/select-menu.vue +165 -0
- package/components/tela/selector/selector.vue +47 -0
- package/components/tela/sheet/sheet-close.vue +12 -0
- package/components/tela/sheet/sheet-content.vue +57 -0
- package/components/tela/sheet/sheet-description.vue +23 -0
- package/components/tela/sheet/sheet-footer.vue +18 -0
- package/components/tela/sheet/sheet-header.vue +15 -0
- package/components/tela/sheet/sheet-root.vue +18 -0
- package/components/tela/sheet/sheet-title.vue +23 -0
- package/components/tela/sheet/sheet-trigger.vue +12 -0
- package/components/tela/sheet/sheet.client.vue +150 -0
- package/components/tela/sheet/sheet.mdx +176 -0
- package/components/tela/sheet/sheet.stories.ts +201 -0
- package/components/tela/sheet/variants.ts +22 -0
- package/components/tela/side-sheet/side-sheet.mdx +131 -0
- package/components/tela/side-sheet/side-sheet.stories.ts +134 -0
- package/components/tela/side-sheet/side-sheet.vue +106 -0
- package/components/tela/skeleton/skeleton.mdx +165 -0
- package/components/tela/skeleton/skeleton.stories.ts +35 -0
- package/components/tela/skeleton/skeleton.vue +45 -0
- package/components/tela/skeleton-icon.vue +24 -0
- package/components/tela/span.vue +24 -0
- package/components/tela/star-button.vue +70 -0
- package/components/tela/status/status-lean.vue +30 -0
- package/components/tela/status/status.mdx +187 -0
- package/components/tela/status/status.stories.ts +160 -0
- package/components/tela/status/status.vue +420 -0
- package/components/tela/status-bar/status-bar.mdx +178 -0
- package/components/tela/status-bar/status-bar.stories.ts +64 -0
- package/components/tela/status-bar/status-bar.vue +56 -0
- package/components/tela/status-bar/types.ts +5 -0
- package/components/tela/switch/switch.mdx +118 -0
- package/components/tela/switch/switch.stories.ts +80 -0
- package/components/tela/switch/switch.vue +56 -0
- package/components/tela/table/table-body.vue +13 -0
- package/components/tela/table/table-caption.vue +13 -0
- package/components/tela/table/table-cell.vue +20 -0
- package/components/tela/table/table-empty.vue +37 -0
- package/components/tela/table/table-footer.vue +13 -0
- package/components/tela/table/table-head.vue +13 -0
- package/components/tela/table/table-header.vue +13 -0
- package/components/tela/table/table-row.vue +13 -0
- package/components/tela/table/table.mdx +230 -0
- package/components/tela/table/table.stories.ts +384 -0
- package/components/tela/table/table.vue +15 -0
- package/components/tela/tabs/tabs-content.vue +20 -0
- package/components/tela/tabs/tabs-indicator.vue +22 -0
- package/components/tela/tabs/tabs-list.vue +23 -0
- package/components/tela/tabs/tabs-root.vue +15 -0
- package/components/tela/tabs/tabs-trigger.vue +27 -0
- package/components/tela/tabs/tabs.mdx +138 -0
- package/components/tela/tabs/tabs.stories.ts +72 -0
- package/components/tela/tabs/tabs.vue +61 -0
- package/components/tela/tags/tags-select.mdx +318 -0
- package/components/tela/tags/tags-select.stories.ts +47 -0
- package/components/tela/tags/tags-select.vue +637 -0
- package/components/tela/tags/tags.mdx +151 -0
- package/components/tela/tags/tags.stories.ts +118 -0
- package/components/tela/tags/tags.vue +112 -0
- package/components/tela/textarea/textarea.mdx +102 -0
- package/components/tela/textarea/textarea.stories.ts +50 -0
- package/components/tela/textarea/textarea.vue +34 -0
- package/components/tela/toggle-group.vue +91 -0
- package/components/tela/tooltip/tooltip-content.vue +45 -0
- package/components/tela/tooltip/tooltip-provider.vue +12 -0
- package/components/tela/tooltip/tooltip-root.vue +15 -0
- package/components/tela/tooltip/tooltip-trigger.vue +12 -0
- package/components/tela/tooltip/tooltip.mdx +196 -0
- package/components/tela/tooltip/tooltip.stories.ts +200 -0
- package/components/tela/tooltip/tooltip.vue +91 -0
- package/components/tela/tooltip-group/tooltip-group-trigger.vue +92 -0
- package/components/tela/tooltip-group/tooltip-group.mdx +236 -0
- package/components/tela/tooltip-group/tooltip-group.stories.ts +465 -0
- package/components/tela/tooltip-group/tooltip-group.vue +35 -0
- package/components/tela/transparent-input.vue +151 -0
- package/components/tela/variable-icon.vue +28 -0
- package/components/tela/variable-input.vue +77 -0
- package/components/tela/wide-button/wide-button.vue +40 -0
- package/components.json +18 -0
- package/composables/status-toast.ts +67 -0
- package/css/reset.css +386 -0
- package/css/text.css +22 -0
- package/lib/doc-generator.ts +903 -0
- package/lib/extractors/volar-extract.ts +186 -0
- package/lib/type-resolver.ts +402 -0
- package/lib/utils.ts +6 -0
- package/modules/tela-build-docs/index.ts +139 -0
- package/nuxt.config.ts +80 -0
- package/package.json +84 -0
- package/plugins/test-id.ts +7 -0
- package/tsconfig.json +7 -0
- package/types/custom-icon.ts +1 -0
- package/types/index.ts +2 -0
- package/types/status.ts +1 -0
- package/unocss.config.ts +89 -0
- package/utils/component-utils.ts +30 -0
- package/utils/design-tokens.ts +431 -0
- package/utils/fold.ts +8 -0
- package/utils/select-menu.ts +10 -0
- package/utils/status.ts +1 -0
- package/utils/without-keys.ts +34 -0
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/* Sticky positioning */
|
|
2
|
+
.sticky {
|
|
3
|
+
position: sticky !important;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
/* Main table container */
|
|
7
|
+
.main-table-container {
|
|
8
|
+
overflow: auto;
|
|
9
|
+
position: relative;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.main-table-container table {
|
|
13
|
+
width: 100%;
|
|
14
|
+
border-collapse: collapse;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/* Scrollbar track styles */
|
|
18
|
+
.main-table-container::-webkit-scrollbar-track {
|
|
19
|
+
border-radius: 10px;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.has-index::-webkit-scrollbar-track {
|
|
23
|
+
margin-left: -48px;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.has-select::-webkit-scrollbar-track {
|
|
27
|
+
margin-left: -32px;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.has-index-and-select::-webkit-scrollbar-track {
|
|
31
|
+
margin-left: -85px;
|
|
32
|
+
background-color: transparent;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/* Scrollbar container */
|
|
36
|
+
.main-table-container::-webkit-scrollbar {
|
|
37
|
+
width: 8px;
|
|
38
|
+
height: 16px;
|
|
39
|
+
background-color: white;
|
|
40
|
+
box-shadow: 0 -0.5px 0 0 rgba(225, 227, 228, 1);
|
|
41
|
+
border-radius: 0px 0px 8px 0px;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/* Hide scrollbar when needed */
|
|
45
|
+
.main-table-container.hide-scrollbar::-webkit-scrollbar {
|
|
46
|
+
display: none;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.main-table-container.hide-scrollbar {
|
|
50
|
+
-ms-overflow-style: none;
|
|
51
|
+
scrollbar-width: none;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/* Scrollbar thumb */
|
|
55
|
+
.main-table-container::-webkit-scrollbar-thumb {
|
|
56
|
+
border-radius: 10px;
|
|
57
|
+
height: 6px;
|
|
58
|
+
box-shadow: inset 0px 0px 0px 4px white;
|
|
59
|
+
background: transparent;
|
|
60
|
+
position: relative;
|
|
61
|
+
clip-path: inset(0 0 0 0);
|
|
62
|
+
|
|
63
|
+
background-color: transparent;
|
|
64
|
+
background-image: linear-gradient(to right, #EBECED, #EBECED);
|
|
65
|
+
background-clip: content-box;
|
|
66
|
+
background-origin: border-box;
|
|
67
|
+
background-size: calc(100% - 8px) calc(100% - 8px);
|
|
68
|
+
background-position: center;
|
|
69
|
+
background-repeat: no-repeat;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.main-table-container::-webkit-scrollbar-thumb:hover {
|
|
73
|
+
background-image: linear-gradient(to right, #C2C4C6, #C2C4C6);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.has-scroll::-webkit-scrollbar-thumb {
|
|
77
|
+
background-color: transparent;
|
|
78
|
+
border: none;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/* Vertical scrollbar */
|
|
82
|
+
.main-table-container::-webkit-scrollbar:vertical {
|
|
83
|
+
width: 0px;
|
|
84
|
+
height: 0px;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.main-table-container::-webkit-scrollbar-button:vertical {
|
|
88
|
+
width: 0px;
|
|
89
|
+
height: 0px;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/* Horizontal scrollbar buttons */
|
|
93
|
+
.main-table-container::-webkit-scrollbar-button:horizontal {
|
|
94
|
+
width: 19px;
|
|
95
|
+
display: block;
|
|
96
|
+
background-color: white;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.main-table-container::-webkit-scrollbar-button:horizontal:start {
|
|
100
|
+
display: none;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.main-table-container::-webkit-scrollbar-button:horizontal:increment {
|
|
104
|
+
background-color: white;
|
|
105
|
+
background-image: url("data:image/svg+xml,%3Csvg width='6' height='10' viewBox='0 0 6 10' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.64941 5.39795L1.89941 9.14795C1.79374 9.25362 1.65042 9.31299 1.50098 9.31299C1.35153 9.31299 1.20821 9.25362 1.10254 9.14795C0.996866 9.04228 0.9375 8.89895 0.9375 8.74951C0.9375 8.60007 0.996866 8.45675 1.10254 8.35107L4.45457 4.99998L1.10348 1.64795C1.05115 1.59562 1.00965 1.53351 0.981329 1.46514C0.953012 1.39678 0.938437 1.32351 0.938437 1.24951C0.938437 1.17551 0.953012 1.10224 0.981329 1.03388C1.00965 0.965514 1.05115 0.903397 1.10348 0.851073C1.1558 0.79875 1.21792 0.757245 1.28628 0.728927C1.35464 0.70061 1.42792 0.686035 1.50191 0.686035C1.57591 0.686035 1.64918 0.70061 1.71755 0.728927C1.78591 0.757245 1.84803 0.79875 1.90035 0.851073L5.65035 4.60107C5.70273 4.65339 5.74427 4.71554 5.77258 4.78394C5.80089 4.85235 5.81541 4.92567 5.81533 4.99971C5.81524 5.07374 5.80054 5.14703 5.77207 5.21537C5.7436 5.2837 5.70192 5.34575 5.64941 5.39795Z' fill='%23C2C4C6'/%3E%3C/svg%3E");
|
|
106
|
+
pointer-events: none;
|
|
107
|
+
background-repeat: no-repeat;
|
|
108
|
+
background-position: center;
|
|
109
|
+
background-size: 6px 10px;
|
|
110
|
+
border-radius: 0px 0px 8px 0px;
|
|
111
|
+
outline: 0.5px solid #E1E3E4;
|
|
112
|
+
background-color: #FAFAFB;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.main-table-container::-webkit-scrollbar-button:horizontal:decrement {
|
|
116
|
+
background-color: white;
|
|
117
|
+
background-image: url("data:image/svg+xml,%3Csvg width='6' height='10' viewBox='0 0 6 10' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M4.89982 8.35205C5.00549 8.45772 5.06486 8.60104 5.06486 8.75049C5.06486 8.89993 5.00549 9.04325 4.89982 9.14892C4.79415 9.2546 4.65082 9.31396 4.50138 9.31396C4.35194 9.31396 4.20862 9.2546 4.10294 9.14892L0.352943 5.39892C0.300503 5.34667 0.258895 5.28457 0.230505 5.2162C0.202114 5.14782 0.1875 5.07452 0.1875 5.00049C0.1875 4.92645 0.202114 4.85315 0.230505 4.78478C0.258895 4.7164 0.300503 4.65431 0.352943 4.60205L4.10294 0.85205C4.20862 0.746378 4.35194 0.687012 4.50138 0.687012C4.65082 0.687012 4.79415 0.746378 4.89982 0.85205C5.00549 0.957722 5.06486 1.10104 5.06486 1.25049C5.06486 1.39993 5.00549 1.54325 4.89982 1.64892L1.54872 5.00002L4.89982 8.35205Z' fill='%23C2C4C6'/%3E%3C/svg%3E");
|
|
118
|
+
pointer-events: none;
|
|
119
|
+
background-repeat: no-repeat;
|
|
120
|
+
background-position: center;
|
|
121
|
+
background-size: 6px 10px;
|
|
122
|
+
outline: 0.5px solid #E1E3E4;
|
|
123
|
+
background-color: #FAFAFB;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/* Active scrollbar buttons */
|
|
127
|
+
.has-scroll::-webkit-scrollbar-button:horizontal:increment {
|
|
128
|
+
background-color: white;
|
|
129
|
+
background-image: url("data:image/svg+xml,%3Csvg width='6' height='10' viewBox='0 0 6 10' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.64941 5.39795L1.89941 9.14795C1.79374 9.25362 1.65042 9.31299 1.50098 9.31299C1.35153 9.31299 1.20821 9.25362 1.10254 9.14795C0.996866 9.04228 0.9375 8.89895 0.9375 8.74951C0.9375 8.60007 0.996866 8.45675 1.10254 8.35107L4.45457 4.99998L1.10348 1.64795C1.05115 1.59562 1.00965 1.53351 0.981329 1.46514C0.953012 1.39678 0.938437 1.32351 0.938437 1.24951C0.938437 1.17551 0.953012 1.10224 0.981329 1.03388C1.00965 0.965514 1.05115 0.903397 1.10348 0.851073C1.1558 0.79875 1.21792 0.757245 1.28628 0.728927C1.35464 0.70061 1.42792 0.686035 1.50191 0.686035C1.57591 0.686035 1.64918 0.70061 1.71755 0.728927C1.78591 0.757245 1.84803 0.79875 1.90035 0.851073L5.65035 4.60107C5.70273 4.65339 5.74427 4.71554 5.77258 4.78394C5.80089 4.85235 5.81541 4.92567 5.81533 4.99971C5.81524 5.07374 5.80054 5.14703 5.77207 5.21537C5.7436 5.2837 5.70192 5.34575 5.64941 5.39795Z' fill='%234E535A'/%3E%3C/svg%3E");
|
|
130
|
+
pointer-events: auto;
|
|
131
|
+
background-repeat: no-repeat;
|
|
132
|
+
background-position: center;
|
|
133
|
+
background-size: 6px 10px;
|
|
134
|
+
outline: 0.5px solid #E1E3E4;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.has-scroll::-webkit-scrollbar-button:horizontal:increment:hover {
|
|
138
|
+
background-color: #F5F6F6;
|
|
139
|
+
cursor: pointer;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.has-scroll::-webkit-scrollbar-button:horizontal:decrement {
|
|
143
|
+
background-color: white;
|
|
144
|
+
background-image: url("data:image/svg+xml,%3Csvg width='6' height='10' viewBox='0 0 6 10' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M4.89982 8.35205C5.00549 8.45772 5.06486 8.60104 5.06486 8.75049C5.06486 8.89993 5.00549 9.04325 4.89982 9.14892C4.79415 9.2546 4.65082 9.31396 4.50138 9.31396C4.35194 9.31396 4.20862 9.2546 4.10294 9.14892L0.352943 5.39892C0.300503 5.34667 0.258895 5.28457 0.230505 5.2162C0.202114 5.14782 0.1875 5.07452 0.1875 5.00049C0.1875 4.92645 0.202114 4.85315 0.230505 4.78478C0.258895 4.7164 0.300503 4.65431 0.352943 4.60205L4.10294 0.85205C4.20862 0.746378 4.35194 0.687012 4.50138 0.687012C4.65082 0.687012 4.79415 0.746378 4.89982 0.85205C5.00549 0.957722 5.06486 1.10104 5.06486 1.25049C5.06486 1.39993 5.00549 1.54325 4.89982 1.64892L1.54872 5.00002L4.89982 8.35205Z' fill='%234E535A'/%3E%3C/svg%3E");
|
|
145
|
+
pointer-events: auto;
|
|
146
|
+
background-repeat: no-repeat;
|
|
147
|
+
background-position: center;
|
|
148
|
+
background-size: 6px 10px;
|
|
149
|
+
outline: 0.5px solid #E1E3E4;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
.has-scroll::-webkit-scrollbar-button:horizontal:decrement:hover {
|
|
153
|
+
background-color: #F5F6F6;
|
|
154
|
+
cursor: pointer;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/* Shadow effect */
|
|
158
|
+
.shadow {
|
|
159
|
+
box-shadow: -8px 4px 16px 0px rgba(13, 45, 72, 0.02), -12px 16px 80px 0px rgba(13, 45, 72, 0.04);
|
|
160
|
+
backdrop-filter: blur(2px);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/* Empty state positioning */
|
|
164
|
+
.empty-state-centered {
|
|
165
|
+
position: absolute;
|
|
166
|
+
left: 50vw;
|
|
167
|
+
top: 50%;
|
|
168
|
+
transform: translate(-72.5%, 25%);
|
|
169
|
+
z-index: 10;
|
|
170
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
export type Column = {
|
|
2
|
+
key?: string
|
|
3
|
+
title: string
|
|
4
|
+
isDefault?: boolean
|
|
5
|
+
icon?: {
|
|
6
|
+
name: string
|
|
7
|
+
size?: string
|
|
8
|
+
style?: string
|
|
9
|
+
}
|
|
10
|
+
color?: string
|
|
11
|
+
style?: string
|
|
12
|
+
class?: string
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export type Row = {
|
|
16
|
+
id?: string
|
|
17
|
+
index?: number
|
|
18
|
+
status: string
|
|
19
|
+
name: string
|
|
20
|
+
errorMessage?: string
|
|
21
|
+
data: Record<string, unknown>
|
|
22
|
+
isLoading?: boolean
|
|
23
|
+
isNew?: boolean
|
|
24
|
+
icons?: {
|
|
25
|
+
key: string
|
|
26
|
+
type?: string
|
|
27
|
+
name: string
|
|
28
|
+
size?: string
|
|
29
|
+
style?: string
|
|
30
|
+
}[]
|
|
31
|
+
color?: string
|
|
32
|
+
style?: string
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export const HoverMechanismTypes = {
|
|
36
|
+
Row: 'row',
|
|
37
|
+
Cell: 'cell',
|
|
38
|
+
} as const
|
|
39
|
+
export type HoverMechanism = (typeof HoverMechanismTypes)[keyof typeof HoverMechanismTypes]
|
|
40
|
+
|
|
41
|
+
export type ComplexTableType = {
|
|
42
|
+
columns: Column[]
|
|
43
|
+
rows: Row[]
|
|
44
|
+
rowTitlePath: string
|
|
45
|
+
rowIndexPath: string
|
|
46
|
+
allowSelect?: boolean
|
|
47
|
+
allowRowIndex?: boolean
|
|
48
|
+
loading?: boolean
|
|
49
|
+
maxHeight?: number
|
|
50
|
+
hoverMechanism?: HoverMechanism
|
|
51
|
+
disableRowClick?: (row: Row) => boolean
|
|
52
|
+
selectedRows?: string[]
|
|
53
|
+
columnsClass?: string
|
|
54
|
+
rowClass?: (row: Row) => string
|
|
55
|
+
rowIndexClass?: string
|
|
56
|
+
headerClass?: string
|
|
57
|
+
hideScrollbar?: boolean
|
|
58
|
+
hideError?: boolean
|
|
59
|
+
useVirtualization?: boolean
|
|
60
|
+
virtualizedOverscan?: number
|
|
61
|
+
virtualizedRowHeight?: number
|
|
62
|
+
virtualizedInitialBatchSize?: number
|
|
63
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { Column } from './types'
|
|
2
|
+
|
|
3
|
+
export function readRowPath(row: Record<string, unknown>, path: string) {
|
|
4
|
+
const paths = path.split('.')
|
|
5
|
+
let value = row as any
|
|
6
|
+
for (const piece of paths) {
|
|
7
|
+
if (value && typeof value === 'object') {
|
|
8
|
+
value = value[piece]
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
return ''
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return value
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export function getRowTitle(row: Record<string, unknown>, rowTitlePath: string) {
|
|
18
|
+
return readRowPath(row, rowTitlePath)
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export function hasContent(row: Record<string, unknown>, column: Column) {
|
|
22
|
+
if (typeof row.data !== 'object') {
|
|
23
|
+
return false
|
|
24
|
+
}
|
|
25
|
+
const data = row.data as Record<string, unknown>
|
|
26
|
+
return data[column.title] !== undefined
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export function hasError(row: Record<string, unknown>) {
|
|
30
|
+
return row.status === 'failed'
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export function isLoading(row: Record<string, unknown>, loading: boolean) {
|
|
34
|
+
return row.status === 'loading' || row.isLoading || loading
|
|
35
|
+
}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import type { ButtonProps as TelaButtonProps } from '../button/button.vue'
|
|
3
|
+
|
|
4
|
+
type ButtonState = 'normal' | 'confirming' | 'success' | 'error' | 'loading'
|
|
5
|
+
|
|
6
|
+
export type ButtonProps = {
|
|
7
|
+
size?: TelaButtonProps['size']
|
|
8
|
+
variant?: TelaButtonProps['variant']
|
|
9
|
+
icon?: string
|
|
10
|
+
loading?: boolean
|
|
11
|
+
leading?: boolean
|
|
12
|
+
disabled?: boolean
|
|
13
|
+
to?: string
|
|
14
|
+
target?: '_blank' | null
|
|
15
|
+
confirmMessage?: string
|
|
16
|
+
successMessage?: string
|
|
17
|
+
errorMessage?: string
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const props = defineProps<ButtonProps>()
|
|
21
|
+
const emit = defineEmits<{
|
|
22
|
+
(e: 'confirm'): void
|
|
23
|
+
(e: 'success'): void
|
|
24
|
+
(e: 'error'): void
|
|
25
|
+
}>()
|
|
26
|
+
|
|
27
|
+
const state = ref<ButtonState>('normal')
|
|
28
|
+
const timeoutId = ref<ReturnType<typeof setTimeout>>()
|
|
29
|
+
|
|
30
|
+
const buttonProps = computed(() => ({
|
|
31
|
+
size: props.size,
|
|
32
|
+
variant: (state.value === 'success' && 'success')
|
|
33
|
+
|| (state.value === 'error' && 'danger')
|
|
34
|
+
|| props.variant,
|
|
35
|
+
icon: props.icon,
|
|
36
|
+
loading: state.value === 'loading',
|
|
37
|
+
leading: props.leading,
|
|
38
|
+
disabled: props.disabled || state.value === 'loading',
|
|
39
|
+
to: props.to,
|
|
40
|
+
target: props.target,
|
|
41
|
+
}))
|
|
42
|
+
|
|
43
|
+
async function onClick() {
|
|
44
|
+
if (state.value === 'normal') {
|
|
45
|
+
state.value = 'confirming'
|
|
46
|
+
|
|
47
|
+
// Reset to normal after 3s if no action taken
|
|
48
|
+
timeoutId.value = setTimeout(() => {
|
|
49
|
+
if (state.value === 'confirming')
|
|
50
|
+
state.value = 'normal'
|
|
51
|
+
}, 10000)
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
async function onConfirm() {
|
|
56
|
+
clearTimeout(timeoutId.value)
|
|
57
|
+
emit('confirm')
|
|
58
|
+
state.value = 'loading'
|
|
59
|
+
|
|
60
|
+
try {
|
|
61
|
+
state.value = 'success'
|
|
62
|
+
emit('success')
|
|
63
|
+
setTimeout(() => {
|
|
64
|
+
state.value = 'normal'
|
|
65
|
+
}, 2000)
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
state.value = 'error'
|
|
69
|
+
emit('error')
|
|
70
|
+
|
|
71
|
+
setTimeout(() => {
|
|
72
|
+
state.value = 'normal'
|
|
73
|
+
}, 2000)
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
function onCancel() {
|
|
78
|
+
clearTimeout(timeoutId.value)
|
|
79
|
+
state.value = 'normal'
|
|
80
|
+
}
|
|
81
|
+
</script>
|
|
82
|
+
|
|
83
|
+
<template>
|
|
84
|
+
<TelaButton
|
|
85
|
+
v-bind="{ ...buttonProps, icon: undefined }"
|
|
86
|
+
class="transition-all duration-200 ease-in-out"
|
|
87
|
+
@click="onClick"
|
|
88
|
+
>
|
|
89
|
+
<TelaIconSpinner v-if="state === 'loading'" animate-spin />
|
|
90
|
+
<template v-else-if="state === 'confirming'">
|
|
91
|
+
{{ props.confirmMessage }}
|
|
92
|
+
<button
|
|
93
|
+
class="hover:text-positive"
|
|
94
|
+
@click.stop="onConfirm"
|
|
95
|
+
>
|
|
96
|
+
<div i-ph-check-bold text-14px />
|
|
97
|
+
</button>
|
|
98
|
+
<button
|
|
99
|
+
class="hover:text-red-500"
|
|
100
|
+
@click.stop="onCancel"
|
|
101
|
+
>
|
|
102
|
+
<div i-ph-x-bold text-14px />
|
|
103
|
+
</button>
|
|
104
|
+
</template>
|
|
105
|
+
|
|
106
|
+
<template v-else-if="state === 'success'">
|
|
107
|
+
<div i-ph-check-bold text-14px />
|
|
108
|
+
{{ props.successMessage }}
|
|
109
|
+
</template>
|
|
110
|
+
|
|
111
|
+
<template v-else-if="state === 'error'">
|
|
112
|
+
<div i-ph-x-bold text-14px />
|
|
113
|
+
{{ props.errorMessage }}
|
|
114
|
+
</template>
|
|
115
|
+
|
|
116
|
+
<template v-else>
|
|
117
|
+
<slot v-if="$slots.leading" name="leading" />
|
|
118
|
+
<div v-else-if="icon && leading" :class="icon" text-10px />
|
|
119
|
+
<slot />
|
|
120
|
+
<slot v-if="$slots.trailing" name="trailing" />
|
|
121
|
+
<div v-else-if="icon && !leading" :class="icon" text-10px />
|
|
122
|
+
</template>
|
|
123
|
+
</TelaButton>
|
|
124
|
+
</template>
|
|
125
|
+
|
|
126
|
+
<style scoped>
|
|
127
|
+
.grow-enter-active,
|
|
128
|
+
.grow-leave-active {
|
|
129
|
+
transition: all 1s ease-in-out;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
.grow-enter-from,
|
|
133
|
+
.grow-leave-to {
|
|
134
|
+
opacity: 0;
|
|
135
|
+
transform: scale(0.9);
|
|
136
|
+
}
|
|
137
|
+
</style>
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
<script lang="ts" setup>
|
|
2
|
+
import { DialogClose } from 'radix-vue'
|
|
3
|
+
import TelaModal from '../modal/modal.vue'
|
|
4
|
+
import TelaButton from '../button/button.vue'
|
|
5
|
+
|
|
6
|
+
const props = defineProps<{
|
|
7
|
+
title: string
|
|
8
|
+
compact?: boolean
|
|
9
|
+
variant?: 'primary' | 'danger'
|
|
10
|
+
confirmButtonText?: string
|
|
11
|
+
cancelButtonText?: string
|
|
12
|
+
loading?: boolean
|
|
13
|
+
}>()
|
|
14
|
+
|
|
15
|
+
const emit = defineEmits<{
|
|
16
|
+
(e: 'confirm'): void
|
|
17
|
+
(e: 'cancel'): void
|
|
18
|
+
}>()
|
|
19
|
+
|
|
20
|
+
const open = defineModel<boolean>('open')
|
|
21
|
+
|
|
22
|
+
function handleCloseClick() {
|
|
23
|
+
emit('cancel')
|
|
24
|
+
open.value = false
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const confirmButtonVariant = computed(() => {
|
|
28
|
+
return props.variant === 'danger' ? 'danger' : 'primary'
|
|
29
|
+
})
|
|
30
|
+
</script>
|
|
31
|
+
|
|
32
|
+
<template>
|
|
33
|
+
<TelaModal
|
|
34
|
+
v-model:model-value="open"
|
|
35
|
+
:compact="props.compact ?? true"
|
|
36
|
+
hide-dividers
|
|
37
|
+
@close="emit('cancel')"
|
|
38
|
+
>
|
|
39
|
+
<template #actions>
|
|
40
|
+
<DialogClose as-child>
|
|
41
|
+
<TelaIconButton
|
|
42
|
+
absolute
|
|
43
|
+
top-8px
|
|
44
|
+
right-8px
|
|
45
|
+
icon="i-ph-x"
|
|
46
|
+
size="md"
|
|
47
|
+
color="secondary"
|
|
48
|
+
outline-none
|
|
49
|
+
@click="handleCloseClick"
|
|
50
|
+
/>
|
|
51
|
+
</DialogClose>
|
|
52
|
+
</template>
|
|
53
|
+
<div flex="~ col" w-400px>
|
|
54
|
+
<h6 body-20-semibold text-gray-900>
|
|
55
|
+
{{ props.title }}
|
|
56
|
+
</h6>
|
|
57
|
+
<div body-16-regular text-gray-700 mt-8px>
|
|
58
|
+
<slot />
|
|
59
|
+
</div>
|
|
60
|
+
</div>
|
|
61
|
+
<template #footer>
|
|
62
|
+
<div flex="~" gap-8px w-full justify-between>
|
|
63
|
+
<TelaButton :disabled="props.loading" size="lg" variant="secondary" @click="emit('cancel')">
|
|
64
|
+
{{ props.cancelButtonText ?? 'Cancel' }}
|
|
65
|
+
</TelaButton>
|
|
66
|
+
<TelaButton :loading="props.loading" size="lg" :variant="confirmButtonVariant" @click="emit('confirm')">
|
|
67
|
+
{{ props.confirmButtonText ?? 'Confirm' }}
|
|
68
|
+
</TelaButton>
|
|
69
|
+
</div>
|
|
70
|
+
</template>
|
|
71
|
+
</TelaModal>
|
|
72
|
+
</template>
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { UseClipboard } from '@vueuse/components'
|
|
3
|
+
|
|
4
|
+
const props = defineProps({
|
|
5
|
+
content: {
|
|
6
|
+
type: String,
|
|
7
|
+
required: true,
|
|
8
|
+
},
|
|
9
|
+
size: {
|
|
10
|
+
type: String as () => 'sm' | 'md' | 'lg',
|
|
11
|
+
default: 'md',
|
|
12
|
+
required: false,
|
|
13
|
+
},
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
const statusToast = useStatusToast()
|
|
17
|
+
|
|
18
|
+
const showConfirmationIcon = ref(false)
|
|
19
|
+
|
|
20
|
+
const sizeStyles = computed(() => ({
|
|
21
|
+
sm: 'h-20px w-20px',
|
|
22
|
+
md: 'h-24px w-24px',
|
|
23
|
+
lg: 'h-32px w-32px',
|
|
24
|
+
} as Record<typeof props.size, string>)[props.size])
|
|
25
|
+
|
|
26
|
+
function onClick(copyFn: (content: string) => void) {
|
|
27
|
+
showConfirmationIcon.value = true
|
|
28
|
+
|
|
29
|
+
copyFn(props.content)
|
|
30
|
+
|
|
31
|
+
statusToast.update({
|
|
32
|
+
text: 'Copied to clipboard',
|
|
33
|
+
icon: 'i-ph-check',
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
setTimeout(() => {
|
|
37
|
+
showConfirmationIcon.value = false
|
|
38
|
+
}, 1500)
|
|
39
|
+
}
|
|
40
|
+
</script>
|
|
41
|
+
|
|
42
|
+
<template>
|
|
43
|
+
<div>
|
|
44
|
+
<UseClipboard v-slot="{ copy }">
|
|
45
|
+
<slot :copy="() => onClick(copy)">
|
|
46
|
+
<button
|
|
47
|
+
hover:bg="#EBEFF199"
|
|
48
|
+
relative
|
|
49
|
+
rounded-full
|
|
50
|
+
flex="~ " justify-center
|
|
51
|
+
class="group"
|
|
52
|
+
:class="[
|
|
53
|
+
showConfirmationIcon && 'bg-#D0F9ED !hover:bg-#D0F9ED',
|
|
54
|
+
sizeStyles,
|
|
55
|
+
]"
|
|
56
|
+
@click="onClick(copy)"
|
|
57
|
+
>
|
|
58
|
+
<Transition name="appear">
|
|
59
|
+
<TelaIcon
|
|
60
|
+
v-if="!showConfirmationIcon"
|
|
61
|
+
absolute
|
|
62
|
+
class="top-1/2 translate-y--1/2"
|
|
63
|
+
:size="size"
|
|
64
|
+
name="i-ph-copy"
|
|
65
|
+
color="#031E22"
|
|
66
|
+
op-80
|
|
67
|
+
group-hover:op-100
|
|
68
|
+
/>
|
|
69
|
+
</Transition>
|
|
70
|
+
<Transition name="appear">
|
|
71
|
+
<TelaIcon
|
|
72
|
+
v-if="showConfirmationIcon"
|
|
73
|
+
absolute
|
|
74
|
+
class="top-1/2 translate-y--1/2"
|
|
75
|
+
:size="size"
|
|
76
|
+
name="i-ph-check"
|
|
77
|
+
color="#327558"
|
|
78
|
+
op-80
|
|
79
|
+
group-hover:op-100
|
|
80
|
+
/>
|
|
81
|
+
</Transition>
|
|
82
|
+
</button>
|
|
83
|
+
</slot>
|
|
84
|
+
</UseClipboard>
|
|
85
|
+
</div>
|
|
86
|
+
</template>
|