@onetype/framework 2.0.52 → 2.0.54

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 (154) hide show
  1. package/addons/core/database/back/items/commands/create.js +1 -1
  2. package/addons/core/database/back/items/commands/delete.js +3 -3
  3. package/addons/core/database/back/items/commands/update.js +1 -1
  4. package/addons/float/popup/css/popup.css +2 -2
  5. package/addons/render/directives/front/functions/process.js +3 -1
  6. package/addons/render/directives/front/items/self/160-slot.js +9 -1
  7. package/addons/render/directives/front/items/self/660-form.js +19 -13
  8. package/addons/render/editor/addon.js +13 -0
  9. package/addons/render/editor/functions/block/add.js +57 -0
  10. package/addons/render/editor/functions/block/delete.js +32 -0
  11. package/addons/render/editor/functions/block/find.js +30 -0
  12. package/addons/render/editor/functions/render/block.js +114 -0
  13. package/addons/render/editor/functions/render/blocks.js +31 -0
  14. package/addons/render/editor/items/elements/editor.js +69 -0
  15. package/addons/render/editor/items/self/paragraph.js +21 -0
  16. package/addons/render/editor/styles/editor.css +252 -0
  17. package/addons/render/elements/front/functions/types/colors/badge.js +19 -0
  18. package/addons/render/elements/front/functions/types/colors/status.js +24 -0
  19. package/addons/render/elements/front/functions/types/escape.js +8 -0
  20. package/addons/render/elements/front/functions/types/format/currency.js +16 -0
  21. package/addons/render/elements/front/functions/types/format/date.js +16 -0
  22. package/addons/render/elements/front/functions/types/format/number.js +24 -0
  23. package/addons/render/elements/front/functions/types/format/timeago.js +43 -0
  24. package/addons/render/elements/front/functions/types/render/avatar.js +10 -0
  25. package/addons/render/elements/front/functions/types/render/badge.js +17 -0
  26. package/addons/render/elements/front/functions/types/render/boolean.js +8 -0
  27. package/addons/render/elements/front/functions/types/render/chip.js +6 -0
  28. package/addons/render/elements/front/functions/types/render/currency.js +7 -0
  29. package/addons/render/elements/front/functions/types/render/date.js +6 -0
  30. package/addons/render/elements/front/functions/types/render/description.js +12 -0
  31. package/addons/render/elements/front/functions/types/render/group.js +11 -0
  32. package/addons/render/elements/front/functions/types/render/icon.js +8 -0
  33. package/addons/render/elements/front/functions/types/render/image.js +9 -0
  34. package/addons/render/elements/front/functions/types/render/link.js +8 -0
  35. package/addons/render/elements/front/functions/types/render/media.js +16 -0
  36. package/addons/render/elements/front/functions/types/render/metric.js +13 -0
  37. package/addons/render/elements/front/functions/types/render/number.js +6 -0
  38. package/addons/render/elements/front/functions/types/render/progress.js +13 -0
  39. package/addons/render/elements/front/functions/types/render/status.js +12 -0
  40. package/addons/render/elements/front/functions/types/render/tag.js +6 -0
  41. package/addons/render/elements/front/functions/types/render/tags.js +11 -0
  42. package/addons/render/elements/front/functions/types/render/text.js +8 -0
  43. package/addons/render/elements/front/functions/types/render/timeago.js +6 -0
  44. package/addons/render/elements/front/functions/types/render.js +16 -0
  45. package/addons/render/elements/front/items/directives/element.js +8 -3
  46. package/addons/render/elements/front/items/self/cards/info/info.css +499 -0
  47. package/addons/render/elements/front/items/self/cards/info/info.js +224 -0
  48. package/addons/render/elements/front/items/self/cards/item/item.css +614 -0
  49. package/addons/render/elements/front/items/self/cards/item/item.js +200 -0
  50. package/addons/render/elements/front/items/self/cards/pricing/pricing.css +318 -46
  51. package/addons/render/elements/front/items/self/cards/pricing/pricing.js +81 -30
  52. package/addons/render/elements/front/items/self/cards/profile/profile.css +446 -0
  53. package/addons/render/elements/front/items/self/cards/profile/profile.js +186 -0
  54. package/addons/render/elements/front/items/self/cards/share/share.css +445 -0
  55. package/addons/render/elements/front/items/self/cards/share/share.js +316 -0
  56. package/addons/render/elements/front/items/self/cards/stat/stat.css +356 -0
  57. package/addons/render/elements/front/items/self/cards/stat/stat.js +146 -0
  58. package/addons/render/elements/front/items/self/charts/bar/bar.css +263 -0
  59. package/addons/render/elements/front/items/self/charts/bar/bar.js +156 -0
  60. package/addons/render/elements/front/items/self/charts/donut/donut.css +222 -0
  61. package/addons/render/elements/front/items/self/charts/donut/donut.js +164 -0
  62. package/addons/render/elements/front/items/self/charts/line/line.css +229 -0
  63. package/addons/render/elements/front/items/self/charts/line/line.js +249 -0
  64. package/addons/render/elements/front/items/self/charts/sparkline/sparkline.css +102 -0
  65. package/addons/render/elements/front/items/self/charts/sparkline/sparkline.js +164 -0
  66. package/addons/render/elements/front/items/self/core/builder/builder.css +71 -116
  67. package/addons/render/elements/front/items/self/core/builder/builder.js +212 -127
  68. package/addons/render/elements/front/items/self/core/repeater/repeater.css +338 -71
  69. package/addons/render/elements/front/items/self/core/repeater/repeater.js +191 -44
  70. package/addons/render/elements/front/items/self/data/filters/filters.css +541 -0
  71. package/addons/render/elements/front/items/self/data/filters/filters.js +504 -0
  72. package/addons/render/elements/front/items/self/data/table/table.css +588 -0
  73. package/addons/render/elements/front/items/self/data/table/table.js +589 -0
  74. package/addons/render/elements/front/items/self/form/button/button.css +430 -103
  75. package/addons/render/elements/front/items/self/form/button/button.js +109 -101
  76. package/addons/render/elements/front/items/self/form/checkbox/checkbox.css +356 -39
  77. package/addons/render/elements/front/items/self/form/checkbox/checkbox.js +109 -75
  78. package/addons/render/elements/front/items/self/form/color/color.css +255 -61
  79. package/addons/render/elements/front/items/self/form/color/color.js +135 -41
  80. package/addons/render/elements/front/items/self/form/date/date.css +289 -38
  81. package/addons/render/elements/front/items/self/form/date/date.js +108 -24
  82. package/addons/render/elements/front/items/self/form/editor/editor.css +447 -0
  83. package/addons/render/elements/front/items/self/form/editor/editor.js +794 -0
  84. package/addons/render/elements/front/items/self/form/field/field.css +160 -29
  85. package/addons/render/elements/front/items/self/form/field/field.js +36 -16
  86. package/addons/render/elements/front/items/self/form/input/input.css +272 -32
  87. package/addons/render/elements/front/items/self/form/input/input.js +324 -124
  88. package/addons/render/elements/front/items/self/form/radio/radio.css +310 -45
  89. package/addons/render/elements/front/items/self/form/radio/radio.js +99 -80
  90. package/addons/render/elements/front/items/self/form/rating/rating.css +234 -57
  91. package/addons/render/elements/front/items/self/form/rating/rating.js +216 -86
  92. package/addons/render/elements/front/items/self/form/section/section.css +247 -32
  93. package/addons/render/elements/front/items/self/form/section/section.js +53 -16
  94. package/addons/render/elements/front/items/self/form/select/select.css +362 -64
  95. package/addons/render/elements/front/items/self/form/select/select.js +156 -30
  96. package/addons/render/elements/front/items/self/form/slider/slider.css +331 -123
  97. package/addons/render/elements/front/items/self/form/slider/slider.js +124 -26
  98. package/addons/render/elements/front/items/self/form/tags/tags.css +328 -53
  99. package/addons/render/elements/front/items/self/form/tags/tags.js +155 -28
  100. package/addons/render/elements/front/items/self/form/textarea/textarea.css +128 -27
  101. package/addons/render/elements/front/items/self/form/textarea/textarea.js +172 -113
  102. package/addons/render/elements/front/items/self/form/toggle/toggle.css +239 -39
  103. package/addons/render/elements/front/items/self/form/toggle/toggle.js +32 -17
  104. package/addons/render/elements/front/items/self/form/transfer/transfer.css +377 -0
  105. package/addons/render/elements/front/items/self/form/transfer/transfer.js +453 -0
  106. package/addons/render/elements/front/items/self/form/upload/upload.css +408 -0
  107. package/addons/render/elements/front/items/self/form/upload/upload.js +469 -0
  108. package/addons/render/elements/front/items/self/global/accordion/accordion.css +377 -0
  109. package/addons/render/elements/front/items/self/global/accordion/accordion.js +135 -0
  110. package/addons/render/elements/front/items/self/global/code/code.css +207 -44
  111. package/addons/render/elements/front/items/self/global/code/code.js +327 -19
  112. package/addons/render/elements/front/items/self/global/gallery/gallery.css +521 -0
  113. package/addons/render/elements/front/items/self/global/gallery/gallery.js +291 -0
  114. package/addons/render/elements/front/items/self/global/heading/heading.css +151 -49
  115. package/addons/render/elements/front/items/self/global/heading/heading.js +30 -15
  116. package/addons/render/elements/front/items/self/global/markdown/markdown.css +284 -135
  117. package/addons/render/elements/front/items/self/global/markdown/markdown.js +35 -5
  118. package/addons/render/elements/front/items/self/global/menu/menu.css +311 -56
  119. package/addons/render/elements/front/items/self/global/menu/menu.js +95 -47
  120. package/addons/render/elements/front/items/self/global/notice/notice.css +263 -23
  121. package/addons/render/elements/front/items/self/global/notice/notice.js +51 -11
  122. package/addons/render/elements/front/items/self/global/parameters/parameters.css +276 -33
  123. package/addons/render/elements/front/items/self/global/parameters/parameters.js +86 -16
  124. package/addons/render/elements/front/items/self/global/tags/tags.css +215 -29
  125. package/addons/render/elements/front/items/self/global/tags/tags.js +91 -17
  126. package/addons/render/elements/front/items/self/navigation/dock/dock.css +221 -0
  127. package/addons/render/elements/front/items/self/navigation/dock/dock.js +134 -0
  128. package/addons/render/elements/front/items/self/navigation/footer/footer.css +356 -0
  129. package/addons/render/elements/front/items/self/navigation/footer/footer.js +219 -0
  130. package/addons/render/elements/front/items/self/navigation/navbar/navbar.css +736 -76
  131. package/addons/render/elements/front/items/self/navigation/navbar/navbar.js +437 -29
  132. package/addons/render/elements/front/items/self/navigation/sidebar/sidebar.css +327 -196
  133. package/addons/render/elements/front/items/self/navigation/sidebar/sidebar.js +115 -62
  134. package/addons/render/elements/front/items/self/navigation/steps/steps.css +345 -0
  135. package/addons/render/elements/front/items/self/navigation/steps/steps.js +113 -0
  136. package/addons/render/elements/front/items/self/navigation/tabs/tabs.css +507 -33
  137. package/addons/render/elements/front/items/self/navigation/tabs/tabs.js +62 -19
  138. package/addons/render/elements/front/items/self/status/code/code.css +83 -12
  139. package/addons/render/elements/front/items/self/status/code/code.js +15 -4
  140. package/addons/render/elements/front/items/self/status/empty/empty.css +95 -15
  141. package/addons/render/elements/front/items/self/status/empty/empty.js +17 -12
  142. package/addons/render/elements/front/items/self/status/error/error.css +99 -14
  143. package/addons/render/elements/front/items/self/status/error/error.js +21 -11
  144. package/addons/render/elements/front/items/self/status/loading/loading.css +85 -14
  145. package/addons/render/elements/front/items/self/status/loading/loading.js +5 -6
  146. package/addons/render/elements/front/styles/types.css +363 -0
  147. package/instructions.txt +28 -0
  148. package/lib/load.js +1 -0
  149. package/lib/styles/reset.css +89 -76
  150. package/package.json +1 -1
  151. package/addons/render/elements/front/items/self/form/editor-markdown/editor-markdown.css +0 -410
  152. package/addons/render/elements/front/items/self/form/editor-markdown/editor-markdown.js +0 -191
  153. package/addons/render/elements/front/items/self/global/faq/faq.css +0 -98
  154. package/addons/render/elements/front/items/self/global/faq/faq.js +0 -56
