@geode/opengeodeweb-front 10.3.2-rc.1 → 10.3.2

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.
@@ -1,13 +1,7 @@
1
1
  <script setup>
2
- const {
3
- multiple,
4
- accept,
5
- loading,
6
- showExtensions,
7
- idleText,
8
- dropText,
9
- loadingText,
10
- } = defineProps({
2
+ import GlassCard from "@ogw_front/components/GlassCard"
3
+
4
+ const props = defineProps({
11
5
  multiple: { type: Boolean, default: false },
12
6
  accept: { type: String, default: "" },
13
7
  loading: { type: Boolean, default: false },
@@ -41,29 +35,26 @@
41
35
 
42
36
  <template>
43
37
  <v-hover v-slot="{ isHovering, props: hoverProps }">
44
- <v-card
38
+ <GlassCard
45
39
  v-bind="hoverProps"
46
- class="text-center cursor-pointer"
40
+ class="text-center cursor-pointer overflow-hidden border-opacity-10 border-white"
47
41
  :class="{
48
42
  'elevation-4': isHovering || isDragging,
49
43
  'elevation-0': !(isHovering || isDragging),
50
44
  }"
51
45
  :style="{
52
46
  position: 'relative',
53
- overflow: 'hidden',
54
- transition: 'all 0.3s ease',
47
+ transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)',
55
48
  background:
56
49
  isHovering || isDragging
57
- ? 'rgba(var(--v-theme-primary), 0.05)'
58
- : 'rgba(0, 0, 0, 0.02)',
59
- border: `2px dashed ${
60
- isHovering || isDragging ? 'rgb(var(--v-theme-primary))' : '#e0e0e0'
61
- }`,
50
+ ? 'rgba(255, 255, 255, 0.08) !important'
51
+ : 'rgba(255, 255, 255, 0.03) !important',
62
52
  transform: isHovering || isDragging ? 'translateY(-2px)' : 'none',
63
53
  pointerEvents: loading ? 'none' : 'auto',
64
54
  opacity: loading ? 0.6 : 1,
65
55
  }"
66
- rounded="xl"
56
+ variant="panel"
57
+ padding="pa-0"
67
58
  @click="triggerFileDialog"
68
59
  @dragover.prevent="isDragging = true"
69
60
  @dragleave.prevent="isDragging = false"
@@ -72,8 +63,9 @@
72
63
  <v-card-text class="pa-8">
73
64
  <v-sheet
74
65
  class="mx-auto mb-6 d-flex align-center justify-center"
75
- :color="isHovering || isDragging ? 'primary' : 'grey-lighten-2'"
76
- :elevation="isHovering || isDragging ? 4 : 0"
66
+ :color="
67
+ isHovering || isDragging ? 'white' : 'rgba(255, 255, 255, 0.1)'
68
+ "
77
69
  rounded="circle"
78
70
  width="80"
79
71
  height="80"
@@ -82,16 +74,13 @@
82
74
  <v-icon
83
75
  :icon="loading ? 'mdi-loading' : 'mdi-cloud-upload'"
84
76
  size="40"
85
- :color="isHovering || isDragging ? 'white' : 'grey-darken-1'"
77
+ :color="isHovering || isDragging ? 'primary' : 'white'"
86
78
  :class="{ rotating: loading }"
87
79
  />
88
80
  </v-sheet>
89
81
 
90
82
  <v-card-title
91
- class="text-h6 font-weight-bold justify-center pa-0 mb-1"
92
- :class="
93
- isHovering || isDragging ? 'text-primary' : 'text-grey-darken-2'
94
- "
83
+ class="text-h6 font-weight-bold justify-center pa-0 mb-1 text-white"
95
84
  style="transition: color 0.3s ease"
96
85
  >
97
86
  {{ loading ? loadingText : isDragging ? dropText : idleText }}
@@ -110,7 +99,7 @@
110
99
  :accept="accept"
111
100
  @change="handleFileSelect"
112
101
  />
113
- </v-card>
102
+ </GlassCard>
114
103
  </v-hover>
115
104
  </template>
116
105
 
@@ -81,43 +81,60 @@
81
81
  @files-selected="processSelectedFiles"
82
82
  />
83
83
 
84
- <v-card-text v-if="internal_files.length" class="mt-4">
85
- <v-sheet class="d-flex align-center mb-3" color="transparent">
86
- <v-icon icon="mdi-file-check" class="mr-2" color="primary" />
87
- <span class="text-subtitle-2 font-weight-bold"> Selected Files </span>
88
- <v-chip size="x-small" class="ml-2" color="primary" variant="flat">
84
+ <v-card-text v-if="internal_files.length" class="mt-6">
85
+ <v-sheet class="d-flex align-center mb-4" color="transparent">
86
+ <v-icon icon="mdi-file-check" class="mr-3" color="primary" size="24" />
87
+ <span class="text-subtitle-1 font-weight-bold text-white">
88
+ Selected Files
89
+ </span>
90
+ <v-chip
91
+ size="small"
92
+ class="ml-3 bg-white-opacity-10"
93
+ color="white"
94
+ variant="flat"
95
+ >
89
96
  {{ internal_files.length }}
90
97
  </v-chip>
91
98
  </v-sheet>
92
99
 
93
- <v-sheet class="d-flex flex-wrap gap-2" color="transparent">
100
+ <v-sheet class="d-flex flex-wrap ga-2" color="transparent">
94
101
  <v-chip
95
102
  v-for="(file, index) in internal_files"
96
103
  :key="index"
97
104
  closable
98
- size="small"
99
- color="primary"
100
- variant="tonal"
101
- class="font-weight-medium"
105
+ size="default"
106
+ color="white"
107
+ variant="outlined"
108
+ class="font-weight-medium glass-ui border-opacity-10 px-4"
109
+ style="background: rgba(255, 255, 255, 0.05) !important"
102
110
  @click:close="removeFile(index)"
103
111
  >
104
- <v-icon start size="16">mdi-file-outline</v-icon>
105
- {{ file.name }}
112
+ <v-icon start size="18" color="primary">mdi-file-outline</v-icon>
113
+ <span class="text-white">{{ file.name }}</span>
114
+ <template #close>
115
+ <v-icon size="16" class="ml-2 opacity-60 hover-opacity-100"
116
+ >mdi-close-circle</v-icon
117
+ >
118
+ </template>
106
119
  </v-chip>
107
120
  </v-sheet>
108
121
  </v-card-text>
109
122
 
110
- <v-card-actions v-if="!auto_upload && internal_files.length > 0">
123
+ <v-card-actions
124
+ v-if="!auto_upload && internal_files.length"
125
+ class="mt-6 pa-0"
126
+ >
111
127
  <v-btn
112
128
  color="primary"
113
- variant="elevated"
129
+ variant="flat"
114
130
  size="large"
115
- rounded="lg"
131
+ rounded="xl"
116
132
  :loading="loading"
117
- class="text-none px-3 font-weight-bold"
133
+ class="text-none px-6 font-weight-bold custom-upload-btn"
134
+ block
118
135
  @click="upload_files"
119
136
  >
120
- <v-icon start size="20">mdi-cloud-upload-outline</v-icon>
137
+ <v-icon start size="22">mdi-cloud-upload</v-icon>
121
138
  Upload {{ internal_files.length }} file<span
122
139
  v-if="internal_files.length > 1"
123
140
  >s</span
@@ -0,0 +1,50 @@
1
+ <script setup>
2
+ defineProps({
3
+ variant: {
4
+ type: String,
5
+ default: "panel",
6
+ validator: (v) => ["panel", "ui"].includes(v),
7
+ },
8
+ rounded: { type: String, default: "xl" },
9
+ padding: { type: String, default: "pa-6" },
10
+ theme: { type: String, default: null },
11
+ })
12
+
13
+ const attrs = useAttrs()
14
+ const isInteractive = computed(() => !!attrs.onClick)
15
+ </script>
16
+
17
+ <template>
18
+ <v-card
19
+ v-bind="$attrs"
20
+ @mousedown.stop
21
+ @click.stop
22
+ @dblclick.stop
23
+ @wheel.stop
24
+ @contextmenu.stop
25
+ flat
26
+ :ripple="isInteractive"
27
+ :theme="theme || (variant === 'panel' ? 'dark' : undefined)"
28
+ :class="[
29
+ variant === 'panel' ? 'glass-panel' : 'glass-ui',
30
+ 'border-thin',
31
+ `rounded-${rounded}`,
32
+ padding,
33
+ { 'cursor-default': !isInteractive },
34
+ ]"
35
+ >
36
+ <template v-for="(_, name) in $slots" #[name]="slotProps">
37
+ <slot :name="name" v-bind="slotProps || {}" />
38
+ </template>
39
+ </v-card>
40
+ </template>
41
+
42
+ <style scoped>
43
+ .border-thin {
44
+ border-style: solid !important;
45
+ }
46
+
47
+ .cursor-default {
48
+ cursor: default !important;
49
+ }
50
+ </style>
@@ -1,6 +1,5 @@
1
1
  <script setup>
