@veevarts/design-system 0.1.16 → 0.1.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/components/Button/Button.d.ts +3 -0
  2. package/dist/components/Button/index.d.ts +2 -0
  3. package/dist/components/index.d.ts +2 -0
  4. package/dist/index.cjs +106 -1
  5. package/dist/index.d.ts +4 -2
  6. package/dist/index.js +17316 -48
  7. package/dist/patterns/RichText/RichText.d.ts +33 -0
  8. package/dist/patterns/RichText/RichText.test.d.ts +1 -0
  9. package/dist/patterns/RichText/TipTapArea/TipTapArea.d.ts +60 -0
  10. package/dist/patterns/RichText/commands/index.d.ts +5 -0
  11. package/dist/patterns/RichText/commands/registry.d.ts +14 -0
  12. package/dist/patterns/RichText/config/colors.d.ts +39 -0
  13. package/dist/patterns/RichText/config/defaults.d.ts +34 -0
  14. package/dist/patterns/RichText/config/icons.d.ts +26 -0
  15. package/dist/patterns/RichText/config/index.d.ts +7 -0
  16. package/dist/patterns/RichText/core/TipTapEditor.d.ts +7 -0
  17. package/dist/patterns/RichText/core/TipTapEditor.test.d.ts +1 -0
  18. package/dist/patterns/RichText/examples/ControlledExample.d.ts +1 -0
  19. package/dist/patterns/RichText/examples/FormWithValidationExample.d.ts +1 -0
  20. package/dist/patterns/RichText/extensions/index.d.ts +22 -0
  21. package/dist/patterns/RichText/extensions/registry.d.ts +19 -0
  22. package/dist/patterns/RichText/index.d.ts +11 -0
  23. package/dist/patterns/RichText/presets.d.ts +36 -0
  24. package/dist/patterns/RichText/toolbar/Toolbar.d.ts +34 -0
  25. package/dist/patterns/RichText/toolbar/ToolbarDivider.d.ts +15 -0
  26. package/dist/patterns/RichText/toolbar/ToolbarSection.d.ts +29 -0
  27. package/dist/patterns/RichText/toolbar/components/ColorPalette.d.ts +28 -0
  28. package/dist/patterns/RichText/toolbar/components/ColorPicker.d.ts +29 -0
  29. package/dist/patterns/RichText/toolbar/components/CustomColorInput.d.ts +28 -0
  30. package/dist/patterns/RichText/toolbar/components/HeadingDropdown.d.ts +21 -0
  31. package/dist/patterns/RichText/toolbar/components/ListDropdown.d.ts +20 -0
  32. package/dist/patterns/RichText/toolbar/components/ToolbarButton.d.ts +40 -0
  33. package/dist/patterns/RichText/toolbar/components/ZoomControls.d.ts +35 -0
  34. package/dist/patterns/RichText/toolbar/components/index.d.ts +17 -0
  35. package/dist/patterns/RichText/toolbar/hooks/index.d.ts +6 -0
  36. package/dist/patterns/RichText/toolbar/hooks/useToolbarCommands.d.ts +14 -0
  37. package/dist/patterns/RichText/toolbar/hooks/useToolbarState.d.ts +14 -0
  38. package/dist/patterns/RichText/toolbar/hooks/useZoomState.d.ts +21 -0
  39. package/dist/patterns/RichText/toolbar/index.d.ts +12 -0
  40. package/dist/patterns/RichText/toolbar/sections/TextFormattingSection.d.ts +7 -0
  41. package/dist/patterns/RichText/types/commands.d.ts +68 -0
  42. package/dist/patterns/RichText/types/extensions.d.ts +71 -0
  43. package/dist/patterns/RichText/types/index.d.ts +14 -0
  44. package/dist/patterns/RichText/types/marks.d.ts +86 -0
  45. package/dist/patterns/RichText/types/modifiers.d.ts +125 -0
  46. package/dist/patterns/RichText/types/nodes.d.ts +80 -0
  47. package/dist/patterns/RichText/types/props.d.ts +157 -0
  48. package/dist/patterns/RichText/types/toolbar.d.ts +88 -0
  49. package/dist/patterns/Stepper/Stepper.d.ts +206 -25
  50. package/dist/patterns/Stepper/Stepper.test.d.ts +4 -0
  51. package/dist/patterns/Stepper/examples/FormExampleStepper.d.ts +1 -0
  52. package/dist/patterns/Stepper/examples/InteractiveStepper.d.ts +2 -0
  53. package/dist/patterns/Stepper/examples/ValidationStepper.d.ts +1 -0
  54. package/dist/patterns/Stepper/examples/index.d.ts +3 -0
  55. package/dist/patterns/Stepper/index.d.ts +1 -1
  56. package/dist/patterns/index.d.ts +3 -1
  57. package/package.json +29 -7
