@nice2dev/ui 1.0.12 → 1.0.15
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.
- package/CHANGELOG.md +28 -0
- package/README.md +53 -36
- package/css/legacy-bg-text-aliases.css +83 -0
- package/dist/NiceErrorBoundary-BLTq8mPU.cjs +1 -0
- package/dist/NiceErrorBoundary-Bjw5U31n.js +762 -0
- package/dist/NiceErrorBoundary-CH8SBcSZ.js +762 -0
- package/dist/NiceErrorBoundary-CaVVPLh4.cjs +1 -0
- package/dist/NiceForm-CUlhtlHw.js +5357 -0
- package/dist/NiceForm-DTgIGX88.cjs +382 -0
- package/dist/NiceForm-Dbciuo4w.cjs +382 -0
- package/dist/NiceForm-Jf-ufPZz.js +5357 -0
- package/dist/NiceForm.css +1 -1
- package/dist/NiceModal-Bf1Q1VNL.cjs +1 -0
- package/dist/NiceModal-C_t2qqZd.js +95 -0
- package/dist/NiceModal-DrywdSv3.js +95 -0
- package/dist/NiceModal-FQqBxCij.cjs +1 -0
- package/dist/NiceModuleLifecyclePanel-CCFHxKIu.js +6343 -0
- package/dist/NiceModuleLifecyclePanel-CDX38sEx.js +6343 -0
- package/dist/NiceModuleLifecyclePanel-D8cIOI8I.cjs +1 -0
- package/dist/NiceModuleLifecyclePanel-xLrOv8nL.cjs +1 -0
- package/dist/NiceModuleLifecyclePanel.css +1 -1
- package/dist/NicePagination-Aj63sKV3.js +171 -0
- package/dist/NicePagination-BVkkePJU.js +171 -0
- package/dist/NicePagination-DGd3Hrh9.cjs +1 -0
- package/dist/NicePagination-DNjVutBJ.cjs +1 -0
- package/dist/NicePinCodeInput-B_0RCKQN.cjs +419 -0
- package/dist/NicePinCodeInput-CDtodnIM.js +11875 -0
- package/dist/NicePinCodeInput-Dffu701_.js +11875 -0
- package/dist/NicePinCodeInput-DytLfqZL.cjs +419 -0
- package/dist/NicePinCodeInput.css +1 -1
- package/dist/NiceSavedQueryPanel-4l-V9dGK.js +6446 -0
- package/dist/NiceSavedQueryPanel-B5TjD_Sb.cjs +596 -0
- package/dist/NiceSavedQueryPanel-CbR3EDQU.cjs +596 -0
- package/dist/NiceSavedQueryPanel-DJqCNWYZ.js +6446 -0
- package/dist/NiceTabs-B-9_mzpc.js +1624 -0
- package/dist/NiceTabs-CHg36waF.cjs +1 -0
- package/dist/NiceTabs-CbKhMxbC.cjs +1 -0
- package/dist/NiceTabs-HXphGn1B.js +1624 -0
- package/dist/NiceWindow-BxGVzUs2.js +1409 -0
- package/dist/NiceWindow-Ceb0mZ_0.js +1409 -0
- package/dist/NiceWindow-DXpnFZ0E.cjs +1 -0
- package/dist/NiceWindow-HhPIzPzs.cjs +1 -0
- package/dist/charts-BPJefcE8.js +4645 -0
- package/dist/charts-Dr6QyMiv.cjs +761 -0
- package/dist/charts-Us8Ep8MJ.cjs +761 -0
- package/dist/charts-fO6InNZd.js +4645 -0
- package/dist/charts.cjs +1 -1
- package/dist/charts.mjs +1 -1
- package/dist/core-B-tu8l9M.cjs +96 -0
- package/dist/core-BJ_UNMlX.js +22276 -0
- package/dist/core-DJ4NPp2B.js +22316 -0
- package/dist/core-DPY4m7vb.cjs +96 -0
- package/dist/data.cjs +1 -1
- package/dist/data.d.ts +7 -0
- package/dist/data.mjs +1 -1
- package/dist/editors.cjs +1 -1
- package/dist/editors.mjs +3 -3
- package/dist/feedback.cjs +1 -1
- package/dist/feedback.mjs +2 -2
- package/dist/index-B-9lbtwJ.cjs +5194 -0
- package/dist/index-BNy9Nn0X.js +61422 -0
- package/dist/index-DHc_KZkF.js +61311 -0
- package/dist/index-drIVMHeC.cjs +5194 -0
- package/dist/index.cjs +1 -1
- package/dist/index.css +1 -1
- package/dist/index.d.ts +1209 -67
- package/dist/index.mjs +887 -871
- package/dist/lazy.cjs +1 -1
- package/dist/lazy.mjs +3 -3
- package/dist/navigation.cjs +1 -1
- package/dist/navigation.d.ts +309 -70
- package/dist/navigation.mjs +92 -91
- package/dist/overlays.cjs +1 -1
- package/dist/overlays.mjs +36 -36
- package/dist/style.css +7 -0
- package/package.json +9 -5
package/dist/index.d.ts
CHANGED
|
@@ -2734,6 +2734,9 @@ export { createCustomDataSource }
|
|
|
2734
2734
|
*/
|
|
2735
2735
|
export declare function createDocIndex(docs: ComponentDoc[], packageName: string): DocIndex;
|
|
2736
2736
|
|
|
2737
|
+
/** Build an empty recipe scaffold (used by NiceRecipeEditor "new" mode). */
|
|
2738
|
+
export declare function createEmptyRecipe(partial?: Partial<NiceRecipeModel>): NiceRecipeModel;
|
|
2739
|
+
|
|
2737
2740
|
export { createGraphQLDataSource }
|
|
2738
2741
|
|
|
2739
2742
|
export { createGraphQLSubscriptionSource }
|
|
@@ -6700,6 +6703,9 @@ export declare type NetworkNodeCategory = 'router' | 'switch' | 'access-point' |
|
|
|
6700
6703
|
|
|
6701
6704
|
export declare type NetworkNodeStatus = 'online' | 'offline' | 'warning';
|
|
6702
6705
|
|
|
6706
|
+
/** Tiny non-cryptographic id generator suitable for UI-only records. */
|
|
6707
|
+
export declare function newRecipeId(prefix?: string): string;
|
|
6708
|
+
|
|
6703
6709
|
export { NICE_BREAKPOINTS }
|
|
6704
6710
|
|
|
6705
6711
|
export { NICE_BUILTIN_ICONS }
|
|
@@ -6723,6 +6729,23 @@ export { NICE_THEME_PACK_LIST_EXTENDED }
|
|
|
6723
6729
|
|
|
6724
6730
|
export { NICE_THEME_PACKS }
|
|
6725
6731
|
|
|
6732
|
+
/**
|
|
6733
|
+
* Pre-built picker options for every preset in {@link NICE_THEME_PRESETS}.
|
|
6734
|
+
* Use as the default `themes` prop on `<NiceThemePicker>`.
|
|
6735
|
+
*
|
|
6736
|
+
* @example
|
|
6737
|
+
* ```tsx
|
|
6738
|
+
* import { NiceThemePicker, NICE_THEME_PICKER_PRESETS } from '@nice2dev/ui';
|
|
6739
|
+
*
|
|
6740
|
+
* <NiceThemePicker
|
|
6741
|
+
* themes={NICE_THEME_PICKER_PRESETS}
|
|
6742
|
+
* value={themeId}
|
|
6743
|
+
* onChange={(opt) => setThemeId(opt?.id ?? null)}
|
|
6744
|
+
* />
|
|
6745
|
+
* ```
|
|
6746
|
+
*/
|
|
6747
|
+
export declare const NICE_THEME_PICKER_PRESETS: NiceThemeDescriptor[];
|
|
6748
|
+
|
|
6726
6749
|
export { NICE_THEME_PRESETS }
|
|
6727
6750
|
|
|
6728
6751
|
export { NiceA11yConfig }
|
|
@@ -7267,6 +7290,42 @@ export declare interface NiceAuditLogProps {
|
|
|
7267
7290
|
'data-testid'?: string;
|
|
7268
7291
|
}
|
|
7269
7292
|
|
|
7293
|
+
export declare const NiceAuthButtons: default_2.ForwardRefExoticComponent<NiceAuthButtonsProps & default_2.RefAttributes<HTMLDivElement>>;
|
|
7294
|
+
|
|
7295
|
+
export declare interface NiceAuthButtonsProps {
|
|
7296
|
+
/**
|
|
7297
|
+
* Authenticated user — when set, renders the user-menu instead of
|
|
7298
|
+
* login/register buttons.
|
|
7299
|
+
*/
|
|
7300
|
+
user?: NiceAuthUser;
|
|
7301
|
+
/** Items shown in the user-menu dropdown (only when `user` is set). */
|
|
7302
|
+
userMenuItems?: UserMenuItem[];
|
|
7303
|
+
/** Convenience handler appended as a "Profile" item if no items are given. */
|
|
7304
|
+
onProfile?: () => void;
|
|
7305
|
+
/** Convenience handler appended as a "Logout" item if no items are given. */
|
|
7306
|
+
onLogout?: () => void;
|
|
7307
|
+
/** Show the "Sign in" button when no `user`. Default: `true`. */
|
|
7308
|
+
showLogin?: boolean;
|
|
7309
|
+
/** Login button label. */
|
|
7310
|
+
loginLabel?: string;
|
|
7311
|
+
/** Login click handler. */
|
|
7312
|
+
onLoginClick?: () => void;
|
|
7313
|
+
/** Show the "Register" button when no `user`. Default: auto-true if `onRegisterClick` provided. */
|
|
7314
|
+
showRegister?: boolean;
|
|
7315
|
+
/** Register button label. */
|
|
7316
|
+
registerLabel?: string;
|
|
7317
|
+
/** Register click handler. */
|
|
7318
|
+
onRegisterClick?: () => void;
|
|
7319
|
+
/** Button size. */
|
|
7320
|
+
size?: NiceSize;
|
|
7321
|
+
/** Compact mode — hides login button text on narrow viewports (CSS-driven). */
|
|
7322
|
+
compact?: boolean;
|
|
7323
|
+
className?: string;
|
|
7324
|
+
style?: default_2.CSSProperties;
|
|
7325
|
+
id?: string;
|
|
7326
|
+
'data-testid'?: string;
|
|
7327
|
+
}
|
|
7328
|
+
|
|
7270
7329
|
/**
|
|
7271
7330
|
* {@link NiceAuthGuard} — Protected route/section wrapper.
|
|
7272
7331
|
* Checks authentication and permission/role requirements before rendering children.
|
|
@@ -7297,6 +7356,21 @@ export declare interface NiceAuthGuardProps {
|
|
|
7297
7356
|
children: default_2.ReactNode;
|
|
7298
7357
|
}
|
|
7299
7358
|
|
|
7359
|
+
export declare interface NiceAuthUser {
|
|
7360
|
+
/** Display name. */
|
|
7361
|
+
name: string;
|
|
7362
|
+
/** Avatar image URL. */
|
|
7363
|
+
avatarUrl?: string;
|
|
7364
|
+
/** Initials fallback (auto-derived from `name` when omitted). */
|
|
7365
|
+
initials?: string;
|
|
7366
|
+
/** Optional email address shown in the user-menu header. */
|
|
7367
|
+
email?: string;
|
|
7368
|
+
/** Optional role/title shown in the user-menu header. */
|
|
7369
|
+
role?: string;
|
|
7370
|
+
/** Online status indicator. */
|
|
7371
|
+
status?: 'online' | 'away' | 'busy' | 'offline';
|
|
7372
|
+
}
|
|
7373
|
+
|
|
7300
7374
|
export declare const NiceAutocomplete: default_2.FC<NiceAutocompleteProps>;
|
|
7301
7375
|
|
|
7302
7376
|
/** Props for the {@link NiceAutocomplete} component — a text input with filtered suggestion dropdown and optional multi-select. */
|
|
@@ -11221,6 +11295,8 @@ export declare interface NiceFileManagerProps extends NiceBaseProps {
|
|
|
11221
11295
|
viewMode?: 'list' | 'detail' | 'thumbnails';
|
|
11222
11296
|
selectable?: boolean;
|
|
11223
11297
|
showBreadcrumb?: boolean;
|
|
11298
|
+
/** Show top toolbar with single/dual-pane switch + view mode toggles + search */
|
|
11299
|
+
showTopToolbar?: boolean;
|
|
11224
11300
|
/** Show function-key toolbar at bottom (dual-pane style) */
|
|
11225
11301
|
showFnToolbar?: boolean;
|
|
11226
11302
|
/** Show status bar with selection summary */
|
|
@@ -11257,6 +11333,10 @@ export declare interface NiceFileManagerProps extends NiceBaseProps {
|
|
|
11257
11333
|
onRefresh?: (panel?: NiceFilePanel) => void;
|
|
11258
11334
|
/** Sort change */
|
|
11259
11335
|
onSortChange?: (sort: NiceFileSort, panel?: NiceFilePanel) => void;
|
|
11336
|
+
/** Top toolbar — toggle dual-pane mode (called when user clicks Single/Dual buttons) */
|
|
11337
|
+
onDualPaneChange?: (dual: boolean) => void;
|
|
11338
|
+
/** Top toolbar — change view mode */
|
|
11339
|
+
onViewModeChange?: (mode: 'list' | 'detail' | 'thumbnails') => void;
|
|
11260
11340
|
}
|
|
11261
11341
|
|
|
11262
11342
|
/** Active panel identifier for dual-pane {@link NiceFileManager}. */
|
|
@@ -12498,6 +12578,31 @@ export { NiceInfiniteScrollConfig }
|
|
|
12498
12578
|
|
|
12499
12579
|
export { NiceInfiniteScrollState }
|
|
12500
12580
|
|
|
12581
|
+
/**
|
|
12582
|
+
* Shared meal/recipe/ingredient models.
|
|
12583
|
+
*
|
|
12584
|
+
* Used by:
|
|
12585
|
+
* - NiceRecipe (planning) — display
|
|
12586
|
+
* - NiceRecipeEditor (tools) — editing
|
|
12587
|
+
* - NiceScheduler (planning) — when an event has `eventType: 'recipe'`
|
|
12588
|
+
*/
|
|
12589
|
+
/** A single measurable component of a recipe (e.g. "200 g flour"). */
|
|
12590
|
+
export declare interface NiceIngredient {
|
|
12591
|
+
id: string;
|
|
12592
|
+
/** Display name, e.g. "All-purpose flour". */
|
|
12593
|
+
name: string;
|
|
12594
|
+
/** Numeric amount (parsed). Use `unit` for the measurement. */
|
|
12595
|
+
quantity?: number;
|
|
12596
|
+
/** Free-form unit string: "g", "ml", "tbsp", "cup", "pcs". */
|
|
12597
|
+
unit?: string;
|
|
12598
|
+
/** Free-form notes shown next to the ingredient ("sifted", "room temp"). */
|
|
12599
|
+
notes?: string;
|
|
12600
|
+
/** Optional grouping ("Dough", "Filling", "Topping"). */
|
|
12601
|
+
group?: string;
|
|
12602
|
+
/** Marks the ingredient as completed in interactive shopping/cook mode. */
|
|
12603
|
+
checked?: boolean;
|
|
12604
|
+
}
|
|
12605
|
+
|
|
12501
12606
|
export { NiceInlineHelp }
|
|
12502
12607
|
|
|
12503
12608
|
export { NiceInlineHelpProps }
|
|
@@ -12694,6 +12799,8 @@ export declare interface NiceKanbanBoardProps extends NiceBaseProps, TracelessSt
|
|
|
12694
12799
|
size?: NiceSize;
|
|
12695
12800
|
/** Allow columns to be collapsed */
|
|
12696
12801
|
collapsible?: boolean;
|
|
12802
|
+
/** Layout mode — `scroll` (default, horizontal scroll when overflowing) or `responsive` (columns wrap to fit container width). */
|
|
12803
|
+
layoutMode?: NiceKanbanLayoutMode;
|
|
12697
12804
|
/** View mode (default, compact, detailed) */
|
|
12698
12805
|
viewMode?: NiceKanbanViewMode;
|
|
12699
12806
|
/** Callback when view mode changes */
|
|
@@ -12748,6 +12855,11 @@ export declare interface NiceKanbanColumn {
|
|
|
12748
12855
|
limit?: number;
|
|
12749
12856
|
}
|
|
12750
12857
|
|
|
12858
|
+
/** Layout mode for the kanban board container.
|
|
12859
|
+
* - `scroll`: Columns keep their min/max width and the board scrolls horizontally when they don't fit (default).
|
|
12860
|
+
* - `responsive`: Columns wrap onto multiple rows and flex-grow to fill the available width — no horizontal overflow. */
|
|
12861
|
+
declare type NiceKanbanLayoutMode = 'scroll' | 'responsive';
|
|
12862
|
+
|
|
12751
12863
|
/** Persisted state for NiceKanbanBoard */
|
|
12752
12864
|
export declare interface NiceKanbanPersistedState {
|
|
12753
12865
|
/** Collapsed column keys */
|
|
@@ -12816,8 +12928,19 @@ export declare interface NiceLanguagePickerProps extends NiceFormFieldProps, Dua
|
|
|
12816
12928
|
placeholder?: string;
|
|
12817
12929
|
/** Enable search */
|
|
12818
12930
|
showSearch?: boolean;
|
|
12819
|
-
/**
|
|
12931
|
+
/**
|
|
12932
|
+
* Threshold below which the internal search/filter input is hidden even
|
|
12933
|
+
* when `showSearch` is `true`. Prevents a noisy filter UI for short lists
|
|
12934
|
+
* (e.g. 5 languages). Default: `8`. Set `0` to always show, `Infinity` to
|
|
12935
|
+
* always hide.
|
|
12936
|
+
*/
|
|
12937
|
+
searchThreshold?: number;
|
|
12938
|
+
/** Search placeholder. Default: translated `'Filter languages…'`. */
|
|
12820
12939
|
searchPlaceholder?: string;
|
|
12940
|
+
/** Controlled open state (for coordinating with sibling controls). */
|
|
12941
|
+
isOpen?: boolean;
|
|
12942
|
+
/** Notified whenever the dropdown open state changes. */
|
|
12943
|
+
onOpenChange?: (open: boolean) => void;
|
|
12821
12944
|
/** Show BCP-47 code in trigger. Default: false (compact) */
|
|
12822
12945
|
showCodeInValue?: boolean;
|
|
12823
12946
|
/** Show BCP-47 code in dropdown options. Default: true */
|
|
@@ -13351,6 +13474,57 @@ export declare interface NiceLoginFormProps extends NiceBaseProps {
|
|
|
13351
13474
|
passwordPlaceholder?: string;
|
|
13352
13475
|
}
|
|
13353
13476
|
|
|
13477
|
+
export declare const NiceLogo: default_2.ForwardRefExoticComponent<NiceLogoProps & default_2.RefAttributes<HTMLElement>>;
|
|
13478
|
+
|
|
13479
|
+
export declare interface NiceLogoProps {
|
|
13480
|
+
/** Image URL to render as `<img>`. Has priority over `icon` and `variant`. */
|
|
13481
|
+
src?: string;
|
|
13482
|
+
/** Custom icon node (SVG / NiceIcon / emoji). Has priority over `variant`. */
|
|
13483
|
+
icon?: default_2.ReactNode;
|
|
13484
|
+
/**
|
|
13485
|
+
* Pre-built brand mark variant from the OmniVerk family.
|
|
13486
|
+
* Used when neither `src` nor `icon` is provided.
|
|
13487
|
+
* Default: `'mark'`.
|
|
13488
|
+
*/
|
|
13489
|
+
variant?: NiceLogoVariant;
|
|
13490
|
+
/** Brand name rendered next to the icon. Hidden if `iconOnly` is true. */
|
|
13491
|
+
text?: string;
|
|
13492
|
+
/** Render only the icon (no text). */
|
|
13493
|
+
iconOnly?: boolean;
|
|
13494
|
+
/** Render only the text (no icon). */
|
|
13495
|
+
textOnly?: boolean;
|
|
13496
|
+
/**
|
|
13497
|
+
* Logo height in pixels — width is derived to preserve aspect ratio.
|
|
13498
|
+
* Accepts presets (`xs`/`sm`/`md`/`lg`/`xl`) or a raw number.
|
|
13499
|
+
* Default: `'md'` (32 px).
|
|
13500
|
+
*/
|
|
13501
|
+
size?: NiceLogoSize;
|
|
13502
|
+
/**
|
|
13503
|
+
* Render as `<a href>` link.
|
|
13504
|
+
* If neither `href` nor `onClick` is set, the logo is a static `<span>`.
|
|
13505
|
+
*/
|
|
13506
|
+
href?: string;
|
|
13507
|
+
/** Click handler — renders as `<button>`. */
|
|
13508
|
+
onClick?: () => void;
|
|
13509
|
+
/** Accessible label (default: `text` or "Brand"). */
|
|
13510
|
+
ariaLabel?: string;
|
|
13511
|
+
className?: string;
|
|
13512
|
+
style?: default_2.CSSProperties;
|
|
13513
|
+
id?: string;
|
|
13514
|
+
'data-testid'?: string;
|
|
13515
|
+
}
|
|
13516
|
+
|
|
13517
|
+
export declare type NiceLogoSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | number;
|
|
13518
|
+
|
|
13519
|
+
/**
|
|
13520
|
+
* Brand mark variant.
|
|
13521
|
+
* - `mark` (default): symbol only — diamond + triangle (NtdOmniVerk).
|
|
13522
|
+
* - `badge`: rounded-square enclosed mark (NtdOmniVerkBadge), good for favicons / chips.
|
|
13523
|
+
* - `spinner`: animated rotating mark (NtdOmniVerkSpinner) — use for loading states.
|
|
13524
|
+
* - `logo`: full mark + wordmark side-by-side (NtdOmniVerkLogo).
|
|
13525
|
+
*/
|
|
13526
|
+
export declare type NiceLogoVariant = 'mark' | 'badge' | 'spinner' | 'logo';
|
|
13527
|
+
|
|
13354
13528
|
export declare const NiceLookup: default_2.FC<NiceLookupProps>;
|
|
13355
13529
|
|
|
13356
13530
|
/** Column definition for the mini-grid lookup mode. */
|
|
@@ -13657,50 +13831,50 @@ export declare interface NiceMdiWorkspaceProps extends NiceBaseProps {
|
|
|
13657
13831
|
unsavedWarningMessage?: string;
|
|
13658
13832
|
}
|
|
13659
13833
|
|
|
13660
|
-
|
|
13661
|
-
|
|
13662
|
-
|
|
13663
|
-
|
|
13664
|
-
|
|
13665
|
-
|
|
13666
|
-
|
|
13667
|
-
|
|
13668
|
-
|
|
13669
|
-
|
|
13670
|
-
/**
|
|
13671
|
-
|
|
13672
|
-
|
|
13673
|
-
key: string;
|
|
13674
|
-
/** Display label. */
|
|
13675
|
-
label: string;
|
|
13676
|
-
/** Optional icon. */
|
|
13677
|
-
icon?: default_2.ReactNode;
|
|
13678
|
-
/** If set, renders the item as a link. */
|
|
13679
|
-
href?: string;
|
|
13680
|
-
/** Click handler. */
|
|
13681
|
-
onClick?: () => void;
|
|
13682
|
-
/** Disable the item. */
|
|
13683
|
-
disabled?: boolean;
|
|
13834
|
+
/** A planned meal — references one or more recipes. */
|
|
13835
|
+
export declare interface NiceMeal {
|
|
13836
|
+
id: string;
|
|
13837
|
+
/** Display name, e.g. "Sunday Brunch". */
|
|
13838
|
+
name: string;
|
|
13839
|
+
/** Date/time the meal is served. */
|
|
13840
|
+
servedAt?: Date;
|
|
13841
|
+
kind?: NiceMealKind;
|
|
13842
|
+
/** Recipes that compose this meal. */
|
|
13843
|
+
recipeIds: string[];
|
|
13844
|
+
/** Optional override of total servings for this meal. */
|
|
13845
|
+
servings?: number;
|
|
13846
|
+
notes?: string;
|
|
13684
13847
|
}
|
|
13685
13848
|
|
|
13686
|
-
/**
|
|
13687
|
-
export declare
|
|
13688
|
-
/** Unique key. */
|
|
13689
|
-
key: string;
|
|
13690
|
-
/** Panel trigger label. */
|
|
13691
|
-
label: string;
|
|
13692
|
-
/** Multi-column layout. */
|
|
13693
|
-
columns: NiceMegaMenuColumn[];
|
|
13694
|
-
/** Fully custom panel renderer (overrides columns). */
|
|
13695
|
-
renderPanel?: () => default_2.ReactNode;
|
|
13696
|
-
}
|
|
13849
|
+
/** Meal kind used by meal planners. */
|
|
13850
|
+
export declare type NiceMealKind = 'breakfast' | 'lunch' | 'dinner' | 'snack' | 'other';
|
|
13697
13851
|
|
|
13698
|
-
/**
|
|
13699
|
-
|
|
13700
|
-
|
|
13701
|
-
|
|
13702
|
-
|
|
13703
|
-
|
|
13852
|
+
/**
|
|
13853
|
+
* Weekly meal planner — rows are meal kinds (breakfast/lunch/dinner by
|
|
13854
|
+
* default), columns are the seven days starting at {@link weekStart}.
|
|
13855
|
+
* Each cell shows the meals served at that day+kind; users can add a
|
|
13856
|
+
* recipe from the pool via the cell's `+` picker, or remove individual
|
|
13857
|
+
* meal cards. Pure-client state (raises {@link onChange} with the new
|
|
13858
|
+
* meals array).
|
|
13859
|
+
*
|
|
13860
|
+
* Pairs naturally with `NiceScheduler` — meal `servedAt` dates can be
|
|
13861
|
+
* surfaced as scheduler events upstream.
|
|
13862
|
+
*/
|
|
13863
|
+
export declare const NiceMealPlan: default_2.FC<NiceMealPlanProps>;
|
|
13864
|
+
|
|
13865
|
+
export declare interface NiceMealPlanProps extends NiceBaseProps {
|
|
13866
|
+
/** Pool of recipes the user can pick from. */
|
|
13867
|
+
recipes: NiceRecipeModel[];
|
|
13868
|
+
/** Planned meals. */
|
|
13869
|
+
meals: NiceMeal[];
|
|
13870
|
+
/** Called whenever the meal list changes. */
|
|
13871
|
+
onChange?: (meals: NiceMeal[]) => void;
|
|
13872
|
+
/** First day of the week to render (defaults to today's Monday). */
|
|
13873
|
+
weekStart?: Date;
|
|
13874
|
+
/** Which meal-kind rows to show (default: breakfast/lunch/dinner). */
|
|
13875
|
+
rows?: NiceMealKind[];
|
|
13876
|
+
/** Read-only mode (no add/remove/move). */
|
|
13877
|
+
readOnly?: boolean;
|
|
13704
13878
|
}
|
|
13705
13879
|
|
|
13706
13880
|
export declare const NiceMention: default_2.ForwardRefExoticComponent<NiceMentionProps & default_2.RefAttributes<HTMLTextAreaElement>>;
|
|
@@ -13731,34 +13905,146 @@ export declare interface NiceMentionSuggestion {
|
|
|
13731
13905
|
|
|
13732
13906
|
export declare const NiceMenu: default_2.FC<NiceMenuProps>;
|
|
13733
13907
|
|
|
13734
|
-
|
|
13908
|
+
export declare type NiceMenuAlign = 'start' | 'center' | 'end';
|
|
13909
|
+
|
|
13910
|
+
export declare type NiceMenuDensity = 'compact' | 'normal' | 'comfortable';
|
|
13911
|
+
|
|
13912
|
+
/**
|
|
13913
|
+
* A single entry in {@link NiceMenu}. Both legacy (`key` + `text` + `items`)
|
|
13914
|
+
* and new (`id` + `label` + `children`) shapes are accepted; new fields
|
|
13915
|
+
* take precedence when both are supplied.
|
|
13916
|
+
*/
|
|
13735
13917
|
export declare interface NiceMenuItem {
|
|
13736
|
-
/**
|
|
13737
|
-
|
|
13738
|
-
/**
|
|
13739
|
-
|
|
13740
|
-
/**
|
|
13918
|
+
/** New canonical identifier. */
|
|
13919
|
+
id?: string;
|
|
13920
|
+
/** Legacy alias for `id`. */
|
|
13921
|
+
key?: string;
|
|
13922
|
+
/** New canonical label (string or arbitrary node). */
|
|
13923
|
+
label?: default_2.ReactNode;
|
|
13924
|
+
/** Legacy alias for `label`. */
|
|
13925
|
+
text?: string;
|
|
13926
|
+
/** Optional small description shown under the label inside dropdown panels. */
|
|
13927
|
+
description?: default_2.ReactNode;
|
|
13928
|
+
/** Leading icon. */
|
|
13741
13929
|
icon?: default_2.ReactNode;
|
|
13742
|
-
/**
|
|
13930
|
+
/** Optional badge (string / number) shown to the right of the label. */
|
|
13931
|
+
badge?: default_2.ReactNode;
|
|
13932
|
+
/** When set, renders the entry as an `<a>`. */
|
|
13933
|
+
href?: string;
|
|
13934
|
+
/** Anchor target. */
|
|
13935
|
+
target?: string;
|
|
13936
|
+
/** Anchor rel. */
|
|
13937
|
+
rel?: string;
|
|
13938
|
+
/** Click handler. */
|
|
13939
|
+
onClick?: (event: default_2.MouseEvent) => void;
|
|
13940
|
+
/** Disable the entry. */
|
|
13743
13941
|
disabled?: boolean;
|
|
13744
|
-
/**
|
|
13942
|
+
/** Render the entry as a danger / destructive action. */
|
|
13943
|
+
danger?: boolean;
|
|
13944
|
+
/** When `true`, render a horizontal divider instead of an entry (panel-only). */
|
|
13945
|
+
divider?: boolean;
|
|
13946
|
+
/** New canonical children list (only the first level of nesting opens a flyout). */
|
|
13947
|
+
children?: NiceMenuItem[];
|
|
13948
|
+
/** Legacy alias for `children`. */
|
|
13745
13949
|
items?: NiceMenuItem[];
|
|
13746
|
-
/**
|
|
13747
|
-
|
|
13950
|
+
/** Tooltip / `aria-label` override. */
|
|
13951
|
+
ariaLabel?: string;
|
|
13748
13952
|
}
|
|
13749
13953
|
|
|
13750
|
-
|
|
13954
|
+
export declare type NiceMenuOrientation = 'horizontal' | 'vertical';
|
|
13955
|
+
|
|
13751
13956
|
export declare interface NiceMenuProps extends NiceBaseProps {
|
|
13752
|
-
/** Size variant. */
|
|
13753
|
-
size?: NiceSize;
|
|
13754
13957
|
/** Menu items. */
|
|
13755
13958
|
items: NiceMenuItem[];
|
|
13756
13959
|
/** Layout direction. */
|
|
13757
|
-
orientation?:
|
|
13758
|
-
/**
|
|
13759
|
-
|
|
13960
|
+
orientation?: NiceMenuOrientation;
|
|
13961
|
+
/** Visual style. */
|
|
13962
|
+
variant?: NiceMenuVariant;
|
|
13963
|
+
/** Density preset (paddings + font size). */
|
|
13964
|
+
density?: NiceMenuDensity;
|
|
13965
|
+
/** Size preset. */
|
|
13966
|
+
size?: NiceSize;
|
|
13967
|
+
/** Stretch top-level items to fill the container. */
|
|
13968
|
+
fullWidth?: boolean;
|
|
13969
|
+
/** Show vertical separators between top items. */
|
|
13970
|
+
showDividers?: boolean;
|
|
13971
|
+
/** Top-item alignment for dropdown panels. */
|
|
13972
|
+
panelAlign?: NiceMenuAlign;
|
|
13973
|
+
/** Min width for dropdown / sub-panel (px). */
|
|
13974
|
+
panelMinWidth?: number;
|
|
13975
|
+
/** Max width for dropdown / sub-panel (px). */
|
|
13976
|
+
panelMaxWidth?: number;
|
|
13977
|
+
/**
|
|
13978
|
+
* Gap (in px or any CSS length) between top-level items. Use `0` for
|
|
13979
|
+
* a fully flush bar (e.g. tab-bar look). Default: density-driven (`4px`).
|
|
13980
|
+
*/
|
|
13981
|
+
itemGap?: number | string;
|
|
13982
|
+
/**
|
|
13983
|
+
* Horizontal padding inside each top-level button. Overrides density.
|
|
13984
|
+
* Accepts a number (treated as `px`) or any CSS length.
|
|
13985
|
+
*/
|
|
13986
|
+
paddingX?: number | string;
|
|
13987
|
+
/**
|
|
13988
|
+
* Vertical padding inside each top-level button. Overrides density.
|
|
13989
|
+
* Accepts a number (treated as `px`) or any CSS length.
|
|
13990
|
+
*/
|
|
13991
|
+
paddingY?: number | string;
|
|
13992
|
+
/**
|
|
13993
|
+
* Render dropdown / sub-panels in a `document.body` portal so the menu
|
|
13994
|
+
* never gets clipped by `overflow: hidden` ancestors. Default: `true`.
|
|
13995
|
+
* Set `false` to fall back to the legacy absolute-positioned panel.
|
|
13996
|
+
*/
|
|
13997
|
+
portal?: boolean;
|
|
13998
|
+
/**
|
|
13999
|
+
* z-index applied to the portalled dropdown panel. Default: `1100`.
|
|
14000
|
+
*/
|
|
14001
|
+
panelZIndex?: number;
|
|
14002
|
+
/** Custom arrow node for items with children. Default: `▾`. */
|
|
14003
|
+
arrowIcon?: default_2.ReactNode;
|
|
14004
|
+
/** Custom flyout arrow shown next to nested items. Default: `▸`. */
|
|
14005
|
+
flyoutArrowIcon?: default_2.ReactNode;
|
|
14006
|
+
/** Close the panel after selecting any leaf entry. Default: `true`. */
|
|
14007
|
+
closeOnSelect?: boolean;
|
|
14008
|
+
/**
|
|
14009
|
+
* How to open dropdown panels:
|
|
14010
|
+
* - `click` (default) — toggle on trigger click only.
|
|
14011
|
+
* - `hover` — open on pointer-enter, close on pointer-leave (after `closeDelay`).
|
|
14012
|
+
* - `both` — opens on hover *and* click (best-of-both for mega-menus).
|
|
14013
|
+
*/
|
|
14014
|
+
openTrigger?: 'click' | 'hover' | 'both';
|
|
14015
|
+
/** Delay (ms) before opening on hover. Default: `120`. */
|
|
14016
|
+
openDelay?: number;
|
|
14017
|
+
/** Delay (ms) before closing after pointer leaves the menu+panel. Default: `180`. */
|
|
14018
|
+
closeDelay?: number;
|
|
14019
|
+
/** Notified whenever the open trigger id changes (null = closed). */
|
|
14020
|
+
onOpenChange?: (id: string | null) => void;
|
|
14021
|
+
/** Highlight the matching id (or any of its ancestors). */
|
|
14022
|
+
activeId?: string;
|
|
14023
|
+
/** Legacy alias for `activeId`. */
|
|
14024
|
+
activeKey?: string;
|
|
14025
|
+
/** Called when any leaf is clicked. */
|
|
14026
|
+
onItemClick?: (item: NiceMenuItem, event: default_2.MouseEvent) => void;
|
|
14027
|
+
/** Accessible name for the wrapper `<nav>`. */
|
|
14028
|
+
ariaLabel?: string;
|
|
14029
|
+
/** Optional renderer for top-level trigger label (allows wrapping with i18n components). */
|
|
14030
|
+
renderTriggerLabel?: (item: NiceMenuItem) => default_2.ReactNode;
|
|
14031
|
+
/** Optional renderer for panel-entry label. */
|
|
14032
|
+
renderEntryLabel?: (item: NiceMenuItem) => default_2.ReactNode;
|
|
13760
14033
|
}
|
|
13761
14034
|
|
|
14035
|
+
/**
|
|
14036
|
+
* Visual style for top-level triggers.
|
|
14037
|
+
* - `separated` — soft buttons with gap (default-ish)
|
|
14038
|
+
* - `group` — flush button-group with shared border
|
|
14039
|
+
* - `pills` — rounded pills, primary fill on active
|
|
14040
|
+
* - `ghost` — chrome-less, hover only (used by NiceTopNav)
|
|
14041
|
+
* - `solid` — opaque buttons on `--bg-elevated`
|
|
14042
|
+
* - `underline` — flat with animated underline on hover/active
|
|
14043
|
+
* - `tabs` — tab-bar look (top-rounded, bottom border)
|
|
14044
|
+
* - `glass` — translucent blurred background
|
|
14045
|
+
*/
|
|
14046
|
+
export declare type NiceMenuVariant = 'separated' | 'group' | 'pills' | 'ghost' | 'solid' | 'underline' | 'tabs' | 'glass' | 'bordered' | 'borderless';
|
|
14047
|
+
|
|
13762
14048
|
export declare const NiceMergeRequestBuilder: default_2.FC<NiceMergeRequestBuilderProps>;
|
|
13763
14049
|
|
|
13764
14050
|
export declare interface NiceMergeRequestBuilderProps extends NiceBaseProps {
|
|
@@ -14319,6 +14605,197 @@ export declare interface NiceNavbarProps extends NiceFormFieldProps {
|
|
|
14319
14605
|
onBrandClick?: () => void;
|
|
14320
14606
|
}
|
|
14321
14607
|
|
|
14608
|
+
export declare const NiceNavMenu: default_2.ForwardRefExoticComponent<NiceNavMenuProps & default_2.RefAttributes<HTMLElement>>;
|
|
14609
|
+
|
|
14610
|
+
export declare type NiceNavMenuAlign = 'start' | 'end' | 'auto';
|
|
14611
|
+
|
|
14612
|
+
export declare interface NiceNavMenuItem {
|
|
14613
|
+
/** Stable id used for active-marking and keyboard focus. */
|
|
14614
|
+
id: string;
|
|
14615
|
+
/** Displayed label. */
|
|
14616
|
+
label: default_2.ReactNode;
|
|
14617
|
+
/** Optional icon (emoji, SVG node, NiceIcon). */
|
|
14618
|
+
icon?: default_2.ReactNode;
|
|
14619
|
+
/** Navigation href (rendered as `<a>` when no children). */
|
|
14620
|
+
href?: string;
|
|
14621
|
+
/** Anchor `target` attribute (only when `href` is set). */
|
|
14622
|
+
target?: '_self' | '_blank' | '_parent' | '_top';
|
|
14623
|
+
/** Anchor `rel` attribute (only when `href` is set). */
|
|
14624
|
+
rel?: string;
|
|
14625
|
+
/** Click handler (rendered as `<button>` when no `href`). */
|
|
14626
|
+
onClick?: (e: default_2.MouseEvent) => void;
|
|
14627
|
+
/** Disable the item. */
|
|
14628
|
+
disabled?: boolean;
|
|
14629
|
+
/** Render as a danger action (red text). */
|
|
14630
|
+
danger?: boolean;
|
|
14631
|
+
/** Render as a divider (label/icon ignored). */
|
|
14632
|
+
divider?: boolean;
|
|
14633
|
+
/** Optional badge node rendered to the right of the label. */
|
|
14634
|
+
badge?: default_2.ReactNode;
|
|
14635
|
+
/** Optional secondary text shown under the label inside dropdowns. */
|
|
14636
|
+
description?: string;
|
|
14637
|
+
/** Sub-items (only honored at level-1 to produce a level-2 flyout). */
|
|
14638
|
+
children?: NiceNavMenuItem[];
|
|
14639
|
+
/**
|
|
14640
|
+
* **Mega menu** — when set on a top-level item, opens a FULL-WIDTH panel
|
|
14641
|
+
* anchored to the bar's bottom edge instead of a floating dropdown. Use for
|
|
14642
|
+
* marketing/SaaS navs where you want rich multi-column content.
|
|
14643
|
+
*
|
|
14644
|
+
* Either pass a ready `megaPanel` JSX node, or use the structured
|
|
14645
|
+
* `megaColumns` shorthand which renders a clean column-based layout for you.
|
|
14646
|
+
* Both can be set; `megaPanel` wins.
|
|
14647
|
+
*/
|
|
14648
|
+
megaPanel?: default_2.ReactNode | (() => default_2.ReactNode);
|
|
14649
|
+
/** Structured mega-menu data — rendered as columns of items. */
|
|
14650
|
+
megaColumns?: NiceNavMenuMegaColumn[];
|
|
14651
|
+
/** Optional footer node rendered at the bottom of the mega panel (CTA strip). */
|
|
14652
|
+
megaFooter?: default_2.ReactNode;
|
|
14653
|
+
}
|
|
14654
|
+
|
|
14655
|
+
/** A single column of items inside a mega-menu panel. */
|
|
14656
|
+
export declare interface NiceNavMenuMegaColumn {
|
|
14657
|
+
/** Optional column heading. */
|
|
14658
|
+
title?: default_2.ReactNode;
|
|
14659
|
+
/** Items rendered in the column (no nested mega; each is a simple item). */
|
|
14660
|
+
items: NiceNavMenuItem[];
|
|
14661
|
+
/** Optional footer node under this column (e.g. "View all" link). */
|
|
14662
|
+
footer?: default_2.ReactNode;
|
|
14663
|
+
}
|
|
14664
|
+
|
|
14665
|
+
export declare interface NiceNavMenuProps {
|
|
14666
|
+
/** Top-level items. */
|
|
14667
|
+
items: NiceNavMenuItem[];
|
|
14668
|
+
/** Currently active item id (matched against any nested item id). */
|
|
14669
|
+
activeId?: string;
|
|
14670
|
+
/** Size scale. Default `'md'`. */
|
|
14671
|
+
size?: NiceNavMenuSize;
|
|
14672
|
+
/** Dropdown panel alignment. Default `'start'`. */
|
|
14673
|
+
align?: NiceNavMenuAlign;
|
|
14674
|
+
/** Accessible label for the surrounding `<nav>`. */
|
|
14675
|
+
ariaLabel?: string;
|
|
14676
|
+
/** Render full-width (top-level items stretch to fill). Default `false`. */
|
|
14677
|
+
stretch?: boolean;
|
|
14678
|
+
/**
|
|
14679
|
+
* How top-level dropdowns / mega-panels open. Default `'click'` for backward
|
|
14680
|
+
* compatibility. Set to `'hover'` to get the classical desktop mega-menu
|
|
14681
|
+
* pattern (Apple / Microsoft / Stripe) — opens on mouse-enter, closes after
|
|
14682
|
+
* a short grace delay so the cursor can travel into the panel.
|
|
14683
|
+
*/
|
|
14684
|
+
trigger?: 'click' | 'hover';
|
|
14685
|
+
/** Hover-close grace delay in ms. Default 150. Only used when `trigger='hover'`. */
|
|
14686
|
+
hoverCloseDelay?: number;
|
|
14687
|
+
/** Pass-through className. */
|
|
14688
|
+
className?: string;
|
|
14689
|
+
/** Pass-through style. */
|
|
14690
|
+
style?: default_2.CSSProperties;
|
|
14691
|
+
/** Pass-through id. */
|
|
14692
|
+
id?: string;
|
|
14693
|
+
/** Test id. */
|
|
14694
|
+
'data-testid'?: string;
|
|
14695
|
+
}
|
|
14696
|
+
|
|
14697
|
+
export declare type NiceNavMenuSize = 'sm' | 'md' | 'lg';
|
|
14698
|
+
|
|
14699
|
+
export declare const NiceNavShell: ForwardRefExoticComponent<NiceNavShellProps & RefAttributes<HTMLDivElement>>;
|
|
14700
|
+
|
|
14701
|
+
export declare interface NiceNavShellApi {
|
|
14702
|
+
activeRoute: string | undefined;
|
|
14703
|
+
tabs: NiceNavShellTab[];
|
|
14704
|
+
openRoute: (route: string, opts?: Partial<NiceNavShellTab>) => void;
|
|
14705
|
+
closeTab: (id: string) => void;
|
|
14706
|
+
closeOthers: (id: string) => void;
|
|
14707
|
+
closeAll: () => void;
|
|
14708
|
+
pinTab: (id: string, pinned?: boolean) => void;
|
|
14709
|
+
setDirty: (id: string, dirty?: boolean) => void;
|
|
14710
|
+
}
|
|
14711
|
+
|
|
14712
|
+
export declare type NiceNavShellPersistence = 'memory' | 'localStorage' | 'session';
|
|
14713
|
+
|
|
14714
|
+
export declare interface NiceNavShellProps {
|
|
14715
|
+
/** Top navigation slot — pass a ReactNode or render-prop. */
|
|
14716
|
+
topNav?: Slot;
|
|
14717
|
+
/**
|
|
14718
|
+
* Convenience pass-through: when set (and `topNav` is not), the shell
|
|
14719
|
+
* renders an internal `<NiceTopNav>` with these props. Lets consumers get
|
|
14720
|
+
* a fully-featured top bar (logo / nav menu / search / pickers /
|
|
14721
|
+
* notifications / user menu / collapsible right cluster) without having
|
|
14722
|
+
* to import and instantiate NiceTopNav themselves.
|
|
14723
|
+
*/
|
|
14724
|
+
topNavProps?: NiceTopNavProps;
|
|
14725
|
+
/** Sidebar navigation slot. */
|
|
14726
|
+
sidebar?: Slot;
|
|
14727
|
+
/** Map of route → content (ReactNode or factory). */
|
|
14728
|
+
routes: Record<string, ReactNode | (() => ReactNode)>;
|
|
14729
|
+
/** Initial / default route (used when uncontrolled). */
|
|
14730
|
+
defaultRoute?: string;
|
|
14731
|
+
/** Controlled active route. */
|
|
14732
|
+
activeRoute?: string;
|
|
14733
|
+
/** Called whenever the active route changes. */
|
|
14734
|
+
onRouteChange?: (route: string) => void;
|
|
14735
|
+
/** Optional per-route labels (used for tab titles). */
|
|
14736
|
+
routeLabels?: Record<string, ReactNode>;
|
|
14737
|
+
/** Optional per-route icons. */
|
|
14738
|
+
routeIcons?: Record<string, ReactNode>;
|
|
14739
|
+
/** Fallback rendered when active route has no entry in `routes`. */
|
|
14740
|
+
fallback?: ReactNode;
|
|
14741
|
+
/**
|
|
14742
|
+
* Rendered in the content area when no route is active (uncontrolled mode
|
|
14743
|
+
* with no `defaultRoute`). Defaults to a blank panel painted with the
|
|
14744
|
+
* theme background — intentionally empty so the shell never auto-jumps to
|
|
14745
|
+
* the first route. Pass any node to customise (welcome screen, hero,
|
|
14746
|
+
* shortcuts grid, etc.).
|
|
14747
|
+
*/
|
|
14748
|
+
emptyState?: ReactNode;
|
|
14749
|
+
/** `'enabled'` shows the tab strip; `'disabled'` (default) just routes content. */
|
|
14750
|
+
tabsMode?: 'enabled' | 'disabled';
|
|
14751
|
+
/** When `false` (default) navigating to an already-open route focuses it instead of duplicating. */
|
|
14752
|
+
allowDuplicateTabs?: boolean;
|
|
14753
|
+
/** Maximum number of tabs (oldest non-pinned auto-closes when exceeded). */
|
|
14754
|
+
maxTabs?: number;
|
|
14755
|
+
/** Show close X. Default `true`. */
|
|
14756
|
+
closableTabs?: boolean;
|
|
14757
|
+
/** Allow pin/unpin via context menu. Default `true`. */
|
|
14758
|
+
pinnableTabs?: boolean;
|
|
14759
|
+
/** Reorder via drag (shipped as basic HTML5 drag — opt-in). Default `false`. */
|
|
14760
|
+
reorderableTabs?: boolean;
|
|
14761
|
+
/** Persistence backend for tab list. Default `'memory'`. */
|
|
14762
|
+
persistTabs?: NiceNavShellPersistence;
|
|
14763
|
+
/** Storage key for persistence. Default `'nice-nav-shell:tabs'`. */
|
|
14764
|
+
persistKey?: string;
|
|
14765
|
+
/** Tab strip is wheel-scrollable + shows ◀▶ arrows on overflow. Default `true`. */
|
|
14766
|
+
tabsScrollable?: boolean;
|
|
14767
|
+
/** Right-click tab → menu (close / close others / close all / pin). Default `true`. */
|
|
14768
|
+
tabsContextMenu?: boolean;
|
|
14769
|
+
/** Content swap animation. Default `'fade'`. */
|
|
14770
|
+
tabsAnimation?: NiceNavShellTabsAnimation;
|
|
14771
|
+
/** Initial tab list (used only on first mount when storage is empty). */
|
|
14772
|
+
initialTabs?: NiceNavShellTab[];
|
|
14773
|
+
/** Routes auto-opened as pinned on first mount. */
|
|
14774
|
+
pinnedRoutes?: string[];
|
|
14775
|
+
className?: string;
|
|
14776
|
+
contentClassName?: string;
|
|
14777
|
+
'data-testid'?: string;
|
|
14778
|
+
}
|
|
14779
|
+
|
|
14780
|
+
export declare interface NiceNavShellTab {
|
|
14781
|
+
/** Unique stable id. Defaults to `route` if omitted at openRoute call. */
|
|
14782
|
+
id: string;
|
|
14783
|
+
/** Route key the tab represents. */
|
|
14784
|
+
route: string;
|
|
14785
|
+
/** Tab label (string or arbitrary node). */
|
|
14786
|
+
label: ReactNode;
|
|
14787
|
+
/** Optional leading icon. */
|
|
14788
|
+
icon?: ReactNode;
|
|
14789
|
+
/** Pinned tabs render first and have no close button by default. */
|
|
14790
|
+
pinned?: boolean;
|
|
14791
|
+
/** When true, shows a `•` dot indicating unsaved work. */
|
|
14792
|
+
dirty?: boolean;
|
|
14793
|
+
/** Per-tab override of `closableTabs`. */
|
|
14794
|
+
closable?: boolean;
|
|
14795
|
+
}
|
|
14796
|
+
|
|
14797
|
+
export declare type NiceNavShellTabsAnimation = 'none' | 'fade' | 'slide';
|
|
14798
|
+
|
|
14322
14799
|
export declare const NiceNetworkDiscoveryPanel: default_2.FC<NiceNetworkDiscoveryPanelProps>;
|
|
14323
14800
|
|
|
14324
14801
|
export declare interface NiceNetworkDiscoveryPanelProps extends NiceBaseProps {
|
|
@@ -14412,6 +14889,24 @@ export declare interface NiceNotificationChannel {
|
|
|
14412
14889
|
configUrl?: string;
|
|
14413
14890
|
}
|
|
14414
14891
|
|
|
14892
|
+
export declare interface NiceNotificationItem {
|
|
14893
|
+
id: string;
|
|
14894
|
+
title: string;
|
|
14895
|
+
body?: string;
|
|
14896
|
+
/** Visual level (controls color of marker dot). Default `'info'`. */
|
|
14897
|
+
level?: NiceNotificationLevel;
|
|
14898
|
+
/** Optional ISO date string or Date instance. */
|
|
14899
|
+
timestamp?: string | Date;
|
|
14900
|
+
/** Whether this notification has already been seen. */
|
|
14901
|
+
read?: boolean;
|
|
14902
|
+
/** Optional icon/avatar node. */
|
|
14903
|
+
icon?: default_2.ReactNode;
|
|
14904
|
+
/** Click handler — fires when the row is activated. */
|
|
14905
|
+
onClick?: () => void;
|
|
14906
|
+
}
|
|
14907
|
+
|
|
14908
|
+
export declare type NiceNotificationLevel = 'info' | 'success' | 'warning' | 'error';
|
|
14909
|
+
|
|
14415
14910
|
export declare const NiceNotificationPreferences: default_2.FC<NiceNotificationPreferencesProps>;
|
|
14416
14911
|
|
|
14417
14912
|
export declare interface NiceNotificationPreferencesProps extends NiceBaseProps {
|
|
@@ -14444,6 +14939,49 @@ export declare interface NiceNotificationPrefs {
|
|
|
14444
14939
|
};
|
|
14445
14940
|
}
|
|
14446
14941
|
|
|
14942
|
+
export declare const NiceNotifications: default_2.ForwardRefExoticComponent<NiceNotificationsProps & default_2.RefAttributes<HTMLDivElement>>;
|
|
14943
|
+
|
|
14944
|
+
export declare interface NiceNotificationsProps {
|
|
14945
|
+
/** List of notifications. */
|
|
14946
|
+
items?: NiceNotificationItem[];
|
|
14947
|
+
/**
|
|
14948
|
+
* Optional explicit unread count. When omitted, it is computed from
|
|
14949
|
+
* `items.filter(i => !i.read).length`.
|
|
14950
|
+
*/
|
|
14951
|
+
unreadCount?: number;
|
|
14952
|
+
/** Title rendered at the top of the dropdown panel. */
|
|
14953
|
+
panelTitle?: string;
|
|
14954
|
+
/** Empty-state text. */
|
|
14955
|
+
emptyText?: string;
|
|
14956
|
+
/** Width (px) of the dropdown panel. Default: 340. */
|
|
14957
|
+
panelWidth?: number;
|
|
14958
|
+
/** Maximum dropdown height (px). Default: 420. */
|
|
14959
|
+
maxHeight?: number;
|
|
14960
|
+
/** Show "Mark all as read" link in panel header. Default: true. */
|
|
14961
|
+
showMarkAllRead?: boolean;
|
|
14962
|
+
/** Show "View all" link at panel footer. Default: false. */
|
|
14963
|
+
showViewAll?: boolean;
|
|
14964
|
+
/** Mark-all-as-read handler. */
|
|
14965
|
+
onMarkAllRead?: () => void;
|
|
14966
|
+
/** View-all handler. */
|
|
14967
|
+
onViewAll?: () => void;
|
|
14968
|
+
/** Per-item read-toggle handler (called when user marks an item read). */
|
|
14969
|
+
onItemRead?: (id: string) => void;
|
|
14970
|
+
/** Custom bell icon. */
|
|
14971
|
+
icon?: default_2.ReactNode;
|
|
14972
|
+
/** Controlled open flag. */
|
|
14973
|
+
open?: boolean;
|
|
14974
|
+
onOpenChange?: (open: boolean) => void;
|
|
14975
|
+
/** Cap the badge display (default 99 → shows "99+"). */
|
|
14976
|
+
badgeMax?: number;
|
|
14977
|
+
/** Size variant of the trigger. */
|
|
14978
|
+
size?: 'sm' | 'md' | 'lg';
|
|
14979
|
+
className?: string;
|
|
14980
|
+
style?: default_2.CSSProperties;
|
|
14981
|
+
id?: string;
|
|
14982
|
+
'data-testid'?: string;
|
|
14983
|
+
}
|
|
14984
|
+
|
|
14447
14985
|
export declare const NiceNumberInput: default_2.ForwardRefExoticComponent<NiceNumberInputProps & default_2.RefAttributes<HTMLInputElement>>;
|
|
14448
14986
|
|
|
14449
14987
|
/** Props for the {@link NiceNumberInput} component — a numeric field with stepper and precision control. */
|
|
@@ -15880,6 +16418,165 @@ export declare interface NiceRealtimeChartRef {
|
|
|
15880
16418
|
getData: () => RealtimeDataPoint[];
|
|
15881
16419
|
}
|
|
15882
16420
|
|
|
16421
|
+
/**
|
|
16422
|
+
* Recipe display component — shows photos, metadata (servings/time/difficulty),
|
|
16423
|
+
* ingredient list and step-by-step instructions. Read-mostly; pair with
|
|
16424
|
+
* {@link NiceRecipeEditor} (from `@nice2dev/ui-tools`) for editing.
|
|
16425
|
+
*/
|
|
16426
|
+
export declare const NiceRecipe: default_2.FC<NiceRecipeProps>;
|
|
16427
|
+
|
|
16428
|
+
/** A named group of recipe ids. */
|
|
16429
|
+
export declare interface NiceRecipeCollection {
|
|
16430
|
+
id: string;
|
|
16431
|
+
name: string;
|
|
16432
|
+
description?: string;
|
|
16433
|
+
recipeIds: string[];
|
|
16434
|
+
}
|
|
16435
|
+
|
|
16436
|
+
/**
|
|
16437
|
+
* Sidebar of named collections (cookbooks, weekly menus, themes…) plus a
|
|
16438
|
+
* `NiceRecipeList` filtered to the active collection's recipe ids.
|
|
16439
|
+
* Includes inline create / rename / delete and an "Add recipe" picker.
|
|
16440
|
+
*/
|
|
16441
|
+
export declare const NiceRecipeCollections: default_2.FC<NiceRecipeCollectionsProps>;
|
|
16442
|
+
|
|
16443
|
+
export declare interface NiceRecipeCollectionsProps extends NiceBaseProps {
|
|
16444
|
+
/** Pool of recipes the collections reference. */
|
|
16445
|
+
recipes: NiceRecipeModel[];
|
|
16446
|
+
/** Collections to display. */
|
|
16447
|
+
collections: NiceRecipeCollection[];
|
|
16448
|
+
/** Fired when collections change (rename, add, remove, add/remove recipe). */
|
|
16449
|
+
onChange?: (collections: NiceRecipeCollection[]) => void;
|
|
16450
|
+
/** Hide create / rename / delete controls. */
|
|
16451
|
+
readOnly?: boolean;
|
|
16452
|
+
/** Fired when a recipe card inside the active collection is clicked. */
|
|
16453
|
+
onSelectRecipe?: (recipe: NiceRecipeModel) => void;
|
|
16454
|
+
}
|
|
16455
|
+
|
|
16456
|
+
/** Difficulty enum used by recipe + scheduler-recipe variant. */
|
|
16457
|
+
export declare type NiceRecipeDifficulty = 'easy' | 'medium' | 'hard';
|
|
16458
|
+
|
|
16459
|
+
/**
|
|
16460
|
+
* Recipe editor — full CRUD over a {@link NiceRecipe}: metadata,
|
|
16461
|
+
* ingredients (add/remove/reorder), steps (add/remove/reorder), photos
|
|
16462
|
+
* (URL-based). Pair with {@link NiceRecipe} (from `@nice2dev/ui-planning`)
|
|
16463
|
+
* for read-only display.
|
|
16464
|
+
*/
|
|
16465
|
+
export declare const NiceRecipeEditor: default_2.FC<NiceRecipeEditorProps>;
|
|
16466
|
+
|
|
16467
|
+
export declare interface NiceRecipeEditorProps extends NiceBaseProps {
|
|
16468
|
+
/** Recipe to edit. Pass `undefined` for "new". */
|
|
16469
|
+
recipe?: NiceRecipeModel;
|
|
16470
|
+
/** Called on every change (live binding). */
|
|
16471
|
+
onChange?: (recipe: NiceRecipeModel) => void;
|
|
16472
|
+
/** Called when the user clicks Save (`showActions`). */
|
|
16473
|
+
onSave?: (recipe: NiceRecipeModel) => void;
|
|
16474
|
+
/** Called when the user clicks Cancel. */
|
|
16475
|
+
onCancel?: () => void;
|
|
16476
|
+
/** Render Save/Cancel buttons. */
|
|
16477
|
+
showActions?: boolean;
|
|
16478
|
+
/** Custom Save button label. */
|
|
16479
|
+
saveLabel?: string;
|
|
16480
|
+
/** Custom Cancel button label. */
|
|
16481
|
+
cancelLabel?: string;
|
|
16482
|
+
}
|
|
16483
|
+
|
|
16484
|
+
/**
|
|
16485
|
+
* Browsable, searchable, filterable grid of {@link NiceRecipe} cards.
|
|
16486
|
+
* Pure-client filtering: title/description/tags substring + difficulty + tag.
|
|
16487
|
+
*/
|
|
16488
|
+
export declare const NiceRecipeList: default_2.FC<NiceRecipeListProps>;
|
|
16489
|
+
|
|
16490
|
+
export declare interface NiceRecipeListProps extends NiceBaseProps {
|
|
16491
|
+
/** Recipes to browse. */
|
|
16492
|
+
recipes: NiceRecipeModel[];
|
|
16493
|
+
/** Fired when the user activates a card. */
|
|
16494
|
+
onSelect?: (recipe: NiceRecipeModel) => void;
|
|
16495
|
+
/** Initial search query. */
|
|
16496
|
+
initialQuery?: string;
|
|
16497
|
+
/** Hide the difficulty / tag filters. */
|
|
16498
|
+
hideFilters?: boolean;
|
|
16499
|
+
/** Empty-state hint when no recipes match. */
|
|
16500
|
+
emptyMessage?: string;
|
|
16501
|
+
}
|
|
16502
|
+
|
|
16503
|
+
/** A full recipe record. */
|
|
16504
|
+
export declare interface NiceRecipeModel {
|
|
16505
|
+
id: string;
|
|
16506
|
+
title: string;
|
|
16507
|
+
description?: string;
|
|
16508
|
+
/** Number of servings the recipe yields. */
|
|
16509
|
+
servings?: number;
|
|
16510
|
+
prepMinutes?: number;
|
|
16511
|
+
cookMinutes?: number;
|
|
16512
|
+
difficulty?: NiceRecipeDifficulty;
|
|
16513
|
+
cuisine?: string;
|
|
16514
|
+
tags?: string[];
|
|
16515
|
+
ingredients: NiceIngredient[];
|
|
16516
|
+
steps: NiceRecipeStep[];
|
|
16517
|
+
photos?: NiceRecipePhoto[];
|
|
16518
|
+
nutrition?: NiceRecipeNutrition;
|
|
16519
|
+
/** External source (URL or attribution). */
|
|
16520
|
+
sourceUrl?: string;
|
|
16521
|
+
createdAt?: Date;
|
|
16522
|
+
updatedAt?: Date;
|
|
16523
|
+
}
|
|
16524
|
+
|
|
16525
|
+
/** Optional nutrition summary per serving. */
|
|
16526
|
+
export declare interface NiceRecipeNutrition {
|
|
16527
|
+
calories?: number;
|
|
16528
|
+
protein?: number;
|
|
16529
|
+
fat?: number;
|
|
16530
|
+
carbs?: number;
|
|
16531
|
+
fiber?: number;
|
|
16532
|
+
sugar?: number;
|
|
16533
|
+
sodium?: number;
|
|
16534
|
+
}
|
|
16535
|
+
|
|
16536
|
+
/** A photo attached to a recipe. */
|
|
16537
|
+
export declare interface NiceRecipePhoto {
|
|
16538
|
+
id: string;
|
|
16539
|
+
/** Image URL (data:, blob:, http(s):). */
|
|
16540
|
+
url: string;
|
|
16541
|
+
/** Alt text / caption. */
|
|
16542
|
+
caption?: string;
|
|
16543
|
+
/** When true, this photo is used as the cover image. */
|
|
16544
|
+
primary?: boolean;
|
|
16545
|
+
}
|
|
16546
|
+
|
|
16547
|
+
/** Props for {@link NiceRecipe}. */
|
|
16548
|
+
export declare interface NiceRecipeProps extends NiceBaseProps {
|
|
16549
|
+
/** Recipe to display. */
|
|
16550
|
+
recipe: NiceRecipeModel;
|
|
16551
|
+
/** Compact card layout (smaller paddings, hides description / nutrition). */
|
|
16552
|
+
compact?: boolean;
|
|
16553
|
+
/** Hide the photo gallery. */
|
|
16554
|
+
hidePhotos?: boolean;
|
|
16555
|
+
/** Hide the ingredients column. */
|
|
16556
|
+
hideIngredients?: boolean;
|
|
16557
|
+
/** Hide the steps list. */
|
|
16558
|
+
hideSteps?: boolean;
|
|
16559
|
+
/** Toggle an ingredient's `checked` state (interactive shopping mode). */
|
|
16560
|
+
onIngredientToggle?: (ingredient: NiceIngredient) => void;
|
|
16561
|
+
/** Toggle a step's `done` state (interactive cook mode). */
|
|
16562
|
+
onStepToggle?: (step: NiceRecipeStep) => void;
|
|
16563
|
+
}
|
|
16564
|
+
|
|
16565
|
+
/** A single step / instruction in a recipe. */
|
|
16566
|
+
export declare interface NiceRecipeStep {
|
|
16567
|
+
id: string;
|
|
16568
|
+
/** Render order (1-based). */
|
|
16569
|
+
order: number;
|
|
16570
|
+
/** Human instruction text. Markdown-friendly but rendered as plain text by default. */
|
|
16571
|
+
instruction: string;
|
|
16572
|
+
/** Optional duration in minutes for timers. */
|
|
16573
|
+
durationMinutes?: number;
|
|
16574
|
+
/** Optional URL of an image illustrating the step. */
|
|
16575
|
+
image?: string;
|
|
16576
|
+
/** Marks the step as completed in interactive cook mode. */
|
|
16577
|
+
done?: boolean;
|
|
16578
|
+
}
|
|
16579
|
+
|
|
15883
16580
|
/**
|
|
15884
16581
|
* NiceReconciliationView — Bank reconciliation split-view with drag-drop matching.
|
|
15885
16582
|
*
|
|
@@ -16452,6 +17149,40 @@ export declare interface NiceSchedulerEvent {
|
|
|
16452
17149
|
description?: string;
|
|
16453
17150
|
/** Event visual style */
|
|
16454
17151
|
eventStyle?: 'solid' | 'striped' | 'outlined' | 'dashed';
|
|
17152
|
+
/**
|
|
17153
|
+
* Discriminator selecting which form variant to use in the built-in editor.
|
|
17154
|
+
* Defaults to `'task'`. Use `'recipe'` to attach a {@link NiceRecipe} via
|
|
17155
|
+
* `recipe`, or `'service'` to attach service data via `service`.
|
|
17156
|
+
*/
|
|
17157
|
+
eventType?: NiceSchedulerEventType;
|
|
17158
|
+
/** Recipe payload — present when `eventType === 'recipe'`. */
|
|
17159
|
+
recipe?: NiceRecipeModel;
|
|
17160
|
+
/** Service payload — present when `eventType === 'service'`. */
|
|
17161
|
+
service?: NiceSchedulerServiceData;
|
|
17162
|
+
}
|
|
17163
|
+
|
|
17164
|
+
/**
|
|
17165
|
+
* Discriminator for the kind of thing scheduled. Built-ins:
|
|
17166
|
+
* - `'task'` — generic event (default, back-compat).
|
|
17167
|
+
* - `'recipe'` — meal-prep / cooking session backed by a {@link NiceRecipe}.
|
|
17168
|
+
* - `'service'` — a service appointment (provider, customer, location, price).
|
|
17169
|
+
*
|
|
17170
|
+
* Consumers can extend with custom string literals — the scheduler will treat
|
|
17171
|
+
* unknown types like `'task'` unless a matching {@link NiceSchedulerEventTypeDef}
|
|
17172
|
+
* is provided in `eventTypes`.
|
|
17173
|
+
*/
|
|
17174
|
+
export declare type NiceSchedulerEventType = 'task' | 'recipe' | 'service' | (string & {});
|
|
17175
|
+
|
|
17176
|
+
/** Definition of a custom event-type option exposed in the editor's type picker. */
|
|
17177
|
+
export declare interface NiceSchedulerEventTypeDef {
|
|
17178
|
+
/** Discriminator value matching {@link NiceSchedulerEvent.eventType}. */
|
|
17179
|
+
type: NiceSchedulerEventType;
|
|
17180
|
+
/** Display label in the editor select. */
|
|
17181
|
+
label: string;
|
|
17182
|
+
/** Optional emoji/icon glyph. */
|
|
17183
|
+
icon?: string;
|
|
17184
|
+
/** Optional accent color for the chip in the calendar grid. */
|
|
17185
|
+
color?: string;
|
|
16455
17186
|
}
|
|
16456
17187
|
|
|
16457
17188
|
/** Props for the {@link NiceScheduler} component — a full-featured calendar / scheduler with drag, recurring events, resources, and inline editing. */
|
|
@@ -16499,6 +17230,19 @@ export declare interface NiceSchedulerProps extends NiceBaseProps {
|
|
|
16499
17230
|
editable?: boolean;
|
|
16500
17231
|
/** Custom field set for the built-in editor — when provided, replaces the auto-generated default fields. NiceForm-compatible. */
|
|
16501
17232
|
formFields?: NiceFormItem[];
|
|
17233
|
+
/**
|
|
17234
|
+
* Per-event-type form field overrides. When a key matches the active
|
|
17235
|
+
* `eventType` in the editor, those NiceForm items REPLACE the type-specific
|
|
17236
|
+
* section (recipe/service body). Use `'task'` to override the default form.
|
|
17237
|
+
*/
|
|
17238
|
+
formFieldsByType?: Partial<Record<NiceSchedulerEventType, NiceFormItem[]>>;
|
|
17239
|
+
/**
|
|
17240
|
+
* Available event-type options in the editor's type picker. When omitted,
|
|
17241
|
+
* defaults to a single `'task'` entry (back-compat — no picker shown).
|
|
17242
|
+
* Pass `[{type:'task'},{type:'recipe'},{type:'service'}]` to enable all three
|
|
17243
|
+
* built-ins.
|
|
17244
|
+
*/
|
|
17245
|
+
eventTypes?: NiceSchedulerEventTypeDef[];
|
|
16502
17246
|
/** Custom full editor render — when provided, takes over the entire editor body. */
|
|
16503
17247
|
renderEventEditor?: (ctx: {
|
|
16504
17248
|
event?: NiceSchedulerEvent | null;
|
|
@@ -16529,6 +17273,26 @@ export declare interface NiceSchedulerResource {
|
|
|
16529
17273
|
color?: string;
|
|
16530
17274
|
}
|
|
16531
17275
|
|
|
17276
|
+
/** Service-specific data attached to a `service` event. */
|
|
17277
|
+
export declare interface NiceSchedulerServiceData {
|
|
17278
|
+
/** Service name (e.g. "Haircut", "Oil change"). */
|
|
17279
|
+
serviceName: string;
|
|
17280
|
+
/** Person providing the service. */
|
|
17281
|
+
providerName?: string;
|
|
17282
|
+
/** Customer name. */
|
|
17283
|
+
customerName?: string;
|
|
17284
|
+
/** Customer phone / email. */
|
|
17285
|
+
customerContact?: string;
|
|
17286
|
+
/** Location / address. */
|
|
17287
|
+
location?: string;
|
|
17288
|
+
/** Price (numeric). */
|
|
17289
|
+
price?: number;
|
|
17290
|
+
/** Currency code (ISO 4217), defaults to display-only "PLN". */
|
|
17291
|
+
currency?: string;
|
|
17292
|
+
/** Free-form notes. */
|
|
17293
|
+
notes?: string;
|
|
17294
|
+
}
|
|
17295
|
+
|
|
16532
17296
|
/** Available calendar views for the {@link NiceScheduler}. */
|
|
16533
17297
|
export declare type NiceSchedulerView = 'day' | 'week' | 'workWeek' | 'month' | 'dayRange' | 'monthRange' | 'agenda' | 'timeline';
|
|
16534
17298
|
|
|
@@ -16550,6 +17314,77 @@ export declare interface NiceScrollViewProps extends NiceBaseProps {
|
|
|
16550
17314
|
children?: default_2.ReactNode;
|
|
16551
17315
|
}
|
|
16552
17316
|
|
|
17317
|
+
export declare const NiceSearchBar: default_2.ForwardRefExoticComponent<NiceSearchBarProps & default_2.RefAttributes<NiceSearchBarHandle>>;
|
|
17318
|
+
|
|
17319
|
+
export declare type NiceSearchBarExpandDirection = 'left' | 'right' | 'down';
|
|
17320
|
+
|
|
17321
|
+
export declare interface NiceSearchBarHandle {
|
|
17322
|
+
focus: () => void;
|
|
17323
|
+
expand: () => void;
|
|
17324
|
+
collapse: () => void;
|
|
17325
|
+
clear: () => void;
|
|
17326
|
+
}
|
|
17327
|
+
|
|
17328
|
+
export declare interface NiceSearchBarProps {
|
|
17329
|
+
/** Controlled value. */
|
|
17330
|
+
value?: string;
|
|
17331
|
+
/** Default value (uncontrolled). */
|
|
17332
|
+
defaultValue?: string;
|
|
17333
|
+
/** Change handler. */
|
|
17334
|
+
onChange?: (value: string) => void;
|
|
17335
|
+
/** Submit handler — fires on Enter. */
|
|
17336
|
+
onSubmit?: (value: string) => void;
|
|
17337
|
+
/** Clear handler — fires when ✕ is clicked or Escape pressed with non-empty value. */
|
|
17338
|
+
onClear?: () => void;
|
|
17339
|
+
/** Placeholder text (defaults to translated "Search…"). */
|
|
17340
|
+
placeholder?: string;
|
|
17341
|
+
/**
|
|
17342
|
+
* If true, the bar starts already expanded and stays so unless `collapsible`
|
|
17343
|
+
* is also true. Default: `false`.
|
|
17344
|
+
*/
|
|
17345
|
+
defaultExpanded?: boolean;
|
|
17346
|
+
/**
|
|
17347
|
+
* Controlled expanded flag. When provided, takes priority over the
|
|
17348
|
+
* internal state.
|
|
17349
|
+
*/
|
|
17350
|
+
expanded?: boolean;
|
|
17351
|
+
/** Notified whenever the expanded state changes. */
|
|
17352
|
+
onExpandedChange?: (expanded: boolean) => void;
|
|
17353
|
+
/**
|
|
17354
|
+
* Allow the bar to collapse. Default: `true` when no `expanded` is given.
|
|
17355
|
+
* Set to `false` to render an always-expanded plain search input.
|
|
17356
|
+
*/
|
|
17357
|
+
collapsible?: boolean;
|
|
17358
|
+
/**
|
|
17359
|
+
* Direction the input grows when expanding from the icon-button.
|
|
17360
|
+
* Default: `'left'` (suitable for top-nav right cluster).
|
|
17361
|
+
*/
|
|
17362
|
+
expandDirection?: NiceSearchBarExpandDirection;
|
|
17363
|
+
/**
|
|
17364
|
+
* Maximum width of the expanded input (px). Default: `260`.
|
|
17365
|
+
* On narrow screens caps automatically at `100vw - 32px`.
|
|
17366
|
+
*/
|
|
17367
|
+
expandWidth?: number;
|
|
17368
|
+
/**
|
|
17369
|
+
* Auto-collapse when the input loses focus AND is empty. Default: `true`.
|
|
17370
|
+
*/
|
|
17371
|
+
autoCollapseOnBlur?: boolean;
|
|
17372
|
+
/** Size variant. */
|
|
17373
|
+
size?: NiceSearchBarSize;
|
|
17374
|
+
/** Custom search icon. Default: 🔍 (will use NiceIcon when wired by host). */
|
|
17375
|
+
icon?: default_2.ReactNode;
|
|
17376
|
+
/** Disable the control. */
|
|
17377
|
+
disabled?: boolean;
|
|
17378
|
+
/** Accessible label. */
|
|
17379
|
+
ariaLabel?: string;
|
|
17380
|
+
className?: string;
|
|
17381
|
+
style?: default_2.CSSProperties;
|
|
17382
|
+
id?: string;
|
|
17383
|
+
'data-testid'?: string;
|
|
17384
|
+
}
|
|
17385
|
+
|
|
17386
|
+
export declare type NiceSearchBarSize = 'sm' | 'md' | 'lg';
|
|
17387
|
+
|
|
16553
17388
|
/**
|
|
16554
17389
|
* `NiceSegmentedControl` — single-selection toggle group with an animated
|
|
16555
17390
|
* sliding "thumb" highlight, iOS-style. The control owns a single value
|
|
@@ -16806,10 +17641,36 @@ export declare interface NiceSidebarNavProps {
|
|
|
16806
17641
|
onPreferencesChange?: (prefs: SidebarNavUserPrefs) => void;
|
|
16807
17642
|
/** Sidebar width in px (default: 264) */
|
|
16808
17643
|
width?: number;
|
|
17644
|
+
/** Sidebar width in px when collapsed/icon-only (default: 56). */
|
|
17645
|
+
collapsedWidth?: number;
|
|
17646
|
+
/**
|
|
17647
|
+
* Which side of the screen the sidebar is anchored to. Default `'left'`.
|
|
17648
|
+
* `'right'` flips the chevron direction and pushes the footer-toggle to the
|
|
17649
|
+
* left edge — useful for RTL or right-side admin shells.
|
|
17650
|
+
*/
|
|
17651
|
+
position?: 'left' | 'right';
|
|
17652
|
+
/**
|
|
17653
|
+
* **Minimal mode** — hides the mode strip, sources, favorites and footer
|
|
17654
|
+
* preferences, leaving only the navigation tree. Use for stripped-down
|
|
17655
|
+
* shells (auth flows, embedded views) where the full taxonomy is overkill.
|
|
17656
|
+
* Default `false`.
|
|
17657
|
+
*/
|
|
17658
|
+
minimal?: boolean;
|
|
17659
|
+
/** Optional header slot rendered above the mode strip / tree (e.g. workspace switcher). */
|
|
17660
|
+
header?: ReactNode;
|
|
17661
|
+
/** Optional footer slot rendered below the standard footer-toggle row. */
|
|
17662
|
+
footerExtra?: ReactNode;
|
|
16809
17663
|
/** Collapsed (icon-only) mode */
|
|
16810
17664
|
collapsed?: boolean;
|
|
16811
17665
|
/** Called when collapsed state changes (for toggle button) */
|
|
16812
17666
|
onCollapsedChange?: (collapsed: boolean) => void;
|
|
17667
|
+
/**
|
|
17668
|
+
* When `true` (default), users can still expand/collapse module branches
|
|
17669
|
+
* even while the sidebar itself is in icon-only collapsed mode (chevrons
|
|
17670
|
+
* stay visible). When `false`, all branches are forced flat / always-open
|
|
17671
|
+
* in collapsed mode (legacy behaviour).
|
|
17672
|
+
*/
|
|
17673
|
+
expandableWhenCollapsed?: boolean;
|
|
16813
17674
|
/** Extra CSS class on the root element */
|
|
16814
17675
|
className?: string;
|
|
16815
17676
|
/** Size variant */
|
|
@@ -18104,14 +18965,32 @@ export declare interface NiceThemePickerProps extends NiceFormFieldProps, DualVi
|
|
|
18104
18965
|
defaultValue?: string;
|
|
18105
18966
|
/** Callback when selection changes */
|
|
18106
18967
|
onChange?: (theme: NiceThemeDescriptor | null) => void;
|
|
18107
|
-
/**
|
|
18108
|
-
|
|
18968
|
+
/**
|
|
18969
|
+
* Available themes. Defaults to {@link NICE_THEME_PICKER_PRESETS} (all
|
|
18970
|
+
* built-in presets adapted from {@link NICE_THEME_PRESETS}). Pass an
|
|
18971
|
+
* explicit array to override or to add custom themes alongside the presets.
|
|
18972
|
+
*
|
|
18973
|
+
* Note: passing `[]` will produce an empty dropdown and emit a dev-mode
|
|
18974
|
+
* warning. Omit the prop entirely to fall back to the built-in presets.
|
|
18975
|
+
*/
|
|
18976
|
+
themes?: NiceThemeDescriptor[];
|
|
18109
18977
|
/** Placeholder shown when nothing is selected (ignored in compact mode). */
|
|
18110
18978
|
placeholder?: string;
|
|
18111
18979
|
/** Enable search */
|
|
18112
18980
|
showSearch?: boolean;
|
|
18113
|
-
/**
|
|
18981
|
+
/**
|
|
18982
|
+
* Threshold below which the internal search/filter input is hidden even
|
|
18983
|
+
* when `showSearch` is `true`. Prevents a noisy filter UI for short lists
|
|
18984
|
+
* (e.g. 6 themes). Default: `8`. Set `0` to always show, `Infinity` to
|
|
18985
|
+
* always hide.
|
|
18986
|
+
*/
|
|
18987
|
+
searchThreshold?: number;
|
|
18988
|
+
/** Search placeholder. Default: translated `'Filter themes…'`. */
|
|
18114
18989
|
searchPlaceholder?: string;
|
|
18990
|
+
/** Controlled open state (for coordinating with sibling controls). */
|
|
18991
|
+
isOpen?: boolean;
|
|
18992
|
+
/** Notified whenever the dropdown open state changes. */
|
|
18993
|
+
onOpenChange?: (open: boolean) => void;
|
|
18115
18994
|
/** Show preview thumbnail in trigger. Default: true */
|
|
18116
18995
|
showPreviewInValue?: boolean;
|
|
18117
18996
|
/** Show preview thumbnail in dropdown options. Default: true */
|
|
@@ -18460,6 +19339,245 @@ export declare interface NiceTooltipProps {
|
|
|
18460
19339
|
children: default_2.ReactElement;
|
|
18461
19340
|
}
|
|
18462
19341
|
|
|
19342
|
+
export declare const NiceTopNav: default_2.ForwardRefExoticComponent<NiceTopNavProps & default_2.RefAttributes<HTMLElement>>;
|
|
19343
|
+
|
|
19344
|
+
export declare type NiceTopNavDensity = 'compact' | 'normal' | 'comfortable';
|
|
19345
|
+
|
|
19346
|
+
/**
|
|
19347
|
+
* Optional extra round icon-button shown in the right cluster
|
|
19348
|
+
* (e.g. settings gear). When `menuItems` is provided, clicking the
|
|
19349
|
+
* button opens a small dropdown menu; otherwise `onClick` fires.
|
|
19350
|
+
*
|
|
19351
|
+
* Added in v1.0.10 to satisfy customizable user-button cluster
|
|
19352
|
+
* feedback for {@link NiceTopNav}.
|
|
19353
|
+
*/
|
|
19354
|
+
declare interface NiceTopNavExtraAction {
|
|
19355
|
+
id: string;
|
|
19356
|
+
label: string;
|
|
19357
|
+
icon: default_2.ReactNode;
|
|
19358
|
+
onClick?: () => void;
|
|
19359
|
+
menuItems?: UserMenuItem[];
|
|
19360
|
+
/** Optional badge / dot. */
|
|
19361
|
+
badge?: number | string;
|
|
19362
|
+
}
|
|
19363
|
+
|
|
19364
|
+
/** @deprecated v2 nav-item type. Prefer {@link NiceNavMenuItem} via `navMenuItems`. */
|
|
19365
|
+
export declare interface NiceTopNavItem {
|
|
19366
|
+
id: string;
|
|
19367
|
+
label: string;
|
|
19368
|
+
icon?: default_2.ReactNode;
|
|
19369
|
+
href?: string;
|
|
19370
|
+
onClick?: () => void;
|
|
19371
|
+
}
|
|
19372
|
+
|
|
19373
|
+
/** @deprecated v2 language type. Prefer `<NiceLanguagePicker>` props. */
|
|
19374
|
+
export declare interface NiceTopNavLanguageOption {
|
|
19375
|
+
code: string;
|
|
19376
|
+
label: string;
|
|
19377
|
+
flag?: default_2.ReactNode;
|
|
19378
|
+
}
|
|
19379
|
+
|
|
19380
|
+
/** @deprecated v2 user-menu item. Prefer {@link UserMenuItem}. */
|
|
19381
|
+
export declare interface NiceTopNavMenuItem {
|
|
19382
|
+
id: string;
|
|
19383
|
+
label: string;
|
|
19384
|
+
icon?: default_2.ReactNode;
|
|
19385
|
+
onClick?: () => void;
|
|
19386
|
+
divider?: boolean;
|
|
19387
|
+
href?: string;
|
|
19388
|
+
}
|
|
19389
|
+
|
|
19390
|
+
export declare interface NiceTopNavProps {
|
|
19391
|
+
height?: number | string;
|
|
19392
|
+
density?: NiceTopNavDensity;
|
|
19393
|
+
maxWidth?: number | string;
|
|
19394
|
+
paddingX?: number | string;
|
|
19395
|
+
gap?: number | string;
|
|
19396
|
+
borderBottom?: boolean;
|
|
19397
|
+
elevated?: boolean;
|
|
19398
|
+
sticky?: boolean;
|
|
19399
|
+
variant?: NiceTopNavVariant;
|
|
19400
|
+
accentBar?: boolean;
|
|
19401
|
+
accentBarColor?: string;
|
|
19402
|
+
size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
19403
|
+
/**
|
|
19404
|
+
* Visual state — mirrors the standard control state contract used across
|
|
19405
|
+
* basic Nice2Dev controls (input, button). Defaults to `'normal'`.
|
|
19406
|
+
* - `loading` — renders a subtle shimmer overlay; bar remains interactive.
|
|
19407
|
+
* - `error` — accents the bottom border with `--color-danger`.
|
|
19408
|
+
* - `disabled` — dims the bar and disables pointer events.
|
|
19409
|
+
*/
|
|
19410
|
+
state?: 'normal' | 'loading' | 'error' | 'disabled';
|
|
19411
|
+
/**
|
|
19412
|
+
* Compact mode — collapses brand name, hides labels on icon-only actions,
|
|
19413
|
+
* tightens paddings. Combine with `size='sm'` for an ultra-dense bar.
|
|
19414
|
+
*/
|
|
19415
|
+
compact?: boolean;
|
|
19416
|
+
collapsible?: boolean;
|
|
19417
|
+
collapsed?: boolean;
|
|
19418
|
+
onCollapsedChange?: (collapsed: boolean) => void;
|
|
19419
|
+
/**
|
|
19420
|
+
* Bar height when collapsed. Defaults to `32` so the entire bar content
|
|
19421
|
+
* (brand, nav menu, search, pickers, notifications, user menu) stays
|
|
19422
|
+
* visible — proportionally scaled down via {@link collapsedContentScale}.
|
|
19423
|
+
* Lower values produce an almost-hidden strip; raise for more breathing
|
|
19424
|
+
* room around shrunk controls.
|
|
19425
|
+
*/
|
|
19426
|
+
collapsedHeight?: number | string;
|
|
19427
|
+
/**
|
|
19428
|
+
* Scale factor (0–1) applied to the logo / brand name while collapsed.
|
|
19429
|
+
* Default `0.5`. Affects only the brand block; use
|
|
19430
|
+
* {@link collapsedContentScale} to scale the rest of the bar.
|
|
19431
|
+
*/
|
|
19432
|
+
collapsedLogoScale?: number;
|
|
19433
|
+
/**
|
|
19434
|
+
* Scale factor (0–1) applied to the whole inner row (nav menu, search,
|
|
19435
|
+
* pickers, notifications, user menu, collapse button) while collapsed.
|
|
19436
|
+
* The bar shows ALL of its content — just very small — so users keep
|
|
19437
|
+
* full functionality on a slim strip. Default `0.55`.
|
|
19438
|
+
*/
|
|
19439
|
+
collapsedContentScale?: number;
|
|
19440
|
+
hideOnScroll?: boolean;
|
|
19441
|
+
scrollThreshold?: number;
|
|
19442
|
+
logo?: default_2.ReactNode;
|
|
19443
|
+
brandName?: string;
|
|
19444
|
+
brandHref?: string;
|
|
19445
|
+
onBrandClick?: () => void;
|
|
19446
|
+
logoVariant?: NiceLogoVariant;
|
|
19447
|
+
logoSize?: NiceLogoSize;
|
|
19448
|
+
/**
|
|
19449
|
+
* Brand block alignment within the bar. Combined with {@link navAlignment}
|
|
19450
|
+
* gives 9 possible layouts. Default `'left'`.
|
|
19451
|
+
*
|
|
19452
|
+
* - `'left'` — brand sits at the very start of the bar (classic).
|
|
19453
|
+
* - `'center'` — brand is centered (use with `navAlignment='start'` for
|
|
19454
|
+
* a Bootstrap-style centered logo).
|
|
19455
|
+
* - `'right'` — brand sits at the end (rare, useful for RTL or unusual layouts).
|
|
19456
|
+
*/
|
|
19457
|
+
brandAlign?: 'left' | 'center' | 'right';
|
|
19458
|
+
/**
|
|
19459
|
+
* Pre-baked configuration profile. Sets sensible defaults for several props
|
|
19460
|
+
* at once so a one-line `<NiceTopNav preset="marketing" />` ships a polished
|
|
19461
|
+
* bar. Any explicit prop overrides the preset's default.
|
|
19462
|
+
*
|
|
19463
|
+
* - `'marketing'` — landing-page bar: brand left, nav center, login/register
|
|
19464
|
+
* right, no search, no pickers, accent bar on, sticky.
|
|
19465
|
+
* - `'saas'` — admin/SaaS bar: brand left, nav left, full toolbar
|
|
19466
|
+
* (search + lang + theme + notifications + user menu),
|
|
19467
|
+
* collapsible right cluster opens by default, settings
|
|
19468
|
+
* gear after the avatar.
|
|
19469
|
+
* - `'docs'` — documentation bar: brand left, nav left, prominent
|
|
19470
|
+
* always-expanded search (max 500px), theme picker only.
|
|
19471
|
+
* - `'minimal'` — bare brand bar: brand only, no nav, no right cluster.
|
|
19472
|
+
*/
|
|
19473
|
+
preset?: 'marketing' | 'saas' | 'docs' | 'minimal';
|
|
19474
|
+
navItems?: NiceTopNavItem[];
|
|
19475
|
+
navMenuItems?: NiceNavMenuItem[];
|
|
19476
|
+
activeNavId?: string;
|
|
19477
|
+
navAlignment?: 'start' | 'center' | 'end';
|
|
19478
|
+
/**
|
|
19479
|
+
* How mega-menu items in `navMenuItems` open. Default `'hover'` (classical
|
|
19480
|
+
* desktop pattern). Switch to `'click'` for touch-first sites. Only applies
|
|
19481
|
+
* when at least one nav item carries `megaPanel` or `megaColumns`.
|
|
19482
|
+
*/
|
|
19483
|
+
megaTrigger?: 'hover' | 'click';
|
|
19484
|
+
mobileBreakpoint?: number;
|
|
19485
|
+
/**
|
|
19486
|
+
* How navigation behaves below `mobileBreakpoint`:
|
|
19487
|
+
* - `hamburger` (default) — collapse to hamburger button + drawer.
|
|
19488
|
+
* - `wrap` — let nav items wrap onto a second row.
|
|
19489
|
+
* - `scroll` — keep nav inline; horizontally scroll-snap overflowed items.
|
|
19490
|
+
*/
|
|
19491
|
+
mobileVariant?: 'hamburger' | 'wrap' | 'scroll';
|
|
19492
|
+
searchPlaceholder?: string;
|
|
19493
|
+
searchValue?: string;
|
|
19494
|
+
onSearchChange?: (value: string) => void;
|
|
19495
|
+
onSearchSubmit?: (value: string) => void;
|
|
19496
|
+
collapsibleSearch?: boolean;
|
|
19497
|
+
searchCollapsible?: boolean;
|
|
19498
|
+
searchExpandDirection?: NiceSearchBarExpandDirection;
|
|
19499
|
+
searchExpandWidth?: number;
|
|
19500
|
+
searchBarProps?: Partial<NiceSearchBarProps>;
|
|
19501
|
+
centerContent?: default_2.ReactNode;
|
|
19502
|
+
/** Toggle search visibility independently of search props presence. Default: derived from search props. */
|
|
19503
|
+
showSearch?: boolean;
|
|
19504
|
+
languages?: NiceTopNavLanguageOption[];
|
|
19505
|
+
currentLanguage?: string;
|
|
19506
|
+
onLanguageChange?: (code: string) => void;
|
|
19507
|
+
showLanguagePicker?: boolean;
|
|
19508
|
+
languagePickerProps?: Partial<NiceLanguagePickerProps>;
|
|
19509
|
+
themes?: NiceTopNavThemeOption[];
|
|
19510
|
+
currentTheme?: string;
|
|
19511
|
+
onThemeChange?: (id: string) => void;
|
|
19512
|
+
showThemePicker?: boolean;
|
|
19513
|
+
themePickerProps?: Partial<NiceThemePickerProps>;
|
|
19514
|
+
notificationsCount?: number;
|
|
19515
|
+
onNotificationsClick?: () => void;
|
|
19516
|
+
notifications?: NiceNotificationItem[];
|
|
19517
|
+
onMarkAllNotificationsRead?: () => void;
|
|
19518
|
+
/** Toggle notifications visibility independently of notification props presence. */
|
|
19519
|
+
showNotifications?: boolean;
|
|
19520
|
+
user?: NiceTopNavUser | NiceAuthUser;
|
|
19521
|
+
userMenuItems?: UserMenuItem[];
|
|
19522
|
+
/** @deprecated Use `userMenuItems`. */
|
|
19523
|
+
userMenu?: NiceTopNavMenuItem[];
|
|
19524
|
+
onProfile?: () => void;
|
|
19525
|
+
onLogout?: () => void;
|
|
19526
|
+
showLogin?: boolean;
|
|
19527
|
+
loginLabel?: string;
|
|
19528
|
+
onLoginClick?: () => void;
|
|
19529
|
+
showRegister?: boolean;
|
|
19530
|
+
registerLabel?: string;
|
|
19531
|
+
onRegisterClick?: () => void;
|
|
19532
|
+
/**
|
|
19533
|
+
* Extra round icon-buttons rendered right before the auth/user-menu cluster.
|
|
19534
|
+
* Each entry can either fire `onClick` directly or open a small dropdown
|
|
19535
|
+
* (`menuItems`). Use this to add a customizable settings gear / quick actions
|
|
19536
|
+
* without forking {@link NiceAuthButtons}.
|
|
19537
|
+
*/
|
|
19538
|
+
extraActions?: NiceTopNavExtraAction[];
|
|
19539
|
+
/** Show a built-in settings gear (uses inline Ntd-style cog SVG). */
|
|
19540
|
+
showSettings?: boolean;
|
|
19541
|
+
/** Settings click handler — used when `settingsMenuItems` is empty. */
|
|
19542
|
+
onSettingsClick?: () => void;
|
|
19543
|
+
/** Optional dropdown items shown when the settings gear is clicked. */
|
|
19544
|
+
settingsMenuItems?: UserMenuItem[];
|
|
19545
|
+
/** Settings button aria-label / tooltip. */
|
|
19546
|
+
settingsLabel?: string;
|
|
19547
|
+
/**
|
|
19548
|
+
* Wrap search + language + theme pickers in a collapsible cluster with a
|
|
19549
|
+
* chevron toggle. When `true` (default), the cluster starts collapsed and
|
|
19550
|
+
* expands to the LEFT on click — saves horizontal space and prevents the
|
|
19551
|
+
* navigation menu from overlapping the right toolbar. Set to `false` to
|
|
19552
|
+
* always render the pickers inline.
|
|
19553
|
+
*/
|
|
19554
|
+
collapsibleRightCluster?: boolean;
|
|
19555
|
+
/** Initial open state of the collapsible cluster. Default `false`. */
|
|
19556
|
+
rightClusterDefaultOpen?: boolean;
|
|
19557
|
+
leftContent?: default_2.ReactNode;
|
|
19558
|
+
rightContent?: default_2.ReactNode;
|
|
19559
|
+
className?: string;
|
|
19560
|
+
style?: default_2.CSSProperties;
|
|
19561
|
+
id?: string;
|
|
19562
|
+
'data-testid'?: string;
|
|
19563
|
+
}
|
|
19564
|
+
|
|
19565
|
+
/** @deprecated v2 theme type. Prefer `<NiceThemePicker>` props. */
|
|
19566
|
+
export declare interface NiceTopNavThemeOption {
|
|
19567
|
+
id: string;
|
|
19568
|
+
label: string;
|
|
19569
|
+
icon?: default_2.ReactNode;
|
|
19570
|
+
}
|
|
19571
|
+
|
|
19572
|
+
/** @deprecated v2 user type. Prefer {@link NiceAuthUser}. */
|
|
19573
|
+
export declare interface NiceTopNavUser {
|
|
19574
|
+
name: string;
|
|
19575
|
+
avatarUrl?: string;
|
|
19576
|
+
initials?: string;
|
|
19577
|
+
}
|
|
19578
|
+
|
|
19579
|
+
export declare type NiceTopNavVariant = 'default' | 'primary' | 'accent' | 'transparent' | 'glass' | 'dark';
|
|
19580
|
+
|
|
18463
19581
|
export declare interface NiceTopologyData {
|
|
18464
19582
|
links: Array<{
|
|
18465
19583
|
sourceId: string;
|
|
@@ -21226,6 +22344,9 @@ export declare interface RealtimeDataPoint {
|
|
|
21226
22344
|
label?: string;
|
|
21227
22345
|
}
|
|
21228
22346
|
|
|
22347
|
+
/** Total time = prep + cook (minutes), or undefined if neither provided. */
|
|
22348
|
+
export declare function recipeTotalMinutes(recipe: NiceRecipeModel): number | undefined;
|
|
22349
|
+
|
|
21229
22350
|
/**
|
|
21230
22351
|
* Reconciliation view configuration.
|
|
21231
22352
|
*/
|
|
@@ -22266,7 +23387,7 @@ export declare interface SidebarNavDataNode {
|
|
|
22266
23387
|
export declare interface SidebarNavDataSource {
|
|
22267
23388
|
id: string;
|
|
22268
23389
|
label: string;
|
|
22269
|
-
icon?:
|
|
23390
|
+
icon?: ReactNode;
|
|
22270
23391
|
color?: string;
|
|
22271
23392
|
/** Server URL or connection string hint */
|
|
22272
23393
|
url?: string;
|
|
@@ -22277,7 +23398,7 @@ export declare interface SidebarNavDataSource {
|
|
|
22277
23398
|
export declare interface SidebarNavFavorite {
|
|
22278
23399
|
id: string;
|
|
22279
23400
|
label: string;
|
|
22280
|
-
icon?:
|
|
23401
|
+
icon?: ReactNode;
|
|
22281
23402
|
route?: string;
|
|
22282
23403
|
sourceId?: string;
|
|
22283
23404
|
moduleId?: string;
|
|
@@ -22300,7 +23421,7 @@ export declare type SidebarNavMode = 'all' | 'by-role' | 'by-unit' | 'favorites'
|
|
|
22300
23421
|
export declare interface SidebarNavModule {
|
|
22301
23422
|
id: string;
|
|
22302
23423
|
label: string;
|
|
22303
|
-
icon?:
|
|
23424
|
+
icon?: ReactNode;
|
|
22304
23425
|
views: SidebarNavView[];
|
|
22305
23426
|
/** Source this module belongs to */
|
|
22306
23427
|
sourceId?: string;
|
|
@@ -22310,7 +23431,7 @@ export declare interface SidebarNavModule {
|
|
|
22310
23431
|
export declare interface SidebarNavRole {
|
|
22311
23432
|
id: string;
|
|
22312
23433
|
label: string;
|
|
22313
|
-
icon?:
|
|
23434
|
+
icon?: ReactNode;
|
|
22314
23435
|
modules: SidebarNavModule[];
|
|
22315
23436
|
/** Source this role belongs to */
|
|
22316
23437
|
sourceId?: string;
|
|
@@ -22320,7 +23441,7 @@ export declare interface SidebarNavRole {
|
|
|
22320
23441
|
export declare interface SidebarNavUnit {
|
|
22321
23442
|
id: string;
|
|
22322
23443
|
label: string;
|
|
22323
|
-
icon?:
|
|
23444
|
+
icon?: ReactNode;
|
|
22324
23445
|
modules: SidebarNavModule[];
|
|
22325
23446
|
/** Source this unit belongs to */
|
|
22326
23447
|
sourceId?: string;
|
|
@@ -22357,7 +23478,7 @@ export declare interface SidebarNavUserPrefs {
|
|
|
22357
23478
|
export declare interface SidebarNavView {
|
|
22358
23479
|
id: string;
|
|
22359
23480
|
label: string;
|
|
22360
|
-
icon?:
|
|
23481
|
+
icon?: ReactNode;
|
|
22361
23482
|
/** Route path for navigation */
|
|
22362
23483
|
route?: string;
|
|
22363
23484
|
/** Badge counter (unread notifications, pending tasks, …) */
|
|
@@ -22427,6 +23548,8 @@ declare interface SliderConfig {
|
|
|
22427
23548
|
format?: (value: number) => string;
|
|
22428
23549
|
}
|
|
22429
23550
|
|
|
23551
|
+
declare type Slot = ReactNode | ((api: NiceNavShellApi) => ReactNode);
|
|
23552
|
+
|
|
22430
23553
|
export declare interface SmartDeviceDto {
|
|
22431
23554
|
id: string;
|
|
22432
23555
|
name: string;
|
|
@@ -23583,6 +24706,25 @@ declare interface TooltipData {
|
|
|
23583
24706
|
|
|
23584
24707
|
export { TooltipStyleVariant }
|
|
23585
24708
|
|
|
24709
|
+
/**
|
|
24710
|
+
* Adapts a full {@link NiceTheme} into the lightweight
|
|
24711
|
+
* {@link NiceThemeDescriptor} shape consumed by `<NiceThemePicker>`.
|
|
24712
|
+
*
|
|
24713
|
+
* The `id` is the theme name (stable identifier across renders); the
|
|
24714
|
+
* `preview` colours feed the mini page-thumbnail rendered in the trigger
|
|
24715
|
+
* and dropdown options.
|
|
24716
|
+
*
|
|
24717
|
+
* @example
|
|
24718
|
+
* ```tsx
|
|
24719
|
+
* import { NICE_THEME_PRESETS } from '@nice2dev/ui';
|
|
24720
|
+
* import { toThemeDescriptor } from '@nice2dev/ui';
|
|
24721
|
+
*
|
|
24722
|
+
* const themes = NICE_THEME_PRESETS.map(toThemeDescriptor);
|
|
24723
|
+
* <NiceThemePicker themes={themes} value={current} onChange={...} />
|
|
24724
|
+
* ```
|
|
24725
|
+
*/
|
|
24726
|
+
export declare function toThemeDescriptor(theme: NiceTheme): NiceThemeDescriptor;
|
|
24727
|
+
|
|
23586
24728
|
export { TouchPoint }
|
|
23587
24729
|
|
|
23588
24730
|
export { TouchTargetProps }
|