Ezmary commited on
Commit
67a1642
·
verified ·
1 Parent(s): 70aec04

Update src/App.scss

Browse files
Files changed (1) hide show
  1. src/App.scss +72 -74
src/App.scss CHANGED
@@ -29,61 +29,55 @@
29
  outline-color: var(--foreground);
30
  box-sizing: border-box;
31
  }
32
- body, html { // Apply to both for good measure
33
  @apply bg-background text-foreground;
34
  overflow-x: hidden; // Prevent horizontal scroll
35
- overflow-y: hidden; // *** ADDED: Prevent vertical scroll on body/html ***
36
  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";
37
  -webkit-font-smoothing: antialiased;
38
  -moz-osx-font-smoothing: grayscale;
39
  margin: 0;
40
  padding: 0;
41
- height: 100%; // *** ADDED: Ensure html and body take full height ***
42
- width: 100%; // *** ADDED: Ensure html and body take full width ***
43
  }
44
  }
45
 
46
- // Main application container to manage height and prevent scrolling
47
  .app-container {
48
- height: 100vh; // Use viewport height to fill the screen
49
- // For iOS Safari, dvh might be better if address bar causes issues
50
- // height: 100dvh;
51
  display: flex;
52
  flex-direction: column;
53
- overflow: hidden; // Prevent scrolling on the main app container itself
54
  }
55
 
56
  .main-wrapper {
57
- // min-height: 100vh; // Already handled by .app-container
58
  display: flex;
59
  flex-direction: column;
60
- flex-grow: 1; // Allow main-wrapper to fill .app-container
61
- overflow: hidden; // Prevent internal scrolling if content still overflows
62
- position: relative; // For absolute positioning of children like header/footer
 
 
63
  }
64
-
65
  .media-area {
66
- flex-grow: 1;
67
  position: relative;
68
- display: flex; // For centering large logo
69
- align-items: center;
70
- justify-content: center;
71
- overflow: hidden; // Ensure video/logo doesn't cause scroll
72
  }
73
 
74
  #large-logo-container {
75
- // display: flex; // Handled by media-area
76
- // align-items: center;
77
- // justify-content: center;
78
- // width: 100%;
79
- // height: 100%;
80
- // position: absolute; // Handled by media-area's relative and this absolute
81
- // top: 0;
82
- // left: 0;
83
  pointer-events: none;
84
  }
85
 
86
- /* Notification Popover & Header controls (بدون تغییر) */
87
  .notification-popover-wrapper {
88
  position: fixed; top: 1rem; left: 50%; transform: translateX(-50%); z-index: 100;
89
  width: calc(100% - 1rem); max-width: 28rem; display: flex; justify-content: center; pointer-events: none;
@@ -104,7 +98,6 @@
104
  .header-controls {
105
  display: flex; padding: 0.75rem 0.5rem; justify-content: space-between; align-items: center;
106
  width: 100%; position: absolute; top: 0; left: 0; z-index: 10;
107
- flex-shrink: 0; // Prevent header from shrinking
108
  }
109
  .header-button {
110
  display: flex; align-items: center; justify-content: center; padding: 0.5rem;
@@ -133,20 +126,18 @@
133
  }
134
  }
135
 
136
- /* Footer styles */
137
  .footer-controls-html-like {
138
  width: 100%;
139
  display: flex;
140
  align-items: center;
141
- position: absolute; // نسبت به main-wrapper
142
- bottom: 0;
143
- // *** MODIFIED: تنظیم padding برای بالا بردن فوتر، مشابه HTML مرجع ***
144
- // مقادیر padding از HTML شما: padding: 2rem 3rem; (32px top/bottom, 48px left/right)
145
- // اگر می خواهید بالاتر بیاید، می توانید bottom را با یک مقدار مثبت تنظیم کنید
146
- // یا padding-bottom را کمتر کنید.
147
- // با توجه به اینکه گفتید دقیقا مثل HTML، padding را حفظ می کنیم.
148
- // اگر هنوز پایین است، ممکن است ارتفاع کلی main-wrapper یا media-area مشکل داشته باشد.
149
- padding: 2rem 3rem;
150
  box-sizing: border-box;
151
  z-index: 20;
152
  justify-content: space-between;
@@ -174,7 +165,7 @@
174
  height: 80px;
175
  width: 80px;
176
  border-radius: 9999px;
177
- padding: 0; // SVG باید با اندازه خودش بیاید یا با CSS داخلی SVG تنظیم شود
178
  display: flex;
179
  align-items: center;
180
  justify-content: center;
@@ -185,49 +176,56 @@
185
  transition: transform 0.2s ease-out, box-shadow 0.2s ease-out;
186
  flex-shrink: 0;
187
  z-index: 2;
188
- overflow: hidden; // برای اینکه SVG بزرگتر از دکمه بیرون نزند
 
 
 
 
 
 
 
 
189
 
190
  &:hover {
191
  transform: scale(1.05);
192
  box-shadow: 0 10px 15px -3px rgba(0,0,0,0.1), 0 4px 6px -2px rgba(0,0,0,0.05);
193
  }
194
-
195
- // *** MODIFIED: تنظیم اندازه SVG داخل دکمه میکروفون و دوربین ***
196
- svg {
197
- // هدف این است که آیکون میکروفون بزرگتر به نظر برسد
198
- // و آیکون دوربین هم اندازه مناسبی داشته باشد.
199
- // این مقادیر را می توانید تنظیم کنید.
200
- // برای SvgReferenceMicrophoneIcon که transform scale(0.55) داشت،
201
- // اگر آن transform را برداریم، اینجا باید scale را مدیریت کنیم یا width/height بدهیم.
202
- // فرض کنیم transform را از SVG برداشتیم:
203
- width: 60%; // یا یک مقدار ثابت px مانند 40px
204
- height: 60%; // یا یک مقدار ثابت px مانند 40px
205
- // اگر SVG دارای transform scale(0.55) است، این مقادیر را بزرگتر کنید:
206
- // width: 100%; height: 100%; // و اجازه دهید scale داخلی SVG کار کند
207
- }
208
  }
