Muhammad Iqbal Afandi пре 4 година
родитељ
комит
88e3d533c0

+ 340
- 340
package-lock.json
Разлика између датотеке није приказан због своје велике величине
Прегледај датотеку


+ 1
- 0
resources/css/_overrides.scss Прегледај датотеку

@@ -0,0 +1 @@
1
+// Suggested location to add your overrides so that migration would be easy by just updating the SASS folder in the future

+ 4
- 0
resources/css/_variables.scss Прегледај датотеку

@@ -0,0 +1,4 @@
1
+/* General */
2
+$fontSize:14px;
3
+$borderRadius:12px;
4
+$transitionDuration:.2s;

+ 0
- 107
resources/css/app.scss Прегледај датотеку

@@ -1,107 +0,0 @@
1
-* {
2
-  box-sizing: border-box;
3
-}
4
-
5
-html {
6
-  height: 100%;
7
-  font-size: 14px;
8
-}
9
-
10
-body {
11
-  font-family: var(--font-family);
12
-  color: var(--text-color);
13
-  background-color: var(--surface-ground);
14
-  margin: 0;
15
-  padding: 0;
16
-  min-height: 100%;
17
-  -webkit-font-smoothing: antialiased;
18
-  -moz-osx-font-smoothing: grayscale;
19
-}
20
-
21
-/*
22
-  Typography
23
-*/
24
-a {
25
-  text-decoration: none;
26
-  color: var(--primary-color);
27
-}
28
-
29
-h1,
30
-h2,
31
-h3,
32
-h4,
33
-h5,
34
-h6 {
35
-  margin: 0.5rem 0 0.5rem 0;
36
-  font-family: inherit;
37
-  font-weight: 500;
38
-  line-height: 1.2;
39
-  color: inherit;
40
-
41
-  &:first-child {
42
-    margin-top: 0;
43
-  }
44
-}
45
-
46
-h1 {
47
-  font-size: 2.5rem;
48
-}
49
-
50
-h2 {
51
-  font-size: 2rem;
52
-}
53
-
54
-h3 {
55
-  font-size: 1.75rem;
56
-}
57
-
58
-h4 {
59
-  font-size: 1.5rem;
60
-}
61
-
62
-h5 {
63
-  font-size: 1.25rem;
64
-}
65
-
66
-h6 {
67
-  font-size: 1rem;
68
-}
69
-
70
-mark {
71
-  background: #fff8e1;
72
-  padding: 0.25rem 0.4rem;
73
-  border-radius: 12px;
74
-  font-family: monospace;
75
-}
76
-
77
-blockquote {
78
-  margin: 1rem 0;
79
-  padding: 0 2rem;
80
-  border-left: 4px solid #90a4ae;
81
-}
82
-
83
-hr {
84
-  border-top: solid var(--surface-border);
85
-  border-width: 1px 0 0 0;
86
-  margin: 1rem 0;
87
-}
88
-
89
-p {
90
-  margin: 0 0 1rem 0;
91
-  line-height: 1.5;
92
-
93
-  &:last-child {
94
-    margin-bottom: 0;
95
-  }
96
-}
97
-
98
-/*
99
-  Component
100
-*/
101
-.layout-topbar-menu-tooltip.p-tooltip {
102
-  position: absolute;
103
-  z-index: 997;
104
-  display: none;
105
-  padding: 0.25em 0.5rem;
106
-  max-width: 12.5rem;
107
-}

+ 3
- 0
resources/css/layout.scss Прегледај датотеку

@@ -0,0 +1,3 @@
1
+@import './_variables';
2
+@import './partials/layout';
3
+@import './_overrides';

+ 12
- 0
resources/css/partials/_content.scss Прегледај датотеку

@@ -0,0 +1,12 @@
1
+.layout-main-container {
2
+    display: flex;
3
+    flex-direction: column;
4
+    min-height: 100vh;
5
+    justify-content: space-between;
6
+    padding: 7rem 2rem 2rem 4rem;
7
+    transition: margin-left $transitionDuration;
8
+}
9
+
10
+.layout-main {
11
+    flex: 1 1 auto;
12
+}

+ 8
- 0
resources/css/partials/_footer.scss Прегледај датотеку

@@ -0,0 +1,8 @@
1
+.layout-footer {
2
+    transition: margin-left $transitionDuration;
3
+    display: flex;
4
+    align-items: center;
5
+    justify-content: center;
6
+    padding-top: 1rem;
7
+    border-top: 1px solid var(--surface-border);
8
+}

+ 9
- 0
resources/css/partials/_layout.scss Прегледај датотеку

@@ -0,0 +1,9 @@
1
+@import './_mixins';
2
+@import './_main';
3
+@import './_topbar';
4
+@import './_menu';
5
+@import './_content';
6
+@import './_footer';
7
+@import './_responsive';
8
+@import './_utils';
9
+@import './_typography';

+ 28
- 0
resources/css/partials/_main.scss Прегледај датотеку

