Ezmary commited on
Commit
db1de23
·
verified ·
1 Parent(s): 10eb6cb

Update src/App.scss

Browse files
Files changed (1) hide show
  1. src/App.scss +86 -72
src/App.scss CHANGED
@@ -1,77 +1,75 @@
1
- // ... (بخش‌های اولیه CSS، متغیرها، base styles، header، popover بدون تغییر) ...
2
  @import 'tailwindcss/base';
3
  @import 'tailwindcss/components';
4
  @import 'tailwindcss/utilities';
5
 
6
- :root { /* ... */ }
7
- .dark { /* ... */ }
8
- @layer base { /* ... */ }
9
- .main-wrapper { /* ... */ }
10
- .media-area { /* ... */ }
11
- .notification-popover-wrapper { /* ... */ }
12
- .popover-content { /* ... */ }
13
- .notification-popover-text-content { /* ... */ }
14
- .dark .notification-popover-text-content { /* ... */ }
15
- .header-controls { /* ... */ }
16
- .header-button { /* ... */ }
17
- .dark .header-button { /* ... */ }
18
-
19
-
20
- /* استایل برای کانتینر لوگوی بزرگ وسط صفحه */
21
- .large-logo-container-class {
22
- position: absolute;
23
- top: 0;
24
- left: 0;
25
- width: 100%;
26
- height: 100%;
27
- display: flex;
28
- align-items: center;
29
- justify-content: center;
30
- pointer-events: none;
31
- z-index: 5; // پشت کنترل‌های فوتر اما روی ویدیو
32
  }
 
 
 
 
 
 
 
 
 
 
33
 
34
- /* Logo Animation Styling - اطمینان از اعمال رنگ و انیمیشن */
35
  .logo-animation-wrapper {
36
  position: relative;
37
  display: flex;
38
  align-items: center;
39
  justify-content: center;
40
- color: var(--foreground); /* رنگ پیش‌فرض برای stroke آدمک */
41
-
42
- & > .z-10 > svg { /* برای SvgHumanIcon */
43
  width: 100%;
44
  height: 100%;
45
  }
46
- /* استایل برای حلقه‌ها - باید توسط کلاس‌های Tailwind اعمال شوند */
47
- /* .absolute, .rounded-full, .opacity-50, .animate-ping, bg-blue-200, etc. */
48
  }
49
 
50
-
51
- /* Footer styles - بازگشت به نسخه قبلی که مشکل اسکرول افقی نداشت */
52
- .footer-controls {
53
  width: 100%;
54
  display: flex;
55
- gap: 0.5rem; // کاهش فاصله برای جلوگیری از سرریز
56
- position: absolute;
57
- bottom: 0;
58
- // padding برای بالاتر آمدن و جلوگیری از چسبیدن به لبه‌ها
59
- padding: 0.75rem 1rem; // 12px top/bottom, 16px left/right - این مقادیر را تنظیم کنید
60
  align-items: center;
61
- justify-content: space-between; // دکمه دوربین چپ، میکروفون راست
62
- // لوگوی کوچک در ControlTray با flex-grow یا absolute positioning وسط قرار می‌گیرد
 
 
 
 
 
63
  z-index: 20;
 
64
  }
65
 
66
- .small-logo-footer { // برای لوگوی کوچک بین دکمه‌ها
 
 
 
 
 
67
  display: flex;
68
  align-items: center;
69
  justify-content: center;
70
- // اگر از justify-content: space-between در فوتر استفاده می‌کنید،
71
- // این بخش برای اینکه وسط بیاید باید margin auto داشته باشد یا با position: absolute باشد.
72
- // فعلاً با flex و ترتیب در JSX کنترل می‌شود.
73
- // اگر می‌خواهید دقیقاً وسط باشد:
74
- // position: absolute; left: 50%; transform: translateX(-50%);
75
  }
76
 
77
  .control-button-wrapper {
@@ -81,8 +79,8 @@
81
  }
82
 
83
  .control-button {
84
- height: 70px; // اندازه قبلی که مشکل اسکرول نداشت
85
- width: 70px;
86
  border-radius: 9999px;
87
  padding: 0;
88
  display: flex;
@@ -103,35 +101,51 @@
103
  }
104
 
105
  svg {
106
- // اندازه پیش‌فرض برای اکثر SVGها
107
- // width: 50%;
108
- // height: 50%;
109
- &.reference-mic-svg { // برای آیکون میکروفون اولیه
110
- width: 70%; // یا مقدار دلخواه شما
111
- height: 70%;
112
  }
 
 
113
  }
114
  }
115
 
