@cellarnode/ui 0.5.0 → 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.
Files changed (120) hide show
  1. package/dist/chat/chat-toggle-button.d.ts +4 -3
  2. package/dist/chat/chat-toggle-button.d.ts.map +1 -1
  3. package/dist/chat/chat-toggle-button.js +34 -8
  4. package/dist/chat/chat-toggle-button.js.map +1 -1
  5. package/dist/components/classification-select.d.ts.map +1 -1
  6. package/dist/components/classification-select.js +2 -3
  7. package/dist/components/classification-select.js.map +1 -1
  8. package/dist/components/dashboard-stats-grid.d.ts +29 -0
  9. package/dist/components/dashboard-stats-grid.d.ts.map +1 -0
  10. package/dist/components/dashboard-stats-grid.js +62 -0
  11. package/dist/components/dashboard-stats-grid.js.map +1 -0
  12. package/dist/components/period-select.d.ts +10 -0
  13. package/dist/components/period-select.d.ts.map +1 -0
  14. package/dist/components/period-select.js +14 -0
  15. package/dist/components/period-select.js.map +1 -0
  16. package/dist/components/select.d.ts.map +1 -1
  17. package/dist/components/select.js +1 -1
  18. package/dist/components/select.js.map +1 -1
  19. package/dist/globe/globe-canvas.d.ts +31 -9
  20. package/dist/globe/globe-canvas.d.ts.map +1 -1
  21. package/dist/globe/globe-canvas.js +123 -105
  22. package/dist/globe/globe-canvas.js.map +1 -1
  23. package/dist/globe/globe-scene.d.ts +5 -2
  24. package/dist/globe/globe-scene.d.ts.map +1 -1
  25. package/dist/globe/globe-scene.js +37 -13
  26. package/dist/globe/globe-scene.js.map +1 -1
  27. package/dist/globe/globe-view.d.ts +20 -1
  28. package/dist/globe/globe-view.d.ts.map +1 -1
  29. package/dist/globe/globe-view.js +2 -2
  30. package/dist/globe/globe-view.js.map +1 -1
  31. package/dist/globe/index.d.ts +40 -0
  32. package/dist/globe/index.d.ts.map +1 -1
  33. package/dist/globe/index.js +39 -0
  34. package/dist/globe/index.js.map +1 -1
  35. package/dist/index.d.ts +5 -1
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +3 -1
  38. package/dist/index.js.map +1 -1
  39. package/dist/lib/semantic-tones.d.ts +1 -0
  40. package/dist/lib/semantic-tones.d.ts.map +1 -1
  41. package/dist/lib/semantic-tones.js +19 -0
  42. package/dist/lib/semantic-tones.js.map +1 -1
  43. package/dist/notifications/constants.d.ts +46 -0
  44. package/dist/notifications/constants.d.ts.map +1 -0
  45. package/dist/notifications/constants.js +89 -0
  46. package/dist/notifications/constants.js.map +1 -0
  47. package/dist/notifications/index.d.ts +21 -0
  48. package/dist/notifications/index.d.ts.map +1 -0
  49. package/dist/notifications/index.js +19 -0
  50. package/dist/notifications/index.js.map +1 -0
  51. package/dist/notifications/notification-badge.d.ts +8 -0
  52. package/dist/notifications/notification-badge.d.ts.map +1 -0
  53. package/dist/notifications/notification-badge.js +9 -0
  54. package/dist/notifications/notification-badge.js.map +1 -0
  55. package/dist/notifications/notification-empty-state.d.ts +8 -0
  56. package/dist/notifications/notification-empty-state.d.ts.map +1 -0
  57. package/dist/notifications/notification-empty-state.js +7 -0
  58. package/dist/notifications/notification-empty-state.js.map +1 -0
  59. package/dist/notifications/notification-item.d.ts +13 -0
  60. package/dist/notifications/notification-item.d.ts.map +1 -0
  61. package/dist/notifications/notification-item.js +95 -0
  62. package/dist/notifications/notification-item.js.map +1 -0
  63. package/dist/notifications/notification-list.d.ts +19 -0
  64. package/dist/notifications/notification-list.d.ts.map +1 -0
  65. package/dist/notifications/notification-list.js +53 -0
  66. package/dist/notifications/notification-list.js.map +1 -0
  67. package/dist/notifications/notification-page.d.ts +6 -0
  68. package/dist/notifications/notification-page.d.ts.map +1 -0
  69. package/dist/notifications/notification-page.js +36 -0
  70. package/dist/notifications/notification-page.js.map +1 -0
  71. package/dist/notifications/notification-provider.d.ts +10 -0
  72. package/dist/notifications/notification-provider.d.ts.map +1 -0
  73. package/dist/notifications/notification-provider.js +14 -0
  74. package/dist/notifications/notification-provider.js.map +1 -0
  75. package/dist/notifications/notification-tray.d.ts +7 -0
  76. package/dist/notifications/notification-tray.d.ts.map +1 -0
  77. package/dist/notifications/notification-tray.js +46 -0
  78. package/dist/notifications/notification-tray.js.map +1 -0
  79. package/dist/notifications/push-prompt-banner.d.ts +15 -0
  80. package/dist/notifications/push-prompt-banner.d.ts.map +1 -0
  81. package/dist/notifications/push-prompt-banner.js +11 -0
  82. package/dist/notifications/push-prompt-banner.js.map +1 -0
  83. package/dist/notifications/types.d.ts +64 -0
  84. package/dist/notifications/types.d.ts.map +1 -0
  85. package/dist/notifications/types.js +2 -0
  86. package/dist/notifications/types.js.map +1 -0
  87. package/dist/notifications/use-notification-socket.d.ts +2 -0
  88. package/dist/notifications/use-notification-socket.d.ts.map +1 -0
  89. package/dist/notifications/use-notification-socket.js +35 -0
  90. package/dist/notifications/use-notification-socket.js.map +1 -0
  91. package/dist/notifications/use-notifications.d.ts +10 -0
  92. package/dist/notifications/use-notifications.d.ts.map +1 -0
  93. package/dist/notifications/use-notifications.js +43 -0
  94. package/dist/notifications/use-notifications.js.map +1 -0
  95. package/dist/notifications/use-push-permission.d.ts +8 -0
  96. package/dist/notifications/use-push-permission.d.ts.map +1 -0
  97. package/dist/notifications/use-push-permission.js +36 -0
  98. package/dist/notifications/use-push-permission.js.map +1 -0
  99. package/dist/notifications/utils.d.ts +20 -0
  100. package/dist/notifications/utils.d.ts.map +1 -0
  101. package/dist/notifications/utils.js +81 -0
  102. package/dist/notifications/utils.js.map +1 -0
  103. package/dist/offer/index.d.ts +6 -0
  104. package/dist/offer/index.d.ts.map +1 -1
  105. package/dist/offer/index.js +3 -0
  106. package/dist/offer/index.js.map +1 -1
  107. package/dist/offer/offer-detail-header.d.ts +12 -0
  108. package/dist/offer/offer-detail-header.d.ts.map +1 -0
  109. package/dist/offer/offer-detail-header.js +11 -0
  110. package/dist/offer/offer-detail-header.js.map +1 -0
  111. package/dist/offer/offer-detail-shell.d.ts +12 -0
  112. package/dist/offer/offer-detail-shell.d.ts.map +1 -0
  113. package/dist/offer/offer-detail-shell.js +13 -0
  114. package/dist/offer/offer-detail-shell.js.map +1 -0
  115. package/dist/offer/offer-detail-tabs.d.ts +14 -0
  116. package/dist/offer/offer-detail-tabs.d.ts.map +1 -0
  117. package/dist/offer/offer-detail-tabs.js +9 -0
  118. package/dist/offer/offer-detail-tabs.js.map +1 -0
  119. package/package.json +16 -36
  120. package/src/theme/tokens.css +29 -0
@@ -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":"AACA,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,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"}
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"}
@@ -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";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/globe/index.ts"],"names":[],"mappings":"AAWA,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,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"}
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
@@ -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":"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"}
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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"}