@praxisui/core 10.0.0-rc.4 → 10.0.0-rc.6

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@praxisui/core",
3
- "version": "10.0.0-rc.4",
3
+ "version": "10.0.0-rc.6",
4
4
  "description": "Core library for Praxis UI Workspace: types, tokens, services and utilities shared across @praxisui/* packages.",
5
5
  "peerDependencies": {
6
6
  "@angular/cdk": "^21.0.0",
@@ -32,6 +32,10 @@
32
32
  "types": "./types/praxisui-core.d.ts",
33
33
  "default": "./fesm2022/praxisui-core.mjs"
34
34
  },
35
+ "./schema": {
36
+ "types": "./types/praxisui-core-schema.d.ts",
37
+ "default": "./fesm2022/praxisui-core-schema.mjs"
38
+ },
35
39
  "./ai/component-registry.json": {
36
40
  "default": "./ai/component-registry.json"
37
41
  }
@@ -150,6 +150,14 @@
150
150
  --mat-tooltip-supporting-text-line-height: 16px;
151
151
  --mat-tooltip-supporting-text-tracking: 0.01em;
152
152
 
153
+ // 1.2 Angular Material M3 Menu Tokens Bridge (--mat-menu-*)
154
+ --mat-menu-container-color: var(--card, var(--surface, #{$surface}));
155
+ --mat-menu-container-shape: var(--radius-md, var(--radius-lg, 14px));
156
+ --mat-menu-item-label-text-color: #{$foreground};
157
+ --mat-menu-item-icon-color: #{$muted-foreground};
158
+ --mat-menu-item-hover-state-layer-color: color-mix(in oklab, #{$primary} 12%, transparent);
159
+ --mat-menu-item-focus-state-layer-color: color-mix(in oklab, #{$primary} 18%, transparent);
160
+
153
161
  // 2. Praxis Core Bridge Tokens (--pdx-material-*, --pdx-overlay-*)
154
162
  --pdx-material-surface: #{$surface};
155
163
  --pdx-material-surface-high: #{$surface-container};
@@ -306,6 +314,14 @@
306
314
  --mat-tooltip-container-color: var(--mat-sys-inverse-surface);
307
315
  --mat-tooltip-supporting-text-color: var(--mat-sys-inverse-on-surface);
308
316
 
317
+ // 1.2 Dark Mode: Angular Material M3 Menu Tokens Bridge
318
+ --mat-menu-container-color: var(--card, var(--surface, #{$surface}));
319
+ --mat-menu-container-shape: var(--radius-md, var(--radius-lg, 14px));
320
+ --mat-menu-item-label-text-color: #{$foreground};
321
+ --mat-menu-item-icon-color: #{$muted-foreground};
322
+ --mat-menu-item-hover-state-layer-color: color-mix(in oklab, #{$primary} 18%, transparent);
323
+ --mat-menu-item-focus-state-layer-color: color-mix(in oklab, #{$primary} 24%, transparent);
324
+
309
325
  // 2. Dark Mode: Praxis Core Bridge Tokens
310
326
  --pdx-material-surface: #{$surface};
311
327
  --pdx-material-surface-high: #{$surface-high};
@@ -445,8 +461,69 @@
445
461
  }
446
462
  }
447
463
 
464
+ /// Emits refined surface styling, command shadow, backdrop filter,
465
+ /// and state layer hover animations for Angular Material Menus.
466
+ @mixin praxis-menu-styles() {
467
+ .mat-mdc-menu-panel {
468
+ border-radius: var(--radius-md, 14px) !important;
469
+ background: color-mix(in oklab, var(--mat-menu-container-color, var(--card, var(--surface, #ffffff))) 92%, var(--background, #f2f6f5)) !important;
470
+ border: 1px solid var(--border, var(--md-sys-color-outline-variant, rgba(0, 0, 0, 0.12))) !important;
471
+ box-shadow: var(--shadow-command, var(--md-sys-elevation-level3, 0 4px 12px rgba(0, 0, 0, 0.18))), 0 12px 32px rgba(0, 0, 0, 0.18) !important;
472
+ backdrop-filter: blur(18px) saturate(140%) !important;
473
+ -webkit-backdrop-filter: blur(18px) saturate(140%) !important;
474
+ padding: 6px !important;
475
+ overflow: hidden !important;
476
+ }
477
+
478
+ .mat-mdc-menu-item {
479
+ min-height: 40px !important;
480
+ border-radius: var(--radius-sm, 10px) !important;
481
+ margin: 2px 0 !important;
482
+ padding: 0 14px !important;
483
+ font-family: var(--font-sans, inherit) !important;
484
+ font-size: 0.85rem !important;
485
+ font-weight: 500 !important;
486
+ color: var(--mat-menu-item-label-text-color, var(--foreground, inherit)) !important;
487
+ transition: background-color 0.15s ease, color 0.15s ease, transform 0.15s ease !important;
488
+
489
+ .mat-icon {
490
+ margin-right: 12px !important;
491
+ color: var(--mat-menu-item-icon-color, var(--muted-foreground, inherit)) !important;
492
+ font-size: 20px !important;
493
+ width: 20px !important;
494
+ height: 20px !important;
495
+ transition: color 0.15s ease, transform 0.15s ease !important;
496
+ }
497
+
498
+ &:hover:not([disabled]) {
499
+ background-color: var(--mat-menu-item-hover-state-layer-color, color-mix(in oklab, var(--primary) 12%, transparent)) !important;
500
+ color: var(--foreground, inherit) !important;
501
+ transform: translateX(3px);
502
+
503
+ .mat-icon {
504
+ color: var(--primary, var(--md-sys-color-primary)) !important;
505
+ transform: scale(1.08);
506
+ }
507
+ }
508
+
509
+ &:focus-visible:not([disabled]),
510
+ &.cdk-program-focused:not([disabled]) {
511
+ background-color: var(--mat-menu-item-focus-state-layer-color, color-mix(in oklab, var(--primary) 18%, transparent)) !important;
512
+ outline: 2px solid var(--primary, var(--md-sys-color-primary)) !important;
513
+ outline-offset: -2px;
514
+ }
515
+
516
+ &[disabled] {
517
+ opacity: 0.42 !important;
518
+ cursor: not-allowed !important;
519
+ pointer-events: none !important;
520
+ transform: none !important;
521
+ }
522
+ }
523
+ }
524
+
448
525
  /// Convenience mixin that bundles all theme definitions, dark mode overrides,
449
- /// widget shell rules, and tooltip enhancements.
526
+ /// widget shell rules, tooltip enhancements, and menu state layer styles.
450
527
  ///
451
528
  /// @param {Map} $config Optional overrides for root theme tokens.
452
529
  /// @param {Map} $dark-config Optional overrides for dark theme tokens.
@@ -462,4 +539,5 @@
462
539
 
463
540
  @include praxis-shell-styles();
464
541
  @include praxis-tooltip-styles();
542
+ @include praxis-menu-styles();
465
543
  }