@ermis-network/ermis-chat-react 1.0.6 → 1.0.8

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 (62) hide show
  1. package/dist/index.cjs +3802 -1772
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.css +836 -25
  4. package/dist/index.css.map +1 -1
  5. package/dist/index.d.mts +304 -1
  6. package/dist/index.d.ts +304 -1
  7. package/dist/index.mjs +3755 -1761
  8. package/dist/index.mjs.map +1 -1
  9. package/package.json +2 -2
  10. package/src/channelRoleUtils.ts +73 -0
  11. package/src/channelTypeUtils.ts +46 -0
  12. package/src/components/Avatar.tsx +57 -31
  13. package/src/components/BannedOverlay.tsx +40 -0
  14. package/src/components/ChannelActions.tsx +233 -0
  15. package/src/components/ChannelHeader.tsx +126 -5
  16. package/src/components/ChannelInfo/ChannelInfo.tsx +128 -24
  17. package/src/components/ChannelInfo/ChannelInfoTabs.tsx +67 -28
  18. package/src/components/ChannelInfo/ChannelSettingsPanel.tsx +90 -1
  19. package/src/components/ChannelInfo/EditChannelModal.tsx +5 -4
  20. package/src/components/ChannelInfo/MemberListItem.tsx +2 -1
  21. package/src/components/ChannelList.tsx +514 -47
  22. package/src/components/ClosedTopicOverlay.tsx +38 -0
  23. package/src/components/CreateChannelModal.tsx +53 -16
  24. package/src/components/EditPreview.tsx +2 -1
  25. package/src/components/ForwardMessageModal.tsx +2 -1
  26. package/src/components/MediaLightbox.tsx +314 -0
  27. package/src/components/MessageInput.tsx +21 -3
  28. package/src/components/MessageItem.tsx +10 -12
  29. package/src/components/MessageQuickReactions.tsx +3 -2
  30. package/src/components/MessageReactions.tsx +8 -3
  31. package/src/components/MessageRenderers.tsx +174 -54
  32. package/src/components/PendingOverlay.tsx +51 -0
  33. package/src/components/PinnedMessages.tsx +2 -1
  34. package/src/components/ReplyPreview.tsx +2 -1
  35. package/src/components/SkippedOverlay.tsx +36 -0
  36. package/src/components/TopicModal.tsx +189 -0
  37. package/src/components/UserPicker.tsx +1 -1
  38. package/src/components/VirtualMessageList.tsx +162 -47
  39. package/src/hooks/useBannedState.ts +27 -3
  40. package/src/hooks/useBlockedState.ts +3 -2
  41. package/src/hooks/useChannelCapabilities.ts +10 -8
  42. package/src/hooks/useChannelData.ts +1 -1
  43. package/src/hooks/useChannelListUpdates.ts +28 -5
  44. package/src/hooks/useChannelMessages.ts +2 -3
  45. package/src/hooks/useChannelRowUpdates.ts +9 -2
  46. package/src/hooks/useMessageActions.ts +23 -9
  47. package/src/hooks/useOnlineStatus.ts +71 -0
  48. package/src/hooks/useOnlineUsers.ts +115 -0
  49. package/src/hooks/usePendingState.ts +8 -3
  50. package/src/index.ts +67 -10
  51. package/src/messageTypeUtils.ts +64 -0
  52. package/src/styles/_channel-info.css +21 -0
  53. package/src/styles/_channel-list.css +276 -6
  54. package/src/styles/_media-lightbox.css +263 -0
  55. package/src/styles/_message-bubble.css +170 -13
  56. package/src/styles/_message-input.css +24 -0
  57. package/src/styles/_message-list.css +76 -6
  58. package/src/styles/_message-quick-reactions.css +5 -0
  59. package/src/styles/_message-reactions.css +7 -0
  60. package/src/styles/_topic-modal.css +154 -0
  61. package/src/styles/index.css +2 -0
  62. package/src/types.ts +203 -3
