web-mojo 2.1.458 → 2.1.527

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 (67) hide show
  1. package/dist/admin.cjs.js +1 -1
  2. package/dist/admin.cjs.js.map +1 -1
  3. package/dist/admin.es.js +30 -188
  4. package/dist/admin.es.js.map +1 -1
  5. package/dist/auth.cjs.js +1 -1
  6. package/dist/auth.cjs.js.map +1 -1
  7. package/dist/auth.es.js +3 -3
  8. package/dist/auth.es.js.map +1 -1
  9. package/dist/charts.cjs.js +1 -1
  10. package/dist/charts.css +264 -0
  11. package/dist/charts.es.js +2 -2
  12. package/dist/chat.css +392 -0
  13. package/dist/chunks/{FilePreviewView-CehLQVJa.js → ChatView-B57YxUKj.js} +642 -84
  14. package/dist/chunks/ChatView-B57YxUKj.js.map +1 -0
  15. package/dist/chunks/ChatView-BrVd1y6Y.js +2 -0
  16. package/dist/chunks/ChatView-BrVd1y6Y.js.map +1 -0
  17. package/dist/chunks/{ContextMenu-C0sdb9u5.js → ContextMenu-Ced9TnyF.js} +2 -2
  18. package/dist/chunks/{ContextMenu-C0sdb9u5.js.map → ContextMenu-Ced9TnyF.js.map} +1 -1
  19. package/dist/chunks/{ContextMenu-BjQymcpo.js → ContextMenu-CjPlCuJl.js} +2 -2
  20. package/dist/chunks/{ContextMenu-BjQymcpo.js.map → ContextMenu-CjPlCuJl.js.map} +1 -1
  21. package/dist/chunks/{DataView-DDe4NgiH.js → DataView-C0sfssWn.js} +2 -2
  22. package/dist/chunks/{DataView-DDe4NgiH.js.map → DataView-C0sfssWn.js.map} +1 -1
  23. package/dist/chunks/{DataView-Cl4kRP-W.js → DataView-CtzsJJ5W.js} +2 -2
  24. package/dist/chunks/{DataView-Cl4kRP-W.js.map → DataView-CtzsJJ5W.js.map} +1 -1
  25. package/dist/chunks/{Dialog-upGYwvdZ.js → Dialog-Bu4kE-6z.js} +5 -5
  26. package/dist/chunks/{Dialog-upGYwvdZ.js.map → Dialog-Bu4kE-6z.js.map} +1 -1
  27. package/dist/chunks/{Dialog-DAQdjRci.js → Dialog-ms9f-96b.js} +2 -2
  28. package/dist/chunks/{Dialog-DAQdjRci.js.map → Dialog-ms9f-96b.js.map} +1 -1
  29. package/dist/chunks/{FormView-C9PgTIH2.js → FormView-D2RN_VDh.js} +99 -10
  30. package/dist/chunks/FormView-D2RN_VDh.js.map +1 -0
  31. package/dist/chunks/{FormView-B7pwdxqX.js → FormView-tRzDzz1X.js} +3 -3
  32. package/dist/chunks/FormView-tRzDzz1X.js.map +1 -0
  33. package/dist/chunks/{MetricsChart-x15UvXRk.js → MetricsChart-CDX8JKp-.js} +3 -3
  34. package/dist/chunks/{MetricsChart-x15UvXRk.js.map → MetricsChart-CDX8JKp-.js.map} +1 -1
  35. package/dist/chunks/{MetricsChart-TwtfTNEA.js → MetricsChart-Cssnc0Gg.js} +2 -2
  36. package/dist/chunks/{MetricsChart-TwtfTNEA.js.map → MetricsChart-Cssnc0Gg.js.map} +1 -1
  37. package/dist/chunks/{PDFViewer---ebUwfT.js → PDFViewer-gbGWhRZD.js} +3 -3
  38. package/dist/chunks/{PDFViewer---ebUwfT.js.map → PDFViewer-gbGWhRZD.js.map} +1 -1
  39. package/dist/chunks/{PDFViewer-tK1fntDR.js → PDFViewer-xyB0U9sL.js} +2 -2
  40. package/dist/chunks/{PDFViewer-tK1fntDR.js.map → PDFViewer-xyB0U9sL.js.map} +1 -1
  41. package/dist/chunks/{Page-q5Gme_r0.js → Page-C7F-OstP.js} +2 -2
  42. package/dist/chunks/{Page-q5Gme_r0.js.map → Page-C7F-OstP.js.map} +1 -1
  43. package/dist/chunks/{Page-BUXs6-fN.js → Page-DJA--Pwm.js} +2 -2
  44. package/dist/chunks/{Page-BUXs6-fN.js.map → Page-DJA--Pwm.js.map} +1 -1
  45. package/dist/chunks/{TopNav-BOMPjms6.js → TopNav-BusOFMOX.js} +2 -2
  46. package/dist/chunks/{TopNav-BOMPjms6.js.map → TopNav-BusOFMOX.js.map} +1 -1
  47. package/dist/chunks/{TopNav-os-U9FQP.js → TopNav-dgXgzEIz.js} +2 -2
  48. package/dist/chunks/{TopNav-os-U9FQP.js.map → TopNav-dgXgzEIz.js.map} +1 -1
  49. package/dist/chunks/{WebApp-BONphh_h.js → WebApp-CDxq9aWO.js} +13 -17
  50. package/dist/chunks/{WebApp-BONphh_h.js.map → WebApp-CDxq9aWO.js.map} +1 -1
  51. package/dist/chunks/{WebApp-DUxotRc-.js → WebApp-DbS9A-y6.js} +2 -2
  52. package/dist/chunks/{WebApp-DUxotRc-.js.map → WebApp-DbS9A-y6.js.map} +1 -1
  53. package/dist/css/web-mojo.css +2 -2
  54. package/dist/docit.cjs.js +1 -1
  55. package/dist/docit.es.js +5 -5
  56. package/dist/index.cjs.js +1 -1
  57. package/dist/index.cjs.js.map +1 -1
  58. package/dist/index.es.js +86 -83
  59. package/dist/index.es.js.map +1 -1
  60. package/dist/lightbox.cjs.js +1 -1
  61. package/dist/lightbox.es.js +4 -4
  62. package/package.json +2 -2
  63. package/dist/chunks/FilePreviewView-7-RBir4g.js +0 -2
  64. package/dist/chunks/FilePreviewView-7-RBir4g.js.map +0 -1
  65. package/dist/chunks/FilePreviewView-CehLQVJa.js.map +0 -1
  66. package/dist/chunks/FormView-B7pwdxqX.js.map +0 -1
  67. package/dist/chunks/FormView-C9PgTIH2.js.map +0 -1
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./chunks/MetricsChart-TwtfTNEA.js"),r=require("./chunks/WebApp-DUxotRc-.js");exports.BaseChart=e.BaseChart,exports.MetricsChart=e.MetricsChart,exports.PieChart=e.PieChart,exports.SeriesChart=e.SeriesChart,exports.BUILD_TIME=r.BUILD_TIME,exports.VERSION=r.VERSION,exports.VERSION_INFO=r.VERSION_INFO,exports.VERSION_MAJOR=r.VERSION_MAJOR,exports.VERSION_MINOR=r.VERSION_MINOR,exports.VERSION_REVISION=r.VERSION_REVISION,exports.WebApp=r.WebApp;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./chunks/MetricsChart-Cssnc0Gg.js"),r=require("./chunks/WebApp-DbS9A-y6.js");exports.BaseChart=e.BaseChart,exports.MetricsChart=e.MetricsChart,exports.PieChart=e.PieChart,exports.SeriesChart=e.SeriesChart,exports.BUILD_TIME=r.BUILD_TIME,exports.VERSION=r.VERSION,exports.VERSION_INFO=r.VERSION_INFO,exports.VERSION_MAJOR=r.VERSION_MAJOR,exports.VERSION_MINOR=r.VERSION_MINOR,exports.VERSION_REVISION=r.VERSION_REVISION,exports.WebApp=r.WebApp;
2
2
  //# sourceMappingURL=charts.cjs.js.map
