@nice2dev/ui 1.0.5 → 1.0.6

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 (49) hide show
  1. package/README.md +253 -207
  2. package/dist/NiceButton-B5RXLDwI.cjs +1 -0
  3. package/dist/NiceButton-DmTHNHet.js +450 -0
  4. package/dist/NiceErrorBoundary-D1hh5GGe.js +732 -0
  5. package/dist/NiceErrorBoundary-Dta4TGee.cjs +1 -0
  6. package/dist/NiceModuleLifecyclePanel-BapdidD6.js +4776 -0
  7. package/dist/NiceModuleLifecyclePanel-CsFsm534.cjs +1 -0
  8. package/dist/NicePinCodeInput-4q8yULuo.js +13359 -0
  9. package/dist/NicePinCodeInput-eD2q8nGa.cjs +692 -0
  10. package/dist/NicePinCodeInput.css +1 -0
  11. package/dist/NiceSavedQueryPanel-DUw8plYP.js +5666 -0
  12. package/dist/NiceSavedQueryPanel-xpk09zy1.cjs +596 -0
  13. package/dist/NiceSavedQueryPanel.css +1 -0
  14. package/dist/NiceStockChart-CHlOnWzN.cjs +287 -0
  15. package/dist/NiceStockChart-Cpmv9_Cc.js +2341 -0
  16. package/dist/NiceStockChart.css +1 -0
  17. package/dist/NiceToggle-C1UKGXmJ.js +209 -0
  18. package/dist/NiceToggle-lVi-ETi0.cjs +1 -0
  19. package/dist/NiceWindow-D1awkyFl.js +1636 -0
  20. package/dist/NiceWindow-yARTUJsg.cjs +1 -0
  21. package/dist/charts.cjs +1 -0
  22. package/dist/charts.d.ts +1043 -0
  23. package/dist/charts.mjs +23 -0
  24. package/dist/core-CfXsl755.js +16305 -0
  25. package/dist/core-DGJSUW64.cjs +96 -0
  26. package/dist/data.cjs +1 -0
  27. package/dist/data.d.ts +2003 -0
  28. package/dist/data.mjs +21 -0
  29. package/dist/editors.cjs +1 -0
  30. package/dist/editors.d.ts +2728 -0
  31. package/dist/editors.mjs +66 -0
  32. package/dist/feedback.cjs +1 -0
  33. package/dist/feedback.d.ts +339 -0
  34. package/dist/feedback.mjs +16 -0
  35. package/dist/index-C853adw1.cjs +6199 -0
  36. package/dist/index-CNwVELPJ.js +62857 -0
  37. package/dist/index-CUx_-gKK.cjs +1 -0
  38. package/dist/index-x8mRM4Jc.js +17 -0
  39. package/dist/index.cjs +1 -7866
  40. package/dist/index.css +1 -0
  41. package/dist/index.d.ts +1160 -2
  42. package/dist/index.mjs +972 -105889
  43. package/dist/navigation.cjs +1 -0
  44. package/dist/navigation.d.ts +1862 -0
  45. package/dist/navigation.mjs +519 -0
  46. package/dist/overlays.cjs +1 -0
  47. package/dist/overlays.d.ts +706 -0
  48. package/dist/overlays.mjs +26 -0
  49. package/package.json +31 -1
