adminator-admin-dashboard 2.8.1 → 4.1.5

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 (179) hide show
  1. package/CHANGELOG.md +499 -0
  2. package/CLAUDE.md +126 -154
  3. package/README.md +321 -370
  4. package/dist/2026.js +8751 -0
  5. package/dist/2026.js.map +1 -0
  6. package/dist/404.html +36 -16
  7. package/dist/500.html +36 -16
  8. package/dist/assets/static/images/logo.svg +3 -3
  9. package/dist/basic-table.html +152 -699
  10. package/dist/blank.html +42 -507
  11. package/dist/buttons.html +152 -448
  12. package/dist/calendar.html +246 -658
  13. package/dist/charts.html +124 -658
  14. package/dist/chat.html +209 -706
  15. package/dist/compose.html +141 -618
  16. package/dist/datatable.html +467 -991
  17. package/dist/email.html +430 -943
  18. package/dist/forms.html +208 -733
  19. package/dist/google-maps.html +123 -513
  20. package/dist/index.html +436 -1041
  21. package/dist/runtime.js +1299 -0
  22. package/dist/runtime.js.map +1 -0
  23. package/dist/signin.html +92 -92
  24. package/dist/signup.html +106 -91
  25. package/dist/ui.html +268 -897
  26. package/dist/vector-maps.html +132 -511
  27. package/dist/vendor-chartjs.js +14593 -0
  28. package/dist/vendor-chartjs.js.map +1 -0
  29. package/dist/vendor-fullcalendar.js +14793 -0
  30. package/dist/vendor-fullcalendar.js.map +1 -0
  31. package/dist/vendors.js +3758 -0
  32. package/dist/vendors.js.map +1 -0
  33. package/package.json +50 -52
  34. package/src/404.html +35 -15
  35. package/src/500.html +35 -15
  36. package/src/assets/scripts/2026/Shell.js +312 -0
  37. package/src/assets/scripts/2026/calendar.js +123 -0
  38. package/src/assets/scripts/2026/charts.js +259 -0
  39. package/src/assets/scripts/2026/index.js +35 -0
  40. package/src/assets/scripts/2026/init.js +207 -0
  41. package/src/assets/scripts/2026/maps.js +78 -0
  42. package/src/assets/scripts/2026/palette.js +266 -0
  43. package/src/assets/static/images/logo.svg +3 -3
  44. package/src/assets/styles/2026/_animations.scss +14 -0
  45. package/src/assets/styles/2026/_auth.scss +215 -0
  46. package/src/assets/styles/2026/_base.scss +37 -0
  47. package/src/assets/styles/2026/_calendar.scss +380 -0
  48. package/src/assets/styles/2026/_charts.scss +44 -0
  49. package/src/assets/styles/2026/_chat.scss +350 -0
  50. package/src/assets/styles/2026/_components.scss +140 -0
  51. package/src/assets/styles/2026/_dashboard.scss +520 -0
  52. package/src/assets/styles/2026/_data.scss +130 -0
  53. package/src/assets/styles/2026/_dropdowns.scss +128 -0
  54. package/src/assets/styles/2026/_email.scss +599 -0
  55. package/src/assets/styles/2026/_error.scss +98 -0
  56. package/src/assets/styles/2026/_forms.scss +215 -0
  57. package/src/assets/styles/2026/_fullcalendar.scss +134 -0
  58. package/src/assets/styles/2026/_palette.scss +173 -0
  59. package/src/assets/styles/2026/_responsive.scss +229 -0
  60. package/src/assets/styles/2026/_shell.scss +290 -0
  61. package/src/assets/styles/2026/_tokens.scss +80 -0
  62. package/src/assets/styles/2026/_ui.scss +365 -0
  63. package/src/assets/styles/2026/index.scss +23 -0
  64. package/src/basic-table.html +153 -710
  65. package/src/blank.html +42 -517
  66. package/src/buttons.html +152 -458
  67. package/src/calendar.html +246 -668
  68. package/src/charts.html +124 -668
  69. package/src/chat.html +209 -716
  70. package/src/compose.html +142 -629
  71. package/src/datatable.html +466 -1000
  72. package/src/email.html +429 -952
  73. package/src/forms.html +207 -742
  74. package/src/google-maps.html +128 -523
  75. package/src/index.html +438 -1050
  76. package/src/signin.html +92 -92
  77. package/src/signup.html +106 -91
  78. package/src/ui.html +267 -906
  79. package/src/vector-maps.html +133 -522
  80. package/dist/1e59d2330b4c6deb84b3.ttf +0 -0
  81. package/dist/20fd1704ea223900efa9.woff2 +0 -0
  82. package/dist/29b39089170885ae2967.woff +0 -0
  83. package/dist/8b43027f47b20503057d.eot +0 -0
  84. package/dist/9bad94440d49256265a5.eot +0 -0
  85. package/dist/assets/fontawesome-webfont.svg +0 -2671
  86. package/dist/assets/themify.svg +0 -362
  87. package/dist/eda8b94308c6f538f04a.ttf +0 -0
  88. package/dist/f691f37e57f04c152e23.woff +0 -0
  89. package/dist/main.js +0 -61323
  90. package/dist/main.js.map +0 -1
  91. package/src/assets/scripts/app 2.js +0 -645
  92. package/src/assets/scripts/app.js +0 -645
  93. package/src/assets/scripts/charts/chartJS/index.js +0 -148
  94. package/src/assets/scripts/charts/easyPieChart/index.js +0 -200
  95. package/src/assets/scripts/charts/index.js +0 -3
  96. package/src/assets/scripts/charts/sparkline/index.js +0 -208
  97. package/src/assets/scripts/chat/index.js +0 -11
  98. package/src/assets/scripts/components/Chart.js +0 -1390
  99. package/src/assets/scripts/components/Sidebar.js +0 -241
  100. package/src/assets/scripts/constants/colors.js +0 -274
  101. package/src/assets/scripts/datatable/index.js +0 -379
  102. package/src/assets/scripts/datepicker/index.js +0 -302
  103. package/src/assets/scripts/email/index.js +0 -25
  104. package/src/assets/scripts/fullcalendar/index.js +0 -86
  105. package/src/assets/scripts/googleMaps/index.js +0 -93
  106. package/src/assets/scripts/index.js +0 -18
  107. package/src/assets/scripts/masonry/index.js +0 -14
  108. package/src/assets/scripts/popover/index.js +0 -109
  109. package/src/assets/scripts/scrollbar/index.js +0 -10
  110. package/src/assets/scripts/search/index.js +0 -15
  111. package/src/assets/scripts/sidebar/index.js +0 -140
  112. package/src/assets/scripts/skycons/index.js +0 -52
  113. package/src/assets/scripts/ui/index.js +0 -412
  114. package/src/assets/scripts/utils/date.js +0 -242
  115. package/src/assets/scripts/utils/dom.js +0 -349
  116. package/src/assets/scripts/utils/index.js +0 -45
  117. package/src/assets/scripts/utils/theme.js +0 -107
  118. package/src/assets/scripts/vectorMaps/index.js +0 -277
  119. package/src/assets/styles/index.scss +0 -801
  120. package/src/assets/styles/spec/components/easyPieChart.scss +0 -11
  121. package/src/assets/styles/spec/components/footer.scss +0 -4
  122. package/src/assets/styles/spec/components/forms.scss +0 -288
  123. package/src/assets/styles/spec/components/index.scss +0 -9
  124. package/src/assets/styles/spec/components/loader.scss +0 -46
  125. package/src/assets/styles/spec/components/masonry.scss +0 -1
  126. package/src/assets/styles/spec/components/pageContainer.scss +0 -255
  127. package/src/assets/styles/spec/components/progressBar.scss +0 -6
  128. package/src/assets/styles/spec/components/sidebar.scss +0 -642
  129. package/src/assets/styles/spec/components/topbar.scss +0 -455
  130. package/src/assets/styles/spec/generic/base.scss +0 -102
  131. package/src/assets/styles/spec/generic/index.scss +0 -1
  132. package/src/assets/styles/spec/index.scss +0 -4
  133. package/src/assets/styles/spec/screens/chat.scss +0 -147
  134. package/src/assets/styles/spec/screens/email.scss +0 -108
  135. package/src/assets/styles/spec/screens/index.scss +0 -2
  136. package/src/assets/styles/spec/settings/baseColors.scss +0 -103
  137. package/src/assets/styles/spec/settings/borders.scss +0 -6
  138. package/src/assets/styles/spec/settings/breakpoints.scss +0 -26
  139. package/src/assets/styles/spec/settings/fonts.scss +0 -4
  140. package/src/assets/styles/spec/settings/index.scss +0 -4
  141. package/src/assets/styles/spec/settings/materialColors.scss +0 -550
  142. package/src/assets/styles/spec/tools/index.scss +0 -1
  143. package/src/assets/styles/spec/tools/mixins/clearfix.scss +0 -15
  144. package/src/assets/styles/spec/tools/mixins/index.scss +0 -3
  145. package/src/assets/styles/spec/tools/mixins/mediaQueriesRanges.scss +0 -58
  146. package/src/assets/styles/spec/tools/mixins/placeholder.scss +0 -10
  147. package/src/assets/styles/spec/utils/colors.scss +0 -33
  148. package/src/assets/styles/spec/utils/index.scss +0 -2
  149. package/src/assets/styles/spec/utils/layout/helpers/border.scss +0 -78
  150. package/src/assets/styles/spec/utils/layout/helpers/flex.scss +0 -220
  151. package/src/assets/styles/spec/utils/layout/helpers/index.scss +0 -11
  152. package/src/assets/styles/spec/utils/layout/helpers/layout.scss +0 -137
  153. package/src/assets/styles/spec/utils/layout/helpers/lists.scss +0 -23
  154. package/src/assets/styles/spec/utils/layout/helpers/margin.scss +0 -266
  155. package/src/assets/styles/spec/utils/layout/helpers/objects.scss +0 -91
  156. package/src/assets/styles/spec/utils/layout/helpers/padding.scss +0 -147
  157. package/src/assets/styles/spec/utils/layout/helpers/positions.scss +0 -118
  158. package/src/assets/styles/spec/utils/layout/helpers/pseudo.scss +0 -6
  159. package/src/assets/styles/spec/utils/layout/helpers/sizes.scss +0 -157
  160. package/src/assets/styles/spec/utils/layout/helpers/typography.scss +0 -127
  161. package/src/assets/styles/spec/utils/layout/index.scss +0 -3
  162. package/src/assets/styles/spec/utils/layout/mixins/generateResponsive.scss +0 -25
  163. package/src/assets/styles/spec/utils/layout/mixins/index.scss +0 -2
  164. package/src/assets/styles/spec/utils/layout/mixins/mediaQueryCondition.scss +0 -28
  165. package/src/assets/styles/spec/utils/layout/utils/center.scss +0 -54
  166. package/src/assets/styles/spec/utils/layout/utils/gap.scss +0 -229
  167. package/src/assets/styles/spec/utils/layout/utils/index.scss +0 -5
  168. package/src/assets/styles/spec/utils/layout/utils/layers.scss +0 -5
  169. package/src/assets/styles/spec/utils/layout/utils/peers.scss +0 -35
  170. package/src/assets/styles/utils/mobile.scss +0 -954
  171. package/src/assets/styles/utils/theme.css +0 -97
  172. package/src/assets/styles/vendor/datepicker.scss +0 -183
  173. package/src/assets/styles/vendor/font-awesome.css +0 -2337
  174. package/src/assets/styles/vendor/fullcalendar.scss +0 -217
  175. package/src/assets/styles/vendor/index.scss +0 -8
  176. package/src/assets/styles/vendor/jquery.datatables.scss +0 -162
  177. package/src/assets/styles/vendor/perfectScrollbar.scss +0 -4
  178. package/src/assets/styles/vendor/sparkline.scss +0 -6
  179. package/src/assets/styles/vendor/themify-icons.css +0 -1081
