@nubitio/react-admin 0.5.10 → 0.5.13

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/README.md CHANGED
@@ -19,6 +19,20 @@ npm install @nubitio/react-admin
19
19
  "react-router-dom": "^6"
20
20
  ```
21
21
 
22
+ Icons are [Phosphor](https://phosphoricons.com) CSS classes (`ph ph-*`) used
23
+ throughout the shell, grids and forms — install and import the webfont once:
24
+
25
+ ```bash
26
+ npm install @phosphor-icons/web
27
+ ```
28
+
29
+ ```ts
30
+ // main.tsx
31
+ import '@phosphor-icons/web/regular';
32
+ ```
33
+
34
+ Without it, menu and toolbar icons render as empty squares.
35
+
22
36
  ## Quick start
23
37
 
24
38
  ```tsx
package/dist/index.cjs CHANGED
@@ -382,6 +382,12 @@ Object.defineProperty(exports, "buildFields", {
382
382
  return _nubitio_crud.buildFields;
383
383
  }
384
384
  });
385
+ Object.defineProperty(exports, "buildMercureCollectionTopic", {
386
+ enumerable: true,
387
+ get: function() {
388
+ return _nubitio_core.buildMercureCollectionTopic;
389
+ }
390
+ });
385
391
  Object.defineProperty(exports, "checkboxField", {
386
392
  enumerable: true,
387
393
  get: function() {
@@ -424,6 +430,12 @@ Object.defineProperty(exports, "createCrudEvents", {
424
430
  return _nubitio_crud.createCrudEvents;
425
431
  }
426
432
  });
433
+ Object.defineProperty(exports, "createRestResourceStore", {
434
+ enumerable: true,
435
+ get: function() {
436
+ return _nubitio_crud.createRestResourceStore;
437
+ }
438
+ });
427
439
  Object.defineProperty(exports, "crudRoute", {
428
440
  enumerable: true,
429
441
  get: function() {
@@ -514,6 +526,12 @@ Object.defineProperty(exports, "getCoreTimezone", {
514
526
  return _nubitio_core.getCoreTimezone;
515
527
  }
516
528
  });
529
+ Object.defineProperty(exports, "getMercureTopicOrigin", {
530
+ enumerable: true,
531
+ get: function() {
532
+ return _nubitio_core.getMercureTopicOrigin;
533
+ }
534
+ });
517
535
  Object.defineProperty(exports, "identityField", {
518
536
  enumerable: true,
519
537
  get: function() {
@@ -568,6 +586,12 @@ Object.defineProperty(exports, "passwordField", {
568
586
  return _nubitio_crud.passwordField;
569
587
  }
570
588
  });
589
+ Object.defineProperty(exports, "resolveMercureTopicOrigin", {
590
+ enumerable: true,
591
+ get: function() {
592
+ return _nubitio_core.resolveMercureTopicOrigin;
593
+ }
594
+ });
571
595
  Object.defineProperty(exports, "resolveRangeTag", {
572
596
  enumerable: true,
573
597
  get: function() {
package/dist/index.d.cts CHANGED
@@ -1,6 +1,6 @@
1
- import { CoreConfig, CoreConfigProvider, CoreConfigProviderProps, CoreHttpClient, CoreHttpClientConfig, CoreProvider, CoreProviderProps, CoreTranslationKeys, DataRecord, DateUtils, EventSubscription, MercureProvider, MercureProviderProps, configureCore, configureCoreDate, coreTranslationsEn, coreTranslationsEs, createCoreHttpClient, dispatch, getCoreApiBaseUrl, getCoreCurrency, getCoreLocale, getCoreTimezone, initCoreI18n, useCoreConfig, useCoreHttpClient, useEvents, useMercureHub, useMercureSubscription } from "@nubitio/core";
2
- import { AuditEntry, AuditTrailConfig, AuditTrailPanel, AuditTrailPanelProps, BackendAdapter, BulkAction, ColumnPreset, ColumnPresetSelector, CrudPage, DATA_GRID_EVENTS, DataGridView, DialogView, DrawerView, EnumOption, FORM_EVENTS, Field, FieldBuilder, FieldDef, FieldInput, FieldOverride, FormHandle, FormLayout, FormOnChangeFn, FormSection, FormTab, FormView, FormatterFn, GridCellContext, GridHandle, GridOnChangeFn, HydraAdapter, LoadOption, OnChangeFn, ResourceConfig, ResourceFormDetail, ResourceGridDetail, ResourcePermissions, ResourceRouting, ResourceRowActions, ResourceSchemaResolver, ResourceStore, ResourceStoreFactory, ResourceStoreProvider, ResourceStoreProviderProps, ResourceToolbar, ResourceToolbarAction, ResourceToolbarActionVariant, ResourceToolbarContext, ResourceToolbarItems, RestAdapter, SmartCrudFieldContract, SmartCrudFieldOperation, SmartCrudFieldPatch, SmartCrudHydraFieldContract, SmartCrudHydraFieldDirective, SmartCrudManualField, SmartCrudManualFieldContract, SmartCrudOperation, SmartCrudPage, SmartCrudRolesProvider, ToolbarSelect, buildFields, checkboxField, createCrudEvents, crudRoute, currencyField, dateField, datetimeField, defineFieldContract, defineFields, defineResource, entityField, enumField, fileField, identityField, imageField, noneField, numberField, passwordField, selectField, switchField, textField, textareaField, useColumnPreset, useSmartCrudRoles, validateFieldContract } from "@nubitio/crud";
1
+ import { CoreConfig, CoreConfigProvider, CoreConfigProviderProps, CoreHttpClient, CoreHttpClientConfig, CoreProvider, CoreProviderProps, CoreTranslationKeys, DataRecord, DateUtils, EventSubscription, MercureProvider, MercureProviderProps, buildMercureCollectionTopic, configureCore, configureCoreDate, coreTranslationsEn, coreTranslationsEs, createCoreHttpClient, dispatch, getCoreApiBaseUrl, getCoreCurrency, getCoreLocale, getCoreTimezone, getMercureTopicOrigin, initCoreI18n, resolveMercureTopicOrigin, useCoreConfig, useCoreHttpClient, useEvents, useMercureHub, useMercureSubscription } from "@nubitio/core";
2
+ import { AuditEntry, AuditTrailConfig, AuditTrailPanel, AuditTrailPanelProps, BackendAdapter, BulkAction, ColumnPreset, ColumnPresetSelector, CrudPage, DATA_GRID_EVENTS, DataGridView, DialogView, DrawerView, EnumOption, FORM_EVENTS, Field, FieldBuilder, FieldDef, FieldInput, FieldOverride, FormHandle, FormLayout, FormOnChangeFn, FormSection, FormTab, FormView, FormatterFn, GridCellContext, GridHandle, GridOnChangeFn, HydraAdapter, LoadOption, OnChangeFn, ResourceConfig, ResourceFormDetail, ResourceGridDetail, ResourcePermissions, ResourceRouting, ResourceRowActions, ResourceSchemaResolver, ResourceStore, ResourceStoreFactory, ResourceStoreProvider, ResourceStoreProviderProps, ResourceToolbar, ResourceToolbarAction, ResourceToolbarActionVariant, ResourceToolbarContext, ResourceToolbarItems, RestAdapter, RestQueryDialect, SmartCrudFieldContract, SmartCrudFieldOperation, SmartCrudFieldPatch, SmartCrudHydraFieldContract, SmartCrudHydraFieldDirective, SmartCrudManualField, SmartCrudManualFieldContract, SmartCrudOperation, SmartCrudPage, SmartCrudRolesProvider, ToolbarSelect, buildFields, checkboxField, createCrudEvents, createRestResourceStore, crudRoute, currencyField, dateField, datetimeField, defineFieldContract, defineFields, defineResource, entityField, enumField, fileField, identityField, imageField, noneField, numberField, passwordField, selectField, switchField, textField, textareaField, useColumnPreset, useSmartCrudRoles, validateFieldContract } from "@nubitio/crud";
3
3
  import { ApiDoc, HydraApiDoc, HydraRemoteDataSource, HydraResourceSchemaProvider, HydraResourceStoreProvider, OpenApiDoc, RemoteDataSourceOptions, RemoteFilterDescriptor, RemoteLoadOptions, RemoteSortDescriptor, SchemaProvider, UseSchemaContextResult, mapHydraSchemaToFields, parseHydraDoc, parseOpenApiDoc, resolveRangeTag, useHydraMetadata, useResourceSchema, useSchemaContext } from "@nubitio/hydra";
4
4
  import { ACCENT_PRESETS, AccentPreset, AppDialog, AppDialogProps, AppDropdown, AppDropdownOption, AppDropdownProps, AppDropdownVariant, AppToolbar, AppToolbarProps, Avatar, AvatarProps, Badge, BadgeProps, Button, ButtonProps, Card, CardProps, Chip, ChipProps, CollapsibleSection, CollapsibleSectionProps, ConfirmDialog, ConfirmDialogProps, ContextMenu, ContextMenuItem, ContextMenuProps, DatePicker, DatePickerProps, DateRangePicker, DateRangePickerProps, Density, DensityProvider, Drawer, DrawerProps, DrawerSide, EN_UI_STRINGS, ES_UI_STRINGS, EmptyState, EmptyStateProps, FormField, FormFieldProps, IconButton, IconButtonProps, Popover, PopoverProps, SelectField, SelectFieldProps, SettingsPanel, SettingsPanelProps, Skeleton, SkeletonProps, StatCard, StatCardProps, TextAreaField, TextAreaFieldProps, TextField, TextFieldProps, Theme, ThemeContext, ThemeContextValue, ThemeMode, ThemeProvider, ThemeProviderProps, ThemeSwitcher, ThemeSwitcherProps, Timeline, TimelineItem, TimelineItemProps, TimelineItemStatus, TimelineItemTone, TimelineOrientation, TimelineProps, TimelineVariant, Toggle, ToggleProps, UiStrings, UiStringsProvider, UiStringsProviderProps, useAccentColor, useDensity, useTheme, useUiStrings } from "@nubitio/ui";
5
5
  import { AdminHeader, AdminHeaderAction, AdminHeaderProps, AdminMenuItem, AdminMenuSubItem, AdminShell, AdminShellProps, AdminSidebarMenu, AdminSidebarMenuProps, AdminSidebarMenuSelectEvent, useScreenSize, useScreenSizeClass } from "@nubitio/admin";
6
- export { ACCENT_PRESETS, type AccentPreset, AdminHeader, type AdminHeaderAction, type AdminHeaderProps, type AdminMenuItem, type AdminMenuSubItem, AdminShell, type AdminShellProps, AdminSidebarMenu, type AdminSidebarMenuProps, type AdminSidebarMenuSelectEvent, type ApiDoc, AppDialog, type AppDialogProps, AppDropdown, type AppDropdownOption, type AppDropdownProps, type AppDropdownVariant, AppToolbar, type AppToolbarProps, type AuditEntry, type AuditTrailConfig, AuditTrailPanel, type AuditTrailPanelProps, Avatar, type AvatarProps, type BackendAdapter, Badge, type BadgeProps, type BulkAction, Button, type ButtonProps, Card, type CardProps, Chip, type ChipProps, CollapsibleSection, type CollapsibleSectionProps, type ColumnPreset, ColumnPresetSelector, ConfirmDialog, type ConfirmDialogProps, ContextMenu, type ContextMenuItem, type ContextMenuProps, type CoreConfig, CoreConfigProvider, type CoreConfigProviderProps, type CoreHttpClient, type CoreHttpClientConfig, CoreProvider, type CoreProviderProps, type CoreTranslationKeys, CrudPage, DATA_GRID_EVENTS, DataGridView, type DataRecord, DatePicker, type DatePickerProps, DateRangePicker, type DateRangePickerProps, DateUtils, type Density, DensityProvider, DialogView, Drawer, type DrawerProps, type DrawerSide, DrawerView, EN_UI_STRINGS, ES_UI_STRINGS, EmptyState, type EmptyStateProps, type EnumOption, type EventSubscription, FORM_EVENTS, type Field, FieldBuilder, type FieldDef, type FieldInput, type FieldOverride, FormField, type FormFieldProps, type FormHandle, type FormLayout, type FormOnChangeFn, type FormSection, type FormTab, FormView, type FormatterFn, type GridCellContext, type GridHandle, type GridOnChangeFn, HydraAdapter, type HydraApiDoc, HydraRemoteDataSource, HydraResourceSchemaProvider, HydraResourceStoreProvider, IconButton, type IconButtonProps, type LoadOption, MercureProvider, type MercureProviderProps, type OnChangeFn, type OpenApiDoc, Popover, type PopoverProps, type RemoteDataSourceOptions, type RemoteFilterDescriptor, type RemoteLoadOptions, type RemoteSortDescriptor, type ResourceConfig, type ResourceFormDetail, type ResourceGridDetail, type ResourcePermissions, type ResourceRouting, type ResourceRowActions, type ResourceSchemaResolver, type ResourceStore, type ResourceStoreFactory, ResourceStoreProvider, type ResourceStoreProviderProps, type ResourceToolbar, type ResourceToolbarAction, type ResourceToolbarActionVariant, type ResourceToolbarContext, type ResourceToolbarItems, RestAdapter, SchemaProvider, SelectField, type SelectFieldProps, SettingsPanel, type SettingsPanelProps, Skeleton, type SkeletonProps, type SmartCrudFieldContract, type SmartCrudFieldOperation, type SmartCrudFieldPatch, type SmartCrudHydraFieldContract, type SmartCrudHydraFieldDirective, type SmartCrudManualField, type SmartCrudManualFieldContract, type SmartCrudOperation, SmartCrudPage, SmartCrudRolesProvider, StatCard, type StatCardProps, TextAreaField, type TextAreaFieldProps, TextField, type TextFieldProps, type Theme, ThemeContext, type ThemeContextValue, type ThemeMode, ThemeProvider, type ThemeProviderProps, ThemeSwitcher, type ThemeSwitcherProps, Timeline, TimelineItem, type TimelineItemProps, type TimelineItemStatus, type TimelineItemTone, type TimelineOrientation, type TimelineProps, type TimelineVariant, Toggle, type ToggleProps, ToolbarSelect, type UiStrings, UiStringsProvider, type UiStringsProviderProps, type UseSchemaContextResult, buildFields, checkboxField, configureCore, configureCoreDate, coreTranslationsEn, coreTranslationsEs, createCoreHttpClient, createCrudEvents, crudRoute, currencyField, dateField, datetimeField, defineFieldContract, defineFields, defineResource, dispatch, entityField, enumField, fileField, getCoreApiBaseUrl, getCoreCurrency, getCoreLocale, getCoreTimezone, identityField, imageField, initCoreI18n, mapHydraSchemaToFields, noneField, numberField, parseHydraDoc, parseOpenApiDoc, passwordField, resolveRangeTag, selectField, switchField, textField, textareaField, useAccentColor, useColumnPreset, useCoreConfig, useCoreHttpClient, useDensity, useEvents, useHydraMetadata, useMercureHub, useMercureSubscription, useResourceSchema, useSchemaContext, useScreenSize, useScreenSizeClass, useSmartCrudRoles, useTheme, useUiStrings, validateFieldContract };
6
+ export { ACCENT_PRESETS, type AccentPreset, AdminHeader, type AdminHeaderAction, type AdminHeaderProps, type AdminMenuItem, type AdminMenuSubItem, AdminShell, type AdminShellProps, AdminSidebarMenu, type AdminSidebarMenuProps, type AdminSidebarMenuSelectEvent, type ApiDoc, AppDialog, type AppDialogProps, AppDropdown, type AppDropdownOption, type AppDropdownProps, type AppDropdownVariant, AppToolbar, type AppToolbarProps, type AuditEntry, type AuditTrailConfig, AuditTrailPanel, type AuditTrailPanelProps, Avatar, type AvatarProps, type BackendAdapter, Badge, type BadgeProps, type BulkAction, Button, type ButtonProps, Card, type CardProps, Chip, type ChipProps, CollapsibleSection, type CollapsibleSectionProps, type ColumnPreset, ColumnPresetSelector, ConfirmDialog, type ConfirmDialogProps, ContextMenu, type ContextMenuItem, type ContextMenuProps, type CoreConfig, CoreConfigProvider, type CoreConfigProviderProps, type CoreHttpClient, type CoreHttpClientConfig, CoreProvider, type CoreProviderProps, type CoreTranslationKeys, CrudPage, DATA_GRID_EVENTS, DataGridView, type DataRecord, DatePicker, type DatePickerProps, DateRangePicker, type DateRangePickerProps, DateUtils, type Density, DensityProvider, DialogView, Drawer, type DrawerProps, type DrawerSide, DrawerView, EN_UI_STRINGS, ES_UI_STRINGS, EmptyState, type EmptyStateProps, type EnumOption, type EventSubscription, FORM_EVENTS, type Field, FieldBuilder, type FieldDef, type FieldInput, type FieldOverride, FormField, type FormFieldProps, type FormHandle, type FormLayout, type FormOnChangeFn, type FormSection, type FormTab, FormView, type FormatterFn, type GridCellContext, type GridHandle, type GridOnChangeFn, HydraAdapter, type HydraApiDoc, HydraRemoteDataSource, HydraResourceSchemaProvider, HydraResourceStoreProvider, IconButton, type IconButtonProps, type LoadOption, MercureProvider, type MercureProviderProps, type OnChangeFn, type OpenApiDoc, Popover, type PopoverProps, type RemoteDataSourceOptions, type RemoteFilterDescriptor, type RemoteLoadOptions, type RemoteSortDescriptor, type ResourceConfig, type ResourceFormDetail, type ResourceGridDetail, type ResourcePermissions, type ResourceRouting, type ResourceRowActions, type ResourceSchemaResolver, type ResourceStore, type ResourceStoreFactory, ResourceStoreProvider, type ResourceStoreProviderProps, type ResourceToolbar, type ResourceToolbarAction, type ResourceToolbarActionVariant, type ResourceToolbarContext, type ResourceToolbarItems, RestAdapter, type RestQueryDialect, SchemaProvider, SelectField, type SelectFieldProps, SettingsPanel, type SettingsPanelProps, Skeleton, type SkeletonProps, type SmartCrudFieldContract, type SmartCrudFieldOperation, type SmartCrudFieldPatch, type SmartCrudHydraFieldContract, type SmartCrudHydraFieldDirective, type SmartCrudManualField, type SmartCrudManualFieldContract, type SmartCrudOperation, SmartCrudPage, SmartCrudRolesProvider, StatCard, type StatCardProps, TextAreaField, type TextAreaFieldProps, TextField, type TextFieldProps, type Theme, ThemeContext, type ThemeContextValue, type ThemeMode, ThemeProvider, type ThemeProviderProps, ThemeSwitcher, type ThemeSwitcherProps, Timeline, TimelineItem, type TimelineItemProps, type TimelineItemStatus, type TimelineItemTone, type TimelineOrientation, type TimelineProps, type TimelineVariant, Toggle, type ToggleProps, ToolbarSelect, type UiStrings, UiStringsProvider, type UiStringsProviderProps, type UseSchemaContextResult, buildFields, buildMercureCollectionTopic, checkboxField, configureCore, configureCoreDate, coreTranslationsEn, coreTranslationsEs, createCoreHttpClient, createCrudEvents, createRestResourceStore, crudRoute, currencyField, dateField, datetimeField, defineFieldContract, defineFields, defineResource, dispatch, entityField, enumField, fileField, getCoreApiBaseUrl, getCoreCurrency, getCoreLocale, getCoreTimezone, getMercureTopicOrigin, identityField, imageField, initCoreI18n, mapHydraSchemaToFields, noneField, numberField, parseHydraDoc, parseOpenApiDoc, passwordField, resolveMercureTopicOrigin, resolveRangeTag, selectField, switchField, textField, textareaField, useAccentColor, useColumnPreset, useCoreConfig, useCoreHttpClient, useDensity, useEvents, useHydraMetadata, useMercureHub, useMercureSubscription, useResourceSchema, useSchemaContext, useScreenSize, useScreenSizeClass, useSmartCrudRoles, useTheme, useUiStrings, validateFieldContract };
package/dist/index.d.mts CHANGED
@@ -1,6 +1,6 @@
1
- import { CoreConfig, CoreConfigProvider, CoreConfigProviderProps, CoreHttpClient, CoreHttpClientConfig, CoreProvider, CoreProviderProps, CoreTranslationKeys, DataRecord, DateUtils, EventSubscription, MercureProvider, MercureProviderProps, configureCore, configureCoreDate, coreTranslationsEn, coreTranslationsEs, createCoreHttpClient, dispatch, getCoreApiBaseUrl, getCoreCurrency, getCoreLocale, getCoreTimezone, initCoreI18n, useCoreConfig, useCoreHttpClient, useEvents, useMercureHub, useMercureSubscription } from "@nubitio/core";
2
- import { AuditEntry, AuditTrailConfig, AuditTrailPanel, AuditTrailPanelProps, BackendAdapter, BulkAction, ColumnPreset, ColumnPresetSelector, CrudPage, DATA_GRID_EVENTS, DataGridView, DialogView, DrawerView, EnumOption, FORM_EVENTS, Field, FieldBuilder, FieldDef, FieldInput, FieldOverride, FormHandle, FormLayout, FormOnChangeFn, FormSection, FormTab, FormView, FormatterFn, GridCellContext, GridHandle, GridOnChangeFn, HydraAdapter, LoadOption, OnChangeFn, ResourceConfig, ResourceFormDetail, ResourceGridDetail, ResourcePermissions, ResourceRouting, ResourceRowActions, ResourceSchemaResolver, ResourceStore, ResourceStoreFactory, ResourceStoreProvider, ResourceStoreProviderProps, ResourceToolbar, ResourceToolbarAction, ResourceToolbarActionVariant, ResourceToolbarContext, ResourceToolbarItems, RestAdapter, SmartCrudFieldContract, SmartCrudFieldOperation, SmartCrudFieldPatch, SmartCrudHydraFieldContract, SmartCrudHydraFieldDirective, SmartCrudManualField, SmartCrudManualFieldContract, SmartCrudOperation, SmartCrudPage, SmartCrudRolesProvider, ToolbarSelect, buildFields, checkboxField, createCrudEvents, crudRoute, currencyField, dateField, datetimeField, defineFieldContract, defineFields, defineResource, entityField, enumField, fileField, identityField, imageField, noneField, numberField, passwordField, selectField, switchField, textField, textareaField, useColumnPreset, useSmartCrudRoles, validateFieldContract } from "@nubitio/crud";
1
+ import { CoreConfig, CoreConfigProvider, CoreConfigProviderProps, CoreHttpClient, CoreHttpClientConfig, CoreProvider, CoreProviderProps, CoreTranslationKeys, DataRecord, DateUtils, EventSubscription, MercureProvider, MercureProviderProps, buildMercureCollectionTopic, configureCore, configureCoreDate, coreTranslationsEn, coreTranslationsEs, createCoreHttpClient, dispatch, getCoreApiBaseUrl, getCoreCurrency, getCoreLocale, getCoreTimezone, getMercureTopicOrigin, initCoreI18n, resolveMercureTopicOrigin, useCoreConfig, useCoreHttpClient, useEvents, useMercureHub, useMercureSubscription } from "@nubitio/core";
2
+ import { AuditEntry, AuditTrailConfig, AuditTrailPanel, AuditTrailPanelProps, BackendAdapter, BulkAction, ColumnPreset, ColumnPresetSelector, CrudPage, DATA_GRID_EVENTS, DataGridView, DialogView, DrawerView, EnumOption, FORM_EVENTS, Field, FieldBuilder, FieldDef, FieldInput, FieldOverride, FormHandle, FormLayout, FormOnChangeFn, FormSection, FormTab, FormView, FormatterFn, GridCellContext, GridHandle, GridOnChangeFn, HydraAdapter, LoadOption, OnChangeFn, ResourceConfig, ResourceFormDetail, ResourceGridDetail, ResourcePermissions, ResourceRouting, ResourceRowActions, ResourceSchemaResolver, ResourceStore, ResourceStoreFactory, ResourceStoreProvider, ResourceStoreProviderProps, ResourceToolbar, ResourceToolbarAction, ResourceToolbarActionVariant, ResourceToolbarContext, ResourceToolbarItems, RestAdapter, RestQueryDialect, SmartCrudFieldContract, SmartCrudFieldOperation, SmartCrudFieldPatch, SmartCrudHydraFieldContract, SmartCrudHydraFieldDirective, SmartCrudManualField, SmartCrudManualFieldContract, SmartCrudOperation, SmartCrudPage, SmartCrudRolesProvider, ToolbarSelect, buildFields, checkboxField, createCrudEvents, createRestResourceStore, crudRoute, currencyField, dateField, datetimeField, defineFieldContract, defineFields, defineResource, entityField, enumField, fileField, identityField, imageField, noneField, numberField, passwordField, selectField, switchField, textField, textareaField, useColumnPreset, useSmartCrudRoles, validateFieldContract } from "@nubitio/crud";
3
3
  import { ApiDoc, HydraApiDoc, HydraRemoteDataSource, HydraResourceSchemaProvider, HydraResourceStoreProvider, OpenApiDoc, RemoteDataSourceOptions, RemoteFilterDescriptor, RemoteLoadOptions, RemoteSortDescriptor, SchemaProvider, UseSchemaContextResult, mapHydraSchemaToFields, parseHydraDoc, parseOpenApiDoc, resolveRangeTag, useHydraMetadata, useResourceSchema, useSchemaContext } from "@nubitio/hydra";
4
4
  import { ACCENT_PRESETS, AccentPreset, AppDialog, AppDialogProps, AppDropdown, AppDropdownOption, AppDropdownProps, AppDropdownVariant, AppToolbar, AppToolbarProps, Avatar, AvatarProps, Badge, BadgeProps, Button, ButtonProps, Card, CardProps, Chip, ChipProps, CollapsibleSection, CollapsibleSectionProps, ConfirmDialog, ConfirmDialogProps, ContextMenu, ContextMenuItem, ContextMenuProps, DatePicker, DatePickerProps, DateRangePicker, DateRangePickerProps, Density, DensityProvider, Drawer, DrawerProps, DrawerSide, EN_UI_STRINGS, ES_UI_STRINGS, EmptyState, EmptyStateProps, FormField, FormFieldProps, IconButton, IconButtonProps, Popover, PopoverProps, SelectField, SelectFieldProps, SettingsPanel, SettingsPanelProps, Skeleton, SkeletonProps, StatCard, StatCardProps, TextAreaField, TextAreaFieldProps, TextField, TextFieldProps, Theme, ThemeContext, ThemeContextValue, ThemeMode, ThemeProvider, ThemeProviderProps, ThemeSwitcher, ThemeSwitcherProps, Timeline, TimelineItem, TimelineItemProps, TimelineItemStatus, TimelineItemTone, TimelineOrientation, TimelineProps, TimelineVariant, Toggle, ToggleProps, UiStrings, UiStringsProvider, UiStringsProviderProps, useAccentColor, useDensity, useTheme, useUiStrings } from "@nubitio/ui";
5
5
  import { AdminHeader, AdminHeaderAction, AdminHeaderProps, AdminMenuItem, AdminMenuSubItem, AdminShell, AdminShellProps, AdminSidebarMenu, AdminSidebarMenuProps, AdminSidebarMenuSelectEvent, useScreenSize, useScreenSizeClass } from "@nubitio/admin";
6
- export { ACCENT_PRESETS, type AccentPreset, AdminHeader, type AdminHeaderAction, type AdminHeaderProps, type AdminMenuItem, type AdminMenuSubItem, AdminShell, type AdminShellProps, AdminSidebarMenu, type AdminSidebarMenuProps, type AdminSidebarMenuSelectEvent, type ApiDoc, AppDialog, type AppDialogProps, AppDropdown, type AppDropdownOption, type AppDropdownProps, type AppDropdownVariant, AppToolbar, type AppToolbarProps, type AuditEntry, type AuditTrailConfig, AuditTrailPanel, type AuditTrailPanelProps, Avatar, type AvatarProps, type BackendAdapter, Badge, type BadgeProps, type BulkAction, Button, type ButtonProps, Card, type CardProps, Chip, type ChipProps, CollapsibleSection, type CollapsibleSectionProps, type ColumnPreset, ColumnPresetSelector, ConfirmDialog, type ConfirmDialogProps, ContextMenu, type ContextMenuItem, type ContextMenuProps, type CoreConfig, CoreConfigProvider, type CoreConfigProviderProps, type CoreHttpClient, type CoreHttpClientConfig, CoreProvider, type CoreProviderProps, type CoreTranslationKeys, CrudPage, DATA_GRID_EVENTS, DataGridView, type DataRecord, DatePicker, type DatePickerProps, DateRangePicker, type DateRangePickerProps, DateUtils, type Density, DensityProvider, DialogView, Drawer, type DrawerProps, type DrawerSide, DrawerView, EN_UI_STRINGS, ES_UI_STRINGS, EmptyState, type EmptyStateProps, type EnumOption, type EventSubscription, FORM_EVENTS, type Field, FieldBuilder, type FieldDef, type FieldInput, type FieldOverride, FormField, type FormFieldProps, type FormHandle, type FormLayout, type FormOnChangeFn, type FormSection, type FormTab, FormView, type FormatterFn, type GridCellContext, type GridHandle, type GridOnChangeFn, HydraAdapter, type HydraApiDoc, HydraRemoteDataSource, HydraResourceSchemaProvider, HydraResourceStoreProvider, IconButton, type IconButtonProps, type LoadOption, MercureProvider, type MercureProviderProps, type OnChangeFn, type OpenApiDoc, Popover, type PopoverProps, type RemoteDataSourceOptions, type RemoteFilterDescriptor, type RemoteLoadOptions, type RemoteSortDescriptor, type ResourceConfig, type ResourceFormDetail, type ResourceGridDetail, type ResourcePermissions, type ResourceRouting, type ResourceRowActions, type ResourceSchemaResolver, type ResourceStore, type ResourceStoreFactory, ResourceStoreProvider, type ResourceStoreProviderProps, type ResourceToolbar, type ResourceToolbarAction, type ResourceToolbarActionVariant, type ResourceToolbarContext, type ResourceToolbarItems, RestAdapter, SchemaProvider, SelectField, type SelectFieldProps, SettingsPanel, type SettingsPanelProps, Skeleton, type SkeletonProps, type SmartCrudFieldContract, type SmartCrudFieldOperation, type SmartCrudFieldPatch, type SmartCrudHydraFieldContract, type SmartCrudHydraFieldDirective, type SmartCrudManualField, type SmartCrudManualFieldContract, type SmartCrudOperation, SmartCrudPage, SmartCrudRolesProvider, StatCard, type StatCardProps, TextAreaField, type TextAreaFieldProps, TextField, type TextFieldProps, type Theme, ThemeContext, type ThemeContextValue, type ThemeMode, ThemeProvider, type ThemeProviderProps, ThemeSwitcher, type ThemeSwitcherProps, Timeline, TimelineItem, type TimelineItemProps, type TimelineItemStatus, type TimelineItemTone, type TimelineOrientation, type TimelineProps, type TimelineVariant, Toggle, type ToggleProps, ToolbarSelect, type UiStrings, UiStringsProvider, type UiStringsProviderProps, type UseSchemaContextResult, buildFields, checkboxField, configureCore, configureCoreDate, coreTranslationsEn, coreTranslationsEs, createCoreHttpClient, createCrudEvents, crudRoute, currencyField, dateField, datetimeField, defineFieldContract, defineFields, defineResource, dispatch, entityField, enumField, fileField, getCoreApiBaseUrl, getCoreCurrency, getCoreLocale, getCoreTimezone, identityField, imageField, initCoreI18n, mapHydraSchemaToFields, noneField, numberField, parseHydraDoc, parseOpenApiDoc, passwordField, resolveRangeTag, selectField, switchField, textField, textareaField, useAccentColor, useColumnPreset, useCoreConfig, useCoreHttpClient, useDensity, useEvents, useHydraMetadata, useMercureHub, useMercureSubscription, useResourceSchema, useSchemaContext, useScreenSize, useScreenSizeClass, useSmartCrudRoles, useTheme, useUiStrings, validateFieldContract };
6
+ export { ACCENT_PRESETS, type AccentPreset, AdminHeader, type AdminHeaderAction, type AdminHeaderProps, type AdminMenuItem, type AdminMenuSubItem, AdminShell, type AdminShellProps, AdminSidebarMenu, type AdminSidebarMenuProps, type AdminSidebarMenuSelectEvent, type ApiDoc, AppDialog, type AppDialogProps, AppDropdown, type AppDropdownOption, type AppDropdownProps, type AppDropdownVariant, AppToolbar, type AppToolbarProps, type AuditEntry, type AuditTrailConfig, AuditTrailPanel, type AuditTrailPanelProps, Avatar, type AvatarProps, type BackendAdapter, Badge, type BadgeProps, type BulkAction, Button, type ButtonProps, Card, type CardProps, Chip, type ChipProps, CollapsibleSection, type CollapsibleSectionProps, type ColumnPreset, ColumnPresetSelector, ConfirmDialog, type ConfirmDialogProps, ContextMenu, type ContextMenuItem, type ContextMenuProps, type CoreConfig, CoreConfigProvider, type CoreConfigProviderProps, type CoreHttpClient, type CoreHttpClientConfig, CoreProvider, type CoreProviderProps, type CoreTranslationKeys, CrudPage, DATA_GRID_EVENTS, DataGridView, type DataRecord, DatePicker, type DatePickerProps, DateRangePicker, type DateRangePickerProps, DateUtils, type Density, DensityProvider, DialogView, Drawer, type DrawerProps, type DrawerSide, DrawerView, EN_UI_STRINGS, ES_UI_STRINGS, EmptyState, type EmptyStateProps, type EnumOption, type EventSubscription, FORM_EVENTS, type Field, FieldBuilder, type FieldDef, type FieldInput, type FieldOverride, FormField, type FormFieldProps, type FormHandle, type FormLayout, type FormOnChangeFn, type FormSection, type FormTab, FormView, type FormatterFn, type GridCellContext, type GridHandle, type GridOnChangeFn, HydraAdapter, type HydraApiDoc, HydraRemoteDataSource, HydraResourceSchemaProvider, HydraResourceStoreProvider, IconButton, type IconButtonProps, type LoadOption, MercureProvider, type MercureProviderProps, type OnChangeFn, type OpenApiDoc, Popover, type PopoverProps, type RemoteDataSourceOptions, type RemoteFilterDescriptor, type RemoteLoadOptions, type RemoteSortDescriptor, type ResourceConfig, type ResourceFormDetail, type ResourceGridDetail, type ResourcePermissions, type ResourceRouting, type ResourceRowActions, type ResourceSchemaResolver, type ResourceStore, type ResourceStoreFactory, ResourceStoreProvider, type ResourceStoreProviderProps, type ResourceToolbar, type ResourceToolbarAction, type ResourceToolbarActionVariant, type ResourceToolbarContext, type ResourceToolbarItems, RestAdapter, type RestQueryDialect, SchemaProvider, SelectField, type SelectFieldProps, SettingsPanel, type SettingsPanelProps, Skeleton, type SkeletonProps, type SmartCrudFieldContract, type SmartCrudFieldOperation, type SmartCrudFieldPatch, type SmartCrudHydraFieldContract, type SmartCrudHydraFieldDirective, type SmartCrudManualField, type SmartCrudManualFieldContract, type SmartCrudOperation, SmartCrudPage, SmartCrudRolesProvider, StatCard, type StatCardProps, TextAreaField, type TextAreaFieldProps, TextField, type TextFieldProps, type Theme, ThemeContext, type ThemeContextValue, type ThemeMode, ThemeProvider, type ThemeProviderProps, ThemeSwitcher, type ThemeSwitcherProps, Timeline, TimelineItem, type TimelineItemProps, type TimelineItemStatus, type TimelineItemTone, type TimelineOrientation, type TimelineProps, type TimelineVariant, Toggle, type ToggleProps, ToolbarSelect, type UiStrings, UiStringsProvider, type UiStringsProviderProps, type UseSchemaContextResult, buildFields, buildMercureCollectionTopic, checkboxField, configureCore, configureCoreDate, coreTranslationsEn, coreTranslationsEs, createCoreHttpClient, createCrudEvents, createRestResourceStore, crudRoute, currencyField, dateField, datetimeField, defineFieldContract, defineFields, defineResource, dispatch, entityField, enumField, fileField, getCoreApiBaseUrl, getCoreCurrency, getCoreLocale, getCoreTimezone, getMercureTopicOrigin, identityField, imageField, initCoreI18n, mapHydraSchemaToFields, noneField, numberField, parseHydraDoc, parseOpenApiDoc, passwordField, resolveMercureTopicOrigin, resolveRangeTag, selectField, switchField, textField, textareaField, useAccentColor, useColumnPreset, useCoreConfig, useCoreHttpClient, useDensity, useEvents, useHydraMetadata, useMercureHub, useMercureSubscription, useResourceSchema, useSchemaContext, useScreenSize, useScreenSizeClass, useSmartCrudRoles, useTheme, useUiStrings, validateFieldContract };
package/dist/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
- import { CoreConfigProvider, CoreProvider, DateUtils, MercureProvider, configureCore, configureCoreDate, coreTranslationsEn, coreTranslationsEs, createCoreHttpClient, dispatch, getCoreApiBaseUrl, getCoreCurrency, getCoreLocale, getCoreTimezone, initCoreI18n, useCoreConfig, useCoreHttpClient, useEvents, useMercureHub, useMercureSubscription } from "@nubitio/core";
2
- import { AuditTrailPanel, ColumnPresetSelector, CrudPage, DATA_GRID_EVENTS, DataGridView, DialogView, DrawerView, FORM_EVENTS, FieldBuilder, FormView, HydraAdapter, ResourceStoreProvider, RestAdapter, SmartCrudPage, SmartCrudRolesProvider, ToolbarSelect, buildFields, checkboxField, createCrudEvents, crudRoute, currencyField, dateField, datetimeField, defineFieldContract, defineFields, defineResource, entityField, enumField, fileField, identityField, imageField, noneField, numberField, passwordField, selectField, switchField, textField, textareaField, useColumnPreset, useSmartCrudRoles, validateFieldContract } from "@nubitio/crud";
1
+ import { CoreConfigProvider, CoreProvider, DateUtils, MercureProvider, buildMercureCollectionTopic, configureCore, configureCoreDate, coreTranslationsEn, coreTranslationsEs, createCoreHttpClient, dispatch, getCoreApiBaseUrl, getCoreCurrency, getCoreLocale, getCoreTimezone, getMercureTopicOrigin, initCoreI18n, resolveMercureTopicOrigin, useCoreConfig, useCoreHttpClient, useEvents, useMercureHub, useMercureSubscription } from "@nubitio/core";
2
+ import { AuditTrailPanel, ColumnPresetSelector, CrudPage, DATA_GRID_EVENTS, DataGridView, DialogView, DrawerView, FORM_EVENTS, FieldBuilder, FormView, HydraAdapter, ResourceStoreProvider, RestAdapter, SmartCrudPage, SmartCrudRolesProvider, ToolbarSelect, buildFields, checkboxField, createCrudEvents, createRestResourceStore, crudRoute, currencyField, dateField, datetimeField, defineFieldContract, defineFields, defineResource, entityField, enumField, fileField, identityField, imageField, noneField, numberField, passwordField, selectField, switchField, textField, textareaField, useColumnPreset, useSmartCrudRoles, validateFieldContract } from "@nubitio/crud";
3
3
  import { HydraRemoteDataSource, HydraResourceSchemaProvider, HydraResourceStoreProvider, SchemaProvider, mapHydraSchemaToFields, parseHydraDoc, parseOpenApiDoc, resolveRangeTag, useHydraMetadata, useResourceSchema, useSchemaContext } from "@nubitio/hydra";
4
4
  import { ACCENT_PRESETS, AppDialog, AppDropdown, AppToolbar, Avatar, Badge, Button, Card, Chip, CollapsibleSection, ConfirmDialog, ContextMenu, DatePicker, DateRangePicker, DensityProvider, Drawer, EN_UI_STRINGS, ES_UI_STRINGS, EmptyState, FormField, IconButton, Popover, SelectField, SettingsPanel, Skeleton, StatCard, TextAreaField, TextField, ThemeContext, ThemeProvider, ThemeSwitcher, Timeline, TimelineItem, Toggle, UiStringsProvider, useAccentColor, useDensity, useTheme, useUiStrings } from "@nubitio/ui";
5
5
  import { AdminHeader, AdminShell, AdminSidebarMenu, useScreenSize, useScreenSizeClass } from "@nubitio/admin";
6
- export { ACCENT_PRESETS, AdminHeader, AdminShell, AdminSidebarMenu, AppDialog, AppDropdown, AppToolbar, AuditTrailPanel, Avatar, Badge, Button, Card, Chip, CollapsibleSection, ColumnPresetSelector, ConfirmDialog, ContextMenu, CoreConfigProvider, CoreProvider, CrudPage, DATA_GRID_EVENTS, DataGridView, DatePicker, DateRangePicker, DateUtils, DensityProvider, DialogView, Drawer, DrawerView, EN_UI_STRINGS, ES_UI_STRINGS, EmptyState, FORM_EVENTS, FieldBuilder, FormField, FormView, HydraAdapter, HydraRemoteDataSource, HydraResourceSchemaProvider, HydraResourceStoreProvider, IconButton, MercureProvider, Popover, ResourceStoreProvider, RestAdapter, SchemaProvider, SelectField, SettingsPanel, Skeleton, SmartCrudPage, SmartCrudRolesProvider, StatCard, TextAreaField, TextField, ThemeContext, ThemeProvider, ThemeSwitcher, Timeline, TimelineItem, Toggle, ToolbarSelect, UiStringsProvider, buildFields, checkboxField, configureCore, configureCoreDate, coreTranslationsEn, coreTranslationsEs, createCoreHttpClient, createCrudEvents, crudRoute, currencyField, dateField, datetimeField, defineFieldContract, defineFields, defineResource, dispatch, entityField, enumField, fileField, getCoreApiBaseUrl, getCoreCurrency, getCoreLocale, getCoreTimezone, identityField, imageField, initCoreI18n, mapHydraSchemaToFields, noneField, numberField, parseHydraDoc, parseOpenApiDoc, passwordField, resolveRangeTag, selectField, switchField, textField, textareaField, useAccentColor, useColumnPreset, useCoreConfig, useCoreHttpClient, useDensity, useEvents, useHydraMetadata, useMercureHub, useMercureSubscription, useResourceSchema, useSchemaContext, useScreenSize, useScreenSizeClass, useSmartCrudRoles, useTheme, useUiStrings, validateFieldContract };
6
+ export { ACCENT_PRESETS, AdminHeader, AdminShell, AdminSidebarMenu, AppDialog, AppDropdown, AppToolbar, AuditTrailPanel, Avatar, Badge, Button, Card, Chip, CollapsibleSection, ColumnPresetSelector, ConfirmDialog, ContextMenu, CoreConfigProvider, CoreProvider, CrudPage, DATA_GRID_EVENTS, DataGridView, DatePicker, DateRangePicker, DateUtils, DensityProvider, DialogView, Drawer, DrawerView, EN_UI_STRINGS, ES_UI_STRINGS, EmptyState, FORM_EVENTS, FieldBuilder, FormField, FormView, HydraAdapter, HydraRemoteDataSource, HydraResourceSchemaProvider, HydraResourceStoreProvider, IconButton, MercureProvider, Popover, ResourceStoreProvider, RestAdapter, SchemaProvider, SelectField, SettingsPanel, Skeleton, SmartCrudPage, SmartCrudRolesProvider, StatCard, TextAreaField, TextField, ThemeContext, ThemeProvider, ThemeSwitcher, Timeline, TimelineItem, Toggle, ToolbarSelect, UiStringsProvider, buildFields, buildMercureCollectionTopic, checkboxField, configureCore, configureCoreDate, coreTranslationsEn, coreTranslationsEs, createCoreHttpClient, createCrudEvents, createRestResourceStore, crudRoute, currencyField, dateField, datetimeField, defineFieldContract, defineFields, defineResource, dispatch, entityField, enumField, fileField, getCoreApiBaseUrl, getCoreCurrency, getCoreLocale, getCoreTimezone, getMercureTopicOrigin, identityField, imageField, initCoreI18n, mapHydraSchemaToFields, noneField, numberField, parseHydraDoc, parseOpenApiDoc, passwordField, resolveMercureTopicOrigin, resolveRangeTag, selectField, switchField, textField, textareaField, useAccentColor, useColumnPreset, useCoreConfig, useCoreHttpClient, useDensity, useEvents, useHydraMetadata, useMercureHub, useMercureSubscription, useResourceSchema, useSchemaContext, useScreenSize, useScreenSizeClass, useSmartCrudRoles, useTheme, useUiStrings, validateFieldContract };
package/dist/style.css CHANGED
@@ -2871,6 +2871,7 @@ html[data-density=compact] .nb-drawer__footer {
2871
2871
  flex-wrap: wrap;
2872
2872
  align-items: center;
2873
2873
  gap: var(--space-2);
2874
+ justify-content: flex-start;
2874
2875
  min-height: 18px;
2875
2876
  }
2876
2877
 
@@ -4851,6 +4852,238 @@ html[data-density=compact] .nb-datagrid .nb-badge {
4851
4852
  outline: none;
4852
4853
  }
4853
4854
 
4855
+ .nb-form__file-upload-error {
4856
+ align-items: center;
4857
+ color: var(--error-color);
4858
+ display: inline-flex;
4859
+ font-size: var(--font-size-xs);
4860
+ gap: var(--space-1);
4861
+ }
4862
+ .nb-form__file-upload {
4863
+ display: flex;
4864
+ flex-direction: column;
4865
+ gap: var(--space-1);
4866
+ width: 100%;
4867
+ }
4868
+
4869
+ .nb-form__file-upload-zone {
4870
+ align-items: center;
4871
+ background: var(--surface-1);
4872
+ border: 1px dashed var(--border-color);
4873
+ border-radius: var(--radius-lg);
4874
+ box-sizing: border-box;
4875
+ cursor: pointer;
4876
+ display: flex;
4877
+ justify-content: center;
4878
+ min-height: 112px;
4879
+ overflow: hidden;
4880
+ position: relative;
4881
+ transition: border-color var(--transition-base), background var(--transition-base), box-shadow var(--transition-base);
4882
+ width: 100%;
4883
+ }
4884
+ .nb-form__file-upload-zone:hover:not(.nb-form__file-upload-zone--disabled):not(.nb-form__file-upload-zone--filled) {
4885
+ background: color-mix(in srgb, var(--accent-color) 4%, var(--surface-1));
4886
+ border-color: var(--accent-color);
4887
+ }
4888
+ .nb-form__file-upload-zone--active {
4889
+ background: color-mix(in srgb, var(--accent-color) 8%, var(--surface-1));
4890
+ border-color: var(--accent-color);
4891
+ }
4892
+ .nb-form__file-upload-zone--filled {
4893
+ border-style: solid;
4894
+ cursor: default;
4895
+ min-height: 88px;
4896
+ }
4897
+ .nb-form__file-upload-zone--uploading {
4898
+ pointer-events: none;
4899
+ }
4900
+ .nb-form__file-upload-zone--disabled {
4901
+ cursor: not-allowed;
4902
+ opacity: 0.72;
4903
+ }
4904
+ .nb-form__file-upload-zone:focus-visible {
4905
+ box-shadow: 0 0 0 3px var(--focus-ring-color);
4906
+ outline: none;
4907
+ }
4908
+
4909
+ .nb-form__file-upload--image .nb-form__file-upload-zone {
4910
+ min-height: 168px;
4911
+ }
4912
+
4913
+ .nb-form__file-upload--image .nb-form__file-upload-zone--filled {
4914
+ min-height: 180px;
4915
+ }
4916
+
4917
+ .nb-form__file-upload--invalid .nb-form__file-upload-zone {
4918
+ border-color: var(--error-color);
4919
+ }
4920
+
4921
+ .nb-form__file-upload-placeholder {
4922
+ align-items: center;
4923
+ display: flex;
4924
+ flex-direction: column;
4925
+ gap: var(--space-2);
4926
+ max-width: 320px;
4927
+ padding: var(--space-4);
4928
+ text-align: center;
4929
+ }
4930
+
4931
+ .nb-form__file-upload-icon {
4932
+ align-items: center;
4933
+ background: color-mix(in srgb, var(--accent-color) 10%, transparent);
4934
+ border-radius: 999px;
4935
+ color: var(--accent-color);
4936
+ display: inline-flex;
4937
+ font-size: 24px;
4938
+ height: 48px;
4939
+ justify-content: center;
4940
+ width: 48px;
4941
+ }
4942
+
4943
+ .nb-form__file-upload-title {
4944
+ color: var(--text-primary);
4945
+ font-size: var(--font-size-sm);
4946
+ font-weight: var(--font-weight-semibold);
4947
+ }
4948
+
4949
+ .nb-form__file-upload-hint {
4950
+ color: var(--text-tertiary);
4951
+ font-size: var(--font-size-xs);
4952
+ line-height: var(--line-height-tight);
4953
+ }
4954
+
4955
+ .nb-form__file-upload-preview {
4956
+ display: block;
4957
+ height: 100%;
4958
+ max-height: 220px;
4959
+ object-fit: contain;
4960
+ width: 100%;
4961
+ }
4962
+
4963
+ .nb-form__file-upload-file {
4964
+ align-items: center;
4965
+ display: flex;
4966
+ gap: var(--space-3);
4967
+ max-width: 100%;
4968
+ padding: var(--space-3) var(--space-4);
4969
+ width: 100%;
4970
+ }
4971
+
4972
+ .nb-form__file-upload-file-icon {
4973
+ align-items: center;
4974
+ background: var(--surface-0);
4975
+ border: 1px solid var(--border-subtle);
4976
+ border-radius: var(--radius-md);
4977
+ color: var(--accent-color);
4978
+ display: inline-flex;
4979
+ flex: 0 0 auto;
4980
+ font-size: 22px;
4981
+ height: 44px;
4982
+ justify-content: center;
4983
+ width: 44px;
4984
+ }
4985
+
4986
+ .nb-form__file-upload-file-meta {
4987
+ display: flex;
4988
+ flex: 1 1 auto;
4989
+ flex-direction: column;
4990
+ gap: 2px;
4991
+ min-width: 0;
4992
+ }
4993
+
4994
+ .nb-form__file-upload-file-name {
4995
+ color: var(--text-primary);
4996
+ font-size: var(--font-size-sm);
4997
+ font-weight: var(--font-weight-medium);
4998
+ overflow: hidden;
4999
+ text-overflow: ellipsis;
5000
+ white-space: nowrap;
5001
+ }
5002
+
5003
+ .nb-form__file-upload-file-link {
5004
+ color: var(--accent-color);
5005
+ font-size: var(--font-size-xs);
5006
+ text-decoration: none;
5007
+ }
5008
+ .nb-form__file-upload-file-link:hover {
5009
+ text-decoration: underline;
5010
+ }
5011
+
5012
+ .nb-form__file-upload-overlay {
5013
+ align-items: center;
5014
+ background: rgba(0, 0, 0, 0.42);
5015
+ color: #fff;
5016
+ display: flex;
5017
+ flex-direction: column;
5018
+ font-size: var(--font-size-sm);
5019
+ gap: var(--space-2);
5020
+ inset: 0;
5021
+ justify-content: center;
5022
+ position: absolute;
5023
+ }
5024
+
5025
+ .nb-form__file-upload-spinner {
5026
+ animation: nb-form-file-spin 700ms linear infinite;
5027
+ border: 2px solid rgba(255, 255, 255, 0.35);
5028
+ border-radius: 999px;
5029
+ border-top-color: #fff;
5030
+ height: 24px;
5031
+ width: 24px;
5032
+ }
5033
+
5034
+ @keyframes nb-form-file-spin {
5035
+ to {
5036
+ transform: rotate(360deg);
5037
+ }
5038
+ }
5039
+ .nb-form__file-upload-actions {
5040
+ align-items: center;
5041
+ background: linear-gradient(to top, rgba(0, 0, 0, 0.58), transparent);
5042
+ bottom: 0;
5043
+ display: flex;
5044
+ gap: var(--space-2);
5045
+ inset-inline: 0;
5046
+ justify-content: center;
5047
+ opacity: 0;
5048
+ padding: var(--space-3);
5049
+ position: absolute;
5050
+ transition: opacity var(--transition-base);
5051
+ }
5052
+
5053
+ .nb-form__file-upload-zone--filled:hover .nb-form__file-upload-actions,
5054
+ .nb-form__file-upload-zone--filled:focus-within .nb-form__file-upload-actions {
5055
+ opacity: 1;
5056
+ }
5057
+
5058
+ .nb-form__file-upload-action {
5059
+ align-items: center;
5060
+ background: var(--surface-1);
5061
+ border: 1px solid var(--border-subtle);
5062
+ border-radius: var(--radius-md);
5063
+ color: var(--text-primary);
5064
+ cursor: pointer;
5065
+ display: inline-flex;
5066
+ font: inherit;
5067
+ font-size: var(--font-size-xs);
5068
+ font-weight: var(--font-weight-medium);
5069
+ gap: var(--space-1);
5070
+ min-height: 28px;
5071
+ padding: 0 var(--space-2);
5072
+ transition: background var(--transition-base), border-color var(--transition-base), color var(--transition-base);
5073
+ }
5074
+ .nb-form__file-upload-action:hover {
5075
+ border-color: var(--accent-color);
5076
+ color: var(--accent-color);
5077
+ }
5078
+ .nb-form__file-upload-action--danger:hover {
5079
+ border-color: var(--error-color);
5080
+ color: var(--error-color);
5081
+ }
5082
+ .nb-form__file-upload-action:focus-visible {
5083
+ box-shadow: 0 0 0 2px var(--focus-ring-color);
5084
+ outline: none;
5085
+ }
5086
+
4854
5087
  .nb-form__file-upload-error {
4855
5088
  align-items: center;
4856
5089
  color: var(--error-color);
@@ -5796,238 +6029,6 @@ html[data-density=compact] .nb-datagrid .nb-badge {
5796
6029
  .nb-form__field .nb-date-picker__trigger:focus-within {
5797
6030
  min-height: var(--control-height-form, 34px);
5798
6031
  }
5799
- .nb-form__file-upload {
5800
- display: flex;
5801
- flex-direction: column;
5802
- gap: var(--space-1);
5803
- width: 100%;
5804
- }
5805
-
5806
- .nb-form__file-upload-zone {
5807
- align-items: center;
5808
- background: var(--surface-1);
5809
- border: 1px dashed var(--border-color);
5810
- border-radius: var(--radius-lg);
5811
- box-sizing: border-box;
5812
- cursor: pointer;
5813
- display: flex;
5814
- justify-content: center;
5815
- min-height: 112px;
5816
- overflow: hidden;
5817
- position: relative;
5818
- transition: border-color var(--transition-base), background var(--transition-base), box-shadow var(--transition-base);
5819
- width: 100%;
5820
- }
5821
- .nb-form__file-upload-zone:hover:not(.nb-form__file-upload-zone--disabled):not(.nb-form__file-upload-zone--filled) {
5822
- background: color-mix(in srgb, var(--accent-color) 4%, var(--surface-1));
5823
- border-color: var(--accent-color);
5824
- }
5825
- .nb-form__file-upload-zone--active {
5826
- background: color-mix(in srgb, var(--accent-color) 8%, var(--surface-1));
5827
- border-color: var(--accent-color);
5828
- }
5829
- .nb-form__file-upload-zone--filled {
5830
- border-style: solid;
5831
- cursor: default;
5832
- min-height: 88px;
5833
- }
5834
- .nb-form__file-upload-zone--uploading {
5835
- pointer-events: none;
5836
- }
5837
- .nb-form__file-upload-zone--disabled {
5838
- cursor: not-allowed;
5839
- opacity: 0.72;
5840
- }
5841
- .nb-form__file-upload-zone:focus-visible {
5842
- box-shadow: 0 0 0 3px var(--focus-ring-color);
5843
- outline: none;
5844
- }
5845
-
5846
- .nb-form__file-upload--image .nb-form__file-upload-zone {
5847
- min-height: 168px;
5848
- }
5849
-
5850
- .nb-form__file-upload--image .nb-form__file-upload-zone--filled {
5851
- min-height: 180px;
5852
- }
5853
-
5854
- .nb-form__file-upload--invalid .nb-form__file-upload-zone {
5855
- border-color: var(--error-color);
5856
- }
5857
-
5858
- .nb-form__file-upload-placeholder {
5859
- align-items: center;
5860
- display: flex;
5861
- flex-direction: column;
5862
- gap: var(--space-2);
5863
- max-width: 320px;
5864
- padding: var(--space-4);
5865
- text-align: center;
5866
- }
5867
-
5868
- .nb-form__file-upload-icon {
5869
- align-items: center;
5870
- background: color-mix(in srgb, var(--accent-color) 10%, transparent);
5871
- border-radius: 999px;
5872
- color: var(--accent-color);
5873
- display: inline-flex;
5874
- font-size: 24px;
5875
- height: 48px;
5876
- justify-content: center;
5877
- width: 48px;
5878
- }
5879
-
5880
- .nb-form__file-upload-title {
5881
- color: var(--text-primary);
5882
- font-size: var(--font-size-sm);
5883
- font-weight: var(--font-weight-semibold);
5884
- }
5885
-
5886
- .nb-form__file-upload-hint {
5887
- color: var(--text-tertiary);
5888
- font-size: var(--font-size-xs);
5889
- line-height: var(--line-height-tight);
5890
- }
5891
-
5892
- .nb-form__file-upload-preview {
5893
- display: block;
5894
- height: 100%;
5895
- max-height: 220px;
5896
- object-fit: contain;
5897
- width: 100%;
5898
- }
5899
-
5900
- .nb-form__file-upload-file {
5901
- align-items: center;
5902
- display: flex;
5903
- gap: var(--space-3);
5904
- max-width: 100%;
5905
- padding: var(--space-3) var(--space-4);
5906
- width: 100%;
5907
- }
5908
-
5909
- .nb-form__file-upload-file-icon {
5910
- align-items: center;
5911
- background: var(--surface-0);
5912
- border: 1px solid var(--border-subtle);
5913
- border-radius: var(--radius-md);
5914
- color: var(--accent-color);
5915
- display: inline-flex;
5916
- flex: 0 0 auto;
5917
- font-size: 22px;
5918
- height: 44px;
5919
- justify-content: center;
5920
- width: 44px;
5921
- }
5922
-
5923
- .nb-form__file-upload-file-meta {
5924
- display: flex;
5925
- flex: 1 1 auto;
5926
- flex-direction: column;
5927
- gap: 2px;
5928
- min-width: 0;
5929
- }
5930
-
5931
- .nb-form__file-upload-file-name {
5932
- color: var(--text-primary);
5933
- font-size: var(--font-size-sm);
5934
- font-weight: var(--font-weight-medium);
5935
- overflow: hidden;
5936
- text-overflow: ellipsis;
5937
- white-space: nowrap;
5938
- }
5939
-
5940
- .nb-form__file-upload-file-link {
5941
- color: var(--accent-color);
5942
- font-size: var(--font-size-xs);
5943
- text-decoration: none;
5944
- }
5945
- .nb-form__file-upload-file-link:hover {
5946
- text-decoration: underline;
5947
- }
5948
-
5949
- .nb-form__file-upload-overlay {
5950
- align-items: center;
5951
- background: rgba(0, 0, 0, 0.42);
5952
- color: #fff;
5953
- display: flex;
5954
- flex-direction: column;
5955
- font-size: var(--font-size-sm);
5956
- gap: var(--space-2);
5957
- inset: 0;
5958
- justify-content: center;
5959
- position: absolute;
5960
- }
5961
-
5962
- .nb-form__file-upload-spinner {
5963
- animation: nb-form-file-spin 700ms linear infinite;
5964
- border: 2px solid rgba(255, 255, 255, 0.35);
5965
- border-radius: 999px;
5966
- border-top-color: #fff;
5967
- height: 24px;
5968
- width: 24px;
5969
- }
5970
-
5971
- @keyframes nb-form-file-spin {
5972
- to {
5973
- transform: rotate(360deg);
5974
- }
5975
- }
5976
- .nb-form__file-upload-actions {
5977
- align-items: center;
5978
- background: linear-gradient(to top, rgba(0, 0, 0, 0.58), transparent);
5979
- bottom: 0;
5980
- display: flex;
5981
- gap: var(--space-2);
5982
- inset-inline: 0;
5983
- justify-content: center;
5984
- opacity: 0;
5985
- padding: var(--space-3);
5986
- position: absolute;
5987
- transition: opacity var(--transition-base);
5988
- }
5989
-
5990
- .nb-form__file-upload-zone--filled:hover .nb-form__file-upload-actions,
5991
- .nb-form__file-upload-zone--filled:focus-within .nb-form__file-upload-actions {
5992
- opacity: 1;
5993
- }
5994
-
5995
- .nb-form__file-upload-action {
5996
- align-items: center;
5997
- background: var(--surface-1);
5998
- border: 1px solid var(--border-subtle);
5999
- border-radius: var(--radius-md);
6000
- color: var(--text-primary);
6001
- cursor: pointer;
6002
- display: inline-flex;
6003
- font: inherit;
6004
- font-size: var(--font-size-xs);
6005
- font-weight: var(--font-weight-medium);
6006
- gap: var(--space-1);
6007
- min-height: 28px;
6008
- padding: 0 var(--space-2);
6009
- transition: background var(--transition-base), border-color var(--transition-base), color var(--transition-base);
6010
- }
6011
- .nb-form__file-upload-action:hover {
6012
- border-color: var(--accent-color);
6013
- color: var(--accent-color);
6014
- }
6015
- .nb-form__file-upload-action--danger:hover {
6016
- border-color: var(--error-color);
6017
- color: var(--error-color);
6018
- }
6019
- .nb-form__file-upload-action:focus-visible {
6020
- box-shadow: 0 0 0 2px var(--focus-ring-color);
6021
- outline: none;
6022
- }
6023
-
6024
- .nb-form__file-upload-error {
6025
- align-items: center;
6026
- color: var(--error-color);
6027
- display: inline-flex;
6028
- font-size: var(--font-size-xs);
6029
- gap: var(--space-1);
6030
- }
6031
6032
  .nb-crud-dialog-root {
6032
6033
  z-index: 2500;
6033
6034
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nubitio/react-admin",
3
- "version": "0.5.10",
3
+ "version": "0.5.13",
4
4
  "type": "module",
5
5
  "description": "Batteries-included admin stack: core runtime, CRUD, Hydra adapter, and AdminShell.",
6
6
  "license": "MIT",
@@ -50,11 +50,11 @@
50
50
  "access": "public"
51
51
  },
52
52
  "dependencies": {
53
- "@nubitio/admin": "^0.5.10",
54
- "@nubitio/hydra": "^0.5.10",
55
- "@nubitio/core": "^0.5.10",
56
- "@nubitio/crud": "^0.5.10",
57
- "@nubitio/ui": "^0.5.10"
53
+ "@nubitio/admin": "^0.5.13",
54
+ "@nubitio/hydra": "^0.5.13",
55
+ "@nubitio/core": "^0.5.13",
56
+ "@nubitio/crud": "^0.5.13",
57
+ "@nubitio/ui": "^0.5.13"
58
58
  },
59
59
  "peerDependencies": {
60
60
  "@tanstack/react-query": "^5.0.0",