SamiKoen commited on
Commit
b8d7ad6
·
1 Parent(s): 03bcc8f

Two side-by-side monitors: assistant left, product showcase right

Browse files
Files changed (1) hide show
  1. static/index.html +92 -81
static/index.html CHANGED
@@ -38,20 +38,28 @@
38
  align-items: center;
39
  }
40
 
41
- /* Monitor cercevesi saf CSS, gorsel yok */
42
- .monitor {
43
  width: 100%;
44
- max-width: 1280px;
 
 
 
45
  margin: 12px auto 0;
46
- position: relative;
47
  }
 
 
 
 
 
48
  .monitor .bezel {
49
  background: linear-gradient(180deg, var(--bezel-1) 0%, var(--bezel-2) 100%);
50
  border-radius: 18px;
51
- padding: 18px;
52
  box-shadow:
53
- 0 30px 80px rgba(0,0,0,0.25),
54
- 0 8px 20px rgba(0,0,0,0.15),
55
  inset 0 1px 0 rgba(255,255,255,0.08),
56
  inset 0 -1px 0 rgba(0,0,0,0.4);
57
  position: relative;
@@ -60,11 +68,11 @@
60
  /* Kamera deligi */
61
  content: '';
62
  position: absolute;
63
- top: 6px;
64
  left: 50%;
65
  transform: translateX(-50%);
66
- width: 6px;
67
- height: 6px;
68
  background: #0a0b0d;
69
  border-radius: 50%;
70
  box-shadow: inset 0 0 2px rgba(255,255,255,0.2);
@@ -74,53 +82,44 @@
74
  border-radius: 6px;
75
  overflow: hidden;
76
  position: relative;
77
- min-height: 720px;
 
 
78
  }
