@nar-bus/lena-ui-shared 1.3.0 → 1.3.2

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/dist/index.d.ts CHANGED
@@ -124,7 +124,13 @@ export declare interface ApiResponse<T> {
124
124
  meta: MetaInfo;
125
125
  }
126
126
 
127
- export declare function AppHeader({ breadcrumbs, theme, onThemeChange, locale, onLocaleChange, user, isAuthenticated, onLogout, onLogin, homeHref, centerSlot, className, }: AppHeaderProps): JSX.Element;
127
+ export declare function AppHeader({ breadcrumbs, theme, onThemeChange, locale, onLocaleChange, user, isAuthenticated, onLogout, onLogin, homeHref, centerSlot, className, logo, sidebarCollapsed, onToggleSidebarCollapse, }: AppHeaderProps): JSX.Element;
128
+
129
+ export declare interface AppHeaderLogo {
130
+ imageSrc?: string;
131
+ title?: string;
132
+ href?: string;
133
+ }
128
134
 
129
135
  export declare interface AppHeaderProps {
130
136
  breadcrumbs: BreadcrumbItem[];
@@ -139,6 +145,12 @@ export declare interface AppHeaderProps {
139
145
  homeHref?: string;
140
146
  centerSlot?: ReactNode;
141
147
  className?: string;
148
+ /** Optional logo displayed at the left side of the header */
149
+ logo?: AppHeaderLogo;
150
+ /** Whether the sidebar is collapsed — aligns logo area width with sidebar */
151
+ sidebarCollapsed?: boolean;
152
+ /** Callback to toggle sidebar collapse. When provided, a toggle button appears in the logo area. */
153
+ onToggleSidebarCollapse?: () => void;
142
154
  }
143
155
 
144
156
  export declare interface AppHeaderUser {
@@ -147,18 +159,23 @@ export declare interface AppHeaderUser {
147
159
  email?: string;
148
160
  }
149
161
 
150
- export declare function AppSidebar({ items, collapsed, onToggleCollapse, logo, version, }: AppSidebarProps): JSX.Element;
162
+ export declare function AppSidebar({ items, collapsed, onToggleCollapse, logo, version, groups, }: AppSidebarProps): JSX.Element;
151
163
 
152
164
  export declare interface AppSidebarProps {
153
165
  items: SidebarNavItem[];
154
166
  collapsed: boolean;
155
167
  onToggleCollapse: () => void;
168
+ /**
169
+ * @deprecated Logo has been moved to AppHeader. This prop is ignored.
170
+ */
156
171
  logo?: {
157
172
  title: string;
158
173
  letter?: string;
159
174
  imageSrc?: string;
160
175
  };
161
176
  version?: string;
177
+ /** Nav groups with optional section labels. When provided, `items` is ignored. */
178
+ groups?: SidebarNavGroup[];
162
179
  }
163
180
 
164
181
  /**
@@ -230,8 +247,8 @@ declare interface BooleanCellProps {
230
247
  }
231
248
 
232
249
  export declare const booleanColors: {
233
- readonly true: "bg-status-success/10 text-status-success-foreground border-status-success/30";
234
- readonly false: "bg-status-neutral/10 text-status-neutral-foreground border-status-neutral/30";
250
+ readonly true: "bg-status-success/10 text-status-success-foreground border-status-success/30 ring-status-success/30";
251
+ readonly false: "bg-status-neutral/10 text-status-neutral-foreground border-status-neutral/30 ring-status-neutral/30";
235
252
  };
236
253
 
237
254
  export declare function Breadcrumb({ ...props }: React_2.ComponentProps<"nav">): JSX.Element;
@@ -269,6 +286,10 @@ export declare interface BulkAction<TData> {
269
286
  };
270
287
  }
271
288
 
289
+ /**
290
+ * @deprecated Use `DataTableBulkActions` instead. This component will be removed in the next major version.
291
+ * @see DataTableBulkActions
292
+ */
272
293
  export declare function BulkActionBar({ selectedCount, onClearSelection, actions, moreActions, itemLabel, cancelLabel, cancelHint, className, }: BulkActionBarProps): JSX.Element | null;
273
294
 
274
295
  export declare interface BulkActionBarProps {
@@ -320,6 +341,12 @@ export declare function CardHeader({ className, ...props }: React_2.ComponentPro
320
341
 
321
342
  export declare function CardTitle({ className, ...props }: React_2.ComponentProps<"div">): JSX.Element;
322
343
 
344
+ /**
345
+ * Shared null/empty state for all cell components.
346
+ * Displays a muted dash when data is null, undefined, or empty.
347
+ */
348
+ export declare function CellNullState(): JSX.Element;
349
+
323
350
  export declare function Checkbox({ className, ...props }: React_2.ComponentProps<typeof CheckboxPrimitive.Root>): JSX.Element;
324
351
 
325
352
  export declare function CheckboxField<TFieldValues extends FieldValues>({ name, control, label, description, disabled, className, cols, }: CheckboxFieldProps<TFieldValues>): JSX.Element;
@@ -379,7 +406,7 @@ declare interface CollapsibleSectionProps {
379
406
 
380
407
  export declare function CollapsibleTrigger({ ...props }: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>): JSX.Element;
381
408
 
382
- export declare function ComboboxField<TFieldValues extends FieldValues>({ name, control, label, description, required, placeholder, searchPlaceholder, emptyText, options, disabled, className, cols, errorHint, }: ComboboxFieldProps<TFieldValues>): JSX.Element;
409
+ export declare function ComboboxField<TFieldValues extends FieldValues>({ name, control, label, description, required, placeholder: placeholderProp, searchPlaceholder: searchPlaceholderProp, emptyText: emptyTextProp, options, disabled, className, cols, errorHint, }: ComboboxFieldProps<TFieldValues>): JSX.Element;
383
410
 
384
411
  declare interface ComboboxFieldProps<TFieldValues extends FieldValues> {
385
412
  name: FieldPath<TFieldValues>;
@@ -441,6 +468,8 @@ export declare interface CommonLabels {
441
468
  inactive: string;
442
469
  enabled: string;
443
470
  disabled: string;
471
+ detail: string;
472
+ addNew: string;
444
473
  }
445
474
 
446
475
  export declare function ContextMenu({ ...props }: React_2.ComponentProps<typeof ContextMenuPrimitive.Root>): JSX.Element;
@@ -512,7 +541,7 @@ declare interface CopyButtonProps {
512
541
  value: string;
513
542
  }
514
543
 
515
- export declare function CreatableComboboxField<TFieldValues extends FieldValues>({ name, control, label, description, required, placeholder, disabled, className, cols, errorHint, options, loading, emptyText, createLabel, }: CreatableComboboxFieldProps<TFieldValues>): JSX.Element;
544
+ export declare function CreatableComboboxField<TFieldValues extends FieldValues>({ name, control, label, description, required, placeholder: placeholderProp, disabled, className, cols, errorHint, options, loading, emptyText: emptyTextProp, createLabel, }: CreatableComboboxFieldProps<TFieldValues>): JSX.Element;
516
545
 
517
546
  declare interface CreatableComboboxFieldProps<TFieldValues extends FieldValues> {
518
547
  name: FieldPath<TFieldValues>;
@@ -639,7 +668,7 @@ export declare function createEmptyFilter(field: string, operator?: FilterState[
639
668
 
640
669
  export declare function CRUDTabContent<T extends {
641
670
  id: number;
642
- }>({ isActive, columns, fieldConfig, defaultSortBy, getRowId, allQueryKey, detailKey, listKey, fetchDetail, fetchList, useSearchHook, deleteItem, isDeleting, detailPath, searchPlaceholder, emptyTitle, emptyDescription, entityType, getEntityName, viewLabel, deleteLabel, refreshLabel, createLabel, CreateSheetComponent, hideToolbar, externalCreateSheetOpen, onExternalCreateSheetOpenChange, }: CRUDTabContentProps<T>): JSX.Element;
671
+ }>({ isActive, columns, fieldConfig, defaultSortBy, getRowId, allQueryKey, detailKey, listKey, fetchDetail, fetchList, useSearchHook, deleteItem, isDeleting, detailPath, searchPlaceholder, emptyTitle, emptyDescription, entityType, getEntityName, viewLabel: viewLabelProp, deleteLabel: deleteLabelProp, refreshLabel: refreshLabelProp, createLabel: createLabelProp, CreateSheetComponent, hideToolbar, externalCreateSheetOpen, onExternalCreateSheetOpenChange, }: CRUDTabContentProps<T>): JSX.Element;
643
672
 
644
673
  export declare interface CRUDTabContentProps<T extends {
645
674
  id: number;
@@ -721,7 +750,7 @@ export declare interface DataRowProps {
721
750
  size?: 'sm' | 'md';
722
751
  }
723
752
 
724
- export declare function DataTable<TData>({ columns, getRowId, data, isLoading, error, pagination, onPageChange, onPageSizeChange, onPrefetchPage, pageSizeOptions, sortBy, sortDirection, onSortChange, searchValue, onSearchChange, searchPlaceholder, searchDebounceMs, fieldConfig, filters, onFiltersChange, enableRowSelection, rowSelection, onRowSelectionChange, bulkActions, rowActions, toolbarStart, toolbarEnd, className, emptyIcon, emptyTitle, emptyDescription, onRowClick, onRowHover, rowClassName, meta, headerColor, }: DataTableComponentProps<TData>): JSX.Element;
753
+ export declare function DataTable<TData>({ columns, getRowId, data, isLoading, error, pagination, onPageChange, onPageSizeChange, onPrefetchPage, pageSizeOptions, sortBy, sortDirection, onSortChange, searchValue, onSearchChange, searchPlaceholder, searchDebounceMs, fieldConfig, filters, onFiltersChange, enableRowSelection, rowSelection, onRowSelectionChange, bulkActions, rowActions, toolbarStart, toolbarEnd, className, toolbarVariant, emptyIcon, emptyTitle, emptyDescription, onRowClick, onRowHover, rowClassName, meta, headerColor, }: DataTableComponentProps<TData>): JSX.Element;
725
754
 
726
755
  declare interface DataTableActions {
727
756
  setGeneralSearch: (value: string) => void;
@@ -790,6 +819,8 @@ declare interface DataTableComponentProps<TData> {
790
819
  toolbarStart?: React.ReactNode;
791
820
  toolbarEnd?: React.ReactNode;
792
821
  className?: string;
822
+ /** Toolbar color variant — applies themed background, text, and border colors */
823
+ toolbarVariant?: ToolbarVariant;
793
824
  emptyIcon?: React.ReactNode;
794
825
  emptyTitle?: string;
795
826
  emptyDescription?: string;
@@ -804,6 +835,8 @@ declare interface DataTableComponentProps<TData> {
804
835
  /** Customization props */
805
836
  export declare interface DataTableCustomizationProps<TData> {
806
837
  className?: string;
838
+ /** Toolbar color variant — applies themed background, text, and border colors */
839
+ toolbarVariant?: ToolbarVariant;
807
840
  emptyIcon?: ReactNode;
808
841
  emptyTitle?: string;
809
842
  emptyDescription?: string;
@@ -843,6 +876,28 @@ export declare interface DataTableLabels {
843
876
  clear: string;
844
877
  apply: string;
845
878
  operators: Record<string, string>;
879
+ columnHeader: {
880
+ sortAsc: string;
881
+ sortDesc: string;
882
+ clear: string;
883
+ hide: string;
884
+ };
885
+ simpleTable: {
886
+ searchPlaceholder: string;
887
+ emptyTitle: string;
888
+ errorTitle: string;
889
+ noResults: string;
890
+ noResultsHint: string;
891
+ resultCount: string;
892
+ };
893
+ filterBuilder: {
894
+ fieldPlaceholder: string;
895
+ operatorPlaceholder: string;
896
+ valuePlaceholder: string;
897
+ selectPlaceholder: string;
898
+ booleanYes: string;
899
+ booleanNo: string;
900
+ };
846
901
  }
847
902
 
848
903
  /** Pagination props */
@@ -1041,15 +1096,15 @@ declare interface DetailPageMetadataFooterProps {
1041
1096
  }
1042
1097
 
1043
1098
  export declare const deviceStatusColors: {
1044
- readonly ACTIVE: "bg-status-success/10 text-status-success-foreground border-status-success/30";
1045
- readonly INACTIVE: "bg-status-neutral/10 text-status-neutral-foreground border-status-neutral/30";
1046
- readonly MAINTENANCE: "bg-status-warning/10 text-status-warning border-status-warning/30";
1047
- readonly FAULTY: "bg-status-error/10 text-status-error border-status-error/30";
1048
- readonly ONLINE: "bg-status-success/10 text-status-success-foreground border-status-success/30";
1049
- readonly OFFLINE: "bg-status-neutral/10 text-status-neutral-foreground border-status-neutral/30";
1050
- readonly PENDING: "bg-status-warning/10 text-status-warning border-status-warning/30";
1051
- readonly CONNECTED: "bg-status-success/10 text-status-success-foreground border-status-success/30";
1052
- readonly DISCONNECTED: "bg-status-neutral/10 text-status-neutral-foreground border-status-neutral/30";
1099
+ readonly ACTIVE: "bg-status-success/10 text-status-success-foreground border-status-success/30 ring-status-success/30";
1100
+ readonly INACTIVE: "bg-status-neutral/10 text-status-neutral-foreground border-status-neutral/30 ring-status-neutral/30";
1101
+ readonly MAINTENANCE: "bg-status-warning/10 text-status-warning border-status-warning/30 ring-status-warning/30";
1102
+ readonly FAULTY: "bg-status-error/10 text-status-error border-status-error/30 ring-status-error/30";
1103
+ readonly ONLINE: "bg-status-success/10 text-status-success-foreground border-status-success/30 ring-status-success/30";
1104
+ readonly OFFLINE: "bg-status-neutral/10 text-status-neutral-foreground border-status-neutral/30 ring-status-neutral/30";
1105
+ readonly PENDING: "bg-status-warning/10 text-status-warning border-status-warning/30 ring-status-warning/30";
1106
+ readonly CONNECTED: "bg-status-success/10 text-status-success-foreground border-status-success/30 ring-status-success/30";
1107
+ readonly DISCONNECTED: "bg-status-neutral/10 text-status-neutral-foreground border-status-neutral/30 ring-status-neutral/30";
1053
1108
  };
1054
1109
 
1055
1110
  export declare function Dialog({ ...props }: React_2.ComponentProps<typeof DialogPrimitive.Root>): JSX.Element;
@@ -1227,6 +1282,8 @@ declare interface FileFieldProps<TFieldValues extends FieldValues> {
1227
1282
  errorHint?: string;
1228
1283
  }
1229
1284
 
1285
+ export declare const FILTER_CONTAINER_CLASSES = "flex flex-wrap items-center gap-2";
1286
+
1230
1287
  export declare function FilterableListLayout({ fieldConfig, filters, onFiltersChange, filterPanelOpen, onFilterPanelToggle, searchValue, onSearchChange, searchPlaceholder, onRefresh, isRefreshing, activeFilterCount, toolbarStart, addButton, filterLabel, refreshLabel, children, className, }: FilterableListLayoutProps): JSX.Element;
1231
1288
 
1232
1289
  export declare interface FilterableListLayoutProps {
@@ -1275,12 +1332,13 @@ export declare interface FilterFieldRowProps {
1275
1332
 
1276
1333
  export declare type FilterOperator = 'EQUALS' | 'NOT_EQUALS' | 'CONTAINS' | 'STARTS_WITH' | 'ENDS_WITH' | 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'IN' | 'NOT_IN' | 'BETWEEN' | 'IS_NULL' | 'IS_NOT_NULL';
1277
1334
 
1278
- declare interface FilterPanelLabels {
1335
+ export declare interface FilterPanelLabels {
1279
1336
  title: string;
1280
1337
  apply: string;
1281
1338
  clearAll: string;
1282
1339
  clearChip: string;
1283
1340
  activeFilter: string;
1341
+ quickFilters: string;
1284
1342
  empty: string;
1285
1343
  notEmpty: string;
1286
1344
  select: string;
@@ -1455,7 +1513,7 @@ export declare function getFilterDisplayValue(filter: FilterState): string;
1455
1513
  /**
1456
1514
  * Get status color classes for a given value from a color map
1457
1515
  */
1458
- export declare function getStatusColor<T extends string>(value: T | null | undefined, colorMap: Record<T, string>, fallback?: "bg-status-neutral/10 text-status-neutral-foreground border-status-neutral/30"): string;
1516
+ export declare function getStatusColor<T extends string>(value: T | null | undefined, colorMap: Record<T, string>, fallback?: "bg-status-neutral/10 text-status-neutral-foreground border-status-neutral/30 ring-status-neutral/30"): string;
1459
1517
 
1460
1518
  /**
1461
1519
  * getTabDirection — Calculates slide direction based on tab index positions.
@@ -1573,6 +1631,24 @@ export declare interface JsonEditorLabels {
1573
1631
  formatSuccess: string;
1574
1632
  validJson: string;
1575
1633
  invalidJson: string;
1634
+ noData: string;
1635
+ createObject: string;
1636
+ createArray: string;
1637
+ expandAll: string;
1638
+ collapseAll: string;
1639
+ keys: string;
1640
+ items: string;
1641
+ rename: string;
1642
+ changeType: string;
1643
+ keyPlaceholder: string;
1644
+ typeLabels: {
1645
+ string: string;
1646
+ number: string;
1647
+ boolean: string;
1648
+ object: string;
1649
+ array: string;
1650
+ null: string;
1651
+ };
1576
1652
  }
1577
1653
 
1578
1654
  export declare function JsonEditorSection({ title, value, onChange, onSave, isSaving, editable, disabled, disabledReason, rows, maxViewHeight, placeholder, defaultOpen, }: JsonEditorSectionProps): JSX.Element;
@@ -1667,6 +1743,7 @@ export declare interface LenaUILabels {
1667
1743
  common: CommonLabels;
1668
1744
  deleteDialog: DeleteDialogLabels;
1669
1745
  filterPanel: FilterPanelLabels;
1746
+ sidebar: SidebarLabels;
1670
1747
  }
1671
1748
 
1672
1749
  /**
@@ -1739,7 +1816,7 @@ export declare interface MetaInfo {
1739
1816
 
1740
1817
  export declare type MountStrategy = 'eager' | 'lazy-persist' | 'lazy-remount';
1741
1818
 
1742
- export declare function MultiSelectField<TFieldValues extends FieldValues>({ name, control, label, description, required, placeholder, searchPlaceholder, emptyText, options, maxItems, disabled, className, cols, errorHint, }: MultiSelectFieldProps<TFieldValues>): JSX.Element;
1819
+ export declare function MultiSelectField<TFieldValues extends FieldValues>({ name, control, label, description, required, placeholder: placeholderProp, searchPlaceholder: searchPlaceholderProp, emptyText: emptyTextProp, options, maxItems, disabled, className, cols, errorHint, }: MultiSelectFieldProps<TFieldValues>): JSX.Element;
1743
1820
 
1744
1821
  declare interface MultiSelectFieldProps<TFieldValues extends FieldValues> {
1745
1822
  name: FieldPath<TFieldValues>;
@@ -1783,7 +1860,8 @@ declare interface NumberFieldProps<TFieldValues extends FieldValues> {
1783
1860
  }
1784
1861
 
1785
1862
  /**
1786
- * Human-readable labels for filter operators
1863
+ * Human-readable labels for filter operators.
1864
+ * @deprecated Use `useLenaLabels('dataTable').operators` or `useLenaLabels('filterPanel').operators` instead.
1787
1865
  */
1788
1866
  export declare const OPERATOR_LABELS: Record<FilterOperator, string>;
1789
1867
 
@@ -1846,9 +1924,6 @@ export declare interface PagedResponse<T> {
1846
1924
  meta: MetaInfo;
1847
1925
  }
1848
1926
 
1849
- /**
1850
- * Page-level Error Boundary with full-page fallback
1851
- */
1852
1927
  export declare function PageErrorBoundary({ children }: {
1853
1928
  children: ReactNode;
1854
1929
  }): JSX.Element;
@@ -1929,11 +2004,11 @@ export declare function PopoverContent({ className, align, sideOffset, ...props
1929
2004
  export declare function PopoverTrigger({ ...props }: React_2.ComponentProps<typeof PopoverPrimitive.Trigger>): JSX.Element;
1930
2005
 
1931
2006
  export declare const priorityColors: {
1932
- readonly HIGH: "bg-status-error/10 text-status-error border-status-error/30";
1933
- readonly MEDIUM: "bg-status-warning/10 text-status-warning border-status-warning/30";
1934
- readonly LOW: "bg-status-info/10 text-status-info-foreground border-status-info/30";
1935
- readonly CRITICAL: "bg-status-error/10 text-status-error border-status-error/30";
1936
- readonly NORMAL: "bg-status-neutral/10 text-status-neutral-foreground border-status-neutral/30";
2007
+ readonly HIGH: "bg-status-error/10 text-status-error border-status-error/30 ring-status-error/30";
2008
+ readonly MEDIUM: "bg-status-warning/10 text-status-warning border-status-warning/30 ring-status-warning/30";
2009
+ readonly LOW: "bg-status-info/10 text-status-info-foreground border-status-info/30 ring-status-info/30";
2010
+ readonly CRITICAL: "bg-status-error/10 text-status-error border-status-error/30 ring-status-error/30";
2011
+ readonly NORMAL: "bg-status-neutral/10 text-status-neutral-foreground border-status-neutral/30 ring-status-neutral/30";
1937
2012
  };
1938
2013
 
1939
2014
  export declare function Progress({ className, value, ...props }: React_2.ComponentProps<typeof ProgressPrimitive.Root>): JSX.Element;
@@ -1955,10 +2030,10 @@ declare interface PropertyRowProps {
1955
2030
  }
1956
2031
 
1957
2032
  export declare const protocolTypeColors: {
1958
- readonly DLMS: "bg-status-info/10 text-status-info-foreground border-status-info/30";
1959
- readonly MODBUS: "bg-status-purple/10 text-status-purple-foreground border-status-purple/30";
1960
- readonly IEC_62056_21: "bg-accent-cyan/10 text-accent-cyan border-accent-cyan/30";
1961
- readonly ANSI_C12_18: "bg-status-warning/10 text-status-warning border-status-warning/30";
2033
+ readonly DLMS: "bg-status-info/10 text-status-info-foreground border-status-info/30 ring-status-info/30";
2034
+ readonly MODBUS: "bg-status-purple/10 text-status-purple-foreground border-status-purple/30 ring-status-purple/30";
2035
+ readonly IEC_62056_21: "bg-accent-cyan/10 text-accent-cyan border-accent-cyan/30 ring-accent-cyan/30";
2036
+ readonly ANSI_C12_18: "bg-status-warning/10 text-status-warning border-status-warning/30 ring-status-warning/30";
1962
2037
  };
1963
2038
 
1964
2039
  export declare function QuickActionTile({ title, description, icon, href, onClick, variant, badge, className, animationDelay, }: QuickActionTileProps): JSX.Element;
@@ -2031,9 +2106,9 @@ export declare function ResizablePanel({ ...props }: React.ComponentProps<typeof
2031
2106
 
2032
2107
  export declare function ResizablePanelGroup({ className, ...props }: React.ComponentProps<typeof Group>): JSX.Element;
2033
2108
 
2034
- export declare function resolveIcon(icon: IconProp): React.ComponentType<{
2109
+ export declare function resolveIcon(icon?: IconProp): React.ComponentType<{
2035
2110
  className?: string;
2036
- }>;
2111
+ }> | null;
2037
2112
 
2038
2113
  /**
2039
2114
  * Common route param schemas
@@ -2107,9 +2182,6 @@ export declare interface SearchRequest {
2107
2182
  sortDirection: 'ASC' | 'DESC';
2108
2183
  }
2109
2184
 
2110
- /**
2111
- * Section-level Error Boundary with compact fallback
2112
- */
2113
2185
  export declare function SectionErrorBoundary({ children, title, }: {
2114
2186
  children: ReactNode;
2115
2187
  title?: string;
@@ -2150,7 +2222,7 @@ export declare const selectActiveFilterCount: (state: DataTableStore) => number;
2150
2222
 
2151
2223
  export declare function SelectContent({ className, children, position, align, ...props }: React_2.ComponentProps<typeof SelectPrimitive.Content>): JSX.Element;
2152
2224
 
2153
- export declare function SelectField<TFieldValues extends FieldValues>({ name, control, label, description, required, placeholder, searchPlaceholder, emptyText, options, disabled, className, cols, errorHint, }: SelectFieldProps<TFieldValues>): JSX.Element;
2225
+ export declare function SelectField<TFieldValues extends FieldValues>({ name, control, label, description, required, placeholder: placeholderProp, searchPlaceholder: searchPlaceholderProp, emptyText: emptyTextProp, options, disabled, className, cols, errorHint, }: SelectFieldProps<TFieldValues>): JSX.Element;
2154
2226
 
2155
2227
  declare interface SelectFieldProps<TFieldValues extends FieldValues> {
2156
2228
  name: FieldPath<TFieldValues>;
@@ -2274,14 +2346,28 @@ export declare function SheetTitle({ className, ...props }: React_2.ComponentPro
2274
2346
 
2275
2347
  export declare function SheetTrigger({ ...props }: React_2.ComponentProps<typeof DialogPrimitive.Trigger>): JSX.Element;
2276
2348
 
2349
+ declare interface SidebarLabels {
2350
+ expand: string;
2351
+ collapse: string;
2352
+ expandAriaLabel: string;
2353
+ collapseAriaLabel: string;
2354
+ }
2355
+
2356
+ export declare interface SidebarNavGroup {
2357
+ /** Optional section label (e.g. "INVENTORY", "COMMUNICATION") */
2358
+ label?: string;
2359
+ items: SidebarNavItem[];
2360
+ }
2361
+
2277
2362
  export declare interface SidebarNavItem {
2278
2363
  title: string;
2279
2364
  href: string;
2280
- icon: IconProp;
2365
+ /** Icon for the nav item. Shown for both top-level and child items. */
2366
+ icon?: IconProp;
2281
2367
  children?: SidebarNavItem[];
2282
2368
  }
2283
2369
 
2284
- export declare function SimpleDataTable<TData>({ columns, data, getRowId, isLoading, error, meta, enableSearch, searchPlaceholder, searchColumn, emptyIcon, emptyTitle, emptyDescription, onRowClick, rowClassName, className, loadingRows, headerColor, }: SimpleDataTableProps<TData>): JSX.Element;
2370
+ export declare function SimpleDataTable<TData>({ columns, data, getRowId, isLoading, error, meta, enableSearch, searchPlaceholder: searchPlaceholderProp, searchColumn, emptyIcon, emptyTitle: emptyTitleProp, emptyDescription, onRowClick, rowClassName, className, loadingRows, headerColor, }: SimpleDataTableProps<TData>): JSX.Element;
2285
2371
 
2286
2372
  declare interface SimpleDataTableProps<TData> {
2287
2373
  /** Column definitions */
@@ -2398,15 +2484,19 @@ export declare type StatusColor = keyof typeof statusColors;
2398
2484
  * Semantic colors with consistent light/dark mode support.
2399
2485
  */
2400
2486
  export declare const statusColors: {
2401
- readonly success: "bg-status-success/10 text-status-success-foreground border-status-success/30";
2402
- readonly warning: "bg-status-warning/10 text-status-warning border-status-warning/30";
2403
- readonly error: "bg-status-error/10 text-status-error border-status-error/30";
2404
- readonly info: "bg-status-info/10 text-status-info-foreground border-status-info/30";
2405
- readonly neutral: "bg-status-neutral/10 text-status-neutral-foreground border-status-neutral/30";
2406
- readonly accent: "bg-accent-cyan/10 text-accent-cyan border-accent-cyan/30";
2407
- readonly purple: "bg-status-purple/10 text-status-purple-foreground border-status-purple/30";
2487
+ readonly success: "bg-status-success/10 text-status-success-foreground border-status-success/30 ring-status-success/30";
2488
+ readonly warning: "bg-status-warning/10 text-status-warning border-status-warning/30 ring-status-warning/30";
2489
+ readonly error: "bg-status-error/10 text-status-error border-status-error/30 ring-status-error/30";
2490
+ readonly info: "bg-status-info/10 text-status-info-foreground border-status-info/30 ring-status-info/30";
2491
+ readonly neutral: "bg-status-neutral/10 text-status-neutral-foreground border-status-neutral/30 ring-status-neutral/30";
2492
+ readonly accent: "bg-accent-cyan/10 text-accent-cyan border-accent-cyan/30 ring-accent-cyan/30";
2493
+ readonly purple: "bg-status-purple/10 text-status-purple-foreground border-status-purple/30 ring-status-purple/30";
2408
2494
  };
2409
2495
 
2496
+ export declare const STICKY_CELL_CLASSES = "sticky right-0 z-[1] bg-card group-hover:bg-muted border-l border-border/60";
2497
+
2498
+ export declare const STICKY_HEADER_CLASSES = "sticky right-0 z-20 border-l border-border/60";
2499
+
2410
2500
  /**
2411
2501
  * Submit button that automatically shows loading state during form submission.
2412
2502
  *
@@ -2542,6 +2632,14 @@ export declare interface TabConfig {
2542
2632
 
2543
2633
  export declare function Table({ className, ...props }: React_2.ComponentProps<"table">): JSX.Element;
2544
2634
 
2635
+ export declare const TABLE_CELL_CLASSES = "px-2.5 py-1.5 text-xs";
2636
+
2637
+ export declare const TABLE_CONTAINER_CLASSES = "isolate rounded-lg border border-border/80 bg-card overflow-clip shadow-sm";
2638
+
2639
+ export declare const TABLE_HEADER_CLASSES = "px-2 py-0.5 text-xs font-semibold uppercase tracking-wider transition-colors";
2640
+
2641
+ export declare const TABLE_HEADER_ROW_CLASSES = "hover:bg-transparent border-b border-border/80";
2642
+
2545
2643
  export declare function TableBody({ className, ...props }: React_2.ComponentProps<"tbody">): JSX.Element;
2546
2644
 
2547
2645
  export declare function TableCaption({ className, ...props }: React_2.ComponentProps<"caption">): JSX.Element;
@@ -2707,6 +2805,9 @@ export declare interface ToolbarEntityLabelProps {
2707
2805
  className?: string;
2708
2806
  }
2709
2807
 
2808
+ /** Available toolbar color variants */
2809
+ declare type ToolbarVariant = 'dark' | 'cherry' | 'emerald' | 'amber';
2810
+
2710
2811
  export declare function Tooltip({ ...props }: React_2.ComponentProps<typeof TooltipPrimitive.Root>): JSX.Element;
2711
2812
 
2712
2813
  export declare function TooltipContent({ className, sideOffset, children, ...props }: React_2.ComponentProps<typeof TooltipPrimitive.Content>): JSX.Element;
@@ -2740,14 +2841,12 @@ declare interface TreeNodeOperation {
2740
2841
 
2741
2842
  export declare const trLabels: LenaUILabels;
2742
2843
 
2743
- export declare function UnderConstructionPage({ title, description, goBackLabel, homeLabel, onGoBack, onGoHome, }: UnderConstructionPageProps): JSX.Element;
2844
+ export declare function UnderConstructionPage({ title, description, homeLabel, onGoHome, }: UnderConstructionPageProps): JSX.Element;
2744
2845
 
2745
2846
  export declare interface UnderConstructionPageProps {
2746
2847
  title?: string;
2747
2848
  description?: string;
2748
- goBackLabel?: string;
2749
2849
  homeLabel?: string;
2750
- onGoBack?: () => void;
2751
2850
  onGoHome?: () => void;
2752
2851
  }
2753
2852
 
@@ -3092,7 +3191,7 @@ export declare function usePrefetch<TData>({ detailKey, listKey, fetchDetail, fe
3092
3191
 
3093
3192
  declare interface UsePrefetchOptions<TData> {
3094
3193
  /** Query key factory for detail queries */
3095
- detailKey: (id: number) => QueryKey;
3194
+ detailKey?: (id: number) => QueryKey;
3096
3195
  /** Query key factory for list queries */
3097
3196
  listKey: (params: SearchRequest) => QueryKey;
3098
3197
  /** Function to fetch detail data */
@@ -3203,5 +3302,7 @@ declare module '@tanstack/react-table' {
3203
3302
  sortField?: string;
3204
3303
  /** Sticky column positioning */
3205
3304
  sticky?: 'right' | 'left';
3305
+ /** Column content alignment — automatically applied to header and cell */
3306
+ align?: 'left' | 'center' | 'right';
3206
3307
  }
3207
3308
  }