@@ -2,186 +2,846 @@
2
2
 
3
3
  .e-64d8716d
4
4
  {
5
- display: flex;
6
- flex-direction: column;
5
+ display: block;
7
6
  width: 100%;
8
7
  }
9
8
 
10
9
  /* Holder */
11
10
 
12
11
  .e-64d8716d > .holder
12
+ {
13
+ position: relative;
14
+ display: flex;
15
+ flex-direction: column;
16
+ width: 100%;
17
+ background: var(--ot-bg-1);
18
+ border-bottom: 1px solid transparent;
19
+ transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1), background 0.3s cubic-bezier(0.22, 1, 0.36, 1), border-color 0.3s cubic-bezier(0.22, 1, 0.36, 1), box-shadow 0.3s cubic-bezier(0.22, 1, 0.36, 1);
20
+ z-index: 100;
21
+ }
22
+
23
+ /* Sticky */
24
+
25
+ .e-64d8716d > .holder.sticky
26
+ {
27
+ position: sticky;
28
+ top: 0;
29
+ }
30
+
31
+ /* Blur (glassmorphism) */
32
+
33
+ .e-64d8716d > .holder.blur
34
+ {
35
+ background: rgba(255, 255, 255, 0.72);
36
+ backdrop-filter: saturate(180%) blur(20px);
37
+ -webkit-backdrop-filter: saturate(180%) blur(20px);
38
+ }
39
+
40
+ body.dark .e-64d8716d > .holder.blur
41
+ {
42
+ background: rgba(20, 20, 22, 0.72);
43
+ }
44
+
45
+ /* Scroll hide */
46
+
47
+ .e-64d8716d > .holder.hidden
48
+ {
49
+ transform: translateY(-100%);
50
+ }
51
+
52
+ /* Shrunk on scroll */
53
+
54
+ .e-64d8716d > .holder.shrunk
55
+ {
56
+ box-shadow: 0 1px 0 0 var(--ot-bg-2-border), 0 12px 32px -18px rgba(20, 20, 30, 0.08);
57
+ }
58
+
59
+ /* ===== BANNER (top slot) ===== */
60
+
61
+ .e-64d8716d > .holder > .banner
13
62
  {
14
63
  display: flex;
15
64
  align-items: center;
65
+ justify-content: center;
16
66
  width: 100%;
17
- height: var(--ot-height-l);
18
- padding: 0 var(--ot-spacing-m);
67
+ padding: var(--ot-spacing-s) var(--ot-spacing-l);
68
+ background: var(--ot-brand-opacity);
19
69
  border-bottom: 1px solid var(--ot-bg-2-border);
70
+ font-family: var(--ot-font-primary);
71
+ font-size: var(--ot-size-s);
72
+ color: var(--ot-text-1);
20
73
  }
