summaryrefslogtreecommitdiff
path: root/gui/src/styles/UserModal.css
diff options
context:
space:
mode:
Diffstat (limited to 'gui/src/styles/UserModal.css')
-rw-r--r--gui/src/styles/UserModal.css316
1 files changed, 316 insertions, 0 deletions
diff --git a/gui/src/styles/UserModal.css b/gui/src/styles/UserModal.css
new file mode 100644
index 0000000..bf4ff56
--- /dev/null
+++ b/gui/src/styles/UserModal.css
@@ -0,0 +1,316 @@
+/* User Modal Styles */
+
+.user-modal {
+ display: flex;
+ flex-direction: column;
+ gap: 20px;
+ min-width: 400px;
+ max-width: 500px;
+ padding: 24px;
+}
+
+.user-modal-error {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ gap: 16px;
+ padding: 40px;
+ text-align: center;
+ color: var(--color-text-secondary);
+}
+
+/* Header Section */
+.user-modal-header {
+ display: flex;
+ gap: 16px;
+ align-items: flex-start;
+}
+
+.user-modal-avatar-wrapper {
+ flex-shrink: 0;
+}
+
+.user-modal-avatar-wrapper .avatar {
+ width: 80px;
+ height: 80px;
+ border-radius: 50%;
+ overflow: hidden;
+ border: 3px solid var(--color-border);
+ transition: transform 0.2s ease, border-color 0.2s ease;
+}
+
+.user-modal-avatar-wrapper .avatar:hover {
+ transform: scale(1.05);
+ border-color: var(--color-primary);
+}
+
+.user-modal-avatar-wrapper .avatar img,
+.user-modal-avatar-wrapper .avatar canvas {
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+}
+
+.user-modal-info {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ gap: 8px;
+ min-width: 0;
+}
+
+.user-modal-name {
+ margin: 0;
+ font-size: 24px;
+ font-weight: 600;
+ color: var(--color-text);
+ word-wrap: break-word;
+}
+
+.user-modal-id-row {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+}
+
+.user-modal-id {
+ font-size: 14px;
+ color: var(--color-text-secondary);
+ font-family: "Source Code Pro", monospace;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+.user-modal-copy-icon {
+ flex-shrink: 0;
+ color: var(--color-text-secondary);
+ transition: color 0.2s ease;
+}
+
+.user-modal-copy-icon:hover {
+ color: var(--color-primary);
+}
+
+/* Badges */
+.user-modal-badge {
+ display: flex;
+ gap: 6px;
+ flex-wrap: wrap;
+}
+
+.badge {
+ display: inline-flex;
+ align-items: center;
+ padding: 4px 10px;
+ font-size: 12px;
+ font-weight: 500;
+ border-radius: 12px;
+ text-transform: uppercase;
+ letter-spacing: 0.5px;
+}
+
+.badge-urbit {
+ background: var(--color-primary);
+ color: white;
+}
+
+.badge-nostr {
+ background: #8e44ad;
+ color: white;
+}
+
+.badge-me {
+ background: var(--color-accent);
+ color: white;
+}
+
+.badge-follows {
+ background: var(--color-surface);
+ color: var(--color-text-secondary);
+ border: 1px solid var(--color-border);
+}
+
+/* About Section */
+.user-modal-about {
+ padding: 16px;
+ background: var(--color-surface);
+ border-radius: 8px;
+ border-left: 3px solid var(--color-primary);
+}
+
+.user-modal-about p {
+ margin: 0;
+ color: var(--color-text);
+ line-height: 1.6;
+ white-space: pre-wrap;
+ word-wrap: break-word;
+}
+
+/* Stats */
+.user-modal-stats {
+ display: flex;
+ gap: 24px;
+ padding: 16px;
+ background: var(--color-surface);
+ border-radius: 8px;
+}
+
+.stat {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ gap: 4px;
+}
+
+.stat-value {
+ font-size: 20px;
+ font-weight: 600;
+ color: var(--color-text);
+}
+
+.stat-label {
+ font-size: 12px;
+ color: var(--color-text-secondary);
+ text-transform: uppercase;
+ letter-spacing: 0.5px;
+}
+
+/* Custom Fields */
+.user-modal-custom-fields {
+ padding: 16px;
+ background: var(--color-surface);
+ border-radius: 8px;
+}
+
+.user-modal-custom-fields h4 {
+ margin: 0 0 12px 0;
+ font-size: 14px;
+ font-weight: 600;
+ color: var(--color-text);
+ text-transform: uppercase;
+ letter-spacing: 0.5px;
+}
+
+.custom-field-item {
+ display: flex;
+ gap: 8px;
+ margin-bottom: 8px;
+ font-size: 14px;
+}
+
+.custom-field-item:last-child {
+ margin-bottom: 0;
+}
+
+.custom-field-item .field-key {
+ font-weight: 500;
+ color: var(--color-text);
+ min-width: 100px;
+}
+
+.custom-field-item .field-value {
+ color: var(--color-text-secondary);
+ word-wrap: break-word;
+ flex: 1;
+}
+
+/* Action Buttons */
+.user-modal-actions {
+ display: flex;
+ gap: 12px;
+ padding-top: 8px;
+ border-top: 1px solid var(--color-border);
+}
+
+.user-modal-actions .action-btn {
+ flex: 1;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ gap: 8px;
+ padding: 12px 20px;
+ border: 2px solid;
+ border-radius: 8px;
+ font-size: 14px;
+ font-weight: 600;
+ cursor: pointer;
+ transition: all 0.2s ease;
+ background: transparent;
+}
+
+.user-modal-actions .action-btn:disabled {
+ opacity: 0.5;
+ cursor: not-allowed;
+}
+
+.user-modal-actions .action-btn.follow {
+ border-color: var(--color-primary);
+ color: var(--color-primary);
+}
+
+.user-modal-actions .action-btn.follow:hover:not(:disabled) {
+ background: var(--color-primary);
+ color: white;
+ transform: translateY(-1px);
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
+}
+
+.user-modal-actions .action-btn.following {
+ border-color: var(--color-success);
+ background: var(--color-success);
+ color: white;
+}
+
+.user-modal-actions .action-btn.following:hover:not(:disabled) {
+ background: var(--color-error);
+ border-color: var(--color-error);
+ transform: translateY(-1px);
+}
+
+.user-modal-actions .action-btn.secondary {
+ border-color: var(--color-border);
+ color: var(--color-text);
+}
+
+.user-modal-actions .action-btn.secondary:hover:not(:disabled) {
+ border-color: var(--color-text-secondary);
+ background: var(--color-surface);
+ transform: translateY(-1px);
+}
+
+/* Responsive adjustments */
+@media (max-width: 480px) {
+ .user-modal {
+ min-width: 320px;
+ max-width: 100%;
+ padding: 16px;
+ }
+
+ .user-modal-name {
+ font-size: 20px;
+ }
+
+ .user-modal-actions {
+ flex-direction: column;
+ }
+
+ .user-modal-actions .action-btn {
+ width: 100%;
+ }
+}
+
+/* Modal background improvements for user modal */
+#modal-background {
+ background: rgba(0, 0, 0, 0.6);
+ backdrop-filter: blur(4px);
+}
+
+#modal {
+ background: var(--color-background);
+ border-radius: 16px;
+ box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
+ max-height: 90vh;
+ overflow-y: auto;
+}