@@ -0,0 +1,28 @@
1
+* {
2
+    box-sizing: border-box;
3
+}
4
+
5
+html {
6
+    height: 100%;
7
+    font-size: $fontSize;
8
+}
9
+
10
+body {
11
+    font-family: var(--font-family);
12
+    color: var(--text-color);
13
+    background-color: var(--surface-ground);
14
+    margin: 0;
15
+    padding: 0;
16
+    min-height: 100%;
17
+    -webkit-font-smoothing: antialiased;
18
+    -moz-osx-font-smoothing: grayscale;
19
+}
20
+
21
+a {
22
+    text-decoration: none;
23
+    color: var(--primary-color);
24
+}
25
+
26
+.layout-theme-light {
27
+    background-color: #edf1f5;
28
+}

+ 116
- 0
resources/css/partials/_menu.scss Прегледај датотеку

@@ -0,0 +1,116 @@
1
+.layout-sidebar {
2
+	position: fixed;
3
+	width: 300px;
4
+	height: calc(100vh - 9rem);
5
+	z-index: 999;
6
+	overflow-y: auto;
7
+	user-select: none;
8
+	top: 7rem;
9
+	left: 2rem;
10
+	transition: transform $transitionDuration, left $transitionDuration;
11
+	background-color: var(--surface-overlay);
12
+	border-radius: 12px;
13
+    padding: 1.5rem;
14
+    box-shadow: 0px 3px 5px rgba(0,0,0,.02), 0px 0px 2px rgba(0,0,0,.05), 0px 1px 4px rgba(0,0,0,.08)
15
+}
16
+
17
+.layout-menu {
18
+    list-style-type: none;
19
+    margin: 0;
20
+    padding: 0;
21
+
22
+    li {
23
+        &.layout-menuitem-category {
24
+            margin-top: .75rem;
25
+
26
+            &:first-child {
27
+                margin-top: 0;
28
+            }
29
+        }
30
+        
31
+        .layout-menuitem-root-text {
32
+            text-transform: uppercase;
33
+            color:var(--surface-900);
34
+            font-weight: 600;
35
+            margin-bottom: .5rem;
36
+            font-size: .875rem;
37
+        }
38
+
39
+        a {
40
+            cursor: pointer;
41
+            text-decoration: none;
42
+            display: flex;
43
+            align-items: center;
44
+            color:var(--text-color);
45
+            transition: color $transitionDuration;
46
+            border-radius: $borderRadius;
47
+            padding: .75rem 1rem;
48
+            transition: background-color .15s;
49
+
50
+            span {
51
+                margin-left: 0.5rem;
52
+            }
53
+
54
+            .menuitem-toggle-icon {
55
+                margin-left: auto;
56
+            }
57
+
58
+            &:focus {
59
+                @include focused-inset();
60
+            }
61
+
62
+            &:hover {
63
+                background-color: var(--surface-hover);
64
+            }
65
+
66
+            &.router-link-exact-active {
67
+                font-weight: 700;
68
+                color: var(--primary-color);
69
+            }
70
+
71
+            .p-badge {
72
+                margin-left: auto;
73
+            }
74
+        }
75
+
76
+        &.active-menuitem {
77
+            > a {
78
+                .menuitem-toggle-icon {
79
+                    &:before {
80
+                        content: '\e933';
81
+                    }
82
+                }
83
+            }
84
+        }
85
+
86
+        ul {
87
+            list-style-type: none;
88
+            margin: 0;
89
+            padding: 0;
90
+
91
+            &.layout-submenu-wrapper-enter-from,
92
+            &.layout-submenu-wrapper-leave-to {
93
+                max-height: 0;
94
+            }
95
+
96
+            &.layout-submenu-wrapper-enter-to,
97
+            &.layout-submenu-wrapper-leave-from {
98
+                max-height: 1000px;
99
+            }
100
+
101
+            &.layout-submenu-wrapper-leave-active {
102
+                overflow: hidden;
103
+                transition: max-height 0.45s cubic-bezier(0, 1, 0, 1);
104
+            }
105
+
106
+            &.layout-submenu-wrapper-enter-active {
107
+                overflow: hidden;
108
+                transition: max-height 1s ease-in-out;
109
+            }
110
+
111
+            ul {
112
+                padding-left: 1rem;
113
+            }
114
+        }
115
+    }
116
+}

+ 13
- 0
resources/css/partials/_mixins.scss Прегледај датотеку

@@ -0,0 +1,13 @@
1
+@mixin focused() {
2
+    outline: 0 none;
3
+    outline-offset: 0;
4
+    transition: box-shadow .2s;
5
+    box-shadow: var(--focus-ring);
6
+}
7
+
8
+@mixin focused-inset() {
9
+    outline: 0 none;
10
+    outline-offset: 0;
11
+    transition: box-shadow .2s;
12
+    box-shadow: inset var(--focus-ring);
13
+}

+ 89
- 0
resources/css/partials/_responsive.scss Прегледај датотеку

