From 9658e9a35c876cd63d56cfbdd2574c839fd95d71 Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Wed, 27 May 2026 22:20:19 -0400 Subject: [PATCH] =?UTF-8?q?feat(rulebook):=20Project=20Rules=20tab=20?= =?UTF-8?q?=E2=80=94=20applicable=20rules=20+=20subscription=20chips?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/rules/ProjectRulesTab.vue | 211 ++++++++++++++++++ frontend/src/views/ProjectView.vue | 9 +- 2 files changed, 219 insertions(+), 1 deletion(-) create mode 100644 frontend/src/components/rules/ProjectRulesTab.vue diff --git a/frontend/src/components/rules/ProjectRulesTab.vue b/frontend/src/components/rules/ProjectRulesTab.vue new file mode 100644 index 0000000..955b58c --- /dev/null +++ b/frontend/src/components/rules/ProjectRulesTab.vue @@ -0,0 +1,211 @@ + + + + + diff --git a/frontend/src/views/ProjectView.vue b/frontend/src/views/ProjectView.vue index 9b83782..f252429 100644 --- a/frontend/src/views/ProjectView.vue +++ b/frontend/src/views/ProjectView.vue @@ -5,6 +5,7 @@ import { apiGet, apiPatch, apiDelete, apiPost } from "@/api/client"; import { useToastStore } from "@/stores/toast"; import { relativeTime } from "@/composables/useRelativeTime"; import ShareDialog from "@/components/ShareDialog.vue"; +import ProjectRulesTab from "@/components/rules/ProjectRulesTab.vue"; import { LayoutGrid, Clock, @@ -67,7 +68,7 @@ const loading = ref(false); const saving = ref(false); const error = ref(null); -const activeTab = ref<"tasks" | "notes">("tasks"); +const activeTab = ref<"tasks" | "notes" | "rules">("tasks"); const tasks = ref([]); const notes = ref([]); @@ -436,6 +437,9 @@ async function confirmDelete() { Notes {{ project.summary.note_count }} + @@ -616,6 +620,9 @@ async function confirmDelete() {

No notes in this project.

+ + +