hazo_files 3.1.0 → 3.2.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/CHANGE_LOG.md CHANGED
@@ -5,6 +5,34 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## 3.2.0 — 2026-08-04
9
+
10
+ ### Fixed
11
+
12
+ Moved 3 packages from optional `peerDependencies` to `dependencies`. Each is imported
13
+ statically at the top level of this package's own `dist/`, but was declared as
14
+ an *optional* peer — and npm never auto-installs an optional peer, under any
15
+ `legacy-peer-deps` setting. The result was a package that could not run as
16
+ shipped: a consumer installed it, imported it, and the build failed with
17
+ module-not-found on packages it had never heard of and had no reason to
18
+ declare. They are implementation details of this package, so this package now
19
+ brings them.
20
+
21
+ - @dnd-kit/core@^6.0.0
22
+ - @dnd-kit/sortable@^8.0.0
23
+ - @dnd-kit/utilities@^3.0.0
24
+
25
+
26
+ ## 3.1.2 — 2026-08-04
27
+
28
+ ### Fixed
29
+
30
+ Widened stale host-framework peer ranges that excluded currently-shipping
31
+ majors and made a strict install unsatisfiable for React 19 consumers:
32
+
33
+ - `react` / `react-dom`: `^18.0.0` -> `^18.0.0 || ^19.0.0`
34
+
35
+
8
36
  ## 3.1.0 — 2026-06-11
9
37
 
10
38
  **Additive** — no breaking changes from 3.0.x.
@@ -1,4 +1,3 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
1
  import * as React from 'react';
3
2
  import React__default from 'react';
4
3
 
@@ -107,7 +106,7 @@ interface HazoFileUploadProviderProps {
107
106
  config?: UploadManagerConfig;
108
107
  enable_toasts?: boolean;
109
108
  }
110
- declare function HazoFileUploadProvider({ children, config, enable_toasts, }: HazoFileUploadProviderProps): react_jsx_runtime.JSX.Element;
109
+ declare function HazoFileUploadProvider({ children, config, enable_toasts, }: HazoFileUploadProviderProps): React__default.JSX.Element;
111
110
 
