anteriority-ui 1.16.0 → 1.18.0

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 (94) hide show
  1. package/.verify-bundle.css +2405 -1396
  2. package/.verify-bundle.js +2 -2
  3. package/AnteriorityUI.md +556 -7
  4. package/README.md +30 -5
  5. package/common/hooks/useCopyToClipboard.js +27 -0
  6. package/common/utils/copyToClipboard.js +25 -0
  7. package/common/utils/downloadBlob.js +15 -0
  8. package/index.js +110 -98
  9. package/package.json +5 -2
  10. package/screens/components/CalendarPicker/components/AnchoredCalendar/index.js +64 -0
  11. package/screens/components/CalendarPicker/index.js +8 -1
  12. package/screens/components/Carousel/components/CarouselArrow/index.js +55 -0
  13. package/screens/components/Carousel/components/CarouselDots/index.js +20 -0
  14. package/screens/components/Carousel/components/CarouselDots/index.module.css +30 -0
  15. package/screens/components/Carousel/components/CarouselSlide/index.js +61 -0
  16. package/screens/components/Carousel/components/CarouselSlide/index.module.css +52 -0
  17. package/screens/components/Carousel/components/index.js +8 -0
  18. package/screens/components/Carousel/constants.js +28 -0
  19. package/screens/components/Carousel/index.js +180 -0
  20. package/screens/components/Carousel/index.module.css +46 -0
  21. package/screens/components/Carousel/utils.js +42 -0
  22. package/screens/components/Chart/components/NivoCalendarChart/index.js +25 -2
  23. package/screens/components/ConfirmPopover/index.js +110 -0
  24. package/screens/components/ConfirmPopover/index.module.css +53 -0
  25. package/screens/components/Container/index.js +9 -0
  26. package/screens/components/Container/index.module.css +21 -2
  27. package/screens/components/CopyText/index.js +8 -10
  28. package/screens/components/DrawPanel/index.js +1 -0
  29. package/screens/components/DrawPanel/index.module.css +11 -0
  30. package/screens/components/FileDropZone/constants.js +6 -0
  31. package/screens/components/FileDropZone/index.js +149 -0
  32. package/screens/components/FileDropZone/index.module.css +67 -0
  33. package/screens/components/FileDropZone/utils.js +21 -0
  34. package/screens/components/FloatingPanel/constants.js +18 -0
  35. package/screens/components/FloatingPanel/index.js +208 -0
  36. package/screens/components/FloatingPanel/index.module.css +71 -0
  37. package/screens/components/Footer/constants.js +12 -0
  38. package/screens/components/Footer/index.js +78 -0
  39. package/screens/components/Footer/index.module.css +51 -0
  40. package/screens/components/MarkdownContent/CopyButton.js +4 -12
  41. package/screens/components/MarkdownContent/index.js +7 -4
  42. package/screens/components/Material-UI/Components/Selector/components/SelectorInput/index.js +42 -0
  43. package/screens/components/Material-UI/Components/Selector/components/SelectorOption/index.js +49 -0
  44. package/screens/components/Material-UI/Components/Selector/components/SelectorOption/index.module.css +5 -0
  45. package/screens/components/Material-UI/Components/Selector/components/index.js +6 -0
  46. package/screens/components/Material-UI/Components/Selector/constants.js +3 -1
  47. package/screens/components/Material-UI/Components/Selector/index.js +101 -57
  48. package/screens/components/Material-UI/Components/Selector/utils.js +22 -0
  49. package/screens/components/MediaViewer/components/XlsxViewer/components/ScrollArrow/index.js +50 -0
  50. package/screens/components/MediaViewer/components/XlsxViewer/components/ScrollArrow/index.module.css +48 -0
  51. package/screens/components/MediaViewer/components/XlsxViewer/components/XlsxContextMenu/index.js +197 -0
  52. package/screens/components/MediaViewer/components/XlsxViewer/components/XlsxControlsBar/index.js +206 -0
  53. package/screens/components/MediaViewer/components/XlsxViewer/components/XlsxControlsBar/index.module.css +96 -0
  54. package/screens/components/MediaViewer/components/XlsxViewer/components/XlsxGrid/index.js +573 -0
  55. package/screens/components/MediaViewer/components/XlsxViewer/components/XlsxGrid/index.module.css +148 -0
  56. package/screens/components/MediaViewer/components/XlsxViewer/components/XlsxStatsPanel/index.js +114 -0
  57. package/screens/components/MediaViewer/components/XlsxViewer/components/XlsxStatsPanel/index.module.css +65 -0
  58. package/screens/components/MediaViewer/components/XlsxViewer/components/XlsxValidationPanel/index.js +103 -0
  59. package/screens/components/MediaViewer/components/XlsxViewer/components/XlsxValidationPanel/index.module.css +39 -0
  60. package/screens/components/MediaViewer/components/XlsxViewer/components/index.js +14 -0
  61. package/screens/components/MediaViewer/components/XlsxViewer/index.js +630 -0
  62. package/screens/components/MediaViewer/components/XlsxViewer/index.module.css +39 -0
  63. package/screens/components/MediaViewer/components/XlsxViewer/javascript/engine.js +105 -0
  64. package/screens/components/MediaViewer/components/XlsxViewer/javascript/json.js +127 -0
  65. package/screens/components/MediaViewer/components/XlsxViewer/javascript/model.js +259 -0
  66. package/screens/components/MediaViewer/components/XlsxViewer/javascript/useScrollEdges.js +32 -0
  67. package/screens/components/MediaViewer/components/XlsxViewer/javascript/validation.js +107 -0
  68. package/screens/components/MediaViewer/components/XlsxViewer/utils.js +159 -0
  69. package/screens/components/MediaViewer/components/index.js +3 -1
  70. package/screens/components/MediaViewer/constants.js +199 -1
  71. package/screens/components/MediaViewer/index.js +162 -7
  72. package/screens/components/MediaViewer/index.module.css +18 -0
  73. package/screens/components/MediaViewer/stories/jsonPresets.js +70 -0
  74. package/screens/components/MediaViewer/stories/jsonSample.js +40 -0
  75. package/screens/components/MediaViewer/utils.js +1 -0
  76. package/screens/components/QRCode/constants.js +36 -0
  77. package/screens/components/QRCode/index.js +222 -0
  78. package/screens/components/QRCode/index.module.css +99 -0
  79. package/screens/components/QRCode/utils.js +45 -0
  80. package/screens/components/Radio/constants.js +10 -1
  81. package/screens/components/Radio/index.js +29 -4
  82. package/screens/components/Radio/index.module.css +30 -1
  83. package/screens/components/ScrollBar/utils.js +8 -5
  84. package/screens/components/Sidebar/components/ItemContextMenu/index.js +124 -73
  85. package/screens/components/Sidebar/components/ItemContextMenu/index.module.css +26 -0
  86. package/screens/components/Sidebar/components/UserFooter/index.js +37 -11
  87. package/screens/components/Sidebar/components/UserFooter/index.module.css +38 -0
  88. package/screens/components/Sidebar/constants.js +7 -0
  89. package/screens/components/SummaryCard/index.js +8 -11
  90. package/screens/components/Table/cells.js +50 -1
  91. package/screens/components/Table/index.js +4 -2
  92. package/screens/components/Table/tableA.module.css +1 -1
  93. package/screens/components/Table/tableB.module.css +1 -1
  94. package/skill/anteriority-ui/SKILL.md +9 -1
@@ -441,6 +441,26 @@
441
441
  }
442
442
  }
443
443
 
444
+ /* dist/screens/components/Material-UI/Components/Selector/index.module.css */
445
+ .Selector_listbox {
446
+ scrollbar-width: thin;
447
+ scrollbar-color: var(--selector-scrollbar-thumb, rgba(100, 116, 139, 0.45)) transparent;
448
+ }
449
+ .Selector_listbox::-webkit-scrollbar {
450
+ width: 6px;
451
+ }
452
+ .Selector_listbox::-webkit-scrollbar-track {
453
+ background-color: transparent;
454
+ }
455
+ .Selector_listbox::-webkit-scrollbar-thumb {
456
+ background-color: var(--selector-scrollbar-thumb, rgba(100, 116, 139, 0.45));
457
+ border-radius: 999px;
458
+ }
459
+ .Selector_listbox::-webkit-scrollbar-thumb:hover,
460
+ .Selector_listbox::-webkit-scrollbar-thumb:active {
461
+ background-color: var(--selector-scrollbar-thumb-hover, rgba(71, 85, 105, 0.75));
462
+ }
463
+
444
464
  /* dist/screens/components/Checks/index.module.css */
445
465
  .Checks_itemContainer {
446
466
  display: flex !important;
@@ -515,24 +535,11 @@
515
535
  }
516
536
  }
517
537
 
518
- /* dist/screens/components/Material-UI/Components/Selector/index.module.css */
519
- .Selector_listbox {
520
- scrollbar-width: thin;
521
- scrollbar-color: var(--selector-scrollbar-thumb, rgba(100, 116, 139, 0.45)) transparent;
522
- }
523
- .Selector_listbox::-webkit-scrollbar {
524
- width: 6px;
525
- }
526
- .Selector_listbox::-webkit-scrollbar-track {
527
- background-color: transparent;
528
- }
529
- .Selector_listbox::-webkit-scrollbar-thumb {
530
- background-color: var(--selector-scrollbar-thumb, rgba(100, 116, 139, 0.45));
531
- border-radius: 999px;
532
- }
533
- .Selector_listbox::-webkit-scrollbar-thumb:hover,
534
- .Selector_listbox::-webkit-scrollbar-thumb:active {
535
- background-color: var(--selector-scrollbar-thumb-hover, rgba(71, 85, 105, 0.75));
538
+ /* dist/screens/components/Material-UI/Components/Selector/components/SelectorOption/index.module.css */
539
+ .SelectorOption_option {
540
+ display: flex;
541
+ align-items: center;
542
+ gap: 8px;
536
543
  }
537
544
 
538
545
  /* dist/screens/components/Sidebar/components/SidebarItem/index.module.css */
@@ -1032,6 +1039,38 @@
1032
1039
  gap: 4px;
1033
1040
  z-index: 2000;
1034
1041
  min-width: 210px;
1042
+ transform-origin: left bottom;
1043
+ animation: UserFooter_userMenuIn 0.22s cubic-bezier(0.16, 1, 0.3, 1) both;
1044
+ }
1045
+ .UserFooter_userMenuClosing {
1046
+ animation: UserFooter_userMenuOut 0.16s cubic-bezier(0.4, 0, 1, 1) both;
1047
+ pointer-events: none;
1048
+ }
1049
+ @keyframes UserFooter_userMenuIn {
1050
+ from {
1051
+ opacity: 0;
1052
+ transform: translateX(-10px) scale(0.97);
1053
+ }
1054
+ to {
1055
+ opacity: 1;
1056
+ transform: translateX(0) scale(1);
1057
+ }
1058
+ }
1059
+ @keyframes UserFooter_userMenuOut {
1060
+ from {
1061
+ opacity: 1;
1062
+ transform: translateX(0) scale(1);
1063
+ }
1064
+ to {
1065
+ opacity: 0;
1066
+ transform: translateX(-8px) scale(0.97);
1067
+ }
1068
+ }
1069
+ @media (prefers-reduced-motion: reduce) {
1070
+ .UserFooter_userMenu,
1071
+ .UserFooter_userMenuClosing {
1072
+ animation-duration: 0.01ms;
1073
+ }
1035
1074
  }
