@nice2dev/ui 1.0.11 → 1.0.14

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 (93) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +61 -0
  3. package/css/legacy-bg-text-aliases.css +83 -0
  4. package/dist/NiceErrorBoundary-BLTq8mPU.cjs +1 -0
  5. package/dist/NiceErrorBoundary-Bjw5U31n.js +762 -0
  6. package/dist/NiceErrorBoundary-DT5XPTeu.cjs +1 -0
  7. package/dist/NiceErrorBoundary-SqPtbIxK.js +762 -0
  8. package/dist/NiceForm-CI_vgkD4.cjs +382 -0
  9. package/dist/NiceForm-CUlhtlHw.js +5357 -0
  10. package/dist/NiceForm-DTgIGX88.cjs +382 -0
  11. package/dist/NiceForm-t9zdH8kU.js +5343 -0
  12. package/dist/NiceForm.css +1 -1
  13. package/dist/NiceModal-C_t2qqZd.js +95 -0
  14. package/dist/NiceModal-DQ7u-xVm.cjs +1 -0
  15. package/dist/NiceModal-FQqBxCij.cjs +1 -0
  16. package/dist/NiceModal-IkSunDgK.js +95 -0
  17. package/dist/NiceModuleLifecyclePanel-CCFHxKIu.js +6343 -0
  18. package/dist/NiceModuleLifecyclePanel-Cj4x54sw.cjs +1 -0
  19. package/dist/NiceModuleLifecyclePanel-D-xBAp1_.js +5228 -0
  20. package/dist/NiceModuleLifecyclePanel-D8cIOI8I.cjs +1 -0
  21. package/dist/NiceModuleLifecyclePanel.css +1 -1
  22. package/dist/NicePagination-BVkkePJU.js +171 -0
  23. package/dist/NicePagination-DDFkSRr9.js +171 -0
  24. package/dist/NicePagination-DGHtXqy1.cjs +1 -0
  25. package/dist/NicePagination-DGd3Hrh9.cjs +1 -0
  26. package/dist/NicePinCodeInput-BhIABBTV.cjs +419 -0
  27. package/dist/NicePinCodeInput-CDtodnIM.js +11875 -0
  28. package/dist/NicePinCodeInput-DytLfqZL.cjs +419 -0
  29. package/dist/NicePinCodeInput-jMNfPqOx.js +11866 -0
  30. package/dist/NicePinCodeInput.css +1 -1
  31. package/dist/NiceSavedQueryPanel-BkYRk5cX.js +6441 -0
  32. package/dist/NiceSavedQueryPanel-CbR3EDQU.cjs +596 -0
  33. package/dist/NiceSavedQueryPanel-CmFSi21-.cjs +596 -0
  34. package/dist/NiceSavedQueryPanel-DJqCNWYZ.js +6446 -0
  35. package/dist/NiceSavedQueryPanel.css +1 -1
  36. package/dist/NiceTabs-B-9_mzpc.js +1624 -0
  37. package/dist/NiceTabs-C4H5un8J.cjs +1 -0
  38. package/dist/NiceTabs-CHg36waF.cjs +1 -0
  39. package/dist/NiceTabs-DlsCMth_.js +1622 -0
  40. package/dist/NiceWindow-BNrA5Dxq.js +1409 -0
  41. package/dist/NiceWindow-BxGVzUs2.js +1409 -0
  42. package/dist/NiceWindow-CbzJmurQ.cjs +1 -0
  43. package/dist/NiceWindow-HhPIzPzs.cjs +1 -0
  44. package/dist/charts-F_b5-OR8.js +4621 -0
  45. package/dist/charts-Us8Ep8MJ.cjs +761 -0
  46. package/dist/charts-e10jGjuF.cjs +759 -0
  47. package/dist/charts-fO6InNZd.js +4645 -0
  48. package/dist/charts.cjs +1 -1
  49. package/dist/charts.css +1 -1
  50. package/dist/charts.mjs +1 -1
  51. package/dist/core-B-tu8l9M.cjs +96 -0
  52. package/dist/core-BJ_UNMlX.js +22276 -0
  53. package/dist/core-CSfXTICE.cjs +96 -0
  54. package/dist/core-ClmvtMVZ.js +22253 -0
  55. package/dist/data-branching-B_9C6-hE.cjs +1 -0
  56. package/dist/data-branching-BmCKIXgr.js +6121 -0
  57. package/dist/data-branching.cjs +1 -1
  58. package/dist/data-branching.mjs +1 -1
  59. package/dist/data.cjs +1 -1
  60. package/dist/data.d.ts +9 -2
  61. package/dist/data.mjs +1 -1
  62. package/dist/devops-BL39OCVh.js +7660 -0
  63. package/dist/devops-CkuTC7RJ.cjs +17 -0
  64. package/dist/devops.cjs +1 -1
  65. package/dist/devops.mjs +1 -1
  66. package/dist/editors.cjs +1 -1
  67. package/dist/editors.d.ts +92 -6
  68. package/dist/editors.mjs +3 -3
  69. package/dist/feedback.cjs +1 -1
  70. package/dist/feedback.mjs +2 -2
  71. package/dist/index-BU6KCDpP.js +57872 -0
  72. package/dist/index-D7i7sZGV.cjs +5194 -0
  73. package/dist/index-DHc_KZkF.js +61311 -0
  74. package/dist/index-drIVMHeC.cjs +5194 -0
  75. package/dist/index.cjs +1 -1
  76. package/dist/index.css +1 -1
  77. package/dist/index.d.ts +1607 -102
  78. package/dist/index.mjs +894 -867
  79. package/dist/lazy.cjs +1 -1
  80. package/dist/lazy.mjs +24 -24
  81. package/dist/navigation.cjs +1 -1
  82. package/dist/navigation.d.ts +309 -70
  83. package/dist/navigation.mjs +94 -93
  84. package/dist/no-code-Bb3QFKdm.cjs +332 -0
  85. package/dist/no-code-snLY0d6I.js +7065 -0
  86. package/dist/no-code.cjs +1 -1
  87. package/dist/no-code.mjs +1 -1
  88. package/dist/overlays.cjs +1 -1
  89. package/dist/overlays.mjs +33 -33
  90. package/dist/style.css +7 -0
  91. package/dist/vendor-DF586kuF.js +271 -0
  92. package/dist/vendor-DHEorsoy.cjs +1 -0
  93. package/package.json +10 -5
package/dist/index.d.ts CHANGED
@@ -67,6 +67,8 @@ import { default as default_2 } from 'react';
67
67
  import { DEFAULT_VARIANT_CONFIG } from '@nice2dev/ui-core';
68
68
  import { DENSITY_VALUES } from '@nice2dev/ui-core';
69
69
  import { DensityVariant } from '@nice2dev/ui-core';
70
+ import { deprecateProp } from '@nice2dev/ui-core';
71
+ import { deprecateSymbol } from '@nice2dev/ui-core';
70
72
  import { deserializeTheme } from '@nice2dev/ui-core';
71
73
  import { Dispatch } from 'react';
72
74
  import { DisplayPreferences } from '@nice2dev/ui-core';
@@ -167,11 +169,14 @@ import { NiceAIProvider } from '@nice2dev/ui-core';
167
169
  import { NiceAnimationConfig } from '@nice2dev/ui-core';
168
170
  import { NiceAnimationPreset } from '@nice2dev/ui-core';
169
171
  import { NiceAnimationTiming } from '@nice2dev/ui-core';
172
+ import { NiceAriaProps } from '@nice2dev/ui-core';
170
173
  import { NiceArrayDataSourceConfig } from '@nice2dev/ui-core';
171
174
  import { NiceBaseProps } from '@nice2dev/ui-core';
172
175
  import { NiceBreakpoint } from '@nice2dev/ui-core';
173
176
  import { NiceBreakpoints } from '@nice2dev/ui-core';
174
177
  import { NiceCacheConfig } from '@nice2dev/ui-core';
178
+ import { NiceChangeMeta } from '@nice2dev/ui-core';
179
+ import { NiceChangeReason } from '@nice2dev/ui-core';
175
180
  import { NiceComponentType } from '@nice2dev/ui-core';
176
181
  import { NiceCrossTabSyncConfig } from '@nice2dev/ui-core';
177
182
  import { NiceCursorLoadOptions } from '@nice2dev/ui-core';
@@ -195,6 +200,8 @@ import { NiceEditorSize } from '@nice2dev/ui-core';
195
200
  import { NiceEntityMenuDto } from '@nice2dev/ui-core';
196
201
  import { NiceFavoriteItem } from '@nice2dev/ui-core';
197
202
  import { NiceFieldState } from '@nice2dev/ui-core';
203
+ import { NiceFieldStatus } from '@nice2dev/ui-core';
204
+ import { NiceFieldStatusProps } from '@nice2dev/ui-core';
198
205
  import { NiceFilterCondition } from '@nice2dev/ui-core';
199
206
  import { NiceFilterGroup } from '@nice2dev/ui-core';
200
207
  import { NiceFilterOperator } from '@nice2dev/ui-core';
@@ -229,6 +236,9 @@ import { NiceODataConfig } from '@nice2dev/ui-core';
229
236
  import { NiceOfflineFirstConfig } from '@nice2dev/ui-core';
230
237
  import { NiceOnboardingAnswer } from '@nice2dev/ui-core';
231
238
  import { NiceOnboardingQuestion } from '@nice2dev/ui-core';
239
+ import { NiceOnChange } from '@nice2dev/ui-core';
240
+ import { NiceOnOpenChange } from '@nice2dev/ui-core';
241
+ import { NiceOnSelect } from '@nice2dev/ui-core';
232
242
  import { NiceOptimisticConfig } from '@nice2dev/ui-core';
233
243
  import { NiceOption } from '@nice2dev/ui-core';
234
244
  import { NiceOrganizationProfile } from '@nice2dev/ui-core';
@@ -265,6 +275,8 @@ import { NiceSSEDataSource } from '@nice2dev/ui-core';
265
275
  import { NiceSSEMessage } from '@nice2dev/ui-core';
266
276
  import { NiceSSEMessageType } from '@nice2dev/ui-core';
267
277
  import { niceStaggerDelay } from '@nice2dev/ui-core';
278
+ import { NiceStandardFieldProps } from '@nice2dev/ui-core';
279
+ import { NiceStandardProps } from '@nice2dev/ui-core';
268
280
  import { NiceStateIO } from '@nice2dev/ui-core';
269
281
  import { NiceStateSnapshot } from '@nice2dev/ui-core';
270
282
  import { NiceSwipeableListItem } from '@nice2dev/ui-core';
@@ -300,6 +312,7 @@ import { NiceThemeVariantConfigurator } from '@nice2dev/ui-core';
300
312
  import { NiceThemeVariantConfiguratorProps } from '@nice2dev/ui-core';
301
313
  import { NiceThemeVariantProvider } from '@nice2dev/ui-core';
302
314
  import { NiceThemeVariantProviderProps } from '@nice2dev/ui-core';
315
+ import { NiceTone } from '@nice2dev/ui-core';
303
316
  import { NiceTouchTarget } from '@nice2dev/ui-core';
304
317
  import { NiceTransitionState } from '@nice2dev/ui-core';
305
318
  import { NiceTranslateFn } from '@nice2dev/ui-core';
@@ -309,6 +322,7 @@ import { NiceUserMenuResponse } from '@nice2dev/ui-core';
309
322
  import { NiceUserPreferences } from '@nice2dev/ui-core';
310
323
  import { NiceUserPreferencesProvider } from '@nice2dev/ui-core';
311
324
  import { NiceUserPreferencesProviderProps } from '@nice2dev/ui-core';
325
+ import { NiceValidationStatus } from '@nice2dev/ui-core';
312
326
  import { NiceVariant } from '@nice2dev/ui-core';
313
327
  import { NiceVisuallyHidden } from '@nice2dev/ui-core';
314
328
  import { NiceWebSocketConfig } from '@nice2dev/ui-core';
@@ -501,6 +515,7 @@ import { useComponentHelp } from '@nice2dev/ui-core';
501
515
  import { useContainerSize } from '@nice2dev/ui-core';
502
516
  import { UseContainerSizeResult } from '@nice2dev/ui-core';
503
517
  import { useControlId } from '@nice2dev/ui-core';
518
+ import { useControllableState } from '@nice2dev/ui-core';
504
519
  import { useControlPreferences } from '@nice2dev/ui-core';
505
520
  import { useDarkMode } from '@nice2dev/ui-core';
506
521
  import { UseDarkModeOptions } from '@nice2dev/ui-core';
@@ -1748,6 +1763,9 @@ export { buildAriaDescribedBy }
1748
1763
 
1749
1764
  export { buildFormFieldAria }
1750
1765
 
1766
+ /** Build the iCalendar text body for the given events. */
1767
+ export declare function buildIcs(events: NiceIcsEvent[], options?: ExportIcsOptions): string;
1768
+
1751
1769
  /** Bulk operation */
