@g1cloud/bluesea 5.0.0-alpha.7 → 5.0.0-alpha.70

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/css/bluesea-base.scss +2 -0
  2. package/css/bluesea.scss +2 -0
  3. package/css/component.scss +287 -11
  4. package/css/font.scss +1 -1
  5. package/css/frame/default.scss +134 -26
  6. package/css/layout.scss +75 -5
  7. package/css/reset.scss +5 -1
  8. package/css/transition.scss +108 -0
  9. package/css/user-text.scss +87 -0
  10. package/css/utility.scss +604 -39
  11. package/css/variable.scss +94 -15
  12. package/dist/BSAlertModal-Dg0XwSmx.js +48 -0
  13. package/dist/BSYesNoModal-CwN7km6W.js +55 -0
  14. package/dist/bluesea.js +177 -3587
  15. package/dist/bluesea.umd.cjs +63544 -2594
  16. package/dist/component/basic/BSButton.vue.d.ts +16 -5
  17. package/dist/component/basic/BSCalendar.vue.d.ts +56 -0
  18. package/dist/component/basic/BSCalendarRange.vue.d.ts +49 -0
  19. package/dist/component/basic/BSConsole.vue.d.ts +36 -0
  20. package/dist/component/basic/BSDate.vue.d.ts +19 -0
  21. package/dist/component/basic/BSFormLabel.vue.d.ts +19 -0
  22. package/dist/component/basic/BSImage.vue.d.ts +44 -0
  23. package/dist/component/basic/BSLink.vue.d.ts +21 -0
  24. package/dist/component/{grid/BSGridPageNavigation.vue.d.ts → basic/BSPageNavigation.vue.d.ts} +9 -8
  25. package/dist/component/basic/BSPopup.vue.d.ts +28 -1
  26. package/dist/component/basic/BSPopupButton.vue.d.ts +39 -0
  27. package/dist/component/basic/BSProgressBar.vue.d.ts +33 -0
  28. package/dist/component/basic/BSTooltip.vue.d.ts +38 -0
  29. package/dist/component/global/AddressSearchButton.vue.d.ts +36 -0
  30. package/dist/component/global/AddressSearchList.gen.d.ts +4 -0
  31. package/dist/component/global/BSAddressInput.vue.d.ts +72 -0
  32. package/dist/component/global/BSLocaleSelect.vue.d.ts +35 -0
  33. package/dist/component/global/BSNameInput.vue.d.ts +75 -0
  34. package/dist/component/global/BSTelInput.vue.d.ts +70 -0
  35. package/dist/component/grid/BSDateRangeFilter.vue.d.ts +20 -18
  36. package/dist/component/grid/BSDateRangeFilters.vue.d.ts +29 -7
  37. package/dist/component/grid/BSGrid.vue.d.ts +99 -27
  38. package/dist/component/grid/BSGridCell.vue.d.ts +38 -21
  39. package/dist/component/grid/BSGridCellCheckbox.vue.d.ts +21 -0
  40. package/dist/component/grid/BSGridCellDragHandle.vue.d.ts +15 -0
  41. package/dist/component/grid/BSGridCellEdit.vue.d.ts +21 -0
  42. package/dist/component/grid/BSGridCellSerialNo.vue.d.ts +15 -0
  43. package/dist/component/grid/BSGridControl.vue.d.ts +28 -11
  44. package/dist/component/grid/BSGridHeaderCell.vue.d.ts +25 -10
  45. package/dist/component/grid/{BSGridCheckboxHeaderCell.vue.d.ts → BSGridHeaderCellCheckbox.vue.d.ts} +5 -5
  46. package/dist/component/grid/BSGridHeaderCellResizeHandle.vue.d.ts +21 -0
  47. package/dist/component/grid/BSGridHeaderCellSerialNo.vue.d.ts +2 -0
  48. package/dist/component/grid/BSGridLookup.vue.d.ts +39 -9
  49. package/dist/component/grid/BSGridRow.vue.d.ts +134 -0
  50. package/dist/component/grid/BSTextFilter.vue.d.ts +17 -16
  51. package/dist/component/grid/GridLib.d.ts +13 -1
  52. package/dist/component/grid/GridModel.d.ts +279 -3
  53. package/dist/component/grid/vDndSupport.d.ts +18 -0
  54. package/dist/component/input/BSCheckbox.vue.d.ts +17 -9
  55. package/dist/component/input/BSCheckboxGroup.vue.d.ts +44 -14
  56. package/dist/component/input/BSCodeEditor.vue.d.ts +69 -0
  57. package/dist/component/input/BSColorInput.vue.d.ts +68 -0
  58. package/dist/component/input/BSDateInput.vue.d.ts +38 -19
  59. package/dist/component/input/BSDateInputPopup.vue.d.ts +29 -0
  60. package/dist/component/input/BSDateRange.vue.d.ts +101 -0
  61. package/dist/component/input/BSDateRangeInputPopup.vue.d.ts +33 -0
  62. package/dist/component/input/BSDateRangePresets.vue.d.ts +66 -0
  63. package/dist/component/input/BSImageUpload.vue.d.ts +91 -0
  64. package/dist/component/input/BSMultiImageUpload.vue.d.ts +86 -0
  65. package/dist/component/input/BSMultiSelect.vue.d.ts +50 -20
  66. package/dist/component/input/BSNumberInput.vue.d.ts +47 -10
  67. package/dist/component/input/BSPopupSelect.vue.d.ts +51 -0
  68. package/dist/component/input/BSPriceInput.vue.d.ts +49 -13
  69. package/dist/component/input/BSRadioButton.vue.d.ts +28 -23
  70. package/dist/component/input/BSRadioButtonGroup.vue.d.ts +51 -17
  71. package/dist/component/input/BSSelect.vue.d.ts +57 -20
  72. package/dist/component/input/BSSelectPopup.vue.d.ts +38 -36
  73. package/dist/component/input/BSTextArea.vue.d.ts +39 -10
  74. package/dist/component/input/BSTextInput.vue.d.ts +43 -12
  75. package/dist/component/input/BSTreeMultiSelect.vue.d.ts +80 -0
  76. package/dist/component/input/BSTreeSelect.vue.d.ts +55 -20
  77. package/dist/component/input/BSYesNoGroup.vue.d.ts +53 -0
  78. package/dist/component/input/BSYesNoSelect.vue.d.ts +41 -0
  79. package/dist/component/input/DateInputLib.d.ts +19 -0
  80. package/dist/component/input/DateRangePresetModel.d.ts +14 -0
  81. package/dist/component/input/ImageUploadModel.d.ts +4 -0
  82. package/dist/component/input/ValidationErrors.vue.d.ts +19 -0
  83. package/dist/component/layout/BSCardLayout.vue.d.ts +25 -0
  84. package/dist/component/layout/BSListControl.vue.d.ts +52 -0
  85. package/dist/component/layout/BSListLayout.vue.d.ts +47 -14
  86. package/dist/component/layout/BSListLayoutItem.vue.d.ts +47 -14
  87. package/dist/component/layout/BSTabSheet.vue.d.ts +22 -5
  88. package/dist/component/layout/SlideDownTransition.vue.d.ts +9 -0
  89. package/dist/component/layout/TabSheetModel.d.ts +24 -1
  90. package/dist/component/multilang/BSMultiLangExpandButton.vue.d.ts +2 -0
  91. package/dist/component/multilang/BSMultiLangImageUpload.vue.d.ts +78 -0
  92. package/dist/component/multilang/BSMultiLangRichText.vue.d.ts +89 -0
  93. package/dist/component/multilang/BSMultiLangTextArea.vue.d.ts +38 -17
  94. package/dist/component/multilang/BSMultiLangTextInput.vue.d.ts +38 -17
  95. package/dist/component/multilang/multiLangLib.d.ts +2 -0
  96. package/dist/component/richtext/BSRichText.vue.d.ts +67 -0
  97. package/dist/component/richtext/RichTextToolbar.vue.d.ts +26 -0
  98. package/dist/component/richtext/ToolButtonColor.vue.d.ts +19 -0
  99. package/dist/component/richtext/ToolButtonFontSize.vue.d.ts +19 -0
  100. package/dist/component/tree/BSTree.vue.d.ts +57 -26
  101. package/dist/component/tree/BSTreeControl.vue.d.ts +90 -0
  102. package/dist/component/tree/BSTreeRow.vue.d.ts +53 -22
  103. package/dist/component/tree/TreeLib.d.ts +2 -2
  104. package/dist/component/tree/TreeModel.d.ts +89 -1
  105. package/dist/component/tree/vTreeDndSupport.d.ts +10 -0
  106. package/dist/config/config.d.ts +176 -9
  107. package/dist/contextmenu/BSContextMenu.vue.d.ts +19 -6
  108. package/dist/contextmenu/BSContextMenuContainer.vue.d.ts +1 -1
  109. package/dist/contextmenu/contextMenuPlugin.d.ts +6 -4
  110. package/dist/directive/vClickOutside.d.ts +15 -2
  111. package/dist/directive/vFocusOnLoad.d.ts +2 -1
  112. package/dist/directive/vT.d.ts +10 -1
  113. package/dist/directive/vTooltip.d.ts +13 -0
  114. package/dist/frame/FrameModel.d.ts +31 -3
  115. package/dist/frame/default/DefaultBody.vue.d.ts +1 -1
  116. package/dist/frame/default/DefaultFrameModel.d.ts +68 -9
  117. package/dist/frame/default/DefaultHeader.vue.d.ts +9 -1
  118. package/dist/frame/default/HeaderTab.vue.d.ts +5 -4
  119. package/dist/frame/default/HeaderTabs.vue.d.ts +1 -1
  120. package/dist/frame/default/SidebarMenu.vue.d.ts +1 -1
  121. package/dist/frame/default/SidebarMenuItem.vue.d.ts +13 -6
  122. package/dist/frame/default/SidebarMenuLink.vue.d.ts +17 -10
  123. package/dist/frame/default/SidebarMenuSearch.vue.d.ts +30 -0
  124. package/dist/index-BzsBtE7M.js +64439 -0
  125. package/dist/index.d.ts +96 -45
  126. package/dist/modal/BSAlertModal.vue.d.ts +23 -0
  127. package/dist/modal/BSModalContainer.vue.d.ts +1 -1
  128. package/dist/modal/BSModalFrame.vue.d.ts +15 -5
  129. package/dist/modal/BSModalWrapper.vue.d.ts +5 -4
  130. package/dist/modal/BSYesNoModal.vue.d.ts +25 -0
  131. package/dist/modal/modalPlugin.d.ts +23 -4
  132. package/dist/model/CommonTypes.d.ts +84 -9
  133. package/dist/model/DefaultImpl.d.ts +8 -0
  134. package/dist/model/FieldContext.d.ts +12 -0
  135. package/dist/model/FilterModel.d.ts +44 -17
  136. package/dist/model/SearchModel.d.ts +12 -12
  137. package/dist/notification/BSAlarmFrame.vue.d.ts +26 -0
  138. package/dist/notification/BSNotificationContainer.vue.d.ts +2 -0
  139. package/dist/notification/notificationPlugin.d.ts +32 -0
  140. package/dist/savepoint/SavePoint.d.ts +47 -0
  141. package/dist/style.css +36516 -1665
  142. package/dist/text/i18n.d.ts +28 -0
  143. package/dist/util/componentUtil.d.ts +14 -0
  144. package/dist/util/debounce.d.ts +1 -0
  145. package/dist/util/elementUtil.d.ts +41 -0
  146. package/dist/util/formatUtil.d.ts +8 -13
  147. package/dist/util/multiLangUtil.d.ts +27 -0
  148. package/dist/util/routeUtil.d.ts +2 -1
  149. package/dist/validator/FieldValidator.d.ts +31 -8
  150. package/dist/validator/FormValidator.d.ts +35 -0
  151. package/package.json +41 -18
  152. package/text/bluesea_text_en.json +700 -0
  153. package/text/bluesea_text_ja.json +700 -0
  154. package/text/bluesea_text_ko.json +700 -0
  155. package/text/bluesea_text_zh.json +700 -0
  156. package/dist/component/grid/BSGridCheckboxCell.vue.d.ts +0 -19
  157. package/dist/component/input/BSSelectModel.d.ts +0 -0
  158. package/dist/component/input/InternalDateInput.vue.d.ts +0 -52
  159. package/dist/frame/default/HeaderLogo.vue.d.ts +0 -2
  160. package/dist/frame/default/SideBarMenuSearch.vue.d.ts +0 -26
  161. package/dist/text/texts.d.ts +0 -17