21
74
 
22
- /* Logo */
75
+ /* ===== ACTIONS SLOT (right section) ===== */
23
76
 
24
- .e-64d8716d > .holder > .logo
77
+ .e-64d8716d > .holder > .bar > .section > .actions
25
78
  {
26
79
  display: flex;
27
80
  align-items: center;
28
- text-decoration: none;
29
- flex-shrink: 0;
81
+ gap: var(--ot-spacing-s);
30
82
  }
31
83
 
32
- .e-64d8716d > .holder > .logo > .logo-icon
84
+ /* ===== BAR ===== */
85
+
86
+ .e-64d8716d > .holder > .bar
33
87
  {
34
- height: var(--ot-size-m);
88
+ display: flex;
89
+ align-items: center;
90
+ gap: var(--ot-spacing-m);
91
+ width: 100%;
92
+ height: 64px;
93
+ padding: 0 var(--ot-spacing-l);
94
+ transition: height 0.3s cubic-bezier(0.22, 1, 0.36, 1);
35
95
  }
36
96
 
37
- .e-64d8716d > .holder > .logo > .logo-arrow
97
+ .e-64d8716d > .holder.shrunk > .bar
38
98
  {
39
- display: none;
40
- font-size: var(--ot-size-m);
41
- color: var(--ot-text-2);
99
+ height: 56px;
100
+ }
101
+
102
+ /* Border bottom variant */
103
+
104
+ .e-64d8716d > .holder.border-bottom
105
+ {
106
+ border-bottom-color: var(--ot-bg-2-border);
107
+ }
108
+
109
+ /* Clean variant */
110
+
111
+ .e-64d8716d > .holder.clean
112
+ {
113
+ background: transparent !important;
114
+ border-bottom-color: transparent !important;
42
115
  }
43
116
 
44
- /* Tabs */
117
+ /* Background variants */
118
+
119
+ .e-64d8716d > .holder.bg-1 { background: var(--ot-bg-1); }
120
+ .e-64d8716d > .holder.bg-2 { background: var(--ot-bg-2); }
121
+ .e-64d8716d > .holder.bg-3 { background: var(--ot-bg-3); }
122
+ .e-64d8716d > .holder.bg-4 { background: var(--ot-bg-4); }
123
+
124
+ /* ===== SECTIONS ===== */
45
125
 