@@ -0,0 +1,89 @@
1
+@media (min-width: 992px) {
2
+    .layout-wrapper {
3
+        &.layout-overlay {
4
+            .layout-main-container {
5
+                margin-left: 0;
6
+                padding-left: 2rem;
7
+            }
8
+
9
+            .layout-sidebar {
10
+                transform: translateX(-100%);
11
+                left: 0;
12
+                top: 0;
13
+                height: 100vh;
14
+                border-top-left-radius: 0;
15
+                border-bottom-left-radius: 0;
16
+            }
17
+
18
+            &.layout-overlay-sidebar-active {
19
+                .layout-sidebar {
20
+                    transform: translateX(0);
21
+                }
22
+            }
23
+        }
24
+
25
+        &.layout-static {
26
+            .layout-main-container {
27
+                margin-left: 300px;
28
+            }
29
+
30
+            &.layout-static-sidebar-inactive {
31
+                .layout-sidebar {
32
+                    transform: translateX(-100%);
33
+                    left: 0;
34
+                }
35
+
36
+                .layout-main-container {
37
+                    margin-left: 0;
38
+                    padding-left: 2rem;
39
+                }
40
+            }
41
+        }
42
+
43
+        .layout-mask {
44
+            display: none;
45
+        }
46
+    }
47
+}
48
+
49
+@media (max-width: 991px) {
50
+    .layout-wrapper {
51
+        .layout-main-container {
52
+            margin-left: 0;
53
+            padding-left: 2rem;
54
+        }
55
+
56
+        .layout-sidebar {
57
+            transform: translateX(-100%);
58
+            left: 0;
59
+            top: 0;
60
+            height: 100vh;
61
+            border-top-left-radius: 0;
62
+            border-bottom-left-radius: 0;
63
+        }
64
+
65
+        .layout-mask {
66
+            z-index: 998;
67
+            background-color: var(--maskbg);
68
+
69
+            &.layout-mask-enter-from,
70
+            &.layout-mask-leave-to {
71
+                background-color: transparent;
72
+            }
73
+        }
74
+
75
+        &.layout-mobile-sidebar-active {
76
+            .layout-sidebar {
77
+                transform: translateX(0);
78
+            }
79
+
80
+            .layout-mask {
81
+                display: block;
82
+            }
83
+        }
84
+    }
85
+
86
+    .body-overflow-hidden {
87
+        overflow: hidden;
88
+    }
89
+}

+ 142
- 0
resources/css/partials/_topbar.scss Прегледај датотеку

@@ -0,0 +1,142 @@
1
+.layout-topbar {
2
+    position: fixed;
3
+    height: 5rem;
4
+    z-index: 997;
5
+    left: 0;
6
+    top: 0;
7
+    width: 100%;
8
+    padding: 0 2rem;
9
+    background-color: var(--surface-card);
10
+    transition: left $transitionDuration;
11
+    display: flex;
12
+    align-items: center;
13
+    box-shadow: 0px 3px 5px rgba(0,0,0,.02), 0px 0px 2px rgba(0,0,0,.05), 0px 1px 4px rgba(0,0,0,.08);
14
+
15
+    .layout-topbar-logo {
16
+        display: flex;
17
+        align-items: center;
18
+        color: var(--surface-900);
19
+        font-size: 1.5rem;
20
+        font-weight: 500;
21
+        width: 300px;
22
+        border-radius: 12px;
23
+
24
+        img {
25
+            height: 2.5rem;
26
+            margin-right: .5rem;
27
+        }
28
+
29
+        &:focus {
30
+            @include focused();
31
+        }
32
+    }
33
+
34
+    .layout-topbar-button {
35
+        display: inline-flex;
36
+        justify-content: center;
37
+        align-items: center;
38
+        position: relative;
39
+        color: var(--text-color-secondary);
40
+        border-radius: 50%;
41
+        width: 3rem;
42
+        height: 3rem;
43
+        cursor: pointer;
44
+        transition: background-color $transitionDuration;
45
+        
46
+        &:hover {
47
+            color: var(--text-color);
48
+            background-color: var(--surface-hover);
49
+        }
50
+
51
+        &:focus {
52
+            @include focused();
53
+        }
54
+
55
+        i {
56
+            font-size: 1.5rem;
57
+        }
58
+
59
+        span {
60
+            font-size: 1rem;
61
+            display: none;
62
+        }
63
+    }
64
+
65
+    .layout-menu-button {
66
+        margin-left: 2rem;
67
+    }
68
+
69
+    .layout-topbar-menu-button {
70
+        display: none;
71
+
72
+        i {
73
+            font-size: 1.25rem;
74
+        }
75
+    }
76
+
77
+    .layout-topbar-menu {
78
+        margin: 0 0 0 auto;
79
+        padding: 0;
80
+        list-style: none;
81
+        display: flex;
82
+        
83
+        .layout-topbar-button {
84
+            margin-left: 1rem;
85
+        }
86
+    }
87
+}
88
+
89
+@media (max-width: 991px) {
90
+    .layout-topbar {
91
+        justify-content: space-between;
92
+
93
+        .layout-topbar-logo {
94
+            width: auto;
95
+            order: 2;
96
+        }
97
+    
98
+        .layout-menu-button {
99
+            margin-left: 0;
100
+            order: 1;
101
+        }
102
+
103
+        .layout-topbar-menu-button {
104
+            display: inline-flex;
105
+            margin-left: 0;
106
+            order: 3;
107
+        }
108
+
109
+        .layout-topbar-menu {
110
+            margin-left: 0;
111
+            position: absolute;
112
+            flex-direction: column;
113
+            background-color: var(--surface-overlay);
114
+            box-shadow: 0px 3px 5px rgba(0,0,0,.02), 0px 0px 2px rgba(0,0,0,.05), 0px 1px 4px rgba(0,0,0,.08);
115
+            border-radius: 12px;
116
+            padding: 1rem;
117
+            right: 2rem;
118
+            top: 5rem;
119
+            min-width: 15rem;
120
+
121
+            .layout-topbar-button {
122
+                margin-left: 0;
123
+                display: flex;
124
+                width: 100%;
125
+                height: auto;
126
+                justify-content: flex-start;
127
+                border-radius: 12px;
128
+                padding: 1rem;
129
+
130
+                i {
131
+                    font-size: 1rem;
132
+                    margin-right: .5rem;
133
+                }
134
+
135
+                span {
136
+                    font-weight: medium;
137
+                    display: block;
138
+                }
139
+            }
140
+        }
141
+    }
142
+}

