10 changed files with 0 additions and 1009 deletions
Binary file not shown.
@ -1,43 +0,0 @@ |
|||||
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { |
|
||||
url = message.url; |
|
||||
action = message.action; |
|
||||
console.log({ url, action }); |
|
||||
if (action === 'save') { |
|
||||
fetch(`https://pod.gregoryleeman.com/add?url=${encodeURIComponent(url)}`, { |
|
||||
method: 'GET', |
|
||||
headers: { |
|
||||
'Content-Type': 'application/json' |
|
||||
} |
|
||||
}) |
|
||||
.then((response) => response.json()) |
|
||||
.then((data) => { |
|
||||
console.log({ data }); |
|
||||
sendResponse({ success: true, data }); |
|
||||
}) |
|
||||
.catch((error) => { |
|
||||
console.error({ error }); |
|
||||
sendResponse({ success: false, error }); |
|
||||
}); |
|
||||
return true; |
|
||||
} else if ( action == 'check' ) { |
|
||||
fetch(`https://pod.gregoryleeman.com/check?url=${encodeURIComponent(url)}`, { |
|
||||
method: 'GET', |
|
||||
headers: { |
|
||||
'Content-Type': 'application/json' |
|
||||
} |
|
||||
}) |
|
||||
.then((response) => response.json()) |
|
||||
.then((data) => { |
|
||||
console.log({ data }); |
|
||||
sendResponse({ success: true, data }); |
|
||||
}) |
|
||||
.catch((error) => { |
|
||||
console.error({ error }); |
|
||||
sendResponse({ success: false, error }); |
|
||||
}); |
|
||||
return true; |
|
||||
} else { |
|
||||
sendResponse({ success: false, error: 'Invalid action' }); |
|
||||
} |
|
||||
}); |
|
||||
|
|
@ -1,143 +0,0 @@ |
|||||
// element.js
|
|
||||
|
|
||||
export class Element { |
|
||||
constructor(elementOrTag) { |
|
||||
if (typeof elementOrTag === 'string') { |
|
||||
this.element = document.createElement(elementOrTag); |
|
||||
} else if (elementOrTag instanceof Element) { |
|
||||
return elementOrTag; |
|
||||
} else if (elementOrTag instanceof HTMLElement) { |
|
||||
this.element = elementOrTag; |
|
||||
} else { |
|
||||
throw new Error("Element expects a tag name or an HTMLElement."); |
|
||||
} |
|
||||
|
|
||||
return this; |
|
||||
} |
|
||||
|
|
||||
setProperty(propertyName, value) { |
|
||||
this.element[propertyName] = value; |
|
||||
return this; |
|
||||
} |
|
||||
|
|
||||
getProperty(propertyName) { |
|
||||
return this.element[propertyName]; |
|
||||
} |
|
||||
|
|
||||
setText(text) { |
|
||||
this.setProperty('innerText', text); |
|
||||
return this; |
|
||||
} |
|
||||
|
|
||||
getText() { |
|
||||
return this.getProperty('innerText'); |
|
||||
} |
|
||||
|
|
||||
getValue() { |
|
||||
return this.element.value; |
|
||||
} |
|
||||
|
|
||||
setInnerHtml(html) { |
|
||||
this.setProperty('innerHTML', html); |
|
||||
return this; |
|
||||
} |
|
||||
|
|
||||
getHtml() { |
|
||||
return this.getProperty('innerHTML'); |
|
||||
} |
|
||||
|
|
||||
setAttribute(attributeName, value) { |
|
||||
this.element.setAttribute(attributeName, value); |
|
||||
return this; |
|
||||
} |
|
||||
|
|
||||
removeAttribute(attributeName) { |
|
||||
this.element.removeAttribute(attributeName); |
|
||||
return this; |
|
||||
} |
|
||||
|
|
||||
setId(id) { |
|
||||
this.element.id = id; |
|
||||
return this; |
|
||||
} |
|
||||
|
|
||||
addClass(...classNames) { |
|
||||
if (classNames.length === 1 && classNames[0] instanceof Array) { |
|
||||
classNames = classNames[0]; |
|
||||
classNames.forEach(className => this.element.classList.add(className)); |
|
||||
} else { |
|
||||
this.element.classList.add(...classNames); |
|
||||
} |
|
||||
|
|
||||
return this; |
|
||||
} |
|
||||
|
|
||||
removeClass(...className) { |
|
||||
if (className.length === 1 && className[0] instanceof Array) { |
|
||||
className = className[0]; |
|
||||
className.forEach(c => this.element.classList.remove(c)); |
|
||||
} else { |
|
||||
console.log(className); |
|
||||
this.element.classList.remove(...className); |
|
||||
} |
|
||||
|
|
||||
return this; |
|
||||
} |
|
||||
|
|
||||
appendChild(child) { |
|
||||
if (child instanceof Array) { |
|
||||
child.forEach(c => this.appendChild(c)); |
|
||||
} else if (child instanceof Element) { |
|
||||
this.element.appendChild(child.element); |
|
||||
} else if (child instanceof HTMLElement) { |
|
||||
this.element.appendChild(child); |
|
||||
} else if (typeof child === 'function') { |
|
||||
this.element.appendChild(child()); |
|
||||
} else { |
|
||||
throw new Error('appendChild expects an Element, HTMLElement, or function.'); |
|
||||
} |
|
||||
|
|
||||
return this; |
|
||||
} |
|
||||
|
|
||||
addEventListener(eventType, listener, options) { |
|
||||
this.element.addEventListener(eventType, listener, options); |
|
||||
return this; |
|
||||
} |
|
||||
|
|
||||
appendTo(parent) { |
|
||||
if (parent instanceof Element) { |
|
||||
parent.get().appendChild(this.element); |
|
||||
} else if (parent instanceof HTMLElement) { |
|
||||
parent.appendChild(this.element); |
|
||||
} |
|
||||
return this; |
|
||||
} |
|
||||
|
|
||||
prependTo(parent) { |
|
||||
if (parent instanceof Element) { |
|
||||
parent.get().prepend(this.element); |
|
||||
} else if (parent instanceof HTMLElement) { |
|
||||
parent.prepend(this.element); |
|
||||
} |
|
||||
return this; |
|
||||
} |
|
||||
|
|
||||
classList() { |
|
||||
return this.element.classList; |
|
||||
} |
|
||||
|
|
||||
get() { |
|
||||
return this.element; |
|
||||
} |
|
||||
|
|
||||
remove() { |
|
||||
this.element.remove(); |
|
||||
} |
|
||||
|
|
||||
clear() { |
|
||||
this.element.innerHTML = ''; |
|
||||
return this; |
|
||||
} |
|
||||
|
|
||||
} |
|
Before Width: | Height: | Size: 27 KiB |
@ -1,10 +0,0 @@ |
|||||
<!DOCTYPE html> |
|
||||
<html lang="en" style="width: 260px; height: 120px;"> |
|
||||
<head> |
|
||||
<meta charset="UTF-8"> |
|
||||
<link rel="stylesheet" href="style.css"> |
|
||||
</head> |
|
||||
<body> |
|
||||
<script type="module" src="script.js"></script> |
|
||||
</body> |
|
||||
</html> |
|
@ -1,31 +0,0 @@ |
|||||
{ |
|
||||
"manifest_version": 3, |
|
||||
"author": "Gregory Leeman", |
|
||||
"background": { |
|
||||
"service_worker": "background.js" |
|
||||
}, |
|
||||
"action": { |
|
||||
"default_icon": "icon.png", |
|
||||
"default_popup": "index.html" |
|
||||
}, |
|
||||
"icons": { |
|
||||
"128": "icon.png" |
|
||||
}, |
|
||||
"description": "Save to Podcasts", |
|
||||
"name": "Pod Helper", |
|
||||
"permissions": [ |
|
||||
"contextMenus", |
|
||||
"clipboardWrite", |
|
||||
"activeTab", |
|
||||
"scripting", |
|
||||
"tabs" |
|
||||
], |
|
||||
"version": "1.0", |
|
||||
"web_accessible_resources": [ |
|
||||
{ |
|
||||
"resources": [ "style.css" ], |
|
||||
"matches": [ "<all_urls>" ] |
|
||||
} |
|
||||
], |
|
||||
"host_permissions": ["https://pod.gregoryleeman.com/*"] |
|
||||
} |
|
@ -1,81 +0,0 @@ |
|||||
// script.js
|
|
||||
|
|
||||
import { Element } from './element.js'; |
|
||||
|
|
||||
const body = new Element(document.body) |
|
||||
.addClass( |
|
||||
'bg-slate-900', |
|
||||
'text-slate-500', |
|
||||
'flex', |
|
||||
'flex-col', |
|
||||
'items-center', |
|
||||
'justify-center', |
|
||||
'w-screen', |
|
||||
'h-screen', |
|
||||
); |
|
||||
|
|
||||
const urlElement = new Element('span') |
|
||||
.appendTo(body); |
|
||||
|
|
||||
const saveButton = new Element('span') |
|
||||
.appendTo(body) |
|
||||
.addClass( |
|
||||
'bg-slate-500', |
|
||||
'rounded', |
|
||||
) |
|
||||
.setText('Checking...'); |
|
||||
|
|
||||
chrome.tabs.query({ active: true, currentWindow: true }, function(tabs) { |
|
||||
const tab = tabs[0]; |
|
||||
const url = tab.url |
|
||||
console.log('URL:', url); |
|
||||
urlElement.setText(url); |
|
||||
|
|
||||
chrome.runtime.sendMessage({ action: 'check', url }, (response) => { |
|
||||
if (response.success) { |
|
||||
if (response.data.exists) { |
|
||||
saveButton |
|
||||
.setText('Saved!') |
|
||||
.addClass('bg-green-600') |
|
||||
.removeClass( |
|
||||
'hover:bg-slate-400', |
|
||||
'bg-slate-500', |
|
||||
'cursor-pointer', |
|
||||
); |
|
||||
} else { |
|
||||
saveButton |
|
||||
.setText('Save') |
|
||||
.addClass( |
|
||||
'hover:bg-slate-400', |
|
||||
'cursor-pointer', |
|
||||
) |
|
||||
.addEventListener('click', () => { |
|
||||
chrome.runtime.sendMessage({ action: 'save', url }, (response) => { |
|
||||
if (response.success) { |
|
||||
saveButton.setText('Saved!'). |
|
||||
addClass('bg-green-600'). |
|
||||
removeClass( |
|
||||
'hover:bg-slate-400', |
|
||||
'bg-slate-500', |
|
||||
'cursor-pointer', |
|
||||
); |
|
||||
} else { |
|
||||
saveButton.setText('Error!'). |
|
||||
addClass('bg-red-500'). |
|
||||
removeClass( |
|
||||
'hover:bg-slate-400', |
|
||||
'bg-slate-500', |
|
||||
'cursor-pointer', |
|
||||
); |
|
||||
} |
|
||||
}); |
|
||||
}) |
|
||||
} |
|
||||
} else { |
|
||||
saveButton |
|
||||
.setText('Error!') |
|
||||
.addClass('bg-red-500') |
|
||||
.removeClass('hover:bg-slate-400'); |
|
||||
} |
|
||||
}); |
|
||||
}); |
|
@ -1,686 +0,0 @@ |
|||||
*, ::before, ::after { |
|
||||
--tw-border-spacing-x: 0; |
|
||||
--tw-border-spacing-y: 0; |
|
||||
--tw-translate-x: 0; |
|
||||
--tw-translate-y: 0; |
|
||||
--tw-rotate: 0; |
|
||||
--tw-skew-x: 0; |
|
||||
--tw-skew-y: 0; |
|
||||
--tw-scale-x: 1; |
|
||||
--tw-scale-y: 1; |
|
||||
--tw-pan-x: ; |
|
||||
--tw-pan-y: ; |
|
||||
--tw-pinch-zoom: ; |
|
||||
--tw-scroll-snap-strictness: proximity; |
|
||||
--tw-gradient-from-position: ; |
|
||||
--tw-gradient-via-position: ; |
|
||||
--tw-gradient-to-position: ; |
|
||||
--tw-ordinal: ; |
|
||||
--tw-slashed-zero: ; |
|
||||
--tw-numeric-figure: ; |
|
||||
--tw-numeric-spacing: ; |
|
||||
--tw-numeric-fraction: ; |
|
||||
--tw-ring-inset: ; |
|
||||
--tw-ring-offset-width: 0px; |
|
||||
--tw-ring-offset-color: #fff; |
|
||||
--tw-ring-color: rgb(59 130 246 / 0.5); |
|
||||
--tw-ring-offset-shadow: 0 0 #0000; |
|
||||
--tw-ring-shadow: 0 0 #0000; |
|
||||
--tw-shadow: 0 0 #0000; |
|
||||
--tw-shadow-colored: 0 0 #0000; |
|
||||
--tw-blur: ; |
|
||||
--tw-brightness: ; |
|
||||
--tw-contrast: ; |
|
||||
--tw-grayscale: ; |
|
||||
--tw-hue-rotate: ; |
|
||||
--tw-invert: ; |
|
||||
--tw-saturate: ; |
|
||||
--tw-sepia: ; |
|
||||
--tw-drop-shadow: ; |
|
||||
--tw-backdrop-blur: ; |
|
||||
--tw-backdrop-brightness: ; |
|
||||
--tw-backdrop-contrast: ; |
|
||||
--tw-backdrop-grayscale: ; |
|
||||
--tw-backdrop-hue-rotate: ; |
|
||||
--tw-backdrop-invert: ; |
|
||||
--tw-backdrop-opacity: ; |
|
||||
--tw-backdrop-saturate: ; |
|
||||
--tw-backdrop-sepia: ; |
|
||||
--tw-contain-size: ; |
|
||||
--tw-contain-layout: ; |
|
||||
--tw-contain-paint: ; |
|
||||
--tw-contain-style: ; |
|
||||
} |
|
||||
|
|
||||
::backdrop { |
|
||||
--tw-border-spacing-x: 0; |
|
||||
--tw-border-spacing-y: 0; |
|
||||
--tw-translate-x: 0; |
|
||||
--tw-translate-y: 0; |
|
||||
--tw-rotate: 0; |
|
||||
--tw-skew-x: 0; |
|
||||
--tw-skew-y: 0; |
|
||||
--tw-scale-x: 1; |
|
||||
--tw-scale-y: 1; |
|
||||
--tw-pan-x: ; |
|
||||
--tw-pan-y: ; |
|
||||
--tw-pinch-zoom: ; |
|
||||
--tw-scroll-snap-strictness: proximity; |
|
||||
--tw-gradient-from-position: ; |
|
||||
--tw-gradient-via-position: ; |
|
||||
--tw-gradient-to-position: ; |
|
||||
--tw-ordinal: ; |
|
||||
--tw-slashed-zero: ; |
|
||||
--tw-numeric-figure: ; |
|
||||
--tw-numeric-spacing: ; |
|
||||
--tw-numeric-fraction: ; |
|
||||
--tw-ring-inset: ; |
|
||||
--tw-ring-offset-width: 0px; |
|
||||
--tw-ring-offset-color: #fff; |
|
||||
--tw-ring-color: rgb(59 130 246 / 0.5); |
|
||||
--tw-ring-offset-shadow: 0 0 #0000; |
|
||||
--tw-ring-shadow: 0 0 #0000; |
|
||||
--tw-shadow: 0 0 #0000; |
|
||||
--tw-shadow-colored: 0 0 #0000; |
|
||||
--tw-blur: ; |
|
||||
--tw-brightness: ; |
|
||||
--tw-contrast: ; |
|
||||
--tw-grayscale: ; |
|
||||
--tw-hue-rotate: ; |
|
||||
--tw-invert: ; |
|
||||
--tw-saturate: ; |
|
||||
--tw-sepia: ; |
|
||||
--tw-drop-shadow: ; |
|
||||
--tw-backdrop-blur: ; |
|
||||
--tw-backdrop-brightness: ; |
|
||||
--tw-backdrop-contrast: ; |
|
||||
--tw-backdrop-grayscale: ; |
|
||||
--tw-backdrop-hue-rotate: ; |
|
||||
--tw-backdrop-invert: ; |
|
||||
--tw-backdrop-opacity: ; |
|
||||
--tw-backdrop-saturate: ; |
|
||||
--tw-backdrop-sepia: ; |
|
||||
--tw-contain-size: ; |
|
||||
--tw-contain-layout: ; |
|
||||
--tw-contain-paint: ; |
|
||||
--tw-contain-style: ; |
|
||||
} |
|
||||
|
|
||||
/* |
|
||||
! tailwindcss v3.4.16 | MIT License | https://tailwindcss.com |
|
||||
*/ |
|
||||
|
|
||||
/* |
|
||||
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) |
|
||||
2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116) |
|
||||
*/ |
|
||||
|
|
||||
*, |
|
||||
::before, |
|
||||
::after { |
|
||||
box-sizing: border-box; |
|
||||
/* 1 */ |
|
||||
border-width: 0; |
|
||||
/* 2 */ |
|
||||
border-style: solid; |
|
||||
/* 2 */ |
|
||||
border-color: #e5e7eb; |
|
||||
/* 2 */ |
|
||||
} |
|
||||
|
|
||||
::before, |
|
||||
::after { |
|
||||
--tw-content: ''; |
|
||||
} |
|
||||
|
|
||||
/* |
|
||||
1. Use a consistent sensible line-height in all browsers. |
|
||||
2. Prevent adjustments of font size after orientation changes in iOS. |
|
||||
3. Use a more readable tab size. |
|
||||
4. Use the user's configured `sans` font-family by default. |
|
||||
5. Use the user's configured `sans` font-feature-settings by default. |
|
||||
6. Use the user's configured `sans` font-variation-settings by default. |
|
||||
7. Disable tap highlights on iOS |
|
||||
*/ |
|
||||
|
|
||||
html, |
|
||||
:host { |
|
||||
line-height: 1.5; |
|
||||
/* 1 */ |
|
||||
-webkit-text-size-adjust: 100%; |
|
||||
/* 2 */ |
|
||||
-moz-tab-size: 4; |
|
||||
/* 3 */ |
|
||||
-o-tab-size: 4; |
|
||||
tab-size: 4; |
|
||||
/* 3 */ |
|
||||
font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; |
|
||||
/* 4 */ |
|
||||
font-feature-settings: normal; |
|
||||
/* 5 */ |
|
||||
font-variation-settings: normal; |
|
||||
/* 6 */ |
|
||||
-webkit-tap-highlight-color: transparent; |
|
||||
/* 7 */ |
|
||||
} |
|
||||
|
|
||||
/* |
|
||||
1. Remove the margin in all browsers. |
|
||||
2. Inherit line-height from `html` so users can set them as a class directly on the `html` element. |
|
||||
*/ |
|
||||
|
|
||||
body { |
|
||||
margin: 0; |
|
||||
/* 1 */ |
|
||||
line-height: inherit; |
|
||||
/* 2 */ |
|
||||
} |
|
||||
|
|
||||
/* |
|
||||
1. Add the correct height in Firefox. |
|
||||
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) |
|
||||
3. Ensure horizontal rules are visible by default. |
|
||||
*/ |
|
||||
|
|
||||
hr { |
|
||||
height: 0; |
|
||||
/* 1 */ |
|
||||
color: inherit; |
|
||||
/* 2 */ |
|
||||
border-top-width: 1px; |
|
||||
/* 3 */ |
|
||||
} |
|
||||
|
|
||||
/* |
|
||||
Add the correct text decoration in Chrome, Edge, and Safari. |
|
||||
*/ |
|
||||
|
|
||||
abbr:where([title]) { |
|
||||
-webkit-text-decoration: underline dotted; |
|
||||
text-decoration: underline dotted; |
|
||||
} |
|
||||
|
|
||||
/* |
|
||||
Remove the default font size and weight for headings. |
|
||||
*/ |
|
||||
|
|
||||
h1, |
|
||||
h2, |
|
||||
h3, |
|
||||
h4, |
|
||||
h5, |
|
||||
h6 { |
|
||||
font-size: inherit; |
|
||||
font-weight: inherit; |
|
||||
} |
|
||||
|
|
||||
/* |
|
||||
Reset links to optimize for opt-in styling instead of opt-out. |
|
||||
*/ |
|
||||
|
|
||||
a { |
|
||||
color: inherit; |
|
||||
text-decoration: inherit; |
|
||||
} |
|
||||
|
|
||||
/* |
|
||||
Add the correct font weight in Edge and Safari. |
|
||||
*/ |
|
||||
|
|
||||
b, |
|
||||
strong { |
|
||||
font-weight: bolder; |
|
||||
} |
|
||||
|
|
||||
/* |
|
||||
1. Use the user's configured `mono` font-family by default. |
|
||||
2. Use the user's configured `mono` font-feature-settings by default. |
|
||||
3. Use the user's configured `mono` font-variation-settings by default. |
|
||||
4. Correct the odd `em` font sizing in all browsers. |
|
||||
*/ |
|
||||
|
|
||||
code, |
|
||||
kbd, |
|
||||
samp, |
|
||||
pre { |
|
||||
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; |
|
||||
/* 1 */ |
|
||||
font-feature-settings: normal; |
|
||||
/* 2 */ |
|
||||
font-variation-settings: normal; |
|
||||
/* 3 */ |
|
||||
font-size: 1em; |
|
||||
/* 4 */ |
|
||||
} |
|
||||
|
|
||||
/* |
|
||||
Add the correct font size in all browsers. |
|
||||
*/ |
|
||||
|
|
||||
small { |
|
||||
font-size: 80%; |
|
||||
} |
|
||||
|
|
||||
/* |
|
||||
Prevent `sub` and `sup` elements from affecting the line height in all browsers. |
|
||||
*/ |
|
||||
|
|
||||
sub, |
|
||||
sup { |
|
||||
font-size: 75%; |
|
||||
line-height: 0; |
|
||||
position: relative; |
|
||||
vertical-align: baseline; |
|
||||
} |
|
||||
|
|
||||
sub { |
|
||||
bottom: -0.25em; |
|
||||
} |
|
||||
|
|
||||
sup { |
|
||||
top: -0.5em; |
|
||||
} |
|
||||
|
|
||||
/* |
|
||||
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) |
|
||||
2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) |
|
||||
3. Remove gaps between table borders by default. |
|
||||
*/ |
|
||||
|
|
||||
table { |
|
||||
text-indent: 0; |
|
||||
/* 1 */ |
|
||||
border-color: inherit; |
|
||||
/* 2 */ |
|
||||
border-collapse: collapse; |
|
||||
/* 3 */ |
|
||||
} |
|
||||
|
|
||||
/* |
|
||||
1. Change the font styles in all browsers. |
|
||||
2. Remove the margin in Firefox and Safari. |
|
||||
3. Remove default padding in all browsers. |
|
||||
*/ |
|
||||
|
|
||||
button, |
|
||||
input, |
|
||||
optgroup, |
|
||||
select, |
|
||||
textarea { |
|
||||
font-family: inherit; |
|
||||
/* 1 */ |
|
||||
font-feature-settings: inherit; |
|
||||
/* 1 */ |
|
||||
font-variation-settings: inherit; |
|
||||
/* 1 */ |
|
||||
font-size: 100%; |
|
||||
/* 1 */ |
|
||||
font-weight: inherit; |
|
||||
/* 1 */ |
|
||||
line-height: inherit; |
|
||||
/* 1 */ |
|
||||
letter-spacing: inherit; |
|
||||
/* 1 */ |
|
||||
color: inherit; |
|
||||
/* 1 */ |
|
||||
margin: 0; |
|
||||
/* 2 */ |
|
||||
padding: 0; |
|
||||
/* 3 */ |
|
||||
} |
|
||||
|
|
||||
/* |
|
||||
Remove the inheritance of text transform in Edge and Firefox. |
|
||||
*/ |
|
||||
|
|
||||
button, |
|
||||
select { |
|
||||
text-transform: none; |
|
||||
} |
|
||||
|
|
||||
/* |
|
||||
1. Correct the inability to style clickable types in iOS and Safari. |
|
||||
2. Remove default button styles. |
|
||||
*/ |
|
||||
|
|
||||
button, |
|
||||
input:where([type='button']), |
|
||||
input:where([type='reset']), |
|
||||
input:where([type='submit']) { |
|
||||
-webkit-appearance: button; |
|
||||
/* 1 */ |
|
||||
background-color: transparent; |
|
||||
/* 2 */ |
|
||||
background-image: none; |
|
||||
/* 2 */ |
|
||||
} |
|
||||
|
|
||||
/* |
|
||||
Use the modern Firefox focus style for all focusable elements. |
|
||||
*/ |
|
||||
|
|
||||
:-moz-focusring { |
|
||||
outline: auto; |
|
||||
} |
|
||||
|
|
||||
/* |
|
||||
Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) |
|
||||
*/ |
|
||||
|
|
||||
:-moz-ui-invalid { |
|
||||
box-shadow: none; |
|
||||
} |
|
||||
|
|
||||
/* |
|
||||
Add the correct vertical alignment in Chrome and Firefox. |
|
||||
*/ |
|
||||
|
|
||||
progress { |
|
||||
vertical-align: baseline; |
|
||||
} |
|
||||
|
|
||||
/* |
|
||||
Correct the cursor style of increment and decrement buttons in Safari. |
|
||||
*/ |
|
||||
|
|
||||
::-webkit-inner-spin-button, |
|
||||
::-webkit-outer-spin-button { |
|
||||
height: auto; |
|
||||
} |
|
||||
|
|
||||
/* |
|
||||
1. Correct the odd appearance in Chrome and Safari. |
|
||||
2. Correct the outline style in Safari. |
|
||||
*/ |
|
||||
|
|
||||
[type='search'] { |
|
||||
-webkit-appearance: textfield; |
|
||||
/* 1 */ |
|
||||
outline-offset: -2px; |
|
||||
/* 2 */ |
|
||||
} |
|
||||
|
|
||||
/* |
|
||||
Remove the inner padding in Chrome and Safari on macOS. |
|
||||
*/ |
|
||||
|
|
||||
::-webkit-search-decoration { |
|
||||
-webkit-appearance: none; |
|
||||
} |
|
||||
|
|
||||
/* |
|
||||
1. Correct the inability to style clickable types in iOS and Safari. |
|
||||
2. Change font properties to `inherit` in Safari. |
|
||||
*/ |
|
||||
|
|
||||
::-webkit-file-upload-button { |
|
||||
-webkit-appearance: button; |
|
||||
/* 1 */ |
|
||||
font: inherit; |
|
||||
/* 2 */ |
|
||||
} |
|
||||
|
|
||||
/* |
|
||||
Add the correct display in Chrome and Safari. |
|
||||
*/ |
|
||||
|
|
||||
summary { |
|
||||
display: list-item; |
|
||||
} |
|
||||
|
|
||||
/* |
|
||||
Removes the default spacing and border for appropriate elements. |
|
||||
*/ |
|
||||
|
|
||||
blockquote, |
|
||||
dl, |
|
||||
dd, |
|
||||
h1, |
|
||||
h2, |
|
||||
h3, |
|
||||
h4, |
|
||||
h5, |
|
||||
h6, |
|
||||
hr, |
|
||||
figure, |
|
||||
p, |
|
||||
pre { |
|
||||
margin: 0; |
|
||||
} |
|
||||
|
|
||||
fieldset { |
|
||||
margin: 0; |
|
||||
padding: 0; |
|
||||
} |
|
||||
|
|
||||
legend { |
|
||||
padding: 0; |
|
||||
} |
|
||||
|
|
||||
ol, |
|
||||
ul, |
|
||||
menu { |
|
||||
list-style: none; |
|
||||
margin: 0; |
|
||||
padding: 0; |
|
||||
} |
|
||||
|
|
||||
/* |
|
||||
Reset default styling for dialogs. |
|
||||
*/ |
|
||||
|
|
||||
dialog { |
|
||||
padding: 0; |
|
||||
} |
|
||||
|
|
||||
/* |
|
||||
Prevent resizing textareas horizontally by default. |
|
||||
*/ |
|
||||
|
|
||||
textarea { |
|
||||
resize: vertical; |
|
||||
} |
|
||||
|
|
||||
/* |
|
||||
1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) |
|
||||
2. Set the default placeholder color to the user's configured gray 400 color. |
|
||||
*/ |
|
||||
|
|
||||
input::-moz-placeholder, textarea::-moz-placeholder { |
|
||||
opacity: 1; |
|
||||
/* 1 */ |
|
||||
color: #9ca3af; |
|
||||
/* 2 */ |
|
||||
} |
|
||||
|
|
||||
input::placeholder, |
|
||||
textarea::placeholder { |
|
||||
opacity: 1; |
|
||||
/* 1 */ |
|
||||
color: #9ca3af; |
|
||||
/* 2 */ |
|
||||
} |
|
||||
|
|
||||
/* |
|
||||
Set the default cursor for buttons. |
|
||||
*/ |
|
||||
|
|
||||
button, |
|
||||
[role="button"] { |
|
||||
cursor: pointer; |
|
||||
} |
|
||||
|
|
||||
/* |
|
||||
Make sure disabled buttons don't get the pointer cursor. |
|
||||
*/ |
|
||||
|
|
||||
:disabled { |
|
||||
cursor: default; |
|
||||
} |
|
||||
|
|
||||
/* |
|
||||
1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14) |
|
||||
2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) |
|
||||
This can trigger a poorly considered lint error in some tools but is included by design. |
|
||||
*/ |
|
||||
|
|
||||
img, |
|
||||
svg, |
|
||||
video, |
|
||||
canvas, |
|
||||
audio, |
|
||||
iframe, |
|
||||
embed, |
|
||||
object { |
|
||||
display: block; |
|
||||
/* 1 */ |
|
||||
vertical-align: middle; |
|
||||
/* 2 */ |
|
||||
} |
|
||||
|
|
||||
/* |
|
||||
Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) |
|
||||
*/ |
|
||||
|
|
||||
img, |
|
||||
video { |
|
||||
max-width: 100%; |
|
||||
height: auto; |
|
||||
} |
|
||||
|
|
||||
/* Make elements with the HTML hidden attribute stay hidden by default */ |
|
||||
|
|
||||
[hidden]:where(:not([hidden="until-found"])) { |
|
||||
display: none; |
|
||||
} |
|
||||
|
|
||||
.flex { |
|
||||
display: flex; |
|
||||
} |
|
||||
|
|
||||
.h-32 { |
|
||||
height: 8rem; |
|
||||
} |
|
||||
|
|
||||
.h-screen { |
|
||||
height: 100vh; |
|
||||
} |
|
||||
|
|
||||
.w-auto { |
|
||||
width: auto; |
|
||||
} |
|
||||
|
|
||||
.w-full { |
|
||||
width: 100%; |
|
||||
} |
|
||||
|
|
||||
.w-screen { |
|
||||
width: 100vw; |
|
||||
} |
|
||||
|
|
||||
.cursor-pointer { |
|
||||
cursor: pointer; |
|
||||
} |
|
||||
|
|
||||
.flex-row { |
|
||||
flex-direction: row; |
|
||||
} |
|
||||
|
|
||||
.flex-col { |
|
||||
flex-direction: column; |
|
||||
} |
|
||||
|
|
||||
.items-center { |
|
||||
align-items: center; |
|
||||
} |
|
||||
|
|
||||
.justify-center { |
|
||||
justify-content: center; |
|
||||
} |
|
||||
|
|
||||
.justify-between { |
|
||||
justify-content: space-between; |
|
||||
} |
|
||||
|
|
||||
.gap-2 { |
|
||||
gap: 0.5rem; |
|
||||
} |
|
||||
|
|
||||
.gap-1 { |
|
||||
gap: 0.25rem; |
|
||||
} |
|
||||
|
|
||||
.rounded { |
|
||||
border-radius: 0.25rem; |
|
||||
} |
|
||||
|
|
||||
.border { |
|
||||
border-width: 1px; |
|
||||
} |
|
||||
|
|
||||
.border-slate-700 { |
|
||||
--tw-border-opacity: 1; |
|
||||
border-color: rgb(51 65 85 / var(--tw-border-opacity, 1)); |
|
||||
} |
|
||||
|
|
||||
.bg-green-600 { |
|
||||
--tw-bg-opacity: 1; |
|
||||
background-color: rgb(22 163 74 / var(--tw-bg-opacity, 1)); |
|
||||
} |
|
||||
|
|
||||
.bg-red-500 { |
|
||||
--tw-bg-opacity: 1; |
|
||||
background-color: rgb(239 68 68 / var(--tw-bg-opacity, 1)); |
|
||||
} |
|
||||
|
|
||||
.bg-slate-500 { |
|
||||
--tw-bg-opacity: 1; |
|
||||
background-color: rgb(100 116 139 / var(--tw-bg-opacity, 1)); |
|
||||
} |
|
||||
|
|
||||
.bg-slate-900 { |
|
||||
--tw-bg-opacity: 1; |
|
||||
background-color: rgb(15 23 42 / var(--tw-bg-opacity, 1)); |
|
||||
} |
|
||||
|
|
||||
.object-contain { |
|
||||
-o-object-fit: contain; |
|
||||
object-fit: contain; |
|
||||
} |
|
||||
|
|
||||
.p-2 { |
|
||||
padding: 0.5rem; |
|
||||
} |
|
||||
|
|
||||
.px-2 { |
|
||||
padding-left: 0.5rem; |
|
||||
padding-right: 0.5rem; |
|
||||
} |
|
||||
|
|
||||
.text-center { |
|
||||
text-align: center; |
|
||||
} |
|
||||
|
|
||||
.font-bold { |
|
||||
font-weight: 700; |
|
||||
} |
|
||||
|
|
||||
.text-slate-200 { |
|
||||
--tw-text-opacity: 1; |
|
||||
color: rgb(226 232 240 / var(--tw-text-opacity, 1)); |
|
||||
} |
|
||||
|
|
||||
.text-slate-500 { |
|
||||
--tw-text-opacity: 1; |
|
||||
color: rgb(100 116 139 / var(--tw-text-opacity, 1)); |
|
||||
} |
|
||||
|
|
||||
.text-slate-900 { |
|
||||
--tw-text-opacity: 1; |
|
||||
color: rgb(15 23 42 / var(--tw-text-opacity, 1)); |
|
||||
} |
|
||||
|
|
||||
.hover\:bg-slate-400:hover { |
|
||||
--tw-bg-opacity: 1; |
|
||||
background-color: rgb(148 163 184 / var(--tw-bg-opacity, 1)); |
|
||||
} |
|
@ -1,12 +0,0 @@ |
|||||
/** @type {import('tailwindcss').Config} */ |
|
||||
module.exports = { |
|
||||
content: [ |
|
||||
'index.html', |
|
||||
'script.js', |
|
||||
], |
|
||||
theme: { |
|
||||
extend: {}, |
|
||||
}, |
|
||||
plugins: [], |
|
||||
} |
|
||||
|
|
@ -1,3 +0,0 @@ |
|||||
@tailwind base; |
|
||||
@tailwind components; |
|
||||
@tailwind utilities; |
|
Loading…
Reference in new issue