- 基本は
ref
を利用する。 - ロジックは
useなんとか
という形で composables として抽出する。 - ほかのコンポーネントでも利用する composables は別ファイルに切り出す。
computed
が複雑になるときは中の関数を純粋関数にしてlib
におく。純粋関数にすることでテストがしやすくなるため。
- lib
- composables
- components
- views
の依存関係になるようにする。
- テーマで利用するものは CSS 変数を利用する。
<body>
に CSS 変数が注入される。 - SCSS からは
$theme-ui-primary
などのように利用可能である。頻出のものは mixin があるので、@include color-ui-primary
のように使う。 - ロジックによる出し分けが必要な場合は、WAI-ARIA の属性または
data-
属性を利用する。 - 直接 style を設定するのは、複雑な処理を行う場合以外は避ける。
例:
<template>
<div :class="$style.po" :disabled="bar">foo</div>
</template>
<script lang="ts" setup>
const bar = ref(false)
</script>
<style lang="scss" module>
.po {
opacity: 1;
&[disabled] {
opacity: 0.5;
}
}
</style>
一貫性を保つため、特殊な事例を除いて mixin のsize-*
を利用すること。
normal
とbold
を利用すること。
一貫性を保つため、またフォントがそれらしかロードされないため。
MainPage はチャンネル表示やクリップフォルダの表示があるページのこと。
- NavigationBar
- MainView
- MainViewHeader (!1)
- PrimaryView
- PrimaryViewHeader: !1 へ teleport
- PrimaryViewContent
- PrimaryViewSidebar: モバイル時は!3 へ teleport
- PrimaryViewSiderbarContent
- PrimaryViewSidebarOpener: !2 へ teleport
- PrimaryViewSidebarHidden (!2): 現在は未使用
- SecondaryView
- SidebarMobile (!3)
参考: #3172
- NavigationSelector: 「ホーム」「アクティビティ」
- NavigationContent: 「チャンネル」「クリップフォルダ」
- MainView: 「メッセージ一覧」