@@ -0,0 +1,33 @@
1
+ import { RichTextAreaProps } from './types';
2
+ /**
3
+ * RichTextArea Component
4
+ *
5
+ * A powerful WYSIWYG rich text editor built on TipTap/ProseMirror.
6
+ *
7
+ * @example
8
+ * // Simple usage
9
+ * <RichTextArea
10
+ * modifiers={['bold', 'italic', 'underline']}
11
+ * label="Content"
12
+ * placeholder="Start typing..."
13
+ * />
14
+ *
15
+ * @example
16
+ * // With heading levels
17
+ * <RichTextArea
18
+ * modifiers={[
19
+ * 'bold',
20
+ * { type: 'heading', level: 2 },
21
+ * { type: 'heading', level: 3 },
22
+ * ]}
23
+ * />
24
+ *
25
+ * @example
26
+ * // Using presets
27
+ * import { RICH_TEXT_PRESETS } from '@veevarts/design-system';
28
+ *
29
+ * <RichTextArea modifiers={RICH_TEXT_PRESETS.blog} />
30
+ */
31
+ declare const RichTextArea: import('react').ForwardRefExoticComponent<Omit<RichTextAreaProps, "ref"> & import('react').RefAttributes<HTMLTextAreaElement>>;
32
+ export default RichTextArea;
33
+ export type { RichTextAreaProps };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,60 @@
1
+ import { default as React, ComponentProps } from 'react';
2
+ import { Textarea } from '@heroui/react';
3
+ export type TextareaHeightChangeMeta = {
4
+ rowHeight: number;
5
+ };
6
+ export interface RichTextAreaProps extends Omit<ComponentProps<typeof Textarea>, 'children'> {
7
+ /**
8
+ * Whether the textarea should automatically grow vertically to accomodate content.
9
+ * @default false
10
+ */
11
+ disableAutosize?: boolean;
12
+ /**
13
+ * Minimum number of rows to show for textarea
14
+ * @default 3
15
+ */
16
+ minRows?: number;
17
+ /**
18
+ * Maximum number of rows up to which the textarea can grow
19
+ * @default 8
20
+ */
21
+ maxRows?: number;
22
+ /**
23
+ * Reuse previously computed measurements when computing height of textarea.
24
+ * @default false
25
+ */
26
+ cacheMeasurements?: boolean;
27
+ /**
28
+ * Function invoked on textarea height change, with height as first argument.
29
+ * The second function argument is an object containing additional information that
30
+ * might be useful for custom behaviors. Current options include `{ rowHeight: number }`.
31
+ *
32
+ * @param height - The height of the textarea
33
+ * @param meta - Additional information about the height change
34
+ */
35
+ onHeightChange?: (height: number, meta: TextareaHeightChangeMeta) => void;
36
+ /**
37
+ * Active formatting modifiers to show in toolbar
38
+ */
39
+ activeModifiers?: string[];
40
+ /**
41
+ * Show character count below editor
42
+ * @default false
43
+ */
44
+ showCharacterCount?: boolean;
45
+ /**
46
+ * Show word count below editor
47
+ * @default false
48
+ */
49
+ showWordCount?: boolean;
50
+ /**
51
+ * Maximum character limit
52
+ */
53
+ maxCharacters?: number;
54
+ /**
55
+ * Maximum word limit
56
+ */
57
+ maxWords?: number;
58
+ }
59
+ export declare const TipTapArea: React.ForwardRefExoticComponent<Omit<RichTextAreaProps, "ref"> & React.RefAttributes<unknown>>;
60
+ export default TipTapArea;
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Rich Text Editor - Commands Exports
3
+ */
4
+ export { commandRegistry, getCommand, hasCommand } from './registry';
5
+ export type { CommandRegistry, CommandDefinition, CommandContext, CommandFunction } from '../types';
@@ -0,0 +1,14 @@
1
+ import { CommandRegistry } from '../types';
2
+ /**
3
+ * Complete command registry
4
+ * Each modifier maps to execute, canExecute, and isActive functions
5
+ */
6
+ export declare const commandRegistry: CommandRegistry;
7
+ /**
8
+ * Get command definition for a modifier type
9
+ */
10
+ export declare function getCommand(modifierType: string): import('.').CommandDefinition | undefined;
11
+ /**
12
+ * Check if a command exists for a modifier type
13
+ */
14
+ export declare function hasCommand(modifierType: string): boolean;
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Rich Text Editor - Color Configuration
3
+ *
4
+ * Predefined color palettes for text color and highlight/background.
5
+ */
6
+ /**
7
+ * Text color palette
8
+ * Professional color set for text formatting
9
+ */
10
+ export declare const TEXT_COLORS: readonly ["#000000", "#374151", "#6B7280", "#EF4444", "#F59E0B", "#10B981", "#3B82F6", "#8B5CF6", "#EC4899", "#14B8A6", "#F97316", "#A855F7"];
11
+ /**
12
+ * Highlight/background color palette
13
+ * Light colors suitable for text highlighting
14
+ */
15
+ export declare const HIGHLIGHT_COLORS: readonly ["#FEF3C7", "#DBEAFE", "#D1FAE5", "#FCE7F3", "#E0E7FF", "#FED7AA", "#F3E8FF", "#CCFBF1", "#FEE2E2", "#E5E7EB", "#FAE8FF", "#BFDBFE"];
16
+ /**
17
+ * Type-safe text color
18
+ */
19
+ export type TextColor = (typeof TEXT_COLORS)[number];
20
+ /**
21
+ * Type-safe highlight color
22
+ */
23
+ export type HighlightColor = (typeof HIGHLIGHT_COLORS)[number];
24
+ /**
25
+ * Check if a color is in the text colors palette
26
+ */
27
+ export declare function isTextColor(color: string): color is TextColor;
28
+ /**
29
+ * Check if a color is in the highlight colors palette
30
+ */
31
+ export declare function isHighlightColor(color: string): color is HighlightColor;
32
+ /**
33
+ * Validate hex color format
34
+ */
35
+ export declare function isValidHexColor(color: string): boolean;
36
+ /**
37
+ * Get contrasting text color (black or white) for a background color
38
+ */
39
+ export declare function getContrastColor(hexColor: string): '#000000' | '#FFFFFF';
@@ -0,0 +1,34 @@
1
+ import { ModifierIdentifier } from '../types';
2
+ /**
3
+ * Default editor props
4
+ */
5
+ export declare const DEFAULT_EDITOR_PROPS: {
6
+ readonly adapter: "tiptap";
7
+ readonly variant: "bordered";
8
+ readonly minRows: 3;
9
+ readonly maxRows: 8;
10
+ readonly disableAutosize: false;
11
+ readonly showToolbar: true;
12
+ readonly showCharacterCount: false;
13
+ readonly showWordCount: false;
14
+ };
15
+ /**
16
+ * Default modifiers (minimal editing capability)
17
+ */
18
+ export declare const DEFAULT_MODIFIERS: ModifierIdentifier[];
19
+ /**
20
+ * Zoom configuration
21
+ */
22
+ export declare const ZOOM_CONFIG: {
23
+ readonly min: 50;
24
+ readonly max: 200;
25
+ readonly step: 10;
26
+ readonly default: 100;
27
+ };
28
+ /**
29
+ * Editor height configuration (pixels per row)
30
+ */
31
+ export declare const EDITOR_HEIGHT_CONFIG: {
32
+ readonly lineHeight: 24;
33
+ readonly toolbarHeight: 60;
34
+ };
@@ -0,0 +1,26 @@
1
+ import { LucideIcon } from 'lucide-react';
2
+ import { ModifierType } from '../types';
3
+ /**
4
+ * Icon map for all modifier types
5
+ */
6
+ export declare const MODIFIER_ICONS: Record<ModifierType, LucideIcon>;
7
+ /**
8
+ * Alignment-specific icons
9
+ */
10
+ export declare const ALIGNMENT_ICONS: {
11
+ readonly left: import('react').ForwardRefExoticComponent<Omit<import('lucide-react').LucideProps, "ref"> & import('react').RefAttributes<SVGSVGElement>>;
12
+ readonly center: import('react').ForwardRefExoticComponent<Omit<import('lucide-react').LucideProps, "ref"> & import('react').RefAttributes<SVGSVGElement>>;
13
+ readonly right: import('react').ForwardRefExoticComponent<Omit<import('lucide-react').LucideProps, "ref"> & import('react').RefAttributes<SVGSVGElement>>;
14
+ readonly justify: import('react').ForwardRefExoticComponent<Omit<import('lucide-react').LucideProps, "ref"> & import('react').RefAttributes<SVGSVGElement>>;
15
+ };
16
+ /**
17
+ * Zoom control icons
18
+ */
19
+ export declare const ZOOM_ICONS: {
20
+ readonly in: import('react').ForwardRefExoticComponent<Omit<import('lucide-react').LucideProps, "ref"> & import('react').RefAttributes<SVGSVGElement>>;
21
+ readonly out: import('react').ForwardRefExoticComponent<Omit<import('lucide-react').LucideProps, "ref"> & import('react').RefAttributes<SVGSVGElement>>;
22
+ };
23
+ /**
24
+ * Get icon for a modifier type
25
+ */
26
+ export declare function getModifierIcon(modifier: ModifierType): LucideIcon;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Rich Text Editor - Configuration Exports
3
+ */
4
+ export { TEXT_COLORS, HIGHLIGHT_COLORS, isTextColor, isHighlightColor, isValidHexColor, getContrastColor, } from './colors';
5
+ export type { TextColor, HighlightColor } from './colors';
6
+ export { DEFAULT_EDITOR_PROPS, DEFAULT_MODIFIERS, ZOOM_CONFIG, EDITOR_HEIGHT_CONFIG } from './defaults';
7
+ export { MODIFIER_ICONS, ALIGNMENT_ICONS, ZOOM_ICONS, getModifierIcon } from './icons';
@@ -0,0 +1,7 @@
1
+ import { default as React } from 'react';
2
+ import { TipTapEditorProps } from '../types';
3
+ /**
4
+ * TipTap Editor Component (Refactored)
5
+ */
6
+ export declare const TipTapEditor: React.ForwardRefExoticComponent<Omit<TipTapEditorProps, "ref"> & React.RefAttributes<HTMLTextAreaElement>>;
7
+ export default TipTapEditor;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export declare function ControlledExample(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export declare function FormWithValidationExample(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,22 @@
1
+ import { Extensions } from '@tiptap/react';
2
+ import { ModifierIdentifier, ModifierType } from '../types';
3
+ /**
4
+ * Creates TipTap extensions array from modifier identifiers
5
+ *
6
+ * @param modifiers - Array of modifier identifiers to enable
7
+ * @returns Configured array of TipTap extensions
8
+ *
9
+ * @example
10
+ * const extensions = createExtensions(['bold', 'italic', { type: 'heading', level: 2 }]);
11
+ */
12
+ export declare function createExtensions(modifiers: ModifierIdentifier[]): Extensions;
13
+ /**
14
+ * Get all available modifier types that have extensions installed
15
+ */
16
+ export declare function getAvailableModifiers(): ModifierType[];
17
+ /**
18
+ * Check if a modifier is available (extension installed)
19
+ */
20
+ export declare function isModifierAvailable(modifierType: ModifierType): boolean;
21
+ export { getExtensionConfig, hasExtension } from './registry';
22
+ export { extensionRegistry, helperExtensions } from './registry';
@@ -0,0 +1,19 @@
1
+ import { ExtensionRegistry } from '../types';
2
+ /**
3
+ * Complete extension registry
4
+ * Maps each modifier type to its TipTap extension configuration
5
+ */
6
+ export declare const extensionRegistry: ExtensionRegistry;
7
+ /**
8
+ * Helper extensions that are always required
9
+ * These are fundamental to the editor but not exposed as modifiers
10
+ */
11
+ export declare const helperExtensions: (import('@tiptap/core').Node<any, any> | import('@tiptap/core').Extension<any, any> | import('@tiptap/core').Mark<import('@tiptap/extension-text-style').TextStyleOptions, any>)[];
12
+ /**
13
+ * Get extension config for a modifier type
14
+ */
15
+ export declare function getExtensionConfig(modifierType: string): import('../types').ExtensionConfig<any> | undefined;
16
+ /**
17
+ * Check if a modifier has an extension configured
18
+ */
19
+ export declare function hasExtension(modifierType: string): boolean;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Rich Text Editor - Public API Exports
3
+ */
4
+ export { default as RichTextArea } from './RichText';
5
+ export type { RichTextAreaProps } from './RichText';
6
+ export { RICH_TEXT_PRESETS, getPreset } from './presets';
7
+ export type { PresetName } from './presets';
8
+ export type { ModifierIdentifier, ModifierType, HeadingLevel, TextAlignment, HeadingModifier, TextAlignModifier, TextColorModifier, HighlightModifier, LinkModifier, EditorContent, } from './types';
9
+ export { isHeadingModifier, isTextAlignModifier, isTextColorModifier, isHighlightModifier, isLinkModifier, getModifierType, } from './types';
10
+ export { TEXT_COLORS, HIGHLIGHT_COLORS } from './config';
11
+ export type { TextColor, HighlightColor } from './config';
@@ -0,0 +1,36 @@
1
+ import { ModifierIdentifier } from './types';
2
+ /**
3
+ * Preset configurations for common editor use cases
4
+ */
5
+ export declare const RICH_TEXT_PRESETS: {
6
+ /**
7
+ * Simple editor with basic formatting
8
+ * Includes: bold, italic, lists, undo/redo
9
+ */
10
+ readonly simple: ModifierIdentifier[];
11
+ /**
12
+ * Blog post editor with essential formatting
13
+ * Includes: text formatting, headings (H2, H3), alignment, lists, links, quotes, undo/redo
14
+ */
15
+ readonly blog: ModifierIdentifier[];
16
+ /**
17
+ * Documentation editor with ALL features
18
+ * Includes: all formatting options (same as full preset)
19
+ */
20
+ readonly documentation: ModifierIdentifier[];
21
+ /**
22
+ * Comment editor with minimal formatting
23
+ * Includes: bold, italic, link, undo/redo
24
+ */
25
+ readonly comment: ModifierIdentifier[];
26
+ /**
27
+ * Full editor with all features
28
+ * Includes: all formatting options
29
+ */
30
+ readonly full: ModifierIdentifier[];
31
+ };
32
+ export type PresetName = keyof typeof RICH_TEXT_PRESETS;
33
+ /**
34
+ * Get preset configuration by name
35
+ */
36
+ export declare function getPreset(name: PresetName): ModifierIdentifier[];
@@ -0,0 +1,34 @@
1
+ import { Editor } from '@tiptap/react';
2
+ import { ModifierIdentifier } from '../types';
3
+ export interface ToolbarProps {
4
+ /**
5
+ * TipTap editor instance
6
+ */
7
+ editor: Editor | null;
8
+ /**
9
+ * Active modifiers
10
+ */
11
+ modifiers: ModifierIdentifier[];
12
+ /**
13
+ * Current zoom level
14
+ */
15
+ zoom?: number;
16
+ /**
17
+ * Callback when zoom changes
18
+ */
19
+ onZoomChange?: (zoom: number) => void;
20
+ /**
21
+ * Whether toolbar should stick to top
22
+ * @default true
23
+ */
24
+ sticky?: boolean;
25
+ /**
26
+ * Custom class name
27
+ */
28
+ className?: string;
29
+ }
30
+ /**
31
+ * Main toolbar component
32
+ * Renders all toolbar sections based on active modifiers
33
+ */
34
+ export declare function Toolbar({ editor, modifiers, zoom, onZoomChange, sticky, className }: ToolbarProps): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Rich Text Editor - Toolbar Divider Component
3
+ *
4
+ * Visual separator between toolbar sections.
5
+ */
6
+ export interface ToolbarDividerProps {
7
+ /**
8
+ * Custom class name
9
+ */
10
+ className?: string;
11
+ }
12
+ /**
13
+ * Vertical divider for toolbar sections
14
+ */
15
+ export declare function ToolbarDivider({ className }: ToolbarDividerProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,29 @@
1
+ import { default as React } from 'react';
2
+ export interface ToolbarSectionProps {
3
+ /**
4
+ * Section content (toolbar buttons)
5
+ */
6
+ children: React.ReactNode;
7
+ /**
8
+ * Section identifier (for accessibility)
9
+ */
10
+ id?: string;
11
+ /**
12
+ * Optional section label (for screen readers)
13
+ */
14
+ label?: string;
15
+ /**
16
+ * Custom class name
17
+ */
18
+ className?: string;
19
+ /**
20
+ * Whether to wrap buttons in a ButtonGroup
21
+ * @default true
22
+ */
23
+ useButtonGroup?: boolean;
24
+ }
25
+ /**
26
+ * Toolbar section component
27
+ * Groups related buttons together
28
+ */
29
+ export declare function ToolbarSection({ children, id, label, className, useButtonGroup }: ToolbarSectionProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Rich Text Editor - Color Palette Component
3
+ *
4
+ * Grid of color circles for quick color selection.
5
+ */
6
+ export interface ColorPaletteProps {
7
+ /**
8
+ * Array of hex color codes to display
9
+ */
10
+ colors: readonly string[];
11
+ /**
12
+ * Currently selected color (optional)
13
+ */
14
+ selectedColor?: string;
15
+ /**
16
+ * Callback when a color is selected
17
+ */
18
+ onColorSelect: (color: string) => void;
19
+ /**
20
+ * Number of columns in the grid
21
+ * @default 4
22
+ */
23
+ columns?: number;
24
+ }
25
+ /**
26
+ * Color palette with circular color swatches
27
+ */
28
+ export declare function ColorPalette({ colors, selectedColor, onColorSelect, columns }: ColorPaletteProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,29 @@
1
+ import { Editor } from '@tiptap/react';
2
+ export interface ColorPickerProps {
3
+ /**
4
+ * TipTap editor instance
5
+ */
6
+ editor: Editor;
7
+ /**
8
+ * Color type (text color or highlight)
9
+ */
10
+ type: 'textColor' | 'highlight';
11
+ /**
12
+ * Whether to allow custom color input
13
+ * @default true
14
+ */
15
+ allowCustomColor?: boolean;
16
+ /**
17
+ * Button label
18
+ */
19
+ label: string;
20
+ /**
21
+ * Whether the button is disabled
22
+ */
23
+ isDisabled?: boolean;
24
+ }
25
+ /**
26
+ * Hybrid color picker component
27
+ * Combines predefined palette with custom color input
28
+ */
29
+ export declare function ColorPicker({ editor, type, allowCustomColor, label, isDisabled }: ColorPickerProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Rich Text Editor - Custom Color Input Component
3
+ *
4
+ * Input field for entering custom hex color codes.
5
+ */
6
+ export interface CustomColorInputProps {
7
+ /**
8
+ * Current color value
9
+ */
10
+ value: string;
11
+ /**
12
+ * Callback when value changes
13
+ */
14
+ onChange: (value: string) => void;
15
+ /**
16
+ * Callback when color is applied
17
+ */
18
+ onApply: (color: string) => void;
19
+ /**
20
+ * Placeholder text
21
+ * @default '#000000'
22
+ */
23
+ placeholder?: string;
24
+ }
25
+ /**
26
+ * Custom color input with hex validation
27
+ */
28
+ export declare function CustomColorInput({ value, onChange, onApply, placeholder }: CustomColorInputProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,21 @@
1
+ import { Editor } from '@tiptap/react';
2
+ import { HeadingLevel } from '../../types';
3
+ export interface HeadingDropdownProps {
4
+ /**
5
+ * TipTap editor instance
6
+ */
7
+ editor: Editor;
8
+ /**
9
+ * Available heading levels to show
10
+ * @default [1, 2, 3, 4, 5, 6]
11
+ */
12
+ levels?: HeadingLevel[];
13
+ /**
14
+ * Whether the dropdown is disabled
15
+ */
16
+ isDisabled?: boolean;
17
+ }
18
+ /**
19
+ * Heading level selector dropdown
20
+ */
21
+ export declare function HeadingDropdown({ editor, levels, isDisabled }: HeadingDropdownProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,20 @@
1
+ import { Editor } from '@tiptap/react';
2
+ export interface ListDropdownProps {
3
+ /**
4
+ * TipTap editor instance
5
+ */
6
+ editor: Editor;
7
+ /**
8
+ * Available list types to show
9
+ * @default ['bulletList', 'orderedList', 'taskList']
10
+ */
11
+ types?: Array<'bulletList' | 'orderedList' | 'taskList'>;
12
+ /**
13
+ * Whether the dropdown is disabled
14
+ */
15
+ isDisabled?: boolean;
16
+ }
17
+ /**
18
+ * List type selector dropdown
19
+ */
20
+ export declare function ListDropdown({ editor, types, isDisabled, }: ListDropdownProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,40 @@
1
+ import { LucideIcon } from 'lucide-react';
2
+ export interface ToolbarButtonProps {
3
+ /**
4
+ * Icon component to display
5
+ */
6
+ icon: LucideIcon;
7
+ /**
8
+ * Button label (used for tooltip and accessibility)
9
+ */
10
+ label: string;
11
+ /**
12
+ * Whether the button represents an active state
13
+ */
14
+ isActive?: boolean;
15
+ /**
16
+ * Whether the button is disabled
17
+ */
18
+ isDisabled?: boolean;
19
+ /**
20
+ * Click handler
21
+ */
22
+ onClick: () => void;
23
+ /**
24
+ * Optional keyboard shortcut to display in tooltip
25
+ */
26
+ shortcut?: string;
27
+ /**
28
+ * Icon size in pixels
29
+ * @default 16
30
+ */
31
+ iconSize?: number;
32
+ /**
33
+ * Custom class name
34
+ */
35
+ className?: string;
36
+ }
37
+ /**
38
+ * Standard toolbar button component
39
+ */
40
+ export declare function ToolbarButton({ icon: Icon, label, isActive, isDisabled, onClick, shortcut, iconSize, className, }: ToolbarButtonProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Rich Text Editor - Zoom Controls Component
3
+ *
4
+ * Zoom in/out controls for editor content.
5
+ * Separated from editor state for clean architecture.
6
+ */
7
+ export interface ZoomControlsProps {
8
+ /**
9
+ * Current zoom level (percentage)
10
+ */
11
+ zoom: number;
12
+ /**
13
+ * Callback when zoom changes
14
+ */
15
+ onZoomChange: (zoom: number) => void;
16
+ /**
17
+ * Minimum zoom level
18
+ * @default 50
19
+ */
20
+ min?: number;
21
+ /**
22
+ * Maximum zoom level
23
+ * @default 200
24
+ */
25
+ max?: number;
26
+ /**
27
+ * Zoom step increment
28
+ * @default 10
29
+ */
30
+ step?: number;
31
+ }
32
+ /**
33
+ * Zoom in/out controls with percentage display
34
+ */
35
+ export declare function ZoomControls({ zoom, onZoomChange, min, max, step, }: ZoomControlsProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Rich Text Editor - Toolbar Components Exports
3
+ */
4
+ export { ToolbarButton } from './ToolbarButton';
5
+ export type { ToolbarButtonProps } from './ToolbarButton';
6
+ export { HeadingDropdown } from './HeadingDropdown';
7
+ export type { HeadingDropdownProps } from './HeadingDropdown';
8
+ export { ListDropdown } from './ListDropdown';
9
+ export type { ListDropdownProps } from './ListDropdown';
10
+ export { ColorPalette } from './ColorPalette';
11
+ export type { ColorPaletteProps } from './ColorPalette';
12
+ export { CustomColorInput } from './CustomColorInput';
13
+ export type { CustomColorInputProps } from './CustomColorInput';
14
+ export { ColorPicker } from './ColorPicker';
15
+ export type { ColorPickerProps } from './ColorPicker';
16
+ export { ZoomControls } from './ZoomControls';
17
+ export type { ZoomControlsProps } from './ZoomControls';
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Rich Text Editor - Toolbar Hooks Exports
3
+ */
4
+ export { useToolbarState, getModifierState } from './useToolbarState';
5
+ export { useToolbarCommands } from './useToolbarCommands';
6
+ export { useZoomState } from './useZoomState';