@nice2dev/ui 1.0.24 → 1.0.26

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 (90) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/dist/NiceErrorBoundary-B91z3IjT.cjs +1 -0
  3. package/dist/NiceErrorBoundary-CVybqo3l.js +770 -0
  4. package/dist/NiceErrorBoundary-D0NwBkFl.cjs +1 -0
  5. package/dist/NiceErrorBoundary-DQLk-68V.js +770 -0
  6. package/dist/NiceForm-8_p8P0uJ.js +5386 -0
  7. package/dist/NiceForm-BrBaLUkv.js +5386 -0
  8. package/dist/NiceForm-DkVFd5Z5.cjs +382 -0
  9. package/dist/NiceForm-DoiApS60.cjs +382 -0
  10. package/dist/NiceModal-C582SiK7.cjs +1 -0
  11. package/dist/NiceModal-CdiLaYTg.cjs +1 -0
  12. package/dist/NiceModal-D6Yj67eH.js +95 -0
  13. package/dist/NiceModal-sFJw1CWm.js +95 -0
  14. package/dist/NiceModuleLifecyclePanel-Bhd8VNjU.js +6856 -0
  15. package/dist/NiceModuleLifecyclePanel-Cn_nB4dg.cjs +1 -0
  16. package/dist/NiceModuleLifecyclePanel-D22ycAMQ.js +6817 -0
  17. package/dist/NiceModuleLifecyclePanel-shRuDyp3.cjs +1 -0
  18. package/dist/NiceModuleLifecyclePanel.css +1 -1
  19. package/dist/NicePagination-CtyaW_b4.cjs +1 -0
  20. package/dist/NicePagination-Dnlho_8O.cjs +1 -0
  21. package/dist/NicePagination-hGlKrWYL.js +171 -0
  22. package/dist/NicePagination-kokSP8ls.js +171 -0
  23. package/dist/NicePinCodeInput-1YGb7l2o.cjs +696 -0
  24. package/dist/NicePinCodeInput-CZpYON--.js +13097 -0
  25. package/dist/NicePinCodeInput-DPUlM3E1.cjs +696 -0
  26. package/dist/NicePinCodeInput-xSuOVhE8.js +13097 -0
  27. package/dist/NiceSavedQueryPanel-C6pPtOAf.js +6893 -0
  28. package/dist/NiceSavedQueryPanel-DOixGvLP.cjs +596 -0
  29. package/dist/NiceSavedQueryPanel-DzB0g0ak.cjs +596 -0
  30. package/dist/NiceSavedQueryPanel-Mz4jAsGJ.js +6893 -0
  31. package/dist/NiceTabs-1o8cpB_-.js +1657 -0
  32. package/dist/NiceTabs-B-FDOecP.cjs +1 -0
  33. package/dist/NiceTabs-DHiA02RD.cjs +1 -0
  34. package/dist/NiceTabs-MBVJomax.js +1657 -0
  35. package/dist/NiceWindow-9zQsi0zF.cjs +1 -0
  36. package/dist/NiceWindow-DUOkdKuX.js +1592 -0
  37. package/dist/NiceWindow-Dq-xx9cw.js +1592 -0
  38. package/dist/NiceWindow-ZAAUD3LJ.cjs +1 -0
  39. package/dist/charts-B_lYNVMJ.cjs +761 -0
  40. package/dist/charts-CABhvyAA.js +4657 -0
  41. package/dist/charts-DNQXBPGB.js +4657 -0
  42. package/dist/charts-IP38F-wh.cjs +761 -0
  43. package/dist/charts.cjs +1 -1
  44. package/dist/charts.mjs +1 -1
  45. package/dist/core-BHZDvnBo.js +25364 -0
  46. package/dist/core-C7CI2mWz.js +25248 -0
  47. package/dist/core-C7PK1L9r.cjs +122 -0
  48. package/dist/core-CjUAwZ6z.cjs +122 -0
  49. package/dist/data-branching-BGw7O52F.js +6133 -0
  50. package/dist/data-branching-Bv-f_gZk.cjs +1 -0
  51. package/dist/data-branching-CNi8vtZ1.js +6133 -0
  52. package/dist/data-branching-Dz3xLUZM.cjs +1 -0
  53. package/dist/data-branching.cjs +1 -1
  54. package/dist/data-branching.mjs +1 -1
  55. package/dist/data.cjs +1 -1
  56. package/dist/data.d.ts +19 -1
  57. package/dist/data.mjs +1 -1
  58. package/dist/devops-CX538_rA.js +7684 -0
  59. package/dist/devops-JwBTMk0A.cjs +17 -0
  60. package/dist/devops-ZWKP6vRh.cjs +17 -0
  61. package/dist/devops-draw6Jrm.js +7684 -0
  62. package/dist/devops.cjs +1 -1
  63. package/dist/devops.mjs +1 -1
  64. package/dist/editors.cjs +1 -1
  65. package/dist/editors.mjs +3 -3
  66. package/dist/feedback.cjs +1 -1
  67. package/dist/feedback.mjs +2 -2
  68. package/dist/index-BkLJ4tzy.js +68026 -0
  69. package/dist/index-CTe-G23X.cjs +5518 -0
  70. package/dist/index-CwOe80Ws.cjs +5518 -0
  71. package/dist/index-DGjd42Q9.js +68223 -0
  72. package/dist/index.cjs +1 -1
  73. package/dist/index.css +1 -1
  74. package/dist/index.d.ts +179 -1
  75. package/dist/index.mjs +822 -812
  76. package/dist/lazy.cjs +1 -1
  77. package/dist/lazy.mjs +24 -24
  78. package/dist/navigation.cjs +1 -1
  79. package/dist/navigation.d.ts +40 -0
  80. package/dist/navigation.mjs +4 -4
  81. package/dist/no-code-BndAN6hG.cjs +332 -0
  82. package/dist/no-code-CIf6wiUc.js +7133 -0
  83. package/dist/no-code-DKYzw5If.js +7133 -0
  84. package/dist/no-code-DSa5Yn6l.cjs +332 -0
  85. package/dist/no-code.cjs +1 -1
  86. package/dist/no-code.mjs +1 -1
  87. package/dist/overlays.cjs +1 -1
  88. package/dist/overlays.mjs +55 -55
  89. package/dist/style.css +2 -2
  90. package/package.json +1 -1