@@ -182,6 +182,10 @@
182
182
  color: rgba(255, 255, 255, 0.9);
183
183
  }
184
184
 
185
+ .ermis-message-bubble--own .ermis-attachment__link-title {
186
+ color: rgba(255, 255, 255, 0.9);
187
+ }
188
+
185
189
  /* --- Message Bubble --- */
186
190
  .ermis-message-bubble {
187
191
  position: relative;
@@ -190,7 +194,7 @@
190
194
  align-items: flex-end;
191
195
  padding: var(--ermis-spacing-sm) var(--ermis-spacing-md);
192
196
  border-radius: var(--ermis-radius-lg);
193
- width: 100%;
197
+ /* width: 100%; */
194
198
  word-break: break-word;
195
199
  }
196
200
 
@@ -200,6 +204,24 @@
200
204
  border-bottom-right-radius: var(--ermis-radius-sm);
201
205
  }
202
206
 
207
+ /* --- Override muted text inside own bubble (unreadable on accent bg in dark mode) --- */
208
+ .ermis-message-bubble--own .ermis-attachment__file-size,
209
+ .ermis-message-bubble--own .ermis-attachment__link-url,
210
+ .ermis-message-bubble--own .ermis-attachment__link-description,
211
+ .ermis-message-bubble--own .ermis-attachment__voice-duration,
212
+ .ermis-message-bubble--own .ermis-message-list__forwarded-indicator,
213
+ .ermis-message-bubble--own .ermis-attachment--file {
214
+ color: rgba(255, 255, 255, 0.6);
215
+ }
216
+
217
+ .ermis-message-bubble--own .ermis-attachment--link-preview {
218
+ border-color: rgba(255, 255, 255, 0.2);
219
+ }
220
+
221
+ .ermis-message-bubble--own .ermis-attachment--file {
222
+ background-color: rgba(255, 255, 255, 0.1);
223
+ }
224
+
203
225
  .ermis-message-bubble--other {
204
226
  background-color: var(--ermis-bubble-other-bg);
205
227
  color: var(--ermis-bubble-other-text);
@@ -323,6 +345,10 @@
323
345
  width: 350px;
324
346
  }
325
347
 
348
+ .ermis-message-list__item-content--has-attachments .ermis-message-bubble {
349
+ width: 100%;
350
+ }
351
+
326
352
  /* Container for messages with both text + attachments */
327
353
  .ermis-message-content--with-attachments {
328
354
  display: flex;
@@ -360,19 +386,30 @@
360
386
  }
361
387
 
362
388
  .ermis-attachment-grid .ermis-attachment--image,
363
- .ermis-attachment-grid .ermis-attachment--video {
389
+ .ermis-attachment-grid .ermis-attachment--video,
390
+ .ermis-attachment-grid .ermis-attachment--video-poster {
364
391
  width: 100%;
365
392
  height: 100%;
366
393
  max-width: none;
367
394
  max-height: 200px;
368
- object-fit: cover;
369
395
  border-radius: 0;
370
396
  display: block;
371
397
  }
372
398
 
399
+ .ermis-attachment-grid .ermis-attachment--image,
400
+ .ermis-attachment-grid .ermis-attachment--video-poster {
401
+ object-fit: cover;
402
+ }
403
+
404
+ .ermis-attachment-grid .ermis-attachment--video {
405
+ object-fit: contain;
406
+ background-color: var(--ermis-bg-hover);
407
+ }
408
+
373
409
  /* Single media: larger height allowed */
374
410
  .ermis-attachment-grid--single .ermis-attachment--image,
375
- .ermis-attachment-grid--single .ermis-attachment--video {
411
+ .ermis-attachment-grid--single .ermis-attachment--video,
412
+ .ermis-attachment-grid--single .ermis-attachment--video-poster {
376
413
  max-height: 300px;
377
414
  }
378
415
 
@@ -392,6 +429,10 @@
392
429
  background-color: var(--ermis-bg-hover);
393
430
  }
394
431
 
432
+ .ermis-attachment-aspect-box--4-3 {
433
+ padding-bottom: 75%;
434
+ }
435
+
395
436
  /* Blurred thumbnail preview (shown while full image loads) */
396
437
  .ermis-attachment-blur-preview {
397
438
  position: absolute;
@@ -427,14 +468,19 @@
427
468
  }
428
469
  }