2
2
  import VeaseViewToolbar from "@ogw_front/components/VeaseViewToolbar"
3
-
4
3
  import { useHybridViewerStore } from "@ogw_front/stores/hybrid_viewer"
5
4
  import { useViewerStore } from "@ogw_front/stores/viewer"
6
5
 
@@ -52,7 +51,7 @@
52
51
 
53
52
  <template>
54
53
  <ClientOnly>
55
- <div class="fill-height" style="position: relative">
54
+ <div class="fill-height" style="position: relative; height: 100%">
56
55
  <VeaseViewToolbar />
57
56
  <slot name="ui"></slot>
58
57
  <v-col
@@ -101,7 +101,7 @@
101
101
 
102
102
  <template>
103
103
  <ClientOnly>
104
- <div style="position: relative; width: 100%; height: calc(100vh - 80px)">
104
+ <div style="position: relative; width: 100%; height: 100%">
105
105
  <ViewToolbar />
106
106
  <slot name="ui"></slot>
107
107
  <v-col
@@ -1,5 +1,6 @@
1
1
  <script setup>
2
2
  import fileDownload from "js-file-download"
3
+ import GlassCard from "@ogw_front/components/GlassCard"
3
4
  import viewer_schemas from "@geode/opengeodeweb-viewer/opengeodeweb_viewer_schemas.json"
