Hiyve Components - v1.0.0
    Preparing search index...

    Module @hiyve/react-notes

    @hiyve/react-notes - Rich text note editor component

    This package provides a full-featured rich text note editor with support for tables, task lists, auto-save, and PDF export.

    Features:

    • Rich text formatting (bold, italic, strikethrough, highlight)
    • Headings (H1, H2, H3)
    • Lists (bullet, numbered, task)
    • Tables with full editing support
    • Blockquotes and horizontal rules
    • Auto-save to file storage with debouncing
    • PDF export
    • Full customization (labels, icons, colors, styles)
    • Dark theme matching VideoGrid and VideoTile

    Basic usage:

    import { NoteEditor } from '@hiyve/react-notes';
    import { HiyveProvider } from '@hiyve/react';

    function App() {
    return (
    <HiyveProvider roomToken={roomToken}>
    <NoteEditor
    title="Meeting Notes"
    enableAutoSave
    onSave={(note) => console.log('Saved:', note.id)}
    />
    </HiyveProvider>
    );
    }

    With customization:

    import { NoteEditor, defaultNoteEditorColors } from '@hiyve/react-notes';

    <NoteEditor
    initialTitle="Sprint Planning"
    placeholder="Take notes here..."
    enableAutoSave
    autoSaveInterval={5000}
    colors={{
    ...defaultNoteEditorColors,
    editorBackground: '#1e1e1e',
    toolbarButtonActive: '#64b5f6',
    }}
    labels={{
    saving: 'Saving...',
    saved: 'All changes saved',
    }}
    />

    Using hooks directly:

    import { useNoteEditor } from '@hiyve/react-notes';

    function CustomEditor() {
    const { editor, content, getHTML } = useNoteEditor({
    placeholder: 'Start typing...',
    onUpdate: (content) => console.log('Changed:', content),
    });

    // Render your own UI around the editor instance
    }

    @hiyve/react-notes

    Rich text meeting notes editor with auto-save and PDF export for Hiyve.

    npx @hiyve/cli login
    npm install @hiyve/react-notes
    import { NoteEditor } from '@hiyve/react-notes';
    import { HiyveProvider } from '@hiyve/react';

    function MeetingNotes() {
    return (
    <HiyveProvider token={roomToken}>
    <NoteEditor
    title="Meeting Notes"
    enableAutoSave
    onSave={(note) => console.log('Saved:', note.id)}
    />
    </HiyveProvider>
    );
    }
    Component Description
    NoteEditor Full-featured rich text editor with toolbar, title input, auto-save, and PDF export
    NoteEditorToolbar Standalone formatting toolbar (bold, italic, headings, lists, tables, etc.)
    NotesSession Session manager that pairs a NoteEditor with file loading, creation, and header controls
    NotesSessionViewer Read-only viewer for saved note files, suitable for file manager integration

    Dialog for creating a new note with a custom name. Handles file creation via the client API and calls back with the new file ID and data.

    Prop Type Default Description
    open boolean -- Whether the dialog is open
    onClose () => void -- Called when the dialog closes
    onCreate (fileId: string, fileName: string, fileData: NoteFile) => void -- Called when note is created successfully
    defaultName string '' Default name for the note
    isCreating boolean -- External control for creation-in-progress state
    error string | null -- External error message to display
    labels Partial<CreateNoteDialogLabels> -- Custom labels for i18n
    Hook Description
    useNoteEditor Sets up a rich text editor instance with extensions and content tracking
    useNotePersistence Manages auto-save, manual save, and save status tracking
    Export Description
    exportNoteToPdf Exports note content to a downloadable PDF file
    generateNoteId Creates a unique note identifier
    isContentEmpty Checks whether editor content is empty or whitespace-only
    defaultFormatTimestamp Formats a timestamp as relative time ("2m ago", "Jan 15")
    getEditorStyles Returns CSS styles for the editor area
    createNoteFile(client, options) Creates a new note file and uploads it to the server. Returns { fileId, fileData }
    Prop Type Default Description
    title string 'Notes' Header title for the notes panel
    initialTitle string -- Pre-filled title for the note
    initialContent JSONContent -- Pre-filled editor content
    placeholder string 'Start typing...' Placeholder when editor is empty
    showHeader boolean true Show the panel header
    showToolbar boolean true Show the formatting toolbar
    showTitleInput boolean true Show the title input field
    maxHeight number | string -- Maximum height before scrolling
    minHeight number | string -- Minimum editor height
    disabled boolean false Disable the entire panel
    readOnly boolean false Make the editor read-only
    enableAutoSave boolean false Enable auto-save to file storage
    autoSaveInterval number 3000 Auto-save interval in milliseconds
    fileId string -- Existing file ID (for editing a saved note)
    fileLocation string '/Notes' Storage folder path
    enablePdfExport boolean true Show PDF export button
    enableTableSupport boolean true Enable table editing
    enableTaskLists boolean true Enable task list (checkbox) support
    enableHighlight boolean true Enable text highlighting
    labels Partial<NoteEditorLabels> -- Label overrides for i18n
    icons Partial<NoteEditorIcons> -- Icon overrides
    colors Partial<NoteEditorColors> -- Color overrides
    styles Partial<NoteEditorStyles> -- Style overrides
    renderProps NoteEditorRenderProps -- Render props for header, toolbar, and save status
    sx SxProps<Theme> -- MUI sx prop for the container
    onChange (content: JSONContent) => void -- Called when content changes
    onTitleChange (title: string) => void -- Called when the title changes
    onSave (note: NoteFile) => void -- Called after a successful save
    onSaveError (error: Error) => void -- Called when a save fails
    onAutoSave (fileId: string) => void -- Called after a successful auto-save
    onFocus () => void -- Called when the editor gains focus
    onBlur () => void -- Called when the editor loses focus

    NoteEditor exposes a ref for external control:

    import { useRef } from 'react';
    import { NoteEditor, type NoteEditorRef } from '@hiyve/react-notes';

    function NotesPanel() {
    const editorRef = useRef<NoteEditorRef>(null);

    return (
    <div>
    <button
    onClick={() => editorRef.current?.save()}
    disabled={editorRef.current?.isSaving}
    >
    Save Now
    </button>
    <NoteEditor ref={editorRef} enableAutoSave />
    </div>
    );
    }

    The ref provides: save(), isSaving, hasUnsavedChanges, lastSaved, and fileId.

    For custom editor UIs, use the hooks independently:

    import { useNoteEditor, useNotePersistence } from '@hiyve/react-notes';

    function CustomNoteEditor() {
    const { editor, content, isEmpty, getHTML, focus } = useNoteEditor({
    placeholder: 'Start typing...',
    onUpdate: (content) => console.log('Changed'),
    });

    // Render your own UI around the editor instance
    }
    import { exportNoteToPdf } from '@hiyve/react-notes';

    async function handleExport() {
    await exportNoteToPdf({
    title: 'Sprint Planning Notes',
    htmlContent: editor.getHTML(),
    authorName: 'Jane Doe',
    pageSize: 'letter',
    orientation: 'portrait',
    });
    }

    NotesSession provides a complete session workflow -- creating new notes, loading saved notes from file storage, and editing with auto-save:

    import { NotesSession } from '@hiyve/react-notes';

    <NotesSession
    labels={{
    emptyState: { message: 'No note open', createButton: 'Create New' },
    header: { newSession: 'New Note' },
    }}
    noteEditorProps={{
    enableAutoSave: true,
    autoSaveInterval: 5000,
    }}
    />

    NotesSessionViewer renders a saved note in read-only mode:

    import { NotesSessionViewer } from '@hiyve/react-notes';

    <NotesSessionViewer note={savedNoteFile} maxHeight={400} />

    All visual aspects of the editor are customizable through labels, icons, colors, and styles props. Pass a partial object -- unspecified keys use defaults.

    import { NoteEditor } from '@hiyve/react-notes';

    <NoteEditor
    labels={{
    title: 'Notas',
    placeholder: 'Escribe tus notas...',
    save: 'Guardar',
    exportPdf: 'Exportar PDF',
    saving: 'Guardando...',
    saved: 'Guardado',
    bold: 'Negrita',
    italic: 'Cursiva',
    }}
    />
    import { NoteEditor } from '@hiyve/react-notes';
    import { FaBold, FaItalic } from 'react-icons/fa';

    <NoteEditor
    icons={{
    bold: <FaBold />,
    italic: <FaItalic />,
    }}
    />
    import { NoteEditor, defaultNoteEditorColors } from '@hiyve/react-notes';

    // Light theme
    <NoteEditor
    colors={{
    headerBackground: '#f5f5f5',
    editorBackground: '#ffffff',
    editorText: '#212121',
    toolbarBackground: '#fafafa',
    toolbarButtonActive: '#1976d2',
    }}
    />
    import { NoteEditor } from '@hiyve/react-notes';

    // Compact layout
    <NoteEditor
    styles={{
    toolbarButtonSize: 28,
    editorPadding: 12,
    editorFontSize: '0.875rem',
    borderRadius: 8,
    }}
    />

    Override rendering of the header, toolbar, or save status indicator:

    <NoteEditor
    renderProps={{
    renderHeader: (title, defaultContent) => (
    <div style={{ display: 'flex', alignItems: 'center' }}>
    <MyLogo />
    {defaultContent}
    </div>
    ),
    renderToolbar: (editor, defaultContent) => (
    <div>
    {defaultContent}
    <button onClick={() => editor?.chain().focus().toggleBold().run()}>
    Custom Bold
    </button>
    </div>
    ),
    }}
    />

    Defaults and merge functions:

    Default Merge Function
    defaultNoteEditorLabels mergeNoteEditorLabels
    defaultNoteEditorIcons mergeNoteEditorIcons
    defaultNoteEditorColors mergeNoteEditorColors
    defaultNoteEditorStyles mergeNoteEditorStyles
    defaultNotesSessionLabels --
    • Rich text formatting (bold, italic, strikethrough, highlight, code)
    • Headings (H1, H2, H3)
    • Lists (bullet, numbered, task/checkbox)
    • Tables with full editing (add/remove rows and columns)
    • Blockquotes and horizontal rules
    • Auto-save to file storage with debouncing
    • PDF export with configurable page size and orientation
    • Undo/redo history
    • Read-only mode for viewing saved notes
    • Dark theme matching other Hiyve components
    Constant Description
    DEFAULT_AUTO_SAVE_INTERVAL Default auto-save interval (3000ms)
    DEFAULT_PLACEHOLDER Default placeholder text
    DEFAULT_FILE_LOCATION Default storage folder ('/Notes')
    DEFAULT_TABLE_DIMENSIONS Default rows/columns for new tables
    NOTE_FILE_EXTENSION File extension for note files
    NOTE_FILE_MIME_TYPE MIME type for note files
    EMPTY_CONTENT Empty document structure for initializing the editor
    CONTENT_CHANGE_DEBOUNCE Debounce interval for content change events (500ms)
    • @hiyve/react (^2.0.0) -- components must be rendered inside HiyveProvider
    • @hiyve/react-collaboration (^1.0.0) -- optional, needed for NotesSession and NotesSessionViewer
    • @hiyve/utilities (^1.0.0)
    • @mui/material (^5.0.0 || ^6.0.0) and @mui/icons-material
    • @emotion/react (^11.0.0) and @emotion/styled (^11.0.0)
    • react (^18.0.0)

    Rich text editor dependencies are bundled with the package -- no separate installation needed.

    Proprietary - Hiyve SDK

    Interfaces

    CreateNoteDialogLabels
    CreateNoteDialogProps
    CreateNoteFileOptions
    CreateNoteFileResult
    Editor
    NoteEditorColors
    NoteEditorIcons
    NoteEditorLabels
    NoteEditorProps
    NoteEditorRef
    NoteEditorRenderProps
    NoteEditorStyles
    NoteEditorToolbarProps
    NoteFile
    NoteFileClient
    NotePdfExportOptions
    NotesSessionLabels
    NotesSessionProps
    NotesSessionViewerProps
    UseNoteEditorOptions
    UseNoteEditorResult
    UseNotePersistenceOptions
    UseNotePersistenceResult

    Type Aliases

    JSONContent

    Variables

    CONTENT_CHANGE_DEBOUNCE
    DEFAULT_AUTO_SAVE_INTERVAL
    DEFAULT_FILE_LOCATION
    DEFAULT_PLACEHOLDER
    DEFAULT_TABLE_DIMENSIONS
    defaultCreateNoteDialogLabels
    defaultNoteEditorColors
    defaultNoteEditorIcons
    defaultNoteEditorLabels
    defaultNoteEditorStyles
    defaultNotesSessionLabels
    EMPTY_CONTENT
    NOTE_FILE_EXTENSION
    NOTE_FILE_MIME_TYPE
    NoteEditor

    Functions

    CreateNoteDialog
    createNoteFile
    defaultFormatTimestamp
    exportNoteToPdf
    generateNoteId
    getEditorStyles
    isContentEmpty
    mergeCreateNoteDialogLabels
    mergeNoteEditorColors
    mergeNoteEditorIcons
    mergeNoteEditorLabels
    mergeNoteEditorStyles
    NoteEditorToolbar
    NotesSession
    NotesSessionViewer
    useNoteEditor
    useNotePersistence