This commit is contained in:
Kenneth Jannette
2024-03-22 22:50:20 -05:00
parent 388a2df025
commit c7cfe3557e

View File

@@ -10,6 +10,7 @@ import { marchEmailPrm } from "../../secrets";
import { createUserWithEmailAndPassword } from "firebase/auth"; import { createUserWithEmailAndPassword } from "firebase/auth";
import { stateDataValues } from "../../Constants/Fields/SignupFields"; import { stateDataValues } from "../../Constants/Fields/SignupFields";
import "../../styles/homepage.scss"; import "../../styles/homepage.scss";
import LoadingSpinner from "../../pageElements/LoadingSpinner";
const HomePage = () => { const HomePage = () => {
const navigate = useNavigate(); const navigate = useNavigate();
@@ -25,26 +26,31 @@ const HomePage = () => {
async function saveUserData( async function saveUserData(
authId, authId,
dataValues, dataValues,
email,
password,
customerId, customerId,
subscriptionCreated, subscriptionCreated,
subscriptionPeriodStart, subscriptionPeriodStart,
subscriptionPeriodEnd, subscriptionPeriodEnd,
subscriptionId, subscriptionId,
isPromotionalMebership isPromotionalMebership,
docsAllowedPeMonth
) { ) {
if (!email || !password) {
return;
}
console.log("email, password", email, password);
const appUserId = uuidv4(); const appUserId = uuidv4();
const firmId = uuidv4(); const firmId = uuidv4();
const fbAuthUid = authId; const fbAuthUid = authId;
let plan = "promo plan"; let plan = "promo plan";
let docsAllowedPerMonth; let docsAllowedPerMonth;
if (isPromotionalMebership === true) {
docsAllowedPerMonth = 1; docsAllowedPerMonth = 1;
subscriptionId = uuidv4(); subscriptionId = uuidv4();
plan = plan; plan = plan;
} else {
//docsAllowedPerMonth = selectedPlan[0].docsAllowedPerMonth;
}
const docsGenerated = 0; const docsGenerated = 0;
@@ -59,7 +65,6 @@ const HomePage = () => {
zipCode, zipCode,
barNumber, barNumber,
practiceArea, practiceArea,
email,
} = dataValues; } = dataValues;
const userState = stateDataValues.filter((value) => { const userState = stateDataValues.filter((value) => {
@@ -115,11 +120,11 @@ const HomePage = () => {
async function handleProcessPromoSubscription(code) { async function handleProcessPromoSubscription(code) {
console.log("code in handleProcessPromoSubscription", code); console.log("code in handleProcessPromoSubscription", code);
setIsBusy(true);
setShowPromoModal(false); setShowPromoModal(false);
if (!code) { if (!code) {
return; return;
} }
setIsBusy(true);
const userData = await getFocusData(code); const userData = await getFocusData(code);
if (!userData) { if (!userData) {
return; return;
@@ -130,27 +135,32 @@ const HomePage = () => {
const handlePromoSignup = async (dataValues) => { const handlePromoSignup = async (dataValues) => {
console.log("dataValues in handlePromoSignup", dataValues); console.log("dataValues in handlePromoSignup", dataValues);
return;
if (dataValues) { if (dataValues) {
try { try {
const customerId = `${uuidv4()}-florida-spring-promo`; const customerId = `${uuidv4()}-florida-spring-promo`;
const today = new Date(); const today = new Date();
const email = dataValues.email;
const password = dataValues.password;
const subscriptionCreated = today; const subscriptionCreated = today;
const subscriptionPeriodStart = today; const subscriptionPeriodStart = today;
console.log(subscriptionPeriodStart); console.log("subscriptionPeriodStart", subscriptionPeriodStart);
const subscriptionPeriodEnd = today; const subscriptionPeriodEnd = today;
const subscriptionId = uuidv4(); const subscriptionId = uuidv4();
if (!email || !password) {
return;
}
const userCredential = await createUserWithEmailAndPassword( const userCredential = await createUserWithEmailAndPassword(
auth, auth,
dataValues.email, email,
dataValues.password password
); );
const user = userCredential.user; const user = userCredential.user;
dataValues = { ...dataValues }; dataValues = { ...dataValues };
const isPromotionalMebership = true; const isPromotionalMebership = true;
console.log("userCredential", userCredential);
const res = await saveUserData( const res = await saveUserData(
user.uid, user.uid,
dataValues, dataValues,
@@ -189,280 +199,276 @@ const HomePage = () => {
navigate("/requestpage/supReq"); navigate("/requestpage/supReq");
}; };
return ( const homeContent = (
<> <div className="homepage-container">
<div className="homepage-container"> <section
<section className="section-1"
className="section-1" style={{
backgroundImage: `url(https://imagedelivery.net/OvFc3s8IYmBw7-_bogeTLg/ee5222a0-7480-43ba-0f14-0ea482f31300/public)`,
backgroundSize: "cover",
}}
>
<div className="first-section-subcontainer">
<div className="row upper-row-one">
<div className="col-md-12 mobile-col-up">
<div className="heading-one-container">
<h1 className="heading-1">Novodraft: Legal AI</h1>
<h1 className="heading-1-mobile">Novodraft</h1>
<h1 className="heading-2-mobile">AI-Assisted Legal Drafting</h1>
<h1 className="heading-2">
Draft documents faster <i>and </i> smarter
</h1>
</div>
<div className="mobile-lower-header-1">
<div className="mobile-lower-header-top">
<div className="mobile-sw-deck">Discovery requests</div>
<div className="mobile-sw-deck"> dramatically fast</div>
<div className="mobile-sw-reptwo">
<div className="ex-arca-two">Draft responses to</div>
<div className="ex-arca-two">demands in minutes</div>
</div>
</div>
<div className="mobile-lower-header-bottom">
<div className="mobile-lower-header-bottom-up"></div>
<div className="mobile-lower-header-bottom-down">
<Button
className="primary-button homepage-button"
labelText="Try It For Free"
onClick={handleTryItButton}
/>
</div>
</div>
</div>
<p className="text-block-1">
Discovery requests done dramatically fast discovery responses
ready in minutes.
</p>
<p className="text-block-two">
Reclaim hours every week. Spend time growing your practice, or
just get home by dinner.
</p>
<div className="try-it-button-box">
<Button
className="primary-button homepage-button"
labelText="Try It For Free"
onClick={handleTryItButton}
/>
</div>
</div>
</div>
</div>
</section>
{/* Section 2 */}
<section className="section-2">
<div className="home-row">
<div className="home-col-50">
<div className="heading-2-mobile-box">
<h2 className="heading-2-mobile">
Made by Attorneys, for Attorneys
</h2>
</div>
<div className="pad-2">
<img
src="https://imagedelivery.net/OvFc3s8IYmBw7-_bogeTLg/5f0f6f11-bb56-4f03-b05e-189d4f1a5600/public"
alt="image of a laptop computer"
className="img-2"
/>
</div>
</div>
<div className="home-col-50">
<div className="pad-2">
<h2 className="heading-2">Made by Attorneys, for Attorneys.</h2>
<div className="text-block-2-box">
<p className="text-block-2">
Legal tech developed by people that understand what you need.
</p>
</div>
<p className="section-two-body">
Novodraft understands the demands on your time. For example,
that discovery request on your desk. With a few clicks, and
Novodraft's AI assistant on the task, you can draft a
ready-to-serve response in minutes. It's as easy as uploading a
.pdf file.
</p>
<p className="section-two-body">
Novodraft cuts through a mire of rote tasks, but does much more
than automate.
</p>
<p className="section-two-body">
Intellidraft AI technology powers persuasive arguments and
boosts bland, boilerplate objections. Configurable for level of
authoritative citation and for infering factual context from
pleadings and briefs. Use it to augment your drafting as much or
as little as you prefer.
</p>
<div className="home-link-box">
<a className="link">
Explore Novodraft
<img src={arrow} className="img-1" alt="" />
</a>
</div>
</div>
</div>
</div>
</section>
{/* Section 3 */}
<section className="section-3">
<div className="section-three-header-box">
<h2 className="section-three-header">
AI-Powered Legal Drafting Technology{" "}
</h2>
<h2 className="section-three-header-mobile">
Novo Drafting Technology
</h2>
<p className="section-three-subhead">
Created by litigators to give you an edge.
</p>
</div>
<div className="card-section-container">
{/*********** CARD ONE *********** */}
<div className="home-card">
<div className="card-image-container">
<img
src="https://imagedelivery.net/OvFc3s8IYmBw7-_bogeTLg/5ff0ba9e-298f-4ee1-88d4-e19a44a00900/public"
alt="ai hand"
width="100%"
className="card-image"
/>
</div>
<div className="card-body">
<div className="card-upper-box">
<div className="home-card-title">
<h3 className="foo-card-title">Discovery Requests</h3>
<div className="home-card-divider"></div>
</div>
</div>
<div className="home-card-text-box">
<p className="card-texts">
Generate interrogatories and requests for
production/admissions leveraging AI.
</p>
<p className="card-texts">
Edit or add special language with tags. Concise yet
comprehensive demands, done in minutes.
</p>
</div>
</div>
</div>
{/*********** CARD TWO *********** */}
<div className="home-card">
<div className="card-image-container">
<img
src="https://imagedelivery.net/OvFc3s8IYmBw7-_bogeTLg/7a6dd50e-4d8f-4068-61b2-634dc5603f00/public"
alt="scales image"
width="100%"
className="card-image"
/>
</div>
<div className="card-body">
<div className="card-upper-box">
<div className="home-card-title">
<h3 className="foo-card-title">Discovery Responses</h3>
<div className="home-card-divider"></div>
</div>
</div>
<div className="home-card-text-box">
<p className="card-texts">
Use Novodraft AI to quickly draft responses including
compelling arguments about what you withhold from disclosure.
Finish in minutes with a downloadable .docx file.
</p>
</div>
</div>
</div>
{/*********** CARD THREE *********** */}
<div className="home-card">
<div className="card-image-container">
<img
src="https://imagedelivery.net/OvFc3s8IYmBw7-_bogeTLg/00667aa1-f847-430c-7a5e-d96abeed3300/public"
alt=""
className="card-image"
/>
</div>
<div className="card-body">
<div className="card-upper-box">
<div className="home-card-title">
<h3 className="foo-card-title">Proactive Alerts</h3>
<div className="home-card-divider"></div>
</div>
</div>
<div className="home-card-text-box">
<p className="card-texts">
Your dashboard displays important deadlines, alerts, and can
be configured to auto-draft documents with reminders for tasks
such as service or hearings.
</p>
</div>
</div>
</div>
</div>
</section>
<section className="section-5 py-5">
<div
className="home-test-container"
style={{ style={{
backgroundImage: `url(https://imagedelivery.net/OvFc3s8IYmBw7-_bogeTLg/ee5222a0-7480-43ba-0f14-0ea482f31300/public)`, backgroundImage: `url(https://imagedelivery.net/OvFc3s8IYmBw7-_bogeTLg/209dcf14-c086-42b4-ca72-f058d9ad1b00/public)`,
backgroundSize: "cover", backgroundSize: "cover",
}} }}
> >
<div className="first-section-subcontainer"> <div className="row">
<div className="row upper-row-one"> <div className="col-md-6">
<div className="col-md-12 mobile-col-up"> <div className="bottom-header-box">
<div className="heading-one-container"> <h4 className="heading-6">
<h1 className="heading-1">Novodraft: Legal AI</h1> Questions about our services? <br></br>
<h1 className="heading-1-mobile">Novodraft</h1> We're here to answer!
<h1 className="heading-2-mobile"> </h4>
AI-Assisted Legal Drafting <h4 className="heading-6-mobile">
</h1> Questions about our products and services?
<h1 className="heading-2"> </h4>
Draft documents faster <i>and </i> smarter <h4 className="heading-6-mobile">We're here to answer!</h4>
</h1>
</div>
<div className="mobile-lower-header-1">
<div className="mobile-lower-header-top">
<div className="mobile-sw-deck">Discovery requests</div>
<div className="mobile-sw-deck"> dramatically fast</div>
<div className="mobile-sw-reptwo">
<div className="ex-arca-two">Draft responses to</div>
<div className="ex-arca-two">demands in minutes</div>
</div>
</div>
<div className="mobile-lower-header-bottom">
<div className="mobile-lower-header-bottom-up"></div>
<div className="mobile-lower-header-bottom-down">
<Button
className="primary-button homepage-button"
labelText="Try It For Free"
onClick={handleTryItButton}
/>
</div>
</div>
</div>
<p className="text-block-1">
Discovery requests done dramatically fast discovery
responses ready in minutes.
</p>
<p className="text-block-two">
Reclaim hours every week. Spend time growing your practice, or
just get home by dinner.
</p>
<div className="try-it-button-box">
<Button
className="primary-button homepage-button"
labelText="Try It For Free"
onClick={handleTryItButton}
/>
</div>
</div> </div>
<h6 className="join-heading">
Novodraft will revolutionize your practice.
</h6>
<h6 className="join-heading">
Request a demo - let us show you how.
</h6>
<h6 className="join-heading-mobile">
Revolutionize your practice.
</h6>
<h6 className="join-heading-mobile">Let us show you how.</h6>
</div>
<div className="col-md-6 d-flex">
<button className="button-2" onClick={handleDemo}>
Request a demo
</button>
<button className="button-2" onClick={handleLogin}>
Go to login
</button>
</div> </div>
</div> </div>
</section> </div>
{/* Section 2 */} </section>
<section className="section-2"> {showPromoModal ? (
<div className="home-row"> <ConfirmModal
<div className="home-col-50"> titleText="Enter Promo Code"
<div className="heading-2-mobile-box"> onCancel={handleCancelModal}
<h2 className="heading-2-mobile"> buttonLabelText="Enter Code"
Made by Attorneys, for Attorneys isPromoModal={true}
</h2> onConfirm={handleProcessPromoSubscription}
</div> cancelButtonText="I don't have a code"
/>
<div className="pad-2"> ) : (
<img <></>
src="https://imagedelivery.net/OvFc3s8IYmBw7-_bogeTLg/5f0f6f11-bb56-4f03-b05e-189d4f1a5600/public" )}
alt="image of a laptop computer" </div>
className="img-2"
/>
</div>
</div>
<div className="home-col-50">
<div className="pad-2">
<h2 className="heading-2">Made by Attorneys, for Attorneys.</h2>
<div className="text-block-2-box">
<p className="text-block-2">
Legal tech developed by people that understand what you
need.
</p>
</div>
<p className="section-two-body">
Novodraft understands the demands on your time. For example,
that discovery request on your desk. With a few clicks, and
Novodraft's AI assistant on the task, you can draft a
ready-to-serve response in minutes. It's as easy as uploading
a .pdf file.
</p>
<p className="section-two-body">
Novodraft cuts through a mire of rote tasks, but does much
more than automate.
</p>
<p className="section-two-body">
Intellidraft AI technology powers persuasive arguments and
boosts bland, boilerplate objections. Configurable for level
of authoritative citation and for infering factual context
from pleadings and briefs. Use it to augment your drafting as
much or as little as you prefer.
</p>
<div className="home-link-box">
<a className="link">
Explore Novodraft
<img src={arrow} className="img-1" alt="" />
</a>
</div>
</div>
</div>
</div>
</section>
{/* Section 3 */}
<section className="section-3">
<div className="section-three-header-box">
<h2 className="section-three-header">
AI-Powered Legal Drafting Technology{" "}
</h2>
<h2 className="section-three-header-mobile">
Novo Drafting Technology
</h2>
<p className="section-three-subhead">
Created by litigators to give you an edge.
</p>
</div>
<div className="card-section-container">
{/*********** CARD ONE *********** */}
<div className="home-card">
<div className="card-image-container">
<img
src="https://imagedelivery.net/OvFc3s8IYmBw7-_bogeTLg/5ff0ba9e-298f-4ee1-88d4-e19a44a00900/public"
alt="ai hand"
width="100%"
className="card-image"
/>
</div>
<div className="card-body">
<div className="card-upper-box">
<div className="home-card-title">
<h3 className="foo-card-title">Discovery Requests</h3>
<div className="home-card-divider"></div>
</div>
</div>
<div className="home-card-text-box">
<p className="card-texts">
Generate interrogatories and requests for
production/admissions leveraging AI.
</p>
<p className="card-texts">
Edit or add special language with tags. Concise yet
comprehensive demands, done in minutes.
</p>
</div>
</div>
</div>
{/*********** CARD TWO *********** */}
<div className="home-card">
<div className="card-image-container">
<img
src="https://imagedelivery.net/OvFc3s8IYmBw7-_bogeTLg/7a6dd50e-4d8f-4068-61b2-634dc5603f00/public"
alt="scales image"
width="100%"
className="card-image"
/>
</div>
<div className="card-body">
<div className="card-upper-box">
<div className="home-card-title">
<h3 className="foo-card-title">Discovery Responses</h3>
<div className="home-card-divider"></div>
</div>
</div>
<div className="home-card-text-box">
<p className="card-texts">
Use Novodraft AI to quickly draft responses including
compelling arguments about what you withhold from
disclosure. Finish in minutes with a downloadable .docx
file.
</p>
</div>
</div>
</div>
{/*********** CARD THREE *********** */}
<div className="home-card">
<div className="card-image-container">
<img
src="https://imagedelivery.net/OvFc3s8IYmBw7-_bogeTLg/00667aa1-f847-430c-7a5e-d96abeed3300/public"
alt=""
className="card-image"
/>
</div>
<div className="card-body">
<div className="card-upper-box">
<div className="home-card-title">
<h3 className="foo-card-title">Proactive Alerts</h3>
<div className="home-card-divider"></div>
</div>
</div>
<div className="home-card-text-box">
<p className="card-texts">
Your dashboard displays important deadlines, alerts, and can
be configured to auto-draft documents with reminders for
tasks such as service or hearings.
</p>
</div>
</div>
</div>
</div>
</section>
<section className="section-5 py-5">
<div
className="home-test-container"
style={{
backgroundImage: `url(https://imagedelivery.net/OvFc3s8IYmBw7-_bogeTLg/209dcf14-c086-42b4-ca72-f058d9ad1b00/public)`,
backgroundSize: "cover",
}}
>
<div className="row">
<div className="col-md-6">
<div className="bottom-header-box">
<h4 className="heading-6">
Questions about our services? <br></br>
We're here to answer!
</h4>
<h4 className="heading-6-mobile">
Questions about our products and services?
</h4>
<h4 className="heading-6-mobile">We're here to answer!</h4>
</div>
<h6 className="join-heading">
Novodraft will revolutionize your practice.
</h6>
<h6 className="join-heading">
Request a demo - let us show you how.
</h6>
<h6 className="join-heading-mobile">
Revolutionize your practice.
</h6>
<h6 className="join-heading-mobile">Let us show you how.</h6>
</div>
<div className="col-md-6 d-flex">
<button className="button-2" onClick={handleDemo}>
Request a demo
</button>
<button className="button-2" onClick={handleLogin}>
Go to login
</button>
</div>
</div>
</div>
</section>
{showPromoModal ? (
<ConfirmModal
titleText="Enter Promo Code"
onCancel={handleCancelModal}
buttonLabelText="Enter Code"
isPromoModal={true}
onConfirm={handleProcessPromoSubscription}
cancelButtonText="I don't have a code"
/>
) : (
<></>
)}
</div>
</>
); );
return isBusy ? <LoadingSpinner /> : homeContent;
}; };
export default HomePage; export default HomePage;