4
5
 
5
6
  import { useViewerStore } from "@ogw_front/stores/viewer"
@@ -46,49 +47,59 @@
46
47
  })
47
48
  </script>
48
49
  <template>
49
- <OptionCard
50
+ <GlassCard
50
51
  v-if="show_dialog"
52
+ @click.stop
51
53
  title="Take a screenshot"
52
54
  :width="width"
53
- class="position-absolute"
55
+ :ripple="false"
56
+ variant="panel"
57
+ padding="pa-0"
58
+ class="position-absolute elevation-24"
54
59
  style="z-index: 2; top: 90px; right: 55px"
55
60
  >
56
- <v-container>
57
- <v-row>
58
- <v-col cols="8" class="py-0">
59
- <v-text-field v-model="filename" label="File name"></v-text-field>
60
- </v-col>
61
- <v-col cols="4" class="py-0">
62
- <v-select
63
- v-model="output_extension"
64
- :items="output_extensions"
65
- label="Extension"
66
- required
67
- />
68
- </v-col>
69
- </v-row>
61
+ <v-card-text class="pa-5">
62
+ <v-container>
63
+ <v-row>
64
+ <v-col cols="8" class="py-0">
65
+ <v-text-field v-model="filename" label="File name"></v-text-field>
66
+ </v-col>
67
+ <v-col cols="4" class="py-0">
68
+ <v-select
69
+ v-model="output_extension"
70
+ :items="output_extensions"
71
+ label="Extension"
72
+ required
73
+ />
74
+ </v-col>
75
+ </v-row>
70
76
 
71
- <v-row>
72
- <v-col cols="12" class="py-0">
73
- <v-switch
74
- v-model="include_background"
75
- :disabled="output_extension !== 'png'"
76
- label="Include background"
77
- inset
78
- ></v-switch>
79
- </v-col>
80
- </v-row>
81
- </v-container>
77
+ <v-row>
78
+ <v-col cols="12" class="py-0">
79
+ <v-switch
80
+ v-model="include_background"
81
+ :disabled="output_extension !== 'png'"
82
+ label="Include background"
83
+ inset
84
+ ></v-switch>
85
+ </v-col>
86
+ </v-row>
87
+ </v-container>
88
+ </v-card-text>
82
89
 
83
90
  <template #actions>
84
- <v-btn variant="text" color="white" @click="emit('close')">Close</v-btn>
85
- <v-btn
86
- variant="outlined"
87
- :disabled="!filename || !output_extension"
88
- color="white"
89
- @click="takeScreenshot()"
90
- >Screenshot</v-btn
91
- >
91
+ <v-card-actions class="justify-center pb-4">
92
+ <v-btn variant="text" color="primary" @click="emit('close')"
93
+ >Close</v-btn
94
+ >
95
+ <v-btn
96
+ variant="outlined"
97
+ :disabled="!filename || !output_extension"
98
+ color="primary"
99
+ @click="takeScreenshot()"
100
+ >Screenshot</v-btn
101
+ >
102
+ </v-card-actions>
92
103
  </template>