46
- .e-64d8716d > .holder > .tabs
126
+ .e-64d8716d > .holder > .bar > .section
47
127
  {
48
128
  display: flex;
49
129
  align-items: center;
50
- margin-left: var(--ot-spacing-m);
51
- border-left: 1px solid var(--ot-bg-2-border);
52
- height: 100%;
130
+ gap: var(--ot-spacing-s);
131
+ min-width: 0;
132
+ }
133
+
134
+ .e-64d8716d > .holder > .bar > .section.left
135
+ {
136
+ flex: 1 1 auto;
137
+ }
138
+
139
+ .e-64d8716d > .holder > .bar > .section.center
140
+ {
141
+ flex: 1 1 auto;
142
+ justify-content: center;
143
+ }
144
+
145
+ .e-64d8716d > .holder > .bar > .section.right
146
+ {
147
+ flex: 0 1 auto;
148
+ margin-left: auto;
53
149
  }
54
150
 
55
- .e-64d8716d > .holder .tab
151
+ /* ===== BRAND ===== */
152
+
153
+ .e-64d8716d > .holder > .bar > .section > .brand
154
+ {
155
+ display: inline-flex;
156
+ align-items: center;
157
+ padding: 6px 8px;
158
+ margin-left: -8px;
159
+ border-radius: var(--ot-radius-s);
160
+ text-decoration: none;
161
+ color: inherit;
162
+ transition: background 0.2s cubic-bezier(0.22, 1, 0.36, 1);
163
+ }
164
+
165
+ .e-64d8716d > .holder > .bar > .section > .brand:hover
166
+ {
167
+ background: var(--ot-bg-2);
168
+ }
169
+
170
+ .e-64d8716d > .holder > .bar > .section > .brand > .brand-logo
171
+ {
172
+ display: block;
173
+ height: 24px;
174
+ width: auto;
175
+ }
176
+
177
+ /* ===== CRUMBS ===== */
178
+
179
+ .e-64d8716d > .holder > .bar > .section > .crumbs
56
180
  {
57
181
  display: flex;
58
182
  align-items: center;
59
- height: 100%;
60
- gap: var(--ot-spacing-s);
61
- padding: 0 var(--ot-spacing-m);
62
- border-right: 1px solid var(--ot-bg-2-border);
183
+ gap: 4px;
184
+ min-width: 0;
185
+ overflow: hidden;
186
+ }
187
+
188
+ .e-64d8716d > .holder > .bar > .section > .crumbs > .crumb
189
+ {
190
+ display: inline-flex;
191
+ align-items: center;
192
+ gap: 4px;
193
+ padding: 4px 8px;
194
+ border-radius: var(--ot-radius-s);
195
+ font-family: var(--ot-font-primary);
196
+ font-size: var(--ot-size-s);
197
+ font-weight: 500;
198
+ color: var(--ot-text-2);
63
199
  text-decoration: none;
200
+ transition: background 0.2s cubic-bezier(0.22, 1, 0.36, 1), color 0.2s cubic-bezier(0.22, 1, 0.36, 1);
64
201
  white-space: nowrap;
65
- transition: color 0.15s ease, background 0.15s ease;
202
+ position: relative;
203
+ }
204
+
205
+ .e-64d8716d > .holder > .bar > .section > .crumbs > .crumb:not(:last-child)
206
+ {
207
+ margin-right: 12px;
208
+ }
209
+
210
+ .e-64d8716d > .holder > .bar > .section > .crumbs > .crumb:not(:last-child)::after
211
+ {
212
+ content: '/';
213
+ position: absolute;
214
+ right: -10px;
215
+ top: 50%;
216
+ transform: translateY(-50%);
217
+ color: var(--ot-text-3);
218
+ font-weight: 400;
219
+ opacity: 0.6;
220
+ }
221
+
222
+ .e-64d8716d > .holder > .bar > .section > .crumbs > .crumb:hover
223
+ {
224
+ background: var(--ot-bg-2);
225
+ color: var(--ot-text-1);
226
+ }
227
+
228
+ .e-64d8716d > .holder > .bar > .section > .crumbs > .crumb:last-child
229
+ {
230
+ color: var(--ot-text-1);
231
+ font-weight: 600;
232
+ }
233
+
234
+ .e-64d8716d > .holder > .bar > .section > .crumbs > .crumb > i
235
+ {
236
+ font-size: 16px;
237
+ }
238
+
239
+ /* ===== NAV ===== */
240
+
241
+ .e-64d8716d > .holder > .bar > .section .nav
242
+ {
243
+ display: flex;
244
+ align-items: center;
245
+ gap: 2px;
246
+ }
247
+
248
+ .e-64d8716d > .holder > .bar > .section .nav .nav-item
249
+ {
250
+ display: inline-flex;
251
+ align-items: center;
252
+ gap: 6px;
253
+ padding: 8px 12px;
254
+ border-radius: var(--ot-radius-s);
255
+ font-family: var(--ot-font-primary);
256
+ font-size: var(--ot-size-s);
66
257
  font-weight: 500;
67
258
  color: var(--ot-text-2);
259
+ text-decoration: none;
260
+ transition: background 0.2s cubic-bezier(0.22, 1, 0.36, 1), color 0.2s cubic-bezier(0.22, 1, 0.36, 1);
261
+ white-space: nowrap;
262
+ cursor: pointer;
68
263
  }
69
264
 
70
- .e-64d8716d > .holder .tab > i
265
+ .e-64d8716d > .holder > .bar > .section .nav .nav-item:hover:not(.disabled)
71
266
  {
72
- font-size: var(--ot-size-m);
267
+ background: var(--ot-bg-2);
268
+ color: var(--ot-text-1);
73
269
  }
74
270
 
75
- .e-64d8716d > .holder .tab:hover,
76
- .e-64d8716d > .holder .tab.active
271
+ .e-64d8716d > .holder > .bar > .section .nav .nav-item.active
77
272
  {
78
273
  color: var(--ot-text-1);
274
+ background: var(--ot-bg-2);
275
+ font-weight: 600;
79
276
  }
80
277
 