116
- // رنگ‌ها بر اساس ترتیب دوربین چپ، میکروفون راست
117
- .cam-button-color { background-color: #E0ECFF; }
118
  .mic-button-color { background-color: #fecdd3; }
 
119
 
120
- .dark .cam-button-color { background-color: #223355; }
121
  .dark .mic-button-color { background-color: #5C2129; }
122
-
123
 
124
  /* Switch Camera Button (بدون تغییر) */
125
- .switch-camera-button-container { /* ... */ }
126
- .switch-camera-button-content { /* ... */ }
127
- .switch-camera-button-content svg { /* ... */ }
128
- .switch-camera-button-content:hover svg { /* ... */ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
129
 
130
  /* Keyframes for popover (بدون تغییر) */
131
- @keyframes popover-drop-in { /* ... */ }
132
- @keyframes popover-lift-out { /* ... */ }
133
- .animate-popover-open-top-center { /* ... */ }
134
- .animate-popover-close-top-center { /* ... */ }
135
-
136
- @keyframes ping { 75%, 100% { transform: scale(2); opacity: 0; } }
137
- .animate-ping { animation: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite; }
 
 
 
 
 
1
+ // ... (بخش‌های اولیه CSS، متغیرها، base styles، header، popover، logo-animation-wrapper بدون تغییر) ...
2
  @import 'tailwindcss/base';
3
  @import 'tailwindcss/components';
4
  @import 'tailwindcss/utilities';
5
 
6
+ :root {
7
+ --radius: 0.625rem;
8
+ --radius-md: 0.5rem;
9
+ --background: oklch(1 0 0);
10
+ --foreground: oklch(0.145 0 0);
11
+ --popover: oklch(1 0 0);
12
+ --popover-foreground: oklch(0.145 0 0);
13
+ --border: oklch(0.922 0 0);
14
+ }
15
+ .dark {
16
+ --background: oklch(0.145 0 0);
17
+ --foreground: oklch(0.985 0 0);
18
+ --popover: oklch(0.205 0 0);
19
+ --popover-foreground: oklch(0.985 0 0);
20
+ --border: oklch(1 0 0 / 10%);
21
+ }
22
+ @layer base {
23
+ * { border-color: var(--border); outline-color: var(--foreground); box-sizing: border-box; }
24
+ body { @apply bg-background text-foreground; overflow-x: hidden; font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; margin: 0; padding: 0; }
25
+ html { margin: 0; padding: 0; overflow-x: hidden; }
 
 
 
 
 
 
26
  }
27
+ .main-wrapper { min-height: 100vh; display: flex; flex-direction: column; }
28
+ .media-area { flex-grow: 1; position: relative; }
29
+ #large-logo-container { display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; position: absolute; top: 0; left: 0; pointer-events: none; }
30
+ .notification-popover-wrapper { position: fixed; top: 1rem; left: 50%; transform: translateX(-50%); z-index: 100; width: calc(100% - 1rem); max-width: 28rem; display: flex; justify-content: center; pointer-events: none; }
31
+ .popover-content { width: 100%; border-radius: var(--radius-md, 0.5rem); border-width: 1px; border-color: var(--border); background-color: var(--popover); color: var(--popover-foreground); box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); outline: none; transition: opacity 0.3s ease-out, transform 0.4s cubic-bezier(0.68, -0.55, 0.27, 1.55); opacity: 0; transform: translateY(-100%) scale(0.9); pointer-events: none; &.open { opacity: 1; transform: translateY(0) scale(1); pointer-events: auto; } }
32
+ .notification-popover-text-content { background-color: #eff6ff; font-size: 0.875rem; line-height: 1.5rem; direction: rtl; padding: 1rem; border-radius: var(--radius-md, 0.5rem); color: oklch(0.145 0 0); }
33
+ .dark .notification-popover-text-content { background-color: oklch(0.25 0.05 230); color: oklch(0.95 0.01 230); }
34
+ .header-controls { display: flex; padding: 0.75rem 0.5rem; justify-content: space-between; align-items: center; width: 100%; position: absolute; top: 0; left: 0; z-index: 10; }
35
+ .header-button { display: flex; align-items: center; justify-content: center; padding: 0.5rem; width: 40px; height: 40px; border-radius: var(--radius-lg, 0.625rem); background-color: #e5e7eb; cursor: pointer; transition: background-color 0.2s, transform 0.1s ease-out; svg { opacity: 0.7; stroke: #374151; width: 24px; height: 24px; } &:hover { background-color: #d1d5db; } &:active { background-color: #9ca3af; transform: scale(0.95); } }
36
+ .dark .header-button { background-color: oklch(0.28 0 0); &:hover { background-color: oklch(0.35 0 0); } &:active { background-color: oklch(0.40 0 0); transform: scale(0.95); } svg { opacity: 0.8; stroke: oklch(0.85 0 0); } }
37
 
 
38
  .logo-animation-wrapper {
39
  position: relative;
40
  display: flex;
41
  align-items: center;
42
  justify-content: center;
43
+ & > .z-10 > svg {
 
 
44
  width: 100%;
45
  height: 100%;
46
  }
 
 
47
  }
48
 
49
+ .footer-controls-html-like {
 
 
50
  width: 100%;
51
  display: flex;
 
 
 
 
 
52
  align-items: center;
53
+ position: absolute;
54
+ bottom: 1.5rem;
55
+ padding-left: 3rem;
56
+ padding-right: 3rem;
57
+ padding-top: 0.5rem;
58
+ padding-bottom: 0.5rem;
59
+ box-sizing: border-box;
60
  z-index: 20;
61
+ justify-content: space-between;
62
  }
63
 
64
+ .small-logo-footer-html-like {
65
+ position: absolute;
66
+ left: 50%;
67
+ top: 50%;
68
+ transform: translate(-50%, -50%);
69
+ z-index: 1;
70
  display: flex;
71
  align-items: center;
72
  justify-content: center;
 
 
 
 
 
73
  }
74
 
75
  .control-button-wrapper {
 
79
  }
80
 
81
  .control-button {
82
+ height: 80px;
83
+ width: 80px;
84
  border-radius: 9999px;
85
  padding: 0;
86
  display: flex;
 
101
  }
102
 
103
  svg {
104
+ // *** MODIFIED: افزایش اندازه آیکون میکروفون مرجع ***
105
+ &.reference-mic-svg {
106
+ width: 70%; // قبلاً 60% بود، حالا 70% یا مقدار دیگری که مناسب‌تر است
107
+ height: 70%;
 
 
108
  }
109
+ // برای آیکون‌های دیگر داخل دکمه‌های کنترل، می‌توانید اندازه متفاوتی تنظیم کنید
110
+ // اگر همه آیکون‌ها باید یکسان باشند، این کلاس خاص را حذف کنید و به طور کلی برای svg تنظیم کنید
111
  }
112
  }
113
 
 
 
114
  .mic-button-color { background-color: #fecdd3; }
115
+ .cam-button-color { background-color: #E0ECFF; }
116
 
 
117
  .dark .mic-button-color { background-color: #5C2129; }
118
+ .dark .cam-button-color { background-color: #223355; }
119
 
120
  /* Switch Camera Button (بدون تغییر) */
121
+ .switch-camera-button-container {
122
+ position: absolute; bottom: calc(100% + 0.65rem); left: 50%;
123
+ transform: translateX(-50%) translateY(15px) scale(0.7); z-index: 5;
124
+ opacity: 0; pointer-events: none;
125
+ transition: opacity 0.35s cubic-bezier(0.68, -0.55, 0.27, 1.55), transform 0.35s cubic-bezier(0.68, -0.55, 0.27, 1.55);
126
+ transform-origin: center bottom;
127
+ &.visible { opacity: 1; transform: translateX(-50%) translateY(0) scale(1); pointer-events: auto; }
128
+ }
129
+ .switch-camera-button-content {
130
+ width: 48px; height: 48px; background-color: var(--background); border: 1px solid var(--border);
131
+ border-radius: 9999px; display: flex; align-items: center; justify-content: center;
132
+ box-shadow: 0 5px 10px rgba(0,0,0,0.12), 0 2px 4px rgba(0,0,0,0.08); cursor: pointer;
133
+ transform-origin: center; transition: transform 0.2s ease-out, box-shadow 0.2s ease-out;
134
+ &:hover { transform: scale(1.12) rotate(-6deg); box-shadow: 0 7px 15px rgba(0,0,0,0.18), 0 3px 6px rgba(0,0,0,0.12); }
135
+ &:active { transform: scale(1.03) rotate(0deg); }
136
+ svg { width: 22px; height: 22px; stroke: var(--foreground); transition: transform 0.3s ease-in-out; }
137
+ &:hover svg { transform: rotate(360deg); }
138
+ }
139
 
140
  /* Keyframes for popover (بدون تغییر) */
141
+ @keyframes popover-drop-in {
142
+ 0% { opacity: 0; transform: translateY(-100%) scale(0.9); }
143
+ 70% { opacity: 1; transform: translateY(5px) scale(1.02); }
144
+ 100% { opacity: 1; transform: translateY(0) scale(1); }
145
+ }
146
+ @keyframes popover-lift-out {
147
+ 0% { opacity: 1; transform: translateY(0) scale(1); }
148
+ 100% { opacity: 0; transform: translateY(-100%) scale(0.9); }
149
+ }
150
+ .animate-popover-open-top-center { animation: popover-drop-in 0.4s cubic-bezier(0.68, -0.55, 0.27, 1.55) forwards; }
151
+ .animate-popover-close-top-center { animation: popover-lift-out 0.3s ease-in forwards; }