WIP: form copy and field visibility adjustments

This commit is contained in:
Joel Brock
2026-05-21 12:11:23 -07:00
parent 709d9bfd8b
commit 9460e8320f
5 changed files with 79 additions and 79 deletions
+1 -1
View File
@@ -61,7 +61,7 @@ function MissingLinkParams() {
</h2> </h2>
<p className="mt-3 leading-relaxed text-ink-soft"> <p className="mt-3 leading-relaxed text-ink-soft">
Open the form using the personalized link from your email. If you no longer have it, Open the form using the personalized link from your email. If you no longer have it,
please contact your engagement coordinator and ask for a fresh link. please contact <a href="mailto:survey@fci.coop">Chris @ FCI</a> and ask for a fresh link.
</p> </p>
</div> </div>
); );
+1 -1
View File
@@ -69,7 +69,7 @@ function MissingLinkParams() {
</h2> </h2>
<p className="mt-3 leading-relaxed text-ink-soft"> <p className="mt-3 leading-relaxed text-ink-soft">
Open the report using the personalized link from your email. If you no Open the report using the personalized link from your email. If you no
longer have it, please contact your engagement coordinator and ask for longer have it, please contact <a href="mailto:survey@fci.coop">Chris @ FCI</a> and ask for
a fresh link. a fresh link.
</p> </p>
</div> </div>
+1 -1
View File
@@ -476,7 +476,7 @@ function SubmitBar({
? draftSavedAt ? draftSavedAt
? `Draft saved ${formatRelative(draftSavedAt)} (locally on this device)` ? `Draft saved ${formatRelative(draftSavedAt)} (locally on this device)`
: "Editing — your draft will save automatically" : "Editing — your draft will save automatically"
: "Submitting saves a new check-in record on your co-op."} : ""}
</p> </p>
)} )}
</div> </div>
+3 -4
View File
@@ -41,15 +41,14 @@ export function SiteFooter() {
<div className="mx-auto max-w-3xl px-4 py-7 sm:px-6"> <div className="mx-auto max-w-3xl px-4 py-7 sm:px-6">
<div className="flex flex-col gap-3 sm:flex-row sm:items-baseline sm:justify-between"> <div className="flex flex-col gap-3 sm:flex-row sm:items-baseline sm:justify-between">
<p className="font-display text-sm italic text-ink-soft"> <p className="font-display text-sm italic text-ink-soft">
&ldquo;A grocery co-op begins with people who decide to feed each other well.&rdquo; &ldquo;Thank you for completing this survey.&rdquo;
</p> </p>
<p className="text-xs text-ink-mute"> <p className="text-xs text-ink-mute">
Need a fresh link? Contact your engagement coordinator. Need a fresh link? Contact <a href="mailto:survey@fci.coop">Chris @ FCI</a>.
</p> </p>
</div> </div>
<p className="mt-4 text-xs text-ink-mute leading-relaxed"> <p className="mt-4 text-xs text-ink-mute leading-relaxed">
Your responses go directly to your co-op&apos;s record. Nothing is shared with third Your responses go directly to your co-op&apos;s record. This page is only reachable through a personalized link issued to you.
parties. This page is only reachable through a personalized link issued to you.
</p> </p>
</div> </div>
</footer> </footer>
+73 -72
View File
@@ -186,15 +186,6 @@ const stage0: StageSectionConfig = {
// type: "currency", // type: "currency",
// civiField: `${G0}.Projected_sales_at_maturity`, // civiField: `${G0}.Projected_sales_at_maturity`,
// }, // },
{
name: "FTEs",
label: "Projected FTEs",
type: "number",
visibleWhen: visibleAtOrAfter(S.BusinessFeasibility, S.StoreImplementation, S.Stabilize),
civiField: `${G0}.FTEs`,
step: 0.1,
help: "Number of full-time equivalent (FTE) employees planned to work at the store.",
},
{ {
name: "Actual_FTE", name: "Actual_FTE",
label: "Actual FTE", label: "Actual FTE",
@@ -210,12 +201,12 @@ const stage0: StageSectionConfig = {
visibleWhen: visibleAtOrAfter(S.Stabilize), visibleWhen: visibleAtOrAfter(S.Stabilize),
civiField: `${G0}.Total_cost_of_project`, civiField: `${G0}.Total_cost_of_project`,
}, },
{ // {
name: "Member_equity_total", // name: "Member_equity_total",
label: "Member equity total needed", // label: "Member equity total needed",
type: "currency", // type: "currency",
civiField: `${G0}.Member_equity_total` // civiField: `${G0}.Member_equity_total`
}, // },
{ {
name: "Member_equity_raised", name: "Member_equity_raised",
label: "Member equity raised", label: "Member equity raised",
@@ -223,12 +214,12 @@ const stage0: StageSectionConfig = {
visibleWhen: visibleAtOrAfter(S.Stabilize), visibleWhen: visibleAtOrAfter(S.Stabilize),
civiField: `${G0}.Member_equity_raised` civiField: `${G0}.Member_equity_raised`
}, },
{ // {
name: "Member_loans_total", // name: "Member_loans_total",
label: "Member loans total needed", // label: "Member loans total needed",
type: "currency", // type: "currency",
civiField: `${G0}.Member_loans_total` // civiField: `${G0}.Member_loans_total`
}, // },
{ {
name: "Member_loans_raised", name: "Member_loans_raised",
label: "Member loans raised", label: "Member loans raised",
@@ -249,13 +240,22 @@ const stage0: StageSectionConfig = {
visibleWhen: visibleAtOrAfter(S.Stabilize), visibleWhen: visibleAtOrAfter(S.Stabilize),
civiField: `${G0}.Member_preferred_shares_raised`, civiField: `${G0}.Member_preferred_shares_raised`,
}, },
{ name: "Bank_debt_total", label: "Bank debt total needed", type: "currency", civiField: `${G0}.Bank_debt_total` }, // { name: "Bank_debt_total", label: "Bank debt total needed", type: "currency", civiField: `${G0}.Bank_debt_total` },
{ name: "Bank_debt_raised", label: "Bank debt raised", type: "currency", visibleWhen: visibleAtOrAfter(S.Stabilize), civiField: `${G0}.Bank_debt_raised` }, { name: "Bank_debt_raised", label: "Bank debt raised", type: "currency", visibleWhen: visibleAtOrAfter(S.Stabilize), civiField: `${G0}.Bank_debt_raised` },
{ name: "Grant_Donations_Needed", label: "Grants / Donations Needed", type: "currency", civiField: `${G0}.Grant_Donations_Needed` }, // { name: "Grant_Donations_Needed", label: "Grants / Donations Needed", type: "currency", civiField: `${G0}.Grant_Donations_Needed` },
{ name: "Grants_Donations_Raised", label: "Grants / Donations Raised", type: "currency", visibleWhen: visibleAtOrAfter(S.Stabilize), civiField: `${G0}.Grants_Donations_Raised` }, { name: "Grants_Donations_Raised", label: "Grants / Donations Raised", type: "currency", visibleWhen: visibleAtOrAfter(S.Stabilize), civiField: `${G0}.Grants_Donations_Raised` },
{ name: "Other_sources_total", label: "Other sources total needed", type: "currency", civiField: `${G0}.Other_sources_total` }, // { name: "Other_sources_total", label: "Other sources total needed", type: "currency", civiField: `${G0}.Other_sources_total` },
{ name: "Other_sources_raised", label: "Other sources raised", type: "currency", visibleWhen: visibleAtOrAfter(S.Stabilize), civiField: `${G0}.Other_sources_raised` }, { name: "Other_sources_raised", label: "Other sources raised", type: "currency", visibleWhen: visibleAtOrAfter(S.Stabilize), civiField: `${G0}.Other_sources_raised` },
{ name: "Date_Closed_Folded", label: "Date Closed / Folded", type: "date", civiField: `${G0}.Date_Closed_Folded` }, // { name: "Date_Closed_Folded", label: "Date Closed / Folded", type: "date", civiField: `${G0}.Date_Closed_Folded` },
{
name: "FTEs",
label: "Projected FTEs",
type: "number",
visibleWhen: visibleAtOrAfter(S.BusinessFeasibility, S.StoreImplementation, S.Stabilize),
civiField: `${G0}.FTEs`,
step: 0.1,
help: "Number of full-time equivalent (FTE) employees planned to work at the store.",
},
] as FieldConfig[], ] as FieldConfig[],
}; };
@@ -328,14 +328,14 @@ const stage2: StageSectionConfig = {
{ name: "Market_Study_Upload", label: "Market Study — Upload", type: "file", civiField: `${G2}.Market_Study_Upload` }, { name: "Market_Study_Upload", label: "Market Study — Upload", type: "file", civiField: `${G2}.Market_Study_Upload` },
{ name: "Pro_Forma_date_completed", label: "Pro Forma — date completed", type: "date", civiField: `${G2}.Pro_Forma_date_completed` }, { name: "Pro_Forma_date_completed", label: "Pro Forma — date completed", type: "date", civiField: `${G2}.Pro_Forma_date_completed` },
{ name: "Pro_Forma_Upload", label: "Pro Forma — Upload", type: "file", civiField: `${G2}.Pro_Forma_Upload` }, { name: "Pro_Forma_Upload", label: "Pro Forma — Upload", type: "file", civiField: `${G2}.Pro_Forma_Upload` },
{ // {
name: "Pro_Forma_Viability", // name: "Pro_Forma_Viability",
label: "Pro Forma Viability", // label: "Pro Forma Viability",
type: "select", // type: "select",
civiField: `${G2}.Pro_Forma_Viability`, // civiField: `${G2}.Pro_Forma_Viability`,
optionGroupId: 133, // optionGroupId: 133,
help: "Rate the viability of the project.", // help: "Rate the viability of the project.",
}, // },
{ {
name: "Business_Plan", name: "Business_Plan",
label: "Business Plan", label: "Business Plan",
@@ -394,6 +394,14 @@ const stage3: StageSectionConfig = {
optionGroupId: 139, optionGroupId: 139,
help: "Will the co-op own the building or property?", help: "Will the co-op own the building or property?",
}, },
{
name: "Capital_Stack",
label: "Capital Stack",
type: "multiselect",
civiField: `${G3}.Capital_Stack`,
optionGroupId: 134,
help: "Select all the types of funding that are part of your Sources.",
},
{ {
name: "Capital_Campaign_Owner_Participation_", name: "Capital_Campaign_Owner_Participation_",
label: "Capital Campaign: Owner Participation %", label: "Capital Campaign: Owner Participation %",
@@ -406,14 +414,6 @@ const stage3: StageSectionConfig = {
type: "currency", type: "currency",
civiField: `${G3}.Capital_Campaign_Average_Owner_Investment`, civiField: `${G3}.Capital_Campaign_Average_Owner_Investment`,
}, },
{
name: "Capital_Stack",
label: "Capital Stack",
type: "multiselect",
civiField: `${G3}.Capital_Stack`,
optionGroupId: 134,
help: "Select all the types of funding that are part of your Sources.",
},
{ {
name: "Project_Manager_Date_of_Hire", name: "Project_Manager_Date_of_Hire",
label: "Project Manager — Date of Hire", label: "Project Manager — Date of Hire",
@@ -448,6 +448,37 @@ const stage4: StageSectionConfig = {
label: "Stage 4 — Excite & Build", label: "Stage 4 — Excite & Build",
visibleWhen: visibleAtOrAfter(S.StoreImplementation, S.Stabilize), visibleWhen: visibleAtOrAfter(S.StoreImplementation, S.Stabilize),
fields: [ fields: [
{
name: "General_Manager_Date_of_Hire",
label: "General Manager — Date of Hire",
type: "date",
civiField: `${G4}.General_Manager_Date_of_Hire`,
},
{
name: "General_Manager_Background",
label: "General Manager Background",
type: "select",
civiField: `${G4}.General_Manager_Background`,
optionGroupId: 135,
help: "What professional background does your General Manager have?",
},
{ name: "General_Manager_Name", label: "General Manager — Name", type: "text", civiField: `${G4}.General_Manager_Name` },
{ name: "General_Manager_Phone", label: "General Manager Phone", type: "phone", civiField: `${G4}.General_Manager_Phone` },
{ name: "GM_Email", label: "General Manager Email", type: "email", civiField: `${G4}.GM_Email` },
{
name: "GM_Support_Training",
label: "GM Support and Training",
type: "text",
civiField: `${G4}.GM_Support_Training`,
help: "What training and/or onboarding support is being provided to your GM?",
},
{
name: "GM_Support_Team",
label: "GM Support Team",
type: "text",
civiField: `${G4}.GM_Support_Team`,
help: "Who is providing support and training to your GM?",
},
{ name: "Projected_Opening_Date", label: "Projected Opening Date", type: "date", civiField: `${G4}.Projected_Opening_Date` }, { name: "Projected_Opening_Date", label: "Projected Opening Date", type: "date", civiField: `${G4}.Projected_Opening_Date` },
{ {
name: "Construction_Completion_Date", name: "Construction_Completion_Date",
@@ -467,37 +498,7 @@ const stage4: StageSectionConfig = {
type: "file", type: "file",
civiField: `${G4}.Mission_Transition_Plan_Upload`, civiField: `${G4}.Mission_Transition_Plan_Upload`,
}, },
{ name: "General_Manager_Name", label: "General Manager — Name", type: "text", civiField: `${G4}.General_Manager_Name` },
{ name: "General_Manager_Phone", label: "General Manager Phone", type: "phone", civiField: `${G4}.General_Manager_Phone` },
{ name: "GM_Email", label: "General Manager Email", type: "email", civiField: `${G4}.GM_Email` },
{
name: "General_Manager_Date_of_Hire",
label: "General Manager — Date of Hire",
type: "date",
civiField: `${G4}.General_Manager_Date_of_Hire`,
},
{
name: "General_Manager_Background",
label: "General Manager Background",
type: "select",
civiField: `${G4}.General_Manager_Background`,
optionGroupId: 135,
help: "What professional background does your General Manager have?",
},
{
name: "GM_Support_Training",
label: "GM Support and Training",
type: "text",
civiField: `${G4}.GM_Support_Training`,
help: "What training and/or onboarding support is being provided to your GM?",
},
{
name: "GM_Support_Team",
label: "GM Support Team",
type: "text",
civiField: `${G4}.GM_Support_Team`,
help: "Who is providing support and training to your GM?",
},
] as FieldConfig[], ] as FieldConfig[],
}; };