@@ -2,4 +2,6 @@
2
2
  @import "./font";
3
3
  @import "./utility";
4
4
  @import "./layout";
5
+ @import "./transition";
5
6
  @import "./frame/default";
7
+ @import "./user-text";
@@ -0,0 +1,2 @@
1
+ @import "./bluesea-base";
2
+ @import "../dist/style.css";
@@ -14,12 +14,11 @@
14
14
  }
15
15
 
16
16
  .bs-box-component-base {
17
- border: 1px solid $color-border-light;
18
- border-radius: 4px;
19
- height: 28px;
17
+ height: 26px;
20
18
  display: inline-flex;
21
19
  align-items: center;
22
20
  justify-content: left;
21
+ background-color: white;
23
22
  }
24
23
 
25
24
  // input component
@@ -29,31 +28,153 @@
29
28
 
30
29
  .bs-input-base {
31
30
  @extend .bs-box-component-base;
31
+ border: 1px solid $color-border;
32
+ border-radius: 2px;
33
+ background-color: $white;
32
34
 
33
- input {
35
+ > input {
34
36
  border: 0;
35
- border-radius: 3px;
37
+ border-radius: 0;
36
38
  outline: 0;
37
39
  align-self: stretch;
38
40
  flex-grow: 1;
39
- padding: 0 8px;
41
+ flex-basis: 1em;
42
+ padding: 0 6px;
40
43
  background-color: transparent;
41
44
  width: 100%;
42
45
  }
43
46
 
44
- textarea {
47
+ > textarea {
45
48
  border: 0;
46
49
  border-radius: 4px;
47
50
  outline: 0;
48
51
  align-self: stretch;
49
52
  flex-grow: 1;
50
- padding: 8px;
53
+ padding: 6px;
51
54
  line-height: 1.4;
52
55
  font-family: sans-serif;
53
56
  }
54
57
 
58
+ > .suffix,
59
+ .prefix {
60
+ font-size: 0.9em;
61
+ margin-right: 4px;
62
+ background-color: $gray-200;
63
+ padding: 2px 4px;
64
+ border-radius: 2px;
65
+ line-height: 1;
66
+ white-space: nowrap;
67
+
68
+ &:first-child {
69
+ margin-left: 4px;
70
+ }
71
+
72
+ .font-icon {
73
+ font-size: 0.9em;
74
+ }
75
+
76
+ img {
77
+ width: 0.9em;
78
+ height: 0.9em;
79
+ }
80
+ }
81
+
82
+ &:hover {
83
+ border-color: $black;
84
+ }
85
+
55
86
  &:has(:focus) {
56
87
  border-color: $color-focus;
88
+ border-width: 1px;
89
+ }
90
+ }
91
+
92
+ .bs-text-input,
93
+ .bs-number-input,
94
+ .bs-price-input,
95
+ .bs-date-input,
96
+ .bs-date-range,
97
+ .bs-multi-lang-text-input,
98
+ .bs-multi-lang-text-area,
99
+ .bs-multi-lang-rich-text,
100
+ .bs-text-area,
101
+ .bs-rich-text {
102
+
103
+ &.modified {
104
+ > .input-area {
105
+ border-color: $purple !important;
106
+ }
107
+ }
108
+
109
+ &.error {
110
+ > .input-area {
111
+ border-color: $danger !important;
112
+
113
+ > input {
114
+ color: $danger !important;
115
+ }
116
+ }
117
+ }
118
+
119
+ &.disabled {
120
+ > .input-area {
121
+ border-color: $gray-400 !important;
122
+ background-color: $gray-100 !important;
123
+
124
+ > input {
125
+ color: $gray-400 !important;
126
+ }
127
+ }
128
+ }
129
+ }
130
+
131
+ // date
132
+ .bs-date-input,
133
+ .bs-date-range {
134
+
135
+ .view-mode {
136
+ white-space: nowrap;
137
+ display: flex;
138
+ align-items: center;
139
+ gap: 4px;
140
+
141
+ &::before {
142
+ content: 'calendar_month';
143
+ width: 1em;
144
+ font-family: $icon-font-family;
145
+ }
146
+ }
147
+ }
148
+
149
+ .bs-date-input,
150
+ .bs-date-range,
151
+ .bs-calendar,
152
+ .bs-calendar-range {
153
+ .extra-dates {
154
+ color: $gray-500;
155
+ margin-top: 4px;
156
+
157
+ .extra-date {
158
+ white-space: nowrap;
159
+ display: flex;
160
+ align-items: center;
161
+ gap: 4px;
162
+ font-size: .8125rem;
163
+
164
+ &::before {
165
+ content: 'globe';
166
+ width: 1em;
167
+ font-family: $icon-font-family;
168
+ }
169
+ }
170
+ }
171
+ }
172
+
173
+ .bs-calendar,
174
+ .bs-calendar-range {
175
+ .extra-dates {
176
+ padding-top: 8px;
177
+ border-top: 1px solid $color-border;
57
178
  }
58
179
  }
59
180
 
@@ -75,9 +196,52 @@
75
196
  color: $color-text;
76
197
  }
77
198
 
199
+ &:hover {
200
+ color: $black;
201
+
202
+ & ~ label {
203
+ color: $black;
204
+ }
205
+ }
206
+
78
207
  &:focus::before {
79
208
  color: $color-focus;
80
209
  }
210
+
211
+ &:focus ~ label {
212
+ color: $color-focus;
213
+ }
214
+
215
+ }
216
+
217
+ &.modified {
218
+ & input::before {
219
+ color: $purple !important;
220
+ }
221
+
222
+ & input ~ label {
223
+ color: $purple !important;
224
+ }
225
+ }
226
+
227
+ &.error {
228
+ & input::before {
229
+ color: $danger !important;
230
+ }
231
+
232
+ & input ~ label {
233
+ color: $danger !important;
234
+ }
235
+ }
236
+
237
+ &.disabled {
238
+ & input::before {
239
+ color: $gray-400 !important;
240
+ }
241
+
242
+ & input ~ label {
243
+ color: $gray-400 !important;
244
+ }
81
245
  }