429
470
 
430
- /* Full image — hidden until loaded, fades in over blur/shimmer */
431
- .ermis-attachment-aspect-box .ermis-attachment--image {
471
+ .ermis-attachment--hidden-loader {
472
+ display: none;
473
+ }
474
+
475
+ /* Full media — hidden until loaded, fades in over blur/shimmer */
476
+ .ermis-attachment-aspect-box .ermis-attachment--image,
477
+ .ermis-attachment-aspect-box .ermis-attachment--video,
478
+ .ermis-attachment-aspect-box .ermis-attachment--video-poster {
432
479
  position: absolute;
433
480
  top: 0;
434
481
  left: 0;
435
482
  width: 100%;
436
483
  height: 100%;
437
- object-fit: cover;
438
484
  opacity: 0;
439
485
  transition: opacity 0.3s ease;
440
486
  z-index: 2;
@@ -444,7 +490,19 @@
444
490
  border-radius: 0;
445
491
  }
446
492
 
447
- .ermis-attachment-aspect-box .ermis-attachment--image.ermis-attachment--loaded {
493
+ .ermis-attachment-aspect-box .ermis-attachment--image,
494
+ .ermis-attachment-aspect-box .ermis-attachment--video-poster {
495
+ object-fit: cover;
496
+ }
497
+
498
+ .ermis-attachment-aspect-box .ermis-attachment--video {
499
+ object-fit: contain;
500
+ background-color: var(--ermis-bg-hover);
501
+ }
502
+
503
+ .ermis-attachment-aspect-box .ermis-attachment--image.ermis-attachment--loaded,
504
+ .ermis-attachment-aspect-box .ermis-attachment--video.ermis-attachment--loaded,
505
+ .ermis-attachment-aspect-box .ermis-attachment--video-poster.ermis-attachment--loaded {
448
506
  opacity: 1;
449
507
  }
450
508
 
@@ -455,7 +513,8 @@
455
513
  min-height: 100px;
456
514
  }
457
515
 
458
- .ermis-attachment--image {
516
+ .ermis-attachment--image,
517
+ .ermis-attachment--video-poster {
459
518
  max-width: 300px;
460
519
  max-height: 200px;
461
520
  border-radius: var(--ermis-radius-md);
@@ -467,6 +526,7 @@
467
526
  max-width: 300px;
468
527
  max-height: 200px;
469
528
  border-radius: var(--ermis-radius-md);
529
+ object-fit: contain;
470
530
  }
471
531
 
472
532
  .ermis-attachment--file {
@@ -486,14 +546,34 @@
486
546
  }
487
547
 
488
548
  .ermis-attachment__file-icon {
489
- font-size: 1.25rem;
549
+ width: 40px;
550
+ height: 40px;
551
+ min-width: 40px;
552
+ border-radius: var(--ermis-radius-md);
553
+ background: var(--ermis-bg-secondary);
554
+ display: flex;
555
+ flex-direction: column;
556
+ align-items: center;
557
+ justify-content: center;
558
+ color: var(--ermis-text-muted);
559
+ gap: 1px;
490
560
  flex-shrink: 0;
491
561
  }
492
562
 
563
+ .ermis-attachment__file-ext {
564
+ font-size: 8px;
565
+ font-weight: 700;
566
+ text-transform: uppercase;
567
+ letter-spacing: 0.3px;
568
+ color: var(--ermis-text-muted);
569
+ line-height: 1;
570
+ }
571
+
493
572
  .ermis-attachment__file-info {
494
573
  display: flex;
495
574
  flex-direction: column;
496
575
  min-width: 0;
576
+ flex: 1;
497
577
  }
498
578
 
499
579
  .ermis-attachment__file-name {
@@ -509,6 +589,48 @@
509
589
  color: var(--ermis-text-muted);
510
590
  }
511
591
 
592
+ .ermis-attachment__file-download {
593
+ display: flex;
594
+ align-items: center;
595
+ justify-content: center;
596
+ flex-shrink: 0;
597
+ width: 32px;
598
+ height: 32px;
599
+ border: none;
600
+ border-radius: var(--ermis-radius-full);
601
+ background: transparent;
602
+ color: var(--ermis-text-muted);
603
+ cursor: pointer;
604
+ transition: background-color var(--ermis-transition), color var(--ermis-transition);
605
+ }
606
+
607
+ .ermis-attachment__file-download:hover {
608
+ background-color: var(--ermis-bg-active);
609
+ color: var(--ermis-accent);
610
+ }
611
+
612
+ .ermis-message-bubble--own .ermis-attachment__file-name {
613
+ color: rgba(255, 255, 255, 0.9);
614
+ }
615
+
616
+ .ermis-message-bubble--own .ermis-attachment__file-icon {
617
+ background: rgba(255, 255, 255, 0.2);
618
+ color: #fff;
619
+ }
620
+
621
+ .ermis-message-bubble--own .ermis-attachment__file-ext {
622
+ color: rgba(255, 255, 255, 0.8);
623
+ }
624
+
625
+ .ermis-message-bubble--own .ermis-attachment__file-download {
626
+ color: rgba(255, 255, 255, 0.7);
627
+ }
628
+
629
+ .ermis-message-bubble--own .ermis-attachment__file-download:hover {
630
+ background-color: rgba(255, 255, 255, 0.15);
631
+ color: #fff;
632
+ }
633
+
512
634
  /* --- Voice recording --- */
513
635
  .ermis-attachment--voice {
514
636
  display: flex;
@@ -557,10 +679,28 @@
557
679
  border-color: var(--ermis-accent);
558
680
  }
559
681
 
682
+ .ermis-attachment__link-image-wrapper {
683
+ position: relative;
684
+ width: 100%;
685
+ min-height: 120px;
686
+ background-color: var(--ermis-bg-hover);
687
+ overflow: hidden;
688
+ }
689
+
560
690
  .ermis-attachment__link-image {
691
+ display: block;
561
692
  width: 100%;
562
- max-height: 160px;
693
+ height: 100%;
563
694
  object-fit: cover;
695
+ position: absolute;
696
+ top: 0;
697
+ left: 0;
698
+ opacity: 0;
699
+ transition: opacity 0.3s ease;
700
+ }
701
+
702
+ .ermis-attachment__link-image.ermis-attachment--loaded {
703
+ opacity: 1;
564
704
  }
565
705
 
566
706
  .ermis-attachment__link-info {
@@ -612,9 +752,26 @@
612
752
  }
613
753
 
614
754
  /* --- Sticker message --- */
755
+ .ermis-message-sticker-wrapper {
756
+ position: relative;
757
+ width: 120px;
758
+ height: 120px;
759
+ overflow: hidden;
760
+ }
761
+
615
762
  .ermis-message-sticker {
616
- max-width: 120px;
617
- max-height: 120px;
763
+ position: absolute;
764
+ top: 0;
765
+ left: 0;
766
+ width: 100%;
767
+ height: 100%;
768
+ object-fit: contain;
769
+ opacity: 0;
770
+ transition: opacity 0.3s ease;
771
+ }
772
+
773
+ .ermis-message-sticker.ermis-attachment--loaded {
774
+ opacity: 1;
618
775
  }
619
776
 
620
777
  /* --- Error message --- */
@@ -355,6 +355,30 @@
355
355
  flex-shrink: 0;
356
356
  }
357
357
 
358
+ /* ----------------------------------------------------------
359
+ Closed Topic State
360
+ ---------------------------------------------------------- */
361
+ .ermis-message-input--closed {
362
+ pointer-events: none;
363
+ }
364
+
365
+ .ermis-message-input__closed-banner {
366
+ display: flex;
367
+ align-items: center;
368
+ justify-content: center;
369
+ gap: var(--ermis-spacing-sm);
370
+ padding: var(--ermis-spacing-md) var(--ermis-spacing-lg);
371
+ color: var(--ermis-color-danger);
372
+ font-size: var(--ermis-font-size-sm);
373
+ font-weight: 500;
374
+ user-select: none;
375
+ opacity: 0.8;
376
+ }
377
+
378
+ .ermis-message-input__closed-banner svg {
379
+ flex-shrink: 0;
380
+ }
381
+
358
382
  /* ----------------------------------------------------------
359
383
  Banners
360
384
  ---------------------------------------------------------- */
@@ -275,17 +275,62 @@
275
275
  }