93
- </OptionCard>
104
+ </GlassCard>
94
105
  </template>
@@ -8,16 +8,19 @@
8
8
 
9
9
  <template>
10
10
  <v-card-item class="flex-shrink-0 pa-0">
11
- <v-card-title
12
- class="text-h4 text-primary px-8 pt-6 pb-4 font-weight-bold d-flex align-center"
13
- >
14
- <v-icon icon="mdi-file-upload-outline" class="mr-3" />
15
- Import Data
16
- </v-card-title>
17
-
18
- <v-card-subtitle class="px-8 pb-4 text-medium">
19
- Choose a file to import.
20
- </v-card-subtitle>
11
+ <div class="px-8 pt-8 pb-4">
12
+ <div class="d-flex align-center mb-2">
13
+ <v-icon
14
+ icon="mdi-file-upload-outline"
15
+ class="mr-3 title-text"
16
+ size="32"
17
+ />
18
+ <h2 class="title-text">Import Data</h2>
19
+ </div>
20
+ <p class="text-white text-body-1">
21
+ Select and configure your files for a seamless import.
22
+ </p>
23
+ </div>
21
24
  </v-card-item>
22
25
 
23
26
  <v-stepper-vertical
@@ -25,7 +28,7 @@
25
28
  @update:model-value="current_step_index = $event - 1"
26
29
  flat
27
30
  non-linear
28
- class="pa-0 ma-0 bg-white rounded-xl overflow-hidden"
31
+ class="pa-0 ma-0 bg-transparent rounded-xl overflow-hidden custom-stepper"
29
32
  >
30
33
  <Step
31
34
  v-for="(step, index) in steps"
@@ -35,3 +38,33 @@
35
38
  />
36
39
  </v-stepper-vertical>
37
40
  </template>
41
+
42
+ <style scoped>
43
+ .custom-stepper :deep(.v-stepper-vertical-item) {
44
+ background: transparent !important;
45
+ }
46
+
47
+ .custom-stepper :deep(.v-stepper-vertical-item__content) {
48
+ background: rgba(255, 255, 255, 0.03) !important;
49
+ border-radius: 12px;
50
+ margin: 8px 16px 16px 40px !important;
51
+ padding: 16px !important;
52
+ border: 1px solid rgba(255, 255, 255, 0.05);
53
+ }
54
+
55
+ .custom-stepper :deep(.v-avatar) {
56
+ border: 1px solid rgba(255, 255, 255, 0.2);
57
+ background: rgba(255, 255, 255, 0.1) !important;
58
+ color: white !important;
59
+ }
60
+
61
+ .custom-stepper :deep(.v-stepper-vertical-item--active .v-avatar) {
62
+ background: #3c9983 !important;
63
+ border-color: #3c9983;
64
+ color: #0a0f0e !important;
65
+ }
66
+
67
+ .custom-stepper :deep(.v-stepper-vertical-item__connector) {
68
+ border-color: rgba(255, 255, 255, 0.1) !important;
69
+ }
70
+ </style>
@@ -1,7 +1,7 @@
1
1
  <script setup>
2
- import { useElementSize } from "@vueuse/core"
3
- import { useMenuStore } from "@ogw_front/stores/menu"
2
+ import GlassCard from "@ogw_front/components/GlassCard"
4
3
  import { useTheme } from "vuetify"
4
+ import { useMenuStore } from "@ogw_front/stores/menu"
5
5
 
6
6
  const CARD_WIDTH = 320
7
7
  const CARD_HEIGHT = 500
@@ -99,9 +99,20 @@
99
99
  color="transparent"
100
100
  @click.stop
101
101
  >
102
- <OptionCard :title="tooltip" width="320" :max-height="maxCardHeight">
103
- <slot name="options" />
104
- </OptionCard>
102
+ <GlassCard
103
+ @click.stop
104
+ :title="tooltip"
105
+ width="320"
106
+ :max-height="maxCardHeight"
107
+ :ripple="false"
108
+ variant="panel"
109
+ padding="pa-0"
110
+ class="elevation-24"
111
+ >
112
+ <v-card-text class="pa-5">
113
+ <slot name="options" />
114
+ </v-card-text>
115
+ </GlassCard>
105
116
  </v-sheet>
106
117
  </v-sheet>
107
118
  </template>
