Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

release: v2024.3.0-kakurega.1.31.0 #131

Merged
merged 95 commits into from
Mar 1, 2024
Merged
Changes from 1 commit
Commits
Show all changes
95 commits
Select commit Hold shift + click to select a range
0b636d1
fix: nodeinfoにenableMcaptchaとenableTurnstileが無い (#13387)
anatawa12 Feb 18, 2024
1b1046b
fix: syuilo/misskey時代から使用してるサーバーが改変したバージョンだと誤判定される問題 (DB migrationで修正…
anatawa12 Feb 18, 2024
034f472
Fix(frontend): オートコンプリートが出るべき状況で出ないことがあるのを修正 (#13376)
1Step621 Feb 18, 2024
9be3890
Fix Changelog
kakkokari-gtyih Feb 19, 2024
ddd7b26
enhance(frontend): ノート作成画面の添付メニューのdividerの位置を"添付取り消し"の上にする (#13409)
Sayamame-beans Feb 20, 2024
39c4e3a
fix(frontend): チャートのラベルが消えている問題を修正 (#13416)
zyoshoka Feb 20, 2024
f18a31c
fix(frontend): 画面表示後最初の音声再生が爆音になることがある問題を修正 (#13379)
zyoshoka Feb 20, 2024
bbbb167
refactor(frontend): 不必要なconsole.logを除去・抑制 (#13400)
kakkokari-gtyih Feb 21, 2024
750d262
refactor(backend): `ReactionService.prototype.convertLegacyReactions`…
okayurisotto Feb 21, 2024
ae27085
fix: Bump sharp to 0.33.2 (#13391)
tamaina Feb 21, 2024
fb0eb5a
:art:
syuilo Feb 21, 2024
e10ce72
fix: MkUserPopupが表示されてる状態でv-user-previewがついた要素がdetachされるとMkUserPopupが…
anatawa12 Feb 21, 2024
b36e6b1
fix: 禁止キーワードを含むノートがDelayed Queueに追加されて再処理される問題 (#13428)
anatawa12 Feb 21, 2024
26c8b53
enhance: サーバーごとにモデレーションノートを残せるように
syuilo Feb 22, 2024
2bd9f05
Merge branch 'develop' of https://github.com/misskey-dev/misskey into…
syuilo Feb 22, 2024
4d6fab0
refactor: Refactor NoteReadService.read (#13429)
tamaina Feb 22, 2024
bf5952f
flash/update で部分的に変更できるようにする (#13396)
FineArchs Feb 22, 2024
d20542c
enhance: `meta`をSSR HTMLに埋め込む (#13436)
kakkokari-gtyih Feb 23, 2024
080a3c2
fix: SSR時のmetaをエスケープするように (#13440)
kakkokari-gtyih Feb 23, 2024
64953fa
refactor(backend): `Array.prototype.filter`での非null確認では`isNotNull`関数を使…
okayurisotto Feb 23, 2024
30fe072
fix(test): Chromaticが落ちているのを一部修正? (#13435)
kakkokari-gtyih Feb 23, 2024
a85fcca
Fix(frontend): 絵文字オートコンプリートの優先順位がおかしいのを修正 (#13423)
1Step621 Feb 23, 2024
b8d8b35
fix: プッシュ通知の変更が1時間ほど反映されない問題を修正 (#13407)
tamaina Feb 23, 2024
a861f91
fix(backend): より多くの人に使われているハッシュタグが検索結果上位に来るように (#11498) (#13340)
okayurisotto Feb 23, 2024
600d91b
enhance: リモートのフォロワーから再度Followが来た場合、acceptを返してあげる (#13388)
tamaina Feb 23, 2024
d834232
enhance(games): 抜けている翻訳を追加・スタイル共通化 (#13434)
kakkokari-gtyih Feb 23, 2024
c0156b7
enhance?: DeleteAccountServiceでユーザーを削除する際にuserChangeDeletedStateを発行する…
tamaina Feb 23, 2024
e3dd3f6
Enhance(frontend): リアクションピッカーを調整 (#13354)
1Step621 Feb 24, 2024
41747b6
refactor
syuilo Feb 24, 2024
792168f
fix(frontend): `userActivation`がない環境において不具合が生じる問題を修正 (#13451)
zyoshoka Feb 24, 2024
2c6f25b
fix: 古いキャッシュを使うのを修正 (#13453)
tamaina Feb 25, 2024
dd48366
admin/emoji/updateの必須項目を減らす 等 (#13449)
FineArchs Feb 25, 2024
0a0af68
test(frontend): Chromaticテストが落ちるのを修正 (#13448)
zyoshoka Feb 25, 2024
0fb7b98
fix(backend): fix incorrect schemas (#13458)
zyoshoka Feb 26, 2024
f906ad6
Enhance: コンディショナルロールの条件に「マニュアルロールへのアサイン」を追加 (#13463)
zawa-ch Feb 27, 2024
0d47877
enhance(backend): フォロー・フォロワー関連の通知の受信設定の強化 (#13468)
zyoshoka Feb 28, 2024
b7d9d16
refactor(backend): ノートのエクスポート処理でStreams APIを使うように (#13465)
okayurisotto Feb 28, 2024
664aeb3
fix(backend): リノート時のHTLへのストリーミングの意図しない挙動を修正 (#13425)
zyoshoka Feb 28, 2024
29350c9
refactor(frontend): `os.ts`周りのリファクタリング (#13186)
zyoshoka Feb 28, 2024
5f43c2f
enhance(backend): 通知がミュート・凍結を考慮するようにする (#13412)
tai-cha Feb 28, 2024
797bb49
Update CHANGELOG.md
syuilo Feb 29, 2024
920c3be
update deps
syuilo Feb 29, 2024
285087d
feat: 時限ノート機能 (#129)
hideki0403 Feb 29, 2024
98934b6
fix type
syuilo Feb 29, 2024
d0a299d
fix: ノート通知のユーザー名が表示されていなかった問題を修正
hideki0403 Feb 29, 2024
9d0fc96
fix test
syuilo Feb 29, 2024
379f929
update: ドキュメントを更新
hideki0403 Feb 29, 2024
fcf7a90
release: v1.31.0
hideki0403 Feb 29, 2024
96125c3
ci: add job name
hideki0403 Feb 29, 2024
ec18991
Update scroll.test.ts
syuilo Feb 29, 2024
39d6af1
enhance: 通知の履歴をリセットできるように (#13335)
kakkokari-gtyih Feb 29, 2024
16f16e6
fix(backend): ダイレクトなノートに対してはダイレクトでしか返信できないように (#13477)
zyoshoka Feb 29, 2024
1205d30
Update CHANGELOG.md
syuilo Feb 29, 2024
6365805
New Crowdin updates (#13359)
syuilo Feb 29, 2024
7565f7b
fix(client): use colorizeEmoji when unicodeEmojisMap.get
tamaina Feb 29, 2024
b9bcced
Merge branch 'develop' of https://github.com/misskey-dev/misskey into…
tamaina Feb 29, 2024
26d4c5f
メンションの最大数をロールごとに設定可能にする (#13343)
yuriha-chan Feb 29, 2024
01f55a9
Update CHANGELOG.md
syuilo Feb 29, 2024
bc30dc6
refactor: remove export of unicodeEmojisMap
tamaina Feb 29, 2024
593358e
Merge branch 'develop' of https://github.com/misskey-dev/misskey into…
tamaina Feb 29, 2024
a744066
fix packedRoleCondFormulaValueAssignedRoleSchema
syuilo Mar 1, 2024
59f80c0
New Crowdin updates (#13478)
syuilo Mar 1, 2024
b55b77c
update pnpm
syuilo Mar 1, 2024
033d71e
update deps
syuilo Mar 1, 2024
14a3af6
update deps
syuilo Mar 1, 2024
2f31606
update deps
syuilo Mar 1, 2024
16440d6
Update CHANGELOG.md
syuilo Mar 1, 2024
5befd66
Update CHANGELOG.md
syuilo Mar 1, 2024
ca63994
format
syuilo Mar 1, 2024
5904d98
Update packages/backend/test/e2e/mute.ts
syuilo Mar 1, 2024
6158ef1
format
syuilo Mar 1, 2024
4c6fc15
Merge branch 'develop' of https://github.com/misskey-dev/misskey into…
syuilo Mar 1, 2024
d1bf432
add missing license headers
syuilo Mar 1, 2024
eb60460
enhance: 禁止ワードチェック強化 (#27)
tamaina Mar 1, 2024
ba9d47f
2024.3.0
syuilo Mar 1, 2024
fe5efd9
New translations ja-jp.yml (Chinese Traditional) (#13480)
syuilo Mar 1, 2024
7e706ea
Merge pull request #13447 from misskey-dev/develop
syuilo Mar 1, 2024
30c3238
Merge tag '2024.3.0' into dev-kakurega
hideki0403 Mar 1, 2024
852d163
Merge branch 'dev-kakurega' of https://github.com/hideki0403/misskey.…
hideki0403 Mar 1, 2024
7144d16
Revert "spec(backend/NoteCreateService): ローカルユーザーがまだ誰もフォローしていないリモートユー…
hideki0403 Mar 1, 2024
70d4182
Revert "enhance: スパムを弾いた時のログレベルをerrorからinfoに変更"
hideki0403 Mar 1, 2024
afb5c02
Revert "fix: スパムメッセージを弾いたときにinbox queueがリトライしようとするのを修正"
hideki0403 Mar 1, 2024
39f5531
Revert "enhance: コントロールパネルのモデレーションからスパムブロックの設定を変更できるように"
hideki0403 Mar 1, 2024
62564a1
Revert "spec(backend/NoteCreateService): ローカルユーザーがまだ誰もフォローしていないリモートユー…
hideki0403 Mar 1, 2024
2f5d081
chore: remove unused codes
hideki0403 Mar 1, 2024
84fd335
fix: duplicated import
hideki0403 Mar 1, 2024
752e4ea
chore: update types
hideki0403 Mar 1, 2024
a4a41f7
Merge branch 'master-kakurega' into dev-kakurega
hideki0403 Mar 1, 2024
17bae60
update: types
hideki0403 Mar 1, 2024
5a9cd6f
add: revert migration of BlockMentionsFromUnfamiliarRemoteUsers
hideki0403 Mar 1, 2024
043f328
add: デフォルトのリポジトリURLを隠れ家のものに変更
hideki0403 Mar 1, 2024
4c87d9f
revert: スパム対策を消したのを戻す
hideki0403 Mar 1, 2024
ee1cf99
Reapply "enhance: コントロールパネルのモデレーションからスパムブロックの設定を変更できるように"
hideki0403 Mar 1, 2024
e7764e6
refactor: スパム対策関連のリファクタリング
hideki0403 Mar 1, 2024
91d8d03
update: types
hideki0403 Mar 1, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
enhance(games): 抜けている翻訳を追加・スタイル共通化 (misskey-dev#13434)
* enhance(games): 抜けている翻訳を追加・スタイル共通化

* frameDivider の使用箇所が見当たらなかったので削除

* ミス

* インナーでもcss変数を使う

* コロンを翻訳から外す

* 一部の翻訳を除去

* p

* revert some text

---------

Co-authored-by: syuilo <[email protected]>
kakkokari-gtyih and syuilo authored Feb 23, 2024

Unverified

The email in this signature doesn’t match the committer email.
commit d8342322327924a111a8ece0a6c7eb8c9ac2f378
62 changes: 62 additions & 0 deletions locales/index.d.ts
Original file line number Diff line number Diff line change
@@ -4856,6 +4856,14 @@ export interface Locale extends ILocale {
* リプレイ中
*/
"replaying": string;
/**
* リプレイを終了
*/
"endReplay": string;
/**
* リプレイデータをコピー
*/
"copyReplayData": string;
/**
* ランキング
*/
@@ -4884,11 +4892,57 @@ export interface Locale extends ILocale {
* スワイプしてタブを切り替える
*/
"enableHorizontalSwipe": string;
/**
* 読み込み中
*/
"loading": string;
/**
* やめる
*/
"surrender": string;
/**
* リトライ
*/
"gameRetry": string;
"_bubbleGame": {
/**
* 遊び方
*/
"howToPlay": string;
/**
* ホールド
*/
"hold": string;
"_score": {
/**
* スコア
*/
"score": string;
/**
* 稼いだ金額
*/
"scoreYen": string;
/**
* ハイスコア
*/
"highScore": string;
/**
* 最大チェーン数
*/
"maxChain": string;
/**
* {yen}円
*/
"yen": ParameterizedString<"yen">;
/**
* {qty}個分
*/
"estimatedQty": ParameterizedString<"qty">;
/**
* おにぎり {onigiriQtyWithUnit}
*/
"scoreSweets": ParameterizedString<"onigiriQtyWithUnit">;
};
"_howToPlay": {
/**
* 位置を調整してハコにモノを落とします。
@@ -9659,6 +9713,14 @@ export interface Locale extends ILocale {
* 変則なし
*/
"disallowIrregularRules": string;
/**
* 盤面に行・列番号を表示
*/
"showBoardLabels": string;
/**
* 石をアイコンにする
*/
"useAvatarAsStone": string;
};
"_offlineScreen": {
/**
16 changes: 16 additions & 0 deletions locales/ja-JP.yml
Original file line number Diff line number Diff line change
@@ -1210,16 +1210,30 @@ soundWillBePlayed: "サウンドが再生されます"
showReplay: "リプレイを見る"
replay: "リプレイ"
replaying: "リプレイ中"
endReplay: "リプレイを終了"
copyReplayData: "リプレイデータをコピー"
ranking: "ランキング"
lastNDays: "直近{n}日"
backToTitle: "タイトルへ"
hemisphere: "お住まいの地域"
withSensitive: "センシティブなファイルを含むノートを表示"
userSaysSomethingSensitive: "{name}のセンシティブなファイルを含む投稿"
enableHorizontalSwipe: "スワイプしてタブを切り替える"
loading: "読み込み中"
surrender: "やめる"
gameRetry: "リトライ"

_bubbleGame:
howToPlay: "遊び方"
hold: "ホールド"
_score:
score: "スコア"
scoreYen: "稼いだ金額"
highScore: "ハイスコア"
maxChain: "最大チェーン数"
yen: "{yen}円"
estimatedQty: "{qty}個分"
scoreSweets: "おにぎり {onigiriQtyWithUnit}"
_howToPlay:
section1: "位置を調整してハコにモノを落とします。"
section2: "同じ種類のモノがくっつくと別のモノに変化して、スコアが得られます。"
@@ -2572,6 +2586,8 @@ _reversi:
opponentHasSettingsChanged: "相手が設定を変更しました"
allowIrregularRules: "変則許可 (完全フリー)"
disallowIrregularRules: "変則なし"
showBoardLabels: "盤面に行・列番号を表示"
useAvatarAsStone: "石をアイコンにする"

_offlineScreen:
title: "オフライン - サーバーに接続できません"
120 changes: 51 additions & 69 deletions packages/frontend/src/pages/drop-and-fusion.game.vue
Original file line number Diff line number Diff line change
@@ -7,9 +7,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkSpacer :contentMax="800">
<div :class="$style.root">
<div v-if="!gameLoaded" :class="$style.loadingScreen">
<div>
Loading...
</div>
<div>{{ i18n.ts.loading }}<MkEllipsis/></div>
</div>
<!-- ↓に対してTransitionコンポーネントを使うと何故かkeyを指定していてもキャッシュが効かず様々なコンポーネントが都度再評価されてパフォーマンスが低下する -->
<div v-show="gameLoaded" class="_gaps_s">
@@ -32,18 +30,18 @@ SPDX-License-Identifier: AGPL-3.0-only
</Transition>

<div :class="$style.header">
<div :class="[$style.frame, $style.headerTitle]">
<div :class="$style.frameInner">
<b>BUBBLE GAME</b>
<div>- {{ gameMode }} -</div>
<div class="_woodenFrame" :class="[$style.headerTitle]">
<div class="_woodenFrameInner">
<b>{{ i18n.ts.bubbleGame }}</b>
<div>- {{ gameMode.toUpperCase() }} -</div>
</div>
</div>
<div :class="[$style.frame, $style.frameH]">
<div :class="$style.frameInner">
<MkButton inline small @click="hold">HOLD</MkButton>
<div class="_woodenFrame _woodenFrameH">
<div class="_woodenFrameInner">
<MkButton inline small @click="hold">{{ i18n.ts._bubbleGame.hold }}</MkButton>
<img v-if="holdingStock" :src="getTextureImageUrl(holdingStock.mono)" style="width: 32px; margin-left: 8px; vertical-align: bottom;"/>
</div>
<div :class="[$style.frameInner, $style.stock]" style="text-align: center;">
<div class="_woodenFrameInner" :class="$style.stock" style="text-align: center;">
<TransitionGroup
:enterActiveClass="$style.transition_stock_enterActive"
:leaveActiveClass="$style.transition_stock_leaveActive"
@@ -90,58 +88,74 @@ SPDX-License-Identifier: AGPL-3.0-only
<div v-if="isGameOver && !replaying" :class="$style.gameOverLabel">
<div class="_gaps_s">
<img src="/client-assets/drop-and-fusion/gameover.png" style="width: 200px; max-width: 100%; display: block; margin: auto; margin-bottom: -5px;"/>
<div>SCORE: <MkNumber :value="score"/>{{ getScoreUnit(gameMode) }}</div>
<div>MAX CHAIN: <MkNumber :value="maxCombo"/></div>
<div v-if="gameMode === 'yen'">TOTAL EARNINGS: <b><MkNumber :value="yenTotal ?? score"/>円</b></div>
<div v-if="gameMode === 'sweets'"><b>おにぎり<MkNumber :value="score / 130"/>個分</b></div>
<div>{{ i18n.ts._bubbleGame._score.score }}: <MkNumber :value="score"/>{{ getScoreUnit(gameMode) }}</div>
<div>{{ i18n.ts._bubbleGame._score.maxChain }}: <MkNumber :value="maxCombo"/></div>
<div v-if="gameMode === 'yen'">
{{ i18n.ts._bubbleGame._score.scoreYen }}:
<I18n :src="i18n.ts._bubbleGame._score.yen" tag="b">
<template #yen><MkNumber :value="yenTotal ?? score"/></template>
</I18n>
</div>
<I18n v-if="gameMode === 'sweets'" :src="i18n.ts._bubbleGame._score.scoreSweets" tag="div">
<template #onigiriQtyWithUnit>
<I18n :src="i18n.ts._bubbleGame._score.estimatedQty" tag="b">
<template #qty><MkNumber :value="score / 130"/></template>
</I18n>
</template>
</I18n>
</div>
</div>
<div v-if="replaying" :class="$style.replayIndicator"><span :class="$style.replayIndicatorText"><i class="ti ti-player-play"></i> {{ i18n.ts.replaying }}</span></div>
</div>

<div v-if="replaying" :class="$style.frame">
<div :class="$style.frameInner">
<div v-if="replaying" class="_woodenFrame">
<div class="_woodenFrameInner">
<div style="background: #0004;">
<div style="height: 10px; background: var(--accent); will-change: width;" :style="{ width: `${(currentFrame / endedAtFrame) * 100}%` }"></div>
</div>
</div>
<div :class="$style.frameInner">
<div class="_woodenFrameInner">
<div class="_buttonsCenter">
<MkButton @click="endReplay"><i class="ti ti-player-stop"></i> END</MkButton>
<MkButton @click="endReplay"><i class="ti ti-player-stop"></i> {{ i18n.ts.endReplay }}</MkButton>
<MkButton :primary="replayPlaybackRate === 4" @click="replayPlaybackRate = replayPlaybackRate === 4 ? 1 : 4"><i class="ti ti-player-track-next"></i> x4</MkButton>
<MkButton :primary="replayPlaybackRate === 16" @click="replayPlaybackRate = replayPlaybackRate === 16 ? 1 : 16"><i class="ti ti-player-track-next"></i> x16</MkButton>
</div>
</div>
</div>

<div v-if="isGameOver" :class="$style.frame">
<div :class="$style.frameInner">
<div v-if="isGameOver" class="_woodenFrame">
<div class="_woodenFrameInner">
<div class="_buttonsCenter">
<MkButton primary rounded @click="backToTitle">{{ i18n.ts.backToTitle }}</MkButton>
<MkButton primary rounded @click="replay">{{ i18n.ts.showReplay }}</MkButton>
<MkButton primary rounded @click="share">{{ i18n.ts.share }}</MkButton>
<MkButton rounded @click="exportLog">Copy replay data</MkButton>
<MkButton rounded @click="exportLog">{{ i18n.ts.copyReplayData }}</MkButton>
</div>
</div>
</div>

<div style="display: flex;">
<div :class="$style.frame" style="flex: 1; margin-right: 10px;">
<div :class="$style.frameInner">
<div>SCORE: <b><MkNumber :value="score"/>{{ getScoreUnit(gameMode) }}</b></div>
<div>HIGH SCORE: <b v-if="highScore"><MkNumber :value="highScore"/>{{ getScoreUnit(gameMode) }}</b><b v-else>-</b></div>
<div v-if="gameMode === 'yen'">TOTAL EARNINGS: <b v-if="yenTotal"><MkNumber :value="yenTotal"/>円</b><b v-else>-</b></div>
<div class="_woodenFrame" style="flex: 1; margin-right: 10px;">
<div class="_woodenFrameInner">
<div>{{ i18n.ts._bubbleGame._score.score }}: <MkNumber :value="score"/>{{ getScoreUnit(gameMode) }}</div>
<div>{{ i18n.ts._bubbleGame._score.highScore }}: <b v-if="highScore"><MkNumber :value="highScore"/>{{ getScoreUnit(gameMode) }}</b><b v-else>-</b></div>
<div v-if="gameMode === 'yen'">
{{ i18n.ts._bubbleGame._score.scoreYen }}:
<I18n :src="i18n.ts._bubbleGame._score.yen" tag="b">
<template #yen><MkNumber :value="yenTotal ?? score"/></template>
</I18n>
</div>
</div>
</div>
<div :class="[$style.frame]" style="margin-left: auto;">
<div :class="$style.frameInner" style="text-align: center;">
<div class="_woodenFrame" style="margin-left: auto;">
<div class="_woodenFrameInner" style="text-align: center;">
<div @click="showConfig = !showConfig"><i class="ti ti-settings"></i></div>
</div>
</div>
</div>

<div v-if="showConfig" :class="$style.frame">
<div :class="$style.frameInner">
<div v-if="showConfig" class="_woodenFrame">
<div class="_woodenFrameInner">
<div class="_gaps">
<MkRange v-model="bgmVolume" :min="0" :max="1" :step="0.01" :textConverter="(v) => `${Math.floor(v * 100)}%`" :continuousUpdate="true" @dragEnded="(v) => updateSettings('bgmVolume', v)">
<template #label>BGM {{ i18n.ts.volume }}</template>
@@ -153,8 +167,8 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</div>

<div :class="$style.frame">
<div :class="$style.frameInner">
<div class="_woodenFrame">
<div class="_woodenFrameInner">
<div>FUSION RECIPE</div>
<div>
<div v-for="(mono, i) in game.monoDefinitions.sort((a, b) => a.level - b.level)" :key="mono.id" style="display: inline-block;">
@@ -165,10 +179,10 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</div>

<div :class="$style.frame">
<div :class="$style.frameInner">
<MkButton v-if="!isGameOver && !replaying" full danger @click="surrender">Surrender</MkButton>
<MkButton v-else full @click="restart">Retry</MkButton>
<div class="_woodenFrame">
<div class="_woodenFrameInner">
<MkButton v-if="!isGameOver && !replaying" full danger @click="surrender">{{ i18n.ts.surrender }}</MkButton>
<MkButton v-else full @click="restart">{{ i18n.ts.gameRetry }}</MkButton>
</div>
</div>
</div>
@@ -1313,38 +1327,6 @@ definePageMetadata(() => ({
max-width: 100%;
}

.frame {
padding: 7px;
background: #8C4F26;
box-shadow: 0 6px 16px #0007, 0 0 1px 1px #693410, inset 0 0 2px 1px #ce8a5c;
border-radius: 10px;
}

.frameH {
display: flex;
gap: 6px;
}

.frameInner {
padding: 8px;
margin-top: 8px;
background: #F1E8DC;
box-shadow: 0 0 2px 1px #ce8a5c, inset 0 0 1px 1px #693410;
border-radius: 6px;
color: #693410;

&:first-child {
margin-top: 0;
}
}

.frameDivider {
height: 0;
border: none;
border-top: 1px solid #693410;
border-bottom: 1px solid #ce8a5c;
}

.header {
position: relative;
z-index: 10;
Loading