From ee3d2aa7f72e74a1ed5c1c73c352c16fd9d7fc1a Mon Sep 17 00:00:00 2001 From: whitneywind <78887901+whitneywind@users.noreply.github.com> Date: Thu, 21 Sep 2023 13:29:33 -0700 Subject: [PATCH 01/11] new FAQ page text and layout --- .../public/locales/en/translation.json | 55 +++++++++++ products/statement-generator/src/App.tsx | 2 + .../src/contexts/RoutingProps.ts | 1 + .../statement-generator/src/pages/FAQ2.tsx | 97 +++++++++++++++++++ .../src/styles/utilityStyles.ts | 23 +++++ 5 files changed, 178 insertions(+) create mode 100644 products/statement-generator/src/pages/FAQ2.tsx diff --git a/products/statement-generator/public/locales/en/translation.json b/products/statement-generator/public/locales/en/translation.json index 27a573a0..d2ac2de4 100644 --- a/products/statement-generator/public/locales/en/translation.json +++ b/products/statement-generator/public/locales/en/translation.json @@ -253,6 +253,61 @@ "paragraph11": "Get in touch at info@expungeassist.org. The laws are changing often in California, and that could mean some information is outdated in this website. We strive to provide correct information, so please let us know if we missed something.", "paragraph11b": "Please note: the information provided here is only a very brief overview." }, + "faq2_page": { + "page_header": "Frequently Asked Questions (FAQ)", + "page_subheader": "This guide will help you learn more about declaration letters and how to use the tool.", + "section1": "Expungement Basics", + "title1.1": "What is expungement?", + "paragraph1.1a": "Expungement of a past criminal conviction in California means that the conviction is dismissed. It is also called “record clearance,” “dismissal,” or “record relief.”", + "paragraph1.1b": "If your conviction is eligible for dismissal but is not eligible for automatic dismissal, you can apply to, or “petition”, the court for it to be dismissed.", + "paragraph1.1c": "Expungement lifts many of the negative effects of a criminal conviction and can give you a fresh start in your life.", + "title1.2": "What is a declaration letter?", + "paragraph1.2a": "A declaration letter in California is a written statement in a petition for expungement or reduction of some infractions, misdemeanors, or felonies. It may be required or may be added as supporting evidence depending on your case.", + "paragraph1.2b": "It is a written letter that explains why dismissal of your conviction would be in the interest of justice. It allows you to tell the judge your story and describe your circumstances, efforts to reform, and motivation for expungement or reduction. It is often about one page long.", + "title1.3": "Why does reduction or expungement matter to me?", + "paragraph1.3a": "Expungement means that in most cases your past criminal conviction cannot be used against you when applying for a job, housing, state licensing, or student loans. You may also regain some of your rights, like, in some cases, owning a firearm.", + "paragraph1.3b": "Reduction, also called “reclassification” or “redesignation”, allows you to change a past felony conviction to a misdemeanor, or a misdemeanor to an infraction, even if you have served a sentence. Certain legal provisions allow a felony conviction to be reduced to a misdemeanor and then be expunged.", + "title1.4": "What is the expungement process in California?", + "paragraph1.4a": "To learn more about the expungement process in California and eligibility, please check the following California Courts and California Legislature resources:", + "paragraph1.4b": "California Records Self-Help Guide: Clean your record", + "paragraph1.4c": "Clearing Your Adult Criminal Record in California: A Step-by-Step Guide", + "paragraph1.4d": "California Senate Bill 731", + "section2": "Using Expunge Assist", + "title2.1": "What is Expunge Assist?", + "paragraph2.1a": "Expunge Assist is a tool that helps people with eligible criminal convictions in California write a declaration letter for expungement or reduction petitions. It serves as a guide that takes you through the writing process step by step. It is a free service provided by Hack for LA, a project under the nonprofit Civic Tech Structure.", + "paragraph2.1b": "Please note that the website does not replace any professional legal advice you receive from a lawyer.", + "title2.2": "How does Expunge Assist protect my privacy?", + "paragraph2.2a": "Expunge Assist does not store or save any of your data. Once you close your browser, your data is cleared. If any person or agencies were to search this site for your data, there would be no data to find. However, once you have downloaded, saved, or copied your letter from our site to another location, it is your responsibility to keep that data secure.", + "paragraph2.2b": "Check our Privacy Policy to learn more.", + "title2.3": "My conviction was not in California. Can I still use Expunge Assist?", + "paragraph2.3a": "This tool is currently intended only for people with criminal convictions in California. Each state has different rules on record clearance, so you should check the laws of the state in which you have your conviction.", + "paragraph2.3b": "However, if your state requires or allows for a written declaration letter to clear your record, then you may want to take a look at the Expunge Assist declaration letter generator as a guide for the writing process or to help get a better idea of what a declaration letter may contain.", + "title2.4": "I see incorrect information on this website. What should I do?", + "paragraph2.4a": "Get in touch at info@expungeassist.org. The laws change often in California, and that could mean some information is outdated in this website. We work to provide correct information, so please let us know if we missed something.", + "paragraph2.4b": "Please note: The information provided here is only a brief overview. We encourage you to speak with a lawyer or legal aid organization to learn about the pathway to expungement for your individual case.", + "title2.5": "What if I have a question about Expunge Assist or the declaration letter generator that has not been answered?", + "paragraph2.5a": "If you have questions specific to Expunge Assist or Hack for LA such as about our site, the declaration letter generator, or operations and partner organizations, please reach out at info@expungeassist.org, and we will try our best to answer them.", + "paragraph2.5b": "If you have a question about the laws or are seeking legal advice for your individual case, then you should contact a lawyer or local legal aid organization.", + "section3": "Updates to California law", + "title3.1": "How does Proposition 47 help me?", + "paragraph3.1a": "Proposition 47 changed the law in California so that certain felony convictions can be reduced to a misdemeanor. These include simple drug possession and some thefts offenses of not more than $950.", + "paragraph3.1b": "The deadline to apply was November 22, 2022. However, you may still apply if you can show the court that you had a good reason to miss the deadline.", + "paragraph3.1c": "If the court finds that you had a good reason and that your conviction is eligible, it will reduce your conviction to a misdemeanor. In certain cases, your conviction can be dismissed.", + "paragraph3.1d": "Check California Courts Record cleaning: Felony convictions and Proposition 47 if you are eligible.", + "title3.2": "Do I need to submit a declaration letter under Proposition 47?", + "paragraph3.2a": "Depending on your situation, for example, if you did not satisfy the terms of your probation, or if you had a jail or prison sentence, you may include or attach a declaration letter or supporting documents that your petition is in the interests of justice.", + "paragraph3.2b": "In this case, a declaration letter, though not required, can help strengthen your case and convince the court.", + "paragraph3.2c": "Check California Courts Record cleaning: Felony convictions and Proposition 47 if you may attach a declaration letter for your case.", + "title3.3": "DHow does Proposition 64 help me?", + "paragraph3.3a": "California changed the law for marijuana offenses in 2016, and Proposition 64 changed many marijuana convictions to misdemeanors. These include the sale of marijuana and the possession of marijuana for sale or cultivation.", + "paragraph3.3b": "If you have a conviction from before November 9, 2016, it may be eligible for automatic redesignation to a misdemeanor or even dismissal and sealing. In most cases you do not need to file a petition. If your marijuana conviction has not been cleaned up, you can apply/petition with the court but do not need to submit a declaration letter.", + "paragraph3.3c": "Check California Courts Marijuana conviction relief (Proposition 64) for more information, eligible offenses, and steps for petition if your conviction has not been cleaned up.", + "title3.4": "How is Proposition 47 different from Proposition 64?", + "paragraph3.4a": "Proposition 47 reduces certain eligible drug or theft felonies to misdemeanors. The deadline for applying for reduction was November 22, 2022, but if the court finds that you have a good reason to miss the deadline, you may still be eligible. Depending on your case, you may want to include a declaration letter in your petition.", + "paragraph3.4b": "Proposition 64 automatically cleans up marijuana-related convictions, either with redesignation to a misdemeanor, or dismissal and sealing. Most eligible cases are reduced or dismissed automatically by the courts. If your conviction has not been cleaned up, you may apply but do not need to submit a declaration letter. There is no time limit for applying for redesignation or dismissal of a conviction.", + "title3.5": "How does Senate Bill 731 help me?", + "paragraph3.5a": "Senate Bill 731 is a law, effective July 1, 2023, that extends automatic conviction expungement from only convictions with probation sentences, where probation was not violated, to other felony convictions if 4 years have passed and you have not been convicted of a new felony offense. If you are eligible for automatic expungement under this law, you do not need to petition or write a declaration letter." + }, "about_us_page": { "page_header": "About Us", "title1": "Who we are", diff --git a/products/statement-generator/src/App.tsx b/products/statement-generator/src/App.tsx index ca37d430..a51e850b 100644 --- a/products/statement-generator/src/App.tsx +++ b/products/statement-generator/src/App.tsx @@ -37,6 +37,7 @@ import PreviewPage from 'pages/PreviewPage'; import PrivacyPolicy from 'pages/PrivacyPolicy'; import TermsOfUse from 'pages/TermsOfUse'; import FAQ from 'pages/FAQ'; +import FAQ2 from 'pages/FAQ2'; import AboutUs from 'pages/AboutUs'; import 'styles/App.css'; @@ -177,6 +178,7 @@ const App: React.FC = () => { /> + diff --git a/products/statement-generator/src/contexts/RoutingProps.ts b/products/statement-generator/src/contexts/RoutingProps.ts index 987e8002..0a4ced05 100644 --- a/products/statement-generator/src/contexts/RoutingProps.ts +++ b/products/statement-generator/src/contexts/RoutingProps.ts @@ -47,6 +47,7 @@ export enum AppUrl { PrivacyPolicy = '/privacy-policy', TermsOfUse = '/terms-of-use', FAQ = '/faq', + FAQ2 = '/faq2', AboutUs = '/about-us', } diff --git a/products/statement-generator/src/pages/FAQ2.tsx b/products/statement-generator/src/pages/FAQ2.tsx new file mode 100644 index 00000000..036797cf --- /dev/null +++ b/products/statement-generator/src/pages/FAQ2.tsx @@ -0,0 +1,97 @@ +import React from 'react'; +import { useTranslation } from 'react-i18next'; + +import LinkAsText from 'components/LinkAsText'; + +import ContentContainer2 from 'components-layout/ContentContainer'; + +function FAQ2() { + const { t } = useTranslation(); + + return ( + +
+
+

{t('faq2_page.page_header')}

+

{t('faq2_page.page_subheader')}

+
+ {/* add image here */} +
+
+

{t('faq2_page.section1')}

+ +

{t('faq2_page.title1.1')}

+

{t('faq2_page.paragraph1.1a')}

+

{t('faq2_page.paragraph1.1b')}

+

{t('faq2_page.paragraph1.1c')}

+ +

{t('faq2_page.title1.2')}

+

{t('faq2_page.paragraph1.2a')}

+

{t('faq2_page.paragraph1.2b')}

+ +

{t('faq2_page.title1.3')}

+

{t('faq2_page.paragraph1.3a')}

+

{t('faq2_page.paragraph1.3b')}

+ +

{t('faq2_page.title1.4')}

+

{t('faq2_page.paragraph1.4a')}

+

{t('faq2_page.paragraph1.4b')}

+

{t('faq2_page.paragraph1.4c')}

+

{t('faq2_page.paragraph1.4d')}

+
+ +
+

{t('faq2_page.section2')}

+ +

{t('faq2_page.title2.1')}

+

{t('faq2_page.paragraph2.1a')}

+

{t('faq2_page.paragraph2.1b')}

+ +

{t('faq2_page.title2.2')}

+

{t('faq2_page.paragraph2.2a')}

+

{t('faq2_page.paragraph2.2b')}

+ +

{t('faq2_page.title2.3')}

+

{t('faq2_page.paragraph2.3a')}

+

{t('faq2_page.paragraph2.3b')}

+ +

{t('faq2_page.title2.4')}

+

{t('faq2_page.paragraph2.4a')}

+

{t('faq2_page.paragraph2.4b')}

+ +

{t('faq2_page.title2.5')}

+

{t('faq2_page.paragraph2.5a')}

+

{t('faq2_page.paragraph2.5b')}

+
+ +
+

{t('faq2_page.section3')}

+ +

{t('faq2_page.title3.1')}

+

{t('faq2_page.paragraph3.1a')}

+

{t('faq2_page.paragraph3.1b')}

+

{t('faq2_page.paragraph3.1c')}

+

{t('faq2_page.paragraph3.1d')}

+ +

{t('faq2_page.title3.2')}

+

{t('faq2_page.paragraph3.2a')}

+

{t('faq2_page.paragraph3.2b')}

+

{t('faq2_page.paragraph3.1c')}

+ +

{t('faq2_page.title3.3')}

+

{t('faq2_page.paragraph3.3a')}

+

{t('faq2_page.paragraph3.3b')}

+

{t('faq2_page.paragraph3.1c')}

+ +

{t('faq2_page.title3.4')}

+

{t('faq2_page.paragraph3.4a')}

+

{t('faq2_page.paragraph3.4b')}

+ +

{t('faq2_page.title3.5')}

+

{t('faq2_page.paragraph3.5a')}

+
+
+ ) +} + +export default FAQ2; \ No newline at end of file diff --git a/products/statement-generator/src/styles/utilityStyles.ts b/products/statement-generator/src/styles/utilityStyles.ts index 70f6b630..923d3321 100644 --- a/products/statement-generator/src/styles/utilityStyles.ts +++ b/products/statement-generator/src/styles/utilityStyles.ts @@ -71,6 +71,29 @@ const useUtilityStyles = makeStyles( width: '100%', }, }, + contentContainer2: { + maxWidth: globals.contentWidth, + minWidth: '300px', + width: '100%', + padding: spacing(3), + paddingTop: spacing(7), + + marginLeft: 'auto', + marginRight: 'auto', + display: 'flex', + flex: '1 0 auto', + flexDirection: 'column', + + [breakpoints.down('sm')]: { + padding: spacing(2), + }, + + [breakpoints.down('xs')]: { + marginLeft: 'initial', + marginRight: 'initial', + width: '100%', + }, + }, disabledColor: { color: palette.common.grey, }, From 3ee21990cd38c44ec18ce744cd5640d71867c2c6 Mon Sep 17 00:00:00 2001 From: whitneywind <78887901+whitneywind@users.noreply.github.com> Date: Thu, 21 Sep 2023 13:34:13 -0700 Subject: [PATCH 02/11] prettier cleanup --- .../statement-generator/src/pages/FAQ2.tsx | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/products/statement-generator/src/pages/FAQ2.tsx b/products/statement-generator/src/pages/FAQ2.tsx index 036797cf..abc743b2 100644 --- a/products/statement-generator/src/pages/FAQ2.tsx +++ b/products/statement-generator/src/pages/FAQ2.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { useTranslation } from 'react-i18next'; -import LinkAsText from 'components/LinkAsText'; +// import LinkAsText from 'components/LinkAsText'; import ContentContainer2 from 'components-layout/ContentContainer'; @@ -35,9 +35,21 @@ function FAQ2() {

{t('faq2_page.title1.4')}

{t('faq2_page.paragraph1.4a')}

-

{t('faq2_page.paragraph1.4b')}

-

{t('faq2_page.paragraph1.4c')}

-

{t('faq2_page.paragraph1.4d')}

+

+ + {t('faq2_page.paragraph1.4b')} + +

+

+ + {t('faq2_page.paragraph1.4c')} + +

+

+ + {t('faq2_page.paragraph1.4d')} + +

@@ -91,7 +103,7 @@ function FAQ2() {

{t('faq2_page.paragraph3.5a')}

- ) + ); } -export default FAQ2; \ No newline at end of file +export default FAQ2; From fb69bd26de95c420266ef35eee0cbeb3b7450cff Mon Sep 17 00:00:00 2001 From: whitneywind <78887901+whitneywind@users.noreply.github.com> Date: Mon, 25 Sep 2023 13:37:47 -0700 Subject: [PATCH 03/11] reusable faq accordion component --- .../src/components-layout/FAQContainer.tsx | 20 ++ .../src/components/FAQAccordion.tsx | 100 ++++++++ .../src/components/FAQHeader.tsx | 34 +++ .../statement-generator/src/pages/FAQ2.tsx | 218 ++++++++++-------- .../src/styles/utilityStyles.ts | 9 +- 5 files changed, 278 insertions(+), 103 deletions(-) create mode 100644 products/statement-generator/src/components-layout/FAQContainer.tsx create mode 100644 products/statement-generator/src/components/FAQAccordion.tsx create mode 100644 products/statement-generator/src/components/FAQHeader.tsx diff --git a/products/statement-generator/src/components-layout/FAQContainer.tsx b/products/statement-generator/src/components-layout/FAQContainer.tsx new file mode 100644 index 00000000..a65cb96a --- /dev/null +++ b/products/statement-generator/src/components-layout/FAQContainer.tsx @@ -0,0 +1,20 @@ +import React from 'react'; + +import useUtilityStyles from 'styles/utilityStyles'; + +interface IContentContainer { + children?: any; + className?: string; +} + +const FAQContainer = ({ children, className = '' }: IContentContainer) => { + const utilityClasses = useUtilityStyles(); + + return ( +
+ {children} +
+ ); +}; + +export default FAQContainer; diff --git a/products/statement-generator/src/components/FAQAccordion.tsx b/products/statement-generator/src/components/FAQAccordion.tsx new file mode 100644 index 00000000..34422e7b --- /dev/null +++ b/products/statement-generator/src/components/FAQAccordion.tsx @@ -0,0 +1,100 @@ +import React, { useState } from 'react'; +import { makeStyles, createStyles, Typography } from '@material-ui/core'; +import { useTranslation } from 'react-i18next'; +import ExpandMoreIcon from '@material-ui/icons/ExpandMore'; +import Accordion, { AccordionProps } from '@material-ui/core/Accordion'; +import AccordionDetails from '@material-ui/core/AccordionDetails'; +import MuiAccordionSummary, { + AccordionSummaryProps, +} from '@material-ui/core/AccordionSummary'; +import { styled } from '@material-ui/core/styles'; + +interface CustomAccordionProps { + title: string; + content: string[]; +} + +type FAQAccordionProps = AccordionProps & CustomAccordionProps; + +const useStyles = makeStyles(() => + createStyles({ + accordionWrapper: { + width: '100%', + boxShadow: 'none', + border: 'none', + position: 'static', // when position is 'relative' a vertical line appears above the accordion (unclear why) + }, + accordionSummary: { + fontSize: '20px', + }, + expandIcon: { + marginLeft: '0', + marginRight: '16px', + width: '24px', + transition: 'transform 0.4s ease-in-out', + }, + rotateIcon: { + transform: 'rotate(360deg)', + }, + rightIcon: { + transform: 'rotate(270deg)', + }, + accordionDetailsContainer: { + display: 'flex', + flexDirection: 'column', + gap: '1rem', + padding: 0, + width: '100%', + paddingLeft: '40px', + }, + }) +); + +const AccordionSummary = styled((props: AccordionSummaryProps) => ( + +))(() => ({ + flexDirection: 'row-reverse', + width: '100%', + padding: 0, + '& .MuiAccordionSummary-content .MuiTypography-root': { + fontWeight: '400', + }, +})); + +export const FAQAccordion: React.FC = ({ + title, + content, +}) => { + const classes = useStyles(); + const { t } = useTranslation(); + const [expanded, setExpanded] = useState(false); + + const handleAccordionChange = () => { + setExpanded(!expanded); + }; + + return ( + + + + {t(title)} + + +
+ {content.map((paragraph) => { + return {t(paragraph)}; + })} +
+
+
+ ); +}; diff --git a/products/statement-generator/src/components/FAQHeader.tsx b/products/statement-generator/src/components/FAQHeader.tsx new file mode 100644 index 00000000..0c538ad0 --- /dev/null +++ b/products/statement-generator/src/components/FAQHeader.tsx @@ -0,0 +1,34 @@ +import React from 'react'; +import { makeStyles, createStyles } from '@material-ui/core'; +import { useTranslation } from 'react-i18next'; + +const useStyles = makeStyles(({ palette, spacing }) => + createStyles({ + header: { + width: '100vw', + height: '464px', + padding: spacing(1, 3), + // padding: '45px 222px 54.6px 222px', + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + backgroundColor: palette.primary.lighter, + marginBottom: 0, + }, + }) +); + +export const FAQHeader: React.FC = () => { + const classes = useStyles(); + const { t } = useTranslation(); + + return ( +
+
+

{t('faq2_page.page_header')}

+

{t('faq2_page.page_subheader')}

+
+ {/* add header image here */} +
+ ); +}; diff --git a/products/statement-generator/src/pages/FAQ2.tsx b/products/statement-generator/src/pages/FAQ2.tsx index abc743b2..d0813255 100644 --- a/products/statement-generator/src/pages/FAQ2.tsx +++ b/products/statement-generator/src/pages/FAQ2.tsx @@ -1,108 +1,130 @@ import React from 'react'; import { useTranslation } from 'react-i18next'; - -// import LinkAsText from 'components/LinkAsText'; - -import ContentContainer2 from 'components-layout/ContentContainer'; +import LinkAsText from 'components/LinkAsText'; +import FAQContainer from 'components-layout/FAQContainer'; +import { makeStyles, createStyles } from '@material-ui/core'; +import { FAQHeader } from 'components/FAQHeader'; +import { FAQAccordion } from 'components/FAQAccordion'; + +const useStyles = makeStyles(({ palette }) => + createStyles({ + sectionTitle: { + color: palette.primary.main, + fontSize: '24px', + lineHeight: '36px', + fontWeight: 600, + boxShadow: 'none', + border: 'none', + marginTop: '36px', + }, + }) +); function FAQ2() { const { t } = useTranslation(); + const classes = useStyles(); return ( - -
-
-

{t('faq2_page.page_header')}

-

{t('faq2_page.page_subheader')}

-
- {/* add image here */} -
-
-

{t('faq2_page.section1')}

- -

{t('faq2_page.title1.1')}

-

{t('faq2_page.paragraph1.1a')}

-

{t('faq2_page.paragraph1.1b')}

-

{t('faq2_page.paragraph1.1c')}

- -

{t('faq2_page.title1.2')}

-

{t('faq2_page.paragraph1.2a')}

-

{t('faq2_page.paragraph1.2b')}

- -

{t('faq2_page.title1.3')}

-

{t('faq2_page.paragraph1.3a')}

-

{t('faq2_page.paragraph1.3b')}

- -

{t('faq2_page.title1.4')}

-

{t('faq2_page.paragraph1.4a')}

-

- - {t('faq2_page.paragraph1.4b')} - -

-

- - {t('faq2_page.paragraph1.4c')} - -

-

- - {t('faq2_page.paragraph1.4d')} - -

-
- -
-

{t('faq2_page.section2')}

- -

{t('faq2_page.title2.1')}

-

{t('faq2_page.paragraph2.1a')}

-

{t('faq2_page.paragraph2.1b')}

- -

{t('faq2_page.title2.2')}

-

{t('faq2_page.paragraph2.2a')}

-

{t('faq2_page.paragraph2.2b')}

- -

{t('faq2_page.title2.3')}

-

{t('faq2_page.paragraph2.3a')}

-

{t('faq2_page.paragraph2.3b')}

- -

{t('faq2_page.title2.4')}

-

{t('faq2_page.paragraph2.4a')}

-

{t('faq2_page.paragraph2.4b')}

- -

{t('faq2_page.title2.5')}

-

{t('faq2_page.paragraph2.5a')}

-

{t('faq2_page.paragraph2.5b')}

-
- -
-

{t('faq2_page.section3')}

- -

{t('faq2_page.title3.1')}

-

{t('faq2_page.paragraph3.1a')}

-

{t('faq2_page.paragraph3.1b')}

-

{t('faq2_page.paragraph3.1c')}

-

{t('faq2_page.paragraph3.1d')}

- -

{t('faq2_page.title3.2')}

-

{t('faq2_page.paragraph3.2a')}

-

{t('faq2_page.paragraph3.2b')}

-

{t('faq2_page.paragraph3.1c')}

- -

{t('faq2_page.title3.3')}

-

{t('faq2_page.paragraph3.3a')}

-

{t('faq2_page.paragraph3.3b')}

-

{t('faq2_page.paragraph3.1c')}

- -

{t('faq2_page.title3.4')}

-

{t('faq2_page.paragraph3.4a')}

-

{t('faq2_page.paragraph3.4b')}

- -

{t('faq2_page.title3.5')}

-

{t('faq2_page.paragraph3.5a')}

-
-
+ <> + + +
+

{t('faq2_page.section1')}

+ + . + + +

{t('faq2_page.title1.1')}

+

{t('faq2_page.paragraph1.1a')}

+

{t('faq2_page.paragraph1.1b')}

+

{t('faq2_page.paragraph1.1c')}

+ +

{t('faq2_page.title1.2')}

+

{t('faq2_page.paragraph1.2a')}

+

{t('faq2_page.paragraph1.2b')}

+ +

{t('faq2_page.title1.3')}

+

{t('faq2_page.paragraph1.3a')}

+

{t('faq2_page.paragraph1.3b')}

+ +

{t('faq2_page.title1.4')}

+

{t('faq2_page.paragraph1.4a')}

+

+ + {t('faq2_page.paragraph1.4b')} + +

+

+ + {t('faq2_page.paragraph1.4c')} + +

+

+ + {t('faq2_page.paragraph1.4d')} + +

+
+ +
+

{t('faq2_page.section2')}

+ +

{t('faq2_page.title2.1')}

+

{t('faq2_page.paragraph2.1a')}

+

{t('faq2_page.paragraph2.1b')}

+ +

{t('faq2_page.title2.2')}

+

{t('faq2_page.paragraph2.2a')}

+

{t('faq2_page.paragraph2.2b')}

+ +

{t('faq2_page.title2.3')}

+

{t('faq2_page.paragraph2.3a')}

+

{t('faq2_page.paragraph2.3b')}

+ +

{t('faq2_page.title2.4')}

+

{t('faq2_page.paragraph2.4a')}

+

{t('faq2_page.paragraph2.4b')}

+ +

{t('faq2_page.title2.5')}

+

{t('faq2_page.paragraph2.5a')}

+

{t('faq2_page.paragraph2.5b')}

+
+ +
+

{t('faq2_page.section3')}

+ +

{t('faq2_page.title3.1')}

+

{t('faq2_page.paragraph3.1a')}

+

{t('faq2_page.paragraph3.1b')}

+

{t('faq2_page.paragraph3.1c')}

+

{t('faq2_page.paragraph3.1d')}

+ +

{t('faq2_page.title3.2')}

+

{t('faq2_page.paragraph3.2a')}

+

{t('faq2_page.paragraph3.2b')}

+

{t('faq2_page.paragraph3.1c')}

+ +

{t('faq2_page.title3.3')}

+

{t('faq2_page.paragraph3.3a')}

+

{t('faq2_page.paragraph3.3b')}

+

{t('faq2_page.paragraph3.1c')}

+ +

{t('faq2_page.title3.4')}

+

{t('faq2_page.paragraph3.4a')}

+

{t('faq2_page.paragraph3.4b')}

+ +

{t('faq2_page.title3.5')}

+

{t('faq2_page.paragraph3.5a')}

+
+
+ ); } diff --git a/products/statement-generator/src/styles/utilityStyles.ts b/products/statement-generator/src/styles/utilityStyles.ts index 923d3321..46509f80 100644 --- a/products/statement-generator/src/styles/utilityStyles.ts +++ b/products/statement-generator/src/styles/utilityStyles.ts @@ -71,13 +71,12 @@ const useUtilityStyles = makeStyles( width: '100%', }, }, - contentContainer2: { - maxWidth: globals.contentWidth, + FAQContainer: { + maxWidth: '996px', minWidth: '300px', - width: '100%', + width: '69.2%', padding: spacing(3), - paddingTop: spacing(7), - + paddingTop: 0, marginLeft: 'auto', marginRight: 'auto', display: 'flex', From f675fb2803cbd66070d06b67ebdb334caaf2d326 Mon Sep 17 00:00:00 2001 From: whitneywind <78887901+whitneywind@users.noreply.github.com> Date: Mon, 25 Sep 2023 17:50:07 -0700 Subject: [PATCH 04/11] refactoring and adding links --- .../public/locales/en/translation.json | 2 +- .../src/components-layout/AppHeader.tsx | 3 +- .../src/components/FAQAccordion.tsx | 27 ++- .../statement-generator/src/pages/FAQ2.tsx | 205 +++++++++++------- .../src/styles/utilityStyles.ts | 2 + 5 files changed, 155 insertions(+), 84 deletions(-) diff --git a/products/statement-generator/public/locales/en/translation.json b/products/statement-generator/public/locales/en/translation.json index d2ac2de4..3352ac96 100644 --- a/products/statement-generator/public/locales/en/translation.json +++ b/products/statement-generator/public/locales/en/translation.json @@ -298,7 +298,7 @@ "paragraph3.2a": "Depending on your situation, for example, if you did not satisfy the terms of your probation, or if you had a jail or prison sentence, you may include or attach a declaration letter or supporting documents that your petition is in the interests of justice.", "paragraph3.2b": "In this case, a declaration letter, though not required, can help strengthen your case and convince the court.", "paragraph3.2c": "Check California Courts Record cleaning: Felony convictions and Proposition 47 if you may attach a declaration letter for your case.", - "title3.3": "DHow does Proposition 64 help me?", + "title3.3": "How does Proposition 64 help me?", "paragraph3.3a": "California changed the law for marijuana offenses in 2016, and Proposition 64 changed many marijuana convictions to misdemeanors. These include the sale of marijuana and the possession of marijuana for sale or cultivation.", "paragraph3.3b": "If you have a conviction from before November 9, 2016, it may be eligible for automatic redesignation to a misdemeanor or even dismissal and sealing. In most cases you do not need to file a petition. If your marijuana conviction has not been cleaned up, you can apply/petition with the court but do not need to submit a declaration letter.", "paragraph3.3c": "Check California Courts Marijuana conviction relief (Proposition 64) for more information, eligible offenses, and steps for petition if your conviction has not been cleaned up.", diff --git a/products/statement-generator/src/components-layout/AppHeader.tsx b/products/statement-generator/src/components-layout/AppHeader.tsx index e5fc3f7d..07ad4cdd 100644 --- a/products/statement-generator/src/components-layout/AppHeader.tsx +++ b/products/statement-generator/src/components-layout/AppHeader.tsx @@ -138,7 +138,8 @@ const AppHeader = () => { currentStep === '/about-us' || currentStep === '/privacy-policy' || currentStep === '/terms-of-use' || - currentStep === '/faq' + currentStep === '/faq' || + currentStep === '/faq2' ) { return ( + +const useStyles = makeStyles(({ palette }) => createStyles({ accordionWrapper: { width: '100%', + marginTop: '0px', + marginBottom: '0px', + color: palette.primary.darker, boxShadow: 'none', border: 'none', - position: 'static', // when position is 'relative' a vertical line appears above the accordion (unclear why) + position: 'static', // when position is 'relative' or not specified a vertical line appears above the accordion (unclear why) }, accordionSummary: { fontSize: '20px', + lineHeight: '24px', + color: palette.primary.darker, }, expandIcon: { marginLeft: '0', @@ -58,12 +64,14 @@ const AccordionSummary = styled((props: AccordionSummaryProps) => ( padding: 0, '& .MuiAccordionSummary-content .MuiTypography-root': { fontWeight: '400', + margin: 0, }, })); -export const FAQAccordion: React.FC = ({ +export const FAQAccordion: React.FC = ({ title, content, + children }) => { const classes = useStyles(); const { t } = useTranslation(); @@ -76,11 +84,13 @@ export const FAQAccordion: React.FC = ({ return ( - + = ({
- {content.map((paragraph) => { + {content && content.map((paragraph) => { return {t(paragraph)}; })} + {children && children}
diff --git a/products/statement-generator/src/pages/FAQ2.tsx b/products/statement-generator/src/pages/FAQ2.tsx index d0813255..939de79c 100644 --- a/products/statement-generator/src/pages/FAQ2.tsx +++ b/products/statement-generator/src/pages/FAQ2.tsx @@ -1,6 +1,5 @@ import React from 'react'; import { useTranslation } from 'react-i18next'; -import LinkAsText from 'components/LinkAsText'; import FAQContainer from 'components-layout/FAQContainer'; import { makeStyles, createStyles } from '@material-ui/core'; import { FAQHeader } from 'components/FAQHeader'; @@ -15,8 +14,19 @@ const useStyles = makeStyles(({ palette }) => fontWeight: 600, boxShadow: 'none', border: 'none', - marginTop: '36px', + marginTop: '24px', + marginBottom: '12px', }, + // manualText styles so that text can match the text style of the accordion typography + manualText: { + fontSize: '1rem', + fontFamily: 'Roboto', + fontWeight: 400, + lineHeight: 1.5, + }, + textLink: { + color: 'black', + } }) ); @@ -37,91 +47,138 @@ function FAQ2() { 'faq2_page.paragraph1.1b', 'faq2_page.paragraph1.1c', ]} + /> + + + - . - - -

{t('faq2_page.title1.1')}

-

{t('faq2_page.paragraph1.1a')}

-

{t('faq2_page.paragraph1.1b')}

-

{t('faq2_page.paragraph1.1c')}

- -

{t('faq2_page.title1.2')}

-

{t('faq2_page.paragraph1.2a')}

-

{t('faq2_page.paragraph1.2b')}

- -

{t('faq2_page.title1.3')}

-

{t('faq2_page.paragraph1.3a')}

-

{t('faq2_page.paragraph1.3b')}

- -

{t('faq2_page.title1.4')}

-

{t('faq2_page.paragraph1.4a')}

-

- + {t('faq2_page.paragraph1.4b')} -

-

- + {t('faq2_page.paragraph1.4c')} - -

-

- + + {t('faq2_page.paragraph1.4d')} - -

+ +

{t('faq2_page.section2')}

- -

{t('faq2_page.title2.1')}

-

{t('faq2_page.paragraph2.1a')}

-

{t('faq2_page.paragraph2.1b')}

- -

{t('faq2_page.title2.2')}

-

{t('faq2_page.paragraph2.2a')}

-

{t('faq2_page.paragraph2.2b')}

- -

{t('faq2_page.title2.3')}

-

{t('faq2_page.paragraph2.3a')}

-

{t('faq2_page.paragraph2.3b')}

- -

{t('faq2_page.title2.4')}

-

{t('faq2_page.paragraph2.4a')}

-

{t('faq2_page.paragraph2.4b')}

- -

{t('faq2_page.title2.5')}

-

{t('faq2_page.paragraph2.5a')}

-

{t('faq2_page.paragraph2.5b')}

+ + {/* the two paragraph tags below aren't being pulled from the translation file because they contain links and not plain text. */} +

Expunge Assist is a tool that helps people with eligible criminal convictions in California write a declaration letter for expungement or reduction petitions. It serves as a guide that takes you through the writing process step by step. It is a free service provided by Hack for LA, a project under the nonprofit Civic Tech Structure.

+

Please note that the website does not replace any professional legal advice you receive from a lawyer.

+
+ + {/* todo: update from hard-coded privacy policy link */} +

Check our Privacy Policy to learn more.

+
+ + +

Get in touch at info@expungeassist.org. The laws change often in California, and that could mean some information is outdated in this website. We work to provide correct information, so please let us know if we missed something.

+

Please note: The information provided here is only a brief overview. We encourage you to speak with a lawyer or legal aid organization to learn about the pathway to expungement for your individual case.

+
+ +

If you have questions specific to Expunge Assist or Hack for LA such as about our site, the declaration letter generator, or operations and partner organizations, please reach out at info@expungeassist.org, and we will try our best to answer them.

+

If you have a question about the laws or are seeking legal advice for your individual case, then you should contact a lawyer or local legal aid organization.

+

{t('faq2_page.section3')}

- -

{t('faq2_page.title3.1')}

-

{t('faq2_page.paragraph3.1a')}

-

{t('faq2_page.paragraph3.1b')}

-

{t('faq2_page.paragraph3.1c')}

-

{t('faq2_page.paragraph3.1d')}

- -

{t('faq2_page.title3.2')}

-

{t('faq2_page.paragraph3.2a')}

-

{t('faq2_page.paragraph3.2b')}

-

{t('faq2_page.paragraph3.1c')}

- -

{t('faq2_page.title3.3')}

-

{t('faq2_page.paragraph3.3a')}

-

{t('faq2_page.paragraph3.3b')}

-

{t('faq2_page.paragraph3.1c')}

- -

{t('faq2_page.title3.4')}

-

{t('faq2_page.paragraph3.4a')}

-

{t('faq2_page.paragraph3.4b')}

- -

{t('faq2_page.title3.5')}

-

{t('faq2_page.paragraph3.5a')}

+ + + + +
diff --git a/products/statement-generator/src/styles/utilityStyles.ts b/products/statement-generator/src/styles/utilityStyles.ts index 46509f80..02fc0d99 100644 --- a/products/statement-generator/src/styles/utilityStyles.ts +++ b/products/statement-generator/src/styles/utilityStyles.ts @@ -72,6 +72,7 @@ const useUtilityStyles = makeStyles( }, }, FAQContainer: { + color: palette.primary.darker, maxWidth: '996px', minWidth: '300px', width: '69.2%', @@ -79,6 +80,7 @@ const useUtilityStyles = makeStyles( paddingTop: 0, marginLeft: 'auto', marginRight: 'auto', + marginTop: '36px', display: 'flex', flex: '1 0 auto', flexDirection: 'column', From 49bb744ce68cd9a6b50bf51365afb05212efc3e6 Mon Sep 17 00:00:00 2001 From: whitneywind <78887901+whitneywind@users.noreply.github.com> Date: Mon, 25 Sep 2023 18:09:31 -0700 Subject: [PATCH 05/11] edits --- .../src/components/FAQAccordion.tsx | 15 +- .../statement-generator/src/pages/FAQ2.tsx | 240 ++++++++++++------ .../src/styles/utilityStyles.ts | 1 - 3 files changed, 170 insertions(+), 86 deletions(-) diff --git a/products/statement-generator/src/components/FAQAccordion.tsx b/products/statement-generator/src/components/FAQAccordion.tsx index 9a4adc94..8504c686 100644 --- a/products/statement-generator/src/components/FAQAccordion.tsx +++ b/products/statement-generator/src/components/FAQAccordion.tsx @@ -16,7 +16,6 @@ interface CustomAccordionProps { // type FAQAccordionProps = AccordionProps & CustomAccordionProps; - const useStyles = makeStyles(({ palette }) => createStyles({ accordionWrapper: { @@ -71,7 +70,7 @@ const AccordionSummary = styled((props: AccordionSummaryProps) => ( export const FAQAccordion: React.FC = ({ title, content, - children + children, }) => { const classes = useStyles(); const { t } = useTranslation(); @@ -87,10 +86,7 @@ export const FAQAccordion: React.FC = ({ expanded={expanded} onChange={handleAccordionChange} > - + = ({
- {content && content.map((paragraph) => { - return {t(paragraph)}; - })} + {content && + content.map((paragraph) => { + return {t(paragraph)}; + })} {children && children}
diff --git a/products/statement-generator/src/pages/FAQ2.tsx b/products/statement-generator/src/pages/FAQ2.tsx index 939de79c..be6b7a5d 100644 --- a/products/statement-generator/src/pages/FAQ2.tsx +++ b/products/statement-generator/src/pages/FAQ2.tsx @@ -26,7 +26,10 @@ const useStyles = makeStyles(({ palette }) => }, textLink: { color: 'black', - } + }, + boldText: { + fontWeight: 600, + }, }) ); @@ -49,24 +52,16 @@ function FAQ2() { ]} />

{t('faq2_page.section2')}

- + {/* the two paragraph tags below aren't being pulled from the translation file because they contain links and not plain text. */} -

Expunge Assist is a tool that helps people with eligible criminal convictions in California write a declaration letter for expungement or reduction petitions. It serves as a guide that takes you through the writing process step by step. It is a free service provided by Hack for LA, a project under the nonprofit Civic Tech Structure.

-

Please note that the website does not replace any professional legal advice you receive from a lawyer.

+

+ Expunge Assist is a tool that helps people with eligible criminal + convictions in California write a declaration letter for + expungement or reduction petitions. It serves as a guide that + takes you through the writing process step by step. It is a free + service provided by{' '} + + Hack for LA, + {' '} + a project under the nonprofit{' '} + + Civic Tech Structure + + . +

+

+ Please note that the website does not replace any professional + legal advice you receive from a lawyer. +

{/* todo: update from hard-coded privacy policy link */} -

Check our Privacy Policy to learn more.

+

+ Check our{' '} + + Privacy Policy + {' '} + to learn more. +

- -

Get in touch at info@expungeassist.org. The laws change often in California, and that could mean some information is outdated in this website. We work to provide correct information, so please let us know if we missed something.

-

Please note: The information provided here is only a brief overview. We encourage you to speak with a lawyer or legal aid organization to learn about the pathway to expungement for your individual case.

+ +

+ Get in touch at{' '} + + info@expungeassist.org + + . The laws change often in California, and that could mean some + information is outdated in this website. We work to provide + correct information, so please let us know if we missed something. +

+

+ Please note: The information provided here is only a brief + overview. We encourage you to speak with a lawyer or legal aid + organization to learn about the pathway to expungement for your + individual case. +

- -

If you have questions specific to Expunge Assist or Hack for LA such as about our site, the declaration letter generator, or operations and partner organizations, please reach out at info@expungeassist.org, and we will try our best to answer them.

-

If you have a question about the laws or are seeking legal advice for your individual case, then you should contact a lawyer or local legal aid organization.

+ +

+ If you have questions specific to Expunge Assist or Hack for LA + such as about our site, the declaration letter generator, or + operations and partner organizations, please reach out at{' '} + + info@expungeassist.org + + , and we will try our best to answer them. +

+

+ If you have a question about the laws or are seeking legal advice + for your individual case, then you should contact a lawyer or + local legal aid organization. +

{t('faq2_page.section3')}

- - + title="faq2_page.title3.2" + content={['faq2_page.paragraph3.2a', 'faq2_page.paragraph3.2b']} + > +

+ + Check California Courts Record cleaning: Felony convictions and + Proposition 47 + {' '} + if you may attach a declaration letter for your case. +

+
+ title="faq2_page.title3.3" + content={['faq2_page.paragraph3.3a', 'faq2_page.paragraph3.3b']} + > +

+ Check{' '} + + California Courts Marijuana conviction relief (Proposition 64) + {' '} + for more information, eligible offenses, and steps for petition if + your conviction has not been cleaned up. +

+
+ +

+ Proposition 47 reduces certain eligible drug or theft felonies to + misdemeanors. The deadline for applying for reduction was November + 22, 2022, but if the court finds that you have a good reason to + miss the deadline, you may still be eligible. Depending on your + case,{' '} + + you may want to include a declaration letter in your petition. + +

+

+ Proposition 64 automatically cleans up marijuana-related + convictions, either with redesignation to a misdemeanor, or + dismissal and sealing. Most eligible cases are reduced or + dismissed automatically by the courts. If your conviction has not + been cleaned up, you may apply but{' '} + + do not need to submit a declaration letter. + {' '} + There is no time limit for applying for redesignation or dismissal + of a conviction. +

+
+ +

+ Senate Bill 731 is a law, effective July 1, 2023, that extends + automatic conviction expungement from only convictions with + probation sentences, where probation was not violated, to other + felony convictions if 4 years have passed and you have not been + convicted of a new felony offense. If you are eligible for + automatic expungement under this law, you{' '} + + do not need to petition or write a declaration letter. + +

+
diff --git a/products/statement-generator/src/styles/utilityStyles.ts b/products/statement-generator/src/styles/utilityStyles.ts index 02fc0d99..c180aee4 100644 --- a/products/statement-generator/src/styles/utilityStyles.ts +++ b/products/statement-generator/src/styles/utilityStyles.ts @@ -72,7 +72,6 @@ const useUtilityStyles = makeStyles( }, }, FAQContainer: { - color: palette.primary.darker, maxWidth: '996px', minWidth: '300px', width: '69.2%', From 4a620dbdfa1a08da6ab91056af917bbb9f662c15 Mon Sep 17 00:00:00 2001 From: whitneywind <78887901+whitneywind@users.noreply.github.com> Date: Wed, 27 Sep 2023 09:20:15 -0700 Subject: [PATCH 06/11] image and styling edits --- .../src/assets/faqDesktop.svg | 49 +++++++++++ .../src/assets/faqMobile.svg | 49 +++++++++++ .../src/components-layout/FAQContainer.tsx | 36 ++++++-- .../src/components/FAQAccordion.tsx | 10 +-- .../src/components/FAQHeader.tsx | 84 ++++++++++++++++--- .../statement-generator/src/pages/FAQ2.tsx | 15 ++-- .../src/styles/utilityStyles.ts | 23 ----- 7 files changed, 215 insertions(+), 51 deletions(-) create mode 100644 products/statement-generator/src/assets/faqDesktop.svg create mode 100644 products/statement-generator/src/assets/faqMobile.svg diff --git a/products/statement-generator/src/assets/faqDesktop.svg b/products/statement-generator/src/assets/faqDesktop.svg new file mode 100644 index 00000000..5a054c0d --- /dev/null +++ b/products/statement-generator/src/assets/faqDesktop.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/products/statement-generator/src/assets/faqMobile.svg b/products/statement-generator/src/assets/faqMobile.svg new file mode 100644 index 00000000..9971e138 --- /dev/null +++ b/products/statement-generator/src/assets/faqMobile.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/products/statement-generator/src/components-layout/FAQContainer.tsx b/products/statement-generator/src/components-layout/FAQContainer.tsx index a65cb96a..37e554c0 100644 --- a/products/statement-generator/src/components-layout/FAQContainer.tsx +++ b/products/statement-generator/src/components-layout/FAQContainer.tsx @@ -1,19 +1,43 @@ import React from 'react'; - -import useUtilityStyles from 'styles/utilityStyles'; +import { makeStyles, createStyles } from '@material-ui/core'; interface IContentContainer { children?: any; className?: string; } +const useStyles = makeStyles(({ breakpoints, spacing }) => + createStyles({ + FAQContainer: { + maxWidth: '996px', + minWidth: '300px', + width: '69.2%', + padding: spacing(3), + paddingTop: 0, + marginLeft: 'auto', + marginRight: 'auto', + display: 'flex', + flex: '1 0 auto', + flexDirection: 'column', + + [breakpoints.down('sm')]: { + padding: spacing(2), + }, + + [breakpoints.down('xs')]: { + marginLeft: 'initial', + marginRight: 'initial', + width: '100%', + }, + }, + }) +); + const FAQContainer = ({ children, className = '' }: IContentContainer) => { - const utilityClasses = useUtilityStyles(); + const classes = useStyles(); return ( -
- {children} -
+
{children}
); }; diff --git a/products/statement-generator/src/components/FAQAccordion.tsx b/products/statement-generator/src/components/FAQAccordion.tsx index 8504c686..b9881154 100644 --- a/products/statement-generator/src/components/FAQAccordion.tsx +++ b/products/statement-generator/src/components/FAQAccordion.tsx @@ -2,7 +2,7 @@ import React, { useState } from 'react'; import { makeStyles, createStyles, Typography } from '@material-ui/core'; import { useTranslation } from 'react-i18next'; import ExpandMoreIcon from '@material-ui/icons/ExpandMore'; -import Accordion, { AccordionProps } from '@material-ui/core/Accordion'; +import Accordion from '@material-ui/core/Accordion'; import AccordionDetails from '@material-ui/core/AccordionDetails'; import MuiAccordionSummary, { AccordionSummaryProps, @@ -20,8 +20,6 @@ const useStyles = makeStyles(({ palette }) => createStyles({ accordionWrapper: { width: '100%', - marginTop: '0px', - marginBottom: '0px', color: palette.primary.darker, boxShadow: 'none', border: 'none', @@ -61,9 +59,9 @@ const AccordionSummary = styled((props: AccordionSummaryProps) => ( flexDirection: 'row-reverse', width: '100%', padding: 0, - '& .MuiAccordionSummary-content .MuiTypography-root': { - fontWeight: '400', - margin: 0, + + '& .MuiAccordionSummary-content': { + minHeight: 0, }, })); diff --git a/products/statement-generator/src/components/FAQHeader.tsx b/products/statement-generator/src/components/FAQHeader.tsx index 0c538ad0..524de564 100644 --- a/products/statement-generator/src/components/FAQHeader.tsx +++ b/products/statement-generator/src/components/FAQHeader.tsx @@ -1,19 +1,74 @@ import React from 'react'; import { makeStyles, createStyles } from '@material-ui/core'; import { useTranslation } from 'react-i18next'; +import faqMobile from '../assets/faqMobile.svg'; +import faqDesktop from '../assets/faqDesktop.svg'; -const useStyles = makeStyles(({ palette, spacing }) => +const useStyles = makeStyles(({ palette, breakpoints }) => createStyles({ - header: { + Header: { width: '100vw', - height: '464px', - padding: spacing(1, 3), - // padding: '45px 222px 54.6px 222px', display: 'flex', justifyContent: 'center', + backgroundColor: palette.primary.lighter, + marginBottom: '12px', + + [breakpoints.down('sm')]: { + minHeight: '509px', + }, + }, + HeaderContent: { + maxWidth: '996px', + minWidth: '342px', + width: '69.2%', + margin: '45px 222px 54.64px', + display: 'flex', + justifyContent: 'space-between', + alignItems: 'center', + + [breakpoints.down('sm')]: { + flexDirection: 'column', + width: '100%', + margin: '24px 16px', + gap: '36px', + }, + }, + HeaderText: { + display: 'flex', + flexDirection: 'column', + justifyContent: 'center', alignItems: 'center', backgroundColor: palette.primary.lighter, - marginBottom: 0, + marginRight: '113.5px', + + [breakpoints.down('md')]: { + marginRight: 0, + }, + + [breakpoints.down('sm')]: { + gap: '24px', + }, + }, + Heading: { + fontSize: '34px', + lineHeight: '51px', + marginBotton: '16px', + fontWeight: 700, + }, + SubHeading: { + fontSize: '24px', + lineHeight: '36px', + fontWeight: 400, + }, + DesktopImage: { + [breakpoints.down(breakpoints.values.md)]: { + display: 'none', + }, + }, + MobileImage: { + [breakpoints.up(breakpoints.values.md)]: { + display: 'none', + }, }, }) ); @@ -23,12 +78,19 @@ export const FAQHeader: React.FC = () => { const { t } = useTranslation(); return ( -
-
-

{t('faq2_page.page_header')}

-

{t('faq2_page.page_subheader')}

+
+
+
+

{t('faq2_page.page_header')}

+

{t('faq2_page.page_subheader')}

+
+
+ Two people talking +
+
+ Two people talking +
- {/* add header image here */}
); }; diff --git a/products/statement-generator/src/pages/FAQ2.tsx b/products/statement-generator/src/pages/FAQ2.tsx index be6b7a5d..dd93fcfd 100644 --- a/products/statement-generator/src/pages/FAQ2.tsx +++ b/products/statement-generator/src/pages/FAQ2.tsx @@ -4,8 +4,10 @@ import FAQContainer from 'components-layout/FAQContainer'; import { makeStyles, createStyles } from '@material-ui/core'; import { FAQHeader } from 'components/FAQHeader'; import { FAQAccordion } from 'components/FAQAccordion'; +import { AppUrl } from 'contexts/RoutingProps'; +import { Link } from 'react-router-dom'; -const useStyles = makeStyles(({ palette }) => +const useStyles = makeStyles(({ palette, breakpoints }) => createStyles({ sectionTitle: { color: palette.primary.main, @@ -16,6 +18,10 @@ const useStyles = makeStyles(({ palette }) => border: 'none', marginTop: '24px', marginBottom: '12px', + + [breakpoints.down('sm')]: { + marginTop: '24px', + }, }, // manualText styles so that text can match the text style of the accordion typography manualText: { @@ -128,14 +134,13 @@ function FAQ2() { {/* todo: update from hard-coded privacy policy link */}

Check our{' '} - Privacy Policy - {' '} + {' '} to learn more.

diff --git a/products/statement-generator/src/styles/utilityStyles.ts b/products/statement-generator/src/styles/utilityStyles.ts index c180aee4..70f6b630 100644 --- a/products/statement-generator/src/styles/utilityStyles.ts +++ b/products/statement-generator/src/styles/utilityStyles.ts @@ -71,29 +71,6 @@ const useUtilityStyles = makeStyles( width: '100%', }, }, - FAQContainer: { - maxWidth: '996px', - minWidth: '300px', - width: '69.2%', - padding: spacing(3), - paddingTop: 0, - marginLeft: 'auto', - marginRight: 'auto', - marginTop: '36px', - display: 'flex', - flex: '1 0 auto', - flexDirection: 'column', - - [breakpoints.down('sm')]: { - padding: spacing(2), - }, - - [breakpoints.down('xs')]: { - marginLeft: 'initial', - marginRight: 'initial', - width: '100%', - }, - }, disabledColor: { color: palette.common.grey, }, From e0ec7fe520307fa819bef0ec5142e816425381fb Mon Sep 17 00:00:00 2001 From: whitneywind <78887901+whitneywind@users.noreply.github.com> Date: Sun, 1 Oct 2023 20:19:49 -0700 Subject: [PATCH 07/11] new faq page --- products/statement-generator/src/App.tsx | 5 ++--- products/statement-generator/src/contexts/RoutingProps.ts | 1 - 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/products/statement-generator/src/App.tsx b/products/statement-generator/src/App.tsx index a51e850b..60507b9d 100644 --- a/products/statement-generator/src/App.tsx +++ b/products/statement-generator/src/App.tsx @@ -36,7 +36,7 @@ import NotFound from 'pages/NotFound'; import PreviewPage from 'pages/PreviewPage'; import PrivacyPolicy from 'pages/PrivacyPolicy'; import TermsOfUse from 'pages/TermsOfUse'; -import FAQ from 'pages/FAQ'; +// import FAQ from 'pages/FAQ'; import FAQ2 from 'pages/FAQ2'; import AboutUs from 'pages/AboutUs'; @@ -177,8 +177,7 @@ const App: React.FC = () => { component={PrivacyPolicy} /> - - + diff --git a/products/statement-generator/src/contexts/RoutingProps.ts b/products/statement-generator/src/contexts/RoutingProps.ts index 0a4ced05..987e8002 100644 --- a/products/statement-generator/src/contexts/RoutingProps.ts +++ b/products/statement-generator/src/contexts/RoutingProps.ts @@ -47,7 +47,6 @@ export enum AppUrl { PrivacyPolicy = '/privacy-policy', TermsOfUse = '/terms-of-use', FAQ = '/faq', - FAQ2 = '/faq2', AboutUs = '/about-us', } From 85043a3eef6f0e0e9c6845a700ffa0e93efed32b Mon Sep 17 00:00:00 2001 From: whitneywind <78887901+whitneywind@users.noreply.github.com> Date: Tue, 3 Oct 2023 18:38:23 -0700 Subject: [PATCH 08/11] postreview changes --- .../public/locales/en/translation.json | 89 +---- products/statement-generator/src/App.tsx | 5 +- .../src/components-layout/FAQContainer.tsx | 44 --- .../src/components/FAQAccordion.tsx | 6 +- .../src/components/FAQHeader.tsx | 96 ----- .../statement-generator/src/pages/FAQ.tsx | 330 +++++++++++++----- .../statement-generator/src/pages/FAQ2.tsx | 281 --------------- 7 files changed, 259 insertions(+), 592 deletions(-) delete mode 100644 products/statement-generator/src/components-layout/FAQContainer.tsx delete mode 100644 products/statement-generator/src/components/FAQHeader.tsx delete mode 100644 products/statement-generator/src/pages/FAQ2.tsx diff --git a/products/statement-generator/public/locales/en/translation.json b/products/statement-generator/public/locales/en/translation.json index 3352ac96..3d6e816f 100644 --- a/products/statement-generator/public/locales/en/translation.json +++ b/products/statement-generator/public/locales/en/translation.json @@ -191,69 +191,6 @@ "docx_btn": "download .docx" }, "faq_page": { - "page_header": "FAQ", - "title1": "What is expungement?", - "paragraph1": "Expungement in California means that people with certain low level, non violent criminal convictions may clear their records, meaning the penalties of their crimes will be removed or reduced. Expungement lifts many of the negative consequences of a criminal record, giving people a fresh start to their lives.", - "title2": "What is a declaration letter?", - "paragraph2": "A “declaration letter” is sometimes called a “personal letter” or “personal statement.”", - "paragraph2b": "Your letter allows you to tell the judge your story.", - "paragraph2c": "A good letter shows your motivation and efforts to better your life since conviction, explains your personal story, and how expungement, reclassification, or reduction would make a difference for you.", - "paragraph2d": "It is often about one page long.", - "paragraph2e": "This is your story. Use the space to say what is important to you.", - "title3": "Why do I need a declaration letter?", - "paragraph3": "When you file a petition with the court, you have the opportunity to attach a personal letter called a “declaration letter” explaining why you deserve a fresh start.", - "paragraph3b": "The declaration letter is your opportunity to explain to a judge, in your own voice, why you want your criminal record cleared or your charges reduced. A declaration letter can help your case by adding your personal reasons and motivation to your legal case.", - "title4": "Why does expungement or reclassification matter to me?", - "paragraph4": "The word “expungement” can be confusing. Expungement means that in most cases your past criminal record cannot be used against you when applying for a job, housing or student loans. You also regain some of your rights, like serving on a jury or owning a firearm.", - "paragraph4b": "Even though your criminal record does not disappear from the public record forever, your record will be updated to show that the conviction has been dismissed.", - "paragraph4c": "Reclassification allows you to change past felony convictions to a misdemeanor, even if you have served a sentence and parole. Once the felony has been removed from your criminal record, you may be eligible for benefits not previously available to you.", - "title5": "Can law enforcement get a search warrant to access my data?", - "paragraph5": "No. Even if law enforcement were to search this site for your data, there would be no data to find. We do not store or save any of your data, ever. There would be nothing to find.", - "paragraph5b": "Once your data has left our site via download, it is your responsibility to keep your data secure.", - "title6": "How does Proposition 47 help me?", - "paragraph6": "Proposition 47 changed the law in California so that six kinds of low level, non-violent crimes like theft or drug possession can be reduced from felonies to misdemeanors.", - "paragraph6b": "For example:", - "paragraph6b_li1": "If you have been convicted of a non-violent felony in the past, you can ask the court to have your felony reduced to a misdemeanor.", - "paragraph6b_li2": "If you are currently serving a sentence for a felony, you can ask the court to have your sentence reduced to a misdemeanor and be released.", - "paragraph6b_li3": "If you have already served a sentence for a felony, you can ask the court to reduce your old case to a misdemeanor.", - "paragraph6c": "Most importantly, Proposition 47 means if you are granted a reduction by a court, you can truthfully say you have never been convicted of a felony when asked on a job, housing, or other application.", - "paragraph6d": "Examples of eligible offenses include:", - "paragraph6d_li1": "Simple drug possession", - "paragraph6d_li2": "Petty theft under $950", - "paragraph6d_li3": "Shoplifting under $950", - "paragraph6d_li4": "Forgery under $950", - "paragraph6d_li5": "Writing a bad check under $950", - "paragraph6d_li6": "Receipt of stolen property under $950", - "paragraph6e": "For more information about Prop 47 exceptions and restrictions, visit", - "title7": "How does Proposition 64 help me?", - "paragraph7": "Proposition 64 legalized the sale and use of recreational marijuana among people aged 21 and older in California. At the same time, Proposition 64 also reduced or eliminated certain penalties related to previous marijuana convictions. If you qualify, you might be able to have your criminal record reduced or dismissed completely.", - "paragraph7b": "Examples of eligible offenses include:", - "paragraph7b_li1": "Possession of marijuana or concentrated marijuana", - "paragraph7b_li2": "Cultivation of marijuana", - "paragraph7b_li3": "Possession with intent to sell marijuana", - "paragraph7b_li4": "Sales or transport of marijuana", - "paragraph7c": "If you were between 18 and 20 at the time of the offense, it may be more likely that you can get your criminal records sealed and/or destroyed OR have the crimes reduced to a misdemeanor.", - "paragraph7d": "If you were charged with a Proposition 64 qualifying offense, you may apply to reduce your sentence if you are:", - "paragraph7d_li1": "Currently serving a sentence", - "paragraph7d_li2": "On probation", - "paragraph7d_li3": "Under post-release supervision", - "paragraph7d_li4": "On parole", - "paragraph7e": "If you have already served a sentence for a Proposition 64 qualifying offense, you may apply for a reduction in your criminal charge.", - "paragraph7f": "There is no time limit for when you can apply for a reduction or dismissal under Proposition 64.", - "paragraph7g": "For more information about Proposition 64, please see", - "title8": "How is Proposition 64 different from Proposition 47?", - "paragraph8": "Proposition 64 differs from Proposition 47 in a few important ways. Passed in 2014, Proposition 47 made major changes affecting people charged with certain non-violent, low level crimes. Specifically, Proposition 47 reduced the legal penalties for six kinds of theft and drug possession charges from a more serious, a felony, to less serious, a misdemeanor. Passed in 2016, Proposition 64 built upon Proposition 47 by reducing or dismissing the remaining criminal charges for most marijuana convictions.", - "paragraph8b": "Most importantly, Proposition 47 means if you are granted a reduction by a court, you can truthfully say you have never been convicted of a felony when asked on a job, housing, or other application.", - "title9": "Are there any deadlines?", - "paragraph9": "Under Proposition 47, you must file the “Petition for Resentencing/Reduction to Misdemeanor” form with the Superior Court where you were convicted no later than Nov. 4, 2022.", - "title10": "What does the Expunge Assist website do?", - "paragraph10": "This website serves as a guide to create your own letter by taking you through the writing process step by step.", - "paragraph10b": "Please note that the website does not replace any professional legal advice you receive from an attorney.", - "title11": "Is there incorrect information on this website?", - "paragraph11": "Get in touch at info@expungeassist.org. The laws are changing often in California, and that could mean some information is outdated in this website. We strive to provide correct information, so please let us know if we missed something.", - "paragraph11b": "Please note: the information provided here is only a very brief overview." - }, - "faq2_page": { "page_header": "Frequently Asked Questions (FAQ)", "page_subheader": "This guide will help you learn more about declaration letters and how to use the tool.", "section1": "Expungement Basics", @@ -269,44 +206,44 @@ "paragraph1.3b": "Reduction, also called “reclassification” or “redesignation”, allows you to change a past felony conviction to a misdemeanor, or a misdemeanor to an infraction, even if you have served a sentence. Certain legal provisions allow a felony conviction to be reduced to a misdemeanor and then be expunged.", "title1.4": "What is the expungement process in California?", "paragraph1.4a": "To learn more about the expungement process in California and eligibility, please check the following California Courts and California Legislature resources:", - "paragraph1.4b": "California Records Self-Help Guide: Clean your record", - "paragraph1.4c": "Clearing Your Adult Criminal Record in California: A Step-by-Step Guide", - "paragraph1.4d": "California Senate Bill 731", + "paragraph1.4b": "California Records Self-Help Guide: Clean your record", + "paragraph1.4c": "Clearing Your Adult Criminal Record in California: A Step-by-Step Guide", + "paragraph1.4d": "California Senate Bill 731", "section2": "Using Expunge Assist", "title2.1": "What is Expunge Assist?", - "paragraph2.1a": "Expunge Assist is a tool that helps people with eligible criminal convictions in California write a declaration letter for expungement or reduction petitions. It serves as a guide that takes you through the writing process step by step. It is a free service provided by Hack for LA, a project under the nonprofit Civic Tech Structure.", + "paragraph2.1a": "

Expunge Assist is a tool that helps people with eligible criminal convictions in California write a declaration letter for expungement or reduction petitions. It serves as a guide that takes you through the writing process step by step. It is a free service provided by Hack for LA, a project under the nonprofit Civic Tech Structure.

", "paragraph2.1b": "Please note that the website does not replace any professional legal advice you receive from a lawyer.", "title2.2": "How does Expunge Assist protect my privacy?", "paragraph2.2a": "Expunge Assist does not store or save any of your data. Once you close your browser, your data is cleared. If any person or agencies were to search this site for your data, there would be no data to find. However, once you have downloaded, saved, or copied your letter from our site to another location, it is your responsibility to keep that data secure.", - "paragraph2.2b": "Check our Privacy Policy to learn more.", + "paragraph2.2b": "

Check our Privacy Policy to learn more.

", "title2.3": "My conviction was not in California. Can I still use Expunge Assist?", "paragraph2.3a": "This tool is currently intended only for people with criminal convictions in California. Each state has different rules on record clearance, so you should check the laws of the state in which you have your conviction.", "paragraph2.3b": "However, if your state requires or allows for a written declaration letter to clear your record, then you may want to take a look at the Expunge Assist declaration letter generator as a guide for the writing process or to help get a better idea of what a declaration letter may contain.", "title2.4": "I see incorrect information on this website. What should I do?", - "paragraph2.4a": "Get in touch at info@expungeassist.org. The laws change often in California, and that could mean some information is outdated in this website. We work to provide correct information, so please let us know if we missed something.", + "paragraph2.4a": "

Get in touch at info@expungeassist.org. The laws change often in California, and that could mean some information is outdated in this website. We work to provide correct information, so please let us know if we missed something.

", "paragraph2.4b": "Please note: The information provided here is only a brief overview. We encourage you to speak with a lawyer or legal aid organization to learn about the pathway to expungement for your individual case.", "title2.5": "What if I have a question about Expunge Assist or the declaration letter generator that has not been answered?", - "paragraph2.5a": "If you have questions specific to Expunge Assist or Hack for LA such as about our site, the declaration letter generator, or operations and partner organizations, please reach out at info@expungeassist.org, and we will try our best to answer them.", + "paragraph2.5a": "

If you have questions specific to Expunge Assist or Hack for LA such as about our site, the declaration letter generator, or operations and partner organizations, please reach out at info@expungeassist.org., and we will try our best to answer them.

", "paragraph2.5b": "If you have a question about the laws or are seeking legal advice for your individual case, then you should contact a lawyer or local legal aid organization.", "section3": "Updates to California law", "title3.1": "How does Proposition 47 help me?", "paragraph3.1a": "Proposition 47 changed the law in California so that certain felony convictions can be reduced to a misdemeanor. These include simple drug possession and some thefts offenses of not more than $950.", "paragraph3.1b": "The deadline to apply was November 22, 2022. However, you may still apply if you can show the court that you had a good reason to miss the deadline.", "paragraph3.1c": "If the court finds that you had a good reason and that your conviction is eligible, it will reduce your conviction to a misdemeanor. In certain cases, your conviction can be dismissed.", - "paragraph3.1d": "Check California Courts Record cleaning: Felony convictions and Proposition 47 if you are eligible.", + "paragraph3.1d": "

Check California Courts Record cleaning: Felony convictions and Proposition 47 if you are eligible.

", "title3.2": "Do I need to submit a declaration letter under Proposition 47?", "paragraph3.2a": "Depending on your situation, for example, if you did not satisfy the terms of your probation, or if you had a jail or prison sentence, you may include or attach a declaration letter or supporting documents that your petition is in the interests of justice.", "paragraph3.2b": "In this case, a declaration letter, though not required, can help strengthen your case and convince the court.", - "paragraph3.2c": "Check California Courts Record cleaning: Felony convictions and Proposition 47 if you may attach a declaration letter for your case.", + "paragraph3.2c": "

Check California Courts Record cleaning: Felony convictions and Proposition 47 if you may attach a declaration letter for your case.

", "title3.3": "How does Proposition 64 help me?", "paragraph3.3a": "California changed the law for marijuana offenses in 2016, and Proposition 64 changed many marijuana convictions to misdemeanors. These include the sale of marijuana and the possession of marijuana for sale or cultivation.", "paragraph3.3b": "If you have a conviction from before November 9, 2016, it may be eligible for automatic redesignation to a misdemeanor or even dismissal and sealing. In most cases you do not need to file a petition. If your marijuana conviction has not been cleaned up, you can apply/petition with the court but do not need to submit a declaration letter.", - "paragraph3.3c": "Check California Courts Marijuana conviction relief (Proposition 64) for more information, eligible offenses, and steps for petition if your conviction has not been cleaned up.", + "paragraph3.3c": "Check California Courts Marijuana conviction relief (Proposition 64) for more information, eligible offenses, and steps for petition if your conviction has not been cleaned up.", "title3.4": "How is Proposition 47 different from Proposition 64?", - "paragraph3.4a": "Proposition 47 reduces certain eligible drug or theft felonies to misdemeanors. The deadline for applying for reduction was November 22, 2022, but if the court finds that you have a good reason to miss the deadline, you may still be eligible. Depending on your case, you may want to include a declaration letter in your petition.", - "paragraph3.4b": "Proposition 64 automatically cleans up marijuana-related convictions, either with redesignation to a misdemeanor, or dismissal and sealing. Most eligible cases are reduced or dismissed automatically by the courts. If your conviction has not been cleaned up, you may apply but do not need to submit a declaration letter. There is no time limit for applying for redesignation or dismissal of a conviction.", + "paragraph3.4a": "

Proposition 47 reduces certain eligible drug or theft felonies to misdemeanors. The deadline for applying for reduction was November 22, 2022, but if the court finds that you have a good reason to miss the deadline, you may still be eligible. Depending on your case, you may want to include a declaration letter in your petition.

", + "paragraph3.4b": "

Proposition 64 automatically cleans up marijuana-related convictions, either with redesignation to a misdemeanor, or dismissal and sealing. Most eligible cases are reduced or dismissed automatically by the courts. If your conviction has not been cleaned up, you may apply but do not need to submit a declaration letter. There is no time limit for applying for redesignation or dismissal of a conviction.

", "title3.5": "How does Senate Bill 731 help me?", - "paragraph3.5a": "Senate Bill 731 is a law, effective July 1, 2023, that extends automatic conviction expungement from only convictions with probation sentences, where probation was not violated, to other felony convictions if 4 years have passed and you have not been convicted of a new felony offense. If you are eligible for automatic expungement under this law, you do not need to petition or write a declaration letter." + "paragraph3.5a": "

Senate Bill 731 is a law, effective July 1, 2023, that extends automatic conviction expungement from only convictions with probation sentences, where probation was not violated, to other felony convictions if 4 years have passed and you have not been convicted of a new felony offense. If you are eligible for automatic expungement under this law, you do not need to petition or write a declaration letter.

" }, "about_us_page": { "page_header": "About Us", diff --git a/products/statement-generator/src/App.tsx b/products/statement-generator/src/App.tsx index 60507b9d..ca37d430 100644 --- a/products/statement-generator/src/App.tsx +++ b/products/statement-generator/src/App.tsx @@ -36,8 +36,7 @@ import NotFound from 'pages/NotFound'; import PreviewPage from 'pages/PreviewPage'; import PrivacyPolicy from 'pages/PrivacyPolicy'; import TermsOfUse from 'pages/TermsOfUse'; -// import FAQ from 'pages/FAQ'; -import FAQ2 from 'pages/FAQ2'; +import FAQ from 'pages/FAQ'; import AboutUs from 'pages/AboutUs'; import 'styles/App.css'; @@ -177,7 +176,7 @@ const App: React.FC = () => { component={PrivacyPolicy} /> - + diff --git a/products/statement-generator/src/components-layout/FAQContainer.tsx b/products/statement-generator/src/components-layout/FAQContainer.tsx deleted file mode 100644 index 37e554c0..00000000 --- a/products/statement-generator/src/components-layout/FAQContainer.tsx +++ /dev/null @@ -1,44 +0,0 @@ -import React from 'react'; -import { makeStyles, createStyles } from '@material-ui/core'; - -interface IContentContainer { - children?: any; - className?: string; -} - -const useStyles = makeStyles(({ breakpoints, spacing }) => - createStyles({ - FAQContainer: { - maxWidth: '996px', - minWidth: '300px', - width: '69.2%', - padding: spacing(3), - paddingTop: 0, - marginLeft: 'auto', - marginRight: 'auto', - display: 'flex', - flex: '1 0 auto', - flexDirection: 'column', - - [breakpoints.down('sm')]: { - padding: spacing(2), - }, - - [breakpoints.down('xs')]: { - marginLeft: 'initial', - marginRight: 'initial', - width: '100%', - }, - }, - }) -); - -const FAQContainer = ({ children, className = '' }: IContentContainer) => { - const classes = useStyles(); - - return ( -
{children}
- ); -}; - -export default FAQContainer; diff --git a/products/statement-generator/src/components/FAQAccordion.tsx b/products/statement-generator/src/components/FAQAccordion.tsx index b9881154..ba471b2a 100644 --- a/products/statement-generator/src/components/FAQAccordion.tsx +++ b/products/statement-generator/src/components/FAQAccordion.tsx @@ -96,7 +96,11 @@ export const FAQAccordion: React.FC = ({
{content && content.map((paragraph) => { - return {t(paragraph)}; + return ( + + ); })} {children && children}
diff --git a/products/statement-generator/src/components/FAQHeader.tsx b/products/statement-generator/src/components/FAQHeader.tsx deleted file mode 100644 index 524de564..00000000 --- a/products/statement-generator/src/components/FAQHeader.tsx +++ /dev/null @@ -1,96 +0,0 @@ -import React from 'react'; -import { makeStyles, createStyles } from '@material-ui/core'; -import { useTranslation } from 'react-i18next'; -import faqMobile from '../assets/faqMobile.svg'; -import faqDesktop from '../assets/faqDesktop.svg'; - -const useStyles = makeStyles(({ palette, breakpoints }) => - createStyles({ - Header: { - width: '100vw', - display: 'flex', - justifyContent: 'center', - backgroundColor: palette.primary.lighter, - marginBottom: '12px', - - [breakpoints.down('sm')]: { - minHeight: '509px', - }, - }, - HeaderContent: { - maxWidth: '996px', - minWidth: '342px', - width: '69.2%', - margin: '45px 222px 54.64px', - display: 'flex', - justifyContent: 'space-between', - alignItems: 'center', - - [breakpoints.down('sm')]: { - flexDirection: 'column', - width: '100%', - margin: '24px 16px', - gap: '36px', - }, - }, - HeaderText: { - display: 'flex', - flexDirection: 'column', - justifyContent: 'center', - alignItems: 'center', - backgroundColor: palette.primary.lighter, - marginRight: '113.5px', - - [breakpoints.down('md')]: { - marginRight: 0, - }, - - [breakpoints.down('sm')]: { - gap: '24px', - }, - }, - Heading: { - fontSize: '34px', - lineHeight: '51px', - marginBotton: '16px', - fontWeight: 700, - }, - SubHeading: { - fontSize: '24px', - lineHeight: '36px', - fontWeight: 400, - }, - DesktopImage: { - [breakpoints.down(breakpoints.values.md)]: { - display: 'none', - }, - }, - MobileImage: { - [breakpoints.up(breakpoints.values.md)]: { - display: 'none', - }, - }, - }) -); - -export const FAQHeader: React.FC = () => { - const classes = useStyles(); - const { t } = useTranslation(); - - return ( -
-
-
-

{t('faq2_page.page_header')}

-

{t('faq2_page.page_subheader')}

-
-
- Two people talking -
-
- Two people talking -
-
-
- ); -}; diff --git a/products/statement-generator/src/pages/FAQ.tsx b/products/statement-generator/src/pages/FAQ.tsx index a2cf5ae1..9509e2d1 100644 --- a/products/statement-generator/src/pages/FAQ.tsx +++ b/products/statement-generator/src/pages/FAQ.tsx @@ -1,103 +1,251 @@ import React from 'react'; import { useTranslation } from 'react-i18next'; +import ContentContainer from 'components-layout/ContentContainer'; +import { makeStyles, createStyles } from '@material-ui/core'; +import { FAQAccordion } from 'components/FAQAccordion'; +import faqDesktop from '../assets/faqDesktop.svg'; +import faqMobile from '../assets/faqMobile.svg'; + +interface IContentContainer { + children?: any; + className?: string; +} -import LinkAsText from 'components/LinkAsText'; +const useStyles = makeStyles(({ palette, breakpoints, spacing }) => + createStyles({ + Header: { + width: '100vw', + display: 'flex', + justifyContent: 'center', + backgroundColor: palette.primary.lighter, + marginBottom: '12px', + + [breakpoints.down('sm')]: { + minHeight: '509px', + }, + }, + HeaderContent: { + maxWidth: '996px', + minWidth: '342px', + width: '69.2%', + margin: '45px 222px 54.64px', + display: 'flex', + justifyContent: 'space-between', + alignItems: 'center', + + [breakpoints.down('md')]: { + flexDirection: 'column', + width: '100%', + margin: '24px 16px', + gap: '36px', + }, + }, + HeaderText: { + display: 'flex', + flexDirection: 'column', + justifyContent: 'center', + alignItems: 'center', + backgroundColor: palette.primary.lighter, + marginRight: '113.5px', + + [breakpoints.down('md')]: { + marginRight: 0, + }, + + [breakpoints.down('sm')]: { + gap: '24px', + }, + }, + Heading: { + fontSize: '34px', + lineHeight: '51px', + marginBotton: '16px', + fontWeight: 700, + }, + SubHeading: { + fontSize: '24px', + lineHeight: '36px', + fontWeight: 400, + }, + ImgContainer: { + width: '100%', + textAlign: 'center', + }, + Img: { + width: 'auto', + maxWidth: '100%', + minWidth: '182px', + }, + FAQContainer: { + maxWidth: '996px', + minWidth: '300px', + width: '69.2%', + padding: spacing(3), + paddingTop: 0, + marginLeft: 'auto', + marginRight: 'auto', + display: 'flex', + flex: '1 0 auto', + flexDirection: 'column', + + [breakpoints.down('sm')]: { + padding: spacing(2), + }, + + [breakpoints.down('xs')]: { + marginLeft: 'initial', + marginRight: 'initial', + width: '100%', + }, + }, + sectionTitle: { + color: palette.primary.main, + fontSize: '24px', + lineHeight: '36px', + fontWeight: 600, + boxShadow: 'none', + border: 'none', + marginTop: '24px', + marginBottom: '12px', + + [breakpoints.down('sm')]: { + marginTop: '24px', + }, + }, + }) +); + +export const FAQHeader: React.FC = () => { + const classes = useStyles(); + const { t } = useTranslation(); -import ContentContainer from 'components-layout/ContentContainer'; + return ( +
+
+
+

{t('faq_page.page_header')}

+

{t('faq_page.page_subheader')}

+
+
+ Two people talking +
+
+
+ ); +}; + +const FAQContainer = ({ children, className = '' }: IContentContainer) => { + const classes = useStyles(); + + return ( +
{children}
+ ); +}; function FAQ() { + const classes = useStyles(); const { t } = useTranslation(); return ( - -

{t('faq_page.page_header')}

- -

{t('faq_page.title1')}

-

{t('faq_page.paragraph1')}

- -

{t('faq_page.title2')}

-

{t('faq_page.paragraph2')}

-

{t('faq_page.paragraph2b')}

-

{t('faq_page.paragraph2c')}

-

{t('faq_page.paragraph2d')}

-

{t('faq_page.paragraph2e')}

- -

{t('faq_page.title3')}

-

{t('faq_page.paragraph3')}

-

{t('faq_page.paragraph3b')}

- -

{t('faq_page.title4')}

-

{t('faq_page.paragraph4')}

-

{t('faq_page.paragraph4b')}

-

{t('faq_page.paragraph4c')}

- -

{t('faq_page.title5')}

-

{t('faq_page.paragraph5')}

-

{t('faq_page.paragraph5b')}

- -

{t('faq_page.title6')}

-

{t('faq_page.paragraph6')}

-

{t('faq_page.paragraph6b')}

-
    -
  • {t('faq_page.paragraph6b_li1')}
  • -
  • {t('faq_page.paragraph6b_li2')}
  • -
  • {t('faq_page.paragraph6b_li3')}
  • -
-

{t('faq_page.paragraph6c')}

-

{t('faq_page.paragraph6d')}

-
    -
  • {t('faq_page.paragraph6d_li1')}
  • -
  • {t('faq_page.paragraph6d_li2')}
  • -
  • {t('faq_page.paragraph6d_li3')}
  • -
  • {t('faq_page.paragraph6d_li4')}
  • -
  • {t('faq_page.paragraph6d_li5')}
  • -
  • {t('faq_page.paragraph6d_li6')}
  • -
-

- {t('faq_page.paragraph6e')} - -

- -

{t('faq_page.title7')}

-

{t('faq_page.paragraph7')}

-

{t('faq_page.paragraph7b')}

-
    -
  • {t('faq_page.paragraph7b_li1')}
  • -
  • {t('faq_page.paragraph7b_li2')}
  • -
  • {t('faq_page.paragraph7b_li3')}
  • -
  • {t('faq_page.paragraph7b_li4')}
  • -
- -

{t('faq_page.paragraph7c')}

-

{t('faq_page.paragraph7d')}

-
    -
  • {t('faq_page.paragraph7d_li1')}
  • -
  • {t('faq_page.paragraph7d_li2')}
  • -
  • {t('faq_page.paragraph7d_li3')}
  • -
  • {t('faq_page.paragraph7d_li4')}
  • -
-

{t('faq_page.paragraph7e')}

-

{t('faq_page.paragraph7f')}

-

- {t('faq_page.paragraph7g')} - -

- -

{t('faq_page.title8')}

-

{t('faq_page.paragraph8')}

-

{t('faq_page.paragraph8b')}

- -

{t('faq_page.title9')}

-

{t('faq_page.paragraph9')}

- -

{t('faq_page.title10')}

-

{t('faq_page.paragraph10')}

-

{t('faq_page.paragraph10b')}

- -

{t('faq_page.title11')}

-

{t('faq_page.paragraph11')}

-

{t('faq_page.paragraph11b')}

-
+ <> + + +
+

{t('faq_page.section1')}

+ + + + +
+ +
+

{t('faq_page.section2')}

+ + + + + +
+ +
+

{t('faq_page.section3')}

+ + + + + +
+
+ ); } diff --git a/products/statement-generator/src/pages/FAQ2.tsx b/products/statement-generator/src/pages/FAQ2.tsx deleted file mode 100644 index dd93fcfd..00000000 --- a/products/statement-generator/src/pages/FAQ2.tsx +++ /dev/null @@ -1,281 +0,0 @@ -import React from 'react'; -import { useTranslation } from 'react-i18next'; -import FAQContainer from 'components-layout/FAQContainer'; -import { makeStyles, createStyles } from '@material-ui/core'; -import { FAQHeader } from 'components/FAQHeader'; -import { FAQAccordion } from 'components/FAQAccordion'; -import { AppUrl } from 'contexts/RoutingProps'; -import { Link } from 'react-router-dom'; - -const useStyles = makeStyles(({ palette, breakpoints }) => - createStyles({ - sectionTitle: { - color: palette.primary.main, - fontSize: '24px', - lineHeight: '36px', - fontWeight: 600, - boxShadow: 'none', - border: 'none', - marginTop: '24px', - marginBottom: '12px', - - [breakpoints.down('sm')]: { - marginTop: '24px', - }, - }, - // manualText styles so that text can match the text style of the accordion typography - manualText: { - fontSize: '1rem', - fontFamily: 'Roboto', - fontWeight: 400, - lineHeight: 1.5, - }, - textLink: { - color: 'black', - }, - boldText: { - fontWeight: 600, - }, - }) -); - -function FAQ2() { - const { t } = useTranslation(); - const classes = useStyles(); - - return ( - <> - - -
-

{t('faq2_page.section1')}

- - - - - - {t('faq2_page.paragraph1.4b')} - - - {t('faq2_page.paragraph1.4c')} - - - {t('faq2_page.paragraph1.4d')} - - -
- -
-

{t('faq2_page.section2')}

- - {/* the two paragraph tags below aren't being pulled from the translation file because they contain links and not plain text. */} -

- Expunge Assist is a tool that helps people with eligible criminal - convictions in California write a declaration letter for - expungement or reduction petitions. It serves as a guide that - takes you through the writing process step by step. It is a free - service provided by{' '} - - Hack for LA, - {' '} - a project under the nonprofit{' '} - - Civic Tech Structure - - . -

-

- Please note that the website does not replace any professional - legal advice you receive from a lawyer. -

-
- - {/* todo: update from hard-coded privacy policy link */} -

- Check our{' '} - - Privacy Policy - {' '} - to learn more. -

-
- - -

- Get in touch at{' '} - - info@expungeassist.org - - . The laws change often in California, and that could mean some - information is outdated in this website. We work to provide - correct information, so please let us know if we missed something. -

-

- Please note: The information provided here is only a brief - overview. We encourage you to speak with a lawyer or legal aid - organization to learn about the pathway to expungement for your - individual case. -

-
- -

- If you have questions specific to Expunge Assist or Hack for LA - such as about our site, the declaration letter generator, or - operations and partner organizations, please reach out at{' '} - - info@expungeassist.org - - , and we will try our best to answer them. -

-

- If you have a question about the laws or are seeking legal advice - for your individual case, then you should contact a lawyer or - local legal aid organization. -

-
-
- -
-

{t('faq2_page.section3')}

- - -

- - Check California Courts Record cleaning: Felony convictions and - Proposition 47 - {' '} - if you may attach a declaration letter for your case. -

-
- -

- Check{' '} - - California Courts Marijuana conviction relief (Proposition 64) - {' '} - for more information, eligible offenses, and steps for petition if - your conviction has not been cleaned up. -

-
- -

- Proposition 47 reduces certain eligible drug or theft felonies to - misdemeanors. The deadline for applying for reduction was November - 22, 2022, but if the court finds that you have a good reason to - miss the deadline, you may still be eligible. Depending on your - case,{' '} - - you may want to include a declaration letter in your petition. - -

-

- Proposition 64 automatically cleans up marijuana-related - convictions, either with redesignation to a misdemeanor, or - dismissal and sealing. Most eligible cases are reduced or - dismissed automatically by the courts. If your conviction has not - been cleaned up, you may apply but{' '} - - do not need to submit a declaration letter. - {' '} - There is no time limit for applying for redesignation or dismissal - of a conviction. -

-
- -

- Senate Bill 731 is a law, effective July 1, 2023, that extends - automatic conviction expungement from only convictions with - probation sentences, where probation was not violated, to other - felony convictions if 4 years have passed and you have not been - convicted of a new felony offense. If you are eligible for - automatic expungement under this law, you{' '} - - do not need to petition or write a declaration letter. - -

-
-
-
- - ); -} - -export default FAQ2; From 50cf23758c0039873c73718bcbd6ffd5a1dc6a8a Mon Sep 17 00:00:00 2001 From: whitneywind <78887901+whitneywind@users.noreply.github.com> Date: Tue, 3 Oct 2023 22:08:21 -0700 Subject: [PATCH 09/11] deleted extra img --- .../src/assets/faqMobile.svg | 49 ------------------- .../src/components-layout/AppHeader.tsx | 3 +- 2 files changed, 1 insertion(+), 51 deletions(-) delete mode 100644 products/statement-generator/src/assets/faqMobile.svg diff --git a/products/statement-generator/src/assets/faqMobile.svg b/products/statement-generator/src/assets/faqMobile.svg deleted file mode 100644 index 9971e138..00000000 --- a/products/statement-generator/src/assets/faqMobile.svg +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/products/statement-generator/src/components-layout/AppHeader.tsx b/products/statement-generator/src/components-layout/AppHeader.tsx index 07ad4cdd..e5fc3f7d 100644 --- a/products/statement-generator/src/components-layout/AppHeader.tsx +++ b/products/statement-generator/src/components-layout/AppHeader.tsx @@ -138,8 +138,7 @@ const AppHeader = () => { currentStep === '/about-us' || currentStep === '/privacy-policy' || currentStep === '/terms-of-use' || - currentStep === '/faq' || - currentStep === '/faq2' + currentStep === '/faq' ) { return ( Date: Thu, 12 Oct 2023 16:42:23 -0700 Subject: [PATCH 10/11] deleted unused imports and faqcontainer and switched to contentcontainer --- .../src/components/FAQAccordion.tsx | 2 -- .../statement-generator/src/pages/FAQ.tsx | 31 ++----------------- 2 files changed, 2 insertions(+), 31 deletions(-) diff --git a/products/statement-generator/src/components/FAQAccordion.tsx b/products/statement-generator/src/components/FAQAccordion.tsx index ba471b2a..a1c38a61 100644 --- a/products/statement-generator/src/components/FAQAccordion.tsx +++ b/products/statement-generator/src/components/FAQAccordion.tsx @@ -14,8 +14,6 @@ interface CustomAccordionProps { content?: string[]; } -// type FAQAccordionProps = AccordionProps & CustomAccordionProps; - const useStyles = makeStyles(({ palette }) => createStyles({ accordionWrapper: { diff --git a/products/statement-generator/src/pages/FAQ.tsx b/products/statement-generator/src/pages/FAQ.tsx index 9509e2d1..6d8d8cf0 100644 --- a/products/statement-generator/src/pages/FAQ.tsx +++ b/products/statement-generator/src/pages/FAQ.tsx @@ -4,12 +4,6 @@ import ContentContainer from 'components-layout/ContentContainer'; import { makeStyles, createStyles } from '@material-ui/core'; import { FAQAccordion } from 'components/FAQAccordion'; import faqDesktop from '../assets/faqDesktop.svg'; -import faqMobile from '../assets/faqMobile.svg'; - -interface IContentContainer { - children?: any; - className?: string; -} const useStyles = makeStyles(({ palette, breakpoints, spacing }) => createStyles({ @@ -78,23 +72,10 @@ const useStyles = makeStyles(({ palette, breakpoints, spacing }) => }, FAQContainer: { maxWidth: '996px', - minWidth: '300px', width: '69.2%', - padding: spacing(3), paddingTop: 0, - marginLeft: 'auto', - marginRight: 'auto', - display: 'flex', - flex: '1 0 auto', - flexDirection: 'column', - - [breakpoints.down('sm')]: { - padding: spacing(2), - }, [breakpoints.down('xs')]: { - marginLeft: 'initial', - marginRight: 'initial', width: '100%', }, }, @@ -138,14 +119,6 @@ export const FAQHeader: React.FC = () => { ); }; -const FAQContainer = ({ children, className = '' }: IContentContainer) => { - const classes = useStyles(); - - return ( -
{children}
- ); -}; - function FAQ() { const classes = useStyles(); const { t } = useTranslation(); @@ -153,7 +126,7 @@ function FAQ() { return ( <> - +

{t('faq_page.section1')}

-
+ ); } From 9d4b465df5b21601c13d323b2d610f5bb62a66f5 Mon Sep 17 00:00:00 2001 From: whitneywind <78887901+whitneywind@users.noreply.github.com> Date: Wed, 8 Nov 2023 10:41:08 -0800 Subject: [PATCH 11/11] removed leftover classname from translation file --- .../statement-generator/public/locales/en/translation.json | 2 +- products/statement-generator/src/pages/FAQ.tsx | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/products/statement-generator/public/locales/en/translation.json b/products/statement-generator/public/locales/en/translation.json index 3d6e816f..ff3f7458 100644 --- a/products/statement-generator/public/locales/en/translation.json +++ b/products/statement-generator/public/locales/en/translation.json @@ -211,7 +211,7 @@ "paragraph1.4d": "California Senate Bill 731", "section2": "Using Expunge Assist", "title2.1": "What is Expunge Assist?", - "paragraph2.1a": "

Expunge Assist is a tool that helps people with eligible criminal convictions in California write a declaration letter for expungement or reduction petitions. It serves as a guide that takes you through the writing process step by step. It is a free service provided by Hack for LA, a project under the nonprofit Civic Tech Structure.

", + "paragraph2.1a": "

Expunge Assist is a tool that helps people with eligible criminal convictions in California write a declaration letter for expungement or reduction petitions. It serves as a guide that takes you through the writing process step by step. It is a free service provided by Hack for LA, a project under the nonprofit Civic Tech Structure.

", "paragraph2.1b": "Please note that the website does not replace any professional legal advice you receive from a lawyer.", "title2.2": "How does Expunge Assist protect my privacy?", "paragraph2.2a": "Expunge Assist does not store or save any of your data. Once you close your browser, your data is cleared. If any person or agencies were to search this site for your data, there would be no data to find. However, once you have downloaded, saved, or copied your letter from our site to another location, it is your responsibility to keep that data secure.", diff --git a/products/statement-generator/src/pages/FAQ.tsx b/products/statement-generator/src/pages/FAQ.tsx index 6d8d8cf0..b0dc7e82 100644 --- a/products/statement-generator/src/pages/FAQ.tsx +++ b/products/statement-generator/src/pages/FAQ.tsx @@ -5,7 +5,7 @@ import { makeStyles, createStyles } from '@material-ui/core'; import { FAQAccordion } from 'components/FAQAccordion'; import faqDesktop from '../assets/faqDesktop.svg'; -const useStyles = makeStyles(({ palette, breakpoints, spacing }) => +const useStyles = makeStyles(({ palette, breakpoints }) => createStyles({ Header: { width: '100vw', @@ -135,7 +135,6 @@ function FAQ() { 'faq_page.paragraph1.1a', 'faq_page.paragraph1.1b', 'faq_page.paragraph1.1c', - 'faq_page.link-hfla', ]} />