@cellarnode/ui 0.5.1 → 0.5.3
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.
- package/dist/chat/chat-toggle-button.d.ts +4 -3
- package/dist/chat/chat-toggle-button.d.ts.map +1 -1
- package/dist/chat/chat-toggle-button.js +34 -8
- package/dist/chat/chat-toggle-button.js.map +1 -1
- package/dist/components/classification-select.d.ts.map +1 -1
- package/dist/components/classification-select.js +2 -3
- package/dist/components/classification-select.js.map +1 -1
- package/dist/components/dashboard-stats-grid.d.ts +29 -0
- package/dist/components/dashboard-stats-grid.d.ts.map +1 -0
- package/dist/components/dashboard-stats-grid.js +62 -0
- package/dist/components/dashboard-stats-grid.js.map +1 -0
- package/dist/components/period-select.d.ts +10 -0
- package/dist/components/period-select.d.ts.map +1 -0
- package/dist/components/period-select.js +14 -0
- package/dist/components/period-select.js.map +1 -0
- package/dist/components/select.d.ts.map +1 -1
- package/dist/components/select.js +1 -1
- package/dist/components/select.js.map +1 -1
- package/dist/globe/globe-canvas.d.ts +31 -9
- package/dist/globe/globe-canvas.d.ts.map +1 -1
- package/dist/globe/globe-canvas.js +123 -105
- package/dist/globe/globe-canvas.js.map +1 -1
- package/dist/globe/globe-scene.d.ts +5 -2
- package/dist/globe/globe-scene.d.ts.map +1 -1
- package/dist/globe/globe-scene.js +37 -13
- package/dist/globe/globe-scene.js.map +1 -1
- package/dist/globe/globe-view.d.ts +20 -1
- package/dist/globe/globe-view.d.ts.map +1 -1
- package/dist/globe/globe-view.js +2 -2
- package/dist/globe/globe-view.js.map +1 -1
- package/dist/globe/index.d.ts +40 -0
- package/dist/globe/index.d.ts.map +1 -1
- package/dist/globe/index.js +39 -0
- package/dist/globe/index.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/semantic-tones.d.ts +1 -0
- package/dist/lib/semantic-tones.d.ts.map +1 -1
- package/dist/lib/semantic-tones.js +19 -0
- package/dist/lib/semantic-tones.js.map +1 -1
- package/dist/notifications/constants.d.ts +46 -0
- package/dist/notifications/constants.d.ts.map +1 -0
- package/dist/notifications/constants.js +89 -0
- package/dist/notifications/constants.js.map +1 -0
- package/dist/notifications/index.d.ts +21 -0
- package/dist/notifications/index.d.ts.map +1 -0
- package/dist/notifications/index.js +19 -0
- package/dist/notifications/index.js.map +1 -0
- package/dist/notifications/notification-badge.d.ts +8 -0
- package/dist/notifications/notification-badge.d.ts.map +1 -0
- package/dist/notifications/notification-badge.js +9 -0
- package/dist/notifications/notification-badge.js.map +1 -0
- package/dist/notifications/notification-empty-state.d.ts +8 -0
- package/dist/notifications/notification-empty-state.d.ts.map +1 -0
- package/dist/notifications/notification-empty-state.js +7 -0
- package/dist/notifications/notification-empty-state.js.map +1 -0
- package/dist/notifications/notification-item.d.ts +13 -0
- package/dist/notifications/notification-item.d.ts.map +1 -0
- package/dist/notifications/notification-item.js +95 -0
- package/dist/notifications/notification-item.js.map +1 -0
- package/dist/notifications/notification-list.d.ts +19 -0
- package/dist/notifications/notification-list.d.ts.map +1 -0
- package/dist/notifications/notification-list.js +53 -0
- package/dist/notifications/notification-list.js.map +1 -0
- package/dist/notifications/notification-page.d.ts +6 -0
- package/dist/notifications/notification-page.d.ts.map +1 -0
- package/dist/notifications/notification-page.js +36 -0
- package/dist/notifications/notification-page.js.map +1 -0
- package/dist/notifications/notification-provider.d.ts +10 -0
- package/dist/notifications/notification-provider.d.ts.map +1 -0
- package/dist/notifications/notification-provider.js +14 -0
- package/dist/notifications/notification-provider.js.map +1 -0
- package/dist/notifications/notification-tray.d.ts +7 -0
- package/dist/notifications/notification-tray.d.ts.map +1 -0
- package/dist/notifications/notification-tray.js +46 -0
- package/dist/notifications/notification-tray.js.map +1 -0
- package/dist/notifications/push-prompt-banner.d.ts +15 -0
- package/dist/notifications/push-prompt-banner.d.ts.map +1 -0
- package/dist/notifications/push-prompt-banner.js +11 -0
- package/dist/notifications/push-prompt-banner.js.map +1 -0
- package/dist/notifications/types.d.ts +64 -0
- package/dist/notifications/types.d.ts.map +1 -0
- package/dist/notifications/types.js +2 -0
- package/dist/notifications/types.js.map +1 -0
- package/dist/notifications/use-notification-socket.d.ts +2 -0
- package/dist/notifications/use-notification-socket.d.ts.map +1 -0
- package/dist/notifications/use-notification-socket.js +35 -0
- package/dist/notifications/use-notification-socket.js.map +1 -0
- package/dist/notifications/use-notifications.d.ts +10 -0
- package/dist/notifications/use-notifications.d.ts.map +1 -0
- package/dist/notifications/use-notifications.js +43 -0
- package/dist/notifications/use-notifications.js.map +1 -0
- package/dist/notifications/use-push-permission.d.ts +8 -0
- package/dist/notifications/use-push-permission.d.ts.map +1 -0
- package/dist/notifications/use-push-permission.js +36 -0
- package/dist/notifications/use-push-permission.js.map +1 -0
- package/dist/notifications/utils.d.ts +20 -0
- package/dist/notifications/utils.d.ts.map +1 -0
- package/dist/notifications/utils.js +81 -0
- package/dist/notifications/utils.js.map +1 -0
- package/dist/offer/index.d.ts +6 -0
- package/dist/offer/index.d.ts.map +1 -1
- package/dist/offer/index.js +3 -0
- package/dist/offer/index.js.map +1 -1
- package/dist/offer/offer-detail-header.d.ts +12 -0
- package/dist/offer/offer-detail-header.d.ts.map +1 -0
- package/dist/offer/offer-detail-header.js +11 -0
- package/dist/offer/offer-detail-header.js.map +1 -0
- package/dist/offer/offer-detail-shell.d.ts +12 -0
- package/dist/offer/offer-detail-shell.d.ts.map +1 -0
- package/dist/offer/offer-detail-shell.js +13 -0
- package/dist/offer/offer-detail-shell.js.map +1 -0
- package/dist/offer/offer-detail-tabs.d.ts +14 -0
- package/dist/offer/offer-detail-tabs.d.ts.map +1 -0
- package/dist/offer/offer-detail-tabs.js +9 -0
- package/dist/offer/offer-detail-tabs.js.map +1 -0
- package/package.json +5 -1
- package/src/theme/tokens.css +29 -0
package/dist/globe/index.d.ts
CHANGED
|
@@ -1,8 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @cellarnode/ui/globe — shared 3D globe component.
|
|
3
|
+
*
|
|
4
|
+
* ## Offscreen Web Worker rendering
|
|
5
|
+
*
|
|
6
|
+
* The globe uses `@react-three/fiber` + `r3f-globe` and can optionally run in
|
|
7
|
+
* a Web Worker via `@react-three/offscreen` to keep the main thread free.
|
|
8
|
+
*
|
|
9
|
+
* **Why consumers must create their own worker file:** Vite (and most bundlers)
|
|
10
|
+
* cannot resolve `new Worker(new URL(...))` from inside `node_modules`. The
|
|
11
|
+
* worker entry point must live in the consuming application's source tree.
|
|
12
|
+
*
|
|
13
|
+
* ### Quick start (3 steps)
|
|
14
|
+
*
|
|
15
|
+
* 1. Create `src/workers/globe-worker.tsx` in your app:
|
|
16
|
+
* ```tsx
|
|
17
|
+
* import { render } from "@react-three/offscreen";
|
|
18
|
+
* import { GlobeScene } from "@cellarnode/ui/globe";
|
|
19
|
+
* render(<GlobeScene />);
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* 2. In your component, create the Worker and pass it to `<GlobeView>`:
|
|
23
|
+
* ```tsx
|
|
24
|
+
* const worker = useMemo(
|
|
25
|
+
* () => new Worker(new URL("../workers/globe-worker.tsx", import.meta.url), { type: "module" }),
|
|
26
|
+
* [],
|
|
27
|
+
* );
|
|
28
|
+
* <GlobeView worker={worker} ... />
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* 3. Clean up on unmount:
|
|
32
|
+
* ```tsx
|
|
33
|
+
* useEffect(() => () => worker.terminate(), [worker]);
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* If no `worker` prop is passed, `<GlobeView>` renders the globe on the main
|
|
37
|
+
* thread (the previous default behavior).
|
|
38
|
+
*/
|
|
1
39
|
export type { GlobeArc, GlobePoint, GlobeCountryDatum, GlobeHoverPayload, FallbackLabels, TooltipState, } from "./globe-types";
|
|
2
40
|
export type { GlobeTheme, GlobePresetName } from "./globe-theme";
|
|
3
41
|
export { GLOBE_PRESETS, DARK_TEAL, LIGHT_AIRY, WARM_NEUTRAL, resolveTheme } from "./globe-theme";
|
|
4
42
|
export { GlobeView } from "./globe-view";
|
|
5
43
|
export type { GlobeViewProps } from "./globe-view";
|
|
44
|
+
export { GlobeScene } from "./globe-scene";
|
|
45
|
+
export type { GlobeSceneProps } from "./globe-scene";
|
|
6
46
|
export { getVignetteStyle } from "./scene-extras";
|
|
7
47
|
export { useElectronEmitter } from "./electron-arc";
|
|
8
48
|
export { GlobeLoadingSkeleton } from "./globe-loading-skeleton";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/globe/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/globe/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAGH,YAAY,EACV,QAAQ,EACR,UAAU,EACV,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,YAAY,GACb,MAAM,eAAe,CAAC;AAEvB,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEjG,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/globe/index.js
CHANGED
|
@@ -1,5 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @cellarnode/ui/globe — shared 3D globe component.
|
|
3
|
+
*
|
|
4
|
+
* ## Offscreen Web Worker rendering
|
|
5
|
+
*
|
|
6
|
+
* The globe uses `@react-three/fiber` + `r3f-globe` and can optionally run in
|
|
7
|
+
* a Web Worker via `@react-three/offscreen` to keep the main thread free.
|
|
8
|
+
*
|
|
9
|
+
* **Why consumers must create their own worker file:** Vite (and most bundlers)
|
|
10
|
+
* cannot resolve `new Worker(new URL(...))` from inside `node_modules`. The
|
|
11
|
+
* worker entry point must live in the consuming application's source tree.
|
|
12
|
+
*
|
|
13
|
+
* ### Quick start (3 steps)
|
|
14
|
+
*
|
|
15
|
+
* 1. Create `src/workers/globe-worker.tsx` in your app:
|
|
16
|
+
* ```tsx
|
|
17
|
+
* import { render } from "@react-three/offscreen";
|
|
18
|
+
* import { GlobeScene } from "@cellarnode/ui/globe";
|
|
19
|
+
* render(<GlobeScene />);
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* 2. In your component, create the Worker and pass it to `<GlobeView>`:
|
|
23
|
+
* ```tsx
|
|
24
|
+
* const worker = useMemo(
|
|
25
|
+
* () => new Worker(new URL("../workers/globe-worker.tsx", import.meta.url), { type: "module" }),
|
|
26
|
+
* [],
|
|
27
|
+
* );
|
|
28
|
+
* <GlobeView worker={worker} ... />
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* 3. Clean up on unmount:
|
|
32
|
+
* ```tsx
|
|
33
|
+
* useEffect(() => () => worker.terminate(), [worker]);
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* If no `worker` prop is passed, `<GlobeView>` renders the globe on the main
|
|
37
|
+
* thread (the previous default behavior).
|
|
38
|
+
*/
|
|
1
39
|
export { GLOBE_PRESETS, DARK_TEAL, LIGHT_AIRY, WARM_NEUTRAL, resolveTheme } from "./globe-theme";
|
|
2
40
|
export { GlobeView } from "./globe-view";
|
|
41
|
+
export { GlobeScene } from "./globe-scene";
|
|
3
42
|
export { getVignetteStyle } from "./scene-extras";
|
|
4
43
|
export { useElectronEmitter } from "./electron-arc";
|
|
5
44
|
export { GlobeLoadingSkeleton } from "./globe-loading-skeleton";
|
package/dist/globe/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/globe/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/globe/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAaH,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEjG,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { cn } from "./lib/utils";
|
|
2
|
-
export { toneClass, offerStatusTone, type SemanticTone, } from "./lib/semantic-tones";
|
|
2
|
+
export { toneClass, offerStatusTone, notificationTone, type SemanticTone, } from "./lib/semantic-tones";
|
|
3
3
|
export { COMMON_CURRENCIES, type CurrencyCode } from "./lib/currencies";
|
|
4
4
|
export { useIsMobile } from "./hooks/use-mobile";
|
|
5
5
|
export { useToast, toast as radixToast } from "./hooks/use-toast";
|
|
@@ -60,4 +60,8 @@ export { ClassificationSelect } from "./components/classification-select";
|
|
|
60
60
|
export type { ClassificationSelectProps, CategoryOption } from "./components/classification-select";
|
|
61
61
|
export { StatCard } from "./components/stat-card";
|
|
62
62
|
export type { StatCardProps } from "./components/stat-card";
|
|
63
|
+
export { DashboardStatsGrid } from "./components/dashboard-stats-grid";
|
|
64
|
+
export type { DashboardStatsGridProps, DashboardStatItem } from "./components/dashboard-stats-grid";
|
|
65
|
+
export { PeriodSelect } from "./components/period-select";
|
|
66
|
+
export type { PeriodSelectProps, DashboardPeriod } from "./components/period-select";
|
|
63
67
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { cn } from "./lib/utils";
|
|
2
|
-
export { toneClass, offerStatusTone, } from "./lib/semantic-tones";
|
|
2
|
+
export { toneClass, offerStatusTone, notificationTone, } from "./lib/semantic-tones";
|
|
3
3
|
export { COMMON_CURRENCIES } from "./lib/currencies";
|
|
4
4
|
// Hooks
|
|
5
5
|
export { useIsMobile } from "./hooks/use-mobile";
|
|
@@ -68,4 +68,6 @@ export { ShadcnSelect, ShadcnSelectContent, ShadcnSelectGroup, ShadcnSelectItem,
|
|
|
68
68
|
export { AnimatedList } from "./components/animated-list";
|
|
69
69
|
export { ClassificationSelect } from "./components/classification-select";
|
|
70
70
|
export { StatCard } from "./components/stat-card";
|
|
71
|
+
export { DashboardStatsGrid } from "./components/dashboard-stats-grid";
|
|
72
|
+
export { PeriodSelect } from "./components/period-select";
|
|
71
73
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EACL,SAAS,EACT,eAAe,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export type SemanticTone = "brand" | "warning" | "negotiation" | "success" | "danger" | "neutral";
|
|
2
2
|
export declare function toneClass(tone: SemanticTone): string;
|
|
3
3
|
export declare function offerStatusTone(status: string): SemanticTone;
|
|
4
|
+
export declare function notificationTone(type: string): SemanticTone;
|
|
4
5
|
//# sourceMappingURL=semantic-tones.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic-tones.d.ts","sourceRoot":"","sources":["../../src/lib/semantic-tones.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GACpB,OAAO,GACP,SAAS,GACT,aAAa,GACb,SAAS,GACT,QAAQ,GACR,SAAS,CAAC;AAWd,wBAAgB,SAAS,CAAC,IAAI,EAAE,YAAY,UAE3C;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAsB5D"}
|
|
1
|
+
{"version":3,"file":"semantic-tones.d.ts","sourceRoot":"","sources":["../../src/lib/semantic-tones.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GACpB,OAAO,GACP,SAAS,GACT,aAAa,GACb,SAAS,GACT,QAAQ,GACR,SAAS,CAAC;AAWd,wBAAgB,SAAS,CAAC,IAAI,EAAE,YAAY,UAE3C;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAsB5D;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAkB3D"}
|
|
@@ -32,4 +32,23 @@ export function offerStatusTone(status) {
|
|
|
32
32
|
return "neutral";
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
|
+
export function notificationTone(type) {
|
|
36
|
+
const TONE_MAP = {
|
|
37
|
+
match: "brand",
|
|
38
|
+
tender_new: "brand",
|
|
39
|
+
tender_close: "warning",
|
|
40
|
+
offer_status_update: "negotiation",
|
|
41
|
+
partnership_request: "warning",
|
|
42
|
+
partnership_approved: "success",
|
|
43
|
+
partnership_declined: "danger",
|
|
44
|
+
partnership_terminated: "danger",
|
|
45
|
+
partnership_expired: "neutral",
|
|
46
|
+
partnership_expiring_soon: "warning",
|
|
47
|
+
beverage_extraction: "brand",
|
|
48
|
+
global_announcement: "brand",
|
|
49
|
+
news: "brand",
|
|
50
|
+
invite: "warning",
|
|
51
|
+
};
|
|
52
|
+
return TONE_MAP[type] ?? "neutral";
|
|
53
|
+
}
|
|
35
54
|
//# sourceMappingURL=semantic-tones.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic-tones.js","sourceRoot":"","sources":["../../src/lib/semantic-tones.ts"],"names":[],"mappings":"AAQA,MAAM,cAAc,GAAiC;IACnD,KAAK,EAAE,YAAY;IACnB,OAAO,EAAE,cAAc;IACvB,WAAW,EAAE,kBAAkB;IAC/B,OAAO,EAAE,cAAc;IACvB,MAAM,EAAE,aAAa;IACrB,OAAO,EAAE,cAAc;CACxB,CAAC;AAEF,MAAM,UAAU,SAAS,CAAC,IAAkB;IAC1C,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,SAAS,CAAC;QACf,KAAK,MAAM,CAAC;QACZ,KAAK,WAAW;YACd,OAAO,OAAO,CAAC;QACjB,KAAK,WAAW,CAAC;QACjB,KAAK,UAAU;YACb,OAAO,SAAS,CAAC;QACnB,KAAK,gBAAgB;YACnB,OAAO,aAAa,CAAC;QACvB,KAAK,UAAU,CAAC;QAChB,KAAK,UAAU;YACb,OAAO,QAAQ,CAAC;QAClB,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS,CAAC;QACf,KAAK,WAAW,CAAC;QACjB,KAAK,UAAU,CAAC;QAChB,KAAK,OAAO,CAAC;QACb;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"semantic-tones.js","sourceRoot":"","sources":["../../src/lib/semantic-tones.ts"],"names":[],"mappings":"AAQA,MAAM,cAAc,GAAiC;IACnD,KAAK,EAAE,YAAY;IACnB,OAAO,EAAE,cAAc;IACvB,WAAW,EAAE,kBAAkB;IAC/B,OAAO,EAAE,cAAc;IACvB,MAAM,EAAE,aAAa;IACrB,OAAO,EAAE,cAAc;CACxB,CAAC;AAEF,MAAM,UAAU,SAAS,CAAC,IAAkB;IAC1C,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,SAAS,CAAC;QACf,KAAK,MAAM,CAAC;QACZ,KAAK,WAAW;YACd,OAAO,OAAO,CAAC;QACjB,KAAK,WAAW,CAAC;QACjB,KAAK,UAAU;YACb,OAAO,SAAS,CAAC;QACnB,KAAK,gBAAgB;YACnB,OAAO,aAAa,CAAC;QACvB,KAAK,UAAU,CAAC;QAChB,KAAK,UAAU;YACb,OAAO,QAAQ,CAAC;QAClB,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS,CAAC;QACf,KAAK,WAAW,CAAC;QACjB,KAAK,UAAU,CAAC;QAChB,KAAK,OAAO,CAAC;QACb;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,QAAQ,GAAiC;QAC7C,KAAK,EAAE,OAAO;QACd,UAAU,EAAE,OAAO;QACnB,YAAY,EAAE,SAAS;QACvB,mBAAmB,EAAE,aAAa;QAClC,mBAAmB,EAAE,SAAS;QAC9B,oBAAoB,EAAE,SAAS;QAC/B,oBAAoB,EAAE,QAAQ;QAC9B,sBAAsB,EAAE,QAAQ;QAChC,mBAAmB,EAAE,SAAS;QAC9B,yBAAyB,EAAE,SAAS;QACpC,mBAAmB,EAAE,OAAO;QAC5B,mBAAmB,EAAE,OAAO;QAC5B,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,SAAS;KAClB,CAAC;IACF,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { SemanticTone } from "../lib/semantic-tones";
|
|
2
|
+
import type { NotificationType, NotificationCategory, NotificationCTA } from "./types";
|
|
3
|
+
/** Map backend notification type → semantic tone */
|
|
4
|
+
export declare const NOTIFICATION_TONE: Record<NotificationType, SemanticTone>;
|
|
5
|
+
/** Map notification type → CTA button config */
|
|
6
|
+
export declare const NOTIFICATION_CTA: Record<NotificationType, NotificationCTA>;
|
|
7
|
+
/** Map notification type → grouping category */
|
|
8
|
+
export declare const TYPE_TO_CATEGORY: Record<NotificationType, NotificationCategory>;
|
|
9
|
+
/** Category display order and labels */
|
|
10
|
+
export declare const CATEGORY_META: Array<{
|
|
11
|
+
category: NotificationCategory;
|
|
12
|
+
label: string;
|
|
13
|
+
labelKey: string;
|
|
14
|
+
}>;
|
|
15
|
+
/** Notification type → lucide icon name (consumed by NotificationItem) */
|
|
16
|
+
export declare const NOTIFICATION_ICON_NAME: Record<NotificationType, string>;
|
|
17
|
+
/** Filter options for the notification page */
|
|
18
|
+
export declare const FILTER_OPTIONS: readonly [{
|
|
19
|
+
readonly key: "all";
|
|
20
|
+
readonly labelKey: "filter.all";
|
|
21
|
+
readonly label: "All";
|
|
22
|
+
}, {
|
|
23
|
+
readonly key: "unread";
|
|
24
|
+
readonly labelKey: "filter.unread";
|
|
25
|
+
readonly label: "Unread";
|
|
26
|
+
}, {
|
|
27
|
+
readonly key: "offers";
|
|
28
|
+
readonly labelKey: "filter.offers";
|
|
29
|
+
readonly label: "Offers";
|
|
30
|
+
}, {
|
|
31
|
+
readonly key: "matches";
|
|
32
|
+
readonly labelKey: "filter.matches";
|
|
33
|
+
readonly label: "Matches";
|
|
34
|
+
}, {
|
|
35
|
+
readonly key: "partnerships";
|
|
36
|
+
readonly labelKey: "filter.partnerships";
|
|
37
|
+
readonly label: "Partnerships";
|
|
38
|
+
}, {
|
|
39
|
+
readonly key: "system";
|
|
40
|
+
readonly labelKey: "filter.system";
|
|
41
|
+
readonly label: "System";
|
|
42
|
+
}];
|
|
43
|
+
export type NotificationFilter = (typeof FILTER_OPTIONS)[number]["key"];
|
|
44
|
+
/** 24 hours in milliseconds — threshold for "recent" grouping */
|
|
45
|
+
export declare const RECENT_THRESHOLD_MS: number;
|
|
46
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/notifications/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAEvF,oDAAoD;AACpD,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,gBAAgB,EAAE,YAAY,CAepE,CAAC;AAEF,gDAAgD;AAChD,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAE,eAAe,CAetE,CAAC;AAEF,gDAAgD;AAChD,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAE,oBAAoB,CAe3E,CAAC;AAEF,wCAAwC;AACxC,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC;IAChC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB,CAOA,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAenE,CAAC;AAEF,+CAA+C;AAC/C,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;EAOjB,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;AAExE,iEAAiE;AACjE,eAAO,MAAM,mBAAmB,QAAsB,CAAC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/** Map backend notification type → semantic tone */
|
|
2
|
+
export const NOTIFICATION_TONE = {
|
|
3
|
+
match: "brand",
|
|
4
|
+
tender_new: "brand",
|
|
5
|
+
tender_close: "warning",
|
|
6
|
+
offer_status_update: "negotiation",
|
|
7
|
+
partnership_request: "warning",
|
|
8
|
+
partnership_approved: "success",
|
|
9
|
+
partnership_declined: "danger",
|
|
10
|
+
partnership_terminated: "danger",
|
|
11
|
+
partnership_expired: "neutral",
|
|
12
|
+
partnership_expiring_soon: "warning",
|
|
13
|
+
beverage_extraction: "brand",
|
|
14
|
+
global_announcement: "brand",
|
|
15
|
+
news: "brand",
|
|
16
|
+
invite: "warning",
|
|
17
|
+
};
|
|
18
|
+
/** Map notification type → CTA button config */
|
|
19
|
+
export const NOTIFICATION_CTA = {
|
|
20
|
+
match: { label: "Review Match", labelKey: "cta.reviewMatch" },
|
|
21
|
+
tender_new: { label: "View Tender", labelKey: "cta.viewTender" },
|
|
22
|
+
tender_close: { label: "View Deadline", labelKey: "cta.viewDeadline" },
|
|
23
|
+
offer_status_update: { label: "View Offer", labelKey: "cta.viewOffer" },
|
|
24
|
+
partnership_request: { label: "View Request", labelKey: "cta.viewRequest" },
|
|
25
|
+
partnership_approved: { label: "View Partnership", labelKey: "cta.viewPartnership" },
|
|
26
|
+
partnership_declined: { label: "View Details", labelKey: "cta.viewDetails" },
|
|
27
|
+
partnership_terminated: { label: "View Details", labelKey: "cta.viewDetails" },
|
|
28
|
+
partnership_expired: { label: "View Details", labelKey: "cta.viewDetails" },
|
|
29
|
+
partnership_expiring_soon: { label: "Renew", labelKey: "cta.renew" },
|
|
30
|
+
beverage_extraction: { label: "View Beverage", labelKey: "cta.viewBeverage" },
|
|
31
|
+
global_announcement: { label: "Learn More", labelKey: "cta.learnMore" },
|
|
32
|
+
news: { label: "Read More", labelKey: "cta.readMore" },
|
|
33
|
+
invite: { label: "View Invite", labelKey: "cta.viewInvite" },
|
|
34
|
+
};
|
|
35
|
+
/** Map notification type → grouping category */
|
|
36
|
+
export const TYPE_TO_CATEGORY = {
|
|
37
|
+
match: "matches",
|
|
38
|
+
tender_new: "opportunities",
|
|
39
|
+
tender_close: "opportunities",
|
|
40
|
+
offer_status_update: "offers",
|
|
41
|
+
partnership_request: "partnerships",
|
|
42
|
+
partnership_approved: "partnerships",
|
|
43
|
+
partnership_declined: "partnerships",
|
|
44
|
+
partnership_terminated: "partnerships",
|
|
45
|
+
partnership_expired: "partnerships",
|
|
46
|
+
partnership_expiring_soon: "partnerships",
|
|
47
|
+
beverage_extraction: "system",
|
|
48
|
+
global_announcement: "system",
|
|
49
|
+
news: "system",
|
|
50
|
+
invite: "system",
|
|
51
|
+
};
|
|
52
|
+
/** Category display order and labels */
|
|
53
|
+
export const CATEGORY_META = [
|
|
54
|
+
{ category: "recent", label: "Recent", labelKey: "group.recent" },
|
|
55
|
+
{ category: "offers", label: "Offers", labelKey: "group.offers" },
|
|
56
|
+
{ category: "matches", label: "Matches", labelKey: "group.matches" },
|
|
57
|
+
{ category: "opportunities", label: "Opportunities", labelKey: "group.opportunities" },
|
|
58
|
+
{ category: "partnerships", label: "Partnerships", labelKey: "group.partnerships" },
|
|
59
|
+
{ category: "system", label: "System", labelKey: "group.system" },
|
|
60
|
+
];
|
|
61
|
+
/** Notification type → lucide icon name (consumed by NotificationItem) */
|
|
62
|
+
export const NOTIFICATION_ICON_NAME = {
|
|
63
|
+
match: "sparkles",
|
|
64
|
+
tender_new: "file-text",
|
|
65
|
+
tender_close: "clock",
|
|
66
|
+
offer_status_update: "tag",
|
|
67
|
+
partnership_request: "users",
|
|
68
|
+
partnership_approved: "check-circle",
|
|
69
|
+
partnership_declined: "x-circle",
|
|
70
|
+
partnership_terminated: "alert-triangle",
|
|
71
|
+
partnership_expired: "clock",
|
|
72
|
+
partnership_expiring_soon: "alert-circle",
|
|
73
|
+
beverage_extraction: "flask-conical",
|
|
74
|
+
global_announcement: "megaphone",
|
|
75
|
+
news: "newspaper",
|
|
76
|
+
invite: "mail",
|
|
77
|
+
};
|
|
78
|
+
/** Filter options for the notification page */
|
|
79
|
+
export const FILTER_OPTIONS = [
|
|
80
|
+
{ key: "all", labelKey: "filter.all", label: "All" },
|
|
81
|
+
{ key: "unread", labelKey: "filter.unread", label: "Unread" },
|
|
82
|
+
{ key: "offers", labelKey: "filter.offers", label: "Offers" },
|
|
83
|
+
{ key: "matches", labelKey: "filter.matches", label: "Matches" },
|
|
84
|
+
{ key: "partnerships", labelKey: "filter.partnerships", label: "Partnerships" },
|
|
85
|
+
{ key: "system", labelKey: "filter.system", label: "System" },
|
|
86
|
+
];
|
|
87
|
+
/** 24 hours in milliseconds — threshold for "recent" grouping */
|
|
88
|
+
export const RECENT_THRESHOLD_MS = 24 * 60 * 60 * 1000;
|
|
89
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/notifications/constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export { NotificationTray } from "./notification-tray";
|
|
2
|
+
export type { NotificationTrayProps } from "./notification-tray";
|
|
3
|
+
export { NotificationList } from "./notification-list";
|
|
4
|
+
export type { NotificationListProps } from "./notification-list";
|
|
5
|
+
export { NotificationItem } from "./notification-item";
|
|
6
|
+
export type { NotificationItemProps } from "./notification-item";
|
|
7
|
+
export { NotificationPage } from "./notification-page";
|
|
8
|
+
export type { NotificationPageProps } from "./notification-page";
|
|
9
|
+
export { NotificationBadge } from "./notification-badge";
|
|
10
|
+
export { NotificationEmptyState } from "./notification-empty-state";
|
|
11
|
+
export { PushPromptBanner } from "./push-prompt-banner";
|
|
12
|
+
export { NotificationProvider, useNotificationConfig } from "./notification-provider";
|
|
13
|
+
export { useNotifications, useUnreadCount, useNotificationActions } from "./use-notifications";
|
|
14
|
+
export { useNotificationSocket } from "./use-notification-socket";
|
|
15
|
+
export { usePushPermission } from "./use-push-permission";
|
|
16
|
+
export type { PushPermissionState } from "./use-push-permission";
|
|
17
|
+
export { groupNotifications, filterNotifications, formatNotificationTime } from "./utils";
|
|
18
|
+
export { NOTIFICATION_TONE, NOTIFICATION_CTA, NOTIFICATION_ICON_NAME, TYPE_TO_CATEGORY, CATEGORY_META, FILTER_OPTIONS, } from "./constants";
|
|
19
|
+
export type { NotificationFilter } from "./constants";
|
|
20
|
+
export type { NotificationType, NotificationCategory, Notification, NotificationListResponse, NotificationApi, RouteResolver, WsSubscribe, NotificationConfig, NotificationCTA, NotificationGroup, } from "./types";
|
|
21
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/notifications/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGxD,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAGtF,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAGjE,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAG1F,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,aAAa,EACb,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGtD,YAAY,EACV,gBAAgB,EAChB,oBAAoB,EACpB,YAAY,EACZ,wBAAwB,EACxB,eAAe,EACf,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,iBAAiB,GAClB,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// Components
|
|
2
|
+
export { NotificationTray } from "./notification-tray";
|
|
3
|
+
export { NotificationList } from "./notification-list";
|
|
4
|
+
export { NotificationItem } from "./notification-item";
|
|
5
|
+
export { NotificationPage } from "./notification-page";
|
|
6
|
+
export { NotificationBadge } from "./notification-badge";
|
|
7
|
+
export { NotificationEmptyState } from "./notification-empty-state";
|
|
8
|
+
export { PushPromptBanner } from "./push-prompt-banner";
|
|
9
|
+
// Provider
|
|
10
|
+
export { NotificationProvider, useNotificationConfig } from "./notification-provider";
|
|
11
|
+
// Hooks
|
|
12
|
+
export { useNotifications, useUnreadCount, useNotificationActions } from "./use-notifications";
|
|
13
|
+
export { useNotificationSocket } from "./use-notification-socket";
|
|
14
|
+
export { usePushPermission } from "./use-push-permission";
|
|
15
|
+
// Utilities
|
|
16
|
+
export { groupNotifications, filterNotifications, formatNotificationTime } from "./utils";
|
|
17
|
+
// Constants
|
|
18
|
+
export { NOTIFICATION_TONE, NOTIFICATION_CTA, NOTIFICATION_ICON_NAME, TYPE_TO_CATEGORY, CATEGORY_META, FILTER_OPTIONS, } from "./constants";
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/notifications/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,WAAW;AACX,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEtF,QAAQ;AACR,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG1D,YAAY;AACZ,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAE1F,YAAY;AACZ,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,aAAa,EACb,cAAc,GACf,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
interface NotificationBadgeProps {
|
|
2
|
+
count: number;
|
|
3
|
+
maxCount?: number;
|
|
4
|
+
className?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function NotificationBadge({ count, maxCount, className, }: NotificationBadgeProps): import("react/jsx-runtime").JSX.Element | null;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=notification-badge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notification-badge.d.ts","sourceRoot":"","sources":["../../src/notifications/notification-badge.tsx"],"names":[],"mappings":"AAEA,UAAU,sBAAsB;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,QAAa,EACb,SAAS,GACV,EAAE,sBAAsB,kDAmBxB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../lib/utils";
|
|
3
|
+
export function NotificationBadge({ count, maxCount = 99, className, }) {
|
|
4
|
+
if (count <= 0)
|
|
5
|
+
return null;
|
|
6
|
+
const display = count > maxCount ? `${maxCount}+` : String(count);
|
|
7
|
+
return (_jsx("span", { className: cn("absolute -top-0.5 -right-0.5 flex size-4 items-center justify-center", "rounded-full bg-primary text-white", "text-[10px]/4 font-semibold tabular-nums", "ring-1 ring-card", "animate-in zoom-in-50 duration-200", className), children: display }));
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=notification-badge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notification-badge.js","sourceRoot":"","sources":["../../src/notifications/notification-badge.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAQlC,MAAM,UAAU,iBAAiB,CAAC,EAChC,KAAK,EACL,QAAQ,GAAG,EAAE,EACb,SAAS,GACc;IACvB,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAE5B,MAAM,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAElE,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,sEAAsE,EACtE,oCAAoC,EACpC,0CAA0C,EAC1C,kBAAkB,EAClB,oCAAoC,EACpC,SAAS,CACV,YAEA,OAAO,GACH,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
interface NotificationEmptyStateProps {
|
|
2
|
+
title?: string;
|
|
3
|
+
description?: string;
|
|
4
|
+
className?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function NotificationEmptyState({ title, description, className, }: NotificationEmptyStateProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=notification-empty-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notification-empty-state.d.ts","sourceRoot":"","sources":["../../src/notifications/notification-empty-state.tsx"],"names":[],"mappings":"AAGA,UAAU,2BAA2B;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,sBAAsB,CAAC,EACrC,KAA+B,EAC/B,WAAoC,EACpC,SAAS,GACV,EAAE,2BAA2B,2CAe7B"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { InboxIcon } from "@heroicons/react/24/outline";
|
|
3
|
+
import { cn } from "../lib/utils";
|
|
4
|
+
export function NotificationEmptyState({ title = "You're all caught up!", description = "No new notifications", className, }) {
|
|
5
|
+
return (_jsxs("div", { className: cn("flex flex-col items-center justify-center py-12 px-4 text-center", className), children: [_jsx("div", { className: "flex items-center justify-center size-14 rounded-2xl bg-muted/50 mb-4", children: _jsx(InboxIcon, { className: "size-7 text-muted-foreground/50" }) }), _jsx("p", { className: "text-sm font-medium text-foreground", children: title }), _jsx("p", { className: "text-xs text-muted-foreground mt-1", children: description })] }));
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=notification-empty-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notification-empty-state.js","sourceRoot":"","sources":["../../src/notifications/notification-empty-state.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAQlC,MAAM,UAAU,sBAAsB,CAAC,EACrC,KAAK,GAAG,uBAAuB,EAC/B,WAAW,GAAG,sBAAsB,EACpC,SAAS,GACmB;IAC5B,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,kEAAkE,EAClE,SAAS,CACV,aAED,cAAK,SAAS,EAAC,uEAAuE,YACpF,KAAC,SAAS,IAAC,SAAS,EAAC,iCAAiC,GAAG,GACrD,EACN,YAAG,SAAS,EAAC,qCAAqC,YAAE,KAAK,GAAK,EAC9D,YAAG,SAAS,EAAC,oCAAoC,YAAE,WAAW,GAAK,IAC/D,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Notification } from "./types";
|
|
2
|
+
export interface NotificationItemProps {
|
|
3
|
+
notification: Notification;
|
|
4
|
+
onMarkRead?: (id: string) => void;
|
|
5
|
+
onDismiss?: (id: string) => void;
|
|
6
|
+
onNavigate?: (href: string) => void;
|
|
7
|
+
href?: string;
|
|
8
|
+
index?: number;
|
|
9
|
+
compact?: boolean;
|
|
10
|
+
ctaLabel?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function NotificationItem({ notification, onMarkRead, onDismiss, onNavigate, href, index, compact, ctaLabel, }: NotificationItemProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
//# sourceMappingURL=notification-item.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notification-item.d.ts","sourceRoot":"","sources":["../../src/notifications/notification-item.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,SAAS,CAAC;AA0D9D,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,YAAY,EACZ,UAAU,EACV,SAAS,EACT,UAAU,EACV,IAAI,EACJ,KAAS,EACT,OAAe,EACf,QAAQ,GACT,EAAE,qBAAqB,2CA8JvB"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { motion } from "motion/react";
|
|
4
|
+
import { Sparkles, FileText, Clock, Tag, Users, CheckCircle, XCircle, AlertTriangle, AlertCircle, FlaskConical, Megaphone, Newspaper, Mail, X, Bell, } from "lucide-react";
|
|
5
|
+
import { cn } from "../lib/utils";
|
|
6
|
+
import { notificationTone } from "../lib/semantic-tones";
|
|
7
|
+
import { NOTIFICATION_CTA, NOTIFICATION_ICON_NAME } from "./constants";
|
|
8
|
+
import { formatNotificationTime } from "./utils";
|
|
9
|
+
const ICON_MAP = {
|
|
10
|
+
sparkles: Sparkles,
|
|
11
|
+
"file-text": FileText,
|
|
12
|
+
clock: Clock,
|
|
13
|
+
tag: Tag,
|
|
14
|
+
users: Users,
|
|
15
|
+
"check-circle": CheckCircle,
|
|
16
|
+
"x-circle": XCircle,
|
|
17
|
+
"alert-triangle": AlertTriangle,
|
|
18
|
+
"alert-circle": AlertCircle,
|
|
19
|
+
"flask-conical": FlaskConical,
|
|
20
|
+
megaphone: Megaphone,
|
|
21
|
+
newspaper: Newspaper,
|
|
22
|
+
mail: Mail,
|
|
23
|
+
};
|
|
24
|
+
/** Glass gradient colors keyed by semantic tone */
|
|
25
|
+
const GLASS_COLORS = {
|
|
26
|
+
brand: {
|
|
27
|
+
bg: "from-primary/10 to-primary/3",
|
|
28
|
+
border: "border-primary/12",
|
|
29
|
+
glow: "shadow-[0_0_12px_var(--color-primary)/0.15]",
|
|
30
|
+
text: "text-primary",
|
|
31
|
+
},
|
|
32
|
+
warning: {
|
|
33
|
+
bg: "from-amber-500/10 to-amber-500/3",
|
|
34
|
+
border: "border-amber-500/12",
|
|
35
|
+
glow: "shadow-[0_0_12px_oklch(0.769_0.188_70.08)/0.15]",
|
|
36
|
+
text: "text-amber-500 dark:text-amber-400",
|
|
37
|
+
},
|
|
38
|
+
negotiation: {
|
|
39
|
+
bg: "from-violet-500/10 to-violet-500/3",
|
|
40
|
+
border: "border-violet-500/12",
|
|
41
|
+
glow: "shadow-[0_0_12px_oklch(0.606_0.25_292.72)/0.15]",
|
|
42
|
+
text: "text-violet-500 dark:text-violet-400",
|
|
43
|
+
},
|
|
44
|
+
success: {
|
|
45
|
+
bg: "from-emerald-500/10 to-emerald-500/3",
|
|
46
|
+
border: "border-emerald-500/12",
|
|
47
|
+
glow: "shadow-[0_0_12px_oklch(0.696_0.17_162.48)/0.15]",
|
|
48
|
+
text: "text-emerald-500 dark:text-emerald-400",
|
|
49
|
+
},
|
|
50
|
+
danger: {
|
|
51
|
+
bg: "from-red-500/10 to-red-500/3",
|
|
52
|
+
border: "border-red-500/12",
|
|
53
|
+
glow: "shadow-[0_0_12px_oklch(0.637_0.237_25.33)/0.15]",
|
|
54
|
+
text: "text-red-500 dark:text-red-400",
|
|
55
|
+
},
|
|
56
|
+
neutral: {
|
|
57
|
+
bg: "from-zinc-500/6 to-zinc-500/2",
|
|
58
|
+
border: "border-zinc-500/8",
|
|
59
|
+
glow: "",
|
|
60
|
+
text: "text-zinc-500 dark:text-zinc-400",
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
export function NotificationItem({ notification, onMarkRead, onDismiss, onNavigate, href, index = 0, compact = false, ctaLabel, }) {
|
|
64
|
+
const [hovered, setHovered] = useState(false);
|
|
65
|
+
const tone = notificationTone(notification.type);
|
|
66
|
+
const colors = GLASS_COLORS[tone] ?? GLASS_COLORS.neutral;
|
|
67
|
+
const iconName = NOTIFICATION_ICON_NAME[notification.type];
|
|
68
|
+
const IconComponent = ICON_MAP[iconName] ?? Bell;
|
|
69
|
+
const cta = NOTIFICATION_CTA[notification.type];
|
|
70
|
+
const label = ctaLabel ?? cta?.label;
|
|
71
|
+
const handleClick = () => {
|
|
72
|
+
if (!notification.isRead && onMarkRead) {
|
|
73
|
+
onMarkRead(notification.id);
|
|
74
|
+
}
|
|
75
|
+
if (href && onNavigate) {
|
|
76
|
+
onNavigate(href);
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
const handleDismiss = (e) => {
|
|
80
|
+
e.stopPropagation();
|
|
81
|
+
onDismiss?.(notification.id);
|
|
82
|
+
};
|
|
83
|
+
return (_jsx(motion.div, { initial: { opacity: 0, y: 8 }, animate: { opacity: 1, y: 0 }, exit: { opacity: 0, y: -8, scale: 0.98 }, transition: { duration: 0.2, delay: index * 0.03 }, layout: true, children: _jsxs("button", { type: "button", onClick: handleClick, onMouseEnter: () => setHovered(true), onMouseLeave: () => setHovered(false), className: cn("group relative flex w-full gap-3 text-left transition-all", compact ? "p-3" : "p-4", notification.isRead
|
|
84
|
+
? "bg-white/2 dark:bg-white/2"
|
|
85
|
+
: cn("bg-linear-to-br border backdrop-blur-xs", colors.bg, colors.border), compact ? "rounded-xl" : "rounded-2xl"), children: [_jsx("div", { className: cn("shrink-0 flex items-center justify-center rounded-xl", compact ? "size-9" : "size-11", notification.isRead
|
|
86
|
+
? "bg-muted/50"
|
|
87
|
+
: cn("bg-linear-to-br", colors.bg, colors.glow)), children: _jsx(IconComponent, { className: cn(compact ? "size-4" : "size-5", notification.isRead ? "text-muted-foreground/50" : colors.text) }) }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: cn("truncate", compact ? "text-xs/5" : "text-sm/5", notification.isRead
|
|
88
|
+
? "font-normal text-muted-foreground"
|
|
89
|
+
: "font-semibold text-foreground"), children: notification.title }), !notification.isRead && (_jsx("span", { className: cn("shrink-0 rounded-full px-2 py-0.5", "text-[9px] font-bold uppercase tracking-widest", "bg-linear-to-br", colors.bg, colors.text), children: "New" }))] }), _jsx("p", { className: cn("mt-0.5 line-clamp-2", compact ? "text-xs/4" : "text-xs/5", notification.isRead
|
|
90
|
+
? "text-muted-foreground/60"
|
|
91
|
+
: "text-muted-foreground"), children: notification.message }), _jsxs("div", { className: "mt-2 flex items-center gap-3", children: [_jsx("span", { className: cn("text-[10px]", notification.isRead
|
|
92
|
+
? "text-muted-foreground/40"
|
|
93
|
+
: "text-muted-foreground/60"), children: formatNotificationTime(notification.createdAt) }), !notification.isRead && label && href && (_jsx("span", { className: cn("rounded-lg px-3 py-1", "text-[11px] font-semibold", "bg-linear-to-br", colors.bg, colors.text), children: label }))] })] }), onDismiss && (_jsx("button", { type: "button", onClick: handleDismiss, "aria-label": "Dismiss notification", className: cn("absolute top-3 right-3 rounded-md p-1 transition-opacity", "text-muted-foreground/40 hover:text-muted-foreground", hovered ? "opacity-100" : "opacity-0"), children: _jsx(X, { className: "size-3.5" }) }))] }) }));
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=notification-item.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notification-item.js","sourceRoot":"","sources":["../../src/notifications/notification-item.tsx"],"names":[],"mappings":"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"}
|