diff --git a/package.json b/package.json index 66683ca..9b643bb 100644 --- a/package.json +++ b/package.json @@ -4,8 +4,6 @@ "private": true, "scripts": { "build": "nuxt build", - "start": "node .output/server/index.mjs", - "prestart": "node -e \"process.exit(require('fs').existsSync('.output/server/index.mjs')?0:1)\" || yarn build", "dev": "nuxt dev", "generate": "nuxt generate", "preview": "nuxt preview", diff --git a/pages/templates/conflict-resolution-framework.vue b/pages/templates/conflict-resolution-framework.vue index 00bc782..68ce276 100644 --- a/pages/templates/conflict-resolution-framework.vue +++ b/pages/templates/conflict-resolution-framework.vue @@ -5,16 +5,15 @@
-
+ class="template-wrapper bg-white dark:bg-neutral-950 text-neutral-900 dark:text-neutral-100">
@@ -22,8 +21,7 @@

+ :data-org-name="formData.orgName || 'Organization'"> CONFLICT RESOLUTION FRAMEWORK

@@ -40,8 +38,7 @@ size="xl" class="w-full" :error="validationErrors.orgName" - @input="debouncedAutoSave" - /> + @input="debouncedAutoSave" />
@@ -52,11 +49,12 @@ size="xl" class="w-full" :error="validationErrors.orgType" - @change="autoSave" - /> + @change="autoSave" /> - + + @change="autoSave" />
@@ -82,44 +79,38 @@ label="Include this section" :ui="{ label: 'text-xs text-neutral-700 dark:text-neutral-300', - }" - /> + }" />
+ class="form-group-large">
+ class="checkbox-item"> + @change="autoSave" />
+ class="form-group-large"> + @input="debouncedAutoSave" />
@@ -135,14 +126,12 @@
+ class="checkbox-item"> + @change="autoSave" />
@@ -155,14 +144,14 @@

4. Primary Resolution Approach

- + + class="mt-2" />
{{ validationErrors.approach }}
@@ -174,8 +163,7 @@ id="anonymous-reporting" label="Allow anonymous reporting" help="Members can report issues without revealing their identity" - @change="autoSave" - /> + @change="autoSave" />
@@ -187,36 +175,36 @@
+ class="form-group-large">
+ class="checkbox-item"> + @change="autoSave" />
-
+
{{ validationErrors.reportReceivers }}
- + + @change="autoSave" /> @@ -225,8 +213,7 @@ id="support-people" label="Allow support people in mediation sessions" help="Parties can bring a trusted person for emotional support" - @change="autoSave" - /> + @change="autoSave" />
@@ -237,7 +224,9 @@
- + + @change="autoSave" /> - + + @change="autoSave" />
+ class="form-group-large">
+ class="checkbox-item"> + @change="autoSave" />
-
+
{{ validationErrors.processSteps }}
@@ -289,7 +277,8 @@
-
+

7. Documentation & Privacy

+ }" />
@@ -311,30 +299,31 @@ placeholder="Select documentation level..." size="xl" class="w-full" - @change="autoSave" - /> + @change="autoSave" /> - + + @change="autoSave" /> - + + @change="autoSave" />
@@ -346,44 +335,42 @@
+ class="form-group-large">
+ class="checkbox-item"> + @change="autoSave" />
-
+
{{ validationErrors.availableActions }}
+ class="form-group-large border-t border-neutral-200 dark:border-neutral-800 pt-4"> + @change="autoSave" />
-
+

9. Special Circumstances

+ }" />
@@ -402,14 +388,12 @@
+ class="checkbox-item"> + @change="autoSave" />
@@ -420,19 +404,22 @@

10. Implementation Details

- + + @input="debouncedAutoSave" />
- + + @change="autoSave" /> + class="form-group-large"> + @change="autoSave" />
@@ -467,8 +451,7 @@ type="date" size="xl" class="w-full mb-0" - @change="autoSave" - /> + @change="autoSave" />
@@ -477,8 +460,7 @@ type="date" size="xl" class="w-full mb-0" - @change="autoSave" - /> + @change="autoSave" />
@@ -487,7 +469,8 @@
-
+

11. Reflection Process

+ }" />
- + + @change="autoSave" /> - + + @input="debouncedAutoSave" />
-
+

12. Direct Resolution Guidelines

+ }" />
+ class="form-group-large">
+ class="checkbox-item"> + @change="autoSave" />
+ class="form-group-large border-t border-neutral-200 dark:border-neutral-800 pt-4"> + @change="autoSave" /> + class="form-group-large border-t border-neutral-200 dark:border-neutral-800 pt-4"> + @change="autoSave" />
-

13. Responsible Contact People Structure

+

+ 13. Responsible Contact People Structure +

- + + @change="autoSave" /> + class="form-group-large"> + @input="debouncedAutoSave" /> + class="form-group-large"> + @change="autoSave" />
@@ -639,19 +615,19 @@

14. Formal Complaint Requirements