+ 63
- 0
resources/css/partials/_typography.scss Прегледај датотеку

@@ -0,0 +1,63 @@
1
+h1, h2, h3, h4, h5, h6 {
2
+	margin: 1.5rem 0 1rem 0;
3
+	font-family: inherit;
4
+	font-weight: 500;
5
+	line-height: 1.2;
6
+	color: inherit;
7
+
8
+	&:first-child {
9
+		margin-top: 0;
10
+	}
11
+}
12
+
13
+h1 {
14
+	font-size: 2.5rem;
15
+}
16
+
17
+h2 {
18
+	font-size: 2rem;
19
+}
20
+
21
+h3 {
22
+	font-size: 1.75rem;
23
+}
24
+
25
+h4 {
26
+	font-size: 1.5rem;
27
+}
28
+
29
+h5 {
30
+	font-size: 1.25rem;
31
+}
32
+
33
+h6 {
34
+	font-size: 1rem;
35
+}
36
+
37
+mark {
38
+	background: #FFF8E1;
39
+	padding: .25rem .4rem;
40
+	border-radius: $borderRadius;
41
+	font-family: monospace;
42
+}
43
+
44
+blockquote {
45
+	margin: 1rem 0;
46
+	padding: 0 2rem;
47
+	border-left: 4px solid #90A4AE;
48
+}
49
+
50
+hr {
51
+	border-top: solid var(--surface-border);
52
+	border-width: 1px 0 0 0;
53
+	margin: 1rem 0;
54
+}
55
+
56
+p {
57
+	margin: 0 0 1rem 0;
58
+	line-height: 1.5;
59
+
60
+	&:last-child {
61
+		margin-bottom: 0;
62
+	}
63
+}

+ 12
- 0
resources/css/partials/_utils.scss Прегледај датотеку

@@ -0,0 +1,12 @@
1
+.card {
2
+    background-color: var(--surface-card);
3
+    padding: 1.5rem;
4
+    color: var(--surface-900);
5
+    margin-bottom: 1rem;
6
+    border-radius: $borderRadius;
7
+    box-shadow: 0px 3px 5px rgba(0,0,0,.02), 0px 0px 2px rgba(0,0,0,.05), 0px 1px 4px rgba(0,0,0,.08) !important;
8
+
9
+    &.card-w-title {
10
+        padding-bottom: 2rem;
11
+    }
12
+}

+ 4
- 1
resources/js/components/AppAutoComplete.vue Прегледај датотеку

