hazo_ui 4.2.0 → 4.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,7 +1,6 @@
1
1
  export { cn } from './index.utils.js';
2
2
  import * as React$1 from 'react';
3
3
  import { ReactNode, RefObject } from 'react';
4
- import * as react_jsx_runtime from 'react/jsx-runtime';
5
4
  import { ICommand } from '@uiw/react-md-editor';
6
5
  export { ICommand as MarkdownEditorCommand } from '@uiw/react-md-editor';
7
6
  import { Node, Extension } from '@tiptap/core';
@@ -220,7 +219,7 @@ interface HazoUiMultiFilterDialogProps {
220
219
  clearButtonTextColor?: string;
221
220
  clearButtonBorderColor?: string;
222
221
  }
223
- declare function HazoUiMultiFilterDialog({ availableFields, onFilterChange, initialFilters, title, description, headerBackgroundColor, headerTextColor, submitButtonBackgroundColor, submitButtonTextColor, cancelButtonBackgroundColor, cancelButtonTextColor, cancelButtonBorderColor, clearButtonBackgroundColor, clearButtonTextColor, clearButtonBorderColor, }: HazoUiMultiFilterDialogProps): react_jsx_runtime.JSX.Element;
222
+ declare function HazoUiMultiFilterDialog({ availableFields, onFilterChange, initialFilters, title, description, headerBackgroundColor, headerTextColor, submitButtonBackgroundColor, submitButtonTextColor, cancelButtonBackgroundColor, cancelButtonTextColor, cancelButtonBorderColor, clearButtonBackgroundColor, clearButtonTextColor, clearButtonBorderColor, }: HazoUiMultiFilterDialogProps): React$1.JSX.Element;
224
223
 