81
- /* Right */
278
+ .e-64d8716d > .holder > .bar > .section .nav .nav-item.disabled
279
+ {
280
+ opacity: 0.45;
281
+ cursor: not-allowed;
282
+ pointer-events: none;
283
+ }
82
284
 
83
- .e-64d8716d > .holder > .right
285
+ .e-64d8716d > .holder > .bar > .section .nav .nav-item > i
84
286
  {
85
- display: flex;
287
+ font-size: 18px;
288
+ }
289
+
290
+ .e-64d8716d > .holder > .bar > .section .nav .nav-item > .nav-chevron
291
+ {
292
+ font-size: 16px;
293
+ opacity: 0.5;
294
+ transition: transform 0.2s cubic-bezier(0.22, 1, 0.36, 1);
295
+ }
296
+
297
+ .e-64d8716d > .holder > .bar > .section .nav .nav-item.has-children:hover > .nav-chevron
298
+ {
299
+ transform: rotate(180deg);
300
+ }
301
+
302
+ .e-64d8716d > .holder > .bar > .section .nav .nav-item > .nav-badge
303
+ {
304
+ display: inline-flex;
86
305
  align-items: center;
87
- margin-left: auto;
88
- border-left: 1px solid var(--ot-bg-2-border);
306
+ justify-content: center;
307
+ min-width: 18px;
308
+ height: 18px;
309
+ padding: 0 5px;
310
+ background: var(--ot-brand);
311
+ color: #fff;
312
+ border-radius: 100px;
313
+ font-size: 10px;
314
+ font-weight: 700;
315
+ line-height: 1;
316
+ }
317
+
318
+ /* ===== BELL (notifications) ===== */
319
+
320
+ .e-64d8716d > .holder > .bar > .section .bell
321
+ {
322
+ position: relative;
323
+ display: inline-flex;
324
+ align-items: center;
325
+ justify-content: center;
326
+ width: 38px;
327
+ height: 38px;
328
+ border-radius: var(--ot-radius-s);
329
+ color: var(--ot-text-2);
330
+ text-decoration: none;
331
+ transition: background 0.2s cubic-bezier(0.22, 1, 0.36, 1), color 0.2s cubic-bezier(0.22, 1, 0.36, 1);
332
+ }
333
+
334
+ .e-64d8716d > .holder > .bar > .section .bell:hover
335
+ {
336
+ background: var(--ot-bg-2);
337
+ color: var(--ot-text-1);
338
+ }
339
+
340
+ .e-64d8716d > .holder > .bar > .section .bell > i
341
+ {
342
+ font-size: 20px;
343
+ }
344
+
345
+ .e-64d8716d > .holder > .bar > .section .bell > .bell-badge
346
+ {
347
+ position: absolute;
348
+ top: 4px;
349
+ right: 4px;
350
+ display: inline-flex;
351
+ align-items: center;
352
+ justify-content: center;
353
+ min-width: 16px;
354
+ height: 16px;
355
+ padding: 0 4px;
356
+ background: var(--ot-red);
357
+ color: #fff;
358
+ border: 2px solid var(--ot-bg-1);
359
+ border-radius: 100px;
360
+ font-size: 9px;
361
+ font-weight: 700;
362
+ line-height: 1;
363
+ }
364
+
365
+ /* ===== USER TRIGGER ===== */
366
+
367
+ .e-64d8716d > .holder > .bar > .section .user-trigger
368
+ {
369
+ display: inline-flex;
370
+ align-items: center;
371
+ gap: 4px;
372
+ padding: 4px 6px 4px 4px;
373
+ background: transparent;
374
+ border: 1px solid transparent;
375
+ border-radius: 100px;
376
+ cursor: pointer;
377
+ transition: background 0.2s cubic-bezier(0.22, 1, 0.36, 1), border-color 0.2s cubic-bezier(0.22, 1, 0.36, 1);
378
+ }
379
+
380
+ .e-64d8716d > .holder > .bar > .section .user-trigger:hover
381
+ {
382
+ background: var(--ot-bg-2);
383
+ border-color: var(--ot-bg-2-border);
384
+ }
385
+
386
+ .e-64d8716d > .holder > .bar > .section .user-avatar-small
387
+ {
388
+ display: inline-flex;
389
+ align-items: center;
390
+ justify-content: center;
391
+ width: 30px;
392
+ height: 30px;
393
+ border-radius: 50%;
394
+ overflow: hidden;
395
+ background: var(--ot-bg-3);
396
+ color: var(--ot-text-2);
397
+ flex-shrink: 0;
398
+ }
399
+
400
+ .e-64d8716d > .holder > .bar > .section .user-avatar-small > img
401
+ {
402
+ width: 100%;
89
403
  height: 100%;
404
+ object-fit: cover;
90
405
  }
91
406
 
92
- /* Burger */
407
+ .e-64d8716d > .holder > .bar > .section .user-avatar-small.user-avatar-fallback > i
408
+ {
409
+ font-size: 18px;
410
+ }
411
+
412
+ .e-64d8716d > .holder > .bar > .section .user-chevron > i
413
+ {
414
+ font-size: 18px;
415
+ color: var(--ot-text-3);
416
+ }
417
+
418
+ /* ===== BURGER ===== */
93
419
 
94
- .e-64d8716d > .holder > .burger
420
+ .e-64d8716d > .holder > .bar > .burger
95
421
  {
96
422
  display: none;
97
423
  align-items: center;
98
424
  justify-content: center;
99
- width: var(--ot-height-m);
100
- height: var(--ot-height-m);
101
- margin-left: auto;
102
- background: none;
425
+ width: 40px;
426
+ height: 40px;
427
+ background: transparent;
103
428
  border: none;
104
- color: var(--ot-text-2);
429
+ border-radius: var(--ot-radius-s);
430
+ color: var(--ot-text-1);
105
431
  cursor: pointer;
432
+ margin-left: auto;
433
+ }
434
+
435
+ .e-64d8716d > .holder > .bar > .burger:hover
436
+ {
437
+ background: var(--ot-bg-2);
106
438
  }
