@dolanske/vui 0.3.4 → 0.5.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 (114) hide show
  1. package/LICENSE +673 -673
  2. package/README.md +41 -40
  3. package/dist/components/Dropdown/DropdownItem.vue.d.ts +1 -0
  4. package/dist/components/Flex/Flex.vue.d.ts +3 -1
  5. package/dist/components/Grid/Grid.vue.d.ts +3 -1
  6. package/dist/components/Tabs/Tabs.vue.d.ts +4 -0
  7. package/dist/style.css +1 -1
  8. package/dist/vui.js +1547 -1534
  9. package/package.json +68 -68
  10. package/src/App.vue +176 -175
  11. package/src/components/Accordion/Accordion.vue +91 -91
  12. package/src/components/Accordion/AccordionGroup.vue +43 -43
  13. package/src/components/Accordion/accordion.scss +81 -80
  14. package/src/components/Alert/Alert.vue +53 -53
  15. package/src/components/Alert/alert.scss +80 -80
  16. package/src/components/Avatar/Avatar.vue +50 -50
  17. package/src/components/Avatar/avatar.scss +52 -52
  18. package/src/components/Badge/Badge.vue +21 -21
  19. package/src/components/Badge/badge.scss +89 -89
  20. package/src/components/Breadcrumbs/BreadcrumbItem.vue +26 -26
  21. package/src/components/Breadcrumbs/Breadcrumbs.vue +33 -33
  22. package/src/components/Breadcrumbs/breadcrumbs.scss +30 -30
  23. package/src/components/Button/Button.vue +90 -90
  24. package/src/components/Button/button.scss +178 -176
  25. package/src/components/ButtonGroup/ButtonGroup.vue +25 -25
  26. package/src/components/ButtonGroup/button-group.scss +51 -51
  27. package/src/components/Calendar/Calendar.vue +63 -60
  28. package/src/components/Calendar/calendar.scss +60 -56
  29. package/src/components/Card/Card.vue +48 -48
  30. package/src/components/Card/card.scss +53 -53
  31. package/src/components/Checkbox/Checkbox.vue +51 -52
  32. package/src/components/Checkbox/checkbox.scss +75 -66
  33. package/src/components/CopyClipboard/CopyClipboard.vue +82 -82
  34. package/src/components/CopyClipboard/copy-clipboard.scss +17 -17
  35. package/src/components/Divider/Divider.vue +44 -44
  36. package/src/components/Divider/divider.scss +35 -35
  37. package/src/components/Drawer/Drawer.vue +97 -97
  38. package/src/components/Drawer/drawer.scss +36 -36
  39. package/src/components/Dropdown/Dropdown.vue +111 -111
  40. package/src/components/Dropdown/DropdownItem.vue +33 -29
  41. package/src/components/Dropdown/DropdownTitle.vue +8 -8
  42. package/src/components/Dropdown/dropdown-item.scss +77 -0
  43. package/src/components/Dropdown/dropdown.scss +39 -117
  44. package/src/components/Flex/Flex.vue +113 -106
  45. package/src/components/Grid/Grid.vue +60 -54
  46. package/src/components/Input/Counter.vue +70 -70
  47. package/src/components/Input/Dropzone.vue +65 -65
  48. package/src/components/Input/File.vue +15 -15
  49. package/src/components/Input/Input.vue +121 -121
  50. package/src/components/Input/Password.vue +47 -47
  51. package/src/components/Input/Textarea.vue +76 -76
  52. package/src/components/Input/input.scss +208 -208
  53. package/src/components/Kbd/Kbd.vue +48 -48
  54. package/src/components/Kbd/KbdGroup.vue +31 -31
  55. package/src/components/Kbd/kbd.scss +18 -18
  56. package/src/components/Modal/Confirm.vue +56 -56
  57. package/src/components/Modal/Modal.vue +91 -91
  58. package/src/components/Modal/modal.scss +49 -49
  59. package/src/components/OTP/OTP.vue +133 -133
  60. package/src/components/OTP/OTPItem.vue +37 -37
  61. package/src/components/OTP/otp.scss +83 -83
  62. package/src/components/Pagination/Pagination.vue +74 -74
  63. package/src/components/Pagination/pagination.ts +78 -78
  64. package/src/components/Popout/Popout.vue +42 -42
  65. package/src/components/Popout/popout.scss +8 -8
  66. package/src/components/Progress/Progress.vue +90 -90
  67. package/src/components/Progress/progress.scss +41 -41
  68. package/src/components/Radio/Radio.vue +36 -36
  69. package/src/components/Radio/RadioGroup.vue +40 -40
  70. package/src/components/Radio/radio.scss +68 -59
  71. package/src/components/Select/Select.vue +180 -180
  72. package/src/components/Select/select.scss +44 -44
  73. package/src/components/Sheet/Sheet.vue +92 -92
  74. package/src/components/Sheet/sheet.scss +60 -60
  75. package/src/components/Sidebar/Sidebar.vue +102 -0
  76. package/src/components/Sidebar/sidebar.scss +123 -0
  77. package/src/components/Skeleton/Skeleton.vue +43 -43
  78. package/src/components/Skeleton/skeleton.scss +14 -14
  79. package/src/components/Spinner/Spinner.vue +42 -42
  80. package/src/components/Spinner/spinner.scss +46 -46
  81. package/src/components/Switch/Switch.vue +30 -30
  82. package/src/components/Switch/switch.scss +60 -52
  83. package/src/components/Table/Cell.vue +23 -23
  84. package/src/components/Table/Header.vue +59 -59
  85. package/src/components/Table/Row.vue +9 -9
  86. package/src/components/Table/SelectAll.vue +23 -23
  87. package/src/components/Table/SelectRow.vue +29 -29
  88. package/src/components/Table/Table.vue +66 -66
  89. package/src/components/Table/table.scss +134 -134
  90. package/src/components/Table/table.ts +244 -244
  91. package/src/components/Tabs/Tab.vue +27 -27
  92. package/src/components/Tabs/Tabs.vue +89 -82
  93. package/src/components/Tabs/tabs.scss +80 -79
  94. package/src/components/Toast/Toasts.vue +47 -47
  95. package/src/components/Toast/toast.scss +41 -41
  96. package/src/components/Toast/toast.ts +68 -68
  97. package/src/components/Tooltip/Tooltip.vue +86 -86
  98. package/src/components/Tooltip/tooltip.scss +4 -4
  99. package/src/index.scss +1 -1
  100. package/src/index.ts +119 -119
  101. package/src/internal/Backdrop/Backdrop.vue +22 -22
  102. package/src/internal/Backdrop/backdrop.scss +28 -28
  103. package/src/main.ts +5 -5
  104. package/src/shared/helpers.ts +74 -74
  105. package/src/shared/types.ts +29 -29
  106. package/src/style/animation.scss +21 -21
  107. package/src/style/core.scss +150 -148
  108. package/src/style/layout.scss +168 -136
  109. package/src/style/media-query.scss +29 -29
  110. package/src/style/reset.scss +135 -135
  111. package/src/style/{fonts.scss → text.scss} +74 -53
  112. package/src/style/tooltip.scss +128 -128
  113. package/src/style/typography.scss +338 -338
  114. package/src/style/utils.scss +36 -36
