1
0

add theme

This commit is contained in:
whippyshou 2023-11-09 19:33:38 +09:00
parent 5487278807
commit 4f196f2ffc
34 changed files with 19485 additions and 36 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 189 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 927 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@ -193,12 +193,13 @@ export default class Dropdown extends PureComponent {
id: id++, id: id++,
}; };
handleClick = ({ type }) => { handleClick = (e) => {
if (this.state.id === this.props.openDropdownId) { if (this.state.id === this.props.openDropdownId) {
this.handleClose(); this.handleClose();
} else { } else {
this.props.onOpen(this.state.id, this.handleItemClick, type !== 'click'); this.props.onOpen(this.state.id, this.handleItemClick, e.type !== 'click');
} }
e.stopPropagation();
}; };
handleClose = () => { handleClose = () => {

View File

@ -112,9 +112,15 @@ class Poll extends ImmutablePureComponent {
e.stopPropagation(); e.stopPropagation();
e.preventDefault(); e.preventDefault();
} }
}; };
handleVote = () => { handleStopProp = (e) =>{
e.stopPropagation();
}
handleVote = (e) => {
e.stopPropagation();
if (this.props.disabled) { if (this.props.disabled) {
return; return;
} }
@ -122,15 +128,17 @@ class Poll extends ImmutablePureComponent {
this.props.onVote(Object.keys(this.state.selected)); this.props.onVote(Object.keys(this.state.selected));
}; };
handleRefresh = () => { handleRefresh = (e) => {
e.stopPropagation();
if (this.props.disabled) { if (this.props.disabled) {
return; return;
} }
this.props.refresh(); this.props.refresh(e);
}; };
handleReveal = () => { handleReveal = (e) => {
e.stopPropagation();
this.setState({ revealed: true }); this.setState({ revealed: true });
} }
@ -228,8 +236,8 @@ class Poll extends ImmutablePureComponent {
} }
return ( return (
<div className='poll'> <div className='poll' onClick={this.handleStopProp}>
<ul> <ul >
{poll.get('options').map((option, i) => this.renderOption(option, i, showResults))} {poll.get('options').map((option, i) => this.renderOption(option, i, showResults))}
</ul> </ul>

View File

@ -249,6 +249,14 @@ class Status extends ImmutablePureComponent {
} }
}; };
handleStatusClick = (e) => {
if (e.button === 0 && !(e.ctrlKey || e.metaKey) && this.context.router) {
e.preventDefault();
this.context.router.history.push(`/@${this.props.status.getIn(['account', 'acct'])}`+`/${this.props.status.get('id')}`)
}
e.stopPropagation();
};
handleDeployPictureInPicture = (type, mediaProps) => { handleDeployPictureInPicture = (type, mediaProps) => {
const { deployPictureInPicture } = this.props; const { deployPictureInPicture } = this.props;
const status = this._properStatus(); const status = this._properStatus();
@ -392,7 +400,7 @@ class Status extends ImmutablePureComponent {
}; };
return ( return (
<HotKeys handlers={minHandlers}> <HotKeys handlers={minHandlers} >
<div className='status__wrapper status__wrapper--filtered focusable' tabIndex={0} ref={this.handleRef}> <div className='status__wrapper status__wrapper--filtered focusable' tabIndex={0} ref={this.handleRef}>
<FormattedMessage id='status.filtered' defaultMessage='Filtered' />: {matchedFilters.join(', ')}. <FormattedMessage id='status.filtered' defaultMessage='Filtered' />: {matchedFilters.join(', ')}.
{' '} {' '}
@ -550,7 +558,7 @@ class Status extends ImmutablePureComponent {
return ( return (
<HotKeys handlers={handlers}> <HotKeys handlers={handlers}>
<div className={classNames('status__wrapper', `status__wrapper-${status.get('visibility')}`, { 'status__wrapper-reply': !!status.get('in_reply_to_id'), unread, focusable: !this.props.muted })} tabIndex={this.props.muted ? null : 0} data-featured={featured ? 'true' : null} aria-label={textForScreenReader(intl, status, rebloggedByText)} ref={this.handleRef} data-nosnippet={status.getIn(['account', 'noindex'], true) || undefined}> <div onClick={this.handleStatusClick} className={classNames('status__wrapper', `status__wrapper-${status.get('visibility')}`, { 'status__wrapper-reply': !!status.get('in_reply_to_id'), unread, focusable: !this.props.muted })} tabIndex={this.props.muted ? null : 0} data-featured={featured ? 'true' : null} aria-label={textForScreenReader(intl, status, rebloggedByText)} ref={this.handleRef} data-nosnippet={status.getIn(['account', 'noindex'], true) || undefined}>
{prepend} {prepend}
<div className={classNames('status', `status-${status.get('visibility')}`, { 'status-reply': !!status.get('in_reply_to_id'), 'status--in-thread': !!rootId, 'status--first-in-thread': previousId && (!connectUp || connectToRoot), muted: this.props.muted })} data-id={status.get('id')}> <div className={classNames('status', `status-${status.get('visibility')}`, { 'status-reply': !!status.get('in_reply_to_id'), 'status--in-thread': !!rootId, 'status--first-in-thread': previousId && (!connectUp || connectToRoot), muted: this.props.muted })} data-id={status.get('id')}>

View File

@ -102,7 +102,24 @@ class StatusActionBar extends ImmutablePureComponent {
'withDismiss', 'withDismiss',
]; ];
handleReplyClick = () => {
// handleReplyClick = () => {
// if (e.button === 0 && !(e.ctrlKey || e.metaKey) && this.context.router) {
// e.preventDefault();
// const { signedIn } = this.context.identity;
// if (signedIn) {
// this.props.onReply(this.props.status, this.context.router.history);
// } else {
// this.props.onInteractionModal('reply', this.props.status);
// }
// }
// e.stopPropagation()
// };
handleReplyClick = e => {
const { signedIn } = this.context.identity; const { signedIn } = this.context.identity;
if (signedIn) { if (signedIn) {
@ -110,6 +127,7 @@ class StatusActionBar extends ImmutablePureComponent {
} else { } else {
this.props.onInteractionModal('reply', this.props.status); this.props.onInteractionModal('reply', this.props.status);
} }
e.stopPropagation();
}; };
handleShareClick = () => { handleShareClick = () => {
@ -120,7 +138,7 @@ class StatusActionBar extends ImmutablePureComponent {
}); });
}; };
handleFavouriteClick = () => { handleFavouriteClick = e => {
const { signedIn } = this.context.identity; const { signedIn } = this.context.identity;
if (signedIn) { if (signedIn) {
@ -128,6 +146,7 @@ class StatusActionBar extends ImmutablePureComponent {
} else { } else {
this.props.onInteractionModal('favourite', this.props.status); this.props.onInteractionModal('favourite', this.props.status);
} }
e.stopPropagation();
}; };
handleReblogClick = e => { handleReblogClick = e => {
@ -138,10 +157,12 @@ class StatusActionBar extends ImmutablePureComponent {
} else { } else {
this.props.onInteractionModal('reblog', this.props.status); this.props.onInteractionModal('reblog', this.props.status);
} }
e.stopPropagation();
}; };
handleBookmarkClick = () => { handleBookmarkClick = e => {
this.props.onBookmark(this.props.status); this.props.onBookmark(this.props.status);
e.stopPropagation();
}; };
handleDeleteClick = () => { handleDeleteClick = () => {
@ -233,6 +254,11 @@ class StatusActionBar extends ImmutablePureComponent {
this.props.onFilter(); this.props.onFilter();
}; };
handleActionbarClick = (e) => {
console.log("dd")
e.stopPropagation();
};
render () { render () {
const { status, relationship, intl, withDismiss, withCounters, scrollKey } = this.props; const { status, relationship, intl, withDismiss, withCounters, scrollKey } = this.props;
const { signedIn, permissions } = this.context.identity; const { signedIn, permissions } = this.context.identity;

View File

@ -217,7 +217,7 @@ class StatusContent extends PureComponent {
handleSpoilerClick = (e) => { handleSpoilerClick = (e) => {
e.preventDefault(); e.preventDefault();
e.stopPropagation();
if (this.props.onExpandedToggle) { if (this.props.onExpandedToggle) {
// The parent manages the state // The parent manages the state
this.props.onExpandedToggle(); this.props.onExpandedToggle();

View File

@ -33,13 +33,13 @@ export default class NavigationBar extends ImmutablePureComponent {
<div className='navigation-bar__profile'> <div className='navigation-bar__profile'>
<span> <span>
<Link to={`/@${username}`}> <Link to={`/@${username}`}>
<strong className='navigation-bar__profile-account'>{displayName}</strong> <strong className='navigation-bar__profile-account display-name'>{displayName}</strong>
</Link> </Link>
</span> </span>
<span> <span>
<Link to={`/@${username}`}> <Link to={`/@${username}`}>
<strong className='navigation-bar__profile-account'>@{username}</strong> <strong className='navigation-bar__profile-account username'>@{username}</strong>
</Link> </Link>
</span> </span>
</div> </div>

View File

@ -11,7 +11,7 @@ import { connect } from 'react-redux';
import { debounce } from 'lodash'; import { debounce } from 'lodash';
import illustration from 'mastodon/../images/elephant_ui_conversation.svg'; import illustration from 'mastodon/../images/rabbit_ui_conversation.png';
import { fetchAccount } from 'mastodon/actions/accounts'; import { fetchAccount } from 'mastodon/actions/accounts';
import { focusCompose } from 'mastodon/actions/compose'; import { focusCompose } from 'mastodon/actions/compose';
import { closeOnboarding } from 'mastodon/actions/onboarding'; import { closeOnboarding } from 'mastodon/actions/onboarding';

View File

@ -68,6 +68,10 @@ class DetailedStatus extends ImmutablePureComponent {
e.stopPropagation(); e.stopPropagation();
}; };
handleOpenVideo = (options) => { handleOpenVideo = (options) => {
this.props.onOpenVideo(this.props.status.getIn(['media_attachments', 0]), options); this.props.onOpenVideo(this.props.status.getIn(['media_attachments', 0]), options);
}; };
@ -296,7 +300,7 @@ class DetailedStatus extends ImmutablePureComponent {
const expanded = !status.get('hidden') || status.get('spoiler_text').length === 0; const expanded = !status.get('hidden') || status.get('spoiler_text').length === 0;
return ( return (
<div style={outerStyle}> <div style={outerStyle} >
<div ref={this.setRef} className={classNames('detailed-status', { compact })}> <div ref={this.setRef} className={classNames('detailed-status', { compact })}>
{status.get('visibility') === 'direct' && ( {status.get('visibility') === 'direct' && (
<div className='status__prepend'> <div className='status__prepend'>

View File

@ -352,6 +352,9 @@ class Status extends ImmutablePureComponent {
} }
}; };
handleEditClick = (status, history) => { handleEditClick = (status, history) => {
this.props.dispatch(editStatus(status.get('id'), history)); this.props.dispatch(editStatus(status.get('id'), history));
}; };

View File

@ -623,7 +623,7 @@
"server_banner.about_active_users": "30일 동안 이 서버를 사용한 사람들 (월간 활성 이용자)", "server_banner.about_active_users": "30일 동안 이 서버를 사용한 사람들 (월간 활성 이용자)",
"server_banner.active_users": "활성 사용자", "server_banner.active_users": "활성 사용자",
"server_banner.administered_by": "관리자:", "server_banner.administered_by": "관리자:",
"server_banner.introduction": "{title}은 {WhippyEdition}으로 운영되는 마스토돈 인스턴스입니다. {WhippyEdition}은 오리지널 캐릭터의 교류를 목적으로 하는 커뮤니티를 위해 제공되고 있습니다.", "server_banner.introduction": "{title}은(는) {WhippyEdition}으로 운영되는 마스토돈 인스턴스입니다. {WhippyEdition}은 오리지널 캐릭터의 교류를 목적으로 하는 커뮤니티를 위해 제공되고 있습니다.",
"server_banner.learn_more": "더 알아보기", "server_banner.learn_more": "더 알아보기",
"server_banner.server_stats": "서버 통계:", "server_banner.server_stats": "서버 통계:",
"sign_in_banner.create_account": "계정 생성", "sign_in_banner.create_account": "계정 생성",

View File

@ -0,0 +1,3 @@
@import 'application';
@import 'bird-ui/layout-single-column.scss';
@import 'bird-ui/layout-multiple-columns.scss';

View File

@ -0,0 +1,5 @@
@import 'mastodon-light/variables';
@import 'application';
@import 'mastodon-light/diff';
@import 'bird-ui/layout-single-column.scss';
@import 'bird-ui/layout-multiple-columns.scss';

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -677,4 +677,12 @@ img.logo--wordmark {
img.logo--icon { img.logo--icon {
content: url("../images/logos/logo_light.png"); content: url("../images/logos/logo_light.png");
} }
@media screen and (max-width: $no-gap-breakpoint - 1px) {
.ui__header__logo img.logo {
content: url("../images/logos/m_logo_light.png");
}
}

View File

@ -1040,7 +1040,7 @@ body > [data-popper-placement] {
padding: 16px; padding: 16px;
min-height: 54px; min-height: 54px;
border-bottom: 1px solid lighten($ui-base-color, 8%); border-bottom: 1px solid lighten($ui-base-color, 8%);
cursor: auto; cursor: pointer;
@keyframes fade { @keyframes fade {
0% { 0% {
@ -1059,6 +1059,7 @@ body > [data-popper-placement] {
.video-player, .video-player,
.audio-player, .audio-player,
.attachment-list { .attachment-list {
max-height: 500px;
margin-top: 16px; margin-top: 16px;
} }
@ -1340,6 +1341,7 @@ body > [data-popper-placement] {
.media-gallery, .media-gallery,
.video-player, .video-player,
.audio-player { .audio-player {
max-height:unset;
margin-top: 16px; margin-top: 16px;
} }
@ -1657,6 +1659,7 @@ a.account__display-name {
line-height: 22px; line-height: 22px;
margin-bottom: 16px; margin-bottom: 16px;
overflow: hidden; overflow: hidden;
width: fit-content;
strong, strong,
span { span {
@ -2487,8 +2490,15 @@ $ui-header-height: 55px;
.error-column { .error-column {
border-radius: 0 !important; border-radius: 0 !important;
} }
.ui__header__logo img.logo {
content: url("../images/logos/m_logo_dark.png");
}
} }
@media screen and (max-width: $no-gap-breakpoint - 285px - 1px) { @media screen and (max-width: $no-gap-breakpoint - 285px - 1px) {
$sidebar-width: 55px; $sidebar-width: 55px;
@ -2966,7 +2976,7 @@ $ui-header-height: 55px;
} }
.logo { .logo {
height: 100px; height: 85px;
width: auto; width: auto;
} }
} }
@ -6311,7 +6321,6 @@ a.status-card {
box-sizing: border-box; box-sizing: border-box;
display: block; display: block;
position: relative; position: relative;
border-radius: 8px;
overflow: hidden; overflow: hidden;
&--tall { &--tall {

View File

@ -0,0 +1,3 @@
@import 'application';
@import 'theme-ui/layout-single-column.scss';
@import 'theme-ui/layout-multiple-columns.scss';

View File

@ -0,0 +1,5 @@
@import 'mastodon-light/variables';
@import 'application';
@import 'mastodon-light/diff';
@import 'theme-ui/layout-single-column.scss';
@import 'theme-ui/layout-multiple-columns.scss';

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1733,11 +1733,11 @@ en:
themes: themes:
contrast: Mastodon (High contrast) contrast: Mastodon (High contrast)
default: Mastodon Bird UI (Dark) default: Mastodon Bird UI (Dark)
mastodon-bird-ui-light: Mastodon Bird UI (Light) bird-ui-light: Mastodon Bird UI (Light)
bird-ui-dark: Mastodon Bird UI (dark)
mastodon-light: Mastodon (Light) mastodon-light: Mastodon (Light)
mastodon-dark: Mastodon (Dark) mastodon-dark: Mastodon (Dark)
mastodon-bird-ui-light-vanilla: Mastodon Bird UI - vanila (Light) theme-ui-light: Mastodon Bird UI - vanila (dark)
mastodon-bird-ui-dark-vanilla: Mastodon Bird UI - vanila (dark)
time: time:
formats: formats:
default: "%b %d, %Y, %H:%M" default: "%b %d, %Y, %H:%M"

View File

@ -1,7 +1,7 @@
--- ---
ko: ko:
about: about:
about_mastodon_html: '미래의 소셜 네트워크: 광고 없음, 기업 감시 없음, 윤리적 설계, 탈중앙화! 여러분만의 데이터를 Mastodon으로 소유하세요!' about_mastodon_html: '휘핑 에디션 :: 오리지널 캐릭터의 교류를 목적으로 하는 커뮤니티를 위해 제공되는 마스토돈 에디션.'
contact_missing: 미설정 contact_missing: 미설정
contact_unavailable: 없음 contact_unavailable: 없음
hosted_on: "%{domain}에서 호스팅 되는 마스토돈" hosted_on: "%{domain}에서 호스팅 되는 마스토돈"
@ -1701,12 +1701,12 @@ ko:
does_not_match_previous_name: 이전 이름과 맞지 않습니다 does_not_match_previous_name: 이전 이름과 맞지 않습니다
themes: themes:
contrast: 마스토돈 (고대비) contrast: 마스토돈 (고대비)
default: 휘핑 에디션 테마 (어두움) default: 휘핑 에디션 커스텀 테마 (어두움)
mastodon-bird-ui-light: 휘핑 에디션 테마 (밝음) theme-ui-light: 휘핑 에디션 커스텀 테마 (밝음)
mastodon-light: 마스토돈 (밝음) mastodon-light: 마스토돈 (밝음)
mastodon-dark: 마스토돈 (어두움) mastodon-dark: 마스토돈 (어두움)
mastodon-bird-ui-light-vanilla: 파란새풍 테마 (밝음) bird-ui-light: 파란새풍 테마 (밝음)
mastodon-bird-ui-dark-vanilla: 파란새풍 테마 (어두움) bird-ui-dark: 파란새풍 테마 (어두움)
time: time:
formats: formats:
default: "%Y-%m-%d %H:%M" default: "%Y-%m-%d %H:%M"

View File

@ -1,9 +1,9 @@
# default: styles/mastodon-bird-ui-dark.scss # default: styles/mastodon-bird-ui-dark.scss
default: styles/application.scss default: styles/theme-ui-dark.scss
# mastodon-bird-ui-light: styles/mastodon-bird-ui-light.scss theme-ui-light : styles/theme-ui-light.scss
# bird-ui-light: styles/bird-ui-light.scss bird-ui-light: styles/bird-ui-light.scss
# bird-ui-dark: styles/bird-ui-dark.scss bird-ui-dark: styles/bird-ui-dark.scss
# # mastodon-dark: styles/application.scss mastodon-dark: styles/application.scss
mastodon-light: styles/mastodon-light.scss mastodon-light: styles/mastodon-light.scss
contrast: styles/contrast.scss contrast: styles/contrast.scss

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 13 KiB