@nice2dev/ui-core 1.0.28 → 1.0.29

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 CHANGED
@@ -1,5 +1,19 @@
1
1
  # @nice2dev/ui-core — Changelog
2
2
 
3
+ ## 1.0.29
4
+
5
+ ### Patch Changes
6
+
7
+ - Library-wide consistency pass + showcase overhaul.
8
+ - **Universal app shell:** every genuine multi-panel editor/studio/designer/builder/workspace standardized onto `NiceAppShell` (slots + `flush`), incl. `NiceTeamsWorkspace` and `NiceAPIDesigner`. No public API changes — internal layout only.
9
+ - **Icons:** foreign icons (emoji, raw unicode glyphs, inline `<svg>`, FontAwesome) replaced with `@nice2dev/icons` / `NiceIcon` built-ins across the packages; ~110 built-in icon paths added to `NiceIcon`.
10
+ - **Control sizing:** every basic control now honours the full `xs · sm · md · lg · xl` size scale with working CSS — fixed `NiceCard`, `NiceAlert`, `NiceSkeleton`, `NiceDivider`, `NiceSearchInput`, `NiceCallout`, `NiceStatistic`, `NiceSegmentedControl`, `NiceCheckbox`, `NiceParagraph`, and a `NiceSpinner` CSS-shadow regression (`md` baseline unchanged). `NiceNumericInput` gained a `size` prop.
11
+ - **NiceKioskShell:** the `style` prop now overrides the default full-screen `position: fixed` (so it can be embedded contained).
12
+ - **Input devices + spatial navigation:** `NiceGamepad` / `NiceMicrophone` / `NiceDeviceManager` / `NiceDeviceTile` and `NavShell` spatial-navigation support.
13
+ - **Audio:** AudioVerse → `@nice2dev/ui-audio` parity (15 controls; optional `recharts` visualizers).
14
+ - **Display atoms + forms:** standardized atoms (`NiceBadge`/`NiceTag`/`NiceAvatarGroup`/`NiceProgress`/…), removed the deprecated `NiceStatusBadge` (migrated to `NiceBadge` variants), entity validation builder, selectable `NiceCard`.
15
+ - **Editors inside satellites** (`ui-ai`/`ui-api`/`ui-bi`/`ui-math`/`ui-video`/`ui-audio`/`events`) now declare `@nice2dev/ui` (and where used `@nice2dev/icons` / `@nice2dev/ui-core`) as peer dependencies.
16
+
3
17
  All notable changes to the cross-framework core package.
4
18
 
5
19
  ## [0.2.0] — 2026-03-25
@@ -9,14 +23,17 @@ All notable changes to the cross-framework core package.
9
23
  Framework-agnostic TypeScript contracts, state machines, validation utilities, and behavior logic for all major UI component categories. These are consumed by Angular/Vue/Web Component/Blazor adapters.
10
24
 
11
25
  #### Shared
26
+
12
27
  - `ComponentBaseProps`, `ComponentEvent`, `createComponentEvent`
13
28
  - Types: `ComponentSize`, `ComponentVariant`, `ComponentDensity`, `Orientation`, `Placement`, `Alignment`
14
29
 
15
30
  #### Buttons
31
+
16
32
  - Contracts: `ButtonProps`, `ButtonGroupProps`, `DropDownButtonProps`, `IconButtonProps`, `SpeedDialProps`
17
33
  - Types: `ButtonType`, `ButtonStyle`, `DropDownItem`, `SpeedDialAction`
18
34
 
19
35
  #### Form Controls
36
+
20
37
  - `FormFieldProps`, `ValidationRule`, `ValidationResult` + `validateField()` (pure validation, no framework deps)
21
38
  - `TextInputProps` (type, mask, prefix/suffix, maxLength)
22
39
  - `NumberInputProps` + `clampNumber()` (min/max/precision clamping)
@@ -26,30 +43,37 @@ Framework-agnostic TypeScript contracts, state machines, validation utilities, a
26
43
  - `TextAreaProps`, `AutocompleteProps`, `ColorPickerProps`, `FileUploadProps`
27
44
 
28
45
  #### Data Display
46
+
29
47
  - `DataGridProps`, `ColumnDef`, `SortState`, `FilterState` + `multiSort()`, `applyFilters()`, `paginate()`
30
48
  - `BadgeProps`, `ProgressProps`, `AvatarProps` + `getInitials()`
31
49
 