package/dist/index.d.ts CHANGED
@@ -66,6 +66,7 @@ import { CrossTabMessage } from '@nice2dev/ui-core';
66
66
  import { CSSProperties } from 'react';
67
67
  import { default as default_2 } from 'react';
68
68
  import { DEFAULT_VARIANT_CONFIG } from '@nice2dev/ui-core';
69
+ import { defaultValidationMessage } from '@nice2dev/ui-core';
69
70
  import { DENSITY_VALUES } from '@nice2dev/ui-core';
70
71
  import { DensityVariant } from '@nice2dev/ui-core';
71
72
  import { deprecateProp } from '@nice2dev/ui-core';
@@ -74,6 +75,8 @@ import { deserializeTheme } from '@nice2dev/ui-core';
74
75
  import { Dispatch } from 'react';
75
76
  import { DisplayPreferences } from '@nice2dev/ui-core';
76
77
  import { endMark } from '@nice2dev/ui-core';
78
+ import { evaluateValidation } from '@nice2dev/ui-core';
79
+ import { evaluateValidationRule } from '@nice2dev/ui-core';
77
80
  import { FillVariant } from '@nice2dev/ui-core';
78
81
  import { filterGroupToWhere } from '@nice2dev/ui-core';
79
82
  import { filterNiceThemePacksByTag } from '@nice2dev/ui-core';
