@almadar/ui 5.123.0 → 5.125.0

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.
Files changed (63) hide show
  1. package/dist/{TraitProvider-YkK6tXDw.d.cts → TraitProvider-Ch79cUcb.d.cts} +6 -1
  2. package/dist/{TraitProvider-YkK6tXDw.d.ts → TraitProvider-Ch79cUcb.d.ts} +6 -1
  3. package/dist/{UserContext-bziZwgFL.d.cts → UserContext-BKckAUv7.d.cts} +5 -5
  4. package/dist/{UserContext-bziZwgFL.d.ts → UserContext-BKckAUv7.d.ts} +5 -5
  5. package/dist/avl/index.cjs +332 -275
  6. package/dist/avl/index.js +334 -277
  7. package/dist/components/index.cjs +284 -248
  8. package/dist/components/index.d.cts +4 -3
  9. package/dist/components/index.d.ts +4 -3
  10. package/dist/components/index.js +284 -248
  11. package/dist/context/index.cjs +25 -66
  12. package/dist/context/index.d.cts +1 -1
  13. package/dist/context/index.d.ts +1 -1
  14. package/dist/context/index.js +25 -66
  15. package/dist/{offline-executor-aRuNznZx.d.cts → offline-executor-Qz4b6GpF.d.cts} +19 -1
  16. package/dist/{offline-executor-aRuNznZx.d.ts → offline-executor-Qz4b6GpF.d.ts} +19 -1
  17. package/dist/providers/index.cjs +395 -275
  18. package/dist/providers/index.d.cts +6 -6
  19. package/dist/providers/index.d.ts +6 -6
  20. package/dist/providers/index.js +394 -276
  21. package/dist/renderer/index.cjs +8 -0
  22. package/dist/renderer/index.d.cts +2 -2
  23. package/dist/renderer/index.d.ts +2 -2
  24. package/dist/renderer/index.js +1 -1
  25. package/dist/runtime/index.cjs +325 -268
  26. package/dist/runtime/index.d.cts +4 -2
  27. package/dist/runtime/index.d.ts +4 -2
  28. package/dist/runtime/index.js +327 -270
  29. package/package.json +13 -11
  30. package/themes/_contract.md +2 -0
  31. package/themes/almadar-website.css +3 -3
  32. package/themes/almadar.css +4 -4
  33. package/themes/bloomberg-dense.css +2 -2
  34. package/themes/clay.css +417 -0
  35. package/themes/corporate.css +411 -0
  36. package/themes/game-adventure.css +3 -3
  37. package/themes/game-rpg.css +2 -2
  38. package/themes/game-sci-fi.css +1 -1
  39. package/themes/game-ui-pack.css +2 -2
  40. package/themes/gazette.css +2 -2
  41. package/themes/glass.css +428 -0
  42. package/themes/index.css +9 -13
  43. package/themes/kiosk.css +5 -5
  44. package/themes/linear-clean.css +1 -1
  45. package/themes/minimalist.css +2 -2
  46. package/themes/neon.css +3 -3
  47. package/themes/notion-editorial.css +1 -1
  48. package/themes/prism.css +3 -3
  49. package/themes/retro.css +410 -0
  50. package/themes/terminal.css +1 -1
  51. package/themes/trait-wars.css +8 -8
  52. package/themes/wireframe.css +2 -2
  53. package/themes/arctic.css +0 -235
  54. package/themes/copper.css +0 -235
  55. package/themes/ember.css +0 -238
  56. package/themes/forest.css +0 -238
  57. package/themes/lavender.css +0 -233
  58. package/themes/midnight.css +0 -234
  59. package/themes/ocean.css +0 -238
  60. package/themes/rose.css +0 -233
  61. package/themes/sand.css +0 -234
  62. package/themes/slate.css +0 -233
  63. package/themes/sunset.css +0 -238
@@ -430,78 +430,12 @@ var BUILT_IN_THEMES = [
430
430
  hasDarkMode: true
431
431
  },
432
432
  // Extended themes