1752
1770
  export declare interface BulkOperation {
1753
1771
  id: string;
@@ -2716,6 +2734,9 @@ export { createCustomDataSource }
2716
2734
  */
2717
2735
  export declare function createDocIndex(docs: ComponentDoc[], packageName: string): DocIndex;
2718
2736
 
2737
+ /** Build an empty recipe scaffold (used by NiceRecipeEditor "new" mode). */
2738
+ export declare function createEmptyRecipe(partial?: Partial<NiceRecipeModel>): NiceRecipeModel;
2739
+
2719
2740
  export { createGraphQLDataSource }
2720
2741
 
2721
2742
  export { createGraphQLSubscriptionSource }
@@ -3068,6 +3089,10 @@ export { DENSITY_VALUES }
3068
3089
 
3069
3090
  export { DensityVariant }
3070
3091
 
3092
+ export { deprecateProp }
3093
+
3094
+ export { deprecateSymbol }
3095
+
3071
3096
  /** Deserialize and validate a module manifest from JSON. */
3072
3097
  export declare function deserializeManifest(json: string): NiceModuleManifest;
3073
3098
 
@@ -3675,6 +3700,12 @@ export declare function downloadCSV<T extends Record<string, unknown>>(data: T[]
3675
3700
  */
3676
3701
  export declare function downloadHTML<T extends Record<string, unknown>>(data: T[], columns: NiceExportColumn[], options?: NiceHTMLOptions): void;
3677
3702
 
3703
+ /**
3704
+ * Trigger a browser download of the events as an `.ics` file.
3705
+ * No-op outside the browser.
3706
+ */
3707
+ export declare function downloadIcs(events: NiceIcsEvent[], filename?: string, options?: ExportIcsOptions): void;
3708
+
3678
3709
  /**
3679
3710
  * Downloads data as a JSON file.
3680
3711
  */
@@ -3717,6 +3748,24 @@ export declare interface DRMSettings {
3717
3748
  /** DRM system */
3718
3749
  export declare type DRMSystem = 'widevine' | 'fairplay' | 'playready' | 'clearkey';
3719
3750
 
3751
+ /** Dropdown horizontal alignment relative to the trigger. */
3752
+ export declare type DropdownAlign = 'auto' | 'left' | 'right';
3753
+
3754
+ /**
3755
+ * Dual-visibility props shared by NiceCountryPicker & NiceLanguagePicker.
3756
+ * "InValue" controls trigger rendering, "InMenu" controls dropdown options.
3757
+ */
3758
+ export declare interface DualVisibilityProps {
3759
+ /** Show flag inside the trigger (selected value). Default: true */
3760
+ showFlagInValue?: boolean;
3761
+ /** Show flag inside dropdown options. Default: true */
3762
+ showFlagInMenu?: boolean;
3763
+ /** Show display text (country name / language name) inside the trigger. Default: false (compact) */
3764
+ showTextInValue?: boolean;
3765
+ /** Show display text inside dropdown options. Default: true */
3766
+ showTextInMenu?: boolean;
3767
+ }
3768
+
3720
3769
  export declare const Dynamics365Connector: ConnectorDefinition;
3721
3770
 
3722
3771
  export declare interface Dynamics365ConnectorConfig extends ConnectorConfig {
@@ -4288,6 +4337,20 @@ declare type ExportFormat_2 = 'zustand' | 'redux-toolkit' | 'jotai' | 'recoil' |
4288
4337
 
4289
4338
  declare type ExportFormat_3 = 'sql' | 'json' | 'csv' | 'parquet';
4290
4339
 
4340
+ /**
4341
+ * Produce an RFC 5545 `text/calendar` Blob ready for download or attachment.
4342
+ */
4343
+ export declare function exportIcs(events: NiceIcsEvent[], options?: ExportIcsOptions): Blob;
4344
+
4345
+ export declare interface ExportIcsOptions {
4346
+ /** Calendar PRODID. Default: `-//nice2dev//NiceToDev.UI//EN`. */
4347
+ prodId?: string;
4348
+ /** X-WR-CALNAME (calendar display name). */
4349
+ calendarName?: string;
4350
+ /** Method (PUBLISH, REQUEST, CANCEL). Default omitted. */
4351
+ method?: 'PUBLISH' | 'REQUEST' | 'CANCEL' | 'REPLY';
4352
+ }
4353
+
4291
4354
  export declare interface ExportProgress {
4292
4355
  status: 'idle' | 'preparing' | 'encoding' | 'completed' | 'error';
4293
4356
  progress: number;
@@ -4609,6 +4672,33 @@ export { filterNiceThemePacksByTag }
4609
4672
 
4610
4673
  export declare type FilterType = 'brightness' | 'contrast' | 'saturation' | 'hue' | 'blur' | 'sharpen' | 'grayscale' | 'sepia' | 'invert' | 'vignette' | 'chromaKey' | 'colorCorrection';
4611
4674
 
4675
+ /**
4676
+ * Heraldically-correct flag icon rendered from `country-flag-icons` SVGs
4677
+ * (3:2 aspect ratio). Falls back to a coloured stripe swatch when the
4678
+ * ISO code is not recognised. Width is parameterised; height is always
4679
+ * `Math.round(size * 2 / 3)` to keep a true 3:2 ratio regardless of
4680
+ * caller. The SVG is inlined via `dangerouslySetInnerHTML` — content is
4681
+ * a static, audited string from the `country-flag-icons` package.
4682
+ */
4683
+ export declare const FlagIcon: default_2.FC<{
4684
+ code: string;
4685
+ size?: number;
4686
+ className?: string;
4687
+ }>;
4688
+
4689
+ /**
4690
+ * Legacy coloured-stripe swatch using the {@link getFlagColors} commons
4691
+ * palette. Kept as a fallback for unknown ISO codes and for environments
4692
+ * that cannot ship the SVG bundle. New code should prefer {@link FlagIcon}.
4693
+ *
4694
+ * @deprecated Prefer {@link FlagIcon} for accurate, heraldically-correct flags.
4695
+ */
4696
+ export declare const FlagSwatch: default_2.FC<{
4697
+ code: string;
4698
+ size?: number;
4699
+ className?: string;
4700
+ }>;
4701
+
4612
4702
  /**
4613
4703
  * Flat token map
4614
4704
  */
@@ -5583,6 +5673,30 @@ declare interface KnowledgeBaseArticle {
5583
5673
  lastUpdated: string;
5584
5674
  }
5585
5675
 
5676
+ export declare interface Language {
5677
+ /** BCP-47 language tag, e.g. 'en', 'en-US', 'pt-BR'. */
5678
+ code: string;
5679
+ /** Native language name (auto-glyph), e.g. 'Polski'. */
5680
+ nativeName: string;
5681
+ /** English language name, e.g. 'Polish'. */
5682
+ englishName: string;
5683
+ /**
5684
+ * ISO 3166-1 alpha-2 country code whose flag visually represents this
5685
+ * language entry (best-effort — language≠country, but flags are useful
5686
+ * affordances). Override per-row via `languages` prop.
5687
+ */
5688
+ flagCountryCode: string;
5689
+ }
5690
+
5691
+ export declare type LanguageDisplayName = 'native' | 'english';
5692
+
5693
+ /**
5694
+ * Curated list of common languages. Region-specific entries (en-US, en-GB,
5695
+ * pt-BR, pt-PT) included where they meaningfully differ in usage. Add more
5696
+ * via the `languages` prop or PR.
5697
+ */
5698
+ export declare const LANGUAGES: Language[];
5699
+
5586
5700
  declare interface LayoutColumn {
5587
5701
  id: string;
5588
5702
  width: number;
@@ -6589,6 +6703,9 @@ export declare type NetworkNodeCategory = 'router' | 'switch' | 'access-point' |
6589
6703
 
6590
6704
  export declare type NetworkNodeStatus = 'online' | 'offline' | 'warning';
6591
6705
 
6706
+ /** Tiny non-cryptographic id generator suitable for UI-only records. */
6707
+ export declare function newRecipeId(prefix?: string): string;
6708
+
6592
6709
  export { NICE_BREAKPOINTS }
6593
6710
 
6594
6711
  export { NICE_BUILTIN_ICONS }
@@ -7051,6 +7168,8 @@ export declare interface NiceAppManifest {
7051
7168
  tenantId?: string;
7052
7169
  }
7053
7170
 
7171
+ export { NiceAriaProps }
7172
+
7054
7173
  export { NiceArrayDataSourceConfig }
7055
7174
 
7056
7175
  export declare type NiceAuditAction = 'create' | 'update' | 'delete' | 'view' | 'export' | 'import' | 'login' | 'logout' | 'custom';
@@ -7154,6 +7273,42 @@ export declare interface NiceAuditLogProps {
7154
7273
  'data-testid'?: string;
7155
7274
  }
7156
7275
 
7276
+ export declare const NiceAuthButtons: default_2.ForwardRefExoticComponent<NiceAuthButtonsProps & default_2.RefAttributes<HTMLDivElement>>;
7277
+
7278
+ export declare interface NiceAuthButtonsProps {
7279
+ /**
7280
+ * Authenticated user — when set, renders the user-menu instead of
7281
+ * login/register buttons.
7282
+ */
7283
+ user?: NiceAuthUser;
7284
+ /** Items shown in the user-menu dropdown (only when `user` is set). */
7285
+ userMenuItems?: UserMenuItem[];
7286
+ /** Convenience handler appended as a "Profile" item if no items are given. */
7287
+ onProfile?: () => void;
7288
+ /** Convenience handler appended as a "Logout" item if no items are given. */
7289
+ onLogout?: () => void;
7290
+ /** Show the "Sign in" button when no `user`. Default: `true`. */
7291
+ showLogin?: boolean;
7292
+ /** Login button label. */
7293
+ loginLabel?: string;
7294
+ /** Login click handler. */
7295
+ onLoginClick?: () => void;
7296
+ /** Show the "Register" button when no `user`. Default: auto-true if `onRegisterClick` provided. */
7297
+ showRegister?: boolean;
7298
+ /** Register button label. */
7299
+ registerLabel?: string;
7300
+ /** Register click handler. */
7301
+ onRegisterClick?: () => void;
7302
+ /** Button size. */
7303
+ size?: NiceSize;
7304
+ /** Compact mode — hides login button text on narrow viewports (CSS-driven). */
7305
+ compact?: boolean;
7306
+ className?: string;
7307
+ style?: default_2.CSSProperties;
7308
+ id?: string;
7309
+ 'data-testid'?: string;
7310
+ }
7311
+
7157
7312
  /**
7158
7313
  * {@link NiceAuthGuard} — Protected route/section wrapper.
7159
7314
  * Checks authentication and permission/role requirements before rendering children.
@@ -7184,6 +7339,21 @@ export declare interface NiceAuthGuardProps {
7184
7339
  children: default_2.ReactNode;
7185
7340
  }
7186
7341
 
7342
+ export declare interface NiceAuthUser {
7343
+ /** Display name. */
7344
+ name: string;
7345
+ /** Avatar image URL. */
7346
+ avatarUrl?: string;
7347
+ /** Initials fallback (auto-derived from `name` when omitted). */
7348
+ initials?: string;
7349
+ /** Optional email address shown in the user-menu header. */
7350
+ email?: string;
7351
+ /** Optional role/title shown in the user-menu header. */
7352
+ role?: string;
7353
+ /** Online status indicator. */
7354
+ status?: 'online' | 'away' | 'busy' | 'offline';
7355
+ }
7356
+
7187
7357
  export declare const NiceAutocomplete: default_2.FC<NiceAutocompleteProps>;
7188
7358
 
7189
7359
  /** Props for the {@link NiceAutocomplete} component — a text input with filtered suggestion dropdown and optional multi-select. */
@@ -7853,6 +8023,10 @@ export declare interface NiceChangelogEntry {
7853
8023
  changes: string[];
7854
8024
  }
7855
8025
 
8026
+ export { NiceChangeMeta }
8027
+
8028
+ export { NiceChangeReason }
8029
+
7856
8030
  export declare const NiceChart: default_2.FC<NiceChartProps>;
7857
8031
 
7858
8032
  export declare const NiceChartAI: default_2.ForwardRefExoticComponent<NiceChartAIProps & default_2.RefAttributes<NiceChartAIRef>>;
@@ -8172,6 +8346,18 @@ declare interface NiceCodeEditorAIRef extends NiceCodeEditorRef {
8172
8346
  dismissCompletion: () => void;
8173
8347
  }
8174
8348
 
8349
+ declare interface NiceCodeEditorLspConfig {
8350
+ /**
8351
+ * Language Server Protocol bridge configuration.
8352
+ * url: WebSocket endpoint of the LSP server
8353
+ * language: Monaco language id
8354
+ * initOptions: Optional initialization options for the LSP
8355
+ */
8356
+ url: string;
8357
+ language: string;
8358
+ initOptions?: any;
8359
+ }
8360
+
8175
8361
  export declare interface NiceCodeEditorOptions {
8176
8362
  /** Read only mode */
8177
8363
  readOnly?: boolean;
@@ -8286,6 +8472,10 @@ export declare interface NiceCodeEditorProps {
8286
8472
  showToolbar?: boolean;
8287
8473
  /** Show status bar at bottom */
8288
8474
  showStatusBar?: boolean;
8475
+ /**
8476
+ * LSP bridge configuration. If provided, connects Monaco to the LSP server for enhanced language features.
8477
+ */
8478
+ lsp?: NiceCodeEditorLspConfig;
8289
8479
  /** Additional CSS class */
8290
8480
  className?: string;
8291
8481
  /** Test ID */
@@ -9150,7 +9340,7 @@ declare type NiceCountdownFormat =
9150
9340
 
9151
9341
  export declare const NiceCountryPicker: default_2.FC<NiceCountryPickerProps>;
9152
9342
 
9153
- export declare interface NiceCountryPickerProps extends NiceFormFieldProps {
9343
+ export declare interface NiceCountryPickerProps extends NiceFormFieldProps, DualVisibilityProps {
9154
9344
  /** Selected country code */
9155
9345
  value?: string;
9156
9346
  /** Default country code (uncontrolled) */
@@ -9163,10 +9353,36 @@ export declare interface NiceCountryPickerProps extends NiceFormFieldProps {
9163
9353
  showSearch?: boolean;
9164
9354
  /** Search placeholder */
9165
9355
  searchPlaceholder?: string;
9166
- /** Show dial code */
9356
+ /**
9357
+ * @deprecated Use `showDialCodeInValue` and `showDialCodeInMenu` for fine-grained control.
9358
+ * When set, applies to both trigger and menu (legacy behaviour).
9359
+ */
9167
9360
  showDialCode?: boolean;
9168
- /** Show flag */
9361
+ /**
9362
+ * @deprecated Use `showFlagInValue` and `showFlagInMenu` for fine-grained control.
9363
+ * When set, applies to both trigger and menu (legacy behaviour).
9364
+ */
9169
9365
  showFlag?: boolean;
9366
+ /** Show dial code in trigger (selected value). Default: false (compact) */
9367
+ showDialCodeInValue?: boolean;
9368
+ /** Show dial code in dropdown options. Default: true */
9369
+ showDialCodeInMenu?: boolean;
9370
+ /** Show ISO 3166-1 alpha-2 code (e.g. "PL") in trigger. Default: false. */
9371
+ showCodeInValue?: boolean;
9372
+ /** Show ISO 3166-1 alpha-2 code (e.g. "PL") in dropdown options. Default: false. */
9373
+ showCodeInMenu?: boolean;
9374
+ /**
9375
+ * Compact mode: minimal trigger width (flag + chevron only) and smart
9376
+ * dropdown alignment. Equivalent to setting all `*InValue` props to
9377
+ * false (except flag) and ignoring `controlWidth`. Default: false.
9378
+ */
9379
+ compact?: boolean;
9380
+ /**
9381
+ * Dropdown horizontal alignment relative to the trigger. `'auto'` picks
9382
+ * the side with more available viewport space (right-edge preferred).
9383
+ * Default: `'auto'` in compact mode, `'left'` otherwise.
9384
+ */
9385
+ dropdownAlign?: DropdownAlign;
9170
9386
  /** Filter to only show certain countries */
9171
9387
  countries?: string[];
9172
9388
  /** Priority countries shown at top */
@@ -9431,7 +9647,7 @@ export declare interface NiceDataDiffViewerProps extends NiceBaseProps {
9431
9647
  onSelectRecord?: (table: string, recordId: string) => void;
9432
9648
  }
9433
9649
 
9434
- export declare function NiceDataGrid<T extends Record<string, any>>({ columns, data: dataProp, keyField, dataSource, sortable, sortField: controlledSortField, sortDirection: controlledSortDir, onSort, 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, bulkActions, onBulkDelete, exportCsv, exportFilename, detailRow, expandedRowKeys: controlledExpandedRows, onExpandedRowChange, columnReorder, 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, stateStorageKey, initialState, onStateChange, flashRowKeys, flashDuration, autoFitColumns, showColumnStats, rowIndicator, frozenRows, className, style, accessMode, id, displayStyle, }: NiceDataGridProps<T>): JSX_2.Element | null;
9650
+ export declare function NiceDataGrid<T extends Record<string, any>>({ columns, data: dataProp, keyField, dataSource, sortable, sortField: controlledSortField, sortDirection: controlledSortDir, onSort, 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>): JSX_2.Element | null;
9435
9651
 
9436
9652
  export declare namespace NiceDataGrid {
9437
9653
  var displayName: string;
@@ -9462,7 +9678,7 @@ export declare interface NiceDataGridAIProps<T extends Record<string, unknown>>
9462
9678
  exampleQueries?: string[];
9463
9679
  }
9464
9680
 
9465
- declare interface NiceDataGridAIRef<T> {
9681
+ declare interface NiceDataGridAIRef<_T> {
9466
9682
  /** Apply natural language filter */
9467
9683
  applyNLFilter: (query: string) => Promise<void>;
9468
9684
  /** Clear AI filters */
@@ -9780,6 +9996,16 @@ export declare interface NiceDatePickerProps extends NiceFormFieldProps {
9780
9996
  * to the browser locale (`navigator.language`).
9781
9997
  */
9782
9998
  displayLocale?: string;
9999
+ /**
10000
+ * Enable date-shortcut keys (default: `true`):
10001
+ * - `T` — set to today
10002
+ * - `+`/`=` then `1` (or any digit) — today + N days
10003
+ * - `-` then `1` — today - N days
10004
+ * - `+`/`-` then `M` — ± 1 month
10005
+ * - `+`/`-` then `Y` — ± 1 year
10006
+ * Only fires for date / datetime / month presets.
10007
+ */
10008
+ keyboardShortcuts?: boolean;
9783
10009
  }
9784
10010
 
9785
10011
  export declare const NiceDateRangeBox: default_2.FC<NiceDateRangeBoxProps>;
@@ -10141,7 +10367,7 @@ export declare interface NiceDocumentApprovalFlowProps extends NiceFormFieldProp
10141
10367
  locale?: string;
10142
10368
  }
10143
10369
 
10144
- export declare function NiceDocumentationViewer({ doc, component, renderPreview, defaultTab, sections, compact, enableCodeEdit, className, style, }: NiceDocumentationViewerProps): JSX_2.Element;
10370
+ export declare function NiceDocumentationViewer({ doc, component: _component, renderPreview: _renderPreview, defaultTab, sections, compact, enableCodeEdit, className, style, }: NiceDocumentationViewerProps): JSX_2.Element;
10145
10371
 
10146
10372
  export declare interface NiceDocumentationViewerProps {
10147
10373
  /** Component documentation data */
@@ -10987,6 +11213,10 @@ export declare interface NiceFieldExpectation {
10987
11213
 
10988
11214
  export { NiceFieldState }
10989
11215
 
11216
+ export { NiceFieldStatus }
11217
+
11218
+ export { NiceFieldStatusProps }
11219
+
10990
11220
  /** A custom column in the {@link NiceFileManager} detail view. */
10991
11221
  export declare interface NiceFileColumnDef {
10992
11222
  /** Column key. */
@@ -11048,6 +11278,8 @@ export declare interface NiceFileManagerProps extends NiceBaseProps {
11048
11278
  viewMode?: 'list' | 'detail' | 'thumbnails';
11049
11279
  selectable?: boolean;
11050
11280
  showBreadcrumb?: boolean;
11281
+ /** Show top toolbar with single/dual-pane switch + view mode toggles + search */
11282
+ showTopToolbar?: boolean;
11051
11283
  /** Show function-key toolbar at bottom (dual-pane style) */
11052
11284
  showFnToolbar?: boolean;
11053
11285
  /** Show status bar with selection summary */
@@ -11084,6 +11316,10 @@ export declare interface NiceFileManagerProps extends NiceBaseProps {
11084
11316
  onRefresh?: (panel?: NiceFilePanel) => void;
11085
11317
  /** Sort change */
11086
11318
  onSortChange?: (sort: NiceFileSort, panel?: NiceFilePanel) => void;
11319
+ /** Top toolbar — toggle dual-pane mode (called when user clicks Single/Dual buttons) */
11320
+ onDualPaneChange?: (dual: boolean) => void;
11321
+ /** Top toolbar — change view mode */
11322
+ onViewModeChange?: (mode: 'list' | 'detail' | 'thumbnails') => void;
11087
11323
  }
11088
11324
 
11089
11325
  /** Active panel identifier for dual-pane {@link NiceFileManager}. */
@@ -12127,6 +12363,31 @@ export { NiceIconResolver }
12127
12363
 
12128
12364
  export { NiceIconSize }
12129
12365
 
12366
+ /**
12367
+ * exportIcs — produce an RFC 5545 (`text/calendar`) Blob from a generic
12368
+ * event list. Useful for "Add to calendar" exports from any view that has
12369
+ * date+time data (NiceCalendar, NiceGantt, etc.).
12370
+ *
12371
+ * @example
12372
+ * const blob = exportIcs([{ uid: '1', summary: 'Meeting', start: new Date(), end: new Date(Date.now()+3600e3) }]);
12373
+ */
12374
+ export declare interface NiceIcsEvent {
12375
+ uid: string;
12376
+ summary: string;
12377
+ start: Date;
12378
+ end?: Date;
12379
+ description?: string;
12380
+ location?: string;
12381
+ url?: string;
12382
+ /** RFC 5545 STATUS. */
12383
+ status?: 'TENTATIVE' | 'CONFIRMED' | 'CANCELLED';
12384
+ /** RRULE (e.g. `FREQ=WEEKLY;BYDAY=MO,WE`). */
12385
+ rrule?: string;
12386
+ /** All-day event — emits VALUE=DATE properties. */
12387
+ allDay?: boolean;
12388
+ categories?: string[];
12389
+ }
12390
+
12130
12391
  declare type NiceImageAnnotationType = 'text' | 'rect' | 'circle' | 'line' | 'arrow';
12131
12392
 
12132
12393
  export declare const NiceImageAnnotator: default_2.ForwardRefExoticComponent<NiceImageAnnotatorProps & default_2.RefAttributes<NiceImageAnnotatorRef>>;
@@ -12300,6 +12561,31 @@ export { NiceInfiniteScrollConfig }
12300
12561
 
12301
12562
  export { NiceInfiniteScrollState }
12302
12563
 
12564
+ /**
12565
+ * Shared meal/recipe/ingredient models.
12566
+ *
12567
+ * Used by:
12568
+ * - NiceRecipe (planning) — display
12569
+ * - NiceRecipeEditor (tools) — editing
12570
+ * - NiceScheduler (planning) — when an event has `eventType: 'recipe'`
12571
+ */
12572
+ /** A single measurable component of a recipe (e.g. "200 g flour"). */
12573
+ export declare interface NiceIngredient {
12574
+ id: string;
12575
+ /** Display name, e.g. "All-purpose flour". */
12576
+ name: string;
12577
+ /** Numeric amount (parsed). Use `unit` for the measurement. */
12578
+ quantity?: number;
12579
+ /** Free-form unit string: "g", "ml", "tbsp", "cup", "pcs". */
12580
+ unit?: string;
12581
+ /** Free-form notes shown next to the ingredient ("sifted", "room temp"). */
12582
+ notes?: string;
12583
+ /** Optional grouping ("Dough", "Filling", "Topping"). */
12584
+ group?: string;
12585
+ /** Marks the ingredient as completed in interactive shopping/cook mode. */
12586
+ checked?: boolean;
12587
+ }
12588
+
12303
12589
  export { NiceInlineHelp }
12304
12590
 
12305
12591
  export { NiceInlineHelpProps }
@@ -12496,6 +12782,8 @@ export declare interface NiceKanbanBoardProps extends NiceBaseProps, TracelessSt
12496
12782
  size?: NiceSize;
12497
12783
  /** Allow columns to be collapsed */
12498
12784
  collapsible?: boolean;
12785
+ /** Layout mode — `scroll` (default, horizontal scroll when overflowing) or `responsive` (columns wrap to fit container width). */
12786
+ layoutMode?: NiceKanbanLayoutMode;
12499
12787
  /** View mode (default, compact, detailed) */
12500
12788
  viewMode?: NiceKanbanViewMode;
12501
12789
  /** Callback when view mode changes */
@@ -12550,6 +12838,11 @@ export declare interface NiceKanbanColumn {
12550
12838
  limit?: number;
12551
12839
  }
12552
12840
 
12841
+ /** Layout mode for the kanban board container.
12842
+ * - `scroll`: Columns keep their min/max width and the board scrolls horizontally when they don't fit (default).
12843
+ * - `responsive`: Columns wrap onto multiple rows and flex-grow to fill the available width — no horizontal overflow. */
12844
+ declare type NiceKanbanLayoutMode = 'scroll' | 'responsive';
12845
+
12553
12846
  /** Persisted state for NiceKanbanBoard */
12554
12847
  export declare interface NiceKanbanPersistedState {
12555
12848
  /** Collapsed column keys */
@@ -12605,6 +12898,52 @@ export declare interface NiceKnobProps extends Omit<NiceFormFieldProps, 'size' |
12605
12898
  isLabelCentered?: boolean;
12606
12899
  }
12607
12900
 
12901
+ export declare const NiceLanguagePicker: default_2.FC<NiceLanguagePickerProps>;
12902
+
12903
+ export declare interface NiceLanguagePickerProps extends NiceFormFieldProps, DualVisibilityProps {
12904
+ /** Selected language code (BCP-47) */
12905
+ value?: string;
12906
+ /** Default selected code (uncontrolled) */
12907
+ defaultValue?: string;
12908
+ /** Callback when selection changes */
12909
+ onChange?: (language: Language | null) => void;
12910
+ /** Placeholder text shown when nothing selected (ignored in compact mode) */
12911
+ placeholder?: string;
12912
+ /** Enable search */
12913
+ showSearch?: boolean;
12914
+ /** Search placeholder */
12915
+ searchPlaceholder?: string;
12916
+ /** Show BCP-47 code in trigger. Default: false (compact) */
12917
+ showCodeInValue?: boolean;
12918
+ /** Show BCP-47 code in dropdown options. Default: true */
12919
+ showCodeInMenu?: boolean;
12920
+ /** Which name to render. Default: 'native' (best-practice for language switchers). */
12921
+ displayName?: LanguageDisplayName;
12922
+ /**
12923
+ * Compact mode: minimal trigger width (flag + chevron only) and smart
12924
+ * dropdown alignment. Default: false.
12925
+ */
12926
+ compact?: boolean;
12927
+ /**
12928
+ * Dropdown horizontal alignment relative to trigger. `'auto'` picks the
12929
+ * side with more available viewport space. Default: `'auto'` in compact
12930
+ * mode, `'left'` otherwise.
12931
+ */
12932
+ dropdownAlign?: DropdownAlign;
12933
+ /** Custom language list (overrides `LANGUAGES`). */
12934
+ languages?: Language[];
12935
+ /** Filter the default list to only show certain codes. */
12936
+ allowedCodes?: string[];
12937
+ /** Priority codes shown at the top. */
12938
+ priorityCodes?: string[];
12939
+ /** Allow clearing selection */
12940
+ allowClear?: boolean;
12941
+ /** Size variant */
12942
+ size?: NiceSize;
12943
+ /** Test ID */
12944
+ 'data-testid'?: string;
12945
+ }
12946
+
12608
12947
  /**
12609
12948
  * {@link NiceLeaderboard} — Ranked list of players/entities with scores, deltas, avatars, and stat columns.
12610
12949
  */
@@ -13056,7 +13395,7 @@ export declare const NiceLockButton: default_2.FC<NiceLockButtonProps>;
13056
13395
 
13057
13396
  export declare interface NiceLockButtonProps extends NiceBaseProps {
13058
13397
  isLocked: boolean;
13059
- onToggle: (locked: boolean) => void;
13398
+ onLockChange: (locked: boolean) => void;
13060
13399
  requireConfirm?: boolean;
13061
13400
  confirmCode?: string;
13062
13401
  size?: NiceSize;
@@ -13107,6 +13446,57 @@ export declare interface NiceLoginFormProps extends NiceBaseProps {
13107
13446
  passwordPlaceholder?: string;
13108
13447
  }
13109
13448
 
13449
+ export declare const NiceLogo: default_2.ForwardRefExoticComponent<NiceLogoProps & default_2.RefAttributes<HTMLElement>>;
13450
+
13451
+ export declare interface NiceLogoProps {
13452
+ /** Image URL to render as `<img>`. Has priority over `icon` and `variant`. */
13453
+ src?: string;
13454
+ /** Custom icon node (SVG / NiceIcon / emoji). Has priority over `variant`. */
13455
+ icon?: default_2.ReactNode;
13456
+ /**
13457
+ * Pre-built brand mark variant from the OmniVerk family.
13458
+ * Used when neither `src` nor `icon` is provided.
13459
+ * Default: `'mark'`.
13460
+ */
13461
+ variant?: NiceLogoVariant;
13462
+ /** Brand name rendered next to the icon. Hidden if `iconOnly` is true. */
13463
+ text?: string;
13464
+ /** Render only the icon (no text). */
13465
+ iconOnly?: boolean;
13466
+ /** Render only the text (no icon). */
13467
+ textOnly?: boolean;
13468
+ /**
13469
+ * Logo height in pixels — width is derived to preserve aspect ratio.
13470
+ * Accepts presets (`xs`/`sm`/`md`/`lg`/`xl`) or a raw number.
13471
+ * Default: `'md'` (32 px).
13472
+ */
13473
+ size?: NiceLogoSize;
13474
+ /**
13475
+ * Render as `<a href>` link.
13476
+ * If neither `href` nor `onClick` is set, the logo is a static `<span>`.
13477
+ */
13478
+ href?: string;
13479
+ /** Click handler — renders as `<button>`. */
13480
+ onClick?: () => void;
13481
+ /** Accessible label (default: `text` or "Brand"). */
13482
+ ariaLabel?: string;
13483
+ className?: string;
13484
+ style?: default_2.CSSProperties;
13485
+ id?: string;
13486
+ 'data-testid'?: string;
13487
+ }
13488
+
13489
+ export declare type NiceLogoSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | number;
13490
+
13491
+ /**
13492
+ * Brand mark variant.
13493
+ * - `mark` (default): symbol only — diamond + triangle (NtdOmniVerk).
13494
+ * - `badge`: rounded-square enclosed mark (NtdOmniVerkBadge), good for favicons / chips.
13495
+ * - `spinner`: animated rotating mark (NtdOmniVerkSpinner) — use for loading states.
13496
+ * - `logo`: full mark + wordmark side-by-side (NtdOmniVerkLogo).
13497
+ */
13498
+ export declare type NiceLogoVariant = 'mark' | 'badge' | 'spinner' | 'logo';
13499
+
13110
13500
  export declare const NiceLookup: default_2.FC<NiceLookupProps>;
13111
13501
 
13112
13502
  /** Column definition for the mini-grid lookup mode. */
@@ -13176,7 +13566,7 @@ export declare interface NiceLowCodeStudioProps {
13176
13566
  className?: string;
13177
13567
  }
13178
13568
 
13179
- export declare function NiceMAM({ assets: initialAssets, folders: initialFolders, collections: initialCollections, people: initialPeople, currentUser, uploadEndpoint, enableAITagging, enableFaceRecognition, maxUploadSize, allowedTypes, onUpload, onDelete, onAnalyze, onDetectFaces, onSelectionChange, onPreview, renderAssetCard, className, style, children, ...baseProps }: NiceMAMProps): JSX_2.Element;
13569
+ export declare function NiceMAM({ assets: initialAssets, folders: initialFolders, collections: initialCollections, people: initialPeople, currentUser, uploadEndpoint: _uploadEndpoint, enableAITagging, enableFaceRecognition, maxUploadSize: _maxUploadSize, allowedTypes: _allowedTypes, onUpload: _onUpload, onDelete, onAnalyze, onDetectFaces, onSelectionChange: _onSelectionChange, onPreview, renderAssetCard, className, style, children, ...baseProps }: NiceMAMProps): JSX_2.Element;
13180
13570
 
13181
13571
  export declare interface NiceMAMProps extends NiceBaseProps {
13182
13572
  /** Initial assets */
@@ -13413,50 +13803,50 @@ export declare interface NiceMdiWorkspaceProps extends NiceBaseProps {
13413
13803
  unsavedWarningMessage?: string;
13414
13804
  }
13415
13805
 
13416
- export declare const NiceMegaMenu: default_2.ForwardRefExoticComponent<NiceMegaMenuProps & default_2.RefAttributes<HTMLDivElement>>;
13417
-
13418
- /** A column within a {@link NiceMegaMenuPanel}. */
13419
- export declare interface NiceMegaMenuColumn {
13420
- /** Optional column header text. */
13421
- header?: string;
13422
- /** Menu items in this column. */
13423
- items: NiceMegaMenuItem[];
13424
- }
13425
-
13426
- /** A clickable item inside a {@link NiceMegaMenuColumn}. */
13427
- export declare interface NiceMegaMenuItem {
13428
- /** Unique key. */
13429
- key: string;
13430
- /** Display label. */
13431
- label: string;
13432
- /** Optional icon. */
13433
- icon?: default_2.ReactNode;
13434
- /** If set, renders the item as a link. */
13435
- href?: string;
13436
- /** Click handler. */
13437
- onClick?: () => void;
13438
- /** Disable the item. */
13439
- disabled?: boolean;
13806
+ /** A planned meal references one or more recipes. */
13807
+ export declare interface NiceMeal {
13808
+ id: string;
13809
+ /** Display name, e.g. "Sunday Brunch". */
13810
+ name: string;
13811
+ /** Date/time the meal is served. */
13812
+ servedAt?: Date;
13813
+ kind?: NiceMealKind;
13814
+ /** Recipes that compose this meal. */
13815
+ recipeIds: string[];
13816
+ /** Optional override of total servings for this meal. */
13817
+ servings?: number;
13818
+ notes?: string;
13440
13819
  }
13441
13820
 
13442
- /** A top-level panel (mega dropdown) in the {@link NiceMegaMenu}. */
13443
- export declare interface NiceMegaMenuPanel {
13444
- /** Unique key. */
13445
- key: string;
13446
- /** Panel trigger label. */
13447
- label: string;
13448
- /** Multi-column layout. */
13449
- columns: NiceMegaMenuColumn[];
13450
- /** Fully custom panel renderer (overrides columns). */
13451
- renderPanel?: () => default_2.ReactNode;
13452
- }
13821
+ /** Meal kind used by meal planners. */
13822
+ export declare type NiceMealKind = 'breakfast' | 'lunch' | 'dinner' | 'snack' | 'other';
13453
13823
 
13454
- /** Props for the {@link NiceMegaMenu} component — a desktop mega-dropdown navigation bar. */
13455
- export declare interface NiceMegaMenuProps extends NiceBaseProps {
13456
- /** Panel definitions. */
13457
- items: NiceMegaMenuPanel[];
13458
- /** Size preset. */
13459
- size?: NiceSize;
13824
+ /**
13825
+ * Weekly meal planner rows are meal kinds (breakfast/lunch/dinner by
13826
+ * default), columns are the seven days starting at {@link weekStart}.
13827
+ * Each cell shows the meals served at that day+kind; users can add a
13828
+ * recipe from the pool via the cell's `+` picker, or remove individual
13829
+ * meal cards. Pure-client state (raises {@link onChange} with the new
13830
+ * meals array).
13831
+ *
13832
+ * Pairs naturally with `NiceScheduler` — meal `servedAt` dates can be
13833
+ * surfaced as scheduler events upstream.
13834
+ */
13835
+ export declare const NiceMealPlan: default_2.FC<NiceMealPlanProps>;
13836
+
13837
+ export declare interface NiceMealPlanProps extends NiceBaseProps {
13838
+ /** Pool of recipes the user can pick from. */
13839
+ recipes: NiceRecipeModel[];
13840
+ /** Planned meals. */
13841
+ meals: NiceMeal[];
13842
+ /** Called whenever the meal list changes. */
13843
+ onChange?: (meals: NiceMeal[]) => void;
13844
+ /** First day of the week to render (defaults to today's Monday). */
13845
+ weekStart?: Date;
13846
+ /** Which meal-kind rows to show (default: breakfast/lunch/dinner). */
13847
+ rows?: NiceMealKind[];
13848
+ /** Read-only mode (no add/remove/move). */
13849
+ readOnly?: boolean;
13460
13850
  }
13461
13851
 
13462
13852
  export declare const NiceMention: default_2.ForwardRefExoticComponent<NiceMentionProps & default_2.RefAttributes<HTMLTextAreaElement>>;
@@ -13487,34 +13877,146 @@ export declare interface NiceMentionSuggestion {
13487
13877
 
13488
13878
  export declare const NiceMenu: default_2.FC<NiceMenuProps>;
13489
13879
 
13490
- /** A single item (or sub-menu) in the {@link NiceMenu}. */
13880
+ export declare type NiceMenuAlign = 'start' | 'center' | 'end';
13881
+
13882
+ export declare type NiceMenuDensity = 'compact' | 'normal' | 'comfortable';
13883
+
13884
+ /**
13885
+ * A single entry in {@link NiceMenu}. Both legacy (`key` + `text` + `items`)
13886
+ * and new (`id` + `label` + `children`) shapes are accepted; new fields
13887
+ * take precedence when both are supplied.
13888
+ */
13491
13889
  export declare interface NiceMenuItem {
13492
- /** Unique key. */
13493
- key: string;
13494
- /** Display text. */
13495
- text: string;
13496
- /** Icon element. */
13890
+ /** New canonical identifier. */
13891
+ id?: string;
13892
+ /** Legacy alias for `id`. */
13893
+ key?: string;
13894
+ /** New canonical label (string or arbitrary node). */
13895
+ label?: default_2.ReactNode;
13896
+ /** Legacy alias for `label`. */
13897
+ text?: string;
13898
+ /** Optional small description shown under the label inside dropdown panels. */
13899
+ description?: default_2.ReactNode;
13900
+ /** Leading icon. */
13497
13901
  icon?: default_2.ReactNode;
13498
- /** Disable this item. */
13902
+ /** Optional badge (string / number) shown to the right of the label. */
13903
+ badge?: default_2.ReactNode;
13904
+ /** When set, renders the entry as an `<a>`. */
13905
+ href?: string;
13906
+ /** Anchor target. */
13907
+ target?: string;
13908
+ /** Anchor rel. */
13909
+ rel?: string;
13910
+ /** Click handler. */
13911
+ onClick?: (event: default_2.MouseEvent) => void;
13912
+ /** Disable the entry. */
13499
13913
  disabled?: boolean;
13500
- /** Nested sub-menu items. */
13914
+ /** Render the entry as a danger / destructive action. */
13915
+ danger?: boolean;
13916
+ /** When `true`, render a horizontal divider instead of an entry (panel-only). */
13917
+ divider?: boolean;
13918
+ /** New canonical children list (only the first level of nesting opens a flyout). */
13919
+ children?: NiceMenuItem[];
13920
+ /** Legacy alias for `children`. */
13501
13921
  items?: NiceMenuItem[];
13502
- /** Click handler. */
13503
- onClick?: () => void;
13922
+ /** Tooltip / `aria-label` override. */
13923
+ ariaLabel?: string;
13504
13924
  }
13505
13925
 
13506
- /** Props for the {@link NiceMenu} component — a horizontal or vertical navigation menu with nested sub-menus. */
13926
+ export declare type NiceMenuOrientation = 'horizontal' | 'vertical';
13927
+
13507
13928
  export declare interface NiceMenuProps extends NiceBaseProps {
13508
- /** Size variant. */
13509
- size?: NiceSize;
13510
13929
  /** Menu items. */
13511
13930
  items: NiceMenuItem[];
13512
13931
  /** Layout direction. */
13513
- orientation?: 'horizontal' | 'vertical';
13514
- /** Called when any item is clicked. */
13515
- onItemClick?: (item: NiceMenuItem) => void;
13932
+ orientation?: NiceMenuOrientation;
13933
+ /** Visual style. */
13934
+ variant?: NiceMenuVariant;
13935
+ /** Density preset (paddings + font size). */
13936
+ density?: NiceMenuDensity;
13937
+ /** Size preset. */
13938
+ size?: NiceSize;
13939
+ /** Stretch top-level items to fill the container. */
13940
+ fullWidth?: boolean;
13941
+ /** Show vertical separators between top items. */
13942
+ showDividers?: boolean;
13943
+ /** Top-item alignment for dropdown panels. */
13944
+ panelAlign?: NiceMenuAlign;
13945
+ /** Min width for dropdown / sub-panel (px). */
13946
+ panelMinWidth?: number;
13947
+ /** Max width for dropdown / sub-panel (px). */
13948
+ panelMaxWidth?: number;
13949
+ /**
13950
+ * Gap (in px or any CSS length) between top-level items. Use `0` for
13951
+ * a fully flush bar (e.g. tab-bar look). Default: density-driven (`4px`).
13952
+ */
13953
+ itemGap?: number | string;
13954
+ /**
13955
+ * Horizontal padding inside each top-level button. Overrides density.
13956
+ * Accepts a number (treated as `px`) or any CSS length.
13957
+ */
13958
+ paddingX?: number | string;
13959
+ /**
13960
+ * Vertical padding inside each top-level button. Overrides density.
13961
+ * Accepts a number (treated as `px`) or any CSS length.
13962
+ */
13963
+ paddingY?: number | string;
13964
+ /**
13965
+ * Render dropdown / sub-panels in a `document.body` portal so the menu
13966
+ * never gets clipped by `overflow: hidden` ancestors. Default: `true`.
13967
+ * Set `false` to fall back to the legacy absolute-positioned panel.
13968
+ */
13969
+ portal?: boolean;
13970
+ /**
13971
+ * z-index applied to the portalled dropdown panel. Default: `1100`.
13972
+ */
13973
+ panelZIndex?: number;
13974
+ /** Custom arrow node for items with children. Default: `▾`. */
13975
+ arrowIcon?: default_2.ReactNode;
13976
+ /** Custom flyout arrow shown next to nested items. Default: `▸`. */
13977
+ flyoutArrowIcon?: default_2.ReactNode;
13978
+ /** Close the panel after selecting any leaf entry. Default: `true`. */
13979
+ closeOnSelect?: boolean;
13980
+ /**
13981
+ * How to open dropdown panels:
13982
+ * - `click` (default) — toggle on trigger click only.
13983
+ * - `hover` — open on pointer-enter, close on pointer-leave (after `closeDelay`).
13984
+ * - `both` — opens on hover *and* click (best-of-both for mega-menus).
13985
+ */
13986
+ openTrigger?: 'click' | 'hover' | 'both';
13987
+ /** Delay (ms) before opening on hover. Default: `120`. */
13988
+ openDelay?: number;
13989
+ /** Delay (ms) before closing after pointer leaves the menu+panel. Default: `180`. */
13990
+ closeDelay?: number;
13991
+ /** Notified whenever the open trigger id changes (null = closed). */
13992
+ onOpenChange?: (id: string | null) => void;
13993
+ /** Highlight the matching id (or any of its ancestors). */
13994
+ activeId?: string;
13995
+ /** Legacy alias for `activeId`. */
13996
+ activeKey?: string;
13997
+ /** Called when any leaf is clicked. */
13998
+ onItemClick?: (item: NiceMenuItem, event: default_2.MouseEvent) => void;
13999
+ /** Accessible name for the wrapper `<nav>`. */
14000
+ ariaLabel?: string;
14001
+ /** Optional renderer for top-level trigger label (allows wrapping with i18n components). */
14002
+ renderTriggerLabel?: (item: NiceMenuItem) => default_2.ReactNode;
14003
+ /** Optional renderer for panel-entry label. */
14004
+ renderEntryLabel?: (item: NiceMenuItem) => default_2.ReactNode;
13516
14005
  }
13517
14006
 
14007
+ /**
14008
+ * Visual style for top-level triggers.
14009
+ * - `separated` — soft buttons with gap (default-ish)
14010
+ * - `group` — flush button-group with shared border
14011
+ * - `pills` — rounded pills, primary fill on active
14012
+ * - `ghost` — chrome-less, hover only (used by NiceTopNav)
14013
+ * - `solid` — opaque buttons on `--bg-elevated`
14014
+ * - `underline` — flat with animated underline on hover/active
14015
+ * - `tabs` — tab-bar look (top-rounded, bottom border)
14016
+ * - `glass` — translucent blurred background
14017
+ */
14018
+ export declare type NiceMenuVariant = 'separated' | 'group' | 'pills' | 'ghost' | 'solid' | 'underline' | 'tabs' | 'glass' | 'bordered' | 'borderless';
14019
+
13518
14020
  export declare const NiceMergeRequestBuilder: default_2.FC<NiceMergeRequestBuilderProps>;
13519
14021
 
13520
14022
  export declare interface NiceMergeRequestBuilderProps extends NiceBaseProps {
@@ -14075,29 +14577,220 @@ export declare interface NiceNavbarProps extends NiceFormFieldProps {
14075
14577
  onBrandClick?: () => void;
14076
14578
  }
14077
14579
 
14078
- export declare const NiceNetworkDiscoveryPanel: default_2.FC<NiceNetworkDiscoveryPanelProps>;
14580
+ export declare const NiceNavMenu: default_2.ForwardRefExoticComponent<NiceNavMenuProps & default_2.RefAttributes<HTMLElement>>;
14079
14581
 
14080
- export declare interface NiceNetworkDiscoveryPanelProps extends NiceBaseProps {
14081
- nodes: NiceNetworkNode[];
14082
- topology?: NiceTopologyData;
14083
- onScan: (subnet?: string) => Promise<void>;
14084
- onNodeClick: (nodeId: string) => void;
14085
- onNodeAction: (nodeId: string, action: string) => void;
14086
- showTopologyView?: boolean;
14087
- showMapView?: boolean;
14088
- showListView?: boolean;
14089
- autoRefreshMs?: number;
14090
- }
14582
+ export declare type NiceNavMenuAlign = 'start' | 'end' | 'auto';
14091
14583
 
14092
- export declare interface NiceNetworkNode {
14584
+ export declare interface NiceNavMenuItem {
14585
+ /** Stable id used for active-marking and keyboard focus. */
14093
14586
  id: string;
14094
- hostname?: string;
14095
- ipAddress: string;
14096
- macAddress?: string;
14097
- vendor?: string;
14098
- category: NetworkNodeCategory;
14099
- status: NetworkNodeStatus;
14100
- firstSeen: string;
14587
+ /** Displayed label. */
14588
+ label: default_2.ReactNode;
14589
+ /** Optional icon (emoji, SVG node, NiceIcon). */
14590
+ icon?: default_2.ReactNode;
14591
+ /** Navigation href (rendered as `<a>` when no children). */
14592
+ href?: string;
14593
+ /** Anchor `target` attribute (only when `href` is set). */
14594
+ target?: '_self' | '_blank' | '_parent' | '_top';
14595
+ /** Anchor `rel` attribute (only when `href` is set). */
14596
+ rel?: string;
14597
+ /** Click handler (rendered as `<button>` when no `href`). */
14598
+ onClick?: (e: default_2.MouseEvent) => void;
14599
+ /** Disable the item. */
14600
+ disabled?: boolean;
14601
+ /** Render as a danger action (red text). */
14602
+ danger?: boolean;
14603
+ /** Render as a divider (label/icon ignored). */
14604
+ divider?: boolean;
14605
+ /** Optional badge node rendered to the right of the label. */
14606
+ badge?: default_2.ReactNode;
14607
+ /** Optional secondary text shown under the label inside dropdowns. */
14608
+ description?: string;
14609
+ /** Sub-items (only honored at level-1 to produce a level-2 flyout). */
14610
+ children?: NiceNavMenuItem[];
14611
+ /**
14612
+ * **Mega menu** — when set on a top-level item, opens a FULL-WIDTH panel
14613
+ * anchored to the bar's bottom edge instead of a floating dropdown. Use for
14614
+ * marketing/SaaS navs where you want rich multi-column content.
14615
+ *
14616
+ * Either pass a ready `megaPanel` JSX node, or use the structured
14617
+ * `megaColumns` shorthand which renders a clean column-based layout for you.
14618
+ * Both can be set; `megaPanel` wins.
14619
+ */
14620
+ megaPanel?: default_2.ReactNode | (() => default_2.ReactNode);
14621
+ /** Structured mega-menu data — rendered as columns of items. */
14622
+ megaColumns?: NiceNavMenuMegaColumn[];
14623
+ /** Optional footer node rendered at the bottom of the mega panel (CTA strip). */
14624
+ megaFooter?: default_2.ReactNode;
14625
+ }
14626
+
14627
+ /** A single column of items inside a mega-menu panel. */
14628
+ export declare interface NiceNavMenuMegaColumn {
14629
+ /** Optional column heading. */
14630
+ title?: default_2.ReactNode;
14631
+ /** Items rendered in the column (no nested mega; each is a simple item). */
14632
+ items: NiceNavMenuItem[];
14633
+ /** Optional footer node under this column (e.g. "View all" link). */
14634
+ footer?: default_2.ReactNode;
14635
+ }
14636
+
14637
+ export declare interface NiceNavMenuProps {
14638
+ /** Top-level items. */
14639
+ items: NiceNavMenuItem[];
14640
+ /** Currently active item id (matched against any nested item id). */
14641
+ activeId?: string;
14642
+ /** Size scale. Default `'md'`. */
14643
+ size?: NiceNavMenuSize;
14644
+ /** Dropdown panel alignment. Default `'start'`. */
14645
+ align?: NiceNavMenuAlign;
14646
+ /** Accessible label for the surrounding `<nav>`. */
14647
+ ariaLabel?: string;
14648
+ /** Render full-width (top-level items stretch to fill). Default `false`. */
14649
+ stretch?: boolean;
14650
+ /**
14651
+ * How top-level dropdowns / mega-panels open. Default `'click'` for backward
14652
+ * compatibility. Set to `'hover'` to get the classical desktop mega-menu
14653
+ * pattern (Apple / Microsoft / Stripe) — opens on mouse-enter, closes after
14654
+ * a short grace delay so the cursor can travel into the panel.
14655
+ */
14656
+ trigger?: 'click' | 'hover';
14657
+ /** Hover-close grace delay in ms. Default 150. Only used when `trigger='hover'`. */
14658
+ hoverCloseDelay?: number;
14659
+ /** Pass-through className. */
14660
+ className?: string;
14661
+ /** Pass-through style. */
14662
+ style?: default_2.CSSProperties;
14663
+ /** Pass-through id. */
14664
+ id?: string;
14665
+ /** Test id. */
14666
+ 'data-testid'?: string;
14667
+ }
14668
+
14669
+ export declare type NiceNavMenuSize = 'sm' | 'md' | 'lg';
14670
+
14671
+ export declare const NiceNavShell: ForwardRefExoticComponent<NiceNavShellProps & RefAttributes<HTMLDivElement>>;
14672
+
14673
+ export declare interface NiceNavShellApi {
14674
+ activeRoute: string | undefined;
14675
+ tabs: NiceNavShellTab[];
14676
+ openRoute: (route: string, opts?: Partial<NiceNavShellTab>) => void;
14677
+ closeTab: (id: string) => void;
14678
+ closeOthers: (id: string) => void;
14679
+ closeAll: () => void;
14680
+ pinTab: (id: string, pinned?: boolean) => void;
14681
+ setDirty: (id: string, dirty?: boolean) => void;
14682
+ }
14683
+
14684
+ export declare type NiceNavShellPersistence = 'memory' | 'localStorage' | 'session';
14685
+
14686
+ export declare interface NiceNavShellProps {
14687
+ /** Top navigation slot — pass a ReactNode or render-prop. */
14688
+ topNav?: Slot;
14689
+ /**
14690
+ * Convenience pass-through: when set (and `topNav` is not), the shell
14691
+ * renders an internal `<NiceTopNav>` with these props. Lets consumers get
14692
+ * a fully-featured top bar (logo / nav menu / search / pickers /
14693
+ * notifications / user menu / collapsible right cluster) without having
14694
+ * to import and instantiate NiceTopNav themselves.
14695
+ */
14696
+ topNavProps?: NiceTopNavProps;
14697
+ /** Sidebar navigation slot. */
14698
+ sidebar?: Slot;
14699
+ /** Map of route → content (ReactNode or factory). */
14700
+ routes: Record<string, ReactNode | (() => ReactNode)>;
14701
+ /** Initial / default route (used when uncontrolled). */
14702
+ defaultRoute?: string;
14703
+ /** Controlled active route. */
14704
+ activeRoute?: string;
14705
+ /** Called whenever the active route changes. */
14706
+ onRouteChange?: (route: string) => void;
14707
+ /** Optional per-route labels (used for tab titles). */
14708
+ routeLabels?: Record<string, ReactNode>;
14709
+ /** Optional per-route icons. */
14710
+ routeIcons?: Record<string, ReactNode>;
14711
+ /** Fallback rendered when active route has no entry in `routes`. */
14712
+ fallback?: ReactNode;
14713
+ /**
14714
+ * Rendered in the content area when no route is active (uncontrolled mode
14715
+ * with no `defaultRoute`). Defaults to a blank panel painted with the
14716
+ * theme background — intentionally empty so the shell never auto-jumps to
14717
+ * the first route. Pass any node to customise (welcome screen, hero,
14718
+ * shortcuts grid, etc.).
14719
+ */
14720
+ emptyState?: ReactNode;
14721
+ /** `'enabled'` shows the tab strip; `'disabled'` (default) just routes content. */
14722
+ tabsMode?: 'enabled' | 'disabled';
14723
+ /** When `false` (default) navigating to an already-open route focuses it instead of duplicating. */
14724
+ allowDuplicateTabs?: boolean;
14725
+ /** Maximum number of tabs (oldest non-pinned auto-closes when exceeded). */
14726
+ maxTabs?: number;
14727
+ /** Show close X. Default `true`. */
14728
+ closableTabs?: boolean;
14729
+ /** Allow pin/unpin via context menu. Default `true`. */
14730
+ pinnableTabs?: boolean;
14731
+ /** Reorder via drag (shipped as basic HTML5 drag — opt-in). Default `false`. */
14732
+ reorderableTabs?: boolean;
14733
+ /** Persistence backend for tab list. Default `'memory'`. */
14734
+ persistTabs?: NiceNavShellPersistence;
14735
+ /** Storage key for persistence. Default `'nice-nav-shell:tabs'`. */
14736
+ persistKey?: string;
14737
+ /** Tab strip is wheel-scrollable + shows ◀▶ arrows on overflow. Default `true`. */
14738
+ tabsScrollable?: boolean;
14739
+ /** Right-click tab → menu (close / close others / close all / pin). Default `true`. */
14740
+ tabsContextMenu?: boolean;
14741
+ /** Content swap animation. Default `'fade'`. */
14742
+ tabsAnimation?: NiceNavShellTabsAnimation;
14743
+ /** Initial tab list (used only on first mount when storage is empty). */
14744
+ initialTabs?: NiceNavShellTab[];
14745
+ /** Routes auto-opened as pinned on first mount. */
14746
+ pinnedRoutes?: string[];
14747
+ className?: string;
14748
+ contentClassName?: string;
14749
+ 'data-testid'?: string;
14750
+ }
14751
+
14752
+ export declare interface NiceNavShellTab {
14753
+ /** Unique stable id. Defaults to `route` if omitted at openRoute call. */
14754
+ id: string;
14755
+ /** Route key the tab represents. */
14756
+ route: string;
14757
+ /** Tab label (string or arbitrary node). */
14758
+ label: ReactNode;
14759
+ /** Optional leading icon. */
14760
+ icon?: ReactNode;
14761
+ /** Pinned tabs render first and have no close button by default. */
14762
+ pinned?: boolean;
14763
+ /** When true, shows a `•` dot indicating unsaved work. */
14764
+ dirty?: boolean;
14765
+ /** Per-tab override of `closableTabs`. */
14766
+ closable?: boolean;
14767
+ }
14768
+
14769
+ export declare type NiceNavShellTabsAnimation = 'none' | 'fade' | 'slide';
14770
+
14771
+ export declare const NiceNetworkDiscoveryPanel: default_2.FC<NiceNetworkDiscoveryPanelProps>;
14772
+
14773
+ export declare interface NiceNetworkDiscoveryPanelProps extends NiceBaseProps {
14774
+ nodes: NiceNetworkNode[];
14775
+ topology?: NiceTopologyData;
14776
+ onScan: (subnet?: string) => Promise<void>;
14777
+ onNodeClick: (nodeId: string) => void;
14778
+ onNodeAction: (nodeId: string, action: string) => void;
14779
+ showTopologyView?: boolean;
14780
+ showMapView?: boolean;
14781
+ showListView?: boolean;
14782
+ autoRefreshMs?: number;
14783
+ }
14784
+
14785
+ export declare interface NiceNetworkNode {
14786
+ id: string;
14787
+ hostname?: string;
14788
+ ipAddress: string;
14789
+ macAddress?: string;
14790
+ vendor?: string;
14791
+ category: NetworkNodeCategory;
14792
+ status: NetworkNodeStatus;
14793
+ firstSeen: string;
14101
14794
  lastSeen: string;
14102
14795
  isApproved: boolean;
14103
14796
  isRogue: boolean;
@@ -14168,6 +14861,24 @@ export declare interface NiceNotificationChannel {
14168
14861
  configUrl?: string;
14169
14862
  }
14170
14863
 
14864
+ export declare interface NiceNotificationItem {
14865
+ id: string;
14866
+ title: string;
14867
+ body?: string;
14868
+ /** Visual level (controls color of marker dot). Default `'info'`. */
14869
+ level?: NiceNotificationLevel;
14870
+ /** Optional ISO date string or Date instance. */
14871
+ timestamp?: string | Date;
14872
+ /** Whether this notification has already been seen. */
14873
+ read?: boolean;
14874
+ /** Optional icon/avatar node. */
14875
+ icon?: default_2.ReactNode;
14876
+ /** Click handler — fires when the row is activated. */
14877
+ onClick?: () => void;
14878
+ }
14879
+
14880
+ export declare type NiceNotificationLevel = 'info' | 'success' | 'warning' | 'error';
14881
+
14171
14882
  export declare const NiceNotificationPreferences: default_2.FC<NiceNotificationPreferencesProps>;
14172
14883
 
14173
14884
  export declare interface NiceNotificationPreferencesProps extends NiceBaseProps {
@@ -14200,6 +14911,49 @@ export declare interface NiceNotificationPrefs {
14200
14911
  };
14201
14912
  }
14202
14913
 
14914
+ export declare const NiceNotifications: default_2.ForwardRefExoticComponent<NiceNotificationsProps & default_2.RefAttributes<HTMLDivElement>>;
14915
+
14916
+ export declare interface NiceNotificationsProps {
14917
+ /** List of notifications. */
14918
+ items?: NiceNotificationItem[];
14919
+ /**
14920
+ * Optional explicit unread count. When omitted, it is computed from
14921
+ * `items.filter(i => !i.read).length`.
14922
+ */
14923
+ unreadCount?: number;
14924
+ /** Title rendered at the top of the dropdown panel. */
14925
+ panelTitle?: string;
14926
+ /** Empty-state text. */
14927
+ emptyText?: string;
14928
+ /** Width (px) of the dropdown panel. Default: 340. */
14929
+ panelWidth?: number;
14930
+ /** Maximum dropdown height (px). Default: 420. */
14931
+ maxHeight?: number;
14932
+ /** Show "Mark all as read" link in panel header. Default: true. */
14933
+ showMarkAllRead?: boolean;
14934
+ /** Show "View all" link at panel footer. Default: false. */
14935
+ showViewAll?: boolean;
14936
+ /** Mark-all-as-read handler. */
14937
+ onMarkAllRead?: () => void;
14938
+ /** View-all handler. */
14939
+ onViewAll?: () => void;
14940
+ /** Per-item read-toggle handler (called when user marks an item read). */
14941
+ onItemRead?: (id: string) => void;
14942
+ /** Custom bell icon. */
14943
+ icon?: default_2.ReactNode;
14944
+ /** Controlled open flag. */
14945
+ open?: boolean;
14946
+ onOpenChange?: (open: boolean) => void;
14947
+ /** Cap the badge display (default 99 → shows "99+"). */
14948
+ badgeMax?: number;
14949
+ /** Size variant of the trigger. */
14950
+ size?: 'sm' | 'md' | 'lg';
14951
+ className?: string;
14952
+ style?: default_2.CSSProperties;
14953
+ id?: string;
14954
+ 'data-testid'?: string;
14955
+ }
14956
+
14203
14957
  export declare const NiceNumberInput: default_2.ForwardRefExoticComponent<NiceNumberInputProps & default_2.RefAttributes<HTMLInputElement>>;
14204
14958
 
14205
14959
  /** Props for the {@link NiceNumberInput} component — a numeric field with stepper and precision control. */
@@ -14296,6 +15050,12 @@ export declare interface NiceOnboardingWizardProps extends NiceBaseProps {
14296
15050
  logo?: React.ReactNode;
14297
15051
  }
14298
15052
 
15053
+ export { NiceOnChange }
15054
+
15055
+ export { NiceOnOpenChange }
15056
+
15057
+ export { NiceOnSelect }
15058
+
14299
15059
  export { NiceOptimisticConfig }
14300
15060
 
14301
15061
  export { NiceOption }
@@ -14679,10 +15439,26 @@ export declare interface NicePickListProps<T = unknown> extends NiceBaseProps {
14679
15439
  keyField?: string;
14680
15440
  /** Label extractor */
14681
15441
  labelField?: string;
14682
- /** Custom item renderer */
14683
- renderItem?: (item: T) => default_2.ReactNode;
14684
- /** Enable filtering/search */
15442
+ /** Custom item renderer (receives item + side hint). */
15443
+ renderItem?: (item: T, side?: 'left' | 'right') => default_2.ReactNode;
15444
+ /** Enable filtering/search (legacy, equivalent to `searchable: 'both'`). */
14685
15445
  filterable?: boolean;
15446
+ /**
15447
+ * Enable a search input on either or both columns.
15448
+ * `true` is equivalent to `'both'`. Default: `false`.
15449
+ */
15450
+ searchable?: boolean | 'left' | 'right' | 'both';
15451
+ /** Optional grouping function. When provided, items are grouped under non-interactive headers. */
15452
+ groupBy?: (item: T) => string;
15453
+ /** Allow drag-and-drop reordering inside the right column. */
15454
+ sortable?: boolean;
15455
+ /** Show “move all” shortcut buttons (default: true). */
15456
+ bulkActions?: boolean | {
15457
+ moveAll?: boolean;
15458
+ removeAll?: boolean;
15459
+ };
15460
+ /** Maximum number of items allowed on the right side. Extra moves are blocked. */
15461
+ maxRight?: number;
14686
15462
  /** Source list header */
14687
15463
  sourceHeader?: default_2.ReactNode;
14688
15464
  /** Target list header */
@@ -15614,6 +16390,165 @@ export declare interface NiceRealtimeChartRef {
15614
16390
  getData: () => RealtimeDataPoint[];
15615
16391
  }
15616
16392
 
16393
+ /**
16394
+ * Recipe display component — shows photos, metadata (servings/time/difficulty),
16395
+ * ingredient list and step-by-step instructions. Read-mostly; pair with
16396
+ * {@link NiceRecipeEditor} (from `@nice2dev/ui-tools`) for editing.
16397
+ */
16398
+ export declare const NiceRecipe: default_2.FC<NiceRecipeProps>;
16399
+
16400
+ /** A named group of recipe ids. */
16401
+ export declare interface NiceRecipeCollection {
16402
+ id: string;
16403
+ name: string;
16404
+ description?: string;
16405
+ recipeIds: string[];
16406
+ }
16407
+
16408
+ /**
16409
+ * Sidebar of named collections (cookbooks, weekly menus, themes…) plus a
16410
+ * `NiceRecipeList` filtered to the active collection's recipe ids.
16411
+ * Includes inline create / rename / delete and an "Add recipe" picker.
16412
+ */
16413
+ export declare const NiceRecipeCollections: default_2.FC<NiceRecipeCollectionsProps>;
16414
+
16415
+ export declare interface NiceRecipeCollectionsProps extends NiceBaseProps {
16416
+ /** Pool of recipes the collections reference. */
16417
+ recipes: NiceRecipeModel[];
16418
+ /** Collections to display. */
16419
+ collections: NiceRecipeCollection[];
16420
+ /** Fired when collections change (rename, add, remove, add/remove recipe). */
16421
+ onChange?: (collections: NiceRecipeCollection[]) => void;
16422
+ /** Hide create / rename / delete controls. */
16423
+ readOnly?: boolean;
16424
+ /** Fired when a recipe card inside the active collection is clicked. */
16425
+ onSelectRecipe?: (recipe: NiceRecipeModel) => void;
16426
+ }
16427
+
16428
+ /** Difficulty enum used by recipe + scheduler-recipe variant. */
16429
+ export declare type NiceRecipeDifficulty = 'easy' | 'medium' | 'hard';
16430
+
16431
+ /**
16432
+ * Recipe editor — full CRUD over a {@link NiceRecipe}: metadata,
16433
+ * ingredients (add/remove/reorder), steps (add/remove/reorder), photos
16434
+ * (URL-based). Pair with {@link NiceRecipe} (from `@nice2dev/ui-planning`)
16435
+ * for read-only display.
16436
+ */
16437
+ export declare const NiceRecipeEditor: default_2.FC<NiceRecipeEditorProps>;
16438
+
16439
+ export declare interface NiceRecipeEditorProps extends NiceBaseProps {
16440
+ /** Recipe to edit. Pass `undefined` for "new". */
16441
+ recipe?: NiceRecipeModel;
16442
+ /** Called on every change (live binding). */
16443
+ onChange?: (recipe: NiceRecipeModel) => void;
16444
+ /** Called when the user clicks Save (`showActions`). */
16445
+ onSave?: (recipe: NiceRecipeModel) => void;
16446
+ /** Called when the user clicks Cancel. */
16447
+ onCancel?: () => void;
16448
+ /** Render Save/Cancel buttons. */
16449
+ showActions?: boolean;
16450
+ /** Custom Save button label. */
16451
+ saveLabel?: string;
16452
+ /** Custom Cancel button label. */
16453
+ cancelLabel?: string;
16454
+ }
16455
+
16456
+ /**
16457
+ * Browsable, searchable, filterable grid of {@link NiceRecipe} cards.
16458
+ * Pure-client filtering: title/description/tags substring + difficulty + tag.
16459
+ */
16460
+ export declare const NiceRecipeList: default_2.FC<NiceRecipeListProps>;
16461
+
16462
+ export declare interface NiceRecipeListProps extends NiceBaseProps {
16463
+ /** Recipes to browse. */
16464
+ recipes: NiceRecipeModel[];
16465
+ /** Fired when the user activates a card. */
16466
+ onSelect?: (recipe: NiceRecipeModel) => void;
16467
+ /** Initial search query. */
16468
+ initialQuery?: string;
16469
+ /** Hide the difficulty / tag filters. */
16470
+ hideFilters?: boolean;
16471
+ /** Empty-state hint when no recipes match. */
16472
+ emptyMessage?: string;
16473
+ }
16474
+
16475
+ /** A full recipe record. */
16476
+ export declare interface NiceRecipeModel {
16477
+ id: string;
16478
+ title: string;
16479
+ description?: string;
16480
+ /** Number of servings the recipe yields. */
16481
+ servings?: number;
16482
+ prepMinutes?: number;
16483
+ cookMinutes?: number;
16484
+ difficulty?: NiceRecipeDifficulty;
16485
+ cuisine?: string;
16486
+ tags?: string[];
16487
+ ingredients: NiceIngredient[];
16488
+ steps: NiceRecipeStep[];
16489
+ photos?: NiceRecipePhoto[];
16490
+ nutrition?: NiceRecipeNutrition;
16491
+ /** External source (URL or attribution). */
16492
+ sourceUrl?: string;
16493
+ createdAt?: Date;
16494
+ updatedAt?: Date;
16495
+ }
16496
+
16497
+ /** Optional nutrition summary per serving. */
16498
+ export declare interface NiceRecipeNutrition {
16499
+ calories?: number;
16500
+ protein?: number;
16501
+ fat?: number;
16502
+ carbs?: number;
16503
+ fiber?: number;
16504
+ sugar?: number;
16505
+ sodium?: number;
16506
+ }
16507
+
16508
+ /** A photo attached to a recipe. */
16509
+ export declare interface NiceRecipePhoto {
16510
+ id: string;
16511
+ /** Image URL (data:, blob:, http(s):). */
16512
+ url: string;
16513
+ /** Alt text / caption. */
16514
+ caption?: string;
16515
+ /** When true, this photo is used as the cover image. */
16516
+ primary?: boolean;
16517
+ }
16518
+
16519
+ /** Props for {@link NiceRecipe}. */
16520
+ export declare interface NiceRecipeProps extends NiceBaseProps {
16521
+ /** Recipe to display. */
16522
+ recipe: NiceRecipeModel;
16523
+ /** Compact card layout (smaller paddings, hides description / nutrition). */
16524
+ compact?: boolean;
16525
+ /** Hide the photo gallery. */
16526
+ hidePhotos?: boolean;
16527
+ /** Hide the ingredients column. */
16528
+ hideIngredients?: boolean;
16529
+ /** Hide the steps list. */
16530
+ hideSteps?: boolean;
16531
+ /** Toggle an ingredient's `checked` state (interactive shopping mode). */
16532
+ onIngredientToggle?: (ingredient: NiceIngredient) => void;
16533
+ /** Toggle a step's `done` state (interactive cook mode). */
16534
+ onStepToggle?: (step: NiceRecipeStep) => void;
16535
+ }
16536
+
16537
+ /** A single step / instruction in a recipe. */
16538
+ export declare interface NiceRecipeStep {
16539
+ id: string;
16540
+ /** Render order (1-based). */
16541
+ order: number;
16542
+ /** Human instruction text. Markdown-friendly but rendered as plain text by default. */
16543
+ instruction: string;
16544
+ /** Optional duration in minutes for timers. */
16545
+ durationMinutes?: number;
16546
+ /** Optional URL of an image illustrating the step. */
16547
+ image?: string;
16548
+ /** Marks the step as completed in interactive cook mode. */
16549
+ done?: boolean;
16550
+ }
16551
+
15617
16552
  /**
15618
16553
  * NiceReconciliationView — Bank reconciliation split-view with drag-drop matching.
15619
16554
  *
@@ -16186,6 +17121,40 @@ export declare interface NiceSchedulerEvent {
16186
17121
  description?: string;
16187
17122
  /** Event visual style */
16188
17123
  eventStyle?: 'solid' | 'striped' | 'outlined' | 'dashed';
17124
+ /**
17125
+ * Discriminator selecting which form variant to use in the built-in editor.
17126
+ * Defaults to `'task'`. Use `'recipe'` to attach a {@link NiceRecipe} via
17127
+ * `recipe`, or `'service'` to attach service data via `service`.
17128
+ */
17129
+ eventType?: NiceSchedulerEventType;
17130
+ /** Recipe payload — present when `eventType === 'recipe'`. */
17131
+ recipe?: NiceRecipeModel;
17132
+ /** Service payload — present when `eventType === 'service'`. */
17133
+ service?: NiceSchedulerServiceData;
17134
+ }
17135
+
17136
+ /**
17137
+ * Discriminator for the kind of thing scheduled. Built-ins:
17138
+ * - `'task'` — generic event (default, back-compat).
17139
+ * - `'recipe'` — meal-prep / cooking session backed by a {@link NiceRecipe}.
17140
+ * - `'service'` — a service appointment (provider, customer, location, price).
17141
+ *
17142
+ * Consumers can extend with custom string literals — the scheduler will treat
17143
+ * unknown types like `'task'` unless a matching {@link NiceSchedulerEventTypeDef}
17144
+ * is provided in `eventTypes`.
17145
+ */
17146
+ export declare type NiceSchedulerEventType = 'task' | 'recipe' | 'service' | (string & {});
17147
+
17148
+ /** Definition of a custom event-type option exposed in the editor's type picker. */
17149
+ export declare interface NiceSchedulerEventTypeDef {
17150
+ /** Discriminator value matching {@link NiceSchedulerEvent.eventType}. */
17151
+ type: NiceSchedulerEventType;
17152
+ /** Display label in the editor select. */
17153
+ label: string;
17154
+ /** Optional emoji/icon glyph. */
17155
+ icon?: string;
17156
+ /** Optional accent color for the chip in the calendar grid. */
17157
+ color?: string;
16189
17158
  }
16190
17159
 
16191
17160
  /** Props for the {@link NiceScheduler} component — a full-featured calendar / scheduler with drag, recurring events, resources, and inline editing. */
@@ -16233,6 +17202,19 @@ export declare interface NiceSchedulerProps extends NiceBaseProps {
16233
17202
  editable?: boolean;
16234
17203
  /** Custom field set for the built-in editor — when provided, replaces the auto-generated default fields. NiceForm-compatible. */
16235
17204
  formFields?: NiceFormItem[];
17205
+ /**
17206
+ * Per-event-type form field overrides. When a key matches the active
17207
+ * `eventType` in the editor, those NiceForm items REPLACE the type-specific
17208
+ * section (recipe/service body). Use `'task'` to override the default form.
17209
+ */
17210
+ formFieldsByType?: Partial<Record<NiceSchedulerEventType, NiceFormItem[]>>;
17211
+ /**
17212
+ * Available event-type options in the editor's type picker. When omitted,
17213
+ * defaults to a single `'task'` entry (back-compat — no picker shown).
17214
+ * Pass `[{type:'task'},{type:'recipe'},{type:'service'}]` to enable all three
17215
+ * built-ins.
17216
+ */
17217
+ eventTypes?: NiceSchedulerEventTypeDef[];
16236
17218
  /** Custom full editor render — when provided, takes over the entire editor body. */
16237
17219
  renderEventEditor?: (ctx: {
16238
17220
  event?: NiceSchedulerEvent | null;
@@ -16263,6 +17245,26 @@ export declare interface NiceSchedulerResource {
16263
17245
  color?: string;
16264
17246
  }
16265
17247
 
17248
+ /** Service-specific data attached to a `service` event. */
17249
+ export declare interface NiceSchedulerServiceData {
17250
+ /** Service name (e.g. "Haircut", "Oil change"). */
17251
+ serviceName: string;
17252
+ /** Person providing the service. */
17253
+ providerName?: string;
17254
+ /** Customer name. */
17255
+ customerName?: string;
17256
+ /** Customer phone / email. */
17257
+ customerContact?: string;
17258
+ /** Location / address. */
17259
+ location?: string;
17260
+ /** Price (numeric). */
17261
+ price?: number;
17262
+ /** Currency code (ISO 4217), defaults to display-only "PLN". */
17263
+ currency?: string;
17264
+ /** Free-form notes. */
17265
+ notes?: string;
17266
+ }
17267
+
16266
17268
  /** Available calendar views for the {@link NiceScheduler}. */
16267
17269
  export declare type NiceSchedulerView = 'day' | 'week' | 'workWeek' | 'month' | 'dayRange' | 'monthRange' | 'agenda' | 'timeline';
16268
17270
 
@@ -16284,6 +17286,77 @@ export declare interface NiceScrollViewProps extends NiceBaseProps {
16284
17286
  children?: default_2.ReactNode;
16285
17287
  }
16286
17288
 
17289
+ export declare const NiceSearchBar: default_2.ForwardRefExoticComponent<NiceSearchBarProps & default_2.RefAttributes<NiceSearchBarHandle>>;
17290
+
17291
+ export declare type NiceSearchBarExpandDirection = 'left' | 'right' | 'down';
17292
+
17293
+ export declare interface NiceSearchBarHandle {
17294
+ focus: () => void;
17295
+ expand: () => void;
17296
+ collapse: () => void;
17297
+ clear: () => void;
17298
+ }
17299
+
17300
+ export declare interface NiceSearchBarProps {
17301
+ /** Controlled value. */
17302
+ value?: string;
17303
+ /** Default value (uncontrolled). */
17304
+ defaultValue?: string;
17305
+ /** Change handler. */
17306
+ onChange?: (value: string) => void;
17307
+ /** Submit handler — fires on Enter. */
17308
+ onSubmit?: (value: string) => void;
17309
+ /** Clear handler — fires when ✕ is clicked or Escape pressed with non-empty value. */
17310
+ onClear?: () => void;
17311
+ /** Placeholder text (defaults to translated "Search…"). */
17312
+ placeholder?: string;
17313
+ /**
17314
+ * If true, the bar starts already expanded and stays so unless `collapsible`
17315
+ * is also true. Default: `false`.
17316
+ */
17317
+ defaultExpanded?: boolean;
17318
+ /**
17319
+ * Controlled expanded flag. When provided, takes priority over the
17320
+ * internal state.
17321
+ */
17322
+ expanded?: boolean;
17323
+ /** Notified whenever the expanded state changes. */
17324
+ onExpandedChange?: (expanded: boolean) => void;
17325
+ /**
17326
+ * Allow the bar to collapse. Default: `true` when no `expanded` is given.
17327
+ * Set to `false` to render an always-expanded plain search input.
17328
+ */
17329
+ collapsible?: boolean;
17330
+ /**
17331
+ * Direction the input grows when expanding from the icon-button.
17332
+ * Default: `'left'` (suitable for top-nav right cluster).
17333
+ */
17334
+ expandDirection?: NiceSearchBarExpandDirection;
17335
+ /**
17336
+ * Maximum width of the expanded input (px). Default: `260`.
17337
+ * On narrow screens caps automatically at `100vw - 32px`.
17338
+ */
17339
+ expandWidth?: number;
17340
+ /**
17341
+ * Auto-collapse when the input loses focus AND is empty. Default: `true`.
17342
+ */
17343
+ autoCollapseOnBlur?: boolean;
17344
+ /** Size variant. */
17345
+ size?: NiceSearchBarSize;
17346
+ /** Custom search icon. Default: 🔍 (will use NiceIcon when wired by host). */
17347
+ icon?: default_2.ReactNode;
17348
+ /** Disable the control. */
17349
+ disabled?: boolean;
17350
+ /** Accessible label. */
17351
+ ariaLabel?: string;
17352
+ className?: string;
17353
+ style?: default_2.CSSProperties;
17354
+ id?: string;
17355
+ 'data-testid'?: string;
17356
+ }
17357
+
17358
+ export declare type NiceSearchBarSize = 'sm' | 'md' | 'lg';
17359
+
16287
17360
  /**
16288
17361
  * `NiceSegmentedControl` — single-selection toggle group with an animated
16289
17362
  * sliding "thumb" highlight, iOS-style. The control owns a single value
@@ -16540,10 +17613,36 @@ export declare interface NiceSidebarNavProps {
16540
17613
  onPreferencesChange?: (prefs: SidebarNavUserPrefs) => void;
16541
17614
  /** Sidebar width in px (default: 264) */
16542
17615
  width?: number;
17616
+ /** Sidebar width in px when collapsed/icon-only (default: 56). */
17617
+ collapsedWidth?: number;
17618
+ /**
17619
+ * Which side of the screen the sidebar is anchored to. Default `'left'`.
17620
+ * `'right'` flips the chevron direction and pushes the footer-toggle to the
17621
+ * left edge — useful for RTL or right-side admin shells.
17622
+ */
17623
+ position?: 'left' | 'right';
17624
+ /**
17625
+ * **Minimal mode** — hides the mode strip, sources, favorites and footer
17626
+ * preferences, leaving only the navigation tree. Use for stripped-down
17627
+ * shells (auth flows, embedded views) where the full taxonomy is overkill.
17628
+ * Default `false`.
17629
+ */
17630
+ minimal?: boolean;
17631
+ /** Optional header slot rendered above the mode strip / tree (e.g. workspace switcher). */
17632
+ header?: ReactNode;
17633
+ /** Optional footer slot rendered below the standard footer-toggle row. */
17634
+ footerExtra?: ReactNode;
16543
17635
  /** Collapsed (icon-only) mode */
16544
17636
  collapsed?: boolean;
16545
17637
  /** Called when collapsed state changes (for toggle button) */
16546
17638
  onCollapsedChange?: (collapsed: boolean) => void;
17639
+ /**
17640
+ * When `true` (default), users can still expand/collapse module branches
17641
+ * even while the sidebar itself is in icon-only collapsed mode (chevrons
17642
+ * stay visible). When `false`, all branches are forced flat / always-open
17643
+ * in collapsed mode (legacy behaviour).
17644
+ */
17645
+ expandableWhenCollapsed?: boolean;
16547
17646
  /** Extra CSS class on the root element */
16548
17647
  className?: string;
16549
17648
  /** Size variant */
@@ -16759,7 +17858,7 @@ export declare interface NiceSliderProps extends Omit<NiceFormFieldProps, 'label
16759
17858
  showTickLabels?: boolean;
16760
17859
  }
16761
17860
 
16762
- export declare function NiceSortable<T extends Record<string, unknown>>({ items, keyField, onReorder, renderItem, direction, handle, group, disabled, className, style, }: NiceSortableProps<T>): JSX_2.Element;
17861
+ export declare function NiceSortable<T extends Record<string, unknown>>({ items, keyField, onReorder, renderItem, direction, handle, group: _group, disabled, className, style, }: NiceSortableProps<T>): JSX_2.Element;
16763
17862
 
16764
17863
  export declare namespace NiceSortable {
16765
17864
  var displayName: string;
@@ -17019,6 +18118,10 @@ export { NiceSSEMessageType }
17019
18118
 
17020
18119
  export { niceStaggerDelay }
17021
18120
 
18121
+ export { NiceStandardFieldProps }
18122
+
18123
+ export { NiceStandardProps }
18124
+
17022
18125
  /** A menu entry in the {@link NiceDesktop} start menu. */
17023
18126
  export declare interface NiceStartMenuItem {
17024
18127
  /** Unique key. */
@@ -17187,7 +18290,7 @@ export declare interface NiceStoryMeta {
17187
18290
  parameters?: Record<string, unknown>;
17188
18291
  }
17189
18292
 
17190
- export declare function NiceStreamDashboard({ platforms: initialPlatforms, scenes: initialScenes, config: initialConfig, enableWebRTC, rtmpServerUrl, maxChatMessages, autoRecord, recordingPath, onStreamStart, onStreamStop, onChatMessage, onAlert, onAnalyticsUpdate, onVODCreated, renderPreview, renderChatMessage, className, style, children, ...baseProps }: NiceStreamDashboardProps): JSX_2.Element;
18293
+ export declare function NiceStreamDashboard({ platforms: initialPlatforms, scenes: initialScenes, config: initialConfig, enableWebRTC: _enableWebRTC, rtmpServerUrl: _rtmpServerUrl, maxChatMessages: _maxChatMessages, autoRecord, recordingPath: _recordingPath, onStreamStart, onStreamStop, onChatMessage: _onChatMessage, onAlert, onAnalyticsUpdate: _onAnalyticsUpdate, onVODCreated, renderPreview, renderChatMessage, className, style, children, ...baseProps }: NiceStreamDashboardProps): JSX_2.Element;
17191
18294
 
17192
18295
  export declare interface NiceStreamDashboardProps extends NiceBaseProps {
17193
18296
  /** Initial platform connections */
@@ -17734,6 +18837,29 @@ export { niceThemeDark }
17734
18837
 
17735
18838
  export { NiceThemeDarkMode }
17736
18839
 
18840
+ /**
18841
+ * Descriptor of a single theme available in the switcher. The `preview`
18842
+ * colours are used to render the mini page-thumbnail in the trigger and
18843
+ * dropdown options.
18844
+ */
18845
+ export declare interface NiceThemeDescriptor {
18846
+ /** Stable theme id, e.g. `'omniverk-light'`, `'cyberpunk-neon'`. */
18847
+ id: string;
18848
+ /** Display name (English / fallback), e.g. `'Omniverk Light'`. */
18849
+ name: string;
18850
+ /** Native or translated name (optional). When present, takes precedence over `name`. */
18851
+ nativeName?: string;
18852
+ /** Colour swatches used to draw the preview thumbnail. */
18853
+ preview: ThemePreviewColors;
18854
+ /**
18855
+ * Whether the theme is built-in / read-only. Edit affordances are hidden
18856
+ * for read-only themes unless `edit.allowEditBuiltIn === true`.
18857
+ */
18858
+ readOnly?: boolean;
18859
+ /** Free-form metadata (author, tags, etc.). Not interpreted by the picker. */
18860
+ meta?: Record<string, unknown>;
18861
+ }
18862
+
17737
18863
  export declare const NiceThemeDesigner: ForwardRefExoticComponent<NiceThemeBuilderProps & RefAttributes<HTMLDivElement>>;
17738
18864
 
17739
18865
  export declare type NiceThemeDesignerProps = NiceThemeBuilderProps;
@@ -17754,6 +18880,107 @@ export { NiceThemePackId }
17754
18880
 
17755
18881
  export { NiceThemePackMeta }
17756
18882
 
18883
+ export declare const NiceThemePicker: default_2.FC<NiceThemePickerProps>;
18884
+
18885
+ /**
18886
+ * Configuration for the optional add/edit-theme affordances. When `enabled`
18887
+ * is true the dropdown gains:
18888
+ * - a sticky `[+] Add theme` button at the bottom,
18889
+ * - a pencil icon next to each editable theme option.
18890
+ *
18891
+ * Both actions navigate to a configured editor route and pass back a
18892
+ * `returnUrl` so the editor can return the user to where they came from.
18893
+ */
18894
+ export declare interface NiceThemePickerEditConfig {
18895
+ enabled: boolean;
18896
+ /** Base editor route, e.g. `'/settings/themes'`. */
18897
+ editorRoute: string;
18898
+ /**
18899
+ * Builds the full URL to navigate to. Defaults to a query-string scheme:
18900
+ * edit: `${editorRoute}?themeId=${id}&returnUrl=${encoded}`
18901
+ * add: `${editorRoute}/new?returnUrl=${encoded}`
18902
+ */
18903
+ buildUrl?: (params: {
18904
+ themeId?: string;
18905
+ returnUrl: string;
18906
+ }) => string;
18907
+ /**
18908
+ * Performs the navigation. Defaults to `window.location.href = url`.
18909
+ * Consumers using React Router / Next.js can pass `router.push` etc.
18910
+ */
18911
+ navigate?: (url: string) => void;
18912
+ /** Override for the return URL. Default: `window.location.href`. */
18913
+ returnUrl?: string;
18914
+ /** Label for the add button. Default i18n key: `themePicker.addTheme`. */
18915
+ addLabel?: string;
18916
+ /** ARIA label for the per-row pencil icon. Default i18n key: `themePicker.editTheme`. */
18917
+ editLabel?: string;
18918
+ /** Allow the pencil icon to appear on read-only / built-in themes. Default: false. */
18919
+ allowEditBuiltIn?: boolean;
18920
+ /**
18921
+ * "Add new theme" button rendered at the TOP of the dropdown.
18922
+ * When omitted the add button falls back to the legacy bottom position
18923
+ * (driven by `enabled`) for backward compatibility.
18924
+ */
18925
+ addNew?: {
18926
+ /** Whether to show the add-new button. Default: false. */
18927
+ enabled?: boolean;
18928
+ /** Button label. Overrides `addLabel`. */
18929
+ label?: string;
18930
+ };
18931
+ }
18932
+
18933
+ export declare interface NiceThemePickerProps extends NiceFormFieldProps, DualVisibilityProps {
18934
+ /** Selected theme id */
18935
+ value?: string;
18936
+ /** Default theme id (uncontrolled) */
18937
+ defaultValue?: string;
18938
+ /** Callback when selection changes */
18939
+ onChange?: (theme: NiceThemeDescriptor | null) => void;
18940
+ /** Available themes (required — picker is dumb on its own). */
18941
+ themes: NiceThemeDescriptor[];
18942
+ /** Placeholder shown when nothing is selected (ignored in compact mode). */
18943
+ placeholder?: string;
18944
+ /** Enable search */
18945
+ showSearch?: boolean;
18946
+ /** Search placeholder */
18947
+ searchPlaceholder?: string;
18948
+ /** Show preview thumbnail in trigger. Default: true */
18949
+ showPreviewInValue?: boolean;
18950
+ /** Show preview thumbnail in dropdown options. Default: true */
18951
+ showPreviewInMenu?: boolean;
18952
+ /** Show theme id in trigger. Default: false */
18953
+ showIdInValue?: boolean;
18954
+ /** Show theme id in dropdown options. Default: false */
18955
+ showIdInMenu?: boolean;
18956
+ /**
18957
+ * Compact mode: minimal trigger width (preview + chevron only) with smart
18958
+ * dropdown alignment. Default: false.
18959
+ */
18960
+ compact?: boolean;
18961
+ /** Dropdown horizontal alignment. Default: `'auto'` in compact, `'left'` otherwise. */
18962
+ dropdownAlign?: DropdownAlign;
18963
+ /**
18964
+ * Preview thumbnail size (px) — width. Height is derived (~75% of width).
18965
+ * Defaults: 24 in compact, 32 in full mode.
18966
+ */
18967
+ previewSize?: number;
18968
+ /**
18969
+ * Preview rendering style:
18970
+ * - `'page'` (default): a small "page" thumbnail with header/text/sidebar.
18971
+ * - `'swatch'`: a flag-like vertical colour stripe (cheaper, less informative).
18972
+ */
18973
+ previewShape?: 'page' | 'swatch';
18974
+ /** Add/edit affordances. Hidden when `enabled` is false (default). */
18975
+ edit?: NiceThemePickerEditConfig;
18976
+ /** Allow clearing selection. Default: false (a theme is usually mandatory). */
18977
+ allowClear?: boolean;
18978
+ /** Size variant */
18979
+ size?: NiceSize;
18980
+ /** Test ID */
18981
+ 'data-testid'?: string;
18982
+ }
18983
+
17757
18984
  export declare const NiceThemePreview: default_2.ForwardRefExoticComponent<NiceThemePreviewProps & default_2.RefAttributes<HTMLDivElement>>;
17758
18985
 
17759
18986
  export declare interface NiceThemePreviewProps extends NiceBaseProps {
@@ -17794,7 +19021,7 @@ export { NiceThemeSpacing }
17794
19021
  * <NiceThemeSwitcher themes={myThemes} storageMode="traceless" />
17795
19022
  * ```
17796
19023
  */
17797
- export declare function NiceThemeSwitcher({ variant, themes, size, showLabels, onThemeChange, defaultTheme, showSystemOption, className, style, disabled, label, hideLabel, cookies, localStorage, sessionStorage, storageMode, storageKey, }: NiceThemeSwitcherProps): default_2.ReactElement;
19024
+ export declare function NiceThemeSwitcher({ variant, themes, size, showLabels, onThemeChange, defaultTheme, showSystemOption, className, style, disabled, label, hideLabel, cookies: _cookies, localStorage: _localStorage, sessionStorage, storageMode: _storageMode, storageKey, }: NiceThemeSwitcherProps): default_2.ReactElement;
17798
19025
 
17799
19026
  /**
17800
19027
  * Props for NiceThemeSwitcher.
@@ -18018,6 +19245,8 @@ export declare interface NiceToggleProps extends NiceBaseProps {
18018
19245
  controlWidth?: string | number;
18019
19246
  }
18020
19247
 
19248
+ export { NiceTone }
19249
+
18021
19250
  export declare const NiceToolbar: default_2.FC<NiceToolbarProps>;
18022
19251
 
18023
19252
  /** A toolbar entry in the {@link NiceToolbar}. */
@@ -18064,6 +19293,245 @@ export declare interface NiceTooltipProps {
18064
19293
  children: default_2.ReactElement;
18065
19294
  }
18066
19295
 
19296
+ export declare const NiceTopNav: default_2.ForwardRefExoticComponent<NiceTopNavProps & default_2.RefAttributes<HTMLElement>>;
19297
+
19298
+ export declare type NiceTopNavDensity = 'compact' | 'normal' | 'comfortable';
19299
+
19300
+ /**
19301
+ * Optional extra round icon-button shown in the right cluster
19302
+ * (e.g. settings gear). When `menuItems` is provided, clicking the
19303
+ * button opens a small dropdown menu; otherwise `onClick` fires.
19304
+ *
19305
+ * Added in v1.0.10 to satisfy customizable user-button cluster
19306
+ * feedback for {@link NiceTopNav}.
19307
+ */
19308
+ declare interface NiceTopNavExtraAction {
19309
+ id: string;
19310
+ label: string;
19311
+ icon: default_2.ReactNode;
19312
+ onClick?: () => void;
19313
+ menuItems?: UserMenuItem[];
19314
+ /** Optional badge / dot. */
19315
+ badge?: number | string;
19316
+ }
19317
+
19318
+ /** @deprecated v2 nav-item type. Prefer {@link NiceNavMenuItem} via `navMenuItems`. */
19319
+ export declare interface NiceTopNavItem {
19320
+ id: string;
19321
+ label: string;
19322
+ icon?: default_2.ReactNode;
19323
+ href?: string;
19324
+ onClick?: () => void;
19325
+ }
19326
+
19327
+ /** @deprecated v2 language type. Prefer `<NiceLanguagePicker>` props. */
19328
+ export declare interface NiceTopNavLanguageOption {
19329
+ code: string;
19330
+ label: string;
19331
+ flag?: default_2.ReactNode;
19332
+ }
19333
+
19334
+ /** @deprecated v2 user-menu item. Prefer {@link UserMenuItem}. */
19335
+ export declare interface NiceTopNavMenuItem {
19336
+ id: string;
19337
+ label: string;
19338
+ icon?: default_2.ReactNode;
19339
+ onClick?: () => void;
19340
+ divider?: boolean;
19341
+ href?: string;
19342
+ }
19343
+
19344
+ export declare interface NiceTopNavProps {
19345
+ height?: number | string;
19346
+ density?: NiceTopNavDensity;
19347
+ maxWidth?: number | string;
19348
+ paddingX?: number | string;
19349
+ gap?: number | string;
19350
+ borderBottom?: boolean;
19351
+ elevated?: boolean;
19352
+ sticky?: boolean;
19353
+ variant?: NiceTopNavVariant;
19354
+ accentBar?: boolean;
19355
+ accentBarColor?: string;
19356
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
19357
+ /**
19358
+ * Visual state — mirrors the standard control state contract used across
19359
+ * basic Nice2Dev controls (input, button). Defaults to `'normal'`.
19360
+ * - `loading` — renders a subtle shimmer overlay; bar remains interactive.
19361
+ * - `error` — accents the bottom border with `--color-danger`.
19362
+ * - `disabled` — dims the bar and disables pointer events.
19363
+ */
19364
+ state?: 'normal' | 'loading' | 'error' | 'disabled';
19365
+ /**
19366
+ * Compact mode — collapses brand name, hides labels on icon-only actions,
19367
+ * tightens paddings. Combine with `size='sm'` for an ultra-dense bar.
19368
+ */
19369
+ compact?: boolean;
19370
+ collapsible?: boolean;
19371
+ collapsed?: boolean;
19372
+ onCollapsedChange?: (collapsed: boolean) => void;
19373
+ /**
19374
+ * Bar height when collapsed. Defaults to `32` so the entire bar content
19375
+ * (brand, nav menu, search, pickers, notifications, user menu) stays
19376
+ * visible — proportionally scaled down via {@link collapsedContentScale}.
19377
+ * Lower values produce an almost-hidden strip; raise for more breathing
19378
+ * room around shrunk controls.
19379
+ */
19380
+ collapsedHeight?: number | string;
19381
+ /**
19382
+ * Scale factor (0–1) applied to the logo / brand name while collapsed.
19383
+ * Default `0.5`. Affects only the brand block; use
19384
+ * {@link collapsedContentScale} to scale the rest of the bar.
19385
+ */
19386
+ collapsedLogoScale?: number;
19387
+ /**
19388
+ * Scale factor (0–1) applied to the whole inner row (nav menu, search,
19389
+ * pickers, notifications, user menu, collapse button) while collapsed.
19390
+ * The bar shows ALL of its content — just very small — so users keep
19391
+ * full functionality on a slim strip. Default `0.55`.
19392
+ */
19393
+ collapsedContentScale?: number;
19394
+ hideOnScroll?: boolean;
19395
+ scrollThreshold?: number;
19396
+ logo?: default_2.ReactNode;
19397
+ brandName?: string;
19398
+ brandHref?: string;
19399
+ onBrandClick?: () => void;
19400
+ logoVariant?: NiceLogoVariant;
19401
+ logoSize?: NiceLogoSize;
19402
+ /**
19403
+ * Brand block alignment within the bar. Combined with {@link navAlignment}
19404
+ * gives 9 possible layouts. Default `'left'`.
19405
+ *
19406
+ * - `'left'` — brand sits at the very start of the bar (classic).
19407
+ * - `'center'` — brand is centered (use with `navAlignment='start'` for
19408
+ * a Bootstrap-style centered logo).
19409
+ * - `'right'` — brand sits at the end (rare, useful for RTL or unusual layouts).
19410
+ */
19411
+ brandAlign?: 'left' | 'center' | 'right';
19412
+ /**
19413
+ * Pre-baked configuration profile. Sets sensible defaults for several props
19414
+ * at once so a one-line `<NiceTopNav preset="marketing" />` ships a polished
19415
+ * bar. Any explicit prop overrides the preset's default.
19416
+ *
19417
+ * - `'marketing'` — landing-page bar: brand left, nav center, login/register
19418
+ * right, no search, no pickers, accent bar on, sticky.
19419
+ * - `'saas'` — admin/SaaS bar: brand left, nav left, full toolbar
19420
+ * (search + lang + theme + notifications + user menu),
19421
+ * collapsible right cluster opens by default, settings
19422
+ * gear after the avatar.
19423
+ * - `'docs'` — documentation bar: brand left, nav left, prominent
19424
+ * always-expanded search (max 500px), theme picker only.
19425
+ * - `'minimal'` — bare brand bar: brand only, no nav, no right cluster.
19426
+ */
19427
+ preset?: 'marketing' | 'saas' | 'docs' | 'minimal';
19428
+ navItems?: NiceTopNavItem[];
19429
+ navMenuItems?: NiceNavMenuItem[];
19430
+ activeNavId?: string;
19431
+ navAlignment?: 'start' | 'center' | 'end';
19432
+ /**
19433
+ * How mega-menu items in `navMenuItems` open. Default `'hover'` (classical
19434
+ * desktop pattern). Switch to `'click'` for touch-first sites. Only applies
19435
+ * when at least one nav item carries `megaPanel` or `megaColumns`.
19436
+ */
19437
+ megaTrigger?: 'hover' | 'click';
19438
+ mobileBreakpoint?: number;
19439
+ /**
19440
+ * How navigation behaves below `mobileBreakpoint`:
19441
+ * - `hamburger` (default) — collapse to hamburger button + drawer.
19442
+ * - `wrap` — let nav items wrap onto a second row.
19443
+ * - `scroll` — keep nav inline; horizontally scroll-snap overflowed items.
19444
+ */
19445
+ mobileVariant?: 'hamburger' | 'wrap' | 'scroll';
19446
+ searchPlaceholder?: string;
19447
+ searchValue?: string;
19448
+ onSearchChange?: (value: string) => void;
19449
+ onSearchSubmit?: (value: string) => void;
19450
+ collapsibleSearch?: boolean;
19451
+ searchCollapsible?: boolean;
19452
+ searchExpandDirection?: NiceSearchBarExpandDirection;
19453
+ searchExpandWidth?: number;
19454
+ searchBarProps?: Partial<NiceSearchBarProps>;
19455
+ centerContent?: default_2.ReactNode;
19456
+ /** Toggle search visibility independently of search props presence. Default: derived from search props. */
19457
+ showSearch?: boolean;
19458
+ languages?: NiceTopNavLanguageOption[];
19459
+ currentLanguage?: string;
19460
+ onLanguageChange?: (code: string) => void;
19461
+ showLanguagePicker?: boolean;
19462
+ languagePickerProps?: Partial<NiceLanguagePickerProps>;
19463
+ themes?: NiceTopNavThemeOption[];
19464
+ currentTheme?: string;
19465
+ onThemeChange?: (id: string) => void;
19466
+ showThemePicker?: boolean;
19467
+ themePickerProps?: Partial<NiceThemePickerProps>;
19468
+ notificationsCount?: number;
19469
+ onNotificationsClick?: () => void;
19470
+ notifications?: NiceNotificationItem[];
19471
+ onMarkAllNotificationsRead?: () => void;
19472
+ /** Toggle notifications visibility independently of notification props presence. */
19473
+ showNotifications?: boolean;
19474
+ user?: NiceTopNavUser | NiceAuthUser;
19475
+ userMenuItems?: UserMenuItem[];
19476
+ /** @deprecated Use `userMenuItems`. */
19477
+ userMenu?: NiceTopNavMenuItem[];
19478
+ onProfile?: () => void;
19479
+ onLogout?: () => void;
19480
+ showLogin?: boolean;
19481
+ loginLabel?: string;
19482
+ onLoginClick?: () => void;
19483
+ showRegister?: boolean;
19484
+ registerLabel?: string;
19485
+ onRegisterClick?: () => void;
19486
+ /**
19487
+ * Extra round icon-buttons rendered right before the auth/user-menu cluster.
19488
+ * Each entry can either fire `onClick` directly or open a small dropdown
19489
+ * (`menuItems`). Use this to add a customizable settings gear / quick actions
19490
+ * without forking {@link NiceAuthButtons}.
19491
+ */
19492
+ extraActions?: NiceTopNavExtraAction[];
19493
+ /** Show a built-in settings gear (uses inline Ntd-style cog SVG). */
19494
+ showSettings?: boolean;
19495
+ /** Settings click handler — used when `settingsMenuItems` is empty. */
19496
+ onSettingsClick?: () => void;
19497
+ /** Optional dropdown items shown when the settings gear is clicked. */
19498
+ settingsMenuItems?: UserMenuItem[];
19499
+ /** Settings button aria-label / tooltip. */
19500
+ settingsLabel?: string;
19501
+ /**
19502
+ * Wrap search + language + theme pickers in a collapsible cluster with a
19503
+ * chevron toggle. When `true` (default), the cluster starts collapsed and
19504
+ * expands to the LEFT on click — saves horizontal space and prevents the
19505
+ * navigation menu from overlapping the right toolbar. Set to `false` to
19506
+ * always render the pickers inline.
19507
+ */
19508
+ collapsibleRightCluster?: boolean;
19509
+ /** Initial open state of the collapsible cluster. Default `false`. */
19510
+ rightClusterDefaultOpen?: boolean;
19511
+ leftContent?: default_2.ReactNode;
19512
+ rightContent?: default_2.ReactNode;
19513
+ className?: string;
19514
+ style?: default_2.CSSProperties;
19515
+ id?: string;
19516
+ 'data-testid'?: string;
19517
+ }
19518
+
19519
+ /** @deprecated v2 theme type. Prefer `<NiceThemePicker>` props. */
19520
+ export declare interface NiceTopNavThemeOption {
19521
+ id: string;
19522
+ label: string;
19523
+ icon?: default_2.ReactNode;
19524
+ }
19525
+
19526
+ /** @deprecated v2 user type. Prefer {@link NiceAuthUser}. */
19527
+ export declare interface NiceTopNavUser {
19528
+ name: string;
19529
+ avatarUrl?: string;
19530
+ initials?: string;
19531
+ }
19532
+
19533
+ export declare type NiceTopNavVariant = 'default' | 'primary' | 'accent' | 'transparent' | 'glass' | 'dark';
19534
+
18067
19535
  export declare interface NiceTopologyData {
18068
19536
  links: Array<{
18069
19537
  sourceId: string;
@@ -18074,7 +19542,7 @@ export declare interface NiceTopologyData {
18074
19542
 
18075
19543
  export { NiceTouchTarget }
18076
19544
 
18077
- export declare function NiceTranscoder({ jobs: initialJobs, profiles: initialProfiles, presets: customPresets, maxConcurrent, autoStart, defaultOutputDir, showThumbnails, enableDragDrop, onJobStatusChange, onJobComplete, onJobError, onProgress, renderJobItem, className, style, children, ...baseProps }: NiceTranscoderProps): JSX_2.Element;
19545
+ export declare function NiceTranscoder({ jobs: initialJobs, profiles: initialProfiles, presets: customPresets, maxConcurrent, autoStart, defaultOutputDir, showThumbnails, enableDragDrop, onJobStatusChange, onJobComplete: _onJobComplete, onJobError: _onJobError, onProgress: _onProgress, renderJobItem, className, style, children, ...baseProps }: NiceTranscoderProps): JSX_2.Element;
18078
19546
 
18079
19547
  export declare interface NiceTranscoderProps extends NiceBaseProps {
18080
19548
  /** Initial jobs */
@@ -18492,7 +19960,7 @@ export declare class NiceUndoManager<T = unknown> {
18492
19960
  /** Total entries count */
18493
19961
  get size(): number;
18494
19962
  /** Start a batch group — all pushes until endBatch share a groupId */
18495
- startBatch(label?: string): string;
19963
+ startBatch(_label?: string): string;
18496
19964
  /** End the current batch group */
18497
19965
  endBatch(): void;
18498
19966
  /** Execute a function within a batch */
@@ -18705,6 +20173,8 @@ export declare type NiceValidationRule = {
18705
20173
  validationFunction?: (value: unknown) => boolean | string;
18706
20174
  };
18707
20175
 
20176
+ export { NiceValidationStatus }
20177
+
18708
20178
  export declare const NiceValidationSummary: default_2.FC<NiceValidationSummaryProps>;
18709
20179
 
18710
20180
  /** Props for the {@link NiceValidationSummary} component — displays a list of validation errors from the parent {@link NiceValidationGroup}. */
@@ -18800,7 +20270,7 @@ export declare interface NiceVectorMapProps extends NiceBaseProps {
18800
20270
  showTooltip?: boolean;
18801
20271
  }
18802
20272
 
18803
- export declare function NiceVideoAnnotator({ video: initialVideo, annotations: initialAnnotations, markers: initialMarkers, transcription: initialTranscription, speakers: initialSpeakers, currentUser, enableSpatialAnnotations, enableTranscription, enableComments, enableReview, autoSaveInterval, onAnnotationsChange, onMarkersChange, onTranscriptionChange, onAutoSave, onFrameExtracted, renderAnnotation, editorSize, className, style, children, ...baseProps }: NiceVideoAnnotatorProps): JSX_2.Element;
20273
+ export declare function NiceVideoAnnotator({ video: initialVideo, annotations: initialAnnotations, markers: initialMarkers, transcription: initialTranscription, speakers: initialSpeakers, currentUser, enableSpatialAnnotations, enableTranscription, enableComments, enableReview: _enableReview, autoSaveInterval: _autoSaveInterval, onAnnotationsChange, onMarkersChange, onTranscriptionChange: _onTranscriptionChange, onAutoSave: _onAutoSave, onFrameExtracted, renderAnnotation, editorSize, className, style, children, ...baseProps }: NiceVideoAnnotatorProps): JSX_2.Element;
18804
20274
 
18805
20275
  export declare interface NiceVideoAnnotatorProps extends NiceBaseProps {
18806
20276
  /** Editor layout size (minimal / compact / standard / fullscreen). */
@@ -20828,6 +22298,9 @@ export declare interface RealtimeDataPoint {
20828
22298
  label?: string;
20829
22299
  }
20830
22300
 
22301
+ /** Total time = prep + cook (minutes), or undefined if neither provided. */
22302
+ export declare function recipeTotalMinutes(recipe: NiceRecipeModel): number | undefined;
22303
+
20831
22304
  /**
20832
22305
  * Reconciliation view configuration.
20833
22306
  */
@@ -21868,7 +23341,7 @@ export declare interface SidebarNavDataNode {
21868
23341
  export declare interface SidebarNavDataSource {
21869
23342
  id: string;
21870
23343
  label: string;
21871
- icon?: string;
23344
+ icon?: ReactNode;
21872
23345
  color?: string;
21873
23346
  /** Server URL or connection string hint */
21874
23347
  url?: string;
@@ -21879,7 +23352,7 @@ export declare interface SidebarNavDataSource {
21879
23352
  export declare interface SidebarNavFavorite {
21880
23353
  id: string;
21881
23354
  label: string;
21882
- icon?: string;
23355
+ icon?: ReactNode;
21883
23356
  route?: string;
21884
23357
  sourceId?: string;
21885
23358
  moduleId?: string;
@@ -21902,7 +23375,7 @@ export declare type SidebarNavMode = 'all' | 'by-role' | 'by-unit' | 'favorites'
21902
23375
  export declare interface SidebarNavModule {
21903
23376
  id: string;
21904
23377
  label: string;
21905
- icon?: string;
23378
+ icon?: ReactNode;
21906
23379
  views: SidebarNavView[];
21907
23380
  /** Source this module belongs to */
21908
23381
  sourceId?: string;
@@ -21912,7 +23385,7 @@ export declare interface SidebarNavModule {
21912
23385
  export declare interface SidebarNavRole {
21913
23386
  id: string;
21914
23387
  label: string;
21915
- icon?: string;
23388
+ icon?: ReactNode;
21916
23389
  modules: SidebarNavModule[];
21917
23390
  /** Source this role belongs to */
21918
23391
  sourceId?: string;
@@ -21922,7 +23395,7 @@ export declare interface SidebarNavRole {
21922
23395
  export declare interface SidebarNavUnit {
21923
23396
  id: string;
21924
23397
  label: string;
21925
- icon?: string;
23398
+ icon?: ReactNode;
21926
23399
  modules: SidebarNavModule[];
21927
23400
  /** Source this unit belongs to */
21928
23401
  sourceId?: string;
@@ -21959,7 +23432,7 @@ export declare interface SidebarNavUserPrefs {
21959
23432
  export declare interface SidebarNavView {
21960
23433
  id: string;
21961
23434
  label: string;
21962
- icon?: string;
23435
+ icon?: ReactNode;
21963
23436
  /** Route path for navigation */
21964
23437
  route?: string;
21965
23438
  /** Badge counter (unread notifications, pending tasks, …) */
@@ -22029,6 +23502,8 @@ declare interface SliderConfig {
22029
23502
  format?: (value: number) => string;
22030
23503
  }
22031
23504
 
23505
+ declare type Slot = ReactNode | ((api: NiceNavShellApi) => ReactNode);
23506
+
22032
23507
  export declare interface SmartDeviceDto {
22033
23508
  id: string;
22034
23509
  name: string;
@@ -22904,6 +24379,34 @@ export { themePink }
22904
24379
  */
22905
24380
  export declare type ThemePreset = 'light' | 'dark' | 'system' | 'custom';
22906
24381
 
24382
+ /** Colours used to render a theme preview thumbnail. All optional except `background`. */
24383
+ export declare interface ThemePreviewColors {
24384
+ /** Main page background. */
24385
+ background: string;
24386
+ /** Sidebar / secondary surface (left bar in 'page' shape). */
24387
+ backgroundSecondary?: string;
24388
+ /** Accent / header bar colour. */
24389
+ primary: string;
24390
+ /** Body text colour (rendered as a thin line). */
24391
+ textColor: string;
24392
+ /** Optional border (defaults to a translucent overlay). */
24393
+ border?: string;
24394
+ }
24395
+
24396
+ /**
24397
+ * Renders a tiny "page" or "swatch" thumbnail of a theme.
24398
+ *
24399
+ * Pure CSS — a few absolutely-positioned `<span>`s — so it is cheap to
24400
+ * render in long lists. Width is parameterised; height is ~75% of width
24401
+ * so the thumbnail keeps a page-like aspect ratio.
24402
+ */
24403
+ export declare const ThemePreviewSwatch: default_2.FC<{
24404
+ colors: ThemePreviewColors;
24405
+ size?: number;
24406
+ shape?: 'page' | 'swatch';
24407
+ className?: string;
24408
+ }>;
24409
+
22907
24410
  export { themeRealEstate }
22908
24411
 
22909
24412
  export { themeRetrowave }
@@ -23330,7 +24833,7 @@ export declare interface TracelessStorageProps {
23330
24833
  /**
23331
24834
  * Shows warning when functionality is degraded due to privacy settings.
23332
24835
  */
23333
- export declare function TracelessWarning({ useCase, className, message: customMessage, variant, dismissible, onDismiss, }: TracelessWarningProps): default_2.ReactElement | null;
24836
+ export declare function TracelessWarning({ useCase: _useCase, className, message: customMessage, variant, dismissible, onDismiss, }: TracelessWarningProps): default_2.ReactElement | null;
23334
24837
 
23335
24838
  /**
23336
24839
  * Props for TracelessWarning.
@@ -23736,6 +25239,8 @@ export { UseContainerSizeResult }
23736
25239
 
23737
25240
  export { useControlId }
23738
25241
 
25242
+ export { useControllableState }
25243
+
23739
25244
  export { useControlPreferences }
23740
25245
 
23741
25246
  /**
@@ -23874,7 +25379,7 @@ export { useNiceDataSource }
23874
25379
 
23875
25380
  export { UseNiceDataSourceOptions }
23876
25381
 
23877
- export declare function useNiceDataSourceTimeout<T = unknown>({ url, timeout, slowThreshold, onTimeout, retryOnTimeout, toastOnTimeout, fetcher, }: UseNiceDataSourceTimeoutOptions): UseNiceDataSourceTimeoutResult<T>;
25382
+ export declare function useNiceDataSourceTimeout<T = unknown>({ url, timeout, slowThreshold, onTimeout, retryOnTimeout: _retryOnTimeout, toastOnTimeout, fetcher, }: UseNiceDataSourceTimeoutOptions): UseNiceDataSourceTimeoutResult<T>;
23878
25383
 
23879
25384
  export declare interface UseNiceDataSourceTimeoutOptions {
23880
25385
  url: string;