diff --git a/src/App.jsx b/src/App.jsx index 96bbcda..2c3518f 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -150,7 +150,7 @@ const css = ` .btn-primary:active { filter: brightness(.85); transform: scale(.97); } .btn-ghost { background: var(--surface); color: var(--text-primary); border: 1px solid var(--border); } .btn-ghost:active { background: var(--border); } - .btn-icon { width: 36px; height: 36px; border-radius: 7px; display: flex; align-items: center; + .btn-icon { width: 44px; height: 44px; border-radius: 8px; display: flex; align-items: center; justify-content: center; background: var(--surface); border: 1px solid var(--border); cursor: pointer; font-size: 15px; transition: all .12s; flex-shrink: 0; } .btn-icon:active { transform: scale(.93); } @@ -222,7 +222,7 @@ const css = ` .screen-title { font-size: 11px; } .screen-body { padding: 8px 10px; gap: 8px; } .knob-wrap { transform: scale(.9); } - .btn-icon { width: 24px; height: 24px; font-size: 10px; } + .btn-icon { width: 44px; height: 44px; font-size: 12px; } } /* ── Responsive: landscape short ── */ @@ -377,7 +377,7 @@ function ParameterPanel({ block,params,onParamChange,onParamChangeEnd,viewMode,o
{onFocus&&} -
@@ -422,7 +422,7 @@ function CapturesScreen({onClose}){ const doSearch=async()=>{if(!query.trim())return;setLoading(true);try{const data=tab==="models"?await API.searchModels(query):await API.searchIrs(query);setResults(data.results||[]);}catch{setResults([]);}setLoading(false);}; const install=async(item)=>{try{if(tab==="models"){await API.installModel(item.download_url,item.name);}else{await API.installIr(item.download_url,item.name);}API.listModels().then(d=>setModels(d.models||[])).catch(()=>{});}catch(e){alert("Install failed: "+e.message);}}; return(
-
Downloads
+
Downloads
@@ -831,7 +831,7 @@ export default function App(){ padding:isLandscapeShort?"2px 10px":"4px 12px",background:T.panel,borderBottom:`1px solid ${T.border}`,flexShrink:0,minHeight:isLandscapeShort?26:32}}>
{/* Sidebar toggle (narrow only) */} - {isNarrow&&} @@ -839,11 +839,11 @@ export default function App(){ background:state.connected?T.green:T.red,boxShadow:`0 0 6px ${state.connected?T.green:T.red}`}}/> {!isNarrow&&{state.connected?"CONNECTED":"OFFLINE"}} {/* Undo/Redo */} - - @@ -859,34 +859,34 @@ export default function App(){ CPU {state.cpu_percent!=null?`${state.cpu_percent}%`:"β€”"}
}
- -
{["stomp","preset"].map(m=>())}
- -
- @@ -1027,7 +1027,7 @@ export default function App(){ {view==="captures"&&setView("main")}/>} {view==="presets"&&(
-
Presets
+
Presets
{presets.map((p,i)=>(
πŸ’Ύ Save Preset
- +
@@ -1133,12 +1133,12 @@ export default function App(){
πŸ”Œ Bypass / Control
- +
🚫 Global Bypass - @@ -1149,7 +1149,7 @@ export default function App(){ {blocks.map(b=>(
{b.name||b.type} - @@ -1180,12 +1180,12 @@ export default function App(){
πŸ“Ά Wireless
- +
πŸ“Ά Wi‑Fi - +
Use pedal as access point or connect to existing network via the settings panel. @@ -1193,7 +1193,7 @@ export default function App(){
πŸ”΅ Bluetooth - +
Bluetooth MIDI is enabled. Pair with your mobile device or MIDI controller.
@@ -1208,7 +1208,7 @@ export default function App(){
+ Add Block
- +
{Object.entries(BLOCK_DISPLAY_NAMES).filter(([k])=>!["loop","split","merge"].includes(k)).map(([type,name])=>( diff --git a/src/FocusView.jsx b/src/FocusView.jsx index 096c888..62831d5 100644 --- a/src/FocusView.jsx +++ b/src/FocusView.jsx @@ -164,7 +164,7 @@ function FocusSlider({ label, value = 50, onChange, onChangeEnd, min = 0, max = {label}
@@ -178,7 +178,7 @@ function SettingsSlider({ label, value, min, max, unit, onChange }) { minWidth: 36, textAlign: "center", }}>{value}{unit} @@ -392,7 +392,7 @@ export default function GlobalSettings({ onClose, onMasterVolume, onAudioProfile
- +
Settings
{!loaded && Loading…} diff --git a/src/index.css b/src/index.css index c6eaf2b..f68ccaf 100644 --- a/src/index.css +++ b/src/index.css @@ -42,9 +42,11 @@ body { background: #0A0A0C; color: #F0EDE6; font-family: 'Space Grotesk', sans-s .btn-ghost { background: transparent; border-color: transparent; } .btn-danger { border-color: #E06060; background: rgba(224,96,96,.15); color: #E06060; } .btn-icon { display: inline-flex; align-items: center; justify-content: center; - width: 28px; height: 28px; border-radius: 5px; border: 1px solid #2A2A32; + width: 44px; height: 44px; border-radius: 8px; border: 1px solid #2A2A32; background: #1C1C22; cursor: pointer; transition: all .12s; touch-action: manipulation; } .btn-icon:active { transform: scale(.92); } +.btn:focus-visible { outline: 2px solid #3AB87A; outline-offset: 2px; } +.btn-icon:focus-visible { outline: 2px solid #3AB87A; outline-offset: 2px; } /* Slide panel (bottom drawer) */ .slide-panel { position: fixed; inset: 0; background: rgba(0,0,0,.7); z-index: 100; @@ -186,9 +188,9 @@ body { background: #0A0A0C; color: #F0EDE6; font-family: 'Space Grotesk', sans-s font-size: 11px; } .btn-icon { - width: 24px; - height: 24px; - font-size: 10px; + width: 44px; + height: 44px; + font-size: 12px; } .card { padding: 10px;