107
439
 
108
- .e-64d8716d > .holder > .burger > i
440
+ .e-64d8716d > .holder > .bar > .burger > i
109
441
  {
110
- font-size: var(--ot-size-l);
442
+ font-size: 22px;
111
443
  }
112
444
 
113
- /* Menu */
445
+ /* ===== MOBILE DRAWER ===== */
114
446
 
115
- .e-64d8716d > .menu
447
+ .e-64d8716d > .holder > .drawer
116
448
  {
117
449
  display: none;
118
450
  flex-direction: column;
119
- border-bottom: 1px solid var(--ot-bg-2-border);
451
+ padding: var(--ot-spacing-m) var(--ot-spacing-l) var(--ot-spacing-l);
452
+ border-top: 1px solid var(--ot-bg-2-border);
453
+ max-height: calc(100vh - 64px);
454
+ overflow-y: auto;
455
+ animation: e-64d8716d-drawer-in 0.25s cubic-bezier(0.22, 1, 0.36, 1);
456
+ }
457
+
458
+ @keyframes e-64d8716d-drawer-in
459
+ {
460
+ from { opacity: 0; transform: translateY(-4px); }
461
+ to { opacity: 1; transform: translateY(0); }
120
462
  }
121
463
 
122
- .e-64d8716d > .menu > .link
464
+ .e-64d8716d > .holder > .drawer > .drawer-user
123
465
  {
124
466
  display: flex;
125
467
  align-items: center;
126
468
  gap: var(--ot-spacing-s);
127
- padding: var(--ot-spacing-s) var(--ot-spacing-m);
469
+ padding: var(--ot-spacing-m);
470
+ background: var(--ot-bg-2);
471
+ border-radius: var(--ot-radius-m);
472
+ margin-bottom: var(--ot-spacing-m);
473
+ }
474
+
475
+ .e-64d8716d > .holder > .drawer > .drawer-user > .drawer-user-avatar
476
+ {
477
+ display: inline-flex;
478
+ align-items: center;
479
+ justify-content: center;
480
+ width: 44px;
481
+ height: 44px;
482
+ border-radius: 50%;
483
+ overflow: hidden;
484
+ background: var(--ot-bg-3);
485
+ color: var(--ot-text-2);
486
+ flex-shrink: 0;
487
+ }
488
+
489
+ .e-64d8716d > .holder > .drawer > .drawer-user > .drawer-user-avatar > img
490
+ {
491
+ width: 100%;
492
+ height: 100%;
493
+ object-fit: cover;
494
+ }
495
+
496
+ .e-64d8716d > .holder > .drawer > .drawer-user > .drawer-user-avatar.drawer-user-avatar-fallback > i
497
+ {
498
+ font-size: 22px;
499
+ }
500
+
501
+ .e-64d8716d > .holder > .drawer > .drawer-user > .drawer-user-text
502
+ {
503
+ display: flex;
504
+ flex-direction: column;
505
+ min-width: 0;
506
+ }
507
+
508
+ .e-64d8716d > .holder > .drawer > .drawer-user > .drawer-user-text > .drawer-user-name
509
+ {
510
+ font-family: var(--ot-font-primary);
511
+ font-size: var(--ot-size-m);
512
+ font-weight: 600;
513
+ color: var(--ot-text-1);
514
+ }
515
+
516
+ .e-64d8716d > .holder > .drawer > .drawer-user > .drawer-user-text > .drawer-user-email
517
+ {
518
+ font-family: var(--ot-font-primary);
519
+ font-size: var(--ot-size-s);
520
+ color: var(--ot-text-3);
521
+ }
522
+
523
+ .e-64d8716d > .holder > .drawer > .drawer-nav,
524
+ .e-64d8716d > .holder > .drawer > .drawer-user-menu
525
+ {
526
+ display: flex;
527
+ flex-direction: column;
528
+ gap: 2px;
529
+ }
530
+
531
+ .e-64d8716d > .holder > .drawer .drawer-item
532
+ {
533
+ display: flex;
534
+ align-items: center;
535
+ gap: var(--ot-spacing-s);
536
+ padding: 12px 14px;
537
+ border-radius: var(--ot-radius-s);
538
+ font-family: var(--ot-font-primary);
128
539
  font-size: var(--ot-size-m);
129
540
  font-weight: 500;
541
+ color: var(--ot-text-1);
542
+ text-decoration: none;
543
+ transition: background 0.15s cubic-bezier(0.22, 1, 0.36, 1);
544
+ }
545
+
546
+ .e-64d8716d > .holder > .drawer .drawer-item:hover
547
+ {
548
+ background: var(--ot-bg-2);
549
+ }
550
+
551
+ .e-64d8716d > .holder > .drawer .drawer-item.active
552
+ {
553
+ background: var(--ot-brand-opacity);
554
+ color: var(--ot-brand);
555
+ }
556
+
557
+ .e-64d8716d > .holder > .drawer .drawer-item > i
558
+ {
559
+ font-size: 20px;
560
+ }
561
+
562
+ .e-64d8716d > .holder > .drawer .drawer-item > .drawer-badge
563
+ {
564
+ margin-left: auto;
565
+ display: inline-flex;
566
+ align-items: center;
567
+ justify-content: center;
568
+ min-width: 20px;
569
+ height: 20px;
570
+ padding: 0 6px;
571
+ background: var(--ot-brand);
572
+ color: #fff;
573
+ border-radius: 100px;
574
+ font-size: 10px;
575
+ font-weight: 700;
576
+ }
577
+
578
+ .e-64d8716d > .holder > .drawer .drawer-group
579
+ {
580
+ margin: var(--ot-spacing-s) 0;
581
+ }
582
+
583
+ .e-64d8716d > .holder > .drawer .drawer-group > .drawer-group-head
584
+ {
585
+ display: flex;
586
+ align-items: center;
587
+ gap: var(--ot-spacing-s);
588
+ padding: 10px 14px;
589
+ font-family: var(--ot-font-primary);
590
+ font-size: 11px;
591
+ font-weight: 700;
592
+ color: var(--ot-text-3);
593
+ text-transform: uppercase;
594
+ letter-spacing: 0.06em;
595
+ }
596
+
597
+ .e-64d8716d > .holder > .drawer .drawer-group > .drawer-group-head > i
598
+ {
599
+ font-size: 16px;
600
+ }
601
+
602
+ .e-64d8716d > .holder > .drawer .drawer-group > .drawer-child
603
+ {
604
+ display: flex;
605
+ align-items: center;
606
+ gap: var(--ot-spacing-s);
607
+ padding: 10px 14px 10px 36px;
608
+ border-radius: var(--ot-radius-s);
609
+ font-family: var(--ot-font-primary);
610
+ font-size: var(--ot-size-s);
130
611
  color: var(--ot-text-2);
131
612
  text-decoration: none;
132
- border-bottom: 1px solid var(--ot-bg-2-border);
613
+ transition: background 0.15s cubic-bezier(0.22, 1, 0.36, 1), color 0.15s cubic-bezier(0.22, 1, 0.36, 1);
133
614
  }