433
- {
434
- name: "ocean",
435
- displayName: "Ocean",
436
- hasLightMode: true,
437
- hasDarkMode: true
438
- },
439
- {
440
- name: "forest",
441
- displayName: "Forest",
442
- hasLightMode: true,
443
- hasDarkMode: true
444
- },
445
- {
446
- name: "sunset",
447
- displayName: "Sunset",
448
- hasLightMode: true,
449
- hasDarkMode: true
450
- },
451
- {
452
- name: "lavender",
453
- displayName: "Lavender",
454
- hasLightMode: true,
455
- hasDarkMode: true
456
- },
457
- {
458
- name: "rose",
459
- displayName: "Rose",
460
- hasLightMode: true,
461
- hasDarkMode: true
462
- },
463
- {
464
- name: "slate",
465
- displayName: "Slate",
466
- hasLightMode: true,
467
- hasDarkMode: true
468
- },
469
- {
470
- name: "ember",
471
- displayName: "Ember",
472
- hasLightMode: true,
473
- hasDarkMode: true
474
- },
475
- {
476
- name: "midnight",
477
- displayName: "Midnight",
478
- hasLightMode: true,
479
- hasDarkMode: true
480
- },
481
- {
482
- name: "sand",
483
- displayName: "Sand",
484
- hasLightMode: true,
485
- hasDarkMode: true
486
- },
487
433
  {
488
434
  name: "neon",
489
435
  displayName: "Neon",
490
436
  hasLightMode: true,
491
437
  hasDarkMode: true
492
438
  },
493
- {
494
- name: "arctic",
495
- displayName: "Arctic",
496
- hasLightMode: true,
497
- hasDarkMode: true
498
- },
499
- {
500
- name: "copper",
501
- displayName: "Copper",
502
- hasLightMode: true,
503
- hasDarkMode: true
504
- },
505
439
  // Layer 1 skin axes — truly-unique themes (compact tech / editorial / brutalist dense / display-heavy / touch-first)
506
440
  {
507
441
  name: "prism",
@@ -550,6 +484,31 @@ var BUILT_IN_THEMES = [
550
484
  displayName: "Bloomberg Dense",
551
485
  hasLightMode: true,
552
486
  hasDarkMode: true
487
+ },
488
+ // Personality themes — high-demand web styles (glassmorphism / claymorphism / retro / enterprise)
489
+ {
490
+ name: "glass",
491
+ displayName: "Glass",
492
+ hasLightMode: true,
493
+ hasDarkMode: true
494
+ },
495
+ {
496
+ name: "clay",
497
+ displayName: "Clay",
498
+ hasLightMode: true,
499
+ hasDarkMode: true
500
+ },
501
+ {
502
+ name: "retro",
503
+ displayName: "Retro",
504
+ hasLightMode: true,
505
+ hasDarkMode: true
506
+ },
507
+ {
508
+ name: "corporate",
509
+ displayName: "Corporate",
510
+ hasLightMode: true,
511
+ hasDarkMode: true
553
512
  }
554
513
  ];
555
514
  var ThemeContext = react.createContext(void 0);
@@ -1,5 +1,5 @@
1
1
  export { U as UISlotContext, a as UISlotProvider, u as useSlotContent, b as useSlotHasContent, c as useUISlots } from '../UISlotContext-D8_SoDsD.cjs';
2
- export { A as ANONYMOUS_USER, B as BUILT_IN_THEMES, C as ColorMode, a as CurrentPagePathContext, b as CurrentPagePathProvider, c as CurrentPagePathProviderProps, D as DesignTheme, d as DesignThemeProvider, O as OrbitalThemeProvider, e as OrbitalThemeProviderProps, R as ResolvedMode, T as ThemeContext, f as ThemeProvider, g as ThemeProviderProps, U as UIThemeDefinition, h as UserContext, i as UserContextValue, j as UserData, k as UserProvider, l as UserProviderProps, u as useCurrentPagePath, m as useDesignTheme, n as useHasPermission, o as useHasRole, p as useTheme, q as useUser, r as useUserForEvaluation } from '../UserContext-bziZwgFL.cjs';
2
+ export { A as ANONYMOUS_USER, B as BUILT_IN_THEMES, C as ColorMode, a as CurrentPagePathContext, b as CurrentPagePathProvider, c as CurrentPagePathProviderProps, D as DesignTheme, d as DesignThemeProvider, O as OrbitalThemeProvider, e as OrbitalThemeProviderProps, R as ResolvedMode, T as ThemeContext, f as ThemeProvider, g as ThemeProviderProps, U as UIThemeDefinition, h as UserContext, i as UserContextValue, j as UserData, k as UserProvider, l as UserProviderProps, u as useCurrentPagePath, m as useDesignTheme, n as useHasPermission, o as useHasRole, p as useTheme, q as useUser, r as useUserForEvaluation } from '../UserContext-BKckAUv7.cjs';
3
3
  import { ThemeRef, ThemeDefinition, ThemeTokens, ThemeVariant } from '@almadar/core';