@@ -7,6 +7,9 @@ const props = defineProps({
7 7
     type: String,
8 8
     required: true,
9 9
   },
10
+  labelClass: {
11
+    type: String,
12
+  },
10 13
   disabled: {
11 14
     type: Boolean,
12 15
     default: false,
@@ -64,7 +67,7 @@ const onSelect = (event) => {
64 67
 
65 68
 <template>
66 69
   <div class="field">
67
-    <label :for="forLabel">{{ label }}</label>
70
+    <label :for="forLabel" :class="labelClass">{{ label }}</label>
68 71
 
69 72
     <AutoComplete
70 73
       forceSelection

+ 4
- 1
resources/js/components/AppDropdown.vue Прегледај датотеку

@@ -6,6 +6,9 @@ const props = defineProps({
6 6
     type: String,
7 7
     required: true,
8 8
   },
9
+  labelClass: {
10
+    type: String,
11
+  },
9 12
   disabled: {
10 13
     type: Boolean,
11 14
     default: false,
@@ -68,7 +71,7 @@ const selectedDropdownLabel = (value) => {
68 71
 
69 72
 <template>
70 73
   <div class="field">
71
-    <label v-if="label" :for="forLabel">{{ label }}</label>
74
+    <label v-if="label" :for="forLabel" :class="labelClass">{{ label }}</label>
72 75
 
73 76
     <Dropdown
74 77
       class="w-full"

+ 4
- 1
resources/js/components/AppEditor.vue Прегледај датотеку

@@ -6,6 +6,9 @@ const props = defineProps({
6 6
     type: String,
7 7
     required: true,
8 8
   },
9
+  labelClass: {
10
+    type: String,
11
+  },
9 12
   readOnly: {
10 13
     type: Boolean,
11 14
     required: false,
@@ -35,7 +38,7 @@ const ariaDescribedbyLabel = computed(
35 38
 
36 39
 <template>
37 40
   <div class="field">
38
-    <label v-if="label" :for="forLabel">{{ label }}</label>
41
+    <label v-if="label" :for="forLabel" :class="labelClass">{{ label }}</label>
39 42
 
40 43
     <Editor
41 44
       :read-only="readOnly"

+ 4
- 1
resources/js/components/AppInputNumber.vue Прегледај датотеку

@@ -6,6 +6,9 @@ const props = defineProps({
6 6
     type: String,
7 7
     required: true,
8 8
   },
9
+  labelClass: {
10
+    type: String,
11
+  },
9 12
   disabled: {
10 13
     type: Boolean,
11 14
     default: false,
@@ -76,7 +79,7 @@ const ariaDescribedbyLabel = computed(
76 79
 
77 80
 <template>
78 81
   <div class="field">
79
-    <label :for="forLabel">{{ label }}</label>
82
+    <label :for="forLabel" :class="labelClass">{{ label }}</label>
80 83
 
81 84
     <InputNumber
82 85
       class="w-full"

+ 4
- 1
resources/js/components/AppInputText.vue Прегледај датотеку

@@ -6,6 +6,9 @@ const props = defineProps({
6 6
     type: String,
7 7
     required: true,
8 8
   },
9
+  labelClass: {
10
+    type: String,
11
+  },
9 12
   disabled: {
10 13
     type: Boolean,
11 14
     default: false,
@@ -36,7 +39,7 @@ const ariaDescribedbyLabel = computed(
36 39
 
37 40
 <template>
38 41
   <div class="field">
39
-    <label :for="forLabel">{{ label }}</label>
42
+    <label :for="forLabel" :class="labelClass">{{ label }}</label>
40 43
 
41 44
     <InputText
42 45
       class="w-full"

+ 4
- 1
resources/js/components/AppPassword.vue Прегледај датотеку

@@ -6,6 +6,9 @@ const props = defineProps({
6 6
     type: String,
7 7
     required: true,
8 8
   },
9
+  labelClass: {
10
+    type: String,
11
+  },
9 12
   disabled: {
10 13
     type: Boolean,
11 14
     default: false,
@@ -48,7 +51,7 @@ const ariaDescribedbyLabel = computed(
48 51
 
49 52
 <template>
50 53
   <div class="field">
51
-    <label :for="forLabel">{{ label }}</label>
54
+    <label :for="forLabel" :class="labelClass">{{ label }}</label>
52 55
 
53 56
     <Password
54 57
       class="w-full"

+ 4
- 1
resources/js/components/AppTextArea.vue Прегледај датотеку

@@ -6,6 +6,9 @@ const props = defineProps({
6 6
     type: String,
7 7
     required: true,
8 8
   },
9
+  labelClass: {
10
+    type: String,
11
+  },
9 12
   disabled: {
10 13
     type: Boolean,
11 14
     default: false,
@@ -40,7 +43,7 @@ const ariaDescribedbyLabel = computed(
40 43
 
41 44
 <template>
42 45
   <div class="field">
43
-    <label :for="forLabel">{{ label }}</label>
46
+    <label :for="forLabel" :class="labelClass">{{ label }}</label>
44 47
 
45 48
     <Textarea
46 49
       class="w-full"

+ 3
- 3
resources/js/layouts/Auth/AuthLayout.vue Прегледај датотеку

@@ -34,9 +34,9 @@ defineProps({
34 34
   </div>
35 35
 </template>
36 36
 
37
-<style lang="scss" scoped>
37
+<style scoped>
38 38
 .border-gradient {
39
-  border-radius: 4px;
39
+  border-radius: 56px;
40 40
   padding: 0.3rem;
41 41
   background: linear-gradient(
42 42
     180deg,
@@ -46,7 +46,7 @@ defineProps({
46 46
 }
47 47
 
48 48
 .bg-gradient {
49
-  border-radius: 3px;
49
+  border-radius: 53px;
50 50
   background: linear-gradient(
51 51
     180deg,
52 52
     var(--surface-50) 38.9%,

+ 0
- 8
resources/js/layouts/Dashboard/Components/Sidebar.vue Прегледај датотеку

@@ -11,11 +11,3 @@ defineProps({
11 11
     <SubSidebar class="layout-menu" :items="menu" :root="true" />
12 12
   </div>
13 13
 </template>
14
-
15
-<style lang="scss" scoped>
16
-.layout-menu {
17
-  list-style-type: none;
18
-  margin: 0;
19
-  padding: 0;
20
-}
21
-</style>

+ 0
- 68
resources/js/layouts/Dashboard/Components/SubSidebar.vue Прегледај датотеку

@@ -58,71 +58,3 @@ defineProps({
58 58
     </template>
59 59
   </ul>
60 60
 </template>
61
-
62
-<style lang="scss" scoped>
63
-$transition: 0.2s;
64
-
65
-li {
66
-  &.layout-menuitem-category {
67
-    margin-top: 0.75rem;
68
-
69
-    &:first-child {
70
-      margin-top: 0;
71
-    }
72
-  }
73
-
74
-  .layout-menuitem-root-text {
75
-    text-transform: uppercase;
76
-    color: var(--surface-900);
77
-    font-weight: 600;
78
-    margin-bottom: 0.5rem;
79
-    font-size: 0.875rem;
80
-  }
81
-
82
-  a {
83
-    cursor: pointer;
84
-    text-decoration: none;
85
-    display: flex;
86
-    align-items: center;
87
-    color: var(--text-color);
88
-    transition: color $transition;
89
-    border-radius: 12px;
90
-    padding: 0.75rem 1rem;
91
-    transition: background-color 0.15s;
92
-
93
-    span {
94
-      margin-left: 0.5rem;
95
-    }
96
-
97
-    .menuitem-toggle-icon {
98
-      margin-left: auto;
99
-    }
100
-
101
-    &:focus {
102
-      outline: 0 none;
103
-      outline-offset: 0;
104
-      transition: box-shadow $transition;
105
-      box-shadow: inset var(--focus-ring);
106
-    }
107
-
108
-    &:hover {
109
-      background-color: var(--surface-hover);
110
-    }
111
-
112
-    &.router-link-exact-active {
113
-      font-weight: 700;
114
-      color: var(--primary-color);
115
-    }
116
-  }
117
-
118
-  ul {
119
-    list-style-type: none;
120
-    margin: 0;
121
-    padding: 0;
122
-
123
-    ul {
124
-      padding-left: 1rem;
125
-    }
126
-  }
127
-}
128
-</style>

+ 2
- 160
resources/js/layouts/Dashboard/Components/TopBar.vue Прегледај датотеку

@@ -24,13 +24,13 @@ const logout = () => {
24 24
 <template>
25 25
   <div class="layout-topbar">
26 26
     <Link href="/" class="layout-topbar-logo">
27
-      <img alt="Brand Logo" src="/images/logo.svg" class="md:mr-3" />
27
+      <img alt="Brand Logo" src="/images/logo.svg" />
28 28
       <span>{{ $page.props.company?.name ?? 'Your Company' }}</span>
29 29
     </Link>
30 30
 
31 31
     <button
32 32
       class="p-link layout-menu-button layout-topbar-button"
33
-      @click="$emit('menu-toggle', $event)"
33
+      @click="$emit('menu-toggle')"
34 34
     >
35 35
       <i class="pi pi-bars"></i>
36 36
     </button>
@@ -59,7 +59,6 @@ const logout = () => {
59 59
           class="p-link layout-topbar-button"
60 60
           v-tooltip.bottom="{
61 61
             value: 'Ubah Profil',
62
-            class: 'layout-topbar-menu-tooltip',
63 62
           }"
64 63
         >
65 64
           <i class="pi pi-user"></i>
@@ -71,7 +70,6 @@ const logout = () => {
71 70
           class="p-link layout-topbar-button"
72 71
           v-tooltip.bottom="{
73 72
             value: 'Keluar',
74
-            class: 'layout-topbar-menu-tooltip',
75 73
           }"
76 74
           @click="logout"
77 75
         >
@@ -82,159 +80,3 @@ const logout = () => {
82 80
     </ul>
83 81
   </div>
84 82
 </template>
85
-
86
-<style lang="scss" scoped>
87
-$transition: 0.2s;
88
-
89
-@mixin focused() {
90
-  outline: 0 none;
91
-  outline-offset: 0;
92
-  transition: box-shadow $transition;
93
-  box-shadow: var(--focus-ring);
94
-}
95
-
96
-.layout-topbar {
97
-  position: fixed;
98
-  height: 5rem;
99
-  z-index: 994;
100
-  left: 0;
101
-  top: 0;
102
-  width: 100%;
103
-  padding: 0 2rem;
104
-  background-color: var(--surface-card);
105
-  transition: left $transition;
106
-  display: flex;
107
-  align-items: center;
108
-  box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.02), 0px 0px 2px rgba(0, 0, 0, 0.05),
109
-    0px 1px 4px rgba(0, 0, 0, 0.08);
110
-
111
-  .layout-topbar-logo {
112
-    display: flex;
113
-    align-items: center;
114
-    color: var(--surface-900);
115
-    font-size: 1.5rem;
116
-    font-weight: 500;
117
-    width: 300px;
118
-    border-radius: 12px;
119
-
120
-    img {
121
-      height: 2.5rem;
122
-      margin-right: 0.5rem;
123
-    }
124
-
125
-    &:focus {
126
-      @include focused();
127
-    }
128
-  }
129
-
130
-  .layout-topbar-button {
131
-    display: inline-flex;
132
-    justify-content: center;
133
-    align-items: center;
134
-    position: relative;
135
-    color: var(--text-color-secondary);
136
-    border-radius: 50%;
137
-    width: 3rem;
138
-    height: 3rem;
139
-    cursor: pointer;
140
-    transition: background-color $transition;
141
-
142
-    &:hover {
143
-      color: var(--text-color);
144
-      background-color: var(--surface-hover);
145
-    }
146
-
147
-    &:focus {
148
-      @include focused();
149
-    }
150
-
151
-    i {
152
-      font-size: 1.5rem;
153
-    }
154
-
155
-    span {
156
-      font-size: 1rem;
157
-      display: none;
158
-    }
159
-  }
160
-
161
-  .layout-menu-button {
162
-    margin-left: 2rem;
163
-  }
164
-
165
-  .layout-topbar-menu-button {
166
-    display: none;
167
-
168
-    i {
169
-      font-size: 1.25rem;
170
-    }
171
-  }
172
-
173
-  .layout-topbar-menu {
174
-    margin: 0 0 0 auto;
175
-    padding: 0;
176
-    list-style: none;
177
-    display: flex;
178
-
179
-    .layout-topbar-button {
180
-      margin-left: 1rem;
181
-    }
182
-  }
183
-}
184
-
185
-@media (max-width: 991px) {
186
-  .layout-topbar {
187
-    justify-content: space-between;
188
-
189
-    .layout-topbar-logo {
190
-      width: auto;
191
-      order: 2;
192
-    }
193
-
194
-    .layout-menu-button {
195
-      margin-left: 0;
196
-      order: 1;
197
-    }
198
-
199
-    .layout-topbar-menu-button {
200
-      display: inline-flex;
201
-      margin-left: 0;
202
-      order: 3;
203
-    }
204
-
205
-    .layout-topbar-menu {
206
-      margin-left: 0;
207
-      position: absolute;
208
-      flex-direction: column;
209
-      background-color: var(--surface-overlay);
210
-      box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.02),
211
-        0px 0px 2px rgba(0, 0, 0, 0.05), 0px 1px 4px rgba(0, 0, 0, 0.08);
212
-      border-radius: 4px;
213
-      padding: 1rem;
214
-      right: 2rem;
215
-      top: 5.5rem;
216
-      min-width: 15rem;
217
-
218
-      .layout-topbar-button {
219
-        margin-left: 0;
220
-        display: flex;
221
-        width: 100%;
222
-        height: auto;
223
-        justify-content: flex-start;
224
-        border-radius: 12px;
225
-        padding: 1rem;
226
-
227
-        i {
228
-          font-size: 1rem;
229
-          margin-right: 0.5rem;
230
-        }
231
-
232
-        span {
233
-          font-weight: medium;
234
-          display: block;
235
-        }
236
-      }
237
-    }
238
-  }
239
-}
240
-</style>

+ 2
- 106
resources/js/layouts/Dashboard/DashboardLayout.vue Прегледај датотеку

@@ -22,6 +22,7 @@ const isDesktop = () => window.innerWidth >= 992
22 22
 const containerClass = computed(() => {
23 23
   return [
24 24
     'layout-wrapper',
25
+    'layout-static',
25 26
     {
26 27
       'layout-static-sidebar-inactive': staticMenuInactive.value,
27 28
       'layout-mobile-sidebar-active': mobileMenuActive.value,
@@ -37,7 +38,7 @@ const onWrapperClick = () => {
37 38
   menuClick.value = false
38 39
 }
39 40
 
40
-const onMenuToggle = (event) => {
41
+const onMenuToggle = () => {
41 42
   menuClick.value = true
42 43
 
43 44
   if (isDesktop()) {
@@ -45,8 +46,6 @@ const onMenuToggle = (event) => {
45 46
   } else {
46 47
     mobileMenuActive.value = !mobileMenuActive.value
47 48
   }
48
-
49
-  event.preventDefault()
50 49
 }
51 50
 </script>
52 51
 
@@ -80,106 +79,3 @@ const onMenuToggle = (event) => {
80 79
     </Transition>
81 80
   </div>
82 81
 </template>
83
-
84
-<style lang="scss" scoped>
85
-.layout-sidebar {
86
-  position: fixed;
87
-  width: 300px;
88
-  height: calc(100vh - 9rem);
89
-  z-index: 996;
90
-  overflow-y: auto;
91
-  user-select: none;
92
-  top: 7rem;
93
-  left: 2rem;
94
-  transition: transform 0.2s, left 0.2s;
95
-  background-color: var(--surface-overlay);
96
-  border-radius: 4px;
97
-  padding: 1.5rem;
98
-  box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.02), 0px 0px 2px rgba(0, 0, 0, 0.05),
99
-    0px 1px 4px rgba(0, 0, 0, 0.08);
100
-}
101
-
102
-.layout-main-container {
103
-  display: flex;
104
-  flex-direction: column;
105
-  min-height: 100vh;
106
-  justify-content: space-between;
107
-  padding: 7rem 2rem 2rem 4rem;
108
-  transition: margin-left 0.2s;
109
-}
110
-
111
-.layout-main {
112
-  flex: 1 1 auto;
113
-}
114
-
115
-.layout-footer {
116
-  transition: margin-left 0.2s;
117
-  display: flex;
118
-  align-items: center;
119
-  justify-content: center;
120
-  padding-top: 1rem;
121
-  border-top: 1px solid var(--surface-border);
122
-}
123
-
124
-@media (min-width: 992px) {
125
-  .layout-wrapper {
126
-    .layout-main-container {
127
-      margin-left: 300px;
128
-    }
129
-
130
-    &.layout-static-sidebar-inactive {
131
-      .layout-sidebar {
132
-        transform: translateX(-100%);
133
-        left: 0;
134
-      }
135
-
136
-      .layout-main-container {
137
-        margin-left: 0;
138
-        padding-left: 2rem;
139
-      }
140
-    }
141
-
142
-    .layout-mask {
143
-      display: none;
144
-    }
145
-  }
146
-}
147
-
148
-@media (max-width: 991px) {
149
-  .layout-wrapper {
150
-    .layout-main-container {
151
-      margin-left: 0;
152
-      padding-left: 2rem;
153
-    }
154
-
155
-    .layout-sidebar {
156
-      transform: translateX(-100%);
157
-      left: 0;
158
-      top: 0;
159
-      height: 100vh;
160
-      border-top-left-radius: 0;
161
-      border-bottom-left-radius: 0;
162
-    }
163
-
164
-    .layout-mask {
165
-      z-index: 995;
166
-      background-color: var(--maskbg);
167
-
168
-      &.layout-mask-enter-from,
169
-      &.layout-mask-leave-to {
170
-        background-color: transparent;
171
-      }
172
-    }
173
-
174
-    &.layout-mobile-sidebar-active {
175
-      .layout-sidebar {
176
-        transform: translateX(0);
177
-      }
178
-
179
-      .layout-mask {
180
-        display: block;
181
-      }
182
-    }
183
-  }
184
-}
185
-</style>

+ 2
- 0
resources/js/pages/Auth/Login.vue Прегледај датотеку

@@ -25,6 +25,7 @@ const onSubmit = () => {
25 25
       v-model="form.username"
26 26
       label="Nama Pengguna"
27 27
       placeholder="nama pengguna"
28
+      label-class="text-900 text-xl font-medium mb-2"
28 29
       :error="form.errors.username"
29 30
     />
30 31
 
@@ -32,6 +33,7 @@ const onSubmit = () => {
32 33
       v-model="form.password"
33 34
       label="Kata Sandi"
34 35
       placeholder="Kata Sandi"
36
+      label-class="text-900 text-xl font-medium mb-2"
35 37
       :error="form.errors.password"
36 38
     />
37 39
 

+ 5
- 3
resources/js/vue.js Прегледај датотеку

@@ -4,11 +4,11 @@ import { createInertiaApp } from '@inertiajs/inertia-vue3'
4 4
 import { InertiaProgress } from '@inertiajs/progress'
5 5
 import { resolvePageComponent } from 'laravel-vite-plugin/inertia-helpers'
6 6
 
7
-import 'primeflex/primeflex.css'
8
-import 'primevue/resources/themes/mdc-light-indigo/theme.css'
9 7
 import 'primevue/resources/primevue.min.css'
8
+import 'primeflex/primeflex.css'
10 9
 import 'primeicons/primeicons.css'
11
-import '../css/app.scss'
10
+import 'primevue/resources/themes/lara-light-indigo/theme.css'
11
+import '../css/layout.scss'
12 12
 import PrimeVue from 'primevue/config'
13 13
 import StyleClass from 'primevue/styleclass'
14 14
 import AutoComplete from 'primevue/autocomplete'
@@ -32,6 +32,7 @@ import InputText from 'primevue/inputtext'
32 32
 import Message from 'primevue/message'
33 33
 import Password from 'primevue/password'
34 34
 import Row from 'primevue/row'
35
+import Ripple from 'primevue/ripple'
35 36
 import TabView from 'primevue/tabview'
36 37
 import TabPanel from 'primevue/tabpanel'
37 38
 import Tooltip from 'primevue/tooltip'
@@ -54,6 +55,7 @@ createInertiaApp({
54 55
       .use(DialogService)
55 56
       .directive('styleclass', StyleClass)
56 57
       .directive('tooltip', Tooltip)
58
+      .directive('ripple', Ripple)
57 59
       .component('AutoComplete', AutoComplete)
58 60
       .component('Button', Button)
59 61
       .component('Badge', Badge)