209
 
210
- // برای دکمه میکروفون، اگر آیکونش نیاز به استایل خاصی برای بزرگتر دیده شدن دارد
211
- .mic-button-color svg {
212
- // width: 70% !important; // مثال برای بزرگتر کردن فقط آیکون میکروفون
213
- // height: 70% !important;
214
- // یا اگر scale در SVG اصلی بود و حذفش کردیم:
215
- // transform: scale(1); // برای اینکه به اندازه اصلی viewBox اش باشد
216
- }
217
-
218
-
219
  .mic-button-color { background-color: #fecdd3; }
220
  .cam-button-color { background-color: #E0ECFF; }
221
-
222
  .dark .mic-button-color { background-color: #5C2129; }
223
  .dark .cam-button-color { background-color: #223355; }
224
 
225
-
226
- /* Switch Camera Button (بدون تغییر) */
227
- .switch-camera-button-container { /* ... */ }
228
- .switch-camera-button-content { /* ... */ }
229
- /* Keyframes for popover (بدون تغییر) */
230
- @keyframes popover-drop-in { /* ... */ }
231
- @keyframes popover-lift-out { /* ... */ }
232
- .animate-popover-open-top-center { /* ... */ }
233
- .animate-popover-close-top-center { /* ... */ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
  outline-color: var(--foreground);
30
  box-sizing: border-box;
31
  }
32
+ body, html { // Apply to both for safety, especially in iframes
33
  @apply bg-background text-foreground;
34
  overflow-x: hidden; // Prevent horizontal scroll
35
+ overflow-y: hidden; // *** NEW: Attempt to prevent vertical scroll on body/html ***
36
  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";
37
  -webkit-font-smoothing: antialiased;
38
  -moz-osx-font-smoothing: grayscale;
39
  margin: 0;
40
  padding: 0;
41
+ height: 100%; // Ensure html and body take full height
 
42
  }
43
  }
44
 
45
+ // Main application container to manage overall height
46
  .app-container {
47
+ height: 100vh; // Use viewport height
 
 
48
  display: flex;
49
  flex-direction: column;
 
50
  }
51
 
52
  .main-wrapper {
53
+ // min-height: 100vh; // No longer needed if app-container handles height
54
  display: flex;
55
  flex-direction: column;
56
+ flex-grow: 1; // Allow main-wrapper to fill app-container
57
+ width: 100%; // Ensure it takes full width
58
+ max-width: 450px; // Max width like many mobile apps, adjust as needed
59
+ margin-left: auto;
60
+ margin-right: auto;
61
  }
 
62
  .media-area {
63
+ flex-grow: 1; // This area will take up available space above the footer
64
  position: relative;
65
+ width: 100%; // Ensure it takes full width of main-wrapper
 
 
 
66
  }
67
 
68
  #large-logo-container {
69
+ display: flex;
70
+ align-items: center;
71
+ justify-content: center;
72
+ width: 100%;
73
+ height: 100%;
74
+ position: absolute;
75
+ top: 0;
76
+ left: 0;
77
  pointer-events: none;
78
  }
79
 
80
+ /* Notification Popover & Header controls (No changes from previous correct version) */
81
  .notification-popover-wrapper {
82
  position: fixed; top: 1rem; left: 50%; transform: translateX(-50%); z-index: 100;
83
  width: calc(100% - 1rem); max-width: 28rem; display: flex; justify-content: center; pointer-events: none;
 
98
  .header-controls {
99
  display: flex; padding: 0.75rem 0.5rem; justify-content: space-between; align-items: center;
100
  width: 100%; position: absolute; top: 0; left: 0; z-index: 10;
 
101
  }
102
  .header-button {
103
  display: flex; align-items: center; justify-content: center; padding: 0.5rem;
 
126
  }
127
  }
128
 
129
+ /* Footer styles to mimic HTML example */
130
  .footer-controls-html-like {
131
  width: 100%;
132
  display: flex;
133
  align-items: center;
134
+ position: relative; // Changed from absolute to allow it to push content if needed
135
+ // bottom: 0; // No longer strictly at bottom of viewport, but bottom of main-wrapper
136
+ // *** MODIFIED: Adjust padding to bring buttons higher ***
137
+ // padding: 2rem 3rem; // Original from HTML
138
+ padding: 1.5rem 2rem 2.5rem 2rem; // Example: 24px top, 32px L/R, 40px bottom (pushes up)
139
+ // یا اگر می خواهید از پایین صفحه فاصله داشته باشد، می توانید bottom را برای main-wrapper تنظیم کنید یا margin-bottom به media-area بدهید.
140
+
 
 
141
  box-sizing: border-box;
142
  z-index: 20;
143
  justify-content: space-between;
 
165
  height: 80px;
166
  width: 80px;
167
  border-radius: 9999px;
168
+ padding: 0; // Padding is inside the SVG container usually
169
  display: flex;
170
  align-items: center;
171
  justify-content: center;
 
176
  transition: transform 0.2s ease-out, box-shadow 0.2s ease-out;
177
  flex-shrink: 0;
178
  z-index: 2;
179
+ overflow: hidden; // Ensure SVG content fits
180
+
181
+ svg {
182
+ // برای بزرگتر کردن آیکون داخل دکمه، transform در SVG خود آیکون بهتر است
183
+ // اما اگر SVG transform ندارد، می توانیم اینجا scale کنیم
184
+ // مثال: transform: scale(1.2); // برای 20% بزرگتر شدن
185
+ width: 60%; // یا درصدی از دکمه
186
+ height: 60%;
187
+ }
188
 
189
  &:hover {
190
  transform: scale(1.05);
191
  box-shadow: 0 10px 15px -3px rgba(0,0,0,0.1), 0 4px 6px -2px rgba(0,0,0,0.05);
192
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
193
  }
194
 
 
 
 
 
 
 
 
 
 
195
  .mic-button-color { background-color: #fecdd3; }
196
  .cam-button-color { background-color: #E0ECFF; }
 
197
  .dark .mic-button-color { background-color: #5C2129; }
198
  .dark .cam-button-color { background-color: #223355; }
199
 
200
+ /* Switch Camera Button (No changes from previous correct version) */
201
+ .switch-camera-button-container {
202
+ position: absolute; bottom: calc(100% + 0.65rem); left: 50%;
203
+ transform: translateX(-50%) translateY(15px) scale(0.7); z-index: 5;
204
+ opacity: 0; pointer-events: none;
205
+ 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);
206
+ transform-origin: center bottom;
207
+ &.visible { opacity: 1; transform: translateX(-50%) translateY(0) scale(1); pointer-events: auto; }
208
+ }
209
+ .switch-camera-button-content {
210
+ width: 48px; height: 48px; background-color: var(--background); border: 1px solid var(--border);
211
+ border-radius: 9999px; display: flex; align-items: center; justify-content: center;
212
+ box-shadow: 0 5px 10px rgba(0,0,0,0.12), 0 2px 4px rgba(0,0,0,0.08); cursor: pointer;
213
+ transform-origin: center; transition: transform 0.2s ease-out, box-shadow 0.2s ease-out;
214
+ &: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); }
215
+ &:active { transform: scale(1.03) rotate(0deg); }
216
+ svg { width: 22px; height: 22px; stroke: var(--foreground); transition: transform 0.3s ease-in-out; }
217
+ &:hover svg { transform: rotate(360deg); }
218
+ }
219
+
220
+ /* Keyframes for popover (No changes) */
221
+ @keyframes popover-drop-in {
222
+ 0% { opacity: 0; transform: translateY(-100%) scale(0.9); }
223
+ 70% { opacity: 1; transform: translateY(5px) scale(1.02); }
224
+ 100% { opacity: 1; transform: translateY(0) scale(1); }
225
+ }
226
+ @keyframes popover-lift-out {
227
+ 0% { opacity: 1; transform: translateY(0) scale(1); }
228
+ 100% { opacity: 0; transform: translateY(-100%) scale(0.9); }
229
+ }
230
+ .animate-popover-open-top-center { animation: popover-drop-in 0.4s cubic-bezier(0.68, -0.55, 0.27, 1.55) forwards; }
231
+ .animate-popover-close-top-center { animation: popover-lift-out 0.3s ease-in forwards; }