1036
1075
  .UserFooter_userMenuEmail {
1037
1076
  padding: 8px 10px;
@@ -1123,163 +1162,480 @@
1123
1162
  .ItemContextMenu_contextMenuItemDanger:hover {
1124
1163
  background-color: #fef2f2;
1125
1164
  }
1126
-
1127
- /* dist/screens/components/Breadcrumbs/index.module.css */
1128
- .Breadcrumbs_breadcrumbs {
1129
- display: flex;
1130
- align-items: center;
1131
- min-width: 0;
1132
- }
1133
- .Breadcrumbs_list {
1134
- display: flex;
1135
- align-items: center;
1136
- list-style: none;
1137
- margin: 0;
1138
- padding: 0;
1139
- gap: 4px;
1140
- flex-wrap: nowrap;
1141
- min-width: 0;
1142
- overflow: hidden;
1165
+ .ItemContextMenu_contextMenuItem:disabled {
1166
+ cursor: default;
1167
+ opacity: 0.55;
1143
1168
  }
1144
- .Breadcrumbs_item {
1145
- display: flex;
1146
- align-items: center;
1147
- gap: 4px;
1148
- min-width: 0;
1149
- flex-shrink: 1;
1150
- animation: Breadcrumbs_crumbEnter 0.32s cubic-bezier(0.16, 1, 0.3, 1) both;
1151
- animation-delay: calc(var(--crumb-index, 0) * 45ms);
1169
+ .ItemContextMenu_contextMenuItemActive {
1170
+ background-color: #fef2f2;
1152
1171
  }
1153
- .Breadcrumbs_item:last-child {
1154
- flex-shrink: 999;
1155
- min-width: 24px;
1172
+ .ItemContextMenu_spin {
1173
+ animation: ItemContextMenu_spinIcon 0.8s linear infinite;
1156
1174
  }
1157
- @keyframes Breadcrumbs_crumbEnter {
1158
- from {
1159
- opacity: 0;
1160
- transform: translateY(3px);
1161
- }
1175
+ @keyframes ItemContextMenu_spinIcon {
1162
1176
  to {
1163
- opacity: 1;
1164
- transform: translateY(0);
1177
+ transform: rotate(360deg);
1165
1178
  }
1166
1179
  }
1167
- .Breadcrumbs_crumbIcon {
1168
- color: var(--crumb-icon-color, #7c9cff);
1169
- flex-shrink: 0;
1170
- transition: transform 0.2s ease;
1180
+ @media (prefers-reduced-motion: reduce) {
1181
+ .ItemContextMenu_spin {
1182
+ animation-duration: 0.01ms;
1183
+ animation-iteration-count: 1;
1184
+ }
1171
1185
  }
1172
- .Breadcrumbs_breadcrumbs:hover .Breadcrumbs_crumbIcon {
1173
- transform: scale(1.08) rotate(-4deg);
1186
+
1187
+ /* dist/screens/components/MarkdownContent/index.module.css */
1188
+ .MarkdownContent_markdown {
1189
+ font-size: 0.88rem;
1190
+ line-height: 1.6;
1191
+ color: inherit;
1192
+ word-break: break-word;
1174
1193
  }
1175
- .Breadcrumbs_link {
1176
- position: relative;
1177
- display: inline-flex;
1194
+ .MarkdownContent_markdown > *:first-child {
1195
+ margin-top: 0;
1196
+ }
1197
+ .MarkdownContent_markdown > *:last-child {
1198
+ margin-bottom: 0;
1199
+ }
1200
+ .MarkdownContent_markdown h1,
1201
+ .MarkdownContent_markdown h2,
1202
+ .MarkdownContent_markdown h3,
1203
+ .MarkdownContent_markdown h4,
1204
+ .MarkdownContent_markdown h5,
1205
+ .MarkdownContent_markdown h6 {
1206
+ color: inherit;
1207
+ font-weight: 700;
1208
+ line-height: 1.35;
1209
+ margin: 1.1em 0 0.5em 0;
1210
+ }
1211
+ .MarkdownContent_headingWithCopy {
1212
+ display: flex;
1178
1213
  align-items: center;
1179
- min-width: 0;
1180
- border: none;
1181
- background: transparent;
1182
- padding: 3px 2px;
1183
- margin: 0;
1184
- font: inherit;
1185
- font-size: 0.95rem;
1186
- font-weight: 600;
1187
- line-height: 1.2;
1188
- color: var(--crumb-link-color, #9ba1ae);
1189
- cursor: pointer;
1190
- border-radius: 4px;
1191
- transition: color 0.18s ease;
1214
+ gap: 0.4rem;
1192
1215
  }
1193
- .Breadcrumbs_linkLabel {
1194
- position: relative;
1195
- display: block;
1196
- max-width: 200px;
1197
- overflow: hidden;
1198
- text-overflow: ellipsis;
1199
- white-space: nowrap;
1200
- vertical-align: bottom;
1216
+ .MarkdownContent_headingText {
1201
1217
  min-width: 0;
1202
- flex-shrink: 1;
1203
1218
  }
1204
- .Breadcrumbs_linkLabel::after {
1205
- content: "";
1206
- position: absolute;
1207
- left: 0;
1208
- right: 0;
1209
- bottom: -3px;
1210
- height: 1.5px;
1211
- background: currentColor;
1212
- border-radius: 1px;
1213
- transform: scaleX(0);
1214
- transform-origin: left;
1215
- transition: transform 0.22s cubic-bezier(0.16, 1, 0.3, 1);
1219
+ .MarkdownContent_headingCopyButton {
1220
+ flex-shrink: 0;
1221
+ opacity: 0;
1222
+ transition: opacity 0.15s ease;
1216
1223
  }
1217
- .Breadcrumbs_link:hover,
1218
- .Breadcrumbs_link:focus-visible {
1219
- color: #e6e8ec;
1224
+ .MarkdownContent_headingWithCopy:hover .MarkdownContent_headingCopyButton,
1225
+ .MarkdownContent_headingWithCopy:focus-within .MarkdownContent_headingCopyButton,
1226
+ .MarkdownContent_headingCopyButton:focus-visible {
1227
+ opacity: 1;
1220
1228
  }
1221
- .Breadcrumbs_link:hover .Breadcrumbs_linkLabel::after,
1222
- .Breadcrumbs_link:focus-visible .Breadcrumbs_linkLabel::after {
1223
- transform: scaleX(1);
1229
+ .MarkdownContent_markdown h1 {
1230
+ font-size: 1.35rem;
1224
1231
  }
1225
- .Breadcrumbs_link:active {
1226
- color: var(--crumb-icon-color, #7c9cff);
1227
- transition: color 0.05s ease;
1232
+ .MarkdownContent_markdown h2 {
1233
+ font-size: 1.2rem;
1228
1234
  }
1229
- .Breadcrumbs_link:focus-visible {
1230
- outline: 2px solid var(--crumb-icon-color, #7c9cff);
1231
- outline-offset: 2px;
1235
+ .MarkdownContent_markdown h3 {
1236
+ font-size: 1.05rem;
1232
1237
  }
1233
- .Breadcrumbs_crumbText {
1234
- display: inline-block;
1238
+ .MarkdownContent_markdown h4,
1239
+ .MarkdownContent_markdown h5,
1240
+ .MarkdownContent_markdown h6 {
1235
1241
  font-size: 0.95rem;
1236
- font-weight: 600;
1237
- color: var(--crumb-link-color, #9ba1ae);
1238
- white-space: nowrap;
1239
- overflow: hidden;
1240
- text-overflow: ellipsis;
1241
- max-width: 360px;
1242
- min-width: 0;
1243
1242
  }
1244
- .Breadcrumbs_current {
1245
- font-weight: 700;
1246
- color: var(--crumb-current-color, #e6e8ec);
1247
- animation: Breadcrumbs_currentPulse 0.5s ease;
1243
+ .MarkdownContent_markdown p {
1244
+ margin: 0 0 0.75em 0;
1248
1245
  }
1249
- @keyframes Breadcrumbs_currentPulse {
1250
- from {
1251
- transform: scale(1.05);
1252
- }
1253
- to {
1254
- transform: scale(1);
1255
- }
1246
+ .MarkdownContent_markdown a {
1247
+ color: var(--markdown-link, #7c9cff);
1248
+ text-decoration: underline;
1256
1249
  }
1257
- .Breadcrumbs_separator {
1258
- color: var(--crumb-separator-color, #4b5563);
1259
- flex-shrink: 0;
1260
- font-size: 0.85rem;
1261
- line-height: 1;
1262
- user-select: none;
1250
+ .MarkdownContent_markdown a:hover {
1251
+ color: #a9bfff;
1263
1252
  }
1264
- .Breadcrumbs_overflowTrigger {
1265
- display: inline-flex;
1266
- width: max-content;
1267
- flex-shrink: 0;
1253
+ .MarkdownContent_markdown strong {
1254
+ color: inherit;
1255
+ font-weight: 700;
1268
1256
  }
1269
- @media (prefers-reduced-motion: reduce) {
1270
- .Breadcrumbs_item {
1271
- animation: none;
1272
- }
1273
- .Breadcrumbs_current {
1274
- animation: none;
1275
- }
1276
- .Breadcrumbs_crumbIcon,
1277
- .Breadcrumbs_link,
1278
- .Breadcrumbs_linkLabel::after {
1279
- transition: none;
1280
- }
1257
+ .MarkdownContent_markdown em {
1258
+ font-style: italic;
1281
1259
  }
1282
-
1260
+ .MarkdownContent_markdown del {
1261
+ color: inherit;
1262
+ opacity: 0.7;
1263
+ }
1264
+ .MarkdownContent_markdown ul,
1265
+ .MarkdownContent_markdown ol {
1266
+ margin: 0 0 0.75em 0;
1267
+ padding-left: 1.4rem;
1268
+ display: flex;
1269
+ flex-direction: column;
1270
+ gap: 0.25rem;
1271
+ }
1272
+ .MarkdownContent_markdown li > ul,
1273
+ .MarkdownContent_markdown li > ol {
1274
+ margin-top: 0.25rem;
1275
+ margin-bottom: 0;
1276
+ }
1277
+ .MarkdownContent_markdown li input[type=checkbox] {
1278
+ margin-right: 0.4rem;
1279
+ }
1280
+ .MarkdownContent_markdown blockquote {
1281
+ margin: 0 0 0.75em 0;
1282
+ padding: 0.25rem 1rem;
1283
+ border-left: 3px solid rgba(124, 156, 255, 0.5);
1284
+ color: inherit;
1285
+ opacity: 0.85;
1286
+ }
1287
+ .MarkdownContent_markdown blockquote p:last-child {
1288
+ margin-bottom: 0;
1289
+ }
1290
+ .MarkdownContent_markdown code {
1291
+ font-family:
1292
+ "SFMono-Regular",
1293
+ Consolas,
1294
+ "Liberation Mono",
1295
+ Menlo,
1296
+ monospace;
1297
+ font-size: 0.85em;
1298
+ background: rgba(128, 128, 128, 0.18);
1299
+ color: inherit;
1300
+ padding: 0.1em 0.35em;
1301
+ border-radius: 4px;
1302
+ }
1303
+ .MarkdownContent_markdown pre {
1304
+ margin: 0 0 0.75em 0;
1305
+ padding: 0.85rem 1rem;
1306
+ background: rgba(128, 128, 128, 0.12);
1307
+ border: 1px solid rgba(128, 128, 128, 0.2);
1308
+ border-radius: 8px;
1309
+ overflow-x: auto;
1310
+ }
1311
+ .MarkdownContent_markdown pre code {
1312
+ background: none;
1313
+ padding: 0;
1314
+ border-radius: 0;
1315
+ color: inherit;
1316
+ }
1317
+ .MarkdownContent_copyableText {
1318
+ display: inline-flex;
1319
+ align-items: center;
1320
+ gap: 0.3rem;
1321
+ }
1322
+ .MarkdownContent_copyableTextButton {
1323
+ flex-shrink: 0;
1324
+ opacity: 0;
1325
+ transition: opacity 0.15s ease;
1326
+ }
1327
+ .MarkdownContent_copyableText:hover .MarkdownContent_copyableTextButton,
1328
+ .MarkdownContent_copyableText:focus-within .MarkdownContent_copyableTextButton,
1329
+ .MarkdownContent_copyableTextButton:focus-visible {
1330
+ opacity: 1;
1331
+ }
1332
+ .MarkdownContent_copyBlockWrapper {
1333
+ position: relative;
1334
+ padding: 0.75rem 1rem;
1335
+ border: 1px solid rgba(128, 128, 128, 0.2);
1336
+ border-radius: 8px;
1337
+ margin: 0 0 0.75em 0;
1338
+ }
1339
+ .MarkdownContent_copyBlockWrapper > *:first-child {
1340
+ margin-top: 0;
1341
+ }
1342
+ .MarkdownContent_copyBlockWrapper > *:last-child {
1343
+ margin-bottom: 0;
1344
+ }
1345
+ .MarkdownContent_copyBlockButton {
1346
+ position: absolute;
1347
+ top: 0.6rem;
1348
+ right: 0.6rem;
1349
+ opacity: 0;
1350
+ transition: opacity 0.15s ease;
1351
+ }
1352
+ .MarkdownContent_copyBlockWrapper:hover .MarkdownContent_copyBlockButton,
1353
+ .MarkdownContent_copyBlockWrapper:focus-within .MarkdownContent_copyBlockButton,
1354
+ .MarkdownContent_copyBlockButton:focus-visible {
1355
+ opacity: 1;
1356
+ }
1357
+ .MarkdownContent_codeBlockWrapper {
1358
+ position: relative;
1359
+ }
1360
+ .MarkdownContent_codeCopyButton {
1361
+ position: absolute;
1362
+ top: 0.6rem;
1363
+ right: 0.6rem;
1364
+ opacity: 0;
1365
+ transition: opacity 0.15s ease;
1366
+ }
1367
+ .MarkdownContent_codeBlockWrapper:hover .MarkdownContent_codeCopyButton,
1368
+ .MarkdownContent_codeBlockWrapper:focus-within .MarkdownContent_codeCopyButton,
1369
+ .MarkdownContent_codeCopyButton:focus-visible {
1370
+ opacity: 1;
1371
+ }
1372
+ .MarkdownContent_markdown hr {
1373
+ border: none;
1374
+ border-top: 1px solid rgba(128, 128, 128, 0.25);
1375
+ margin: 1em 0;
1376
+ }
1377
+ .MarkdownContent_markdown img {
1378
+ max-width: 100%;
1379
+ border-radius: 6px;
1380
+ }
1381
+ .MarkdownContent_markdown table {
1382
+ width: 100%;
1383
+ border-collapse: collapse;
1384
+ margin: 0 0 0.75em 0;
1385
+ font-size: 0.85rem;
1386
+ display: block;
1387
+ overflow-x: auto;
1388
+ }
1389
+ .MarkdownContent_markdown th,
1390
+ .MarkdownContent_markdown td {
1391
+ border: 1px solid rgba(128, 128, 128, 0.25);
1392
+ padding: 0.4rem 0.6rem;
1393
+ text-align: left;
1394
+ }
1395
+ .MarkdownContent_markdown th {
1396
+ background: rgba(128, 128, 128, 0.15);
1397
+ color: inherit;
1398
+ font-weight: 700;
1399
+ }
1400
+ .MarkdownContent_mermaidBlock {
1401
+ display: flex;
1402
+ justify-content: center;
1403
+ overflow-x: auto;
1404
+ margin: 0 0 0.75em 0;
1405
+ }
1406
+ .MarkdownContent_mermaidBlock svg {
1407
+ max-width: 100%;
1408
+ height: auto;
1409
+ }
1410
+ .MarkdownContent_mermaidError {
1411
+ margin: 0 0 0.75em 0;
1412
+ padding: 0.6rem 0.85rem;
1413
+ background: rgba(248, 113, 113, 0.12);
1414
+ border: 1px solid rgba(248, 113, 113, 0.35);
1415
+ border-radius: 6px;
1416
+ color: #f87171;
1417
+ font-size: 0.8rem;
1418
+ white-space: pre-wrap;
1419
+ }
1420
+
1421
+ /* dist/screens/components/DynamicIcon/index.module.css */
1422
+ .DynamicIcon_icon {
1423
+ display: inline-block;
1424
+ flex-shrink: 0;
1425
+ vertical-align: -0.15em;
1426
+ }
1427
+ .DynamicIcon_emoji {
1428
+ display: inline-block;
1429
+ flex-shrink: 0;
1430
+ line-height: 1;
1431
+ vertical-align: -0.1em;
1432
+ }
1433
+
1434
+ /* dist/screens/components/ConfirmPopover/index.module.css */
1435
+ .ConfirmPopover_popover {
1436
+ position: fixed;
1437
+ width: 260px;
1438
+ padding: 14px;
1439
+ background: var(--confirm-bg, #ffffff);
1440
+ border: 1px solid var(--confirm-border, var(--sidebar-border, #e2e8f0));
1441
+ border-radius: var(--sidebar-radius, 10px);
1442
+ box-shadow: var(--sidebar-shadow, 0 8px 24px rgba(15, 23, 42, 0.12));
1443
+ z-index: 2001;
1444
+ transform-origin: left center;
1445
+ animation: ConfirmPopover_confirmIn 0.18s cubic-bezier(0.16, 1, 0.3, 1) both;
1446
+ }
1447
+ .ConfirmPopover_title {
1448
+ font-size: 0.9rem;
1449
+ font-weight: 600;
1450
+ color: var(--confirm-title, var(--sidebar-text, #0f172a));
1451
+ }
1452
+ .ConfirmPopover_title p,
1453
+ .ConfirmPopover_message p {
1454
+ margin: 0;
1455
+ }
1456
+ .ConfirmPopover_message {
1457
+ margin: 6px 0 12px;
1458
+ font-size: 0.8rem;
1459
+ line-height: 1.4;
1460
+ color: var(--confirm-text, var(--sidebar-text-muted, #64748b));
1461
+ }
1462
+ .ConfirmPopover_actions {
1463
+ display: flex;
1464
+ justify-content: flex-end;
1465
+ gap: 8px;
1466
+ }
1467
+ @keyframes ConfirmPopover_confirmIn {
1468
+ from {
1469
+ opacity: 0;
1470
+ transform: translateX(-8px) scale(0.97);
1471
+ }
1472
+ to {
1473
+ opacity: 1;
1474
+ transform: translateX(0) scale(1);
1475
+ }
1476
+ }
1477
+ @media (prefers-reduced-motion: reduce) {
1478
+ .ConfirmPopover_popover {
1479
+ animation-duration: 0.01ms;
1480
+ }
1481
+ }
1482
+
1483
+ /* dist/screens/components/Breadcrumbs/index.module.css */
1484
+ .Breadcrumbs_breadcrumbs {
1485
+ display: flex;
1486
+ align-items: center;
1487
+ min-width: 0;
1488
+ }
1489
+ .Breadcrumbs_list {
1490
+ display: flex;
1491
+ align-items: center;
1492
+ list-style: none;
1493
+ margin: 0;
1494
+ padding: 0;
1495
+ gap: 4px;
1496
+ flex-wrap: nowrap;
1497
+ min-width: 0;
1498
+ overflow: hidden;
1499
+ }
1500
+ .Breadcrumbs_item {
1501
+ display: flex;
1502
+ align-items: center;
1503
+ gap: 4px;
1504
+ min-width: 0;
1505
+ flex-shrink: 1;
1506
+ animation: Breadcrumbs_crumbEnter 0.32s cubic-bezier(0.16, 1, 0.3, 1) both;
1507
+ animation-delay: calc(var(--crumb-index, 0) * 45ms);
1508
+ }
1509
+ .Breadcrumbs_item:last-child {
1510
+ flex-shrink: 999;
1511
+ min-width: 24px;
1512
+ }
1513
+ @keyframes Breadcrumbs_crumbEnter {
1514
+ from {
1515
+ opacity: 0;
1516
+ transform: translateY(3px);
1517
+ }
1518
+ to {
1519
+ opacity: 1;
1520
+ transform: translateY(0);
1521
+ }
1522
+ }
1523
+ .Breadcrumbs_crumbIcon {
1524
+ color: var(--crumb-icon-color, #7c9cff);
1525
+ flex-shrink: 0;
1526
+ transition: transform 0.2s ease;
1527
+ }
1528
+ .Breadcrumbs_breadcrumbs:hover .Breadcrumbs_crumbIcon {
1529
+ transform: scale(1.08) rotate(-4deg);
1530
+ }
1531
+ .Breadcrumbs_link {
1532
+ position: relative;
1533
+ display: inline-flex;
1534
+ align-items: center;
1535
+ min-width: 0;
1536
+ border: none;
1537
+ background: transparent;
1538
+ padding: 3px 2px;
1539
+ margin: 0;
1540
+ font: inherit;
1541
+ font-size: 0.95rem;
1542
+ font-weight: 600;
1543
+ line-height: 1.2;
1544
+ color: var(--crumb-link-color, #9ba1ae);
1545
+ cursor: pointer;
1546
+ border-radius: 4px;
1547
+ transition: color 0.18s ease;
1548
+ }
1549
+ .Breadcrumbs_linkLabel {
1550
+ position: relative;
1551
+ display: block;
1552
+ max-width: 200px;
1553
+ overflow: hidden;
1554
+ text-overflow: ellipsis;
1555
+ white-space: nowrap;
1556
+ vertical-align: bottom;
1557
+ min-width: 0;
1558
+ flex-shrink: 1;
1559
+ }
1560
+ .Breadcrumbs_linkLabel::after {
1561
+ content: "";
1562
+ position: absolute;
1563
+ left: 0;
1564
+ right: 0;
1565
+ bottom: -3px;
1566
+ height: 1.5px;
1567
+ background: currentColor;
1568
+ border-radius: 1px;
1569
+ transform: scaleX(0);
1570
+ transform-origin: left;
1571
+ transition: transform 0.22s cubic-bezier(0.16, 1, 0.3, 1);
1572
+ }
1573
+ .Breadcrumbs_link:hover,
1574
+ .Breadcrumbs_link:focus-visible {
1575
+ color: #e6e8ec;
1576
+ }
1577
+ .Breadcrumbs_link:hover .Breadcrumbs_linkLabel::after,
1578
+ .Breadcrumbs_link:focus-visible .Breadcrumbs_linkLabel::after {
1579
+ transform: scaleX(1);
1580
+ }
1581
+ .Breadcrumbs_link:active {
1582
+ color: var(--crumb-icon-color, #7c9cff);
1583
+ transition: color 0.05s ease;
1584
+ }
1585
+ .Breadcrumbs_link:focus-visible {
1586
+ outline: 2px solid var(--crumb-icon-color, #7c9cff);
1587
+ outline-offset: 2px;
1588
+ }
1589
+ .Breadcrumbs_crumbText {
1590
+ display: inline-block;
1591
+ font-size: 0.95rem;
1592
+ font-weight: 600;
1593
+ color: var(--crumb-link-color, #9ba1ae);
1594
+ white-space: nowrap;
1595
+ overflow: hidden;
1596
+ text-overflow: ellipsis;
1597
+ max-width: 360px;
1598
+ min-width: 0;
1599
+ }
1600
+ .Breadcrumbs_current {
1601
+ font-weight: 700;
1602
+ color: var(--crumb-current-color, #e6e8ec);
1603
+ animation: Breadcrumbs_currentPulse 0.5s ease;
1604
+ }
1605
+ @keyframes Breadcrumbs_currentPulse {
1606
+ from {
1607
+ transform: scale(1.05);
1608
+ }
1609
+ to {
1610
+ transform: scale(1);
1611
+ }
1612
+ }
1613
+ .Breadcrumbs_separator {
1614
+ color: var(--crumb-separator-color, #4b5563);
1615
+ flex-shrink: 0;
1616
+ font-size: 0.85rem;
1617
+ line-height: 1;
1618
+ user-select: none;
1619
+ }
1620
+ .Breadcrumbs_overflowTrigger {
1621
+ display: inline-flex;
1622
+ width: max-content;
1623
+ flex-shrink: 0;
1624
+ }
1625
+ @media (prefers-reduced-motion: reduce) {
1626
+ .Breadcrumbs_item {
1627
+ animation: none;
1628
+ }
1629
+ .Breadcrumbs_current {
1630
+ animation: none;
1631
+ }
1632
+ .Breadcrumbs_crumbIcon,
1633
+ .Breadcrumbs_link,
1634
+ .Breadcrumbs_linkLabel::after {
1635
+ transition: none;
1636
+ }
1637
+ }
1638
+
1283
1639
  /* dist/screens/components/ScrollBar/index.module.css */
1284
1640
  .ScrollBar_root {
1285
1641
  position: relative;
@@ -3297,6 +3653,13 @@ button.TopBar_searchWrapper {
3297
3653
  font-size: 0.85rem;
3298
3654
  line-height: 1.4;
3299
3655
  }
3656
+ .DrawPanel_markdownBody {
3657
+ overflow-x: auto;
3658
+ }
3659
+ .DrawPanel_markdownBody table {
3660
+ display: table;
3661
+ width: 100%;
3662
+ }
3300
3663
 
3301
3664
  /* dist/screens/components/ErrorState/index.module.css */
3302
3665
  .ErrorState_errorState {
@@ -4024,258 +4387,11 @@ button.TopBar_searchWrapper {
4024
4387
  color: #64748b;
4025
4388
  cursor: pointer;
4026
4389
  flex-shrink: 0;
4027
- padding: 0;
4028
- }
4029
- .ImagePastePreview_removeButton:hover {
4030
- background-color: #e2e8f0;
4031
- color: #0f172a;
4032
- }
4033
-
4034
- /* dist/screens/components/MarkdownContent/index.module.css */
4035
- .MarkdownContent_markdown {
4036
- font-size: 0.88rem;
4037
- line-height: 1.6;
4038
- color: inherit;
4039
- word-break: break-word;
4040
- }
4041
- .MarkdownContent_markdown > *:first-child {
4042
- margin-top: 0;
4043
- }
4044
- .MarkdownContent_markdown > *:last-child {
4045
- margin-bottom: 0;
4046
- }
4047
- .MarkdownContent_markdown h1,
4048
- .MarkdownContent_markdown h2,
4049
- .MarkdownContent_markdown h3,
4050
- .MarkdownContent_markdown h4,
4051
- .MarkdownContent_markdown h5,
4052
- .MarkdownContent_markdown h6 {
4053
- color: inherit;
4054
- font-weight: 700;
4055
- line-height: 1.35;
4056
- margin: 1.1em 0 0.5em 0;
4057
- }
4058
- .MarkdownContent_headingWithCopy {
4059
- display: flex;
4060
- align-items: center;
4061
- gap: 0.4rem;
4062
- }
4063
- .MarkdownContent_headingText {
4064
- min-width: 0;
4065
- }
4066
- .MarkdownContent_headingCopyButton {
4067
- flex-shrink: 0;
4068
- opacity: 0;
4069
- transition: opacity 0.15s ease;
4070
- }
4071
- .MarkdownContent_headingWithCopy:hover .MarkdownContent_headingCopyButton,
4072
- .MarkdownContent_headingWithCopy:focus-within .MarkdownContent_headingCopyButton,
4073
- .MarkdownContent_headingCopyButton:focus-visible {
4074
- opacity: 1;
4075
- }
4076
- .MarkdownContent_markdown h1 {
4077
- font-size: 1.35rem;
4078
- }
4079
- .MarkdownContent_markdown h2 {
4080
- font-size: 1.2rem;
4081
- }
4082
- .MarkdownContent_markdown h3 {
4083
- font-size: 1.05rem;
4084
- }
4085
- .MarkdownContent_markdown h4,
4086
- .MarkdownContent_markdown h5,
4087
- .MarkdownContent_markdown h6 {
4088
- font-size: 0.95rem;
4089
- }
4090
- .MarkdownContent_markdown p {
4091
- margin: 0 0 0.75em 0;
4092
- }
4093
- .MarkdownContent_markdown a {
4094
- color: var(--markdown-link, #7c9cff);
4095
- text-decoration: underline;
4096
- }
4097
- .MarkdownContent_markdown a:hover {
4098
- color: #a9bfff;
4099
- }
4100
- .MarkdownContent_markdown strong {
4101
- color: inherit;
4102
- font-weight: 700;
4103
- }
4104
- .MarkdownContent_markdown em {
4105
- font-style: italic;
4106
- }
4107
- .MarkdownContent_markdown del {
4108
- color: inherit;
4109
- opacity: 0.7;
4110
- }
4111
- .MarkdownContent_markdown ul,
4112
- .MarkdownContent_markdown ol {
4113
- margin: 0 0 0.75em 0;
4114
- padding-left: 1.4rem;
4115
- display: flex;
4116
- flex-direction: column;
4117
- gap: 0.25rem;
4118
- }
4119
- .MarkdownContent_markdown li > ul,
4120
- .MarkdownContent_markdown li > ol {
4121
- margin-top: 0.25rem;
4122
- margin-bottom: 0;
4123
- }
4124
- .MarkdownContent_markdown li input[type=checkbox] {
4125
- margin-right: 0.4rem;
4126
- }
4127
- .MarkdownContent_markdown blockquote {
4128
- margin: 0 0 0.75em 0;
4129
- padding: 0.25rem 1rem;
4130
- border-left: 3px solid rgba(124, 156, 255, 0.5);
4131
- color: inherit;
4132
- opacity: 0.85;
4133
- }
4134
- .MarkdownContent_markdown blockquote p:last-child {
4135
- margin-bottom: 0;
4136
- }
4137
- .MarkdownContent_markdown code {
4138
- font-family:
4139
- "SFMono-Regular",
4140
- Consolas,
4141
- "Liberation Mono",
4142
- Menlo,
4143
- monospace;
4144
- font-size: 0.85em;
4145
- background: rgba(128, 128, 128, 0.18);
4146
- color: inherit;
4147
- padding: 0.1em 0.35em;
4148
- border-radius: 4px;
4149
- }
4150
- .MarkdownContent_markdown pre {
4151
- margin: 0 0 0.75em 0;
4152
- padding: 0.85rem 1rem;
4153
- background: rgba(128, 128, 128, 0.12);
4154
- border: 1px solid rgba(128, 128, 128, 0.2);
4155
- border-radius: 8px;
4156
- overflow-x: auto;
4157
- }
4158
- .MarkdownContent_markdown pre code {
4159
- background: none;
4160
- padding: 0;
4161
- border-radius: 0;
4162
- color: inherit;
4163
- }
4164
- .MarkdownContent_copyableText {
4165
- display: inline-flex;
4166
- align-items: center;
4167
- gap: 0.3rem;
4168
- }
4169
- .MarkdownContent_copyableTextButton {
4170
- flex-shrink: 0;
4171
- opacity: 0;
4172
- transition: opacity 0.15s ease;
4173
- }
4174
- .MarkdownContent_copyableText:hover .MarkdownContent_copyableTextButton,
4175
- .MarkdownContent_copyableText:focus-within .MarkdownContent_copyableTextButton,
4176
- .MarkdownContent_copyableTextButton:focus-visible {
4177
- opacity: 1;
4178
- }
4179
- .MarkdownContent_copyBlockWrapper {
4180
- position: relative;
4181
- padding: 0.75rem 1rem;
4182
- border: 1px solid rgba(128, 128, 128, 0.2);
4183
- border-radius: 8px;
4184
- margin: 0 0 0.75em 0;
4185
- }
4186
- .MarkdownContent_copyBlockWrapper > *:first-child {
4187
- margin-top: 0;
4188
- }
4189
- .MarkdownContent_copyBlockWrapper > *:last-child {
4190
- margin-bottom: 0;
4191
- }
4192
- .MarkdownContent_copyBlockButton {
4193
- position: absolute;
4194
- top: 0.6rem;
4195
- right: 0.6rem;
4196
- opacity: 0;
4197
- transition: opacity 0.15s ease;
4198
- }
4199
- .MarkdownContent_copyBlockWrapper:hover .MarkdownContent_copyBlockButton,
4200
- .MarkdownContent_copyBlockWrapper:focus-within .MarkdownContent_copyBlockButton,
4201
- .MarkdownContent_copyBlockButton:focus-visible {
4202
- opacity: 1;
4203
- }
4204
- .MarkdownContent_codeBlockWrapper {
4205
- position: relative;
4206
- }
4207
- .MarkdownContent_codeCopyButton {
4208
- position: absolute;
4209
- top: 0.6rem;
4210
- right: 0.6rem;
4211
- opacity: 0;
4212
- transition: opacity 0.15s ease;
4213
- }
4214
- .MarkdownContent_codeBlockWrapper:hover .MarkdownContent_codeCopyButton,
4215
- .MarkdownContent_codeBlockWrapper:focus-within .MarkdownContent_codeCopyButton,
4216
- .MarkdownContent_codeCopyButton:focus-visible {
4217
- opacity: 1;
4218
- }
4219
- .MarkdownContent_markdown hr {
4220
- border: none;
4221
- border-top: 1px solid rgba(128, 128, 128, 0.25);
4222
- margin: 1em 0;
4223
- }
4224
- .MarkdownContent_markdown img {
4225
- max-width: 100%;
4226
- border-radius: 6px;
4227
- }
4228
- .MarkdownContent_markdown table {
4229
- width: 100%;
4230
- border-collapse: collapse;
4231
- margin: 0 0 0.75em 0;
4232
- font-size: 0.85rem;
4233
- display: block;
4234
- overflow-x: auto;
4235
- }
4236
- .MarkdownContent_markdown th,
4237
- .MarkdownContent_markdown td {
4238
- border: 1px solid rgba(128, 128, 128, 0.25);
4239
- padding: 0.4rem 0.6rem;
4240
- text-align: left;
4241
- }
4242
- .MarkdownContent_markdown th {
4243
- background: rgba(128, 128, 128, 0.15);
4244
- color: inherit;
4245
- font-weight: 700;
4246
- }
4247
- .MarkdownContent_mermaidBlock {
4248
- display: flex;
4249
- justify-content: center;
4250
- overflow-x: auto;
4251
- margin: 0 0 0.75em 0;
4252
- }
4253
- .MarkdownContent_mermaidBlock svg {
4254
- max-width: 100%;
4255
- height: auto;
4256
- }
4257
- .MarkdownContent_mermaidError {
4258
- margin: 0 0 0.75em 0;
4259
- padding: 0.6rem 0.85rem;
4260
- background: rgba(248, 113, 113, 0.12);
4261
- border: 1px solid rgba(248, 113, 113, 0.35);
4262
- border-radius: 6px;
4263
- color: #f87171;
4264
- font-size: 0.8rem;
4265
- white-space: pre-wrap;
4266
- }
4267
-
4268
- /* dist/screens/components/DynamicIcon/index.module.css */
4269
- .DynamicIcon_icon {
4270
- display: inline-block;
4271
- flex-shrink: 0;
4272
- vertical-align: -0.15em;
4390
+ padding: 0;
4273
4391
  }
4274
- .DynamicIcon_emoji {
4275
- display: inline-block;
4276
- flex-shrink: 0;
4277
- line-height: 1;
4278
- vertical-align: -0.1em;
4392
+ .ImagePastePreview_removeButton:hover {
4393
+ background-color: #e2e8f0;
4394
+ color: #0f172a;
4279
4395
  }
4280
4396
 
4281
4397
  /* dist/screens/components/Callout/index.module.css */
@@ -4478,874 +4594,1397 @@ button.TopBar_searchWrapper {
4478
4594
  background-color: #cbd5e1;
4479
4595
  border-radius: 3px;
4480
4596
  }
4481
- .MultilinePlaceholder_textarea::-webkit-scrollbar-thumb:hover {
4482
- background-color: #94a3b8;
4597
+ .MultilinePlaceholder_textarea::-webkit-scrollbar-thumb:hover {
4598
+ background-color: #94a3b8;
4599
+ }
4600
+ .MultilinePlaceholder_imagePreviewList {
4601
+ margin-top: 8px;
4602
+ }
4603
+
4604
+ /* dist/screens/components/Radio/index.module.css */
4605
+ .Radio_formControl {
4606
+ display: flex;
4607
+ flex-direction: column;
4608
+ gap: 0.5rem;
4609
+ font-family: var(--font-sans, sans-serif);
4610
+ border: none;
4611
+ padding: 0;
4612
+ margin: 0;
4613
+ }
4614
+ .Radio_formLabel {
4615
+ font-size: 0.95rem;
4616
+ font-weight: 600;
4617
+ color: var(--text-color, #0f172a);
4618
+ margin-bottom: 0.25rem;
4619
+ }
4620
+ .Radio_formLabel.Radio_Mui-focused {
4621
+ color: var(--text-color, #0f172a);
4622
+ }
4623
+ .Radio_radioGroupContainer {
4624
+ gap: 0.25rem;
4625
+ }
4626
+ .Radio_radioWrapper {
4627
+ margin-left: 0;
4628
+ margin-right: 0;
4629
+ user-select: none;
4630
+ transition: opacity 0.2s ease;
4631
+ }
4632
+ .Radio_radioWrapper .Radio_MuiFormControlLabel-label {
4633
+ font-family: var(--font-sans, sans-serif);
4634
+ color: var(--text-color, #0f172a);
4635
+ font-size: 1rem;
4636
+ }
4637
+ .Radio_muiRadioCustom svg {
4638
+ transition: transform 0.25s cubic-bezier(0.34, 1.56, 0.64, 1);
4639
+ }
4640
+ .Radio_muiRadioCustom:hover {
4641
+ background-color: color-mix(in srgb, currentColor 8%, transparent);
4642
+ }
4643
+ .Radio_hasAccent.Mui-checked {
4644
+ color: var(--radio-accent);
4645
+ }
4646
+ .Radio_hasText .MuiFormControlLabel-label {
4647
+ color: var(--radio-text);
4648
+ }
4649
+ .Radio_card {
4650
+ box-sizing: border-box;
4651
+ width: 100%;
4652
+ padding: 2px 12px 2px 4px;
4653
+ border: 1px solid var(--radio-border, #e2e8f0);
4654
+ border-radius: var(--radio-radius, 8px);
4655
+ background: var(--radio-bg, transparent);
4656
+ transition: border-color 0.15s ease, background-color 0.15s ease;
4657
+ }
4658
+ .Radio_card:hover {
4659
+ border-color: var(--radio-accent, #2563eb);
4660
+ }
4661
+ .Radio_card:has(.Mui-checked) {
4662
+ border-color: var(--radio-accent, #2563eb);
4663
+ background: color-mix(in srgb, var(--radio-accent, #2563eb) 8%, var(--radio-bg, transparent));
4664
+ }
4665
+
4666
+ /* dist/screens/components/ColorPicker/index.module.css */
4667
+ .ColorPicker_root {
4668
+ display: inline-flex;
4669
+ flex-direction: column;
4670
+ gap: 0.25rem;
4671
+ }
4672
+ .ColorPicker_label {
4673
+ font-size: 0.85rem;
4674
+ font-weight: 700;
4675
+ color: var(--cp-text, var(--color-text, #1e293b));
4676
+ }
4677
+ .ColorPicker_trigger {
4678
+ display: inline-flex;
4679
+ align-items: center;
4680
+ gap: 0.6rem;
4681
+ padding: 0.4rem 0.7rem;
4682
+ background: var(--cp-bg, #ffffff);
4683
+ color: var(--cp-text, var(--color-text, #1e293b));
4684
+ border: 1px solid var(--cp-border, var(--color-border, #e2e8f0));
4685
+ border-radius: var(--radius-md, 0.5rem);
4686
+ font-family: inherit;
4687
+ font-size: 0.85rem;
4688
+ cursor: pointer;
4689
+ transition: border-color 0.15s;
4690
+ }
4691
+ .ColorPicker_trigger:hover:not(:disabled),
4692
+ .ColorPicker_trigger[aria-expanded=true] {
4693
+ border-color: var(--cp-accent, var(--color-primary, #1717ff));
4694
+ }
4695
+ .ColorPicker_trigger:disabled {
4696
+ opacity: 0.55;
4697
+ cursor: not-allowed;
4698
+ }
4699
+ .ColorPicker_swatch,
4700
+ .ColorPicker_preview {
4701
+ flex-shrink: 0;
4702
+ width: 1.5rem;
4703
+ height: 1.5rem;
4704
+ border-radius: 50%;
4705
+ background-color: var(--swatch-color);
4706
+ border: 1px solid rgba(128, 128, 128, 0.4);
4707
+ }
4708
+ .ColorPicker_hexText {
4709
+ font-variant-numeric: tabular-nums;
4710
+ }
4711
+ .ColorPicker_popover {
4712
+ width: 240px;
4713
+ padding: 0.75rem;
4714
+ background: var(--cp-bg, #ffffff);
4715
+ color: var(--cp-text, var(--color-text, #1e293b));
4716
+ border: 1px solid var(--cp-border, var(--color-border, #e2e8f0));
4717
+ border-radius: var(--radius-lg, 0.75rem);
4718
+ box-shadow: var(--shadow-lg, 0 10px 15px -3px rgb(0 0 0 / 0.1));
4719
+ font-family: inherit;
4720
+ }
4721
+ .ColorPicker_panel {
4722
+ display: flex;
4723
+ flex-direction: column;
4724
+ gap: 0.75rem;
4725
+ }
4726
+ .ColorPicker_saturationArea {
4727
+ position: relative;
4728
+ height: 140px;
4729
+ border-radius: var(--radius-md, 0.5rem);
4730
+ cursor: crosshair;
4731
+ touch-action: none;
4732
+ outline-offset: 2px;
4733
+ }
4734
+ .ColorPicker_saturationThumb,
4735
+ .ColorPicker_hueThumb {
4736
+ position: absolute;
4737
+ width: 14px;
4738
+ height: 14px;
4739
+ border: 2px solid #ffffff;
4740
+ border-radius: 50%;
4741
+ box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.4);
4742
+ transform: translate(-50%, -50%);
4743
+ pointer-events: none;
4744
+ }
4745
+ .ColorPicker_saturationThumb {
4746
+ background-color: var(--swatch-color);
4747
+ }
4748
+ .ColorPicker_hueTrack {
4749
+ position: relative;
4750
+ height: 12px;
4751
+ border-radius: 6px;
4752
+ cursor: pointer;
4753
+ touch-action: none;
4754
+ outline-offset: 2px;
4755
+ }
4756
+ .ColorPicker_hueThumb {
4757
+ top: 50%;
4758
+ background-color: #ffffff;
4759
+ }
4760
+ .ColorPicker_formatRow {
4761
+ display: flex;
4762
+ gap: 0.25rem;
4763
+ }
4764
+ .ColorPicker_valueRow {
4765
+ display: flex;
4766
+ align-items: center;
4767
+ gap: 0.5rem;
4768
+ }
4769
+ .ColorPicker_channelsRow {
4770
+ display: flex;
4771
+ flex: 1;
4772
+ gap: 0.4rem;
4773
+ }
4774
+ .ColorPicker_channelField {
4775
+ display: flex;
4776
+ flex: 1;
4777
+ flex-direction: column;
4778
+ align-items: center;
4779
+ gap: 0.15rem;
4780
+ min-width: 0;
4781
+ }
4782
+ .ColorPicker_error {
4783
+ font-size: 0.75rem;
4784
+ color: var(--color-danger, #ea1f1f);
4785
+ }
4786
+
4787
+ /* dist/screens/components/Slider/index.module.css */
4788
+ .Slider_slider {
4789
+ width: 100%;
4790
+ }
4791
+
4792
+ /* dist/screens/components/MediaViewer/index.module.css */
4793
+ .MediaViewer_wrapper {
4794
+ box-sizing: border-box;
4795
+ width: 100%;
4796
+ max-width: 100%;
4797
+ border: 1px solid var(--media-viewer-border, #e2e8f0);
4798
+ border-radius: 10px;
4799
+ background-color: var(--media-viewer-bg, #f8fafc);
4800
+ overflow: hidden;
4801
+ }
4802
+ .MediaViewer_imageWrapper {
4803
+ display: flex;
4804
+ max-height: 480px;
4805
+ }
4806
+ .MediaViewer_videoWrapper {
4807
+ display: flex;
4808
+ background-color: var(--media-viewer-video-bg, #0d0f14);
4809
+ }
4810
+ .MediaViewer_imageWrapperZoomed {
4811
+ overflow: auto;
4812
+ }
4813
+ .MediaViewer_image,
4814
+ .MediaViewer_video {
4815
+ display: block;
4816
+ width: 100%;
4817
+ max-width: 100%;
4818
+ max-height: 480px;
4819
+ height: auto;
4820
+ object-fit: contain;
4821
+ }
4822
+ .MediaViewer_imageZoomable {
4823
+ cursor: zoom-in;
4824
+ }
4825
+ .MediaViewer_imageZoomed {
4826
+ width: auto;
4827
+ max-width: none;
4828
+ max-height: none;
4829
+ cursor: zoom-out;
4830
+ }
4831
+ .MediaViewer_audioWrapper {
4832
+ padding: 12px 16px;
4833
+ overflow: visible;
4834
+ }
4835
+ .MediaViewer_audioFileName {
4836
+ font-size: 0.8rem;
4837
+ font-weight: 600;
4838
+ color: var(--media-viewer-text, #334155);
4839
+ margin-bottom: 8px;
4840
+ }
4841
+ .MediaViewer_audio {
4842
+ width: 100%;
4843
+ }
4844
+ .MediaViewer_pdfWrapper {
4845
+ display: flex;
4846
+ flex-direction: column;
4847
+ }
4848
+ .MediaViewer_pdfFrame {
4849
+ width: 100%;
4850
+ height: 480px;
4851
+ border: none;
4852
+ }
4853
+ .MediaViewer_fileFooter {
4854
+ display: flex;
4855
+ align-items: center;
4856
+ justify-content: space-between;
4857
+ gap: 12px;
4858
+ padding: 8px 12px;
4859
+ border-top: 1px solid var(--media-viewer-border, #e2e8f0);
4860
+ }
4861
+ .MediaViewer_fileCard {
4862
+ display: flex;
4863
+ align-items: center;
4864
+ gap: 12px;
4865
+ padding: 12px 14px;
4483
4866
  }
4484
- .MultilinePlaceholder_imagePreviewList {
4485
- margin-top: 8px;
4867
+ .MediaViewer_fileIcon {
4868
+ flex-shrink: 0;
4869
+ display: inline-flex;
4870
+ align-items: center;
4871
+ justify-content: center;
4872
+ width: 40px;
4873
+ height: 40px;
4874
+ border-radius: 8px;
4875
+ color: #ffffff;
4486
4876
  }
4487
-
4488
- /* dist/screens/components/Radio/index.module.css */
4489
- .Radio_formControl {
4877
+ .MediaViewer_fileInfo {
4878
+ flex: 1;
4879
+ min-width: 0;
4490
4880
  display: flex;
4491
4881
  flex-direction: column;
4492
- gap: 0.5rem;
4493
- font-family: var(--font-sans, sans-serif);
4494
- border: none;
4495
- padding: 0;
4496
- margin: 0;
4882
+ gap: 2px;
4497
4883
  }
4498
- .Radio_formLabel {
4499
- font-size: 0.95rem;
4884
+ .MediaViewer_fileName {
4885
+ font-size: 0.85rem;
4500
4886
  font-weight: 600;
4501
- color: var(--text-color, #0f172a);
4502
- margin-bottom: 0.25rem;
4503
- }
4504
- .Radio_formLabel.Radio_Mui-focused {
4505
- color: var(--text-color, #0f172a);
4506
- }
4507
- .Radio_radioGroupContainer {
4508
- gap: 0.25rem;
4509
- }
4510
- .Radio_radioWrapper {
4511
- margin-left: 0;
4512
- margin-right: 0;
4513
- user-select: none;
4514
- transition: opacity 0.2s ease;
4887
+ color: var(--media-viewer-text, #334155);
4888
+ overflow: hidden;
4889
+ text-overflow: ellipsis;
4890
+ white-space: nowrap;
4515
4891
  }
4516
- .Radio_radioWrapper .Radio_MuiFormControlLabel-label {
4517
- font-family: var(--font-sans, sans-serif);
4518
- color: var(--text-color, #0f172a);
4519
- font-size: 1rem;
4892
+ .MediaViewer_fileMeta {
4893
+ font-size: 0.72rem;
4894
+ color: var(--media-viewer-text, #334155);
4895
+ opacity: 0.65;
4520
4896
  }
4521
- .Radio_muiRadioCustom svg {
4522
- transition: transform 0.25s cubic-bezier(0.34, 1.56, 0.64, 1);
4897
+ .MediaViewer_fileAction {
4898
+ flex-shrink: 0;
4899
+ font-size: 0.78rem;
4900
+ font-weight: 600;
4901
+ color: var(--media-viewer-accent, #2563eb);
4902
+ text-decoration: none;
4523
4903
  }
4524
- .Radio_muiRadioCustom:hover {
4525
- background-color: color-mix(in srgb, currentColor 8%, transparent);
4904
+ .MediaViewer_fileAction:hover {
4905
+ text-decoration: underline;
4526
4906
  }
4527
-
4528
- /* dist/screens/components/ColorPicker/index.module.css */
4529
- .ColorPicker_root {
4907
+ .MediaViewer_downloadButton {
4908
+ flex-shrink: 0;
4530
4909
  display: inline-flex;
4531
- flex-direction: column;
4532
- gap: 0.25rem;
4910
+ align-items: center;
4911
+ justify-content: center;
4912
+ width: 36px;
4913
+ height: 36px;
4914
+ border-radius: 8px;
4915
+ color: var(--media-viewer-accent, #2563eb);
4916
+ text-decoration: none;
4917
+ transition: background-color 0.15s ease;
4533
4918
  }
4534
- .ColorPicker_label {
4535
- font-size: 0.85rem;
4536
- font-weight: 700;
4537
- color: var(--cp-text, var(--color-text, #1e293b));
4919
+ .MediaViewer_downloadButton:hover {
4920
+ background-color: rgba(0, 0, 0, 0.06);
4538
4921
  }
4539
- .ColorPicker_trigger {
4540
- display: inline-flex;
4922
+ .MediaViewer_actionButton {
4923
+ box-sizing: border-box;
4924
+ display: flex;
4541
4925
  align-items: center;
4542
- gap: 0.6rem;
4543
- padding: 0.4rem 0.7rem;
4544
- background: var(--cp-bg, #ffffff);
4545
- color: var(--cp-text, var(--color-text, #1e293b));
4546
- border: 1px solid var(--cp-border, var(--color-border, #e2e8f0));
4547
- border-radius: var(--radius-md, 0.5rem);
4548
- font-family: inherit;
4926
+ justify-content: center;
4927
+ gap: 8px;
4928
+ width: 100%;
4929
+ margin-top: 10px;
4930
+ padding: 10px 16px;
4931
+ border: 1px solid var(--media-viewer-border, #e2e8f0);
4932
+ border-radius: 10px;
4933
+ background-color: var(--media-viewer-bg, #f8fafc);
4934
+ color: var(--media-viewer-accent, #2563eb);
4549
4935
  font-size: 0.85rem;
4936
+ font-weight: 600;
4550
4937
  cursor: pointer;
4551
- transition: border-color 0.15s;
4552
- }
4553
- .ColorPicker_trigger:hover:not(:disabled),
4554
- .ColorPicker_trigger[aria-expanded=true] {
4555
- border-color: var(--cp-accent, var(--color-primary, #1717ff));
4938
+ transition: background-color 0.15s ease, border-color 0.15s ease;
4556
4939
  }
4557
- .ColorPicker_trigger:disabled {
4558
- opacity: 0.55;
4559
- cursor: not-allowed;
4940
+ .MediaViewer_actionButton:hover {
4941
+ background-color: rgba(0, 0, 0, 0.04);
4942
+ border-color: var(--media-viewer-accent, #2563eb);
4560
4943
  }
4561
- .ColorPicker_swatch,
4562
- .ColorPicker_preview {
4563
- flex-shrink: 0;
4564
- width: 1.5rem;
4565
- height: 1.5rem;
4566
- border-radius: 50%;
4567
- background-color: var(--swatch-color);
4568
- border: 1px solid rgba(128, 128, 128, 0.4);
4944
+ @media (max-width: 480px) {
4945
+ .MediaViewer_imageWrapper,
4946
+ .MediaViewer_videoWrapper {
4947
+ max-height: 280px;
4948
+ }
4949
+ .MediaViewer_image,
4950
+ .MediaViewer_video {
4951
+ max-height: 280px;
4952
+ }
4953
+ .MediaViewer_pdfFrame {
4954
+ height: 320px;
4955
+ }
4956
+ .MediaViewer_fileCard {
4957
+ padding: 10px;
4958
+ gap: 10px;
4959
+ }
4960
+ .MediaViewer_fileIcon {
4961
+ width: 34px;
4962
+ height: 34px;
4963
+ }
4569
4964
  }
4570
- .ColorPicker_hexText {
4571
- font-variant-numeric: tabular-nums;
4965
+ .MediaViewer_localFileBar {
4966
+ display: flex;
4967
+ align-items: center;
4968
+ justify-content: space-between;
4969
+ gap: 8px;
4970
+ margin-bottom: 6px;
4971
+ font-size: 0.8rem;
4972
+ color: var(--media-viewer-text, #334155);
4572
4973
  }
4573
- .ColorPicker_popover {
4574
- width: 240px;
4575
- padding: 0.75rem;
4576
- background: var(--cp-bg, #ffffff);
4577
- color: var(--cp-text, var(--color-text, #1e293b));
4578
- border: 1px solid var(--cp-border, var(--color-border, #e2e8f0));
4579
- border-radius: var(--radius-lg, 0.75rem);
4580
- box-shadow: var(--shadow-lg, 0 10px 15px -3px rgb(0 0 0 / 0.1));
4581
- font-family: inherit;
4974
+ .MediaViewer_localFileName {
4975
+ min-width: 0;
4976
+ overflow: hidden;
4977
+ text-overflow: ellipsis;
4978
+ white-space: nowrap;
4979
+ font-weight: 600;
4582
4980
  }
4583
- .ColorPicker_panel {
4981
+
4982
+ /* dist/screens/components/MediaViewer/components/VideoPlayer/components/VideoSeekBar/index.module.css */
4983
+ .VideoSeekBar_seekRow {
4584
4984
  display: flex;
4585
- flex-direction: column;
4586
- gap: 0.75rem;
4985
+ align-items: center;
4986
+ gap: 8px;
4587
4987
  }
4588
- .ColorPicker_saturationArea {
4988
+ .VideoSeekBar_seekSlider {
4589
4989
  position: relative;
4590
- height: 140px;
4591
- border-radius: var(--radius-md, 0.5rem);
4592
- cursor: crosshair;
4593
- touch-action: none;
4594
- outline-offset: 2px;
4990
+ flex: 1;
4595
4991
  }
4596
- .ColorPicker_saturationThumb,
4597
- .ColorPicker_hueThumb {
4992
+ .VideoSeekBar_hoverPreview {
4598
4993
  position: absolute;
4599
- width: 14px;
4600
- height: 14px;
4601
- border: 2px solid #ffffff;
4602
- border-radius: 50%;
4603
- box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.4);
4604
- transform: translate(-50%, -50%);
4994
+ bottom: 100%;
4995
+ transform: translateX(-50%);
4996
+ margin-bottom: 6px;
4997
+ padding: 2px 6px;
4998
+ border-radius: 4px;
4999
+ background: rgba(13, 15, 20, 0.92);
5000
+ color: #f1f3f6;
5001
+ font-size: 0.68rem;
5002
+ font-weight: 600;
5003
+ white-space: nowrap;
4605
5004
  pointer-events: none;
5005
+ z-index: 1;
4606
5006
  }
4607
- .ColorPicker_saturationThumb {
4608
- background-color: var(--swatch-color);
5007
+ .VideoSeekBar_timeLabel {
5008
+ flex-shrink: 0;
5009
+ color: #e6e8ec;
5010
+ font-size: 0.68rem;
5011
+ font-weight: 600;
5012
+ min-width: 34px;
5013
+ text-align: center;
4609
5014
  }
4610
- .ColorPicker_hueTrack {
5015
+
5016
+ /* dist/screens/components/MediaViewer/components/VideoPlayer/components/VideoSpeedControl/index.module.css */
5017
+ .VideoSpeedControl_speedControl {
4611
5018
  position: relative;
4612
- height: 12px;
5019
+ }
5020
+ .VideoSpeedControl_speedMenu {
5021
+ position: absolute;
5022
+ bottom: calc(100% + 8px);
5023
+ right: 0;
5024
+ display: flex;
5025
+ flex-direction: column;
5026
+ min-width: 64px;
5027
+ padding: 4px;
5028
+ border-radius: 8px;
5029
+ border: 1px solid;
5030
+ box-shadow: 0 8px 20px rgba(0, 0, 0, 0.25);
5031
+ z-index: 6;
5032
+ }
5033
+ .VideoSpeedControl_speedMenuBottom {
5034
+ bottom: auto;
5035
+ top: calc(100% + 8px);
5036
+ }
5037
+ .VideoSpeedControl_speedOption {
5038
+ border: none;
5039
+ background: transparent;
5040
+ font-size: 0.78rem;
5041
+ font-weight: 600;
5042
+ padding: 6px 10px;
4613
5043
  border-radius: 6px;
4614
5044
  cursor: pointer;
4615
- touch-action: none;
4616
- outline-offset: 2px;
5045
+ text-align: left;
4617
5046
  }
4618
- .ColorPicker_hueThumb {
4619
- top: 50%;
4620
- background-color: #ffffff;
5047
+ .VideoSpeedControl_speedOption:hover {
5048
+ background: rgba(128, 128, 128, 0.15);
4621
5049
  }
4622
- .ColorPicker_formatRow {
5050
+
5051
+ /* dist/screens/components/MediaViewer/components/VideoPlayer/components/VideoControlsBar/index.module.css */
5052
+ .VideoControlsBar_controlsRow {
4623
5053
  display: flex;
4624
- gap: 0.25rem;
5054
+ align-items: center;
5055
+ justify-content: space-between;
5056
+ gap: 10px;
4625
5057
  }
4626
- .ColorPicker_valueRow {
5058
+ .VideoControlsBar_controlsLeft,
5059
+ .VideoControlsBar_controlsRight {
4627
5060
  display: flex;
4628
5061
  align-items: center;
4629
- gap: 0.5rem;
5062
+ gap: 4px;
4630
5063
  }
4631
- .ColorPicker_channelsRow {
5064
+ .VideoControlsBar_volumeGroup {
4632
5065
  display: flex;
4633
- flex: 1;
4634
- gap: 0.4rem;
5066
+ align-items: center;
5067
+ gap: 4px;
4635
5068
  }
4636
- .ColorPicker_channelField {
5069
+ .VideoControlsBar_volumeSliderWrap {
5070
+ width: 70px;
5071
+ }
5072
+ @media (max-width: 480px) {
5073
+ .VideoControlsBar_volumeSliderWrap {
5074
+ width: 48px;
5075
+ }
5076
+ }
5077
+
5078
+ /* dist/screens/components/MediaViewer/components/VideoPlayer/components/VideoErrorOverlay/index.module.css */
5079
+ .VideoErrorOverlay_overlay {
5080
+ position: absolute;
5081
+ inset: 0;
5082
+ background: rgba(13, 15, 20, 0.6);
5083
+ backdrop-filter: blur(3px);
5084
+ display: flex;
5085
+ align-items: center;
5086
+ justify-content: center;
5087
+ z-index: 4;
5088
+ }
5089
+ .VideoErrorOverlay_errorCard {
4637
5090
  display: flex;
4638
- flex: 1;
4639
5091
  flex-direction: column;
4640
5092
  align-items: center;
4641
- gap: 0.15rem;
4642
- min-width: 0;
5093
+ gap: 8px;
5094
+ text-align: center;
5095
+ padding: 1.25rem;
4643
5096
  }
4644
- .ColorPicker_error {
4645
- font-size: 0.75rem;
4646
- color: var(--color-danger, #ea1f1f);
5097
+ .VideoErrorOverlay_errorIcon {
5098
+ color: #ef4444;
4647
5099
  }
4648
-
4649
- /* dist/screens/components/Slider/index.module.css */
4650
- .Slider_slider {
4651
- width: 100%;
5100
+ .VideoErrorOverlay_errorMsg {
5101
+ margin: 0;
5102
+ color: #f1f3f6;
5103
+ font-size: 0.85rem;
4652
5104
  }
4653
5105
 
4654
- /* dist/screens/components/MediaViewer/index.module.css */
4655
- .MediaViewer_wrapper {
4656
- box-sizing: border-box;
4657
- width: 100%;
4658
- max-width: 100%;
4659
- border: 1px solid var(--media-viewer-border, #e2e8f0);
4660
- border-radius: 10px;
4661
- background-color: var(--media-viewer-bg, #f8fafc);
4662
- overflow: hidden;
5106
+ /* dist/screens/components/MediaViewer/components/VideoPlayer/components/VideoCenterPlayButton/index.module.css */
5107
+ .VideoCenterPlayButton_centerPlayButton {
5108
+ position: absolute !important;
5109
+ top: 50%;
5110
+ left: 50%;
5111
+ transform: translate(-50%, -50%);
5112
+ z-index: 3;
5113
+ transition: transform 0.15s ease, filter 0.15s ease;
4663
5114
  }
4664
- .MediaViewer_imageWrapper {
5115
+ .VideoCenterPlayButton_centerPlayButton:hover {
5116
+ transform: translate(-50%, -50%) scale(1.06);
5117
+ filter: brightness(1.2);
5118
+ }
5119
+
5120
+ /* dist/screens/components/MediaViewer/components/VideoPlayer/components/VideoTimeSearch/index.module.css */
5121
+ .VideoTimeSearch_searchForm {
4665
5122
  display: flex;
4666
- max-height: 480px;
5123
+ align-items: center;
5124
+ gap: 6px;
5125
+ padding: 0 8px;
5126
+ height: 30px;
5127
+ border-radius: 6px;
5128
+ background: rgba(255, 255, 255, 0.08);
5129
+ flex-shrink: 0;
4667
5130
  }
4668
- .MediaViewer_videoWrapper {
5131
+ .VideoTimeSearch_searchInput {
5132
+ width: 52px;
5133
+ border: none;
5134
+ background: transparent;
5135
+ outline: none;
5136
+ font-size: 0.72rem;
5137
+ font-weight: 600;
5138
+ }
5139
+ .VideoTimeSearch_searchInput::placeholder {
5140
+ color: rgba(241, 243, 246, 0.45);
5141
+ }
5142
+ .VideoTimeSearch_searchInputInvalid {
5143
+ color: #ef4444 !important;
5144
+ }
5145
+
5146
+ /* dist/screens/components/MediaViewer/components/VideoPlayer/index.module.css */
5147
+ .VideoPlayer_videoPlayer {
5148
+ position: relative;
5149
+ width: 100%;
5150
+ aspect-ratio: 16 / 9;
5151
+ max-height: 480px;
4669
5152
  display: flex;
4670
- background-color: var(--media-viewer-video-bg, #0d0f14);
5153
+ align-items: center;
5154
+ justify-content: center;
5155
+ overflow: hidden;
5156
+ user-select: none;
4671
5157
  }
4672
- .MediaViewer_imageWrapperZoomed {
4673
- overflow: auto;
5158
+ .VideoPlayer_videoPlayerFullscreen {
5159
+ max-height: none;
5160
+ width: 100vw;
5161
+ height: 100vh;
5162
+ background-color: var(--media-viewer-video-bg, #0d0f14);
4674
5163
  }
4675
- .MediaViewer_image,
4676
- .MediaViewer_video {
5164
+ .VideoPlayer_videoPlayerEl {
4677
5165
  display: block;
4678
5166
  width: 100%;
4679
5167
  max-width: 100%;
4680
- max-height: 480px;
4681
- height: auto;
5168
+ height: 100%;
4682
5169
  object-fit: contain;
5170
+ cursor: pointer;
4683
5171
  }
4684
- .MediaViewer_imageZoomable {
4685
- cursor: zoom-in;
5172
+ .VideoPlayer_videoPlayerFullscreen .VideoPlayer_videoPlayerEl {
5173
+ max-height: 100vh;
5174
+ height: 100%;
4686
5175
  }
4687
- .MediaViewer_imageZoomed {
4688
- width: auto;
4689
- max-width: none;
4690
- max-height: none;
4691
- cursor: zoom-out;
5176
+ .VideoPlayer_bufferingOverlay {
5177
+ position: absolute;
5178
+ inset: 0;
5179
+ background: rgba(13, 15, 20, 0.6);
5180
+ backdrop-filter: blur(3px);
5181
+ display: flex;
5182
+ align-items: center;
5183
+ justify-content: center;
5184
+ z-index: 4;
4692
5185
  }
4693
- .MediaViewer_audioWrapper {
4694
- padding: 12px 16px;
4695
- overflow: visible;
5186
+ .VideoPlayer_controlsBar {
5187
+ position: absolute;
5188
+ bottom: 0;
5189
+ left: 0;
5190
+ right: 0;
5191
+ padding: 6px 12px 10px;
5192
+ background:
5193
+ linear-gradient(
5194
+ 0deg,
5195
+ rgba(0, 0, 0, 0.78) 0%,
5196
+ rgba(0, 0, 0, 0.25) 65%,
5197
+ transparent 100%);
5198
+ display: flex;
5199
+ flex-direction: column;
5200
+ gap: 2px;
5201
+ opacity: 0;
5202
+ transform: translateY(6px);
5203
+ transition: opacity 0.2s ease, transform 0.2s ease;
5204
+ z-index: 5;
5205
+ pointer-events: none;
4696
5206
  }
4697
- .MediaViewer_audioFileName {
4698
- font-size: 0.8rem;
5207
+ .VideoPlayer_controlsBarVisible {
5208
+ opacity: 1;
5209
+ transform: translateY(0);
5210
+ pointer-events: auto;
5211
+ }
5212
+ .VideoPlayer_seekSearchRow {
5213
+ display: flex;
5214
+ align-items: center;
5215
+ gap: 8px;
5216
+ }
5217
+ .VideoPlayer_seekSearchRow > :first-child {
5218
+ flex: 1;
5219
+ }
5220
+ @media (max-width: 480px) {
5221
+ .VideoPlayer_videoPlayer,
5222
+ .VideoPlayer_videoPlayerEl {
5223
+ max-height: 280px;
5224
+ }
5225
+ }
5226
+ @media (max-width: 400px) {
5227
+ .VideoPlayer_seekSearchRow > :last-child {
5228
+ display: none;
5229
+ }
5230
+ }
5231
+
5232
+ /* dist/screens/components/Avatar/index.module.css */
5233
+ .Avatar_avatar {
5234
+ position: relative;
5235
+ display: inline-flex;
5236
+ align-items: center;
5237
+ justify-content: center;
5238
+ flex-shrink: 0;
5239
+ box-sizing: border-box;
5240
+ overflow: hidden;
5241
+ user-select: none;
5242
+ font-family: var(--font-sans, system-ui, -apple-system, sans-serif);
4699
5243
  font-weight: 600;
4700
- color: var(--media-viewer-text, #334155);
4701
- margin-bottom: 8px;
5244
+ line-height: 1;
5245
+ color: var(--avatar-text, #ffffff);
5246
+ background-color: var(--avatar-bg, #64748b);
5247
+ border-radius: 50%;
5248
+ transition: transform 0.2s ease, box-shadow 0.2s ease;
4702
5249
  }
4703
- .MediaViewer_audio {
5250
+ .Avatar_shapeCircle {
5251
+ border-radius: 50%;
5252
+ }
5253
+ .Avatar_shapeRounded {
5254
+ border-radius: 8px;
5255
+ }
5256
+ .Avatar_shapeSquare {
5257
+ border-radius: 0;
5258
+ }
5259
+ .Avatar_avatarImg {
5260
+ width: 100%;
5261
+ height: 100%;
5262
+ object-fit: cover;
5263
+ display: block;
5264
+ }
5265
+ .Avatar_avatarFallback {
5266
+ display: flex;
5267
+ align-items: center;
5268
+ justify-content: center;
5269
+ width: 100%;
5270
+ height: 100%;
5271
+ text-transform: uppercase;
5272
+ }
5273
+
5274
+ /* dist/screens/components/MediaViewer/components/AudioPlayer/components/AudioPlayerSkeleton/index.module.css */
5275
+ .AudioPlayerSkeleton_skeletonRow {
5276
+ display: flex;
5277
+ align-items: center;
5278
+ gap: 12px;
4704
5279
  width: 100%;
4705
5280
  }
4706
- .MediaViewer_pdfWrapper {
5281
+ .AudioPlayerSkeleton_skeletonBody {
5282
+ flex: 1;
5283
+ min-width: 0;
4707
5284
  display: flex;
4708
5285
  flex-direction: column;
5286
+ gap: 8px;
4709
5287
  }
4710
- .MediaViewer_pdfFrame {
4711
- width: 100%;
4712
- height: 480px;
4713
- border: none;
4714
- }
4715
- .MediaViewer_fileFooter {
5288
+ .AudioPlayerSkeleton_skeletonControlsRow {
4716
5289
  display: flex;
4717
5290
  align-items: center;
4718
- justify-content: space-between;
4719
- gap: 12px;
4720
- padding: 8px 12px;
4721
- border-top: 1px solid var(--media-viewer-border, #e2e8f0);
5291
+ gap: 8px;
4722
5292
  }
4723
- .MediaViewer_fileCard {
5293
+
5294
+ /* dist/screens/components/MediaViewer/components/AudioPlayer/index.module.css */
5295
+ .AudioPlayer_audioPlayer {
4724
5296
  display: flex;
4725
5297
  align-items: center;
4726
5298
  gap: 12px;
4727
- padding: 12px 14px;
5299
+ width: 100%;
4728
5300
  }
4729
- .MediaViewer_fileIcon {
5301
+ .AudioPlayer_audioEl {
5302
+ display: none;
5303
+ }
5304
+ .AudioPlayer_iconBadge {
4730
5305
  flex-shrink: 0;
4731
- display: inline-flex;
4732
- align-items: center;
4733
- justify-content: center;
4734
5306
  width: 40px;
4735
5307
  height: 40px;
4736
- border-radius: 8px;
4737
- color: #ffffff;
5308
+ border-radius: 10px;
5309
+ display: flex;
5310
+ align-items: center;
5311
+ justify-content: center;
4738
5312
  }
4739
- .MediaViewer_fileInfo {
5313
+ .AudioPlayer_body {
4740
5314
  flex: 1;
4741
5315
  min-width: 0;
4742
5316
  display: flex;
4743
5317
  flex-direction: column;
4744
- gap: 2px;
5318
+ gap: 4px;
4745
5319
  }
4746
- .MediaViewer_fileName {
4747
- font-size: 0.85rem;
5320
+ .AudioPlayer_fileName {
5321
+ font-size: 0.8rem;
4748
5322
  font-weight: 600;
4749
- color: var(--media-viewer-text, #334155);
4750
5323
  overflow: hidden;
4751
5324
  text-overflow: ellipsis;
4752
5325
  white-space: nowrap;
4753
5326
  }
4754
- .MediaViewer_fileMeta {
4755
- font-size: 0.72rem;
4756
- color: var(--media-viewer-text, #334155);
4757
- opacity: 0.65;
4758
- }
4759
- .MediaViewer_fileAction {
4760
- flex-shrink: 0;
4761
- font-size: 0.78rem;
4762
- font-weight: 600;
4763
- color: var(--media-viewer-accent, #2563eb);
4764
- text-decoration: none;
4765
- }
4766
- .MediaViewer_fileAction:hover {
4767
- text-decoration: underline;
5327
+ .AudioPlayer_controlsRow {
5328
+ display: flex;
5329
+ align-items: center;
5330
+ gap: 4px;
4768
5331
  }
4769
- .MediaViewer_downloadButton {
4770
- flex-shrink: 0;
4771
- display: inline-flex;
5332
+ .AudioPlayer_volumeGroup {
5333
+ display: flex;
4772
5334
  align-items: center;
4773
- justify-content: center;
4774
- width: 36px;
4775
- height: 36px;
4776
- border-radius: 8px;
4777
- color: var(--media-viewer-accent, #2563eb);
4778
- text-decoration: none;
4779
- transition: background-color 0.15s ease;
5335
+ gap: 4px;
4780
5336
  }
4781
- .MediaViewer_downloadButton:hover {
4782
- background-color: rgba(0, 0, 0, 0.06);
5337
+ .AudioPlayer_volumeSliderWrap {
5338
+ width: 72px;
4783
5339
  }
4784
- .MediaViewer_actionButton {
4785
- box-sizing: border-box;
5340
+ .AudioPlayer_speedWrap {
5341
+ margin-left: auto;
5342
+ }
5343
+ .AudioPlayer_errorRow {
4786
5344
  display: flex;
4787
5345
  align-items: center;
4788
- justify-content: center;
4789
5346
  gap: 8px;
4790
- width: 100%;
4791
- margin-top: 10px;
4792
- padding: 10px 16px;
4793
- border: 1px solid var(--media-viewer-border, #e2e8f0);
4794
- border-radius: 10px;
4795
- background-color: var(--media-viewer-bg, #f8fafc);
4796
- color: var(--media-viewer-accent, #2563eb);
4797
- font-size: 0.85rem;
4798
- font-weight: 600;
4799
- cursor: pointer;
4800
- transition: background-color 0.15s ease, border-color 0.15s ease;
4801
5347
  }
4802
- .MediaViewer_actionButton:hover {
4803
- background-color: rgba(0, 0, 0, 0.04);
4804
- border-color: var(--media-viewer-accent, #2563eb);
5348
+ .AudioPlayer_errorIcon {
5349
+ flex-shrink: 0;
5350
+ color: #ef4444;
5351
+ }
5352
+ .AudioPlayer_errorMsg {
5353
+ flex: 1;
5354
+ font-size: 0.78rem;
4805
5355
  }
4806
5356
  @media (max-width: 480px) {
4807
- .MediaViewer_imageWrapper,
4808
- .MediaViewer_videoWrapper {
4809
- max-height: 280px;
4810
- }
4811
- .MediaViewer_image,
4812
- .MediaViewer_video {
4813
- max-height: 280px;
4814
- }
4815
- .MediaViewer_pdfFrame {
4816
- height: 320px;
4817
- }
4818
- .MediaViewer_fileCard {
4819
- padding: 10px;
4820
- gap: 10px;
5357
+ .AudioPlayer_volumeSliderWrap {
5358
+ width: 48px;
4821
5359
  }
4822
- .MediaViewer_fileIcon {
4823
- width: 34px;
4824
- height: 34px;
5360
+ }
5361
+ @media (max-width: 380px) {
5362
+ .AudioPlayer_volumeGroup {
5363
+ display: none;
4825
5364
  }
4826
5365
  }
4827
5366
 
4828
- /* dist/screens/components/MediaViewer/components/VideoPlayer/components/VideoSeekBar/index.module.css */
4829
- .VideoSeekBar_seekRow {
5367
+ /* dist/screens/components/MediaViewer/components/AudioRecorder/index.module.css */
5368
+ .AudioRecorder_recorder {
5369
+ display: flex;
5370
+ flex-direction: column;
5371
+ gap: 10px;
5372
+ width: 100%;
5373
+ min-width: 0;
5374
+ max-width: 100%;
5375
+ box-sizing: border-box;
5376
+ padding: 12px;
5377
+ border-radius: 12px;
5378
+ background: var(--audio-recorder-bg, #ffffff);
5379
+ border: 1px solid var(--audio-recorder-border, #e2e8f0);
5380
+ color: var(--audio-recorder-text, #334155);
5381
+ }
5382
+ .AudioRecorder_row {
4830
5383
  display: flex;
4831
5384
  align-items: center;
4832
- gap: 8px;
5385
+ flex-wrap: wrap;
5386
+ gap: 10px;
5387
+ min-width: 0;
4833
5388
  }
4834
- .VideoSeekBar_seekSlider {
4835
- position: relative;
4836
- flex: 1;
5389
+ .AudioRecorder_hint {
5390
+ font-size: 0.85rem;
5391
+ font-weight: 500;
4837
5392
  }
4838
- .VideoSeekBar_hoverPreview {
4839
- position: absolute;
4840
- bottom: 100%;
4841
- transform: translateX(-50%);
4842
- margin-bottom: 6px;
4843
- padding: 2px 6px;
4844
- border-radius: 4px;
4845
- background: rgba(13, 15, 20, 0.92);
4846
- color: #f1f3f6;
4847
- font-size: 0.68rem;
5393
+ .AudioRecorder_timer {
5394
+ font-size: 0.9rem;
4848
5395
  font-weight: 600;
4849
- white-space: nowrap;
4850
- pointer-events: none;
4851
- z-index: 1;
5396
+ font-variant-numeric: tabular-nums;
4852
5397
  }
4853
- .VideoSeekBar_timeLabel {
5398
+ .AudioRecorder_recDot {
4854
5399
  flex-shrink: 0;
4855
- color: #e6e8ec;
4856
- font-size: 0.68rem;
4857
- font-weight: 600;
4858
- min-width: 34px;
4859
- text-align: center;
5400
+ width: 10px;
5401
+ height: 10px;
5402
+ border-radius: 50%;
5403
+ animation: AudioRecorder_recPulse 1.2s ease-in-out infinite;
4860
5404
  }
4861
-
4862
- /* dist/screens/components/MediaViewer/components/VideoPlayer/components/VideoSpeedControl/index.module.css */
4863
- .VideoSpeedControl_speedControl {
4864
- position: relative;
5405
+ @keyframes AudioRecorder_recPulse {
5406
+ 0%, 100% {
5407
+ opacity: 1;
5408
+ }
5409
+ 50% {
5410
+ opacity: 0.3;
5411
+ }
4865
5412
  }
4866
- .VideoSpeedControl_speedMenu {
4867
- position: absolute;
4868
- bottom: calc(100% + 8px);
4869
- right: 0;
5413
+ .AudioRecorder_actions {
4870
5414
  display: flex;
4871
- flex-direction: column;
4872
- min-width: 64px;
4873
- padding: 4px;
5415
+ align-items: center;
5416
+ flex-wrap: wrap;
5417
+ gap: 6px;
5418
+ margin-left: auto;
5419
+ }
5420
+ .AudioRecorder_transcript {
5421
+ padding: 8px 10px;
4874
5422
  border-radius: 8px;
4875
- border: 1px solid;
4876
- box-shadow: 0 8px 20px rgba(0, 0, 0, 0.25);
4877
- z-index: 6;
5423
+ background: var(--audio-recorder-transcript-bg, #f1f5f9);
5424
+ font-size: 0.85rem;
5425
+ line-height: 1.4;
5426
+ white-space: pre-wrap;
5427
+ overflow-wrap: anywhere;
5428
+ }
5429
+ .AudioRecorder_errorRow {
5430
+ display: flex;
5431
+ align-items: center;
5432
+ gap: 8px;
5433
+ }
5434
+ .AudioRecorder_errorIcon {
5435
+ flex-shrink: 0;
5436
+ color: var(--audio-recorder-error, #ef4444);
5437
+ }
5438
+ .AudioRecorder_errorMsg {
5439
+ flex: 1;
5440
+ font-size: 0.78rem;
5441
+ }
5442
+ @media (max-width: 360px) {
5443
+ .AudioRecorder_recorder {
5444
+ padding: 10px;
5445
+ }
5446
+ .AudioRecorder_actions {
5447
+ width: 100%;
5448
+ margin-left: 0;
5449
+ justify-content: flex-end;
5450
+ }
5451
+ }
5452
+ @media (prefers-reduced-motion: reduce) {
5453
+ .AudioRecorder_recDot {
5454
+ animation: none;
5455
+ }
5456
+ }
5457
+
5458
+ /* dist/screens/components/MediaViewer/components/PdfViewer/components/PdfPageJumper/index.module.css */
5459
+ .PdfPageJumper_jumper {
5460
+ display: flex;
5461
+ align-items: center;
5462
+ gap: 6px;
4878
5463
  }
4879
- .VideoSpeedControl_speedMenuBottom {
4880
- bottom: auto;
4881
- top: calc(100% + 8px);
5464
+ .PdfPageJumper_input {
5465
+ width: 52px;
4882
5466
  }
4883
- .VideoSpeedControl_speedOption {
4884
- border: none;
4885
- background: transparent;
4886
- font-size: 0.78rem;
4887
- font-weight: 600;
4888
- padding: 6px 10px;
4889
- border-radius: 6px;
4890
- cursor: pointer;
4891
- text-align: left;
5467
+ .PdfPageJumper_input .MuiInputBase-root {
5468
+ height: 30px;
4892
5469
  }
4893
- .VideoSpeedControl_speedOption:hover {
4894
- background: rgba(128, 128, 128, 0.15);
5470
+ .PdfPageJumper_input .MuiOutlinedInput-notchedOutline {
5471
+ border-color: transparent;
5472
+ }
5473
+ .PdfPageJumper_pageCount {
5474
+ font-size: 0.74rem;
5475
+ font-weight: 600;
5476
+ user-select: none;
4895
5477
  }
4896
5478
 
4897
- /* dist/screens/components/MediaViewer/components/VideoPlayer/components/VideoControlsBar/index.module.css */
4898
- .VideoControlsBar_controlsRow {
5479
+ /* dist/screens/components/MediaViewer/components/PdfViewer/components/PdfControlsBar/index.module.css */
5480
+ .PdfControlsBar_controlsBar {
4899
5481
  display: flex;
4900
5482
  align-items: center;
4901
5483
  justify-content: space-between;
4902
- gap: 10px;
5484
+ gap: 8px;
5485
+ padding: 8px 10px;
5486
+ border-top: 1px solid var(--media-viewer-border, #e2e8f0);
5487
+ flex-wrap: wrap;
4903
5488
  }
4904
- .VideoControlsBar_controlsLeft,
4905
- .VideoControlsBar_controlsRight {
5489
+ .PdfControlsBar_navGroup,
5490
+ .PdfControlsBar_zoomGroup {
4906
5491
  display: flex;
4907
5492
  align-items: center;
4908
- gap: 4px;
5493
+ gap: 2px;
4909
5494
  }
4910
- .VideoControlsBar_volumeGroup {
4911
- display: flex;
5495
+ .PdfControlsBar_zoomLabel {
5496
+ font-size: 0.74rem;
5497
+ font-weight: 600;
5498
+ min-width: 48px;
5499
+ text-align: center;
5500
+ user-select: none;
5501
+ }
5502
+ .PdfControlsBar_downloadButton {
5503
+ flex-shrink: 0;
5504
+ display: inline-flex;
4912
5505
  align-items: center;
4913
- gap: 4px;
5506
+ justify-content: center;
5507
+ width: 32px;
5508
+ height: 32px;
5509
+ border-radius: 8px;
5510
+ text-decoration: none;
5511
+ transition: background-color 0.15s ease;
4914
5512
  }
4915
- .VideoControlsBar_volumeSliderWrap {
4916
- width: 70px;
5513
+ .PdfControlsBar_downloadButton:hover {
5514
+ background-color: rgba(0, 0, 0, 0.06);
4917
5515
  }
4918
5516
  @media (max-width: 480px) {
4919
- .VideoControlsBar_volumeSliderWrap {
4920
- width: 48px;
5517
+ .PdfControlsBar_zoomGroup {
5518
+ display: none;
5519
+ }
5520
+ .PdfControlsBar_controlsBar {
5521
+ justify-content: space-between;
4921
5522
  }
4922
5523
  }
4923
5524
 
4924
- /* dist/screens/components/MediaViewer/components/VideoPlayer/components/VideoErrorOverlay/index.module.css */
4925
- .VideoErrorOverlay_overlay {
5525
+ /* dist/screens/components/MediaViewer/components/PdfViewer/index.module.css */
5526
+ .PdfViewer_pdfViewer {
5527
+ display: flex;
5528
+ flex-direction: column;
5529
+ width: 100%;
5530
+ }
5531
+ .PdfViewer_canvasAreaOuter {
5532
+ position: relative;
5533
+ width: 100%;
5534
+ }
5535
+ .PdfViewer_canvasArea {
5536
+ display: flex;
5537
+ align-items: flex-start;
5538
+ justify-content: center;
5539
+ padding: 8px;
5540
+ box-sizing: border-box;
5541
+ }
5542
+ .PdfViewer_canvas {
5543
+ display: block;
5544
+ max-width: 100%;
5545
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15);
5546
+ }
5547
+ .PdfViewer_loadingOverlay {
4926
5548
  position: absolute;
4927
5549
  inset: 0;
4928
- background: rgba(13, 15, 20, 0.6);
4929
- backdrop-filter: blur(3px);
4930
5550
  display: flex;
4931
5551
  align-items: center;
4932
5552
  justify-content: center;
4933
- z-index: 4;
5553
+ z-index: 2;
4934
5554
  }
4935
- .VideoErrorOverlay_errorCard {
5555
+ @media (max-width: 480px) {
5556
+ .PdfViewer_canvasArea {
5557
+ padding: 6px;
5558
+ }
5559
+ }
5560
+
5561
+ /* dist/screens/components/MediaViewer/components/DocxViewer/components/DocxControlsBar/index.module.css */
5562
+ .DocxControlsBar_controlsBar {
4936
5563
  display: flex;
4937
- flex-direction: column;
4938
5564
  align-items: center;
5565
+ justify-content: space-between;
4939
5566
  gap: 8px;
4940
- text-align: center;
4941
- padding: 1.25rem;
4942
- }
4943
- .VideoErrorOverlay_errorIcon {
4944
- color: #ef4444;
4945
- }
4946
- .VideoErrorOverlay_errorMsg {
4947
- margin: 0;
4948
- color: #f1f3f6;
4949
- font-size: 0.85rem;
4950
- }
4951
-
4952
- /* dist/screens/components/MediaViewer/components/VideoPlayer/components/VideoCenterPlayButton/index.module.css */
4953
- .VideoCenterPlayButton_centerPlayButton {
4954
- position: absolute !important;
4955
- top: 50%;
4956
- left: 50%;
4957
- transform: translate(-50%, -50%);
4958
- z-index: 3;
4959
- transition: transform 0.15s ease, filter 0.15s ease;
4960
- }
4961
- .VideoCenterPlayButton_centerPlayButton:hover {
4962
- transform: translate(-50%, -50%) scale(1.06);
4963
- filter: brightness(1.2);
5567
+ padding: 8px 10px;
5568
+ border-top: 1px solid var(--media-viewer-border, #e2e8f0);
4964
5569
  }
4965
-
4966
- /* dist/screens/components/MediaViewer/components/VideoPlayer/components/VideoTimeSearch/index.module.css */
4967
- .VideoTimeSearch_searchForm {
5570
+ .DocxControlsBar_zoomGroup {
4968
5571
  display: flex;
4969
5572
  align-items: center;
4970
- gap: 6px;
4971
- padding: 0 8px;
4972
- height: 30px;
4973
- border-radius: 6px;
4974
- background: rgba(255, 255, 255, 0.08);
4975
- flex-shrink: 0;
5573
+ gap: 2px;
4976
5574
  }
4977
- .VideoTimeSearch_searchInput {
4978
- width: 52px;
4979
- border: none;
4980
- background: transparent;
4981
- outline: none;
4982
- font-size: 0.72rem;
5575
+ .DocxControlsBar_zoomLabel {
5576
+ font-size: 0.74rem;
4983
5577
  font-weight: 600;
5578
+ min-width: 48px;
5579
+ text-align: center;
5580
+ user-select: none;
4984
5581
  }
4985
- .VideoTimeSearch_searchInput::placeholder {
4986
- color: rgba(241, 243, 246, 0.45);
5582
+ .DocxControlsBar_downloadButton {
5583
+ flex-shrink: 0;
5584
+ display: inline-flex;
5585
+ align-items: center;
5586
+ justify-content: center;
5587
+ width: 32px;
5588
+ height: 32px;
5589
+ border-radius: 8px;
5590
+ text-decoration: none;
5591
+ transition: background-color 0.15s ease;
4987
5592
  }
4988
- .VideoTimeSearch_searchInputInvalid {
4989
- color: #ef4444 !important;
5593
+ .DocxControlsBar_downloadButton:hover {
5594
+ background-color: rgba(0, 0, 0, 0.06);
4990
5595
  }
4991
5596
 
4992
- /* dist/screens/components/MediaViewer/components/VideoPlayer/index.module.css */
4993
- .VideoPlayer_videoPlayer {
5597
+ /* dist/screens/components/MediaViewer/components/DocxViewer/index.module.css */
5598
+ .DocxViewer_docxViewer {
5599
+ display: flex;
5600
+ flex-direction: column;
5601
+ width: 100%;
5602
+ }
5603
+ .DocxViewer_docAreaOuter {
4994
5604
  position: relative;
4995
5605
  width: 100%;
4996
- aspect-ratio: 16 / 9;
4997
- max-height: 480px;
5606
+ }
5607
+ .DocxViewer_docArea {
4998
5608
  display: flex;
4999
- align-items: center;
5000
5609
  justify-content: center;
5001
- overflow: hidden;
5002
- user-select: none;
5610
+ padding: 16px 8px;
5611
+ box-sizing: border-box;
5003
5612
  }
5004
- .VideoPlayer_videoPlayerFullscreen {
5005
- max-height: none;
5006
- width: 100vw;
5007
- height: 100vh;
5008
- background-color: var(--media-viewer-video-bg, #0d0f14);
5613
+ .DocxViewer_docxContent {
5614
+ transform-origin: top center;
5615
+ transition: transform 0.15s ease;
5009
5616
  }
5010
- .VideoPlayer_videoPlayerEl {
5011
- display: block;
5012
- width: 100%;
5013
- max-width: 100%;
5014
- height: 100%;
5015
- object-fit: contain;
5016
- cursor: pointer;
5617
+ .DocxViewer_docxContent .docx-wrapper {
5618
+ background: transparent;
5619
+ padding: 0;
5017
5620
  }
5018
- .VideoPlayer_videoPlayerFullscreen .VideoPlayer_videoPlayerEl {
5019
- max-height: 100vh;
5020
- height: 100%;
5621
+ .DocxViewer_docxContent .docx-wrapper > section.docx {
5622
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15);
5623
+ margin-bottom: 16px;
5021
5624
  }
5022
- .VideoPlayer_bufferingOverlay {
5625
+ .DocxViewer_loadingOverlay {
5023
5626
  position: absolute;
5024
5627
  inset: 0;
5025
- background: rgba(13, 15, 20, 0.6);
5026
- backdrop-filter: blur(3px);
5027
5628
  display: flex;
5028
5629
  align-items: center;
5029
5630
  justify-content: center;
5030
- z-index: 4;
5631
+ z-index: 2;
5031
5632
  }
5032
- .VideoPlayer_controlsBar {
5033
- position: absolute;
5034
- bottom: 0;
5035
- left: 0;
5036
- right: 0;
5037
- padding: 6px 12px 10px;
5038
- background:
5039
- linear-gradient(
5040
- 0deg,
5041
- rgba(0, 0, 0, 0.78) 0%,
5042
- rgba(0, 0, 0, 0.25) 65%,
5043
- transparent 100%);
5633
+ @media (max-width: 480px) {
5634
+ .DocxViewer_docArea {
5635
+ padding: 10px 6px;
5636
+ }
5637
+ }
5638
+
5639
+ /* dist/screens/components/MediaViewer/components/MarkdownViewer/index.module.css */
5640
+ .MarkdownViewer_markdownViewer {
5044
5641
  display: flex;
5045
5642
  flex-direction: column;
5046
- gap: 2px;
5047
- opacity: 0;
5048
- transform: translateY(6px);
5049
- transition: opacity 0.2s ease, transform 0.2s ease;
5050
- z-index: 5;
5051
- pointer-events: none;
5643
+ width: 100%;
5644
+ }
5645
+ .MarkdownViewer_areaOuter {
5646
+ position: relative;
5647
+ width: 100%;
5052
5648
  }
5053
- .VideoPlayer_controlsBarVisible {
5054
- opacity: 1;
5055
- transform: translateY(0);
5056
- pointer-events: auto;
5649
+ .MarkdownViewer_area {
5650
+ box-sizing: border-box;
5651
+ min-width: 0;
5652
+ min-height: 160px;
5653
+ padding: 16px;
5654
+ overflow-wrap: anywhere;
5057
5655
  }
5058
- .VideoPlayer_seekSearchRow {
5656
+ .MarkdownViewer_loadingOverlay {
5657
+ position: absolute;
5658
+ inset: 0;
5059
5659
  display: flex;
5060
5660
  align-items: center;
5061
- gap: 8px;
5062
- }
5063
- .VideoPlayer_seekSearchRow > :first-child {
5064
- flex: 1;
5661
+ justify-content: center;
5662
+ z-index: 2;
5065
5663
  }
5066
5664
  @media (max-width: 480px) {
5067
- .VideoPlayer_videoPlayer,
5068
- .VideoPlayer_videoPlayerEl {
5069
- max-height: 280px;
5070
- }
5071
- }
5072
- @media (max-width: 400px) {
5073
- .VideoPlayer_seekSearchRow > :last-child {
5074
- display: none;
5665
+ .MarkdownViewer_area {
5666
+ padding: 12px;
5075
5667
  }
5076
5668
  }
5077
5669
 
5078
- /* dist/screens/components/Avatar/index.module.css */
5079
- .Avatar_avatar {
5080
- position: relative;
5081
- display: inline-flex;
5082
- align-items: center;
5083
- justify-content: center;
5084
- flex-shrink: 0;
5085
- box-sizing: border-box;
5086
- overflow: hidden;
5087
- user-select: none;
5088
- font-family: var(--font-sans, system-ui, -apple-system, sans-serif);
5089
- font-weight: 600;
5090
- line-height: 1;
5091
- color: var(--avatar-text, #ffffff);
5092
- background-color: var(--avatar-bg, #64748b);
5093
- border-radius: 50%;
5094
- transition: transform 0.2s ease, box-shadow 0.2s ease;
5670
+ /* dist/screens/components/MediaViewer/components/XlsxViewer/components/ScrollArrow/index.module.css */
5671
+ .ScrollArrow_arrow {
5672
+ width: 32px !important;
5673
+ height: 32px !important;
5674
+ min-width: 32px !important;
5675
+ padding: 0 !important;
5676
+ opacity: 1 !important;
5677
+ color: var(--xlsx-accent, #2563eb) !important;
5678
+ background: var(--xlsx-bg, #ffffff) !important;
5679
+ border: 1.5px solid color-mix(in srgb, var(--xlsx-accent, #2563eb) 45%, var(--xlsx-border, #e2e8f0)) !important;
5680
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.22);
5681
+ transition: background-color 0.15s ease;
5095
5682
  }
5096
- .Avatar_shapeCircle {
5097
- border-radius: 50%;
5683
+ .ScrollArrow_arrow:hover {
5684
+ background: color-mix(in srgb, var(--xlsx-accent, #2563eb) 14%, var(--xlsx-bg, #ffffff)) !important;
5098
5685
  }
5099
- .Avatar_shapeRounded {
5100
- border-radius: 8px;
5686
+ .ScrollArrow_floating {
5687
+ position: absolute !important;
5688
+ z-index: 6;
5101
5689
  }
5102
- .Avatar_shapeSquare {
5103
- border-radius: 0;
5690
+ .ScrollArrow_inline {
5691
+ flex-shrink: 0;
5104
5692
  }
5105
- .Avatar_avatarImg {
5106
- width: 100%;
5107
- height: 100%;
5108
- object-fit: cover;
5109
- display: block;
5693
+ .ScrollArrow_up {
5694
+ top: 40px;
5695
+ right: 18px;
5110
5696
  }
5111
- .Avatar_avatarFallback {
5112
- display: flex;
5113
- align-items: center;
5114
- justify-content: center;
5115
- width: 100%;
5116
- height: 100%;
5117
- text-transform: uppercase;
5697
+ .ScrollArrow_down {
5698
+ bottom: 18px;
5699
+ right: 18px;
5700
+ }
5701
+ .ScrollArrow_left {
5702
+ left: 64px;
5703
+ top: 50%;
5704
+ transform: translateY(-50%);
5705
+ }
5706
+ .ScrollArrow_right {
5707
+ right: 16px;
5708
+ top: 50%;
5709
+ transform: translateY(-50%);
5118
5710
  }
5119
5711
 
5120
- /* dist/screens/components/MediaViewer/components/AudioPlayer/components/AudioPlayerSkeleton/index.module.css */
5121
- .AudioPlayerSkeleton_skeletonRow {
5712
+ /* dist/screens/components/Resizable/index.module.css */
5713
+ .Resizable_root {
5714
+ position: relative;
5122
5715
  display: flex;
5123
- align-items: center;
5124
- gap: 12px;
5125
- width: 100%;
5716
+ min-width: 0;
5717
+ min-height: 0;
5718
+ flex-shrink: 0;
5126
5719
  }
5127
- .AudioPlayerSkeleton_skeletonBody {
5128
- flex: 1;
5720
+ .Resizable_content {
5721
+ flex: 1 1 auto;
5129
5722
  min-width: 0;
5130
- display: flex;
5131
- flex-direction: column;
5132
- gap: 8px;
5723
+ min-height: 0;
5724
+ overflow: auto;
5133
5725
  }
5134
- .AudioPlayerSkeleton_skeletonControlsRow {
5726
+ .Resizable_handle {
5727
+ position: relative;
5728
+ flex: none;
5135
5729
  display: flex;
5136
5730
  align-items: center;
5137
- gap: 8px;
5731
+ justify-content: center;
5732
+ background: var(--resizable-handle-bg, transparent);
5733
+ touch-action: none;
5734
+ user-select: none;
5735
+ outline: none;
5138
5736
  }
5139
-
5140
- /* dist/screens/components/MediaViewer/components/AudioPlayer/index.module.css */
5141
- .AudioPlayer_audioPlayer {
5142
- display: flex;
5143
- align-items: center;
5144
- gap: 12px;
5737
+ .Resizable_handleVertical {
5145
5738
  width: 100%;
5739
+ cursor: ns-resize;
5146
5740
  }
5147
- .AudioPlayer_audioEl {
5148
- display: none;
5741
+ .Resizable_handleHorizontal {
5742
+ height: 100%;
5743
+ cursor: ew-resize;
5149
5744
  }
5150
- .AudioPlayer_iconBadge {
5151
- flex-shrink: 0;
5152
- width: 40px;
5153
- height: 40px;
5154
- border-radius: 10px;
5155
- display: flex;
5156
- align-items: center;
5157
- justify-content: center;
5745
+ .Resizable_handle.Resizable_disabled {
5746
+ cursor: default;
5747
+ opacity: 0.5;
5158
5748
  }
5159
- .AudioPlayer_body {
5160
- flex: 1;
5161
- min-width: 0;
5162
- display: flex;
5163
- flex-direction: column;
5164
- gap: 4px;
5749
+ .Resizable_line {
5750
+ position: absolute;
5751
+ background: var(--resizable-line, rgba(148, 163, 184, 0.35));
5752
+ pointer-events: none;
5753
+ transition: background-color 0.15s ease;
5165
5754
  }
5166
- .AudioPlayer_fileName {
5167
- font-size: 0.8rem;
5168
- font-weight: 600;
5169
- overflow: hidden;
5170
- text-overflow: ellipsis;
5171
- white-space: nowrap;
5755
+ .Resizable_handleVertical .Resizable_line {
5756
+ left: 0;
5757
+ right: 0;
5758
+ top: 50%;
5759
+ transform: translateY(-50%);
5172
5760
  }
5173
- .AudioPlayer_controlsRow {
5174
- display: flex;
5175
- align-items: center;
5176
- gap: 4px;
5761
+ .Resizable_handleHorizontal .Resizable_line {
5762
+ top: 0;
5763
+ bottom: 0;
5764
+ left: 50%;
5765
+ transform: translateX(-50%);
5177
5766
  }
5178
- .AudioPlayer_volumeGroup {
5767
+ .Resizable_grip {
5768
+ position: relative;
5179
5769
  display: flex;
5180
5770
  align-items: center;
5181
- gap: 4px;
5771
+ justify-content: center;
5772
+ box-sizing: border-box;
5773
+ border: 1px solid var(--resizable-grip-border, rgba(148, 163, 184, 0.6));
5774
+ background: var(--resizable-grip-bg, transparent);
5775
+ color: var(--resizable-grip-icon, #94a3b8);
5776
+ transition: border-color 0.15s ease, color 0.15s ease;
5182
5777
  }
5183
- .AudioPlayer_volumeSliderWrap {
5184
- width: 72px;
5778
+ .Resizable_handle:hover .Resizable_line,
5779
+ .Resizable_handle.Resizable_dragging .Resizable_line {
5780
+ background: var(--resizable-line-active, #7c9cff);
5185
5781
  }
5186
- .AudioPlayer_speedWrap {
5187
- margin-left: auto;
5782
+ .Resizable_handle:hover .Resizable_grip,
5783
+ .Resizable_handle.Resizable_dragging .Resizable_grip {
5784
+ border-color: var(--resizable-line-active, #7c9cff);
5785
+ color: var(--resizable-line-active, #7c9cff);
5188
5786
  }
5189
- .AudioPlayer_errorRow {
5190
- display: flex;
5191
- align-items: center;
5192
- gap: 8px;
5787
+ .Resizable_handle:focus-visible .Resizable_grip {
5788
+ outline: 2px solid var(--resizable-line-active, #7c9cff);
5789
+ outline-offset: 2px;
5193
5790
  }
5194
- .AudioPlayer_errorIcon {
5195
- flex-shrink: 0;
5196
- color: #ef4444;
5791
+ .Resizable_handle.Resizable_disabled:hover .Resizable_line,
5792
+ .Resizable_handle.Resizable_disabled:hover .Resizable_grip {
5793
+ background: var(--resizable-line, rgba(148, 163, 184, 0.35));
5794
+ border-color: var(--resizable-grip-border, rgba(148, 163, 184, 0.6));
5795
+ color: var(--resizable-grip-icon, #94a3b8);
5197
5796
  }
5198
- .AudioPlayer_errorMsg {
5199
- flex: 1;
5200
- font-size: 0.78rem;
5797
+
5798
+ /* dist/screens/components/MediaViewer/components/XlsxViewer/components/XlsxGrid/index.module.css */
5799
+ .XlsxGrid_focusWrap {
5800
+ position: relative;
5801
+ outline: none;
5802
+ background: var(--xlsx-bg, #ffffff);
5803
+ color: var(--xlsx-text, #334155);
5804
+ font-size: 0.8rem;
5201
5805
  }
5202
- @media (max-width: 480px) {
5203
- .AudioPlayer_volumeSliderWrap {
5204
- width: 48px;
5205
- }
5806
+ .XlsxGrid_heightAnim {
5807
+ transition: height 0.3s cubic-bezier(0.22, 1, 0.36, 1);
5206
5808
  }
5207
- @media (max-width: 380px) {
5208
- .AudioPlayer_volumeGroup {
5209
- display: none;
5809
+ @media (prefers-reduced-motion: reduce) {
5810
+ .XlsxGrid_heightAnim {
5811
+ transition: none;
5210
5812
  }
5211
5813
  }
5212
-
5213
- /* dist/screens/components/MediaViewer/components/AudioRecorder/index.module.css */
5214
- .AudioRecorder_recorder {
5215
- display: flex;
5216
- flex-direction: column;
5217
- gap: 10px;
5218
- width: 100%;
5219
- min-width: 0;
5220
- max-width: 100%;
5814
+ .XlsxGrid_focusWrap:focus-visible {
5815
+ box-shadow: inset 0 0 0 2px var(--xlsx-accent, #2563eb);
5816
+ }
5817
+ .XlsxGrid_table {
5818
+ border-collapse: separate;
5819
+ border-spacing: 0;
5820
+ table-layout: fixed;
5821
+ }
5822
+ .XlsxGrid_cell,
5823
+ .XlsxGrid_rowHeader,
5824
+ .XlsxGrid_colHeader,
5825
+ .XlsxGrid_corner {
5221
5826
  box-sizing: border-box;
5222
- padding: 12px;
5223
- border-radius: 12px;
5224
- background: var(--audio-recorder-bg, #ffffff);
5225
- border: 1px solid var(--audio-recorder-border, #e2e8f0);
5226
- color: var(--audio-recorder-text, #334155);
5827
+ padding: 0 8px;
5828
+ white-space: nowrap;
5829
+ overflow: hidden;
5830
+ text-overflow: ellipsis;
5831
+ border-right: 1px solid var(--xlsx-border, #e2e8f0);
5832
+ border-bottom: 1px solid var(--xlsx-border, #e2e8f0);
5227
5833
  }
5228
- .AudioRecorder_row {
5229
- display: flex;
5230
- align-items: center;
5231
- flex-wrap: wrap;
5232
- gap: 10px;
5233
- min-width: 0;
5834
+ .XlsxGrid_cell {
5835
+ cursor: cell;
5836
+ user-select: none;
5234
5837
  }
5235
- .AudioRecorder_hint {
5236
- font-size: 0.85rem;
5237
- font-weight: 500;
5838
+ .XlsxGrid_cellSelected {
5839
+ background: color-mix(in srgb, var(--xlsx-accent, #2563eb) 14%, transparent);
5238
5840
  }
5239
- .AudioRecorder_timer {
5240
- font-size: 0.9rem;
5841
+ .XlsxGrid_cellFocus {
5842
+ outline: 2px solid var(--xlsx-accent, #2563eb);
5843
+ outline-offset: -2px;
5844
+ }
5845
+ .XlsxGrid_colHeader,
5846
+ .XlsxGrid_rowHeader,
5847
+ .XlsxGrid_corner {
5848
+ background: var(--xlsx-header-bg, #f1f5f9);
5241
5849
  font-weight: 600;
5242
- font-variant-numeric: tabular-nums;
5850
+ font-size: 0.72rem;
5851
+ text-align: center;
5852
+ cursor: pointer;
5853
+ user-select: none;
5854
+ }
5855
+ .XlsxGrid_colHeader,
5856
+ .XlsxGrid_corner {
5857
+ position: sticky;
5858
+ top: 0;
5859
+ z-index: 2;
5243
5860
  }
5244
- .AudioRecorder_recDot {
5245
- flex-shrink: 0;
5246
- width: 10px;
5247
- height: 10px;
5248
- border-radius: 50%;
5249
- animation: AudioRecorder_recPulse 1.2s ease-in-out infinite;
5861
+ .XlsxGrid_rowHeader,
5862
+ .XlsxGrid_corner {
5863
+ position: sticky;
5864
+ left: 0;
5250
5865
  }
5251
- @keyframes AudioRecorder_recPulse {
5252
- 0%, 100% {
5253
- opacity: 1;
5254
- }
5255
- 50% {
5256
- opacity: 0.3;
5257
- }
5866
+ .XlsxGrid_rowHeader {
5867
+ z-index: 1;
5258
5868
  }
5259
- .AudioRecorder_actions {
5260
- display: flex;
5261
- align-items: center;
5262
- flex-wrap: wrap;
5263
- gap: 6px;
5264
- margin-left: auto;
5869
+ .XlsxGrid_corner {
5870
+ z-index: 3;
5265
5871
  }
5266
- .AudioRecorder_transcript {
5267
- padding: 8px 10px;
5268
- border-radius: 8px;
5269
- background: var(--audio-recorder-transcript-bg, #f1f5f9);
5270
- font-size: 0.85rem;
5271
- line-height: 1.4;
5272
- white-space: pre-wrap;
5273
- overflow-wrap: anywhere;
5872
+ .XlsxGrid_headerActive {
5873
+ background: color-mix(in srgb, var(--xlsx-accent, #2563eb) 22%, var(--xlsx-header-bg, #f1f5f9));
5874
+ color: var(--xlsx-accent, #2563eb);
5274
5875
  }
5275
- .AudioRecorder_errorRow {
5876
+ .XlsxGrid_spacer {
5877
+ padding: 0;
5878
+ border: 0;
5879
+ }
5880
+ .XlsxGrid_empty {
5276
5881
  display: flex;
5277
5882
  align-items: center;
5278
- gap: 8px;
5279
- }
5280
- .AudioRecorder_errorIcon {
5281
- flex-shrink: 0;
5282
- color: var(--audio-recorder-error, #ef4444);
5883
+ justify-content: center;
5884
+ min-height: 120px;
5885
+ font-size: 0.85rem;
5886
+ color: var(--xlsx-text, #334155);
5887
+ background: var(--xlsx-bg, #ffffff);
5283
5888
  }
5284
- .AudioRecorder_errorMsg {
5285
- flex: 1;
5286
- font-size: 0.78rem;
5889
+ .XlsxGrid_cellTL {
5890
+ border-top-left-radius: 6px;
5287
5891
  }
5288
- @media (max-width: 360px) {
5289
- .AudioRecorder_recorder {
5290
- padding: 10px;
5291
- }
5292
- .AudioRecorder_actions {
5293
- width: 100%;
5294
- margin-left: 0;
5295
- justify-content: flex-end;
5296
- }
5892
+ .XlsxGrid_cellTR {
5893
+ border-top-right-radius: 6px;
5297
5894
  }
5298
- @media (prefers-reduced-motion: reduce) {
5299
- .AudioRecorder_recDot {
5300
- animation: none;
5301
- }
5895
+ .XlsxGrid_cellBL {
5896
+ border-bottom-left-radius: 6px;
5302
5897
  }
5303
-
5304
- /* dist/screens/components/MediaViewer/components/PdfViewer/components/PdfPageJumper/index.module.css */
5305
- .PdfPageJumper_jumper {
5306
- display: flex;
5307
- align-items: center;
5308
- gap: 6px;
5898
+ .XlsxGrid_cellBR {
5899
+ border-bottom-right-radius: 6px;
5309
5900
  }
5310
- .PdfPageJumper_input {
5311
- width: 52px;
5901
+ .XlsxGrid_cellEditing {
5902
+ padding: 0;
5903
+ overflow: visible;
5904
+ background: var(--xlsx-bg, #ffffff);
5905
+ outline: 2px solid var(--xlsx-accent, #2563eb);
5906
+ outline-offset: -2px;
5907
+ user-select: text;
5312
5908
  }
5313
- .PdfPageJumper_input .MuiInputBase-root {
5314
- height: 30px;
5909
+ .XlsxGrid_editor {
5910
+ width: 100%;
5911
+ height: 100%;
5912
+ box-sizing: border-box;
5913
+ padding: 0 8px;
5914
+ font: inherit;
5915
+ color: var(--xlsx-text, #334155);
5916
+ background: transparent;
5917
+ border: 0;
5918
+ outline: none;
5315
5919
  }
5316
- .PdfPageJumper_input .MuiOutlinedInput-notchedOutline {
5317
- border-color: transparent;
5920
+ .XlsxGrid_resizableHeader {
5921
+ padding: 0;
5922
+ overflow: hidden;
5318
5923
  }
5319
- .PdfPageJumper_pageCount {
5320
- font-size: 0.74rem;
5321
- font-weight: 600;
5322
- user-select: none;
5924
+ .XlsxGrid_headerLabel {
5925
+ display: flex;
5926
+ align-items: center;
5927
+ justify-content: center;
5928
+ height: 100%;
5929
+ min-width: 0;
5323
5930
  }
5324
5931
 
5325
- /* dist/screens/components/MediaViewer/components/PdfViewer/components/PdfControlsBar/index.module.css */
5326
- .PdfControlsBar_controlsBar {
5932
+ /* dist/screens/components/MediaViewer/components/XlsxViewer/components/XlsxControlsBar/index.module.css */
5933
+ .XlsxControlsBar_controlsBar {
5327
5934
  display: flex;
5328
5935
  align-items: center;
5329
5936
  justify-content: space-between;
5937
+ flex-wrap: wrap;
5330
5938
  gap: 8px;
5331
- padding: 8px 10px;
5939
+ padding: 4px 10px;
5332
5940
  border-top: 1px solid var(--media-viewer-border, #e2e8f0);
5333
- flex-wrap: wrap;
5334
5941
  }
5335
- .PdfControlsBar_navGroup,
5336
- .PdfControlsBar_zoomGroup {
5942
+ .XlsxControlsBar_tabsScroll {
5943
+ flex: 1 1 140px;
5944
+ min-width: 0;
5945
+ width: auto;
5946
+ }
5947
+ .XlsxControlsBar_tabs {
5948
+ padding-bottom: 6px;
5949
+ }
5950
+ .XlsxControlsBar_tabsInner {
5337
5951
  display: flex;
5338
- align-items: center;
5339
5952
  gap: 2px;
5953
+ width: max-content;
5340
5954
  }
5341
- .PdfControlsBar_zoomLabel {
5342
- font-size: 0.74rem;
5955
+ .XlsxControlsBar_tab {
5956
+ flex-shrink: 0;
5957
+ max-width: 180px;
5958
+ padding: 8px 12px;
5959
+ font: inherit;
5960
+ font-size: 0.78rem;
5343
5961
  font-weight: 600;
5344
- min-width: 48px;
5345
- text-align: center;
5346
- user-select: none;
5962
+ background: transparent;
5963
+ border: 0;
5964
+ border-bottom: 2px solid transparent;
5965
+ white-space: nowrap;
5966
+ overflow: hidden;
5967
+ text-overflow: ellipsis;
5968
+ cursor: pointer;
5347
5969
  }
5348
- .PdfControlsBar_downloadButton {
5970
+ .XlsxControlsBar_tab:hover {
5971
+ background-color: rgba(0, 0, 0, 0.04);
5972
+ }
5973
+ .XlsxControlsBar_actions {
5974
+ display: flex;
5975
+ align-items: center;
5976
+ gap: 6px;
5977
+ margin-left: auto;
5978
+ flex-wrap: wrap;
5979
+ justify-content: flex-end;
5980
+ min-width: 0;
5981
+ }
5982
+ .XlsxControlsBar_summary {
5983
+ font-size: 0.74rem;
5984
+ opacity: 0.75;
5985
+ white-space: nowrap;
5986
+ }
5987
+ .XlsxControlsBar_downloadButton {
5349
5988
  flex-shrink: 0;
5350
5989
  display: inline-flex;
5351
5990
  align-items: center;
@@ -5356,161 +5995,284 @@ button.TopBar_searchWrapper {
5356
5995
  text-decoration: none;
5357
5996
  transition: background-color 0.15s ease;
5358
5997
  }
5359
- .PdfControlsBar_downloadButton:hover {
5998
+ .XlsxControlsBar_downloadButton:hover {
5360
5999
  background-color: rgba(0, 0, 0, 0.06);
5361
6000
  }
5362
- @media (max-width: 480px) {
5363
- .PdfControlsBar_zoomGroup {
5364
- display: none;
5365
- }
5366
- .PdfControlsBar_controlsBar {
5367
- justify-content: space-between;
5368
- }
6001
+ .XlsxControlsBar_tabInput {
6002
+ flex-shrink: 0;
6003
+ width: 120px;
6004
+ padding: 8px 12px;
6005
+ box-sizing: border-box;
6006
+ font: inherit;
6007
+ font-size: 0.78rem;
6008
+ font-weight: 600;
6009
+ background: transparent;
6010
+ border: 0;
6011
+ border-bottom: 2px solid;
6012
+ outline: none;
6013
+ }
6014
+ .XlsxControlsBar_tabInputInvalid {
6015
+ border-bottom-color: #dc2626 !important;
6016
+ color: #dc2626 !important;
5369
6017
  }
5370
6018
 
5371
- /* dist/screens/components/MediaViewer/components/PdfViewer/index.module.css */
5372
- .PdfViewer_pdfViewer {
6019
+ /* dist/screens/components/FloatingPanel/index.module.css */
6020
+ .FloatingPanel_panel {
6021
+ position: fixed;
5373
6022
  display: flex;
5374
6023
  flex-direction: column;
5375
- width: 100%;
5376
- }
5377
- .PdfViewer_canvasAreaOuter {
5378
- position: relative;
5379
- width: 100%;
5380
- }
5381
- .PdfViewer_canvasArea {
5382
- display: flex;
5383
- align-items: flex-start;
5384
- justify-content: center;
5385
- padding: 8px;
5386
6024
  box-sizing: border-box;
6025
+ max-width: 90vw;
6026
+ max-height: 90vh;
6027
+ overflow: hidden;
6028
+ color: var(--fp-text, #334155);
6029
+ background: var(--fp-bg, #ffffff);
6030
+ border: 1px solid var(--fp-border, #e2e8f0);
6031
+ border-radius: 12px;
6032
+ box-shadow: 0 12px 28px rgba(0, 0, 0, 0.18);
6033
+ font-size: 0.82rem;
5387
6034
  }
5388
- .PdfViewer_canvas {
5389
- display: block;
5390
- max-width: 100%;
5391
- box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15);
6035
+ .FloatingPanel_resizable {
6036
+ resize: both;
5392
6037
  }
5393
- .PdfViewer_loadingOverlay {
5394
- position: absolute;
5395
- inset: 0;
6038
+ .FloatingPanel_header {
6039
+ position: sticky;
6040
+ top: 0;
6041
+ z-index: 1;
5396
6042
  display: flex;
5397
6043
  align-items: center;
5398
- justify-content: center;
5399
- z-index: 2;
6044
+ gap: 4px;
6045
+ padding: 4px 6px 4px 12px;
6046
+ min-width: 0;
6047
+ background: var(--fp-header-bg, #f1f5f9);
6048
+ border-bottom: 1px solid var(--fp-border, #e2e8f0);
6049
+ user-select: none;
5400
6050
  }
5401
- @media (max-width: 480px) {
5402
- .PdfViewer_canvasArea {
5403
- padding: 6px;
5404
- }
6051
+ .FloatingPanel_draggable {
6052
+ cursor: grab;
6053
+ touch-action: none;
6054
+ }
6055
+ .FloatingPanel_draggable:active {
6056
+ cursor: grabbing;
6057
+ }
6058
+ .FloatingPanel_title {
6059
+ font-weight: 700;
6060
+ white-space: nowrap;
6061
+ }
6062
+ .FloatingPanel_subtitle {
6063
+ flex: 1;
6064
+ min-width: 0;
6065
+ overflow: hidden;
6066
+ text-overflow: ellipsis;
6067
+ white-space: nowrap;
6068
+ font-size: 0.74rem;
6069
+ opacity: 0.7;
6070
+ }
6071
+ .FloatingPanel_header > .FloatingPanel_title + button,
6072
+ .FloatingPanel_header > .FloatingPanel_title + button ~ button {
6073
+ flex-shrink: 0;
6074
+ }
6075
+ .FloatingPanel_body {
6076
+ flex: 1;
6077
+ min-height: 0;
6078
+ overflow: auto;
6079
+ padding: 6px 12px;
5405
6080
  }
5406
6081
 
5407
- /* dist/screens/components/MediaViewer/components/DocxViewer/components/DocxControlsBar/index.module.css */
5408
- .DocxControlsBar_controlsBar {
6082
+ /* dist/screens/components/MediaViewer/components/XlsxViewer/components/XlsxStatsPanel/index.module.css */
6083
+ .XlsxStatsPanel_list {
6084
+ margin: 0;
6085
+ padding: 0;
6086
+ list-style: none;
6087
+ }
6088
+ .XlsxStatsPanel_row {
5409
6089
  display: flex;
5410
6090
  align-items: center;
5411
- justify-content: space-between;
5412
- gap: 8px;
5413
- padding: 8px 10px;
5414
- border-top: 1px solid var(--media-viewer-border, #e2e8f0);
6091
+ gap: 6px;
6092
+ padding: 3px 0;
6093
+ border-bottom: 1px dashed var(--fp-border, #e2e8f0);
5415
6094
  }
5416
- .DocxControlsBar_zoomGroup {
6095
+ .XlsxStatsPanel_row:last-child {
6096
+ border-bottom: 0;
6097
+ }
6098
+ .XlsxStatsPanel_metric {
6099
+ flex: 1;
6100
+ min-width: 0;
6101
+ opacity: 0.8;
6102
+ }
6103
+ .XlsxStatsPanel_value {
6104
+ display: inline-flex;
6105
+ align-items: center;
6106
+ gap: 6px;
6107
+ padding: 2px 6px;
6108
+ font: inherit;
6109
+ font-weight: 700;
6110
+ font-variant-numeric: tabular-nums;
6111
+ color: inherit;
6112
+ background: transparent;
6113
+ border: 0;
6114
+ border-radius: 6px;
6115
+ cursor: copy;
6116
+ }
6117
+ .XlsxStatsPanel_value:hover {
6118
+ background: color-mix(in srgb, var(--fp-accent, #2563eb) 12%, transparent);
6119
+ color: var(--fp-accent, #2563eb);
6120
+ }
6121
+ .XlsxStatsPanel_copyIcon {
6122
+ opacity: 0.35;
6123
+ }
6124
+ .XlsxStatsPanel_empty {
6125
+ margin: 8px 0;
6126
+ opacity: 0.7;
6127
+ }
6128
+ .XlsxStatsPanel_footer {
6129
+ display: flex;
6130
+ flex-direction: column;
6131
+ gap: 4px;
6132
+ padding: 8px 12px 10px;
6133
+ border-top: 1px solid var(--fp-border, #e2e8f0);
6134
+ }
6135
+ .XlsxStatsPanel_notice {
6136
+ font-size: 0.74rem;
6137
+ color: var(--fp-accent, #2563eb);
6138
+ }
6139
+
6140
+ /* dist/screens/components/MediaViewer/components/XlsxViewer/components/XlsxValidationPanel/index.module.css */
6141
+ .XlsxValidationPanel_panel {
6142
+ box-sizing: border-box;
6143
+ width: 320px;
6144
+ max-width: calc(100vw - 16px);
6145
+ padding: 16px 0 14px;
6146
+ border: 1px solid var(--xv-border, #e2e8f0);
6147
+ border-radius: 12px;
6148
+ }
6149
+ .XlsxValidationPanel_title {
6150
+ margin: 0 0 8px;
6151
+ padding: 0 20px;
6152
+ font-size: 1rem;
6153
+ font-weight: 700;
6154
+ }
6155
+ .XlsxValidationPanel_actions {
5417
6156
  display: flex;
5418
6157
  align-items: center;
5419
- gap: 2px;
6158
+ gap: 8px;
6159
+ padding: 10px 20px 0;
5420
6160
  }
5421
- .DocxControlsBar_zoomLabel {
5422
- font-size: 0.74rem;
5423
- font-weight: 600;
5424
- min-width: 48px;
5425
- text-align: center;
5426
- user-select: none;
6161
+ .XlsxValidationPanel_body {
6162
+ padding: 4px 20px 8px;
5427
6163
  }
5428
- .DocxControlsBar_downloadButton {
5429
- flex-shrink: 0;
5430
- display: inline-flex;
5431
- align-items: center;
5432
- justify-content: center;
5433
- width: 32px;
5434
- height: 32px;
5435
- border-radius: 8px;
5436
- text-decoration: none;
5437
- transition: background-color 0.15s ease;
6164
+ .XlsxValidationPanel_field {
6165
+ display: flex;
6166
+ flex-direction: column;
6167
+ gap: 6px;
6168
+ margin-bottom: 14px;
5438
6169
  }
5439
- .DocxControlsBar_downloadButton:hover {
5440
- background-color: rgba(0, 0, 0, 0.06);
6170
+ .XlsxValidationPanel_label {
6171
+ font-size: 0.75rem;
6172
+ font-weight: 600;
6173
+ opacity: 0.7;
5441
6174
  }
5442
6175
 
5443
- /* dist/screens/components/MediaViewer/components/DocxViewer/index.module.css */
5444
- .DocxViewer_docxViewer {
6176
+ /* dist/screens/components/MediaViewer/components/XlsxViewer/index.module.css */
6177
+ .XlsxViewer_xlsxViewer {
6178
+ border-radius: 10px;
6179
+ overflow: hidden;
5445
6180
  display: flex;
5446
6181
  flex-direction: column;
5447
6182
  width: 100%;
5448
6183
  }
5449
- .DocxViewer_docAreaOuter {
6184
+ .XlsxViewer_gridArea {
5450
6185
  position: relative;
5451
6186
  width: 100%;
5452
6187
  }
5453
- .DocxViewer_docArea {
6188
+ .XlsxViewer_loadingOverlay {
6189
+ position: absolute;
6190
+ inset: 0;
5454
6191
  display: flex;
6192
+ align-items: center;
5455
6193
  justify-content: center;
5456
- padding: 16px 8px;
5457
- box-sizing: border-box;
6194
+ z-index: 4;
5458
6195
  }
5459
- .DocxViewer_docxContent {
5460
- transform-origin: top center;
5461
- transition: transform 0.15s ease;
6196
+ .XlsxViewer_validationNotice {
6197
+ position: absolute;
6198
+ left: 50%;
6199
+ bottom: 12px;
6200
+ transform: translateX(-50%);
6201
+ z-index: 30;
6202
+ max-width: calc(100% - 24px);
6203
+ padding: 8px 14px;
6204
+ font-size: 0.8rem;
6205
+ font-weight: 600;
6206
+ color: #ffffff;
6207
+ background: var(--xlsx-error, #dc2626);
6208
+ border-radius: 8px;
6209
+ box-shadow: 0 6px 16px rgba(0, 0, 0, 0.18);
6210
+ pointer-events: none;
5462
6211
  }
5463
- .DocxViewer_docxContent .docx-wrapper {
5464
- background: transparent;
5465
- padding: 0;
6212
+
6213
+ /* dist/screens/components/FileDropZone/index.module.css */
6214
+ .FileDropZone_wrapper {
6215
+ position: relative;
5466
6216
  }
5467
- .DocxViewer_docxContent .docx-wrapper > section.docx {
5468
- box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15);
5469
- margin-bottom: 16px;
6217
+ .FileDropZone_input {
6218
+ display: none;
5470
6219
  }
5471
- .DocxViewer_loadingOverlay {
5472
- position: absolute;
5473
- inset: 0;
6220
+ .FileDropZone_zone {
5474
6221
  display: flex;
6222
+ flex-direction: column;
5475
6223
  align-items: center;
5476
6224
  justify-content: center;
5477
- z-index: 2;
6225
+ gap: 10px;
6226
+ min-height: 160px;
6227
+ padding: 24px 16px;
6228
+ box-sizing: border-box;
6229
+ text-align: center;
6230
+ border: 2px dashed var(--fdz-border, #cbd5e1);
6231
+ border-radius: 12px;
6232
+ background: var(--fdz-bg, #f8fafc);
6233
+ color: var(--fdz-text, #475569);
6234
+ cursor: pointer;
6235
+ outline: none;
6236
+ transition:
6237
+ border-color 0.15s ease,
6238
+ background-color 0.15s ease,
6239
+ color 0.15s ease;
5478
6240
  }
5479
- @media (max-width: 480px) {
5480
- .DocxViewer_docArea {
5481
- padding: 10px 6px;
5482
- }
6241
+ .FileDropZone_zone:hover,
6242
+ .FileDropZone_zone:focus-visible {
6243
+ border-color: var(--fdz-accent, #2563eb);
6244
+ color: var(--fdz-accent, #2563eb);
5483
6245
  }
5484
-
5485
- /* dist/screens/components/MediaViewer/components/MarkdownViewer/index.module.css */
5486
- .MarkdownViewer_markdownViewer {
5487
- display: flex;
5488
- flex-direction: column;
5489
- width: 100%;
6246
+ .FileDropZone_zoneActive {
6247
+ border-color: var(--fdz-accent, #2563eb);
6248
+ background: color-mix(in srgb, var(--fdz-accent, #2563eb) 10%, var(--fdz-bg, #f8fafc));
6249
+ color: var(--fdz-accent, #2563eb);
5490
6250
  }
5491
- .MarkdownViewer_areaOuter {
5492
- position: relative;
5493
- width: 100%;
6251
+ .FileDropZone_zoneDisabled {
6252
+ opacity: 0.55;
6253
+ cursor: not-allowed;
5494
6254
  }
5495
- .MarkdownViewer_area {
5496
- box-sizing: border-box;
5497
- min-width: 0;
5498
- min-height: 160px;
5499
- padding: 16px;
5500
- overflow-wrap: anywhere;
6255
+ .FileDropZone_label {
6256
+ font-size: 0.85rem;
6257
+ font-weight: 500;
6258
+ max-width: 320px;
5501
6259
  }
5502
- .MarkdownViewer_loadingOverlay {
6260
+ .FileDropZone_overlay {
5503
6261
  position: absolute;
5504
6262
  inset: 0;
6263
+ z-index: 10;
5505
6264
  display: flex;
6265
+ flex-direction: column;
5506
6266
  align-items: center;
5507
6267
  justify-content: center;
5508
- z-index: 2;
5509
- }
5510
- @media (max-width: 480px) {
5511
- .MarkdownViewer_area {
5512
- padding: 12px;
5513
- }
6268
+ gap: 8px;
6269
+ border: 2px dashed var(--fdz-accent, #2563eb);
6270
+ border-radius: 12px;
6271
+ background: color-mix(in srgb, var(--fdz-bg, #f8fafc) 88%, transparent);
6272
+ color: var(--fdz-accent, #2563eb);
6273
+ font-size: 0.85rem;
6274
+ font-weight: 600;
6275
+ pointer-events: none;
5514
6276
  }
5515
6277
 
5516
6278
  /* dist/screens/components/CountdownBar/index.module.css */
@@ -5690,7 +6452,8 @@ button.TopBar_searchWrapper {
5690
6452
  background: var(--letter-white, #ffffff);
5691
6453
  backdrop-filter: var(--blur, blur(10px));
5692
6454
  -webkit-backdrop-filter: var(--blur, blur(10px));
5693
- padding: 35px;
6455
+ --container-pad: 35px;
6456
+ padding: var(--container-pad);
5694
6457
  border-radius: 12px;
5695
6458
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05);
5696
6459
  border: 1px solid var(--container-border, rgba(0, 0, 0, 0.08));
@@ -5714,10 +6477,24 @@ button.TopBar_searchWrapper {
5714
6477
  position: relative;
5715
6478
  z-index: 1;
5716
6479
  }
6480
+ .Container_containerCard > .Container_header {
6481
+ box-sizing: border-box;
6482
+ margin: calc(var(--container-pad) * -1) calc(var(--container-pad) * -1) var(--container-pad);
6483
+ padding: 12px var(--container-pad);
6484
+ background: var(--container-header-bg, var(--letter-white, #ffffff));
6485
+ color: var(--container-header-text, inherit);
6486
+ border-bottom: 1px solid var(--container-header-border, rgba(0, 0, 0, 0.08));
6487
+ border-radius: 12px 12px 0 0;
6488
+ }
6489
+ .Container_containerCard > .Container_headerSticky {
6490
+ position: sticky;
6491
+ top: 0;
6492
+ z-index: 10;
6493
+ }
5717
6494
  @media (max-width: 768px) {
5718
6495
  .Container_containerCard {
5719
6496
  max-width: 100%;
5720
- padding: 1.5rem;
6497
+ --container-pad: 1.5rem;
5721
6498
  min-height: auto;
5722
6499
  }
5723
6500
  }
@@ -7126,51 +7903,231 @@ button.TopBar_searchWrapper {
7126
7903
  align-items: center;
7127
7904
  animation: Frame_modalFadeIn 0.3s ease-out;
7128
7905
  }
7129
- @keyframes Frame_modalFadeIn {
7906
+ @keyframes Frame_modalFadeIn {
7907
+ from {
7908
+ opacity: 0;
7909
+ }
7910
+ to {
7911
+ opacity: 1;
7912
+ }
7913
+ }
7914
+ .Frame_bodyContainer {
7915
+ position: relative;
7916
+ width: 100%;
7917
+ flex: 1;
7918
+ display: flex;
7919
+ flex-direction: column;
7920
+ }
7921
+ .Frame_loadingOverlay {
7922
+ position: absolute;
7923
+ top: 0;
7924
+ left: 0;
7925
+ right: 0;
7926
+ bottom: 0;
7927
+ display: flex;
7928
+ justify-content: center;
7929
+ align-items: center;
7930
+ background-color: #ffffff;
7931
+ z-index: 10;
7932
+ }
7933
+ .Frame_skeletonGroup {
7934
+ width: 100%;
7935
+ display: flex;
7936
+ flex-direction: column;
7937
+ gap: 0.6rem;
7938
+ }
7939
+ .Frame_hiddenContent {
7940
+ visibility: hidden;
7941
+ }
7942
+ .Frame_contentWrapper {
7943
+ display: flex;
7944
+ flex-direction: column;
7945
+ min-height: 0;
7946
+ width: 100%;
7947
+ }
7948
+ .Frame_scrollContent {
7949
+ display: flex;
7950
+ flex-direction: column;
7951
+ }
7952
+
7953
+ /* dist/screens/components/Text/index.module.css */
7954
+ .Text_text {
7955
+ margin: 0;
7956
+ font-family: var(--font-sans);
7957
+ color: var(--text-color, #0f172a);
7958
+ }
7959
+ .Text_h1 {
7960
+ font-size: 2rem;
7961
+ font-weight: 700;
7962
+ line-height: 1.25;
7963
+ }
7964
+ .Text_h2 {
7965
+ font-size: 1.5rem;
7966
+ font-weight: 700;
7967
+ line-height: 1.3;
7968
+ }
7969
+ .Text_h3 {
7970
+ font-size: 1.15rem;
7971
+ font-weight: 600;
7972
+ line-height: 1.35;
7973
+ }
7974
+ .Text_body {
7975
+ font-size: 1rem;
7976
+ font-weight: 400;
7977
+ line-height: 1.5;
7978
+ }
7979
+ .Text_caption {
7980
+ display: inline-block;
7981
+ font-size: 0.8rem;
7982
+ font-weight: 400;
7983
+ line-height: 1.4;
7984
+ color: var(--text-color, #64748b);
7985
+ }
7986
+ .Text_animateFadeIn {
7987
+ animation: Text_fadeIn var(--anim-duration, 800ms) cubic-bezier(0.16, 1, 0.3, 1) forwards;
7988
+ }
7989
+ @keyframes Text_fadeIn {
7990
+ from {
7991
+ opacity: 0;
7992
+ transform: translateY(4px);
7993
+ }
7994
+ to {
7995
+ opacity: 1;
7996
+ transform: translateY(0);
7997
+ }
7998
+ }
7999
+ .Text_animateFadeOut {
8000
+ animation: Text_fadeOut var(--anim-duration, 800ms) cubic-bezier(0.16, 1, 0.3, 1) forwards;
8001
+ }
8002
+ @keyframes Text_fadeOut {
8003
+ from {
8004
+ opacity: 1;
8005
+ transform: translateY(0);
8006
+ }
8007
+ to {
8008
+ opacity: 0;
8009
+ transform: translateY(-4px);
8010
+ }
8011
+ }
8012
+ .Text_animateTyping {
8013
+ border-right: 2px solid currentColor;
8014
+ white-space: nowrap;
8015
+ overflow: hidden;
8016
+ display: inline-block;
8017
+ animation: Text_blinkCursor 0.75s step-end infinite;
8018
+ }
8019
+ @keyframes Text_blinkCursor {
8020
+ from, to {
8021
+ border-color: transparent;
8022
+ }
8023
+ 50% {
8024
+ border-color: currentColor;
8025
+ }
8026
+ }
8027
+ .Text_animateRiseAndFade {
8028
+ display: inline-block;
8029
+ animation: Text_riseAndFade var(--rise-duration, 1000ms) cubic-bezier(0.16, 1, 0.3, 1) var(--rise-delay, 400ms) forwards;
8030
+ }
8031
+ @keyframes Text_riseAndFade {
8032
+ 0% {
8033
+ opacity: 1;
8034
+ transform: translateY(0);
8035
+ }
8036
+ 100% {
8037
+ opacity: 0;
8038
+ transform: translateY(-40px);
8039
+ }
8040
+ }
8041
+ .Text_letterFadeContainer {
8042
+ display: inline-block;
8043
+ }
8044
+ .Text_letterFadeIn {
8045
+ display: inline-block;
8046
+ opacity: 0;
8047
+ animation: Text_letterFadeInKeyframes ease-in-out forwards;
8048
+ }
8049
+ @keyframes Text_letterFadeInKeyframes {
7130
8050
  from {
7131
8051
  opacity: 0;
8052
+ transform: translateY(2px);
7132
8053
  }
7133
8054
  to {
7134
8055
  opacity: 1;
8056
+ transform: translateY(0);
7135
8057
  }
7136
8058
  }
7137
- .Frame_bodyContainer {
7138
- position: relative;
7139
- width: 100%;
7140
- flex: 1;
8059
+ .Text_letterFadeOut {
8060
+ display: inline-block;
8061
+ opacity: 1;
8062
+ animation: Text_letterFadeOutKeyframes ease-in-out forwards;
8063
+ }
8064
+ @keyframes Text_letterFadeOutKeyframes {
8065
+ from {
8066
+ opacity: 1;
8067
+ transform: translateY(0);
8068
+ }
8069
+ to {
8070
+ opacity: 0;
8071
+ transform: translateY(-2px);
8072
+ }
8073
+ }
8074
+ .Text_markdown {
8075
+ display: block;
8076
+ }
8077
+ .Text_markdownWithIcon {
7141
8078
  display: flex;
7142
- flex-direction: column;
8079
+ align-items: flex-start;
7143
8080
  }
7144
- .Frame_loadingOverlay {
7145
- position: absolute;
7146
- top: 0;
7147
- left: 0;
7148
- right: 0;
7149
- bottom: 0;
8081
+ .Text_markdownBody {
8082
+ min-width: 0;
8083
+ flex: 1;
8084
+ }
8085
+
8086
+ /* dist/screens/components/Footer/index.module.css */
8087
+ .Footer_footer {
8088
+ box-sizing: border-box;
7150
8089
  display: flex;
7151
- justify-content: center;
7152
8090
  align-items: center;
7153
- background-color: #ffffff;
8091
+ justify-content: space-between;
8092
+ gap: 16px;
8093
+ width: 100%;
8094
+ min-height: var(--footer-height, 64px);
8095
+ padding: var(--footer-padding, 0 24px);
8096
+ background: var(--footer-bg, #ffffff);
8097
+ color: var(--footer-text, #0f172a);
8098
+ border-top: 1px solid var(--footer-border, #e2e8f0);
8099
+ font-family: var(--font-sans, sans-serif);
8100
+ font-size: 0.9rem;
8101
+ }
8102
+ .Footer_sticky {
8103
+ position: sticky;
8104
+ bottom: 0;
7154
8105
  z-index: 10;
7155
8106
  }
7156
- .Frame_skeletonGroup {
7157
- width: 100%;
8107
+ .Footer_zone {
7158
8108
  display: flex;
7159
- flex-direction: column;
7160
- gap: 0.6rem;
8109
+ align-items: center;
8110
+ gap: 8px;
8111
+ min-width: 0;
7161
8112
  }
7162
- .Frame_hiddenContent {
7163
- visibility: hidden;
8113
+ .Footer_center {
8114
+ flex: 1;
8115
+ justify-content: center;
7164
8116
  }
7165
- .Frame_contentWrapper {
7166
- display: flex;
7167
- flex-direction: column;
7168
- min-height: 0;
7169
- width: 100%;
8117
+ .Footer_right {
8118
+ justify-content: flex-end;
8119
+ flex-wrap: wrap;
7170
8120
  }
7171
- .Frame_scrollContent {
7172
- display: flex;
7173
- flex-direction: column;
8121
+ @media (max-width: 480px) {
8122
+ .Footer_footer {
8123
+ flex-direction: column;
8124
+ align-items: stretch;
8125
+ padding: 12px 16px;
8126
+ min-height: auto;
8127
+ }
8128
+ .Footer_right {
8129
+ justify-content: center;
8130
+ }
7174
8131
  }
7175
8132
 
7176
8133
  /* dist/screens/components/HoursPicker/index.module.css */
@@ -7449,6 +8406,126 @@ button.TopBar_searchWrapper {
7449
8406
  color: var(--color-text-muted, #64748b);
7450
8407
  }
7451
8408
 
8409
+ /* dist/screens/components/Carousel/components/CarouselSlide/index.module.css */
8410
+ .CarouselSlide_slide {
8411
+ position: absolute;
8412
+ inset: 0;
8413
+ display: flex;
8414
+ flex-direction: column;
8415
+ justify-content: center;
8416
+ align-items: stretch;
8417
+ overflow: hidden;
8418
+ background: var(--carousel-slide-bg, transparent);
8419
+ color: var(--carousel-text, #e2e8f0);
8420
+ }
8421
+ .CarouselSlide_media {
8422
+ width: 100%;
8423
+ height: 100%;
8424
+ object-fit: cover;
8425
+ display: block;
8426
+ user-select: none;
8427
+ }
8428
+ .CarouselSlide_text {
8429
+ height: 100%;
8430
+ overflow: auto;
8431
+ box-sizing: border-box;
8432
+ padding: clamp(16px, 4vw, 32px);
8433
+ }
8434
+ .CarouselSlide_title {
8435
+ margin: 0 0 0.5rem;
8436
+ font-size: clamp(1rem, 2.5vw, 1.35rem);
8437
+ font-weight: 600;
8438
+ color: inherit;
8439
+ }
8440
+ .CarouselSlide_plain {
8441
+ margin: 0;
8442
+ font-size: clamp(0.9rem, 2vw, 1rem);
8443
+ line-height: 1.55;
8444
+ white-space: pre-wrap;
8445
+ }
8446
+ .CarouselSlide_caption {
8447
+ position: absolute;
8448
+ left: 0;
8449
+ right: 0;
8450
+ bottom: 0;
8451
+ padding: 24px 16px 14px;
8452
+ font-size: clamp(0.8rem, 2vw, 0.95rem);
8453
+ color: var(--carousel-caption-text, #ffffff);
8454
+ background:
8455
+ linear-gradient(
8456
+ to top,
8457
+ var(--carousel-caption-bg, rgba(0, 0, 0, 0.6)),
8458
+ transparent);
8459
+ pointer-events: none;
8460
+ }
8461
+
8462
+ /* dist/screens/components/Carousel/components/CarouselDots/index.module.css */
8463
+ .CarouselDots_dots {
8464
+ position: absolute;
8465
+ left: 50%;
8466
+ bottom: 10px;
8467
+ transform: translateX(-50%);
8468
+ display: flex;
8469
+ gap: 8px;
8470
+ z-index: 3;
8471
+ }
8472
+ .CarouselDots_dot {
8473
+ width: 8px;
8474
+ height: 8px;
8475
+ padding: 0;
8476
+ border: none;
8477
+ border-radius: 999px;
8478
+ background: var(--carousel-dot, rgba(255, 255, 255, 0.45));
8479
+ cursor: pointer;
8480
+ transition: width var(--carousel-duration, 450ms) ease, background-color 0.2s ease;
8481
+ }
8482
+ .CarouselDots_dot:focus-visible {
8483
+ outline: 2px solid var(--carousel-dot-active, #ffffff);
8484
+ outline-offset: 2px;
8485
+ }
8486
+ .CarouselDots_dotActive {
8487
+ width: 22px;
8488
+ background: var(--carousel-dot-active, #ffffff);
8489
+ }
8490
+
8491
+ /* dist/screens/components/Carousel/index.module.css */
8492
+ .Carousel_root {
8493
+ position: relative;
8494
+ width: 100%;
8495
+ max-width: 100%;
8496
+ border-radius: var(--carousel-radius, 12px);
8497
+ overflow: hidden;
8498
+ background: var(--carousel-slide-bg, #0f172a);
8499
+ color: var(--carousel-text, #e2e8f0);
8500
+ box-sizing: border-box;
8501
+ }
8502
+ .Carousel_root:focus-visible {
8503
+ outline: 2px solid var(--carousel-focus, var(--carousel-dot-active, #38bdf8));
8504
+ outline-offset: 2px;
8505
+ }
8506
+ .Carousel_viewport {
8507
+ position: relative;
8508
+ width: 100%;
8509
+ overflow: hidden;
8510
+ min-height: 120px;
8511
+ }
8512
+ .Carousel_slideWrap {
8513
+ position: absolute;
8514
+ inset: 0;
8515
+ will-change: transform, opacity;
8516
+ transition: transform var(--carousel-duration, 450ms) cubic-bezier(0.22, 0.61, 0.36, 1), opacity var(--carousel-duration, 450ms) ease;
8517
+ }
8518
+ @media (prefers-reduced-motion: reduce) {
8519
+ .Carousel_slideWrap {
8520
+ transition: none;
8521
+ }
8522
+ }
8523
+ @media (max-width: 480px) {
8524
+ .Carousel_viewport {
8525
+ min-height: 160px;
8526
+ }
8527
+ }
8528
+
7452
8529
  /* dist/screens/components/InfoTooltip/index.module.css */
7453
8530
  .InfoTooltip_container {
7454
8531
  position: relative;
@@ -7524,104 +8601,18 @@ button.TopBar_searchWrapper {
7524
8601
  color: #475569;
7525
8602
  text-align: left;
7526
8603
  }
7527
- .InfoTooltip_popoverBody p {
7528
- margin: 0;
7529
- }
7530
- @keyframes InfoTooltip_slideUpFade {
7531
- from {
7532
- opacity: 0;
7533
- transform: translateX(-50%) translateY(10px);
7534
- }
7535
- to {
7536
- opacity: 1;
7537
- transform: translateX(-50%) translateY(0);
7538
- }
7539
- }
7540
-
7541
- /* dist/screens/components/Resizable/index.module.css */
7542
- .Resizable_root {
7543
- position: relative;
7544
- display: flex;
7545
- min-width: 0;
7546
- min-height: 0;
7547
- flex-shrink: 0;
7548
- }
7549
- .Resizable_content {
7550
- flex: 1 1 auto;
7551
- min-width: 0;
7552
- min-height: 0;
7553
- overflow: auto;
7554
- }
7555
- .Resizable_handle {
7556
- position: relative;
7557
- flex: none;
7558
- display: flex;
7559
- align-items: center;
7560
- justify-content: center;
7561
- background: var(--resizable-handle-bg, transparent);
7562
- touch-action: none;
7563
- user-select: none;
7564
- outline: none;
7565
- }
7566
- .Resizable_handleVertical {
7567
- width: 100%;
7568
- cursor: ns-resize;
7569
- }
7570
- .Resizable_handleHorizontal {
7571
- height: 100%;
7572
- cursor: ew-resize;
7573
- }
7574
- .Resizable_handle.Resizable_disabled {
7575
- cursor: default;
7576
- opacity: 0.5;
7577
- }
7578
- .Resizable_line {
7579
- position: absolute;
7580
- background: var(--resizable-line, rgba(148, 163, 184, 0.35));
7581
- pointer-events: none;
7582
- transition: background-color 0.15s ease;
7583
- }
7584
- .Resizable_handleVertical .Resizable_line {
7585
- left: 0;
7586
- right: 0;
7587
- top: 50%;
7588
- transform: translateY(-50%);
7589
- }
7590
- .Resizable_handleHorizontal .Resizable_line {
7591
- top: 0;
7592
- bottom: 0;
7593
- left: 50%;
7594
- transform: translateX(-50%);
7595
- }
7596
- .Resizable_grip {
7597
- position: relative;
7598
- display: flex;
7599
- align-items: center;
7600
- justify-content: center;
7601
- box-sizing: border-box;
7602
- border: 1px solid var(--resizable-grip-border, rgba(148, 163, 184, 0.6));
7603
- background: var(--resizable-grip-bg, transparent);
7604
- color: var(--resizable-grip-icon, #94a3b8);
7605
- transition: border-color 0.15s ease, color 0.15s ease;
7606
- }
7607
- .Resizable_handle:hover .Resizable_line,
7608
- .Resizable_handle.Resizable_dragging .Resizable_line {
7609
- background: var(--resizable-line-active, #7c9cff);
7610
- }
7611
- .Resizable_handle:hover .Resizable_grip,
7612
- .Resizable_handle.Resizable_dragging .Resizable_grip {
7613
- border-color: var(--resizable-line-active, #7c9cff);
7614
- color: var(--resizable-line-active, #7c9cff);
7615
- }
7616
- .Resizable_handle:focus-visible .Resizable_grip {
7617
- outline: 2px solid var(--resizable-line-active, #7c9cff);
7618
- outline-offset: 2px;
7619
- }
7620
- .Resizable_handle.Resizable_disabled:hover .Resizable_line,
7621
- .Resizable_handle.Resizable_disabled:hover .Resizable_grip {
7622
- background: var(--resizable-line, rgba(148, 163, 184, 0.35));
7623
- border-color: var(--resizable-grip-border, rgba(148, 163, 184, 0.6));
7624
- color: var(--resizable-grip-icon, #94a3b8);
8604
+ .InfoTooltip_popoverBody p {
8605
+ margin: 0;
8606
+ }
8607
+ @keyframes InfoTooltip_slideUpFade {
8608
+ from {
8609
+ opacity: 0;
8610
+ transform: translateX(-50%) translateY(10px);
8611
+ }
8612
+ to {
8613
+ opacity: 1;
8614
+ transform: translateX(-50%) translateY(0);
8615
+ }
7625
8616
  }
7626
8617
 
7627
8618
  /* dist/screens/components/ChatComposer/components/ComposerToolbar/index.module.css */
@@ -8548,6 +9539,157 @@ button.TopBar_searchWrapper {
8548
9539
  }
8549
9540
  }
8550
9541
 
9542
+ /* dist/screens/components/QRCode/index.module.css */
9543
+ .QRCode_wrapper {
9544
+ display: inline-flex;
9545
+ flex-direction: column;
9546
+ align-items: center;
9547
+ gap: 10px;
9548
+ max-width: 100%;
9549
+ }
9550
+ .QRCode_frame {
9551
+ position: relative;
9552
+ line-height: 0;
9553
+ border: var(--qr-border-width, 1px) solid var(--qr-border, #d1d5db);
9554
+ border-radius: var(--qr-radius, 12px);
9555
+ padding: var(--qr-padding, 12px);
9556
+ background: var(--qr-frame-bg, #ffffff);
9557
+ overflow: hidden;
9558
+ max-width: 100%;
9559
+ }
9560
+ .QRCode_svg {
9561
+ display: block;
9562
+ max-width: 100%;
9563
+ height: auto;
9564
+ }
9565
+ .QRCode_error {
9566
+ font-size: 13px;
9567
+ color: var(--qr-error, #b91c1c);
9568
+ }
9569
+ .QRCode_actions {
9570
+ display: flex;
9571
+ gap: 8px;
9572
+ }
9573
+ .QRCode_svg {
9574
+ transition: filter var(--qr-anim-duration, 300ms) ease, opacity var(--qr-anim-duration, 300ms) ease;
9575
+ }
9576
+ .QRCode_blurred {
9577
+ filter: blur(var(--qr-blur, 8px));
9578
+ pointer-events: none;
9579
+ user-select: none;
9580
+ }
9581
+ .QRCode_hidden {
9582
+ opacity: 0;
9583
+ }
9584
+ .QRCode_loadingLayer {
9585
+ position: absolute !important;
9586
+ inset: 0;
9587
+ }
9588
+ .QRCode_overlay {
9589
+ position: absolute;
9590
+ inset: 0;
9591
+ display: flex;
9592
+ align-items: center;
9593
+ justify-content: center;
9594
+ text-align: center;
9595
+ padding: 8px;
9596
+ line-height: 1.3;
9597
+ font-size: 14px;
9598
+ color: var(--qr-overlay-text, #111827);
9599
+ }
9600
+ .QRCode_enter_scale {
9601
+ animation: QRCode_qrInScale var(--qr-anim-duration, 300ms) cubic-bezier(0.22, 1, 0.36, 1) both;
9602
+ }
9603
+ .QRCode_exit_scale {
9604
+ animation: QRCode_qrOutScale var(--qr-anim-duration, 300ms) ease-in both;
9605
+ }
9606
+ .QRCode_enter_fade {
9607
+ animation: QRCode_qrInFade var(--qr-anim-duration, 300ms) ease-out both;
9608
+ }
9609
+ .QRCode_exit_fade {
9610
+ animation: QRCode_qrOutFade var(--qr-anim-duration, 300ms) ease-in both;
9611
+ }
9612
+ .QRCode_enter_slide {
9613
+ animation: QRCode_qrInSlide var(--qr-anim-duration, 300ms) cubic-bezier(0.22, 1, 0.36, 1) both;
9614
+ }
9615
+ .QRCode_exit_slide {
9616
+ animation: QRCode_qrOutSlide var(--qr-anim-duration, 300ms) ease-in both;
9617
+ }
9618
+ @keyframes QRCode_qrInScale {
9619
+ from {
9620
+ opacity: 0;
9621
+ transform: scale(0.85);
9622
+ }
9623
+ to {
9624
+ opacity: 1;
9625
+ transform: scale(1);
9626
+ }
9627
+ }
9628
+ @keyframes QRCode_qrOutScale {
9629
+ from {
9630
+ opacity: 1;
9631
+ transform: scale(1);
9632
+ }
9633
+ to {
9634
+ opacity: 0;
9635
+ transform: scale(0.85);
9636
+ }
9637
+ }
9638
+ @keyframes QRCode_qrInFade {
9639
+ from {
9640
+ opacity: 0;
9641
+ }
9642
+ to {
9643
+ opacity: 1;
9644
+ }
9645
+ }
9646
+ @keyframes QRCode_qrOutFade {
9647
+ from {
9648
+ opacity: 1;
9649
+ }
9650
+ to {
9651
+ opacity: 0;
9652
+ }
9653
+ }
9654
+ @keyframes QRCode_qrInSlide {
9655
+ from {
9656
+ opacity: 0;
9657
+ transform: translateY(16px);
9658
+ }
9659
+ to {
9660
+ opacity: 1;
9661
+ transform: translateY(0);
9662
+ }
9663
+ }
9664
+ @keyframes QRCode_qrOutSlide {
9665
+ from {
9666
+ opacity: 1;
9667
+ transform: translateY(0);
9668
+ }
9669
+ to {
9670
+ opacity: 0;
9671
+ transform: translateY(16px);
9672
+ }
9673
+ }
9674
+ @media (prefers-reduced-motion: reduce) {
9675
+ .QRCode_wrapper,
9676
+ .QRCode_svg {
9677
+ animation: none !important;
9678
+ transition: none !important;
9679
+ }
9680
+ }
9681
+ .QRCode_logoNode {
9682
+ display: flex;
9683
+ align-items: center;
9684
+ justify-content: center;
9685
+ overflow: hidden;
9686
+ line-height: 1;
9687
+ }
9688
+ .QRCode_logoNode > svg {
9689
+ width: 100%;
9690
+ height: 100%;
9691
+ }
9692
+
8551
9693
  /* dist/screens/components/RenderJsonSchema/index.module.css */
8552
9694
  .RenderJsonSchema_root {
8553
9695
  display: flex;
@@ -8719,7 +9861,7 @@ button.TopBar_searchWrapper {
8719
9861
  width: 100%;
8720
9862
  overflow: hidden;
8721
9863
  background: var(--tableA-surface, white);
8722
- border-radius: 12px;
9864
+ border-radius: 6px;
8723
9865
  box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05);
8724
9866
  border: 1px solid var(--tableA-border, #e2e8f0);
8725
9867
  }
@@ -8895,7 +10037,7 @@ button.TopBar_searchWrapper {
8895
10037
  .tableB_tableContainer {
8896
10038
  width: 100%;
8897
10039
  overflow: hidden;
8898
- border-radius: 12px;
10040
+ border-radius: 6px;
8899
10041
  background-color: var(--tableB-surface, #ffffff);
8900
10042
  box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03);
8901
10043
  border: 1px solid var(--tableB-border, #e5e7eb);
@@ -9193,139 +10335,6 @@ button.TopBar_searchWrapper {
9193
10335
  min-width: 80px;
9194
10336
  }
9195
10337
 
9196
- /* dist/screens/components/Text/index.module.css */
9197
- .Text_text {
9198
- margin: 0;
9199
- font-family: var(--font-sans);
9200
- color: var(--text-color, #0f172a);
9201
- }
9202
- .Text_h1 {
9203
- font-size: 2rem;
9204
- font-weight: 700;
9205
- line-height: 1.25;
9206
- }
9207
- .Text_h2 {
9208
- font-size: 1.5rem;
9209
- font-weight: 700;
9210
- line-height: 1.3;
9211
- }
9212
- .Text_h3 {
9213
- font-size: 1.15rem;
9214
- font-weight: 600;
9215
- line-height: 1.35;
9216
- }
9217
- .Text_body {
9218
- font-size: 1rem;
9219
- font-weight: 400;
9220
- line-height: 1.5;
9221
- }
9222
- .Text_caption {
9223
- display: inline-block;
9224
- font-size: 0.8rem;
9225
- font-weight: 400;
9226
- line-height: 1.4;
9227
- color: var(--text-color, #64748b);
9228
- }
9229
- .Text_animateFadeIn {
9230
- animation: Text_fadeIn var(--anim-duration, 800ms) cubic-bezier(0.16, 1, 0.3, 1) forwards;
9231
- }
9232
- @keyframes Text_fadeIn {
9233
- from {
9234
- opacity: 0;
9235
- transform: translateY(4px);
9236
- }
9237
- to {
9238
- opacity: 1;
9239
- transform: translateY(0);
9240
- }
9241
- }
9242
- .Text_animateFadeOut {
9243
- animation: Text_fadeOut var(--anim-duration, 800ms) cubic-bezier(0.16, 1, 0.3, 1) forwards;
9244
- }
9245
- @keyframes Text_fadeOut {
9246
- from {
9247
- opacity: 1;
9248
- transform: translateY(0);
9249
- }
9250
- to {
9251
- opacity: 0;
9252
- transform: translateY(-4px);
9253
- }
9254
- }
9255
- .Text_animateTyping {
9256
- border-right: 2px solid currentColor;
9257
- white-space: nowrap;
9258
- overflow: hidden;
9259
- display: inline-block;
9260
- animation: Text_blinkCursor 0.75s step-end infinite;
9261
- }
9262
- @keyframes Text_blinkCursor {
9263
- from, to {
9264
- border-color: transparent;
9265
- }
9266
- 50% {
9267
- border-color: currentColor;
9268
- }
9269
- }
9270
- .Text_animateRiseAndFade {
9271
- display: inline-block;
9272
- animation: Text_riseAndFade var(--rise-duration, 1000ms) cubic-bezier(0.16, 1, 0.3, 1) var(--rise-delay, 400ms) forwards;
9273
- }
9274
- @keyframes Text_riseAndFade {
9275
- 0% {
9276
- opacity: 1;
9277
- transform: translateY(0);
9278
- }
9279
- 100% {
9280
- opacity: 0;
9281
- transform: translateY(-40px);
9282
- }
9283
- }
9284
- .Text_letterFadeContainer {
9285
- display: inline-block;
9286
- }
9287
- .Text_letterFadeIn {
9288
- display: inline-block;
9289
- opacity: 0;
9290
- animation: Text_letterFadeInKeyframes ease-in-out forwards;
9291
- }
9292
- @keyframes Text_letterFadeInKeyframes {
9293
- from {
9294
- opacity: 0;
9295
- transform: translateY(2px);
9296
- }
9297
- to {
9298
- opacity: 1;
9299
- transform: translateY(0);
9300
- }
9301
- }
9302
- .Text_letterFadeOut {
9303
- display: inline-block;
9304
- opacity: 1;
9305
- animation: Text_letterFadeOutKeyframes ease-in-out forwards;
9306
- }
9307
- @keyframes Text_letterFadeOutKeyframes {
9308
- from {
9309
- opacity: 1;
9310
- transform: translateY(0);
9311
- }
9312
- to {
9313
- opacity: 0;
9314
- transform: translateY(-2px);
9315
- }
9316
- }
9317
- .Text_markdown {
9318
- display: block;
9319
- }
9320
- .Text_markdownWithIcon {
9321
- display: flex;
9322
- align-items: flex-start;
9323
- }
9324
- .Text_markdownBody {
9325
- min-width: 0;
9326
- flex: 1;
9327
- }
9328
-
9329
10338
  /* dist/screens/components/UserEditPopover/index.module.css */
9330
10339
  .UserEditPopover_popoverPaper {
9331
10340
  padding: 16px;