@appscode/design-system 2.0.22-alpha.6 → 2.0.22

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@appscode/design-system",
3
- "version": "2.0.22-alpha.6",
3
+ "version": "2.0.22",
4
4
  "description": "A design system for Appscode websites and dashboards made using Bulma",
5
5
  "main": "main.scss",
6
6
  "scripts": {
@@ -763,20 +763,66 @@ $border_color_4: transparent transparent #585d6e transparent;
763
763
 
764
764
  // Status css
765
765
  // ac-footer sticky end
766
- .information-center {
767
- min-height: calc(100vh - 0px);
768
- padding: 20px;
769
- border-left: 1px solid hsl(208, 77%, 90%);
770
- width: 330px;
771
- margin-left: auto;
772
- position: fixed;
773
- right: 0;
774
- background: #fff;
775
- top: 0;
776
- z-index: 9999;
777
- box-shadow: -3px 2px 10px 3px rgba(0, 0, 0, 0.1);
778
-
779
- .info-title {
780
- display: flex;
766
+
767
+ // terminal scss end
768
+ .is-dark-theme {
769
+ a {
770
+ &:hover {
771
+ color: #485fc7;
772
+ }
781
773
  }
782
774
  }
775
+
776
+ /****************************************
777
+ Responsive Classes
778
+ *****************************************/
779
+
780
+ // Extra small devices (portrait phones, less than 576px)
781
+ @media (max-width: 575.98px) {
782
+ // .responsive-only {
783
+ // display: block;
784
+ // }
785
+
786
+ // .ac-system-body {
787
+ // grid-gap: 15px;
788
+ // grid-template-columns: 70px calc(100% - 100px);
789
+
790
+ // .ac-system-content {
791
+ // &.mr-20 {
792
+ // margin-right: 0 !important;
793
+ // }
794
+ // }
795
+ // }
796
+ }
797
+
798
+ // Small devices (landscape phones, 576px and up)
799
+ @media (min-width: 576px) and (max-width: 767.98px) {
800
+ }
801
+
802
+ // Medium devices (tablets, 768px and up)
803
+ @media (min-width: 768px) and (max-width: 991.98px) {
804
+ // .ac-system-body {
805
+ // grid-gap: 15px;
806
+ // grid-template-columns: 240px calc(100% - 255px);
807
+ // }
808
+ }
809
+
810
+ // Large devices (desktops, 992px and up)
811
+ @media (min-width: 992px) and (max-width: 1199.98px) {
812
+ // .ac-system-body {
813
+ // grid-gap: 0px;
814
+ // grid-template-columns: 240px calc(100% - 260px);
815
+ // }
816
+ }
817
+
818
+ // Extra large devices (large desktops, 1200px and up)
819
+ @media (min-width: 1200px) {
820
+ }
821
+
822
+ // FHD devices
823
+ @media (min-width: 1408px) and (max-width: 1600) {
824
+ // .ac-system-body {
825
+ // grid-gap: 0px;
826
+ // grid-template-columns: 240px calc(100% - 260px);
827
+ // }
828
+ }
@@ -7,7 +7,6 @@
7
7
  @import "header/all";
8
8
  @import "select-box/all";
9
9
  @import "sidebar/all";
10
- @import "sidebar-tabs/all";
11
10
 
12
11
  @import "button";
13
12
  @import "terminal";
@@ -407,9 +407,9 @@
407
407
  }
408
408
 
409
409
  label {
410
- font-size: 13px;
411
- left: 15px;
412
- top: 8px;
410
+ font-size: 16px;
411
+ left: 20px;
412
+ top: 11px;
413
413
  cursor: text;
414
414
  color: $primary-10;
415
415
  position: absolute;
@@ -426,10 +426,10 @@
426
426
 
427
427
  &.show-label {
428
428
  top: -10px;
429
- left: 10px;
429
+ left: 15px;
430
430
  padding: 0 5px;
431
431
  font-size: 13px;
432
- color: $black-40;
432
+ color: $black-5;
433
433
 
434
434
  &::after {
435
435
  background-color: $white-100;
@@ -144,55 +144,64 @@
144
144
  }
145
145
  }
146
146
 
147
+ .is-visibility-hidden {
148
+ visibility: hidden !important;
149
+ height: 0 !important;
150
+ opacity: 0 !important;
151
+ }
152
+
147
153
  // nested elements end
148
154
 
149
- // .table-wrapper {
150
- // overflow-x: auto;
155
+ .table-wrapper {
156
+ overflow-x: auto;
151
157
 
152
- // .table-inner {
153
- // min-width: 630px;
158
+ .table-inner {
159
+ min-width: 630px;
154
160
 
155
- // .thead {
156
- // background-color: $primary-90;
161
+ .thead {
162
+ background-color: $primary-90;
157
163
 
158
- // .tr {
159
- // .th {
160
- // font-weight: 600;
161
- // }
162
- // }
163
- // }
164
+ .tr {
165
+ .th {
166
+ font-weight: 600;
167
+ }
164
168
 
165
- // .thead,
166
- // .tbody {
167
- // .tr {
168
- // display: flex;
169
- // flex-wrap: nowrap;
170
- // align-items: center;
171
- // justify-content: space-between;
172
-
173
- // .th,
174
- // .td {
175
- // width: 20%;
176
- // font-size: 13px;
177
- // min-width: 150px;
178
- // padding: 6px 20px;
179
- // }
180
- // }
181
- // }
169
+ border-top: 1px solid var(--ac-white-light);
170
+ border-bottom: 1px solid var(--ac-white-light);
171
+ }
172
+ }
182
173
 
183
- // .tbody {
184
- // .tr {
185
- // border-bottom: 1px solid $primary-90;
186
- // }
187
- // }
188
- // }
174
+ .thead,
175
+ .tbody {
176
+ .tr {
177
+ display: flex;
178
+ flex-wrap: nowrap;
179
+ align-items: center;
180
+ justify-content: space-between;
181
+
182
+ .th,
183
+ .td {
184
+ width: 20%;
185
+ font-size: 13px;
186
+ min-width: 150px;
187
+ padding: 6px 20px;
188
+ }
189
+ }
190
+ }
189
191
 
190
- // .is-selected {
191
- // border: 1px solid $primary;
192
- // border-bottom: 1px solid $primary !important;
193
- // border-radius: 4px;
194
- // }
195
- // }
192
+ .tbody {
193
+ .tr {
194
+ border-bottom: 1px solid $primary-90;
195
+ }
196
+ }
197
+ }
198
+
199
+ .is-selected {
200
+ border: 1px solid $primary;
201
+ border-bottom: 1px solid $primary !important;
202
+ border-radius: 4px;
203
+ }
204
+ }
196
205
 
197
206
  .is-collapsed {
198
207
  &.ac-nested-elements::before,
@@ -207,16 +216,16 @@
207
216
  gap: 16px;
208
217
  grid-template-columns: repeat(auto-fill, minmax(min(240px, 100%), 1fr));
209
218
  }
210
- // .table {
211
- // tr {
212
- // &.is-selected {
213
- // background-color: $primary-97;
214
- // strong {
215
- // color: $primary;
216
- // }
217
- // }
218
- // }
219
- // }
219
+ .table {
220
+ tr {
221
+ &.is-selected {
222
+ background-color: $primary-97;
223
+ strong {
224
+ color: $primary;
225
+ }
226
+ }
227
+ }
228
+ }
220
229
  // dark theme start
221
230
  // .is-dark-theme {
222
231
  // .nested-body {
@@ -360,57 +369,24 @@
360
369
  }
361
370
  }
362
371
 
363
- .up-down-buttons {
364
- border-radius: 4px;
365
- overflow: hidden;
366
- position: relative;
367
- z-index: 1;
368
- max-width: 36px;
369
- margin-bottom: 0 !important;
370
- button {
371
- width: 36px;
372
- height: 18px;
373
- cursor: pointer;
374
- border: none;
375
- color: $primary;
376
- background-color: $primary-90;
377
- transition: 0.3s ease-in-out;
378
- &:hover {
379
- background-color: $primary-80;
380
- }
381
- &.is-primary {
382
- background-color: $primary;
383
- color: $white-100;
384
- &:hover {
385
- background-color: $primary-30;
372
+ // buttons
373
+ .button {
374
+ &.ac-button {
375
+ &.is-medium {
376
+ font-size: 1rem;
377
+ height: 36px;
378
+ &.is-square {
379
+ width: 36px;
380
+ align-items: center;
381
+ justify-content: center;
386
382
  }
387
383
  }
388
- .icon {
389
- margin: 0;
390
- padding: 0;
391
- width: auto;
392
- height: auto;
384
+ &.is-tinny {
385
+ height: 24px;
386
+ padding: 0 8px;
393
387
  }
394
388
  }
395
389
  }
396
- // buttons
397
- // .button {
398
- // &.ac-button {
399
- // &.is-medium {
400
- // font-size: 1rem;
401
- // height: 36px;
402
- // &.is-square {
403
- // width: 36px;
404
- // align-items: center;
405
- // justify-content: center;
406
- // }
407
- // }
408
- // &.is-tinny {
409
- // height: 24px;
410
- // padding: 0 8px;
411
- // }
412
- // }
413
- // }
414
390
 
415
391
  // .button[disabled] {
416
392
  // &.is-ghost {
@@ -423,10 +399,26 @@ span.is-error {
423
399
  color: $danger;
424
400
  font-weight: 400;
425
401
  }
426
- .circle-list-shape {
427
- width: 6px;
428
- height: 6px;
429
- background-color: $black-40;
430
- display: flex;
431
- border-radius: 50%;
402
+
403
+ /****************************************
404
+ Responsive Classes
405
+ *****************************************/
406
+ // Extra small devices (portrait phones, less than 576px)
407
+ @media (max-width: 575.98px) {
408
+ }
409
+
410
+ // Small devices (landscape phones, 576px and up)
411
+ @media (min-width: 576px) and (max-width: 767.98px) {
412
+ }
413
+
414
+ // Medium devices (tablets, 768px and up)
415
+ @media (min-width: 768px) and (max-width: 991.98px) {
416
+ }
417
+
418
+ // Large devices (desktops, 992px and up)
419
+ @media (min-width: 992px) and (max-width: 1199.98px) {
420
+ }
421
+
422
+ // Extra large devices (large desktops, 1200px and up)
423
+ @media (min-width: 1200px) {
432
424
  }
@@ -5,7 +5,7 @@
5
5
 
6
6
  .form-left-item {
7
7
  margin-right: 16px;
8
- width: calc(100% - 108px);
8
+ width: calc(100% - 104px);
9
9
  }
10
10
  }
11
11
  }
@@ -518,11 +518,57 @@
518
518
  }
519
519
  }
520
520
 
521
+ input,
522
+ .ac-card,
523
+ textarea {
524
+ background-color: $white-100;
525
+ color: $primary-10;
526
+ height: 45px;
527
+ font-weight: 400;
528
+ width: 100%;
529
+ border-radius: 4px;
530
+ border: 1px solid $primary-80;
531
+ padding: 8px 16px;
532
+ font-size: 13px;
533
+
534
+ &:hover {
535
+ border-color: $black-70;
536
+ }
537
+
538
+ &.bg-white {
539
+ background-color: $white-100;
540
+ }
541
+
542
+ &.StripeElement--focus {
543
+ border: 1px solid $primary;
544
+ }
545
+
546
+ &:focus {
547
+ border: 1px solid $primary;
548
+ outline: none;
549
+ background-color: $white-100;
550
+ }
551
+
552
+ &[type="password"] {
553
+ padding-right: 40px;
554
+ }
555
+
556
+ &[type="search"] {
557
+ padding-left: 30px;
558
+ }
559
+
560
+ transition: background-color 0.3s ease-in-out;
561
+ }
562
+
521
563
  .ac-card {
522
564
  height: 36px;
523
565
  padding: 10px 20px;
524
566
  }
525
567
 
568
+ textarea {
569
+ height: 55px;
570
+ }
571
+
526
572
  b.isRequired {
527
573
  color: $danger;
528
574
  font-size: 13px;
@@ -10,6 +10,10 @@ interface Props {
10
10
  editorHeight?: number | string;
11
11
  editorTheme?: string;
12
12
  wordWrap?: string;
13
+ validation?: {
14
+ schema?: Record<string, unknown>;
15
+ uri: string;
16
+ };
13
17
  }
14
18
 
15
19
  const props = withDefaults(defineProps<Props>(), {
@@ -21,6 +25,7 @@ const props = withDefaults(defineProps<Props>(), {
21
25
  editorHeight: 40,
22
26
  editorTheme: "",
23
27
  wordWrap: "on",
28
+ validation: () => ({ uri: "" }),
24
29
  });
25
30
 
26
31
  const emit = defineEmits(["update:modelValue"]);
@@ -111,22 +116,10 @@ watch(
111
116
 
112
117
  <template>
113
118
  <div>
114
- <editor-tabs
115
- v-if="!readOnly"
116
- @tabchange="activeTab = $event"
117
- :active-tab="activeTab"
118
- />
119
- <monaco-editor
120
- v-if="activeTab === 'edit'"
121
- @editorDidMount="onEditorMount"
122
- key="edit"
123
- class="is-clipped"
124
- :class="computeHightInClass"
125
- :style="computeHightInStyle"
126
- :value="editorContent"
127
- @change="onChange"
128
- :language="language"
129
- :options="{
119
+ <editor-tabs v-if="!readOnly" @tabchange="activeTab = $event" :active-tab="activeTab" />
120
+ <monaco-editor v-if="activeTab === 'edit'" @editorDidMount="onEditorMount" key="edit" class="is-clipped"
121
+ :class="computeHightInClass" :style="computeHightInStyle" :value="editorContent" @change="onChange"
122
+ :language="language" :options="{
130
123
  minimap: {
131
124
  enabled: calcShowMinimap,
132
125
  },
@@ -134,18 +127,9 @@ watch(
134
127
  readOnly: readOnly,
135
128
  wordWrap: wordWrap,
136
129
  scrollBeyondLastLine: false,
137
- }"
138
- data-testid="monaco-editor-edit-section"
139
- />
140
- <monaco-editor
141
- v-if="activeTab === 'preview'"
142
- key="preview"
143
- class="is-clipped"
144
- :class="computeHightInClass"
145
- :style="computeHightInStyle"
146
- :value="editorContent"
147
- :language="language"
148
- :options="{
130
+ }" :validation="validation" data-testid="monaco-editor-edit-section" />
131
+ <monaco-editor v-if="activeTab === 'preview'" key="preview" class="is-clipped" :class="computeHightInClass"
132
+ :style="computeHightInStyle" :value="editorContent" :language="language" :options="{
149
133
  minimap: {
150
134
  enabled: calcShowMinimap,
151
135
  },
@@ -153,10 +137,7 @@ watch(
153
137
  readOnly: true,
154
138
  wordWrap: wordWrap,
155
139
  scrollBeyondLastLine: false,
156
- }"
157
- :original="originalEditorContent"
158
- :diff-editor="true"
159
- data-testid="monaco-editor-preview-section"
160
- />
140
+ }" :original="originalEditorContent" :diff-editor="true" :validation="validation"
141
+ data-testid="monaco-editor-preview-section" />
161
142
  </div>
162
143
  </template>
@@ -22,6 +22,10 @@ export default defineComponent({
22
22
  return {};
23
23
  },
24
24
  },
25
+ validation: {
26
+ type: Object,
27
+ default: () => ({}),
28
+ },
25
29
  },
26
30
  emits: ["editorWillMount", "editorDidMount", "change"],
27
31
  setup(props) {
@@ -47,21 +51,73 @@ export default defineComponent({
47
51
  this.initMonaco();
48
52
  },
49
53
  beforeUnmount() {
54
+ monaco.editor.getModels().forEach((model) => model.dispose());
50
55
  this.editor && this.editor.dispose();
51
56
  },
52
57
  methods: {
53
58
  initMonaco() {
54
59
  this.$emit("editorWillMount", this.monaco);
55
- const { value, language, theme, options } = this;
56
- this.editor = monaco.editor[
57
- this.diffEditor ? "createDiffEditor" : "create"
58
- ](this.$el, {
59
- value: value,
60
- language: language,
61
- theme: theme,
62
- ...options,
63
- });
64
- this.diffEditor && this._setModel(this.value, this.original);
60
+ const { value, language, theme, options, original, validation } = this;
61
+
62
+ if (!this.diffEditor) {
63
+ const modifiedModel = monaco.editor.createModel(
64
+ value,
65
+ language,
66
+ monaco.Uri.parse("file:///file.yaml")
67
+ );
68
+
69
+ if (validation.uri) {
70
+ const schemas = [
71
+ {
72
+ fileMatch: ["file:///file.yaml"],
73
+ schema: validation.schema
74
+ ? JSON.parse(
75
+ JSON.stringify({
76
+ ...validation.schema,
77
+ $schema: "http://json-schema.org/schema#",
78
+ })
79
+ )
80
+ : undefined,
81
+ uri: validation.uri,
82
+ },
83
+ ];
84
+ // yaml validation
85
+ if (this.$monacoYaml) {
86
+ this.$monacoYaml.update({
87
+ schemas,
88
+ });
89
+ }
90
+
91
+ // json validation
92
+ monaco.languages.json.jsonDefaults.setDiagnosticsOptions({
93
+ validate: true,
94
+ enableSchemaRequest: true,
95
+ schemas,
96
+ allowComments: true,
97
+ });
98
+ }
99
+
100
+ this.editor = monaco.editor.create(this.$el, {
101
+ automaticLayout: true,
102
+ model: modifiedModel,
103
+ theme: theme,
104
+ fixedOverflowWidgets: true,
105
+ ...options,
106
+ });
107
+ } else {
108
+ const originalModel = monaco.editor.createModel(original, language);
109
+ const modifiedModel = monaco.editor.createModel(value, language);
110
+ this.editor = monaco.editor.createDiffEditor(this.$el, {
111
+ automaticLayout: true,
112
+ theme: theme,
113
+ fixedOverflowWidgets: true,
114
+ ...options,
115
+ });
116
+ this.editor.setModel({
117
+ original: originalModel,
118
+ modified: modifiedModel,
119
+ });
120
+ }
65
121
 
66
122
  // @event `change`
67
123
  const editor = this._getEditor();
@@ -74,15 +130,6 @@ export default defineComponent({
74
130
 
75
131
  this.$emit("editorDidMount", this.editor);
76
132
  },
77
- _setModel(value, original) {
78
- const { language } = this;
79
- const originalModel = monaco.editor.createModel(original, language);
80
- const modifiedModel = monaco.editor.createModel(value, language);
81
- this.editor.setModel({
82
- original: originalModel,
83
- modified: modifiedModel,
84
- });
85
- },
86
133
  _setValue(value) {
87
134
  let editor = this._getEditor();
88
135
  if (editor) return editor.setValue(value);
@@ -128,4 +175,4 @@ export default defineComponent({
128
175
  },
129
176
  },
130
177
  });
131
- </script>
178
+ </script>
@@ -5,4 +5,200 @@
5
5
  </div>
6
6
  </template>
7
7
 
8
- <style lang="scss"></style>
8
+ <style lang="scss">
9
+ .sidebar-tabs {
10
+ width: 220px;
11
+ border-right: 1px solid $primary-95;
12
+ padding: 8px;
13
+ height: calc(100vh - 50px);
14
+ ul {
15
+ li {
16
+ a {
17
+ display: flex;
18
+ align-items: center;
19
+ color: $primary-10;
20
+ position: relative;
21
+ z-index: 1;
22
+ padding: 8px 16px;
23
+ font-weight: 500;
24
+ transition: 0.3s ease-in-out;
25
+ align-items: center;
26
+ justify-content: space-between;
27
+
28
+ &:after {
29
+ position: absolute;
30
+ content: "";
31
+ left: 0;
32
+ top: 0;
33
+ width: 100%;
34
+ height: 100%;
35
+ background-color: $primary-95;
36
+ border-radius: 4px;
37
+ z-index: -1;
38
+ opacity: 0;
39
+ visibility: hidden;
40
+ transition: 0.3s ease-in-out;
41
+ }
42
+ &:hover {
43
+ color: $primary;
44
+
45
+ &:after {
46
+ opacity: 1;
47
+ visibility: visible;
48
+ background-color: $primary-97;
49
+ }
50
+ }
51
+ &.is-active {
52
+ color: $primary;
53
+ &:hover {
54
+ &::after {
55
+ background-color: $primary-90;
56
+ }
57
+ }
58
+ &:after {
59
+ opacity: 1;
60
+ visibility: visible;
61
+ }
62
+ &.is-danger {
63
+ color: $danger;
64
+ &:hover {
65
+ &::after {
66
+ background-color: $red-90;
67
+ }
68
+ }
69
+ &:after {
70
+ opacity: 1;
71
+ visibility: visible;
72
+ background-color: $red-95;
73
+ }
74
+ }
75
+ &.is-success {
76
+ color: $success;
77
+ &:hover {
78
+ &::after {
79
+ background-color: $green-90;
80
+ }
81
+ }
82
+ &:after {
83
+ opacity: 1;
84
+ visibility: visible;
85
+ background-color: $green-95;
86
+ }
87
+ }
88
+ &.is-warning {
89
+ color: $warning;
90
+ &:hover {
91
+ &::after {
92
+ background-color: $yellow-90;
93
+ }
94
+ }
95
+ &:after {
96
+ opacity: 1;
97
+ visibility: visible;
98
+ background-color: $yellow-95;
99
+ }
100
+ }
101
+ }
102
+ &.is-danger {
103
+ color: $danger;
104
+ &:hover {
105
+ &::after {
106
+ background-color: $red-90;
107
+ }
108
+ }
109
+ &:after {
110
+ opacity: 1;
111
+ visibility: visible;
112
+ background-color: transparent;
113
+ }
114
+ }
115
+ &.is-success {
116
+ color: $success;
117
+ &:hover {
118
+ &::after {
119
+ background-color: $green-90;
120
+ }
121
+ }
122
+ &:after {
123
+ opacity: 1;
124
+ visibility: visible;
125
+ background-color: transparent;
126
+ }
127
+ }
128
+ &.is-warning {
129
+ color: $warning;
130
+ &:hover {
131
+ &::after {
132
+ background-color: $yellow-90;
133
+ }
134
+ }
135
+ &:after {
136
+ opacity: 1;
137
+ visibility: visible;
138
+ background-color: transparent;
139
+ }
140
+ }
141
+ }
142
+ &.is-open {
143
+ transition: 0.3s ease-in-out;
144
+ ul {
145
+ max-height: 250px;
146
+ }
147
+ }
148
+ ul {
149
+ margin-left: 20px;
150
+ position: relative;
151
+ z-index: 1;
152
+ max-height: 0;
153
+ transition: 0.3s ease-in-out !important;
154
+ overflow: hidden;
155
+ &:after {
156
+ position: absolute;
157
+ content: "";
158
+ left: 4px;
159
+ top: 0;
160
+ width: 1px;
161
+ height: calc(100% - 10px);
162
+ background-color: $primary-90;
163
+ }
164
+ li {
165
+ a {
166
+ &:after {
167
+ left: -8px;
168
+ opacity: 0 !important;
169
+ visibility: hidden !important;
170
+ }
171
+ &::before {
172
+ position: absolute;
173
+ content: "";
174
+ left: 0;
175
+ top: 50%;
176
+ margin-top: -4px;
177
+ width: 8px;
178
+ height: 8px;
179
+ border-radius: 50%;
180
+ background-color: $primary;
181
+ transition: 0.3s ease-in-out;
182
+ opacity: 0;
183
+ visibility: hidden;
184
+ }
185
+ &:hover:not(&.is-active) {
186
+ &::before {
187
+ opacity: 1;
188
+ visibility: visible;
189
+ background-color: $primary-80;
190
+ }
191
+ }
192
+ &.is-active {
193
+ &::before {
194
+ opacity: 1;
195
+ visibility: visible;
196
+ }
197
+ }
198
+ }
199
+ }
200
+ }
201
+ }
202
+ }
203
+ }
204
+ </style>
@@ -26,4 +26,19 @@ withDefaults(defineProps<Props>(), {
26
26
  </div>
27
27
  </template>
28
28
 
29
- <style lang="scss" scoped></style>
29
+ <style lang="scss" scoped>
30
+ .sidebar-tabs-wrapper {
31
+ position: fixed;
32
+ background-color: $white-100;
33
+ }
34
+ .pl-220 {
35
+ padding-left: 220px;
36
+ }
37
+ .content-wrapper {
38
+ padding-bottom: 40px;
39
+ width: 100%;
40
+ &:has(.form-footer) {
41
+ padding-bottom: 0;
42
+ }
43
+ }
44
+ </style>
@@ -17,7 +17,7 @@ defineEmits(["tabchange"]);
17
17
  </script>
18
18
 
19
19
  <template>
20
- <tabs-body>
20
+ <tabs-body class="mt-10">
21
21
  <tabs class="is-line">
22
22
  <tab-item :is-active="activeTab === 'edit'">
23
23
  <a @click.prevent="$emit('tabchange', 'edit')">Edit</a>
@@ -1,2 +0,0 @@
1
- @import "./sidebar-tabs";
2
- @import "./sidebar-tabs-layout";
@@ -1,16 +0,0 @@
1
- .sidebar-tabs-layout {
2
- .sidebar-tabs-wrapper {
3
- position: fixed;
4
- background-color: $white-100;
5
- }
6
- .pl-220 {
7
- padding-left: 220px;
8
- }
9
- .content-wrapper {
10
- padding-bottom: 40px;
11
- width: 100%;
12
- &:has(.form-footer) {
13
- padding-bottom: 0;
14
- }
15
- }
16
- }
@@ -1,195 +0,0 @@
1
- .sidebar-tabs {
2
- width: 220px;
3
- border-right: 1px solid $primary-95;
4
- padding: 8px;
5
- height: calc(100vh - 50px);
6
- ul {
7
- li {
8
- a {
9
- display: flex;
10
- align-items: center;
11
- color: $primary-10;
12
- position: relative;
13
- z-index: 1;
14
- padding: 8px 16px;
15
- font-weight: 500;
16
- transition: 0.3s ease-in-out;
17
- align-items: center;
18
- justify-content: space-between;
19
-
20
- &:after {
21
- position: absolute;
22
- content: "";
23
- left: 0;
24
- top: 0;
25
- width: 100%;
26
- height: 100%;
27
- background-color: $primary-95;
28
- border-radius: 4px;
29
- z-index: -1;
30
- opacity: 0;
31
- visibility: hidden;
32
- transition: 0.3s ease-in-out;
33
- }
34
- &:hover {
35
- color: $primary;
36
-
37
- &:after {
38
- opacity: 1;
39
- visibility: visible;
40
- background-color: $primary-97;
41
- }
42
- }
43
- &.is-active {
44
- color: $primary;
45
- &:hover {
46
- &::after {
47
- background-color: $primary-90;
48
- }
49
- }
50
- &:after {
51
- opacity: 1;
52
- visibility: visible;
53
- }
54
- &.is-danger {
55
- color: $danger;
56
- &:hover {
57
- &::after {
58
- background-color: $red-90;
59
- }
60
- }
61
- &:after {
62
- opacity: 1;
63
- visibility: visible;
64
- background-color: $red-95;
65
- }
66
- }
67
- &.is-success {
68
- color: $success;
69
- &:hover {
70
- &::after {
71
- background-color: $green-90;
72
- }
73
- }
74
- &:after {
75
- opacity: 1;
76
- visibility: visible;
77
- background-color: $green-95;
78
- }
79
- }
80
- &.is-warning {
81
- color: $warning;
82
- &:hover {
83
- &::after {
84
- background-color: $yellow-90;
85
- }
86
- }
87
- &:after {
88
- opacity: 1;
89
- visibility: visible;
90
- background-color: $yellow-95;
91
- }
92
- }
93
- }
94
- &.is-danger {
95
- color: $danger;
96
- &:hover {
97
- &::after {
98
- background-color: $red-90;
99
- }
100
- }
101
- &:after {
102
- opacity: 1;
103
- visibility: visible;
104
- background-color: transparent;
105
- }
106
- }
107
- &.is-success {
108
- color: $success;
109
- &:hover {
110
- &::after {
111
- background-color: $green-90;
112
- }
113
- }
114
- &:after {
115
- opacity: 1;
116
- visibility: visible;
117
- background-color: transparent;
118
- }
119
- }
120
- &.is-warning {
121
- color: $warning;
122
- &:hover {
123
- &::after {
124
- background-color: $yellow-90;
125
- }
126
- }
127
- &:after {
128
- opacity: 1;
129
- visibility: visible;
130
- background-color: transparent;
131
- }
132
- }
133
- }
134
- &.is-open {
135
- transition: 0.3s ease-in-out;
136
- ul {
137
- max-height: 250px;
138
- }
139
- }
140
- ul {
141
- margin-left: 20px;
142
- position: relative;
143
- z-index: 1;
144
- max-height: 0;
145
- transition: 0.3s ease-in-out !important;
146
- overflow: hidden;
147
- &:after {
148
- position: absolute;
149
- content: "";
150
- left: 4px;
151
- top: 0;
152
- width: 1px;
153
- height: calc(100% - 10px);
154
- background-color: $primary-90;
155
- }
156
- li {
157
- a {
158
- &:after {
159
- left: -8px;
160
- opacity: 0 !important;
161
- visibility: hidden !important;
162
- }
163
- &::before {
164
- position: absolute;
165
- content: "";
166
- left: 0;
167
- top: 50%;
168
- margin-top: -4px;
169
- width: 8px;
170
- height: 8px;
171
- border-radius: 50%;
172
- background-color: $primary;
173
- transition: 0.3s ease-in-out;
174
- opacity: 0;
175
- visibility: hidden;
176
- }
177
- &:hover:not(&.is-active) {
178
- &::before {
179
- opacity: 1;
180
- visibility: visible;
181
- background-color: $primary-80;
182
- }
183
- }
184
- &.is-active {
185
- &::before {
186
- opacity: 1;
187
- visibility: visible;
188
- }
189
- }
190
- }
191
- }
192
- }
193
- }
194
- }
195
- }