82
246
 
83
247
  label {
@@ -88,19 +252,49 @@
88
252
  }
89
253
  }
90
254
 
255
+ .bs-checkbox-group,
256
+ .bs-radio-button-group {
257
+ &.modified {
258
+ input::before {
259
+ color: $purple !important;
260
+ }
261
+
262
+ input ~ label {
263
+ color: $purple !important;
264
+ }
265
+ }
266
+
267
+ &.error {
268
+ input::before {
269
+ color: $danger !important;
270
+ }
271
+
272
+ input ~ label {
273
+ color: $danger !important;
274
+ }
275
+ }
276
+ }
277
+
91
278
  // select, multi-select, tree-select
92
279
  .bs-select-wrap {
93
280
  @extend .bs-box-component-wrap;
94
281
  position: relative;
95
282
  outline: 0;
283
+ background-color: $white;
284
+
285
+ &:hover > .selected {
286
+ border-color: $black;
287
+ }
96
288
 
97
289
  &:focus > .selected {
98
290
  border-color: $color-focus;
99
291
  }
100
292
 
101
- .selected {
293
+ > .selected {
102
294
  @extend .bs-box-component-base;
103
- padding: 0 8px;
295
+ border: 1px solid $color-border;
296
+ border-radius: 2px;
297
+ padding: 0 6px;
104
298
  min-width: 50px;
105
299
  cursor: pointer;
106
300
  display: flex;
@@ -108,6 +302,14 @@
108
302
  .label {
109
303
  flex-grow: 1;
110
304
  white-space: nowrap;
305
+ overflow: hidden;
306
+ text-overflow: ellipsis;
307
+ }
308
+
309
+ .placeholder {
310
+ color: $gray-400;
311
+ overflow: hidden;
312
+ text-overflow: ellipsis;
111
313
  }
112
314
 
113
315
  .dropdown-btn {
@@ -122,6 +324,32 @@
122
324
  &.popup-open .dropdown-btn {
123
325
  transform: rotate(180deg);
124
326
  }
327
+
328
+ &.modified > .selected {
329
+ border-color: $purple !important;
330
+ }
331
+
332
+ &.error > .selected {
333
+ border-color: $danger !important;
334
+ color: $danger !important;
335
+ }
336
+
337
+ &.disabled > .selected {
338
+ border-color: $gray-400 !important;
339
+ background-color: $gray-100 !important;
340
+ color: $gray-400 !important;
341
+ }
342
+
343
+ .small-progress {
344
+ font-family: $icon-font-family;
345
+ font-size: 0.9em;
346
+ position: absolute;
347
+ left: 100%;
348
+ top: 0;
349
+ padding: 0 2px;
350
+ color: $gray-400;
351
+ animation: spin 1s linear infinite;
352
+ }
125
353
  }
126
354
 
127
355
  // field error
@@ -156,10 +384,14 @@
156
384
  .font-icon {
157
385
  font-family: $icon-font-family;
158
386
  font-size: 1rem;
387
+ max-width: 1em;
388
+
389
+ &.filled {
390
+ font-variation-settings: 'FILL' 1, 'wght' 300, 'GRAD' 0, 'opsz' 48;
391
+ }
159
392
  }
160
393
 
161
394
  // transition
162
-
163
395
  .fade-enter-active,
164
396
  .fade-leave-active {
165
397
  transition: opacity .3s;
@@ -170,3 +402,47 @@
170
402
  opacity: 0;
171
403
  }
172
404
 
405
+ // text-description
406
+ .text-description {
407
+ margin-top: 2px;
408
+ color: $gray-400;
409
+ font-size: 0.923em;
410
+ }
411
+
412
+ // drag and drop
413
+ .bs-drop-position {
414
+ position: absolute;
415
+ border: 1px solid $primary;
416
+ border-radius: 2px;
417
+ background-color: $primary-400;
418
+ opacity: 0.7;
419
+ z-index: 100;
420
+
421
+ &.vertical {
422
+ left: 0;
423
+ width: 100%;
424
+ height: 8px;
425
+
426
+ &.before {
427
+ top: -4px;
428
+ }
429
+
430
+ &.after {
431
+ bottom: -4px;
432
+ }
433
+ }
434
+
435
+ &.horizontal {
436
+ left: 0;
437
+ width: 8px;
438
+ height: 100%;
439
+
440
+ &.before {
441
+ left: -4px;
442
+ }
443
+
444
+ &.after {
445
+ right: -4px;
446
+ }
447
+ }
448
+ }
package/css/font.scss CHANGED
@@ -1,3 +1,3 @@
1
- body, input, textarea {
1
+ body, input, textarea, button {
2
2
  font-family: 'Noto Sans', 'Noto Sans KR', 'Noto Sans JP', 'Arial', sans-serif;
3
3
  }
@@ -1,13 +1,15 @@
1
1
  @import "../variable";
2
2
  @import "../component";
3
3
 
4
- $color-header-bg: #464854 !default;
4
+ $color-header-bg: $primary !default;
5
5
  $color-header-text: #FFFFFF !default;
6
6
  $color-menu-bg: #464854 !default;
7
7
  $color-menu-border: #2D2E36;
8
8
 
9
9
  $header-height: 44px !default;
10
10
 
11
+ $sidebar-menu-width: 220px !default;
12
+
11
13
  header.default-header {
12
14
  height: $header-height;
13
15
  background-color: $color-header-bg;
@@ -16,33 +18,60 @@ header.default-header {
16
18
  position: fixed;
17
19
  width: 100%;
18
20
  top: 0;
19
- z-index: 100;
21
+ z-index: 200;
20
22
 
21
23
  .header-logo {
22
24
  @extend .bs-clickable;
25
+ display: flex;
26
+ flex-shrink: 0;
27
+ align-items: center;
23
28
  color: $color-header-text;
24
- font-size: 20px;
25
- font-weight: bold;
26
- margin-bottom: -2px;
29
+ font-size: 1.2307em;
30
+ font-weight: 500;
31
+ line-height: 1;
32
+
33
+ em {
34
+ display: inline-flex;
35
+ align-items: center;
36
+ margin-right: 6px;
37
+ padding: 2px 4px;
38
+ border-radius: 4px;
39
+ background-color: $white;
40
+ color: $primary-600;
41
+ font-size: 1em;
42
+ font-weight: 700;
43
+ }
44
+ }
45
+
46
+ &.fixed-menu .header-logo {
47
+ min-width: $sidebar-menu-width - 48px;
27
48
  }
28
49
 
29
50
  .sidebar-menu {
51
+ width: 48px;
30
52
  align-self: stretch;
31
53
 
32
54
  .menu-btn {
33
55
  @extend .bs-clickable;
34
- font-size: 28px;
56
+ font-size: 1.375rem;
57
+ display: inline-flex;
58
+ align-items: center;
59
+ justify-content: center;
60
+ width: 32px;
35
61
  height: $header-height;
62
+ max-width: $header-height;
36
63
  line-height: $header-height;
37
64
  color: $color-header-text;
38
- padding: 0 8px;
65
+ margin-left: 8px;
39
66
  }
40
67
 
41
68
  .menu-container {
42
69
  position: absolute;
43
70
  background-color: $color-menu-bg;
44
71
  height: calc(100vh - $header-height);
45
- min-width: 200px;
72
+ width: $sidebar-menu-width;
73
+ overflow: auto;
74
+ padding-bottom: 100px;
46
75
  }
47
76
 
48
77
  .sidebar-menu-item {
@@ -51,33 +80,64 @@ header.default-header {
51
80
 
52
81
  a.sidebar-menu-link, div.sidebar-menu-link {
53
82
  @extend .bs-clickable;
54
- display: block;
55
- padding: 12px 16px;
56
- color: $color-header-text;
83
+ display: flex;
84
+ align-items: center;
85
+ justify-content: space-between;
86
+ padding: 12px;
87
+ color: $gray-400;
57
88
  text-decoration: none;
89
+
90
+ .font-icon {
91
+ font-size: .8rem;
92
+ }
58
93
  }
59
94
 
60
95
  .sidebar-submenu {
61
- padding: 8px 24px 8px 8px;
96
+ padding: 8px 16px 8px 8px;
62
97
  background-color: $color-menu-border;
63
98
 
64
- a.sidebar-menu-link, div.sidebar-menu-link {
65
- padding: 8px 16px;
99
+ > a.sidebar-menu-link, > div.sidebar-menu-link {
100
+ position: relative;
101
+ display: flex;
102
+ align-items: center;
103
+ justify-content: space-between;
104
+ padding: 8px 0 8px 20px;
105
+
106
+ &:before {
107
+ content: "";
108
+ position: absolute;
109
+ top: 50%;
110
+ left: 8px;
111
+ display: block;
112
+ width: 2px;
113
+ height: 2px;
114
+ background-color: $gray-400;
115
+ }
116
+
117
+ .font-icon {
118
+ margin-left: 8px;
119
+ font-size: .8rem;
120
+
121
+ &.filled {
122
+ color: $secondary;
123
+ }
124
+ }
66
125
  }
67
126
  }
68
127
  }
69
128
  }
70
129
 
71
130
  .header-tabs {
72
- margin: 0 12px;
131
+ margin: 0 16px;
73
132
  display: flex;
74
133
  align-items: end;
75
134
  gap: 1px;
76
135
  flex-grow: 1;
77
136
  align-self: end;
137
+ overflow-x: auto;
78
138
 
79
139
  .header-tab {
80
- background-color: #747787;
140
+ background-color: $primary-400;
81
141
  padding: 0 12px;
82
142
  height: 32px;
83
143
  border-top-left-radius: 4px;
@@ -86,39 +146,48 @@ header.default-header {
86
146
  align-items: center;
87
147
  flex-grow: 1;
88
148
  position: relative;
89
- max-width: 160px;
90
- min-width: 100px;
149
+ max-width: 180px;
150
+ min-width: 110px;
91
151
  color: $color-header-text;
152
+ cursor: pointer;
92
153
 
93
154
  .header-title {
94
155
  padding-right: 6px;
95
- flex-grow: 1;
96
156
  width: 50px;
97
- flex-basis: 80px;
157
+ flex-basis: 180px;
98
158
  overflow: hidden;
99
- text-overflow: ellipsis;
100
159
  white-space: nowrap;
101
- cursor: default;
160
+ mask-image: linear-gradient(to right, #000 85%, transparent 95%);
102
161
  }
103
162
 
104
163
  .close-btn {
105
164
  @extend .bs-clickable;
106
165
  right: 4px;
107
- padding: 4px;
108
- border-radius: 4px;
109
166
  display: none;
110
- margin-right: -8px;
111
167
  }
112
168
 
113
169
  &:hover {
170
+ .header-title {
171
+ mask-image: linear-gradient(to right, #000 80%, transparent 90%);
172
+ }
173
+
114
174
  .close-btn {
175
+ position: absolute;
176
+ top: 4px;
177
+ right: 8px;
115
178
  display: block;
116
179
  }
180
+
181
+ background-color: lighten($primary-400, 5%);
117
182
  }
118
183
 
119
184
  &.selected {
120
185
  color: $color-text;
121
- background-color: white; //#E5E5E5;
186
+ background-color: $white;
187
+
188
+ &:hover {
189
+ background-color: $white;
190
+ }
122
191
  }
123
192
  }
124
193
  }
@@ -128,9 +197,48 @@ header.default-header {
128
197
  margin-top: $header-height;
129
198
  min-height: calc(100vh - $header-height);
130
199
 
200
+ &.fixed-menu {
201
+ padding-left: $sidebar-menu-width;
202
+ }
203
+
131
204
  .body-tab:has(>div.h-full) {
132
205
  height: calc(100vh - $header-height);
133
206
  }
207
+
208
+ .fixed-header {
209
+ position: fixed;
210
+ width: 100%;
211
+ border-bottom: 1px solid $gray-400;
212
+ background-color: white;
213
+ padding: 8px 16px;
214
+ z-index: 10;
215
+ }
216
+
217
+ &.fixed-menu .fixed-header {
218
+ width: calc(100% - $sidebar-menu-width);
219
+ }
220
+
221
+ .colored-bg {
222
+ flex-grow: 1;
223
+ background-color: $primary-100;
224
+
225
+ > .box-style {
226
+ background-color: $white;
227
+ border-radius: 10px;
228
+ }
229
+
230
+ .dashboard-box-style {
231
+ background-color: $white;
232
+ padding: 16px;
233
+ border-radius: 10px;
234
+
235
+ .title {
236
+ font-weight: 500;
237
+ line-height: 1;
238
+ margin-bottom: 8px;
239
+ }
240
+ }
241
+ }
134
242
  }
135
243
 
136
244
  .menu-slide-enter-active,