# `@geenius/notifications`

> Commercial Studio-only notification surfaces for Geenius apps.

## Overview

`@geenius/notifications` packages the shared notification contract, React and
SolidJS bindings, CSS variants, and Convex helpers behind a stable root export
map.

The current shipped surface includes:

- notification lists and grouped inbox views
- bell badges and slide-over panels
- preference management across channels and types
- shared helpers for grouping, formatting, and notification metadata
- React hooks and SolidJS primitives for inbox, preferences, push permission, and unread-badge state
- packaged Convex schema, queries, and mutations for inbox records and stored preferences

Repository: [geenius-dev/geenius-notifications](https://github.com/geenius-dev/geenius-notifications)

Tier: Studio only

## Installation

```bash
pnpm add @geenius/notifications
```

This is a commercial package. Licensed access is required before installation or publishing.

## Import Examples

```ts
import { groupByDate, TYPE_CONFIG } from '@geenius/notifications'
import { groupByDate, TYPE_CONFIG } from '@geenius/notifications/shared'
import { NotificationsPage } from '@geenius/notifications/react'
import { NotificationsPage } from '@geenius/notifications/react-css'
import { NotificationsPage } from '@geenius/notifications/solidjs'
import { NotificationsPage } from '@geenius/notifications/solidjs-css'
import { notificationsTables, schema, queries, mutations } from '@geenius/notifications/convex'
```

Import the CSS variant stylesheets alongside the framework entrypoints:

```ts
import '@geenius/notifications/react-css/styles.css'
import '@geenius/notifications/solidjs-css/styles.css'
```

## Basic Usage

```tsx
import { NotificationBell, NotificationPanel } from '@geenius/notifications/react'
import { notifications } from './fixtures'

export function HeaderNotifications(): JSX.Element {
  return (
    <>
      <NotificationBell
        unreadCount={12}
        isOpen
        ariaControls="header-notifications-panel"
        onClick={() => undefined}
      />
      <NotificationPanel
        panelId="header-notifications-panel"
        notifications={notifications}
        onMarkAll={() => undefined}
        onClose={() => undefined}
      />
    </>
  )
}
```

## Storybook

- [React story surface source](https://github.com/geenius-dev/geenius-notifications/tree/main/apps/storybook-react)
- [SolidJS story surface source](https://github.com/geenius-dev/geenius-notifications/tree/main/apps/storybook-solidjs)

Both story surfaces use the shared `@geenius/storybook` shell and render the
Tailwind and vanilla CSS variants side by side so parity regressions are easy
to spot during review.

## Package Contract

- Root imports map to the shared notifications contract.
- Framework variants are consumed through stable subpath exports.
- CSS variants ship standalone static stylesheets and do not re-export the Tailwind implementations.
- Development-only Storybook apps stay isolated from package build, test, and release flows.

This package follows the Geenius package golden standard used across the
Geenius ecosystem and keeps its published API aligned with the
`geenius-dev/geenius-notifications` repository.

## License

SEE LICENSE IN LICENSE