276
276
 
277
277
  /* ----------------------------------------------------------
278
- Blocked State (messaging channels — user-initiated block)
279
- Messages remain visible but actions are disabled.
278
+ Closed Topic State
280
279
  ---------------------------------------------------------- */
281
- .ermis-message-list--blocked .ermis-message-actions {
282
- display: none;
280
+
281
+ .ermis-message-list__closed-overlay {
282
+ display: flex;
283
+ flex-direction: column;
284
+ align-items: center;
285
+ justify-content: center;
286
+ min-height: calc(100dvh - 8rem);
287
+ gap: var(--ermis-spacing-md);
288
+ user-select: none;
289
+ }
290
+
291
+ .ermis-message-list__closed-overlay-icon {
292
+ color: var(--ermis-color-danger);
293
+ opacity: 0.8;
294
+ }
295
+
296
+ .ermis-message-list__closed-overlay-title {
297
+ font-size: var(--ermis-font-size-base);
298
+ font-weight: 600;
299
+ color: var(--ermis-text-primary);
300
+ }
301
+
302
+ .ermis-message-list__closed-overlay-subtitle {
303
+ font-size: var(--ermis-font-size-sm);
304
+ color: var(--ermis-text-muted);
305
+ text-align: center;
306
+ max-width: 80%;
307
+ }
308
+
309
+ .ermis-message-list__reopen-btn {
310
+ margin-top: var(--ermis-spacing-md);
311
+ padding: var(--ermis-spacing-sm) var(--ermis-spacing-xl, 24px);
312
+ border: none;
313
+ border-radius: var(--ermis-radius-md, 8px);
314
+ background-color: var(--ermis-accent);
315
+ color: #fff;
316
+ font-size: var(--ermis-font-size-sm);
317
+ font-weight: 600;
318
+ font-family: var(--ermis-font-family);
319
+ cursor: pointer;
320
+ transition: background-color var(--ermis-transition), transform var(--ermis-transition);
283
321
  }
284
322
 
285
- .ermis-message-list--blocked .ermis-message-reactions__add-btn {
286
- display: none;
323
+ .ermis-message-list__reopen-btn:hover {
324
+ background-color: var(--ermis-accent-hover);
325
+ transform: translateY(-1px);
287
326
  }
288
327
 
328
+ .ermis-message-list__reopen-btn:active {
329
+ transform: translateY(0);
330
+ }
331
+
332
+
333
+
289
334
  /* Unblock button inside blocked overlay */
290
335
  .ermis-message-list__unblock-btn {
291
336
  margin-top: var(--ermis-spacing-md);
@@ -414,3 +459,28 @@
414
459
  .ermis-message-list__reject-btn:active {
415
460
  transform: translateY(0);
416
461
  }
462
+
463
+ /* Pending Invitee Notification */
464
+ .ermis-message-list__pending-invitee {
465
+ background-color: var(--ermis-bg-secondary);
466
+ border: 1px solid var(--ermis-border);
467
+ border-radius: var(--ermis-radius-md, 8px);
468
+ padding: var(--ermis-spacing-sm, 12px) var(--ermis-spacing-md, 16px);
469
+ margin: var(--ermis-spacing-sm) var(--ermis-spacing-lg);
470
+ display: flex;
471
+ align-items: center;
472
+ justify-content: center;
473
+ }
474
+
475
+ .ermis-message-list__pending-invitee-content {
476
+ display: flex;
477
+ align-items: center;
478
+ gap: var(--ermis-spacing-md, 12px);
479
+ color: var(--ermis-text-secondary);
480
+ font-size: var(--ermis-font-size-sm, 14px);
481
+ font-family: var(--ermis-font-family, sans-serif);
482
+ }
483
+
484
+ .ermis-message-list__pending-invitee-content svg {
485
+ color: var(--ermis-accent);
486
+ }
@@ -37,6 +37,11 @@
37
37
  transform: translateY(0);
38
38
  }
39
39
 
40
+ .ermis-message-list__bubble-wrapper:hover .ermis-message-quick-reactions--disabled {
41
+ opacity: 0.5;
42
+ pointer-events: none;
43
+ }
44
+
40
45
  .ermis-message-quick-reactions__btn {
41
46
  display: flex;
42
47
  align-items: center;
@@ -6,6 +6,13 @@
6
6
  flex-wrap: wrap;
7
7
  gap: 4px;
8
8
  margin-bottom: 2px;
9
+ margin-top: 2px;
10
+ width: 100%;
11
+ }
12
+
13
+ .ermis-message-reactions--disabled {
14
+ opacity: 0.8;
15
+ pointer-events: none;
9
16
  }
10
17
 
11
18
  .ermis-message-reactions__item {
@@ -0,0 +1,154 @@
1
+ /* ----------------------------------------------------------
2
+ CreateTopicModal
3
+ ---------------------------------------------------------- */
4
+ .ermis-create-topic__body {
5
+ display: flex;
6
+ flex-direction: column;
7
+ gap: var(--ermis-spacing-lg);
8
+ padding: 0 var(--ermis-spacing-xs);
9
+ }
10
+
11
+ .ermis-create-topic__field {
12
+ display: flex;
13
+ flex-direction: column;
14
+ gap: var(--ermis-spacing-xs);
15
+ }
16
+
17
+ .ermis-create-topic__label {
18
+ font-size: var(--ermis-font-size-sm);
19
+ font-weight: 500;
20
+ color: var(--ermis-text-primary);
21
+ }
22
+
23
+ .ermis-create-topic__required {
24
+ color: var(--ermis-error);
25
+ }
26
+
27
+ .ermis-create-topic__input {
28
+ padding: var(--ermis-spacing-sm) var(--ermis-spacing-md);
29
+ border: 1px solid var(--ermis-border);
30
+ border-radius: var(--ermis-radius-md);
31
+ font-size: var(--ermis-font-size-base);
32
+ color: var(--ermis-text-primary);
33
+ background-color: var(--ermis-bg-primary);
34
+ transition: border-color var(--ermis-transition);
35
+ }
36
+
37
+ .ermis-create-topic__input:focus {
38
+ outline: none;
39
+ border-color: var(--ermis-accent);
40
+ }
41
+
42
+ .ermis-create-topic__live-preview {
43
+ display: flex;
44
+ align-items: center;
45
+ gap: var(--ermis-spacing-sm);
46
+ padding: var(--ermis-spacing-md);
47
+ background-color: var(--ermis-bg-secondary);
48
+ border-radius: var(--ermis-radius-md);
49
+ border: 1px dashed var(--ermis-border);
50
+ }
51
+
52
+ .ermis-create-topic__live-preview-emoji {
53
+ font-size: 20px;
54
+ }
55
+
56
+ .ermis-create-topic__live-preview-name {
57
+ font-size: var(--ermis-font-size-base);
58
+ font-weight: 600;
59
+ color: var(--ermis-text-primary);
60
+ white-space: nowrap;
61
+ overflow: hidden;
62
+ text-overflow: ellipsis;
63
+ }
64
+
65
+ .ermis-create-topic__emoji-picker {
66
+ margin-top: var(--ermis-spacing-sm);
67
+ }
68
+
69
+ .ermis-create-topic__default-icons {
70
+ display: grid;
71
+ grid-template-columns: repeat(4, 1fr);
72
+ gap: var(--ermis-spacing-sm);
73
+ }
74
+
75
+ .ermis-create-topic__default-icon {
76
+ width: 100%;
77
+ height: 40px;
78
+ display: flex;
79
+ align-items: center;
80
+ justify-content: center;
81
+ font-size: 20px;
82
+ background-color: var(--ermis-bg-secondary);
83
+ border: 1px solid var(--ermis-border);
84
+ border-radius: var(--ermis-radius-md);
85
+ cursor: pointer;
86
+ transition: all var(--ermis-transition);
87
+ }
88
+
89
+ .ermis-create-topic__default-icon:hover:not(:disabled) {
90
+ background-color: var(--ermis-bg-hover);
91
+ border-color: var(--ermis-border-hover);
92
+ }
93
+
94
+ .ermis-create-topic__default-icon--active {
95
+ border-color: var(--ermis-accent);
96
+ background-color: var(--ermis-bg-primary);
97
+ }
98
+
99
+ .ermis-create-topic__default-icon:disabled {
100
+ opacity: 0.5;
101
+ cursor: not-allowed;
102
+ }
103
+
104
+
105
+ .ermis-create-topic__error {
106
+ display: flex;
107
+ align-items: center;
108
+ gap: var(--ermis-spacing-sm);
109
+ padding: var(--ermis-spacing-sm);
110
+ border-radius: var(--ermis-radius-md);
111
+ background-color: rgba(239, 68, 68, 0.1);
112
+ color: var(--ermis-error);
113
+ font-size: var(--ermis-font-size-sm);
114
+ }
115
+
116
+ .ermis-create-topic__footer {
117
+ display: flex;
118
+ justify-content: flex-end;
119
+ gap: var(--ermis-spacing-sm);
120
+ margin-top: var(--ermis-spacing-lg);
121
+ }
122
+
123
+ .ermis-create-topic__btn {
124
+ padding: var(--ermis-spacing-sm) var(--ermis-spacing-lg);
125
+ border-radius: var(--ermis-radius-md);
126
+ font-size: var(--ermis-font-size-sm);
127
+ font-weight: 500;
128
+ cursor: pointer;
129
+ transition: all var(--ermis-transition);
130
+ border: none;
131
+ }
132
+
133
+ .ermis-create-topic__btn:disabled {
134
+ opacity: 0.5;
135
+ cursor: not-allowed;
136
+ }
137
+
138
+ .ermis-create-topic__btn--cancel {
139
+ background-color: transparent;
140
+ color: var(--ermis-text-primary);
141
+ }
142
+
143
+ .ermis-create-topic__btn--cancel:hover:not(:disabled) {
144
+ background-color: var(--ermis-bg-hover);
145
+ }
146
+
147
+ .ermis-create-topic__btn--create {
148
+ background-color: var(--ermis-accent);
149
+ color: white;
150
+ }
151
+
152
+ .ermis-create-topic__btn--create:hover:not(:disabled) {
153
+ background-color: var(--ermis-accent-hover);
154
+ }
@@ -25,3 +25,5 @@
25
25
  @import './_user-picker.css';
26
26
  @import './_create-channel-modal.css';
27
27
  @import './_call-ui.css';
28
+ @import './_topic-modal.css';
29
+ @import './_media-lightbox.css';