diff --git a/src/services/ui/src/components/Cards/SectionCard.tsx b/src/services/ui/src/components/Cards/SectionCard.tsx new file mode 100644 index 0000000000..0ff07ab86c --- /dev/null +++ b/src/services/ui/src/components/Cards/SectionCard.tsx @@ -0,0 +1,23 @@ +import { FC, ReactNode } from "react"; +import { cn } from "@/lib"; + +interface SectionCardProps { + children: ReactNode; + className?: string; + title: string; +} +export const SectionCard: FC = ({ + title, + children, + className, +}: SectionCardProps) => { + return ( +
+
+

{title}

+
+
{children}
+
+
+ ); +}; diff --git a/src/services/ui/src/components/Cards/index.ts b/src/services/ui/src/components/Cards/index.ts index 51210f108c..bcdb738be4 100644 --- a/src/services/ui/src/components/Cards/index.ts +++ b/src/services/ui/src/components/Cards/index.ts @@ -1 +1,2 @@ export * from "./CardWithTopBorder"; +export * from "./SectionCard"; diff --git a/src/services/ui/src/components/ExportButton/index.tsx b/src/services/ui/src/components/ExportButton/index.tsx index 2811844bc7..83e0b82460 100644 --- a/src/services/ui/src/components/ExportButton/index.tsx +++ b/src/services/ui/src/components/ExportButton/index.tsx @@ -63,26 +63,24 @@ export const ExportButton = >({ }; return ( - <> - - + ); }; diff --git a/src/services/ui/src/components/Opensearch/Filtering/FilterDrawer.tsx b/src/services/ui/src/components/Opensearch/Filtering/FilterDrawer.tsx index 5350444946..3e21f8bd72 100644 --- a/src/services/ui/src/components/Opensearch/Filtering/FilterDrawer.tsx +++ b/src/services/ui/src/components/Opensearch/Filtering/FilterDrawer.tsx @@ -30,11 +30,14 @@ export const OsFilterDrawer = () => { const handleFilterReset = () => resetFilters(params.onSet); return ( - -
+ +
+ Filters +
diff --git a/src/services/ui/src/components/Opensearch/Filtering/index.tsx b/src/services/ui/src/components/Opensearch/Filtering/index.tsx index 5e8ed8eebe..7653c1ae9e 100644 --- a/src/services/ui/src/components/Opensearch/Filtering/index.tsx +++ b/src/services/ui/src/components/Opensearch/Filtering/index.tsx @@ -19,95 +19,102 @@ export const OsFiltering: FC<{ const filters = DEFAULT_FILTERS[params.state.tab]?.filters ?? []; return ( -
- - params.onSet((s) => ({ - ...s, - pagination: { ...s.pagination, number: 0 }, - search, - })) - } - disabled={!!props.disabled} - /> - getAllSearchData([...params.state.filters, ...filters])} - headers={[ - { - name: (() => { - if (params.state.tab === "spas") { - return "SPA ID"; - } else if (params.state.tab === "waivers") { - return "Waiver Number"; - } - return ""; - })(), - transform: (data) => data.id, - }, - { - name: "State", - transform: (data) => data.state ?? BLANK_VALUE, - }, - { - name: "Type", - transform: (data) => data.planType ?? BLANK_VALUE, - }, - { - name: "Action Type", - transform: (data) => { - if (data.actionType === undefined) { - return BLANK_VALUE; - } +
+

+ {"Search by Package ID, CPOC Name, or Submitter Name"} +

+
+ + params.onSet((s) => ({ + ...s, + pagination: { ...s.pagination, number: 0 }, + search, + })) + } + disabled={!!props.disabled} + /> +
+ getAllSearchData([...params.state.filters, ...filters])} + headers={[ + { + name: (() => { + if (params.state.tab === "spas") { + return "SPA ID"; + } else if (params.state.tab === "waivers") { + return "Waiver Number"; + } + return ""; + })(), + transform: (data) => data.id, + }, + { + name: "State", + transform: (data) => data.state ?? BLANK_VALUE, + }, + { + name: "Type", + transform: (data) => data.planType ?? BLANK_VALUE, + }, + { + name: "Action Type", + transform: (data) => { + if (data.actionType === undefined) { + return BLANK_VALUE; + } - return ( - LABELS[data.actionType as keyof typeof LABELS] || - data.actionType - ); - }, - }, - { - name: "Status", - transform(data) { - if (user?.data?.isCms && !user?.data?.user) { - if (data.cmsStatus) { - return data.cmsStatus; - } - return BLANK_VALUE; - } else { - if (data.stateStatus) { - return data.stateStatus; - } - return BLANK_VALUE; - } - }, - }, - { - name: "Initial Submission", - transform: (data) => - data?.submissionDate - ? format(new Date(data.submissionDate), "MM/dd/yyyy") - : BLANK_VALUE, - }, - { - name: "Formal RAI Response", - transform: (data) => { - return data.raiReceivedDate - ? format(new Date(data.raiReceivedDate), "MM/dd/yyyy") - : BLANK_VALUE; - }, - }, - { - name: "CPOC Name", - transform: (data) => data.leadAnalystName ?? BLANK_VALUE, - }, - { - name: "Submitted By", - transform: (data) => data.submitterName ?? BLANK_VALUE, - }, - ]} - /> - + return ( + LABELS[data.actionType as keyof typeof LABELS] || + data.actionType + ); + }, + }, + { + name: "Status", + transform(data) { + if (user?.data?.isCms && !user?.data?.user) { + if (data.cmsStatus) { + return data.cmsStatus; + } + return BLANK_VALUE; + } else { + if (data.stateStatus) { + return data.stateStatus; + } + return BLANK_VALUE; + } + }, + }, + { + name: "Initial Submission", + transform: (data) => + data?.submissionDate + ? format(new Date(data.submissionDate), "MM/dd/yyyy") + : BLANK_VALUE, + }, + { + name: "Formal RAI Response", + transform: (data) => { + return data.raiReceivedDate + ? format(new Date(data.raiReceivedDate), "MM/dd/yyyy") + : BLANK_VALUE; + }, + }, + { + name: "CPOC Name", + transform: (data) => data.leadAnalystName ?? BLANK_VALUE, + }, + { + name: "Submitted By", + transform: (data) => data.submitterName ?? BLANK_VALUE, + }, + ]} + /> + +
+
); }; diff --git a/src/services/ui/src/components/SearchForm/index.tsx b/src/services/ui/src/components/SearchForm/index.tsx index 1fdab0c17a..bf25f0a36a 100644 --- a/src/services/ui/src/components/SearchForm/index.tsx +++ b/src/services/ui/src/components/SearchForm/index.tsx @@ -46,15 +46,15 @@ export const SearchForm: FC<{ {isSearching && ( @@ -63,7 +63,7 @@ export const SearchForm: FC<{ )} {!!searchText && ( { setSearchText(""); handleSearch(""); diff --git a/src/services/ui/src/pages/form/medicaid-form.tsx b/src/services/ui/src/pages/form/medicaid-form.tsx index 5cd4543d19..540f6186e5 100644 --- a/src/services/ui/src/pages/form/medicaid-form.tsx +++ b/src/services/ui/src/pages/form/medicaid-form.tsx @@ -13,6 +13,7 @@ import { Alert, LoadingSpinner, BreadCrumbs, + SectionCard, } from "@/components"; import { ConfirmationModal } from "@/components/Modal/ConfirmationModal"; import { FAQ_TARGET, ROUTES } from "@/routes"; @@ -193,14 +194,10 @@ export const MedicaidForm = () => {
-
-

Medicaid SPA Details

-

- Indicates a required field -

-

+ +

Once you submit this form, a confirmation email is sent to you and to CMS. CMS will use this content to review your package, and you will not be able to edit this form. If CMS needs any additional @@ -210,65 +207,65 @@ export const MedicaidForm = () => { form.

-
- ( - -
- - SPA ID - + ( + +
+ + SPA ID + + + What is my SPA ID? + +
+

+ Must follow the format SS-YY-NNNN or SS-YY-NNNN-XXXX. +

+

+ Reminder - CMS recommends that all SPA numbers start with + the year in which the package is submitted. +

+ + { + if (e.target instanceof HTMLInputElement) { + e.target.value = e.target.value.toUpperCase(); + } + }} + /> + + +
+ )} + /> + ( + + + Proposed Effective Date of Medicaid SPA - - What is my SPA ID? - -
-

- Must follow the format SS-YY-NNNN or SS-YY-NNNN-XXXX. -

-

- Reminder - CMS recommends that all SPA numbers start with the - year in which the package is submitted. -

- - { - if (e.target instanceof HTMLInputElement) { - e.target.value = e.target.value.toUpperCase(); - } - }} - /> - - -
- )} - /> - ( - - - Proposed Effective Date of Medicaid SPA - - - - - - - - )} - /> -
-

Attachments

+ + + + + + )} + /> + +

Maximum file size of 80 MB per attachment.{" "} @@ -288,7 +285,6 @@ export const MedicaidForm = () => { } .

-

We accept the following file formats:{" "} .docx, .jpg, .png, .pdf, .xlsx,{" "} @@ -305,50 +301,53 @@ export const MedicaidForm = () => { } .

-
-

- - At least one attachment is required. -

-
- {attachmentList.map(({ name, label, required }) => ( + {attachmentList.map(({ name, label, required }) => ( + ( + + {label} + { + + {name === "cmsForm179" + ? "One attachment is required" + : ""} + {name === "spaPages" + ? "At least one attachment is required" + : ""} + + } + + + + )} + /> + ))} + + ( - - {label} - {required ? : ""} + + Add anything else you would like to share with CMS, limited + to 4000 characters - - + + + 4,000 characters allowed + )} /> - ))} - ( - -

- Additional Information -

- - Add anything else you would like to share with CMS, limited to - 4000 characters - - - 4,000 characters allowed -
- )} - /> -
+ +
Once you submit this form, a confirmation email is sent to you and to CMS. CMS will use this content to review your package, and you @@ -358,7 +357,7 @@ export const MedicaidForm = () => {
{Object.keys(form.formState.errors).length !== 0 ? ( - + Missing or malformed information. Please see errors above. ) : null} @@ -367,7 +366,7 @@ export const MedicaidForm = () => {
) : null} -
+