@@ -0,0 +1,350 @@
1
+ /* ============ CHAT PAGE ============ */
2
+
3
+ .chat-shell {
4
+ display: grid;
5
+ grid-template-columns: 280px minmax(0, 1fr);
6
+ gap: 20px;
7
+ background: var(--bg-card);
8
+ border: 1px solid var(--border);
9
+ border-radius: 14px;
10
+ box-shadow: var(--shadow-card);
11
+ overflow: hidden;
12
+ height: calc(100vh - 220px);
13
+ min-height: 560px;
14
+ animation: rise-in 600ms cubic-bezier(.2,.7,.2,1) both;
15
+ }
16
+
17
+ /* Responsive overrides for chat live in _responsive.scss so they win over
18
+ the default rules below (Sass preserves source order, so a @media block
19
+ placed before the default rules would be defeated by the same-specificity
20
+ later rule). */
21
+
22
+ /* ---- Conversations rail ---- */
23
+ .chat-rail {
24
+ display: flex; flex-direction: column;
25
+ border-right: 1px solid var(--border-soft);
26
+ background: var(--bg-card);
27
+ min-width: 0;
28
+ }
29
+ .chat-rail-head {
30
+ padding: 14px 16px;
31
+ border-bottom: 1px solid var(--border-soft);
32
+ display: flex; flex-direction: column; gap: 12px;
33
+ }
34
+ .chat-rail-title-row {
35
+ display: flex; align-items: center; justify-content: space-between;
36
+ }
37
+ .chat-rail-title {
38
+ font-family: 'Inter Tight', sans-serif;
39
+ font-weight: 700;
40
+ font-size: 14.5px;
41
+ color: var(--t-base);
42
+ letter-spacing: -0.012em;
43
+ }
44
+ .chat-rail-title .meta {
45
+ font-family: 'JetBrains Mono', monospace;
46
+ font-size: 10px;
47
+ color: var(--t-light);
48
+ font-weight: 500;
49
+ margin-left: 8px;
50
+ letter-spacing: 0.04em;
51
+ }
52
+
53
+ .chat-search {
54
+ position: relative;
55
+ }
56
+ .chat-search input {
57
+ width: 100%;
58
+ padding: 8px 10px 8px 32px;
59
+ border: 1px solid var(--border);
60
+ border-radius: 8px;
61
+ background: var(--bg-muted);
62
+ font-size: 12.5px;
63
+ color: var(--t-base);
64
+ outline: 0;
65
+ transition: border-color 180ms, box-shadow 180ms, background 180ms;
66
+ }
67
+ .chat-search input::placeholder { color: var(--t-light); }
68
+ .chat-search input:focus {
69
+ border-color: var(--primary);
70
+ background: var(--bg-card);
71
+ box-shadow: 0 0 0 3px var(--primary-soft);
72
+ }
73
+ .chat-search svg {
74
+ position: absolute;
75
+ left: 10px; top: 50%; transform: translateY(-50%);
76
+ width: 13px; height: 13px;
77
+ stroke: var(--t-light); stroke-width: 2; fill: none;
78
+ pointer-events: none;
79
+ }
80
+
81
+ .chat-list-scroll { flex: 1; overflow-y: auto; padding: 4px 0; }
82
+ .chat-list-scroll::-webkit-scrollbar { width: 4px; }
83
+ .chat-list-scroll::-webkit-scrollbar-thumb { background: var(--border); border-radius: 4px; }
84
+
85
+ .chat-conv {
86
+ display: grid;
87
+ grid-template-columns: 38px 1fr;
88
+ gap: 10px;
89
+ padding: 11px 16px;
90
+ border-bottom: 1px solid var(--border-soft);
91
+ cursor: pointer;
92
+ transition: background 160ms ease;
93
+ position: relative;
94
+ }
95
+ .chat-conv:hover { background: var(--bg-hover); }
96
+ .chat-conv.is-active {
97
+ background: var(--primary-soft);
98
+ box-shadow: inset 3px 0 0 var(--primary);
99
+ }
100
+ .chat-conv-avatar {
101
+ width: 38px; height: 38px;
102
+ border-radius: 50%;
103
+ display: grid; place-items: center;
104
+ color: #fff;
105
+ font-weight: 600;
106
+ font-size: 12px;
107
+ flex-shrink: 0;
108
+ position: relative;
109
+ }
110
+ .chat-conv-avatar .presence {
111
+ position: absolute;
112
+ bottom: 0; right: 0;
113
+ width: 10px; height: 10px;
114
+ border-radius: 50%;
115
+ background: var(--success);
116
+ border: 2px solid var(--bg-card);
117
+ }
118
+ .chat-conv-avatar .presence.away { background: var(--warning); }
119
+ .chat-conv-avatar .presence.off { background: var(--t-light); }
120
+
121
+ .chat-conv-body { min-width: 0; display: flex; flex-direction: column; gap: 2px; }
122
+ .chat-conv-top {
123
+ display: flex; align-items: baseline; justify-content: space-between;
124
+ gap: 6px;
125
+ }
126
+ .chat-conv-name {
127
+ font-size: 13px;
128
+ color: var(--t-base);
129
+ font-weight: 600;
130
+ white-space: nowrap;
131
+ overflow: hidden;
132
+ text-overflow: ellipsis;
133
+ }
134
+ .chat-conv-time {
135
+ font-family: 'JetBrains Mono', monospace;
136
+ font-size: 10px;
137
+ color: var(--t-light);
138
+ letter-spacing: 0.04em;
139
+ flex-shrink: 0;
140
+ }
141
+ .chat-conv-preview {
142
+ font-size: 12px;
143
+ color: var(--t-muted);
144
+ white-space: nowrap;
145
+ overflow: hidden;
146
+ text-overflow: ellipsis;
147
+ }
148
+ .chat-conv.is-unread .chat-conv-preview { color: var(--t-base); font-weight: 500; }
149
+ .chat-conv.is-unread .chat-conv-time { color: var(--primary); }
150
+ .chat-conv-badge {
151
+ position: absolute;
152
+ right: 14px; top: 14px;
153
+ min-width: 18px; height: 18px;
154
+ padding: 0 6px;
155
+ border-radius: 999px;
156
+ background: var(--primary);
157
+ color: #fff;
158
+ font-size: 10px;
159
+ font-weight: 700;
160
+ display: grid; place-items: center;
161
+ }
162
+
163
+ /* ---- Conversation pane ---- */
164
+ .chat-pane {
165
+ display: flex; flex-direction: column;
166
+ background: var(--bg-card);
167
+ min-width: 0;
168
+ overflow: hidden;
169
+ }
170
+ .chat-pane-head {
171
+ display: flex; align-items: center; gap: 12px;
172
+ padding: 14px 22px;
173
+ border-bottom: 1px solid var(--border-soft);
174
+ }
175
+ .chat-pane-head .av {
176
+ width: 38px; height: 38px;
177
+ border-radius: 50%;
178
+ display: grid; place-items: center;
179
+ color: #fff;
180
+ font-weight: 600;
181
+ font-size: 12px;
182
+ position: relative;
183
+ }
184
+ .chat-pane-head .av .presence {
185
+ position: absolute;
186
+ bottom: 0; right: 0;
187
+ width: 10px; height: 10px;
188
+ border-radius: 50%;
189
+ background: var(--success);
190
+ border: 2px solid var(--bg-card);
191
+ }
192
+ .chat-pane-head .meta { line-height: 1.3; min-width: 0; flex: 1; }
193
+ .chat-pane-head .name { font-size: 14px; font-weight: 600; color: var(--t-base); }
194
+ .chat-pane-head .status {
195
+ font-size: 11.5px; color: var(--t-muted);
196
+ display: flex; align-items: center; gap: 4px;
197
+ }
198
+ .chat-pane-head .status .dot {
199
+ width: 6px; height: 6px;
200
+ border-radius: 50%;
201
+ background: var(--success);
202
+ }
203
+ .chat-pane-head-tools { display: flex; gap: 2px; }
204
+
205
+ .chat-thread {
206
+ flex: 1;
207
+ overflow-y: auto;
208
+ padding: 22px 28px;
209
+ background: var(--bg-muted);
210
+ display: flex; flex-direction: column; gap: 16px;
211
+ }
212
+ .chat-thread::-webkit-scrollbar { width: 5px; }
213
+ .chat-thread::-webkit-scrollbar-thumb { background: var(--border); border-radius: 4px; }
214
+
215
+ .chat-day-sep {
216
+ display: flex; align-items: center; gap: 10px;
217
+ margin: 6px 0;
218
+ color: var(--t-light);
219
+ font-family: 'JetBrains Mono', monospace;
220
+ font-size: 10px;
221
+ letter-spacing: 0.14em;
222
+ text-transform: uppercase;
223
+ }
224
+ .chat-day-sep::before,
225
+ .chat-day-sep::after {
226
+ content: '';
227
+ flex: 1;
228
+ height: 1px;
229
+ background: var(--border);
230
+ }
231
+
232
+ .chat-msg { display: flex; gap: 10px; max-width: min(75%, 600px); }
233
+ .chat-msg.me { margin-left: auto; flex-direction: row-reverse; }
234
+ .chat-msg-av {
235
+ width: 32px; height: 32px;
236
+ border-radius: 50%;
237
+ display: grid; place-items: center;
238
+ color: #fff;
239
+ font-weight: 600;
240
+ font-size: 11.5px;
241
+ flex-shrink: 0;
242
+ align-self: flex-end;
243
+ }
244
+ .chat-msg-av.me { background: linear-gradient(135deg, var(--primary), var(--purple)); }
245
+ .chat-msg-stack { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
246
+ .chat-msg.me .chat-msg-stack { align-items: flex-end; }
247
+ .chat-bub {
248
+ padding: 10px 14px;
249
+ background: var(--bg-card);
250
+ border: 1px solid var(--border);
251
+ border-radius: 14px;
252
+ border-top-left-radius: 4px;
253
+ font-size: 13.5px;
254
+ color: var(--t-base);
255
+ line-height: 1.5;
256
+ box-shadow: var(--shadow-sm);
257
+ word-wrap: break-word;
258
+ }
259
+ .chat-msg.me .chat-bub {
260
+ background: var(--primary); color: #fff; border-color: var(--primary);
261
+ border-top-left-radius: 14px;
262
+ border-top-right-radius: 4px;
263
+ }
264
+ .chat-msg-meta {
265
+ display: flex; gap: 6px; align-items: center;
266
+ font-family: 'JetBrains Mono', monospace;
267
+ font-size: 9.5px;
268
+ color: var(--t-light);
269
+ letter-spacing: 0.04em;
270
+ padding: 0 4px;
271
+ }
272
+ .chat-msg-meta .read { color: var(--primary); }
273
+
274
+ .chat-typing {
275
+ display: flex; align-items: center; gap: 8px;
276
+ font-size: 11.5px;
277
+ color: var(--t-muted);
278
+ margin-top: 4px;
279
+ }
280
+ .chat-typing-dots {
281
+ display: inline-flex; gap: 3px;
282
+ }
283
+ .chat-typing-dots span {
284
+ width: 4px; height: 4px;
285
+ background: var(--t-light);
286
+ border-radius: 50%;
287
+ animation: typing 1.2s infinite ease-in-out;
288
+ }
289
+ .chat-typing-dots span:nth-child(2) { animation-delay: 0.15s; }
290
+ .chat-typing-dots span:nth-child(3) { animation-delay: 0.3s; }
291
+ @keyframes typing {
292
+ 0%, 60%, 100% { opacity: 0.3; transform: translateY(0); }
293
+ 30% { opacity: 1; transform: translateY(-3px); }
294
+ }
295
+
296
+ .chat-composer {
297
+ padding: 14px 22px 18px;
298
+ border-top: 1px solid var(--border-soft);
299
+ background: var(--bg-card);
300
+ }
301
+ .chat-composer-input {
302
+ display: flex; align-items: end; gap: 8px;
303
+ border: 1px solid var(--border);
304
+ border-radius: 12px;
305
+ background: var(--bg-muted);
306
+ padding: 8px 10px;
307
+ transition: border-color 180ms, box-shadow 180ms;
308
+ }
309
+ .chat-composer-input:focus-within {
310
+ border-color: var(--primary);
311
+ background: var(--bg-card);
312
+ box-shadow: 0 0 0 3px var(--primary-soft);
313
+ }
314
+ .chat-composer-input textarea {
315
+ flex: 1;
316
+ background: transparent;
317
+ border: 0; outline: 0;
318
+ resize: none;
319
+ min-height: 22px;
320
+ max-height: 120px;
321
+ font-size: 13.5px;
322
+ color: var(--t-base);
323
+ padding: 4px 4px;
324
+ font-family: inherit;
325
+ line-height: 1.5;
326
+ }
327
+ .chat-composer-input textarea::placeholder { color: var(--t-light); }
328
+ .chat-composer-tools {
329
+ display: flex; gap: 2px; align-items: center;
330
+ flex-shrink: 0;
331
+ }
332
+ .chat-composer-tools .tool {
333
+ width: 28px; height: 28px;
334
+ display: grid; place-items: center;
335
+ border-radius: 6px;
336
+ color: var(--t-muted);
337
+ transition: background 160ms, color 160ms;
338
+ }
339
+ .chat-composer-tools .tool:hover { background: var(--bg-hover); color: var(--t-base); }
340
+ .chat-composer-tools .tool svg { width: 14px; height: 14px; stroke: currentColor; stroke-width: 1.8; fill: none; }
341
+ .chat-composer-send {
342
+ width: 32px; height: 32px;
343
+ border-radius: 8px;
344
+ background: var(--primary); color: #fff;
345
+ display: grid; place-items: center;
346
+ transition: background 180ms;
347
+ flex-shrink: 0;
348
+ }
349
+ .chat-composer-send:hover { background: var(--primary-dark); }
350
+ .chat-composer-send svg { width: 14px; height: 14px; stroke: currentColor; stroke-width: 2; fill: none; }
@@ -0,0 +1,140 @@
1
+ /* ============ CONTENT + COMMON COMPONENTS ============ */
2
+ .content { padding: 32px 32px 24px; width: 100%; }
3
+
4
+ /* Hero */
5
+ .hero {
6
+ display: flex; justify-content: space-between; align-items: flex-end;
7
+ gap: 32px; margin-bottom: 28px;
8
+ animation: rise-in 600ms cubic-bezier(.2,.7,.2,1) both;
9
+ }
10
+ .hero-text .eyebrow { display: block; margin-bottom: 10px; }
11
+ .hero-title {
12
+ font-family: 'Inter Tight', 'Inter', sans-serif;
13
+ font-weight: 700;
14
+ font-size: clamp(28px, 3.2vw, 36px);
15
+ line-height: 1.15;
16
+ letter-spacing: -0.028em;
17
+ color: var(--t-base);
18
+ margin: 0 0 8px;
19
+ }
20
+ .hero-title .accent { color: var(--primary); }
21
+ .hero-sub { font-size: 14px; color: var(--t-muted); max-width: 60ch; line-height: 1.6; }
22
+ .hero-sub strong { color: var(--success); font-weight: 600; }
23
+ .hero-actions { display: flex; gap: 8px; flex-shrink: 0; }
24
+
25
+ /* Buttons */
26
+ .btn {
27
+ display: inline-flex; align-items: center; gap: 8px;
28
+ padding: 9px 14px;
29
+ border-radius: 8px;
30
+ font-size: 13px;
31
+ font-weight: 600;
32
+ transition: all 180ms ease;
33
+ border: 1px solid transparent;
34
+ white-space: nowrap;
35
+ }
36
+ .btn svg { width: 14px; height: 14px; stroke: currentColor; stroke-width: 2; fill: none; }
37
+ .btn--ghost { color: var(--t-base); border-color: var(--border); background: var(--bg-card); }
38
+ .btn--ghost:hover { border-color: var(--t-light); box-shadow: var(--shadow-sm); }
39
+ .btn--primary { background: var(--primary); color: #fff; box-shadow: 0 1px 2px var(--primary-ring); }
40
+ .btn--primary:hover { background: var(--primary-dark); }
41
+
42
+ /* Card */
43
+ .card {
44
+ background: var(--bg-card);
45
+ border: 1px solid var(--border);
46
+ border-radius: 14px;
47
+ padding: 22px;
48
+ box-shadow: var(--shadow-card);
49
+ display: flex;
50
+ flex-direction: column;
51
+ min-width: 0;
52
+ }
53
+ .card-head {
54
+ display: flex; justify-content: space-between; align-items: flex-end;
55
+ padding: 0 0 16px;
56
+ margin-bottom: 20px;
57
+ border-bottom: 1px solid var(--border-soft);
58
+ gap: 16px;
59
+ }
60
+ .card-head > :last-child { flex-shrink: 0; padding-bottom: 2px; }
61
+ .card-title-wrap { min-width: 0; }
62
+ .card-title-wrap .eyebrow { display: block; margin-bottom: 4px; }
63
+ .card-title {
64
+ font-family: 'Inter Tight', 'Inter', sans-serif;
65
+ font-weight: 700;
66
+ font-size: 16px;
67
+ letter-spacing: -0.02em;
68
+ color: var(--t-base);
69
+ margin: 0;
70
+ }
71
+ .card-action {
72
+ font-size: 12px;
73
+ color: var(--primary);
74
+ font-weight: 600;
75
+ display: inline-flex; align-items: center; gap: 5px;
76
+ transition: color 180ms;
77
+ }
78
+ .card-action:hover { color: var(--primary-dark); }
79
+ .card-action svg { width: 12px; height: 12px; stroke: currentColor; stroke-width: 2.2; fill: none; }
80
+
81
+ /* Generic 12-column grid */
82
+ .grid {
83
+ display: grid;
84
+ grid-template-columns: repeat(12, minmax(0, 1fr));
85
+ gap: 20px;
86
+ animation: rise-in 600ms cubic-bezier(.2,.7,.2,1) both;
87
+ animation-delay: 260ms;
88
+ }
89
+ .grid > * { min-width: 0; }
90
+ .col-6 { grid-column: span 6; }
91
+ .col-12 { grid-column: span 12; }
92
+
93
+ /* Horizontal-scroll wrapper for tables that overflow on narrow viewports */
94
+ .table-scroll { width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
95
+ .table-scroll::-webkit-scrollbar { height: 4px; }
96
+ .table-scroll::-webkit-scrollbar-thumb { background: var(--border); border-radius: 4px; }
97
+
98
+ /* Generic table */
99
+ .table { width: 100%; border-collapse: collapse; }
100
+ .table thead th {
101
+ text-align: left;
102
+ padding: 10px 0 12px;
103
+ font-family: 'JetBrains Mono', monospace;
104
+ font-size: 10px;
105
+ letter-spacing: 0.14em;
106
+ text-transform: uppercase;
107
+ color: var(--t-light);
108
+ font-weight: 500;
109
+ border-bottom: 1px solid var(--border);
110
+ }
111
+ .table tbody td {
112
+ padding: 11px 0;
113
+ font-size: 13px;
114
+ border-bottom: 1px solid var(--border-soft);
115
+ }
116
+ .table tbody tr:last-child td { border-bottom: 0; }
117
+ .table tbody tr { transition: background-color 160ms ease; }
118
+ .table tbody tr:hover td { background: var(--bg-hover); }
119
+ .table .cell-name { color: var(--t-base); font-weight: 600; }
120
+ .table .cell-date { color: var(--t-muted); font-size: 12px; }
121
+ .table .cell-price { font-weight: 600; color: var(--t-base); text-align: right; }
122
+ .table .cell-price.pos { color: var(--success); }
123
+ .table .cell-price.neg { color: var(--danger); }
124
+
125
+ /* Generic tag */
126
+ .tag {
127
+ font-size: 10.5px;
128
+ font-weight: 600;
129
+ padding: 3px 9px;
130
+ border-radius: 999px;
131
+ letter-spacing: 0.02em;
132
+ display: inline-flex; align-items: center;
133
+ line-height: 1;
134
+ }
135
+ .tag.t-new { background: var(--purple-soft); color: var(--purple); }
136
+ .tag.t-used { background: var(--orange-soft); color: var(--orange); }
137
+ .tag.t-old { background: var(--warning-soft); color: var(--warning); }
138
+ .tag.t-unavail { background: var(--danger-soft); color: var(--danger); }
139
+ .tag.t-active { background: var(--success-soft); color: var(--success); }
140
+ .tag.t-info { background: var(--info-soft); color: var(--info); }