@@ -0,0 +1,2728 @@
1
+ import { default as default_2 } from 'react';
2
+ import { ForwardRefExoticComponent } from 'react';
3
+ import { RefAttributes } from 'react';
4
+
5
+ /** An accounting account entry. */
6
+ declare interface AccountEntry {
7
+ /** Account number/code (e.g. "100", "200-01"). */
8
+ code: string;
9
+ /** Account name. */
10
+ name: string;
11
+ /** Account type. */
12
+ type?: 'asset' | 'liability' | 'equity' | 'revenue' | 'expense';
13
+ /** Parent account code (for hierarchical display). */
14
+ parentCode?: string;
15
+ /** Children (for tree support). */
16
+ children?: AccountEntry[];
17
+ /** Whether the account is active. */
18
+ isActive?: boolean;
19
+ }
20
+
21
+ /** Address field definition within a NiceAddressInput. */
22
+ declare interface AddressValue {
23
+ street?: string;
24
+ streetNumber?: string;
25
+ apartment?: string;
26
+ city?: string;
27
+ postalCode?: string;
28
+ state?: string;
29
+ country?: string;
30
+ }
31
+
32
+ declare type Annotation = RectangleAnnotation | EllipseAnnotation | ArrowAnnotation | LineAnnotation | TextAnnotation | FreehandAnnotation | BlurAnnotation;
33
+
34
+ declare interface AnnotationBase {
35
+ id: string;
36
+ tool: AnnotationTool;
37
+ style: AnnotationStyle;
38
+ /** Position and size in image coordinates (not screen coordinates) */
39
+ x: number;
40
+ y: number;
41
+ width: number;
42
+ height: number;
43
+ }
44
+
45
+ declare interface AnnotationStyle {
46
+ strokeColor: string;
47
+ fillColor: string;
48
+ strokeWidth: number;
49
+ opacity: number;
50
+ fontSize?: number;
51
+ fontFamily?: string;
52
+ }
53
+
54
+ declare type AnnotationTool = 'select' | 'rectangle' | 'ellipse' | 'arrow' | 'line' | 'text' | 'freehand' | 'blur';
55
+
56
+ /** Annotation tool type. */
57
+ declare type AnnotationTool_2 = 'highlight' | 'underline' | 'strikethrough' | 'freehand' | 'text' | 'rect' | 'arrow' | 'stamp';
58
+
59
+ declare interface ArrowAnnotation extends AnnotationBase {
60
+ tool: 'arrow';
61
+ endX: number;
62
+ endY: number;
63
+ }
64
+
65
+ declare type AspectRatio = 'free' | '1:1' | '4:3' | '3:4' | '16:9' | '9:16' | '3:2' | '2:3' | 'custom';
66
+
67
+ declare interface AspectRatioPreset {
68
+ label: string;
69
+ value: AspectRatio;
70
+ ratio?: number;
71
+ }
72
+
73
+ declare interface BlurAnnotation extends AnnotationBase {
74
+ tool: 'blur';
75
+ intensity: number;
76
+ }
77
+
78
+ declare interface ChunkInfo {
79
+ index: number;
80
+ start: number;
81
+ end: number;
82
+ uploaded: boolean;
83
+ retries: number;
84
+ }
85
+
86
+ /** A contact entry (person or company). */
87
+ declare interface ContactEntry {
88
+ id: string | number;
89
+ name: string;
90
+ type?: 'person' | 'company';
91
+ email?: string;
92
+ phone?: string;
93
+ avatarUrl?: string;
94
+ subtitle?: string;
95
+ }
96
+
97
+ declare interface Country {
98
+ code: string;
99
+ name: string;
100
+ dialCode: string;
101
+ flag: string;
102
+ }
103
+
104
+ declare interface CropArea {
105
+ x: number;
106
+ y: number;
107
+ width: number;
108
+ height: number;
109
+ }
110
+
111
+ declare interface CropResult {
112
+ crop: CropArea;
113
+ rotation: number;
114
+ flipH: boolean;
115
+ flipV: boolean;
116
+ zoom: number;
117
+ }
118
+
119
+ /** Currency definition. */
120
+ export declare interface CurrencyDef {
121
+ code: string;
122
+ symbol: string;
123
+ name: string;
124
+ decimals?: number;
125
+ }
126
+
127
+ declare interface CustomEmoji {
128
+ id: string;
129
+ name: string;
130
+ url: string;
131
+ }
132
+
133
+ declare interface EllipseAnnotation extends AnnotationBase {
134
+ tool: 'ellipse';
135
+ }
136
+
137
+ declare interface Emoji {
138
+ emoji: string;
139
+ name: string;
140
+ category: string;
141
+ keywords?: string[];
142
+ skinTones?: boolean;
143
+ }
144
+
145
+ export declare const EMOJI_DATA: Emoji[];
146
+
147
+ declare type EmojiCategory = 'recent' | 'smileys' | 'people' | 'animals' | 'food' | 'travel' | 'activities' | 'objects' | 'symbols' | 'flags';
148
+
149
+ declare interface FileInfo {
150
+ id: string;
151
+ file: File;
152
+ name: string;
153
+ size: number;
154
+ type: string;
155
+ status: UploadStatus;
156
+ progress: number;
157
+ error?: string;
158
+ previewUrl?: string;
159
+ uploadedUrl?: string;
160
+ uploadedAt?: Date;
161
+ chunks?: ChunkInfo[];
162
+ }
163
+
164
+ declare interface FileItemActions {
165
+ upload: () => void;
166
+ cancel: () => void;
167
+ retry: () => void;
168
+ remove: () => void;
169
+ }
170
+
171
+ declare interface FreehandAnnotation extends AnnotationBase {
172
+ tool: 'freehand';
173
+ points: {
174
+ x: number;
175
+ y: number;
176
+ }[];
177
+ }
178
+
179
+ /** A single invoice/order line item. */
180
+ declare interface InvoiceLine {
181
+ id: string | number;
182
+ description: string;
183
+ quantity: number;
184
+ unitPrice: number;
185
+ vatRate?: number;
186
+ discount?: number;
187
+ unit?: string;
188
+ /** Computed net amount (quantity × unitPrice − discount). Auto-calculated. */
189
+ netAmount?: number;
190
+ /** Computed gross amount (net + VAT). Auto-calculated. */
191
+ grossAmount?: number;
192
+ }
193
+
194
+ /** Invoice totals. */
195
+ declare interface InvoiceTotals {
196
+ totalNet: number;
197
+ totalVat: number;
198
+ totalGross: number;
199
+ vatBreakdown: Array<{
200
+ rate: number;
201
+ base: number;
202
+ amount: number;
203
+ }>;
204
+ }
205
+
206
+ declare interface LineAnnotation extends AnnotationBase {
207
+ tool: 'line';
208
+ endX: number;
209
+ endY: number;
210
+ }
211
+
212
+ declare type Listener<Args extends unknown[]> = (...args: Args) => void;
213
+
214
+ /**
215
+ * Per-component visibility & interaction level used by the access control system.
216
+ * - `'full'` — fully interactive (default)
217
+ * - `'readOnly'` — renders but cannot be edited
218
+ * - `'disabled'` — renders greyed-out
219
+ * - `'hidden'` — not rendered at all
220
+ */
221
+ declare type NiceAccessMode = 'full' | 'readOnly' | 'disabled' | 'hidden';
222
+
223
+ /**
224
+ * {@link NiceAccountPicker} — Accounting account selector with search,
225
+ * tree view support, and account type indicators.
226
+ */
227
+ export declare const NiceAccountPicker: default_2.ForwardRefExoticComponent<NiceAccountPickerProps & default_2.RefAttributes<HTMLDivElement>>;
228
+
229
+ /** Props for the {@link NiceAccountPicker} component. */
230
+ export declare interface NiceAccountPickerProps extends NiceFormFieldProps {
231
+ /** Selected account code. */
232
+ value?: string;
233
+ /** Fires when selection changes. */
234
+ onChange?: (code: string, account: AccountEntry) => void;
235
+ /** Available accounts (flat or tree). */
236
+ accounts: AccountEntry[];
237
+ /** Whether to display as a tree. */
238
+ treeView?: boolean;
239
+ /** Placeholder. */
240
+ placeholder?: string;
241
+ /** Whether to allow search/filter. */
242
+ searchable?: boolean;
243
+ /** Whether to show account type indicator. */
244
+ showType?: boolean;
245
+ /** Fires on search query change. */
246
+ onSearch?: (query: string) => void;
247
+ }
248
+
249
+ /**
250
+ * {@link NiceAddressInput} — A structured address entry form with street, city, postal code, state and country fields.
251
+ * Supports custom layouts, field visibility, country selection, and postal code validation.
252
+ */
253
+ export declare const NiceAddressInput: default_2.ForwardRefExoticComponent<NiceAddressInputProps & default_2.RefAttributes<HTMLDivElement>>;
254
+
255
+ /** Props for the {@link NiceAddressInput} component — a structured address entry form. */
256
+ export declare interface NiceAddressInputProps extends NiceFormFieldProps {
257
+ /** Controlled address value. */
258
+ value?: AddressValue;
259
+ /** Fires when any address field changes. */
260
+ onChange?: (value: AddressValue) => void;
261
+ /** Visible fields — by default all are shown. */
262
+ fields?: Array<keyof AddressValue>;
263
+ /** Placeholder overrides per field. */
264
+ placeholders?: Partial<Record<keyof AddressValue, string>>;
265
+ /** Available countries list (ISO 3166-1 alpha-2 codes). If provided, shows a select for the country field. */
266
+ countries?: Array<{
267
+ code: string;
268
+ name: string;
269
+ }>;
270
+ /** Layout orientation. */
271
+ layout?: 'vertical' | 'horizontal' | 'compact';
272
+ /** Whether to show country field first (common in EU forms). */
273
+ countryFirst?: boolean;
274
+ /** Callback for postal code validation — return error message or undefined. */
275
+ validatePostalCode?: (code: string, country?: string) => string | undefined;
276
+ }
277
+
278
+ export declare const NiceAutocomplete: default_2.FC<NiceAutocompleteProps>;
279
+
280
+ /** Props for the {@link NiceAutocomplete} component — a text input with filtered suggestion dropdown and optional multi-select. */
281
+ export declare interface NiceAutocompleteProps extends NiceFormFieldProps {
282
+ options: NiceOption[];
283
+ /** Single value or array of values if multiple=true. */
284
+ value: string | string[];
285
+ onChange?: (value: string | string[]) => void;
286
+ minSearchLength?: number;
287
+ maxResults?: number;
288
+ onSearch?: (query: string) => void;
289
+ clearable?: boolean;
290
+ loading?: boolean;
291
+ /** Enable multiple selection mode (tag-style). */
292
+ multiple?: boolean;
293
+ /** Custom render function for suggestion items. */
294
+ renderOption?: (option: NiceOption, query: string) => default_2.ReactNode;
295
+ /** Highlight matching text in suggestions (default true). */
296
+ highlightMatch?: boolean;
297
+ /** Alias for options — array of string suggestions. */
298
+ suggestions?: (string | NiceOption)[];
299
+ }
300
+
301
+ /** Base props inherited by every NiceToDev component. */
302
+ declare interface NiceBaseProps {
303
+ /** Additional CSS class name(s). */
304
+ className?: string;
305
+ /** Inline style object. */
306
+ style?: React.CSSProperties;
307
+ /** HTML `id` attribute. When omitted a stable auto-generated id is used. */
308
+ id?: string;
309
+ /** Tooltip text shown on hover. */
310
+ title?: string;
311
+ /** Test identifier for integration / e2e test selectors. */
312
+ 'data-testid'?: string;
313
+ /** Controls component visibility and interaction — see {@link NiceAccessMode}. */
314
+ accessMode?: NiceAccessMode;
315
+ /**
316
+ * Visual presentation style override.
317
+ * When set, overrides the global `displayStyle` from `NiceThemeProvider`.
318
+ * @see NiceDisplayStyle
319
+ */
320
+ displayStyle?: NiceDisplayStyle;
321
+ }
322
+
323
+ export declare const NiceCalendar: default_2.FC<NiceCalendarProps>;
324
+
325
+ /** Props for the {@link NiceCalendar} component — an inline month calendar with day/month/year views and multi-select support. */
326
+ export declare interface NiceCalendarProps extends NiceBaseProps, TracelessStorageProps {
327
+ /** Single selected date (ISO). Use together with onChange for single-select mode. */
328
+ value?: string;
329
+ onChange?: (date: string) => void;
330
+ min?: string;
331
+ max?: string;
332
+ disabledDates?: string[];
333
+ firstDayOfWeek?: 0 | 1;
334
+ size?: NiceSize;
335
+ showWeekNumbers?: boolean;
336
+ onMonthChange?: (year: number, month: number) => void;
337
+ /** Enable multiple date selection. onChange fires for the toggled date; use selectedDates for full list. */
338
+ multiple?: boolean;
339
+ /** Array of selected dates when multiple=true. */
340
+ selectedDates?: string[];
341
+ onSelectedDatesChange?: (dates: string[]) => void;
342
+ /** Custom render for day cells. Return ReactNode to replace default number. */
343
+ renderDay?: (date: string, day: number) => default_2.ReactNode;
344
+ /** Show keyboard hints. */
345
+ showKeyboardHints?: boolean;
346
+ /** Persist view preferences (requires Traceless storage props) */
347
+ persistPreferences?: boolean;
348
+ }
349
+
350
+ export declare type NiceCalendarView = 'days' | 'months' | 'years' | 'decade';
351
+
352
+ /** A cascading option node with optional children for {@link NiceCascadeSelect}. */
353
+ export declare interface NiceCascadeOption {
354
+ label: string;
355
+ value: string;
356
+ children?: NiceCascadeOption[];
357
+ }
358
+
359
+ export declare const NiceCascadeSelect: default_2.ForwardRefExoticComponent<NiceCascadeSelectProps & default_2.RefAttributes<HTMLDivElement>>;
360
+
361
+ /** Props for the {@link NiceCascadeSelect} component — a hierarchical dropdown (province → city → district). */
362
+ export declare interface NiceCascadeSelectProps extends NiceBaseProps {
363
+ options: NiceCascadeOption[];
364
+ value?: string[];
365
+ onChange?: (path: string[]) => void;
366
+ placeholder?: string;
367
+ disabled?: boolean;
368
+ size?: NiceSize;
369
+ optionLabel?: string;
370
+ optionValue?: string;
371
+ }
372
+
373
+ export declare const NiceCheckbox: default_2.ForwardRefExoticComponent<NiceCheckboxProps & default_2.RefAttributes<HTMLInputElement>>;
374
+
375
+ /** Props for the {@link NiceCheckbox} component. */
376
+ export declare interface NiceCheckboxProps extends NiceBaseProps {
377
+ /** Checkbox label. */
378
+ label?: default_2.ReactNode;
379
+ /** Controlled checked state. */
380
+ checked?: boolean;
381
+ /** Show a horizontal dash (tri-state). */
382
+ indeterminate?: boolean;
383
+ /** Called with the new checked value on toggle. */
384
+ onChange?: (checked: boolean) => void;
385
+ /** Disables the checkbox. */
386
+ disabled?: boolean;
387
+ /** Visual size. */
388
+ size?: NiceSize;
389
+ /** HTML name attribute. */
390
+ name?: string;
391
+ /** Validation error message. */
392
+ error?: string;
393
+ /** Show keyboard shortcuts hint. */
394
+ showKeyboardHints?: boolean;
395
+ }
396
+
397
+ declare interface NiceCodeCompletionItem {
398
+ /** Label displayed in completion list */
399
+ label: string;
400
+ /** Kind of completion */
401
+ kind: 'text' | 'method' | 'function' | 'constructor' | 'field' | 'variable' | 'class' | 'interface' | 'module' | 'property' | 'keyword' | 'snippet' | 'color' | 'file' | 'reference' | 'folder';
402
+ /** Text to insert */
403
+ insertText: string;
404
+ /** Is snippet (with placeholders) */
405
+ insertTextRules?: 'insertAsSnippet';
406
+ /** Documentation */
407
+ documentation?: string;
408
+ /** Detail */
409
+ detail?: string;
410
+ }
411
+
412
+ declare interface NiceCodeDecoration {
413
+ /** Line range */
414
+ range: {
415
+ startLineNumber: number;
416
+ startColumn: number;
417
+ endLineNumber: number;
418
+ endColumn: number;
419
+ };
420
+ /** CSS class for the decoration */
421
+ className?: string;
422
+ /** Glyph margin class */
423
+ glyphMarginClassName?: string;
424
+ /** Hover message */
425
+ hoverMessage?: string;
426
+ /** Is whole line decoration */
427
+ isWholeLine?: boolean;
428
+ }
429
+
430
+ export declare const NiceCodeEditor: default_2.ForwardRefExoticComponent<NiceCodeEditorProps & default_2.RefAttributes<NiceCodeEditorRef>>;
431
+
432
+ export declare const NiceCodeEditorAI: default_2.ForwardRefExoticComponent<NiceCodeEditorAIProps & default_2.RefAttributes<NiceCodeEditorAIRef>>;
433
+
434
+ export declare interface NiceCodeEditorAIProps extends Omit<NiceCodeEditorProps, 'ref'> {
435
+ /** Enable AI features (requires NiceAIProvider) */
436
+ enableAI?: boolean;
437
+ /** AI model to use */
438
+ aiModel?: string;
439
+ /** Enable inline completions (ghost text) */
440
+ enableInlineCompletion?: boolean;
441
+ /** Delay before triggering completion (ms) */
442
+ completionDelay?: number;
443
+ /** Enable explain selection action */
444
+ enableExplain?: boolean;
445
+ /** Enable refactor action */
446
+ enableRefactor?: boolean;
447
+ /** Enable generate from comment action */
448
+ enableGenerate?: boolean;
449
+ /** Custom AI system prompt */
450
+ systemPrompt?: string;
451
+ /** Callback when AI explanation is generated */
452
+ onExplain?: (code: string, explanation: string) => void;
453
+ /** Callback when AI refactoring is generated */
454
+ onRefactor?: (original: string, refactored: string) => void;
455
+ /** Show AI toolbar */
456
+ showAIToolbar?: boolean;
457
+ /** AI keyboard shortcut modifier */
458
+ aiShortcutKey?: 'Ctrl' | 'Alt' | 'Meta';
459
+ }
460
+
461
+ declare interface NiceCodeEditorAIRef extends NiceCodeEditorRef {
462
+ /** Trigger AI completion */
463
+ triggerCompletion: () => Promise<void>;
464
+ /** Explain selected code */
465
+ explainSelection: () => Promise<string>;
466
+ /** Refactor selected code */
467
+ refactorSelection: (instruction: string) => Promise<string>;
468
+ /** Generate code from comment */
469
+ generateFromComment: () => Promise<void>;
470
+ /** Accept current completion */
471
+ acceptCompletion: () => void;
472
+ /** Dismiss current completion */
473
+ dismissCompletion: () => void;
474
+ }
475
+
476
+ declare interface NiceCodeEditorOptions {
477
+ /** Read only mode */
478
+ readOnly?: boolean;
479
+ /** Show minimap */
480
+ minimap?: boolean;
481
+ /** Show line numbers */
482
+ lineNumbers?: boolean | 'on' | 'off' | 'relative' | 'interval';
483
+ /** Word wrap */
484
+ wordWrap?: 'off' | 'on' | 'wordWrapColumn' | 'bounded';
485
+ /** Tab size */
486
+ tabSize?: number;
487
+ /** Insert spaces instead of tabs */
488
+ insertSpaces?: boolean;
489
+ /** Font size */
490
+ fontSize?: number;
491
+ /** Font family */
492
+ fontFamily?: string;
493
+ /** Font ligatures */
494
+ fontLigatures?: boolean;
495
+ /** Cursor style */
496
+ cursorStyle?: 'line' | 'block' | 'underline' | 'line-thin' | 'block-outline' | 'underline-thin';
497
+ /** Cursor blinking */
498
+ cursorBlinking?: 'blink' | 'smooth' | 'phase' | 'expand' | 'solid';
499
+ /** Auto closing brackets */
500
+ autoClosingBrackets?: 'always' | 'languageDefined' | 'beforeWhitespace' | 'never';
501
+ /** Auto closing quotes */
502
+ autoClosingQuotes?: 'always' | 'languageDefined' | 'beforeWhitespace' | 'never';
503
+ /** Format on paste */
504
+ formatOnPaste?: boolean;
505
+ /** Format on type */
506
+ formatOnType?: boolean;
507
+ /** Render whitespace */
508
+ renderWhitespace?: 'none' | 'boundary' | 'selection' | 'trailing' | 'all';
509
+ /** Render control characters */
510
+ renderControlCharacters?: boolean;
511
+ /** Scroll beyond last line */
512
+ scrollBeyondLastLine?: boolean;
513
+ /** Smooth scrolling */
514
+ smoothScrolling?: boolean;
515
+ /** Folding */
516
+ folding?: boolean;
517
+ /** Show fold controls */
518
+ showFoldingControls?: 'always' | 'never' | 'mouseover';
519
+ /** Bracket pair colorization */
520
+ bracketPairColorization?: boolean;
521
+ /** Guides for brackets */
522
+ guides?: {
523
+ bracketPairs?: boolean;
524
+ indentation?: boolean;
525
+ highlightActiveIndentation?: boolean;
526
+ };
527
+ /** Sticky scroll (shows current scope) */
528
+ stickyScroll?: boolean;
529
+ /** Quick suggestions */
530
+ quickSuggestions?: boolean | {
531
+ other?: boolean;
532
+ comments?: boolean;
533
+ strings?: boolean;
534
+ };
535
+ /** Suggest on trigger characters */
536
+ suggestOnTriggerCharacters?: boolean;
537
+ /** Accept suggestion on enter */
538
+ acceptSuggestionOnEnter?: 'on' | 'smart' | 'off';
539
+ /** Inlay hints */
540
+ inlayHints?: boolean;
541
+ }
542
+
543
+ export declare interface NiceCodeEditorProps {
544
+ /** Editor layout size (minimal / compact / standard / fullscreen). */
545
+ editorSize?: NiceEditorSize;
546
+ /** Code value */
547
+ value: string;
548
+ /** Value change callback */
549
+ onChange?: (value: string) => void;
550
+ /** Language */
551
+ language?: NiceCodeLanguage;
552
+ /** Theme */
553
+ theme?: NiceCodeTheme;
554
+ /** Editor options */
555
+ options?: NiceCodeEditorOptions;
556
+ /** Height */
557
+ height?: number | string;
558
+ /** Width */
559
+ width?: number | string;
560
+ /** Error markers */
561
+ markers?: NiceCodeMarker[];
562
+ /** Decorations */
563
+ decorations?: NiceCodeDecoration[];
564
+ /** Completion provider */
565
+ completionProvider?: (model: unknown, position: unknown) => NiceCodeCompletionItem[] | Promise<NiceCodeCompletionItem[]>;
566
+ /** On editor mount callback */
567
+ onMount?: (editor: unknown, monaco: unknown) => void;
568
+ /** On cursor position change */
569
+ onCursorPositionChange?: (position: {
570
+ lineNumber: number;
571
+ column: number;
572
+ }) => void;
573
+ /** On selection change */
574
+ onSelectionChange?: (selection: {
575
+ startLineNumber: number;
576
+ startColumn: number;
577
+ endLineNumber: number;
578
+ endColumn: number;
579
+ }) => void;
580
+ /** On save (Ctrl+S) */
581
+ onSave?: (value: string) => void;
582
+ /** Loading content */
583
+ loading?: default_2.ReactNode;
584
+ /** Disabled state */
585
+ disabled?: boolean;
586
+ /** Show toolbar at top */
587
+ showToolbar?: boolean;
588
+ /** Show status bar at bottom */
589
+ showStatusBar?: boolean;
590
+ /** Additional CSS class */
591
+ className?: string;
592
+ /** Test ID */
593
+ 'data-testid'?: string;
594
+ }
595
+
596
+ declare interface NiceCodeEditorRef {
597
+ /** Get editor instance */
598
+ getEditor: () => unknown;
599
+ /** Get Monaco instance */
600
+ getMonaco: () => unknown;
601
+ /** Focus editor */
602
+ focus: () => void;
603
+ /** Get current value */
604
+ getValue: () => string;
605
+ /** Set value */
606
+ setValue: (value: string) => void;
607
+ /** Get selection */
608
+ getSelection: () => string;
609
+ /** Insert text at cursor */
610
+ insertText: (text: string) => void;
611
+ /** Format document */
612
+ formatDocument: () => void;
613
+ /** Go to line */
614
+ goToLine: (line: number, column?: number) => void;
615
+ /** Find and replace */
616
+ findReplace: () => void;
617
+ /** Undo */
618
+ undo: () => void;
619
+ /** Redo */
620
+ redo: () => void;
621
+ /** Get cursor position */
622
+ getCursorPosition: () => {
623
+ lineNumber: number;
624
+ column: number;
625
+ };
626
+ /** Set markers (errors/warnings) */
627
+ setMarkers: (markers: NiceCodeMarker[]) => void;
628
+ }
629
+
630
+ export declare type NiceCodeLanguage = 'javascript' | 'typescript' | 'json' | 'html' | 'css' | 'scss' | 'less' | 'markdown' | 'xml' | 'yaml' | 'sql' | 'python' | 'csharp' | 'java' | 'cpp' | 'c' | 'go' | 'rust' | 'php' | 'ruby' | 'shell' | 'powershell' | 'plaintext';
631
+
632
+ declare interface NiceCodeMarker {
633
+ /** Start line (1-based) */
634
+ startLineNumber: number;
635
+ /** Start column (1-based) */
636
+ startColumn: number;
637
+ /** End line (1-based) */
638
+ endLineNumber: number;
639
+ /** End column (1-based) */
640
+ endColumn: number;
641
+ /** Message */
642
+ message: string;
643
+ /** Severity: 1=Hint, 2=Info, 4=Warning, 8=Error */
644
+ severity: 1 | 2 | 4 | 8;
645
+ }
646
+
647
+ declare type NiceCodeTheme = 'vs' | 'vs-dark' | 'hc-black' | 'hc-light';
648
+
649
+ export declare const NiceColorPalette: default_2.ForwardRefExoticComponent<NiceColorPaletteProps & default_2.RefAttributes<HTMLDivElement>>;
650
+
651
+ export declare interface NiceColorPaletteProps extends NiceBaseProps {
652
+ /** Current palette colors */
653
+ value?: string[];
654
+ /** Called when palette changes */
655
+ onChange?: (colors: string[]) => void;
656
+ /** Minimum number of colors */
657
+ minColors?: number;
658
+ /** Maximum number of colors */
659
+ maxColors?: number;
660
+ /** Color harmony mode */
661
+ harmonyMode?: NiceHarmonyMode;
662
+ /** Called when harmony mode changes */
663
+ onHarmonyModeChange?: (mode: NiceHarmonyMode) => void;
664
+ /** Analogous/split-complementary distance in degrees */
665
+ distance?: number;
666
+ /** Called when distance changes */
667
+ onDistanceChange?: (d: number) => void;
668
+ /** Color style preset */
669
+ preset?: NiceColorPreset;
670
+ /** Called when preset changes */
671
+ onPresetChange?: (p: NiceColorPreset) => void;
672
+ /** Show the color wheel */
673
+ showWheel?: boolean;
674
+ /** Show contrast analysis */
675
+ showContrast?: boolean;
676
+ /** Show color info (HSL, RGB, hex) */
677
+ showInfo?: boolean;
678
+ /** Show preset gallery */
679
+ showPresets?: boolean;
680
+ /** Show variations (tints/shades) */
681
+ showVariations?: boolean;
682
+ /** Show random palette button */
683
+ showRandom?: boolean;
684
+ /** Number of tint/shade variations per color */
685
+ variationCount?: number;
686
+ /** Label */
687
+ label?: string;
688
+ /** Disabled state */
689
+ disabled?: boolean;
690
+ }
691
+
692
+ export declare const NiceColorPicker: default_2.ForwardRefExoticComponent<NiceColorPickerProps & default_2.RefAttributes<HTMLInputElement>>;
693
+
694
+ export declare interface NiceColorPickerProps extends NiceFormFieldProps {
695
+ value?: string;
696
+ onChange?: (color: string) => void;
697
+ presets?: string[];
698
+ showInput?: boolean;
699
+ showRandom?: boolean;
700
+ }
701
+
702
+ declare type NiceColorPreset = 'lightest-pastel' | 'bright-pastel' | 'shiny' | 'pastel' | 'full' | 'dark' | 'deep' | 'muted' | 'earth';
703
+
704
+ /**
705
+ * {@link NiceContactPicker} — Search-and-select picker for contacts (persons or companies)
706
+ * with avatar display, async search and multi-select chip display.
707
+ */
708
+ export declare const NiceContactPicker: default_2.ForwardRefExoticComponent<NiceContactPickerProps & default_2.RefAttributes<HTMLDivElement>>;
709
+
710
+ /** Props for the {@link NiceContactPicker} component. */
711
+ export declare interface NiceContactPickerProps extends NiceFormFieldProps {
712
+ /** Selected contact IDs. */
713
+ value?: Array<string | number>;
714
+ /** Fires when selection changes. */
715
+ onChange?: (ids: Array<string | number>) => void;
716
+ /** Available contacts (for local filtering). */
717
+ contacts?: ContactEntry[];
718
+ /** Async search function (for server-side search). */
719
+ onSearch?: (query: string) => Promise<ContactEntry[]>;
720
+ /** Debounce delay for search (ms). */
721
+ searchDelay?: number;
722
+ /** Whether to allow multiple selection. */
723
+ multiple?: boolean;
724
+ /** Placeholder text. */
725
+ placeholder?: string;
726
+ /** Fires when a contact chip is clicked. */
727
+ onContactClick?: (contact: ContactEntry) => void;
728
+ /** Maximum selections allowed. */
729
+ maxSelections?: number;
730
+ }
731
+
732
+ export declare const NiceCountryPicker: default_2.FC<NiceCountryPickerProps>;
733
+
734
+ export declare interface NiceCountryPickerProps {
735
+ /** Selected country code */
736
+ value?: string;
737
+ /** Default country code (uncontrolled) */
738
+ defaultValue?: string;
739
+ /** Callback when selection changes */
740
+ onChange?: (country: Country | null) => void;
741
+ /** Placeholder text */
742
+ placeholder?: string;
743
+ /** Enable search */
744
+ showSearch?: boolean;
745
+ /** Search placeholder */
746
+ searchPlaceholder?: string;
747
+ /** Show dial code */
748
+ showDialCode?: boolean;
749
+ /** Show flag */
750
+ showFlag?: boolean;
751
+ /** Disabled state */
752
+ disabled?: boolean;
753
+ /** Filter to only show certain countries */
754
+ countries?: string[];
755
+ /** Priority countries shown at top */
756
+ priorityCountries?: string[];
757
+ /** Allow clearing selection */
758
+ allowClear?: boolean;
759
+ /** Size variant */
760
+ size?: NiceSize;
761
+ /** Extra class name */
762
+ className?: string;
763
+ /** Inline styles */
764
+ style?: default_2.CSSProperties;
765
+ /** Test ID */
766
+ 'data-testid'?: string;
767
+ }
768
+
769
+ export declare const NiceCropEditor: default_2.FC<NiceCropEditorProps>;
770
+
771
+ export declare interface NiceCropEditorProps {
772
+ /** Image source (URL or base64) */
773
+ src: string;
774
+ /** Initial crop area */
775
+ initialCrop?: CropArea;
776
+ /** Initial rotation (degrees) */
777
+ initialRotation?: number;
778
+ /** Initial zoom level (1 = 100%) */
779
+ initialZoom?: number;
780
+ /** Aspect ratio presets to show */
781
+ aspectRatios?: AspectRatioPreset[];
782
+ /** Default aspect ratio */
783
+ defaultAspectRatio?: AspectRatio;
784
+ /** Custom aspect ratio (for 'custom' type) */
785
+ customAspectRatio?: number;
786
+ /** Show rotation controls */
787
+ showRotation?: boolean;
788
+ /** Show flip controls */
789
+ showFlip?: boolean;
790
+ /** Show zoom slider */
791
+ showZoom?: boolean;
792
+ /** Min zoom level */
793
+ minZoom?: number;
794
+ /** Max zoom level */
795
+ maxZoom?: number;
796
+ /** Zoom step */
797
+ zoomStep?: number;
798
+ /** Show grid overlay */
799
+ showGrid?: boolean;
800
+ /** Crop overlay color */
801
+ overlayColor?: string;
802
+ /** Callback when crop changes */
803
+ onChange?: (result: CropResult) => void;
804
+ /** Extra class name */
805
+ className?: string;
806
+ /** Inline styles */
807
+ style?: default_2.CSSProperties;
808
+ /** Test ID */
809
+ 'data-testid'?: string;
810
+ }
811
+
812
+ /**
813
+ * {@link NiceCurrencyInput} — Amount input with currency selector, locale-aware formatting.
814
+ */
815
+ export declare const NiceCurrencyInput: default_2.ForwardRefExoticComponent<NiceCurrencyInputProps & default_2.RefAttributes<HTMLDivElement>>;
816
+
817
+ /** Props for the {@link NiceCurrencyInput} component. */
818
+ export declare interface NiceCurrencyInputProps extends NiceFormFieldProps {
819
+ /** Controlled numeric amount (minor unit or major, based on `useMinorUnit`). */
820
+ value?: number | null;
821
+ /** Fires on amount change. */
822
+ onChange?: (value: number | null) => void;
823
+ /** Selected currency code (ISO 4217). */
824
+ currency?: string;
825
+ /** Fires when user changes currency. */
826
+ onCurrencyChange?: (code: string) => void;
827
+ /** Available currencies. */
828
+ currencies?: CurrencyDef[];
829
+ /** Whether to store value in minor units (cents). Default `false`. */
830
+ useMinorUnit?: boolean;
831
+ /** Minimum value. */
832
+ min?: number;
833
+ /** Maximum value. */
834
+ max?: number;
835
+ /** Override locale for formatting (e.g. "pl-PL"). */
836
+ locale?: string;
837
+ /** Placeholder text. */
838
+ placeholder?: string;
839
+ /** Whether to show currency selector (default `true` if currencies provided). */
840
+ showCurrencySelector?: boolean;
841
+ /** Fires on blur with the input event. */
842
+ onBlur?: (e: default_2.FocusEvent<HTMLInputElement>) => void;
843
+ }
844
+
845
+ /**
846
+ * Universal data source interface for Nice2Dev UI data components.
847
+ * All data-bound components (NiceDataGrid, NiceList, NiceForm, etc.) accept a `NiceDataSource`.
848
+ * Create one via `createArrayDataSource`, `createRestDataSource`, `createODataDataSource`,
849
+ * `createGraphQLDataSource`, or `createCustomDataSource`.
850
+ */
851
+ declare interface NiceDataSource<T = any> {
852
+ /** Field name used as unique row key. */
853
+ readonly keyField: string;
854
+ /** True when insert/update/remove are available. */
855
+ readonly writable: boolean;
856
+ load(options?: NiceLoadOptions): Promise<NiceLoadResult<T>>;
857
+ byKey(key: unknown): Promise<T | undefined>;
858
+ insert?(item: Partial<T>): Promise<T>;
859
+ update?(key: unknown, changes: Partial<T>): Promise<T>;
860
+ remove?(key: unknown): Promise<void>;
861
+ on<K extends keyof NiceDataSourceEventMap>(event: K, handler: Listener<NiceDataSourceEventMap[K]>): () => void;
862
+ }
863
+
864
+ /** Events emitted by all NiceDataSource implementations. */
865
+ declare type NiceDataSourceEventMap = {
866
+ changed: [];
867
+ loading: [boolean];
868
+ error: [Error | null];
869
+ loaded: [NiceLoadResult<unknown>];
870
+ };
871
+
872
+ export declare const NiceDatePicker: default_2.ForwardRefExoticComponent<NiceDatePickerProps & default_2.RefAttributes<HTMLInputElement>>;
873
+
874
+ /** Props for the {@link NiceDatePicker} component — a native date/time input wrapper. */
875
+ export declare interface NiceDatePickerProps extends NiceFormFieldProps {
876
+ /** ISO date string value (e.g. `'2024-06-15'`). */
877
+ value?: string;
878
+ /** Fires with the new ISO date string. */
879
+ onChange?: (value: string) => void;
880
+ /** Native blur handler. */
881
+ onBlur?: (e: default_2.FocusEvent<HTMLInputElement>) => void;
882
+ /** Native keydown handler. */
883
+ onKeyDown?: (e: default_2.KeyboardEvent<HTMLInputElement>) => void;
884
+ /** Minimum selectable date. */
885
+ min?: string;
886
+ /** Maximum selectable date. */
887
+ max?: string;
888
+ /** Input type — `'date'`, `'datetime-local'`, `'time'`, `'month'`, or `'week'`. */
889
+ type?: 'date' | 'datetime-local' | 'time' | 'month' | 'week';
890
+ /** Placeholder text. */
891
+ placeholder?: string;
892
+ }
893
+
894
+ export declare const NiceDateRangeBox: default_2.FC<NiceDateRangeBoxProps>;
895
+
896
+ /** Props for the {@link NiceDateRangeBox} component — a pair of date pickers for selecting a date range. */
897
+ export declare interface NiceDateRangeBoxProps extends NiceFormFieldProps {
898
+ /** Start date (ISO string). */
899
+ startDate: string;
900
+ /** End date (ISO string). */
901
+ endDate: string;
902
+ /** Called when the start date changes. */
903
+ onStartChange: (date: string) => void;
904
+ /** Called when the end date changes. */
905
+ onEndChange: (date: string) => void;
906
+ /** Earliest selectable date. */
907
+ min?: string;
908
+ /** Latest selectable date. */
909
+ max?: string;
910
+ /** Show a clear button. */
911
+ clearable?: boolean;
912
+ /** Placeholder text (when both fields are empty). */
913
+ placeholder?: string;
914
+ /** Placeholder for the start input. */
915
+ startPlaceholder?: string;
916
+ /** Placeholder for the end input. */
917
+ endPlaceholder?: string;
918
+ }
919
+
920
+ export declare const NiceDateTimePicker: default_2.ForwardRefExoticComponent<NiceDateTimePickerProps & default_2.RefAttributes<HTMLDivElement>>;
921
+
922
+ /** Props for the {@link NiceDateTimePicker} component — a combined date and time picker with calendar dropdown. */
923
+ export declare interface NiceDateTimePickerProps extends NiceFormFieldProps {
924
+ /** ISO 8601 date-time string (e.g. "2026-03-16T14:30") */
925
+ value?: string;
926
+ onChange?: (value: string) => void;
927
+ onBlur?: (e: default_2.FocusEvent) => void;
928
+ /** Minimum allowed date-time (ISO string) */
929
+ min?: string;
930
+ /** Maximum allowed date-time (ISO string) */
931
+ max?: string;
932
+ /** Display format — 12h shows AM/PM toggle, 24h shows 0–23 */
933
+ hourFormat?: '12' | '24';
934
+ /** Minute increment step */
935
+ minuteStep?: number;
936
+ /** Show seconds input */
937
+ showSeconds?: boolean;
938
+ /** Show "Now" quick button */
939
+ showNow?: boolean;
940
+ /** Show clear button */
941
+ clearable?: boolean;
942
+ }
943
+
944
+ /**
945
+ * Cross-component visual presentation style.
946
+ * Each style maps 1:1 to a ThemeVariantConfig preset controlling
947
+ * buttons, inputs, cards, badges, tabs, toggles, tooltips, tables, etc.
948
+ */
949
+ declare type NiceDisplayStyle = 'default' | 'minimal' | 'rounded' | 'sharp' | 'glass' | 'neumorphic' | 'playful' | 'enterprise' | 'modern3d' | 'brutalist' | 'luxe' | 'pill' | 'flat' | 'editorial' | 'dashboard' | 'softCloud' | 'cosmic' | 'corporate' | 'bank' | 'government' | 'military' | 'legal' | 'medical' | 'swiss' | 'scandinavian' | 'bauhaus' | 'notebook' | 'origami' | 'watercolor' | 'monochrome' | 'paper' | 'zen' | 'terminal' | 'hacker' | 'retro8bit' | 'synthwave' | 'cyberpunk' | 'steampunk' | 'vapor' | 'neon' | 'windows95' | 'material' | 'fluent' | 'cupertino' | 'ant' | 'bootstrap' | 'chakra' | 'notion' | 'linear' | 'vercel' | 'candy' | 'bubblegum' | 'cartoon' | 'kawaii' | 'circus' | 'gaming' | 'kiddo' | 'disco' | 'clown';
950
+
951
+ /** A content block in the {@link NiceDocumentEditor}. */
952
+ declare interface NiceDocumentBlock {
953
+ id: string;
954
+ type: NiceDocumentBlockType;
955
+ content: string;
956
+ level?: 1 | 2 | 3 | 4 | 5 | 6;
957
+ listType?: 'ordered' | 'unordered' | 'checklist';
958
+ src?: string;
959
+ alt?: string;
960
+ language?: string;
961
+ align?: 'left' | 'center' | 'right';
962
+ bold?: boolean;
963
+ italic?: boolean;
964
+ /** Underline text. */
965
+ underline?: boolean;
966
+ /** Strikethrough text. */
967
+ strikethrough?: boolean;
968
+ /** Block text color override. */
969
+ color?: string;
970
+ /** Block background color override. */
971
+ bgColor?: string;
972
+ /** Callout icon (emoji or class). */
973
+ icon?: string;
974
+ /** Toggle block: is open? */
975
+ open?: boolean;
976
+ /** Checklist items checked status for list blocks with listType='checklist'. */
977
+ checked?: boolean[];
978
+ /** Indentation level (0–4). */
979
+ indent?: number;
980
+ /** Lock block from editing. */
981
+ locked?: boolean;
982
+ }
983
+
984
+ /** Block type options in the {@link NiceDocumentEditor}. */
985
+ declare type NiceDocumentBlockType = 'paragraph' | 'heading' | 'list' | 'image' | 'table' | 'divider' | 'code' | 'quote' | 'callout' | 'toggle' | 'video' | 'embed' | 'pageBreak';
986
+
987
+ export declare const NiceDocumentEditor: ForwardRefExoticComponent<NiceDocumentEditorProps & RefAttributes<HTMLDivElement>>;
988
+
989
+ /** Props for the {@link NiceDocumentEditor} component — a block-based document editor (Notion-like). */
990
+ export declare interface NiceDocumentEditorProps extends NiceBaseProps {
991
+ blocks?: NiceDocumentBlock[];
992
+ onChange?: (blocks: NiceDocumentBlock[]) => void;
993
+ readOnly?: boolean;
994
+ showToolbar?: boolean;
995
+ size?: NiceSize;
996
+ /** Editor layout size (minimal / compact / standard / fullscreen). */
997
+ editorSize?: NiceEditorSize;
998
+ placeholder?: string;
999
+ onExport?: (html: string) => void;
1000
+ /** Called when user inserts an image via block. Return a URL string to insert. */
1001
+ onImageUpload?: (file: File) => Promise<string>;
1002
+ /** Maximum number of undo steps (default 50). */
1003
+ maxUndo?: number;
1004
+ /** Enable slash commands (default true). */
1005
+ slashCommands?: boolean;
1006
+ /** Enable word count display (default false). */
1007
+ showWordCount?: boolean;
1008
+ /** Show table of contents sidebar (default false). */
1009
+ showToc?: boolean;
1010
+ /** Show find & replace bar (Ctrl+F). */
1011
+ showFindReplace?: boolean;
1012
+ }
1013
+
1014
+ export declare const NiceDropDownBox: default_2.FC<NiceDropDownBoxProps>;
1015
+
1016
+ /** Props for the {@link NiceDropDownBox} component — a generic dropdown container for custom content. */
1017
+ export declare interface NiceDropDownBoxProps extends NiceFormFieldProps {
1018
+ /** Text shown in the collapsed trigger area. */
1019
+ displayValue?: string;
1020
+ /** Placeholder when no value is selected. */
1021
+ placeholder?: string;
1022
+ /** Show a clear button. */
1023
+ clearable?: boolean;
1024
+ /** Custom dropdown content (any React elements). */
1025
+ children: default_2.ReactNode;
1026
+ /** Called when the clear button is clicked. */
1027
+ onClear?: () => void;
1028
+ /** Controlled open state. */
1029
+ open?: boolean;
1030
+ /** Called when the open state changes. */
1031
+ onOpenChange?: (open: boolean) => void;
1032
+ /** Width of the dropdown panel. */
1033
+ dropdownWidth?: number | string;
1034
+ }
1035
+
1036
+ /**
1037
+ * Layout sizing for editors, viewers and players.
1038
+ * - `'minimal'` — smallest usable chrome, toolbar hidden or icon-only
1039
+ * - `'compact'` — reduced padding, single-row toolbar
1040
+ * - `'standard'` — default layout with full toolbar
1041
+ * - `'fullscreen'` — expands to fill the viewport
1042
+ */
1043
+ declare type NiceEditorSize = 'minimal' | 'compact' | 'standard' | 'fullscreen';
1044
+
1045
+ export declare const NiceEmojiPicker: default_2.FC<NiceEmojiPickerProps>;
1046
+
1047
+ export declare interface NiceEmojiPickerProps {
1048
+ /** Callback when emoji is selected */
1049
+ onSelect?: (emoji: string, data: Emoji | CustomEmoji) => void;
1050
+ /** Show search box */
1051
+ showSearch?: boolean;
1052
+ /** Search placeholder */
1053
+ searchPlaceholder?: string;
1054
+ /** Show skin tone selector */
1055
+ showSkinTones?: boolean;
1056
+ /** Default skin tone index (0-5) */
1057
+ defaultSkinTone?: number;
1058
+ /** Show recently used section */
1059
+ showRecent?: boolean;
1060
+ /** Max recent emojis */
1061
+ maxRecent?: number;
1062
+ /** Recent emojis (controlled) */
1063
+ recentEmojis?: string[];
1064
+ /** Callback when recent changes */
1065
+ onRecentChange?: (recent: string[]) => void;
1066
+ /** Categories to show */
1067
+ categories?: EmojiCategory[];
1068
+ /** Custom emojis */
1069
+ customEmojis?: CustomEmoji[];
1070
+ /** Columns in emoji grid */
1071
+ columns?: number;
1072
+ /** Size variant */
1073
+ size?: NiceSize;
1074
+ /** Extra class name */
1075
+ className?: string;
1076
+ /** Inline styles */
1077
+ style?: default_2.CSSProperties;
1078
+ /** Test ID */
1079
+ 'data-testid'?: string;
1080
+ }
1081
+
1082
+ export declare const NiceFileUpload: default_2.ForwardRefExoticComponent<NiceFileUploadProps & default_2.RefAttributes<NiceFileUploadRef>>;
1083
+
1084
+ export declare interface NiceFileUploadProps extends NiceBaseProps {
1085
+ /** Akceptowane typy plików (np. "image/*,.pdf") */
1086
+ accept?: string;
1087
+ /** Czy pozwalać na multiple files */
1088
+ multiple?: boolean;
1089
+ /** Maksymalny rozmiar pliku w bajtach */
1090
+ maxFileSize?: number;
1091
+ /** Maksymalna liczba plików */
1092
+ maxFiles?: number;
1093
+ /** Minimalny rozmiar pliku */
1094
+ minFileSize?: number;
1095
+ /** Rozmiar chunka dla dużych plików (domyślnie 5MB) */
1096
+ chunkSize?: number;
1097
+ /** Próg rozmiaru pliku dla chunked upload (domyślnie 10MB) */
1098
+ chunkThreshold?: number;
1099
+ /** Automatycznie rozpocznij upload po dodaniu */
1100
+ autoUpload?: boolean;
1101
+ /** Handler uploadu */
1102
+ uploadHandler?: UploadHandler;
1103
+ /** URL do uploadu (jeśli nie podano uploadHandler) */
1104
+ uploadUrl?: string;
1105
+ /** Nagłówki HTTP dla uploadu */
1106
+ uploadHeaders?: Record<string, string>;
1107
+ /** Callback po dodaniu plików */
1108
+ onFilesAdded?: (files: FileInfo[]) => void;
1109
+ /** Callback po zakończeniu uploadu */
1110
+ onUploadComplete?: (file: FileInfo) => void;
1111
+ /** Callback po błędzie */
1112
+ onUploadError?: (file: FileInfo, error: string) => void;
1113
+ /** Callback na postęp */
1114
+ onProgress?: (file: FileInfo, progress: number) => void;
1115
+ /** Callback po usunięciu */
1116
+ onFileRemoved?: (file: FileInfo) => void;
1117
+ /** Callback po zmianie stanu */
1118
+ onChange?: (files: FileInfo[]) => void;
1119
+ /** Niestandardowy renderer podglądu */
1120
+ renderPreview?: (file: FileInfo) => default_2.ReactNode;
1121
+ /** Niestandardowy renderer elementu listy */
1122
+ renderFileItem?: (file: FileInfo, actions: FileItemActions) => default_2.ReactNode;
1123
+ /** Pokaż podgląd obrazów */
1124
+ showPreview?: boolean;
1125
+ /** Pokaż listę plików */
1126
+ showFileList?: boolean;
1127
+ /** Tryb wyświetlania listy */
1128
+ listMode?: 'list' | 'grid' | 'compact';
1129
+ /** Rozmiar podglądu */
1130
+ previewSize?: NiceSize;
1131
+ /** Tekst w dropzone */
1132
+ dropzoneText?: string;
1133
+ /** Tekst pod przyciskiem */
1134
+ browseText?: string;
1135
+ /** Tekst podczas dragover */
1136
+ dragActiveText?: string;
1137
+ /** Wyłączony */
1138
+ disabled?: boolean;
1139
+ /** Read-only (tylko podgląd) */
1140
+ readOnly?: boolean;
1141
+ /** Customowe klasy CSS */
1142
+ dropzoneClassName?: string;
1143
+ /** Retry count */
1144
+ maxRetries?: number;
1145
+ /** Ilość równoczesnych uploadów */
1146
+ concurrentUploads?: number;
1147
+ /** Walidator plików */
1148
+ validateFile?: (file: File) => string | null;
1149
+ /** Zachowaj pliki po uploadzięciu */
1150
+ keepFilesAfterUpload?: boolean;
1151
+ /** Początkowe pliki */
1152
+ initialFiles?: FileInfo[];
1153
+ }
1154
+
1155
+ declare interface NiceFileUploadRef {
1156
+ addFiles: (files: File[]) => void;
1157
+ uploadAll: () => void;
1158
+ cancelAll: () => void;
1159
+ clearAll: () => void;
1160
+ getFiles: () => FileInfo[];
1161
+ getFile: (id: string) => FileInfo | undefined;
1162
+ retryFailed: () => void;
1163
+ openFileBrowser: () => void;
1164
+ }
1165
+
1166
+ /** A single filter condition in the {@link NiceFilterBuilder} tree. */
1167
+ declare type NiceFilterCondition = {
1168
+ type: 'condition';
1169
+ field: string;
1170
+ operator: NiceFilterOperator;
1171
+ value: unknown;
1172
+ };
1173
+
1174
+ /** A group of conditions joined by AND/OR logic in the {@link NiceFilterBuilder}. */
1175
+ declare type NiceFilterGroup = {
1176
+ type: 'group';
1177
+ logic: 'and' | 'or';
1178
+ items: (NiceFilterCondition | NiceFilterGroup)[];
1179
+ };
1180
+
1181
+ /** Comparison operators available in the {@link NiceFilterBuilder}. */
1182
+ declare type NiceFilterOperator = '=' | '<>' | '<' | '<=' | '>' | '>=' | 'contains' | 'notcontains' | 'startswith' | 'endswith' | 'between' | 'isblank' | 'isnotblank' | (string & {});
1183
+
1184
+ export declare const NiceFloatingLabelInput: default_2.ForwardRefExoticComponent<NiceFloatingLabelInputProps & default_2.RefAttributes<HTMLInputElement>>;
1185
+
1186
+ export declare interface NiceFloatingLabelInputProps extends Omit<default_2.InputHTMLAttributes<HTMLInputElement>, 'size'> {
1187
+ /** Label text (floats up when focused or has value) */
1188
+ label: string;
1189
+ /** Helper text shown below input */
1190
+ helperText?: string;
1191
+ /** Error message (shows instead of helper text when present) */
1192
+ error?: string;
1193
+ /** Success state */
1194
+ success?: boolean;
1195
+ /** Left icon */
1196
+ startIcon?: default_2.ReactNode;
1197
+ /** Right icon */
1198
+ endIcon?: default_2.ReactNode;
1199
+ /** Show character counter */
1200
+ showCounter?: boolean;
1201
+ /** Input variant */
1202
+ variant?: 'outlined' | 'filled' | 'standard';
1203
+ /** Size variant */
1204
+ size?: NiceSize;
1205
+ /** Full width */
1206
+ fullWidth?: boolean;
1207
+ /** Extra class name */
1208
+ className?: string;
1209
+ /** Test ID */
1210
+ 'data-testid'?: string;
1211
+ }
1212
+
1213
+ export declare const NiceForm: default_2.FC<NiceFormProps>;
1214
+
1215
+ /** Extended base props for form-field components (inputs, selects, etc.). */
1216
+ declare interface NiceFormFieldProps extends NiceBaseProps {
1217
+ /** Field label displayed above or beside the control. */
1218
+ label?: string;
1219
+ /** Assistive text shown below the field. */
1220
+ helperText?: string;
1221
+ /** Validation error message — when set the field is styled as invalid. */
1222
+ error?: string;
1223
+ /** Marks the field as required (adds visual indicator). */
1224
+ required?: boolean;
1225
+ /** Disables the field. */
1226
+ disabled?: boolean;
1227
+ /** Makes the field read-only. */
1228
+ readOnly?: boolean;
1229
+ /** Visual size of the field. */
1230
+ size?: NiceSize;
1231
+ /** HTML `name` attribute used in form serialization. */
1232
+ name?: string;
1233
+ /** When true, pressing Enter will trigger the onSubmit callback (if provided). */
1234
+ submitOnEnter?: boolean;
1235
+ /** Callback triggered when Enter is pressed (if submitOnEnter is true). */
1236
+ onSubmit?: () => void;
1237
+ /** Show a keyboard shortcuts hint icon (?) next to the label. */
1238
+ showKeyboardHints?: boolean;
1239
+ }
1240
+
1241
+ /** Describes a single field in a {@link NiceForm} layout. */
1242
+ declare interface NiceFormItem {
1243
+ field: string;
1244
+ label?: string;
1245
+ colSpan?: number;
1246
+ required?: boolean;
1247
+ /** Static visibility flag — set to false to always hide. */
1248
+ visible?: boolean;
1249
+ /**
1250
+ * Dynamic visibility: evaluated against current form data.
1251
+ * Example: `(data) => data.country === 'PL'`
1252
+ */
1253
+ visibleWhen?: (data: Record<string, any>) => boolean;
1254
+ render?: (value: any, onChange: (v: any) => void) => default_2.ReactNode;
1255
+ hint?: string;
1256
+ /** Group name — fields with the same group are rendered together under a section header. */
1257
+ group?: string;
1258
+ /** Field type for auto-rendering (text, number, select, etc.). */
1259
+ type?: string;
1260
+ /** Options for select/radio type fields. */
1261
+ options?: Array<{
1262
+ label: string;
1263
+ value: string | number;
1264
+ } | string>;
1265
+ }
1266
+
1267
+ /** Props for the {@link NiceForm} component — a declarative, data-driven form layout. */
1268
+ export declare interface NiceFormProps extends NiceBaseProps {
1269
+ items: NiceFormItem[];
1270
+ /** Inline form data. Ignored when `dataSource` + `recordKey` are provided. */
1271
+ data?: Record<string, any>;
1272
+ /** Field change callback. Ignored when `dataSource` is provided. */
1273
+ onFieldChange?: (field: string, value: any) => void;
1274
+ onSubmit?: (data: Record<string, any>) => void;
1275
+ /**
1276
+ * Two-way data source binding.
1277
+ * When provided together with `recordKey`, the form loads and edits
1278
+ * a single record from the source. `data`/`onFieldChange` are ignored.
1279
+ */
1280
+ dataSource?: NiceDataSource;
1281
+ /** Key of the record to load/edit. */
1282
+ recordKey?: unknown;
1283
+ columns?: number;
1284
+ /**
1285
+ * Responsive columns: map of min-width breakpoint (px) → column count.
1286
+ * Example: `{ 0: 1, 600: 2, 1024: 3 }` → 1 col on small, 2 on medium, 3 on large.
1287
+ */
1288
+ responsiveColumns?: Record<number, number>;
1289
+ gap?: number | string;
1290
+ labelPosition?: 'top' | 'left';
1291
+ size?: NiceSize;
1292
+ readOnly?: boolean;
1293
+ disabled?: boolean;
1294
+ /** Auto-save delay in ms. When set, form auto-saves after this many ms of inactivity. */
1295
+ autoSaveDelay?: number;
1296
+ /** Callback when dirty state changes. */
1297
+ onDirtyChange?: (isDirty: boolean) => void;
1298
+ }
1299
+
1300
+ export declare const NiceGradientPicker: default_2.ForwardRefExoticComponent<NiceGradientPickerProps & default_2.RefAttributes<HTMLDivElement>>;
1301
+
1302
+ export declare interface NiceGradientPickerProps extends NiceBaseProps {
1303
+ value?: NiceGradientValue;
1304
+ onChange?: (value: NiceGradientValue) => void;
1305
+ /** Show CSS output field */
1306
+ showCssOutput?: boolean;
1307
+ /** Show preset gallery */
1308
+ showPresets?: boolean;
1309
+ /** Show random button */
1310
+ showRandom?: boolean;
1311
+ /** Maximum number of gradient stops */
1312
+ maxStops?: number;
1313
+ label?: string;
1314
+ disabled?: boolean;
1315
+ }
1316
+
1317
+ declare type NiceGradientShape = 'circle' | 'ellipse';
1318
+
1319
+ declare type NiceGradientSizeKeyword = 'closest-side' | 'farthest-side' | 'closest-corner' | 'farthest-corner';
1320
+
1321
+ export declare interface NiceGradientStop {
1322
+ color: string;
1323
+ position: number;
1324
+ }
1325
+
1326
+ declare type NiceGradientType = 'linear' | 'radial' | 'conic';
1327
+
1328
+ declare interface NiceGradientValue {
1329
+ type: NiceGradientType;
1330
+ angle: number;
1331
+ shape?: NiceGradientShape;
1332
+ size?: NiceGradientSizeKeyword;
1333
+ positionX?: number;
1334
+ positionY?: number;
1335
+ repeating?: boolean;
1336
+ stops: NiceGradientStop[];
1337
+ }
1338
+
1339
+ declare type NiceHarmonyMode = 'monochromatic' | 'complementary' | 'split-complementary' | 'analogous' | 'triadic' | 'tetradic' | 'square';
1340
+
1341
+ export declare const NiceHtmlEditor: default_2.FC<NiceHtmlEditorProps>;
1342
+
1343
+ export declare const NiceHtmlEditorAI: default_2.ForwardRefExoticComponent<NiceHtmlEditorAIProps & default_2.RefAttributes<NiceHtmlEditorAIRef>>;
1344
+
1345
+ export declare interface NiceHtmlEditorAIProps extends Omit<NiceHtmlEditorProps, 'toolbar'> {
1346
+ /** Enable AI features (requires NiceAIProvider) */
1347
+ enableAI?: boolean;
1348
+ /** AI model to use */
1349
+ aiModel?: string;
1350
+ /** Enable text improvement feature */
1351
+ enableImprove?: boolean;
1352
+ /** Enable translation feature */
1353
+ enableTranslate?: boolean;
1354
+ /** Enable HTML generation from prompt */
1355
+ enableGenerate?: boolean;
1356
+ /** Custom toolbar (AI commands will be appended) */
1357
+ toolbar?: NiceHtmlEditorCommand[];
1358
+ /** Available languages for translation */
1359
+ languages?: {
1360
+ code: string;
1361
+ label: string;
1362
+ }[];
1363
+ /** Available text styles */
1364
+ textStyles?: {
1365
+ style: TextStyle;
1366
+ label: string;
1367
+ }[];
1368
+ /** Callback when AI improves text */
1369
+ onImprove?: (original: string, improved: string, style: TextStyle) => void;
1370
+ /** Callback when AI translates text */
1371
+ onTranslate?: (original: string, translated: string, targetLanguage: string) => void;
1372
+ /** Callback when AI generates HTML */
1373
+ onGenerate?: (prompt: string, html: string) => void;
1374
+ /** Show AI toolbar section */
1375
+ showAIToolbar?: boolean;
1376
+ }
1377
+
1378
+ declare interface NiceHtmlEditorAIRef {
1379
+ /** Get editor element */
1380
+ getEditor: () => HTMLDivElement | null;
1381
+ /** Focus editor */
1382
+ focus: () => void;
1383
+ /** Get current HTML value */
1384
+ getValue: () => string;
1385
+ /** Set HTML value */
1386
+ setValue: (html: string) => void;
1387
+ /** Get selected text */
1388
+ getSelection: () => string;
1389
+ /** Insert HTML at cursor */
1390
+ insertHtml: (html: string) => void;
1391
+ /** Improve selected text */
1392
+ improveSelection: (style?: TextStyle) => Promise<string>;
1393
+ /** Translate selected text */
1394
+ translateSelection: (targetLanguage: string) => Promise<string>;
1395
+ /** Generate HTML from prompt */
1396
+ generateHtml: (prompt: string) => Promise<string>;
1397
+ }
1398
+
1399
+ /** Available toolbar commands for the {@link NiceHtmlEditor}. */
1400
+ declare type NiceHtmlEditorCommand = 'bold' | 'italic' | 'underline' | 'strikethrough' | 'h1' | 'h2' | 'h3' | 'ul' | 'ol' | 'link' | 'unlink' | 'undo' | 'redo' | 'clear' | 'table' | 'image' | 'code' | 'markdown' | 'blockquote' | 'hr' | 'fontSize' | 'fontColor' | 'bgColor' | 'subscript' | 'superscript' | 'indent' | 'outdent' | 'alignLeft' | 'alignCenter' | 'alignRight' | 'alignJustify' | 'fullscreen' | 'removeFormat' | 'print' | 'source' | 'emoji' | 'findReplace';
1401
+
1402
+ /** Props for the {@link NiceHtmlEditor} component — a WYSIWYG rich-text editor with toolbar, mentions, and image upload. */
1403
+ export declare interface NiceHtmlEditorProps extends NiceFormFieldProps {
1404
+ value: string;
1405
+ onChange: (html: string) => void;
1406
+ placeholder?: string;
1407
+ height?: number | string;
1408
+ toolbar?: NiceHtmlEditorCommand[];
1409
+ readOnly?: boolean;
1410
+ /** Called when user selects an image via toolbar. Return a URL string to insert. */
1411
+ onImageUpload?: (file: File) => Promise<string>;
1412
+ /** Mention trigger character (default '@'). Set to enable @mentions in the editor. */
1413
+ mentionTrigger?: string;
1414
+ /** Mention suggestion items. */
1415
+ mentionSuggestions?: {
1416
+ key: string;
1417
+ label: string;
1418
+ }[];
1419
+ /** Called when mention query text changes. */
1420
+ onMentionSearch?: (query: string) => void;
1421
+ /** Called when files are dropped into the editor. */
1422
+ onFileDrop?: (files: File[]) => Promise<string[]>;
1423
+ /** Enable paste cleanup (strips Word/external formatting). */
1424
+ pasteCleanup?: boolean;
1425
+ /** Maximum content length in characters (0 = unlimited). */
1426
+ maxLength?: number;
1427
+ /** Show word count status bar. */
1428
+ showWordCount?: boolean;
1429
+ /** Templates available for insertion. */
1430
+ templates?: {
1431
+ label: string;
1432
+ html: string;
1433
+ }[];
1434
+ }
1435
+
1436
+ declare type NiceImageAnnotationType = 'text' | 'rect' | 'circle' | 'line' | 'arrow';
1437
+
1438
+ export declare const NiceImageAnnotator: default_2.ForwardRefExoticComponent<NiceImageAnnotatorProps & default_2.RefAttributes<NiceImageAnnotatorRef>>;
1439
+
1440
+ export declare interface NiceImageAnnotatorProps {
1441
+ /** Image source (URL, data URI, or Blob URL) */
1442
+ src: string;
1443
+ /** Alt text */
1444
+ alt?: string;
1445
+ /** Initial annotations */
1446
+ annotations?: Annotation[];
1447
+ /** Active tool */
1448
+ activeTool?: AnnotationTool;
1449
+ /** Default annotation style */
1450
+ defaultStyle?: Partial<AnnotationStyle>;
1451
+ /** Callback when annotations change */
1452
+ onAnnotationsChange?: (annotations: Annotation[]) => void;
1453
+ /** Custom class name */
1454
+ className?: string;
1455
+ /** Whether the annotator is read-only */
1456
+ readOnly?: boolean;
1457
+ /** Min zoom */
1458
+ minZoom?: number;
1459
+ /** Max zoom */
1460
+ maxZoom?: number;
1461
+ }
1462
+
1463
+ declare interface NiceImageAnnotatorRef {
1464
+ /** Export image with annotations as data URL */
1465
+ exportAsDataURL: (format?: 'png' | 'jpeg', quality?: number) => Promise<string>;
1466
+ /** Export annotations only as JSON */
1467
+ exportAnnotations: () => Annotation[];
1468
+ /** Import annotations from JSON */
1469
+ importAnnotations: (annotations: Annotation[]) => void;
1470
+ /** Export as SVG overlay string */
1471
+ exportAsSVG: () => string;
1472
+ /** Undo last annotation action */
1473
+ undo: () => void;
1474
+ /** Redo last undone action */
1475
+ redo: () => void;
1476
+ /** Set zoom level */
1477
+ setZoom: (zoom: number) => void;
1478
+ /** Fit image to viewport */
1479
+ fitToScreen: () => void;
1480
+ /** Clear all annotations */
1481
+ clear: () => void;
1482
+ }
1483
+
1484
+ export declare const NiceImageEditor: ForwardRefExoticComponent<NiceImageEditorProps & RefAttributes<HTMLDivElement>>;
1485
+
1486
+ declare interface NiceImageEditorAnnotation {
1487
+ type: NiceImageAnnotationType;
1488
+ x: number;
1489
+ y: number;
1490
+ width?: number;
1491
+ height?: number;
1492
+ text?: string;
1493
+ color?: string;
1494
+ fontSize?: number;
1495
+ strokeWidth?: number;
1496
+ }
1497
+
1498
+ /** Props for the {@link NiceImageEditor} component — an image editor with crop, rotate, flip, filters, and annotations. */
1499
+ export declare interface NiceImageEditorProps extends NiceBaseProps {
1500
+ src: string;
1501
+ size?: NiceSize;
1502
+ /** Editor layout size (minimal / compact / standard / fullscreen). */
1503
+ editorSize?: NiceEditorSize;
1504
+ tools?: NiceImageEditorTool[];
1505
+ showToolbar?: boolean;
1506
+ showZoom?: boolean;
1507
+ maxUndo?: number;
1508
+ onSave?: (dataUrl: string, state: NiceImageEditorState) => void;
1509
+ onCancel?: () => void;
1510
+ onChange?: (state: NiceImageEditorState) => void;
1511
+ width?: number | string;
1512
+ height?: number | string;
1513
+ }
1514
+
1515
+ declare interface NiceImageEditorState {
1516
+ rotation: number;
1517
+ flipH: boolean;
1518
+ flipV: boolean;
1519
+ brightness: number;
1520
+ contrast: number;
1521
+ saturate: number;
1522
+ blur: number;
1523
+ crop: {
1524
+ x: number;
1525
+ y: number;
1526
+ width: number;
1527
+ height: number;
1528
+ } | null;
1529
+ annotations: NiceImageEditorAnnotation[];
1530
+ }
1531
+
1532
+ /** Available tools in the {@link NiceImageEditor} toolbar. */
1533
+ declare type NiceImageEditorTool = 'crop' | 'rotate' | 'flip' | 'brightness' | 'contrast' | 'saturate' | 'blur' | 'annotate';
1534
+
1535
+ export declare const NiceInPlaceEditor: default_2.ForwardRefExoticComponent<NiceInPlaceEditorProps & default_2.RefAttributes<HTMLDivElement>>;
1536
+
1537
+ declare interface NiceInPlaceEditorOption {
1538
+ label: string;
1539
+ value: string;
1540
+ }
1541
+
1542
+ /** Props for the {@link NiceInPlaceEditor} component — click-to-edit inline text that toggles between display and editor mode. */
1543
+ export declare interface NiceInPlaceEditorProps extends NiceBaseProps {
1544
+ value: string;
1545
+ onChange: (value: string) => void;
1546
+ type?: NiceInPlaceEditorType;
1547
+ options?: NiceInPlaceEditorOption[];
1548
+ submitOnBlur?: boolean;
1549
+ placeholder?: string;
1550
+ disabled?: boolean;
1551
+ size?: NiceSize;
1552
+ }
1553
+
1554
+ /** Supported editor types for the {@link NiceInPlaceEditor}. */
1555
+ declare type NiceInPlaceEditorType = 'text' | 'textarea' | 'select' | 'date' | 'number';
1556
+
1557
+ export declare const NiceInputOtp: default_2.ForwardRefExoticComponent<NiceInputOtpProps & default_2.RefAttributes<HTMLDivElement>>;
1558
+
1559
+ /** Props for the {@link NiceInputOtp} component — a one-time-password input with separate digit boxes. */
1560
+ export declare interface NiceInputOtpProps extends NiceFormFieldProps {
1561
+ /** Number of OTP digits */
1562
+ length?: number;
1563
+ /** Current value */
1564
+ value?: string;
1565
+ onChange?: (value: string) => void;
1566
+ /** Use password dots instead of visible digits */
1567
+ masked?: boolean;
1568
+ /** Called when all digits are filled */
1569
+ onComplete?: (value: string) => void;
1570
+ autoFocus?: boolean;
1571
+ }
1572
+
1573
+ /**
1574
+ * {@link NiceInvoiceLineEditor} — Editable grid for invoice/order line items with auto-calculated
1575
+ * net/gross amounts, VAT breakdown, discounts and totals.
1576
+ */
1577
+ export declare const NiceInvoiceLineEditor: default_2.ForwardRefExoticComponent<NiceInvoiceLineEditorProps & default_2.RefAttributes<HTMLDivElement>>;
1578
+
1579
+ /** Props for the {@link NiceInvoiceLineEditor} component. */
1580
+ export declare interface NiceInvoiceLineEditorProps extends NiceFormFieldProps {
1581
+ /** Controlled line items. */
1582
+ value?: InvoiceLine[];
1583
+ /** Fires when lines change. */
1584
+ onChange?: (lines: InvoiceLine[]) => void;
1585
+ /** Default currency symbol for display. */
1586
+ currencySymbol?: string;
1587
+ /** Default VAT rate for new lines (e.g. 23). */
1588
+ defaultVatRate?: number;
1589
+ /** Available VAT rates for dropdown. */
1590
+ vatRates?: number[];
1591
+ /** Available units for dropdown. */
1592
+ units?: string[];
1593
+ /** Whether to show the discount column. */
1594
+ showDiscount?: boolean;
1595
+ /** Whether to show the unit column. */
1596
+ showUnit?: boolean;
1597
+ /** Whether to show totals summary row. */
1598
+ showTotals?: boolean;
1599
+ /** Whether to allow adding/removing lines. */
1600
+ editable?: boolean;
1601
+ /** Maximum number of lines. */
1602
+ maxLines?: number;
1603
+ /** Fires with computed totals whenever lines change. */
1604
+ onTotalsChange?: (totals: InvoiceTotals) => void;
1605
+ }
1606
+
1607
+ export declare const NiceKnob: default_2.ForwardRefExoticComponent<NiceKnobProps & default_2.RefAttributes<HTMLDivElement>>;
1608
+
1609
+ /** Props for the {@link NiceKnob} component — a rotary knob for numeric input (SVG-based). */
1610
+ export declare interface NiceKnobProps extends Omit<NiceFormFieldProps, 'size'> {
1611
+ value?: number;
1612
+ onChange?: (value: number) => void;
1613
+ min?: number;
1614
+ max?: number;
1615
+ step?: number;
1616
+ /** Show numeric value label */
1617
+ showValue?: boolean;
1618
+ /** Value template string, e.g. "{value}%" */
1619
+ valueTemplate?: string;
1620
+ /** Knob diameter in pixels or NiceSize preset. */
1621
+ size?: number | NiceSize;
1622
+ }
1623
+
1624
+ /** Parameters sent to `load()`. All optional — adapters use what they support. */
1625
+ declare interface NiceLoadOptions {
1626
+ filter?: NiceFilterGroup;
1627
+ sort?: NiceSortExpression[];
1628
+ skip?: number;
1629
+ take?: number;
1630
+ search?: string;
1631
+ searchFields?: string[];
1632
+ select?: string[];
1633
+ expand?: string[];
1634
+ group?: {
1635
+ field: string;
1636
+ direction?: NiceSortDirection;
1637
+ }[];
1638
+ /** Arbitrary parameters forwarded to the adapter (e.g. custom query strings). */
1639
+ customParams?: Record<string, unknown>;
1640
+ }
1641
+
1642
+ /** Result returned by {@link NiceDataSource.load}. */
1643
+ declare interface NiceLoadResult<T> {
1644
+ data: T[];
1645
+ totalCount: number;
1646
+ summary?: Record<string, unknown>;
1647
+ }
1648
+
1649
+ export declare const NiceLookup: default_2.FC<NiceLookupProps>;
1650
+
1651
+ /** Props for the {@link NiceLookup} component — a simple select-like lookup with optional search. */
1652
+ export declare interface NiceLookupProps extends NiceFormFieldProps {
1653
+ /** Available options. */
1654
+ options: NiceOption[];
1655
+ /** Selected value. */
1656
+ value: string;
1657
+ /** Called when the selection changes. */
1658
+ onChange: (value: string) => void;
1659
+ /** Enable search/filter in the dropdown. */
1660
+ searchable?: boolean;
1661
+ /** Show a clear button. */
1662
+ clearable?: boolean;
1663
+ /** Show a loading spinner in the dropdown. */
1664
+ loading?: boolean;
1665
+ /** Input placeholder text. */
1666
+ placeholder?: string;
1667
+ }
1668
+
1669
+ export declare const NiceMarkdownEditor: default_2.ForwardRefExoticComponent<NiceMarkdownEditorProps & default_2.RefAttributes<HTMLDivElement>>;
1670
+
1671
+ export declare interface NiceMarkdownEditorProps extends NiceBaseProps {
1672
+ value?: string;
1673
+ onChange?: (value: string) => void;
1674
+ preview?: NiceMarkdownPreviewMode | boolean;
1675
+ placeholder?: string;
1676
+ disabled?: boolean;
1677
+ readOnly?: boolean;
1678
+ size?: NiceSize;
1679
+ /** Editor layout size (minimal / compact / standard / fullscreen). */
1680
+ editorSize?: NiceEditorSize;
1681
+ toolbar?: boolean;
1682
+ minHeight?: number | string;
1683
+ showWordCount?: boolean;
1684
+ showLineNumbers?: boolean;
1685
+ onExportHtml?: (html: string) => void;
1686
+ onImageUpload?: (file: File) => Promise<string>;
1687
+ }
1688
+
1689
+ declare type NiceMarkdownPreviewMode = 'side' | 'tab' | 'none';
1690
+
1691
+ export declare const NiceMaskedInput: default_2.ForwardRefExoticComponent<NiceMaskedInputProps & default_2.RefAttributes<HTMLInputElement>>;
1692
+
1693
+ /** Props for the {@link NiceMaskedInput} component — a text input that enforces a mask pattern (e.g. phone, credit card). */
1694
+ export declare interface NiceMaskedInputProps extends NiceFormFieldProps {
1695
+ /** Raw unmasked value */
1696
+ value?: string;
1697
+ onChange?: (value: string, maskedValue: string) => void;
1698
+ onBlur?: (e: default_2.FocusEvent<HTMLInputElement>) => void;
1699
+ onKeyDown?: (e: default_2.KeyboardEvent<HTMLInputElement>) => void;
1700
+ /**
1701
+ * Mask pattern. Characters:
1702
+ * - `9` = digit (0-9)
1703
+ * - `a` = letter (a-z, A-Z)
1704
+ * - `*` = alphanumeric (a-z, A-Z, 0-9)
1705
+ * - Any other character is a literal separator
1706
+ *
1707
+ * Examples: `(999) 999-9999`, `9999 9999 9999 9999`, `99/99/9999`
1708
+ */
1709
+ mask: string;
1710
+ /** Character shown for unfilled positions (default: '_') */
1711
+ maskChar?: string;
1712
+ placeholder?: string;
1713
+ /** Show the mask pattern as placeholder when empty */
1714
+ showMaskAsPlaceholder?: boolean;
1715
+ clearable?: boolean;
1716
+ autoFocus?: boolean;
1717
+ }
1718
+
1719
+ export declare const NiceMention: default_2.ForwardRefExoticComponent<NiceMentionProps & default_2.RefAttributes<HTMLTextAreaElement>>;
1720
+
1721
+ /** Props for the {@link NiceMention} component — a textarea with @mention triggers and suggestion popup. */
1722
+ export declare interface NiceMentionProps extends NiceFormFieldProps {
1723
+ value?: string;
1724
+ onChange?: (value: string) => void;
1725
+ /** Array of suggestions or async search callback */
1726
+ suggestions?: (NiceMentionSuggestion | string)[];
1727
+ /** Async search handler */
1728
+ onSearch?: (query: string) => void;
1729
+ /** Trigger character */
1730
+ trigger?: string;
1731
+ /** Custom suggestion renderer */
1732
+ renderSuggestion?: (item: NiceMentionSuggestion) => default_2.ReactNode;
1733
+ placeholder?: string;
1734
+ rows?: number;
1735
+ }
1736
+
1737
+ /** A suggestion item displayed in the {@link NiceMention} dropdown. */
1738
+ export declare interface NiceMentionSuggestion {
1739
+ key: string;
1740
+ label: string;
1741
+ icon?: default_2.ReactNode;
1742
+ [k: string]: unknown;
1743
+ }
1744
+
1745
+ export declare const NiceMultiColumnComboBox: default_2.ForwardRefExoticComponent<NiceMultiColumnComboBoxProps & default_2.RefAttributes<HTMLDivElement>>;
1746
+
1747
+ /** A column definition for the {@link NiceMultiColumnComboBox} dropdown grid. */
1748
+ declare interface NiceMultiColumnComboBoxColumn {
1749
+ field: string;
1750
+ header: string;
1751
+ width?: number | string;
1752
+ }
1753
+
1754
+ /** Props for the {@link NiceMultiColumnComboBox} component — a combo box whose dropdown shows data in columns (like a mini-grid). */
1755
+ export declare interface NiceMultiColumnComboBoxProps extends NiceBaseProps {
1756
+ columns: NiceMultiColumnComboBoxColumn[];
1757
+ data: Record<string, any>[];
1758
+ value?: string;
1759
+ onChange?: (value: string) => void;
1760
+ displayExpr?: string;
1761
+ valueExpr?: string;
1762
+ placeholder?: string;
1763
+ disabled?: boolean;
1764
+ size?: NiceSize;
1765
+ filterable?: boolean;
1766
+ }
1767
+
1768
+ export declare const NiceNumberInput: default_2.ForwardRefExoticComponent<NiceNumberInputProps & default_2.RefAttributes<HTMLInputElement>>;
1769
+
1770
+ /** Props for the {@link NiceNumberInput} component — a numeric field with stepper and precision control. */
1771
+ export declare interface NiceNumberInputProps extends NiceFormFieldProps {
1772
+ /** Controlled numeric value (`null` = empty). */
1773
+ value?: number | null;
1774
+ /** Fires with the new value or `null` when cleared. */
1775
+ onChange?: (value: number | null) => void;
1776
+ /** Native blur handler. */
1777
+ onBlur?: (e: default_2.FocusEvent<HTMLInputElement>) => void;
1778
+ /** Native keydown handler. */
1779
+ onKeyDown?: (e: default_2.KeyboardEvent<HTMLInputElement>) => void;
1780
+ /** Placeholder text. */
1781
+ placeholder?: string;
1782
+ /** Minimum allowed value. */
1783
+ min?: number;
1784
+ /** Maximum allowed value. */
1785
+ max?: number;
1786
+ /** Increment/decrement step (default `1`). */
1787
+ step?: number;
1788
+ /** Decimal precision (number of fraction digits). */
1789
+ precision?: number;
1790
+ /** Prefix content (e.g. currency symbol). */
1791
+ prefix?: default_2.ReactNode;
1792
+ /** Suffix content (e.g. unit). */
1793
+ suffix?: default_2.ReactNode;
1794
+ /** Show ▲/▼ stepper buttons (default `true`). */
1795
+ showStepper?: boolean;
1796
+ }
1797
+
1798
+ /** A single option displayed in selects, radio-groups, autocompletes and similar list-based editors. */
1799
+ declare type NiceOption<T = string> = {
1800
+ /** The option's backing value. */
1801
+ value: T;
1802
+ /** Display text shown to the user. */
1803
+ label: string;
1804
+ /** When `true` the option cannot be selected. */
1805
+ disabled?: boolean;
1806
+ /** Optional icon rendered before the label. */
1807
+ icon?: React.ReactNode;
1808
+ /** Secondary description text. */
1809
+ description?: string;
1810
+ /** Grouping key for grouped dropdowns. */
1811
+ group?: string;
1812
+ };
1813
+
1814
+ export declare const NicePasswordInput: default_2.ForwardRefExoticComponent<NicePasswordInputProps & default_2.RefAttributes<HTMLInputElement>>;
1815
+
1816
+ /** Props for the {@link NicePasswordInput} component — a password field with visibility toggle and strength meter. */
1817
+ export declare interface NicePasswordInputProps extends NiceFormFieldProps {
1818
+ value?: string;
1819
+ onChange?: (value: string) => void;
1820
+ onBlur?: (e: default_2.FocusEvent<HTMLInputElement>) => void;
1821
+ onKeyDown?: (e: default_2.KeyboardEvent<HTMLInputElement>) => void;
1822
+ placeholder?: string;
1823
+ maxLength?: number;
1824
+ /** Show visibility toggle button (default: true) */
1825
+ showToggle?: boolean;
1826
+ /** Show password strength meter (default: false) */
1827
+ showStrength?: boolean;
1828
+ /** Custom strength rules — overrides default rules */
1829
+ strengthRules?: NicePasswordRule[];
1830
+ autoFocus?: boolean;
1831
+ autoComplete?: string;
1832
+ }
1833
+
1834
+ /** A validation rule for the password strength meter in {@link NicePasswordInput}. */
1835
+ declare interface NicePasswordRule {
1836
+ /** Rule identifier */
1837
+ id: string;
1838
+ /** Human-readable rule label */
1839
+ label: string;
1840
+ /** Test function — returns true if the rule is satisfied */
1841
+ test: (value: string) => boolean;
1842
+ }
1843
+
1844
+ /**
1845
+ * {@link NicePDFAnnotationEditor} — PDF viewer shell with annotation overlay.
1846
+ * PDF rendering is external (expects an iframe/embed or a custom renderer).
1847
+ * This component provides the toolbar, annotation layer, and page navigation.
1848
+ */
1849
+ export declare const NicePDFAnnotationEditor: default_2.ForwardRefExoticComponent<NicePDFAnnotationEditorProps & default_2.RefAttributes<HTMLDivElement>>;
1850
+
1851
+ /** Props for the {@link NicePDFAnnotationEditor} component. */
1852
+ export declare interface NicePDFAnnotationEditorProps extends NiceFormFieldProps {
1853
+ /** URL or data URL of the PDF document. */
1854
+ src: string;
1855
+ /** Current annotations. */
1856
+ annotations?: PDFAnnotation[];
1857
+ /** Fires when annotations change. */
1858
+ onAnnotationsChange?: (annotations: PDFAnnotation[]) => void;
1859
+ /** Active tool. */
1860
+ activeTool?: AnnotationTool_2 | null;
1861
+ /** Fires when user switches tool. */
1862
+ onToolChange?: (tool: AnnotationTool_2 | null) => void;
1863
+ /** Current page number (1-based). */
1864
+ currentPage?: number;
1865
+ /** Fires on page change. */
1866
+ onPageChange?: (page: number) => void;
1867
+ /** Total pages (provided externally if PDF parsing is done elsewhere). */
1868
+ totalPages?: number;
1869
+ /** Default annotation color. */
1870
+ defaultColor?: string;
1871
+ /** Available tools. */
1872
+ tools?: AnnotationTool_2[];
1873
+ /** Current author name for new annotations. */
1874
+ author?: string;
1875
+ /** Zoom level (1 = 100%). */
1876
+ zoom?: number;
1877
+ /** Fires on zoom change. */
1878
+ onZoomChange?: (zoom: number) => void;
1879
+ /** Fires when an annotation is clicked. */
1880
+ onAnnotationClick?: (annotation: PDFAnnotation) => void;
1881
+ /** Fires when an annotation is deleted. */
1882
+ onAnnotationDelete?: (id: string) => void;
1883
+ }
1884
+
1885
+ /**
1886
+ * {@link NicePhoneInput} — Phone number input with country code selector, masking, and E.164 formatting.
1887
+ */
1888
+ export declare const NicePhoneInput: default_2.ForwardRefExoticComponent<NicePhoneInputProps & default_2.RefAttributes<HTMLDivElement>>;
1889
+
1890
+ /** Props for the {@link NicePhoneInput} component. */
1891
+ export declare interface NicePhoneInputProps extends NiceFormFieldProps {
1892
+ /** Controlled phone value. */
1893
+ value?: PhoneValue;
1894
+ /** Fires on value change with parsed phone value. */
1895
+ onChange?: (value: PhoneValue) => void;
1896
+ /** Available country codes. */
1897
+ countryCodes?: PhoneCountryCode[];
1898
+ /** Default country code (ISO alpha-2, e.g. "PL"). */
1899
+ defaultCountry?: string;
1900
+ /** Placeholder for the number part. */
1901
+ placeholder?: string;
1902
+ /** Whether to show the country flag emoji. */
1903
+ showFlag?: boolean;
1904
+ /** Whether to validate as E.164 on blur. */
1905
+ validateE164?: boolean;
1906
+ /** Fires with the raw input event. */
1907
+ onBlur?: (e: default_2.FocusEvent<HTMLInputElement>) => void;
1908
+ }
1909
+
1910
+ export declare const NicePickList: <T = any>(props: NicePickListProps<T> & default_2.RefAttributes<HTMLDivElement>) => default_2.ReactElement | null;
1911
+
1912
+ /** Props for the {@link NicePickList} component — a dual-list control for moving items between source and target. */
1913
+ export declare interface NicePickListProps<T = any> extends NiceBaseProps {
1914
+ /** Items in the source list */
1915
+ source: T[];
1916
+ /** Items in the target list */
1917
+ target: T[];
1918
+ /** Called when items move between lists */
1919
+ onChange: (source: T[], target: T[]) => void;
1920
+ /** Unique key extractor */
1921
+ keyField?: string;
1922
+ /** Label extractor */
1923
+ labelField?: string;
1924
+ /** Custom item renderer */
1925
+ renderItem?: (item: T) => default_2.ReactNode;
1926
+ /** Enable filtering/search */
1927
+ filterable?: boolean;
1928
+ /** Source list header */
1929
+ sourceHeader?: default_2.ReactNode;
1930
+ /** Target list header */
1931
+ targetHeader?: default_2.ReactNode;
1932
+ disabled?: boolean;
1933
+ size?: NiceSize;
1934
+ }
1935
+
1936
+ /**
1937
+ * {@link NicePinCodeInput} — PIN code entry with individual digit boxes,
1938
+ * optional numeric keypad, masking, and auto-submit.
1939
+ */
1940
+ export declare const NicePinCodeInput: default_2.ForwardRefExoticComponent<NicePinCodeInputProps & default_2.RefAttributes<HTMLDivElement>>;
1941
+
1942
+ /** Props for the {@link NicePinCodeInput} component. */
1943
+ export declare interface NicePinCodeInputProps extends NiceFormFieldProps {
1944
+ /** Current PIN value. */
1945
+ value?: string;
1946
+ /** Fires when value changes. */
1947
+ onChange?: (value: string) => void;
1948
+ /** Fires when PIN is fully entered. */
1949
+ onComplete?: (pin: string) => void;
1950
+ /** Number of PIN digits. */
1951
+ length?: number;
1952
+ /** Whether to mask digits (show dots). */
1953
+ masked?: boolean;
1954
+ /** Whether to show a numeric keypad below the input. */
1955
+ showKeypad?: boolean;
1956
+ /** Whether to auto-submit when all digits are filled. */
1957
+ autoSubmit?: boolean;
1958
+ /** Error shake animation trigger (toggle to replay). */
1959
+ shake?: boolean;
1960
+ /** Placeholder character. */
1961
+ placeholderChar?: string;
1962
+ }
1963
+
1964
+ export declare const NiceRadioGroup: default_2.FC<NiceRadioGroupProps>;
1965
+
1966
+ /** Props for the {@link NiceRadioGroup} component — a set of mutually exclusive radio options. */
1967
+ export declare interface NiceRadioGroupProps extends NiceFormFieldProps {
1968
+ /** Available options. */
1969
+ options: NiceOption[];
1970
+ /** Currently selected value. */
1971
+ value?: string;
1972
+ /** Called when the selection changes. */
1973
+ onChange?: (value: string) => void;
1974
+ /** Arrange options horizontally or vertically. */
1975
+ direction?: 'horizontal' | 'vertical';
1976
+ }
1977
+
1978
+ export declare const NiceRangeSlider: default_2.FC<NiceRangeSliderProps>;
1979
+
1980
+ /** Props for the {@link NiceRangeSlider} component — a dual-thumb slider for selecting a numeric range. */
1981
+ export declare interface NiceRangeSliderProps extends NiceFormFieldProps {
1982
+ /** Minimum track value. */
1983
+ min?: number;
1984
+ /** Maximum track value. */
1985
+ max?: number;
1986
+ /** Step increment. */
1987
+ step?: number;
1988
+ /** Start (lower) thumb value. */
1989
+ startValue: number;
1990
+ /** End (upper) thumb value. */
1991
+ endValue: number;
1992
+ /** Called when either thumb moves. */
1993
+ onChange: (start: number, end: number) => void;
1994
+ /** Show value labels at each thumb. */
1995
+ showLabels?: boolean;
1996
+ /** Custom label formatter. */
1997
+ formatLabel?: (value: number) => string;
1998
+ }
1999
+
2000
+ export declare const NiceRating: default_2.ForwardRefExoticComponent<NiceRatingProps & default_2.RefAttributes<HTMLDivElement>>;
2001
+
2002
+ /** Props for the {@link NiceRating} component — a star/icon rating input with half-step support. */
2003
+ export declare interface NiceRatingProps extends NiceBaseProps {
2004
+ /** Current value (0 to count) */
2005
+ value?: number;
2006
+ onChange?: (value: number) => void;
2007
+ /** Number of stars/icons */
2008
+ count?: number;
2009
+ /** Allow half-star selection */
2010
+ half?: boolean;
2011
+ /** Read-only display */
2012
+ readOnly?: boolean;
2013
+ disabled?: boolean;
2014
+ size?: NiceSize;
2015
+ label?: string;
2016
+ /** Custom icon render (receives filled state) */
2017
+ icon?: (filled: 'full' | 'half' | 'empty') => default_2.ReactNode;
2018
+ /** Name for form submission */
2019
+ name?: string;
2020
+ error?: string;
2021
+ }
2022
+
2023
+ /**
2024
+ * {@link NiceScannerControl} — QR/barcode scanner UI with camera preview placeholder,
2025
+ * manual text entry, beep feedback, and scan history.
2026
+ */
2027
+ export declare const NiceScannerControl: default_2.ForwardRefExoticComponent<NiceScannerControlProps & default_2.RefAttributes<HTMLDivElement>>;
2028
+
2029
+ /** Props for the {@link NiceScannerControl} component. */
2030
+ export declare interface NiceScannerControlProps extends NiceFormFieldProps {
2031
+ /** Current input mode. */
2032
+ mode?: ScannerMode;
2033
+ /** Fires when a code is scanned/entered. */
2034
+ onScan?: (result: ScanResult) => void;
2035
+ /** Fires when mode changes. */
2036
+ onModeChange?: (mode: ScannerMode) => void;
2037
+ /** Whether to play a beep sound on successful scan. */
2038
+ beepOnScan?: boolean;
2039
+ /** Beep frequency in Hz. */
2040
+ beepFrequency?: number;
2041
+ /** Beep duration in ms. */
2042
+ beepDuration?: number;
2043
+ /** Placeholder for manual input. */
2044
+ placeholder?: string;
2045
+ /** History of recent scans. */
2046
+ scanHistory?: ScanResult[];
2047
+ /** Whether to show scan history. */
2048
+ showHistory?: boolean;
2049
+ /** Max history entries to display. */
2050
+ maxHistory?: number;
2051
+ /** Whether to auto-focus the manual input. */
2052
+ autoFocus?: boolean;
2053
+ /** Note: Actual camera barcode detection requires a library like `@nicetoDev/scanner-adapter`.
2054
+ * This component provides the UI shell and manual input. Camera mode renders a placeholder
2055
+ * with an external `onCameraFrame` callback. */
2056
+ onCameraFrame?: (video: HTMLVideoElement) => void;
2057
+ }
2058
+
2059
+ export declare const NiceSelect: default_2.ForwardRefExoticComponent<NiceSelectProps & default_2.RefAttributes<HTMLButtonElement>>;
2060
+
2061
+ /** Props for the {@link NiceSelect} component. */
2062
+ export declare interface NiceSelectProps extends NiceFormFieldProps {
2063
+ /** Static options array. Merged with (or overridden by) `optionsSource`. */
2064
+ options?: NiceOption[];
2065
+ value?: string | string[];
2066
+ onChange?: (value: string | string[]) => void;
2067
+ placeholder?: string;
2068
+ multiple?: boolean;
2069
+ searchable?: boolean;
2070
+ clearable?: boolean;
2071
+ emptyText?: string;
2072
+ maxHeight?: number;
2073
+ /**
2074
+ * Load options from a data source.
2075
+ * When provided, options are fetched from this source using
2076
+ * `valueField` and `labelField` to map records to NiceOption[].
2077
+ */
2078
+ optionsSource?: NiceDataSource;
2079
+ /** Field used as option value. Default: keyField of the data source. */
2080
+ valueField?: string;
2081
+ /** Field used as option label. Default: 'name'. */
2082
+ labelField?: string;
2083
+ /** Enable virtual scrolling for large option sets. */
2084
+ virtualScroll?: boolean;
2085
+ /** Fixed height for each option row (default 36). Used with virtualScroll. */
2086
+ optionHeight?: number;
2087
+ /** Async search callback. Called on search input change. Return options via `options` prop update. */
2088
+ onSearch?: (query: string) => void;
2089
+ /** Loading state for async search. */
2090
+ loading?: boolean;
2091
+ /** Custom render function for option items. */
2092
+ renderOption?: (option: NiceOption, isSelected: boolean) => default_2.ReactNode;
2093
+ }
2094
+
2095
+ export declare const NiceSignature: default_2.ForwardRefExoticComponent<NiceSignatureProps & default_2.RefAttributes<NiceSignatureRef>>;
2096
+
2097
+ declare interface NiceSignatureData {
2098
+ /** Strokes */
2099
+ strokes: NiceSignatureStroke[];
2100
+ /** Width at time of creation */
2101
+ width: number;
2102
+ /** Height at time of creation */
2103
+ height: number;
2104
+ /** Timestamp */
2105
+ timestamp: number;
2106
+ }
2107
+
2108
+ declare type NiceSignatureOutput = 'png' | 'jpeg' | 'svg';
2109
+
2110
+ export declare const NiceSignaturePad: ForwardRefExoticComponent<NiceSignaturePadProps & RefAttributes<HTMLDivElement>>;
2111
+
2112
+ /** Props for the {@link NiceSignaturePad} component — a canvas-based digital signature capture pad. */
2113
+ export declare interface NiceSignaturePadProps extends NiceBaseProps {
2114
+ /** Signature image (data URL) — controlled value */
2115
+ value?: string | null;
2116
+ onChange?: (dataUrl: string | null) => void;
2117
+ penColor?: string;
2118
+ penWidth?: number;
2119
+ backgroundColor?: string;
2120
+ width?: number;
2121
+ height?: number;
2122
+ size?: NiceSize;
2123
+ disabled?: boolean;
2124
+ readOnly?: boolean;
2125
+ showClear?: boolean;
2126
+ showUndo?: boolean;
2127
+ label?: string;
2128
+ exportFormat?: 'image/png' | 'image/jpeg' | 'image/svg+xml';
2129
+ }
2130
+
2131
+ declare interface NiceSignaturePoint {
2132
+ x: number;
2133
+ y: number;
2134
+ time: number;
2135
+ pressure?: number;
2136
+ }
2137
+
2138
+ export declare interface NiceSignatureProps {
2139
+ /** Current signature data */
2140
+ value?: NiceSignatureData | null;
2141
+ /** Value change callback */
2142
+ onChange?: (data: NiceSignatureData | null) => void;
2143
+ /** Width */
2144
+ width?: number | string;
2145
+ /** Height */
2146
+ height?: number;
2147
+ /** Pen color */
2148
+ penColor?: string;
2149
+ /** Pen width */
2150
+ penWidth?: number;
2151
+ /** Min pen width (for pressure sensitivity) */
2152
+ minWidth?: number;
2153
+ /** Max pen width (for pressure sensitivity) */
2154
+ maxWidth?: number;
2155
+ /** Background color */
2156
+ backgroundColor?: string;
2157
+ /** Placeholder text */
2158
+ placeholder?: string;
2159
+ /** Show clear button */
2160
+ showClearButton?: boolean;
2161
+ /** Show undo button */
2162
+ showUndoButton?: boolean;
2163
+ /** Show color picker */
2164
+ showColorPicker?: boolean;
2165
+ /** Show size slider */
2166
+ showSizeSlider?: boolean;
2167
+ /** Velocity filter weight (smoothness) */
2168
+ velocityFilterWeight?: number;
2169
+ /** Throttle (ms between points) */
2170
+ throttle?: number;
2171
+ /** Disabled state */
2172
+ disabled?: boolean;
2173
+ /** Read only (shows signature but can't edit) */
2174
+ readOnly?: boolean;
2175
+ /** On begin stroke */
2176
+ onBegin?: () => void;
2177
+ /** On end stroke */
2178
+ onEnd?: () => void;
2179
+ /** Additional CSS class */
2180
+ className?: string;
2181
+ /** Test ID */
2182
+ 'data-testid'?: string;
2183
+ }
2184
+
2185
+ declare interface NiceSignatureRef {
2186
+ /** Clear signature */
2187
+ clear: () => void;
2188
+ /** Undo last stroke */
2189
+ undo: () => void;
2190
+ /** Check if signature is empty */
2191
+ isEmpty: () => boolean;
2192
+ /** Get signature data */
2193
+ getData: () => NiceSignatureData | null;
2194
+ /** Set signature data */
2195
+ setData: (data: NiceSignatureData) => void;
2196
+ /** Get as data URL */
2197
+ toDataURL: (type?: NiceSignatureOutput, quality?: number) => string;
2198
+ /** Get as Blob */
2199
+ toBlob: (type?: NiceSignatureOutput, quality?: number) => Promise<Blob | null>;
2200
+ /** Get as SVG string */
2201
+ toSVG: () => string;
2202
+ /** Get canvas element */
2203
+ getCanvas: () => HTMLCanvasElement | null;
2204
+ }
2205
+
2206
+ declare interface NiceSignatureStroke {
2207
+ points: NiceSignaturePoint[];
2208
+ color: string;
2209
+ width: number;
2210
+ }
2211
+
2212
+ /** T-shirt sizing used across all components for consistent visual density. */
2213
+ declare type NiceSize = 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl';
2214
+
2215
+ export declare const NiceSlider: default_2.ForwardRefExoticComponent<NiceSliderProps & default_2.RefAttributes<HTMLInputElement>>;
2216
+
2217
+ /** Props for the {@link NiceSlider} component — a single-thumb range slider for numeric input. */
2218
+ export declare interface NiceSliderProps extends NiceFormFieldProps {
2219
+ /** Current value. */
2220
+ value?: number;
2221
+ /** Called when the value changes. */
2222
+ onChange?: (value: number) => void;
2223
+ /** Minimum value. */
2224
+ min?: number;
2225
+ /** Maximum value. */
2226
+ max?: number;
2227
+ /** Step increment. */
2228
+ step?: number;
2229
+ /** Display the current numeric value next to the thumb. */
2230
+ showValue?: boolean;
2231
+ /** Display min/max labels at the ends of the track. */
2232
+ showMinMax?: boolean;
2233
+ /** Custom formatter for the displayed value. */
2234
+ formatValue?: (v: number) => string;
2235
+ /** Show tick marks on the slider track. */
2236
+ showTicks?: boolean;
2237
+ }
2238
+
2239
+ /** Sort direction for data source queries. */
2240
+ declare type NiceSortDirection = 'asc' | 'desc';
2241
+
2242
+ /** A single sort expression: field name + direction. */
2243
+ declare interface NiceSortExpression {
2244
+ field: string;
2245
+ direction: NiceSortDirection;
2246
+ }
2247
+
2248
+ export declare const NiceTagBox: default_2.FC<NiceTagBoxProps>;
2249
+
2250
+ /** Props for the {@link NiceTagBox} component — a multi-select input that displays selected items as tags/chips. */
2251
+ export declare interface NiceTagBoxProps extends NiceFormFieldProps {
2252
+ /** Available options. */
2253
+ options: NiceOption[];
2254
+ /** Array of selected values. */
2255
+ value: string[];
2256
+ /** Called when the selection changes. */
2257
+ onChange: (value: string[]) => void;
2258
+ /** Enable search/filter within the dropdown. */
2259
+ searchable?: boolean;
2260
+ /** Show a clear-all button. */
2261
+ clearable?: boolean;
2262
+ /** Maximum number of tags allowed. */
2263
+ maxTags?: number;
2264
+ /** Allow the user to type custom values not in the options list. */
2265
+ allowCustom?: boolean;
2266
+ /** Input placeholder. */
2267
+ placeholder?: string;
2268
+ /** Alias for options — array of string suggestions. */
2269
+ suggestions?: string[];
2270
+ }
2271
+
2272
+ /**
2273
+ * {@link NiceTaxRatePicker} — VAT/tax rate selector with country-specific defaults.
2274
+ * Supports Polish rates out-of-the-box, custom rates per country, and displays
2275
+ * percentage values.
2276
+ */
2277
+ export declare const NiceTaxRatePicker: default_2.ForwardRefExoticComponent<NiceTaxRatePickerProps & default_2.RefAttributes<HTMLDivElement>>;
2278
+
2279
+ /** Props for the {@link NiceTaxRatePicker} component. */
2280
+ export declare interface NiceTaxRatePickerProps extends NiceFormFieldProps {
2281
+ /** Selected tax rate id. */
2282
+ value?: string;
2283
+ /** Fires when selection changes. */
2284
+ onChange?: (rateId: string, rate: TaxRate) => void;
2285
+ /** Available tax rates. If empty, defaults to Polish VAT rates. */
2286
+ rates?: TaxRate[];
2287
+ /** Country code filter. */
2288
+ countryCode?: string;
2289
+ /** Placeholder text. */
2290
+ placeholder?: string;
2291
+ /** Whether to show rate percentage in the label. */
2292
+ showPercentage?: boolean;
2293
+ }
2294
+
2295
+ export declare const NiceTextArea: default_2.ForwardRefExoticComponent<NiceTextAreaProps & default_2.RefAttributes<HTMLTextAreaElement>>;
2296
+
2297
+ export declare interface NiceTextAreaProps extends NiceFormFieldProps {
2298
+ value?: string;
2299
+ defaultValue?: string;
2300
+ onChange?: (value: string) => void;
2301
+ onBlur?: (e: default_2.FocusEvent<HTMLTextAreaElement>) => void;
2302
+ onKeyDown?: (e: default_2.KeyboardEvent<HTMLTextAreaElement>) => void;
2303
+ placeholder?: string;
2304
+ rows?: number;
2305
+ maxLength?: number;
2306
+ resize?: 'none' | 'vertical' | 'horizontal' | 'both';
2307
+ autoFocus?: boolean;
2308
+ showCount?: boolean;
2309
+ }
2310
+
2311
+ export declare const NiceTextInput: default_2.ForwardRefExoticComponent<NiceTextInputProps & default_2.RefAttributes<HTMLInputElement>>;
2312
+
2313
+ /** Props for the {@link NiceTextInput} component. */
2314
+ export declare interface NiceTextInputProps extends NiceFormFieldProps {
2315
+ /** Controlled input value. */
2316
+ value?: string;
2317
+ /** Uncontrolled default value. */
2318
+ defaultValue?: string;
2319
+ /** Fires on every value change with the new string value. */
2320
+ onChange?: (value: string) => void;
2321
+ /** Native blur event handler. */
2322
+ onBlur?: (e: default_2.FocusEvent<HTMLInputElement>) => void;
2323
+ /** Native keydown event handler. */
2324
+ onKeyDown?: (e: default_2.KeyboardEvent<HTMLInputElement>) => void;
2325
+ /** Placeholder text. */
2326
+ placeholder?: string;
2327
+ /** HTML input type. */
2328
+ type?: 'text' | 'email' | 'password' | 'search' | 'tel' | 'url';
2329
+ /** Maximum character count. */
2330
+ maxLength?: number;
2331
+ /** Content rendered before the input (e.g. icon). */
2332
+ prefix?: default_2.ReactNode;
2333
+ /** Content rendered after the input (e.g. unit label). */
2334
+ suffix?: default_2.ReactNode;
2335
+ /** Shows a clear (×) button when the input has a value. */
2336
+ clearable?: boolean;
2337
+ /** Auto-focuses the input on mount. */
2338
+ autoFocus?: boolean;
2339
+ /** Visual variant. */
2340
+ variant?: 'outlined' | 'filled' | 'underlined' | string;
2341
+ }
2342
+
2343
+ export declare const NiceTimePicker: default_2.ForwardRefExoticComponent<NiceTimePickerProps & default_2.RefAttributes<HTMLDivElement>>;
2344
+
2345
+ /** Props for the {@link NiceTimePicker} component — a time-only picker with hour/minute/second spinners. */
2346
+ export declare interface NiceTimePickerProps extends NiceFormFieldProps {
2347
+ /** Time string in HH:mm or HH:mm:ss format */
2348
+ value?: string;
2349
+ onChange?: (value: string) => void;
2350
+ onBlur?: (e: default_2.FocusEvent) => void;
2351
+ /** Display format — 12h shows AM/PM toggle, 24h shows 0–23 */
2352
+ hourFormat?: '12' | '24';
2353
+ /** Minute increment step */
2354
+ minuteStep?: number;
2355
+ /** Show seconds input */
2356
+ showSeconds?: boolean;
2357
+ /** Minimum time (HH:mm) */
2358
+ min?: string;
2359
+ /** Maximum time (HH:mm) */
2360
+ max?: string;
2361
+ /** Show clear button */
2362
+ clearable?: boolean;
2363
+ }
2364
+
2365
+ export declare const NiceToggle: default_2.ForwardRefExoticComponent<NiceToggleProps & default_2.RefAttributes<HTMLInputElement>>;
2366
+
2367
+ /** Props for the {@link NiceToggle} component — a boolean switch/toggle. */
2368
+ export declare interface NiceToggleProps extends NiceBaseProps {
2369
+ /** Toggle label. */
2370
+ label?: default_2.ReactNode;
2371
+ /** Controlled on/off state. */
2372
+ checked?: boolean;
2373
+ /** Called on toggle. */
2374
+ onChange?: (checked: boolean) => void;
2375
+ /** Disables the toggle. */
2376
+ disabled?: boolean;
2377
+ /** Visual size. */
2378
+ size?: NiceSize;
2379
+ /** HTML name. */
2380
+ name?: string;
2381
+ /** Show keyboard shortcuts hint. */
2382
+ showKeyboardHints?: boolean;
2383
+ }
2384
+
2385
+ export declare const NiceTransferList: default_2.FC<NiceTransferListProps>;
2386
+
2387
+ declare interface NiceTransferListItem {
2388
+ key: string;
2389
+ label: string;
2390
+ disabled?: boolean;
2391
+ group?: string;
2392
+ }
2393
+
2394
+ export declare interface NiceTransferListProps {
2395
+ /** All available items */
2396
+ dataSource: NiceTransferListItem[];
2397
+ /** Keys of items in the right (target) list */
2398
+ targetKeys?: string[];
2399
+ /** Controlled selection */
2400
+ selectedKeys?: string[];
2401
+ /** Callback when target keys change */
2402
+ onChange?: (targetKeys: string[], direction: 'left' | 'right', moveKeys: string[]) => void;
2403
+ /** Callback when selection changes */
2404
+ onSelectChange?: (sourceSelectedKeys: string[], targetSelectedKeys: string[]) => void;
2405
+ /** Custom render for items */
2406
+ render?: (item: NiceTransferListItem) => default_2.ReactNode;
2407
+ /** Custom render for list title */
2408
+ titles?: [default_2.ReactNode, default_2.ReactNode];
2409
+ /** Enable searching */
2410
+ showSearch?: boolean;
2411
+ /** Search placeholder */
2412
+ searchPlaceholder?: string;
2413
+ /** Filter function for search */
2414
+ filterOption?: (inputValue: string, item: NiceTransferListItem) => boolean;
2415
+ /** Enable select all */
2416
+ showSelectAll?: boolean;
2417
+ /** Disabled state */
2418
+ disabled?: boolean;
2419
+ /** Enable drag and drop transfer */
2420
+ draggable?: boolean;
2421
+ /** One-way mode (items can only move to target) */
2422
+ oneWay?: boolean;
2423
+ /** Custom operations buttons */
2424
+ operations?: [default_2.ReactNode, default_2.ReactNode];
2425
+ /** Group items by group field */
2426
+ showGroups?: boolean;
2427
+ /** Extra class name */
2428
+ className?: string;
2429
+ /** Inline styles */
2430
+ style?: default_2.CSSProperties;
2431
+ /** Height of the lists */
2432
+ listHeight?: number;
2433
+ /** Test ID */
2434
+ 'data-testid'?: string;
2435
+ }
2436
+
2437
+ export declare const NiceTreeSelect: default_2.ForwardRefExoticComponent<NiceTreeSelectProps & default_2.RefAttributes<HTMLDivElement>>;
2438
+
2439
+ /** A node in the tree hierarchy for {@link NiceTreeSelect}. */
2440
+ declare interface NiceTreeSelectNode {
2441
+ key: string | number;
2442
+ label: string;
2443
+ children?: NiceTreeSelectNode[];
2444
+ disabled?: boolean;
2445
+ icon?: default_2.ReactNode;
2446
+ }
2447
+
2448
+ /** Props for the {@link NiceTreeSelect} component — a dropdown that lets the user pick from a tree hierarchy. */
2449
+ export declare interface NiceTreeSelectProps extends NiceFormFieldProps {
2450
+ nodes: NiceTreeSelectNode[];
2451
+ /** Selected value(s) */
2452
+ value?: string | number | (string | number)[];
2453
+ onChange?: (value: string | number | (string | number)[]) => void;
2454
+ /** Allow multiple selection */
2455
+ multiple?: boolean;
2456
+ /** Allow searching/filtering nodes */
2457
+ searchable?: boolean;
2458
+ placeholder?: string;
2459
+ /** Only allow selection of leaf nodes */
2460
+ selectableLeafsOnly?: boolean;
2461
+ clearable?: boolean;
2462
+ }
2463
+
2464
+ /**
2465
+ * {@link NiceVatInput} — VAT/NIP number input with country selector,
2466
+ * prefix auto-prepend, pattern validation, and optional VIES verification.
2467
+ */
2468
+ export declare const NiceVatInput: default_2.ForwardRefExoticComponent<NiceVatInputProps & default_2.RefAttributes<HTMLDivElement>>;
2469
+
2470
+ /** Props for the {@link NiceVatInput} component. */
2471
+ export declare interface NiceVatInputProps extends NiceFormFieldProps {
2472
+ /** Current VAT number value (with or without prefix). */
2473
+ value?: string;
2474
+ /** Fires when value changes. */
2475
+ onChange?: (value: string, isValid: boolean) => void;
2476
+ /** Selected country code (ISO 3166-1 alpha-2). */
2477
+ countryCode?: string;
2478
+ /** Fires when country changes. */
2479
+ onCountryChange?: (code: string) => void;
2480
+ /** Custom country configs. */
2481
+ countries?: VatCountryConfig[];
2482
+ /** Whether to show the country selector. */
2483
+ showCountrySelector?: boolean;
2484
+ /** Whether to auto-prepend VAT prefix. */
2485
+ autoPrefixVat?: boolean;
2486
+ /** External validation result. */
2487
+ validationResult?: {
2488
+ valid: boolean;
2489
+ companyName?: string;
2490
+ error?: string;
2491
+ } | null;
2492
+ /** Fires when user requests online validation (e.g. VIES). */
2493
+ onValidateRequest?: (vatNumber: string, countryCode: string) => void;
2494
+ /** Placeholder override. */
2495
+ placeholder?: string;
2496
+ }
2497
+
2498
+ /**
2499
+ * {@link NiceWiki} — Wiki module with page tree sidebar, rich content area,
2500
+ * inline editor (edit mode), page create/delete, and version history hooks.
2501
+ */
2502
+ export declare const NiceWiki: default_2.ForwardRefExoticComponent<NiceWikiProps & default_2.RefAttributes<HTMLDivElement>>;
2503
+
2504
+ /** Props for the {@link NiceWiki} component. */
2505
+ export declare interface NiceWikiProps extends NiceFormFieldProps {
2506
+ /** Page tree. */
2507
+ pages: WikiPage[];
2508
+ /** Currently selected page id. */
2509
+ selectedPageId?: string | number;
2510
+ /** Content of the currently selected page (HTML or Markdown). */
2511
+ content?: string;
2512
+ /** Content format. */
2513
+ contentFormat?: 'html' | 'markdown';
2514
+ /** Whether the editor is in edit mode. */
2515
+ editing?: boolean;
2516
+ /** Fires when a page is selected. */
2517
+ onPageSelect?: (page: WikiPage) => void;
2518
+ /** Fires when content changes (in edit mode). */
2519
+ onContentChange?: (content: string) => void;
2520
+ /** Fires when save is clicked. */
2521
+ onSave?: (pageId: string | number, content: string) => void;
2522
+ /** Fires when a new page is created. */
2523
+ onCreatePage?: (parentId: string | number | null, title: string) => void;
2524
+ /** Fires when a page is deleted. */
2525
+ onDeletePage?: (pageId: string | number) => void;
2526
+ /** Fires when edit mode is toggled. */
2527
+ onEditToggle?: (editing: boolean) => void;
2528
+ /** Fires when version history is requested. */
2529
+ onVersionHistory?: (pageId: string | number) => void;
2530
+ /** Width of the sidebar in px. */
2531
+ sidebarWidth?: number;
2532
+ /** Whether the sidebar is collapsed. */
2533
+ sidebarCollapsed?: boolean;
2534
+ /** Fires on sidebar toggle. */
2535
+ onSidebarToggle?: (collapsed: boolean) => void;
2536
+ /** Whether to show search in sidebar. */
2537
+ searchable?: boolean;
2538
+ /** Fires on search. */
2539
+ onSearch?: (query: string) => void;
2540
+ }
2541
+
2542
+ /** A single PDF annotation. */
2543
+ declare interface PDFAnnotation {
2544
+ id: string;
2545
+ tool: AnnotationTool_2;
2546
+ page: number;
2547
+ /** Coordinates relative to page (0-1 normalized). */
2548
+ x: number;
2549
+ y: number;
2550
+ width?: number;
2551
+ height?: number;
2552
+ color?: string;
2553
+ text?: string;
2554
+ author?: string;
2555
+ createdAt?: string;
2556
+ /** Free-form path points for freehand tool. */
2557
+ points?: Array<{
2558
+ x: number;
2559
+ y: number;
2560
+ }>;
2561
+ }
2562
+
2563
+ /** Country phone prefix entry. */
2564
+ declare interface PhoneCountryCode {
2565
+ code: string;
2566
+ dialCode: string;
2567
+ name: string;
2568
+ mask?: string;
2569
+ }
2570
+
2571
+ /** Parsed phone value. */
2572
+ declare interface PhoneValue {
2573
+ countryCode?: string;
2574
+ dialCode?: string;
2575
+ number?: string;
2576
+ /** Full E.164 formatted number (e.g. "+48123456789"). */
2577
+ e164?: string;
2578
+ }
2579
+
2580
+ declare interface RectangleAnnotation extends AnnotationBase {
2581
+ tool: 'rectangle';
2582
+ }
2583
+
2584
+ /** Scanner input mode. */
2585
+ declare type ScannerMode = 'camera' | 'manual';
2586
+
2587
+ /** Scan result. */
2588
+ declare interface ScanResult {
2589
+ /** The decoded value. */
2590
+ value: string;
2591
+ /** Format of the code (QR, EAN-13, Code128, etc.). */
2592
+ format?: string;
2593
+ /** Timestamp of the scan. */
2594
+ scannedAt: Date;
2595
+ }
2596
+
2597
+ /** A tax rate entry. */
2598
+ declare interface TaxRate {
2599
+ /** Rate identifier. */
2600
+ id: string;
2601
+ /** Display label (e.g. "23%", "8%", "zw."). */
2602
+ label: string;
2603
+ /** Numeric rate as decimal (0.23 = 23%). */
2604
+ rate: number;
2605
+ /** Country code this rate applies to. */
2606
+ countryCode?: string;
2607
+ /** Category (e.g. "standard", "reduced", "zero", "exempt"). */
2608
+ category?: string;
2609
+ /** Whether this is the default rate. */
2610
+ isDefault?: boolean;
2611
+ }
2612
+
2613
+ declare interface TextAnnotation extends AnnotationBase {
2614
+ tool: 'text';
2615
+ text: string;
2616
+ }
2617
+
2618
+ declare type TextStyle = 'professional' | 'casual' | 'formal' | 'concise';
2619
+
2620
+ /**
2621
+ * @fileoverview Traceless™ — Zero-Trace Privacy Architecture
2622
+ * @module @nice2dev/ui/core/traceless
2623
+ *
2624
+ * Traceless™ is OmniVerk's flagship privacy feature that allows complete control
2625
+ * over client-side storage (cookies, localStorage, sessionStorage).
2626
+ *
2627
+ * "Żadnych śladów. Żadnych cookies. Żadnego localStorage. Żadnego bannera. Traceless."
2628
+ *
2629
+ * @example
2630
+ * ```tsx
2631
+ * import { TracelessProvider, useTracelessPolicy, StorageAdapter } from '@nice2dev/ui';
2632
+ *
2633
+ * // In your app root:
2634
+ * <TracelessProvider>
2635
+ * <App />
2636
+ * </TracelessProvider>
2637
+ *
2638
+ * // In components:
2639
+ * const { mode, canUseCookies, canUseLocalStorage } = useTracelessPolicy();
2640
+ * const storage = useStorageAdapter();
2641
+ * storage.set('key', 'value'); // Automatically respects policy
2642
+ * ```
2643
+ */
2644
+ /**
2645
+ * Privacy storage modes from most private to most permissive.
2646
+ *
2647
+ * | Mode | Cookies | localStorage | sessionStorage | Consent Banner |
2648
+ * |------------|---------|--------------|----------------|----------------|
2649
+ * | traceless | ❌ | ❌ | ❌ | ❌ Never |
2650
+ * | ephemeral | ❌ | ❌ | ✅ | ❌ Never |
2651
+ * | private | 1 auth | ❌ | ✅ | ❌ Exempt |
2652
+ * | balanced | ❌ | ✅ | ✅ | ⚠️ Maybe |
2653
+ * | full | ✅ | ✅ | ✅ | ✅ Required |
2654
+ * | custom | Config | Config | Config | Config |
2655
+ */
2656
+ declare type TracelessMode = 'traceless' | 'ephemeral' | 'private' | 'balanced' | 'full' | 'custom';
2657
+
2658
+ /**
2659
+ * Standard props that can be added to any component to support Traceless policy.
2660
+ */
2661
+ declare interface TracelessStorageProps {
2662
+ /** Whether this component may use cookies */
2663
+ cookies?: boolean;
2664
+ /** Whether this component may use localStorage */
2665
+ localStorage?: boolean;
2666
+ /** Whether this component may use sessionStorage */
2667
+ sessionStorage?: boolean;
2668
+ /** Override storage mode for this component */
2669
+ storageMode?: TracelessMode;
2670
+ /** Storage key for persisting component state */
2671
+ storageKey?: string;
2672
+ }
2673
+
2674
+ declare type UploadHandler = (request: UploadRequest) => Promise<UploadResponse>;
2675
+
2676
+ declare interface UploadRequest {
2677
+ file: File;
2678
+ chunk?: Blob;
2679
+ chunkIndex?: number;
2680
+ totalChunks?: number;
2681
+ fileId?: string;
2682
+ onProgress?: (progress: number) => void;
2683
+ signal?: AbortSignal;
2684
+ }
2685
+
2686
+ declare interface UploadResponse {
2687
+ success: boolean;
2688
+ url?: string;
2689
+ error?: string;
2690
+ fileId?: string;
2691
+ metadata?: Record<string, any>;
2692
+ }
2693
+
2694
+ declare type UploadStatus = 'pending' | 'uploading' | 'success' | 'error' | 'cancelled';
2695
+
2696
+ /** Country-specific VAT/NIP validation config. */
2697
+ declare interface VatCountryConfig {
2698
+ /** ISO 3166‑1 alpha-2 code. */
2699
+ code: string;
2700
+ /** Display name. */
2701
+ label: string;
2702
+ /** VAT prefix (e.g. "PL", "DE"). */
2703
+ prefix: string;
2704
+ /** Regex pattern for the numeric part (without prefix). */
2705
+ pattern: RegExp;
2706
+ /** Mask/placeholder hint. */
2707
+ placeholder?: string;
2708
+ }
2709
+
2710
+ /** A wiki page tree node. */
2711
+ declare interface WikiPage {
2712
+ id: string | number;
2713
+ title: string;
2714
+ /** Slug or path segment. */
2715
+ slug: string;
2716
+ /** Parent page id (null for root). */
2717
+ parentId?: string | number | null;
2718
+ /** Children pages. */
2719
+ children?: WikiPage[];
2720
+ /** ISO date of last update. */
2721
+ updatedAt?: string;
2722
+ /** Last editor name. */
2723
+ updatedBy?: string;
2724
+ /** Whether this page is a draft. */
2725
+ isDraft?: boolean;
2726
+ }
2727
+
2728
+ export { }