@@ -131,6 +134,7 @@ import { HelpProp } from '@nice2dev/ui-core';
131
134
  import { ICUValues } from '@nice2dev/ui-core';
132
135
  import { IndexedDBAdapter } from '@nice2dev/ui-core';
133
136
  import { InputStyleVariant } from '@nice2dev/ui-core';
137
+ import { isRecordValid } from '@nice2dev/ui-core';
134
138
  import { ITracelessPolicy } from '@nice2dev/ui-core';
135
139
  import { JSX as JSX_2 } from 'react';
136
140
  import { KeyboardShortcut } from '@nice2dev/ui-core';
@@ -206,6 +210,9 @@ import { NiceFavoriteItem } from '@nice2dev/ui-core';
206
210
  import { NiceFieldState } from '@nice2dev/ui-core';
207
211
  import { NiceFieldStatus } from '@nice2dev/ui-core';
208
212
  import { NiceFieldStatusProps } from '@nice2dev/ui-core';
213
+ import { NiceFieldValidationIssue } from '@nice2dev/ui-core';
214
+ import { NiceFieldValidationOp } from '@nice2dev/ui-core';
215
+ import { NiceFieldValidationRule } from '@nice2dev/ui-core';
209
216
  import { NiceFilterCondition } from '@nice2dev/ui-core';
210
217
  import { NiceFilterGroup } from '@nice2dev/ui-core';
211
218
  import { NiceFilterOperator } from '@nice2dev/ui-core';
@@ -3116,6 +3123,8 @@ export declare const DefaultLoadingFallback: default_2.FC<{
3116
3123
  /** Default cross-platform component type mapping. */
3117
3124
  export declare const defaultTypeMapping: NiceComponentTypeMapping;
3118
3125
 
3126
+ export { defaultValidationMessage }
3127
+
3119
3128
  /** Default global registry instance. */
3120
3129
  export declare const defaultViewRegistry: NiceViewRegistry;
3121
3130
 
@@ -3127,6 +3136,9 @@ export { deprecateProp }
3127
3136
 
3128
3137
  export { deprecateSymbol }
3129
3138
 
3139
+ /** Derive {@link NiceExportColumn}s from the view's bound cells, falling back to data keys. */
3140
+ export declare function deriveExportColumns(view: NiceViewDefinition, rows: Array<Record<string, unknown>>): NiceExportColumn[];
3141
+
3130
3142
  /** Deserialize and validate a module manifest from JSON. */
3131
3143
  export declare function deserializeManifest(json: string): NiceModuleManifest;
3132
3144
 
@@ -4292,6 +4304,10 @@ declare interface ESLintRuleContext {
4292
4304
  };
4293
4305
  }
4294
4306
 
