@star-insure/sdk 4.5.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.esm.js","sources":["../src/lib/dates.ts","../src/lib/money.ts","../src/lib/vehicles.ts","../src/lib/auth.tsx","../src/lib/clickOutside.tsx","../src/lib/toast.tsx","../src/lib/inertiaOptions.tsx","../src/lib/localStorage.tsx","../src/lib/quoteRequestForm.tsx","../src/lib/quoteRequestOptions.tsx","../src/lib/addressFinder.tsx","../src/lib/calculateAge.ts","../src/lib/calculatePricing.tsx","../src/lib/page.tsx","../src/lib/fetch.tsx","../src/components/common/Button.tsx","../src/components/common/Card.tsx","../src/components/common/Pagination.tsx","../src/components/common/SimplePagination.tsx","../src/components/common/ToastItem.tsx","../src/components/common/Toasts.tsx","../src/components/common/Modal.tsx","../src/components/tables/Table.tsx","../src/components/tables/TableActions.tsx","../src/components/tables/TableBody.tsx","../src/components/tables/TableCell.tsx","../src/components/tables/TableHead.tsx","../src/components/tables/TableHeader.tsx","../src/components/tables/TableRow.tsx","../src/components/forms/DateOfBirthField.tsx","../src/components/forms/MoneyField.tsx","../src/components/forms/RegistrationSearchField.tsx","../src/components/forms/FormTester.tsx","../src/components/forms/ErrorList.tsx","../src/components/filter/Back.tsx","../src/components/filter/SearchBar.tsx","../src/components/filter/Action.tsx","../src/components/filter/Dropdown.tsx","../src/components/filter/FilterItem.tsx","../src/components/filter/PageHeader.tsx"],"sourcesContent":["import { format, parse } from \"date-fns\";\n\n/**\n * Formats a date like \"Jan 1, 2022 at 9:50am\"\n */\nexport function formatDateNice(date: string|null|undefined, includeTime: boolean = true) {\n const formatString = includeTime ? \"MMM d, yyyy 'at' h:mma\" : 'MMM d, yyyy';\n const formatFunc = includeTime ? formatDateTime : formatDate;\n\n return formatFunc(date, formatString);\n}\n\n/**\n * Formats a date like \"01/01/2022 09:50\"\n */\nexport function formatDateForTable(date: string|null|undefined, includeTime: boolean = true) {\n return includeTime ? formatDateTime(date) : formatDate(date);\n}\n\n/**\n * Formats a date to Star Insure standard format - dd/mm/yyyy\n */\nexport function formatDate(date: Date|string|null|undefined, overrideFormatString?: string) {\n // If date is undefined or null\n if (!date) {\n return '';\n }\n\n const formatString = overrideFormatString || 'dd/MM/yyyy';\n\n // If date is a date object\n if (date instanceof Date) {\n return format(date, formatString);\n }\n\n /*\n * If date is a string, first attempt to parse it in non-standard formats\n * Only parse the first 10 characters of the string\n * dd/MM/yyyy, dd-MM-yyyy, dd.MM.yyyy\n */\n const nonStandardDate = date\n .substring(0, 10)\n .split('-').join('/')\n .split('.').join('/');\n\n const parsedDate = parse(nonStandardDate, 'dd/MM/yyyy', new Date());\n if (parsedDate.toString() !== 'Invalid Date') {\n return format(parsedDate, formatString);\n }\n\n // Then attempt to parse it natively\n const nativelyParsedDate = new Date(date);\n if (nativelyParsedDate.toString() !== 'Invalid Date') {\n return format(nativelyParsedDate, formatString);\n }\n\n return '';\n}\n\n/**\n * Formats a dateTime to Star Insure standard format - dd/mm/yyyy hh:mm\n */\nexport function formatDateTime(dateTime: Date|string|null|undefined, overrideFormatString?: string) {\n // If date is undefined or null\n if (!dateTime) {\n return '';\n }\n\n const formatString = overrideFormatString || 'dd/MM/yyyy HH:mm';\n\n // If date is a date object\n if (dateTime instanceof Date) {\n return format(dateTime, formatString);\n }\n\n /*\n * If date is a string, first attempt to parse it in non-standard formats\n * dd/MM/yyyy HH:mm, dd-MM-yyyy HH:mm, dd.MM.yyyy HH:mm,\n * dd/MM/yyyy hh:mm a, dd-MM-yyyy hh:mm a, dd.MM.yyyy hh:mm a,\n * dd/MM/yyyy HH:mm:ss, dd-MM-yyyy HH:mm:ss, dd.MM.yyyy HH:mm:ss,\n * dd/MM/yyyy hh:mm:ss a, dd-MM-yyyy hh:mm:ss a, dd.MM.yyyy hh:mm:ss a\n */\n const nonStandardDateTime = dateTime\n // Remove commas between date and time\n .split(',').join('')\n\n // Only parse the first 22 characters of the string\n .substring(0, 22)\n\n // Replace dashes and dots with slashes\n .split('-').join('/')\n .split('.').join('/');\n\n const is12Hour = ['AM', 'PM'].includes(nonStandardDateTime.slice(-2).toUpperCase());\n const hasSeconds = nonStandardDateTime.split(':').length === 3;\n\n const nonStandardFormat = (`dd/MM/yyyy ${is12Hour ? 'hh' : 'HH'}:mm${hasSeconds ? ':ss' : ''} ${is12Hour ? 'a' : ''}`).trim();\n\n const parsedDateTime = parse(nonStandardDateTime, nonStandardFormat, new Date());\n if (parsedDateTime.toString() !== 'Invalid Date') {\n return format(parsedDateTime, formatString);\n }\n\n // Then attempt to parse it natively\n const nativelyParsedDateTime = new Date(dateTime);\n if (nativelyParsedDateTime.toString() !== 'Invalid Date') {\n return format(nativelyParsedDateTime, formatString);\n }\n\n return '';\n}\n","/**\n * Safely rounds a number\n */\nexport function round(value: number): number {\n return Number(Math.round(parseFloat(value + 'e' + 2)) + 'e-' + 2)\n}\n\n/**\n * Gets the GST value from a number\n */\nexport function getGst(value: number): number {\n return round(value * 3 / 23);\n}\n\n/**\n * Adds GST to a number\n */\nexport function addGst(value: number): number {\n return round(value * 1.15);\n}\n\n/**\n * Subtracts GST from a number\n */\nexport function subtractGst(value: number): number {\n return round(value - getGst(value));\n}\n\n/**\n * Calculates the various GST values on a figure\n */\nexport function gstCalc(input: number|string): {\n gst: number,\n amountInclusive: number,\n amountExclusive: number\n} {\n let value = input;\n\n if (typeof value === 'string') {\n value = parseFloat(value.replace(/[^0-9.]/g, ''));\n }\n\n value = round(value);\n\n return {\n gst: getGst(value),\n amountInclusive: addGst(value),\n amountExclusive: subtractGst(value)\n }\n}\n\n/**\n * Formats a value nicely\n */\nexport function formatMoney(value: string|number|null|undefined, decimals: number = 2): string {\n if (value === null || value === undefined) {\n return '';\n }\n\n let toFormat = value;\n if (typeof value === 'string') {\n toFormat = value.replace(/[^\\d.-]/g, '')\n }\n\n return Number(toFormat).toLocaleString('en', {\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n });\n}\n\n/**\n * Turns a formatted value in to a float\n */\nexport function formatNumber(value: string): number {\n return parseFloat(value.replace(/[^0-9.]/g, ''));\n}\n","import { VehicleType } from \"../types\";\n\nexport function sanitiseVehicleType(inputType: string): VehicleType {\n let type: VehicleType;\n\n switch (inputType) {\n case 'Camper':\n case 'Goods Van/Truck/Utility':\n case 'Bus':\n case 'Motor Caravan':\n case 'Trailer/Caravan':\n case 'TRAILER_CARAVAN':\n case 'TRAILER_NOT_DESIGNED_FOR_HIGHWAY_USE':\n case 'MOBILE_MACHINE':\n case 'GOODS_VAN_TRUCK_UTILITY':\n case 'BUS':\n case 'MOTOR_CARAVAN': {\n type = 'motorhome';\n break;\n }\n\n case 'Motorcycle':\n case 'Moped':\n case 'ATV':\n case 'Agricultural Machine':\n case 'MOTORCYCLE':\n case 'MOPED':\n case 'TRACTOR':\n case 'AGRICULTURAL_MACHINE':\n case 'HIGH_SPEED_AGRICULTURAL_VEHICLE': {\n type = 'motorcycle';\n break;\n }\n\n case 'Passenger Car/Van':\n case 'PASSENGER_CAR_VAN':\n case 'SPECIAL_PURPOSE_VEHICLE':\n case 'UNKNOWN':\n default:\n type = 'car';\n }\n\n return type;\n}\n","import { usePage } from '@inertiajs/react';\nimport type { AuthContext } from '../types';\nimport type { ErrorBag, Errors, Page, PageProps } from '@inertiajs/core';\n\ninterface SharedProps {\n auth: AuthContext;\n errors: Errors & ErrorBag;\n}\n\ninterface AppPage extends Page {\n props: PageProps & SharedProps;\n}\n\nexport function useAuth(): AuthContext {\n const { props } = usePage() as AppPage;\n\n /**\n * Check if the user has permission to perform the given ability.\n */\n function can(ability: string): boolean {\n return props.auth.permissions.includes(ability);\n }\n\n return {\n ...props.auth,\n can,\n };\n}\n","import { useEffect } from 'react';\n\nexport function useClickOutside(ref: any, handler: (e: Event) => void) {\n useEffect(\n () => {\n const listener = (event: Event) => {\n // Do nothing if clicking ref's element or descendent elements\n if (!ref.current || ref.current.contains(event.target)) {\n return;\n }\n handler(event);\n };\n\n document.addEventListener('mousedown', listener);\n document.addEventListener('touchstart', listener);\n\n return () => {\n document.removeEventListener('mousedown', listener);\n document.removeEventListener('touchstart', listener);\n };\n },\n [ref, handler]\n );\n}\n","import * as React from 'react';\nimport type { Toast } from \"../types\";\nimport { v4 as uuid } from 'uuid';\n\ninterface ToastContextInterface {\n toasts: Toast[];\n addToast: (toast: Toast) => void;\n removeToast: (id: Toast['_id']) => void;\n}\n\nconst ToastContext = React.createContext<ToastContextInterface>({\n toasts: [],\n addToast: (t: Toast) => {t},\n removeToast: (t: Toast['_id']) => {t},\n});\n\nexport function ToastProvider({ children }: any) {\n const [toasts, setToasts] = React.useState<Toast[]>([]);\n\n /**\n * Add a new toast popup message\n */\n function addToast({ message, status, timeout = 4000 }: Toast) {\n const newToast: Toast = { message, status, timeout };\n\n newToast._id = uuid();\n\n setToasts(curr => [...curr, newToast]);\n\n setTimeout(() => {\n removeToast(newToast._id);\n }, timeout);\n }\n\n /**\n * Remove a toast message\n */\n function removeToast(id: Toast['_id']) {\n setToasts(curr => curr.filter(toast => toast._id !== id));\n }\n\n const context: ToastContextInterface = {\n toasts,\n addToast,\n removeToast,\n }\n\n return (\n <ToastContext.Provider value={context}>\n {children}\n </ToastContext.Provider>\n );\n}\n\nexport const useToast = () => React.useContext(ToastContext);\n","import type { VisitOptions } from '@inertiajs/core';\nimport { useToast } from './toast';\n\ninterface Options {\n successMessage?: string;\n}\n\nexport function useInertiaOptions({ successMessage = '' }: Options = {}): VisitOptions {\n const { addToast } = useToast();\n\n return {\n onSuccess: () => {\n addToast({\n message: successMessage ?? 'Your request was successful.',\n status: 'success',\n });\n },\n onError: (errors) => {\n Object.values(errors).forEach((err) => {\n addToast({\n message: err,\n status: 'error',\n });\n });\n }\n }\n}\n","import { useState } from \"react\";\n\nexport function useLocalStorage<T>(key: string, initialValue: T) {\n // State to store our value\n // Pass initial state function to useState so logic is only executed once\n const [storedValue, setStoredValue] = useState<T>(() => {\n if (typeof window === \"undefined\") {\n return initialValue;\n }\n try {\n // Get from local storage by key\n const item = window.localStorage.getItem(key);\n // Parse stored json or if none return initialValue\n return item ? JSON.parse(item) : initialValue;\n } catch (error) {\n // If error also return initialValue\n console.log(error);\n return initialValue;\n }\n });\n // Return a wrapped version of useState's setter function that ...\n // ... persists the new value to localStorage.\n const setValue = (value: T | ((val: T) => T)) => {\n try {\n // Allow value to be a function so we have same API as useState\n const valueToStore =\n value instanceof Function ? value(storedValue) : value;\n // Save state\n setStoredValue(valueToStore);\n // Save to local storage\n if (typeof window !== \"undefined\") {\n window.localStorage.setItem(key, JSON.stringify(valueToStore));\n }\n } catch (error) {\n // A more advanced implementation would handle the error case\n console.log(error);\n }\n };\n\n return [storedValue, setValue] as const;\n}\n","import React from 'react';\nimport { useForm } from \"@inertiajs/react\";\nimport { InertiaFormProps } from \"@inertiajs/react/types/useForm\";\nimport type { QuoteRequest } from '../types';\n\ntype QuoteRequestForm = QuoteRequest & Record<string, any>;\n\ninterface QuoteRequestFormContextInterface {\n form?: InertiaFormProps<QuoteRequestForm>;\n handleChange?: (e: React.ChangeEvent<HTMLInputElement|HTMLTextAreaElement|HTMLSelectElement>) => void;\n clear: () => void;\n}\n\nexport const initialData: QuoteRequestForm = {\n id: undefined,\n status: 'new',\n source: 'phone',\n reference: '',\n client_number: '',\n first_name: '',\n last_name: '',\n phone: '',\n mobile: '',\n email: '',\n licence: '',\n licence_other: '',\n promo_code: '',\n club_membership_number: '',\n length_of_insurance: '',\n dob: '',\n secondary_first_name: '',\n secondary_last_name: '',\n secondary_licence: '',\n secondary_licence_other: '',\n secondary_dob: '',\n club_id: undefined,\n street_address: {\n address: '',\n unit: '',\n suburb: '',\n city: '',\n post_code: '',\n },\n declaration: {\n had_incident: undefined,\n incidents: [],\n has_demerit_points: undefined,\n demerit_points: '',\n has_lost_licence: undefined,\n lost_licence_details: '',\n was_refused_insurance: undefined,\n refused_insurance_details: '',\n has_criminal_conviction: undefined,\n criminal_conviction_details: '',\n has_vehicle_modifications: undefined,\n vehicle_modifications_details: '',\n has_previous_insurer: undefined,\n previous_insurer_details: '',\n previous_insurer_expires_at: '',\n additional_details: '',\n },\n vehicles: [],\n // Portal specific fields:\n purchase_options: [],\n theme: '',\n broker_fee: undefined,\n broker_id: undefined,\n broker_firm_id: undefined,\n agent_id: undefined,\n agent_firm_id: undefined,\n staff_member_id: undefined,\n sent_at: undefined,\n sold_at: undefined,\n referrer_id: undefined,\n referrer_category_id: undefined,\n pricing_expires_at: undefined,\n follow_up_at: undefined,\n is_follow_up_required: true,\n}\n\nexport const QuoteRequestFormContext = React.createContext<QuoteRequestFormContextInterface>({ clear: () => null });\n\nexport function QuoteRequestFormProvider({ children }: { children: React.ReactNode }) {\n const form = useForm({ ...initialData });\n\n /**\n * Handle the change event for all form inputs\n */\n function handleChange(e: React.SyntheticEvent<HTMLInputElement|HTMLTextAreaElement|HTMLSelectElement>) {\n const { name } = e.currentTarget;\n let value: string|boolean|undefined = e.currentTarget.value;\n\n if (e.currentTarget.type === 'checkbox' || e.currentTarget.type === 'radio') {\n const target = e.currentTarget as HTMLInputElement;\n value = target.value === '1' ? true : false;\n }\n\n if (name.includes('.')) {\n const parts = name.split('.');\n\n if (parts.length === 2) {\n return form.setData(prevData => ({\n ...prevData,\n [parts[0]]: {\n // @ts-ignore TODO: Maybe fix these TS errors\n ...prevData[parts[0]],\n [parts[1]]: value,\n },\n }));\n } else {\n // We don't want to handle anything double-nested. These should be handled by their own local state.\n return;\n }\n }\n\n return form.setData(prevData => ({\n ...prevData,\n [name]: value,\n }));\n }\n\n function clear() {\n form.setData({ ...initialData });\n }\n\n return (\n <QuoteRequestFormContext.Provider value={{ form, handleChange, clear }}>\n {children}\n </QuoteRequestFormContext.Provider>\n );\n}\n\n/**\n * Takes in a quote request and returns data suitable to populate a form\n * by recursively calling this function, converting null to undefined.\n */\n export function sanitiseQuoteRequestFormData(value: any): any {\n if (Array.isArray(value)) {\n return value.map(item => sanitiseQuoteRequestFormData(item));\n }\n\n if (value === null) {\n return \"\";\n }\n\n if (typeof value === 'object') {\n // Map over each property and convert null to undefined\n return Object.keys(value).reduce((acc, key) => {\n // @ts-ignore\n acc[key] = sanitiseQuoteRequestFormData(value[key]);\n return acc;\n }, {});\n }\n\n return value;\n}\n\nexport const useQuoteRequestForm = () => React.useContext(QuoteRequestFormContext);\n","import React from 'react';\nimport { QuoteRequestOptions } from '../types';\n\ninterface QuoteRequestFormContextInterface {\n options?: QuoteRequestOptions;\n setOptions: (options: QuoteRequestOptions) => void;\n}\n\nconst QuoteRequestOptionsContext = React.createContext<QuoteRequestFormContextInterface>({ setOptions: () => {} });\n\nexport function QuoteRequestOptionsProvider({ children }: { children: React.ReactNode }) {\n const [options, setOptions] = React.useState<QuoteRequestOptions>();\n\n return (\n <QuoteRequestOptionsContext.Provider value={{ options, setOptions }}>\n {children}\n </QuoteRequestOptionsContext.Provider>\n )\n}\n\nexport const useQuoteRequestOptions = () => React.useContext(QuoteRequestOptionsContext);\n","const prodConfig = {\n key: 'XVAKN4Q9PREJD8CUTFBW',\n baseUrl: 'https://api.addressfinder.io/api/nz/address',\n}\n\nconst config = prodConfig;\n\ninterface AutocompleteResponse {\n completions: AddressCompletion[];\n paid: boolean;\n demo: boolean;\n success: boolean;\n}\n\nexport interface AddressCompletion {\n a: string;\n pxid: string;\n v: number;\n}\n\nexport interface AddressData {\n pxid: string;\n a: string;\n aims_address_id: string;\n sufi: number;\n ta_id: string;\n ta: string;\n tasub_id: string;\n tasub: string;\n number: string;\n x: string;\n y: string;\n postcode: string;\n street: string;\n street_name: string;\n street_type: string;\n city: string;\n suburb: string;\n region_id: string;\n region: string;\n postal_line_1: string;\n postal_line_2: string;\n aims_road_section_id: string;\n rural: string;\n address_line_1: string;\n address_line_2?: string;\n primary_parcel_id: string;\n meshblock: string;\n sa1_id: string;\n sa2_id: string;\n sa2: string;\n cb_id: string;\n cb: string;\n ward_id: string;\n ward: string;\n con_id: string;\n con: string;\n maoricon_id: string;\n maoricon: string;\n iur_id: string;\n iur: string;\n ur_id: string;\n ur: string;\n landwater_id: string;\n landwater: string;\n success: boolean;\n}\n\nexport async function autocomplete(search: string): Promise<AddressCompletion[]> {\n const { key, baseUrl } = config;\n const q = encodeURIComponent(search);\n\n const res = await fetch(`${baseUrl}/autocomplete/?key=${key}&q=${q}&format=json&strict=2`);\n\n if (!res.ok) {\n return [];\n }\n\n const data: AutocompleteResponse = await res.json();\n\n if (data.completions) {\n return data.completions;\n }\n\n return [];\n}\n\nexport async function getAddressData(completion: AddressCompletion): Promise<AddressData|null> {\n const { key, baseUrl } = config;\n\n const res = await fetch(`${baseUrl}/metadata/?key=${key}&pxid=${completion.pxid}&format=json`);\n\n if (!res.ok) {\n return null;\n }\n\n const data: AddressData = await res.json();\n\n return data;\n}\n","/**\n * Calculate someone's age from a date of birth.\n */\n export function calculateAge(date: string|Date|null|undefined): number {\n if (!date) {\n return 0;\n }\n\n try {\n const today = new Date();\n\n const birthDate = new Date(date);\n\n const age = today.getFullYear() - birthDate.getFullYear();\n const m = today.getMonth() - birthDate.getMonth();\n\n if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {\n return age - 1;\n }\n\n return age;\n } catch (error) {\n console.error(error);\n return 0;\n }\n}\n","import { addGst } from \"./money\";\nimport type { PolicyEnhancement, QuoteRequestPurchaseOption } from \"../types\";\n\ninterface CalculationArguments {\n option: QuoteRequestPurchaseOption;\n selectedEnhancements: PolicyEnhancement['id'][];\n brokerFee?: number;\n}\n\nfunction calculateMonthly({ option, selectedEnhancements }: CalculationArguments) {\n const premium = option.monthly_premium || 0;\n\n const enhancementsCost = selectedEnhancements.reduce((acc, id) => {\n const enhancement = option.enhancements?.find(e => e.id === id);\n if (!enhancement) return acc;\n const enhancementPremium = calcMonthlyEnhancementPrice(enhancement);\n\n if (!acc) {\n return enhancementPremium;\n }\n\n return acc + enhancementPremium;\n }, 0) || 0;\n\n return premium + enhancementsCost;\n}\n\nfunction calculateAnnually({ option, selectedEnhancements, brokerFee = 0 }: CalculationArguments) {\n const premium = option.premium || 0;\n const fsl = option.fsl || 0;\n const enhancementsCost = selectedEnhancements.reduce((acc, id) => {\n const enhancement = option.enhancements?.find(e => e.id === id);\n if (!enhancement) return acc;\n return (acc || 0) + (enhancement.premium || 0);\n }, 0) || 0;\n\n return premium + fsl + enhancementsCost + brokerFee;\n}\n\nexport function calcMonthlyEnhancementPrice(enhancement: PolicyEnhancement): number {\n if (!enhancement.premium) return 0;\n\n const monthlyPremium = (enhancement.premium / 100) / 12;\n\n if (enhancement.disable_rounding) {\n return Math.round(monthlyPremium * 100);\n }\n\n return Math.round(Math.ceil(monthlyPremium) * 100);\n}\n\n/**\n * Fix rounding errors we get from subtracting, and then adding GST back on\n * (Issues with 2 decimal place rounding)\n */\n export function fixRoundingError(premium: number) {\n // If the premium ends in \"01\" then we need to round it down\n if (premium % 100 === 1) {\n return premium - 1;\n }\n\n // If the premium ends in \"99\" then we need to round it up\n if (premium % 100 === 99) {\n return premium + 1;\n }\n\n return premium;\n}\n\nexport function calcPurchaseOptionPricing({ option, selectedEnhancements, brokerFee = 0 }: CalculationArguments) {\n const monthly = calculateMonthly({ option, selectedEnhancements });\n const annually = calculateAnnually({ option, selectedEnhancements, brokerFee });\n\n const monthlyWithGst = fixRoundingError(Math.round(addGst(monthly)));\n const annuallyWithGst = fixRoundingError(Math.round(addGst(annually)));\n\n return {\n monthly,\n annually,\n monthlyWithGst,\n annuallyWithGst,\n };\n}\n","import { Page, PageProps } from '@inertiajs/core';\nimport { usePage as inertiaUsePage } from '@inertiajs/react';\nimport { AuthContext, Breadcrumb, Environment } from '../types';\n\n/**\n * Add custom props here, that are defined in `app/Http/Middleware/HandleInertiaRequests.php`\n */\ntype CustomPageProps = {\n env: Environment;\n breadcrumbs?: Breadcrumb[];\n links: Record<string, string>;\n access_token?: string;\n impersonate_id?: number;\n csrf_token?: string;\n auth: AuthContext;\n} & PageProps;\n\n/**\n * A wrapper around Inertia's usePage function that gives better type-safety\n */\nexport function usePage<T>(): Page<CustomPageProps & T> {\n // @ts-ignore\n return inertiaUsePage();\n}\n","import React from 'react';\nimport { usePage } from './page';\n\ntype FetchOptions = {\n url: string;\n method?: 'GET' | 'POST' | 'PUT' | 'DELETE';\n params?: Record<string, any>;\n headers?: Record<string, string>;\n};\n\ntype FetcherFunction<T> = () => Promise<\n | {\n ok: false;\n message: string | undefined;\n data?: undefined;\n }\n | {\n ok: true;\n data?: T;\n message: string | undefined;\n }\n>;\n\n/**\n * A helper to return a fetch function including default headers and authorization.\n */\nexport function useFetch<T = any>({\n url: baseUrl,\n method = 'GET',\n params = {},\n headers = {},\n}: FetchOptions): FetcherFunction<T> {\n const { access_token } = usePage().props;\n\n let url = baseUrl;\n\n if (method === 'GET') {\n const queryParams = new URLSearchParams(params);\n url = `${url}?${queryParams.toString()}`;\n }\n\n return React.useMemo(\n () => async () => {\n const res = await fetch(url, {\n method,\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n Authorization: access_token ? `Bearer ${access_token}` : '',\n ...headers,\n },\n body: Object.keys(params).length > 0 && method !== 'GET' ? JSON.stringify(params) : null,\n });\n\n const { ok } = res;\n const body = await res.text();\n\n let parsedBody: T | string = body;\n\n try {\n parsedBody = JSON.parse(body) as T;\n } catch (error) {\n // Response wasn't JSON, just use the text version.\n }\n\n const message = typeof parsedBody === 'string' ? parsedBody : undefined;\n\n if (!ok) {\n return {\n ok,\n message,\n };\n }\n\n const data = typeof parsedBody !== 'string' ? parsedBody : undefined;\n\n return { ok, data, message };\n },\n [access_token, url, params, headers, method],\n );\n}\n","import React from 'react';\nimport { Link } from '@inertiajs/react';\n\ninterface Props {\n className?: string;\n href?: string;\n target?: '_blank' | '_self';\n onClick?: Function;\n type?: 'button' | 'submit';\n status?: 'primary' | 'danger' | 'warning' | 'info' | 'default';\n children: React.ReactNode;\n disabled?: boolean;\n as?: 'link' | 'button' | 'a';\n small?: boolean;\n}\n\nexport default function Button({\n className,\n href,\n target,\n onClick,\n type,\n children,\n status = 'default',\n disabled = false,\n as,\n small = false,\n}: Props) {\n const baseClasses = small\n ? 'font-bold text-sm inline-flex items-center gap-3 justify-center text-white text-center px-3 py-1 rounded min-w-[80px] transition-all hover:brightness-110'\n : 'font-black inline-flex items-center gap-3 justify-center text-white text-center px-5 py-2 rounded-md min-w-[120px] transition-all hover:brightness-110';\n\n const statusClass =\n (status === 'primary' && 'bg-teal') ||\n (status === 'danger' && 'bg-red-500') ||\n (status === 'warning' && 'bg-yellow-400') ||\n (status === 'info' && 'bg-blue-400') ||\n 'bg-gray-600';\n\n const classes = `${className ?? ''} ${baseClasses} ${statusClass}`;\n\n if (onClick) {\n return (\n <button\n className={classes}\n type={type ?? 'button'}\n onClick={(e: React.MouseEvent) => onClick(e)}\n disabled={disabled}\n >\n {children}\n </button>\n );\n }\n\n if (type) {\n return (\n <button className={classes} type={type ?? 'button'} disabled={disabled}>\n {children}\n </button>\n );\n }\n\n if (href) {\n if (href.includes('http') || target === '_blank' || as === 'a') {\n return (\n <a href={href} target={target ?? '_self'} className={classes}>\n {children}\n </a>\n );\n }\n\n return (\n <Link href={href} className={classes}>\n {children}\n </Link>\n );\n }\n\n return <p className=\"text-red-500 text-sm\">[Invalid button]</p>;\n}\n","import React from 'react';\n\ninterface Props {\n className?: string;\n children: React.ReactNode;\n}\n\nexport default function Card({ className, children }: Props) {\n return (\n <div className={`${className ?? ''} flex flex-col items-start bg-white rounded-md shadow-sm border border-gray-300 p-4 md:p-6`}>\n {children}\n </div>\n );\n}\n","import React from \"react\";\nimport { Link } from \"@inertiajs/react\";\nimport type { Meta } from \"../../types\";\n\ninterface Props {\n className?: string;\n meta: Meta;\n showPerPageSelector?: boolean;\n defaultValue?: number;\n}\n\nexport default function Pagination({ meta, className, showPerPageSelector = false, defaultValue }: Props) {\n const { current_page, total, per_page } = meta;\n\n const perPageValue = defaultValue ?? per_page;\n\n const page_count = Math.ceil(total / per_page);\n\n function getNextPageLink() {\n if (typeof window !== 'undefined') {\n const search = new URLSearchParams(window.location.search);\n search.set('page', String(current_page + 1));\n\n return `?${search.toString()}`;\n }\n\n return '';\n }\n\n function getPrevPageLink() {\n if (typeof window !== 'undefined') {\n const search = new URLSearchParams(window.location.search);\n search.set('page', String(current_page - 1));\n\n return `?${search.toString()}`;\n }\n\n return '';\n }\n\n const nextPageLink = getNextPageLink();\n const prevPageLink = getPrevPageLink();\n\n function handlePerPageChange(e: React.SyntheticEvent<HTMLSelectElement>) {\n const search = new URLSearchParams(window?.location.search);\n search.set('limit', e.currentTarget.value);\n search.set('page', '1');\n\n window.location.href = `?${search.toString()}`;\n }\n\n return (\n <div className={`${className ?? ''}`}>\n <nav className=\"font-bold flex justify-between items-center gap-6\">\n <Link href={prevPageLink} className=\"flex items-center gap-2\" disabled={current_page === 1}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"h-4 w-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M10 19l-7-7m0 0l7-7m-7 7h18\" />\n </svg>\n Prev\n </Link>\n <div className=\"flex gap-6 items-center\">\n <p>Page {current_page} of {page_count}</p>\n {showPerPageSelector ? (\n <select value={perPageValue} onChange={handlePerPageChange}>\n <option value=\"10\">10 per page</option>\n <option value=\"25\">25 per page</option>\n <option value=\"50\">50 per page</option>\n <option value=\"100\">100 per page</option>\n <option value=\"250\">250 per page</option>\n <option value=\"500\">500 per page</option>\n </select>\n ) : ''}\n </div>\n <Link href={nextPageLink} className=\"flex items-center gap-2\" disabled={current_page === page_count}>\n Next\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"h-4 w-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M14 5l7 7m0 0l-7 7m7-7H3\" />\n </svg>\n </Link>\n </nav>\n </div>\n )\n}\n","import React from 'react';\nimport { Link } from '@inertiajs/react';\nimport { Meta } from '../../types';\n\ninterface Props {\n className?: string;\n meta: Meta;\n showPerPageSelector?: boolean;\n defaultValue?: number;\n}\n\nexport default function SimplePagination({\n meta,\n className,\n showPerPageSelector = false,\n defaultValue,\n}: Props) {\n const { current_page, per_page, to, from } = meta;\n\n const perPageValue = defaultValue ?? per_page;\n\n const results_on_page = to - from + 1;\n const has_more_pages = results_on_page === per_page;\n\n function getNextPageLink() {\n if (typeof window !== 'undefined') {\n const search = new URLSearchParams(window.location.search);\n search.set('page', String(current_page + 1));\n\n return `?${search.toString()}`;\n }\n\n return '';\n }\n\n function getPrevPageLink() {\n if (typeof window !== 'undefined') {\n const search = new URLSearchParams(window.location.search);\n search.set('page', String(current_page - 1));\n\n return `?${search.toString()}`;\n }\n\n return '';\n }\n\n const nextPageLink = getNextPageLink();\n const prevPageLink = getPrevPageLink();\n\n function handlePerPageChange(e: React.SyntheticEvent<HTMLSelectElement>) {\n const search = new URLSearchParams(window?.location.search);\n search.set('limit', e.currentTarget.value);\n search.set('page', '1');\n\n window.location.href = `?${search.toString()}`;\n }\n\n return (\n <div className={`${className ?? ''}`}>\n <nav className=\"font-bold flex justify-between items-center gap-6\">\n <Link\n href={prevPageLink}\n className=\"flex items-center gap-2\"\n disabled={current_page === 1}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-4 w-4\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M10 19l-7-7m0 0l7-7m-7 7h18\"\n />\n </svg>\n Prev\n </Link>\n <div className=\"flex gap-6 items-center\">\n <p>Page {current_page}</p>\n {showPerPageSelector ? (\n <select value={perPageValue} onChange={handlePerPageChange}>\n <option value=\"10\">10 per page</option>\n <option value=\"25\">25 per page</option>\n <option value=\"50\">50 per page</option>\n <option value=\"100\">100 per page</option>\n <option value=\"250\">250 per page</option>\n <option value=\"500\">500 per page</option>\n </select>\n ) : (\n ''\n )}\n </div>\n <Link\n href={nextPageLink}\n className=\"flex items-center gap-2\"\n disabled={!has_more_pages}\n >\n Next\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-4 w-4\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M14 5l7 7m0 0l-7 7m7-7H3\"\n />\n </svg>\n </Link>\n </nav>\n </div>\n );\n}\n","import React from 'react';\nimport { Transition } from '@headlessui/react';\nimport type { Toast } from '../../types';\nimport { useToast } from '../../lib/toast';\n\nexport default function ToastItem({ _id = '', message, status = 'default' }: Toast) {\n const { removeToast } = useToast();\n\n const defaultClasses = 'w-full min-w-[250px] p-4 shadow flex justify-between items-center font-black rounded-md not:';\n\n const statusClasses = status === 'success' && 'bg-teal text-white'\n || status === 'error' && 'bg-red-500 text-white'\n || status === 'warning' && 'bg-yellow-400 text-white'\n || 'bg-white text-asphalt';\n\n const classes = `${defaultClasses} ${statusClasses}`;\n\n function handleClick() {\n removeToast(_id);\n }\n\n return (\n <Transition\n show={true}\n appear={true}\n enter=\"transition-all duration-300\"\n enterFrom=\"opacity-0 translate-y-4\"\n enterTo=\"opacity-100 translate-y-0\"\n leave=\"transition-all duration-300\"\n leaveFrom=\"opacity-100 translate-y-0\"\n leaveTo=\"opacity-0 translate-y-2\"\n >\n <div className={classes}>\n <p>{message}</p>\n <button className=\"\" onClick={handleClick} title=\"Close message\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n className=\"h-6 w-6\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </button>\n </div>\n </Transition>\n )\n}\n","import React from 'react';\nimport type { Toast } from \"../../types\";\nimport { useToast } from \"../../lib/toast\";\nimport ToastItem from \"./ToastItem\";\n\nexport default function Toasts() {\n const { toasts } = useToast();\n\n return (\n <div className=\"fixed bottom-4 right-4 z-[120] flex flex-col gap-6\">\n {toasts.map((toast: Toast) => (\n <ToastItem {...toast} key={toast._id} />\n ))}\n </div>\n );\n}\n","import React from 'react';\nimport { Fragment } from 'react';\nimport { Dialog, Transition } from '@headlessui/react';\n\ninterface Props {\n children: React.ReactNode;\n isActive?: boolean;\n onClose: () => void;\n title?: string;\n width?: string;\n className?: string;\n}\n\nexport default function Modal({ children, isActive = false, onClose, title, width = '', className = '' }: Props) {\n return (\n <Transition.Root show={isActive} as={Fragment}>\n <Dialog as=\"div\" className=\"fixed z-[110] inset-0 overflow-y-auto\" onClose={onClose}>\n <div className=\"flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0\">\n <Transition.Child\n as={Fragment}\n enter=\"ease-out duration-300\"\n enterFrom=\"opacity-0\"\n enterTo=\"opacity-100\"\n leave=\"ease-in duration-200\"\n leaveFrom=\"opacity-100\"\n leaveTo=\"opacity-0\"\n >\n <Dialog.Overlay className=\"fixed inset-0 bg-gray-500 bg-opacity-75 transition-opacity\" />\n </Transition.Child>\n\n <Transition.Child\n as={Fragment}\n enter=\"ease-out duration-300\"\n enterFrom=\"opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95\"\n enterTo=\"opacity-100 translate-y-0 sm:scale-100\"\n leave=\"ease-in duration-200\"\n leaveFrom=\"opacity-100 translate-y-0 sm:scale-100\"\n leaveTo=\"opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95\"\n >\n <div className={`${className} w-full align-start inline-block bg-white rounded-lg px-4 pt-5 pb-4 text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-7xl sm:p-6 ${width}`}>\n <div className={`flex gap-4 mb-4 text-asphalt ${title ? 'border-b-2 border-asphalt pb-4' : ''}`}>\n {title && <h3 className=\"font-black text-lg\">{title}</h3>}\n <button type=\"button\" onClick={onClose} className=\"ml-auto transition-all hover:opacity-50\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"h-6 w-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={2}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n </div>\n <div>{children}</div>\n </div>\n </Transition.Child>\n </div>\n </Dialog>\n </Transition.Root>\n );\n}\n","import React from 'react';\n\ninterface Props extends React.DetailedHTMLProps<React.TableHTMLAttributes<HTMLTableElement>, HTMLTableElement> {\n children: React.ReactNode;\n}\n\nexport default function Table({ children, ...props }: Props) {\n return (\n <div className=\"-my-2 -mx-4 overflow-x-auto sm:-mx-6 lg:-mx-8 text-sm\">\n <div className=\"inline-block min-w-full py-2 align-middle md:px-6 lg:px-8\">\n <div className=\"overflow-hidden shadow ring-1 ring-black ring-opacity-5 md:rounded-lg\">\n <table {...props} className=\"min-w-full divide-y divide-gray-300\">\n {children}\n </table>\n </div>\n </div>\n </div>\n )\n}\n","import React from 'react';\n\ninterface Props {\n children: React.ReactNode;\n className?: string;\n}\n\nexport default function TableActions({ children, className = '' }: Props) {\n return (\n <div className={`${className} flex gap-4 justify-end items-center`}>\n {children}\n </div>\n )\n}\n","import cn from 'classnames';\nimport React from 'react';\n\ninterface Props extends React.DetailedHTMLProps<React.HTMLAttributes<HTMLTableSectionElement>, HTMLTableSectionElement> {\n children: React.ReactNode;\n className?: string;\n}\n\nexport default function TableBody({ children, className, ...props }: Props) {\n return (\n <tbody {...props} className={cn(className, 'divide-y divide-gray-200 bg-white')}>\n {children}\n </tbody>\n )\n}\n","import React from 'react';\nimport cn from 'classnames';\n\ninterface Props extends React.DetailedHTMLProps<React.TdHTMLAttributes<HTMLTableDataCellElement>, HTMLTableDataCellElement> {\n children: React.ReactNode;\n className?: string;\n condensed?: true;\n}\n\nexport default function TableCell({ children, className, condensed, ...props }: Props) {\n return (\n <td {...props} className={cn(className, 'px-3 py-3 text-sm text-gray-500', {\n 'w-0 whitespace-nowrap': condensed,\n })}>\n {children}\n </td>\n )\n}\n","import React from 'react';\nimport cn from 'classnames';\n\ninterface Props extends React.DetailedHTMLProps<React.HTMLAttributes<HTMLTableSectionElement>, HTMLTableSectionElement> {\n children: React.ReactNode;\n className?: string;\n}\n\nexport default function TableHead({ children, className, ...props }: Props) {\n return (\n <thead {...props} className={cn(className, 'px-3 py-4 text-sm text-white bg-gray-600')}>\n {children}\n </thead>\n )\n}\n","import React from 'react';\nimport { Link } from '@inertiajs/react';\nimport cn from 'classnames';\n\ninterface Props extends React.DetailedHTMLProps<React.ThHTMLAttributes<HTMLTableHeaderCellElement>, HTMLTableHeaderCellElement> {\n children: React.ReactNode;\n className?: string;\n textAlign?: 'left' | 'right' | 'center';\n sort?: string;\n condensed?: true;\n}\n\nexport default function TableHeader({\n children,\n className = '',\n sort,\n textAlign = 'left',\n condensed,\n ...props\n}: Props) {\n const [sortLink, setSortLink] = React.useState<string>('');\n\n React.useEffect(() => {\n if (typeof window !== 'undefined' && sort) {\n const query = new URLSearchParams(window.location.search);\n\n let direction: 'asc' | 'desc' = 'asc';\n\n if (query.get('sort')) {\n // Choose the opposite direction for sorting\n direction = query.get('sort')?.includes('asc') ? 'desc' : 'asc';\n }\n\n query.set('sort', `${sort} ${direction}`);\n\n setSortLink(`?${query.toString()}`);\n }\n }, []);\n\n const textAlignClass =\n (textAlign === 'center' && 'text-center justify-center') ||\n (textAlign === 'right' && 'text-right justify-end') ||\n 'text-left justify-between';\n\n return (\n <th {...props} className={cn(className, 'py-3.5 px-3 text-sm font-semibold text-left', {\n 'w-0 whitespace-nowrap': condensed,\n })}>\n <div className={`flex items-center gap-3 ${textAlignClass}`}>\n {children}\n {sort && (\n <Link href={sortLink}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-5 w-5\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M8 9l4-4 4 4m0 6l-4 4-4-4\"\n />\n </svg>\n </Link>\n )}\n </div>\n </th>\n );\n}\n","import React from 'react';\nimport cn from 'classnames';\n\ninterface Props extends React.DetailedHTMLProps<React.HTMLAttributes<HTMLTableRowElement>, HTMLTableRowElement> {\n children: React.ReactNode;\n className?: string;\n onClick?: (e?: React.SyntheticEvent) => void;\n}\n\nexport default function TableRow({ children, className = '', onClick = () => {}, ...props }: Props) {\n const bgClass = className.includes('bg') ? '' : 'bg-white even:bg-gray-50'\n\n return (\n <tr {...props} className={cn(className, bgClass, 'hover:bg-gray-100')} onClick={(e) => onClick(e)}>\n {children}\n </tr>\n )\n}\n","import React from 'react';\nimport { calculateAge } from '../../lib';\nimport { padStart } from 'lodash';\n\ninterface Props {\n name?: string;\n id?: string;\n onChange: (dateString: string) => void;\n value?: string;\n maxYear?: number;\n showAge?: boolean;\n isRequired?: boolean;\n}\n\nexport default function DateOfBirthField({\n name = 'dob',\n id = 'dob',\n onChange,\n value,\n maxYear = 0,\n showAge = false,\n isRequired = true\n}: Props) {\n const dayOptions = [...Array.from(Array(31).keys())].map(value => {\n return padStart(`${value + 1}`, 2, '0');\n });\n\n const months = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ];\n const monthOptions = [...Array.from(Array(12).keys())].map(value => {\n return {\n title: months[value],\n value: padStart(`${value + 1}`, 2, '0'),\n };\n });\n\n // Create 100 years of options, subtracting the maximum year if provided\n const yearOptions = [...Array.from(Array(100).keys())].map(value => {\n return maxYear ? maxYear - value : new Date().getFullYear() - value;\n });\n\n function handleChange(\n e: React.ChangeEvent<\n HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement\n >\n ) {\n const { name, value } = e.currentTarget;\n\n let y = name.includes('year') ? value : year;\n let m = name.includes('month') ? value : month;\n let d = name.includes('day') ? value : day;\n\n onChange(`${y}-${m}-${d}`);\n }\n\n const [year, month, day] = value ? value.split('-') : ['', '', ''];\n const isValidDate =\n year && month && day && !isNaN(Date.parse(`${year}-${month}-${day}`));\n\n const styleReq = {\n backgroundPosition: 'top 10px right 3px, center right 10px',\n }\n\n const style = {\n backgroundPosition: 'right 0.5rem center',\n paddingRight: '1.5rem'\n }\n\n return (\n <span className=\"flex flex-col gap-2\">\n <span className=\"flex w-full border border-gray-300 rounded-lg bg-white\">\n <select\n name={`${name}_day`}\n id={`${id}_day`}\n value={day}\n className=\"flex-grow focus:outline-none border-0 !mr-[3px] lg:pl-4 xl:pl-2\"\n onChange={handleChange}\n required={isRequired}\n style={isRequired ? styleReq : style}\n >\n <option value=\"\">Day</option>\n {dayOptions.map(option => (\n <option key={option} value={option}>\n {option}\n </option>\n ))}\n </select>\n <select\n name={`${name}_month`}\n id={`${id}_month`}\n value={month}\n className=\"flex-grow focus:outline-none border-0 !mr-[3px] lg:pl-4 xl:pl-2\"\n onChange={handleChange}\n required={isRequired}\n style={isRequired ? styleReq : style}\n >\n <option value=\"\">Month</option>\n {monthOptions.map(option => (\n <option key={option.value} value={option.value}>\n {option.title}\n </option>\n ))}\n </select>\n <select\n name={`${name}_year`}\n id={`${id}_year`}\n value={year}\n className=\"flex-grow focus:outline-none border-0 !mr-[3px] lg:pl-4 xl:pl-2\"\n onChange={handleChange}\n required={isRequired}\n style={isRequired ? styleReq : style}\n >\n <option value=\"\">Year</option>\n {yearOptions.map(option => (\n <option key={option} value={option}>\n {option}\n </option>\n ))}\n </select>\n </span>\n {showAge && value && isValidDate && (\n <span className=\"font-bold\">Age: {calculateAge(value)} years</span>\n )}\n </span>\n );\n}\n","import React from 'react';\nimport { formatMoney, formatNumber } from \"../../lib\";\n\ninterface Props {\n value?: number;\n onChange: (value: number) => void;\n id?: string;\n name?: string;\n className?: string;\n required?: boolean;\n}\n\nexport default function MoneyField({ value = 0, onChange, name = 'value', id = 'value', className = '', required = false }: Props) {\n function handleChange(e: React.SyntheticEvent<HTMLInputElement>) {\n let newValue: number = 0;\n\n if (e.currentTarget.value) {\n newValue = formatNumber(e.currentTarget.value);\n\n if (isNaN(newValue)) {\n newValue = 0;\n }\n }\n\n onChange(newValue);\n }\n\n const displayValue = formatMoney(value, 0);\n\n return (\n <div className={`${className} flex items-center gap-2 pl-4 rounded-md border border-gray-300 transition-all focus-within:border-teal focus-within:outline-none focus-within:ring focus-within:ring-teal focus-within:ring-opacity-50`}>\n <span className=\"font-bold pr-2\">$</span>\n <input\n type=\"text\"\n name={name}\n id={id}\n value={displayValue}\n onChange={handleChange}\n className=\"w-full !focus:outline-none !focus:ring-0 !focus:ring-transparent !focus:ring-opacity-0 !ring-0 !border-0 !transition-none !rounded-l-none\"\n required={required}\n />\n </div>\n );\n\n}\n","import React from 'react';\nimport { sanitiseVehicleType } from '../../lib';\nimport {\n ApiResponse,\n FormStatus,\n MotorwebVehicleResponse,\n VehicleType,\n} from '../../types';\nimport { useToast } from '../../lib/toast';\nimport cn from 'classnames';\n\nexport interface VehicleData extends MotorwebVehicleResponse {\n make: string;\n model: string;\n year: string;\n vehicle_type: VehicleType;\n is_heavy: boolean;\n}\n\nexport interface RegistrationSearchOnChange {\n registration: string;\n}\n\ninterface Props {\n name?: string;\n onChange?: (values: RegistrationSearchOnChange) => void;\n onVehicleDataFound: (vehicleData: VehicleData) => void;\n apiUrl?: string;\n showOdometerReadingField?: boolean;\n showConditionField?: boolean;\n initialRegistrationValue?: string;\n outerClassName?: string;\n odoInputClassName?: string;\n conditionSelectClassName?: string;\n regoInputClassName?: string;\n searchBtnClassName?: string;\n}\n\nexport const conditionOptions = [\n 'POOR',\n 'FAIR',\n 'AVERAGE',\n 'GOOD',\n 'VERY_GOOD',\n 'AS_NEW',\n 'NEW',\n];\n\nexport default function RegistrationSearchField({\n name = 'registration_search',\n initialRegistrationValue = '',\n onVehicleDataFound,\n apiUrl = '/api/rego-search',\n showOdometerReadingField = false,\n showConditionField = false,\n onChange,\n outerClassName,\n odoInputClassName,\n conditionSelectClassName,\n regoInputClassName,\n searchBtnClassName,\n}: Props) {\n const [rego, setRego] = React.useState<string>(initialRegistrationValue);\n const [odo, setOdo] = React.useState<string>('');\n const [condition, setCondition] = React.useState<string>('GOOD');\n\n const [status, setStatus] = React.useState<FormStatus>('idle');\n const { addToast } = useToast();\n\n function handleChange(\n e: React.SyntheticEvent<HTMLInputElement | HTMLSelectElement>\n ) {\n if (e.currentTarget.name === name) {\n setRego(e.currentTarget.value?.toUpperCase() || '');\n }\n\n if (e.currentTarget.name === 'odo_search') {\n setOdo(e.currentTarget.value);\n }\n\n if (e.currentTarget.name === 'condition_search') {\n setCondition(e.currentTarget.value);\n }\n\n if (onChange) {\n onChange({ registration: e.currentTarget.value.toUpperCase() });\n }\n }\n\n function handleKeydown(e: React.KeyboardEvent) {\n if (e.key === 'Enter') {\n handleSearch();\n }\n }\n\n async function handleSearch() {\n setStatus('processing');\n\n const payload = {\n registration: rego,\n odometerReading: odo,\n condition,\n };\n\n // Turn the payload in to a query string\n // @ts-ignore\n const query = new URLSearchParams(payload).toString();\n\n const res = await fetch(`${apiUrl}?${query}`, {\n headers: { 'Content-Type': 'application/json' },\n });\n\n if (!res.ok) {\n addToast({\n message: `There was an error with the provided registration.`,\n status: 'error',\n timeout: 3000,\n });\n setStatus('error');\n return;\n }\n\n const { data, ok }: ApiResponse<MotorwebVehicleResponse> = await res.json();\n\n if (!ok || !data) {\n addToast({\n message: `Failed to find vehicle, please complete manually.`,\n status: 'error',\n timeout: 3000,\n });\n setStatus('error');\n return;\n }\n\n const vehicleData = data.data.vehicle;\n\n const make = vehicleData.make;\n const model = vehicleData.model;\n const year = vehicleData['year-of-manufacture'];\n const weight = vehicleData['gross-vehicle-mass']\n ? parseInt(vehicleData['gross-vehicle-mass'].replaceAll(',', ''))\n : 0;\n const vehicleType = vehicleData['vehicle-type'];\n\n if (!make || !model || !year || !vehicleType) {\n addToast({\n message: `We couldn't find all of your data, please complete manually.`,\n status: 'error',\n timeout: 3000,\n });\n setStatus('error');\n }\n\n onVehicleDataFound({\n ...data,\n make: make || '',\n model: model || '',\n year: year || '',\n vehicle_type: vehicleType ? sanitiseVehicleType(vehicleType) : 'car',\n is_heavy: (weight && weight > 3500) || false,\n });\n\n setStatus('success');\n }\n\n return (\n <div className=\"w-full flex flex-col\">\n <div className={cn(outerClassName, \"w-full flex flex-wrap gap-3 bg-gray-100 rounded-md p-3\")}>\n {showOdometerReadingField ||\n (showConditionField && (\n <div className=\"w-full grid grid-cols-2 gap-3\">\n {showOdometerReadingField && (\n <label>\n Approx. km travelled\n <input\n onKeyDown={handleKeydown}\n type=\"number\"\n name=\"odo_search\"\n id=\"odo_search\"\n value={odo}\n onChange={handleChange}\n className={cn(odoInputClassName, \"transition-all\", {\n 'pointer-events-none opacity-50': status === 'processing',\n })}\n disabled={status === 'processing'}\n />\n </label>\n )}\n\n {showConditionField && (\n <label>\n Vehicle condition\n <select\n name=\"condition_search\"\n id=\"condition_search\"\n value={condition}\n onChange={handleChange}\n className={cn(conditionSelectClassName, \"transition-all\", {\n 'pointer-events-none opacity-50': status === 'processing',\n })}\n disabled={status === 'processing'}\n >\n {conditionOptions.map(conditionOption => (\n <option key={conditionOption}>{conditionOption}</option>\n ))}\n </select>\n </label>\n )}\n </div>\n ))}\n\n <input\n onKeyDown={handleKeydown}\n placeholder=\"Search for your rego\"\n type=\"text\"\n name={name}\n id={name}\n value={rego}\n onChange={handleChange}\n className={cn(regoInputClassName, \"flex-grow transition-all\", {\n 'pointer-events-none opacity-50': status === 'processing',\n })}\n disabled={status === 'processing'}\n />\n\n <button\n title=\"Search\"\n type=\"button\"\n onClick={handleSearch}\n disabled={status === 'processing'}\n className={cn(searchBtnClassName, \"bg-teal px-4 py-3 rounded-md transition-all\")}\n >\n <span className=\"sr-only\">Search</span>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-5 w-5 text-white\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"\n />\n </svg>\n </button>\n </div>\n </div>\n );\n}\n","import React from 'react';\nimport { Button } from '../common';\nimport { useQuoteRequestForm } from '../../lib';\n\ninterface Props {\n populatePurchaseOptions: boolean;\n}\n\nexport default function FormTester({ populatePurchaseOptions = false }: Props) {\n const { form } = useQuoteRequestForm();\n const [keys, setKeys] = React.useState<string[]>([]);\n const [isDev, setDev] = React.useState<boolean>(false);\n\n function handlePopulate() {\n form?.setData(prevData => ({\n ...prevData,\n first_name: 'TEST',\n last_name: 'TEST',\n email: 'dev@sual.co.nz',\n phone: '021 234 5678',\n mobile: '021 234 5678',\n dob: '1990-01-01',\n licence: 'Other',\n licence_other: 'Test',\n club_id: 50,\n club_membership_number: '12345',\n street_address: {\n address: '123 Street Name',\n unit: 'Level 1',\n suburb: 'Suburb',\n city: 'Auckland',\n post_code: '1234',\n },\n promo_code: 'TEST',\n declaration: {\n had_incident: true,\n incidents: [\n {\n description: 'Lorem ipsum dolor sit amet.',\n month: 'January',\n year: '2020',\n },\n ],\n has_demerit_points: true,\n demerit_points: '1-24',\n has_lost_licence: true,\n lost_licence_details: 'Lorem ipsum dolor sit amet.',\n was_refused_insurance: true,\n refused_insurance_details: 'Lorem ipsum dolor sit amet.',\n has_criminal_conviction: true,\n criminal_conviction_details: 'Lorem ipsum dolor sit amet.',\n has_vehicle_modifications: true,\n vehicle_modifications_details: 'Lorem ipsum dolor sit amet.',\n has_previous_insurer: true,\n previous_insurer_details: 'AA',\n previous_insurer_expires_at: '2020-01-01',\n additional_details:\n 'I am a robot, beep boop. Please ignore this submission.',\n },\n vehicles: [\n {\n make: 'Tesla',\n model: 'Cybertruck',\n year: '2023',\n registration: 'ELMUSK',\n vehicle_type: 'car',\n product: 'star-enthusiast-prestige-everyday-plus',\n value: 100000,\n is_heavy: false,\n usage: 'Childrens car',\n storage_location: 'Carport',\n has_financially_interested_party: true,\n financially_interested_party_detail: 'MTA',\n owned_duration: 'Less than 12 months',\n main_driver: 'TEST TEST',\n drivers: [\n {\n first_name: 'X Æ',\n last_name: 'A-12',\n dob: '2000-05-04',\n licence: 'Other',\n licence_other: 'None',\n relationship: 'Child',\n key: 'driver-test-key',\n },\n ],\n key: 'vehicle-test-key',\n },\n ],\n purchase_options: populatePurchaseOptions\n ? [\n {\n premium_type: 'annual',\n level_of_insurance_id: 12,\n authorised_drivers: 'TEST',\n excess_details: 'TEST',\n terms: 'TEST',\n description: 'This is a test purchase option',\n premium: 100000,\n monthly_premium: 8500,\n show_monthly: true,\n fsl: 100,\n sort_order: 1,\n enhancements: [\n {\n name: 'Test enhancement',\n premium: 2500,\n disable_rounding: false,\n description: 'Test enhancement',\n auto_select: true,\n key: 'enhancement-test-key-1',\n },\n {\n name: 'Test enhancement',\n premium: 5000,\n disable_rounding: false,\n description: 'Test enhancement',\n auto_select: false,\n key: 'enhancement-test-key-2',\n },\n ],\n key: 'purchase-option-test-key-annual',\n },\n {\n premium_type: 'total-due',\n level_of_insurance_id: 13,\n authorised_drivers: 'TEST',\n excess_details: 'TEST',\n terms: 'TEST',\n description: 'This is a test purchase option',\n premium: 100000,\n show_monthly: false,\n fsl: 100,\n sort_order: 2,\n enhancements: [\n {\n name: 'Test enhancement',\n premium: 2500,\n disable_rounding: false,\n description: 'Test enhancement',\n auto_select: true,\n key: 'enhancement-test-key-3',\n },\n {\n name: 'Test enhancement',\n premium: 5000,\n disable_rounding: false,\n description: 'Test enhancement',\n auto_select: false,\n key: 'enhancement-test-key-4',\n },\n ],\n key: 'purchase-option-test-key-total-due',\n },\n ]\n : [],\n }));\n }\n\n function handleKeydown(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n return setKeys([]);\n }\n\n setKeys(prevKeys => [...prevKeys, e.key]);\n }\n\n React.useEffect(() => {\n // Detect when the user has typed the word \"debug\"\n if (keys.join('') === 'debug') {\n handlePopulate();\n }\n }, [keys]);\n\n React.useEffect(() => {\n if (typeof window !== 'undefined') {\n if (\n window.location.href.includes('dev') ||\n window.location.href.includes('localhost') ||\n window.location.href.includes('test') ||\n window.location.href.includes('local')\n ) {\n setDev(true);\n }\n\n window.addEventListener('keydown', (e: KeyboardEvent) =>\n handleKeydown(e)\n );\n\n return () => {\n window.removeEventListener('keydown', (e: KeyboardEvent) =>\n handleKeydown(e)\n );\n };\n }\n\n return;\n }, []);\n\n if (isDev) {\n return (\n <Button\n onClick={handlePopulate}\n type=\"button\"\n status=\"primary\"\n className=\"fixed bottom-4 right-4\"\n >\n Populate data\n </Button>\n );\n }\n\n return <></>;\n}\n","import React from 'react';\nimport { ErrorBag, Errors } from '@inertiajs/core';\nimport { Card } from '../common';\n\ninterface Props {\n heading?: string;\n errors?: Errors & ErrorBag;\n renderKeys?: boolean;\n className?: string;\n}\n\nexport default function ErrorList({\n heading = 'There was an error with your submission.',\n errors = {},\n renderKeys = false,\n className = '',\n}: Props) {\n if (Object.values(errors).length === 0) {\n return <></>;\n }\n\n return (\n <aside className={`${className} col-span-full`}>\n <Card className=\"border border-red-500 !bg-red-50\">\n <h2 className=\"font-black text-red-500 mb-2\">{heading}</h2>\n <ul className=\"space-y-2 list-disc ml-4\">\n {Object.entries(errors).map(([field, message]) => (\n <li className=\"font-bold text-red-500\" key={field}>\n {renderKeys && <strong>{field}: </strong>}\n {message}\n </li>\n ))}\n </ul>\n </Card>\n </aside>\n );\n}\n","import { Link } from \"@inertiajs/react\";\nimport React from \"react\";\nimport { HiArrowLeft } from \"react-icons/hi2\";\nimport { usePage } from \"../../lib/page\";\nimport cn from 'classnames';\n\nexport function BackButton({ back, className }: { back?: string | boolean; className?: string; }) {\n const [backUrl, setBackUrl] = React.useState<string | undefined>(typeof back === 'string' ? back : undefined);\n const { breadcrumbs } = usePage().props;\n\n /**\n * Set the back URL on mount\n */\n React.useEffect(() => {\n if (typeof window !== 'undefined') {\n if (!breadcrumbs) return;\n // Set back button URL\n if (back && typeof back === 'boolean') {\n // If we haven't provided a path as a prop, use the last breadcrumb that's not the current one\n const crumb = breadcrumbs.slice(breadcrumbs.length - 2, breadcrumbs.length - 1);\n if (crumb && crumb.length === 1) {\n // Strip off everything but the path so the <Link> component works\n const url = crumb[0].url;\n if (url) {\n setBackUrl(new URL(url).pathname);\n }\n }\n }\n }\n }, [breadcrumbs]);\n\n return (\n <Link href={backUrl || '/'} className={cn(className, 'flex items-center justify-center hover:text-teal transition-all')}>\n <HiArrowLeft className=\"h-5 w-5 stroke-[1.25]\" />\n </Link>\n );\n}","import { router } from \"@inertiajs/react\";\nimport React from \"react\";\nimport { HiMagnifyingGlass, HiXMark } from \"react-icons/hi2\";\nimport { useClickOutside } from \"../../lib\";\n\ninterface Props {\n search?: string;\n active: boolean;\n onActive: Function;\n placeholder?: string;\n focusSearchShortcut?: boolean;\n}\n\nexport default function SearchBar({ search, active, onActive, placeholder, focusSearchShortcut = false }: Props) {\n const [query, setQuery] = React.useState<string>('');\n\n const searchRef = React.useRef<HTMLDivElement | null>(null);\n\n /**\n * Populate search input on load\n */\n React.useEffect(() => {\n if (typeof window !== 'undefined') {\n // Populate search\n const search = new URLSearchParams(window.location.search);\n\n const q = search.get('search') as string;\n\n if (q) {\n setQuery(q);\n onActive(true);\n }\n }\n\n const listener = (e: KeyboardEvent) => {\n if (focusSearchShortcut && e.key === '/') {\n e.preventDefault();\n onActive(true);\n }\n\n if (e.key === 'Escape') {\n onActive(false);\n }\n };\n\n window.addEventListener('keydown', listener);\n\n return () => {\n window.removeEventListener('keydown', listener);\n };\n }, [focusSearchShortcut]);\n\n /**\n * Minimise the search bar on click outside if there's no search query\n */\n useClickOutside(searchRef, () => {\n if (!query) {\n onActive(false);\n }\n });\n\n /**\n * Handle the search function\n */\n function handleSearch(e?: React.FormEvent, queryOverride?: string) {\n e?.preventDefault();\n\n if (typeof search !== 'string') return;\n\n let path: string = search;\n if (path[0] !== '/') {\n path = `/${path}`;\n }\n\n const params = new URLSearchParams(window?.location.search);\n params.set('search', queryOverride ?? query);\n params.set('page', '1');\n\n router.get(`${path}?${params.toString()}`);\n }\n\n return (\n <div ref={searchRef} className=\"\">\n {!active && (\n <button\n title=\"Open Search Bar\"\n type=\"button\"\n onClick={() => onActive(true)}\n className=\"flex items-center justify-center rounded-full hover:text-teal p-1 hover:bg-gray-100\"\n >\n <HiMagnifyingGlass className=\"h-5 w-5 stroke-[1.25]\" />\n </button>\n )}\n {active && (\n <form\n onSubmit={handleSearch}\n className=\"group flex items-center gap-2 rounded-full bg-white pr-4 pl-1 shadow transition-all focus-within:outline-none focus-within:ring-1 focus-within:ring-teal\"\n >\n <input\n type=\"text\"\n name=\"search\"\n id=\"search\"\n value={query}\n onChange={(e) => setQuery(e.currentTarget.value || '')}\n className=\"!focus:border-0 !border-0 !bg-transparent !shadow-none !ring-opacity-0 !transition-none placeholder:text-gray-400 !py-1.5 text-sm\"\n autoFocus\n placeholder={placeholder}\n />\n {query && (\n <button\n type=\"button\"\n title=\"Clear Search\"\n onClick={() => {\n setQuery('');\n handleSearch(undefined, '');\n }}\n >\n <HiXMark className=\"h-5 w-5\" />\n </button>\n )}\n <button type=\"submit\">\n <HiMagnifyingGlass className=\"h-5 w-5\" />\n </button>\n </form>\n )}\n </div>\n );\n}\n","import React from \"react\";\nimport { Tooltip } from 'react-tooltip';\nimport { Link, router } from \"@inertiajs/react\";\nimport { TPageHeaderAction } from \"../../types\";\nimport {useClickOutside} from \"../../lib\";\n\nexport default function Action({ title, href, as = 'Link', target = '_self', type, onClick = () => {}, shortcutKey, actions }: TPageHeaderAction) {\n const className =\n 'bg-white rounded-full font-bold px-4 py-1.5 text-sm whitespace-nowrap hover:bg-gray-100 hover:border-gray-400 transition-colors border border-gray-300';\n\n const tooltipId = `action-${title}`;\n const tooltipContent = shortcutKey ? `Ctrl + ${shortcutKey}` : undefined;\n\n const actionButtonRef = React.useRef(null);\n const isActionsButton = actions && actions.length > 0;\n const actionsButtonClassName = 'relative cursor-pointer ' + className;\n const [isInnerActionVisible, setIsInnerActionVisible] = React.useState(false);\n\n const toggleActionsMenu = () => {\n setIsInnerActionVisible(!isInnerActionVisible);\n };\n\n useClickOutside(actionButtonRef, () => setIsInnerActionVisible(false));\n\n function runAction() {\n if (as === 'Link' && href) {\n return router.get(href);\n }\n\n if (as === 'a' && href) {\n return window.location.href = href;\n }\n\n onClick();\n };\n\n React.useEffect(() => {\n if (typeof window === 'undefined') return;\n if (!shortcutKey) return;\n\n const listener = (e: KeyboardEvent) => {\n // Check if Ctrl (Windows) or Cmd (Mac) key is pressed\n const isCtrlOrCmdPressed = (e.ctrlKey || e.metaKey);\n\n // Check if the focus is on an input element or inside a form\n const isInInput = e.target instanceof HTMLInputElement || e.target instanceof HTMLTextAreaElement || e.target instanceof HTMLSelectElement;\n const isInForm = (e.target instanceof Element && e.target.closest('form'));\n\n if (isCtrlOrCmdPressed && !isInInput && !isInForm && e.key === shortcutKey) {\n e.preventDefault();\n runAction();\n }\n };\n\n window.addEventListener('keydown', listener);\n\n return () => {\n window.removeEventListener('keydown', listener);\n };\n }, [shortcutKey]);\n\n if (isActionsButton) {\n return (\n <>\n {tooltipContent && <Tooltip id={tooltipId} className=\"z-10\" />}\n <div\n ref={actionButtonRef}\n data-tooltip-id={tooltipId}\n data-tooltip-content={tooltipContent}\n className={actionsButtonClassName}\n onClick={toggleActionsMenu}>\n {title}\n {isInnerActionVisible && (\n <div className=\"absolute top-[120%] right-[-20%] z-10\">\n <div className=\"flex flex-col gap-2 bg-white rounded-lg shadow-xl p-3\">\n {actions && actions.map((action, index) => {\n if (action.hidden) return null;\n\n return (\n <Action\n key={index}\n title={action.title}\n as={action.as}\n href={action.href}\n target={action.target}\n onClick={action.onClick}\n type={'button'}\n />\n );\n })}\n </div>\n </div>\n )}\n </div>\n </>\n );\n }\n\n if (as === 'Link' && href) {\n return (\n <>\n {tooltipContent && <Tooltip id={tooltipId} className=\"z-10\" />}\n <Link data-tooltip-id={tooltipId} data-tooltip-content={tooltipContent} className={className} href={href} onClick={() => onClick()}>\n {title}\n </Link>\n </>\n );\n }\n\n if (as === 'a' && href) {\n return (\n <>\n {tooltipContent && <Tooltip id={tooltipId} className=\"z-10\" />}\n <a data-tooltip-id={tooltipId} data-tooltip-content={tooltipContent} className={className} target={target} href={href} onClick={() => onClick()}>\n {title}\n </a>\n </>\n );\n }\n\n return (\n <>\n {tooltipContent && <Tooltip id={tooltipId} className=\"z-10\" />}\n <button data-tooltip-id={tooltipId} data-tooltip-content={tooltipContent} className={className} type={type} onClick={() => onClick()}>\n {title}\n </button>\n </>\n );\n}\n","import React from \"react\";\n\nimport { useClickOutside } from \"../../lib\";\n\ntype Props = {\n onClose: Function;\n active: boolean;\n title: React.ReactNode;\n children: React.ReactNode;\n}\n\nfunction Dropdown({ onClose, active, title, children }: Props) {\n const ref = React.useRef<HTMLDivElement | null>(null);\n const innerRef = React.useRef<HTMLDivElement | null>(null);\n\n useClickOutside(ref, () => onClose(false));\n\n React.useEffect(() => {\n const current = ref?.current;\n const innerCurrent = innerRef.current;\n\n current?.classList.toggle('active', active)\n\n if (!current || !innerCurrent) return;\n\n const pos = current?.getBoundingClientRect();\n innerCurrent.style.setProperty('left', `${pos?.left}px`)\n }, [active, ref.current, innerRef.current]);\n\n return (\n <div ref={ref} className=\"static inline-block\">\n {title}\n\n {active && (\n <div ref={innerRef} className=\"absolute children z-10 flex flex-col\">\n {children}\n </div>\n )}\n </div>\n );\n};\n\nexport default Dropdown;\n","import { router } from \"@inertiajs/react\";\nimport { format, subYears } from \"date-fns\";\nimport React from \"react\";\nimport { FilterOption, FilterValue } from \"../../types\";\nimport Select from 'react-select';\nimport { HiChevronDown } from \"react-icons/hi2\";\nimport Dropdown from \"./Dropdown\";\nimport cn from 'classnames';\nimport { Button } from \"../common\";\n\nexport function FilterItem({ filter }: { filter: FilterOption, path?: string }) {\n const [isOpen, setOpen] = React.useState<boolean>(false);\n const [selected, setSelected] = React.useState<string[]>([]);\n\n const [selectedOptions, setSelectedOptions] = React.useState<FilterValue[]>([]); // Filter type: select\n const hasFilters = selected.length > 0;\n\n // Populate values on load\n React.useEffect(() => {\n if (typeof window !== 'undefined') {\n const search = new URLSearchParams(window.location.search);\n\n if (filter.type === 'date') {\n const fromDate = search.get(`${filter.name}[from]`);\n const toDate = search.get(`${filter.name}[to]`);\n if (fromDate && toDate) {\n setSelected([fromDate, toDate]);\n }\n } else if (filter.type === 'greaterThan') {\n const selectedFromUrl = search.getAll(`${filter.name}-GTE`);\n if (selectedFromUrl) {\n setSelected(selectedFromUrl);\n }\n } else if (filter.type === 'scope') {\n const selectedFromUrl = search.getAll(`scope${filter.name}`);\n if (selectedFromUrl) {\n setSelected(selectedFromUrl);\n }\n } else if (filter.type === 'select') {\n const selectedFromUrl = search.getAll(`${filter.name}[]`);\n if (selectedFromUrl) {\n setSelected(selectedFromUrl);\n const selectedOptions = filter.options && filter.options.filter(item => selectedFromUrl.includes(item.value.toString()));\n selectedOptions && setSelectedOptions(selectedOptions);\n }\n } else {\n const selectedFromUrl = search.getAll(`${filter.name}[]`);\n if (selectedFromUrl) {\n setSelected(selectedFromUrl);\n }\n }\n }\n }, []);\n\n function handleInput(e: React.SyntheticEvent<HTMLInputElement>) {\n const { value, checked } = e.currentTarget;\n\n if (checked) {\n setSelected((curr) => [...curr, value]);\n } else {\n setSelected(selected.filter((f) => f !== value));\n }\n }\n\n function handleDateSelect(e: React.SyntheticEvent<HTMLInputElement>) {\n const { name, value } = e.currentTarget;\n\n // First value in \"selected\" will be the \"from\", second will be the \"to\"\n if (name.includes('from')) {\n return setSelected([value]);\n }\n\n if (name.includes('to')) {\n // Make sure we have a \"from\" value first\n if (selected.length === 0) {\n // We'll default to a year ago if nothing entered\n return setSelected([format(subYears(new Date(), 1), 'yyyy-MM-dd'), value]);\n }\n return setSelected([selected[0], value]);\n }\n\n return setSelected([]);\n }\n\n /**\n * Handle Select for FilterType: Select\n */\n const handleSelectedOptions = (options: FilterValue[] | any) => {\n setSelectedOptions(options);\n const selectedValues = options.map((option : FilterValue) => option.value.toString());\n\n if (selectedValues.length > 0) {\n setSelected(selectedValues);\n } else {\n setSelected([]);\n }\n };\n\n /**\n * For Filter Select\n * Removes the Clear Button\n */\n function NullComponent() {\n return null;\n }\n\n function handleSelect(e: React.SyntheticEvent<HTMLSelectElement>) {\n const { value } = e.currentTarget;\n\n if (value) {\n setSelected([value]);\n } else {\n setSelected([]);\n }\n }\n\n function handleText(e: React.SyntheticEvent<HTMLInputElement>) {\n const { value } = e.currentTarget;\n\n if (value) {\n setSelected([value]);\n } else {\n setSelected([]);\n }\n }\n\n function handleApply(e: React.FormEvent) {\n e.preventDefault();\n\n const search = new URLSearchParams(window.location.search);\n\n // Reset the page in the query\n search.set('page', '1');\n\n if (filter.type === 'date') {\n const [from, to] = selected;\n\n search.set(`${filter.name}[from]`, from ?? format(new Date(), 'yyyy-MM-dd'));\n search.set(`${filter.name}[to]`, to ?? format(new Date(), 'yyyy-MM-dd'));\n } else if (filter.type === 'greaterThan') {\n search.delete(`${filter.name}-GTE`);\n\n if (selected.length > 0) {\n search.set(`${filter.name}-GTE`, selected[0]);\n }\n } else if (filter.type === 'scope') {\n search.delete(`${filter.name}`);\n if (selected.length > 0) {\n search.set(`scope${filter.name}`, selected[0]);\n }\n } else {\n // Clear this filter first\n search.delete(`${filter.name}[]`);\n\n // Apply the filters to the query string\n selected.forEach((selectedValue) => {\n // Fall back to option equality filters\n search.append(`${filter.name}[]`, selectedValue);\n });\n }\n\n // Fetch new data\n router.get(`${window.location.pathname}?${search.toString()}`);\n }\n\n function handleClear() {\n const search = new URLSearchParams(window.location.search);\n\n // Reset the page in the query\n search.set('page', '1');\n\n // Clear this filter\n if (filter.type === 'date') {\n search.delete(`${filter.name}[from]`);\n search.delete(`${filter.name}[to]`);\n } else if (filter.type === 'greaterThan') {\n search.delete(`${filter.name}-GTE`);\n } else if (filter.type === 'scope') {\n search.delete(`scope${filter.name}`);\n } else {\n search.delete(`${filter.name}[]`);\n }\n\n // Fetch new data\n router.get(`${window.location.pathname}?${search.toString()}`);\n }\n\n function handleClick(force?: boolean) {\n if (typeof force === 'boolean') {\n return setOpen(force);\n }\n\n setOpen(!isOpen);\n }\n\n return (\n <Dropdown onClose={() => setOpen(!open)} active={isOpen} title={\n <div\n onClick={() => handleClick()}\n className={cn(\n 'flex rounded-2xl border hover:cursor-pointer hover:border-teal bg-gray-600 px-2 py-1 items-center justify-between shrink-0 gap-2 text-xs text-white hover:bg-teal transition-colors',\n {\n '!bg-teal border-teal': hasFilters,\n }\n )}>\n <p className=\"whitespace-nowrap\">{filter.label}</p>\n <HiChevronDown />\n </div>\n }>\n <form\n className={`mt-2 flex max-h-[350px] min-w-[200px] max-w-[260px] flex-col gap-2 rounded-md border border-gray-300 bg-white shadow-lg ${ filter.type && filter.type === 'select' ? '' : 'overflow-y-scroll'}`}\n onSubmit={handleApply}\n >\n <div className=\"flex flex-col items-start gap-1 p-4\">\n {(!filter.type || filter.type === 'options') &&\n filter.options?.map((option, i) => (\n <div className=\"checkbox text-sm \" key={`${option.label}-${i}`}>\n <input\n type=\"checkbox\"\n name={filter.name}\n id={option.label}\n value={option.value.toString()}\n checked={selected.includes(option.value.toString())}\n onChange={handleInput}\n />\n <label className=\"leading-tight\" htmlFor={option.label}>\n {option.label}\n </label>\n </div>\n ))}\n {filter.type === 'greaterThan' && filter.options && (\n <label className=\"mb-2 w-full\">\n <div className=\"text-sm\">Greater than or equal to</div>\n <select\n name={filter.name}\n id={filter.label}\n value={selected[0]}\n onChange={handleSelect}\n className=\"!p-2 text-sm w-full\"\n >\n <option value=\"\">Select option</option>\n {filter.options?.map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n </label>\n )}\n {filter.type === 'scope' && filter.options && (\n <label className=\"mb-2 w-full\">\n <select\n name={filter.name}\n id={filter.label}\n value={selected[0]}\n onChange={handleSelect}\n className=\"!p-2 text-sm w-full\"\n >\n <option value=\"\">Select option</option>\n {filter.options?.map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n </label>\n )}\n {filter.type === 'date' && (\n <div className=\"mb-2 flex flex-col gap-4 w-full\">\n <label className=\"text-xs w-full\">\n From\n <input\n type=\"date\"\n name={`${filter.name}[from]`}\n id={`${filter.name}[from]`}\n onChange={handleDateSelect}\n value={selected[0] ?? ''}\n className=\"!p-2 text-sm w-full\"\n />\n </label>\n <label className=\"text-xs w-full\">\n To\n <input\n type=\"date\"\n name={`${filter.name}[to]`}\n id={`${filter.name}[to]`}\n onChange={handleDateSelect}\n value={selected[1] ?? ''}\n className=\"!p-2 text-sm w-full\"\n />\n </label>\n </div>\n )}\n {filter.type === 'select' && filter.options && (\n <div className=\"w-full\">\n <Select\n isMulti\n options={filter.options}\n className=\"basic-multi-select text-xs w-52 !transition-none\"\n classNamePrefix=\"select\"\n onChange={handleSelectedOptions}\n components={{\n ClearIndicator: NullComponent, // Hide the ClearIndicator (X button) -> exits filter when clicked\n }}\n value={selectedOptions}\n theme={(theme) => ({\n ...theme,\n colors: {\n ...theme.colors,\n primary25: 'rgb(111, 199, 182)',\n primary: 'rgb(111, 199, 182)',\n },\n })}\n />\n </div>\n )}\n {filter.type === 'text' && (\n <div className={'w-full'}>\n <input\n type=\"text\"\n name={filter.name}\n placeholder={filter.label}\n value={selected[0] ?? ''}\n onChange={handleText}\n className=\"!p-2 text-sm w-full\"\n />\n </div>\n )}\n </div>\n <div className=\"bg-gray-100 border-t border-gray-200 flex items-center gap-2 p-4 bottom-0 sticky\">\n <Button type=\"button\" className=\"!min-w-[0px] flex-grow !px-2 text-sm !transition-none\" onClick={handleClear} small>\n Clear\n </Button>\n <Button type=\"submit\" status=\"primary\" className=\"!min-w-[0px] flex-grow !px-2 text-sm !transition-none\" small>\n Apply\n </Button>\n </div>\n </form>\n </Dropdown>\n );\n}\n","import React from 'react';\nimport cn from 'classnames';\nimport { FilterOption, TPageHeaderAction } from '../../types';\nimport { BackButton } from './Back';\nimport SearchBar from './SearchBar';\nimport Action from './Action';\nimport { FilterItem } from './FilterItem';\nimport { HiChevronLeft, HiChevronRight, HiXMark } from 'react-icons/hi2';\nimport { router } from '@inertiajs/core';\n\ninterface Props {\n title: string;\n search?: string;\n className?: string;\n innerClassName?: string;\n back?: boolean | string;\n actions?: TPageHeaderAction[];\n backText?: string;\n filterOptions?: FilterOption[];\n focusSearchShortcut?: boolean;\n children?: React.ReactNode;\n}\n\nexport default function PageHeader({\n title,\n search,\n className = '',\n innerClassName = '',\n back = true,\n actions = [],\n filterOptions = [],\n focusSearchShortcut = false,\n children\n}: Props) {\n const [isSearchActive, setSearchActive] = React.useState<boolean>(false);\n const scrollContainerRef = React.useRef<HTMLDivElement | null>(null);\n\n const [overScroll, setOverScroll] = React.useState<boolean>(false);\n\n const actionChildren: React.ReactNode[] = [];\n\n // Categorize children based on their type\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child)) {\n if (child.type === PageHeader.Action) {\n actionChildren.push(child);\n }\n }\n });\n\n React.useEffect(() => {\n const current = scrollContainerRef.current;\n if (!current) return;\n\n const listener = function() {\n const activeDropdown = current.querySelector('.active');\n if (!activeDropdown) return;\n\n const childrenContainer = activeDropdown.querySelector('.children');\n if (!childrenContainer) return;\n\n const pos = activeDropdown.getBoundingClientRect();\n\n const posChild = childrenContainer.getBoundingClientRect();\n const posContainer = current.getBoundingClientRect();\n\n // if the dropdown content moves outside the scroll container to the left, make it disappear\n if (posChild.left <= posContainer.left - 50) {\n // @ts-ignore\n childrenContainer.style.visibility = 'hidden';\n } else if (posChild.left >= posContainer.right - 50) {\n // @ts-ignore\n childrenContainer.style.visibility = 'hidden';\n } else {\n // @ts-ignore\n childrenContainer.style.visibility = 'visible';\n }\n\n // @ts-ignore\n childrenContainer.style.left = `${pos.left}px`;\n }\n\n const mouseListener = function(e: MouseEvent) {\n const pos = current.getBoundingClientRect();\n if (e.clientX > pos.left && e.clientX < pos.right && e.clientY > pos.top && e.clientY < pos.bottom) {\n setOverScroll(true);\n } else {\n setOverScroll(false);\n }\n };\n\n current.addEventListener('scroll', listener);\n document.addEventListener('mousemove', mouseListener)\n\n return () => {\n current.removeEventListener('scroll', listener);\n document.removeEventListener('mousemove', mouseListener)\n }\n }, []);\n\n React.useEffect(() => {\n const scrollListener = function(e: WheelEvent) {\n if (overScroll) {\n e.preventDefault();\n scrollContainerRef.current?.scrollBy({ left: e.deltaY, behavior: 'auto' });\n }\n }\n\n document.addEventListener('wheel', scrollListener, { passive: false });\n\n return () => {\n document.removeEventListener('wheel', scrollListener);\n }\n }, [overScroll])\n\n function handleClear() {\n router.get(`${window.location.pathname}`);\n }\n\n const [hasScroll, setHasScroll] = React.useState<boolean>(false);\n\n const checkScroll = React.useCallback(() => {\n const current = scrollContainerRef.current;\n if (!current) return;\n\n const pos = current.getBoundingClientRect();\n\n setHasScroll(current.scrollWidth > (pos.width + 11));\n }, [scrollContainerRef.current]);\n\n React.useEffect(() => {\n checkScroll();\n\n window.addEventListener('resize', checkScroll)\n\n return () => {\n window.removeEventListener('resize', checkScroll);\n }\n }, [checkScroll]);\n\n function clickRight() {\n scrollContainerRef.current?.scrollBy({ left: 100, behavior: 'auto' });\n checkScroll();\n }\n\n function clickLeft() {\n scrollContainerRef.current?.scrollBy({ left: -100, behavior: 'auto' });\n checkScroll();\n }\n\n const filteredActions = React.useMemo(() => {\n return actions.filter(action => !action.hidden);\n }, [actions]);\n\n return (\n <section className={cn('col-span-full flex items-center gap-2 max-w-full rounded-lg bg-white p-2 shadow', className)}>\n {back && (\n <BackButton back={back} className=\"bg-gray-100 h-[60px] w-[60px] rounded\" />\n )}\n\n <div className={cn('w-full grid grid-cols-[auto_1fr_auto_auto] h-[60px] rounded bg-gray-100 p-3 gap-4', innerClassName)}>\n <button\n type=\"button\"\n disabled={!search}\n onClick={() => setSearchActive(true)}\n className={cn('mr-auto flex items-center gap-4 transition-colors pr-6 pl-1 disabled:opacity-100', {\n 'hover:text-teal': search && !isSearchActive,\n }\n )}>\n {search && <SearchBar search={search} active={isSearchActive} onActive={setSearchActive} placeholder={`Search ${title}...`} focusSearchShortcut={focusSearchShortcut} />}\n\n {!isSearchActive && <h1 className=\"text-base font-black\">{title}</h1>}\n </button>\n\n <div className=\"flex items-center ml-auto gap-2 h-full min-w-0 max-w-full\">\n {filterOptions.length > 0 && (\n <>\n <button onClick={handleClear} className=\"p-1.5 hover:text-red-500\"><HiXMark className=\"w-5 h-5 stroke-[1.25]\" /></button>\n\n {hasScroll && <HiChevronLeft onClick={clickLeft} className=\"w-5 h-5 text-gray-400 stroke-[1.25]\" />}\n <div ref={scrollContainerRef} className=\"flex items-center h-full w-full gap-3 overflow-x-scroll hide-scroll\">\n {filterOptions.map(filter => (\n <FilterItem key={filter.name} filter={filter} />\n ))}\n </div>\n {hasScroll && <HiChevronRight onClick={clickRight} className=\"w-5 h-5 text-gray-400 stroke-[1.25]\" />}\n </>\n )}\n </div>\n\n {filteredActions.length > 0 && (\n <div className=\"flex items-center gap-3 bg-gray-100\">\n {filterOptions.length > 0 && <div className=\"w-[1px] h-full bg-gray-300\" />}\n <nav className=\"flex items-center gap-2\">\n {filteredActions.map((action) => (\n <Action key={`${action.title}-${action.as}-${action.href}`} {...action} />\n ))}\n </nav>\n </div>\n )}\n {actionChildren && (\n <div className=\"flex items-center gap-3 bg-gray-100\">\n {actionChildren}\n </div>\n )}\n </div>\n </section>\n );\n}\n\n// Subcomponents\nPageHeader.Action = ({ children }: {children: React.ReactNode}) => <div>{children}</div>;\n"],"names":["formatDateNice","date","includeTime","formatString","formatFunc","formatDateTime","formatDate","formatDateForTable","overrideFormatString","Date","format","nonStandardDate","substring","split","join","parsedDate","parse","toString","nativelyParsedDate","dateTime","nonStandardDateTime","is12Hour","includes","slice","toUpperCase","hasSeconds","length","nonStandardFormat","trim","parsedDateTime","nativelyParsedDateTime","round","value","Number","Math","parseFloat","getGst","addGst","subtractGst","gstCalc","input","replace","gst","amountInclusive","amountExclusive","formatMoney","decimals","undefined","toFormat","toLocaleString","minimumFractionDigits","maximumFractionDigits","formatNumber","sanitiseVehicleType","inputType","type","useAuth","usePage","props","can","ability","auth","permissions","useClickOutside","ref","handler","useEffect","listener","event","current","contains","target","document","addEventListener","removeEventListener","ToastContext","React","toasts","addToast","t","removeToast","ToastProvider","children","setToasts","message","status","timeout","newToast","_id","uuid","curr","setTimeout","id","filter","toast","context","Provider","useToast","useInertiaOptions","successMessage","onSuccess","onError","errors","Object","values","forEach","err","useLocalStorage","key","initialValue","useState","window","item","localStorage","getItem","JSON","error","console","log","storedValue","setStoredValue","setValue","valueToStore","Function","setItem","stringify","initialData","source","reference","client_number","first_name","last_name","phone","mobile","email","licence","licence_other","promo_code","club_membership_number","length_of_insurance","dob","secondary_first_name","secondary_last_name","secondary_licence","secondary_licence_other","secondary_dob","club_id","street_address","address","unit","suburb","city","post_code","declaration","had_incident","incidents","has_demerit_points","demerit_points","has_lost_licence","lost_licence_details","was_refused_insurance","refused_insurance_details","has_criminal_conviction","criminal_conviction_details","has_vehicle_modifications","vehicle_modifications_details","has_previous_insurer","previous_insurer_details","previous_insurer_expires_at","additional_details","vehicles","purchase_options","theme","broker_fee","broker_id","broker_firm_id","agent_id","agent_firm_id","staff_member_id","sent_at","sold_at","referrer_id","referrer_category_id","pricing_expires_at","follow_up_at","is_follow_up_required","QuoteRequestFormContext","createContext","clear","QuoteRequestFormProvider","form","useForm","handleChange","e","name","currentTarget","parts","setData","prevData","sanitiseQuoteRequestFormData","Array","isArray","map","keys","reduce","acc","useQuoteRequestForm","useContext","QuoteRequestOptionsContext","setOptions","QuoteRequestOptionsProvider","options","useQuoteRequestOptions","prodConfig","baseUrl","config","autocomplete","search","q","encodeURIComponent","fetch","res","ok","json","data","completions","getAddressData","completion","pxid","calculateAge","today","birthDate","age","getFullYear","m","getMonth","getDate","calculateMonthly","option","selectedEnhancements","premium","monthly_premium","enhancementsCost","enhancement","enhancements","find","enhancementPremium","calcMonthlyEnhancementPrice","calculateAnnually","brokerFee","fsl","monthlyPremium","disable_rounding","ceil","fixRoundingError","calcPurchaseOptionPricing","monthly","annually","monthlyWithGst","annuallyWithGst","inertiaUsePage","useFetch","url","method","params","headers","access_token","queryParams","URLSearchParams","useMemo","Accept","Authorization","body","text","parsedBody","Button","className","href","onClick","disabled","as","small","baseClasses","statusClass","classes","Link","Card","Pagination","meta","showPerPageSelector","defaultValue","current_page","total","per_page","perPageValue","page_count","getNextPageLink","location","set","String","getPrevPageLink","nextPageLink","prevPageLink","handlePerPageChange","xmlns","fill","viewBox","stroke","strokeWidth","strokeLinecap","strokeLinejoin","d","onChange","SimplePagination","to","from","results_on_page","has_more_pages","ToastItem","defaultClasses","statusClasses","handleClick","Transition","show","appear","enter","enterFrom","enterTo","leave","leaveFrom","leaveTo","title","Toasts","Modal","isActive","onClose","width","Root","Fragment","Dialog","Child","Overlay","Table","TableActions","TableBody","cn","TableCell","condensed","TableHead","TableHeader","sort","textAlign","sortLink","setSortLink","query","direction","get","textAlignClass","TableRow","bgClass","DateOfBirthField","maxYear","showAge","isRequired","dayOptions","padStart","months","monthOptions","yearOptions","y","year","month","day","isValidDate","isNaN","styleReq","backgroundPosition","style","paddingRight","required","MoneyField","newValue","displayValue","conditionOptions","RegistrationSearchField","initialRegistrationValue","onVehicleDataFound","apiUrl","showOdometerReadingField","showConditionField","outerClassName","odoInputClassName","conditionSelectClassName","regoInputClassName","searchBtnClassName","rego","setRego","odo","setOdo","condition","setCondition","setStatus","registration","handleKeydown","handleSearch","payload","odometerReading","vehicleData","vehicle","make","model","weight","parseInt","replaceAll","vehicleType","vehicle_type","is_heavy","onKeyDown","conditionOption","placeholder","FormTester","populatePurchaseOptions","setKeys","isDev","setDev","handlePopulate","description","product","usage","storage_location","has_financially_interested_party","financially_interested_party_detail","owned_duration","main_driver","drivers","relationship","premium_type","level_of_insurance_id","authorised_drivers","excess_details","terms","show_monthly","sort_order","auto_select","prevKeys","ErrorList","heading","renderKeys","entries","field","BackButton","back","backUrl","setBackUrl","breadcrumbs","crumb","URL","pathname","HiArrowLeft","SearchBar","active","onActive","focusSearchShortcut","setQuery","searchRef","useRef","preventDefault","queryOverride","path","router","HiMagnifyingGlass","onSubmit","autoFocus","HiXMark","Action","shortcutKey","actions","tooltipId","tooltipContent","actionButtonRef","isActionsButton","actionsButtonClassName","isInnerActionVisible","setIsInnerActionVisible","toggleActionsMenu","runAction","isCtrlOrCmdPressed","ctrlKey","metaKey","isInInput","HTMLInputElement","HTMLTextAreaElement","HTMLSelectElement","isInForm","Element","closest","Tooltip","action","index","hidden","Dropdown","innerRef","innerCurrent","classList","toggle","pos","getBoundingClientRect","setProperty","left","FilterItem","isOpen","setOpen","selected","setSelected","selectedOptions","setSelectedOptions","hasFilters","fromDate","toDate","selectedFromUrl","getAll","handleInput","checked","f","handleDateSelect","subYears","handleSelectedOptions","selectedValues","NullComponent","handleSelect","handleText","handleApply","selectedValue","append","handleClear","force","open","label","HiChevronDown","i","htmlFor","Select","isMulti","classNamePrefix","components","ClearIndicator","colors","primary25","primary","PageHeader","innerClassName","filterOptions","isSearchActive","setSearchActive","scrollContainerRef","overScroll","setOverScroll","actionChildren","Children","child","isValidElement","push","activeDropdown","querySelector","childrenContainer","posChild","posContainer","visibility","right","mouseListener","clientX","clientY","top","bottom","scrollListener","scrollBy","deltaY","behavior","passive","hasScroll","setHasScroll","checkScroll","useCallback","scrollWidth","clickRight","clickLeft","filteredActions","HiChevronLeft","HiChevronRight"],"mappings":"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"}
1
+ {"version":3,"file":"sdk.esm.js","sources":["../src/lib/dates.ts","../src/lib/money.ts","../src/lib/vehicles.ts","../src/lib/auth.tsx","../src/lib/clickOutside.tsx","../src/lib/toast.tsx","../src/lib/inertiaOptions.tsx","../src/lib/localStorage.tsx","../src/lib/quoteRequestForm.tsx","../src/lib/quoteRequestOptions.tsx","../src/lib/addressFinder.tsx","../src/lib/calculateAge.ts","../src/lib/calculatePricing.tsx","../src/lib/page.tsx","../src/lib/fetch.tsx","../src/components/common/Button.tsx","../src/components/common/Card.tsx","../src/components/common/Pagination.tsx","../src/components/common/SimplePagination.tsx","../src/components/common/ToastItem.tsx","../src/components/common/Toasts.tsx","../src/components/common/Modal.tsx","../src/components/tables/Table.tsx","../src/components/tables/TableActions.tsx","../src/components/tables/TableBody.tsx","../src/components/tables/TableCell.tsx","../src/components/tables/TableHead.tsx","../src/components/tables/TableHeader.tsx","../src/components/tables/TableRow.tsx","../src/components/forms/DateOfBirthField.tsx","../src/components/forms/MoneyField.tsx","../src/components/forms/RegistrationSearchField.tsx","../src/components/forms/FormTester.tsx","../src/components/forms/ErrorList.tsx","../src/components/filter/Back.tsx","../src/components/filter/SearchBar.tsx","../src/components/filter/Action.tsx","../src/components/filter/Dropdown.tsx","../src/components/filter/FilterItem.tsx","../src/components/filter/PageHeader.tsx"],"sourcesContent":["import { format, parse } from \"date-fns\";\n\n/**\n * Formats a date like \"Jan 1, 2022 at 9:50am\"\n */\nexport function formatDateNice(date: string|null|undefined, includeTime: boolean = true) {\n const formatString = includeTime ? \"MMM d, yyyy 'at' h:mma\" : 'MMM d, yyyy';\n const formatFunc = includeTime ? formatDateTime : formatDate;\n\n return formatFunc(date, formatString);\n}\n\n/**\n * Formats a date like \"01/01/2022 09:50\"\n */\nexport function formatDateForTable(date: string|null|undefined, includeTime: boolean = true) {\n return includeTime ? formatDateTime(date) : formatDate(date);\n}\n\n/**\n * Formats a date to Star Insure standard format - dd/mm/yyyy\n */\nexport function formatDate(date: Date|string|null|undefined, overrideFormatString?: string) {\n // If date is undefined or null\n if (!date) {\n return '';\n }\n\n const formatString = overrideFormatString || 'dd/MM/yyyy';\n\n // If date is a date object\n if (date instanceof Date) {\n return format(date, formatString);\n }\n\n /*\n * If date is a string, first attempt to parse it in non-standard formats\n * Only parse the first 10 characters of the string\n * dd/MM/yyyy, dd-MM-yyyy, dd.MM.yyyy\n */\n const nonStandardDate = date\n .substring(0, 10)\n .split('-').join('/')\n .split('.').join('/');\n\n const parsedDate = parse(nonStandardDate, 'dd/MM/yyyy', new Date());\n if (parsedDate.toString() !== 'Invalid Date') {\n return format(parsedDate, formatString);\n }\n\n // Then attempt to parse it natively\n const nativelyParsedDate = new Date(date);\n if (nativelyParsedDate.toString() !== 'Invalid Date') {\n return format(nativelyParsedDate, formatString);\n }\n\n return '';\n}\n\n/**\n * Formats a dateTime to Star Insure standard format - dd/mm/yyyy hh:mm\n */\nexport function formatDateTime(dateTime: Date|string|null|undefined, overrideFormatString?: string) {\n // If date is undefined or null\n if (!dateTime) {\n return '';\n }\n\n const formatString = overrideFormatString || 'dd/MM/yyyy HH:mm';\n\n // If date is a date object\n if (dateTime instanceof Date) {\n return format(dateTime, formatString);\n }\n\n /*\n * If date is a string, first attempt to parse it in non-standard formats\n * dd/MM/yyyy HH:mm, dd-MM-yyyy HH:mm, dd.MM.yyyy HH:mm,\n * dd/MM/yyyy hh:mm a, dd-MM-yyyy hh:mm a, dd.MM.yyyy hh:mm a,\n * dd/MM/yyyy HH:mm:ss, dd-MM-yyyy HH:mm:ss, dd.MM.yyyy HH:mm:ss,\n * dd/MM/yyyy hh:mm:ss a, dd-MM-yyyy hh:mm:ss a, dd.MM.yyyy hh:mm:ss a\n */\n const nonStandardDateTime = dateTime\n // Remove commas between date and time\n .split(',').join('')\n\n // Only parse the first 22 characters of the string\n .substring(0, 22)\n\n // Replace dashes and dots with slashes\n .split('-').join('/')\n .split('.').join('/');\n\n const is12Hour = ['AM', 'PM'].includes(nonStandardDateTime.slice(-2).toUpperCase());\n const hasSeconds = nonStandardDateTime.split(':').length === 3;\n\n const nonStandardFormat = (`dd/MM/yyyy ${is12Hour ? 'hh' : 'HH'}:mm${hasSeconds ? ':ss' : ''} ${is12Hour ? 'a' : ''}`).trim();\n\n const parsedDateTime = parse(nonStandardDateTime, nonStandardFormat, new Date());\n if (parsedDateTime.toString() !== 'Invalid Date') {\n return format(parsedDateTime, formatString);\n }\n\n // Then attempt to parse it natively\n const nativelyParsedDateTime = new Date(dateTime);\n if (nativelyParsedDateTime.toString() !== 'Invalid Date') {\n return format(nativelyParsedDateTime, formatString);\n }\n\n return '';\n}\n\n/**\n * Attempts to create a date object from a date string\n */\nexport function createDate(dateString: Date | string | null | undefined): Date | null {\n // Re-use our logic from formatDateTime\n const formattedDateTime = formatDateTime(dateString);\n\n if (!formattedDateTime) {\n return null;\n }\n\n // Attempt to parse the formatted date to a date object\n try {\n return parse(formattedDateTime, 'dd/MM/yyyy HH:mm', new Date());\n } catch (error) {\n console.error(`Error parsing date: ${dateString?.toString()}`);\n return null;\n }\n}\n","/**\n * Safely rounds a number\n */\nexport function round(value: number): number {\n return Number(Math.round(parseFloat(value + 'e' + 2)) + 'e-' + 2)\n}\n\n/**\n * Gets the GST value from a number\n */\nexport function getGst(value: number): number {\n return round(value * 3 / 23);\n}\n\n/**\n * Adds GST to a number\n */\nexport function addGst(value: number): number {\n return round(value * 1.15);\n}\n\n/**\n * Subtracts GST from a number\n */\nexport function subtractGst(value: number): number {\n return round(value - getGst(value));\n}\n\n/**\n * Calculates the various GST values on a figure\n */\nexport function gstCalc(input: number|string): {\n gst: number,\n amountInclusive: number,\n amountExclusive: number\n} {\n let value = input;\n\n if (typeof value === 'string') {\n value = parseFloat(value.replace(/[^0-9.]/g, ''));\n }\n\n value = round(value);\n\n return {\n gst: getGst(value),\n amountInclusive: addGst(value),\n amountExclusive: subtractGst(value)\n }\n}\n\n/**\n * Formats a value nicely\n */\nexport function formatMoney(value: string|number|null|undefined, decimals: number = 2): string {\n if (value === null || value === undefined) {\n return '';\n }\n\n let toFormat = value;\n if (typeof value === 'string') {\n toFormat = value.replace(/[^\\d.-]/g, '')\n }\n\n return Number(toFormat).toLocaleString('en', {\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n });\n}\n\n/**\n * Turns a formatted value in to a float\n */\nexport function formatNumber(value: string): number {\n return parseFloat(value.replace(/[^0-9.]/g, ''));\n}\n","import { VehicleType } from \"../types\";\n\nexport function sanitiseVehicleType(inputType: string): VehicleType {\n let type: VehicleType;\n\n switch (inputType) {\n case 'Camper':\n case 'Goods Van/Truck/Utility':\n case 'Bus':\n case 'Motor Caravan':\n case 'Trailer/Caravan':\n case 'TRAILER_CARAVAN':\n case 'TRAILER_NOT_DESIGNED_FOR_HIGHWAY_USE':\n case 'MOBILE_MACHINE':\n case 'GOODS_VAN_TRUCK_UTILITY':\n case 'BUS':\n case 'MOTOR_CARAVAN': {\n type = 'motorhome';\n break;\n }\n\n case 'Motorcycle':\n case 'Moped':\n case 'ATV':\n case 'Agricultural Machine':\n case 'MOTORCYCLE':\n case 'MOPED':\n case 'TRACTOR':\n case 'AGRICULTURAL_MACHINE':\n case 'HIGH_SPEED_AGRICULTURAL_VEHICLE': {\n type = 'motorcycle';\n break;\n }\n\n case 'Passenger Car/Van':\n case 'PASSENGER_CAR_VAN':\n case 'SPECIAL_PURPOSE_VEHICLE':\n case 'UNKNOWN':\n default:\n type = 'car';\n }\n\n return type;\n}\n","import { usePage } from '@inertiajs/react';\nimport type { AuthContext } from '../types';\nimport type { ErrorBag, Errors, Page, PageProps } from '@inertiajs/core';\n\ninterface SharedProps {\n auth: AuthContext;\n errors: Errors & ErrorBag;\n}\n\ninterface AppPage extends Page {\n props: PageProps & SharedProps;\n}\n\nexport function useAuth(): AuthContext {\n const { props } = usePage() as AppPage;\n\n /**\n * Check if the user has permission to perform the given ability.\n */\n function can(ability: string): boolean {\n return props.auth.permissions.includes(ability);\n }\n\n return {\n ...props.auth,\n can,\n };\n}\n","import { useEffect } from 'react';\n\nexport function useClickOutside(ref: any, handler: (e: Event) => void) {\n useEffect(\n () => {\n const listener = (event: Event) => {\n // Do nothing if clicking ref's element or descendent elements\n if (!ref.current || ref.current.contains(event.target)) {\n return;\n }\n handler(event);\n };\n\n document.addEventListener('mousedown', listener);\n document.addEventListener('touchstart', listener);\n\n return () => {\n document.removeEventListener('mousedown', listener);\n document.removeEventListener('touchstart', listener);\n };\n },\n [ref, handler]\n );\n}\n","import * as React from 'react';\nimport type { Toast } from \"../types\";\nimport { v4 as uuid } from 'uuid';\n\ninterface ToastContextInterface {\n toasts: Toast[];\n addToast: (toast: Toast) => void;\n removeToast: (id: Toast['_id']) => void;\n}\n\nconst ToastContext = React.createContext<ToastContextInterface>({\n toasts: [],\n addToast: (t: Toast) => {t},\n removeToast: (t: Toast['_id']) => {t},\n});\n\nexport function ToastProvider({ children }: any) {\n const [toasts, setToasts] = React.useState<Toast[]>([]);\n\n /**\n * Add a new toast popup message\n */\n function addToast({ message, status, timeout = 4000 }: Toast) {\n const newToast: Toast = { message, status, timeout };\n\n newToast._id = uuid();\n\n setToasts(curr => [...curr, newToast]);\n\n setTimeout(() => {\n removeToast(newToast._id);\n }, timeout);\n }\n\n /**\n * Remove a toast message\n */\n function removeToast(id: Toast['_id']) {\n setToasts(curr => curr.filter(toast => toast._id !== id));\n }\n\n const context: ToastContextInterface = {\n toasts,\n addToast,\n removeToast,\n }\n\n return (\n <ToastContext.Provider value={context}>\n {children}\n </ToastContext.Provider>\n );\n}\n\nexport const useToast = () => React.useContext(ToastContext);\n","import type { VisitOptions } from '@inertiajs/core';\nimport { useToast } from './toast';\n\ninterface Options {\n successMessage?: string;\n}\n\nexport function useInertiaOptions({ successMessage = '' }: Options = {}): VisitOptions {\n const { addToast } = useToast();\n\n return {\n onSuccess: () => {\n addToast({\n message: successMessage ?? 'Your request was successful.',\n status: 'success',\n });\n },\n onError: (errors) => {\n Object.values(errors).forEach((err) => {\n addToast({\n message: err,\n status: 'error',\n });\n });\n }\n }\n}\n","import { useState } from \"react\";\n\nexport function useLocalStorage<T>(key: string, initialValue: T) {\n // State to store our value\n // Pass initial state function to useState so logic is only executed once\n const [storedValue, setStoredValue] = useState<T>(() => {\n if (typeof window === \"undefined\") {\n return initialValue;\n }\n try {\n // Get from local storage by key\n const item = window.localStorage.getItem(key);\n // Parse stored json or if none return initialValue\n return item ? JSON.parse(item) : initialValue;\n } catch (error) {\n // If error also return initialValue\n console.log(error);\n return initialValue;\n }\n });\n // Return a wrapped version of useState's setter function that ...\n // ... persists the new value to localStorage.\n const setValue = (value: T | ((val: T) => T)) => {\n try {\n // Allow value to be a function so we have same API as useState\n const valueToStore =\n value instanceof Function ? value(storedValue) : value;\n // Save state\n setStoredValue(valueToStore);\n // Save to local storage\n if (typeof window !== \"undefined\") {\n window.localStorage.setItem(key, JSON.stringify(valueToStore));\n }\n } catch (error) {\n // A more advanced implementation would handle the error case\n console.log(error);\n }\n };\n\n return [storedValue, setValue] as const;\n}\n","import React from 'react';\nimport { useForm } from \"@inertiajs/react\";\nimport { InertiaFormProps } from \"@inertiajs/react/types/useForm\";\nimport type { QuoteRequest } from '../types';\n\ntype QuoteRequestForm = QuoteRequest & Record<string, any>;\n\ninterface QuoteRequestFormContextInterface {\n form?: InertiaFormProps<QuoteRequestForm>;\n handleChange?: (e: React.ChangeEvent<HTMLInputElement|HTMLTextAreaElement|HTMLSelectElement>) => void;\n clear: () => void;\n}\n\nexport const initialData: QuoteRequestForm = {\n id: undefined,\n status: 'new',\n source: 'phone',\n reference: '',\n client_number: '',\n first_name: '',\n last_name: '',\n phone: '',\n mobile: '',\n email: '',\n licence: '',\n licence_other: '',\n promo_code: '',\n club_membership_number: '',\n length_of_insurance: '',\n dob: '',\n secondary_first_name: '',\n secondary_last_name: '',\n secondary_licence: '',\n secondary_licence_other: '',\n secondary_dob: '',\n club_id: undefined,\n street_address: {\n address: '',\n unit: '',\n suburb: '',\n city: '',\n post_code: '',\n },\n declaration: {\n had_incident: undefined,\n incidents: [],\n has_demerit_points: undefined,\n demerit_points: '',\n has_lost_licence: undefined,\n lost_licence_details: '',\n was_refused_insurance: undefined,\n refused_insurance_details: '',\n has_criminal_conviction: undefined,\n criminal_conviction_details: '',\n has_vehicle_modifications: undefined,\n vehicle_modifications_details: '',\n has_previous_insurer: undefined,\n previous_insurer_details: '',\n previous_insurer_expires_at: '',\n additional_details: '',\n },\n vehicles: [],\n // Portal specific fields:\n purchase_options: [],\n theme: '',\n broker_fee: undefined,\n broker_id: undefined,\n broker_firm_id: undefined,\n agent_id: undefined,\n agent_firm_id: undefined,\n staff_member_id: undefined,\n sent_at: undefined,\n sold_at: undefined,\n referrer_id: undefined,\n referrer_category_id: undefined,\n pricing_expires_at: undefined,\n follow_up_at: undefined,\n is_follow_up_required: true,\n}\n\nexport const QuoteRequestFormContext = React.createContext<QuoteRequestFormContextInterface>({ clear: () => null });\n\nexport function QuoteRequestFormProvider({ children }: { children: React.ReactNode }) {\n const form = useForm({ ...initialData });\n\n /**\n * Handle the change event for all form inputs\n */\n function handleChange(e: React.SyntheticEvent<HTMLInputElement|HTMLTextAreaElement|HTMLSelectElement>) {\n const { name } = e.currentTarget;\n let value: string|boolean|undefined = e.currentTarget.value;\n\n if (e.currentTarget.type === 'checkbox' || e.currentTarget.type === 'radio') {\n const target = e.currentTarget as HTMLInputElement;\n value = target.value === '1' ? true : false;\n }\n\n if (name.includes('.')) {\n const parts = name.split('.');\n\n if (parts.length === 2) {\n return form.setData(prevData => ({\n ...prevData,\n [parts[0]]: {\n // @ts-ignore TODO: Maybe fix these TS errors\n ...prevData[parts[0]],\n [parts[1]]: value,\n },\n }));\n } else {\n // We don't want to handle anything double-nested. These should be handled by their own local state.\n return;\n }\n }\n\n return form.setData(prevData => ({\n ...prevData,\n [name]: value,\n }));\n }\n\n function clear() {\n form.setData({ ...initialData });\n }\n\n return (\n <QuoteRequestFormContext.Provider value={{ form, handleChange, clear }}>\n {children}\n </QuoteRequestFormContext.Provider>\n );\n}\n\n/**\n * Takes in a quote request and returns data suitable to populate a form\n * by recursively calling this function, converting null to undefined.\n */\n export function sanitiseQuoteRequestFormData(value: any): any {\n if (Array.isArray(value)) {\n return value.map(item => sanitiseQuoteRequestFormData(item));\n }\n\n if (value === null) {\n return \"\";\n }\n\n if (typeof value === 'object') {\n // Map over each property and convert null to undefined\n return Object.keys(value).reduce((acc, key) => {\n // @ts-ignore\n acc[key] = sanitiseQuoteRequestFormData(value[key]);\n return acc;\n }, {});\n }\n\n return value;\n}\n\nexport const useQuoteRequestForm = () => React.useContext(QuoteRequestFormContext);\n","import React from 'react';\nimport { QuoteRequestOptions } from '../types';\n\ninterface QuoteRequestFormContextInterface {\n options?: QuoteRequestOptions;\n setOptions: (options: QuoteRequestOptions) => void;\n}\n\nconst QuoteRequestOptionsContext = React.createContext<QuoteRequestFormContextInterface>({ setOptions: () => {} });\n\nexport function QuoteRequestOptionsProvider({ children }: { children: React.ReactNode }) {\n const [options, setOptions] = React.useState<QuoteRequestOptions>();\n\n return (\n <QuoteRequestOptionsContext.Provider value={{ options, setOptions }}>\n {children}\n </QuoteRequestOptionsContext.Provider>\n )\n}\n\nexport const useQuoteRequestOptions = () => React.useContext(QuoteRequestOptionsContext);\n","const prodConfig = {\n key: 'XVAKN4Q9PREJD8CUTFBW',\n baseUrl: 'https://api.addressfinder.io/api/nz/address',\n}\n\nconst config = prodConfig;\n\ninterface AutocompleteResponse {\n completions: AddressCompletion[];\n paid: boolean;\n demo: boolean;\n success: boolean;\n}\n\nexport interface AddressCompletion {\n a: string;\n pxid: string;\n v: number;\n}\n\nexport interface AddressData {\n pxid: string;\n a: string;\n aims_address_id: string;\n sufi: number;\n ta_id: string;\n ta: string;\n tasub_id: string;\n tasub: string;\n number: string;\n x: string;\n y: string;\n postcode: string;\n street: string;\n street_name: string;\n street_type: string;\n city: string;\n suburb: string;\n region_id: string;\n region: string;\n postal_line_1: string;\n postal_line_2: string;\n aims_road_section_id: string;\n rural: string;\n address_line_1: string;\n address_line_2?: string;\n primary_parcel_id: string;\n meshblock: string;\n sa1_id: string;\n sa2_id: string;\n sa2: string;\n cb_id: string;\n cb: string;\n ward_id: string;\n ward: string;\n con_id: string;\n con: string;\n maoricon_id: string;\n maoricon: string;\n iur_id: string;\n iur: string;\n ur_id: string;\n ur: string;\n landwater_id: string;\n landwater: string;\n success: boolean;\n}\n\nexport async function autocomplete(search: string): Promise<AddressCompletion[]> {\n const { key, baseUrl } = config;\n const q = encodeURIComponent(search);\n\n const res = await fetch(`${baseUrl}/autocomplete/?key=${key}&q=${q}&format=json&strict=2`);\n\n if (!res.ok) {\n return [];\n }\n\n const data: AutocompleteResponse = await res.json();\n\n if (data.completions) {\n return data.completions;\n }\n\n return [];\n}\n\nexport async function getAddressData(completion: AddressCompletion): Promise<AddressData|null> {\n const { key, baseUrl } = config;\n\n const res = await fetch(`${baseUrl}/metadata/?key=${key}&pxid=${completion.pxid}&format=json`);\n\n if (!res.ok) {\n return null;\n }\n\n const data: AddressData = await res.json();\n\n return data;\n}\n","/**\n * Calculate someone's age from a date of birth.\n */\n export function calculateAge(date: string|Date|null|undefined): number {\n if (!date) {\n return 0;\n }\n\n try {\n const today = new Date();\n\n const birthDate = new Date(date);\n\n const age = today.getFullYear() - birthDate.getFullYear();\n const m = today.getMonth() - birthDate.getMonth();\n\n if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {\n return age - 1;\n }\n\n return age;\n } catch (error) {\n console.error(error);\n return 0;\n }\n}\n","import { addGst } from \"./money\";\nimport type { PolicyEnhancement, QuoteRequestPurchaseOption } from \"../types\";\n\ninterface CalculationArguments {\n option: QuoteRequestPurchaseOption;\n selectedEnhancements: PolicyEnhancement['id'][];\n brokerFee?: number;\n}\n\nfunction calculateMonthly({ option, selectedEnhancements }: CalculationArguments) {\n const premium = option.monthly_premium || 0;\n\n const enhancementsCost = selectedEnhancements.reduce((acc, id) => {\n const enhancement = option.enhancements?.find(e => e.id === id);\n if (!enhancement) return acc;\n const enhancementPremium = calcMonthlyEnhancementPrice(enhancement);\n\n if (!acc) {\n return enhancementPremium;\n }\n\n return acc + enhancementPremium;\n }, 0) || 0;\n\n return premium + enhancementsCost;\n}\n\nfunction calculateAnnually({ option, selectedEnhancements, brokerFee = 0 }: CalculationArguments) {\n const premium = option.premium || 0;\n const fsl = option.fsl || 0;\n const enhancementsCost = selectedEnhancements.reduce((acc, id) => {\n const enhancement = option.enhancements?.find(e => e.id === id);\n if (!enhancement) return acc;\n return (acc || 0) + (enhancement.premium || 0);\n }, 0) || 0;\n\n return premium + fsl + enhancementsCost + brokerFee;\n}\n\nexport function calcMonthlyEnhancementPrice(enhancement: PolicyEnhancement): number {\n if (!enhancement.premium) return 0;\n\n const monthlyPremium = (enhancement.premium / 100) / 12;\n\n if (enhancement.disable_rounding) {\n return Math.round(monthlyPremium * 100);\n }\n\n return Math.round(Math.ceil(monthlyPremium) * 100);\n}\n\n/**\n * Fix rounding errors we get from subtracting, and then adding GST back on\n * (Issues with 2 decimal place rounding)\n */\n export function fixRoundingError(premium: number) {\n // If the premium ends in \"01\" then we need to round it down\n if (premium % 100 === 1) {\n return premium - 1;\n }\n\n // If the premium ends in \"99\" then we need to round it up\n if (premium % 100 === 99) {\n return premium + 1;\n }\n\n return premium;\n}\n\nexport function calcPurchaseOptionPricing({ option, selectedEnhancements, brokerFee = 0 }: CalculationArguments) {\n const monthly = calculateMonthly({ option, selectedEnhancements });\n const annually = calculateAnnually({ option, selectedEnhancements, brokerFee });\n\n const monthlyWithGst = fixRoundingError(Math.round(addGst(monthly)));\n const annuallyWithGst = fixRoundingError(Math.round(addGst(annually)));\n\n return {\n monthly,\n annually,\n monthlyWithGst,\n annuallyWithGst,\n };\n}\n","import { Page, PageProps } from '@inertiajs/core';\nimport { usePage as inertiaUsePage } from '@inertiajs/react';\nimport { AuthContext, Breadcrumb, Environment } from '../types';\n\n/**\n * Add custom props here, that are defined in `app/Http/Middleware/HandleInertiaRequests.php`\n */\ntype CustomPageProps = {\n env: Environment;\n breadcrumbs?: Breadcrumb[];\n links: Record<string, string>;\n access_token?: string;\n impersonate_id?: number;\n csrf_token?: string;\n auth: AuthContext;\n} & PageProps;\n\n/**\n * A wrapper around Inertia's usePage function that gives better type-safety\n */\nexport function usePage<T>(): Page<CustomPageProps & T> {\n // @ts-ignore\n return inertiaUsePage();\n}\n","import React from 'react';\nimport { usePage } from './page';\n\ntype FetchOptions = {\n url: string;\n method?: 'GET' | 'POST' | 'PUT' | 'DELETE';\n params?: Record<string, any>;\n headers?: Record<string, string>;\n};\n\ntype FetcherFunction<T> = () => Promise<\n | {\n ok: false;\n message: string | undefined;\n data?: undefined;\n }\n | {\n ok: true;\n data?: T;\n message: string | undefined;\n }\n>;\n\n/**\n * A helper to return a fetch function including default headers and authorization.\n */\nexport function useFetch<T = any>({\n url: baseUrl,\n method = 'GET',\n params = {},\n headers = {},\n}: FetchOptions): FetcherFunction<T> {\n const { access_token } = usePage().props;\n\n let url = baseUrl;\n\n if (method === 'GET') {\n const queryParams = new URLSearchParams(params);\n url = `${url}?${queryParams.toString()}`;\n }\n\n return React.useMemo(\n () => async () => {\n const res = await fetch(url, {\n method,\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n Authorization: access_token ? `Bearer ${access_token}` : '',\n ...headers,\n },\n body: Object.keys(params).length > 0 && method !== 'GET' ? JSON.stringify(params) : null,\n });\n\n const { ok } = res;\n const body = await res.text();\n\n let parsedBody: T | string = body;\n\n try {\n parsedBody = JSON.parse(body) as T;\n } catch (error) {\n // Response wasn't JSON, just use the text version.\n }\n\n const message = typeof parsedBody === 'string' ? parsedBody : undefined;\n\n if (!ok) {\n return {\n ok,\n message,\n };\n }\n\n const data = typeof parsedBody !== 'string' ? parsedBody : undefined;\n\n return { ok, data, message };\n },\n [access_token, url, params, headers, method],\n );\n}\n","import React from 'react';\nimport { Link } from '@inertiajs/react';\n\ninterface Props {\n className?: string;\n href?: string;\n target?: '_blank' | '_self';\n onClick?: Function;\n type?: 'button' | 'submit';\n status?: 'primary' | 'danger' | 'warning' | 'info' | 'default';\n children: React.ReactNode;\n disabled?: boolean;\n as?: 'link' | 'button' | 'a';\n small?: boolean;\n}\n\nexport default function Button({\n className,\n href,\n target,\n onClick,\n type,\n children,\n status = 'default',\n disabled = false,\n as,\n small = false,\n}: Props) {\n const baseClasses = small\n ? 'font-bold text-sm inline-flex items-center gap-3 justify-center text-white text-center px-3 py-1 rounded min-w-[80px] transition-all hover:brightness-110'\n : 'font-black inline-flex items-center gap-3 justify-center text-white text-center px-5 py-2 rounded-md min-w-[120px] transition-all hover:brightness-110';\n\n const statusClass =\n (status === 'primary' && 'bg-primary') ||\n (status === 'danger' && 'bg-red-500') ||\n (status === 'warning' && 'bg-yellow-400') ||\n (status === 'info' && 'bg-blue-400') ||\n 'bg-gray-600';\n\n const classes = `${className ?? ''} ${baseClasses} ${statusClass}`;\n\n if (onClick) {\n return (\n <button\n className={classes}\n type={type ?? 'button'}\n onClick={(e: React.MouseEvent) => onClick(e)}\n disabled={disabled}\n >\n {children}\n </button>\n );\n }\n\n if (type) {\n return (\n <button className={classes} type={type ?? 'button'} disabled={disabled}>\n {children}\n </button>\n );\n }\n\n if (href) {\n if (href.includes('http') || target === '_blank' || as === 'a') {\n return (\n <a href={href} target={target ?? '_self'} className={classes}>\n {children}\n </a>\n );\n }\n\n return (\n <Link href={href} className={classes}>\n {children}\n </Link>\n );\n }\n\n return <p className=\"text-red-500 text-sm\">[Invalid button]</p>;\n}\n","import React from 'react';\n\ninterface Props {\n className?: string;\n children: React.ReactNode;\n}\n\nexport default function Card({ className, children }: Props) {\n return (\n <div className={`${className ?? ''} flex flex-col items-start bg-white rounded-md shadow-sm border border-gray-300 p-4 md:p-6`}>\n {children}\n </div>\n );\n}\n","import React from \"react\";\nimport { Link } from \"@inertiajs/react\";\nimport type { Meta } from \"../../types\";\n\ninterface Props {\n className?: string;\n meta: Meta;\n showPerPageSelector?: boolean;\n defaultValue?: number;\n}\n\nexport default function Pagination({ meta, className, showPerPageSelector = false, defaultValue }: Props) {\n const { current_page, total, per_page } = meta;\n\n const perPageValue = defaultValue ?? per_page;\n\n const page_count = Math.ceil(total / per_page);\n\n function getNextPageLink() {\n if (typeof window !== 'undefined') {\n const search = new URLSearchParams(window.location.search);\n search.set('page', String(current_page + 1));\n\n return `?${search.toString()}`;\n }\n\n return '';\n }\n\n function getPrevPageLink() {\n if (typeof window !== 'undefined') {\n const search = new URLSearchParams(window.location.search);\n search.set('page', String(current_page - 1));\n\n return `?${search.toString()}`;\n }\n\n return '';\n }\n\n const nextPageLink = getNextPageLink();\n const prevPageLink = getPrevPageLink();\n\n function handlePerPageChange(e: React.SyntheticEvent<HTMLSelectElement>) {\n const search = new URLSearchParams(window?.location.search);\n search.set('limit', e.currentTarget.value);\n search.set('page', '1');\n\n window.location.href = `?${search.toString()}`;\n }\n\n return (\n <div className={`${className ?? ''}`}>\n <nav className=\"font-bold flex justify-between items-center gap-6\">\n <Link href={prevPageLink} className=\"flex items-center gap-2\" disabled={current_page === 1}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"h-4 w-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M10 19l-7-7m0 0l7-7m-7 7h18\" />\n </svg>\n Prev\n </Link>\n <div className=\"flex gap-6 items-center\">\n <p>Page {current_page} of {page_count}</p>\n {showPerPageSelector ? (\n <select value={perPageValue} onChange={handlePerPageChange}>\n <option value=\"10\">10 per page</option>\n <option value=\"25\">25 per page</option>\n <option value=\"50\">50 per page</option>\n <option value=\"100\">100 per page</option>\n <option value=\"250\">250 per page</option>\n <option value=\"500\">500 per page</option>\n </select>\n ) : ''}\n </div>\n <Link href={nextPageLink} className=\"flex items-center gap-2\" disabled={current_page === page_count}>\n Next\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"h-4 w-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M14 5l7 7m0 0l-7 7m7-7H3\" />\n </svg>\n </Link>\n </nav>\n </div>\n )\n}\n","import React from 'react';\nimport { Link } from '@inertiajs/react';\nimport { Meta } from '../../types';\n\ninterface Props {\n className?: string;\n meta: Meta;\n showPerPageSelector?: boolean;\n defaultValue?: number;\n}\n\nexport default function SimplePagination({\n meta,\n className,\n showPerPageSelector = false,\n defaultValue,\n}: Props) {\n const { current_page, per_page, to, from } = meta;\n\n const perPageValue = defaultValue ?? per_page;\n\n const results_on_page = to - from + 1;\n const has_more_pages = results_on_page === per_page;\n\n function getNextPageLink() {\n if (typeof window !== 'undefined') {\n const search = new URLSearchParams(window.location.search);\n search.set('page', String(current_page + 1));\n\n return `?${search.toString()}`;\n }\n\n return '';\n }\n\n function getPrevPageLink() {\n if (typeof window !== 'undefined') {\n const search = new URLSearchParams(window.location.search);\n search.set('page', String(current_page - 1));\n\n return `?${search.toString()}`;\n }\n\n return '';\n }\n\n const nextPageLink = getNextPageLink();\n const prevPageLink = getPrevPageLink();\n\n function handlePerPageChange(e: React.SyntheticEvent<HTMLSelectElement>) {\n const search = new URLSearchParams(window?.location.search);\n search.set('limit', e.currentTarget.value);\n search.set('page', '1');\n\n window.location.href = `?${search.toString()}`;\n }\n\n return (\n <div className={`${className ?? ''}`}>\n <nav className=\"font-bold flex justify-between items-center gap-6\">\n <Link\n href={prevPageLink}\n className=\"flex items-center gap-2\"\n disabled={current_page === 1}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-4 w-4\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M10 19l-7-7m0 0l7-7m-7 7h18\"\n />\n </svg>\n Prev\n </Link>\n <div className=\"flex gap-6 items-center\">\n <p>Page {current_page}</p>\n {showPerPageSelector ? (\n <select value={perPageValue} onChange={handlePerPageChange}>\n <option value=\"10\">10 per page</option>\n <option value=\"25\">25 per page</option>\n <option value=\"50\">50 per page</option>\n <option value=\"100\">100 per page</option>\n <option value=\"250\">250 per page</option>\n <option value=\"500\">500 per page</option>\n </select>\n ) : (\n ''\n )}\n </div>\n <Link\n href={nextPageLink}\n className=\"flex items-center gap-2\"\n disabled={!has_more_pages}\n >\n Next\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-4 w-4\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M14 5l7 7m0 0l-7 7m7-7H3\"\n />\n </svg>\n </Link>\n </nav>\n </div>\n );\n}\n","import React from 'react';\nimport { Transition } from '@headlessui/react';\nimport type { Toast } from '../../types';\nimport { useToast } from '../../lib/toast';\n\nexport default function ToastItem({ _id = '', message, status = 'default' }: Toast) {\n const { removeToast } = useToast();\n\n const defaultClasses = 'w-full min-w-[250px] p-4 shadow flex justify-between items-center font-black rounded-md not:';\n\n const statusClasses = status === 'success' && 'bg-primary text-white'\n || status === 'error' && 'bg-red-500 text-white'\n || status === 'warning' && 'bg-yellow-400 text-white'\n || 'bg-white text-secondary';\n\n const classes = `${defaultClasses} ${statusClasses}`;\n\n function handleClick() {\n removeToast(_id);\n }\n\n return (\n <Transition\n show={true}\n appear={true}\n enter=\"transition-all duration-300\"\n enterFrom=\"opacity-0 translate-y-4\"\n enterTo=\"opacity-100 translate-y-0\"\n leave=\"transition-all duration-300\"\n leaveFrom=\"opacity-100 translate-y-0\"\n leaveTo=\"opacity-0 translate-y-2\"\n >\n <div className={classes}>\n <p>{message}</p>\n <button className=\"\" onClick={handleClick} title=\"Close message\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n className=\"h-6 w-6\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </button>\n </div>\n </Transition>\n )\n}\n","import React from 'react';\nimport type { Toast } from \"../../types\";\nimport { useToast } from \"../../lib/toast\";\nimport ToastItem from \"./ToastItem\";\n\nexport default function Toasts() {\n const { toasts } = useToast();\n\n return (\n <div className=\"fixed bottom-4 right-4 z-[120] flex flex-col gap-6\">\n {toasts.map((toast: Toast) => (\n <ToastItem {...toast} key={toast._id} />\n ))}\n </div>\n );\n}\n","import React from 'react';\nimport { Fragment } from 'react';\nimport { Dialog, Transition } from '@headlessui/react';\n\ninterface Props {\n children: React.ReactNode;\n isActive?: boolean;\n onClose: () => void;\n title?: string;\n width?: string;\n className?: string;\n}\n\nexport default function Modal({ children, isActive = false, onClose, title, width = '', className = '' }: Props) {\n return (\n <Transition.Root show={isActive} as={Fragment}>\n <Dialog as=\"div\" className=\"fixed z-[110] inset-0 overflow-y-auto\" onClose={onClose}>\n <div className=\"flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0\">\n <Transition.Child\n as={Fragment}\n enter=\"ease-out duration-300\"\n enterFrom=\"opacity-0\"\n enterTo=\"opacity-100\"\n leave=\"ease-in duration-200\"\n leaveFrom=\"opacity-100\"\n leaveTo=\"opacity-0\"\n >\n <Dialog.Overlay className=\"fixed inset-0 bg-gray-500 bg-opacity-75 transition-opacity\" />\n </Transition.Child>\n\n <Transition.Child\n as={Fragment}\n enter=\"ease-out duration-300\"\n enterFrom=\"opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95\"\n enterTo=\"opacity-100 translate-y-0 sm:scale-100\"\n leave=\"ease-in duration-200\"\n leaveFrom=\"opacity-100 translate-y-0 sm:scale-100\"\n leaveTo=\"opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95\"\n >\n <div className={`${className} w-full align-start inline-block bg-white rounded-lg px-4 pt-5 pb-4 text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-7xl sm:p-6 ${width}`}>\n <div className={`flex gap-4 mb-4 text-secondary ${title ? 'border-b-2 border-secondary pb-4' : ''}`}>\n {title && <h3 className=\"font-black text-lg\">{title}</h3>}\n <button type=\"button\" onClick={onClose} className=\"ml-auto transition-all hover:opacity-50\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"h-6 w-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={2}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n </div>\n <div>{children}</div>\n </div>\n </Transition.Child>\n </div>\n </Dialog>\n </Transition.Root>\n );\n}\n","import React from 'react';\n\ninterface Props extends React.DetailedHTMLProps<React.TableHTMLAttributes<HTMLTableElement>, HTMLTableElement> {\n children: React.ReactNode;\n}\n\nexport default function Table({ children, ...props }: Props) {\n return (\n <div className=\"-my-2 -mx-4 overflow-x-auto sm:-mx-6 lg:-mx-8 text-sm\">\n <div className=\"inline-block min-w-full py-2 align-middle md:px-6 lg:px-8\">\n <div className=\"overflow-hidden shadow ring-1 ring-black ring-opacity-5 md:rounded-lg\">\n <table {...props} className=\"min-w-full divide-y divide-gray-300\">\n {children}\n </table>\n </div>\n </div>\n </div>\n )\n}\n","import React from 'react';\n\ninterface Props {\n children: React.ReactNode;\n className?: string;\n}\n\nexport default function TableActions({ children, className = '' }: Props) {\n return (\n <div className={`${className} flex gap-4 justify-end items-center`}>\n {children}\n </div>\n )\n}\n","import cn from 'classnames';\nimport React from 'react';\n\ninterface Props extends React.DetailedHTMLProps<React.HTMLAttributes<HTMLTableSectionElement>, HTMLTableSectionElement> {\n children: React.ReactNode;\n className?: string;\n}\n\nexport default function TableBody({ children, className, ...props }: Props) {\n return (\n <tbody {...props} className={cn(className, 'divide-y divide-gray-200 bg-white')}>\n {children}\n </tbody>\n )\n}\n","import React from 'react';\nimport cn from 'classnames';\n\ninterface Props extends React.DetailedHTMLProps<React.TdHTMLAttributes<HTMLTableDataCellElement>, HTMLTableDataCellElement> {\n children: React.ReactNode;\n className?: string;\n condensed?: true;\n}\n\nexport default function TableCell({ children, className, condensed, ...props }: Props) {\n return (\n <td {...props} className={cn(className, 'px-3 py-3 text-sm text-gray-500', {\n 'w-0 whitespace-nowrap': condensed,\n })}>\n {children}\n </td>\n )\n}\n","import React from 'react';\nimport cn from 'classnames';\n\ninterface Props extends React.DetailedHTMLProps<React.HTMLAttributes<HTMLTableSectionElement>, HTMLTableSectionElement> {\n children: React.ReactNode;\n className?: string;\n}\n\nexport default function TableHead({ children, className, ...props }: Props) {\n return (\n <thead {...props} className={cn(className, 'px-3 py-4 text-sm text-white bg-table-header-background')}>\n {children}\n </thead>\n )\n}\n","import React from 'react';\nimport { Link } from '@inertiajs/react';\nimport cn from 'classnames';\n\ninterface Props extends React.DetailedHTMLProps<React.ThHTMLAttributes<HTMLTableHeaderCellElement>, HTMLTableHeaderCellElement> {\n children: React.ReactNode;\n className?: string;\n textAlign?: 'left' | 'right' | 'center';\n sort?: string;\n condensed?: true;\n}\n\nexport default function TableHeader({\n children,\n className = '',\n sort,\n textAlign = 'left',\n condensed,\n ...props\n}: Props) {\n const [sortLink, setSortLink] = React.useState<string>('');\n\n React.useEffect(() => {\n if (typeof window !== 'undefined' && sort) {\n const query = new URLSearchParams(window.location.search);\n\n let direction: 'asc' | 'desc' = 'asc';\n\n if (query.get('sort')) {\n // Choose the opposite direction for sorting\n direction = query.get('sort')?.includes('asc') ? 'desc' : 'asc';\n }\n\n query.set('sort', `${sort} ${direction}`);\n\n setSortLink(`?${query.toString()}`);\n }\n }, []);\n\n const textAlignClass =\n (textAlign === 'center' && 'text-center justify-center') ||\n (textAlign === 'right' && 'text-right justify-end') ||\n 'text-left justify-between';\n\n return (\n <th {...props} className={cn(className, 'py-3.5 px-3 text-sm font-semibold text-left', {\n 'w-0 whitespace-nowrap': condensed,\n })}>\n <div className={`flex items-center gap-3 ${textAlignClass}`}>\n {children}\n {sort && (\n <Link href={sortLink}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-5 w-5\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M8 9l4-4 4 4m0 6l-4 4-4-4\"\n />\n </svg>\n </Link>\n )}\n </div>\n </th>\n );\n}\n","import React from 'react';\nimport cn from 'classnames';\n\ninterface Props extends React.DetailedHTMLProps<React.HTMLAttributes<HTMLTableRowElement>, HTMLTableRowElement> {\n children: React.ReactNode;\n className?: string;\n onClick?: (e?: React.SyntheticEvent) => void;\n}\n\nexport default function TableRow({ children, className = '', onClick = () => {}, ...props }: Props) {\n const bgClass = className.includes('bg') ? '' : 'bg-white even:bg-table-row-alternative-background'\n\n return (\n <tr {...props} className={cn(className, bgClass, 'hover:bg-gray-100')} onClick={(e) => onClick(e)}>\n {children}\n </tr>\n )\n}\n","import React from 'react';\nimport { calculateAge } from '../../lib';\nimport { padStart } from 'lodash';\n\ninterface Props {\n name?: string;\n id?: string;\n onChange: (dateString: string) => void;\n value?: string;\n maxYear?: number;\n showAge?: boolean;\n isRequired?: boolean;\n}\n\nexport default function DateOfBirthField({\n name = 'dob',\n id = 'dob',\n onChange,\n value,\n maxYear = 0,\n showAge = false,\n isRequired = true\n}: Props) {\n const dayOptions = [...Array.from(Array(31).keys())].map(value => {\n return padStart(`${value + 1}`, 2, '0');\n });\n\n const months = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ];\n const monthOptions = [...Array.from(Array(12).keys())].map(value => {\n return {\n title: months[value],\n value: padStart(`${value + 1}`, 2, '0'),\n };\n });\n\n // Create 100 years of options, subtracting the maximum year if provided\n const yearOptions = [...Array.from(Array(100).keys())].map(value => {\n return maxYear ? maxYear - value : new Date().getFullYear() - value;\n });\n\n function handleChange(\n e: React.ChangeEvent<\n HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement\n >\n ) {\n const { name, value } = e.currentTarget;\n\n let y = name.includes('year') ? value : year;\n let m = name.includes('month') ? value : month;\n let d = name.includes('day') ? value : day;\n\n onChange(`${y}-${m}-${d}`);\n }\n\n const [year, month, day] = value ? value.split('-') : ['', '', ''];\n const isValidDate =\n year && month && day && !isNaN(Date.parse(`${year}-${month}-${day}`));\n\n const styleReq = {\n backgroundPosition: 'top 10px right 3px, center right 10px',\n }\n\n const style = {\n backgroundPosition: 'right 0.5rem center',\n paddingRight: '1.5rem'\n }\n\n return (\n <span className=\"flex flex-col gap-2\">\n <span className=\"flex w-full border border-gray-300 rounded-lg bg-white\">\n <select\n name={`${name}_day`}\n id={`${id}_day`}\n value={day}\n className=\"flex-grow focus:outline-none border-0 !mr-[3px] lg:pl-4 xl:pl-2\"\n onChange={handleChange}\n required={isRequired}\n style={isRequired ? styleReq : style}\n >\n <option value=\"\">Day</option>\n {dayOptions.map(option => (\n <option key={option} value={option}>\n {option}\n </option>\n ))}\n </select>\n <select\n name={`${name}_month`}\n id={`${id}_month`}\n value={month}\n className=\"flex-grow focus:outline-none border-0 !mr-[3px] lg:pl-4 xl:pl-2\"\n onChange={handleChange}\n required={isRequired}\n style={isRequired ? styleReq : style}\n >\n <option value=\"\">Month</option>\n {monthOptions.map(option => (\n <option key={option.value} value={option.value}>\n {option.title}\n </option>\n ))}\n </select>\n <select\n name={`${name}_year`}\n id={`${id}_year`}\n value={year}\n className=\"flex-grow focus:outline-none border-0 !mr-[3px] lg:pl-4 xl:pl-2\"\n onChange={handleChange}\n required={isRequired}\n style={isRequired ? styleReq : style}\n >\n <option value=\"\">Year</option>\n {yearOptions.map(option => (\n <option key={option} value={option}>\n {option}\n </option>\n ))}\n </select>\n </span>\n {showAge && value && isValidDate && (\n <span className=\"font-bold\">Age: {calculateAge(value)} years</span>\n )}\n </span>\n );\n}\n","import React from 'react';\nimport { formatMoney, formatNumber } from \"../../lib\";\n\ninterface Props {\n value?: number;\n onChange: (value: number) => void;\n id?: string;\n name?: string;\n className?: string;\n required?: boolean;\n}\n\nexport default function MoneyField({ value = 0, onChange, name = 'value', id = 'value', className = '', required = false }: Props) {\n function handleChange(e: React.SyntheticEvent<HTMLInputElement>) {\n let newValue: number = 0;\n\n if (e.currentTarget.value) {\n newValue = formatNumber(e.currentTarget.value);\n\n if (isNaN(newValue)) {\n newValue = 0;\n }\n }\n\n onChange(newValue);\n }\n\n const displayValue = formatMoney(value, 0);\n\n return (\n <div className={`${className} flex items-center gap-2 pl-4 rounded-md border border-gray-300 transition-all focus-within:border-primary focus-within:outline-none focus-within:ring focus-within:ring-primary focus-within:ring-opacity-50`}>\n <span className=\"font-bold pr-2\">$</span>\n <input\n type=\"text\"\n name={name}\n id={id}\n value={displayValue}\n onChange={handleChange}\n className=\"w-full !focus:outline-none !focus:ring-0 !focus:ring-transparent !focus:ring-opacity-0 !ring-0 !border-0 !transition-none !rounded-l-none\"\n required={required}\n />\n </div>\n );\n\n}\n","import React from 'react';\nimport { sanitiseVehicleType } from '../../lib';\nimport {\n ApiResponse,\n FormStatus,\n MotorwebVehicleResponse,\n VehicleType,\n} from '../../types';\nimport { useToast } from '../../lib/toast';\nimport cn from 'classnames';\n\nexport interface VehicleData extends MotorwebVehicleResponse {\n make: string;\n model: string;\n year: string;\n vehicle_type: VehicleType;\n is_heavy: boolean;\n}\n\nexport interface RegistrationSearchOnChange {\n registration: string;\n}\n\ninterface Props {\n name?: string;\n onChange?: (values: RegistrationSearchOnChange) => void;\n onVehicleDataFound: (vehicleData: VehicleData) => void;\n apiUrl?: string;\n showOdometerReadingField?: boolean;\n showConditionField?: boolean;\n initialRegistrationValue?: string;\n outerClassName?: string;\n odoInputClassName?: string;\n conditionSelectClassName?: string;\n regoInputClassName?: string;\n searchBtnClassName?: string;\n}\n\nexport const conditionOptions = [\n 'POOR',\n 'FAIR',\n 'AVERAGE',\n 'GOOD',\n 'VERY_GOOD',\n 'AS_NEW',\n 'NEW',\n];\n\nexport default function RegistrationSearchField({\n name = 'registration_search',\n initialRegistrationValue = '',\n onVehicleDataFound,\n apiUrl = '/api/rego-search',\n showOdometerReadingField = false,\n showConditionField = false,\n onChange,\n outerClassName,\n odoInputClassName,\n conditionSelectClassName,\n regoInputClassName,\n searchBtnClassName,\n}: Props) {\n const [rego, setRego] = React.useState<string>(initialRegistrationValue);\n const [odo, setOdo] = React.useState<string>('');\n const [condition, setCondition] = React.useState<string>('GOOD');\n\n const [status, setStatus] = React.useState<FormStatus>('idle');\n const { addToast } = useToast();\n\n function handleChange(\n e: React.SyntheticEvent<HTMLInputElement | HTMLSelectElement>\n ) {\n if (e.currentTarget.name === name) {\n setRego(e.currentTarget.value?.toUpperCase() || '');\n }\n\n if (e.currentTarget.name === 'odo_search') {\n setOdo(e.currentTarget.value);\n }\n\n if (e.currentTarget.name === 'condition_search') {\n setCondition(e.currentTarget.value);\n }\n\n if (onChange) {\n onChange({ registration: e.currentTarget.value.toUpperCase() });\n }\n }\n\n function handleKeydown(e: React.KeyboardEvent) {\n if (e.key === 'Enter') {\n handleSearch();\n }\n }\n\n async function handleSearch() {\n setStatus('processing');\n\n const payload = {\n registration: rego,\n odometerReading: odo,\n condition,\n };\n\n // Turn the payload in to a query string\n // @ts-ignore\n const query = new URLSearchParams(payload).toString();\n\n const res = await fetch(`${apiUrl}?${query}`, {\n headers: { 'Content-Type': 'application/json' },\n });\n\n if (!res.ok) {\n addToast({\n message: `There was an error with the provided registration.`,\n status: 'error',\n timeout: 3000,\n });\n setStatus('error');\n return;\n }\n\n const { data, ok }: ApiResponse<MotorwebVehicleResponse> = await res.json();\n\n if (!ok || !data) {\n addToast({\n message: `Failed to find vehicle, please complete manually.`,\n status: 'error',\n timeout: 3000,\n });\n setStatus('error');\n return;\n }\n\n const vehicleData = data.data.vehicle;\n\n const make = vehicleData.make;\n const model = vehicleData.model;\n const year = vehicleData['year-of-manufacture'];\n const weight = vehicleData['gross-vehicle-mass']\n ? parseInt(vehicleData['gross-vehicle-mass'].replaceAll(',', ''))\n : 0;\n const vehicleType = vehicleData['vehicle-type'];\n\n if (!make || !model || !year || !vehicleType) {\n addToast({\n message: `We couldn't find all of your data, please complete manually.`,\n status: 'error',\n timeout: 3000,\n });\n setStatus('error');\n }\n\n onVehicleDataFound({\n ...data,\n make: make || '',\n model: model || '',\n year: year || '',\n vehicle_type: vehicleType ? sanitiseVehicleType(vehicleType) : 'car',\n is_heavy: (weight && weight > 3500) || false,\n });\n\n setStatus('success');\n }\n\n return (\n <div className=\"w-full flex flex-col\">\n <div className={cn(outerClassName, \"w-full flex flex-wrap gap-3 bg-gray-100 rounded-md p-3\")}>\n {showOdometerReadingField ||\n (showConditionField && (\n <div className=\"w-full grid grid-cols-2 gap-3\">\n {showOdometerReadingField && (\n <label>\n Approx. km travelled\n <input\n onKeyDown={handleKeydown}\n type=\"number\"\n name=\"odo_search\"\n id=\"odo_search\"\n value={odo}\n onChange={handleChange}\n className={cn(odoInputClassName, \"transition-all\", {\n 'pointer-events-none opacity-50': status === 'processing',\n })}\n disabled={status === 'processing'}\n />\n </label>\n )}\n\n {showConditionField && (\n <label>\n Vehicle condition\n <select\n name=\"condition_search\"\n id=\"condition_search\"\n value={condition}\n onChange={handleChange}\n className={cn(conditionSelectClassName, \"transition-all\", {\n 'pointer-events-none opacity-50': status === 'processing',\n })}\n disabled={status === 'processing'}\n >\n {conditionOptions.map(conditionOption => (\n <option key={conditionOption}>{conditionOption}</option>\n ))}\n </select>\n </label>\n )}\n </div>\n ))}\n\n <input\n onKeyDown={handleKeydown}\n placeholder=\"Search for your rego\"\n type=\"text\"\n name={name}\n id={name}\n value={rego}\n onChange={handleChange}\n className={cn(regoInputClassName, \"flex-grow transition-all\", {\n 'pointer-events-none opacity-50': status === 'processing',\n })}\n disabled={status === 'processing'}\n />\n\n <button\n title=\"Search\"\n type=\"button\"\n onClick={handleSearch}\n disabled={status === 'processing'}\n className={cn(searchBtnClassName, \"bg-primary px-4 py-3 rounded-md transition-all\")}\n >\n <span className=\"sr-only\">Search</span>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-5 w-5 text-white\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"\n />\n </svg>\n </button>\n </div>\n </div>\n );\n}\n","import React from 'react';\nimport { Button } from '../common';\nimport { useQuoteRequestForm } from '../../lib';\n\ninterface Props {\n populatePurchaseOptions: boolean;\n}\n\nexport default function FormTester({ populatePurchaseOptions = false }: Props) {\n const { form } = useQuoteRequestForm();\n const [keys, setKeys] = React.useState<string[]>([]);\n const [isDev, setDev] = React.useState<boolean>(false);\n\n function handlePopulate() {\n form?.setData(prevData => ({\n ...prevData,\n first_name: 'TEST',\n last_name: 'TEST',\n email: 'dev@sual.co.nz',\n phone: '021 234 5678',\n mobile: '021 234 5678',\n dob: '1990-01-01',\n licence: 'Other',\n licence_other: 'Test',\n club_id: 50,\n club_membership_number: '12345',\n street_address: {\n address: '123 Street Name',\n unit: 'Level 1',\n suburb: 'Suburb',\n city: 'Auckland',\n post_code: '1234',\n },\n promo_code: 'TEST',\n declaration: {\n had_incident: true,\n incidents: [\n {\n description: 'Lorem ipsum dolor sit amet.',\n month: 'January',\n year: '2020',\n },\n ],\n has_demerit_points: true,\n demerit_points: '1-24',\n has_lost_licence: true,\n lost_licence_details: 'Lorem ipsum dolor sit amet.',\n was_refused_insurance: true,\n refused_insurance_details: 'Lorem ipsum dolor sit amet.',\n has_criminal_conviction: true,\n criminal_conviction_details: 'Lorem ipsum dolor sit amet.',\n has_vehicle_modifications: true,\n vehicle_modifications_details: 'Lorem ipsum dolor sit amet.',\n has_previous_insurer: true,\n previous_insurer_details: 'AA',\n previous_insurer_expires_at: '2020-01-01',\n additional_details:\n 'I am a robot, beep boop. Please ignore this submission.',\n },\n vehicles: [\n {\n make: 'Tesla',\n model: 'Cybertruck',\n year: '2023',\n registration: 'ELMUSK',\n vehicle_type: 'car',\n product: 'star-enthusiast-prestige-everyday-plus',\n value: 100000,\n is_heavy: false,\n usage: 'Childrens car',\n storage_location: 'Carport',\n has_financially_interested_party: true,\n financially_interested_party_detail: 'MTA',\n owned_duration: 'Less than 12 months',\n main_driver: 'TEST TEST',\n drivers: [\n {\n first_name: 'X Æ',\n last_name: 'A-12',\n dob: '2000-05-04',\n licence: 'Other',\n licence_other: 'None',\n relationship: 'Child',\n key: 'driver-test-key',\n },\n ],\n key: 'vehicle-test-key',\n },\n ],\n purchase_options: populatePurchaseOptions\n ? [\n {\n premium_type: 'annual',\n level_of_insurance_id: 12,\n authorised_drivers: 'TEST',\n excess_details: 'TEST',\n terms: 'TEST',\n description: 'This is a test purchase option',\n premium: 100000,\n monthly_premium: 8500,\n show_monthly: true,\n fsl: 100,\n sort_order: 1,\n enhancements: [\n {\n name: 'Test enhancement',\n premium: 2500,\n disable_rounding: false,\n description: 'Test enhancement',\n auto_select: true,\n key: 'enhancement-test-key-1',\n },\n {\n name: 'Test enhancement',\n premium: 5000,\n disable_rounding: false,\n description: 'Test enhancement',\n auto_select: false,\n key: 'enhancement-test-key-2',\n },\n ],\n key: 'purchase-option-test-key-annual',\n },\n {\n premium_type: 'total-due',\n level_of_insurance_id: 13,\n authorised_drivers: 'TEST',\n excess_details: 'TEST',\n terms: 'TEST',\n description: 'This is a test purchase option',\n premium: 100000,\n show_monthly: false,\n fsl: 100,\n sort_order: 2,\n enhancements: [\n {\n name: 'Test enhancement',\n premium: 2500,\n disable_rounding: false,\n description: 'Test enhancement',\n auto_select: true,\n key: 'enhancement-test-key-3',\n },\n {\n name: 'Test enhancement',\n premium: 5000,\n disable_rounding: false,\n description: 'Test enhancement',\n auto_select: false,\n key: 'enhancement-test-key-4',\n },\n ],\n key: 'purchase-option-test-key-total-due',\n },\n ]\n : [],\n }));\n }\n\n function handleKeydown(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n return setKeys([]);\n }\n\n setKeys(prevKeys => [...prevKeys, e.key]);\n }\n\n React.useEffect(() => {\n // Detect when the user has typed the word \"debug\"\n if (keys.join('') === 'debug') {\n handlePopulate();\n }\n }, [keys]);\n\n React.useEffect(() => {\n if (typeof window !== 'undefined') {\n if (\n window.location.href.includes('dev') ||\n window.location.href.includes('localhost') ||\n window.location.href.includes('test') ||\n window.location.href.includes('local')\n ) {\n setDev(true);\n }\n\n window.addEventListener('keydown', (e: KeyboardEvent) =>\n handleKeydown(e)\n );\n\n return () => {\n window.removeEventListener('keydown', (e: KeyboardEvent) =>\n handleKeydown(e)\n );\n };\n }\n\n return;\n }, []);\n\n if (isDev) {\n return (\n <Button\n onClick={handlePopulate}\n type=\"button\"\n status=\"primary\"\n className=\"fixed bottom-4 right-4\"\n >\n Populate data\n </Button>\n );\n }\n\n return <></>;\n}\n","import React from 'react';\nimport { ErrorBag, Errors } from '@inertiajs/core';\nimport { Card } from '../common';\n\ninterface Props {\n heading?: string;\n errors?: Errors & ErrorBag;\n renderKeys?: boolean;\n className?: string;\n}\n\nexport default function ErrorList({\n heading = 'There was an error with your submission.',\n errors = {},\n renderKeys = false,\n className = '',\n}: Props) {\n if (Object.values(errors).length === 0) {\n return <></>;\n }\n\n return (\n <aside className={`${className} col-span-full`}>\n <Card className=\"border border-red-500 !bg-red-50\">\n <h2 className=\"font-black text-red-500 mb-2\">{heading}</h2>\n <ul className=\"space-y-2 list-disc ml-4\">\n {Object.entries(errors).map(([field, message]) => (\n <li className=\"font-bold text-red-500\" key={field}>\n {renderKeys && <strong>{field}: </strong>}\n {message}\n </li>\n ))}\n </ul>\n </Card>\n </aside>\n );\n}\n","import { Link } from \"@inertiajs/react\";\nimport React from \"react\";\nimport { HiArrowLeft } from \"react-icons/hi2\";\nimport { usePage } from \"../../lib/page\";\nimport cn from 'classnames';\n\nexport function BackButton({ back, className }: { back?: string | boolean; className?: string; }) {\n const [backUrl, setBackUrl] = React.useState<string | undefined>(typeof back === 'string' ? back : undefined);\n const { breadcrumbs } = usePage().props;\n\n /**\n * Set the back URL on mount\n */\n React.useEffect(() => {\n if (typeof window !== 'undefined') {\n if (!breadcrumbs) return;\n // Set back button URL\n if (back && typeof back === 'boolean') {\n // If we haven't provided a path as a prop, use the last breadcrumb that's not the current one\n const crumb = breadcrumbs.slice(breadcrumbs.length - 2, breadcrumbs.length - 1);\n if (crumb && crumb.length === 1) {\n // Strip off everything but the path so the <Link> component works\n const url = crumb[0].url;\n if (url) {\n setBackUrl(new URL(url).pathname);\n }\n }\n }\n }\n }, [breadcrumbs]);\n\n return (\n <Link href={backUrl || '/'} className={cn(className, 'flex items-center justify-center text-back-button-text hover:text-primary transition-all')}>\n <HiArrowLeft className=\"h-5 w-5 stroke-[1.25]\" />\n </Link>\n );\n}","import { router } from \"@inertiajs/react\";\nimport React from \"react\";\nimport { HiMagnifyingGlass, HiXMark } from \"react-icons/hi2\";\nimport { useClickOutside } from \"../../lib\";\n\ninterface Props {\n search?: string;\n active: boolean;\n onActive: Function;\n placeholder?: string;\n focusSearchShortcut?: boolean;\n}\n\nexport default function SearchBar({ search, active, onActive, placeholder, focusSearchShortcut = false }: Props) {\n const [query, setQuery] = React.useState<string>('');\n\n const searchRef = React.useRef<HTMLDivElement | null>(null);\n\n /**\n * Populate search input on load\n */\n React.useEffect(() => {\n if (typeof window !== 'undefined') {\n // Populate search\n const search = new URLSearchParams(window.location.search);\n\n const q = search.get('search') as string;\n\n if (q) {\n setQuery(q);\n onActive(true);\n }\n }\n\n const listener = (e: KeyboardEvent) => {\n if (focusSearchShortcut && e.key === '/') {\n e.preventDefault();\n onActive(true);\n }\n\n if (e.key === 'Escape') {\n onActive(false);\n }\n };\n\n window.addEventListener('keydown', listener);\n\n return () => {\n window.removeEventListener('keydown', listener);\n };\n }, [focusSearchShortcut]);\n\n /**\n * Minimise the search bar on click outside if there's no search query\n */\n useClickOutside(searchRef, () => {\n if (!query) {\n onActive(false);\n }\n });\n\n /**\n * Handle the search function\n */\n function handleSearch(e?: React.FormEvent, queryOverride?: string) {\n e?.preventDefault();\n\n if (typeof search !== 'string') return;\n\n let path: string = search;\n if (path[0] !== '/') {\n path = `/${path}`;\n }\n\n const params = new URLSearchParams(window?.location.search);\n params.set('search', queryOverride ?? query);\n params.set('page', '1');\n\n router.get(`${path}?${params.toString()}`);\n }\n\n return (\n <div ref={searchRef} className=\"\">\n {!active && (\n <button\n title=\"Open Search Bar\"\n type=\"button\"\n onClick={() => onActive(true)}\n className=\"flex items-center justify-center rounded-full hover:text-primary p-1 hover:bg-gray-100\"\n >\n <HiMagnifyingGlass className=\"h-5 w-5 stroke-[1.25]\" />\n </button>\n )}\n {active && (\n <form\n onSubmit={handleSearch}\n className=\"group flex items-center gap-2 rounded-full bg-white pr-4 pl-1 shadow transition-all focus-within:outline-none focus-within:ring-1 focus-within:ring-primary\"\n >\n <input\n type=\"text\"\n name=\"search\"\n id=\"search\"\n value={query}\n onChange={(e) => setQuery(e.currentTarget.value || '')}\n className=\"!focus:border-0 !border-0 !bg-transparent !shadow-none !ring-opacity-0 !transition-none placeholder:text-gray-400 !py-1.5 text-sm\"\n autoFocus\n placeholder={placeholder}\n />\n {query && (\n <button\n type=\"button\"\n title=\"Clear Search\"\n onClick={() => {\n setQuery('');\n handleSearch(undefined, '');\n }}\n >\n <HiXMark className=\"h-5 w-5\" />\n </button>\n )}\n <button type=\"submit\">\n <HiMagnifyingGlass className=\"h-5 w-5\" />\n </button>\n </form>\n )}\n </div>\n );\n}\n","import React from \"react\";\nimport { Tooltip } from 'react-tooltip';\nimport { Link, router } from \"@inertiajs/react\";\nimport { TPageHeaderAction } from \"../../types\";\nimport {useClickOutside} from \"../../lib\";\n\nexport default function Action({ title, href, as = 'Link', target = '_self', type, onClick = () => {}, shortcutKey, actions }: TPageHeaderAction) {\n const className =\n 'bg-white rounded-full font-bold px-4 py-1.5 text-sm whitespace-nowrap hover:bg-gray-100 hover:border-gray-400 transition-colors border border-gray-300';\n\n const tooltipId = `action-${title}`;\n const tooltipContent = shortcutKey ? `Ctrl + ${shortcutKey}` : undefined;\n\n const actionButtonRef = React.useRef(null);\n const isActionsButton = actions && actions.length > 0;\n const actionsButtonClassName = 'relative cursor-pointer ' + className;\n const [isInnerActionVisible, setIsInnerActionVisible] = React.useState(false);\n\n const toggleActionsMenu = () => {\n setIsInnerActionVisible(!isInnerActionVisible);\n };\n\n useClickOutside(actionButtonRef, () => setIsInnerActionVisible(false));\n\n function runAction() {\n if (as === 'Link' && href) {\n return router.get(href);\n }\n\n if (as === 'a' && href) {\n return window.location.href = href;\n }\n\n onClick();\n };\n\n React.useEffect(() => {\n if (typeof window === 'undefined') return;\n if (!shortcutKey) return;\n\n const listener = (e: KeyboardEvent) => {\n // Check if Ctrl (Windows) or Cmd (Mac) key is pressed\n const isCtrlOrCmdPressed = (e.ctrlKey || e.metaKey);\n\n // Check if the focus is on an input element or inside a form\n const isInInput = e.target instanceof HTMLInputElement || e.target instanceof HTMLTextAreaElement || e.target instanceof HTMLSelectElement;\n const isInForm = (e.target instanceof Element && e.target.closest('form'));\n\n if (isCtrlOrCmdPressed && !isInInput && !isInForm && e.key === shortcutKey) {\n e.preventDefault();\n runAction();\n }\n };\n\n window.addEventListener('keydown', listener);\n\n return () => {\n window.removeEventListener('keydown', listener);\n };\n }, [shortcutKey]);\n\n if (isActionsButton) {\n return (\n <>\n {tooltipContent && <Tooltip id={tooltipId} className=\"z-10\" />}\n <div\n ref={actionButtonRef}\n data-tooltip-id={tooltipId}\n data-tooltip-content={tooltipContent}\n className={actionsButtonClassName}\n onClick={toggleActionsMenu}>\n {title}\n {isInnerActionVisible && (\n <div className=\"absolute top-[120%] right-[-20%] z-10\">\n <div className=\"flex flex-col gap-2 bg-white rounded-lg shadow-xl p-3\">\n {actions && actions.map((action, index) => {\n if (action.hidden) return null;\n\n return (\n <Action\n key={index}\n title={action.title}\n as={action.as}\n href={action.href}\n target={action.target}\n onClick={action.onClick}\n type={'button'}\n />\n );\n })}\n </div>\n </div>\n )}\n </div>\n </>\n );\n }\n\n if (as === 'Link' && href) {\n return (\n <>\n {tooltipContent && <Tooltip id={tooltipId} className=\"z-10\" />}\n <Link data-tooltip-id={tooltipId} data-tooltip-content={tooltipContent} className={className} href={href} onClick={() => onClick()}>\n {title}\n </Link>\n </>\n );\n }\n\n if (as === 'a' && href) {\n return (\n <>\n {tooltipContent && <Tooltip id={tooltipId} className=\"z-10\" />}\n <a data-tooltip-id={tooltipId} data-tooltip-content={tooltipContent} className={className} target={target} href={href} onClick={() => onClick()}>\n {title}\n </a>\n </>\n );\n }\n\n return (\n <>\n {tooltipContent && <Tooltip id={tooltipId} className=\"z-10\" />}\n <button data-tooltip-id={tooltipId} data-tooltip-content={tooltipContent} className={className} type={type} onClick={() => onClick()}>\n {title}\n </button>\n </>\n );\n}\n","import React from \"react\";\n\nimport { useClickOutside } from \"../../lib\";\n\ntype Props = {\n onClose: Function;\n active: boolean;\n title: React.ReactNode;\n children: React.ReactNode;\n}\n\nfunction Dropdown({ onClose, active, title, children }: Props) {\n const ref = React.useRef<HTMLDivElement | null>(null);\n const innerRef = React.useRef<HTMLDivElement | null>(null);\n\n useClickOutside(ref, () => onClose(false));\n\n React.useEffect(() => {\n const current = ref?.current;\n const innerCurrent = innerRef.current;\n\n current?.classList.toggle('active', active)\n\n if (!current || !innerCurrent) return;\n\n const pos = current?.getBoundingClientRect();\n innerCurrent.style.setProperty('left', `${pos?.left}px`)\n }, [active, ref.current, innerRef.current]);\n\n return (\n <div ref={ref} className=\"static inline-block\">\n {title}\n\n {active && (\n <div ref={innerRef} className=\"absolute children z-10 flex flex-col\">\n {children}\n </div>\n )}\n </div>\n );\n};\n\nexport default Dropdown;\n","import { router } from \"@inertiajs/react\";\nimport { format, subYears } from \"date-fns\";\nimport React from \"react\";\nimport { FilterOption, FilterValue } from \"../../types\";\nimport Select from 'react-select';\nimport { HiChevronDown } from \"react-icons/hi2\";\nimport Dropdown from \"./Dropdown\";\nimport cn from 'classnames';\nimport { Button } from \"../common\";\n\nexport function FilterItem({ filter }: { filter: FilterOption, path?: string }) {\n const [isOpen, setOpen] = React.useState<boolean>(false);\n const [selected, setSelected] = React.useState<string[]>([]);\n\n const [selectedOptions, setSelectedOptions] = React.useState<FilterValue[]>([]); // Filter type: select\n const hasFilters = selected.length > 0;\n\n // Populate values on load\n React.useEffect(() => {\n if (typeof window !== 'undefined') {\n const search = new URLSearchParams(window.location.search);\n\n if (filter.type === 'date') {\n const fromDate = search.get(`${filter.name}[from]`);\n const toDate = search.get(`${filter.name}[to]`);\n if (fromDate && toDate) {\n setSelected([fromDate, toDate]);\n }\n } else if (filter.type === 'greaterThan') {\n const selectedFromUrl = search.getAll(`${filter.name}-GTE`);\n if (selectedFromUrl) {\n setSelected(selectedFromUrl);\n }\n } else if (filter.type === 'scope') {\n const selectedFromUrl = search.getAll(`scope${filter.name}`);\n if (selectedFromUrl) {\n setSelected(selectedFromUrl);\n }\n } else if (filter.type === 'select') {\n const selectedFromUrl = search.getAll(`${filter.name}[]`);\n if (selectedFromUrl) {\n setSelected(selectedFromUrl);\n const selectedOptions = filter.options && filter.options.filter(item => selectedFromUrl.includes(item.value.toString()));\n selectedOptions && setSelectedOptions(selectedOptions);\n }\n } else {\n const selectedFromUrl = search.getAll(`${filter.name}[]`);\n if (selectedFromUrl) {\n setSelected(selectedFromUrl);\n }\n }\n }\n }, []);\n\n function handleInput(e: React.SyntheticEvent<HTMLInputElement>) {\n const { value, checked } = e.currentTarget;\n\n if (checked) {\n setSelected((curr) => [...curr, value]);\n } else {\n setSelected(selected.filter((f) => f !== value));\n }\n }\n\n function handleDateSelect(e: React.SyntheticEvent<HTMLInputElement>) {\n const { name, value } = e.currentTarget;\n\n // First value in \"selected\" will be the \"from\", second will be the \"to\"\n if (name.includes('from')) {\n return setSelected([value]);\n }\n\n if (name.includes('to')) {\n // Make sure we have a \"from\" value first\n if (selected.length === 0) {\n // We'll default to a year ago if nothing entered\n return setSelected([format(subYears(new Date(), 1), 'yyyy-MM-dd'), value]);\n }\n return setSelected([selected[0], value]);\n }\n\n return setSelected([]);\n }\n\n /**\n * Handle Select for FilterType: Select\n */\n const handleSelectedOptions = (options: FilterValue[] | any) => {\n setSelectedOptions(options);\n const selectedValues = options.map((option : FilterValue) => option.value.toString());\n\n if (selectedValues.length > 0) {\n setSelected(selectedValues);\n } else {\n setSelected([]);\n }\n };\n\n /**\n * For Filter Select\n * Removes the Clear Button\n */\n function NullComponent() {\n return null;\n }\n\n function handleSelect(e: React.SyntheticEvent<HTMLSelectElement>) {\n const { value } = e.currentTarget;\n\n if (value) {\n setSelected([value]);\n } else {\n setSelected([]);\n }\n }\n\n function handleText(e: React.SyntheticEvent<HTMLInputElement>) {\n const { value } = e.currentTarget;\n\n if (value) {\n setSelected([value]);\n } else {\n setSelected([]);\n }\n }\n\n function handleApply(e: React.FormEvent) {\n e.preventDefault();\n\n const search = new URLSearchParams(window.location.search);\n\n // Reset the page in the query\n search.set('page', '1');\n\n if (filter.type === 'date') {\n const [from, to] = selected;\n\n search.set(`${filter.name}[from]`, from ?? format(new Date(), 'yyyy-MM-dd'));\n search.set(`${filter.name}[to]`, to ?? format(new Date(), 'yyyy-MM-dd'));\n } else if (filter.type === 'greaterThan') {\n search.delete(`${filter.name}-GTE`);\n\n if (selected.length > 0) {\n search.set(`${filter.name}-GTE`, selected[0]);\n }\n } else if (filter.type === 'scope') {\n search.delete(`${filter.name}`);\n if (selected.length > 0) {\n search.set(`scope${filter.name}`, selected[0]);\n }\n } else {\n // Clear this filter first\n search.delete(`${filter.name}[]`);\n\n // Apply the filters to the query string\n selected.forEach((selectedValue) => {\n // Fall back to option equality filters\n search.append(`${filter.name}[]`, selectedValue);\n });\n }\n\n // Fetch new data\n router.get(`${window.location.pathname}?${search.toString()}`);\n }\n\n function handleClear() {\n const search = new URLSearchParams(window.location.search);\n\n // Reset the page in the query\n search.set('page', '1');\n\n // Clear this filter\n if (filter.type === 'date') {\n search.delete(`${filter.name}[from]`);\n search.delete(`${filter.name}[to]`);\n } else if (filter.type === 'greaterThan') {\n search.delete(`${filter.name}-GTE`);\n } else if (filter.type === 'scope') {\n search.delete(`scope${filter.name}`);\n } else {\n search.delete(`${filter.name}[]`);\n }\n\n // Fetch new data\n router.get(`${window.location.pathname}?${search.toString()}`);\n }\n\n function handleClick(force?: boolean) {\n if (typeof force === 'boolean') {\n return setOpen(force);\n }\n\n setOpen(!isOpen);\n }\n\n return (\n <Dropdown onClose={() => setOpen(!open)} active={isOpen} title={\n <div\n onClick={() => handleClick()}\n className={cn(\n 'flex rounded-2xl border hover:cursor-pointer hover:border-primary bg-gray-600 px-2 py-1 items-center justify-between shrink-0 gap-2 text-xs text-white hover:bg-primary transition-colors',\n {\n '!bg-primary border-primary': hasFilters,\n }\n )}>\n <p className=\"whitespace-nowrap\">{filter.label}</p>\n <HiChevronDown />\n </div>\n }>\n <form\n className={`mt-2 flex max-h-[350px] min-w-[200px] max-w-[260px] flex-col gap-2 rounded-md border border-gray-300 bg-white shadow-lg ${ filter.type && filter.type === 'select' ? '' : 'overflow-y-scroll'}`}\n onSubmit={handleApply}\n >\n <div className=\"flex flex-col items-start gap-1 p-4\">\n {(!filter.type || filter.type === 'options') &&\n filter.options?.map((option, i) => (\n <div className=\"checkbox text-sm \" key={`${option.label}-${i}`}>\n <input\n type=\"checkbox\"\n name={filter.name}\n id={option.label}\n value={option.value.toString()}\n checked={selected.includes(option.value.toString())}\n onChange={handleInput}\n />\n <label className=\"leading-tight\" htmlFor={option.label}>\n {option.label}\n </label>\n </div>\n ))}\n {filter.type === 'greaterThan' && filter.options && (\n <label className=\"mb-2 w-full\">\n <div className=\"text-sm\">Greater than or equal to</div>\n <select\n name={filter.name}\n id={filter.label}\n value={selected[0]}\n onChange={handleSelect}\n className=\"!p-2 text-sm w-full\"\n >\n <option value=\"\">Select option</option>\n {filter.options?.map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n </label>\n )}\n {filter.type === 'scope' && filter.options && (\n <label className=\"mb-2 w-full\">\n <select\n name={filter.name}\n id={filter.label}\n value={selected[0]}\n onChange={handleSelect}\n className=\"!p-2 text-sm w-full\"\n >\n <option value=\"\">Select option</option>\n {filter.options?.map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n </label>\n )}\n {filter.type === 'date' && (\n <div className=\"mb-2 flex flex-col gap-4 w-full\">\n <label className=\"text-xs w-full\">\n From\n <input\n type=\"date\"\n name={`${filter.name}[from]`}\n id={`${filter.name}[from]`}\n onChange={handleDateSelect}\n value={selected[0] ?? ''}\n className=\"!p-2 text-sm w-full\"\n />\n </label>\n <label className=\"text-xs w-full\">\n To\n <input\n type=\"date\"\n name={`${filter.name}[to]`}\n id={`${filter.name}[to]`}\n onChange={handleDateSelect}\n value={selected[1] ?? ''}\n className=\"!p-2 text-sm w-full\"\n />\n </label>\n </div>\n )}\n {filter.type === 'select' && filter.options && (\n <div className=\"w-full\">\n <Select\n isMulti\n options={filter.options}\n className=\"basic-multi-select text-xs w-52 !transition-none\"\n classNamePrefix=\"select\"\n onChange={handleSelectedOptions}\n components={{\n ClearIndicator: NullComponent, // Hide the ClearIndicator (X button) -> exits filter when clicked\n }}\n value={selectedOptions}\n theme={(theme) => ({\n ...theme,\n colors: {\n ...theme.colors,\n primary25: 'rgb(111, 199, 182)',\n primary: 'rgb(111, 199, 182)',\n },\n })}\n />\n </div>\n )}\n {filter.type === 'text' && (\n <div className={'w-full'}>\n <input\n type=\"text\"\n name={filter.name}\n placeholder={filter.label}\n value={selected[0] ?? ''}\n onChange={handleText}\n className=\"!p-2 text-sm w-full\"\n />\n </div>\n )}\n </div>\n <div className=\"bg-gray-100 border-t border-gray-200 flex items-center gap-2 p-4 bottom-0 sticky\">\n <Button type=\"button\" className=\"!min-w-[0px] flex-grow !px-2 text-sm !transition-none\" onClick={handleClear} small>\n Clear\n </Button>\n <Button type=\"submit\" status=\"primary\" className=\"!min-w-[0px] flex-grow !px-2 text-sm !transition-none\" small>\n Apply\n </Button>\n </div>\n </form>\n </Dropdown>\n );\n}\n","import React from 'react';\nimport cn from 'classnames';\nimport { FilterOption, TPageHeaderAction } from '../../types';\nimport { BackButton } from './Back';\nimport SearchBar from './SearchBar';\nimport Action from './Action';\nimport { FilterItem } from './FilterItem';\nimport { HiChevronLeft, HiChevronRight, HiXMark } from 'react-icons/hi2';\nimport { router } from '@inertiajs/core';\n\ninterface Props {\n title: string;\n search?: string;\n className?: string;\n innerClassName?: string;\n back?: boolean | string;\n actions?: TPageHeaderAction[];\n backText?: string;\n filterOptions?: FilterOption[];\n focusSearchShortcut?: boolean;\n children?: React.ReactNode;\n}\n\nexport default function PageHeader({\n title,\n search,\n className = '',\n innerClassName = '',\n back = true,\n actions = [],\n filterOptions = [],\n focusSearchShortcut = false,\n children\n}: Props) {\n const [isSearchActive, setSearchActive] = React.useState<boolean>(false);\n const scrollContainerRef = React.useRef<HTMLDivElement | null>(null);\n\n const [overScroll, setOverScroll] = React.useState<boolean>(false);\n\n const actionChildren: React.ReactNode[] = [];\n\n // Categorize children based on their type\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child)) {\n if (child.type === PageHeader.Action) {\n actionChildren.push(child);\n }\n }\n });\n\n React.useEffect(() => {\n const current = scrollContainerRef.current;\n if (!current) return;\n\n const listener = function() {\n const activeDropdown = current.querySelector('.active');\n if (!activeDropdown) return;\n\n const childrenContainer = activeDropdown.querySelector('.children');\n if (!childrenContainer) return;\n\n const pos = activeDropdown.getBoundingClientRect();\n\n const posChild = childrenContainer.getBoundingClientRect();\n const posContainer = current.getBoundingClientRect();\n\n // if the dropdown content moves outside the scroll container to the left, make it disappear\n if (posChild.left <= posContainer.left - 50) {\n // @ts-ignore\n childrenContainer.style.visibility = 'hidden';\n } else if (posChild.left >= posContainer.right - 50) {\n // @ts-ignore\n childrenContainer.style.visibility = 'hidden';\n } else {\n // @ts-ignore\n childrenContainer.style.visibility = 'visible';\n }\n\n // @ts-ignore\n childrenContainer.style.left = `${pos.left}px`;\n }\n\n const mouseListener = function(e: MouseEvent) {\n const pos = current.getBoundingClientRect();\n if (e.clientX > pos.left && e.clientX < pos.right && e.clientY > pos.top && e.clientY < pos.bottom) {\n setOverScroll(true);\n } else {\n setOverScroll(false);\n }\n };\n\n current.addEventListener('scroll', listener);\n document.addEventListener('mousemove', mouseListener)\n\n return () => {\n current.removeEventListener('scroll', listener);\n document.removeEventListener('mousemove', mouseListener)\n }\n }, []);\n\n React.useEffect(() => {\n const scrollListener = function(e: WheelEvent) {\n if (overScroll) {\n e.preventDefault();\n scrollContainerRef.current?.scrollBy({ left: e.deltaY, behavior: 'auto' });\n }\n }\n\n document.addEventListener('wheel', scrollListener, { passive: false });\n\n return () => {\n document.removeEventListener('wheel', scrollListener);\n }\n }, [overScroll])\n\n function handleClear() {\n router.get(`${window.location.pathname}`);\n }\n\n const [hasScroll, setHasScroll] = React.useState<boolean>(false);\n\n const checkScroll = React.useCallback(() => {\n const current = scrollContainerRef.current;\n if (!current) return;\n\n const pos = current.getBoundingClientRect();\n\n setHasScroll(current.scrollWidth > (pos.width + 11));\n }, [scrollContainerRef.current]);\n\n React.useEffect(() => {\n checkScroll();\n\n window.addEventListener('resize', checkScroll)\n\n return () => {\n window.removeEventListener('resize', checkScroll);\n }\n }, [checkScroll]);\n\n function clickRight() {\n scrollContainerRef.current?.scrollBy({ left: 100, behavior: 'auto' });\n checkScroll();\n }\n\n function clickLeft() {\n scrollContainerRef.current?.scrollBy({ left: -100, behavior: 'auto' });\n checkScroll();\n }\n\n const filteredActions = React.useMemo(() => {\n return actions.filter(action => !action.hidden);\n }, [actions]);\n\n return (\n <section className={cn('col-span-full flex items-center gap-2 max-w-full rounded-lg bg-white p-2 shadow', className)}>\n {back && (\n <BackButton back={back} className=\"bg-back-button-background h-[60px] w-[60px] rounded\" />\n )}\n\n <div className={cn('w-full grid grid-cols-[auto_1fr_auto_auto] h-[60px] rounded bg-page-header-background p-3 gap-4', innerClassName)}>\n <button\n type=\"button\"\n disabled={!search}\n onClick={() => setSearchActive(true)}\n className={cn('mr-auto flex items-center gap-4 transition-colors pr-6 pl-1 disabled:opacity-100 text-page-header-text', {\n 'hover:text-primary': search && !isSearchActive,\n }\n )}>\n {search && <SearchBar search={search} active={isSearchActive} onActive={setSearchActive} placeholder={`Search ${title}...`} focusSearchShortcut={focusSearchShortcut} />}\n\n {!isSearchActive && <h1 className=\"text-base text-page-header-text font-black\">{title}</h1>}\n </button>\n\n <div className=\"flex items-center ml-auto gap-2 h-full min-w-0 max-w-full\">\n {filterOptions.length > 0 && (\n <>\n <button onClick={handleClear} className=\"p-1.5 hover:text-red-500\"><HiXMark className=\"w-5 h-5 stroke-[1.25]\" /></button>\n\n {hasScroll && <HiChevronLeft onClick={clickLeft} className=\"w-5 h-5 text-gray-400 stroke-[1.25]\" />}\n <div ref={scrollContainerRef} className=\"flex items-center h-full w-full gap-3 overflow-x-scroll hide-scroll\">\n {filterOptions.map(filter => (\n <FilterItem key={filter.name} filter={filter} />\n ))}\n </div>\n {hasScroll && <HiChevronRight onClick={clickRight} className=\"w-5 h-5 text-gray-400 stroke-[1.25]\" />}\n </>\n )}\n </div>\n\n {filteredActions.length > 0 && (\n <div className=\"flex items-center gap-3 bg-page-header-background\">\n {filterOptions.length > 0 && <div className=\"w-[1px] h-full bg-gray-300\" />}\n <nav className=\"flex items-center gap-2\">\n {filteredActions.map((action) => (\n <Action key={`${action.title}-${action.as}-${action.href}`} {...action} />\n ))}\n </nav>\n </div>\n )}\n {actionChildren && (\n <div className=\"flex items-center gap-3 bg-gray-100\">\n {actionChildren}\n </div>\n )}\n </div>\n </section>\n );\n}\n\n// Subcomponents\nPageHeader.Action = ({ children }: {children: React.ReactNode}) => <div>{children}</div>;\n"],"names":["formatDateNice","date","includeTime","formatString","formatFunc","formatDateTime","formatDate","formatDateForTable","overrideFormatString","Date","format","nonStandardDate","substring","split","join","parsedDate","parse","toString","nativelyParsedDate","dateTime","nonStandardDateTime","is12Hour","includes","slice","toUpperCase","hasSeconds","length","nonStandardFormat","trim","parsedDateTime","nativelyParsedDateTime","createDate","dateString","formattedDateTime","error","console","round","value","Number","Math","parseFloat","getGst","addGst","subtractGst","gstCalc","input","replace","gst","amountInclusive","amountExclusive","formatMoney","decimals","undefined","toFormat","toLocaleString","minimumFractionDigits","maximumFractionDigits","formatNumber","sanitiseVehicleType","inputType","type","useAuth","usePage","props","can","ability","auth","permissions","useClickOutside","ref","handler","useEffect","listener","event","current","contains","target","document","addEventListener","removeEventListener","ToastContext","React","toasts","addToast","t","removeToast","ToastProvider","children","setToasts","message","status","timeout","newToast","_id","uuid","curr","setTimeout","id","filter","toast","context","Provider","useToast","useInertiaOptions","successMessage","onSuccess","onError","errors","Object","values","forEach","err","useLocalStorage","key","initialValue","useState","window","item","localStorage","getItem","JSON","log","storedValue","setStoredValue","setValue","valueToStore","Function","setItem","stringify","initialData","source","reference","client_number","first_name","last_name","phone","mobile","email","licence","licence_other","promo_code","club_membership_number","length_of_insurance","dob","secondary_first_name","secondary_last_name","secondary_licence","secondary_licence_other","secondary_dob","club_id","street_address","address","unit","suburb","city","post_code","declaration","had_incident","incidents","has_demerit_points","demerit_points","has_lost_licence","lost_licence_details","was_refused_insurance","refused_insurance_details","has_criminal_conviction","criminal_conviction_details","has_vehicle_modifications","vehicle_modifications_details","has_previous_insurer","previous_insurer_details","previous_insurer_expires_at","additional_details","vehicles","purchase_options","theme","broker_fee","broker_id","broker_firm_id","agent_id","agent_firm_id","staff_member_id","sent_at","sold_at","referrer_id","referrer_category_id","pricing_expires_at","follow_up_at","is_follow_up_required","QuoteRequestFormContext","createContext","clear","QuoteRequestFormProvider","form","useForm","handleChange","e","name","currentTarget","parts","setData","prevData","sanitiseQuoteRequestFormData","Array","isArray","map","keys","reduce","acc","useQuoteRequestForm","useContext","QuoteRequestOptionsContext","setOptions","QuoteRequestOptionsProvider","options","useQuoteRequestOptions","prodConfig","baseUrl","config","autocomplete","search","q","encodeURIComponent","fetch","res","ok","json","data","completions","getAddressData","completion","pxid","calculateAge","today","birthDate","age","getFullYear","m","getMonth","getDate","calculateMonthly","option","selectedEnhancements","premium","monthly_premium","enhancementsCost","enhancement","enhancements","find","enhancementPremium","calcMonthlyEnhancementPrice","calculateAnnually","brokerFee","fsl","monthlyPremium","disable_rounding","ceil","fixRoundingError","calcPurchaseOptionPricing","monthly","annually","monthlyWithGst","annuallyWithGst","inertiaUsePage","useFetch","url","method","params","headers","access_token","queryParams","URLSearchParams","useMemo","Accept","Authorization","body","text","parsedBody","Button","className","href","onClick","disabled","as","small","baseClasses","statusClass","classes","Link","Card","Pagination","meta","showPerPageSelector","defaultValue","current_page","total","per_page","perPageValue","page_count","getNextPageLink","location","set","String","getPrevPageLink","nextPageLink","prevPageLink","handlePerPageChange","xmlns","fill","viewBox","stroke","strokeWidth","strokeLinecap","strokeLinejoin","d","onChange","SimplePagination","to","from","results_on_page","has_more_pages","ToastItem","defaultClasses","statusClasses","handleClick","Transition","show","appear","enter","enterFrom","enterTo","leave","leaveFrom","leaveTo","title","Toasts","Modal","isActive","onClose","width","Root","Fragment","Dialog","Child","Overlay","Table","TableActions","TableBody","cn","TableCell","condensed","TableHead","TableHeader","sort","textAlign","sortLink","setSortLink","query","direction","get","textAlignClass","TableRow","bgClass","DateOfBirthField","maxYear","showAge","isRequired","dayOptions","padStart","months","monthOptions","yearOptions","y","year","month","day","isValidDate","isNaN","styleReq","backgroundPosition","style","paddingRight","required","MoneyField","newValue","displayValue","conditionOptions","RegistrationSearchField","initialRegistrationValue","onVehicleDataFound","apiUrl","showOdometerReadingField","showConditionField","outerClassName","odoInputClassName","conditionSelectClassName","regoInputClassName","searchBtnClassName","rego","setRego","odo","setOdo","condition","setCondition","setStatus","registration","handleKeydown","handleSearch","payload","odometerReading","vehicleData","vehicle","make","model","weight","parseInt","replaceAll","vehicleType","vehicle_type","is_heavy","onKeyDown","conditionOption","placeholder","FormTester","populatePurchaseOptions","setKeys","isDev","setDev","handlePopulate","description","product","usage","storage_location","has_financially_interested_party","financially_interested_party_detail","owned_duration","main_driver","drivers","relationship","premium_type","level_of_insurance_id","authorised_drivers","excess_details","terms","show_monthly","sort_order","auto_select","prevKeys","ErrorList","heading","renderKeys","entries","field","BackButton","back","backUrl","setBackUrl","breadcrumbs","crumb","URL","pathname","HiArrowLeft","SearchBar","active","onActive","focusSearchShortcut","setQuery","searchRef","useRef","preventDefault","queryOverride","path","router","HiMagnifyingGlass","onSubmit","autoFocus","HiXMark","Action","shortcutKey","actions","tooltipId","tooltipContent","actionButtonRef","isActionsButton","actionsButtonClassName","isInnerActionVisible","setIsInnerActionVisible","toggleActionsMenu","runAction","isCtrlOrCmdPressed","ctrlKey","metaKey","isInInput","HTMLInputElement","HTMLTextAreaElement","HTMLSelectElement","isInForm","Element","closest","Tooltip","action","index","hidden","Dropdown","innerRef","innerCurrent","classList","toggle","pos","getBoundingClientRect","setProperty","left","FilterItem","isOpen","setOpen","selected","setSelected","selectedOptions","setSelectedOptions","hasFilters","fromDate","toDate","selectedFromUrl","getAll","handleInput","checked","f","handleDateSelect","subYears","handleSelectedOptions","selectedValues","NullComponent","handleSelect","handleText","handleApply","selectedValue","append","handleClear","force","open","label","HiChevronDown","i","htmlFor","Select","isMulti","classNamePrefix","components","ClearIndicator","colors","primary25","primary","PageHeader","innerClassName","filterOptions","isSearchActive","setSearchActive","scrollContainerRef","overScroll","setOverScroll","actionChildren","Children","child","isValidElement","push","activeDropdown","querySelector","childrenContainer","posChild","posContainer","visibility","right","mouseListener","clientX","clientY","top","bottom","scrollListener","scrollBy","deltaY","behavior","passive","hasScroll","setHasScroll","checkScroll","useCallback","scrollWidth","clickRight","clickLeft","filteredActions","HiChevronLeft","HiChevronRight"],"mappings":"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"}