@@ -747,9 +747,9 @@ export default function ProjectPage() {
disabled={copied}
>
{!copied ? (
-
@@ -771,12 +771,12 @@ export default function ProjectPage() {
{toast.variant === "success" ? (
-
+
{toast.message}
) : (
-
+
{toast.message}
)}
diff --git a/client/src/pages/eventId/Submission.tsx b/client/src/pages/eventId/Submission.tsx
index 861a123..873dc38 100644
--- a/client/src/pages/eventId/Submission.tsx
+++ b/client/src/pages/eventId/Submission.tsx
@@ -1,7 +1,6 @@
import { hc } from "hono/client";
import { useCallback, useEffect, useMemo, useState } from "react";
-import { HiOutlineCheckCircle, HiOutlineExclamationCircle, HiPencil } from "react-icons/hi";
-import { LuChevronLeft, LuSettings } from "react-icons/lu";
+import { LuChevronLeft, LuCircleAlert, LuCircleCheck, LuPencil, LuSettings } from "react-icons/lu";
import { NavLink, useParams } from "react-router";
import type { AppType } from "../../../../server/src/main";
import { Calendar } from "../../components/Calendar";
@@ -373,7 +372,7 @@ export default function SubmissionPage() {
setEditMode(true);
}}
>
-
+
日程を更新する
日程更新
@@ -390,12 +389,12 @@ export default function SubmissionPage() {
{toast.variant === "success" ? (
-
+
{toast.message}
) : (
-
+
{toast.message}
)}
From c60f0be20ae8e51615b9ffb8ae9f284f787e935b Mon Sep 17 00:00:00 2001
From: nakaterm <104970808+nakaterm@users.noreply.github.com>
Date: Thu, 1 Jan 2026 17:09:33 +0900
Subject: [PATCH 12/32] =?UTF-8?q?description=20=E3=81=8C=E9=95=B7=E3=81=84?=
=?UTF-8?q?=E5=A0=B4=E5=90=88=E3=81=AF=E7=9C=81=E7=95=A5=E8=A1=A8=E7=A4=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
client/src/pages/eventId/Submission.tsx | 80 +++++++++++++++++++++++--
1 file changed, 76 insertions(+), 4 deletions(-)
diff --git a/client/src/pages/eventId/Submission.tsx b/client/src/pages/eventId/Submission.tsx
index 873dc38..b2662be 100644
--- a/client/src/pages/eventId/Submission.tsx
+++ b/client/src/pages/eventId/Submission.tsx
@@ -1,6 +1,14 @@
import { hc } from "hono/client";
import { useCallback, useEffect, useMemo, useState } from "react";
-import { LuChevronLeft, LuCircleAlert, LuCircleCheck, LuPencil, LuSettings } from "react-icons/lu";
+import {
+ LuChevronDown,
+ LuChevronLeft,
+ LuChevronUp,
+ LuCircleAlert,
+ LuCircleCheck,
+ LuPencil,
+ LuSettings,
+} from "react-icons/lu";
import { NavLink, useParams } from "react-router";
import type { AppType } from "../../../../server/src/main";
import { Calendar } from "../../components/Calendar";
@@ -13,6 +21,41 @@ const client = hc
(API_ENDPOINT);
export type EditingSlot = Pick;
+/**
+ * テキストを簡易的に切り詰める。
+ * - ASCII なら 1, 非 ASCII なら 2。
+ * - 改行コード数も考慮。
+ */
+const truncateText = (text: string, maxWidth = 80, maxLines = 3): { text: string; truncated: boolean } => {
+ const lines = text.split("\n");
+ let width = 0;
+ let result = "";
+ let lineCount = 0;
+
+ for (const line of lines) {
+ if (lineCount >= maxLines) {
+ return { text: `${result.trimEnd()}…`, truncated: true };
+ }
+
+ if (lineCount > 0) {
+ result += "\n";
+ }
+
+ for (const char of line) {
+ const charWidth = char.charCodeAt(0) < 128 ? 1 : 2;
+ if (width + charWidth > maxWidth) {
+ return { text: `${result.trimEnd()}…`, truncated: true };
+ }
+ width += charWidth;
+ result += char;
+ }
+
+ lineCount++;
+ }
+
+ return { text: result, truncated: false };
+};
+
const hexToRgb = (hex: string): { r: number; g: number; b: number } | null => {
const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
return result
@@ -96,6 +139,8 @@ export default function SubmissionPage() {
const [selectedParticipationOptionId, setSelectedParticipationOptionId] = useState(null);
+ const [descriptionExpanded, setDescriptionExpanded] = useState(false);
+
const [toast, setToast] = useState<{
message: string;
variant: "success" | "error";
@@ -251,9 +296,36 @@ export default function SubmissionPage() {
{project.name}
- {project.description && (
-
{project.description}
- )}
+ {project.description &&
+ (() => {
+ const { text: truncatedText, truncated } = truncateText(project.description);
+ return (
+
+
+ {descriptionExpanded ? project.description : truncatedText}
+
+ {truncated && (
+
+ )}
+
+ );
+ })()}
{editMode && project.participationOptions.length > 1 && selectedParticipationOptionId !== null && (
From 98ab2a890cb813152c8f223325ec2eaf4e5e08ce Mon Sep 17 00:00:00 2001
From: nakaterm <104970808+nakaterm@users.noreply.github.com>
Date: Thu, 1 Jan 2026 18:12:12 +0900
Subject: [PATCH 13/32] =?UTF-8?q?=E3=83=9C=E3=82=BF=E3=83=B3=E3=82=92=20da?=
=?UTF-8?q?isyUI=20=E3=81=AB?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
client/src/components/Header.tsx | 10 +----
client/src/index.css | 15 +++++++-
client/src/pages/Home.tsx | 5 +--
client/src/pages/Landing.tsx | 7 +---
client/src/pages/NotFound.tsx | 5 +--
client/src/pages/Project.tsx | 43 +++++++---------------
client/src/pages/eventId/Submission.tsx | 49 +++++++++++++------------
7 files changed, 58 insertions(+), 76 deletions(-)
diff --git a/client/src/components/Header.tsx b/client/src/components/Header.tsx
index e506999..5a881a8 100644
--- a/client/src/components/Header.tsx
+++ b/client/src/components/Header.tsx
@@ -30,10 +30,7 @@ export default function Header() {
使い方
-
+
イベント作成
@@ -75,10 +72,7 @@ export default function Header() {
>
ご意見・バグ報告
-
+
イベント作成
diff --git a/client/src/index.css b/client/src/index.css
index 4f1b301..8b21482 100644
--- a/client/src/index.css
+++ b/client/src/index.css
@@ -15,7 +15,20 @@
}
.btn {
- font-weight: normal;
+ font-weight: bold;
+ @apply rounded-lg transition-all;
+}
+
+.btn-primary {
+ @apply bg-primary text-white shadow-sm hover:bg-primary/90 hover:shadow-md;
+}
+
+.btn-outline {
+ @apply border-2 border-slate-200 bg-white text-slate-700 hover:border-slate-300 hover:bg-slate-50;
+}
+
+.btn-ghost {
+ @apply bg-transparent hover:bg-slate-50;
}
:root {
diff --git a/client/src/pages/Home.tsx b/client/src/pages/Home.tsx
index 335e180..7372fe2 100644
--- a/client/src/pages/Home.tsx
+++ b/client/src/pages/Home.tsx
@@ -70,10 +70,7 @@ export default function HomePage() {
ホーム
参加・主催しているイベントの管理