@nine-lab/nine-ux 0.1.149 → 0.1.152

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,15 +1,10 @@
1
- @charset "utf-8";
2
-
3
- /* ==========================================================================
4
- [MAIN INTEGRATED SIDE MENU COMPONENT]
5
- ========================================================================== */
6
1
  :host(nine-side-menu) {
7
2
  opacity: 0.95;
3
+ width: unset;
8
4
  position: fixed;
9
5
  top: 0;
10
6
  bottom: 0;
11
7
  left: 0;
12
- display: block;
13
8
  z-index: 1002;
14
9
  color: #fff;
15
10
  font-weight: 200;
@@ -23,362 +18,381 @@
23
18
  --transition: all .3s;
24
19
  transition: width 0.2s ease-in-out;
25
20
 
26
- /* 상태별 전체 너비 및 바운스 애니메이션 */
27
- &.collapse {
28
- width: var(--min-width);
29
- }
30
- &:not(.collapse) {
31
- width: var(--max-width);
32
- }
33
- &.collapse.hover {
34
- width: var(--max-width);
35
- animation: nineMenuBounce 0.5s ease-in-out 1;
21
+ display: flex;
22
+ flex-direction: column;
23
+
24
+ .body {
25
+ display: flex;
26
+ align-items: flex-start;
27
+ --align-items: center; /* 수직 중앙 정렬 */
28
+ margin-top: 32px; /* 여백 추가 */
36
29
  }
37
30
 
38
- /* 본문 스크롤 감싸는 영역 */
39
- .body-wrapper {
31
+
32
+
33
+ }
34
+
35
+ :host(nine-side-menu.collapse) {
36
+ width: var(--min-width);
37
+ }
38
+ :host(nine-side-menu:not(.collapse)) {
39
+ width: var(--max-width);
40
+ }
41
+ :host(nine-side-menu.collapse:hover) {
42
+ width: var(--max-width);
43
+ --animation: bounce 0.5s ease-in-out 1;
44
+ }
45
+
46
+
47
+ @keyframes bounce {
48
+ 0%, 20%, 50%, 80%, 100% { transform: translateX(0); }
49
+ 40% { transform: translateX(-10px); }
50
+ 60% { left: -10px; transform: translateX(10px); }
51
+ }
52
+
53
+ :host(nine-side-menu.collapse) {
54
+ --width: var(--min-width);
55
+ }
56
+
57
+ :host(nine-side-menu:not(.collapse)) {
58
+ width: var(--max-width);
59
+ }
60
+
61
+
62
+ ::slotted([slot="body-content"]) {
63
+ width: 100%;
64
+ padding: 0;
65
+ }
66
+
67
+
68
+
69
+
70
+ :host(nine-side-menu-body) {
71
+ display: flex;
72
+ --align-items: flex-start;
73
+ align-items: center; /* 수직 중앙 정렬 */
74
+ padding: 10px; /* 여백 추가 */
75
+ justify-content: center;
76
+ height: 100%;
77
+ overflow: auto;
78
+
79
+ ul.side-menu-body {
80
+ width: 100%;
81
+ padding: 0;
82
+ margin: 0;
40
83
  display: flex;
41
84
  flex-direction: column;
42
- align-items: flex-start;
43
- margin-top: 32px;
44
- height: 100%;
45
- overflow: auto;
85
+ --align-items: center;
46
86
  }
87
+ }
88
+
89
+ :host(nine-side-menu-foot) {
90
+ display: flex;
91
+ --align-items: flex-start;
92
+ align-items: center; /* 수직 중앙 정렬 */
93
+ padding: 10px; /* 여백 추가 */
94
+ height: 40px;
95
+ }
96
+
97
+
98
+ :host(nine-side-menu-item) {
99
+ padding: 0;
100
+ margin: 0;
101
+ position: relative;
102
+ display: flex;
103
+ align-items: unset;
104
+ --background-color: #333;
105
+ background-color: unset;
106
+ cursor: pointer;
107
+ transition: opacity 0.5s ease-out, height 0.5s ease-out;
108
+
109
+
110
+ .menubar {
111
+ display: inline-block;
112
+ --padding-left: 16px;
113
+ --margin-left: 16px;
114
+ white-space: nowrap;
115
+ overflow: hidden;
116
+ text-overflow: ellipsis;
117
+ transition: height 0.5s ease-out, padding 0.5s ease-out;
118
+ text-align: left;
119
+ --width: calc(100% - 36px);
120
+ --margin: 0;
121
+ }
122
+
47
123
 
48
- /* --------------------------------------------------------------------------
49
- [1] 헤더 영역 (nine-side-menu-head) - 💡 일반 하위 선택자로 변경
50
- -------------------------------------------------------------------------- */
51
- nine-side-menu-head {
124
+ li {
52
125
  display: flex;
53
126
  align-items: center;
54
- padding: 10px;
55
- height: 40px;
56
- justify-content: center;
57
-
58
- .logo-box {
59
- color: #f0f0f0;
60
- white-space: nowrap;
61
- overflow: hidden;
62
- text-overflow: ellipsis;
63
- text-align: center;
64
- width: 100%;
65
- }
66
-
67
- .icon-box {
68
- display: flex;
69
- align-items: center;
70
- overflow: hidden;
71
-
72
- svg {
73
- display: none;
74
- opacity: 0;
75
- transition: opacity 0.3s ease-in-out;
76
- }
77
- }
78
-
79
- .icon {
80
- fill: var(--icon-color, #eee);
81
- cursor: pointer;
82
- transition: opacity 0.3s ease-in-out;
83
- }
127
+ padding: 0;
128
+ margin: 0;
129
+ position: relative;
130
+ color: unset;
131
+ font-weight: bold;
132
+ width: calc(100% + 36px);
84
133
  }
85
134
 
86
- /* 헤더 상태별 스위칭 */
87
- &.collapse nine-side-menu-head .logo-box {
88
- width: 0;
89
- justify-content: center;
90
- transition: width 0.5s ease-out;
135
+
136
+ .icon {
137
+ position: relative;
138
+ left: 0;
139
+ --top: 50%;
140
+ --transform: translateY(-50%);
141
+ width: 16px;
142
+ height: 16px;
143
+ background-repeat: no-repeat;
144
+ background-position: center center;
145
+ background-size: contain;
146
+ --margin-right: 16px;
147
+ transition: width 0.5s ease-out, height 0.5s ease-out;
91
148
  }
92
- &.collapse.hover nine-side-menu-head .logo-box,
93
- &:not(.collapse) nine-side-menu-head .logo-box {
94
- width: 100%;
95
- justify-content: space-between;
149
+
150
+ .icon-home {
151
+ background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="lightgray" viewBox="0 0 16 16"><path d="M6.5 14.5v-3.505c0-.245.25-.495.5-.495h2c.25 0 .5.25.5.5v3.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5"/></svg>');
96
152
  }
97
153
 
98
- &.collapse nine-side-menu-head .icon:nth-of-type(1) {
99
- display: block;
100
- opacity: 1;
154
+ .icon-base {
155
+ background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="white" viewBox="0 0 16 16"><path d="M0 .5A.5.5 0 0 1 .5 0h15a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.5.5H14v2h1.5a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.5.5H14v2h1.5a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5v-3a.5.5 0 0 1 .5-.5H2v-2H.5a.5.5 0 0 1-.5-.5v-3A.5.5 0 0 1 .5 6H2V4H.5a.5.5 0 0 1-.5-.5zM3 4v2h4.5V4zm5.5 0v2H13V4zM3 10v2h4.5v-2zm5.5 0v2H13v-2zM1 1v2h3.5V1zm4.5 0v2h5V1zm6 0v2H15V1zM1 7v2h3.5V7zm4.5 0v2h5V7zm6 0v2H15V7zM1 13v2h3.5v-2zm4.5 0v2h5v-2zm6 0v2H15v-2z"/></svg>');
101
156
  }
102
157
 
103
- &:not(.collapse) {
104
- nine-side-menu-head .icon:nth-of-type(1) {
105
- display: none;
106
- opacity: 0;
107
- }
108
- nine-side-menu-head .icon:nth-of-type(2) {
109
- display: block;
110
- opacity: 1;
111
- }
112
- nine-side-menu-head .icon:nth-of-type(3) {
113
- display: none;
114
- opacity: 0;
115
- }
116
- nine-side-menu-head .icon-box:hover {
117
- .icon:nth-of-type(2) {
118
- display: none;
119
- opacity: 0;
120
- }
121
- .icon:nth-of-type(3) {
122
- display: block;
123
- opacity: 1;
124
- }
125
- }
158
+ .menubar {
159
+ margin-left: 8px;
126
160
  }
127
161
 
128
- /* --------------------------------------------------------------------------
129
- [2] 바디 컨테이너 영역 (nine-side-menu-body) - 💡 일반 하위 선택자로 변경
130
- -------------------------------------------------------------------------- */
131
- nine-side-menu-body {
132
- display: flex;
133
- align-items: center;
134
- padding: 10px;
135
- height: 40px;
162
+
163
+ .expand-icon {
164
+ width: 8px;
165
+ height: 8px;
166
+ --border-left: 4px solid transparent;
167
+ --border-right: 4px solid transparent;
168
+ --border-top: 4px solid #ccc;
169
+ position: absolute;
170
+ right: 16px;
171
+ background-repeat: no-repeat;
172
+ background-position: center;
173
+ background-size: auto;
174
+ background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="8" height="8" fill="white" class="bi bi-caret-down-fill" viewBox="0 0 16 16"><path d="M7.247 11.14 2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z"/></svg>');
175
+ animation: rotate-out 0.3s ease-in-out forwards;
136
176
  }
137
177
 
138
- /* --------------------------------------------------------------------------
139
- [3] 푸터 영역 (nine-side-menu-foot) - 💡 일반 하위 선택자로 변경
140
- -------------------------------------------------------------------------- */
141
- nine-side-menu-foot {
142
- display: flex;
143
- align-items: center;
144
- padding: 10px;
145
- height: 40px;
146
- justify-content: center;
147
-
148
- .logo-box {
149
- color: #f0f0f0;
150
- white-space: nowrap;
151
- overflow: hidden;
152
- text-overflow: ellipsis;
153
- text-align: center;
154
- width: 100%;
155
- }
156
-
157
- .icon-box {
158
- display: flex;
159
- align-items: center;
160
- overflow: hidden;
161
-
162
- svg {
163
- display: none;
164
- opacity: 0;
165
- transition: opacity 0.3s ease-in-out;
166
- }
167
- }
168
-
169
- .icon {
170
- fill: var(--icon-color, #eee);
171
- cursor: pointer;
172
- transition: opacity 0.3s ease-in-out;
173
- }
178
+
179
+ a {
180
+ color: #999; /* 금색 */
181
+ text-decoration: none; /* 밑줄 제거 */
174
182
  }
175
183
 
176
- /* 푸터 상태별 스위칭 */
177
- &.collapse nine-side-menu-foot .logo-box {
178
- width: 0;
179
- justify-content: center;
180
- transition: width 0.5s ease-out;
184
+ a:hover {
185
+ color: #ccc; /* 주황색 */
186
+ text-decoration: underline; /* 호버 시 밑줄 추가 */
181
187
  }
182
- &.collapse.hover nine-side-menu-foot .logo-box,
183
- &:not(.collapse) nine-side-menu-foot .logo-box {
184
- width: 100%;
185
- justify-content: space-between;
188
+ }
189
+ :host(nine-side-menu-item.group) {
190
+ height: 48px;
191
+ }
192
+ :host(nine-side-menu-item:not(.group)) {
193
+ height: 32px;
194
+ }
195
+
196
+ :host(nine-side-menu-item.active) {
197
+ --background-color: #999;
198
+ color: #9FF2FF;
199
+ }
200
+
201
+ :host(nine-side-menu-item.collapse:not(.group):not(.hover)) {
202
+ opacity: 0;
203
+ height: 0;
204
+ }
205
+
206
+ :host(nine-side-menu-item:hover) {
207
+ filter: brightness(90%);
208
+ }
209
+
210
+
211
+
212
+ :host(nine-side-menu-item.group) .menubar {
213
+ font-weight: 700;
214
+ }
215
+ :host(nine-side-menu-item:not(.group)) .menubar {
216
+ font-weight: 400;
217
+ }
218
+ :host(nine-side-menu-item.collapse:not(.hover)) .menubar {
219
+ transition: width 0.5s ease-out, padding-left 0.5s ease-out;
220
+ width: 0;
221
+ padding-left: unset;
222
+ }
223
+
224
+
225
+ :host(nine-side-menu-item.collapse:not(.hover)) li {
226
+ justify-content: center;
227
+ }
228
+
229
+
230
+ :host(nine-side-menu-item.group) li {
231
+ list-style-type: none;
232
+ }
233
+ :host(nine-side-menu-item:not(.group)) li {
234
+ list-style-type: unset;
235
+ }
236
+ :host(nine-side-menu-item:not(.group)) li::before {
237
+ content: '•';
238
+ margin-right: 8px;
239
+ margin-left: 16px;
240
+ }
241
+
242
+
243
+
244
+ :host(nine-side-menu-item.collapse:not(.hover)) .icon {
245
+ width: 20px;
246
+ height: 20px;
247
+ }
248
+ :host(nine-side-menu-item.collapse:not(.hover)) .menubar,
249
+ :host(nine-side-menu-item.collapse:not(.hover)) .expand-icon {
250
+ display: none;
251
+ }
252
+
253
+ :host(nine-side-menu-item:not(.expand)) .expand-icon {
254
+ transform: rotate(180deg);
255
+ animation: rotate-in 0.3s ease-in-out forwards;
256
+ }
257
+ @keyframes rotate-in {
258
+ from {
259
+ transform: rotate(0deg);
186
260
  }
261
+ to {
262
+ transform: rotate(180deg);
263
+ }
264
+ }
265
+ @keyframes rotate-out {
266
+ from {
267
+ transform: rotate(180deg);
268
+ }
269
+ to {
270
+ transform: rotate(0deg);
271
+ }
272
+ }
273
+
274
+ :host(nine-side-menu-item.collapse:not(.hover)) .expand-icon {
275
+ display: none;
276
+ }
277
+ :host(nine-side-menu-item:not(.group)) .expand-icon {
278
+ display: none;
279
+ }
280
+
187
281
 
188
- &.collapse nine-side-menu-foot .icon:nth-of-type(1) {
189
- display: block;
190
- opacity: 1;
282
+ :host(:not(.group)) {
283
+ .icon {
284
+ display: none;
191
285
  }
286
+ }
192
287
 
193
- &:not(.collapse) {
194
- nine-side-menu-foot .icon:nth-of-type(1) {
195
- display: none;
196
- opacity: 0;
197
- }
198
- nine-side-menu-foot .icon:nth-of-type(2) {
199
- display: block;
200
- opacity: 1;
201
- }
202
- nine-side-menu-foot .icon:nth-of-type(3) {
203
- display: none;
204
- opacity: 0;
205
- }
206
- nine-side-menu-foot .icon-box:hover {
207
- .icon:nth-of-type(2) {
208
- display: none;
209
- opacity: 0;
210
- }
211
- .icon:nth-of-type(3) {
212
- display: block;
213
- opacity: 1;
214
- }
215
- }
288
+ :host(nine-side-menu-item) {
289
+ .icon {
290
+ margin-left: 8px;
291
+ }
292
+ }
293
+ :host(nine-side-menu-item.collapse:not(.hover)) {
294
+ .icon {
295
+ margin-left: 4px;
216
296
  }
297
+ }
217
298
 
218
- /* --------------------------------------------------------------------------
219
- [4] 메뉴 아이템 목록 영역 (nine-side-menu-item) - 💡 일반 하위 선택자로 변경
220
- -------------------------------------------------------------------------- */
221
- nine-side-menu-item {
222
- padding: 0;
223
- margin: 0;
224
- position: relative;
299
+ :host(nine-side-menu-item) {
300
+ --overflow: hidden;
301
+ max-height: 64px; /* 기본 높이 */
302
+ opacity: 1;
303
+ transition: max-height 0.5s ease-in-out, opacity 0.5s ease-in-out;
304
+ }
305
+ :host(nine-side-menu-item.hide) {
306
+ --display: none;
307
+ max-height: 0;
308
+ opacity: 0;
309
+ padding: 0;
310
+ }
311
+
312
+
313
+
314
+ :host(nine-side-menu-head) {
315
+ display: flex;
316
+ --align-items: flex-start;
317
+ align-items: center; /* 수직 중앙 정렬 */
318
+ padding: 10px; /* 여백 추가 */
319
+ height: 40px;
320
+ justify-content: center;
321
+ --border: 2px solid red;
322
+
323
+
324
+ .logo-box
325
+ {
326
+ color: #f0f0f0;
327
+ white-space: nowrap;
328
+ overflow: hidden;
329
+ text-overflow: ellipsis;
330
+ text-align: center;
331
+ width: 100%;
332
+ }
333
+
334
+ .icon-box {
225
335
  display: flex;
226
- align-items: unset;
227
- background-color: unset;
336
+ align-items: center;
337
+ overflow: hidden;
338
+ }
339
+
340
+ .icon {
341
+ fill: var(--icon-color); /* 아이콘 색상 */
228
342
  cursor: pointer;
229
- max-height: 64px;
230
- opacity: 1;
231
- transition: opacity 0.5s ease-out, height 0.5s ease-out, max-height 0.5s ease-in-out;
232
-
233
- &.group {
234
- height: 48px;
235
-
236
- .menubar { font-weight: 700; }
237
- li { list-style-type: none; }
238
- }
239
-
240
- &:not(.group) {
241
- height: 32px;
242
-
243
- .menubar { font-weight: 400; }
244
-
245
- li {
246
- list-style-type: unset;
247
-
248
- &::before {
249
- content: '•';
250
- margin-right: 8px;
251
- margin-left: 16px;
252
- }
253
- }
254
-
255
- .icon { display: none; }
256
- }
257
-
258
- &.active {
259
- color: #9FF2FF;
260
- }
261
-
262
- &:hover {
263
- filter: brightness(90%);
264
- }
265
-
266
- &.hide {
267
- max-height: 0;
268
- height: 0 !important;
269
- opacity: 0;
270
- padding: 0;
271
- overflow: hidden;
272
- }
273
-
274
- .menubar {
275
- display: inline-block;
276
- white-space: nowrap;
277
- overflow: hidden;
278
- text-overflow: ellipsis;
279
- transition: height 0.5s ease-out, padding 0.5s ease-out, width 0.5s ease-out, padding-left 0.5s ease-out;
280
- text-align: left;
281
- margin-left: 8px;
282
- }
283
-
284
- li {
285
- display: flex;
286
- align-items: center;
287
- padding: 0;
288
- margin: 0;
289
- position: relative;
290
- color: unset;
291
- font-weight: bold;
292
- width: calc(100% + 36px);
293
- }
294
-
295
- .icon {
296
- position: relative;
297
- left: 0;
298
- width: 16px;
299
- height: 16px;
300
- background-repeat: no-repeat;
301
- background-position: center center;
302
- background-size: contain;
303
- margin-left: 8px;
304
- transition: width 0.5s ease-out, height 0.5s ease-out;
305
-
306
- &.icon-home {
307
- background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="lightgray" viewBox="0 0 16 16"><path d="M6.5 14.5v-3.505c0-.245.25-.495.5-.495h2c.25 0 .5.25.5.5v3.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5"/></svg>');
308
- }
309
-
310
- &.icon-base {
311
- background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="white" viewBox="0 0 16 16"><path d="M0 .5A.5.5 0 0 1 .5 0h15a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.5.5H14v2h1.5a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.5.5H14v2h1.5a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5v-3a.5.5 0 0 1 .5-.5H2v-2H.5a.5.5 0 0 1-.5-.5v-3A.5.5 0 0 1 .5 6H2V4H.5a.5.5 0 0 1-.5-.5zM3 4v2h4.5V4zm5.5 0v2H13V4zM3 10v2h4.5v-2zm5.5 0v2H13v-2zM1 1v2h3.5V1zm4.5 0v2h5V1zm6 0v2H15V1zM1 7v2h3.5V7zm4.5 0v2h5V7zm6 0v2H15V7zM1 13v2h3.5v-2zm4.5 0v2h5v-2zm6 0v2H15v-2z"/></svg>');
312
- }
313
- }
314
-
315
- .expand-icon {
316
- width: 8px;
317
- height: 8px;
318
- position: absolute;
319
- right: 16px;
320
- background-repeat: no-repeat;
321
- background-position: center;
322
- background-size: auto;
323
- background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="8" height="8" fill="white" class="bi bi-caret-down-fill" viewBox="0 0 16 16"><path d="M7.247 11.14 2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z"/></svg>');
324
- animation: nineMenuRotateOut 0.3s ease-in-out forwards;
325
- }
326
-
327
- &:not(.expand) .expand-icon {
328
- transform: rotate(180deg);
329
- animation: nineMenuRotateIn 0.3s ease-in-out forwards;
330
- }
331
-
332
- a {
333
- color: #999;
334
- text-decoration: none;
335
-
336
- &:hover {
337
- color: #ccc;
338
- text-decoration: underline;
339
- }
340
- }
343
+ transition: opacity 0.3s ease-in-out; /* 부드러운 전환을 위한 애니메이션 */
341
344
  }
342
345
 
343
- /* 아이템 상태별 축소 명세 - 💡 일반 하위 선택자로 변경 */
344
- &.collapse:not(.hover) {
345
- nine-side-menu-item:not(.group) {
346
- opacity: 0;
347
- height: 0;
348
- }
349
- nine-side-menu-item .menubar {
350
- width: 0;
351
- padding-left: unset;
352
- display: none;
353
- }
354
- nine-side-menu-item li {
355
- justify-content: center;
356
- }
357
- nine-side-menu-item .icon {
358
- width: 20px;
359
- height: 20px;
360
- margin-left: 4px;
361
- }
362
- nine-side-menu-item .expand-icon {
363
- display: none;
364
- }
346
+ .icon-box svg {
347
+ display: none;
348
+ opacity: 0;
349
+ transition: opacity 0.3s ease-in-out; /* 부드러운 전환을 위한 애니메이션 */
365
350
  }
351
+
366
352
  }
367
353
 
368
- /* ==========================================================================
369
- [GLOBAL KEYFRAMES]
370
- ========================================================================== */
371
- @keyframes nineMenuBounce {
372
- 0%, 20%, 50%, 80%, 100% { transform: translateX(0); }
373
- 40% { transform: translateX(-10px); }
374
- 60% { left: -10px; transform: translateX(10px); }
354
+ /**
355
+ :host(.collapse) .logo-box { justify-content: center; }
356
+ :host(.collapse:hover) .logo-box, .logo-box { justify-content: space-between; }
357
+ */
358
+
359
+
360
+ :host(nine-side-menu-head.collapse) .logo-box {
361
+ width: 0;
362
+ transition: width 0.5s ease-out;
363
+ }
364
+ :host(nine-side-menu-head:not(.collapse)) .logo-box, :host(.hover) .logo-box {
365
+ width: 100%;
366
+ }
367
+
368
+ :host(nine-side-menu-head.collapse) .icon:first-child {
369
+ display: block;
370
+ opacity: 1;
371
+ }
372
+
373
+ :host(nine-side-menu-head:not(.collapse)) .icon:first-child {
374
+ display: none;
375
+ opacity: 0;
376
+ }
377
+
378
+ :host(nine-side-menu-head:not(.collapse)) .icon:nth-child(2) {
379
+ display: block;
380
+ opacity: 1;
375
381
  }
376
382
 
377
- @keyframes nineMenuRotateIn {
378
- from { transform: rotate(0deg); }
379
- to { transform: rotate(180deg); }
383
+ :host(nine-side-menu-head:not(.collapse)) .icon:nth-child(3) {
384
+ display: none;
385
+ opacity: 0;
380
386
  }
381
- @keyframes nineMenuRotateOut {
382
- from { transform: rotate(180deg); }
383
- to { transform: rotate(0deg); }
384
- }
387
+
388
+ :host(nine-side-menu-head:not(.collapse)) .icon-box:hover .icon:nth-child(2) {
389
+ display: none;
390
+ }
391
+
392
+ :host(nine-side-menu-head:not(.collapse)) .icon-box:hover .icon:nth-child(3) {
393
+ display: block;
394
+ opacity: 1;
395
+ }
396
+
397
+
398
+