fix: responsive layout for url cleaner and sniffer icon alignment

This commit is contained in:
2026-02-27 07:02:58 +00:00
parent a5fc242a97
commit a3bc069029
4 changed files with 62 additions and 3 deletions

View File

@@ -51,7 +51,9 @@ const clearText = () => {
<div class="tool-panel"> <div class="tool-panel">
<div class="tool-header"> <div class="tool-header">
<h2 class="tool-title">Clipboard Sniffer</h2> <h2 class="tool-title">Clipboard Sniffer</h2>
<ExtensionStatus :isReady="isExtensionReady" class="extension-indicator" /> <div class="extension-indicator-wrapper">
<ExtensionStatus :isReady="isExtensionReady" />
</div>
</div> </div>
<div class="controls"> <div class="controls">
@@ -145,10 +147,11 @@ const clearText = () => {
border-color: var(--primary-accent); border-color: var(--primary-accent);
} }
.extension-indicator { .extension-indicator-wrapper {
position: absolute; position: absolute;
right: 0; right: 0;
top: 50%; top: 50%;
transform: translateY(-50%); transform: translateY(-50%);
display: flex;
} }
</style> </style>

View File

@@ -305,6 +305,21 @@ onUnmounted(() => {
gap: 1rem; gap: 1rem;
} }
@media (max-width: 640px) {
.input-wrapper {
flex-direction: column;
}
.watch-toggle {
justify-content: center;
}
.toggle-btn {
width: 100%;
justify-content: center;
}
}
.url-input { .url-input {
flex: 1; flex: 1;
padding: 0.8rem 1rem; padding: 0.8rem 1rem;

View File

@@ -299,6 +299,12 @@ const resetToDefault = (ruleId) => {
align-items: center; align-items: center;
} }
@media (max-width: 640px) {
.modal-header {
padding: 0.8rem 1.2rem;
}
}
.modal-header h3 { .modal-header h3 {
margin: 0; margin: 0;
font-size: 1.4rem; font-size: 1.4rem;
@@ -325,6 +331,12 @@ const resetToDefault = (ruleId) => {
overflow-y: auto; overflow-y: auto;
} }
@media (max-width: 640px) {
.modal-body {
padding: 1rem 1.2rem;
}
}
.description { .description {
color: var(--text-secondary); color: var(--text-secondary);
margin-bottom: 1.5rem; margin-bottom: 1.5rem;
@@ -353,6 +365,29 @@ const resetToDefault = (ruleId) => {
margin-bottom: 0.8rem; margin-bottom: 0.8rem;
} }
@media (max-width: 640px) {
.form-row {
flex-direction: column;
}
.checkbox-row {
flex-direction: column;
align-items: stretch;
gap: 1rem;
}
.checkbox-group {
flex-direction: column;
align-items: flex-start;
gap: 0.8rem;
}
.btn-neon {
width: 100%;
justify-content: center;
}
}
.checkbox-row { .checkbox-row {
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;

View File

@@ -1,3 +1,9 @@
<script>
export default {
inheritAttrs: false
}
</script>
<script setup> <script setup>
import { ref } from 'vue' import { ref } from 'vue'
import { Plug, Plus, X } from 'lucide-vue-next' import { Plug, Plus, X } from 'lucide-vue-next'
@@ -10,7 +16,7 @@ const showModal = ref(false)
</script> </script>
<template> <template>
<div class="extension-status" :class="{ 'is-ready': isReady }" @click="showModal = true" :title="isReady ? 'Extension Connected' : 'Extension Not Connected'"> <div class="extension-status" v-bind="$attrs" :class="{ 'is-ready': isReady }" @click="showModal = true" :title="isReady ? 'Extension Connected' : 'Extension Not Connected'">
<Plug v-if="isReady" size="18" /> <Plug v-if="isReady" size="18" />
<Plus v-else size="18" /> <Plus v-else size="18" />
</div> </div>