79
- /* Stand boynu */
80
  .monitor .neck {
81
- width: 80px;
82
- height: 36px;
83
  margin: -2px auto 0;
84
  background: linear-gradient(180deg, #b9bdc4 0%, #8c9098 100%);
85
  border-radius: 0 0 8px 8px;
86
  box-shadow: 0 2px 4px rgba(0,0,0,0.15);
87
  }
88
- /* Stand tabani */
89
  .monitor .base {
90
- width: 280px;
91
- height: 14px;
92
  margin: 0 auto;
93
  background: linear-gradient(180deg, #c9ccd2 0%, #9aa0a8 100%);
94
  border-radius: 50%;
95
- box-shadow: 0 12px 24px rgba(0,0,0,0.18);
 
 
 
96
  }
97
  @media (max-width: 700px) {
98
  .monitor .bezel { padding: 10px; border-radius: 12px; }
99
  .monitor .neck { width: 50px; height: 22px; }
100
  .monitor .base { width: 180px; height: 10px; }
101
- .monitor .screen { min-height: 0; }
102
  }
103
 
104
- .app {
105
- display: grid;
106
- grid-template-columns: 1fr 1fr;
107
- min-height: 720px;
108
- position: relative;
109
- z-index: 1;
110
- }
111
- .col {
112
  display: flex;
113
  flex-direction: column;
114
  align-items: center;
115
- padding: 28px 24px 36px;
 
116
  min-width: 0;
117
  }
118
- .col.left { border-right: 1px solid var(--line); }
119
- .col.right { justify-content: center; }
120
- @media (max-width: 900px) {
121
- .app { grid-template-columns: 1fr; min-height: 0; }
122
- .col.left { border-right: none; border-bottom: 1px solid var(--line); }
123
- }
124
  .product-card {
125
  width: min(90%, 520px);
126
  background: #ffffff;
@@ -357,60 +356,72 @@
357
  </style>
358
  </head>
359
  <body>
360
- <div class="monitor">
361
- <div class="bezel">
362
- <div class="screen">
363
- <div class="app">
364
- <div class="col left">
365
- <div class="brand">
366
- <svg class="mark" viewBox="0 0 288.1 80" xmlns="http://www.w3.org/2000/svg" aria-label="Trek">
367
- <g>
368
- <polygon points="238.5,22.9 214.3,22.9 201.9,57.2 226.1,57.2 "/>
369
- <polygon points="234.1,38.8 248.4,57.2 276.3,57.2 260.3,39.1 288.1,22.9 259.7,22.9 "/>
370
- <path d="M206.6,29.5l2.4-6.6h-61.9l-8.5,23.6c-0.5,1.5-0.6,3.2,0.5,4.5c0.4,0.4,3.1,3.6,3.7,4.2c1,1.1,2.2,2,4.2,2h49.6l2.4-6.5h-34.7c-2.1,0-3.1-1.6-2.6-3.2l1.6-4.3h38.4l2.4-6.6h-38.4l2.6-7.1C168.3,29.4,206.6,29.4,206.6,29.5z"/>
371
- <path d="M135.5,22.9H73.9L61.5,57.2h23.6l10-27.7h17.6c1.9,0,2.6,1.4,2.2,2.7c-0.4,1.4-1,3.1-1.5,4.1c-0.6,1.4-2,2.5-4.1,2.5s-16.5,0-16.5,0L107.1,57h27.1L122,43.3c0,0,4.9,0,7.3,0c3.4,0,5.4-1.8,6.3-4.1c1-2.6,3.3-8.9,4-11C140.9,25,138.9,22.9,135.5,22.9"/>
372
- <polygon points="69.6,22.9 2.4,22.9 0,29.5 23.2,29.5 13.2,57.2 36,57.2 46,29.5 67.3,29.5 "/>
373
- </g>
374
- </svg>
375
- <span class="label" lang="en">AI Assistant</span>
376
- </div>
377
- <h1>Sesli <span class="accent">Asistan</span></h1>
378
- <div class="subtitle">Bisiklet · Stok · Fiyat · Anlık Yanıt</div>
379
-
380
- <div class="stage">
381
- <img id="avatarImg" src="/static/assistant.png" alt="Trek Asistan" />
382
- <div id="ring" class="ring"></div>
383
- <span class="corner tl"></span>
384
- <span class="corner tr"></span>
385
- <span class="corner bl"></span>
386
- <span class="corner br"></span>
387
- </div>
388
-
389
- <div class="panel">
390
- <div id="status" class="status disconnected">● Bağlantı Yok</div>
391
- <div class="controls">
392
- <button id="btnConnect">Konuşmaya Başla</button>
393
- <button id="btnDisconnect" class="danger" disabled>Bitir</button>
 
 
 
 
 
 
 
394
  </div>
395
  </div>
396
-
397
- <div class="footer"><span lang="en">Powered by Trek · Realtime AI</span></div>
398
  </div>
399
 
400
- <div class="col right">
401
- <div class="product-section-title"><span class="accent">●</span> Ürün Vitrini</div>
402
- <div class="product-card" id="productCard">
403
- <div class="empty" id="productEmpty">
404
- Bahsedilen ürün burada gösterilir
 
 
 
 
 
 
 
405
  </div>
406
  </div>
 
 
407
  </div>
408
- </div>
409
- </div><!-- /screen -->
410
- </div><!-- /bezel -->
411
- <div class="neck"></div>
412
- <div class="base"></div>
413
- </div><!-- /monitor -->
414
 
415
  <script>
416
  const SAMPLE_RATE = 24000;
 
38
  align-items: center;
39
  }
40
 
41
+ /* Iki monitor yan yana */
42
+ .desk {
43
  width: 100%;
44
+ max-width: 1480px;
45
+ display: grid;
46
+ grid-template-columns: 1fr 1fr;
47
+ gap: 32px;
48
  margin: 12px auto 0;
49
+ align-items: start;
50
  }
51
+ @media (max-width: 1000px) {
52
+ .desk { grid-template-columns: 1fr; gap: 24px; }
53
+ }
54
+
55
+ .monitor { position: relative; width: 100%; }
56
  .monitor .bezel {
57
  background: linear-gradient(180deg, var(--bezel-1) 0%, var(--bezel-2) 100%);
58
  border-radius: 18px;
59
+ padding: 16px;
60
  box-shadow:
61
+ 0 30px 80px rgba(0,0,0,0.22),
62
+ 0 8px 20px rgba(0,0,0,0.12),
63
  inset 0 1px 0 rgba(255,255,255,0.08),
64
  inset 0 -1px 0 rgba(0,0,0,0.4);
65
  position: relative;
 
68
  /* Kamera deligi */
69
  content: '';
70
  position: absolute;
71
+ top: 5px;
72
  left: 50%;
73
  transform: translateX(-50%);
74
+ width: 5px;
75
+ height: 5px;
76
  background: #0a0b0d;
77
  border-radius: 50%;
78
  box-shadow: inset 0 0 2px rgba(255,255,255,0.2);
 
82
  border-radius: 6px;
83
  overflow: hidden;
84
  position: relative;
85
+ min-height: 640px;
86
+ display: flex;
87
+ flex-direction: column;
88
  }
 
89
  .monitor .neck {
90
+ width: 72px;
91
+ height: 32px;
92
  margin: -2px auto 0;
93
  background: linear-gradient(180deg, #b9bdc4 0%, #8c9098 100%);
94
  border-radius: 0 0 8px 8px;
95
  box-shadow: 0 2px 4px rgba(0,0,0,0.15);
96
  }
 
97
  .monitor .base {
98
+ width: 240px;
99
+ height: 12px;
100
  margin: 0 auto;
101
  background: linear-gradient(180deg, #c9ccd2 0%, #9aa0a8 100%);
102
  border-radius: 50%;
103
+ box-shadow: 0 12px 24px rgba(0,0,0,0.16);
104
+ }
105
+ @media (max-width: 1000px) {
106
+ .monitor .screen { min-height: 0; }
107
  }
108
  @media (max-width: 700px) {
109
  .monitor .bezel { padding: 10px; border-radius: 12px; }
110
  .monitor .neck { width: 50px; height: 22px; }
111
  .monitor .base { width: 180px; height: 10px; }
 
112
  }
113
 
114
+ .panel-content {
 
 
 
 
 
 
 
115
  display: flex;
116
  flex-direction: column;
117
  align-items: center;
118
+ padding: 24px 22px 28px;
119
+ flex: 1;
120
  min-width: 0;
121
  }
122
+ .panel-content.center { justify-content: center; }
 
 
 
 
 
123
  .product-card {
124
  width: min(90%, 520px);
125
  background: #ffffff;
 
356
  </style>
357
  </head>
358
  <body>
359
+ <div class="desk">
360
+
361
+ <!-- SOL MONITOR: Asistan -->
362
+ <div class="monitor">
363
+ <div class="bezel">
364
+ <div class="screen">
365
+ <div class="panel-content">
366
+ <div class="brand">
367
+ <svg class="mark" viewBox="0 0 288.1 80" xmlns="http://www.w3.org/2000/svg" aria-label="Trek">
368
+ <g>
369
+ <polygon points="238.5,22.9 214.3,22.9 201.9,57.2 226.1,57.2 "/>
370
+ <polygon points="234.1,38.8 248.4,57.2 276.3,57.2 260.3,39.1 288.1,22.9 259.7,22.9 "/>
371
+ <path d="M206.6,29.5l2.4-6.6h-61.9l-8.5,23.6c-0.5,1.5-0.6,3.2,0.5,4.5c0.4,0.4,3.1,3.6,3.7,4.2c1,1.1,2.2,2,4.2,2h49.6l2.4-6.5h-34.7c-2.1,0-3.1-1.6-2.6-3.2l1.6-4.3h38.4l2.4-6.6h-38.4l2.6-7.1C168.3,29.4,206.6,29.4,206.6,29.5z"/>
372
+ <path d="M135.5,22.9H73.9L61.5,57.2h23.6l10-27.7h17.6c1.9,0,2.6,1.4,2.2,2.7c-0.4,1.4-1,3.1-1.5,4.1c-0.6,1.4-2,2.5-4.1,2.5s-16.5,0-16.5,0L107.1,57h27.1L122,43.3c0,0,4.9,0,7.3,0c3.4,0,5.4-1.8,6.3-4.1c1-2.6,3.3-8.9,4-11C140.9,25,138.9,22.9,135.5,22.9"/>
373
+ <polygon points="69.6,22.9 2.4,22.9 0,29.5 23.2,29.5 13.2,57.2 36,57.2 46,29.5 67.3,29.5 "/>
374
+ </g>
375
+ </svg>
376
+ <span class="label" lang="en">AI Assistant</span>
377
+ </div>
378
+ <h1>Sesli <span class="accent">Asistan</span></h1>
379
+ <div class="subtitle">Bisiklet · Stok · Fiyat · Anlık Yanıt</div>
380
+
381
+ <div class="stage">
382
+ <img id="avatarImg" src="/static/assistant.png" alt="Trek Asistan" />
383
+ <div id="ring" class="ring"></div>
384
+ <span class="corner tl"></span>
385
+ <span class="corner tr"></span>
386
+ <span class="corner bl"></span>
387
+ <span class="corner br"></span>
388
+ </div>
389
+
390
+ <div class="panel">
391
+ <div id="status" class="status disconnected"> Bağlantı Yok</div>
392
+ <div class="controls">
393
+ <button id="btnConnect">Konuşmaya Başla</button>
394
+ <button id="btnDisconnect" class="danger" disabled>Bitir</button>
395
+ </div>
396
+ </div>
397
+
398
+ <div class="footer"><span lang="en">Powered by Trek · Realtime AI</span></div>
399
+ </div>
400
  </div>
401
  </div>
402
+ <div class="neck"></div>
403
+ <div class="base"></div>
404
  </div>
405
 
406
+ <!-- SAG MONITOR: Urun Vitrini -->
407
+ <div class="monitor">
408
+ <div class="bezel">
409
+ <div class="screen">
410
+ <div class="panel-content center">
411
+ <div class="product-section-title"><span class="accent">●</span> Ürün Vitrini</div>
412
+ <div class="product-card" id="productCard">
413
+ <div class="empty" id="productEmpty">
414
+ Bahsedilen ürün burada gösterilir
415
+ </div>
416
+ </div>
417
+ </div>
418
  </div>
419
  </div>
420
+ <div class="neck"></div>
421
+ <div class="base"></div>
422
  </div>
423
+
424
+ </div><!-- /desk -->
 
 
 
 
425
 
426
  <script>
427
  const SAMPLE_RATE = 24000;