225
224
  interface SortField {
226
225
  value: string;
@@ -247,7 +246,7 @@ interface HazoUiMultiSortDialogProps {
247
246
  clearButtonTextColor?: string;
248
247
  clearButtonBorderColor?: string;
249
248
  }
250
- declare function HazoUiMultiSortDialog({ availableFields, onSortChange, initialSortFields, title, description, headerBackgroundColor, headerTextColor, submitButtonBackgroundColor, submitButtonTextColor, cancelButtonBackgroundColor, cancelButtonTextColor, cancelButtonBorderColor, clearButtonBackgroundColor, clearButtonTextColor, clearButtonBorderColor, }: HazoUiMultiSortDialogProps): react_jsx_runtime.JSX.Element;
249
+ declare function HazoUiMultiSortDialog({ availableFields, onSortChange, initialSortFields, title, description, headerBackgroundColor, headerTextColor, submitButtonBackgroundColor, submitButtonTextColor, cancelButtonBackgroundColor, cancelButtonTextColor, cancelButtonBorderColor, clearButtonBackgroundColor, clearButtonTextColor, clearButtonBorderColor, }: HazoUiMultiSortDialogProps): React$1.JSX.Element;
251
250
 
252
251
  interface HazoUiFlexRadioItem {
253
252
  label: string;
@@ -273,7 +272,7 @@ interface HazoUiFlexRadioProps {
273
272
  * Hazo UI Flex Radio Component
274
273
  * Supports single and multi-selection with radio buttons or icons
275
274
  */
276
- declare function HazoUiFlexRadio({ layout, style, display_label, icon_set, data, selection, value, onChange, className, compressed, }: HazoUiFlexRadioProps): react_jsx_runtime.JSX.Element;
275
+ declare function HazoUiFlexRadio({ layout, style, display_label, icon_set, data, selection, value, onChange, className, compressed, }: HazoUiFlexRadioProps): React$1.JSX.Element;
277
276
 
278
277
  interface HazoUiPillRadioItem {
279
278
  label: string;
@@ -291,7 +290,7 @@ interface HazoUiPillRadioProps {
291
290
  pill_size?: "sm" | "md" | "lg";
292
291
  equal_width?: boolean;
293
292
  }
294
- declare function HazoUiPillRadio({ layout, icon_set, data, value, onChange, className, pill_size, equal_width, }: HazoUiPillRadioProps): react_jsx_runtime.JSX.Element;
293
+ declare function HazoUiPillRadio({ layout, icon_set, data, value, onChange, className, pill_size, equal_width, }: HazoUiPillRadioProps): React$1.JSX.Element;
295
294
 
296
295
  interface InputProps extends React$1.InputHTMLAttributes<HTMLInputElement> {
297
296
  }
@@ -424,7 +423,7 @@ interface MarkdownEditorProps {
424
423
  /** Whether the custom preview pane is visible. Default true (when renderPreview set). */
425
424
  showPreview?: boolean;
426
425
  }
427
- declare function MarkdownEditor({ value, onChange, height, placeholder, className, colorMode, preview, embeds, extraCommands, onImageUpload, renderPreview, showPreview, }: MarkdownEditorProps): react_jsx_runtime.JSX.Element;
426
+ declare function MarkdownEditor({ value, onChange, height, placeholder, className, colorMode, preview, embeds, extraCommands, onImageUpload, renderPreview, showPreview, }: MarkdownEditorProps): React$1.JSX.Element;
428
427
  declare namespace MarkdownEditor {
429
428
  var displayName: string;
430
429
  }
@@ -830,6 +829,19 @@ declare const ANIMATION_PRESETS: Record<AnimationPreset, {
830
829
  */
831
830
  declare function resolve_animation_classes(open_anim?: AnimationPreset | string, close_anim?: AnimationPreset | string): string;
832
831
 
832
+ /**
833
+ * hazo_ui_dialog/index.tsx
834
+ *
835
+ * Purpose: Standardized, reusable dialog component built on shadcn's Dialog primitive
836
+ * Features:
837
+ * - Standardized header and footer layout
838
+ * - Customizable content area
839
+ * - Flexible animation system (presets + custom)
840
+ * - Responsive sizing (viewport-relative up to limits)
841
+ * - Background overlay customization
842
+ * - CSS variable-based theming
843
+ */
844
+
833
845
  type ButtonVariant = "default" | "destructive" | "outline" | "secondary" | "ghost" | "link";
834
846
  type DialogVariant = 'default' | 'info' | 'success' | 'warning' | 'destructive';
835
847
  interface HazoUiDialogProps {
@@ -904,7 +916,21 @@ interface HazoUiDialogProps {
904
916
  *
905
917
  * A flexible dialog component with standardized layout and customizable behavior
906
918
  */
907
- declare function HazoUiDialog({ open, onOpenChange, children, onConfirm, onCancel, title, description, actionButtonText, actionButtonVariant, cancelButtonText, showCancelButton, actionButtonLoading, actionButtonDisabled, actionButtonIcon, footerContent, sizeWidth, sizeHeight, fixedSize, openAnimation, closeAnimation, variant, splitHeader, headerBackgroundColor, descriptionBackgroundColor, headerTextColor, bodyBackgroundColor, footerBackgroundColor, borderColor, accentColor, headerBar, headerBarColor, className, contentClassName, overlayClassName, headerClassName, footerClassName, showCloseButton, }: HazoUiDialogProps): react_jsx_runtime.JSX.Element;
919
+ declare function HazoUiDialog({ open, onOpenChange, children, onConfirm, onCancel, title, description, actionButtonText, actionButtonVariant, cancelButtonText, showCancelButton, actionButtonLoading, actionButtonDisabled, actionButtonIcon, footerContent, sizeWidth, sizeHeight, fixedSize, openAnimation, closeAnimation, variant, splitHeader, headerBackgroundColor, descriptionBackgroundColor, headerTextColor, bodyBackgroundColor, footerBackgroundColor, borderColor, accentColor, headerBar, headerBarColor, className, contentClassName, overlayClassName, headerClassName, footerClassName, showCloseButton, }: HazoUiDialogProps): React$1.JSX.Element;
920
+
921
+ /**
922
+ * hazo_ui_confirm_dialog/index.tsx
923
+ *
924
+ * Purpose: Compact, opinionated confirmation dialog for confirmations,
925
+ * acknowledgments, and destructive action prompts.
926
+ * Features:
927
+ * - Accent top border colored by variant
928
+ * - Variant system (default, destructive, warning, info, success)
929
+ * - Async onConfirm with auto-loading state
930
+ * - Configurable buttons (confirm + optional cancel)
931
+ * - ReactNode children or simple description string
932
+ * - Integrates with hazo_ui_config for theming
933
+ */
908
934
 
909
935
  type ConfirmDialogVariant = 'default' | 'destructive' | 'warning' | 'info' | 'success';
910
936
  interface HazoUiConfirmDialogProps {
@@ -932,7 +958,7 @@ interface HazoUiConfirmDialogProps {
932
958
  * A compact, opinionated confirmation dialog with variant-driven styling,
933
959
  * accent top border, and async loading support.
934
960
  */
935
- declare function HazoUiConfirmDialog({ open, onOpenChange, title, description, children, variant, confirmLabel, cancelLabel, showCancelButton, onConfirm, onCancel, loading: external_loading, disabled, accentColor, confirmButtonColor, openAnimation, closeAnimation, }: HazoUiConfirmDialogProps): react_jsx_runtime.JSX.Element;
961
+ declare function HazoUiConfirmDialog({ open, onOpenChange, title, description, children, variant, confirmLabel, cancelLabel, showCancelButton, onConfirm, onCancel, loading: external_loading, disabled, accentColor, confirmButtonColor, openAnimation, closeAnimation, }: HazoUiConfirmDialogProps): React$1.JSX.Element;
936
962
 
937
963
  /**
938
964
  * hazo_ui_image_cropper/index.tsx
@@ -981,6 +1007,7 @@ declare const HazoUiImageCropper: React$1.ForwardRefExoticComponent<HazoUiImageC
981
1007
  * and exposes all string labels as props so consuming apps can pass
982
1008
  * translated strings without requiring next-intl in this package.
983
1009
  */
1010
+
984
1011
  interface HazoUiImageCropperDialogProps {
985
1012
  /** Whether the dialog is open. */
986
1013
  open: boolean;
@@ -1013,7 +1040,7 @@ interface HazoUiImageCropperDialogProps {
1013
1040
  * then closes the dialog. `actionButtonLoading` is set while the blob is being
1014
1041
  * produced to prevent double-clicks.
1015
1042
  */
1016
- declare function HazoUiImageCropperDialog({ open, onOpenChange, file, onConfirm, onCancel, title, confirmLabel, cancelLabel, zoomLabel, outputSize, quality, }: HazoUiImageCropperDialogProps): react_jsx_runtime.JSX.Element;
1043
+ declare function HazoUiImageCropperDialog({ open, onOpenChange, file, onConfirm, onCancel, title, confirmLabel, cancelLabel, zoomLabel, outputSize, quality, }: HazoUiImageCropperDialogProps): React$1.JSX.Element;
1017
1044
 
1018
1045
  declare const Dialog: React$1.FC<DialogPrimitive.DialogProps>;
1019
1046
  declare const DialogTrigger: React$1.ForwardRefExoticComponent<DialogPrimitive.DialogTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
@@ -1022,18 +1049,18 @@ declare const DialogClose: React$1.ForwardRefExoticComponent<DialogPrimitive.Dia
1022
1049
  declare const DialogOverlay: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogOverlayProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
1023
1050
  declare const DialogContent: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
1024
1051
  declare const DialogHeader: {
1025
- ({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
1052
+ ({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): React$1.JSX.Element;
1026
1053
  displayName: string;
1027
1054
  };
1028
1055
  declare const DialogFooter: {
1029
- ({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
1056
+ ({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): React$1.JSX.Element;
1030
1057
  displayName: string;
1031
1058
  };
1032
1059
  declare const DialogTitle: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogTitleProps & React$1.RefAttributes<HTMLHeadingElement>, "ref"> & React$1.RefAttributes<HTMLHeadingElement>>;
1033
1060
  declare const DialogDescription: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogDescriptionProps & React$1.RefAttributes<HTMLParagraphElement>, "ref"> & React$1.RefAttributes<HTMLParagraphElement>>;
1034
1061
 
1035
1062
  declare const Drawer: {
1036
- ({ shouldScaleBackground, ...props }: React$1.ComponentProps<typeof Drawer$1.Root>): react_jsx_runtime.JSX.Element;
1063
+ ({ shouldScaleBackground, ...props }: React$1.ComponentProps<typeof Drawer$1.Root>): React$1.JSX.Element;
1037
1064
  displayName: string;
1038
1065
  };
1039
1066
  declare const DrawerTrigger: React$1.ForwardRefExoticComponent<DialogPrimitive.DialogTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
@@ -1042,11 +1069,11 @@ declare const DrawerClose: React$1.ForwardRefExoticComponent<DialogPrimitive.Dia
1042
1069
  declare const DrawerOverlay: React$1.ForwardRefExoticComponent<Omit<Omit<DialogPrimitive.DialogOverlayProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
1043
1070
  declare const DrawerContent: React$1.ForwardRefExoticComponent<Omit<Omit<DialogPrimitive.DialogContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
1044
1071
  declare const DrawerHeader: {
1045
- ({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
1072
+ ({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): React$1.JSX.Element;
1046
1073
  displayName: string;
1047
1074
  };
1048
1075
  declare const DrawerFooter: {
1049
- ({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
1076
+ ({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): React$1.JSX.Element;
1050
1077
  displayName: string;
1051
1078
  };
1052
1079
  declare const DrawerTitle: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogTitleProps & React$1.RefAttributes<HTMLHeadingElement>, "ref"> & React$1.RefAttributes<HTMLHeadingElement>>;
@@ -1080,7 +1107,7 @@ interface ButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement>, V
1080
1107
  declare const Button: React$1.ForwardRefExoticComponent<ButtonProps & React$1.RefAttributes<HTMLButtonElement>>;
1081
1108
 
1082
1109
  type CalendarProps = React$1.ComponentProps<typeof DayPicker>;
1083
- declare function Calendar({ className, classNames, showOutsideDays, ...props }: CalendarProps): react_jsx_runtime.JSX.Element;
1110
+ declare function Calendar({ className, classNames, showOutsideDays, ...props }: CalendarProps): React$1.JSX.Element;
1084
1111
  declare namespace Calendar {
1085
1112
  var displayName: string;
1086
1113
  }
@@ -1123,7 +1150,7 @@ declare const DropdownMenuLabel: React$1.ForwardRefExoticComponent<Omit<Dropdown
1123
1150
  } & React$1.RefAttributes<HTMLDivElement>>;
1124
1151
  declare const DropdownMenuSeparator: React$1.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSeparatorProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
1125
1152
  declare const DropdownMenuShortcut: {
1126
- ({ className, ...props }: React$1.HTMLAttributes<HTMLSpanElement>): react_jsx_runtime.JSX.Element;
1153
+ ({ className, ...props }: React$1.HTMLAttributes<HTMLSpanElement>): React$1.JSX.Element;
1127
1154
  displayName: string;
1128
1155
  };
1129
1156
 
@@ -1194,7 +1221,7 @@ interface SpinnerProps {
1194
1221
  className?: string;
1195
1222
  size?: "sm" | "md" | "lg";
1196
1223
  }
1197
- declare function Spinner({ className, size }: SpinnerProps): react_jsx_runtime.JSX.Element;
1224
+ declare function Spinner({ className, size }: SpinnerProps): React$1.JSX.Element;
1198
1225
 
1199
1226
  declare const toggleVariants: (props?: ({
1200
1227
  variant?: "default" | "outline" | null | undefined;
@@ -1220,11 +1247,11 @@ declare const AlertDialogPortal: React$1.FC<AlertDialogPrimitive.AlertDialogPort
1220
1247
  declare const AlertDialogOverlay: React$1.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogOverlayProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
1221
1248
  declare const AlertDialogContent: React$1.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
1222
1249
  declare const AlertDialogHeader: {
1223
- ({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
1250
+ ({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): React$1.JSX.Element;
1224
1251
  displayName: string;
1225
1252
  };
1226
1253
  declare const AlertDialogFooter: {
1227
- ({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
1254
+ ({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): React$1.JSX.Element;
1228
1255
  displayName: string;
1229
1256
  };
1230
1257
  declare const AlertDialogTitle: React$1.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogTitleProps & React$1.RefAttributes<HTMLHeadingElement>, "ref"> & React$1.RefAttributes<HTMLHeadingElement>>;
@@ -1235,11 +1262,11 @@ declare const AlertDialogCancel: React$1.ForwardRefExoticComponent<Omit<AlertDia
1235
1262
  declare const buttonGroupVariants: (props?: ({
1236
1263
  orientation?: "horizontal" | "vertical" | null | undefined;
1237
1264
  } & class_variance_authority_types.ClassProp) | undefined) => string;
1238
- declare function ButtonGroup({ className, orientation, ...props }: React$1.ComponentProps<"div"> & VariantProps<typeof buttonGroupVariants>): react_jsx_runtime.JSX.Element;
1265
+ declare function ButtonGroup({ className, orientation, ...props }: React$1.ComponentProps<"div"> & VariantProps<typeof buttonGroupVariants>): React$1.JSX.Element;
1239
1266
  declare function ButtonGroupText({ className, asChild, ...props }: React$1.ComponentProps<"div"> & {
1240
1267
  asChild?: boolean;
1241
- }): react_jsx_runtime.JSX.Element;
1242
- declare function ButtonGroupSeparator({ className, orientation, ...props }: React$1.ComponentProps<typeof Separator>): react_jsx_runtime.JSX.Element;
1268
+ }): React$1.JSX.Element;
1269
+ declare function ButtonGroupSeparator({ className, orientation, ...props }: React$1.ComponentProps<typeof Separator>): React$1.JSX.Element;
1243
1270
 
1244
1271
  declare const Slider: React$1.ForwardRefExoticComponent<Omit<SliderPrimitive.SliderProps & React$1.RefAttributes<HTMLSpanElement>, "ref"> & React$1.RefAttributes<HTMLSpanElement>>;
1245
1272
 
@@ -1259,7 +1286,7 @@ interface SkeletonCircleProps {
1259
1286
  size?: number;
1260
1287
  className?: string;
1261
1288
  }
1262
- declare function SkeletonCircle({ size, className }: SkeletonCircleProps): react_jsx_runtime.JSX.Element;
1289
+ declare function SkeletonCircle({ size, className }: SkeletonCircleProps): React$1.JSX.Element;
1263
1290
  interface SkeletonBarProps {
1264
1291
  /** CSS width — accepts px (number) or any CSS length string. Default "100%". */
1265
1292
  width?: number | string;
@@ -1267,7 +1294,7 @@ interface SkeletonBarProps {
1267
1294
  height?: number;
1268
1295
  className?: string;
1269
1296
  }
1270
- declare function SkeletonBar({ width, height, className }: SkeletonBarProps): react_jsx_runtime.JSX.Element;
1297
+ declare function SkeletonBar({ width, height, className }: SkeletonBarProps): React$1.JSX.Element;
1271
1298
  interface SkeletonRectProps {
1272
1299
  width?: number | string;
1273
1300
  height?: number | string;
@@ -1275,13 +1302,13 @@ interface SkeletonRectProps {
1275
1302
  radius?: number | string;
1276
1303
  className?: string;
1277
1304
  }
1278
- declare function SkeletonRect({ width, height, radius, className }: SkeletonRectProps): react_jsx_runtime.JSX.Element;
1305
+ declare function SkeletonRect({ width, height, radius, className }: SkeletonRectProps): React$1.JSX.Element;
1279
1306
  interface SkeletonGroupProps extends React$1.HTMLAttributes<HTMLDivElement> {
1280
1307
  /** Optional `aria-label` for the loading region. Default "Loading content". */
1281
1308
  label?: string;
1282
1309
  children: React$1.ReactNode;
1283
1310
  }
1284
- declare function SkeletonGroup({ label, children, className, ...rest }: SkeletonGroupProps): react_jsx_runtime.JSX.Element;
1311
+ declare function SkeletonGroup({ label, children, className, ...rest }: SkeletonGroupProps): React$1.JSX.Element;
1285
1312
 
1286
1313
  interface EmptyStateProps {
1287
1314
  /** Icon element. Recommended size 48x48. Wrap a lucide icon in a div if you want background styling. */
@@ -1296,7 +1323,7 @@ interface EmptyStateProps {
1296
1323
  size?: "sm" | "md" | "lg";
1297
1324
  className?: string;
1298
1325
  }
1299
- declare function EmptyState({ icon, title, description, action, size, className, }: EmptyStateProps): react_jsx_runtime.JSX.Element;
1326
+ declare function EmptyState({ icon, title, description, action, size, className, }: EmptyStateProps): React$1.JSX.Element;
1300
1327
 
1301
1328
  type ErrorBannerSeverity = "warning" | "error";
1302
1329
  interface ErrorBannerProps {
@@ -1314,7 +1341,7 @@ interface ErrorBannerProps {
1314
1341
  onDismiss?: () => void;
1315
1342
  className?: string;
1316
1343
  }
1317
- declare function ErrorBanner({ severity, title, message, icon, action, onDismiss, className, }: ErrorBannerProps): react_jsx_runtime.JSX.Element;
1344
+ declare function ErrorBanner({ severity, title, message, icon, action, onDismiss, className, }: ErrorBannerProps): React$1.JSX.Element;
1318
1345
 
1319
1346
  interface ErrorPageProps {
1320
1347
  /** Defaults to "Something went wrong". */
@@ -1331,7 +1358,7 @@ interface ErrorPageProps {
1331
1358
  illustration?: React$1.ReactNode;
1332
1359
  className?: string;
1333
1360
  }
1334
- declare function ErrorPage({ title, description, errorCode, correlationId, actions, illustration, className, }: ErrorPageProps): react_jsx_runtime.JSX.Element;
1361
+ declare function ErrorPage({ title, description, errorCode, correlationId, actions, illustration, className, }: ErrorPageProps): React$1.JSX.Element;
1335
1362
 
1336
1363
  interface LoadingTimeoutProps {
1337
1364
  /** When true, the timeout runs and escalation states render. When false, renders children. */
@@ -1352,7 +1379,7 @@ interface LoadingTimeoutProps {
1352
1379
  label?: string;
1353
1380
  className?: string;
1354
1381
  }
1355
- declare function LoadingTimeout({ active, children, skeleton, onRetry, thresholds, label, className, }: LoadingTimeoutProps): react_jsx_runtime.JSX.Element;
1382
+ declare function LoadingTimeout({ active, children, skeleton, onRetry, thresholds, label, className, }: LoadingTimeoutProps): React$1.JSX.Element;
1356
1383
 
1357
1384
  interface ProgressiveImageProps {
1358
1385
  /** Required final image src. */
@@ -1373,7 +1400,47 @@ interface ProgressiveImageProps {
1373
1400
  onLoad?: () => void;
1374
1401
  onError?: () => void;
1375
1402
  }
1376
- declare function ProgressiveImage({ src, alt, lqip, width, height, loading, fit, className, onLoad, onError, }: ProgressiveImageProps): react_jsx_runtime.JSX.Element;
1403
+ declare function ProgressiveImage({ src, alt, lqip, width, height, loading, fit, className, onLoad, onError, }: ProgressiveImageProps): React$1.JSX.Element;
1404
+
1405
+ interface NotificationCountBadgeProps {
1406
+ count: number;
1407
+ /** Default 9. Shows "N+" when count exceeds this value. */
1408
+ max?: number;
1409
+ className?: string;
1410
+ }
1411
+ declare function NotificationCountBadge({ count, max, className, }: NotificationCountBadgeProps): React$1.ReactElement | null;
1412
+
1413
+ interface NotificationItemProps {
1414
+ isRead: boolean;
1415
+ /** Pre-formatted relative timestamp, e.g. "2 hours ago". */
1416
+ timestamp: string;
1417
+ /** Message content. */
1418
+ children: React$1.ReactNode;
1419
+ /** Domain action buttons rendered below the message. */
1420
+ actions?: React$1.ReactNode;
1421
+ onClick?: () => void;
1422
+ onContextMenu?: React$1.MouseEventHandler<HTMLDivElement>;
1423
+ /** When provided AND !isRead, renders the "mark read" link. */
1424
+ onMarkRead?: () => void;
1425
+ /** Label for the mark-read button, e.g. "Mark read". */
1426
+ markReadLabel: string;
1427
+ }
1428
+ declare function NotificationItem({ isRead, timestamp, children, actions, onClick, onContextMenu, onMarkRead, markReadLabel, }: NotificationItemProps): React$1.JSX.Element;
1429
+
1430
+ interface NotificationPanelProps {
1431
+ /** NotificationItem rows. */
1432
+ children: React$1.ReactNode;
1433
+ /** When provided, renders the "Mark all as read" footer button. */
1434
+ onMarkAllRead?: () => void;
1435
+ /** Label for the mark-all-read button, e.g. "Mark all as read". */
1436
+ markAllReadLabel: string;
1437
+ /** Rendered when there are no children and loading is false. */
1438
+ emptyState?: React$1.ReactNode;
1439
+ /** Shows skeleton loading rows when true. */
1440
+ loading?: boolean;
1441
+ className?: string;
1442
+ }
1443
+ declare function NotificationPanel({ children, onMarkAllRead, markAllReadLabel, emptyState, loading, className, }: NotificationPanelProps): React$1.JSX.Element;
1377
1444
 
1378
1445
  interface HazoUiToasterProps {
1379
1446
  /** Position of the toast stack. Default "bottom-right". */
@@ -1383,7 +1450,7 @@ interface HazoUiToasterProps {
1383
1450
  /** Max number of toasts visible at once. Default 5. */
1384
1451
  visibleToasts?: number;
1385
1452
  }
1386
- declare function HazoUiToaster({ position, closeButton, visibleToasts, }?: HazoUiToasterProps): react_jsx_runtime.JSX.Element;
1453
+ declare function HazoUiToaster({ position, closeButton, visibleToasts, }?: HazoUiToasterProps): React$1.JSX.Element;
1387
1454
  interface ToastOptions {
1388
1455
  title: string;
1389
1456
  description?: string;
@@ -1853,7 +1920,15 @@ interface KanbanSaveEvent<T extends KanbanItem = KanbanItem> {
1853
1920
  next: T;
1854
1921
  }
1855
1922
 
1856
- declare function HazoUiKanbanFilter({ search, searchPlaceholder, categories, priorities, value, defaultValue, onChange, className, }: HazoUiKanbanFilterProps): react_jsx_runtime.JSX.Element;
1923
+ /**
1924
+ * HazoUiKanbanFilter - controlled-or-uncontrolled filter bar
1925
+ *
1926
+ * Decoupled from HazoUiKanban. Emits KanbanFilterValue via onChange; consumer
1927
+ * applies it to their items (typically via applyKanbanFilter) before passing
1928
+ * to the board.
1929
+ */
1930
+
1931
+ declare function HazoUiKanbanFilter({ search, searchPlaceholder, categories, priorities, value, defaultValue, onChange, className, }: HazoUiKanbanFilterProps): React$1.JSX.Element;
1857
1932
 
1858
1933
  /**
1859
1934
  * Pure helper: filters KanbanItem[] by search / categories / priority.
@@ -1868,7 +1943,21 @@ declare function HazoUiKanbanFilter({ search, searchPlaceholder, categories, pri
1868
1943
 
1869
1944
  declare function applyKanbanFilter<T extends KanbanItem>(items: T[], filter: KanbanFilterValue): T[];
1870
1945
 
1871
- declare function HazoUiKanban<T extends KanbanItem = KanbanItem>({ columns, items, renderCard, onMove, onReorder, mobileBreakpoint, announcements, emptyColumn, className, cardClassName, itemLabel, editorFields, editorPriorities, editorTitle, renderCardEditor, hideEditorFooter, onCardSave, disableEdit, }: HazoUiKanbanProps<T>): react_jsx_runtime.JSX.Element;
1946
+ /**
1947
+ * HazoUiKanban - drag-drop kanban primitive
1948
+ *
1949
+ * Wraps @dnd-kit/core + @dnd-kit/sortable. Consumers see only HazoUi*
1950
+ * types — no @dnd-kit types leak through the public surface.
1951
+ *
1952
+ * State model: controlled `items` + library overlay. The consumer owns
1953
+ * the `items` array. While a drag is being committed (e.g. an async
1954
+ * PATCH), the library tracks an "overlay" position internally so the
1955
+ * card moves immediately. On commit, the consumer updates `items` and
1956
+ * the overlay clears naturally. On failure, the consumer calls
1957
+ * event.revert() and the overlay entry is dropped.
1958
+ */
1959
+
1960
+ declare function HazoUiKanban<T extends KanbanItem = KanbanItem>({ columns, items, renderCard, onMove, onReorder, mobileBreakpoint, announcements, emptyColumn, className, cardClassName, itemLabel, editorFields, editorPriorities, editorTitle, renderCardEditor, hideEditorFooter, onCardSave, disableEdit, }: HazoUiKanbanProps<T>): React$1.JSX.Element;
1872
1961
 
1873
1962
  declare const Table: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLTableElement> & React$1.RefAttributes<HTMLTableElement>>;
1874
1963
  declare const TableHeader: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLTableSectionElement> & React$1.RefAttributes<HTMLTableSectionElement>>;
@@ -1970,7 +2059,15 @@ interface HazoUiTableProps<TRow extends object = any> {
1970
2059
  caption?: string;
1971
2060
  }
1972
2061
 
1973
- declare function HazoUiTable<TRow extends object = any>(props: HazoUiTableProps<TRow>): react_jsx_runtime.JSX.Element;
2062
+ /**
2063
+ * HazoUiTable — column-config-driven data table.
2064
+ *
2065
+ * Composes the shadcn Table primitive family with the in-memory
2066
+ * filter/sort/paginate pipeline from use_table_state, and (in later
2067
+ * tasks) the existing HazoUiMultiSortDialog / HazoUiMultiFilterDialog.
2068
+ */
2069
+
2070
+ declare function HazoUiTable<TRow extends object = any>(props: HazoUiTableProps<TRow>): React$1.JSX.Element;
1974
2071
 
1975
2072
  /**
1976
2073
  * Public types for hazo_ui_charts. Keep dependency-free so consumers can
@@ -2151,6 +2248,19 @@ declare function format_num(n: number | null | undefined | string): string;
2151
2248
  */
2152
2249
  declare function pick_x_label_indices(length: number): [number, number, number];
2153
2250
 
2251
+ /**
2252
+ * hazo_ui_celebration/index.tsx
2253
+ *
2254
+ * CelebrationModal: imperative confetti + modal overlay with optional shareable card.
2255
+ * Mount <CelebrationProvider /> once at root, then call celebrate({ ... }) from anywhere.
2256
+ *
2257
+ * Session gating: each id is written to sessionStorage (hazo_ui_celebration_<id>) when
2258
+ * shown. Duplicate calls with the same id within the session are no-ops.
2259
+ * Cross-session gating is the consumer's responsibility.
2260
+ *
2261
+ * Queue policy: FIFO. Gating runs at call time (before enqueue), not at display time.
2262
+ */
2263
+
2154
2264
  /** Default gradient for the shareable card background. Override via shareableCard.background. */
2155
2265
  declare const CELEBRATION_GRADIENT = "linear-gradient(135deg, #667eea 0%, #764ba2 100%)";
2156
2266
  interface CelebrationShareableCard {
@@ -2199,7 +2309,7 @@ interface CelebrationProviderProps {
2199
2309
  * Mount once near the root of your app (e.g. (app)/layout.tsx).
2200
2310
  * Renders the current celebration modal and manages the FIFO queue.
2201
2311
  */
2202
- declare function CelebrationProvider({ children }: CelebrationProviderProps): react_jsx_runtime.JSX.Element;
2312
+ declare function CelebrationProvider({ children }: CelebrationProviderProps): React$1.JSX.Element;
2203
2313
 
2204
2314
  /**
2205
2315
  * Pure ETA estimation helpers — no React, no I/O, fully unit-testable.
@@ -2269,7 +2379,7 @@ interface HazoUiProgressBarProps {
2269
2379
  * Zero logic — accepts a 0..1 value and renders the fill.
2270
2380
  * Safe to use standalone without any ETA or state machinery.
2271
2381
  */
2272
- declare function HazoUiProgressBar({ value, label, showPercent, size, className, }: HazoUiProgressBarProps): react_jsx_runtime.JSX.Element;
2382
+ declare function HazoUiProgressBar({ value, label, showPercent, size, className, }: HazoUiProgressBarProps): React$1.JSX.Element;
2273
2383
  /**
2274
2384
  * Headless hook — ETA estimation + animation core.
2275
2385
  *
@@ -2317,6 +2427,6 @@ interface HazoUiEtaProgressProps {
2317
2427
  * // In effect: handle.current?.start(); ... handle.current?.finish();
2318
2428
  * ```
2319
2429
  */
2320
- declare function HazoUiEtaProgress({ estimateKey, unitCount, concurrency, windowSize, fallbackUnitMs, level, label, endpoint, handleRef, className, }: HazoUiEtaProgressProps): react_jsx_runtime.JSX.Element;
2430
+ declare function HazoUiEtaProgress({ estimateKey, unitCount, concurrency, windowSize, fallbackUnitMs, level, label, endpoint, handleRef, className, }: HazoUiEtaProgressProps): React$1.JSX.Element;
2321
2431
 
2322
- export { ANIMATION_PRESETS, Accordion, AccordionContent, AccordionItem, AccordionTrigger, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, type AnimationPreset, type BaseCommandInputProps, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, CELEBRATION_GRADIENT, Calendar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, type CelebrationPayload, CelebrationProvider, type CelebrationProviderProps, type CelebrationShareableCard, type ChartDataPoint, type ChartDataSeries, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, type CommandEditContext, type CommandItem$1 as CommandItem, CommandNodeExtension, CommandPill, type CommandPillProps, CommandPopover, type CommandPopoverProps, type CommandTextOutput, type ConfirmDialogVariant, type DateRangeOption, DateRangeSelector, type DateRangeSelectorProps, type DialogVariant, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, type EmptyStateProps, ErrorBanner, type ErrorBannerProps, type ErrorBannerSeverity, ErrorPage, type ErrorPageProps, type EtaProgressHandle, type FilterConfig, type FilterField, FunnelChart, type FunnelChartProps, type FunnelStep, HazoContextProvider, type HazoContextProviderProps, type HazoUiConfig, HazoUiConfirmDialog, type HazoUiConfirmDialogProps, HazoUiDialog, DialogClose as HazoUiDialogClose, DialogContent as HazoUiDialogContent, DialogDescription as HazoUiDialogDescription, DialogFooter as HazoUiDialogFooter, DialogHeader as HazoUiDialogHeader, DialogOverlay as HazoUiDialogOverlay, DialogPortal as HazoUiDialogPortal, type HazoUiDialogProps, Dialog as HazoUiDialogRoot, DialogTitle as HazoUiDialogTitle, DialogTrigger as HazoUiDialogTrigger, HazoUiEtaProgress, type HazoUiEtaProgressProps, HazoUiFlexInput, type HazoUiFlexInputProps, HazoUiFlexRadio, type HazoUiFlexRadioItem, type HazoUiFlexRadioProps, HazoUiImageCropper, HazoUiImageCropperDialog, type HazoUiImageCropperDialogProps, type HazoUiImageCropperHandle, type HazoUiImageCropperProps, HazoUiKanban, HazoUiKanbanFilter, type HazoUiKanbanFilterProps, type HazoUiKanbanProps, HazoUiMultiFilterDialog, HazoUiMultiSortDialog, HazoUiPillRadio, type HazoUiPillRadioItem, type HazoUiPillRadioProps, HazoUiProgressBar, type HazoUiProgressBarProps, HazoUiRte, type HazoUiRteProps, HazoUiTable, type HazoUiTablePagination, type HazoUiTableProps, type HazoUiTableServerLoadArgs, type HazoUiTableServerLoadResult, HazoUiTextarea, type HazoUiTextareaProps, HazoUiTextbox, type HazoUiTextboxProps, HazoUiToaster, type HazoUiToasterProps, HoverCard, HoverCardContent, HoverCardTrigger, Input, InputAffix, type InputAffixProps, type InsertedCommand, InverseSparkline, type InverseSparklineProps, type KanbanAnnouncements, type KanbanColumn, type KanbanEditorCtx, type KanbanEditorField, type KanbanEditorFieldType, type KanbanFilterValue, type KanbanItem, type KanbanMoveEvent, type KanbanMoveHandle, type KanbanPriority, type KanbanReorderEvent, type KanbanSaveEvent, Label, LoadingTimeout, type LoadingTimeoutProps, type Logger, MarkdownEditor, type MarkdownEditorProps, type MarkdownEmbed, Popover, PopoverContent, PopoverTrigger, type PrefixColor, type PrefixConfig, ProgressiveImage, type ProgressiveImageProps, RadioGroup, RadioGroupItem, type RteAttachment, type RteOutput, type RteVariable, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Command as ShadcnCommand, CommandEmpty as ShadcnCommandEmpty, CommandGroup as ShadcnCommandGroup, CommandInput as ShadcnCommandInput, CommandItem as ShadcnCommandItem, CommandList as ShadcnCommandList, Skeleton, SkeletonBar, type SkeletonBarProps, SkeletonCircle, type SkeletonCircleProps, SkeletonGroup, type SkeletonGroupProps, SkeletonRect, type SkeletonRectProps, Slider, type SortConfig, type SortField, Sparkline, type SparklineProps, Spinner, type StackedBar, StackedBars, type StackedBarsProps, type SuggestionState, Switch, Table, TableBody, TableCaption, TableCell, type TableColumn, type TableFilter, TableFooter, type TableFormatter, TableHead, TableHeader, TableRow, type TableSort, type TableSortEntry, type TableSortProp, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, type ToastOptions, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, type UseCopyToClipboardResult, type UseErrorDisplayResult, type UseEtaProgressOptions, type UseFullscreenRefResult, type UseFullscreenResult, type UseLoadingStateResult, type UseWakeLockResult, applyKanbanFilter, buttonGroupVariants, celebrate, computeEta, create_command_suggestion_extension, easeToward, errorToast, format_num, generateUUID, get_hazo_ui_config, get_logger, median, parse_commands_from_text, pick_x_label_indices, reset_hazo_ui_config, resolve_animation_classes, set_hazo_ui_config, set_logger, successToast, text_to_tiptap_content, toggleVariants, useClickOutside, useCopyToClipboard, useDebounce, useErrorDisplay, useEtaProgress, useFullscreen, useIsMobile, useLoadingState, useLocalStorage, useMediaQuery, useSessionStorage, useViewport, useWakeLock, use_fullscreen, use_wake_lock };
2432
+ export { ANIMATION_PRESETS, Accordion, AccordionContent, AccordionItem, AccordionTrigger, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, type AnimationPreset, type BaseCommandInputProps, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, CELEBRATION_GRADIENT, Calendar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, type CelebrationPayload, CelebrationProvider, type CelebrationProviderProps, type CelebrationShareableCard, type ChartDataPoint, type ChartDataSeries, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, type CommandEditContext, type CommandItem$1 as CommandItem, CommandNodeExtension, CommandPill, type CommandPillProps, CommandPopover, type CommandPopoverProps, type CommandTextOutput, type ConfirmDialogVariant, type DateRangeOption, DateRangeSelector, type DateRangeSelectorProps, type DialogVariant, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, type EmptyStateProps, ErrorBanner, type ErrorBannerProps, type ErrorBannerSeverity, ErrorPage, type ErrorPageProps, type EtaProgressHandle, type FilterConfig, type FilterField, FunnelChart, type FunnelChartProps, type FunnelStep, HazoContextProvider, type HazoContextProviderProps, type HazoUiConfig, HazoUiConfirmDialog, type HazoUiConfirmDialogProps, HazoUiDialog, DialogClose as HazoUiDialogClose, DialogContent as HazoUiDialogContent, DialogDescription as HazoUiDialogDescription, DialogFooter as HazoUiDialogFooter, DialogHeader as HazoUiDialogHeader, DialogOverlay as HazoUiDialogOverlay, DialogPortal as HazoUiDialogPortal, type HazoUiDialogProps, Dialog as HazoUiDialogRoot, DialogTitle as HazoUiDialogTitle, DialogTrigger as HazoUiDialogTrigger, HazoUiEtaProgress, type HazoUiEtaProgressProps, HazoUiFlexInput, type HazoUiFlexInputProps, HazoUiFlexRadio, type HazoUiFlexRadioItem, type HazoUiFlexRadioProps, HazoUiImageCropper, HazoUiImageCropperDialog, type HazoUiImageCropperDialogProps, type HazoUiImageCropperHandle, type HazoUiImageCropperProps, HazoUiKanban, HazoUiKanbanFilter, type HazoUiKanbanFilterProps, type HazoUiKanbanProps, HazoUiMultiFilterDialog, HazoUiMultiSortDialog, HazoUiPillRadio, type HazoUiPillRadioItem, type HazoUiPillRadioProps, HazoUiProgressBar, type HazoUiProgressBarProps, HazoUiRte, type HazoUiRteProps, HazoUiTable, type HazoUiTablePagination, type HazoUiTableProps, type HazoUiTableServerLoadArgs, type HazoUiTableServerLoadResult, HazoUiTextarea, type HazoUiTextareaProps, HazoUiTextbox, type HazoUiTextboxProps, HazoUiToaster, type HazoUiToasterProps, HoverCard, HoverCardContent, HoverCardTrigger, Input, InputAffix, type InputAffixProps, type InsertedCommand, InverseSparkline, type InverseSparklineProps, type KanbanAnnouncements, type KanbanColumn, type KanbanEditorCtx, type KanbanEditorField, type KanbanEditorFieldType, type KanbanFilterValue, type KanbanItem, type KanbanMoveEvent, type KanbanMoveHandle, type KanbanPriority, type KanbanReorderEvent, type KanbanSaveEvent, Label, LoadingTimeout, type LoadingTimeoutProps, type Logger, MarkdownEditor, type MarkdownEditorProps, type MarkdownEmbed, NotificationCountBadge, type NotificationCountBadgeProps, NotificationItem, type NotificationItemProps, NotificationPanel, type NotificationPanelProps, Popover, PopoverContent, PopoverTrigger, type PrefixColor, type PrefixConfig, ProgressiveImage, type ProgressiveImageProps, RadioGroup, RadioGroupItem, type RteAttachment, type RteOutput, type RteVariable, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Command as ShadcnCommand, CommandEmpty as ShadcnCommandEmpty, CommandGroup as ShadcnCommandGroup, CommandInput as ShadcnCommandInput, CommandItem as ShadcnCommandItem, CommandList as ShadcnCommandList, Skeleton, SkeletonBar, type SkeletonBarProps, SkeletonCircle, type SkeletonCircleProps, SkeletonGroup, type SkeletonGroupProps, SkeletonRect, type SkeletonRectProps, Slider, type SortConfig, type SortField, Sparkline, type SparklineProps, Spinner, type StackedBar, StackedBars, type StackedBarsProps, type SuggestionState, Switch, Table, TableBody, TableCaption, TableCell, type TableColumn, type TableFilter, TableFooter, type TableFormatter, TableHead, TableHeader, TableRow, type TableSort, type TableSortEntry, type TableSortProp, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, type ToastOptions, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, type UseCopyToClipboardResult, type UseErrorDisplayResult, type UseEtaProgressOptions, type UseFullscreenRefResult, type UseFullscreenResult, type UseLoadingStateResult, type UseWakeLockResult, applyKanbanFilter, buttonGroupVariants, celebrate, computeEta, create_command_suggestion_extension, easeToward, errorToast, format_num, generateUUID, get_hazo_ui_config, get_logger, median, parse_commands_from_text, pick_x_label_indices, reset_hazo_ui_config, resolve_animation_classes, set_hazo_ui_config, set_logger, successToast, text_to_tiptap_content, toggleVariants, useClickOutside, useCopyToClipboard, useDebounce, useErrorDisplay, useEtaProgress, useFullscreen, useIsMobile, useLoadingState, useLocalStorage, useMediaQuery, useSessionStorage, useViewport, useWakeLock, use_fullscreen, use_wake_lock };
package/dist/index.js CHANGED
@@ -5834,7 +5834,9 @@ var HardBreak = Node.create({
5834
5834
  const marks = storedMarks || selection.$to.parentOffset && selection.$from.marks();
5835
5835
  return chain().insertContent({ type: this.name }).command(({ tr, dispatch }) => {
5836
5836
  if (dispatch && marks && keepMarks) {
5837
- const filteredMarks = marks.filter((mark) => splittableMarks.includes(mark.type.name));
5837
+ const filteredMarks = marks.filter(
5838
+ (mark) => splittableMarks.includes(mark.type.name)
5839
+ );
5838
5840
  tr.ensureMarks(filteredMarks);
5839
5841
  }
5840
5842
  return true;
@@ -7905,6 +7907,149 @@ function ProgressiveImage({
7905
7907
  }
7906
7908
  );
7907
7909
  }
7910
+ function NotificationCountBadge({
7911
+ count,
7912
+ max = 9,
7913
+ className
7914
+ }) {
7915
+ if (count <= 0) return null;
7916
+ const isOverflow = count > max;
7917
+ const label = isOverflow ? `${max}+` : String(count);
7918
+ return /* @__PURE__ */ jsx(
7919
+ "span",
7920
+ {
7921
+ "aria-label": `${count} unread`,
7922
+ className: cn(
7923
+ "cls_notification_count_badge",
7924
+ "inline-flex items-center justify-center",
7925
+ "bg-destructive text-destructive-foreground",
7926
+ "text-[10px] font-semibold leading-none select-none",
7927
+ // pill for "9+", circle for single/double digits
7928
+ isOverflow ? "rounded-full px-1.5 py-0.5 min-w-[1.25rem] h-5" : "rounded-full w-5 h-5",
7929
+ className
7930
+ ),
7931
+ children: label
7932
+ }
7933
+ );
7934
+ }
7935
+ function NotificationItem({
7936
+ isRead,
7937
+ timestamp,
7938
+ children,
7939
+ actions,
7940
+ onClick,
7941
+ onContextMenu,
7942
+ onMarkRead,
7943
+ markReadLabel
7944
+ }) {
7945
+ const handleMarkRead = (e) => {
7946
+ e.stopPropagation();
7947
+ onMarkRead?.();
7948
+ };
7949
+ return /* @__PURE__ */ jsxs(
7950
+ "div",
7951
+ {
7952
+ role: "listitem",
7953
+ onClick,
7954
+ onContextMenu,
7955
+ className: cn(
7956
+ "cls_notification_item",
7957
+ "relative flex gap-3 px-4 py-3 text-sm transition-colors",
7958
+ onClick && "cursor-pointer hover:bg-accent/60",
7959
+ !isRead && "bg-primary/5"
7960
+ ),
7961
+ children: [
7962
+ /* @__PURE__ */ jsx("div", { className: "cls_notification_item_dot_col flex-shrink-0 pt-1.5", children: !isRead ? /* @__PURE__ */ jsx(
7963
+ "span",
7964
+ {
7965
+ "aria-label": "Unread",
7966
+ className: "cls_notification_item_dot block w-2 h-2 rounded-full bg-primary"
7967
+ }
7968
+ ) : /* @__PURE__ */ jsx("span", { className: "block w-2 h-2", "aria-hidden": "true" }) }),
7969
+ /* @__PURE__ */ jsxs("div", { className: "cls_notification_item_body flex-1 min-w-0 space-y-1", children: [
7970
+ /* @__PURE__ */ jsx("div", { className: "cls_notification_item_message leading-snug text-foreground", children }),
7971
+ /* @__PURE__ */ jsxs("div", { className: "cls_notification_item_meta flex items-center gap-3 flex-wrap", children: [
7972
+ /* @__PURE__ */ jsx("span", { className: "cls_notification_item_timestamp text-xs text-muted-foreground", children: timestamp }),
7973
+ !isRead && onMarkRead ? /* @__PURE__ */ jsx(
7974
+ "button",
7975
+ {
7976
+ type: "button",
7977
+ onClick: handleMarkRead,
7978
+ className: "cls_notification_item_mark_read text-primary text-xs hover:underline focus:outline-none focus-visible:ring-2 focus-visible:ring-primary rounded",
7979
+ children: markReadLabel
7980
+ }
7981
+ ) : null
7982
+ ] }),
7983
+ actions ? /* @__PURE__ */ jsx("div", { className: "cls_notification_item_actions flex items-center gap-2 pt-1", children: actions }) : null
7984
+ ] })
7985
+ ]
7986
+ }
7987
+ );
7988
+ }
7989
+ function LoadingSkeletons() {
7990
+ return /* @__PURE__ */ jsx(
7991
+ "div",
7992
+ {
7993
+ "aria-busy": "true",
7994
+ "aria-label": "Loading notifications",
7995
+ className: "cls_notification_panel_loading space-y-0",
7996
+ children: [0, 1, 2].map((i) => /* @__PURE__ */ jsxs(
7997
+ "div",
7998
+ {
7999
+ className: "cls_notification_panel_skeleton flex gap-3 px-4 py-3 animate-pulse",
8000
+ children: [
8001
+ /* @__PURE__ */ jsx("div", { className: "flex-shrink-0 pt-1.5", children: /* @__PURE__ */ jsx("div", { className: "w-2 h-2 rounded-full bg-muted" }) }),
8002
+ /* @__PURE__ */ jsxs("div", { className: "flex-1 space-y-2 pt-0.5", children: [
8003
+ /* @__PURE__ */ jsx("div", { className: "h-3 bg-muted rounded w-3/4" }),
8004
+ /* @__PURE__ */ jsx("div", { className: "h-3 bg-muted rounded w-1/2" }),
8005
+ /* @__PURE__ */ jsx("div", { className: "h-2.5 bg-muted rounded w-1/4 mt-1" })
8006
+ ] })
8007
+ ]
8008
+ },
8009
+ i
8010
+ ))
8011
+ }
8012
+ );
8013
+ }
8014
+ function NotificationPanel({
8015
+ children,
8016
+ onMarkAllRead,
8017
+ markAllReadLabel,
8018
+ emptyState,
8019
+ loading = false,
8020
+ className
8021
+ }) {
8022
+ const hasChildren = React26.Children.count(children) > 0 && children !== null && children !== void 0;
8023
+ return /* @__PURE__ */ jsxs(
8024
+ "div",
8025
+ {
8026
+ className: cn(
8027
+ "cls_notification_panel",
8028
+ "flex flex-col bg-background border border-border rounded-lg overflow-hidden shadow-md",
8029
+ className
8030
+ ),
8031
+ children: [
8032
+ /* @__PURE__ */ jsx(
8033
+ "div",
8034
+ {
8035
+ role: "list",
8036
+ className: "cls_notification_panel_list flex-1 overflow-y-auto max-h-[480px] divide-y divide-border",
8037
+ children: loading ? /* @__PURE__ */ jsx(LoadingSkeletons, {}) : hasChildren ? children : emptyState ? /* @__PURE__ */ jsx("div", { className: "cls_notification_panel_empty px-4 py-8 flex items-center justify-center", children: emptyState }) : null
8038
+ }
8039
+ ),
8040
+ onMarkAllRead ? /* @__PURE__ */ jsx("div", { className: "cls_notification_panel_footer border-t border-border px-4 py-2 flex justify-center", children: /* @__PURE__ */ jsx(
8041
+ "button",
8042
+ {
8043
+ type: "button",
8044
+ onClick: onMarkAllRead,
8045
+ className: "cls_notification_panel_mark_all text-primary text-xs hover:underline focus:outline-none focus-visible:ring-2 focus-visible:ring-primary rounded",
8046
+ children: markAllReadLabel
8047
+ }
8048
+ ) }) : null
8049
+ ]
8050
+ }
8051
+ );
8052
+ }
7908
8053
  function HazoUiToaster({
7909
8054
  position = "bottom-right",
7910
8055
  closeButton = true,
@@ -10707,6 +10852,6 @@ function HazoUiEtaProgress({
10707
10852
  );
10708
10853
  }
10709
10854
 
10710
- export { ANIMATION_PRESETS, Accordion, AccordionContent, AccordionItem, AccordionTrigger, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, CELEBRATION_GRADIENT, Calendar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CelebrationProvider, Checkbox, Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, CommandNodeExtension, CommandPill, CommandPopover, DateRangeSelector, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, ErrorBanner, ErrorPage, FunnelChart, HazoContextProvider, HazoUiConfirmDialog, HazoUiDialog, DialogClose as HazoUiDialogClose, DialogContent as HazoUiDialogContent, DialogDescription as HazoUiDialogDescription, DialogFooter as HazoUiDialogFooter, DialogHeader as HazoUiDialogHeader, DialogOverlay as HazoUiDialogOverlay, DialogPortal as HazoUiDialogPortal, Dialog as HazoUiDialogRoot, DialogTitle as HazoUiDialogTitle, DialogTrigger as HazoUiDialogTrigger, HazoUiEtaProgress, HazoUiFlexInput, HazoUiFlexRadio, HazoUiImageCropper, HazoUiImageCropperDialog, HazoUiKanban, HazoUiKanbanFilter, HazoUiMultiFilterDialog, HazoUiMultiSortDialog, HazoUiPillRadio, HazoUiProgressBar, HazoUiRte, HazoUiTable, HazoUiTextarea, HazoUiTextbox, HazoUiToaster, HoverCard, HoverCardContent, HoverCardTrigger, Input, InputAffix, InverseSparkline, Label3 as Label, LoadingTimeout, MarkdownEditor, Popover, PopoverContent, PopoverTrigger, ProgressiveImage, RadioGroup, RadioGroupItem, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator3 as Separator, Command as ShadcnCommand, CommandEmpty as ShadcnCommandEmpty, CommandGroup as ShadcnCommandGroup, CommandInput as ShadcnCommandInput, CommandItem as ShadcnCommandItem, CommandList as ShadcnCommandList, Skeleton, SkeletonBar, SkeletonCircle, SkeletonGroup, SkeletonRect, Slider, Sparkline, Spinner, StackedBars, Switch, Table2 as Table, TableBody, TableCaption, TableCell2 as TableCell, TableFooter, TableHead, TableHeader2 as TableHeader, TableRow2 as TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, applyKanbanFilter, buttonGroupVariants, celebrate, cn, computeEta, create_command_suggestion_extension, easeToward, errorToast, format_num, generateUUID, get_hazo_ui_config, get_logger, median, parse_commands_from_text, pick_x_label_indices, reset_hazo_ui_config, resolve_animation_classes, set_hazo_ui_config, set_logger, successToast, text_to_tiptap_content, toggleVariants, useClickOutside, useCopyToClipboard, useDebounce, useErrorDisplay, useEtaProgress, useFullscreen, useIsMobile, useLoadingState, useLocalStorage, useMediaQuery, useSessionStorage, useViewport, useWakeLock, use_fullscreen, use_wake_lock };
10855
+ export { ANIMATION_PRESETS, Accordion, AccordionContent, AccordionItem, AccordionTrigger, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, CELEBRATION_GRADIENT, Calendar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CelebrationProvider, Checkbox, Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, CommandNodeExtension, CommandPill, CommandPopover, DateRangeSelector, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, ErrorBanner, ErrorPage, FunnelChart, HazoContextProvider, HazoUiConfirmDialog, HazoUiDialog, DialogClose as HazoUiDialogClose, DialogContent as HazoUiDialogContent, DialogDescription as HazoUiDialogDescription, DialogFooter as HazoUiDialogFooter, DialogHeader as HazoUiDialogHeader, DialogOverlay as HazoUiDialogOverlay, DialogPortal as HazoUiDialogPortal, Dialog as HazoUiDialogRoot, DialogTitle as HazoUiDialogTitle, DialogTrigger as HazoUiDialogTrigger, HazoUiEtaProgress, HazoUiFlexInput, HazoUiFlexRadio, HazoUiImageCropper, HazoUiImageCropperDialog, HazoUiKanban, HazoUiKanbanFilter, HazoUiMultiFilterDialog, HazoUiMultiSortDialog, HazoUiPillRadio, HazoUiProgressBar, HazoUiRte, HazoUiTable, HazoUiTextarea, HazoUiTextbox, HazoUiToaster, HoverCard, HoverCardContent, HoverCardTrigger, Input, InputAffix, InverseSparkline, Label3 as Label, LoadingTimeout, MarkdownEditor, NotificationCountBadge, NotificationItem, NotificationPanel, Popover, PopoverContent, PopoverTrigger, ProgressiveImage, RadioGroup, RadioGroupItem, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator3 as Separator, Command as ShadcnCommand, CommandEmpty as ShadcnCommandEmpty, CommandGroup as ShadcnCommandGroup, CommandInput as ShadcnCommandInput, CommandItem as ShadcnCommandItem, CommandList as ShadcnCommandList, Skeleton, SkeletonBar, SkeletonCircle, SkeletonGroup, SkeletonRect, Slider, Sparkline, Spinner, StackedBars, Switch, Table2 as Table, TableBody, TableCaption, TableCell2 as TableCell, TableFooter, TableHead, TableHeader2 as TableHeader, TableRow2 as TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, applyKanbanFilter, buttonGroupVariants, celebrate, cn, computeEta, create_command_suggestion_extension, easeToward, errorToast, format_num, generateUUID, get_hazo_ui_config, get_logger, median, parse_commands_from_text, pick_x_label_indices, reset_hazo_ui_config, resolve_animation_classes, set_hazo_ui_config, set_logger, successToast, text_to_tiptap_content, toggleVariants, useClickOutside, useCopyToClipboard, useDebounce, useErrorDisplay, useEtaProgress, useFullscreen, useIsMobile, useLoadingState, useLocalStorage, useMediaQuery, useSessionStorage, useViewport, useWakeLock, use_fullscreen, use_wake_lock };
10711
10856
  //# sourceMappingURL=index.js.map
10712
10857
  //# sourceMappingURL=index.js.map