112
111
  declare class UploadManager {
113
112
  private jobs;
@@ -1,4 +1,3 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
1
  import * as React from 'react';
3
2
  import React__default from 'react';
4
3
 
@@ -107,7 +106,7 @@ interface HazoFileUploadProviderProps {
107
106
  config?: UploadManagerConfig;
108
107
  enable_toasts?: boolean;
109
108
  }
110
- declare function HazoFileUploadProvider({ children, config, enable_toasts, }: HazoFileUploadProviderProps): react_jsx_runtime.JSX.Element;
109
+ declare function HazoFileUploadProvider({ children, config, enable_toasts, }: HazoFileUploadProviderProps): React__default.JSX.Element;
111
110
 
112
111
  declare class UploadManager {
113
112
  private jobs;
@@ -1,5 +1,5 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import React, { ReactNode } from 'react';
1
+ import * as React from 'react';
2
+ import React__default, { ReactNode } from 'react';
3
3
 
4
4
  /**
5
5
  * Naming rule types for hazo_files package
@@ -223,13 +223,19 @@ interface FileBrowserState {
223
223
  * CreateFolderDialog Component
224
224
  * Dialog for creating a new folder
225
225
  */
226
+
226
227
  interface CreateFolderDialogProps {
227
228
  isOpen: boolean;
228
229
  onClose: () => void;
229
230
  onSubmit: (name: string) => Promise<void>;
230
231
  currentPath: string;
231
232
  }
232
- declare function CreateFolderDialog({ isOpen, onClose, onSubmit, currentPath, }: CreateFolderDialogProps): react_jsx_runtime.JSX.Element | null;
233
+ declare function CreateFolderDialog({ isOpen, onClose, onSubmit, currentPath, }: CreateFolderDialogProps): React__default.JSX.Element | null;
234
+
235
+ /**
236
+ * RenameDialog Component
237
+ * Dialog for renaming a file or folder
238
+ */
233
239
 
234
240
  interface RenameDialogProps {
235
241
  isOpen: boolean;
@@ -237,7 +243,7 @@ interface RenameDialogProps {
237
243
  onClose: () => void;
238
244
  onSubmit: (newName: string) => Promise<void>;
239
245
  }
240
- declare function RenameDialog({ isOpen, item, onClose, onSubmit, }: RenameDialogProps): react_jsx_runtime.JSX.Element | null;
246
+ declare function RenameDialog({ isOpen, item, onClose, onSubmit, }: RenameDialogProps): React__default.JSX.Element | null;
241
247
 
242
248
  interface DeleteConfirmDialogProps {
243
249
  isOpen: boolean;
@@ -245,19 +251,20 @@ interface DeleteConfirmDialogProps {
245
251
  onClose: () => void;
246
252
  onConfirm: () => Promise<void>;
247
253
  }
248
- declare function DeleteConfirmDialog({ isOpen, item, onClose, onConfirm, }: DeleteConfirmDialogProps): react_jsx_runtime.JSX.Element | null;
254
+ declare function DeleteConfirmDialog({ isOpen, item, onClose, onConfirm, }: DeleteConfirmDialogProps): React.JSX.Element | null;
249
255
 
250
256
  /**
251
257
  * UploadDialog Component
252
258
  * Dialog for uploading files with drag and drop support
253
259
  */
260
+
254
261
  interface UploadDialogProps {
255
262
  isOpen: boolean;
256
263
  currentPath: string;
257
264
  onClose: () => void;
258
265
  onUpload: (files: FileList) => Promise<void>;
259
266
  }
260
- declare function UploadDialog({ isOpen, currentPath, onClose, onUpload, }: UploadDialogProps): react_jsx_runtime.JSX.Element | null;
267
+ declare function UploadDialog({ isOpen, currentPath, onClose, onUpload, }: UploadDialogProps): React__default.JSX.Element | null;
261
268
 
262
269
  /**
263
270
  * Extended metadata including database record data
@@ -302,7 +309,7 @@ interface FileInfoPanelProps {
302
309
  * // With custom styling
303
310
  * <FileInfoPanel item={file} className="p-4 bg-gray-50 rounded-lg" />
304
311
  */
305
- declare function FileInfoPanel({ item, metadata, isLoading, showCustomMetadata, className, }: FileInfoPanelProps): react_jsx_runtime.JSX.Element;
312
+ declare function FileInfoPanel({ item, metadata, isLoading, showCustomMetadata, className, }: FileInfoPanelProps): React.JSX.Element;
306
313
 
307
314
  interface MetadataDialogProps {
308
315
  isOpen: boolean;
@@ -311,7 +318,7 @@ interface MetadataDialogProps {
311
318
  isLoading?: boolean;
312
319
  onClose: () => void;
313
320
  }
314
- declare function MetadataDialog({ isOpen, item, metadata, isLoading, onClose, }: MetadataDialogProps): react_jsx_runtime.JSX.Element | null;
321
+ declare function MetadataDialog({ isOpen, item, metadata, isLoading, onClose, }: MetadataDialogProps): React.JSX.Element | null;
315
322
 
316
323
  interface FileBrowserAPI$1 {
317
324
  listDirectory: (path: string) => Promise<OperationResult<FileSystemItem[]>>;
@@ -341,18 +348,24 @@ interface FileBrowserProps {
341
348
  onNavigate?: (path: string) => void;
342
349
  onSelect?: (item: FileSystemItem | null) => void;
343
350
  }
344
- declare function FileBrowser({ api, initialPath, showPreview, showTree, viewMode, className, treeWidth, previewHeight, onError, onNavigate, onSelect, }: FileBrowserProps): react_jsx_runtime.JSX.Element;
351
+ declare function FileBrowser({ api, initialPath, showPreview, showTree, viewMode, className, treeWidth, previewHeight, onError, onNavigate, onSelect, }: FileBrowserProps): React.JSX.Element;
345
352
 
346
353
  /**
347
354
  * PathBreadcrumb Component
348
355
  * Displays the current path as a breadcrumb navigation
349
356
  */
357
+
350
358
  interface PathBreadcrumbProps {
351
359
  currentPath: string;
352
360
  onNavigate: (path: string) => void;
353
361
  className?: string;
354
362
  }
355
- declare function PathBreadcrumb({ currentPath, onNavigate, className }: PathBreadcrumbProps): react_jsx_runtime.JSX.Element;
363
+ declare function PathBreadcrumb({ currentPath, onNavigate, className }: PathBreadcrumbProps): React__default.JSX.Element;
364
+
365
+ /**
366
+ * FolderTree Component
367
+ * Displays a hierarchical tree view of folders
368
+ */
356
369
 
357
370
  interface FolderTreeProps {
358
371
  tree: TreeNode[];
@@ -364,7 +377,12 @@ interface FolderTreeProps {
364
377
  dropTargetPath?: string | null;
365
378
  className?: string;
366
379
  }
367
- declare function FolderTree({ tree, currentPath, onSelect, onExpand, onToggle, isDragging, dropTargetPath, className, }: FolderTreeProps): react_jsx_runtime.JSX.Element;
380
+ declare function FolderTree({ tree, currentPath, onSelect, onExpand, onToggle, isDragging, dropTargetPath, className, }: FolderTreeProps): React__default.JSX.Element;
381
+
382
+ /**
383
+ * FileList Component
384
+ * Displays a grid/list of files and folders
385
+ */
368
386
 
369
387
  interface FileListProps {
370
388
  files: FileSystemItem[];
@@ -372,13 +390,13 @@ interface FileListProps {
372
390
  isLoading: boolean;
373
391
  onSelect: (item: FileSystemItem) => void;
374
392
  onOpen: (item: FileSystemItem) => void;
375
- onContextMenu?: (item: FileSystemItem, event: React.MouseEvent) => void;
393
+ onContextMenu?: (item: FileSystemItem, event: React__default.MouseEvent) => void;
376
394
  viewMode?: 'grid' | 'list';
377
395
  draggedItem?: FileSystemItem | null;
378
396
  dropTargetPath?: string | null;
379
397
  className?: string;
380
398
  }
381
- declare function FileList$1({ files, selectedItem, isLoading, onSelect, onOpen, onContextMenu, viewMode, draggedItem, dropTargetPath, className, }: FileListProps): react_jsx_runtime.JSX.Element;
399
+ declare function FileList$1({ files, selectedItem, isLoading, onSelect, onOpen, onContextMenu, viewMode, draggedItem, dropTargetPath, className, }: FileListProps): React__default.JSX.Element;
382
400
 
383
401
  interface FilePreviewProps {
384
402
  item: FileSystemItem | null;
@@ -386,7 +404,12 @@ interface FilePreviewProps {
386
404
  getFileContent?: (path: string) => Promise<string>;
387
405
  className?: string;
388
406
  }
389
- declare function FilePreview({ item, getPreviewUrl, getFileContent, className, }: FilePreviewProps): react_jsx_runtime.JSX.Element;
407
+ declare function FilePreview({ item, getPreviewUrl, getFileContent, className, }: FilePreviewProps): React.JSX.Element;
408
+
409
+ /**
410
+ * FileActions Component
411
+ * Toolbar with action buttons for file operations
412
+ */
390
413
 
391
414
  interface FileActionsProps {
392
415
  selectedItem: FileSystemItem | null;
@@ -399,7 +422,12 @@ interface FileActionsProps {
399
422
  isLoading?: boolean;
400
423
  className?: string;
401
424
  }
402
- declare function FileActions({ selectedItem, onCreateFolder, onUpload, onDownload, onDelete, onRename, onRefresh, isLoading, className, }: FileActionsProps): react_jsx_runtime.JSX.Element;
425
+ declare function FileActions({ selectedItem, onCreateFolder, onUpload, onDownload, onDelete, onRename, onRefresh, isLoading, className, }: FileActionsProps): React__default.JSX.Element;
426
+
427
+ /**
428
+ * ContextMenu Component
429
+ * Custom right-click context menu positioned at cursor location
430
+ */
403
431
 
404
432
  interface IconProps$1 {
405
433
  className?: string;
@@ -408,7 +436,7 @@ interface IconProps$1 {
408
436
  interface ContextMenuItem {
409
437
  id: string;
410
438
  label: string;
411
- icon?: React.ComponentType<IconProps$1>;
439
+ icon?: React__default.ComponentType<IconProps$1>;
412
440
  onClick: () => void;
413
441
  disabled?: boolean;
414
442
  danger?: boolean;
@@ -422,13 +450,18 @@ interface ContextMenuProps {
422
450
  } | null;
423
451
  onClose: () => void;
424
452
  }
425
- declare function ContextMenu({ items, position, onClose }: ContextMenuProps): react_jsx_runtime.JSX.Element | null;
453
+ declare function ContextMenu({ items, position, onClose }: ContextMenuProps): React__default.JSX.Element | null;
426
454
 
427
455
  interface DragPreviewProps {
428
456
  item: FileSystemItem;
429
457
  className?: string;
430
458
  }
431
- declare function DragPreview({ item, className }: DragPreviewProps): react_jsx_runtime.JSX.Element;
459
+ declare function DragPreview({ item, className }: DragPreviewProps): React.JSX.Element;
460
+
461
+ /**
462
+ * FileBrowser Context
463
+ * Provides state management for the file browser component
464
+ */
432
465
 
433
466
  type FileBrowserAction = {
434
467
  type: 'SET_LOADING';
@@ -485,7 +518,7 @@ interface FileBrowserAPI {
485
518
  }
486
519
  interface FileBrowserContextValue {
487
520
  state: FileBrowserState;
488
- dispatch: React.Dispatch<FileBrowserAction>;
521
+ dispatch: React__default.Dispatch<FileBrowserAction>;
489
522
  api: FileBrowserAPI | null;
490
523
  navigateTo: (path: string) => Promise<void>;
491
524
  refresh: () => Promise<void>;
@@ -504,7 +537,7 @@ interface FileBrowserProviderProps {
504
537
  api: FileBrowserAPI;
505
538
  initialPath?: string;
506
539
  }
507
- declare function FileBrowserProvider({ children, api, initialPath }: FileBrowserProviderProps): react_jsx_runtime.JSX.Element;
540
+ declare function FileBrowserProvider({ children, api, initialPath }: FileBrowserProviderProps): React__default.JSX.Element;
508
541
  declare function useFileBrowserContext(): FileBrowserContextValue;
509
542
 
510
543
  /**
@@ -576,39 +609,44 @@ interface UseMultiFileOperationsReturn {
576
609
  }
577
610
  declare function useMultiFileOperations(): UseMultiFileOperationsReturn;
578
611
 
612
+ /**
613
+ * File Type Icons
614
+ * SVG icons for different file types
615
+ */
616
+
579
617
  interface IconProps {
580
618
  className?: string;
581
619
  size?: number;
582
620
  }
583
- declare function FolderIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
584
- declare function FolderOpenIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
585
- declare function FileIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
586
- declare function FileTextIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
587
- declare function ImageIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
588
- declare function VideoIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
589
- declare function AudioIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
590
- declare function ArchiveIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
591
- declare function PdfIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
592
- declare function CodeIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
593
- declare function UploadIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
594
- declare function DownloadIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
595
- declare function TrashIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
596
- declare function PencilIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
597
- declare function PlusIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
598
- declare function RefreshIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
599
- declare function ChevronRightIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
600
- declare function ChevronDownIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
601
- declare function HomeIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
602
- declare function MoreVerticalIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
603
- declare function XIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
604
- declare function LoaderIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
605
- declare function InfoIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
621
+ declare function FolderIcon({ className, size }: IconProps): React__default.JSX.Element;
622
+ declare function FolderOpenIcon({ className, size }: IconProps): React__default.JSX.Element;
623
+ declare function FileIcon({ className, size }: IconProps): React__default.JSX.Element;
624
+ declare function FileTextIcon({ className, size }: IconProps): React__default.JSX.Element;
625
+ declare function ImageIcon({ className, size }: IconProps): React__default.JSX.Element;
626
+ declare function VideoIcon({ className, size }: IconProps): React__default.JSX.Element;
627
+ declare function AudioIcon({ className, size }: IconProps): React__default.JSX.Element;
628
+ declare function ArchiveIcon({ className, size }: IconProps): React__default.JSX.Element;
629
+ declare function PdfIcon({ className, size }: IconProps): React__default.JSX.Element;
630
+ declare function CodeIcon({ className, size }: IconProps): React__default.JSX.Element;
631
+ declare function UploadIcon({ className, size }: IconProps): React__default.JSX.Element;
632
+ declare function DownloadIcon({ className, size }: IconProps): React__default.JSX.Element;
633
+ declare function TrashIcon({ className, size }: IconProps): React__default.JSX.Element;
634
+ declare function PencilIcon({ className, size }: IconProps): React__default.JSX.Element;
635
+ declare function PlusIcon({ className, size }: IconProps): React__default.JSX.Element;
636
+ declare function RefreshIcon({ className, size }: IconProps): React__default.JSX.Element;
637
+ declare function ChevronRightIcon({ className, size }: IconProps): React__default.JSX.Element;
638
+ declare function ChevronDownIcon({ className, size }: IconProps): React__default.JSX.Element;
639
+ declare function HomeIcon({ className, size }: IconProps): React__default.JSX.Element;
640
+ declare function MoreVerticalIcon({ className, size }: IconProps): React__default.JSX.Element;
641
+ declare function XIcon({ className, size }: IconProps): React__default.JSX.Element;
642
+ declare function LoaderIcon({ className, size }: IconProps): React__default.JSX.Element;
643
+ declare function InfoIcon({ className, size }: IconProps): React__default.JSX.Element;
606
644
  /**
607
645
  * Get the appropriate icon component for a file type
608
646
  */
609
- declare function getFileIcon(mimeType: string, isDirectory: boolean): React.ComponentType<IconProps>;
647
+ declare function getFileIcon(mimeType: string, isDirectory: boolean): React__default.ComponentType<IconProps>;
610
648
 
611
- declare function NamingRuleConfigurator({ variables, initialSchema, onChange, onExport, onImport, className, customDateFormats, readOnly, sampleFileName, }: NamingRuleConfiguratorProps): react_jsx_runtime.JSX.Element;
649
+ declare function NamingRuleConfigurator({ variables, initialSchema, onChange, onExport, onImport, className, customDateFormats, readOnly, sampleFileName, }: NamingRuleConfiguratorProps): React.JSX.Element;
612
650
 
613
651
  interface VariableListProps {
614
652
  /** User-defined variables */
@@ -622,7 +660,7 @@ interface VariableListProps {
622
660
  /** Additional CSS class */
623
661
  className?: string;
624
662
  }
625
- declare function VariableList({ userVariables, customDateFormats, onVariableClick, disabled, className, }: VariableListProps): react_jsx_runtime.JSX.Element;
663
+ declare function VariableList({ userVariables, customDateFormats, onVariableClick, disabled, className, }: VariableListProps): React.JSX.Element;
626
664
 
627
665
  interface PatternBuilderProps {
628
666
  /** Current pattern segments */
@@ -650,7 +688,7 @@ interface PatternBuilderProps {
650
688
  /** Additional CSS class */
651
689
  className?: string;
652
690
  }
653
- declare function PatternBuilder({ pattern, label, droppableId, onAddSegment, onRemoveSegment, onUpdateSegment, onClear, readOnly, placeholder, className, }: PatternBuilderProps): react_jsx_runtime.JSX.Element;
691
+ declare function PatternBuilder({ pattern, label, droppableId, onAddSegment, onRemoveSegment, onUpdateSegment, onClear, readOnly, placeholder, className, }: PatternBuilderProps): React.JSX.Element;
654
692
 
655
693
  interface PatternPreviewProps {
656
694
  /** File pattern segments */
@@ -668,7 +706,7 @@ interface PatternPreviewProps {
668
706
  /** Additional CSS class */
669
707
  className?: string;
670
708
  }
671
- declare function PatternPreview({ filePattern, folderPattern, userVariables, sampleFileName, previewDate, counterValue, className, }: PatternPreviewProps): react_jsx_runtime.JSX.Element;
709
+ declare function PatternPreview({ filePattern, folderPattern, userVariables, sampleFileName, previewDate, counterValue, className, }: PatternPreviewProps): React.JSX.Element;
672
710
 
673
711
  interface DraggableVariableProps {
674
712
  /** The variable data */
@@ -680,7 +718,7 @@ interface DraggableVariableProps {
680
718
  /** Whether the variable is disabled */
681
719
  disabled?: boolean;
682
720
  }
683
- declare function DraggableVariable({ variable, onClick, className, disabled, }: DraggableVariableProps): react_jsx_runtime.JSX.Element;
721
+ declare function DraggableVariable({ variable, onClick, className, disabled, }: DraggableVariableProps): React.JSX.Element;
684
722
 
685
723
  interface PatternSegmentItemProps {
686
724
  /** The segment data */
@@ -694,7 +732,7 @@ interface PatternSegmentItemProps {
694
732
  /** Additional CSS class */
695
733
  className?: string;
696
734
  }
697
- declare function PatternSegmentItem({ segment, onUpdate, onDelete, readOnly, className, }: PatternSegmentItemProps): react_jsx_runtime.JSX.Element;
735
+ declare function PatternSegmentItem({ segment, onUpdate, onDelete, readOnly, className, }: PatternSegmentItemProps): React.JSX.Element;
698
736
 
699
737
  /**
700
738
  * SeparatorPicker Component
@@ -708,7 +746,7 @@ interface SeparatorPickerProps {
708
746
  /** Additional CSS class */
709
747
  className?: string;
710
748
  }
711
- declare function SeparatorPicker({ onSelect, disabled, className, }: SeparatorPickerProps): react_jsx_runtime.JSX.Element;
749
+ declare function SeparatorPicker({ onSelect, disabled, className, }: SeparatorPickerProps): React.JSX.Element;
712
750
 
713
751
  /**
714
752
  * useNamingRule Hook
@@ -726,6 +764,11 @@ interface UseNamingRuleOptions {
726
764
  */
727
765
  declare function useNamingRule(options?: UseNamingRuleOptions): UseNamingRuleReturn;
728
766
 
767
+ /**
768
+ * Naming Convention List Component
769
+ * Displays a list of naming conventions with CRUD actions, grouped by type
770
+ */
771
+
729
772
  interface NamingConventionListProps {
730
773
  /** List of naming conventions to display */
731
774
  conventions: ParsedNamingConvention[];
@@ -765,7 +808,7 @@ interface NamingConventionListProps {
765
808
  * />
766
809
  * ```
767
810
  */
768
- declare function NamingConventionList({ conventions, selectedId, onSelect, onCreate, onDelete, onDuplicate, isLoading, className, showScope, }: NamingConventionListProps): react_jsx_runtime.JSX.Element;
811
+ declare function NamingConventionList({ conventions, selectedId, onSelect, onCreate, onDelete, onDuplicate, isLoading, className, showScope, }: NamingConventionListProps): React__default.JSX.Element;
769
812
 
770
813
  /**
771
814
  * Simplified variable definition for passing variables via props.
@@ -830,7 +873,7 @@ interface NamingConventionEditorProps {
830
873
  * />
831
874
  * ```
832
875
  */
833
- declare function NamingConventionEditor({ convention, variableDefinitions, availableVariables, onSave, onCancel, isSaving, className, readOnly, defaultScopeId, onExport, onImport, }: NamingConventionEditorProps): react_jsx_runtime.JSX.Element;
876
+ declare function NamingConventionEditor({ convention, variableDefinitions, availableVariables, onSave, onCancel, isSaving, className, readOnly, defaultScopeId, onExport, onImport, }: NamingConventionEditorProps): React.JSX.Element;
834
877
 
835
878
  /**
836
879
  * API interface for naming convention operations
@@ -917,6 +960,6 @@ interface NamingConventionManagerProps {
917
960
  * />
918
961
  * ```
919
962
  */
920
- declare function NamingConventionManager({ api, availableVariables, listOptions, defaultScopeId, onSave, onDelete, onError, className, listWidth, showScope, initialSelectedId, }: NamingConventionManagerProps): react_jsx_runtime.JSX.Element;
963
+ declare function NamingConventionManager({ api, availableVariables, listOptions, defaultScopeId, onSave, onDelete, onError, className, listWidth, showScope, initialSelectedId, }: NamingConventionManagerProps): React.JSX.Element;
921
964
 
922
965
  export { ArchiveIcon, AudioIcon, ChevronDownIcon, ChevronRightIcon, CodeIcon, ContextMenu, type ContextMenuItem, type ContextMenuProps, CreateFolderDialog, type CreateFolderDialogProps, DeleteConfirmDialog, type DeleteConfirmDialogProps, DownloadIcon, DragPreview, type DragPreviewProps, DraggableVariable, type DraggableVariableProps, FileActions, type FileActionsProps, FileBrowser, type FileBrowserAPI$1 as FileBrowserAPI, type FileBrowserProps, FileBrowserProvider, type FileBrowserProviderProps, FileIcon, FileInfoPanel, type FileInfoPanelProps, FileList$1 as FileList, type FileListProps, type FileMetadata, FilePreview, type FilePreviewProps, FileTextIcon, FolderIcon, FolderOpenIcon, FolderTree, type FolderTreeProps, HomeIcon, ImageIcon, InfoIcon, LoaderIcon, MetadataDialog, type MetadataDialogProps, MoreVerticalIcon, type NamingConventionAPI, NamingConventionEditor, type NamingConventionEditorProps, NamingConventionList, type NamingConventionListProps, NamingConventionManager, type NamingConventionManagerProps, NamingRuleConfigurator, type OperationState, PathBreadcrumb, type PathBreadcrumbProps, PatternBuilder, type PatternBuilderProps, PatternPreview, type PatternPreviewProps, PatternSegmentItem, type PatternSegmentItemProps, PdfIcon, PencilIcon, PlusIcon, RefreshIcon, RenameDialog, type RenameDialogProps, SeparatorPicker, type SeparatorPickerProps, TrashIcon, UploadDialog, type UploadDialogProps, UploadIcon, type UseFileBrowserOptions, type UseFileBrowserReturn, type UseFileOperationsReturn, type UseMultiFileOperationsReturn, type UseNamingRuleOptions, VariableList, type VariableListProps, VideoIcon, XIcon, getFileIcon, useFileBrowser, useFileBrowserContext, useFileOperations, useMultiFileOperations, useNamingRule };
@@ -1,5 +1,5 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import React, { ReactNode } from 'react';
1
+ import * as React from 'react';
2
+ import React__default, { ReactNode } from 'react';
3
3
 
4
4
  /**
5
5
  * Naming rule types for hazo_files package
@@ -223,13 +223,19 @@ interface FileBrowserState {
223
223
  * CreateFolderDialog Component
224
224
  * Dialog for creating a new folder
225
225
  */
226
+
226
227
  interface CreateFolderDialogProps {
227
228
  isOpen: boolean;
228
229
  onClose: () => void;
229
230
  onSubmit: (name: string) => Promise<void>;
230
231
  currentPath: string;
231
232
  }
232
- declare function CreateFolderDialog({ isOpen, onClose, onSubmit, currentPath, }: CreateFolderDialogProps): react_jsx_runtime.JSX.Element | null;
233
+ declare function CreateFolderDialog({ isOpen, onClose, onSubmit, currentPath, }: CreateFolderDialogProps): React__default.JSX.Element | null;
234
+
235
+ /**
236
+ * RenameDialog Component
237
+ * Dialog for renaming a file or folder
238
+ */
233
239
 
234
240
  interface RenameDialogProps {
235
241
  isOpen: boolean;
@@ -237,7 +243,7 @@ interface RenameDialogProps {
237
243
  onClose: () => void;
238
244
  onSubmit: (newName: string) => Promise<void>;
239
245
  }
240
- declare function RenameDialog({ isOpen, item, onClose, onSubmit, }: RenameDialogProps): react_jsx_runtime.JSX.Element | null;
246
+ declare function RenameDialog({ isOpen, item, onClose, onSubmit, }: RenameDialogProps): React__default.JSX.Element | null;
241
247
 
242
248
  interface DeleteConfirmDialogProps {
243
249
  isOpen: boolean;
@@ -245,19 +251,20 @@ interface DeleteConfirmDialogProps {
245
251
  onClose: () => void;
246
252
  onConfirm: () => Promise<void>;
247
253
  }
248
- declare function DeleteConfirmDialog({ isOpen, item, onClose, onConfirm, }: DeleteConfirmDialogProps): react_jsx_runtime.JSX.Element | null;
254
+ declare function DeleteConfirmDialog({ isOpen, item, onClose, onConfirm, }: DeleteConfirmDialogProps): React.JSX.Element | null;
249
255
 
250
256
  /**
251
257
  * UploadDialog Component
252
258
  * Dialog for uploading files with drag and drop support
253
259
  */
260
+
254
261
  interface UploadDialogProps {
255
262
  isOpen: boolean;
256
263
  currentPath: string;
257
264
  onClose: () => void;
258
265
  onUpload: (files: FileList) => Promise<void>;
259
266
  }
260
- declare function UploadDialog({ isOpen, currentPath, onClose, onUpload, }: UploadDialogProps): react_jsx_runtime.JSX.Element | null;
267
+ declare function UploadDialog({ isOpen, currentPath, onClose, onUpload, }: UploadDialogProps): React__default.JSX.Element | null;
261
268
 
262
269
  /**
263
270
  * Extended metadata including database record data
@@ -302,7 +309,7 @@ interface FileInfoPanelProps {
302
309
  * // With custom styling
303
310
  * <FileInfoPanel item={file} className="p-4 bg-gray-50 rounded-lg" />
304
311
  */
305
- declare function FileInfoPanel({ item, metadata, isLoading, showCustomMetadata, className, }: FileInfoPanelProps): react_jsx_runtime.JSX.Element;
312
+ declare function FileInfoPanel({ item, metadata, isLoading, showCustomMetadata, className, }: FileInfoPanelProps): React.JSX.Element;
306
313
 
307
314
  interface MetadataDialogProps {
308
315
  isOpen: boolean;
@@ -311,7 +318,7 @@ interface MetadataDialogProps {
311
318
  isLoading?: boolean;
312
319
  onClose: () => void;
313
320
  }
314
- declare function MetadataDialog({ isOpen, item, metadata, isLoading, onClose, }: MetadataDialogProps): react_jsx_runtime.JSX.Element | null;
321
+ declare function MetadataDialog({ isOpen, item, metadata, isLoading, onClose, }: MetadataDialogProps): React.JSX.Element | null;
315
322
 
316
323
  interface FileBrowserAPI$1 {
317
324
  listDirectory: (path: string) => Promise<OperationResult<FileSystemItem[]>>;
@@ -341,18 +348,24 @@ interface FileBrowserProps {
341
348
  onNavigate?: (path: string) => void;
342
349
  onSelect?: (item: FileSystemItem | null) => void;
343
350
  }
344
- declare function FileBrowser({ api, initialPath, showPreview, showTree, viewMode, className, treeWidth, previewHeight, onError, onNavigate, onSelect, }: FileBrowserProps): react_jsx_runtime.JSX.Element;
351
+ declare function FileBrowser({ api, initialPath, showPreview, showTree, viewMode, className, treeWidth, previewHeight, onError, onNavigate, onSelect, }: FileBrowserProps): React.JSX.Element;
345
352
 
346
353
  /**
347
354
  * PathBreadcrumb Component
348
355
  * Displays the current path as a breadcrumb navigation
349
356
  */
357
+
350
358
  interface PathBreadcrumbProps {
351
359
  currentPath: string;
352
360
  onNavigate: (path: string) => void;
353
361
  className?: string;
354
362
  }
355
- declare function PathBreadcrumb({ currentPath, onNavigate, className }: PathBreadcrumbProps): react_jsx_runtime.JSX.Element;
363
+ declare function PathBreadcrumb({ currentPath, onNavigate, className }: PathBreadcrumbProps): React__default.JSX.Element;
364
+
365
+ /**
366
+ * FolderTree Component
367
+ * Displays a hierarchical tree view of folders
368
+ */
356
369
 
357
370
  interface FolderTreeProps {
358
371
  tree: TreeNode[];
@@ -364,7 +377,12 @@ interface FolderTreeProps {
364
377
  dropTargetPath?: string | null;
365
378
  className?: string;
366
379
  }
367
- declare function FolderTree({ tree, currentPath, onSelect, onExpand, onToggle, isDragging, dropTargetPath, className, }: FolderTreeProps): react_jsx_runtime.JSX.Element;
380
+ declare function FolderTree({ tree, currentPath, onSelect, onExpand, onToggle, isDragging, dropTargetPath, className, }: FolderTreeProps): React__default.JSX.Element;
381
+
382
+ /**
383
+ * FileList Component
384
+ * Displays a grid/list of files and folders
385
+ */
368
386
 
369
387
  interface FileListProps {
370
388
  files: FileSystemItem[];
@@ -372,13 +390,13 @@ interface FileListProps {
372
390
  isLoading: boolean;
373
391
  onSelect: (item: FileSystemItem) => void;
374
392
  onOpen: (item: FileSystemItem) => void;
375
- onContextMenu?: (item: FileSystemItem, event: React.MouseEvent) => void;
393
+ onContextMenu?: (item: FileSystemItem, event: React__default.MouseEvent) => void;
376
394
  viewMode?: 'grid' | 'list';
377
395
  draggedItem?: FileSystemItem | null;
378
396
  dropTargetPath?: string | null;
379
397
  className?: string;
380
398
  }
381
- declare function FileList$1({ files, selectedItem, isLoading, onSelect, onOpen, onContextMenu, viewMode, draggedItem, dropTargetPath, className, }: FileListProps): react_jsx_runtime.JSX.Element;
399
+ declare function FileList$1({ files, selectedItem, isLoading, onSelect, onOpen, onContextMenu, viewMode, draggedItem, dropTargetPath, className, }: FileListProps): React__default.JSX.Element;
382
400
 
383
401
  interface FilePreviewProps {
384
402
  item: FileSystemItem | null;
@@ -386,7 +404,12 @@ interface FilePreviewProps {
386
404
  getFileContent?: (path: string) => Promise<string>;
387
405
  className?: string;
388
406
  }
389
- declare function FilePreview({ item, getPreviewUrl, getFileContent, className, }: FilePreviewProps): react_jsx_runtime.JSX.Element;
407
+ declare function FilePreview({ item, getPreviewUrl, getFileContent, className, }: FilePreviewProps): React.JSX.Element;
408
+
409
+ /**
410
+ * FileActions Component
411
+ * Toolbar with action buttons for file operations
412
+ */
390
413
 
391
414
  interface FileActionsProps {
392
415
  selectedItem: FileSystemItem | null;
@@ -399,7 +422,12 @@ interface FileActionsProps {
399
422
  isLoading?: boolean;
400
423
  className?: string;
401
424
  }
402
- declare function FileActions({ selectedItem, onCreateFolder, onUpload, onDownload, onDelete, onRename, onRefresh, isLoading, className, }: FileActionsProps): react_jsx_runtime.JSX.Element;
425
+ declare function FileActions({ selectedItem, onCreateFolder, onUpload, onDownload, onDelete, onRename, onRefresh, isLoading, className, }: FileActionsProps): React__default.JSX.Element;
426
+
427
+ /**
428
+ * ContextMenu Component
429
+ * Custom right-click context menu positioned at cursor location
430
+ */
403
431
 
404
432
  interface IconProps$1 {
405
433
  className?: string;
@@ -408,7 +436,7 @@ interface IconProps$1 {
408
436
  interface ContextMenuItem {
409
437
  id: string;
410
438
  label: string;
411
- icon?: React.ComponentType<IconProps$1>;
439
+ icon?: React__default.ComponentType<IconProps$1>;
412
440
  onClick: () => void;
413
441
  disabled?: boolean;
414
442
  danger?: boolean;
@@ -422,13 +450,18 @@ interface ContextMenuProps {
422
450
  } | null;
423
451
  onClose: () => void;
424
452
  }
425
- declare function ContextMenu({ items, position, onClose }: ContextMenuProps): react_jsx_runtime.JSX.Element | null;
453
+ declare function ContextMenu({ items, position, onClose }: ContextMenuProps): React__default.JSX.Element | null;
426
454
 
427
455
  interface DragPreviewProps {
428
456
  item: FileSystemItem;
429
457
  className?: string;
430
458
  }
431
- declare function DragPreview({ item, className }: DragPreviewProps): react_jsx_runtime.JSX.Element;
459
+ declare function DragPreview({ item, className }: DragPreviewProps): React.JSX.Element;
460
+
461
+ /**
462
+ * FileBrowser Context
463
+ * Provides state management for the file browser component
464
+ */
432
465
 
433
466
  type FileBrowserAction = {
434
467
  type: 'SET_LOADING';
@@ -485,7 +518,7 @@ interface FileBrowserAPI {
485
518
  }
486
519
  interface FileBrowserContextValue {
487
520
  state: FileBrowserState;
488
- dispatch: React.Dispatch<FileBrowserAction>;
521
+ dispatch: React__default.Dispatch<FileBrowserAction>;
489
522
  api: FileBrowserAPI | null;
490
523
  navigateTo: (path: string) => Promise<void>;
491
524
  refresh: () => Promise<void>;
@@ -504,7 +537,7 @@ interface FileBrowserProviderProps {
504
537
  api: FileBrowserAPI;
505
538
  initialPath?: string;
506
539
  }
507
- declare function FileBrowserProvider({ children, api, initialPath }: FileBrowserProviderProps): react_jsx_runtime.JSX.Element;
540
+ declare function FileBrowserProvider({ children, api, initialPath }: FileBrowserProviderProps): React__default.JSX.Element;
508
541
  declare function useFileBrowserContext(): FileBrowserContextValue;
509
542
 
510
543
  /**
@@ -576,39 +609,44 @@ interface UseMultiFileOperationsReturn {
576
609
  }
577
610
  declare function useMultiFileOperations(): UseMultiFileOperationsReturn;
578
611
 
612
+ /**
613
+ * File Type Icons
614
+ * SVG icons for different file types
615
+ */
616
+
579
617
  interface IconProps {
580
618
  className?: string;
581
619
  size?: number;
582
620
  }
583
- declare function FolderIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
584
- declare function FolderOpenIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
585
- declare function FileIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
586
- declare function FileTextIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
587
- declare function ImageIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
588
- declare function VideoIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
589
- declare function AudioIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
590
- declare function ArchiveIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
591
- declare function PdfIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
592
- declare function CodeIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
593
- declare function UploadIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
594
- declare function DownloadIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
595
- declare function TrashIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
596
- declare function PencilIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
597
- declare function PlusIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
598
- declare function RefreshIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
599
- declare function ChevronRightIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
600
- declare function ChevronDownIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
601
- declare function HomeIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
602
- declare function MoreVerticalIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
603
- declare function XIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
604
- declare function LoaderIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
605
- declare function InfoIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
621
+ declare function FolderIcon({ className, size }: IconProps): React__default.JSX.Element;
622
+ declare function FolderOpenIcon({ className, size }: IconProps): React__default.JSX.Element;
623
+ declare function FileIcon({ className, size }: IconProps): React__default.JSX.Element;
624
+ declare function FileTextIcon({ className, size }: IconProps): React__default.JSX.Element;
625
+ declare function ImageIcon({ className, size }: IconProps): React__default.JSX.Element;
626
+ declare function VideoIcon({ className, size }: IconProps): React__default.JSX.Element;
627
+ declare function AudioIcon({ className, size }: IconProps): React__default.JSX.Element;
628
+ declare function ArchiveIcon({ className, size }: IconProps): React__default.JSX.Element;
629
+ declare function PdfIcon({ className, size }: IconProps): React__default.JSX.Element;
630
+ declare function CodeIcon({ className, size }: IconProps): React__default.JSX.Element;
631
+ declare function UploadIcon({ className, size }: IconProps): React__default.JSX.Element;
632
+ declare function DownloadIcon({ className, size }: IconProps): React__default.JSX.Element;
633
+ declare function TrashIcon({ className, size }: IconProps): React__default.JSX.Element;
634
+ declare function PencilIcon({ className, size }: IconProps): React__default.JSX.Element;
635
+ declare function PlusIcon({ className, size }: IconProps): React__default.JSX.Element;
636
+ declare function RefreshIcon({ className, size }: IconProps): React__default.JSX.Element;
637
+ declare function ChevronRightIcon({ className, size }: IconProps): React__default.JSX.Element;
638
+ declare function ChevronDownIcon({ className, size }: IconProps): React__default.JSX.Element;
639
+ declare function HomeIcon({ className, size }: IconProps): React__default.JSX.Element;
640
+ declare function MoreVerticalIcon({ className, size }: IconProps): React__default.JSX.Element;
641
+ declare function XIcon({ className, size }: IconProps): React__default.JSX.Element;
642
+ declare function LoaderIcon({ className, size }: IconProps): React__default.JSX.Element;
643
+ declare function InfoIcon({ className, size }: IconProps): React__default.JSX.Element;
606
644
  /**
607
645
  * Get the appropriate icon component for a file type
608
646
  */
609
- declare function getFileIcon(mimeType: string, isDirectory: boolean): React.ComponentType<IconProps>;
647
+ declare function getFileIcon(mimeType: string, isDirectory: boolean): React__default.ComponentType<IconProps>;
610
648
 
611
- declare function NamingRuleConfigurator({ variables, initialSchema, onChange, onExport, onImport, className, customDateFormats, readOnly, sampleFileName, }: NamingRuleConfiguratorProps): react_jsx_runtime.JSX.Element;
649
+ declare function NamingRuleConfigurator({ variables, initialSchema, onChange, onExport, onImport, className, customDateFormats, readOnly, sampleFileName, }: NamingRuleConfiguratorProps): React.JSX.Element;
612
650
 
613
651
  interface VariableListProps {
614
652
  /** User-defined variables */
@@ -622,7 +660,7 @@ interface VariableListProps {
622
660
  /** Additional CSS class */
623
661
  className?: string;
624
662
  }
625
- declare function VariableList({ userVariables, customDateFormats, onVariableClick, disabled, className, }: VariableListProps): react_jsx_runtime.JSX.Element;
663
+ declare function VariableList({ userVariables, customDateFormats, onVariableClick, disabled, className, }: VariableListProps): React.JSX.Element;
626
664
 
627
665
  interface PatternBuilderProps {
628
666
  /** Current pattern segments */
@@ -650,7 +688,7 @@ interface PatternBuilderProps {
650
688
  /** Additional CSS class */
651
689
  className?: string;
652
690
  }
653
- declare function PatternBuilder({ pattern, label, droppableId, onAddSegment, onRemoveSegment, onUpdateSegment, onClear, readOnly, placeholder, className, }: PatternBuilderProps): react_jsx_runtime.JSX.Element;
691
+ declare function PatternBuilder({ pattern, label, droppableId, onAddSegment, onRemoveSegment, onUpdateSegment, onClear, readOnly, placeholder, className, }: PatternBuilderProps): React.JSX.Element;
654
692
 
655
693
  interface PatternPreviewProps {
656
694
  /** File pattern segments */
@@ -668,7 +706,7 @@ interface PatternPreviewProps {
668
706
  /** Additional CSS class */
669
707
  className?: string;
670
708
  }
671
- declare function PatternPreview({ filePattern, folderPattern, userVariables, sampleFileName, previewDate, counterValue, className, }: PatternPreviewProps): react_jsx_runtime.JSX.Element;
709
+ declare function PatternPreview({ filePattern, folderPattern, userVariables, sampleFileName, previewDate, counterValue, className, }: PatternPreviewProps): React.JSX.Element;
672
710
 
673
711
  interface DraggableVariableProps {
674
712
  /** The variable data */
@@ -680,7 +718,7 @@ interface DraggableVariableProps {
680
718
  /** Whether the variable is disabled */
681
719
  disabled?: boolean;
682
720
  }
683
- declare function DraggableVariable({ variable, onClick, className, disabled, }: DraggableVariableProps): react_jsx_runtime.JSX.Element;
721
+ declare function DraggableVariable({ variable, onClick, className, disabled, }: DraggableVariableProps): React.JSX.Element;
684
722
 
685
723
  interface PatternSegmentItemProps {
686
724
  /** The segment data */
@@ -694,7 +732,7 @@ interface PatternSegmentItemProps {
694
732
  /** Additional CSS class */
695
733
  className?: string;
696
734
  }
697
- declare function PatternSegmentItem({ segment, onUpdate, onDelete, readOnly, className, }: PatternSegmentItemProps): react_jsx_runtime.JSX.Element;
735
+ declare function PatternSegmentItem({ segment, onUpdate, onDelete, readOnly, className, }: PatternSegmentItemProps): React.JSX.Element;
698
736
 
699
737
  /**
700
738
  * SeparatorPicker Component
@@ -708,7 +746,7 @@ interface SeparatorPickerProps {
708
746
  /** Additional CSS class */
709
747
  className?: string;
710
748
  }
711
- declare function SeparatorPicker({ onSelect, disabled, className, }: SeparatorPickerProps): react_jsx_runtime.JSX.Element;
749
+ declare function SeparatorPicker({ onSelect, disabled, className, }: SeparatorPickerProps): React.JSX.Element;
712
750
 
713
751
  /**
714
752
  * useNamingRule Hook
@@ -726,6 +764,11 @@ interface UseNamingRuleOptions {
726
764
  */
727
765
  declare function useNamingRule(options?: UseNamingRuleOptions): UseNamingRuleReturn;
728
766
 
767
+ /**
768
+ * Naming Convention List Component
769
+ * Displays a list of naming conventions with CRUD actions, grouped by type
770
+ */
771
+
729
772
  interface NamingConventionListProps {
730
773
  /** List of naming conventions to display */
731
774
  conventions: ParsedNamingConvention[];
@@ -765,7 +808,7 @@ interface NamingConventionListProps {
765
808
  * />
766
809
  * ```
767
810
  */
768
- declare function NamingConventionList({ conventions, selectedId, onSelect, onCreate, onDelete, onDuplicate, isLoading, className, showScope, }: NamingConventionListProps): react_jsx_runtime.JSX.Element;
811
+ declare function NamingConventionList({ conventions, selectedId, onSelect, onCreate, onDelete, onDuplicate, isLoading, className, showScope, }: NamingConventionListProps): React__default.JSX.Element;
769
812
 
770
813
  /**
771
814
  * Simplified variable definition for passing variables via props.
@@ -830,7 +873,7 @@ interface NamingConventionEditorProps {
830
873
  * />
831
874
  * ```
832
875
  */
833
- declare function NamingConventionEditor({ convention, variableDefinitions, availableVariables, onSave, onCancel, isSaving, className, readOnly, defaultScopeId, onExport, onImport, }: NamingConventionEditorProps): react_jsx_runtime.JSX.Element;
876
+ declare function NamingConventionEditor({ convention, variableDefinitions, availableVariables, onSave, onCancel, isSaving, className, readOnly, defaultScopeId, onExport, onImport, }: NamingConventionEditorProps): React.JSX.Element;
834
877
 
835
878
  /**
836
879
  * API interface for naming convention operations
@@ -917,6 +960,6 @@ interface NamingConventionManagerProps {
917
960
  * />
918
961
  * ```
919
962
  */
920
- declare function NamingConventionManager({ api, availableVariables, listOptions, defaultScopeId, onSave, onDelete, onError, className, listWidth, showScope, initialSelectedId, }: NamingConventionManagerProps): react_jsx_runtime.JSX.Element;
963
+ declare function NamingConventionManager({ api, availableVariables, listOptions, defaultScopeId, onSave, onDelete, onError, className, listWidth, showScope, initialSelectedId, }: NamingConventionManagerProps): React.JSX.Element;
921
964
 
922
965
  export { ArchiveIcon, AudioIcon, ChevronDownIcon, ChevronRightIcon, CodeIcon, ContextMenu, type ContextMenuItem, type ContextMenuProps, CreateFolderDialog, type CreateFolderDialogProps, DeleteConfirmDialog, type DeleteConfirmDialogProps, DownloadIcon, DragPreview, type DragPreviewProps, DraggableVariable, type DraggableVariableProps, FileActions, type FileActionsProps, FileBrowser, type FileBrowserAPI$1 as FileBrowserAPI, type FileBrowserProps, FileBrowserProvider, type FileBrowserProviderProps, FileIcon, FileInfoPanel, type FileInfoPanelProps, FileList$1 as FileList, type FileListProps, type FileMetadata, FilePreview, type FilePreviewProps, FileTextIcon, FolderIcon, FolderOpenIcon, FolderTree, type FolderTreeProps, HomeIcon, ImageIcon, InfoIcon, LoaderIcon, MetadataDialog, type MetadataDialogProps, MoreVerticalIcon, type NamingConventionAPI, NamingConventionEditor, type NamingConventionEditorProps, NamingConventionList, type NamingConventionListProps, NamingConventionManager, type NamingConventionManagerProps, NamingRuleConfigurator, type OperationState, PathBreadcrumb, type PathBreadcrumbProps, PatternBuilder, type PatternBuilderProps, PatternPreview, type PatternPreviewProps, PatternSegmentItem, type PatternSegmentItemProps, PdfIcon, PencilIcon, PlusIcon, RefreshIcon, RenameDialog, type RenameDialogProps, SeparatorPicker, type SeparatorPickerProps, TrashIcon, UploadDialog, type UploadDialogProps, UploadIcon, type UseFileBrowserOptions, type UseFileBrowserReturn, type UseFileOperationsReturn, type UseMultiFileOperationsReturn, type UseNamingRuleOptions, VariableList, type VariableListProps, VideoIcon, XIcon, getFileIcon, useFileBrowser, useFileBrowserContext, useFileOperations, useMultiFileOperations, useNamingRule };
package/dist/ui/index.js CHANGED
@@ -3355,6 +3355,9 @@ function formatDateToken(date, format) {
3355
3355
  return format;
3356
3356
  }
3357
3357
  }
3358
+ function isCounterVariable(variableName) {
3359
+ return variableName === "counter" || variableName.startsWith("counter:");
3360
+ }
3358
3361
  function formatCounter(value, digits = 3) {
3359
3362
  return String(value).padStart(digits, "0");
3360
3363
  }
@@ -3852,9 +3855,16 @@ var import_react17 = require("react");
3852
3855
  var import_sortable = require("@dnd-kit/sortable");
3853
3856
  var import_utilities = require("@dnd-kit/utilities");
3854
3857
  var import_jsx_runtime19 = (
3855
- // Variable segment - not editable, just display
3858
+ // Counter variable - digit padding is editable via an inline stepper
3856
3859
  require("react/jsx-runtime")
3857
3860
  );
3861
+ var COUNTER_MIN_DIGITS = 1;
3862
+ var COUNTER_MAX_DIGITS = 6;
3863
+ function parseCounterDigits(value) {
3864
+ const m = value.match(/^counter:(\d+)$/);
3865
+ const n = m ? parseInt(m[1], 10) : 3;
3866
+ return Math.min(COUNTER_MAX_DIGITS, Math.max(COUNTER_MIN_DIGITS, n));
3867
+ }
3858
3868
  function getSegmentStyle(type) {
3859
3869
  if (type === "variable") {
3860
3870
  return "bg-blue-100 border-blue-300 text-blue-800";
@@ -3912,6 +3922,12 @@ function PatternSegmentItem({
3912
3922
  }
3913
3923
  };
3914
3924
  const segmentStyle = getSegmentStyle(segment.type);
3925
+ const isCounter = segment.type === "variable" && isCounterVariable(segment.value);
3926
+ const counterDigits = isCounter ? parseCounterDigits(segment.value) : 3;
3927
+ const handleCounterDigitsChange = (next) => {
3928
+ const clamped = Math.min(COUNTER_MAX_DIGITS, Math.max(COUNTER_MIN_DIGITS, next));
3929
+ onUpdate?.(segment.id, `counter:${clamped}`);
3930
+ };
3915
3931
  return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
3916
3932
  "div",
3917
3933
  {
@@ -3929,11 +3945,35 @@ function PatternSegmentItem({
3929
3945
  onKeyDown: handleKeyDown,
3930
3946
  tabIndex: 0,
3931
3947
  children: [
3932
- segment.type === "variable" ? /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex items-center px-2 py-1", children: [
3948
+ isCounter ? /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex items-center px-2 py-1 gap-0.5", children: [
3933
3949
  /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "text-xs opacity-60", children: "{" }),
3934
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "font-medium", children: segment.value }),
3950
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "font-medium", children: "counter" }),
3951
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "text-xs opacity-60", children: ":" }),
3952
+ readOnly ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "font-medium tabular-nums", children: counterDigits }) : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
3953
+ "input",
3954
+ {
3955
+ type: "number",
3956
+ min: COUNTER_MIN_DIGITS,
3957
+ max: COUNTER_MAX_DIGITS,
3958
+ value: counterDigits,
3959
+ "aria-label": "Counter digits",
3960
+ title: "Number of digits (zero-padded)",
3961
+ onChange: (e) => handleCounterDigitsChange(parseInt(e.target.value, 10) || COUNTER_MIN_DIGITS),
3962
+ onPointerDown: (e) => e.stopPropagation(),
3963
+ onKeyDown: (e) => e.stopPropagation(),
3964
+ onClick: (e) => e.stopPropagation(),
3965
+ className: "w-10 px-1 py-0 text-sm text-center bg-white/70 border border-blue-300 rounded tabular-nums focus:outline-none focus:ring-1 focus:ring-blue-500"
3966
+ }
3967
+ ),
3935
3968
  /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "text-xs opacity-60", children: "}" })
3936
- ] }) : isEditing && !readOnly ? (
3969
+ ] }) : segment.type === "variable" ? (
3970
+ // Variable segment - not editable, just display
3971
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex items-center px-2 py-1", children: [
3972
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "text-xs opacity-60", children: "{" }),
3973
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "font-medium", children: segment.value }),
3974
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "text-xs opacity-60", children: "}" })
3975
+ ] })
3976
+ ) : isEditing && !readOnly ? (
3937
3977
  // Literal segment in edit mode
3938
3978
  /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
3939
3979
  "input",
@@ -5273,6 +5313,7 @@ function NamingConventionManager({
5273
5313
  const [isLoading, setIsLoading] = (0, import_react23.useState)(true);
5274
5314
  const [isSaving, setIsSaving] = (0, import_react23.useState)(false);
5275
5315
  const [isCreating, setIsCreating] = (0, import_react23.useState)(false);
5316
+ const [editorResetKey, setEditorResetKey] = (0, import_react23.useState)(0);
5276
5317
  const loadConventions = (0, import_react23.useCallback)(async () => {
5277
5318
  try {
5278
5319
  setIsLoading(true);
@@ -5368,6 +5409,8 @@ function NamingConventionManager({
5368
5409
  if (isCreating) {
5369
5410
  setIsCreating(false);
5370
5411
  setSelectedConvention(conventions[0] || null);
5412
+ } else if (selectedConvention) {
5413
+ setEditorResetKey((k) => k + 1);
5371
5414
  }
5372
5415
  };
5373
5416
  const listStyle = typeof listWidth === "number" ? { width: `${listWidth}px` } : { width: listWidth };
@@ -5394,7 +5437,8 @@ function NamingConventionManager({
5394
5437
  onCancel: handleCancel,
5395
5438
  isSaving,
5396
5439
  defaultScopeId
5397
- }
5440
+ },
5441
+ isCreating ? "new" : `${selectedConvention?.id ?? "none"}-${editorResetKey}`
5398
5442
  ) : /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "flex items-center justify-center h-full bg-white", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "text-center", children: [
5399
5443
  /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
5400
5444
  "svg",
package/dist/ui/index.mjs CHANGED
@@ -3280,6 +3280,9 @@ function formatDateToken(date, format) {
3280
3280
  return format;
3281
3281
  }
3282
3282
  }
3283
+ function isCounterVariable(variableName) {
3284
+ return variableName === "counter" || variableName.startsWith("counter:");
3285
+ }
3283
3286
  function formatCounter(value, digits = 3) {
3284
3287
  return String(value).padStart(digits, "0");
3285
3288
  }
@@ -3780,6 +3783,13 @@ import { useState as useState11, useRef as useRef5, useEffect as useEffect8 } fr
3780
3783
  import { useSortable } from "@dnd-kit/sortable";
3781
3784
  import { CSS } from "@dnd-kit/utilities";
3782
3785
  import { jsx as jsx19, jsxs as jsxs18 } from "react/jsx-runtime";
3786
+ var COUNTER_MIN_DIGITS = 1;
3787
+ var COUNTER_MAX_DIGITS = 6;
3788
+ function parseCounterDigits(value) {
3789
+ const m = value.match(/^counter:(\d+)$/);
3790
+ const n = m ? parseInt(m[1], 10) : 3;
3791
+ return Math.min(COUNTER_MAX_DIGITS, Math.max(COUNTER_MIN_DIGITS, n));
3792
+ }
3783
3793
  function getSegmentStyle(type) {
3784
3794
  if (type === "variable") {
3785
3795
  return "bg-blue-100 border-blue-300 text-blue-800";
@@ -3837,6 +3847,12 @@ function PatternSegmentItem({
3837
3847
  }
3838
3848
  };
3839
3849
  const segmentStyle = getSegmentStyle(segment.type);
3850
+ const isCounter = segment.type === "variable" && isCounterVariable(segment.value);
3851
+ const counterDigits = isCounter ? parseCounterDigits(segment.value) : 3;
3852
+ const handleCounterDigitsChange = (next) => {
3853
+ const clamped = Math.min(COUNTER_MAX_DIGITS, Math.max(COUNTER_MIN_DIGITS, next));
3854
+ onUpdate?.(segment.id, `counter:${clamped}`);
3855
+ };
3840
3856
  return /* @__PURE__ */ jsxs18(
3841
3857
  "div",
3842
3858
  {
@@ -3854,7 +3870,31 @@ function PatternSegmentItem({
3854
3870
  onKeyDown: handleKeyDown,
3855
3871
  tabIndex: 0,
3856
3872
  children: [
3857
- segment.type === "variable" ? (
3873
+ isCounter ? (
3874
+ // Counter variable - digit padding is editable via an inline stepper
3875
+ /* @__PURE__ */ jsxs18("div", { className: "flex items-center px-2 py-1 gap-0.5", children: [
3876
+ /* @__PURE__ */ jsx19("span", { className: "text-xs opacity-60", children: "{" }),
3877
+ /* @__PURE__ */ jsx19("span", { className: "font-medium", children: "counter" }),
3878
+ /* @__PURE__ */ jsx19("span", { className: "text-xs opacity-60", children: ":" }),
3879
+ readOnly ? /* @__PURE__ */ jsx19("span", { className: "font-medium tabular-nums", children: counterDigits }) : /* @__PURE__ */ jsx19(
3880
+ "input",
3881
+ {
3882
+ type: "number",
3883
+ min: COUNTER_MIN_DIGITS,
3884
+ max: COUNTER_MAX_DIGITS,
3885
+ value: counterDigits,
3886
+ "aria-label": "Counter digits",
3887
+ title: "Number of digits (zero-padded)",
3888
+ onChange: (e) => handleCounterDigitsChange(parseInt(e.target.value, 10) || COUNTER_MIN_DIGITS),
3889
+ onPointerDown: (e) => e.stopPropagation(),
3890
+ onKeyDown: (e) => e.stopPropagation(),
3891
+ onClick: (e) => e.stopPropagation(),
3892
+ className: "w-10 px-1 py-0 text-sm text-center bg-white/70 border border-blue-300 rounded tabular-nums focus:outline-none focus:ring-1 focus:ring-blue-500"
3893
+ }
3894
+ ),
3895
+ /* @__PURE__ */ jsx19("span", { className: "text-xs opacity-60", children: "}" })
3896
+ ] })
3897
+ ) : segment.type === "variable" ? (
3858
3898
  // Variable segment - not editable, just display
3859
3899
  /* @__PURE__ */ jsxs18("div", { className: "flex items-center px-2 py-1", children: [
3860
3900
  /* @__PURE__ */ jsx19("span", { className: "text-xs opacity-60", children: "{" }),
@@ -5201,6 +5241,7 @@ function NamingConventionManager({
5201
5241
  const [isLoading, setIsLoading] = useState15(true);
5202
5242
  const [isSaving, setIsSaving] = useState15(false);
5203
5243
  const [isCreating, setIsCreating] = useState15(false);
5244
+ const [editorResetKey, setEditorResetKey] = useState15(0);
5204
5245
  const loadConventions = useCallback16(async () => {
5205
5246
  try {
5206
5247
  setIsLoading(true);
@@ -5296,6 +5337,8 @@ function NamingConventionManager({
5296
5337
  if (isCreating) {
5297
5338
  setIsCreating(false);
5298
5339
  setSelectedConvention(conventions[0] || null);
5340
+ } else if (selectedConvention) {
5341
+ setEditorResetKey((k) => k + 1);
5299
5342
  }
5300
5343
  };
5301
5344
  const listStyle = typeof listWidth === "number" ? { width: `${listWidth}px` } : { width: listWidth };
@@ -5322,7 +5365,8 @@ function NamingConventionManager({
5322
5365
  onCancel: handleCancel,
5323
5366
  isSaving,
5324
5367
  defaultScopeId
5325
- }
5368
+ },
5369
+ isCreating ? "new" : `${selectedConvention?.id ?? "none"}-${editorResetKey}`
5326
5370
  ) : /* @__PURE__ */ jsx26("div", { className: "flex items-center justify-center h-full bg-white", children: /* @__PURE__ */ jsxs25("div", { className: "text-center", children: [
5327
5371
  /* @__PURE__ */ jsx26(
5328
5372
  "svg",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hazo_files",
3
- "version": "3.1.0",
3
+ "version": "3.2.0",
4
4
  "description": "File management including integration to cloud files",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -86,8 +86,11 @@
86
86
  },
87
87
  "homepage": "https://github.com/pub12/hazo_files#readme",
88
88
  "dependencies": {
89
- "ini": "^4.1.3",
89
+ "@dnd-kit/core": "^6.0.0",
90
+ "@dnd-kit/sortable": "^8.0.0",
91
+ "@dnd-kit/utilities": "^3.0.0",
90
92
  "googleapis": "^140",
93
+ "ini": "^4.1.3",
91
94
  "mime-types": "^2.1.35"
92
95
  },
93
96
  "devDependencies": {
@@ -102,9 +105,9 @@
102
105
  "@types/react": "^18.3.3",
103
106
  "@types/react-dom": "^18.3.0",
104
107
  "dropbox": "^10.34.0",
105
- "hazo_core": "^1.1.0",
106
- "hazo_jobs": "^0.12.0",
107
- "hazo_llm_api": "^2.1.0",
108
+ "hazo_core": "^2.0.0",
109
+ "hazo_jobs": "^0.17.0",
110
+ "hazo_llm_api": "^2.3.0",
108
111
  "jsdom": "^28.1.0",
109
112
  "react": "^18.2.0",
110
113
  "react-dom": "^18.2.0",
@@ -115,35 +118,23 @@
115
118
  "xxhash-wasm": "^1.1.0"
116
119
  },
117
120
  "peerDependencies": {
118
- "@dnd-kit/core": "^6.0.0",
119
- "@dnd-kit/sortable": "^8.0.0",
120
- "@dnd-kit/utilities": "^3.0.0",
121
121
  "dropbox": "^10.0.0",
122
122
  "googleapis": "^140.0.0",
123
- "hazo_connect": "^3.4.1",
124
- "hazo_core": "^1.1.0",
125
- "hazo_debug": "^3.1.1",
126
- "hazo_jobs": "^0.12.0",
127
- "hazo_llm_api": "^2.1.0",
128
- "hazo_logs": "^2.0.3",
129
- "hazo_secure": "^1.2.0",
130
- "hazo_ui": "^3.2.1",
131
- "react": "^18.0.0",
132
- "react-dom": "^18.0.0",
123
+ "hazo_connect": "^4.0.0",
124
+ "hazo_core": "^2.0.0",
125
+ "hazo_debug": "^3.2.0",
126
+ "hazo_jobs": "^0.17.0",
127
+ "hazo_llm_api": "^2.3.0",
128
+ "hazo_logs": "^2.2.0",
129
+ "hazo_secure": "^1.7.1",
130
+ "hazo_ui": "^6.8.0",
131
+ "react": "^18.0.0 || ^19.0.0",
132
+ "react-dom": "^18.0.0 || ^19.0.0",
133
133
  "server-only": "^0.0.1",
134
134
  "sonner": "^2.0.7",
135
135
  "xxhash-wasm": "^1.0.0"
136
136
  },
137
137
  "peerDependenciesMeta": {
138
- "@dnd-kit/core": {
139
- "optional": true
140
- },
141
- "@dnd-kit/sortable": {
142
- "optional": true
143
- },
144
- "@dnd-kit/utilities": {
145
- "optional": true
146
- },
147
138
  "dropbox": {
148
139
  "optional": true
149
140
  },