4
4
  export { UISlot } from '@almadar/core';
5
5
  export { S as SlotAnimation, a as SlotChangeCallback, b as SlotContent, c as SlotRenderConfig, U as UISlotManager } from '../useUISlots-BesZYMks.cjs';
@@ -1,5 +1,5 @@
1
1
  export { U as UISlotContext, a as UISlotProvider, u as useSlotContent, b as useSlotHasContent, c as useUISlots } from '../UISlotContext-C1FsU9GB.js';
2
- export { A as ANONYMOUS_USER, B as BUILT_IN_THEMES, C as ColorMode, a as CurrentPagePathContext, b as CurrentPagePathProvider, c as CurrentPagePathProviderProps, D as DesignTheme, d as DesignThemeProvider, O as OrbitalThemeProvider, e as OrbitalThemeProviderProps, R as ResolvedMode, T as ThemeContext, f as ThemeProvider, g as ThemeProviderProps, U as UIThemeDefinition, h as UserContext, i as UserContextValue, j as UserData, k as UserProvider, l as UserProviderProps, u as useCurrentPagePath, m as useDesignTheme, n as useHasPermission, o as useHasRole, p as useTheme, q as useUser, r as useUserForEvaluation } from '../UserContext-bziZwgFL.js';
2
+ export { A as ANONYMOUS_USER, B as BUILT_IN_THEMES, C as ColorMode, a as CurrentPagePathContext, b as CurrentPagePathProvider, c as CurrentPagePathProviderProps, D as DesignTheme, d as DesignThemeProvider, O as OrbitalThemeProvider, e as OrbitalThemeProviderProps, R as ResolvedMode, T as ThemeContext, f as ThemeProvider, g as ThemeProviderProps, U as UIThemeDefinition, h as UserContext, i as UserContextValue, j as UserData, k as UserProvider, l as UserProviderProps, u as useCurrentPagePath, m as useDesignTheme, n as useHasPermission, o as useHasRole, p as useTheme, q as useUser, r as useUserForEvaluation } from '../UserContext-BKckAUv7.js';
3
3
  import { ThemeRef, ThemeDefinition, ThemeTokens, ThemeVariant } from '@almadar/core';
4
4
  export { UISlot } from '@almadar/core';
5
5
  export { S as SlotAnimation, a as SlotChangeCallback, b as SlotContent, c as SlotRenderConfig, U as UISlotManager } from '../useUISlots-BesZYMks.js';
@@ -428,78 +428,12 @@ var BUILT_IN_THEMES = [
428
428
  hasDarkMode: true
429
429
  },
430
430
  // Extended themes
431
- {
432
- name: "ocean",
433
- displayName: "Ocean",
434
- hasLightMode: true,
435
- hasDarkMode: true
436
- },
437
- {
438
- name: "forest",
439
- displayName: "Forest",
440
- hasLightMode: true,
441
- hasDarkMode: true
442
- },
443
- {
444
- name: "sunset",
445
- displayName: "Sunset",
446
- hasLightMode: true,
447
- hasDarkMode: true
448
- },
449
- {
450
- name: "lavender",
451
- displayName: "Lavender",
452
- hasLightMode: true,
453
- hasDarkMode: true
454
- },
455
- {
456
- name: "rose",
457
- displayName: "Rose",
458
- hasLightMode: true,
459
- hasDarkMode: true
460
- },
461
- {
462
- name: "slate",
463
- displayName: "Slate",
464
- hasLightMode: true,
465
- hasDarkMode: true
466
- },
467
- {
468
- name: "ember",
469
- displayName: "Ember",
470
- hasLightMode: true,
471
- hasDarkMode: true
472
- },
473
- {
474
- name: "midnight",
475
- displayName: "Midnight",
476
- hasLightMode: true,
477
- hasDarkMode: true
478
- },
479
- {
480
- name: "sand",
481
- displayName: "Sand",
482
- hasLightMode: true,
483
- hasDarkMode: true
484
- },
485
431
  {
486
432
  name: "neon",
487
433
  displayName: "Neon",
488
434
  hasLightMode: true,
489
435
  hasDarkMode: true
490
436
  },
