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