package/dist/charts.css CHANGED
@@ -1000,3 +1000,267 @@
1000
1000
  min-width: 0;
1001
1001
  }
1002
1002
  }
1003
+
1004
+ /* ==========================================================================
1005
+ Mini Chart Components
1006
+ ========================================================================== */
1007
+
1008
+ /* Mini Chart Base */
1009
+ .mini-chart {
1010
+ display: block;
1011
+ width: 100%;
1012
+ }
1013
+
1014
+ .mini-chart-wrapper {
1015
+ position: relative;
1016
+ display: block;
1017
+ width: 100%;
1018
+ }
1019
+
1020
+ .mini-chart-svg {
1021
+ display: block;
1022
+ width: 100%;
1023
+ height: 100%;
1024
+ }
1025
+
1026
+ /* Animation keyframes for mini charts */
1027
+ @keyframes mini-chart-draw {
1028
+ to {
1029
+ stroke-dashoffset: 0;
1030
+ }
1031
+ }
1032
+
1033
+ @keyframes mini-chart-bar-grow {
1034
+ to {
1035
+ transform: scaleY(1);
1036
+ }
1037
+ }
1038
+
1039
+ /* ==========================================================================
1040
+ Metrics Mini Chart Component
1041
+ ========================================================================== */
1042
+
1043
+ .metrics-mini-chart-container {
1044
+ display: flex;
1045
+ align-items: center;
1046
+ gap: 1rem;
1047
+ padding: 1rem;
1048
+ background: var(--chart-bg);
1049
+ border: 1px solid var(--chart-border);
1050
+ border-radius: 0.5rem;
1051
+ transition: all 0.2s ease;
1052
+ }
1053
+
1054
+ .metrics-mini-chart-container:hover {
1055
+ box-shadow: var(--chart-shadow);
1056
+ border-color: var(--bs-primary);
1057
+ }
1058
+
1059
+ /* Vertical layout */
1060
+ .metrics-mini-chart-vertical {
1061
+ flex-direction: column;
1062
+ align-items: stretch;
1063
+ text-align: center;
1064
+ }
1065
+
1066
+ .metrics-mini-chart-vertical .metrics-chart {
1067
+ margin-top: 0.5rem;
1068
+ }
1069
+
1070
+ /* Horizontal layout (default) */
1071
+ .metrics-mini-chart-horizontal {
1072
+ flex-direction: row;
1073
+ justify-content: space-between;
1074
+ }
1075
+
1076
+ /* Metrics Info Section */
1077
+ .metrics-info {
1078
+ flex: 1;
1079
+ min-width: 0;
1080
+ }
1081
+
1082
+ .metrics-label {
1083
+ font-size: 0.875rem;
1084
+ color: var(--chart-text-muted);
1085
+ font-weight: 500;
1086
+ margin-bottom: 0.25rem;
1087
+ white-space: nowrap;
1088
+ overflow: hidden;
1089
+ text-overflow: ellipsis;
1090
+ }
1091
+
1092
+ .metrics-value-row {
1093
+ display: flex;
1094
+ align-items: baseline;
1095
+ gap: 0.5rem;
1096
+ flex-wrap: wrap;
1097
+ }
1098
+
1099
+ .metrics-value {
1100
+ font-size: 1.5rem;
1101
+ font-weight: 700;
1102
+ color: var(--chart-text);
1103
+ line-height: 1.2;
1104
+ }
1105
+
1106
+ /* Trend Badge */
1107
+ .metrics-trend {
1108
+ display: inline-flex;
1109
+ align-items: center;
1110
+ gap: 0.25rem;
1111
+ padding: 0.125rem 0.5rem;
1112
+ font-size: 0.75rem;
1113
+ font-weight: 600;
1114
+ border-radius: 0.25rem;
1115
+ line-height: 1.5;
1116
+ }
1117
+
1118
+ .metrics-trend.trend-up {
1119
+ color: #198754;
1120
+ background-color: rgba(25, 135, 84, 0.1);
1121
+ }
1122
+
1123
+ .metrics-trend.trend-down {
1124
+ color: #dc3545;
1125
+ background-color: rgba(220, 53, 69, 0.1);
1126
+ }
1127
+
1128
+ .metrics-trend i {
1129
+ font-size: 0.875rem;
1130
+ }
1131
+
1132
+ /* Metrics Chart Section */
1133
+ .metrics-chart {
1134
+ flex-shrink: 0;
1135
+ display: flex;
1136
+ align-items: center;
1137
+ }
1138
+
1139
+ /* Size Variants */
1140
+ .metrics-mini-chart-sm .metrics-value {
1141
+ font-size: 1.25rem;
1142
+ }
1143
+
1144
+ .metrics-mini-chart-sm .metrics-label {
1145
+ font-size: 0.75rem;
1146
+ }
1147
+
1148
+ .metrics-mini-chart-sm .metrics-chart {
1149
+ width: 80px;
1150
+ height: 30px;
1151
+ }
1152
+
1153
+ .metrics-mini-chart-md .metrics-chart {
1154
+ width: 100px;
1155
+ height: 40px;
1156
+ }
1157
+
1158
+ .metrics-mini-chart-lg .metrics-value {
1159
+ font-size: 2rem;
1160
+ }
1161
+
1162
+ .metrics-mini-chart-lg .metrics-label {
1163
+ font-size: 1rem;
1164
+ }
1165
+
1166
+ .metrics-mini-chart-lg .metrics-chart {
1167
+ width: 120px;
1168
+ height: 50px;
1169
+ }
1170
+
1171
+ /* Variant Colors */
1172
+ .metrics-mini-chart-success {
1173
+ border-left: 4px solid #198754;
1174
+ }
1175
+
1176
+ .metrics-mini-chart-success .metrics-value {
1177
+ color: #198754;
1178
+ }
1179
+
1180
+ .metrics-mini-chart-danger {
1181
+ border-left: 4px solid #dc3545;
1182
+ }
1183
+
1184
+ .metrics-mini-chart-danger .metrics-value {
1185
+ color: #dc3545;
1186
+ }
1187
+
1188
+ .metrics-mini-chart-warning {
1189
+ border-left: 4px solid #ffc107;
1190
+ }
1191
+
1192
+ .metrics-mini-chart-warning .metrics-value {
1193
+ color: #ffc107;
1194
+ }
1195
+
1196
+ .metrics-mini-chart-info {
1197
+ border-left: 4px solid #0dcaf0;
1198
+ }
1199
+
1200
+ .metrics-mini-chart-info .metrics-value {
1201
+ color: #0dcaf0;
1202
+ }
1203
+
1204
+ /* Dark Theme Adjustments */
1205
+ [data-theme="dark"] .metrics-trend.trend-up {
1206
+ color: #75b798;
1207
+ background-color: rgba(117, 183, 152, 0.15);
1208
+ }
1209
+
1210
+ [data-theme="dark"] .metrics-trend.trend-down {
1211
+ color: #ea868f;
1212
+ background-color: rgba(234, 134, 143, 0.15);
1213
+ }
1214
+
1215
+ /* Responsive Adjustments */
1216
+ @media (max-width: 575.98px) {
1217
+ .metrics-mini-chart-container {
1218
+ flex-direction: column;
1219
+ align-items: flex-start;
1220
+ }
1221
+
1222
+ .metrics-mini-chart-horizontal .metrics-chart {
1223
+ align-self: stretch;
1224
+ }
1225
+
1226
+ .metrics-mini-chart-horizontal .mini-chart-svg {
1227
+ width: 100%;
1228
+ height: 40px;
1229
+ }
1230
+ }
1231
+
1232
+ /* Reduced Motion */
1233
+ @media (prefers-reduced-motion: reduce) {
1234
+ .mini-chart-svg path,
1235
+ .mini-chart-svg rect {
1236
+ animation: none !important;
1237
+ }
1238
+
1239
+ .metrics-mini-chart-container {
1240
+ transition: none;
1241
+ }
1242
+ }
1243
+
1244
+ /* Mini Chart Tooltip */
1245
+ .mini-chart-tooltip {
1246
+ position: absolute;
1247
+ background: rgba(0, 0, 0, 0.85);
1248
+ color: white;
1249
+ padding: 0.375rem 0.625rem;
1250
+ border-radius: 0.375rem;
1251
+ font-size: 0.75rem;
1252
+ line-height: 1.4;
1253
+ pointer-events: none;
1254
+ white-space: nowrap;
1255
+ z-index: 1000;
1256
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
1257
+ }
1258
+
1259
+ .mini-chart-tooltip strong {
1260
+ font-weight: 600;
1261
+ }
1262
+
1263
+ [data-theme="dark"] .mini-chart-tooltip {
1264
+ background: rgba(255, 255, 255, 0.9);
1265
+ color: #212529;
1266
+ }
package/dist/charts.es.js CHANGED
@@ -1,5 +1,5 @@
1
- import { B, M, P, S } from "./chunks/MetricsChart-x15UvXRk.js";
2
- import { B as B2, b, a, c, e, f, W } from "./chunks/WebApp-BONphh_h.js";
1
+ import { B, M, P, S } from "./chunks/MetricsChart-CDX8JKp-.js";
2
+ import { B as B2, b, a, c, e, f, W } from "./chunks/WebApp-CDxq9aWO.js";
3
3
  export {
4
4
  B2 as BUILD_TIME,
5
5
  B as BaseChart,
package/dist/chat.css ADDED
@@ -0,0 +1,392 @@
1
+ /**
2
+ * MOJO Chat Component Styles
3
+ * Supports two themes: 'compact' (default) and 'bubbles'
4
+ */
5
+
6
+ /* ========================================
7
+ Base Chat Container
8
+ ======================================== */
9
+ .chat-view {
10
+ display: flex;
11
+ flex-direction: column;
12
+ height: 100%;
13
+ }
14
+
15
+ .chat-container {
16
+ display: flex;
17
+ flex-direction: column;
18
+ height: 100%;
19
+ width: 100%;
20
+ border: 1px solid #dee2e6;
21
+ border-radius: 8px;
22
+ overflow: hidden;
23
+ background: #fff;
24
+ }
25
+
26
+ .chat-messages {
27
+ flex: 1;
28
+ overflow-y: auto;
29
+ overflow-x: hidden;
30
+ padding: 20px;
31
+ background: #fff;
32
+ }
33
+
34
+ .chat-input-wrapper {
35
+ flex-shrink: 0;
36
+ }
37
+
38
+ /* ========================================
39
+ Compact Theme (Option 4 - Default)
40
+ Admin/Activity Feed Style
41
+ ======================================== */
42
+ .chat-theme-compact .message-item {
43
+ display: flex;
44
+ padding: 12px;
45
+ border-bottom: 1px solid #f1f3f5;
46
+ transition: background-color 0.15s ease;
47
+ }
48
+
49
+ .chat-theme-compact .message-item:hover {
50
+ background: #f8f9fa;
51
+ }
52
+
53
+ .chat-theme-compact .message-item:last-child {
54
+ border-bottom: none;
55
+ }
56
+
57
+ .chat-theme-compact .message-avatar {
58
+ width: 36px;
59
+ height: 36px;
60
+ border-radius: 50%;
61
+ background: #6c757d;
62
+ color: white;
63
+ display: flex;
64
+ align-items: center;
65
+ justify-content: center;
66
+ font-size: 0.8rem;
67
+ font-weight: 600;
68
+ margin-right: 12px;
69
+ flex-shrink: 0;
70
+ overflow: hidden;
71
+ }
72
+
73
+ .chat-theme-compact .message-content {
74
+ flex: 1;
75
+ min-width: 0;
76
+ }
77
+
78
+ .chat-theme-compact .message-header {
79
+ display: flex;
80
+ justify-content: space-between;
81
+ align-items: center;
82
+ margin-bottom: 4px;
83
+ gap: 8px;
84
+ }
85
+
86
+ .chat-theme-compact .message-author {
87
+ font-weight: 600;
88
+ font-size: 0.9rem;
89
+ color: #212529;
90
+ }
91
+
92
+ .chat-theme-compact .message-time {
93
+ font-size: 0.75rem;
94
+ color: #6c757d;
95
+ white-space: nowrap;
96
+ }
97
+
98
+ .chat-theme-compact .message-text {
99
+ font-size: 0.9rem;
100
+ color: #212529;
101
+ line-height: 1.5;
102
+ word-wrap: break-word;
103
+ }
104
+
105
+ /* System messages in compact theme */
106
+ .chat-theme-compact .chat-message-system {
107
+ background: #f8f9fa;
108
+ border-left: 3px solid #0d6efd;
109
+ margin: 8px 0;
110
+ padding: 8px 12px;
111
+ }
112
+
113
+ /* ========================================
114
+ Bubbles Theme (Option 1)
115
+ Modern Chat Bubbles Style
116
+ ======================================== */
117
+ .chat-theme-bubbles .chat-message {
118
+ margin-bottom: 12px;
119
+ }
120
+
121
+ .chat-theme-bubbles .message-bubble-wrapper {
122
+ display: flex;
123
+ flex-direction: column;
124
+ max-width: 70%;
125
+ }
126
+
127
+ .chat-theme-bubbles .message-left .message-bubble-wrapper {
128
+ align-items: flex-start;
129
+ }
130
+
131
+ .chat-theme-bubbles .message-right .message-bubble-wrapper {
132
+ align-items: flex-end;
133
+ margin-left: auto;
134
+ }
135
+
136
+ .chat-theme-bubbles .message-meta {
137
+ font-size: 0.75rem;
138
+ color: #6c757d;
139
+ margin-bottom: 4px;
140
+ padding: 0 4px;
141
+ }
142
+
143
+ .chat-theme-bubbles .message-right .message-meta {
144
+ text-align: right;
145
+ }
146
+
147
+ .chat-theme-bubbles .message-bubble {
148
+ padding: 10px 14px;
149
+ border-radius: 18px;
150
+ word-wrap: break-word;
151
+ max-width: 100%;
152
+ }
153
+
154
+ .chat-theme-bubbles .message-left .message-bubble {
155
+ background: #e9ecef;
156
+ color: #212529;
157
+ }
158
+
159
+ .chat-theme-bubbles .message-right .message-bubble {
160
+ background: #0d6efd;
161
+ color: white;
162
+ }
163
+
164
+ .chat-theme-bubbles .message-text {
165
+ font-size: 0.9rem;
166
+ line-height: 1.5;
167
+ }
168
+
169
+ /* System messages in bubbles theme */
170
+ .chat-theme-bubbles .chat-message-system {
171
+ max-width: 100%;
172
+ margin: 16px auto;
173
+ }
174
+
175
+ /* ========================================
176
+ Chat Input Area (Both Themes)
177
+ ======================================== */
178
+ .chat-input-view {
179
+ border-top: 1px solid #dee2e6;
180
+ background: #f8f9fa;
181
+ width: 100%;
182
+ }
183
+
184
+ .chat-input-container {
185
+ padding: 15px;
186
+ position: relative;
187
+ width: 100%;
188
+ }
189
+
190
+ .chat-input-container.drag-over {
191
+ background: #e7f3ff;
192
+ border-color: #0d6efd;
193
+ }
194
+
195
+ .chat-input-container.drag-active::before {
196
+ content: "Drop files here";
197
+ position: absolute;
198
+ top: 50%;
199
+ left: 50%;
200
+ transform: translate(-50%, -50%);
201
+ font-size: 1.2rem;
202
+ color: #0d6efd;
203
+ font-weight: 600;
204
+ pointer-events: none;
205
+ z-index: 10;
206
+ }
207
+
208
+ .chat-input-wrapper {
209
+ position: relative;
210
+ display: flex;
211
+ align-items: flex-end;
212
+ gap: 8px;
213
+ }
214
+
215
+ .chat-input {
216
+ flex: 1;
217
+ border: 1px solid #ced4da;
218
+ border-radius: 20px;
219
+ padding: 10px 15px;
220
+ resize: none;
221
+ max-height: 150px;
222
+ font-size: 0.9rem;
223
+ transition: border-color 0.15s ease;
224
+ }
225
+
226
+ .chat-input:focus {
227
+ outline: none;
228
+ border-color: #0d6efd;
229
+ box-shadow: 0 0 0 0.2rem rgba(13, 110, 253, 0.25);
230
+ }
231
+
232
+ .chat-send-btn {
233
+ width: 40px;
234
+ height: 40px;
235
+ border-radius: 50%;
236
+ padding: 0;
237
+ display: flex;
238
+ align-items: center;
239
+ justify-content: center;
240
+ flex-shrink: 0;
241
+ }
242
+
243
+ .chat-send-btn i {
244
+ font-size: 1rem;
245
+ }
246
+
247
+ .chat-input-footer {
248
+ margin-top: 8px;
249
+ font-size: 0.85rem;
250
+ }
251
+
252
+ /* ========================================
253
+ File Attachments
254
+ ======================================== */
255
+ .chat-input-attachments {
256
+ margin-bottom: 10px;
257
+ }
258
+
259
+ .attachment-preview {
260
+ display: inline-flex;
261
+ align-items: center;
262
+ gap: 8px;
263
+ background: #e9ecef;
264
+ padding: 8px 12px;
265
+ border-radius: 8px;
266
+ margin-right: 8px;
267
+ margin-bottom: 8px;
268
+ font-size: 0.85rem;
269
+ }
270
+
271
+ .attachment-preview.upload-complete {
272
+ background: #d1e7dd;
273
+ }
274
+
275
+ .attachment-preview.upload-error {
276
+ background: #f8d7da;
277
+ }
278
+
279
+ .attachment-info {
280
+ display: flex;
281
+ align-items: center;
282
+ gap: 6px;
283
+ }
284
+
285
+ .attachment-name {
286
+ font-weight: 500;
287
+ max-width: 200px;
288
+ overflow: hidden;
289
+ text-overflow: ellipsis;
290
+ white-space: nowrap;
291
+ }
292
+
293
+ .attachment-size {
294
+ color: #6c757d;
295
+ font-size: 0.75rem;
296
+ }
297
+
298
+ .attachment-progress {
299
+ min-width: 100px;
300
+ }
301
+
302
+ .attachment-remove {
303
+ padding: 0;
304
+ margin: 0;
305
+ line-height: 1;
306
+ }
307
+
308
+ /* File attachments in messages */
309
+ .message-text .file-attachment,
310
+ [data-container="attachments"] .file-attachment {
311
+ display: inline-block;
312
+ margin-top: 8px;
313
+ padding: 8px 12px;
314
+ background: rgba(0, 0, 0, 0.05);
315
+ border: 1px solid rgba(0, 0, 0, 0.1);
316
+ border-radius: 8px;
317
+ font-size: 0.85rem;
318
+ transition: background-color 0.15s ease;
319
+ }
320
+
321
+ .message-text .file-attachment:hover,
322
+ [data-container="attachments"] .file-attachment:hover {
323
+ background: rgba(0, 0, 0, 0.1);
324
+ }
325
+
326
+ .message-text .file-attachment i,
327
+ [data-container="attachments"] .file-attachment i {
328
+ margin-right: 6px;
329
+ }
330
+
331
+ /* For bubbles theme, adjust file attachment styling */
332
+ .chat-theme-bubbles .message-right .file-attachment {
333
+ background: rgba(255, 255, 255, 0.2);
334
+ border-color: rgba(255, 255, 255, 0.3);
335
+ color: white;
336
+ }
337
+
338
+ /* ========================================
339
+ System Messages
340
+ ======================================== */
341
+ .chat-message-system {
342
+ text-align: center;
343
+ padding: 8px 12px;
344
+ margin: 12px 0;
345
+ }
346
+
347
+ /* ========================================
348
+ Scrollbar Styling
349
+ ======================================== */
350
+ .chat-messages::-webkit-scrollbar {
351
+ width: 8px;
352
+ }
353
+
354
+ .chat-messages::-webkit-scrollbar-track {
355
+ background: #f1f3f5;
356
+ }
357
+
358
+ .chat-messages::-webkit-scrollbar-thumb {
359
+ background: #adb5bd;
360
+ border-radius: 4px;
361
+ }
362
+
363
+ .chat-messages::-webkit-scrollbar-thumb:hover {
364
+ background: #6c757d;
365
+ }
366
+
367
+ /* ========================================
368
+ Responsive Adjustments
369
+ ======================================== */
370
+ @media (max-width: 768px) {
371
+ .chat-theme-bubbles .message-bubble-wrapper {
372
+ max-width: 85%;
373
+ }
374
+
375
+ .chat-theme-compact .message-avatar {
376
+ width: 32px;
377
+ height: 32px;
378
+ font-size: 0.75rem;
379
+ }
380
+
381
+ .attachment-name {
382
+ max-width: 150px;
383
+ }
384
+ }
385
+
386
+ /* ========================================
387
+ Utility Classes
388
+ ======================================== */
389
+ .badge-sm {
390
+ font-size: 0.7rem;
391
+ padding: 2px 6px;
392
+ }