491
- {
492
- name: "arctic",
493
- displayName: "Arctic",
494
- hasLightMode: true,
495
- hasDarkMode: true
496
- },
497
- {
498
- name: "copper",
499
- displayName: "Copper",
500
- hasLightMode: true,
501
- hasDarkMode: true
502
- },
503
437
  // Layer 1 skin axes — truly-unique themes (compact tech / editorial / brutalist dense / display-heavy / touch-first)
504
438
  {
505
439
  name: "prism",
@@ -548,6 +482,31 @@ var BUILT_IN_THEMES = [
548
482
  displayName: "Bloomberg Dense",
549
483
  hasLightMode: true,
550
484
  hasDarkMode: true
485
+ },
486
+ // Personality themes — high-demand web styles (glassmorphism / claymorphism / retro / enterprise)
487
+ {
488
+ name: "glass",
489
+ displayName: "Glass",
490
+ hasLightMode: true,
491
+ hasDarkMode: true
492
+ },
493
+ {
494
+ name: "clay",
495
+ displayName: "Clay",
496
+ hasLightMode: true,
497
+ hasDarkMode: true
498
+ },
499
+ {
500
+ name: "retro",
501
+ displayName: "Retro",
502
+ hasLightMode: true,
503
+ hasDarkMode: true
504
+ },
505
+ {
506
+ name: "corporate",
507
+ displayName: "Corporate",
508
+ hasLightMode: true,
509
+ hasDarkMode: true
551
510
  }
552
511
  ];
553
512
  var ThemeContext = createContext(void 0);
@@ -40,6 +40,24 @@ declare function extractRouteParams(pattern: string, path: string): Record<strin
40
40
  * Check if a path matches a pattern.
41
41
  */
42
42
  declare function pathMatches(pattern: string, path: string): boolean;
43
+ /**
44
+ * Order two route patterns most-specific-first: at the first segment where they
45
+ * disagree in kind, a static segment outranks a `:param`. Patterns that agree in
46
+ * kind everywhere tie, leaving declaration order to decide.
47
+ *
48
+ * Without this, `/listings/:id` declared before `/listings/moderation` swallows
49
+ * its static sibling, because every `:param` matches any segment.
50
+ */
51
+ declare function comparePathSpecificity(a: string, b: string): number;
52
+ /**
53
+ * Match a concrete path against route-bearing candidates, most-specific first.
54
+ * The single resolver every route lookup goes through — the candidate array is
55
+ * never reordered in place, so callers keep their declaration-order semantics.
56
+ */
57
+ declare function matchPathAmong<T>(candidates: readonly T[], path: string, pathOf: (candidate: T) => string | undefined): {
58
+ candidate: T;
59
+ params: Record<string, string>;
60
+ } | null;
43
61
  /**
44
62
  * Find a page in the schema by matching its path pattern against a concrete path.
45
63
  * Returns the page and extracted route params.
@@ -517,4 +535,4 @@ interface UseOfflineExecutorResult {
517
535
  */
518
536
  declare function useOfflineExecutor(options: UseOfflineExecutorOptions): UseOfflineExecutorResult;
519
537
 
520
- export { type ClientEffect as C, type DataContext as D, type EventResponse as E, type MappedPattern as M, type NavigationContextValue as N, OfflineExecutor as O, type PendingSyncEffect as P, type SlotDefinition as S, type UseOfflineExecutorResult as U, type UseOfflineExecutorOptions as a, NavigationProvider as b, type NavigationProviderProps as c, type NavigationState as d, extractRouteParams as e, findPageByName as f, findPageByPath as g, getAllPages as h, getDefaultPage as i, useInitPayload as j, useNavigateTo as k, useNavigation as l, matchPath as m, useNavigationId as n, useNavigationState as o, pathMatches as p, type ClientEffectExecutorConfig as q, type NotifyOptions as r, type DataResolution as s, type OfflineExecutorConfig as t, useActivePage as u, type OfflineExecutorState as v, type SlotType as w, createOfflineExecutor as x, useOfflineExecutor as y };
538
+ export { useOfflineExecutor as A, type ClientEffect as C, type DataContext as D, type EventResponse as E, type MappedPattern as M, type NavigationContextValue as N, OfflineExecutor as O, type PendingSyncEffect as P, type SlotDefinition as S, type UseOfflineExecutorResult as U, type UseOfflineExecutorOptions as a, NavigationProvider as b, type NavigationProviderProps as c, type NavigationState as d, comparePathSpecificity as e, extractRouteParams as f, findPageByName as g, findPageByPath as h, getAllPages as i, getDefaultPage as j, matchPathAmong as k, useInitPayload as l, matchPath as m, useNavigateTo as n, useNavigation as o, pathMatches as p, useNavigationId as q, useNavigationState as r, type ClientEffectExecutorConfig as s, type NotifyOptions as t, useActivePage as u, type DataResolution as v, type OfflineExecutorConfig as w, type OfflineExecutorState as x, type SlotType as y, createOfflineExecutor as z };
@@ -40,6 +40,24 @@ declare function extractRouteParams(pattern: string, path: string): Record<strin
40
40
  * Check if a path matches a pattern.
