diff --git a/docs/screenshots/social-tab-fixed.png b/docs/screenshots/social-tab-fixed.png new file mode 100644 index 0000000..cf31aed Binary files /dev/null and b/docs/screenshots/social-tab-fixed.png differ diff --git a/src/App.css b/src/App.css index 3eb040d..0fae964 100644 --- a/src/App.css +++ b/src/App.css @@ -5006,3 +5006,1285 @@ transition: none; } } + +/* ========================================================================== + Community Gallery Styles + ========================================================================== */ + +.community-gallery { + padding: 1rem; + background: #1a1a1a; + border-radius: 8px; + max-width: 800px; + width: 100%; +} + +.community-gallery__header { + margin-bottom: 1rem; +} + +.community-gallery__title { + font-size: 1.25rem; + margin: 0 0 0.25rem; + color: #fff; +} + +.community-gallery__subtitle { + font-size: 0.875rem; + color: #888; + margin: 0; +} + +.community-gallery__controls { + margin-bottom: 1rem; +} + +.community-gallery__search { + position: relative; + margin-bottom: 0.75rem; +} + +.community-gallery__search-input { + width: 100%; + padding: 0.5rem 2rem 0.5rem 0.75rem; + border: 1px solid #333; + border-radius: 4px; + background: #2a2a2a; + color: #fff; + font-size: 16px; + box-sizing: border-box; +} + +.community-gallery__search-input::placeholder { + color: #666; +} + +.community-gallery__search-input:focus { + outline: none; + border-color: #646cff; +} + +.community-gallery__search-clear { + position: absolute; + right: 0.5rem; + top: 50%; + transform: translateY(-50%); + padding: 0.5rem; + border: none; + background: transparent; + color: #888; + cursor: pointer; + font-size: 1rem; + line-height: 1; + -webkit-tap-highlight-color: transparent; + touch-action: manipulation; +} + +.community-gallery__search-clear:hover { + color: #fff; +} + +.community-gallery__filters { + display: flex; + flex-wrap: wrap; + gap: 0.5rem; +} + +.community-gallery__select { + padding: 0.375rem 0.75rem; + border: 1px solid #333; + border-radius: 4px; + background: #2a2a2a; + color: #fff; + font-size: 0.875rem; + cursor: pointer; + flex: 1; + min-width: 0; +} + +.community-gallery__select:focus { + outline: none; + border-color: #646cff; +} + +.community-gallery__loading { + display: flex; + flex-direction: column; + align-items: center; + gap: 0.75rem; + padding: 2rem; + color: #888; + font-size: 0.875rem; +} + +.community-gallery__spinner { + width: 24px; + height: 24px; + border: 2px solid #333; + border-top-color: #646cff; + border-radius: 50%; + animation: community-spin 0.8s linear infinite; +} + +@keyframes community-spin { + to { + transform: rotate(360deg); + } +} + +.community-gallery__error { + padding: 0.75rem; + border-radius: 4px; + background: rgba(220, 53, 69, 0.2); + color: #f5c6cb; + border: 1px solid #dc3545; + font-size: 0.875rem; + margin-bottom: 0.75rem; +} + +.community-gallery__grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); + gap: 0.75rem; + margin-bottom: 0.75rem; +} + +.community-gallery__empty { + grid-column: 1 / -1; + padding: 2rem; + text-align: center; + color: #666; + font-size: 0.875rem; +} + +.community-gallery__item { + background: #2a2a2a; + border-radius: 6px; + overflow: hidden; + cursor: pointer; + transition: + transform 0.2s, + box-shadow 0.2s; + -webkit-tap-highlight-color: transparent; + touch-action: manipulation; + position: relative; + will-change: transform; + transform: translateZ(0); +} + +.community-gallery__item:hover { + transform: translateY(-2px); + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); +} + +@media (hover: none) { + .community-gallery__item:hover { + transform: none; + box-shadow: none; + } + + .community-gallery__item:active { + transform: scale(0.98); + background: #333; + } +} + +.community-gallery__item:focus { + outline: 2px solid #646cff; + outline-offset: 2px; +} + +.community-gallery__badges { + position: absolute; + top: 4px; + left: 4px; + display: flex; + gap: 4px; + z-index: 1; +} + +.community-gallery__badge { + padding: 0.125rem 0.375rem; + border-radius: 4px; + font-size: 0.625rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.02em; +} + +.community-gallery__badge--featured { + background: rgba(100, 108, 255, 0.85); + color: #fff; +} + +.community-gallery__badge--staff { + background: rgba(76, 175, 80, 0.85); + color: #fff; +} + +.community-gallery__thumbnail { + width: 100%; + height: 100px; + position: relative; + display: flex; + align-items: center; + justify-content: center; +} + +.community-gallery__noise-indicator { + position: absolute; + bottom: 4px; + right: 4px; + width: 16px; + height: 16px; + border-radius: 50%; + opacity: 0.8; +} + +.community-gallery__noise-indicator--perlin { + background: repeating-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.1), + rgba(255, 255, 255, 0.1) 2px, + transparent 2px, + transparent 4px + ); + border: 1px solid rgba(255, 255, 255, 0.3); +} + +.community-gallery__noise-indicator--worley { + background: + radial-gradient(circle at 30% 30%, rgba(255, 255, 255, 0.3), transparent 50%), + radial-gradient(circle at 70% 70%, rgba(255, 255, 255, 0.2), transparent 50%); + border: 1px solid rgba(255, 255, 255, 0.3); +} + +.community-gallery__noise-indicator--crackle { + background: conic-gradient( + from 0deg, + rgba(255, 255, 255, 0.1) 0deg, + transparent 30deg, + rgba(255, 255, 255, 0.1) 60deg, + transparent 90deg, + rgba(255, 255, 255, 0.1) 120deg, + transparent 150deg + ); + border: 1px solid rgba(255, 255, 255, 0.3); +} + +.community-gallery__item-info { + padding: 0.5rem; + display: flex; + flex-direction: column; + gap: 0.125rem; +} + +.community-gallery__item-name { + font-size: 0.75rem; + font-weight: 500; + color: #fff; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.community-gallery__item-author { + font-size: 0.625rem; + color: #888; +} + +.community-gallery__item-stats { + display: flex; + align-items: center; + gap: 0.5rem; + padding: 0 0.5rem 0.375rem; + font-size: 0.625rem; + color: #888; +} + +.community-gallery__like-btn { + display: flex; + align-items: center; + gap: 0.25rem; + padding: 0.125rem 0.25rem; + border: none; + border-radius: 4px; + background: transparent; + color: #888; + cursor: pointer; + font-size: 0.625rem; + transition: color 0.2s; + -webkit-tap-highlight-color: transparent; + touch-action: manipulation; +} + +.community-gallery__like-btn:hover { + color: #fff; +} + +.community-gallery__like-btn--liked { + color: #e74c3c; +} + +.community-gallery__like-icon { + font-size: 0.875rem; + line-height: 1; +} + +.community-gallery__like-count { + font-size: 0.625rem; +} + +.community-gallery__views, +.community-gallery__downloads { + display: flex; + align-items: center; + gap: 0.125rem; +} + +.community-gallery__item-tags { + display: flex; + flex-wrap: wrap; + gap: 0.25rem; + padding: 0 0.5rem 0.5rem; +} + +.community-gallery__item-tag { + padding: 0.0625rem 0.375rem; + border-radius: 6px; + background: #3a3a3a; + color: #aaa; + font-size: 0.5625rem; +} + +.community-gallery__item-tag--more { + background: #444; +} + +.community-gallery__pagination { + display: flex; + justify-content: center; + align-items: center; + gap: 0.25rem; + margin-bottom: 0.75rem; +} + +.community-gallery__page-btn { + padding: 0.375rem 0.625rem; + border: 1px solid #333; + border-radius: 4px; + background: transparent; + color: #aaa; + cursor: pointer; + font-size: 0.75rem; + transition: + background-color 0.2s, + color 0.2s; + -webkit-tap-highlight-color: transparent; + touch-action: manipulation; +} + +.community-gallery__page-btn:hover:not(:disabled) { + background: #333; + color: #fff; +} + +.community-gallery__page-btn:disabled { + opacity: 0.4; + cursor: not-allowed; +} + +.community-gallery__page-btn--active { + background: #646cff; + border-color: #646cff; + color: #fff; +} + +.community-gallery__ellipsis { + padding: 0.375rem 0.25rem; + color: #666; + font-size: 0.75rem; +} + +.community-gallery__footer { + text-align: center; +} + +.community-gallery__count { + font-size: 0.75rem; + color: #666; +} + +/* Responsive adjustments for Community Gallery */ +@media (max-width: 768px) { + .community-gallery { + max-width: 100%; + border-radius: 0; + padding: 0.75rem; + } + + .community-gallery__grid { + grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); + } +} + +@media (max-width: 480px) { + .community-gallery__grid { + grid-template-columns: repeat(2, 1fr); + gap: 0.5rem; + } + + .community-gallery__filters { + flex-direction: column; + } + + .community-gallery__select { + width: 100%; + } + + .community-gallery__thumbnail { + height: 80px; + } +} + +@media (pointer: coarse) { + .community-gallery__search-input { + min-height: 44px; + padding: 0.625rem 2.5rem 0.625rem 0.875rem; + } + + .community-gallery__search-clear { + min-width: 44px; + min-height: 44px; + display: flex; + align-items: center; + justify-content: center; + } + + .community-gallery__select { + min-height: 44px; + } + + .community-gallery__like-btn { + min-height: 44px; + } + + .community-gallery__page-btn { + min-height: 44px; + min-width: 44px; + } +} + +@media (prefers-reduced-motion: reduce) { + .community-gallery__item { + transition: none; + } + + .community-gallery__item:hover { + transform: none; + } + + .community-gallery__spinner { + animation: none; + } +} + +/* ========================================================================== + Share Panel Styles + ========================================================================== */ + +.share-panel { + padding: 1rem; + background: #1a1a1a; + border-radius: 8px; + max-width: 800px; + width: 100%; +} + +.share-panel__title { + font-size: 1.25rem; + margin: 0 0 1rem; + color: #fff; +} + +.share-panel__subtitle { + font-size: 1rem; + margin: 0 0 0.75rem; + color: #ddd; +} + +.share-panel__create { + margin-bottom: 1.5rem; +} + +.share-panel__field { + margin-bottom: 0.75rem; +} + +.share-panel__label { + display: block; + font-size: 0.75rem; + color: #aaa; + margin-bottom: 0.25rem; +} + +.share-panel__select, +.share-panel__input { + width: 100%; + padding: 0.5rem 0.75rem; + border: 1px solid #333; + border-radius: 4px; + background: #2a2a2a; + color: #fff; + font-size: 0.875rem; + box-sizing: border-box; +} + +.share-panel__select:focus, +.share-panel__input:focus { + outline: none; + border-color: #646cff; +} + +.share-panel__hint { + font-size: 0.625rem; + color: #666; + margin-top: 0.25rem; +} + +.share-panel__button { + padding: 0.5rem 1rem; + border: 1px solid #333; + border-radius: 4px; + cursor: pointer; + font-size: 0.875rem; + transition: + background-color 0.2s, + color 0.2s; + -webkit-tap-highlight-color: transparent; + touch-action: manipulation; + background: #2a2a2a; + color: #fff; +} + +.share-panel__button:hover { + background: #3a3a3a; +} + +.share-panel__button--primary { + background: #646cff; + border-color: #646cff; + color: #fff; + width: 100%; +} + +.share-panel__button--primary:hover { + background: #535bf2; +} + +.share-panel__button--copy { + background: #4caf50; + border-color: #4caf50; + color: #fff; +} + +.share-panel__button--copy:hover { + background: #45a049; +} + +.share-panel__button--secondary { + background: transparent; + color: #aaa; +} + +.share-panel__button--secondary:hover { + color: #fff; + background: #333; +} + +.share-panel__button--small { + padding: 0.25rem 0.5rem; + font-size: 0.75rem; +} + +.share-panel__button--danger { + background: transparent; + color: #dc3545; + border-color: #dc3545; +} + +.share-panel__button--danger:hover { + background: rgba(220, 53, 69, 0.2); +} + +.share-panel__message { + padding: 0.5rem 0.75rem; + border-radius: 4px; + font-size: 0.875rem; + margin-bottom: 0.75rem; +} + +.share-panel__message--error { + background: rgba(220, 53, 69, 0.2); + color: #f5c6cb; + border: 1px solid #dc3545; +} + +.share-panel__message--success { + background: rgba(76, 175, 80, 0.2); + color: #c3e6cb; + border: 1px solid #4caf50; +} + +.share-panel__result { + padding: 1rem; + background: #222; + border-radius: 6px; + margin-bottom: 1rem; +} + +.share-panel__link-display { + display: flex; + gap: 0.5rem; + margin-bottom: 0.75rem; +} + +.share-panel__link-input { + flex: 1; + padding: 0.5rem 0.75rem; + border: 1px solid #333; + border-radius: 4px; + background: #2a2a2a; + color: #fff; + font-size: 0.875rem; + box-sizing: border-box; +} + +.share-panel__qr { + display: flex; + flex-direction: column; + align-items: center; + gap: 0.5rem; + margin-bottom: 0.75rem; +} + +.share-panel__qr-image { + max-width: 160px; + max-height: 160px; +} + +.share-panel__qr-loading { + padding: 1rem; + color: #888; + font-size: 0.875rem; +} + +.share-panel__link-info { + display: flex; + flex-wrap: wrap; + gap: 0.75rem; + font-size: 0.75rem; + color: #888; +} + +.share-panel__info-item { + display: flex; + align-items: center; + gap: 0.25rem; +} + +.share-panel__links { + margin-top: 1.5rem; +} + +.share-panel__loading { + text-align: center; + padding: 1rem; + color: #888; + font-size: 0.875rem; +} + +.share-panel__empty { + text-align: center; + padding: 1rem; + color: #666; + font-size: 0.875rem; +} + +.share-panel__links-list { + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.share-panel__link-item { + padding: 0.75rem; + background: #222; + border-radius: 6px; + border: 1px solid #333; +} + +.share-panel__link-item--inactive { + opacity: 0.5; +} + +.share-panel__link-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 0.375rem; +} + +.share-panel__link-name { + font-size: 0.875rem; + font-weight: 500; + color: #fff; +} + +.share-panel__link-date { + font-size: 0.625rem; + color: #666; +} + +.share-panel__link-url { + font-size: 0.75rem; + color: #646cff; + word-break: break-all; + margin-bottom: 0.375rem; +} + +.share-panel__link-stats { + display: flex; + gap: 0.75rem; + font-size: 0.625rem; + color: #888; + margin-bottom: 0.375rem; +} + +.share-panel__link-actions { + display: flex; + gap: 0.5rem; +} + +/* Responsive adjustments for Share Panel */ +@media (max-width: 768px) { + .share-panel { + max-width: 100%; + border-radius: 0; + padding: 0.75rem; + } +} + +@media (max-width: 480px) { + .share-panel__link-display { + flex-direction: column; + } +} + +@media (pointer: coarse) { + .share-panel__select, + .share-panel__input, + .share-panel__link-input { + min-height: 44px; + } + + .share-panel__button { + min-height: 44px; + } +} + +/* ========================================================================== + Notification Panel Styles + ========================================================================== */ + +.notification-panel { + padding: 1rem; + background: #1a1a1a; + border-radius: 8px; + max-width: 800px; + width: 100%; +} + +.notification-panel__header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 0.75rem; +} + +.notification-panel__title { + font-size: 1.25rem; + margin: 0; + color: #fff; + display: flex; + align-items: center; + gap: 0.5rem; +} + +.notification-panel__badge { + display: inline-flex; + align-items: center; + justify-content: center; + min-width: 20px; + height: 20px; + padding: 0 6px; + border-radius: 10px; + background: #dc3545; + color: #fff; + font-size: 0.625rem; + font-weight: 600; +} + +.notification-panel__controls { + display: flex; + gap: 0.5rem; + align-items: center; + margin-bottom: 0.75rem; +} + +.notification-panel__filter { + padding: 0.375rem 0.75rem; + border: 1px solid #333; + border-radius: 4px; + background: #2a2a2a; + color: #fff; + font-size: 0.75rem; + cursor: pointer; +} + +.notification-panel__filter:focus { + outline: none; + border-color: #646cff; +} + +.notification-panel__mark-all-btn { + padding: 0.375rem 0.75rem; + border: 1px solid #333; + border-radius: 4px; + background: transparent; + color: #aaa; + cursor: pointer; + font-size: 0.75rem; + transition: + background-color 0.2s, + color 0.2s; + -webkit-tap-highlight-color: transparent; + touch-action: manipulation; +} + +.notification-panel__mark-all-btn:hover { + background: #333; + color: #fff; +} + +.notification-panel__error { + padding: 0.5rem 0.75rem; + border-radius: 4px; + background: rgba(220, 53, 69, 0.2); + color: #f5c6cb; + border: 1px solid #dc3545; + font-size: 0.875rem; + margin-bottom: 0.75rem; +} + +.notification-panel__loading { + display: flex; + flex-direction: column; + align-items: center; + gap: 0.75rem; + padding: 2rem; + color: #888; + font-size: 0.875rem; +} + +.notification-panel__spinner { + width: 24px; + height: 24px; + border: 2px solid #333; + border-top-color: #646cff; + border-radius: 50%; + animation: community-spin 0.8s linear infinite; +} + +.notification-panel__list { + display: flex; + flex-direction: column; + gap: 0.375rem; +} + +.notification-panel__empty { + text-align: center; + padding: 2rem; + color: #666; + font-size: 0.875rem; +} + +.notification-panel__item { + display: flex; + align-items: flex-start; + gap: 0.75rem; + padding: 0.75rem; + background: #222; + border-radius: 6px; + border: 1px solid transparent; + transition: background-color 0.2s; +} + +.notification-panel__item:hover { + background: #2a2a2a; +} + +.notification-panel__item--unread { + border-color: #646cff; + background: rgba(100, 108, 255, 0.05); +} + +.notification-panel__icon { + font-size: 1.25rem; + flex-shrink: 0; + line-height: 1; +} + +.notification-panel__content { + flex: 1; + min-width: 0; +} + +.notification-panel__message { + font-size: 0.875rem; + color: #ddd; + margin-bottom: 0.25rem; +} + +.notification-panel__actor { + font-weight: 500; + color: #fff; +} + +.notification-panel__time { + font-size: 0.625rem; + color: #666; +} + +.notification-panel__actions { + display: flex; + gap: 0.25rem; + flex-shrink: 0; +} + +.notification-panel__action-btn { + padding: 0.25rem 0.5rem; + border: none; + border-radius: 4px; + background: transparent; + color: #888; + cursor: pointer; + font-size: 0.75rem; + transition: + background-color 0.2s, + color 0.2s; + -webkit-tap-highlight-color: transparent; + touch-action: manipulation; +} + +.notification-panel__action-btn:hover { + background: #333; + color: #fff; +} + +.notification-panel__action-btn--danger:hover { + background: rgba(220, 53, 69, 0.2); + color: #dc3545; +} + +/* Responsive adjustments for Notification Panel */ +@media (max-width: 768px) { + .notification-panel { + max-width: 100%; + border-radius: 0; + padding: 0.75rem; + } +} + +@media (max-width: 480px) { + .notification-panel__controls { + flex-direction: column; + align-items: stretch; + } + + .notification-panel__item { + padding: 0.5rem; + } +} + +@media (pointer: coarse) { + .notification-panel__filter { + min-height: 44px; + } + + .notification-panel__mark-all-btn { + min-height: 44px; + } + + .notification-panel__action-btn { + min-height: 44px; + min-width: 44px; + } +} + +/* ========================================================================== + Comments Section Styles + ========================================================================== */ + +.comments-section { + padding: 1rem; + background: #1a1a1a; + border-radius: 8px; + max-width: 800px; + width: 100%; +} + +.comments-section__header { + margin-bottom: 0.75rem; +} + +.comments-section__title { + font-size: 1rem; + margin: 0; + color: #fff; +} + +.comments-section__form { + display: flex; + flex-direction: column; + gap: 0.5rem; + margin-bottom: 1rem; +} + +.comments-section__textarea { + width: 100%; + padding: 0.5rem 0.75rem; + border: 1px solid #333; + border-radius: 4px; + background: #2a2a2a; + color: #fff; + font-size: 0.875rem; + resize: vertical; + min-height: 60px; + box-sizing: border-box; + font-family: inherit; +} + +.comments-section__textarea:focus { + outline: none; + border-color: #646cff; +} + +.comments-section__textarea::placeholder { + color: #666; +} + +.comments-section__form-actions { + display: flex; + gap: 0.5rem; + justify-content: flex-end; +} + +.comments-section__submit-btn { + padding: 0.375rem 0.75rem; + border: none; + border-radius: 4px; + background: #646cff; + color: #fff; + cursor: pointer; + font-size: 0.75rem; + transition: background-color 0.2s; + -webkit-tap-highlight-color: transparent; + touch-action: manipulation; +} + +.comments-section__submit-btn:hover { + background: #535bf2; +} + +.comments-section__submit-btn:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +.comments-section__cancel-btn { + padding: 0.375rem 0.75rem; + border: 1px solid #333; + border-radius: 4px; + background: transparent; + color: #aaa; + cursor: pointer; + font-size: 0.75rem; + -webkit-tap-highlight-color: transparent; + touch-action: manipulation; +} + +.comments-section__cancel-btn:hover { + color: #fff; + background: #333; +} + +.comments-section__list { + display: flex; + flex-direction: column; + gap: 0.75rem; +} + +.comments-section__empty { + text-align: center; + padding: 1.5rem; + color: #666; + font-size: 0.875rem; +} + +.comments-section__comment { + padding: 0.75rem; + background: #222; + border-radius: 6px; +} + +.comments-section__comment-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 0.375rem; +} + +.comments-section__author { + display: flex; + align-items: center; + gap: 0.5rem; +} + +.comments-section__avatar { + width: 24px; + height: 24px; + border-radius: 50%; + object-fit: cover; +} + +.comments-section__avatar-placeholder { + width: 24px; + height: 24px; + border-radius: 50%; + background: #646cff; + color: #fff; + font-size: 0.625rem; + display: flex; + align-items: center; + justify-content: center; + font-weight: 600; +} + +.comments-section__author-name { + font-size: 0.875rem; + font-weight: 500; + color: #fff; +} + +.comments-section__time { + font-size: 0.625rem; + color: #666; +} + +.comments-section__edited { + color: #888; + font-style: italic; +} + +.comments-section__content { + font-size: 0.875rem; + color: #ddd; + margin: 0 0 0.5rem; + line-height: 1.4; +} + +.comments-section__actions { + display: flex; + gap: 0.5rem; +} + +.comments-section__action-btn { + padding: 0.25rem 0.5rem; + border: none; + border-radius: 4px; + background: transparent; + color: #888; + cursor: pointer; + font-size: 0.75rem; + transition: + background-color 0.2s, + color 0.2s; + -webkit-tap-highlight-color: transparent; + touch-action: manipulation; +} + +.comments-section__action-btn:hover { + background: #333; + color: #fff; +} + +.comments-section__action-btn--active { + color: #e74c3c; +} + +.comments-section__action-btn--danger:hover { + background: rgba(220, 53, 69, 0.2); + color: #dc3545; +} + +.comments-section__replies { + margin-top: 0.75rem; + padding-left: 1rem; + border-left: 2px solid #333; + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.comments-section__load-replies { + padding: 0.375rem 0.75rem; + border: 1px solid #333; + border-radius: 4px; + background: transparent; + color: #646cff; + cursor: pointer; + font-size: 0.75rem; + margin-top: 0.5rem; + -webkit-tap-highlight-color: transparent; + touch-action: manipulation; +} + +.comments-section__load-replies:hover { + background: #2a2a2a; +} + +.comments-section__login-prompt { + text-align: center; + padding: 1rem; + color: #888; + font-size: 0.875rem; +} + +/* Responsive adjustments for Comments Section */ +@media (max-width: 480px) { + .comments-section__replies { + padding-left: 0.5rem; + } +} + +@media (pointer: coarse) { + .comments-section__action-btn { + min-height: 44px; + } + + .comments-section__submit-btn, + .comments-section__cancel-btn { + min-height: 44px; + } +} diff --git a/src/components/CommentsSection.vue b/src/components/CommentsSection.vue index f3b6492..ac16c31 100644 --- a/src/components/CommentsSection.vue +++ b/src/components/CommentsSection.vue @@ -491,7 +491,7 @@ function isOwnComment(comment: Comment): boolean { :aria-label="comment.isLiked ? 'Unlike comment' : 'Like comment'" @click="handleLike(comment.id)" > - {{ comment.isLiked ? '\u2764\uFE0F' : '\U0001F90D' }} + {{ comment.isLiked ? '❤️' : '🤍' }} @@ -502,7 +502,7 @@ function isOwnComment(comment: Comment): boolean { aria-label="Reply to comment" @click="handleReply(comment.id)" > - \uD83D\uDCAC Reply + 💬 Reply @@ -561,7 +561,7 @@ function isOwnComment(comment: Comment): boolean { :aria-label="reply.isLiked ? 'Unlike comment' : 'Like comment'" @click="handleLike(reply.id)" > - {{ reply.isLiked ? '\u2764\uFE0F' : '\U0001F90D' }} + {{ reply.isLiked ? '❤️' : '🤍' }} diff --git a/src/components/CommunityGallery.vue b/src/components/CommunityGallery.vue index a4ef7cb..f41ef7c 100644 --- a/src/components/CommunityGallery.vue +++ b/src/components/CommunityGallery.vue @@ -528,16 +528,12 @@ const paginationPages = computed(() => { :aria-label="pub.isLiked ? 'Unlike' : 'Like'" @click="handleLikeToggle($event, pub.id)" > - {{ - pub.isLiked ? '\u2764\uFE0F' : '\U0001F90D' - }} + {{ pub.isLiked ? '❤️' : '🤍' }} {{ formatCount(pub.stats.likes) }} - - \uD83D\uDC41 {{ formatCount(pub.stats.views) }} - + 👁 {{ formatCount(pub.stats.views) }} - \u2B07 {{ formatCount(pub.stats.downloads) }} + ⬇ {{ formatCount(pub.stats.downloads) }}