@@ -1,86 +1,86 @@
1
- <script setup lang='ts'>
2
- import type { Placement } from '../../shared/types'
3
- import { ref, useId, useTemplateRef, watch } from 'vue'
4
- import Popout from '../Popout/Popout.vue'
5
- import './tooltip.scss'
6
-
7
- interface Props {
8
- /**
9
- * Tooltip placement related to the anchor
10
- */
11
- placement?: Placement
12
- /**
13
- * Amount of time user should hover the anchor until the tooltip shows up
14
- */
15
- delay?: number
16
- }
17
-
18
- const {
19
- placement = 'bottom',
20
- delay = 0,
21
- } = defineProps<Props>()
22
-
23
- const popoutAnchorRef = useTemplateRef('popoutAnchor')
24
- // Track if user is hovering the anchor
25
- const hoverAnchor = ref(false)
26
-
27
- // Display tooltip
28
- const showTooltip = ref(false)
29
-
30
- let timeoutId: NodeJS.Timeout
31
- watch(hoverAnchor, (isHovering) => {
32
- if (isHovering) {
33
- if (!delay || delay <= 0) {
34
- showTooltip.value = true
35
- return
36
- }
37
-
38
- clearTimeout(timeoutId)
39
-
40
- timeoutId = setTimeout(() => {
41
- // Need to reference the ref itself as this will execute without the
42
- // outside scope (as far as I know tbh)
43
- if (hoverAnchor.value) {
44
- showTooltip.value = true
45
- }
46
- }, delay)
47
- }
48
- else {
49
- clearTimeout(timeoutId)
50
- showTooltip.value = false
51
- }
52
- })
53
-
54
- const id = useId()
55
- </script>
56
-
57
- <template>
58
- <div
59
- ref="popoutAnchor"
60
- :style="{
61
- width: 'fit-content',
62
- }"
63
- :aria-describedby="id"
64
- @mouseenter="hoverAnchor = true"
65
- @mouseleave="hoverAnchor = false"
66
- >
67
- <slot />
68
- </div>
69
- <Transition appear name="tooltip">
70
- <Popout v-if="showTooltip" :id :anchor="popoutAnchorRef" class="vui-tooltip" :placement name="tooltip">
71
- <slot name="tooltip" />
72
- </Popout>
73
- </Transition>
74
- </template>
75
-
76
- <style scoped>
77
- .tooltip-enter-active,
78
- .tooltip-leave-active {
79
- transition: 0.1s opacity ease-in-out;
80
- }
81
-
82
- .tooltip-enter-from,
83
- .tooltip-leave-to {
84
- opacity: 0;
85
- }
86
- </style>
1
+ <script setup lang='ts'>
2
+ import type { Placement } from '../../shared/types'
3
+ import { ref, useId, useTemplateRef, watch } from 'vue'
4
+ import Popout from '../Popout/Popout.vue'
5
+ import './tooltip.scss'
6
+
7
+ interface Props {
8
+ /**
9
+ * Tooltip placement related to the anchor
10
+ */
11
+ placement?: Placement
12
+ /**
13
+ * Amount of time user should hover the anchor until the tooltip shows up
14
+ */
15
+ delay?: number
16
+ }
17
+
18
+ const {
19
+ placement = 'bottom',
20
+ delay = 0,
21
+ } = defineProps<Props>()
22
+
23
+ const popoutAnchorRef = useTemplateRef('popoutAnchor')
24
+ // Track if user is hovering the anchor
25
+ const hoverAnchor = ref(false)
26
+
27
+ // Display tooltip
28
+ const showTooltip = ref(false)
29
+
30
+ let timeoutId: NodeJS.Timeout
31
+ watch(hoverAnchor, (isHovering) => {
32
+ if (isHovering) {
33
+ if (!delay || delay <= 0) {
34
+ showTooltip.value = true
35
+ return
36
+ }
37
+
38
+ clearTimeout(timeoutId)
39
+
40
+ timeoutId = setTimeout(() => {
41
+ // Need to reference the ref itself as this will execute without the
42
+ // outside scope (as far as I know tbh)
43
+ if (hoverAnchor.value) {
44
+ showTooltip.value = true
45
+ }
46
+ }, delay)
47
+ }
48
+ else {
49
+ clearTimeout(timeoutId)
50
+ showTooltip.value = false
51
+ }
52
+ })
53
+
54
+ const id = useId()
55
+ </script>
56
+
57
+ <template>
58
+ <div
59
+ ref="popoutAnchor"
60
+ :style="{
61
+ width: 'fit-content',
62
+ }"
63
+ :aria-describedby="id"
64
+ @mouseenter="hoverAnchor = true"
65
+ @mouseleave="hoverAnchor = false"
66
+ >
67
+ <slot />
68
+ </div>
69
+ <Transition appear name="tooltip">
70
+ <Popout v-if="showTooltip" :id :anchor="popoutAnchorRef" class="vui-tooltip" :placement name="tooltip">
71
+ <slot name="tooltip" />
72
+ </Popout>
73
+ </Transition>
74
+ </template>
75
+
76
+ <style scoped>
77
+ .tooltip-enter-active,
78
+ .tooltip-leave-active {
79
+ transition: 0.1s opacity ease-in-out;
80
+ }
81
+
82
+ .tooltip-enter-from,
83
+ .tooltip-leave-to {
84
+ opacity: 0;
85
+ }
86
+ </style>
@@ -1,4 +1,4 @@
1
- .vui-tooltip {
2
- padding: var(--space-s);
3
- max-width: 512px;
4
- }
1
+ .vui-tooltip {
2
+ padding: var(--space-s);
3
+ max-width: 512px;
4
+ }
package/src/index.scss CHANGED
@@ -1 +1 @@
1
- @import url(./style/core.scss);
1
+ @import url(./style/core.scss);
package/src/index.ts CHANGED
@@ -1,119 +1,119 @@
1
- import Accordion from './components/Accordion/Accordion.vue'
2
- import AccordionGroup from './components/Accordion/AccordionGroup.vue'
3
- import Alert from './components/Alert/Alert.vue'
4
- import Avatar from './components/Avatar/Avatar.vue'
5
- import Badge from './components/Badge/Badge.vue'
6
- import BreadcrumbItem from './components/Breadcrumbs/BreadcrumbItem.vue'
7
- import Breadcrumbs from './components/Breadcrumbs/Breadcrumbs.vue'
8
- import Button from './components/Button/Button.vue'
9
- import ButtonGroup from './components/ButtonGroup/ButtonGroup.vue'
10
- import Calendar from './components/Calendar/Calendar.vue'
11
- import Card from './components/Card/Card.vue'
12
- import Checkbox from './components/Checkbox/Checkbox.vue'
13
- import CopyClipboard from './components/CopyClipboard/CopyClipboard.vue'
14
- import Divider from './components/Divider/Divider.vue'
15
- import Drawer from './components/Drawer/Drawer.vue'
16
- import Dropdown from './components/Dropdown/Dropdown.vue'
17
- import DropdownItem from './components/Dropdown/DropdownItem.vue'
18
- import DropdownTitle from './components/Dropdown/DropdownTitle.vue'
19
- import Flex from './components/Flex/Flex.vue'
20
- import Grid from './components/Grid/Grid.vue'
21
- import Counter from './components/Input/Counter.vue'
22
- import Dropzone from './components/Input/Dropzone.vue'
23
- import File from './components/Input/File.vue'
24
- import Input from './components/Input/Input.vue'
25
- import Password from './components/Input/Password.vue'
26
- import Textarea from './components/Input/Textarea.vue'
27
- import Kbd from './components/Kbd/Kbd.vue'
28
- import KbdGroup from './components/Kbd/KbdGroup.vue'
29
- import Confirm from './components/Modal/Confirm.vue'
30
- import Modal from './components/Modal/Modal.vue'
31
- import OTP from './components/OTP/OTP.vue'
32
- import OTPItem from './components/OTP/OTPItem.vue'
33
- import { paginate } from './components/Pagination/pagination'
34
- import Pagination from './components/Pagination/Pagination.vue'
35
- import Popout from './components/Popout/Popout.vue'
36
- import Progress from './components/Progress/Progress.vue'
37
- import Radio from './components/Radio/Radio.vue'
38
- import RadioGroup from './components/Radio/RadioGroup.vue'
39
- import Select from './components/Select/Select.vue'
40
- import Sheet from './components/Sheet/Sheet.vue'
41
- import Skeleton from './components/Skeleton/Skeleton.vue'
42
- import Spinner from './components/Spinner/Spinner.vue'
43
- import Switch from './components/Switch/Switch.vue'
44
- import Cell from './components/Table/Cell.vue'
45
- import Header from './components/Table/Header.vue'
46
- import Row from './components/Table/Row.vue'
47
- import SelectAll from './components/Table/SelectAll.vue'
48
- import SelectRow from './components/Table/SelectRow.vue'
49
- import { defineTable } from './components/Table/table'
50
- import Table from './components/Table/Table.vue'
51
- import Tab from './components/Tabs/Tab.vue'
52
- import Tabs from './components/Tabs/Tabs.vue'
53
- import { pushToast, removeToast } from './components/Toast/toast'
54
- import Toasts from './components/Toast/Toasts.vue'
55
- import Tooltip from './components/Tooltip/Tooltip.vue'
56
- import Backdrop from './internal/Backdrop/Backdrop.vue'
57
- import { searchString } from './shared/helpers'
58
- import './index.scss'
59
-
60
- export {
61
- Accordion,
62
- AccordionGroup,
63
- Alert,
64
- Avatar,
65
- Backdrop,
66
- Badge,
67
- BreadcrumbItem,
68
- Breadcrumbs,
69
- Button,
70
- ButtonGroup,
71
- Calendar,
72
- Card,
73
- Cell,
74
- Checkbox,
75
- Confirm,
76
- CopyClipboard,
77
- Counter,
78
- defineTable,
79
- Divider,
80
- Drawer,
81
- Dropdown,
82
- DropdownItem,
83
- DropdownTitle,
84
- Dropzone,
85
- File,
86
- Flex,
87
- Grid,
88
- Header,
89
- Input,
90
- Kbd,
91
- KbdGroup,
92
- Modal,
93
- OTP,
94
- OTPItem,
95
- paginate,
96
- Pagination,
97
- Password,
98
- Popout,
99
- Progress,
100
- pushToast,
101
- Radio,
102
- RadioGroup,
103
- removeToast,
104
- Row,
105
- searchString,
106
- Select,
107
- SelectAll,
108
- SelectRow,
109
- Sheet,
110
- Skeleton,
111
- Spinner,
112
- Switch,
113
- Tab,
114
- Table,
115
- Tabs,
116
- Textarea,
117
- Toasts,
118
- Tooltip,
119
- }
1
+ import Accordion from './components/Accordion/Accordion.vue'
2
+ import AccordionGroup from './components/Accordion/AccordionGroup.vue'
3
+ import Alert from './components/Alert/Alert.vue'
4
+ import Avatar from './components/Avatar/Avatar.vue'
5
+ import Badge from './components/Badge/Badge.vue'
6
+ import BreadcrumbItem from './components/Breadcrumbs/BreadcrumbItem.vue'
7
+ import Breadcrumbs from './components/Breadcrumbs/Breadcrumbs.vue'
8
+ import Button from './components/Button/Button.vue'
9
+ import ButtonGroup from './components/ButtonGroup/ButtonGroup.vue'
10
+ import Calendar from './components/Calendar/Calendar.vue'
11
+ import Card from './components/Card/Card.vue'
12
+ import Checkbox from './components/Checkbox/Checkbox.vue'
13
+ import CopyClipboard from './components/CopyClipboard/CopyClipboard.vue'
14
+ import Divider from './components/Divider/Divider.vue'
15
+ import Drawer from './components/Drawer/Drawer.vue'
16
+ import Dropdown from './components/Dropdown/Dropdown.vue'
17
+ import DropdownItem from './components/Dropdown/DropdownItem.vue'
18
+ import DropdownTitle from './components/Dropdown/DropdownTitle.vue'
19
+ import Flex from './components/Flex/Flex.vue'
20
+ import Grid from './components/Grid/Grid.vue'
21
+ import Counter from './components/Input/Counter.vue'
22
+ import Dropzone from './components/Input/Dropzone.vue'
23
+ import File from './components/Input/File.vue'
24
+ import Input from './components/Input/Input.vue'
25
+ import Password from './components/Input/Password.vue'
26
+ import Textarea from './components/Input/Textarea.vue'
27
+ import Kbd from './components/Kbd/Kbd.vue'
28
+ import KbdGroup from './components/Kbd/KbdGroup.vue'
29
+ import Confirm from './components/Modal/Confirm.vue'
30
+ import Modal from './components/Modal/Modal.vue'
31
+ import OTP from './components/OTP/OTP.vue'
32
+ import OTPItem from './components/OTP/OTPItem.vue'
33
+ import { paginate } from './components/Pagination/pagination'
34
+ import Pagination from './components/Pagination/Pagination.vue'
35
+ import Popout from './components/Popout/Popout.vue'
36
+ import Progress from './components/Progress/Progress.vue'
37
+ import Radio from './components/Radio/Radio.vue'
38
+ import RadioGroup from './components/Radio/RadioGroup.vue'
39
+ import Select from './components/Select/Select.vue'
40
+ import Sheet from './components/Sheet/Sheet.vue'
41
+ import Skeleton from './components/Skeleton/Skeleton.vue'
42
+ import Spinner from './components/Spinner/Spinner.vue'
43
+ import Switch from './components/Switch/Switch.vue'
44
+ import Cell from './components/Table/Cell.vue'
45
+ import Header from './components/Table/Header.vue'
46
+ import Row from './components/Table/Row.vue'
47
+ import SelectAll from './components/Table/SelectAll.vue'
48
+ import SelectRow from './components/Table/SelectRow.vue'
49
+ import { defineTable } from './components/Table/table'
50
+ import Table from './components/Table/Table.vue'
51
+ import Tab from './components/Tabs/Tab.vue'
52
+ import Tabs from './components/Tabs/Tabs.vue'
53
+ import { pushToast, removeToast } from './components/Toast/toast'
54
+ import Toasts from './components/Toast/Toasts.vue'
55
+ import Tooltip from './components/Tooltip/Tooltip.vue'
56
+ import Backdrop from './internal/Backdrop/Backdrop.vue'
57
+ import { searchString } from './shared/helpers'
58
+ import './index.scss'
59
+
60
+ export {
61
+ Accordion,
62
+ AccordionGroup,
63
+ Alert,
64
+ Avatar,
65
+ Backdrop,
66
+ Badge,
67
+ BreadcrumbItem,
68
+ Breadcrumbs,
69
+ Button,
70
+ ButtonGroup,
71
+ Calendar,
72
+ Card,
73
+ Cell,
74
+ Checkbox,
75
+ Confirm,
76
+ CopyClipboard,
77
+ Counter,
78
+ defineTable,
79
+ Divider,
80
+ Drawer,
81
+ Dropdown,
82
+ DropdownItem,
83
+ DropdownTitle,
84
+ Dropzone,
85
+ File,
86
+ Flex,
87
+ Grid,
88
+ Header,
89
+ Input,
90
+ Kbd,
91
+ KbdGroup,
92
+ Modal,
93
+ OTP,
94
+ OTPItem,
95
+ paginate,
96
+ Pagination,
97
+ Password,
98
+ Popout,
99
+ Progress,
100
+ pushToast,
101
+ Radio,
102
+ RadioGroup,
103
+ removeToast,
104
+ Row,
105
+ searchString,
106
+ Select,
107
+ SelectAll,
108
+ SelectRow,
109
+ Sheet,
110
+ Skeleton,
111
+ Spinner,
112
+ Switch,
113
+ Tab,
114
+ Table,
115
+ Tabs,
116
+ Textarea,
117
+ Toasts,
118
+ Tooltip,
119
+ }
@@ -1,22 +1,22 @@
1
- <script setup lang="ts">
2
- import { onMounted } from 'vue'
3
- import './backdrop.scss'
4
-
5
- const emits = defineEmits<{
6
- (e: 'close'): void
7
- }>()
8
-
9
- onMounted(() => {
10
- window.addEventListener('keydown', (e) => {
11
- if (e.key === 'Escape') {
12
- emits('close')
13
- }
14
- })
15
- })
16
- </script>
17
-
18
- <template>
19
- <div class="vui-backdrop" @click.self="emits('close')">
20
- <slot />
21
- </div>
22
- </template>
1
+ <script setup lang="ts">
2
+ import { onMounted } from 'vue'
3
+ import './backdrop.scss'
4
+
5
+ const emits = defineEmits<{
6
+ (e: 'close'): void
7
+ }>()
8
+
9
+ onMounted(() => {
10
+ window.addEventListener('keydown', (e) => {
11
+ if (e.key === 'Escape') {
12
+ emits('close')
13
+ }
14
+ })
15
+ })
16
+ </script>
17
+
18
+ <template>
19
+ <div class="vui-backdrop" @click.self="emits('close')">
20
+ <slot />
21
+ </div>
22
+ </template>
@@ -1,28 +1,28 @@
1
- :root {
2
- --backdrop-offset: 64px;
3
- }
4
-
5
- .vui-backdrop {
6
- z-index: 1000;
7
- position: fixed;
8
- display: block;
9
- width: 100dvw;
10
- height: 100dvh;
11
- top: 0;
12
- left: 0;
13
- padding: var(--backdrop-offset);
14
- overflow-y: auto;
15
-
16
- &:after {
17
- content: '';
18
- position: fixed;
19
- z-index: -1;
20
- inset: 0;
21
- background-color: var(--color-bg-lowered);
22
- opacity: 0.9;
23
- }
24
- }
25
-
26
- html:has(.vui-backdrop) {
27
- overflow: hidden;
28
- }
1
+ :root {
2
+ --backdrop-offset: 64px;
3
+ }
4
+
5
+ .vui-backdrop {
6
+ z-index: 1000;
7
+ position: fixed;
8
+ display: block;
9
+ width: 100dvw;
10
+ height: 100dvh;
11
+ top: 0;
12
+ left: 0;
13
+ padding: var(--backdrop-offset);
14
+ overflow-y: auto;
15
+
16
+ &:after {
17
+ content: '';
18
+ position: fixed;
19
+ z-index: -1;
20
+ inset: 0;
21
+ background-color: var(--color-bg-lowered);
22
+ opacity: 0.9;
23
+ }
24
+ }
25
+
26
+ html:has(.vui-backdrop) {
27
+ overflow: hidden;
28
+ }
package/src/main.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { createApp } from 'vue'
2
- import App from './App.vue'
3
- import './style/core.scss'
4
-
5
- createApp(App).mount('#app')
1
+ import { createApp } from 'vue'
2
+ import App from './App.vue'
3
+ import './style/core.scss'
4
+
5
+ createApp(App).mount('#app')