- +
+ class="checkbox-item"> + @change="autoSave" />
@@ -659,30 +635,26 @@
+ class="form-group-large"> + @change="autoSave" /> + class="form-group-large"> + @change="autoSave" />
@@ -692,8 +664,7 @@ id="require-external-advice" label="Require external legal advice for complex complaints" help="Seek external expertise for multi-party or staff/director complaints" - @change="autoSave" - /> + @change="autoSave" />
@@ -709,36 +680,31 @@ id="minutes-of-settlement" label="Require 'Minutes of Settlement' for resolved complaints" help="Agreements must be documented in writing and signed by both parties" - @change="autoSave" - /> + @change="autoSave" />
+ class="form-group-large"> + @change="autoSave" /> + class="form-group-large"> + @change="autoSave" />
@@ -746,7 +712,8 @@
-
+

16. External Resources & Redress

+ }" />
@@ -767,30 +733,31 @@ id="include-human-rights" label="Include Human Rights Commission information" help="Reference external discrimination complaint options" - @change="autoSave" - /> + @change="autoSave" /> - + + @input="debouncedAutoSave" /> - + + @input="debouncedAutoSave" />
@@ -798,23 +765,20 @@
+ class="border border-neutral-200 dark:border-neutral-800 bg-white dark:bg-neutral-950 p-5 rounded-lg shadow-sm">

📄 Policy Document Preview

+ title="Hide preview"> ✕
+ class="policy-preview prose prose-neutral dark:prose-invert max-w-none px-6 py-5 bg-neutral-50 dark:bg-neutral-900 border border-neutral-200 dark:border-neutral-800 rounded-md max-h-[600px] overflow-y-auto text-left" + v-html="markdownToHtml(generatePolicyDocument())">
@@ -823,10 +787,10 @@
-
@@ -906,7 +870,13 @@ const responseTimeOptions = [ "Within 2 weeks", ]; -const resolutionTimeOptions = ["1 week", "2 weeks", "30 days", "60 days", "90 days"]; +const resolutionTimeOptions = [ + "1 week", + "2 weeks", + "30 days", + "60 days", + "90 days", +]; const docLevelOptions = [ "Minimal - outcomes only", @@ -967,7 +937,13 @@ const acknowledgmentTimeOptions = [ "Within 2 weeks", ]; -const reviewTimeOptions = ["2 weeks", "1 month", "6 weeks", "2 months", "3 months"]; +const reviewTimeOptions = [ + "2 weeks", + "1 month", + "6 weeks", + "2 months", + "3 months", +]; const sectionsEnabled = ref({ values: true, @@ -1141,14 +1117,18 @@ const validateForm = () => { } // Required checkbox groups (must have at least one checked) - const checkedConflictTypes = conflictTypes.value.filter((item) => item.checked); + const checkedConflictTypes = conflictTypes.value.filter( + (item) => item.checked + ); if (checkedConflictTypes.length === 0) { errors.conflictTypes = "Please select at least one type of conflict"; } // Note: Guiding Principles & Values section is optional - no validation needed - const checkedReportReceivers = reportReceivers.value.filter((item) => item.checked); + const checkedReportReceivers = reportReceivers.value.filter( + (item) => item.checked + ); if (checkedReportReceivers.length === 0) { errors.reportReceivers = "Please select at least one report receiver"; } @@ -1158,7 +1138,9 @@ const validateForm = () => { errors.processSteps = "Please select at least one process step"; } - const checkedAvailableActions = availableActions.value.filter((item) => item.checked); + const checkedAvailableActions = availableActions.value.filter( + (item) => item.checked + ); if (checkedAvailableActions.length === 0) { errors.availableActions = "Please select at least one available action"; } @@ -1206,8 +1188,9 @@ const completionPercentage = computed(() => { ...specialCircumstances.value, ]; - const filledInputs = allInputs.filter((val) => val && val.toString().trim() !== "") - .length; + const filledInputs = allInputs.filter( + (val) => val && val.toString().trim() !== "" + ).length; const checkedBoxes = checkboxInputs.filter((item) => item.checked).length; const totalFields = allInputs.length + checkboxInputs.length; @@ -1231,10 +1214,12 @@ const loadSavedData = () => { // Load checkbox arrays if (parsedData.coreValues) coreValues.value = parsedData.coreValues; - if (parsedData.conflictTypes) conflictTypes.value = parsedData.conflictTypes; + if (parsedData.conflictTypes) + conflictTypes.value = parsedData.conflictTypes; if (parsedData.reportReceivers) reportReceivers.value = parsedData.reportReceivers; - if (parsedData.processSteps) processSteps.value = parsedData.processSteps; + if (parsedData.processSteps) + processSteps.value = parsedData.processSteps; if (parsedData.availableActions) availableActions.value = parsedData.availableActions; if (parsedData.specialCircumstances) @@ -1384,11 +1369,12 @@ const exportData = computed(() => ({ finalDecision: formData.value.finalDecision, learning: formData.value.learning, emergencyProcedures: formData.value.emergencyProcedures, - annualReview: formData.value.annualReview, + annualReview: formData.value.annualReview }, exportedAt: new Date().toISOString(), - section: "conflict-resolution-framework", + section: "conflict-resolution-framework" })); +