@@ -113,15 +113,7 @@
113
113
  <v-icon size="30" icon="mdi-ruler" v-tooltip:left="'Width'" />
114
114
  </v-col>
115
115
  <v-col justify="center">
116
- <v-slider
117
- v-model="size"
118
- hide-details
119
- min="0"
120
- max="20"
121
- step="2"
122
- thumb-color="black"
123
- ticks
124
- />
116
+ <v-slider v-model="size" hide-details min="0" max="20" step="2" />
125
117
  </v-col>
126
118
  </v-row>
127
119
  <v-row>
@@ -114,15 +114,7 @@
114
114
  <v-icon size="30" icon="mdi-ruler" v-tooltip:left="'Width'" />
115
115
  </v-col>
116
116
  <v-col justify="center">
117
- <v-slider
118
- v-model="size"
119
- hide-details
120
- min="0"
121
- max="20"
122
- step="2"
123
- thumb-color="black"
124
- ticks
125
- />
117
+ <v-slider v-model="size" hide-details min="0" max="20" step="2" />
126
118
  </v-col>
127
119
  </v-row>
128
120
  <v-row>
@@ -89,15 +89,7 @@
89
89
  <v-icon size="30" icon="mdi-ruler" v-tooltip:left="'Size'" />
90
90
  </v-col>
91
91
  <v-col justify="center">
92
- <v-slider
93
- v-model="size"
94
- hide-details
95
- min="0"
96
- max="20"
97
- step="2"
98
- thumb-color="black"
99
- ticks
100
- />
92
+ <v-slider v-model="size" hide-details min="0" max="20" step="2" />
101
93
  </v-col>
102
94
  </v-row>
103
95
  <v-row>
@@ -88,15 +88,7 @@
88
88
  <v-icon size="30" icon="mdi-ruler" v-tooltip:left="'Size'" />
89
89
  </v-col>
90
90
  <v-col justify="center">
91
- <v-slider
92
- v-model="size"
93
- hide-details
94
- min="0"
95
- max="20"
96
- step="2"
97
- thumb-color="black"
98
- ticks
99
- />
91
+ <v-slider v-model="size" hide-details min="0" max="20" step="2" />
100
92
  </v-col>
101
93
  </v-row>
102
94
  <v-row>
@@ -40,6 +40,7 @@
40
40
  class="treeview-container"
41
41
  :style="{ width: `${treeviewStore.panelWidth}px` }"
42
42
  @contextmenu.prevent
43
+ @mousedown.stop
43
44
  >
44
45
  <v-row
45
46
  class="resizable-panel"
@@ -1,54 +1,64 @@
1
1
  <script setup>
2
+ import GlassCard from "@ogw_front/components/GlassCard"
3
+
2
4
  const zScale = defineModel({ type: Number, default: 1 })
3
5
  const { width } = defineProps({
4
6
  width: { type: Number, default: 400 },
5
7
  })
6
8
  </script>
7
9
  <template>
8
- <OptionCard
10
+ <GlassCard
11
+ @click.stop
9
12
  title="Z Scaling Control"
10
13
  :width="width"
11
- class="position-absolute rounded-xl"
14
+ :ripple="false"
15
+ variant="panel"
16
+ padding="pa-0"
17
+ class="position-absolute rounded-xl elevation-24"
12
18
  style="z-index: 2; top: 90px; right: 55px"
13
19
  >
14
- <v-container>
15
- <v-row>
16
- <v-col cols="12" class="py-2">
17
- <v-slider
18
- v-model="zScale"
19
- :min="1"
20
- :max="10"
21
- :step="0.2"
22
- label="Z Scale"
23
- thumb-label
24
- color="white"
25
- track-color="white"
26
- />
27
- </v-col>
28
- </v-row>
29
- <v-row>
30
- <v-col cols="12" class="py-2">
31
- <v-text-field
32
- v-model.number="zScale"
33
- type="number"
34
- label="Z Scale Value"
35
- outlined
36
- dense
37
- hide-details
38
- step="0.1"
39
- :min="1"
40
- />
41
- </v-col>
42
- </v-row>
43
- </v-container>
20
+ <v-card-text class="pa-5">
21
+ <v-container>
22
+ <v-row>
23
+ <v-col cols="12" class="py-2">
24
+ <v-slider
25
+ v-model="zScale"
26
+ :min="1"
27
+ :max="10"
28
+ :step="0.2"
29
+ label="Z Scale"
30
+ thumb-label
31
+ />
32
+ </v-col>
33
+ </v-row>
34
+ <v-row>
35
+ <v-col cols="12" class="py-2">
36
+ <v-text-field
37
+ v-model.number="zScale"
38
+ type="number"
39
+ label="Z Scale Value"
40
+ outlined
41
+ dense
42
+ hide-details
43
+ step="0.1"
44
+ :min="1"
45
+ />
46
+ </v-col>
47
+ </v-row>
48
+ </v-container>
49
+ </v-card-text>
44
50
 
