+
+
+
+
+
+
{{ keybind.description }}
+
+
+ {{ key }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/frontend/src/components/ui/moderation/ModpackPermissionsFlow.vue b/apps/frontend/src/components/ui/moderation/ModpackPermissionsFlow.vue
new file mode 100644
index 000000000..ff5db66ac
--- /dev/null
+++ b/apps/frontend/src/components/ui/moderation/ModpackPermissionsFlow.vue
@@ -0,0 +1,424 @@
+
+
+
+
+
Loading data...
+
+
+
All permissions obtained. You may skip this step!
+
+
+
+
All permission checks complete!
+
+
+
+
+
+
+
+
+
+ Does this project provide identification and permission for
+ {{ modPackData[currentIndex].file_name }}?
+
+
+ Does this project provide attribution for
+ {{ modPackData[currentIndex].file_name }}?
+
+
+ Does this project provide proof of permission for
+ {{ modPackData[currentIndex].file_name }}?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/frontend/src/components/ui/moderation/NewModerationChecklist.vue b/apps/frontend/src/components/ui/moderation/NewModerationChecklist.vue
new file mode 100644
index 000000000..c8ccab6ff
--- /dev/null
+++ b/apps/frontend/src/components/ui/moderation/NewModerationChecklist.vue
@@ -0,0 +1,1246 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ You are done moderating this project!
+
+ There are
+ {{ futureProjectCount }} left.
+
+
+
+
+
+
+
+
+
+
+
+
+
Loading stage content...
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ action.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ opt.text }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ opt.text }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/frontend/src/composables/util.ts b/apps/frontend/src/composables/util.ts
new file mode 100644
index 000000000..5bf1f4dd8
--- /dev/null
+++ b/apps/frontend/src/composables/util.ts
@@ -0,0 +1,12 @@
+export const useNotificationRightwards = () => {
+ const isVisible = useState("moderation-checklist-notifications", () => false);
+
+ const setVisible = (visible: boolean) => {
+ isVisible.value = visible;
+ };
+
+ return {
+ isVisible: readonly(isVisible),
+ setVisible,
+ };
+};
diff --git a/apps/frontend/src/pages/[type]/[id].vue b/apps/frontend/src/pages/[type]/[id].vue
index cf25969bf..0b51f73bb 100644
--- a/apps/frontend/src/pages/[type]/[id].vue
+++ b/apps/frontend/src/pages/[type]/[id].vue
@@ -470,10 +470,14 @@
class="new-page sidebar"
:class="{
'alt-layout': cosmetics.leftContentLayout,
- 'ultimate-sidebar':
+ 'checklist-open':
showModerationChecklist &&
!collapsedModerationChecklist &&
!flags.alwaysShowChecklistAsPopup,
+ 'checklist-collapsed':
+ showModerationChecklist &&
+ collapsedModerationChecklist &&
+ !flags.alwaysShowChecklistAsPopup,
}"
>