diff options
Diffstat (limited to 'front/src/styles/styles.css')
-rw-r--r-- | front/src/styles/styles.css | 412 |
1 files changed, 328 insertions, 84 deletions
diff --git a/front/src/styles/styles.css b/front/src/styles/styles.css index ede283d..42a2e3c 100644 --- a/front/src/styles/styles.css +++ b/front/src/styles/styles.css @@ -249,152 +249,396 @@ h6 { border-radius: 0.75rem; & #composer { - padding: 10px; + padding: 16px; display: flex; - gap: 0.5rem; + gap: 0.75rem; + transition: all 0.3s ease; + border-bottom: 1px solid rgba(128, 128, 128, 0.2); + + &.expanded { + padding: 20px 16px; + background: linear-gradient(to bottom, rgba(128, 128, 128, 0.05), transparent); + } + + &.has-context { + min-height: 120px; + } & .sigil { width: 48px; height: 48px; + flex-shrink: 0; & img { width: inherit; + border-radius: 50%; } } - & input { - background-color: transparent; - color: var(--color-text); - flex-grow: 1; - border: none; - outline: none; + & .composer-content { + flex: 1; + display: flex; + flex-direction: column; + gap: 12px; } - } - } - & .trill-post, - & .twatter-post { - border-top: 1px solid grey; + & .composer-context { + background: rgba(128, 128, 128, 0.08); + border-radius: 12px; + padding: 12px; + position: relative; + animation: slideDown 0.3s ease; + + & .composer-snippet { + max-height: 200px; + overflow-y: auto; + border-radius: 8px; + background: rgba(255, 255, 255, 0.05); + + &>div { + padding: 8px; + } + } - & .left { - margin-right: 10px; - width: unset; + & #reply { + background: transparent; + padding: 0; + } + } - & .sigil { - width: 48px; - height: 48px; + & .reply-context { + margin-bottom: 12px; + border-left: 3px solid var(--color-accent, #2a9d8f); + background: rgba(42, 157, 143, 0.08); } - } - & header { - align-items: center; - justify-content: left; + & .quote-context { + margin-top: 12px; + border-left: 3px solid var(--color-secondary, #e76f51); + background: rgba(231, 111, 81, 0.08); + } - & .author { - flex: unset; - gap: 0; + & .quote-header { + margin-bottom: 12px; + padding: 8px 12px; + background: rgba(231, 111, 81, 0.08); + border-radius: 8px; + border-left: 3px solid var(--color-secondary, #e76f51); + } - & .name { + & .context-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 8px; + + & .context-type { display: flex; align-items: center; + gap: 6px; + font-size: 0.85rem; + color: var(--color-text-muted, #888); + font-weight: 500; + } - & .p { - font-family: "Source Code Pro"; + & .clear-context { + background: none; + border: none; + color: var(--color-text-muted, #888); + cursor: pointer; + font-size: 1.5rem; + line-height: 1; + padding: 0; + width: 24px; + height: 24px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 50%; + transition: all 0.2s; + + &:hover { + background: rgba(128, 128, 128, 0.2); + color: var(--color-text); } } } - & .date { - color: grey; + & .quote-header .context-header { + margin-bottom: 0; } - } - - & footer { - justify-content: left; - margin: unset; - - & .icon { - margin: 0; + & .composer-input-row { + display: flex; + gap: 12px; align-items: center; - gap: 0.2rem; - width: 64px; + } - & img { - height: 18px; + & input { + background-color: transparent; + color: var(--color-text); + flex-grow: 1; + border: none; + outline: none; + font-size: 1rem; + padding: 8px 0; + border-bottom: 2px solid transparent; + transition: border-color 0.2s; + + &:focus { + border-bottom-color: var(--color-accent, #2a9d8f); } - & .react-img { - height: 24px; + &::placeholder { + color: var(--color-text-muted, #888); } + } - & .react-icon { - font-size: 20px; + & .post-btn { + padding: 8px 20px; + background: var(--color-accent, #2a9d8f); + color: white; + border: none; + border-radius: 20px; + font-weight: 600; + cursor: pointer; + transition: all 0.2s; + white-space: nowrap; + + &:hover:not(:disabled) { + background: var(--color-accent-hover, #238b7f); + transform: translateY(-1px); + box-shadow: 0 2px 8px rgba(42, 157, 143, 0.3); } - & span { - margin-right: unset; - text-align: left; - font-size: 14px; - line-height: 1rem; - color: grey; - width: unset; + &:disabled { + opacity: 0.5; + cursor: not-allowed; } } + } + + @keyframes slideDown { + from { + opacity: 0; + transform: translateY(-10px); + } - & .menu-icon { - margin-left: auto; + to { + opacity: 1; + transform: translateY(0); } } } + /* Thread page styling */ + & .thread-header { + margin-bottom: 1rem; + padding: 1rem 0; + border-bottom: 1px solid rgba(128, 128, 128, 0.2); + + & h2 { + margin: 0.5rem 0; + font-size: 1.5rem; + color: var(--color-text); + } - & .user-contact { - & .contact-cover { - margin-bottom: -40px; + & .thread-nav { + margin-bottom: 0.5rem; - & img { - width: 100%; - height: 100%; - object-fit: cover; + & .back-btn { + background: rgba(128, 128, 128, 0.1); + border: 1px solid rgba(128, 128, 128, 0.3); + border-radius: 8px; + padding: 8px 12px; + color: var(--color-text); + cursor: pointer; + display: flex; + align-items: center; + gap: 6px; + font-size: 0.9rem; + transition: all 0.2s; + + &:hover { + background: rgba(128, 128, 128, 0.2); + transform: translateX(-2px); + } + + & span { + font-weight: 500; + } } } - & .contact-name { + & .thread-info { display: flex; align-items: center; - gap: 0.5rem; - } + gap: 8px; + font-size: 0.9rem; + color: var(--color-text-muted, #888); + + & .thread-host { + font-family: "Source Code Pro", monospace; + background: rgba(128, 128, 128, 0.1); + padding: 2px 6px; + border-radius: 4px; + font-weight: 600; + } - & .contact-username { - margin-top: 1rem; - font-family: "Source Code Pro"; - font-weight: 400; + & .thread-separator { + opacity: 0.5; + } + + & .thread-id { + font-family: "Source Code Pro", monospace; + background: rgba(42, 157, 143, 0.1); + color: var(--color-accent, #2a9d8f); + padding: 2px 6px; + border-radius: 4px; + font-weight: 600; + } } + } + + & .thread-content { + /* Use same styling as feed content */ + } + + & .loading-container { + display: flex; + justify-content: center; + align-items: center; + min-height: 200px; - & button { - width: unset; - margin: unset; - height: unset; + & img { + width: 40px; + height: 40px; } } } - & button { - font-size: 0.9rem; - font-weight: 700; - line-height: 1rem; - border: none; - border-radius: 2rem; - padding: 0.5rem 2rem; + & .trill-post, + & .twatter-post { + border-top: 1px solid grey; + + & .left { + margin-right: 10px; + width: unset; + + & .sigil { + width: 48px; + height: 48px; + } + } + + & header { + align-items: center; + justify-content: left; + + & .author { + flex: unset; + gap: 0; + + & .name { + display: flex; + align-items: center; + + & .p { + font-family: "Source Code Pro"; + } + } + } + + & .date { + color: grey; + } + + } + + & footer { + justify-content: left; + margin: unset; + + & .icon { + margin: 0; + align-items: center; + gap: 0.2rem; + width: 64px; + + & img { + height: 18px; + } + + & .react-img { + height: 24px; + } + + & .react-icon { + font-size: 20px; + } + + & span { + margin-right: unset; + text-align: left; + font-size: 14px; + line-height: 1rem; + color: grey; + width: unset; + } + } + + & .menu-icon { + margin-left: auto; + } + } } - & .sigil, - & .sigil svg { - border-radius: 0.5rem; + + & .user-contact { + & .contact-cover { + margin-bottom: -40px; + + & img { + width: 100%; + height: 100%; + object-fit: cover; + } + } + + & .contact-name { + display: flex; + align-items: center; + gap: 0.5rem; + } + + & .contact-username { + margin-top: 1rem; + font-family: "Source Code Pro"; + font-weight: 400; + } + + & button { + width: unset; + margin: unset; + height: unset; + } } } +& button { + font-size: 0.9rem; + font-weight: 700; + line-height: 1rem; + border: none; + border-radius: 2rem; + padding: 0.5rem 2rem; +} + +& .sigil, +& .sigil svg { + border-radius: 0.5rem; +} + #big-button { position: absolute; right: 2rem; |