134
615
 
135
- .e-64d8716d > .menu > .link > i
616
+ .e-64d8716d > .holder > .drawer .drawer-group > .drawer-child:hover
136
617
  {
618
+ background: var(--ot-bg-2);
619
+ color: var(--ot-text-1);
620
+ }
621
+
622
+ .e-64d8716d > .holder > .drawer .drawer-separator
623
+ {
624
+ height: 1px;
625
+ background: var(--ot-bg-2-border);
626
+ margin: var(--ot-spacing-s) 0;
627
+ }
628
+
629
+ /* ===== DROPDOWN (navbar items children) ===== */
630
+
631
+ .navbar-dropdown
632
+ {
633
+ display: flex;
634
+ flex-direction: column;
635
+ padding: 6px;
636
+ background: var(--ot-bg-1);
637
+ border: 1px solid var(--ot-bg-2-border);
638
+ border-radius: var(--ot-radius-m);
639
+ box-shadow: 0 12px 32px -12px rgba(20, 20, 30, 0.16);
640
+ min-width: 240px;
641
+ max-width: 320px;
642
+ }
643
+
644
+ .navbar-dropdown > .dropdown-item
645
+ {
646
+ display: flex;
647
+ align-items: flex-start;
648
+ gap: var(--ot-spacing-s);
649
+ padding: 10px 12px;
650
+ border-radius: var(--ot-radius-s);
651
+ text-decoration: none;
652
+ color: var(--ot-text-1);
653
+ transition: background 0.15s cubic-bezier(0.22, 1, 0.36, 1);
654
+ }
655
+
656
+ .navbar-dropdown > .dropdown-item:hover
657
+ {
658
+ background: var(--ot-bg-2);
659
+ }
660
+
661
+ .navbar-dropdown > .dropdown-item > .dropdown-icon
662
+ {
663
+ display: inline-flex;
664
+ align-items: center;
665
+ justify-content: center;
666
+ width: 32px;
667
+ height: 32px;
668
+ border-radius: var(--ot-radius-s);
669
+ background: var(--ot-brand-opacity);
670
+ color: var(--ot-brand);
671
+ flex-shrink: 0;
672
+ }
673
+
674
+ .navbar-dropdown > .dropdown-item > .dropdown-icon > i
675
+ {
676
+ font-size: 18px;
677
+ }
678
+
679
+ .navbar-dropdown > .dropdown-item > .dropdown-text
680
+ {
681
+ display: flex;
682
+ flex-direction: column;
683
+ gap: 1px;
684
+ min-width: 0;
685
+ }
686
+
687
+ .navbar-dropdown > .dropdown-item > .dropdown-text > .dropdown-label
688
+ {
689
+ font-family: var(--ot-font-primary);
137
690
  font-size: var(--ot-size-m);
691
+ font-weight: 600;
692
+ color: var(--ot-text-1);
693
+ line-height: 1.3;
694
+ }
695
+
696
+ .navbar-dropdown > .dropdown-item > .dropdown-text > .dropdown-description
697
+ {
698
+ font-family: var(--ot-font-primary);
699
+ font-size: var(--ot-size-s);
700
+ color: var(--ot-text-3);
701
+ line-height: 1.4;
702
+ }
703
+
704
+ /* ===== USER MENU POPUP ===== */
705
+
706
+ .navbar-user-menu
707
+ {
708
+ display: flex;
709
+ flex-direction: column;
710
+ background: var(--ot-bg-1);
711
+ border: 1px solid var(--ot-bg-2-border);
712
+ border-radius: var(--ot-radius-m);
713
+ box-shadow: 0 12px 32px -12px rgba(20, 20, 30, 0.16);
714
+ min-width: 260px;
715
+ overflow: hidden;
716
+ }
717
+
718
+ .navbar-user-menu > .user-head
719
+ {
720
+ display: flex;
721
+ align-items: center;
722
+ gap: var(--ot-spacing-s);
723
+ padding: var(--ot-spacing-m);
724
+ border-bottom: 1px solid var(--ot-bg-2-border);
725
+ }
726
+
727
+ .navbar-user-menu > .user-head > .user-avatar
728
+ {
729
+ display: inline-flex;
730
+ align-items: center;
731
+ justify-content: center;
732
+ width: 40px;
733
+ height: 40px;
734
+ border-radius: 50%;
735
+ overflow: hidden;
736
+ background: var(--ot-bg-2);
737
+ color: var(--ot-text-2);
738
+ flex-shrink: 0;
138
739
  }
139
740
 
