diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index b077b11..051b909 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -14,7 +14,11 @@ { "title": "keeb", "width": 800, - "height": 600 + "height": 700, + "minWidth": 800, + "minHeight": 700, + "resizable": true, + "center": true } ], "security": { diff --git a/src/app/app.component.css b/src/app/app.component.css index d6bf8c6..f9a4cda 100644 --- a/src/app/app.component.css +++ b/src/app/app.component.css @@ -1,6 +1,4 @@ -.logo.angular:hover { - filter: drop-shadow(0 0 2em #e32727); -} + :root { font-family: Inter, Avenir, Helvetica, Arial, sans-serif; font-size: 16px; @@ -33,10 +31,6 @@ transition: 0.75s; } -.logo.tauri:hover { - filter: drop-shadow(0 0 2em #24c8db); -} - .row { display: flex; justify-content: center; @@ -118,6 +112,7 @@ button { padding: 20px; background: #f5f5f5; border-radius: 10px; + margin: 20px auto; } .keyboard-row { diff --git a/src/app/keyboards/circle-keyboard.component.css b/src/app/keyboards/circle-keyboard.component.css new file mode 100644 index 0000000..d7ed488 --- /dev/null +++ b/src/app/keyboards/circle-keyboard.component.css @@ -0,0 +1,147 @@ +.circle-keyboard-container { + position: relative; + width: 400px; + height: 400px; + margin: 50px auto; + background: #f5f5f5; +} + +/* Center Button Container */ +.center-button-container { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 140px; + height: 140px; + z-index: 1; +} + +/* Center Button Sections */ +.center-section { + position: absolute; + background: white; + font-size: 20px; + font-weight: bold; + cursor: pointer; + transition: background 0.2s; + border: 2px solid #ddd; + display: flex; + align-items: center; + justify-content: center; + z-index: 10; + box-shadow: 0 2px 4px rgba(0,0,0,0.1); +} + +/* Top-left: Backspace (triangle) */ +.top-left{ + top: 0; + left: 0; + width: 70px; + height: 70px; + border-radius: 70px 0 0 0; +} + +/* Top-right: Enter*/ +.top-right { + top: 0; + right: 0; + width: 70px; + height: 70px; + border-radius: 0 70px 0 0; +} + +/* Bottom: Space */ +.bottom-left { + bottom: 0; + left: 0; + width: 70px; + height: 70px; + border-radius: 0 0 0 70px; +} + +.bottom-left.active { + background: #4CAF50 !important; + color: white; + border-color: #45a049; +} + +.bottom-right { + bottom: 0; + right: 0; + width: 70px; + height: 70px; + border-radius: 0 0 70px 0; +} + +.middle-left { + top: 50%; + left: 50%; + transform: translate(-100%, -50%); /* Komplett links von der Mitte */ + width: 30px; /* Halbe Breite */ + height: 55px; /* Volle Höhe */ + border-radius: 35px 0 0 35px; /* Linke Hälfte eines Kreises */ + z-index: 15; /* Über anderen Buttons */ +} + +.middle-right { + top: 50%; + left: 50%; + transform: translate(0%, -50%); /* Direkt rechts von der Mitte */ + width: 30px; /* Halbe Breite */ + height: 55px; /* Volle Höhe */ + border-radius: 0 35px 35px 0; /* Rechte Hälfte eines Kreises */ + z-index: 15; /* Über anderen Buttons */ +} + +/* 8 Circle Buttons */ +.circle-button { + position: absolute; + top: 50%; + left: 50%; + width: 70px; + height: 70px; + margin: -35px 0 0 -35px; + border-radius: 50%; + border: 2px solid #ddd; + background: white; + font-size: 24px; + font-weight: bold; + cursor: pointer; + transition: background 0.2s, border-color 0.2s; + box-shadow: 0 2px 8px rgba(0,0,0,0.15); + z-index: 1; +} + +.second-ring { + width: 50px; + height: 50px; + font-size: 20px; + font-weight: normal; + margin: -25px 0 0 -25px; +} + +.third-ring { + width: 40px; + height: 40px; + font-size: 18px; + font-weight: normal; + margin: -20px 0 0 -20px; +} + +.fourth-ring { + width: 30px; + height: 30px; + font-size: 16px; + font-weight: lighter; + margin: -20px 0 0 -20px; +} + +.circle-button:hover, .center-section:hover { + background: #e8e8e8; + border-color: #999; +} + +.circle-button:active, .center-section:active { + background: #d0d0d0; +} diff --git a/src/app/keyboards/circle-keyboard.component.ts b/src/app/keyboards/circle-keyboard.component.ts index 7494420..391281c 100644 --- a/src/app/keyboards/circle-keyboard.component.ts +++ b/src/app/keyboards/circle-keyboard.component.ts @@ -33,6 +33,16 @@ import { CommonModule } from '@angular/common'; class="center-section bottom-left"> ⇧ + + @@ -43,130 +53,34 @@ import { CommonModule } from '@angular/common'; {{ shiftActive ? key : key.toLowerCase() }} + + + + + + `, - styles: [` - .circle-keyboard-container { - position: relative; - width: 400px; - height: 400px; - margin: 50px auto; - } - - /* Center Button Container */ - .center-button-container { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - width: 140px; - height: 140px; - z-index: 1; - } - - /* Center Button Sections */ - .center-section { - position: absolute; - background: white; - font-size: 20px; - font-weight: bold; - cursor: pointer; - transition: background 0.2s; - border: 2px solid #ddd; - display: flex; - align-items: center; - justify-content: center; - z-index: 10; - box-shadow: 0 2px 4px rgba(0,0,0,0.1); - } - - /* Top-left: Backspace (triangle) */ - .top-left{ - top: 0; - left: 0; - width: 70px; - height: 70px; - border-radius: 70px 0 0 0; - } - - /* Top-right: Enter*/ - .top-right { - top: 0; - right: 0; - width: 70px; - height: 70px; - border-radius: 0 70px 0 0; - } - - /* Bottom: Space */ - .bottom-left { - bottom: 0; - left: 0; - width: 70px; - height: 70px; - border-radius: 0 0 0 70px; - } - - .bottom-left.active { - background: #4CAF50 !important; - color: white; - border-color: #45a049; - } - - .bottom-right { - bottom: 0; - right: 0; - width: 70px; - height: 70px; - border-radius: 0 0 70px 0; - } - - /* 8 Circle Buttons */ - .circle-button { - position: absolute; - top: 50%; - left: 50%; - width: 60px; - height: 60px; - margin: -30px 0 0 -30px; - border-radius: 50%; - border: 2px solid #ddd; - background: white; - font-size: 20px; - font-weight: bold; - cursor: pointer; - transition: background 0.2s, border-color 0.2s; - box-shadow: 0 2px 8px rgba(0,0,0,0.15); - z-index: 1; - } - - .third-ring { - width: 40px; - height: 40px; - margin: -20px 0 0 -20px; - } - - .fourth-ring { - width: 30px; - height: 30px; - margin: -20px 0 0 -20px; - } - - .circle-button:hover, .center-section:hover { - background: #e8e8e8; - border-color: #999; - } - - .circle-button:active, .center-section:active { - background: #d0d0d0; - } - `] + styleUrl: './circle-keyboard.component.css' }) export class CircleKeyboardComponent { @Input() shiftActive = false; @@ -177,11 +91,11 @@ export class CircleKeyboardComponent { circleKeysFirst = ['E', 'T', 'A', 'O', 'N', 'I', 'H', 'S']; circleKeysSecond = ['R', 'L', 'D', 'U', 'C', 'M', 'W', 'Y']; circleKeysThird = ['F', 'G', 'P', 'B', 'V', 'K', 'J', 'X']; - circleKeysFourth = ['Q', 'Z', ',', '.']; + circleKeysFourth = ['Q', 'Z']; // Calculate position for each button in circle - getCirclePositionFromTop(index: number, radius: number): string { - const angle = (index * 45) - 90; // Start from top (0°), 45° apart + getCirclePositionFromTop(index: number, radius: number, offset: number = 0): string { + const angle = ((index * 45) - 90) + offset; // Start from top (0°), 45° apart const angleRad = (angle * Math.PI) / 180; const x = Math.cos(angleRad) * radius; const y = Math.sin(angleRad) * radius;