45
51
  <template #actions>
46
- <v-btn variant="text" color="white" @click="$emit('close')">Close</v-btn>
47
- <v-btn variant="outlined" color="white" @click="$emit('close')"
48
- >Apply</v-btn
49
- >
52
+ <v-card-actions class="justify-center pb-4">
53
+ <v-btn variant="text" color="white" @click="$emit('close')"
54
+ >Close</v-btn
55
+ >
56
+ <v-btn variant="outlined" color="white" @click="$emit('close')"
57
+ >Apply</v-btn
58
+ >
59
+ </v-card-actions>
50
60
  </template>
51
- </OptionCard>
61
+ </GlassCard>
52
62
  </template>
53
63
 
54
64
  <style scoped>
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@geode/opengeodeweb-front",
3
3
  "description": "OpenSource Vue/Nuxt/Pinia/Vuetify framework for web applications",
4
4
  "type": "module",
5
- "version": "10.3.2-rc.1",
5
+ "version": "10.3.2",
6
6
  "main": "./nuxt.config.js",
7
7
  "scripts": {
8
8
  "lint": "eslint --fix --ext .js,.vue --ignore-path .gitignore .",
@@ -14,8 +14,8 @@
14
14
  "build": ""
15
15
  },
16
16
  "dependencies": {
17
- "@geode/opengeodeweb-back": "next",
18
- "@geode/opengeodeweb-viewer": "next",
17
+ "@geode/opengeodeweb-back": "latest",
18
+ "@geode/opengeodeweb-viewer": "latest",
19
19
  "@kitware/vtk.js": "33.3.0",
20
20
  "@mdi/font": "7.4.47",
21
21
  "@pinia/nuxt": "0.11.3",
@@ -5,4 +5,4 @@
5
5
  # pip-compile --output-file=tests/integration/microservices/viewer/requirements.txt tests/integration/microservices/viewer/requirements.in
6
6
  #
7
7
 
8
- opengeodeweb-viewer==1.*,>=1.15.3rc1
8
+ opengeodeweb-viewer==1.*,>=1.15.3
@@ -1,55 +0,0 @@
1
- <script setup>
2
- import { useTheme } from "vuetify"
3
-
4
- const theme = useTheme()
5
- const primaryColor = computed(() => theme.current.value.colors.primary)
6
-
7
- const { title, width, maxHeight } = defineProps({
8
- title: { type: String, default: "" },
9
- width: { type: [Number, String], default: 320 },
10
- maxHeight: { type: [Number, String], default: 500 },
11
- })
12
- </script>
13
- <template>
14
- <v-card
15
- @click.stop
16
- :title="title"
17
- class="option-card rounded-xl border-thin elevation-24"
18
- :width="width"
19
- :max-height="maxHeight"
20
- :ripple="false"
21
- theme="dark"
22
- >
23
- <v-card-text class="pa-5">
24
- <slot />
25
- </v-card-text>
26
- <v-card-actions v-if="$slots.actions" class="justify-center pb-4">
27
- <slot name="actions" />
28
- </v-card-actions>
29
- </v-card>
30
- </template>
31
-
32
- <style scoped>
33
- .option-card {
34
- background-color: rgba(30, 30, 30, 0.85) !important;
35
- backdrop-filter: blur(20px);
36
- -webkit-backdrop-filter: blur(20px);
37
- border-color: rgba(255, 255, 255, 0.15) !important;
38
- }
39
-
40
- ::v-deep(.v-list-item:hover) {
41
- background-color: rgba(255, 255, 255, 0.1);
42
- }
43
-
44
- ::v-deep(.v-slider-track__fill),
45
- ::v-deep(.v-selection-control--dirty .v-switch__track) {
46
- background-color: v-bind(primaryColor) !important;
47
- }
48
-
49
- ::v-deep(.v-btn) {
50
- border-radius: 8px;
51
- text-transform: none;
52
- font-weight: 500;
53
- letter-spacing: normal;
54
- }
55
- </style>