瀏覽代碼

[update]

ダッシュボードのHTMLとSCSSを更新
poohr 3 週之前
父節點
當前提交
b02e55ba63
共有 2 個檔案被更改,包括 356 行新增190 行删除
  1. 96
    60
      src/app/pages/dashboard/dashboard.html
  2. 260
    130
      src/app/pages/dashboard/dashboard.scss

+ 96
- 60
src/app/pages/dashboard/dashboard.html 查看文件

@@ -5,86 +5,122 @@
5 5
 
6 6
   <main class="dashboard-main">
7 7
     <section class="dashboard-panel">
8
-      <div class="dashboard-heading">
9
-        <h1>ダッシュボード</h1>
10
-        <p>今日よく使う操作</p>
8
+      <div class="page-head">
9
+        <div>
10
+          <h1>ホーム</h1>
11
+        </div>
12
+        <div class="date-pill">2026年5月28日 木曜日</div>
11 13
       </div>
12 14
 
13
-      <div class="summary-card-list">
14
-        <a class="summary-card" href="#">
15
-          <p class="summary-label">年次法要の対象</p>
16
-          <p class="summary-main">12 名</p>
17
-          <p class="summary-sub">対象年 2026 を表示中</p>
18
-        </a>
19
-
20
-        <a class="summary-card" href="#">
21
-          <p class="summary-label">檀家(世帯)を探す</p>
22
-          <p class="summary-main">一覧へ</p>
23
-          <p class="summary-sub">氏名・住所・電話で確認</p>
15
+      <section class="overview" aria-label="概要">
16
+        <a class="card primary" href="#">
17
+          <div class="card-label">今週の法要</div>
18
+          <div class="metric"><strong>4</strong><span>件</span></div>
19
+          <p class="card-text">本日 1件、明日以降 3件。準備状況を確認できます。</p>
24 20
         </a>
25 21
 
26
-        <a class="summary-card" href="#">
27
-          <p class="summary-label">まとめて検索</p>
28
-          <p class="summary-main">検索へ</p>
29
-          <p class="summary-sub">檀家・家族・過去帳を横断</p>
22
+        <a class="card" href="#">
23
+          <div class="card-label">今月の年忌法要</div>
24
+          <div class="metric"><strong>12</strong><span>名</span></div>
25
+          <p class="card-text">未確認 3名 / 案内済 7名 / 完了 2名</p>
30 26
         </a>
31 27
 
32
-        <a class="summary-card" href="#">
33
-          <p class="summary-label">新規登録</p>
34
-          <p class="summary-main">追加する</p>
35
-          <p class="summary-sub">檀家・家族・故人を入力</p>
36
-        </a>
37
-      </div>
28
+        <div class="search-card">
29
+          <div class="search-head">
30
+            <div class="search-label">まとめて検索</div>
31
+            <div class="search-title">檀家・家族・故人を探す</div>
32
+          </div>
33
+          <input
34
+            class="search-input"
35
+            type="search"
36
+            placeholder="氏名、ふりがな、住所、戒名で検索"
37
+            aria-label="まとめて検索"
38
+          />
39
+          <button class="search-button" type="button">検索</button>
40
+        </div>
41
+      </section>
38 42
 
39
-      <section class="recent-section">
40
-        <div class="section-title-area">
41
-          <h2>最近開いた檀家(世帯)</h2>
42
-          <p>よく使う世帯は一覧からすぐ開けます。</p>
43
+      <section class="section">
44
+        <div class="section-head">
45
+          <div>
46
+            <h2>最近開いた檀家・世帯</h2>
47
+          </div>
48
+          <a class="text-link" href="#">一覧へ</a>
43 49
         </div>
44 50
 
45
-        <div class="recent-table">
46
-          <div class="recent-table-header">
47
-            <div>世帯主</div>
48
-            <div>ふりがな</div>
49
-            <div>住所</div>
50
-            <div>家族</div>
51
-            <div>故人</div>
51
+        <div class="recent-table" role="table" aria-label="最近開いた檀家">
52
+          <div class="recent-row recent-row-head" role="row">
53
+            <div class="cell" role="columnheader">世帯主</div>
54
+            <div class="cell" role="columnheader">ふりがな</div>
55
+            <div class="cell" role="columnheader">住所</div>
56
+            <div class="cell" role="columnheader">次の法要</div>
57
+            <div class="cell" role="columnheader">最終更新</div>
52 58
           </div>
53 59
 