32
50
  #### Navigation
51
+
33
52
  - `TabsProps`, `TabItem` + `createTabsState()` (state machine with getActive/setActive/getNext/getPrev)
34
53
  - `BreadcrumbProps`, `BreadcrumbItem` + `collapseBreadcrumb()` (keeps first + last N items)
35
54
  - `AccordionProps`, `AccordionItem` + `toggleAccordion()` (single/multiple mode logic)
36
55
  - `MenuProps`, `MenuItem`, `DrawerProps`
37
56
 
38
57
  #### Overlays & Feedback
58
+
39
59
  - `ModalProps`, `AlertProps`, `ToastConfig` + `ToastManager` class (queue, subscribe, dismiss, auto-expire)
40
60
  - `PopoverProps`, `TooltipProps`
41
61
 
42
62
  #### Charts
63
+
43
64
  - `ChartProps`, `ChartSeries`, `ChartAxis`, `ChartLegend` (17 chart types)
44
65
 
45
66
  #### Planning
67
+
46
68
  - `SchedulerProps`, `SchedulerEvent`, `SchedulerResource` (day/week/month/timeline/agenda views)
47
69
  - `GanttProps`, `GanttTask` (with dependencies, milestones, progress)
48
70
 
49
71
  #### Tree View
72
+
50
73
  - `TreeViewProps`, `TreeNode` + `flattenTree()` (for virtual scrolling), `searchTree()` (match with paths)
51
74
 
52
75
  #### Layout
76
+
53
77
  - `SplitterProps`, `SplitterPane` + `calculatePaneSizes()` (constrained resize logic)
54
78
 
55
79
  ---
@@ -40,6 +40,6 @@ export declare const NiceIcon: React.FC<NiceIconProps>;
40
40
  export declare function useNiceIcon(): {
41
41
  renderIcon: (icon: React.ReactNode | string | undefined, size?: NiceIconSize | number) => React.ReactNode;
42
42
  };
43
- /** Array of all 78 built-in icon names available without a custom resolver. */
43
+ /** Array of all built-in icon names available without a custom resolver. */
44
44
  export declare const NICE_BUILTIN_ICONS: string[];
45
45
  //# sourceMappingURL=icons.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../src/core/icons.tsx"],"names":[],"mappings":"AACA,OAAO,KAAiD,MAAM,OAAO,CAAC;AA2FtE,yFAAyF;AACzF,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAU5D,gDAAgD;AAChD,MAAM,WAAW,aAAa;IAC5B,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,YAAY,GAAG,MAAM,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;CACzC;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;AAW3F,8CAA8C;AAC9C,MAAM,WAAW,qBAAqB;IACpC,8DAA8D;IAC9D,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAE5D,CAAC;AAiDF;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CA0C5C,CAAC;AAKF;;;GAGG;AACH,wBAAgB,WAAW;uBAKf,KAAK,CAAC,SAAS,GAAG,MAAM,GAAG,SAAS,SACpC,YAAY,GAAG,MAAM,KAC1B,KAAK,CAAC,SAAS;EAarB;AAED,+EAA+E;AAC/E,eAAO,MAAM,kBAAkB,UAA6B,CAAC"}
