diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index d4579b3c4..000000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "i18n-ally.localesPaths": ["locales", "public/locales"], - "typescript.tsdk": "node_modules/typescript/lib", - "typescript.enablePromptUseWorkspaceTsdk": true -} diff --git a/apps/www/src/components/ui/atoms/button/button.model.ts b/apps/www/src/components/ui/atoms/button/button.model.ts index 90915f797..b96a50844 100644 --- a/apps/www/src/components/ui/atoms/button/button.model.ts +++ b/apps/www/src/components/ui/atoms/button/button.model.ts @@ -3,33 +3,36 @@ import {cn} from '@/utils/toolbox' export const buttonSizes = ['small', 'medium', 'large'] as const export const buttonShapes = ['square', 'rounded', 'circle'] as const export const buttonVariants = ['default', 'link', 'ghost'] as const -export const buttonTones = ['primary', 'secondary'] as const +export const buttonTones = ['primary', 'secondary', 'slate'] as const export const buttonAlignments = ['start', 'center', 'end'] as const const toneClasses: Record<(typeof buttonTones)[number], Record<(typeof buttonVariants)[number], string>> = { primary: { default: - 'bg-primary-800 text-white hover:bg-white hover:text-primary-800 focus-visible:ring-primary-800 \ - focus-visible:outline-primary-200', - link: 'text-primary-800 focus-visible:outline-primary-600 focus-visible:underline', + 'bg-sky-300 text-white text-slate-900 hover:bg-violet-300 focus-visible:ring-sky-300 focus-visible:outline-sky-300', + link: 'text-sky-300 focus-visible:outline-sky-200 focus-visible:underline', ghost: - 'text-primary-800 hover:bg-primary-100/30 focus-visible:outline-primary-600 \ - data-[active=true]:underline data-[active=true]:decoration-primary-200 data-[active=true]:underline-offset-4 \ - data-[active=true]:decoration-2' + 'bg-transparent border-2 border-sky-300 text-sky-300 text-md \ + hover:border-violet-300 hover:bg-transparent hover:text-violet-300' }, secondary: { default: - 'text-white bg-secondary-500 hover:bg-secondary-600 focus-visible:ring-secondary-500 \ - focus-visible:outline-secondary-600', + 'text-white bg-secondary-500 hover:bg-secondary-600 focus-visible:ring-secondary-500 focus-visible:outline-secondary-600', link: 'text-white data-[active=true]:text-white', ghost: 'text-secondary-500 hover:bg-secondary-50 focus-visible:outline-secondary-600' + }, + slate: { + default: + 'text-slate-900 bg-slate-100 hover:bg-slate-200 focus-visible:ring-slate-100 focus-visible:outline-slate-100', + link: 'text-slate-400 data-[active=true]:text-white font-light', + ghost: 'text-slate-400 hover:bg-slate-50 focus-visible:outline-slate-100' } } const sizeClasses: Record<(typeof buttonSizes)[number], string> = { small: 'px-2.5 py-1.5 text-sm', - medium: 'px-3 py-2 text-sm', - large: 'px-3.5 py-2.5 text-sm' + medium: 'px-3 py-2.5 text-sm', + large: 'px-5 py-2.5 text-sm' } const shapeClasses: Record<(typeof buttonShapes)[number], string> = { diff --git a/apps/www/src/components/ui/atoms/inputs/input/index.tsx b/apps/www/src/components/ui/atoms/inputs/input/index.tsx index 20e75ae57..08ee8ebf0 100644 --- a/apps/www/src/components/ui/atoms/inputs/input/index.tsx +++ b/apps/www/src/components/ui/atoms/inputs/input/index.tsx @@ -5,29 +5,31 @@ import React, {forwardRef} from 'react' export type InputProps = { id: string label: string + labelSrOnly?: boolean className?: string type?: HTMLInputTypeAttribute error?: string + placeholder?: string } const Input = forwardRef>( - ({id, label, className, type = 'text', error, ...other}, ref) => { + ({id, label, className, type = 'text', error, labelSrOnly, ...other}, ref) => { return (
-
+
= { required: 'Your first name is required' @@ -56,7 +57,8 @@ export default function ContactSplitWithPattern(props: ContactSplitWithPatternPr const lastNameInputProps: InputProps = { id: lastNameInputName, label: props.dictionary.inputLastName, - error: errors.lastName?.message?.toString() + error: errors.lastName?.message?.toString(), + placeholder: props.dictionary.inputLastNamePlaceholder } const lastNameInputRules: RegisterOptions = { required: 'Your last name is required' @@ -66,12 +68,13 @@ export default function ContactSplitWithPattern(props: ContactSplitWithPatternPr const emailInputProps: InputProps = { id: emailInputName, label: props.dictionary.inputEmail, - error: errors.email?.message?.toString() + error: errors.email?.message?.toString(), + placeholder: props.dictionary.inputEmailPlaceholder } const emailInputRules: RegisterOptions = { required: 'An email is required', pattern: { - value: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i, + value: EmailRegex, message: 'Email is invalid' } } @@ -80,7 +83,8 @@ export default function ContactSplitWithPattern(props: ContactSplitWithPatternPr const messageInputProps: TextAreaProps = { id: messageInputName, label: props.dictionary.inputMessage, - error: errors.message?.message?.toString() + error: errors.message?.message?.toString(), + placeholder: props.dictionary.inputMessagePlaceholder } const messageInputRules: RegisterOptions = { required: 'A message is required' @@ -94,7 +98,7 @@ export default function ContactSplitWithPattern(props: ContactSplitWithPatternPr async function onSubmit(data: contactUsFormData) { try { - await sendEmail(createHsformsPayload(data)) + await getInTouch(createHsformsPayload(data)) Router.push('#contact-section') setIsExploding(true) setShowThanksMessage(true) @@ -171,6 +175,7 @@ export default function ContactSplitWithPattern(props: ContactSplitWithPatternPr name={firstNameInputName} rules={firstNameInputRules} control={control} + disabled={isSubmitting} render={({field}) => ( ( ( (