diff options
| author | polwex <polwex@sortug.com> | 2025-11-23 01:12:53 +0700 |
|---|---|---|
| committer | polwex <polwex@sortug.com> | 2025-11-23 01:12:53 +0700 |
| commit | cb1b56f5a0eddbf77446f415f2beda57c8305f85 (patch) | |
| tree | d333ca5c143063af8ee1b2f9e2d1d25f8ef2007c /packages/tweetdeck/src/styles | |
wut
Diffstat (limited to 'packages/tweetdeck/src/styles')
| -rw-r--r-- | packages/tweetdeck/src/styles/index.css | 835 | ||||
| -rw-r--r-- | packages/tweetdeck/src/styles/normalize.css | 379 |
2 files changed, 1214 insertions, 0 deletions
diff --git a/packages/tweetdeck/src/styles/index.css b/packages/tweetdeck/src/styles/index.css new file mode 100644 index 0000000..e9a500f --- /dev/null +++ b/packages/tweetdeck/src/styles/index.css @@ -0,0 +1,835 @@ +@import url("https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600&family=Inter:wght@400;500;600&display=swap"); + +:root { + color-scheme: dark; + --bg: radial-gradient(circle at top, #15234b 0%, #050914 55%); + --panel: rgba(9, 14, 28, 0.9); + --panel-border: rgba(255, 255, 255, 0.08); + --soft-border: rgba(255, 255, 255, 0.15); + --muted: rgba(255, 255, 255, 0.6); + --accent: #7f5af0; + font-family: "Inter", "Space Grotesk", system-ui, -apple-system, BlinkMacSystemFont, sans-serif; + background-color: #050914; +} + +* { + box-sizing: border-box; +} + +body { + margin: 0; + background: var(--bg); + color: #f5f6fb; + min-height: 100vh; +} + +button, +input, +select, +textarea { + font-family: inherit; +} + +.app-shell { + min-height: 100vh; + display: grid; + grid-template-columns: 320px 1fr; + color: inherit; +} + +.sidebar { + position: sticky; + top: 0; + align-self: start; + min-height: 100vh; + display: flex; + flex-direction: column; + justify-content: space-between; + padding: 2rem; + background: var(--panel); + border-right: 1px solid var(--panel-border); + gap: 2rem; +} + +.brand { + display: flex; + gap: 1rem; + position: relative; + padding-bottom: 1.5rem; + border-bottom: 1px solid rgba(255, 255, 255, 0.08); +} + +.brand-glow { + width: 16px; + height: 16px; + border-radius: 50%; + background: linear-gradient(120deg, #7f5af0, #2cb67d); + box-shadow: 0 0 24px #7f5af0; + margin-top: 6px; +} + +h1, +h2, +h3, +h4 { + font-family: "Space Grotesk", "Inter", sans-serif; + margin: 0.2rem 0; +} + +.eyebrow { + text-transform: uppercase; + letter-spacing: 0.2em; + font-size: 0.7rem; + color: var(--muted); + margin: 0; +} + +.tagline { + margin: 0.2rem 0 0; + color: var(--muted); +} + +.sidebar-section { + display: flex; + flex-direction: column; + gap: 0.75rem; +} + +.sidebar-section header { + display: flex; + align-items: center; + justify-content: space-between; +} + +.account-chip { + display: flex; + align-items: center; + gap: 0.75rem; + padding: 0.75rem 0.9rem; + border-radius: 12px; + border: 1px solid var(--panel-border); + cursor: pointer; + background: rgba(255, 255, 255, 0.02); +} + +.account-chip.active { + border-color: currentColor; + background: rgba(127, 90, 240, 0.2); +} + +.account-chip strong { + display: block; +} + +.account-chip small { + color: var(--muted); +} + +.chip-accent { + width: 6px; + height: 40px; + border-radius: 999px; +} + +.chip-actions button { + border: none; + background: transparent; + color: var(--muted); + font-size: 1rem; +} + +.account-form input, +.account-form textarea, +.account-form select { + width: 100%; + margin-top: 0.35rem; + padding: 0.65rem 0.75rem; + border-radius: 10px; + border: 1px solid rgba(255, 255, 255, 0.1); + background: rgba(5, 9, 20, 0.7); + color: inherit; + resize: vertical; +} + +.account-form textarea.masked { + filter: blur(6px); +} + +.checkbox { + display: flex; + gap: 0.5rem; + align-items: center; + font-size: 0.85rem; +} + +.sidebar-footer { + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.button-row, +.sidebar-footer button, +.account-form button, +.modal button.primary, +.primary { + border: none; + border-radius: 999px; + padding: 0.75rem 1.5rem; + font-weight: 600; + background: linear-gradient(120deg, #7f5af0, #2cb67d); + color: #050914; + cursor: pointer; +} + +.primary:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +.ghost { + border: 1px solid rgba(255, 255, 255, 0.2); + border-radius: 999px; + padding: 0.35rem 0.85rem; + background: transparent; + color: inherit; + cursor: pointer; +} + +button.ghost:disabled { + opacity: 0.4; + cursor: not-allowed; +} + +.muted { + color: var(--muted); + margin: 0; +} + +.muted.tiny { + font-size: 0.8rem; +} + +.sidebar-footer .tiny { + font-size: 0.7rem; +} + +main { + padding: 2.5rem; + display: flex; + flex-direction: column; + gap: 1.5rem; + overflow-x: auto; +} + +.column-board { + display: flex; + gap: 1rem; + overflow-x: auto; + padding-bottom: 1rem; +} + +.column { + flex: 0 0 360px; + display: flex; + flex-direction: column; + gap: 1rem; + padding: 1.25rem; + border-radius: 18px; + border: 1px solid var(--panel-border); + background: rgba(8, 13, 26, 0.9); + max-height: calc(100vh - 120px); + width: 100%; +} + +.column.missing { + justify-content: center; + text-align: center; +} + +.column header { + display: flex; + justify-content: space-between; + gap: 1rem; +} + +.column-actions { + display: flex; + gap: 0.5rem; +} + +.column .tweet-stack, +.column .chat-stack { + flex: 1; + overflow-y: auto; + padding-right: 0.5rem; + display: flex; + flex-direction: column; + gap: 1rem; + scrollbar-width: none; + -ms-overflow-style: none; +} + +.column .tweet-stack::-webkit-scrollbar, +.column .chat-stack::-webkit-scrollbar { + display: none; +} + +.load-more-row { + display: flex; + justify-content: center; + margin: 0.5rem 0 1rem; +} + +.load-more-row button { + min-width: 140px; +} + +.load-more-row p { + margin: 0; + text-align: center; +} + +.fullscreen-overlay { + position: fixed; + inset: 0; + background: rgba(3, 5, 12, 0.95); + z-index: 100; + display: flex; + align-items: center; + justify-content: center; + padding: 2rem 3rem; +} + +.fullscreen-content { + width: min(900px, 100%); + height: min(95vh, 100%); + display: flex; + flex-direction: column; + gap: 1rem; +} + +.fullscreen-card { + flex: 1; + overflow-y: auto; + display: flex; + flex-direction: column; +} + +.fullscreen-card .tweet-card { + display: flex; + flex-direction: column; + flex: 1; + min-height: 70vh; + font-size: 1.1rem; + + .tweet-body { + flex-grow: 1; + display: flex; + flex-direction: column; + + .media-grid { + flex-grow: 1; + + } + } + + footer { + button { + svg { + width: 3rem; + height: 3rem; + } + } + } +} + +.fullscreen-card header { + font-size: 1.8rem; +} + +.fullscreen-card .tweet-text { + font-size: 1.5rem; + line-height: 1.8; +} + +.fullscreen-empty { + flex: 1; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 0.75rem; + text-align: center; + font-size: 1.3rem; +} + +.fullscreen-controls { + display: flex; + justify-content: space-between; + gap: 1rem; +} + +.fullscreen-column-controls { + display: flex; + justify-content: space-between; + gap: 1rem; +} + +.fullscreen-column-controls .ghost { + min-width: 180px; +} + +.fullscreen-close { + position: absolute; + top: 1.5rem; + right: 1.5rem; + font-size: 1.5rem; +} + +.column-content { + display: flex; + flex-direction: column; + flex: 1; + min-height: 0; +} + +.column-content.slide-forward { + animation: columnForward 0.35s ease both; +} + +.column-content.slide-backward { + animation: columnBackward 0.35s ease both; +} + +@keyframes columnForward { + from { + opacity: 0; + transform: translateX(24px); + } + + to { + opacity: 1; + transform: translateX(0); + } +} + +@keyframes columnBackward { + from { + opacity: 0; + transform: translateX(-24px); + } + + to { + opacity: 1; + transform: translateX(0); + } +} + +.column footer { + text-align: center; +} + +.tweet-card, +.chat-card { + border-radius: 18px; + padding: 1rem; + border: 1px solid var(--soft-border); + background: rgba(4, 8, 18, 0.8); + display: flex; + flex-direction: column; + gap: 0.75rem; +} + +.retweet-banner { + margin: 0; + text-transform: none; +} + +.tweet-replying-to { + opacity: 0.5; + + span { + margin: 0 0.25ch; + } +} + +.tweet-actions { + display: flex; + justify-content: space-between; + flex-wrap: wrap; + gap: 0.5rem; + border-top: 1px solid rgba(255, 255, 255, 0.08); + padding-top: 0.75rem; + margin-top: 0.25rem; +} + +.tweet-actions .action { + display: inline-flex; + align-items: center; + justify-content: center; + gap: 0.3rem; + border: 1px solid rgba(255, 255, 255, 0.15); + border-radius: 999px; + background: transparent; + color: inherit; + font-size: 0.8rem; + padding: 0.35rem 0.6rem; + cursor: pointer; + position: relative; + overflow: hidden; + transition: border-color 0.2s ease, background 0.2s ease, transform 0.15s ease; +} + +.tweet-actions .action.active { + border-color: rgba(255, 255, 255, 0.35); + transform: scale(1.08); +} + +.tweet-actions .action.like.active svg { + color: #f25f4c; +} + +.tweet-actions .action.retweet.active svg { + color: #2cb67d; +} + +.tweet-actions .action.bookmark.active svg { + color: #f0a500; +} + +.tweet-actions .action::after { + content: ""; + position: absolute; + inset: 50%; + width: 6px; + height: 6px; + border-radius: 50%; + background: currentColor; + opacity: 0; + transform: translate(-50%, -50%) scale(1); + pointer-events: none; +} + +.tweet-actions .action:active::after { + animation: ripple 0.45s ease-out; +} + +@keyframes ripple { + 0% { + opacity: 0.25; + transform: translate(-50%, -50%) scale(0.2); + } + + 100% { + opacity: 0; + transform: translate(-50%, -50%) scale(8); + } +} + +.tweet-actions .action.in-flight { + opacity: 0.5; + pointer-events: none; +} + +.tweet-actions .action.copied svg { + color: var(--accent); +} + +.tweet-actions .action:hover { + border-color: rgba(255, 255, 255, 0.35); + background: rgba(255, 255, 255, 0.08); +} + +.tweet-actions svg { + width: 16px; + height: 16px; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; +} + +.link-button { + border: none; + background: none; + color: inherit; + font: inherit; + padding: 0; + cursor: pointer; +} + +.link-button:focus-visible { + outline: 2px solid var(--accent); + outline-offset: 2px; +} + +.link-button:disabled { + opacity: 0.6; + cursor: default; +} + +.tweet-card header, +.chat-card header { + display: flex; + justify-content: space-between; + gap: 0.5rem; +} + +.tweet-card img { + border-radius: 12px; +} + +.author { + display: flex; + align-items: center; + gap: 0.75rem; +} + +.author img { + width: 44px; + height: 44px; + border-radius: 50%; +} + +.author-meta { + display: flex; + flex-direction: column; + align-items: flex-start; + text-align: left; +} + +.tweet-text { + white-space: pre-wrap; + line-height: 1.5; +} + +.mention { + color: #2cb67d; +} + +.hashtag { + color: #7f5af0; +} + +.media-grid { + display: grid; + gap: 0.5rem; +} + +.media-grid.pics-1 { + grid-template-columns: 1fr; +} + +.media-grid.pics-2 { + grid-template-columns: repeat(2, 1fr); +} + +.media-grid.pics-3, +.media-grid.pics-4 { + grid-template-columns: repeat(2, 1fr); +} + +.media-grid img { + width: 100%; +} + +.video-wrapper video { + width: 100%; + border-radius: 14px; + background: #000; +} + +.link-chips { + display: flex; + flex-wrap: wrap; + gap: 0.5rem; +} + +.link-chips a { + border: 1px solid var(--soft-border); + border-radius: 999px; + padding: 0.35rem 0.9rem; + text-decoration: none; + color: inherit; + font-size: 0.85rem; +} + +.chat-card { + flex-direction: row; +} + +.chat-avatar img, +.chat-avatar span { + width: 42px; + height: 42px; + border-radius: 12px; + background: rgba(255, 255, 255, 0.08); + display: flex; + align-items: center; + justify-content: center; +} + +.chat-avatar img { + border-radius: 999px; +} + +.chat-body header { + align-items: baseline; + gap: 0.4rem; +} + +.chat-body p { + margin: 0.25rem 0 0; +} + +.chat-body .dot { + color: var(--muted); +} + +.modal-backdrop { + position: fixed; + inset: 0; + background: rgba(0, 0, 0, 0.65); + display: grid; + place-items: center; + padding: 1rem; + z-index: 1000; +} + +.modal { + width: min(520px, 100%); + background: rgba(5, 9, 20, 0.95); + border-radius: 24px; + border: 1px solid var(--panel-border); + padding: 1.75rem; + display: flex; + flex-direction: column; + gap: 1rem; +} + +.modal header { + display: flex; + justify-content: space-between; + align-items: center; +} + +.modal-body { + display: flex; + flex-direction: column; + gap: 1rem; +} + +.modal select, +.modal input { + border-radius: 12px; + border: 1px solid rgba(255, 255, 255, 0.1); + background: rgba(8, 13, 26, 0.9); + color: inherit; + padding: 0.65rem 0.75rem; +} + +.option-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); + gap: 0.75rem; +} + +.option { + border: 1px solid rgba(255, 255, 255, 0.1); + border-radius: 14px; + padding: 0.75rem; + text-align: left; + background: rgba(3, 6, 15, 0.9); + cursor: pointer; +} + +.option.selected { + border-color: var(--accent); + background: rgba(127, 90, 240, 0.15); +} + +.option p { + margin: 0.2rem 0 0; + color: var(--muted); +} + +.error { + color: #f25f4c; +} + +.column-loading { + text-align: center; + padding: 2rem 0; + color: var(--muted); +} + +.empty-board { + border: 1px dashed rgba(255, 255, 255, 0.2); + border-radius: 24px; + padding: 2.5rem; + text-align: center; +} + +.toast { + position: fixed; + bottom: 24px; + right: 24px; + padding: 0.85rem 1.25rem; + border-radius: 999px; + background: rgba(15, 25, 50, 0.9); + border: 1px solid rgba(255, 255, 255, 0.2); + animation: fadeOut 4s forwards; +} + +@keyframes fadeOut { + 0% { + opacity: 1; + transform: translateY(0); + } + + 80% { + opacity: 1; + } + + 100% { + opacity: 0; + transform: translateY(12px); + } +} + +@media (max-width: 1024px) { + .app-shell { + grid-template-columns: 1fr; + } + + .sidebar { + position: relative; + min-height: unset; + } + + main { + padding: 1.5rem; + } + + .column { + flex-basis: 80vw; + } +} + + +/* language stuff */ +*[lang="th"], +*[lang="tha"] { + font-size: 3rem; +} + +/* .font-Thai-0 { */
\ No newline at end of file diff --git a/packages/tweetdeck/src/styles/normalize.css b/packages/tweetdeck/src/styles/normalize.css new file mode 100644 index 0000000..fdec4bd --- /dev/null +++ b/packages/tweetdeck/src/styles/normalize.css @@ -0,0 +1,379 @@ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ + +/* Document + ========================================================================== */ + +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ + +html { + line-height: 1.15; + /* 1 */ + -webkit-text-size-adjust: 100%; + /* 2 */ +} + +/* Sections + ========================================================================== */ + +/** + * Remove the margin in all browsers. + */ + +body { + margin: 0; +} + +/** + * Render the `main` element consistently in IE. + */ + +main { + display: block; +} + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/* Grouping content + ========================================================================== */ + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; + /* 1 */ + height: 0; + /* 1 */ + overflow: visible; + /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +pre { + font-family: monospace, monospace; + /* 1 */ + font-size: 1em; + /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Remove the gray background on active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * 1. Remove the bottom border in Chrome 57- + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + +abbr[title] { + border-bottom: none; + /* 1 */ + text-decoration: underline; + /* 2 */ + text-decoration: underline dotted; + /* 2 */ +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +code, +kbd, +samp { + font-family: monospace, monospace; + /* 1 */ + font-size: 1em; + /* 2 */ +} + +/** + * 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; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove the border on images inside links in IE 10. + */ + +img { + border-style: none; +} + +/* Forms + ========================================================================== */ + +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; + /* 1 */ + font-size: 100%; + /* 1 */ + line-height: 1.15; + /* 1 */ + margin: 0; + /* 2 */ +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + +button, +input { + /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + +button, +select { + /* 1 */ + text-transform: none; +} + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule. + */ + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * Correct the padding in Firefox. + */ + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ + +legend { + box-sizing: border-box; + /* 1 */ + color: inherit; + /* 2 */ + display: table; + /* 1 */ + max-width: 100%; + /* 1 */ + padding: 0; + /* 3 */ + white-space: normal; + /* 1 */ +} + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + vertical-align: baseline; +} + +/** + * Remove the default vertical scrollbar in IE 10+. + */ + +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10. + * 2. Remove the padding in IE 10. + */ + +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; + /* 1 */ + padding: 0; + /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-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. + */ + +[type="search"]::-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 */ +} + +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in Edge, IE 10+, and Firefox. + */ + +details { + display: block; +} + +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + +/* Misc + ========================================================================== */ + +/** + * Add the correct display in IE 10+. + */ + +template { + display: none; +} + +/** + * Add the correct display in IE 10. + */ + +[hidden] { + display: none; +}
\ No newline at end of file |