54
-          <a class="recent-table-row" href="#">
55
-            <div class="strong">鈴木 太郎</div>
56
-            <div>すずき</div>
57
-            <div>市内 1-2-3</div>
58
-            <div>4名</div>
59
-            <div>2名</div>
60
+          <a class="recent-row" href="#" role="row">
61
+            <div class="cell" role="cell">鈴木 太郎</div>
62
+            <div class="cell muted" role="cell">すずき</div>
63
+            <div class="cell" role="cell">市内 1-2-3</div>
64
+            <div class="cell" role="cell">6月12日</div>
65
+            <div class="cell muted" role="cell">今日</div>
60 66
           </a>
61 67
 
62
-          <a class="recent-table-row" href="#">
63
-            <div>佐藤 恒一</div>
64
-            <div>さとう</div>
65
-            <div>市内 2-8-1</div>
66
-            <div>3名</div>
67
-            <div>1名</div>
68
+          <a class="recent-row" href="#" role="row">
69
+            <div class="cell" role="cell">佐藤 恵一</div>
70
+            <div class="cell muted" role="cell">さとう</div>
71
+            <div class="cell" role="cell">市内 2-8-1</div>
72
+            <div class="cell" role="cell">7月4日</div>
73
+            <div class="cell muted" role="cell">昨日</div>
68 74
           </a>
69 75
 
70
-          <a class="recent-table-row" href="#">
71
-            <div>田中 雅子</div>
72
-            <div>たなか</div>
73
-            <div>市内 3-4-6</div>
74
-            <div>2名</div>
75
-            <div>0名</div>
76
+          <a class="recent-row" href="#" role="row">
77
+            <div class="cell" role="cell">田中 雪子</div>
78
+            <div class="cell muted" role="cell">たなか</div>
79
+            <div class="cell" role="cell">市内 3-4-6</div>
80
+            <div class="cell muted" role="cell">未設定</div>
81
+            <div class="cell muted" role="cell">5日前</div>
76 82
           </a>
77 83
         </div>
78 84
       </section>
79 85
 
80
-      <section class="quick-open-section">
81
-        <h2>すぐ開く</h2>
86
+      <section class="section">
87
+        <div class="section-head">
88
+          <div>
89
+            <h2>近日の法要・命日</h2>
90
+          </div>
91
+          <a class="text-link" href="#">年次法要一覧へ</a>
92
+        </div>
93
+
94
+        <div class="upcoming-list">
95
+          <a class="upcoming-item important" href="#">
96
+            <div class="upcoming-date">今日</div>
97
+            <div class="upcoming-main">
98
+              <div class="upcoming-title">鈴木家 美咲様 三回忌</div>
99
+              <div class="upcoming-sub">市内 1-2-3 / 連絡先確認済</div>
100
+            </div>
101
+            <div class="upcoming-type">年忌法要</div>
102
+            <div class="upcoming-status">準備確認</div>
103
+          </a>
104
+
105
+          <a class="upcoming-item" href="#">
106
+            <div class="upcoming-date">6月2日</div>
107
+            <div class="upcoming-main">
108
+              <div class="upcoming-title">佐藤家 恵夫様 七回忌</div>
109
+              <div class="upcoming-sub">市内 2-8-1 / 案内状送付済</div>
110
+            </div>
111
+            <div class="upcoming-type">年忌法要</div>
112
+            <div class="upcoming-status">案内済</div>
113
+          </a>
82 114
 
83
-        <div class="quick-button-list">
84
-          <a class="quick-button" href="#">檀家一覧</a>
85
-          <a class="quick-button" href="#">年次法要一覧</a>
86
-          <a class="quick-button" href="#">まとめて検索</a>
87
-          <a class="quick-button" href="#">家系図</a>
115
+          <a class="upcoming-item" href="#">
116
+            <div class="upcoming-date">6月7日</div>
117
+            <div class="upcoming-main">
118
+              <div class="upcoming-title">田中家 雪音様 祥月命日</div>
119
+              <div class="upcoming-sub">市内 3-4-6 / 法要日は未設定</div>
120
+            </div>
121
+            <div class="upcoming-type">命日</div>
122
+            <div class="upcoming-status">要確認</div>
123
+          </a>
88 124
         </div>
89 125
       </section>
90 126
     </section>

+ 260
- 130
src/app/pages/dashboard/dashboard.scss 查看文件