140
- .e-64d8716d > .menu > .link:hover,
141
- .e-64d8716d > .menu > .link.active
741
+ .navbar-user-menu > .user-head > .user-avatar > img
142
742
  {
743
+ width: 100%;
744
+ height: 100%;
745
+ object-fit: cover;
746
+ }
747
+
748
+ .navbar-user-menu > .user-head > .user-avatar.user-avatar-fallback > i
749
+ {
750
+ font-size: 20px;
751
+ }
752
+
753
+ .navbar-user-menu > .user-head > .user-text
754
+ {
755
+ display: flex;
756
+ flex-direction: column;
757
+ min-width: 0;
758
+ }
759
+
760
+ .navbar-user-menu > .user-head > .user-text > .user-name
761
+ {
762
+ font-family: var(--ot-font-primary);
763
+ font-size: var(--ot-size-m);
764
+ font-weight: 600;
143
765
  color: var(--ot-text-1);
766
+ white-space: nowrap;
767
+ overflow: hidden;
768
+ text-overflow: ellipsis;
144
769
  }
145
770
 
146
- /* Background variants */
771
+ .navbar-user-menu > .user-head > .user-text > .user-email
772
+ {
773
+ font-family: var(--ot-font-primary);
774
+ font-size: var(--ot-size-s);
775
+ color: var(--ot-text-3);
776
+ white-space: nowrap;
777
+ overflow: hidden;
778
+ text-overflow: ellipsis;
779
+ }
147
780
 
148
- .e-64d8716d > .holder.bg-1 { background: var(--ot-bg-1); }
149
- .e-64d8716d > .holder.bg-1 ~ .menu { background: var(--ot-bg-1); }
150
- .e-64d8716d > .holder.bg-1 .tab:hover, .e-64d8716d > .holder.bg-1 .tab.active { background: var(--ot-bg-1-hover); }
151
- .e-64d8716d > .holder.bg-1 ~ .menu > .link:hover, .e-64d8716d > .holder.bg-1 ~ .menu > .link.active { background: var(--ot-bg-1-hover); }
781
+ .navbar-user-menu > .user-menu-list
782
+ {
783
+ display: flex;
784
+ flex-direction: column;
785
+ padding: 6px;
786
+ }
152
787
 
153
- .e-64d8716d > .holder.bg-2 { background: var(--ot-bg-2); }
154
- .e-64d8716d > .holder.bg-2 ~ .menu { background: var(--ot-bg-2); }
155
- .e-64d8716d > .holder.bg-2 .tab:hover, .e-64d8716d > .holder.bg-2 .tab.active { background: var(--ot-bg-2-hover); }
156
- .e-64d8716d > .holder.bg-2 ~ .menu > .link:hover, .e-64d8716d > .holder.bg-2 ~ .menu > .link.active { background: var(--ot-bg-2-hover); }
788
+ .navbar-user-menu .user-menu-item
789
+ {
790
+ display: flex;
791
+ align-items: center;
792
+ gap: var(--ot-spacing-s);
793
+ padding: 8px 12px;
794
+ border-radius: var(--ot-radius-s);
795
+ font-family: var(--ot-font-primary);
796
+ font-size: var(--ot-size-s);
797
+ font-weight: 500;
798
+ color: var(--ot-text-1);
799
+ text-decoration: none;
800
+ transition: background 0.15s cubic-bezier(0.22, 1, 0.36, 1);
801
+ }
157
802
 
158
- .e-64d8716d > .holder.bg-3 { background: var(--ot-bg-3); }
159
- .e-64d8716d > .holder.bg-3 ~ .menu { background: var(--ot-bg-3); }
160
- .e-64d8716d > .holder.bg-3 .tab:hover, .e-64d8716d > .holder.bg-3 .tab.active { background: var(--ot-bg-3-hover); }
161
- .e-64d8716d > .holder.bg-3 ~ .menu > .link:hover, .e-64d8716d > .holder.bg-3 ~ .menu > .link.active { background: var(--ot-bg-3-hover); }
803
+ .navbar-user-menu .user-menu-item:hover
804
+ {
805
+ background: var(--ot-bg-2);
806
+ }
162
807
 
163
- .e-64d8716d > .holder.bg-4 { background: var(--ot-bg-4); }
164
- .e-64d8716d > .holder.bg-4 ~ .menu { background: var(--ot-bg-4); }
165
- .e-64d8716d > .holder.bg-4 .tab:hover, .e-64d8716d > .holder.bg-4 .tab.active { background: var(--ot-bg-4-hover); }
166
- .e-64d8716d > .holder.bg-4 ~ .menu > .link:hover, .e-64d8716d > .holder.bg-4 ~ .menu > .link.active { background: var(--ot-bg-4-hover); }
808
+ .navbar-user-menu .user-menu-item > i
809
+ {
810
+ font-size: 18px;
811
+ color: var(--ot-text-3);
812
+ }
167
813
 
168
- /* Mobile */
814
+ .navbar-user-menu .user-menu-separator
815
+ {
816
+ height: 1px;
817
+ background: var(--ot-bg-2-border);
818
+ margin: 4px 0;
819
+ }
169
820
 
170
- @media screen and (max-width: 900px)
821
+ /* ===== RESPONSIVE ===== */
822
+
823
+ @media (max-width: 900px)
171
824
  {
172
- .e-64d8716d > .holder > .tabs,
173
- .e-64d8716d > .holder > .right
825
+ .e-64d8716d > .holder > .bar > .section.center,
826
+ .e-64d8716d > .holder > .bar > .section .nav,
827
+ .e-64d8716d > .holder > .bar > .section .bell,
828
+ .e-64d8716d > .holder > .bar > .section .user-trigger
174
829
  {
175
830
  display: none;
176
831
  }
177
832
 
178
- .e-64d8716d > .holder > .burger
833
+ .e-64d8716d > .holder > .bar > .burger
179
834
  {
180
- display: flex;
835
+ display: inline-flex;
181
836
  }
182
837
 
183
- .e-64d8716d > .menu
838
+ .e-64d8716d > .holder.open > .drawer
184
839
  {
185
840
  display: flex;
186
841
  }
842
+
843
+ .e-64d8716d > .holder > .bar > .section.right
844
+ {
845
+ margin-left: 0;
846
+ }
187
847
  }