

### `formatRelativeTime` [#formatrelativetime]

Displays how long ago or how far in the future a date is, with human-friendly output like "2 hours ago" or "in 3 days".

```tsx
import { formatRelativeTime } from "@tilt-legal/cubitt-components/utilities/formatters";

formatRelativeTime(new Date()); // "just now"
formatRelativeTime(pastDate); // "2 hours ago"
formatRelativeTime("2024-01-15T10:30:00Z"); // "2 months ago"
formatRelativeTime(1705330200000); // "2 months ago" (Unix timestamp)
```

| Property          | Type      | Default | Description                                     |
| ----------------- | --------- | ------- | ----------------------------------------------- |
| `addSuffix`       | `boolean` | `true`  | Add "ago" or "in" suffix                        |
| `addApproxPrefix` | `boolean` | `true`  | Add "about" prefix for approximate times        |
| `locale`          | `Locale`  | -       | date-fns locale object (from `date-fns/locale`) |

***

### `formatShortDate` [#formatshortdate]

Formats dates in a compact, locale-aware format suitable for tables and lists.

```tsx
import { formatShortDate } from "@tilt-legal/cubitt-components/utilities/formatters";

formatShortDate(new Date()); // "Jan 15, 2024"
formatShortDate("2024-01-15T10:30:00Z"); // "Jan 15, 2024"
formatShortDate(1705330200000); // "Jan 15, 2024" (Unix timestamp)
```

| Parameter | Type                       | Default   | Description                                                 |
| --------- | -------------------------- | --------- | ----------------------------------------------------------- |
| `date`    | `Date \| string \| number` | -         | Date to format (Date object, ISO string, or Unix timestamp) |
| `locale`  | `string`                   | `'en-AU'` | Locale code                                                 |

***

### `formatLongDate` [#formatlongdate]

Formats dates in a readable, spelled-out format for better readability and accessibility.

```tsx
import { formatLongDate } from "@tilt-legal/cubitt-components/utilities/formatters";

formatLongDate(new Date()); // "January 15, 2024"
formatLongDate("2024-01-15T10:30:00Z"); // "January 15, 2024"
formatLongDate(1705330200000); // "January 15, 2024" (Unix timestamp)
```

| Parameter | Type                       | Default   | Description                                                 |
| --------- | -------------------------- | --------- | ----------------------------------------------------------- |
| `date`    | `Date \| string \| number` | -         | Date to format (Date object, ISO string, or Unix timestamp) |
| `locale`  | `string`                   | `'en-AU'` | Locale code                                                 |

***

### `formatTime` [#formattime]

Formats time in a user-friendly 12-hour format with lowercase am/pm indicator.

```tsx
import { formatTime } from "@tilt-legal/cubitt-components/utilities/formatters";

formatTime(new Date()); // "2:30 pm"
formatTime("2024-01-15T14:30:00Z"); // "2:30 pm"
formatTime(1705330200000); // "2:30 pm" (Unix timestamp)
```

| Parameter | Type                       | Default   | Description                                                 |
| --------- | -------------------------- | --------- | ----------------------------------------------------------- |
| `date`    | `Date \| string \| number` | -         | Date to format (Date object, ISO string, or Unix timestamp) |
| `locale`  | `string`                   | `'en-AU'` | Locale code                                                 |

***

### `formatDateTime` [#formatdatetime]

Combines date and time formatting for complete timestamp display.

```tsx
import { formatDateTime } from "@tilt-legal/cubitt-components/utilities/formatters";

formatDateTime(new Date()); // "Jan 15, 2024 at 2:30 PM"
formatDateTime("2024-01-15T14:30:00Z"); // "Jan 15, 2024 at 2:30 PM"
formatDateTime(1705330200000); // "Jan 15, 2024 at 2:30 PM" (Unix timestamp)
```

| Parameter | Type                       | Default   | Description                                                 |
| --------- | -------------------------- | --------- | ----------------------------------------------------------- |
| `date`    | `Date \| string \| number` | -         | Date to format (Date object, ISO string, or Unix timestamp) |
| `locale`  | `string`                   | `'en-AU'` | Locale code                                                 |

***

### `formatLongDateTime` [#formatlongdatetime]

Combines long date and time formatting for formal, fully spelled-out timestamp display.

```tsx
import { formatLongDateTime } from "@tilt-legal/cubitt-components/utilities/formatters";

formatLongDateTime(new Date()); // "January 15, 2024 at 2:30 PM"
formatLongDateTime("2024-01-15T14:30:00Z"); // "January 15, 2024 at 2:30 PM"
formatLongDateTime(1705330200000); // "January 15, 2024 at 2:30 PM" (Unix timestamp)
```

| Parameter | Type                       | Default   | Description                                                 |
| --------- | -------------------------- | --------- | ----------------------------------------------------------- |
| `date`    | `Date \| string \| number` | -         | Date to format (Date object, ISO string, or Unix timestamp) |
| `locale`  | `string`                   | `'en-AU'` | Locale code                                                 |

***

### `formatDateTimeWithZone` [#formatdatetimewithzone]

Displays timestamps with timezone information for global applications where timezone context is important.

```tsx
import { formatDateTimeWithZone } from "@tilt-legal/cubitt-components/utilities/formatters";

formatDateTimeWithZone(new Date()); // "Jan 15, 2024, 2:30 PM AEDT"
formatDateTimeWithZone("2024-01-15T14:30:00Z"); // "Jan 15, 2024, 2:30 PM AEDT"
formatDateTimeWithZone(1705330200000); // "Jan 15, 2024, 2:30 PM AEDT" (Unix timestamp)
formatDateTimeWithZone(new Date(), "en-AU", "long");
// "Jan 15, 2024, 2:30 PM Australian Eastern Daylight Time"
```

| Parameter      | Type                       | Default   | Description                                                 |
| -------------- | -------------------------- | --------- | ----------------------------------------------------------- |
| `date`         | `Date \| string \| number` | -         | Date to format (Date object, ISO string, or Unix timestamp) |
| `locale`       | `string`                   | `'en-AU'` | Locale code                                                 |
| `timeZoneName` | `'short' \| 'long'`        | `'short'` | Timezone display format                                     |

***

### `formatLongDateTimeWithZone` [#formatlongdatetimewithzone]

Combines fully spelled-out date and time with timezone information for formal, timezone-aware timestamp display.

```tsx
import { formatLongDateTimeWithZone } from "@tilt-legal/cubitt-components/utilities/formatters";

formatLongDateTimeWithZone(new Date()); // "January 15, 2024, 2:30 PM AEDT"
formatLongDateTimeWithZone("2024-01-15T14:30:00Z"); // "January 15, 2024, 2:30 PM AEDT"
formatLongDateTimeWithZone(1705330200000); // "January 15, 2024, 2:30 PM AEDT" (Unix timestamp)
formatLongDateTimeWithZone(new Date(), "en-AU", "long");
// "January 15, 2024, 2:30 PM Australian Eastern Daylight Time"
```

| Parameter      | Type                       | Default   | Description                                                 |
| -------------- | -------------------------- | --------- | ----------------------------------------------------------- |
| `date`         | `Date \| string \| number` | -         | Date to format (Date object, ISO string, or Unix timestamp) |
| `locale`       | `string`                   | `'en-AU'` | Locale code                                                 |
| `timeZoneName` | `'short' \| 'long'`        | `'short'` | Timezone display format                                     |