@@ -1,202 +1,332 @@
1 1
 :host {
2
+  --bg: #f6f0e7;
3
+  --surface: #fffdf9;
4
+  --surface-soft: #fbf7f0;
5
+  --line: #d8caba;
6
+  --text: #2f2924;
7
+  --muted: #75695d;
8
+  --brown: #8f6944;
9
+  --brown-dark: #6f4c2e;
10
+  --accent: #b88745;
11
+  --focus: #f6e5c9;
12
+
2 13
   display: block;
3 14
   min-height: 100vh;
4
-  background: #f4eee4;
5
-  color: #2f2720;
15
+  color: var(--text);
16
+  background: var(--bg);
6 17
 }
7 18
 
8
-.dashboard-page {
9
-  display: flex;
10
-  align-items: flex-start;
11
-  gap: 8px;
12
-  padding-top: 0;
13
-  background: #f4eee4;
19
+a {
20
+  color: inherit;
21
+  text-decoration: none;
14 22
 }
15 23
 
16
-.dashboard-main {
17
-  flex: 1;
18
-  padding-right: 34px;
19
-  box-sizing: border-box;
24
+.dashboard-page {
25
+  display: grid;
26
+  grid-template-columns: 172px minmax(0, 1fr);
27
+  gap: 20px;
28
+  padding: 0 38px 36px 0;
29
+  background: var(--bg);
20 30
 }
21 31
 
22 32
 .dashboard-panel {
23
-  min-height: 650px;
24
-  padding: 26px 34px 40px;
25
-  background: #ffffff;
26
-  border: 2px solid #d8caba;
27
-  border-radius: 76px;
28
-  box-sizing: border-box;
33
+  min-height: 760px;
34
+  padding: 34px 42px 40px;
35
+  background: var(--surface);
36
+  border: 2px solid var(--line);
37
+  border-radius: 64px;
29 38
 }
30 39
 
31
-.dashboard-heading {
32
-  margin-bottom: 18px;
40
+.page-head,
41
+.section-head {
42
+  display: flex;
43
+  justify-content: space-between;
44
+  gap: 24px;
33 45
 }
34 46
 
35
-.dashboard-heading h1 {
47
+.page-head {
48
+  align-items: flex-end;
49
+  margin-bottom: 22px;
50
+}
51
+
52
+h1,
53
+h2,
54
+p {
36 55
   margin: 0;
37
-  font-size: 32px;
38
-  line-height: 1.2;
56
+}
57
+
58
+h1 {
59
+  font-size: 34px;
60
+  line-height: 1.1;
39 61
   font-weight: 800;
40
-  color: #2f2720;
41
-  letter-spacing: 0.02em;
42 62
 }
43 63
 
44
-.dashboard-heading p {
45
-  margin: 4px 0 0;
46
-  font-size: 16px;
47
-  color: #6f6257;
64
+.lead {
65
+  margin-top: 8px;
66
+  color: var(--muted);
67
+  font-size: 17px;
68
+  font-weight: 700;
69
+}
70
+
71
+.date-pill {
72
+  padding: 10px 18px;
73
+  border: 1px solid var(--line);
74
+  border-radius: 999px;
75
+  background: var(--surface-soft);
76
+  color: var(--muted);
77
+  font-weight: 700;
78
+  white-space: nowrap;
48 79
 }
49 80
 
50
-.summary-card-list {
81
+.overview {
51 82
   display: grid;
52
-  grid-template-columns: repeat(4, 1fr);
53
-  gap: 18px;
54
-  margin-bottom: 34px;
55
-}
56
-
57
-.summary-card {
58
-  min-height: 116px;
59
-  padding: 14px 20px 16px;
60
-  border: 2px solid #d8caba;
61
-  border-radius: 20px;
62
-  background: #ffffff;
63
-  color: #2f2720;
64
-  text-decoration: none;
65
-  box-sizing: border-box;
66
-  display: block;
83
+  grid-template-columns: 1fr 1fr 2fr;
84
+  gap: 16px;
85
+  margin-bottom: 28px;
67 86
 }
68 87
 
69
-.summary-card:hover {
70
-  background: #fbf7f1;
88
+.card,
89
+.search-card {
90
+  min-height: 136px;
91
+  border: 2px solid var(--line);
92
+  border-radius: 8px;
93
+  background: var(--surface);
71 94
 }
72 95
 
73
-.summary-label {
74
-  margin: 0;
75
-  font-size: 16px;
76
-  color: #6f6257;
77
-  line-height: 1.3;
96
+.card {
97
+  display: block;
98
+  padding: 18px 20px;
78 99
 }
79 100
 
80
-.summary-main {
81
-  margin: 2px 0 0;
82
-  font-size: 30px;
83
-  font-weight: 800;
84
-  line-height: 1.15;
85
-  color: #2f2720;
101
+.card:hover,
102
+.recent-row:hover,
103
+.upcoming-item:hover {
104
+  background: #fff8ed;
86 105
 }
87 106
 
88
-.summary-sub {
89
-  margin: 2px 0 0;
107
+.card.primary {
108
+  background: var(--focus);
109
+  border-color: var(--accent);
110
+}
111
+
112
+.card-label,
113
+.search-label {
114
+  color: var(--muted);
90 115
   font-size: 15px;
91
-  color: #6f6257;
92
-  line-height: 1.35;
116
+  font-weight: 800;
93 117
 }
94 118
 
95
-.recent-section {
96
-  margin-top: 0;
119
+.metric {
120
+  display: flex;
121
+  align-items: baseline;
122
+  gap: 6px;
123
+  margin-top: 8px;
97 124
 }
98 125
 
99
-.section-title-area {
100
-  margin-bottom: 4px;
126
+.metric strong {
127
+  font-size: 42px;
128
+  line-height: 1;
101 129
 }
102 130
 
103
-.section-title-area h2,
104
-.quick-open-section h2 {
105
-  margin: 0;
106
-  font-size: 20px;
131
+.metric span {
132
+  font-size: 18px;
107 133
   font-weight: 800;
108
-  color: #2f2720;
109 134
 }
110 135
 
111
-.section-title-area p {
112
-  margin: 2px 0 0;
136
+.card-text {
137
+  margin-top: 10px;
138
+  color: var(--muted);
113 139
   font-size: 15px;
114
-  color: #6f6257;
140
+  font-weight: 700;
141
+  line-height: 1.5;
115 142
 }
116 143
 
117
-.recent-table {
118
-  width: 100%;
144
+.search-card {
145
+  display: grid;
146
+  grid-template-columns: 1fr auto;
147
+  align-items: end;
148
+  gap: 12px;
149
+  padding: 18px 20px;
119 150
 }
120 151
 
121
-.recent-table-header,
122
-.recent-table-row {
123
-  display: grid;
124
-  grid-template-columns: 2.1fr 1fr 3.1fr 0.8fr 0.8fr;
125
-  align-items: center;
126
-  column-gap: 12px;
152
+.search-head {
153
+  grid-column: 1 / -1;
127 154
 }
128 155
 
129
-.recent-table-header {
130
-  min-height: 36px;
131
-  padding: 0 12px;
132
-  background: #eadfce;
133
-  border: 2px solid #d8caba;
156
+.search-title {
157
+  margin-top: 4px;
158
+  font-size: 24px;
159
+  font-weight: 900;
160
+}
161
+
162
+.search-input {
163
+  width: 100%;
164
+  min-height: 46px;
165
+  padding: 0 14px;
166
+  border: 2px solid var(--line);
134 167
   border-radius: 6px;
135
-  box-sizing: border-box;
136
-  color: #5a4a3c;
137
-  font-size: 15px;
168
+  background: var(--surface-soft);
169
+  color: var(--text);
170
+  font-size: 16px;
138 171
   font-weight: 700;
139 172
 }
140 173
 
141
-.recent-table-row {
142
-  min-height: 58px;
143
-  margin-top: 4px;
144
-  padding: 0 12px;
145
-  background: #fbf7f1;
146
-  border: 2px solid #d8caba;
147
-  border-radius: 8px;
148
-  box-sizing: border-box;
149
-  color: #2f2720;
174
+.search-button {
175
+  min-width: 104px;
176
+  min-height: 46px;
177
+  padding: 0 20px;
178
+  border: 2px solid var(--brown);
179
+  border-radius: 6px;
180
+  background: var(--brown);
181
+  color: #ffffff;
150 182
   font-size: 16px;
151
-  text-decoration: none;
183
+  font-weight: 800;
184
+}
185
+
186
+.section {
187
+  margin-top: 26px;
152 188
 }
153 189
 
154
-.recent-table-row:hover {
155
-  background: #f3eadc;
190
+.section-head {
191
+  align-items: center;
192
+  margin-bottom: 10px;
156 193
 }
157 194
 
158
-.recent-table-row .strong {
195
+h2 {
196
+  font-size: 22px;
197
+  line-height: 1.3;
159 198
   font-weight: 800;
160 199
 }
161 200
 
162
-.quick-open-section {
163
-  margin-top: 24px;
201
+.section-note {
202
+  color: var(--muted);
203
+  font-size: 14px;
164 204
 }
165 205
 
166
-.quick-button-list {
167
-  display: grid;
168
-  grid-template-columns: repeat(4, 1fr);
169
-  gap: 16px;
170
-  margin-top: 8px;
206
+.text-link {
207
+  color: var(--brown-dark);
208
+  font-weight: 900;
209
+  white-space: nowrap;
171 210
 }
172 211
 
173
-.quick-button {
174
-  height: 54px;
175
-  border: 2px solid #d8caba;
212
+.recent-table {
213
+  overflow: hidden;
214
+  border: 2px solid var(--line);
176 215
   border-radius: 8px;
177
-  background: #e6d8c4;
178
-  color: #2f2720;
179
-  font-size: 18px;
216
+  background: var(--surface);
217
+}
218
+
219
+.recent-row {
220
+  display: grid;
221
+  grid-template-columns: 1.2fr 1fr 1.4fr 0.95fr 0.85fr;
222
+  min-height: 52px;
223
+  border-top: 1px solid var(--line);
224
+  align-items: center;
225
+}
226
+
227
+.recent-row-head {
228
+  min-height: 40px;
229
+  border-top: 0;
230
+  background: #eee2d2;
231
+  color: var(--muted);
180 232
   font-weight: 800;
181
-  text-decoration: none;
233
+}
234
+
235
+.cell {
236
+  padding: 10px 14px;
237
+  font-size: 16px;
238
+  font-weight: 700;
239
+}
240
+
241
+.muted {
242
+  color: var(--muted);
243
+}
244
+
245
+.upcoming-list {
246
+  display: grid;
247
+  gap: 10px;
248
+}
249
+
250
+.upcoming-item {
251
+  display: grid;
252
+  grid-template-columns: 132px 1fr 120px 92px;
253
+  align-items: center;
254
+  min-height: 58px;
255
+  overflow: hidden;
256
+  border: 2px solid var(--line);
257
+  border-radius: 8px;
258
+  background: var(--surface);
259
+}
260
+
261
+.upcoming-item.important {
262
+  background: #fff8ed;
263
+  border-color: var(--accent);
264
+}
265
+
266
+.upcoming-date {
182 267
   display: flex;
183 268
   align-items: center;
184 269
   justify-content: center;
185
-  box-sizing: border-box;
270
+  height: 100%;
271
+  min-height: 58px;
272
+  background: #eee2d2;
273
+  color: var(--brown-dark);
274
+  font-size: 17px;
275
+  font-weight: 900;
186 276
 }
187 277
 
188
-.quick-button:hover {
189
-  background: #d9c7ad;
278
+.upcoming-main {
279
+  padding: 10px 16px;
190 280
 }
191 281
 
192
-.bottom-note {
193
-  width: 700px;
194
-  margin: 18px 0 22px 36px;
195
-  padding: 4px 12px;
196
-  border: 2px solid #d8caba;
197
-  border-radius: 4px;
198
-  background: #eadfce;
199
-  color: #7b6b5c;
200
-  font-size: 14px;
201
-  box-sizing: border-box;
282
+.upcoming-title {
283
+  font-size: 17px;
284
+  font-weight: 900;
285
+}
286
+
287
+.upcoming-sub {
288
+  margin-top: 3px;
289
+  color: var(--muted);
290
+  font-size: 13px;
291
+  font-weight: 700;
292
+}
293
+
294
+.upcoming-type,
295
+.upcoming-status {
296
+  padding: 10px 12px;
297
+  color: var(--muted);
298
+  font-size: 15px;
299
+  font-weight: 800;
300
+}
301
+
302
+.upcoming-status {
303
+  color: var(--brown-dark);
304
+  text-align: right;
305
+}
306
+
307
+@media (max-width: 1100px) {
308
+  .dashboard-page {
309
+    grid-template-columns: 1fr;
310
+    padding: 0 24px 32px;
311
+  }
312
+
313
+  .dashboard-panel {
314
+    min-height: auto;
315
+    border-radius: 28px;
316
+    padding: 28px 24px 32px;
317
+  }
318
+
319
+  .overview,
320
+  .upcoming-item {
321
+    grid-template-columns: 1fr 1fr;
322
+  }
323
+
324
+  .search-card {
325
+    grid-template-columns: 1fr;
326
+  }
327
+
328
+  .upcoming-date {
329
+    justify-content: flex-start;
330
+    padding-left: 14px;
331
+  }
202 332
 }

Loading…
取消
儲存