CSS games
This commit is contained in:
@@ -8,14 +8,15 @@ body {
|
|||||||
.extension-title {
|
.extension-title {
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
color: #4a4a4a;
|
color: #4a4a4a;
|
||||||
margin-bottom: 20px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.form-container {
|
.form-container {
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
margin: 10px 0;
|
margin-bottom: 10px;
|
||||||
padding: 20px;
|
padding: 10px;
|
||||||
|
|
||||||
box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.1);
|
box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -38,6 +39,14 @@ body {
|
|||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.btn-container {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
margin-left: 3px;
|
||||||
|
margin-right: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
.btn {
|
.btn {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
padding: 8px 16px;
|
padding: 8px 16px;
|
||||||
@@ -46,9 +55,9 @@ body {
|
|||||||
border: none;
|
border: none;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
margin: 5px 0;
|
margin: 5px 5px 0 5px;
|
||||||
transition: background-color 0.3s;
|
transition: background-color 0.3s;
|
||||||
width: 300px;
|
width: 200px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn:hover {
|
.btn:hover {
|
||||||
@@ -70,7 +79,6 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#controls {
|
#controls {
|
||||||
margin-top: 30px;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
@@ -78,7 +86,8 @@ body {
|
|||||||
.control {
|
.control {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 5px;
|
||||||
|
margin-top: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.input {
|
.input {
|
||||||
@@ -103,7 +112,7 @@ body {
|
|||||||
.settings-text {
|
.settings-text {
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
color: #4a4a4a;
|
color: #4a4a4a;
|
||||||
margin-bottom: 20px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.settings-container {
|
.settings-container {
|
||||||
@@ -115,7 +124,8 @@ body {
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 3px;
|
||||||
|
margin-top: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.settings-item-text {
|
.settings-item-text {
|
||||||
@@ -126,8 +136,8 @@ body {
|
|||||||
.switch {
|
.switch {
|
||||||
position: relative;
|
position: relative;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 60px;
|
width: 40px;
|
||||||
height: 34px;
|
height: 24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.switch input {
|
.switch input {
|
||||||
@@ -150,8 +160,8 @@ body {
|
|||||||
.slider:before {
|
.slider:before {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
content: "";
|
content: "";
|
||||||
height: 26px;
|
height: 16px;
|
||||||
width: 26px;
|
width: 16px;
|
||||||
left: 4px;
|
left: 4px;
|
||||||
bottom: 4px;
|
bottom: 4px;
|
||||||
background-color: white;
|
background-color: white;
|
||||||
@@ -163,11 +173,11 @@ input:checked + .slider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
input:checked + .slider:before {
|
input:checked + .slider:before {
|
||||||
transform: translateX(26px);
|
transform: translateX(16px);
|
||||||
}
|
}
|
||||||
|
|
||||||
.slider.round {
|
.slider.round {
|
||||||
border-radius: 34px;
|
border-radius: 24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.slider.round:before {
|
.slider.round:before {
|
||||||
|
|||||||
@@ -1,59 +1,62 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<script src="/scripts/jquery.js"></script>
|
<script src="/scripts/jquery.js"></script>
|
||||||
<script src="/scripts/utils.js" type="module"></script>
|
<script src="/scripts/utils.js" type="module"></script>
|
||||||
<script src="/popup/popup.js" type="module"></script>
|
<script src="/popup/popup.js" type="module"></script>
|
||||||
<link rel="stylesheet" href="/popup/popup.css" />
|
<link rel="stylesheet" href="/popup/popup.css"/>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<h1 class="extension-title">LeafLLM: an AI-powered Overleaf</h1>
|
<h1 class="extension-title">LeafLLM: an AI-powered Overleaf</h1>
|
||||||
<div id="controls" class="form-container">
|
<div id="controls" class="form-container">
|
||||||
<div class="control">
|
<div class="control">
|
||||||
<div class="input"><span>ALT</span><span>I</span></div>
|
<div class="input" id="shortcut-Improve"><span>ALT</span><span>I</span></div>
|
||||||
<div class="effect">Improve selected text.</div>
|
<div class="effect">Improve selected text.</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="control">
|
<div class="control">
|
||||||
<div class="input"><span>ALT</span><span>C</span></div>
|
<div class="input" id="shortcut-Complete"><span>ALT</span><span>C</span></div>
|
||||||
<div class="effect">Complete selected text.</div>
|
<div class="effect">Complete selected text.</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="control">
|
<div class="control">
|
||||||
<div class="input"><span>ALT</span><span>A</span></div>
|
<div class="input" id="shortcut-Ask"><span>ALT</span><span>A</span></div>
|
||||||
<div class="effect">Ask GPT.</div>
|
<div class="effect">Ask GPT.</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="settings-form" class="form-container">
|
<div id="settings-form" class="form-container">
|
||||||
<div class="settings-text">Settings</div>
|
<div class="settings-text">Settings</div>
|
||||||
<div class="settings-container">
|
<div class="settings-container">
|
||||||
<div class="settings-item">
|
<div class="settings-item">
|
||||||
<div class="settings-item-text">Text Improvement</div>
|
<div class="settings-item-text">Text Improvement</div>
|
||||||
<label class="switch">
|
<label class="switch">
|
||||||
<input name="text-Improve" class="settings-item-checkbox" type="checkbox" />
|
<input name="text-Improve" class="settings-item-checkbox" type="checkbox"/>
|
||||||
<span class="slider round"></span>
|
<span class="slider round"></span>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="settings-item">
|
<div class="settings-item">
|
||||||
<div class="settings-item-text">Text Completion</div>
|
<div class="settings-item-text">Text Completion</div>
|
||||||
<label class="switch">
|
<label class="switch">
|
||||||
<input name="text-Complete" class="settings-item-checkbox" type="checkbox" />
|
<input name="text-Complete" class="settings-item-checkbox" type="checkbox"/>
|
||||||
<span class="slider round"></span>
|
<span class="slider round"></span>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="settings-item">
|
<div class="settings-item">
|
||||||
<div class="settings-item-text">Ask</div>
|
<div class="settings-item-text">Ask</div>
|
||||||
<label class="switch">
|
<label class="switch">
|
||||||
<input name="text-Ask" class="settings-item-checkbox" type="checkbox" />
|
<input name="text-Ask" class="settings-item-checkbox" type="checkbox"/>
|
||||||
<span class="slider round"></span>
|
<span class="slider round"></span>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="api-token-form" class="form-container">
|
<div id="api-token-form" class="form-container">
|
||||||
<div class="api-token-text"><span>API Token is </span><span class="api-token-status">not set</span></div>
|
<div class="api-token-text"><span>API Token is </span><span class="api-token-status">not set</span></div>
|
||||||
<input class="api-token-input" name="api-token" placeholder="OpenAI API Token" type="text" />
|
<input class="api-token-input" name="api-token" placeholder="OpenAI API Token" type="text"/>
|
||||||
<div class="message">To get an API key, go to <a href="https://platform.openai.com/account/api-keys">https://platform.openai.com/account/api-keys</a> </div>
|
<div class="message">To get an API key, go to <a href="https://platform.openai.com/account/api-keys">https://platform.openai.com/account/api-keys</a>
|
||||||
|
</div>
|
||||||
|
<div class="btn-container">
|
||||||
<button class="submit btn">Set API Token</button>
|
<button class="submit btn">Set API Token</button>
|
||||||
<button class="clear btn">Reset API Token</button>
|
<button class="clear btn">Reset API Token</button>
|
||||||
</div>
|
</div>
|
||||||
<div id="message-box" class="message-box"></div>
|
</div>
|
||||||
</body>
|
<div id="message-box" class="message-box"></div>
|
||||||
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -27,8 +27,11 @@ async function refreshStorage() {
|
|||||||
if (bindingFailures.length > 0) {
|
if (bindingFailures.length > 0) {
|
||||||
addErrorMessage(`Could not bound the following shortcuts:\n${bindingFailures}.\nYou can set it manually at <a href="chrome://extensions/shortcuts">chrome://extensions/shortcuts</a>.`)
|
addErrorMessage(`Could not bound the following shortcuts:\n${bindingFailures}.\nYou can set it manually at <a href="chrome://extensions/shortcuts">chrome://extensions/shortcuts</a>.`)
|
||||||
}
|
}
|
||||||
Object.values(settings).forEach(({ key, status }) => {
|
Object.values(settings).forEach(({ key, status, shortcut }) => {
|
||||||
$(`#settings-form input[name='text-${key}']:checkbox`).prop('checked', status === 'enabled')
|
$(`#settings-form input[name='text-${key}']:checkbox`).prop('checked', status === 'enabled')
|
||||||
|
let shortcut2 = status === 'error' ? 'not set' : shortcut
|
||||||
|
console.log(`writing ${shortcut2} to shortcut-${key}`)
|
||||||
|
$(`#shortcut-${key}`).html(`<span>${shortcut2}</span>`)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -51,7 +54,6 @@ async function handleAPITokenSet(event) {
|
|||||||
try {
|
try {
|
||||||
chrome.storage.local.set({ openAIAPIKey }).then(refreshStorage)
|
chrome.storage.local.set({ openAIAPIKey }).then(refreshStorage)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log(error)
|
|
||||||
addErrorMessage('Failed to set API Token.')
|
addErrorMessage('Failed to set API Token.')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user