41
41
  */
42
42
  declare function pathMatches(pattern: string, path: string): boolean;
43
+ /**
44
+ * Order two route patterns most-specific-first: at the first segment where they
45
+ * disagree in kind, a static segment outranks a `:param`. Patterns that agree in
46
+ * kind everywhere tie, leaving declaration order to decide.
47
+ *
48
+ * Without this, `/listings/:id` declared before `/listings/moderation` swallows
49
+ * its static sibling, because every `:param` matches any segment.
50
+ */
51
+ declare function comparePathSpecificity(a: string, b: string): number;
52
+ /**
53
+ * Match a concrete path against route-bearing candidates, most-specific first.
54
+ * The single resolver every route lookup goes through — the candidate array is
55
+ * never reordered in place, so callers keep their declaration-order semantics.
56
+ */
57
+ declare function matchPathAmong<T>(candidates: readonly T[], path: string, pathOf: (candidate: T) => string | undefined): {
58
+ candidate: T;
59
+ params: Record<string, string>;
60
+ } | null;
43
61
  /**
44
62
  * Find a page in the schema by matching its path pattern against a concrete path.
45
63
  * Returns the page and extracted route params.
@@ -517,4 +535,4 @@ interface UseOfflineExecutorResult {
517
535
  */
518
536
  declare function useOfflineExecutor(options: UseOfflineExecutorOptions): UseOfflineExecutorResult;
519
537
 
520
- export { type ClientEffect as C, type DataContext as D, type EventResponse as E, type MappedPattern as M, type NavigationContextValue as N, OfflineExecutor as O, type PendingSyncEffect as P, type SlotDefinition as S, type UseOfflineExecutorResult as U, type UseOfflineExecutorOptions as a, NavigationProvider as b, type NavigationProviderProps as c, type NavigationState as d, extractRouteParams as e, findPageByName as f, findPageByPath as g, getAllPages as h, getDefaultPage as i, useInitPayload as j, useNavigateTo as k, useNavigation as l, matchPath as m, useNavigationId as n, useNavigationState as o, pathMatches as p, type ClientEffectExecutorConfig as q, type NotifyOptions as r, type DataResolution as s, type OfflineExecutorConfig as t, useActivePage as u, type OfflineExecutorState as v, type SlotType as w, createOfflineExecutor as x, useOfflineExecutor as y };
538
+ export { useOfflineExecutor as A, type ClientEffect as C, type DataContext as D, type EventResponse as E, type MappedPattern as M, type NavigationContextValue as N, OfflineExecutor as O, type PendingSyncEffect as P, type SlotDefinition as S, type UseOfflineExecutorResult as U, type UseOfflineExecutorOptions as a, NavigationProvider as b, type NavigationProviderProps as c, type NavigationState as d, comparePathSpecificity as e, extractRouteParams as f, findPageByName as g, findPageByPath as h, getAllPages as i, getDefaultPage as j, matchPathAmong as k, useInitPayload as l, matchPath as m, useNavigateTo as n, useNavigation as o, pathMatches as p, useNavigationId as q, useNavigationState as r, type ClientEffectExecutorConfig as s, type NotifyOptions as t, useActivePage as u, type DataResolution as v, type OfflineExecutorConfig as w, type OfflineExecutorState as x, type SlotType as y, createOfflineExecutor as z };