1
+ {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../src/core/icons.tsx"],"names":[],"mappings":"AACA,OAAO,KAAiD,MAAM,OAAO,CAAC;AAqNtE,yFAAyF;AACzF,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAU5D,gDAAgD;AAChD,MAAM,WAAW,aAAa;IAC5B,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,YAAY,GAAG,MAAM,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;CACzC;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;AAW3F,8CAA8C;AAC9C,MAAM,WAAW,qBAAqB;IACpC,8DAA8D;IAC9D,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAE5D,CAAC;AAiDF;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CA0C5C,CAAC;AAKF;;;GAGG;AACH,wBAAgB,WAAW;uBAKf,KAAK,CAAC,SAAS,GAAG,MAAM,GAAG,SAAS,SACpC,YAAY,GAAG,MAAM,KAC1B,KAAK,CAAC,SAAS;EAarB;AAED,4EAA4E;AAC5E,eAAO,MAAM,kBAAkB,UAA6B,CAAC"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Spatial navigation — controller + arrow-key directional focus for UI controls.
3
+ *
4
+ * Headless mechanism (lives in ui-core so any package can use it): a provider
5
+ * tracks registered focusable elements and moves focus by direction using a
6
+ * dot-product gate + nearest-by-distance heuristic. Inputs: keyboard arrows
7
+ * (+ Enter to activate, Escape to dismiss a focus trap) and a gamepad d-pad /
8
+ * left-stick (A = activate, B = dismiss trap) via {@link useGamepad}.
9
+ *
10
+ * Wrap a subtree in `NiceSpatialNavProvider`; register controls with
11
+ * `useSpatialFocusable(ref, { id })` or the `<NiceFocusable>` wrapper.
12
+ */
13
+ import React from 'react';
14
+ import type { NiceBaseProps } from './types';
15
+ export interface SpatialFocusableMeta {
16
+ id: string;
17
+ ref: React.RefObject<HTMLElement | null>;
18
+ onActivate?: () => void;
19
+ disabled?: boolean;
20
+ }
21
+ export interface NiceSpatialNavContextValue {
22
+ register: (meta: SpatialFocusableMeta) => void;
23
+ unregister: (id: string) => void;
24
+ /** Move focus in a direction (dx,dy ∈ {-1,0,1}). */
25
+ moveFocus: (dx: number, dy: number) => void;
26
+ /** Activate the active (or given) focusable. */
27
+ activate: (id?: string) => void;
28
+ setActive: (id: string) => void;
29
+ activeId: string | null;
30
+ focusables: SpatialFocusableMeta[];
31
+ /** Constrain navigation to ids starting with `prefix` (modal/menu scope). */
32
+ pushFocusTrap: (prefix: string, onDismiss?: () => void) => void;
33
+ popFocusTrap: () => void;
34
+ /** Ref-counted lock that suspends navigation (e.g. while a slider is open). */
35
+ pauseNavigation: () => void;
36
+ resumeNavigation: () => void;
37
+ }
38
+ export interface NiceSpatialNavProviderProps extends NiceBaseProps {
39
+ /** Handle keyboard arrow keys (default true). */
40
+ keyboard?: boolean;
41
+ /** Poll a gamepad for navigation (default true). */
42
+ gamepad?: boolean;
43
+ /** Gamepad index forwarded to useGamepad (default 0). */
44
+ gamepadIndex?: number;
45
+ children: React.ReactNode;
46
+ }
47
+ export declare const NiceSpatialNavProvider: React.FC<NiceSpatialNavProviderProps>;
48
+ /** Access the spatial-nav context. Returns `null` outside a provider. */
49
+ export declare function useSpatialNavOptional(): NiceSpatialNavContextValue | null;
50
+ /** Access the spatial-nav context. Throws outside a provider. */
51
+ export declare function useSpatialNav(): NiceSpatialNavContextValue;
52
+ export interface UseSpatialFocusableOptions {
53
+ id: string;
54
+ onActivate?: () => void;
55
+ disabled?: boolean;
56
+ }
57
+ /**
58
+ * Register `ref`'s element as a spatial-nav focusable. No-op (returns
59
+ * `{ active: false }`) when used outside a provider. Sets `data-active` on the
60
+ * element while it is the active focusable.
61
+ */
62
+ export declare function useSpatialFocusable(ref: React.RefObject<HTMLElement | null>, opts: UseSpatialFocusableOptions): {
63
+ active: boolean;
64
+ };
65
+ export interface NiceFocusableProps extends NiceBaseProps {
66
+ /** Unique id within the provider (prefix it to scope to a focus trap). */
67
+ focusId: string;
68
+ onActivate?: () => void;
69
+ disabled?: boolean;
70
+ as?: React.ElementType;
71
+ children: React.ReactNode;
72
+ }
73
+ /** Thin wrapper that registers its element with the spatial-nav provider. */
74
+ export declare const NiceFocusable: React.FC<NiceFocusableProps>;
75
+ //# sourceMappingURL=spatialNav.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spatialNav.d.ts","sourceRoot":"","sources":["../../src/core/spatialNav.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAQN,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAK7C,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACzC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC/C,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,oDAAoD;IACpD,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,gDAAgD;IAChD,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,oBAAoB,EAAE,CAAC;IACnC,6EAA6E;IAC7E,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IAChE,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,+EAA+E;IAC/E,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAC9B;AAID,MAAM,WAAW,2BAA4B,SAAQ,aAAa;IAChE,iDAAiD;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oDAAoD;IACpD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAiBD,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,2BAA2B,CA+QxE,CAAC;AAIF,yEAAyE;AACzE,wBAAgB,qBAAqB,IAAI,0BAA0B,GAAG,IAAI,CAEzE;AAED,iEAAiE;AACjE,wBAAgB,aAAa,IAAI,0BAA0B,CAM1D;AAED,MAAM,WAAW,0BAA0B;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EACxC,IAAI,EAAE,0BAA0B,GAC/B;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,CA8CrB;AAID,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,EAAE,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,6EAA6E;AAC7E,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAwBtD,CAAC"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * useGamepad — headless hook for gamepad/controller support.
3
+ *
4
+ * Supports Xbox, PlayStation and generic controllers via the standard Gamepad
5
+ * API: button mapping, axis input with deadzone, rumble, action binding and
6
+ * rising/falling button-edge callbacks. This is the canonical, dependency-free
7
+ * implementation; `@nice2dev/ui-graphics` and `@nice2dev/game-engine` re-export
8
+ * it (and add their own game-specific UI on top).
9
+ */
10
+ export type GamepadButton = 'A' | 'B' | 'X' | 'Y' | 'LB' | 'RB' | 'LT' | 'RT' | 'Back' | 'Start' | 'LS' | 'RS' | 'DpadUp' | 'DpadDown' | 'DpadLeft' | 'DpadRight' | 'Home';
11
+ export type GamepadAxis = 'LeftX' | 'LeftY' | 'RightX' | 'RightY';
12
+ export interface GamepadState {
13
+ connected: boolean;
14
+ id: string;
15
+ buttons: Record<GamepadButton, boolean>;
16
+ axes: Record<GamepadAxis, number>;
17
+ /** Trigger pressure (0-1). */
18
+ leftTrigger: number;
19
+ rightTrigger: number;
20
+ /** Trigger rumble on the underlying device (no-op if unsupported). */
21
+ vibrate: (duration: number, weakMagnitude?: number, strongMagnitude?: number) => void;
22
+ }
23
+ export interface GamepadAction {
24
+ button?: GamepadButton;
25
+ buttons?: GamepadButton[];
26
+ axis?: GamepadAxis;
27
+ axisDirection?: 'positive' | 'negative';
28
+ trigger?: 'LT' | 'RT';
29
+ onPress?: () => void;
30
+ onRelease?: () => void;
31
+ onHold?: () => void;
32
+ onAxisChange?: (value: number) => void;
33
+ repeatDelay?: number;
34
+ repeatRate?: number;
35
+ }
36
+ export interface UseGamepadOptions {
37
+ /** Gamepad index to use (default: 0). */
38
+ index?: number;
39
+ /** Deadzone for analog sticks (default: 0.15). */
40
+ deadzone?: number;
41
+ /** Polling rate in ms (default: 16 = ~60fps). */
42
+ pollRate?: number;
43
+ /** Action bindings. */
44
+ actions?: Record<string, GamepadAction>;
45
+ /** Enable/disable (default: true). */
46
+ enabled?: boolean;
47
+ /** Fired on the rising edge of any button (for live highlighting). */
48
+ onButtonDown?: (button: GamepadButton) => void;
49
+ /** Fired on the falling edge of any button. */
50
+ onButtonUp?: (button: GamepadButton) => void;
51
+ }
52
+ /** PlayStation button-name aliases → canonical (Xbox) button names. */
53
+ export declare const PS_BUTTON_ALIASES: Record<string, GamepadButton>;
54
+ /** All gamepad button names, in Gamepad-API index order. */
55
+ export declare const GAMEPAD_BUTTONS: GamepadButton[];
56
+ export declare function useGamepad(options?: UseGamepadOptions): GamepadState;
57
+ export interface NavigationActions {
58
+ onNavigateUp?: () => void;
59
+ onNavigateDown?: () => void;
60
+ onNavigateLeft?: () => void;
61
+ onNavigateRight?: () => void;
62
+ onConfirm?: () => void;
63
+ onCancel?: () => void;
64
+ onTabNext?: () => void;
65
+ onTabPrev?: () => void;
66
+ onMenu?: () => void;
67
+ }
68
+ /** Create a standard UI-navigation action map for {@link useGamepad}. */
69
+ export declare function createNavigationActions(handlers: NavigationActions): Record<string, GamepadAction>;
70
+ //# sourceMappingURL=useGamepad.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGamepad.d.ts","sourceRoot":"","sources":["../../src/core/useGamepad.ts"],"names":[],"mappings":"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"}