4307
+ export { evaluateValidation }
4308
+
4309
+ export { evaluateValidationRule }
4310
+
4295
4311
  declare interface EventCondition {
4296
4312
  field: string;
4297
4313
  operator: 'eq' | 'neq' | 'gt' | 'lt' | 'gte' | 'lte' | 'contains' | 'exists';
@@ -4458,6 +4474,13 @@ export declare function exportToPDF<T extends Record<string, unknown>>(data: T[]
4458
4474
  */
4459
4475
  export declare function exportToXLSX<T extends Record<string, unknown>>(data: T[], columns: NiceExportColumn[], options?: NiceXLSXOptions): ArrayBuffer;
4460
4476
 
4477
+ /**
4478
+ * Export a view + data to the given format. CSV/XLSX/PDF delegate to the
4479
+ * dep-free {@link NiceExport} utilities; HTML/DOCX are produced here. Pass
4480
+ * `options.onExport` to hand high-fidelity output to a host library.
4481
+ */
4482
+ export declare function exportView(view: NiceViewDefinition, data: unknown, format: NiceViewExportFormat, options?: NiceViewExportOptions): Promise<void>;
4483
+
4461
4484
  export declare interface Expression {
4462
4485
  id: string;
4463
4486
  name: string;
@@ -5696,6 +5719,8 @@ export declare interface InvoiceTotals {
5696
5719
  /** Check if a user can perform an action on a resource. Deny overrides allow. */
5697
5720
  export declare function isAllowed(resolved: NiceResolvedPermissions, resource: string, action: RbacAction): boolean;
5698
5721
 
5722
+ export { isRecordValid }
5723
+
5699
5724
  /** Check if a version satisfies min/max constraints. */
5700
5725
  export declare function isVersionCompatible(version: SemVer, min?: SemVer, max?: SemVer): boolean;
5701
5726
 
@@ -8272,8 +8297,44 @@ export declare interface NiceCardProps extends NiceBaseProps {
8272
8297
  bordered?: boolean;
8273
8298
  /** Makes the entire card clickable. */
8274
8299
  onClick?: () => void;
8300
+ /**
8301
+ * Make the card behave as a selectable option (radio): cursor/hover affordance,
8302
+ * `role="radio"` + `aria-checked`, keyboard select (Space/Enter). Inside a
8303
+ * {@link NiceCardRadioGroup} this is implied for cards that carry a `value`.
8304
+ */
8305
+ selectable?: boolean;
8306
+ /** Whether the card is currently selected (controlled; auto-wired inside a NiceCardRadioGroup). */
8307
+ selected?: boolean;
8308
+ /** The option value bound to this card (used for selection + the group's onChange). */
8309
+ value?: NiceCardValue;
8310
+ /** Fired with `value` when the card is selected. */
8311
+ onSelect?: (value: NiceCardValue) => void;
8312
+ /** Radio group name (auto-wired inside a NiceCardRadioGroup). */
8313
+ name?: string;
8314
+ }
8315
+
8316
+ /**
8317
+ * {@link NiceCardRadioGroup} — wraps NiceCards into a single-select radio group:
8318
+ * child cards that carry a `value` become selectable and report selection via
8319
+ * `onChange` (the "binding + event on select"). Adds `role="radiogroup"`.
8320
+ */
8321
+ export declare const NiceCardRadioGroup: default_2.FC<NiceCardRadioGroupProps>;
8322
+
8323
+ /** Props for {@link NiceCardRadioGroup} — coordinates single-selection across child NiceCards. */
8324
+ export declare interface NiceCardRadioGroupProps extends NiceBaseProps {
8325
+ /** Selected value (controlled). */
8326
+ value?: NiceCardValue;
8327
+ /** Fired with the newly-selected value. */
8328
+ onChange?: (value: NiceCardValue) => void;
8329
+ /** Radio group name applied to child cards. */
8330
+ name?: string;
8331
+ /** Child NiceCards (each with a `value`). */
8332
+ children: default_2.ReactNode;
8275
8333
  }
8276
8334
 
8335
+ /** Value type used by selectable cards / card radio groups. */
8336
+ export declare type NiceCardValue = string | number;
8337
+
8277
8338
  export declare function NiceCardView<T extends NiceCardViewItem>({ items, renderCard, columns, gap, searchable, searchField, searchPlaceholder, loading, emptyText, onCardClick, className, style, accessMode, id, }: NiceCardViewProps<T>): default_2.JSX.Element | null;
8278
8339
 
8279
8340
  /** An item displayed by the {@link NiceCardView} component. */
@@ -10408,7 +10469,7 @@ export declare interface NiceDataDiffViewerProps extends NiceBaseProps {
10408
10469
  onSelectRecord?: (table: string, recordId: string) => void;
10409
10470
  }
10410
10471
 
10411
- export declare function NiceDataGrid<T extends Record<string, any>>({ columns, data: dataProp, keyField, dataSource, sortable, sortField: controlledSortField, sortDirection: controlledSortDir, onSort, showAdvancedFilter, advancedFilter, onAdvancedFilterChange, filterFields, filterPresets, onSaveFilterPreset, onDeleteFilterPreset, selectable, selectedKeys: controlledSelected, onSelectionChange, pagination, pageSize: initPageSize, page: controlledPage, onPageChange, totalRows, searchable, searchPlaceholder, virtualScroll, rowHeight, groupBy, groupRender, onCellEdit, editMode, formItems, formColumns, editFormTitle, formProps, onRowEdit, onRowAdd, onRowDelete: _onRowDelete, bulkActions, onBulkDelete, exportCsv, exportFilename, detailRow, expandedRowKeys: controlledExpandedRows, onExpandedRowChange, columnReorder: _columnReorder, onColumnReorder: _onColumnReorder, columnResize, rowDraggable, onRowReorder, striped, compact, loading: loadingProp, emptyText, toolbar, onRowClick, pinnedTopKeys, pinnedBottomKeys, colSpan: colSpanFn, showStatusBar, contextMenuItems, onContextMenuAction, printFriendly, keyboardNavigation, focusedCell: controlledFocusedCell, onFocusedCellChange, cellRangeSelection, selectedCellRange: controlledCellRange, onCellRangeChange, clipboard, clipboardFormat, onBeforeCopy, onCopy, onPaste, quickFilters, activeQuickFilters: controlledQuickFilters, onQuickFilterChange, columnGroups: _columnGroups, stateStorageKey, initialState, onStateChange, flashRowKeys, flashDuration, autoFitColumns: _autoFitColumns, showColumnStats: _showColumnStats, rowIndicator, frozenRows: _frozenRows, className, style, accessMode, id, displayStyle, }: NiceDataGridProps<T>): default_2.JSX.Element | null;
10472
+ export declare function NiceDataGrid<T extends Record<string, any>>({ columns, data: dataProp, keyField, dataSource, sortable, sortField: controlledSortField, sortDirection: controlledSortDir, onSort, showAdvancedFilter, advancedFilter, onAdvancedFilterChange, filterFields, filterPresets, onSaveFilterPreset, onDeleteFilterPreset, selectable, selectedKeys: controlledSelected, onSelectionChange, pagination, pageSize: initPageSize, page: controlledPage, onPageChange, totalRows, autoPagination, stickyHeader, stickyFooter, searchable, searchPlaceholder, virtualScroll, rowHeight, groupBy, groupRender, onCellEdit, editMode, formItems, formColumns, editFormTitle, formProps, onRowEdit, onRowAdd, onRowDelete: _onRowDelete, bulkActions, onBulkDelete, exportCsv, exportFilename, detailRow, expandedRowKeys: controlledExpandedRows, onExpandedRowChange, columnReorder: _columnReorder, onColumnReorder: _onColumnReorder, columnResize, rowDraggable, onRowReorder, striped, compact, loading: loadingProp, emptyText, toolbar, onRowClick, pinnedTopKeys, pinnedBottomKeys, colSpan: colSpanFn, showStatusBar, contextMenuItems, onContextMenuAction, printFriendly, keyboardNavigation, focusedCell: controlledFocusedCell, onFocusedCellChange, cellRangeSelection, selectedCellRange: controlledCellRange, onCellRangeChange, clipboard, clipboardFormat, onBeforeCopy, onCopy, onPaste, quickFilters, activeQuickFilters: controlledQuickFilters, onQuickFilterChange, columnGroups: _columnGroups, stateStorageKey, initialState, onStateChange, flashRowKeys, flashDuration, autoFitColumns: _autoFitColumns, showColumnStats: _showColumnStats, rowIndicator, frozenRows: _frozenRows, className, style, accessMode, id, displayStyle, }: NiceDataGridProps<T>): default_2.JSX.Element | null;
10412
10473
 
10413
10474
  export declare namespace NiceDataGrid {
10414
10475
  var displayName: string;
@@ -10552,6 +10613,24 @@ export declare interface NiceDataGridProps<T extends Record<string, any> = any>
10552
10613
  page?: number;
10553
10614
  onPageChange?: (page: number) => void;
10554
10615
  totalRows?: number;
10616
+ /**
10617
+ * Auto-fit pagination: the grid fills 100% of its container height and the
10618
+ * page size is computed from the available height ÷ `rowHeight` (recomputed on
10619
+ * resize). The page-size control renders as an informational label instead of
10620
+ * a select. Default `false`.
10621
+ */
10622
+ autoPagination?: boolean;
10623
+ /**
10624
+ * Keep the column header visible while scrolling the grid's own content.
10625
+ * Engages only when the grid scrolls internally (bounded height / autoPagination);
10626
+ * otherwise the header scrolls with the page. Default `true`.
10627
+ */
10628
+ stickyHeader?: boolean;
10629
+ /**
10630
+ * Keep the aggregate/summary footer row pinned while scrolling the grid's own
10631
+ * content (same engagement rule as `stickyHeader`). Default `true`.
10632
+ */
10633
+ stickyFooter?: boolean;
10555
10634
  searchable?: boolean;
10556
10635
  searchPlaceholder?: string;
10557
10636
  virtualScroll?: boolean;
@@ -12058,6 +12137,12 @@ export { NiceFieldStatus }
12058
12137
 
12059
12138
  export { NiceFieldStatusProps }
12060
12139
 
12140
+ export { NiceFieldValidationIssue }
12141
+
12142
+ export { NiceFieldValidationOp }
12143
+
12144
+ export { NiceFieldValidationRule }
12145
+
12061
12146
  /** A custom column in the {@link NiceFileManager} detail view. */
12062
12147
  export declare interface NiceFileColumnDef {
12063
12148
  /** Column key. */
@@ -16255,6 +16340,13 @@ export declare interface NiceNavShellProps {
16255
16340
  helpSteps?: NiceTutorialStep[];
16256
16341
  /** Disable individual default steps by key. */
16257
16342
  helpStepsExclude?: Array<'topNav' | 'sidebar' | 'tabs' | 'content'>;
16343
+ /**
16344
+ * Background opacity 0–1 (default `1` = opaque) for the shell chrome — applied
16345
+ * to the content body and forwarded to the embedded top-nav and sidebar — so
16346
+ * a translucent shell can sit over a wallpaper / floating UI. Exposed as the
16347
+ * `--nice-shell-surface-alpha` CSS variable.
16348
+ */
16349
+ surfaceOpacity?: number;
16258
16350
  className?: string;
16259
16351
  contentClassName?: string;
16260
16352
  'data-testid'?: string;
@@ -19504,6 +19596,13 @@ export declare interface NiceSetupWizardProps {
19504
19596
  layout?: SetupWizardLayout;
19505
19597
  /** Size */
19506
19598
  size?: NiceSize;
19599
+ /**
19600
+ * When set, the wizard self-applies this theme (preset name or NiceTheme) by
19601
+ * wrapping itself in a scoped NiceThemeProvider — so it themes correctly even
19602
+ * when rendered outside an app-level provider (e.g. a standalone /setup page).
19603
+ * Omit it when the wizard is already inside a NiceThemeProvider.
19604
+ */
19605
+ theme?: NiceTheme | string;
19507
19606
  /** Whether quick mode is enabled by default */
19508
19607
  defaultQuickMode?: boolean;
19509
19608
  /** Allow toggling quick mode */
@@ -19681,6 +19780,21 @@ export declare interface NiceSidebarNavProps {
19681
19780
  showFavorites?: boolean;
19682
19781
  /** Allow the footer Preferences view/mode. Default `!minimal`. */
19683
19782
  showFooterPreferences?: boolean;
19783
+ /**
19784
+ * **Sticky full-height** — when `true` (default) the sidebar sticks to the
19785
+ * viewport and spans the full screen height (`position: sticky; top: 0;
19786
+ * height: 100vh`), so the collapse button sits in the screen's bottom-left
19787
+ * corner regardless of body/content height. Set `false` when a parent layout
19788
+ * (e.g. NiceNavShell) already provides the full-height column. Ignored in
19789
+ * `embedded` mode. Default `true`.
19790
+ */
19791
+ sticky?: boolean;
19792
+ /**
19793
+ * Background opacity of the sidebar surface, 0–1 (default `1` = opaque).
19794
+ * Lower it for glassmorphism / floating-button backdrops; exposed as the
19795
+ * `--nice-sidebar-surface-alpha` CSS variable consumed by the background.
19796
+ */
19797
+ surfaceOpacity?: number;
19684
19798
  /**
19685
19799
  * **Embedded mode** — render the sidebar inside another container (e.g. a
19686
19800
  * mobile drawer / hamburger menu). Forces full width, drops the footer with
@@ -21768,6 +21882,9 @@ export declare interface NiceTopNavProps {
21768
21882
  borderBottom?: boolean;
21769
21883
  elevated?: boolean;
21770
21884
  sticky?: boolean;
21885
+ /** Background opacity 0–1 (default `1` = opaque). Lower for glass/floating UI;
21886
+ * exposed as the `--nice-topnav-surface-alpha` CSS variable. */
21887
+ surfaceOpacity?: number;
21771
21888
  variant?: NiceTopNavVariant;
21772
21889
  accentBar?: boolean;
21773
21890
  accentBarColor?: string;
@@ -22707,6 +22824,24 @@ export { NiceUserPreferencesProvider }
22707
22824
 
22708
22825
  export { NiceUserPreferencesProviderProps }
22709
22826
 
22827
+ /**
22828
+ * {@link NiceValidationBuilder} — visual editor for {@link NiceFieldValidationRule} lists,
22829
+ * mirroring NiceFilterBuilder. Rules are enforced at runtime by the forms via
22830
+ * `evaluateValidation` and can be reused by host codegen.
22831
+ */
22832
+ export declare const NiceValidationBuilder: default_2.FC<NiceValidationBuilderProps>;
22833
+
22834
+ /** Props for {@link NiceValidationBuilder}. */
22835
+ export declare interface NiceValidationBuilderProps extends NiceBaseProps {
22836
+ /** Fields that rules may target (reuses the filter field descriptor). */
22837
+ fields: NiceFilterField[];
22838
+ /** The validation rules (controlled). */
22839
+ value: NiceFieldValidationRule[];
22840
+ onChange: (rules: NiceFieldValidationRule[]) => void;
22841
+ /** Optional "?" guided tour. Off by default; `true` uses the built-in tour. */
22842
+ tutorial?: NiceComponentTutorial;
22843
+ }
22844
+
22710
22845
  export declare const NiceValidationGroup: default_2.FC<NiceValidationGroupProps>;
22711
22846
 
22712
22847
  /** Props for the {@link NiceValidationGroup} component — a context provider that orchestrates validation of all child {@link NiceValidator} instances. */
@@ -23106,6 +23241,8 @@ export declare interface NiceViewDefinition {
23106
23241
  id: string;
23107
23242
  /** Display name */
23108
23243
  name: string;
23244
+ /** What kind of view this is (drives editor mode + export). Default `'form'`. */
23245
+ kind?: NiceViewKind;
23109
23246
  /** Schema version */
23110
23247
  version: number;
23111
23248
  /** ERP module this view belongs to */
@@ -23175,6 +23312,12 @@ export declare interface NiceViewEditorProps extends NiceStandardProps {
23175
23312
  entities?: NiceEntityLike[];
23176
23313
  /** Save callback (shows a Save button when provided). */
23177
23314
  onSave?: (view: NiceViewDefinition) => void;
23315
+ /**
23316
+ * Optional host export hook for `report`/`print`/`grid` views. When provided
23317
+ * it takes over from the built-in dep-free exporters (e.g. to produce
23318
+ * high-fidelity DOCX/XLSX with the consumer's own library).
23319
+ */
23320
+ onExport?: NiceViewExportOptions['onExport'];
23178
23321
  /** Editor height. Default `560`. */
23179
23322
  height?: number | string;
23180
23323
  /** Optional "?" guided tour. Off by default; `true` uses the built-in tour. */
@@ -23189,6 +23332,21 @@ export declare interface NiceViewEventBinding {
23189
23332
  actions: NiceViewAction[];
23190
23333
  }
23191
23334
 
23335
+ /** Supported export formats. */
23336
+ export declare type NiceViewExportFormat = 'pdf' | 'docx' | 'csv' | 'xlsx' | 'html';
23337
+
23338
+ export declare interface NiceViewExportOptions {
23339
+ /** File name (without extension). Defaults to the view name. */
23340
+ fileName?: string;
23341
+ /** Override columns; otherwise derived from the view, then from the data. */
23342
+ columns?: NiceExportColumn[];
23343
+ /**
23344
+ * Host takeover for high-fidelity export. When provided it is called instead
23345
+ * of the built-in exporter and is responsible for producing the file.
23346
+ */
23347
+ onExport?: (view: NiceViewDefinition, rows: Array<Record<string, unknown>>, format: NiceViewExportFormat) => void | Promise<void>;
23348
+ }
23349
+
23192
23350
  export declare class NiceViewFetcher {
23193
23351
  private readonly config;
23194
23352
  constructor(config: NiceViewFetcherConfig);
@@ -23294,6 +23452,18 @@ export declare interface NiceViewHotReloadConfig {
23294
23452
  authToken?: string;
23295
23453
  }
23296
23454
 
23455
+ /**
23456
+ * What a view IS — drives the editor mode, scaffolding and export options:
23457
+ * - `form` / `detail` — record entry / read-only record
23458
+ * - `grid` — tabular register
23459
+ * - `dashboard` — widgets/KPIs
23460
+ * - `content` — free page (e.g. a frontpage)
23461
+ * - `report` — banded, data-bound report (exportable to PDF/XLSX/…)
23462
+ * - `print` — a print/document template (the "wydruk")
23463
+ * - `mix` — a mixed composition of the above
23464
+ */
23465
+ export declare type NiceViewKind = 'form' | 'grid' | 'detail' | 'dashboard' | 'content' | 'report' | 'print' | 'mix';
23466
+
23297
23467
  /** Layout types for container cells. */
23298
23468
  export declare type NiceViewLayoutType = 'grid' | 'tabs' | 'splitter' | 'accordion' | 'stack' | 'container';
23299
23469
 
@@ -25323,6 +25493,9 @@ export declare interface Resolution {
25323
25493
 
25324
25494
  export { resolveDisplayStyleConfig }
25325
25495
 
25496
+ /** Resolve the primary record array from a view data store or a plain array. */
25497
+ export declare function resolveExportRows(view: NiceViewDefinition, data: unknown): Array<Record<string, unknown>>;
25498
+
25326
25499
  /** Resolve permissions for a set of user roles. */
25327
25500
  export declare function resolvePermissions(userRoleIds: string[], policy: NiceRbacPolicy): NiceResolvedPermissions;
25328
25501
 
@@ -28988,6 +29161,11 @@ export declare type ViewMode = 'grid' | 'list' | 'masonry' | 'details';
28988
29161
 
28989
29162
  declare type ViewMode_2 = 'split' | 'unified' | 'fields';
28990
29163
 
29164
+ /** Render a view + data as a standalone HTML document (used for the html/docx formats). */
29165
+ export declare function viewToHtml(view: NiceViewDefinition, data: unknown, options?: {
29166
+ columns?: NiceExportColumn[];
29167
+ }): string;
29168
+
28991
29169
  /** Validation severity. */
28992
29170
  export declare type ViewValidationSeverity = 'error' | 'warning' | 'info';
28993
29171