@almadar/ui 6.28.0 → 6.30.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 (54) hide show
  1. package/dist/{EntityBindingContext-C6FgxdfG.d.cts → EntityBindingContext-ChCONv2W.d.cts} +3 -39
  2. package/dist/{EntityBindingContext-C6FgxdfG.d.ts → EntityBindingContext-ChCONv2W.d.ts} +3 -39
  3. package/dist/avl/index.cjs +74 -48
  4. package/dist/avl/index.js +74 -48
  5. package/dist/components/index.cjs +54 -45
  6. package/dist/components/index.d.cts +1 -1
  7. package/dist/components/index.d.ts +1 -1
  8. package/dist/components/index.js +54 -45
  9. package/dist/context/index.cjs +135 -105
  10. package/dist/context/index.d.cts +2 -60
  11. package/dist/context/index.d.ts +2 -60
  12. package/dist/context/index.js +135 -105
  13. package/dist/lib/index.cjs +455 -0
  14. package/dist/lib/index.d.cts +42 -1
  15. package/dist/lib/index.d.ts +42 -1
  16. package/dist/lib/index.js +438 -1
  17. package/dist/marketing/index.cjs +4 -5
  18. package/dist/marketing/index.js +4 -5
  19. package/dist/providers/index.cjs +194 -156
  20. package/dist/providers/index.d.cts +1 -1
  21. package/dist/providers/index.d.ts +1 -1
  22. package/dist/providers/index.js +194 -156
  23. package/dist/runtime/index.cjs +74 -48
  24. package/dist/runtime/index.d.cts +16 -2
  25. package/dist/runtime/index.d.ts +16 -2
  26. package/dist/runtime/index.js +74 -48
  27. package/dist/themeTokens-DVRwufw8.d.cts +112 -0
  28. package/dist/themeTokens-DVRwufw8.d.ts +112 -0
  29. package/package.json +7 -6
  30. package/scripts/audit-tailwind-safelist.ts +4 -0
  31. package/tailwind-preset.cjs +155 -28
  32. package/themes/almadar-website.css +37 -107
  33. package/themes/almadar.css +37 -108
  34. package/themes/atelier.css +145 -240
  35. package/themes/bloomberg-dense.css +145 -252
  36. package/themes/clay.css +39 -137
  37. package/themes/comic.css +39 -145
  38. package/themes/corporate.css +39 -131
  39. package/themes/game-adventure.css +22 -87
  40. package/themes/game-rpg.css +22 -84
  41. package/themes/game-sci-fi.css +22 -88
  42. package/themes/game-ui-pack.css +22 -85
  43. package/themes/gazette.css +43 -135
  44. package/themes/glass.css +39 -148
  45. package/themes/kiosk.css +51 -146
  46. package/themes/linear-clean.css +145 -215
  47. package/themes/minimalist.css +39 -125
  48. package/themes/neon.css +39 -132
  49. package/themes/notion-editorial.css +145 -215
  50. package/themes/prism.css +37 -100
  51. package/themes/retro.css +39 -130
  52. package/themes/terminal.css +61 -152
  53. package/themes/trait-wars.css +121 -285
  54. package/themes/wireframe.css +41 -128
@@ -2337,6 +2337,13 @@ var init_slot_types = __esm({
2337
2337
  nextRefId = 1;
2338
2338
  }
2339
2339
  });
2340
+ var SlotContainedContext;
2341
+ var init_slotContained = __esm({
2342
+ "lib/slotContained.ts"() {
2343
+ "use client";
2344
+ SlotContainedContext = React89.createContext(false);
2345
+ }
2346
+ });
2340
2347
  function buildForkPaths(x, y, branches, scale) {
2341
2348
  const inLength = 30 * scale;
2342
2349
  const outLength = 30 * scale;
@@ -13856,11 +13863,10 @@ var init_HeroSection = __esm({
13856
13863
  };
13857
13864
  backgroundStyles = {
13858
13865
  dark: "bg-foreground text-background",
13859
- gradient: [
13860
- "bg-[radial-gradient(ellipse_at_top,var(--color-primary)/0.08,transparent_60%),",
13861
- "radial-gradient(ellipse_at_bottom_right,var(--color-accent)/0.06,transparent_50%)]",
13862
- "bg-background"
13863
- ].join(" "),
13866
+ // A single bracket value: joining this as two array entries put a space
13867
+ // inside the class (Tailwind splits utilities on whitespace), so neither
13868
+ // half was a valid utility and the gradient rendered as nothing.
13869
+ gradient: "bg-[radial-gradient(ellipse_at_top,var(--color-primary)/0.08,transparent_60%),radial-gradient(ellipse_at_bottom_right,var(--color-accent)/0.06,transparent_50%)] bg-background",
13864
13870
  subtle: "bg-muted/30"
13865
13871
  };
13866
13872
  MarketingImage = ({ src, alt, className }) => /* @__PURE__ */ jsxRuntime.jsx(
@@ -35919,7 +35925,6 @@ function TableView({
35919
35925
  columns,
35920
35926
  fields,
35921
35927
  itemActions,
35922
- maxInlineActions,
35923
35928
  itemClickEvent = "",
35924
35929
  selectable = false,
35925
35930
  selectEvent,
@@ -35953,8 +35958,7 @@ function TableView({
35953
35958
  const [localSelected, setLocalSelected] = React89__namespace.default.useState(/* @__PURE__ */ new Set());
35954
35959
  const colDefs = (Array.isArray(columns) ? columns : void 0) ?? (Array.isArray(fields) ? fields : void 0) ?? [];
35955
35960
  const actionDefs = Array.isArray(itemActions) ? itemActions : [];
35956
- const inlineActions = maxInlineActions != null ? actionDefs.slice(0, maxInlineActions) : [];
35957
- const overflowActions = maxInlineActions != null ? actionDefs.slice(maxInlineActions) : actionDefs;
35961
+ const overflowActions = actionDefs;
35958
35962
  const fireAction = (action, row) => eventBus.emit(`UI:${action.event}`, {
35959
35963
  id: row.id,
35960
35964
  row
@@ -36136,7 +36140,7 @@ function TableView({
36136
36140
  }
36137
36141
  return /* @__PURE__ */ jsxRuntime.jsx(Box, { role: "cell", className: cellBase, children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-foreground", children: formatCell(raw, col.format, relationsData?.[col.field ?? col.key]) }) }, col.key);
36138
36142
  }),
36139
- hasActions && /* @__PURE__ */ jsxRuntime.jsxs(
36143
+ hasActions && /* @__PURE__ */ jsxRuntime.jsx(
36140
36144
  HStack,
36141
36145
  {
36142
36146
  gap: "xs",
@@ -36150,38 +36154,20 @@ function TableView({
36150
36154
  "border-l border-[var(--color-border)]",
36151
36155
  lk.striped && index % 2 === 1 ? "bg-[var(--color-surface-subtle)]" : "bg-[var(--color-card)] group-hover:bg-[var(--color-surface-subtle)]"
36152
36156
  ),
36153
- children: [
36154
- inlineActions.map((action) => /* @__PURE__ */ jsxRuntime.jsxs(
36155
- Button,
36156
- {
36157
- variant: action.variant ?? "ghost",
36158
- size: "sm",
36159
- onClick: () => fireAction(action, row),
36160
- "data-testid": `action-${action.event}`,
36161
- "data-row-id": String(row.id),
36162
- className: cn(action.variant === "danger" && "text-error hover:bg-error/10"),
36163
- children: [
36164
- action.icon && renderIconInput3(action.icon, { size: "xs", className: "mr-1" }),
36165
- action.label
36166
- ]
36167
- },
36168
- action.event
36169
- )),
36170
- overflowActions.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
36171
- Menu,
36172
- {
36173
- position: "bottom-end",
36174
- trigger: /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", "aria-label": t("common.actions"), "data-testid": "action-overflow", "data-row-id": String(row.id), children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "more-horizontal", size: "xs" }) }),
36175
- items: overflowActions.map((action) => ({
36176
- label: action.label,
36177
- icon: action.icon,
36178
- event: action.event,
36179
- variant: action.variant === "danger" ? "danger" : "default",
36180
- onClick: () => fireAction(action, row)
36181
- }))
36182
- }
36183
- )
36184
- ]
36157
+ children: overflowActions.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
36158
+ Menu,
36159
+ {
36160
+ position: "bottom-end",
36161
+ trigger: /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", "aria-label": t("common.actions"), "data-testid": "action-overflow", "data-row-id": String(row.id), children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "more-horizontal", size: "xs" }) }),
36162
+ items: overflowActions.map((action) => ({
36163
+ label: action.label,
36164
+ icon: action.icon,
36165
+ event: action.event,
36166
+ variant: action.variant === "danger" ? "danger" : "default",
36167
+ onClick: () => fireAction(action, row)
36168
+ }))
36169
+ }
36170
+ )
36185
36171
  }
36186
36172
  )
36187
36173
  ]
@@ -45607,6 +45593,7 @@ var init_DetailPanel = __esm({
45607
45593
  init_EmptyState();
45608
45594
  init_cn();
45609
45595
  init_portalRoot();
45596
+ init_slotContained();
45610
45597
  init_format();
45611
45598
  init_getNestedValue();
45612
45599
  init_relationLabel();
@@ -45638,6 +45625,7 @@ var init_DetailPanel = __esm({
45638
45625
  }) => {
45639
45626
  const eventBus = useEventBus();
45640
45627
  const { t } = hooks.useTranslate();
45628
+ const contained = React89.useContext(SlotContainedContext);
45641
45629
  const [titleDraft, setTitleDraft] = React89__namespace.default.useState(null);
45642
45630
  const isFieldDefArray = (arr) => {
45643
45631
  if (!arr || arr.length === 0) return false;
@@ -46025,8 +46013,9 @@ var init_DetailPanel = __esm({
46025
46013
  if (!slideOver) {
46026
46014
  return /* @__PURE__ */ jsxRuntime.jsx(Box, { className, children: content });
46027
46015
  }
46028
- const panel = /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("fixed inset-y-0 right-0 w-full max-w-2xl bg-card shadow-lg z-50 overflow-y-auto p-6", className), children: content });
46029
- return typeof document === "undefined" ? panel : reactDom.createPortal(panel, getOrCreatePortalRoot());
46016
+ const panel = /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn(contained ? "absolute" : "fixed", "inset-y-0 right-0 w-full max-w-2xl bg-card shadow-lg z-50 overflow-y-auto p-6", className), children: content });
46017
+ if (contained || typeof document === "undefined") return panel;
46018
+ return reactDom.createPortal(panel, getOrCreatePortalRoot());
46030
46019
  };
46031
46020
  DetailPanel.displayName = "DetailPanel";
46032
46021
  }
@@ -52504,6 +52493,7 @@ var init_component_registry_generated = __esm({
52504
52493
  // components/core/organisms/UISlotRenderer.tsx
52505
52494
  var UISlotRenderer_exports = {};
52506
52495
  __export(UISlotRenderer_exports, {
52496
+ SlotContainedContext: () => SlotContainedContext,
52507
52497
  SlotContentRenderer: () => SlotContentRenderer,
52508
52498
  SuspenseConfigProvider: () => SuspenseConfigProvider,
52509
52499
  UISlotComponent: () => UISlotComponent,
@@ -52676,6 +52666,25 @@ function renderContainedPortal(t, slot, content, onDismiss) {
52676
52666
  }
52677
52667
  );
52678
52668
  case "drawer":
52669
+ if (content.pattern === "detail-panel" && content.props.slideOver === true) {
52670
+ return /* @__PURE__ */ jsxRuntime.jsx(
52671
+ Box,
52672
+ {
52673
+ id: slotId,
52674
+ className: "absolute inset-0 z-50 overflow-hidden",
52675
+ style: { backgroundColor: "rgba(0, 0, 0, 0.5)" },
52676
+ onClick: onDismiss,
52677
+ children: /* @__PURE__ */ jsxRuntime.jsx(
52678
+ Box,
52679
+ {
52680
+ className: "absolute inset-y-0 right-0 pointer-events-auto",
52681
+ onClick: (e) => e.stopPropagation(),
52682
+ children: slotContent
52683
+ }
52684
+ )
52685
+ }
52686
+ );
52687
+ }
52679
52688
  return /* @__PURE__ */ jsxRuntime.jsx(
52680
52689
  Box,
52681
52690
  {
@@ -53527,7 +53536,7 @@ function UISlotRenderer({
53527
53536
  }
53528
53537
  return wrapped;
53529
53538
  }
53530
- var scopeWrapLog, TRAIT_BINDING_RE, SuspenseConfigContext, SlotContainedContext, SLOT_SKELETON_MAP, CONTENT_NODE_SLOTS, PATTERNS_WITH_CHILDREN, traitRefPresenceCache;
53539
+ var scopeWrapLog, TRAIT_BINDING_RE, SuspenseConfigContext, SLOT_SKELETON_MAP, CONTENT_NODE_SLOTS, PATTERNS_WITH_CHILDREN, traitRefPresenceCache;
53531
53540
  var init_UISlotRenderer = __esm({
53532
53541
  "components/core/organisms/UISlotRenderer.tsx"() {
53533
53542
  "use client";
@@ -53542,6 +53551,7 @@ var init_UISlotRenderer = __esm({
53542
53551
  init_cn();
53543
53552
  init_format();
53544
53553
  init_portalRoot();
53554
+ init_slotContained();
53545
53555
  init_ErrorBoundary();
53546
53556
  init_Skeleton();
53547
53557
  init_renderer();
@@ -53551,7 +53561,6 @@ var init_UISlotRenderer = __esm({
53551
53561
  scopeWrapLog = logger.createLogger("almadar:ui:scope-wrap");
53552
53562
  TRAIT_BINDING_RE = /^@trait\.([A-Z][A-Za-z0-9]*)$/;
53553
53563
  SuspenseConfigContext = React89.createContext({ enabled: false });
53554
- SlotContainedContext = React89.createContext(false);
53555
53564
  SuspenseConfigProvider.displayName = "SuspenseConfigProvider";
53556
53565
  SLOT_SKELETON_MAP = {
53557
53566
  main: "table",
@@ -54187,17 +54196,127 @@ function OrbitalProvider({
54187
54196
  OrbitalProvider.displayName = "OrbitalProvider";
54188
54197
 
54189
54198
  // lib/themeTokens.ts
54199
+ function applyFlat(obj, table, vars) {
54200
+ if (!obj) return;
54201
+ for (const { cssVar, key } of table) {
54202
+ const value = obj[key];
54203
+ if (value !== void 0) vars[cssVar] = value;
54204
+ }
54205
+ }
54206
+ var DENSITY_SPACING_VARS = [
54207
+ { cssVar: "--space-0", key: "space0" },
54208
+ { cssVar: "--space-1", key: "space1" },
54209
+ { cssVar: "--space-2", key: "space2" },
54210
+ { cssVar: "--space-3", key: "space3" },
54211
+ { cssVar: "--space-4", key: "space4" },
54212
+ { cssVar: "--space-5", key: "space5" },
54213
+ { cssVar: "--space-6", key: "space6" },
54214
+ { cssVar: "--space-7", key: "space7" },
54215
+ { cssVar: "--space-8", key: "space8" },
54216
+ { cssVar: "--space-9", key: "space9" },
54217
+ { cssVar: "--space-10", key: "space10" },
54218
+ { cssVar: "--space-11", key: "space11" },
54219
+ { cssVar: "--space-12", key: "space12" }
54220
+ ];
54221
+ var DENSITY_ELEMENT_VARS = [
54222
+ { cssVar: "--button-height-sm", key: "buttonHeightSm" },
54223
+ { cssVar: "--button-height-md", key: "buttonHeightMd" },
54224
+ { cssVar: "--button-height-lg", key: "buttonHeightLg" },
54225
+ { cssVar: "--input-height-sm", key: "inputHeightSm" },
54226
+ { cssVar: "--input-height-md", key: "inputHeightMd" },
54227
+ { cssVar: "--input-height-lg", key: "inputHeightLg" },
54228
+ { cssVar: "--row-height-compact", key: "rowHeightCompact" },
54229
+ { cssVar: "--row-height-normal", key: "rowHeightNormal" },
54230
+ { cssVar: "--row-height-spacious", key: "rowHeightSpacious" },
54231
+ { cssVar: "--card-padding-sm", key: "cardPaddingSm" },
54232
+ { cssVar: "--card-padding-md", key: "cardPaddingMd" },
54233
+ { cssVar: "--card-padding-lg", key: "cardPaddingLg" },
54234
+ { cssVar: "--dialog-padding", key: "dialogPadding" },
54235
+ { cssVar: "--section-gap", key: "sectionGap" }
54236
+ ];
54237
+ var TYPE_FAMILY_VARS = [
54238
+ { cssVar: "--font-family-display", key: "displayFamily" },
54239
+ { cssVar: "--font-family-body", key: "bodyFamily" },
54240
+ { cssVar: "--font-family-mono", key: "monoFamily" }
54241
+ ];
54242
+ var TYPE_SIZE_KEYS = [
54243
+ "xs",
54244
+ "sm",
54245
+ "base",
54246
+ "lg",
54247
+ "xl",
54248
+ "2xl",
54249
+ "3xl",
54250
+ "4xl",
54251
+ "display-1",
54252
+ "display-2"
54253
+ ];
54254
+ var TYPE_INTENT_VARS = [
54255
+ { key: "headingMajor", cssName: "heading-major" },
54256
+ { key: "headingMinor", cssName: "heading-minor" },
54257
+ { key: "bodyEmphasis", cssName: "body-emphasis" },
54258
+ { key: "bodyDefault", cssName: "body-default" },
54259
+ { key: "bodyQuiet", cssName: "body-quiet" },
54260
+ { key: "caption", cssName: "caption" },
54261
+ { key: "numeric", cssName: "numeric" }
54262
+ ];
54263
+ var MOTION_DURATION_KEYS = [
54264
+ "instant",
54265
+ "fast",
54266
+ "normal",
54267
+ "slow",
54268
+ "dramatic"
54269
+ ];
54270
+ var MOTION_EASING_KEYS = [
54271
+ "linear",
54272
+ "standard",
54273
+ "emphasized",
54274
+ "spring"
54275
+ ];
54276
+ var MOTION_INTENT_VARS = [
54277
+ { key: "enter", cssName: "enter" },
54278
+ { key: "exit", cssName: "exit" },
54279
+ { key: "hover", cssName: "hover" },
54280
+ { key: "press", cssName: "press" },
54281
+ { key: "expand", cssName: "expand" },
54282
+ { key: "transition", cssName: "transition" }
54283
+ ];
54284
+ var ICONOGRAPHY_VARS = [
54285
+ { cssVar: "--icon-family", key: "family" },
54286
+ { cssVar: "--icon-stroke-width", key: "strokeWidth" },
54287
+ { cssVar: "--icon-default-size", key: "defaultSize" }
54288
+ ];
54289
+ var ELEVATION_VARS = [
54290
+ { cssVar: "--elevation-card", key: "cardElevation" },
54291
+ { cssVar: "--elevation-popover", key: "popoverElevation" },
54292
+ { cssVar: "--elevation-dialog", key: "dialogElevation" },
54293
+ { cssVar: "--elevation-toast", key: "toastElevation" }
54294
+ ];
54295
+ var GEOMETRY_VARS = [
54296
+ { cssVar: "--radius-container", key: "radiusContainer" },
54297
+ { cssVar: "--radius-interactive", key: "radiusInteractive" },
54298
+ { cssVar: "--radius-pill", key: "radiusPill" },
54299
+ { cssVar: "--border-hairline", key: "borderHairline" },
54300
+ { cssVar: "--border-standard", key: "borderStandard" },
54301
+ { cssVar: "--border-heavy", key: "borderHeavy" }
54302
+ ];
54303
+ var LEGACY_PREFIXES = {
54304
+ colors: "--color-",
54305
+ radii: "--radius-",
54306
+ spacing: "--space-",
54307
+ shadows: "--shadow-"
54308
+ };
54190
54309
  function themeTokensToCssVars(tokens, mode = "light", darkVariant) {
54191
54310
  const vars = {};
54192
54311
  const isDark = mode === "dark";
54193
54312
  const pickColors = isDark && darkVariant?.colors ? darkVariant.colors : tokens.colors;
54194
54313
  if (pickColors) {
54195
54314
  for (const [key, value] of Object.entries(pickColors)) {
54196
- vars[`--color-${key}`] = value;
54315
+ vars[`${LEGACY_PREFIXES.colors}${key}`] = value;
54197
54316
  }
54198
54317
  if (isDark && darkVariant?.colors && tokens.colors) {
54199
54318
  for (const [key, value] of Object.entries(tokens.colors)) {
54200
- const varName = `--color-${key}`;
54319
+ const varName = `${LEGACY_PREFIXES.colors}${key}`;
54201
54320
  if (!(varName in vars)) vars[varName] = value;
54202
54321
  }
54203
54322
  }
@@ -54205,13 +54324,13 @@ function themeTokensToCssVars(tokens, mode = "light", darkVariant) {
54205
54324
  const pickRadii = isDark && darkVariant?.radii ? darkVariant.radii : tokens.radii;
54206
54325
  if (pickRadii) {
54207
54326
  for (const [key, value] of Object.entries(pickRadii)) {
54208
- vars[`--radius-${key}`] = value;
54327
+ vars[`${LEGACY_PREFIXES.radii}${key}`] = value;
54209
54328
  }
54210
54329
  }
54211
54330
  const pickSpacing = isDark && darkVariant?.spacing ? darkVariant.spacing : tokens.spacing;
54212
54331
  if (pickSpacing) {
54213
54332
  for (const [key, value] of Object.entries(pickSpacing)) {
54214
- vars[`--space-${key}`] = value;
54333
+ vars[`${LEGACY_PREFIXES.spacing}${key}`] = value;
54215
54334
  }
54216
54335
  }
54217
54336
  const pickTypography = isDark && darkVariant?.typography ? darkVariant.typography : tokens.typography;
@@ -54223,7 +54342,7 @@ function themeTokensToCssVars(tokens, mode = "light", darkVariant) {
54223
54342
  const pickShadows = isDark && darkVariant?.shadows ? darkVariant.shadows : tokens.shadows;
54224
54343
  if (pickShadows) {
54225
54344
  for (const [key, value] of Object.entries(pickShadows)) {
54226
- vars[`--shadow-${key}`] = value;
54345
+ vars[`${LEGACY_PREFIXES.shadows}${key}`] = value;
54227
54346
  }
54228
54347
  }
54229
54348
  const pickDensity = isDark && darkVariant?.density ? darkVariant.density : tokens.density;
@@ -54242,46 +54361,8 @@ function themeTokensToCssVars(tokens, mode = "light", darkVariant) {
54242
54361
  }
54243
54362
  function emitDensity(density, vars) {
54244
54363
  if (!density) return;
54245
- if (density.spacing) {
54246
- const s = density.spacing;
54247
- const pairs2 = [
54248
- ["0", s.space0],
54249
- ["1", s.space1],
54250
- ["2", s.space2],
54251
- ["3", s.space3],
54252
- ["4", s.space4],
54253
- ["5", s.space5],
54254
- ["6", s.space6],
54255
- ["7", s.space7],
54256
- ["8", s.space8],
54257
- ["9", s.space9],
54258
- ["10", s.space10],
54259
- ["11", s.space11],
54260
- ["12", s.space12]
54261
- ];
54262
- for (const [k, v] of pairs2) {
54263
- if (v !== void 0) vars[`--space-${k}`] = v;
54264
- }
54265
- }
54266
- const pairs = [
54267
- ["button-height-sm", density.buttonHeightSm],
54268
- ["button-height-md", density.buttonHeightMd],
54269
- ["button-height-lg", density.buttonHeightLg],
54270
- ["input-height-sm", density.inputHeightSm],
54271
- ["input-height-md", density.inputHeightMd],
54272
- ["input-height-lg", density.inputHeightLg],
54273
- ["row-height-compact", density.rowHeightCompact],
54274
- ["row-height-normal", density.rowHeightNormal],
54275
- ["row-height-spacious", density.rowHeightSpacious],
54276
- ["card-padding-sm", density.cardPaddingSm],
54277
- ["card-padding-md", density.cardPaddingMd],
54278
- ["card-padding-lg", density.cardPaddingLg],
54279
- ["dialog-padding", density.dialogPadding],
54280
- ["section-gap", density.sectionGap]
54281
- ];
54282
- for (const [k, v] of pairs) {
54283
- if (v !== void 0) vars[`--${k}`] = v;
54284
- }
54364
+ applyFlat(density.spacing, DENSITY_SPACING_VARS, vars);
54365
+ applyFlat(density, DENSITY_ELEMENT_VARS, vars);
54285
54366
  }
54286
54367
  function typeSizeKeyStr(k) {
54287
54368
  return k;
@@ -54298,24 +54379,11 @@ function emitTypeIntent(name, intent, vars) {
54298
54379
  }
54299
54380
  function emitTypeScale(ts, vars) {
54300
54381
  if (!ts) return;
54301
- if (ts.displayFamily !== void 0) vars["--font-family-display"] = ts.displayFamily;
54302
- if (ts.bodyFamily !== void 0) vars["--font-family-body"] = ts.bodyFamily;
54303
- if (ts.monoFamily !== void 0) vars["--font-family-mono"] = ts.monoFamily;
54382
+ applyFlat(ts, TYPE_FAMILY_VARS, vars);
54304
54383
  if (ts.scale) {
54305
54384
  const s = ts.scale;
54306
- const pairs = [
54307
- ["xs", s.xs],
54308
- ["sm", s.sm],
54309
- ["base", s.base],
54310
- ["lg", s.lg],
54311
- ["xl", s.xl],
54312
- ["2xl", s["2xl"]],
54313
- ["3xl", s["3xl"]],
54314
- ["4xl", s["4xl"]],
54315
- ["display-1", s["display-1"]],
54316
- ["display-2", s["display-2"]]
54317
- ];
54318
- for (const [k, entry] of pairs) {
54385
+ for (const k of TYPE_SIZE_KEYS) {
54386
+ const entry = s[k];
54319
54387
  if (entry !== void 0) {
54320
54388
  vars[`--text-${k}`] = entry.size;
54321
54389
  vars[`--leading-${k}`] = entry.lineHeight;
@@ -54324,13 +54392,10 @@ function emitTypeScale(ts, vars) {
54324
54392
  }
54325
54393
  if (ts.intents) {
54326
54394
  const i = ts.intents;
54327
- if (i.headingMajor) emitTypeIntent("heading-major", i.headingMajor, vars);
54328
- if (i.headingMinor) emitTypeIntent("heading-minor", i.headingMinor, vars);
54329
- if (i.bodyEmphasis) emitTypeIntent("body-emphasis", i.bodyEmphasis, vars);
54330
- if (i.bodyDefault) emitTypeIntent("body-default", i.bodyDefault, vars);
54331
- if (i.bodyQuiet) emitTypeIntent("body-quiet", i.bodyQuiet, vars);
54332
- if (i.caption) emitTypeIntent("caption", i.caption, vars);
54333
- if (i.numeric) emitTypeIntent("numeric", i.numeric, vars);
54395
+ for (const { key, cssName } of TYPE_INTENT_VARS) {
54396
+ const intent = i[key];
54397
+ if (intent) emitTypeIntent(cssName, intent, vars);
54398
+ }
54334
54399
  }
54335
54400
  }
54336
54401
  function emitMotionIntent(name, intent, vars) {
@@ -54341,60 +54406,34 @@ function emitMotion(m, vars) {
54341
54406
  if (!m) return;
54342
54407
  if (m.durations) {
54343
54408
  const d = m.durations;
54344
- const pairs = [
54345
- ["instant", d.instant],
54346
- ["fast", d.fast],
54347
- ["normal", d.normal],
54348
- ["slow", d.slow],
54349
- ["dramatic", d.dramatic]
54350
- ];
54351
- for (const [k, v] of pairs) {
54409
+ for (const k of MOTION_DURATION_KEYS) {
54410
+ const v = d[k];
54352
54411
  if (v !== void 0) vars[`--duration-${k}`] = v;
54353
54412
  }
54354
54413
  }
54355
54414
  if (m.easings) {
54356
54415
  const e = m.easings;
54357
- const pairs = [
54358
- ["linear", e.linear],
54359
- ["standard", e.standard],
54360
- ["emphasized", e.emphasized],
54361
- ["spring", e.spring]
54362
- ];
54363
- for (const [k, v] of pairs) {
54416
+ for (const k of MOTION_EASING_KEYS) {
54417
+ const v = e[k];
54364
54418
  if (v !== void 0) vars[`--easing-${k}`] = v;
54365
54419
  }
54366
54420
  }
54367
54421
  if (m.intents) {
54368
54422
  const i = m.intents;
54369
- if (i.enter) emitMotionIntent("enter", i.enter, vars);
54370
- if (i.exit) emitMotionIntent("exit", i.exit, vars);
54371
- if (i.hover) emitMotionIntent("hover", i.hover, vars);
54372
- if (i.press) emitMotionIntent("press", i.press, vars);
54373
- if (i.expand) emitMotionIntent("expand", i.expand, vars);
54374
- if (i.transition) emitMotionIntent("transition", i.transition, vars);
54423
+ for (const { key, cssName } of MOTION_INTENT_VARS) {
54424
+ const intent = i[key];
54425
+ if (intent) emitMotionIntent(cssName, intent, vars);
54426
+ }
54375
54427
  }
54376
54428
  }
54377
54429
  function emitIconography(i, vars) {
54378
- if (!i) return;
54379
- if (i.family !== void 0) vars["--icon-family"] = i.family;
54380
- if (i.strokeWidth !== void 0) vars["--icon-stroke-width"] = i.strokeWidth;
54381
- if (i.defaultSize !== void 0) vars["--icon-default-size"] = i.defaultSize;
54430
+ applyFlat(i, ICONOGRAPHY_VARS, vars);
54382
54431
  }
54383
54432
  function emitElevation(e, vars) {
54384
- if (!e) return;
54385
- if (e.cardElevation !== void 0) vars["--elevation-card"] = e.cardElevation;
54386
- if (e.popoverElevation !== void 0) vars["--elevation-popover"] = e.popoverElevation;
54387
- if (e.dialogElevation !== void 0) vars["--elevation-dialog"] = e.dialogElevation;
54388
- if (e.toastElevation !== void 0) vars["--elevation-toast"] = e.toastElevation;
54433
+ applyFlat(e, ELEVATION_VARS, vars);
54389
54434
  }
54390
54435
  function emitGeometry(g, vars) {
54391
- if (!g) return;
54392
- if (g.radiusContainer !== void 0) vars["--radius-container"] = g.radiusContainer;
54393
- if (g.radiusInteractive !== void 0) vars["--radius-interactive"] = g.radiusInteractive;
54394
- if (g.radiusPill !== void 0) vars["--radius-pill"] = g.radiusPill;
54395
- if (g.borderHairline !== void 0) vars["--border-hairline"] = g.borderHairline;
54396
- if (g.borderStandard !== void 0) vars["--border-standard"] = g.borderStandard;
54397
- if (g.borderHeavy !== void 0) vars["--border-heavy"] = g.borderHeavy;
54436
+ applyFlat(g, GEOMETRY_VARS, vars);
54398
54437
  }
54399
54438
  function resolveThemeForRuntime(theme) {
54400
54439
  if (theme === void 0) return void 0;
@@ -54997,8 +55036,9 @@ function ServerBridgeProvider({
54997
55036
  clientEffects: result.clientEffects?.length ?? 0,
54998
55037
  dataEntities,
54999
55038
  data: responseData,
55000
- emittedEvents: result.emittedEvents?.map((e) => e.event) ?? [],
55001
- emitted: result.emittedEvents?.map((e) => ({ event: e.event, ...e.payload !== void 0 && { payload: e.payload } })) ?? [],
55039
+ entityByTrait: result.entityByTrait,
55040
+ emittedEvents: result.emittedEvents.map((e) => e.event),
55041
+ emitted: result.emittedEvents.map((e) => ({ event: e.event, ...e.payload !== void 0 && { payload: e.payload } })),
55002
55042
  effectResults: result.effectResults,
55003
55043
  error: result.error
55004
55044
  };
@@ -55033,10 +55073,8 @@ function ServerBridgeProvider({
55033
55073
  effects.push({ type: "navigate-back", traitName });
55034
55074
  }
55035
55075
  }
55036
- if (result.emittedEvents) {
55037
- for (const emitted of stampLocallyDeliveredEchoes(event, result.emittedEvents, locallyEmitted ?? [])) {
55038
- reEmitServerEvent(eventBus, emitted, orbitalName);
55039
- }
55076
+ for (const emitted of stampLocallyDeliveredEchoes(event, result.emittedEvents, locallyEmitted ?? [])) {
55077
+ reEmitServerEvent(eventBus, emitted, orbitalName);
55040
55078
  }
55041
55079
  } else if (result.error) {
55042
55080
  xOrbitalLog.warn("response:fail", {
@@ -6,7 +6,7 @@ export { a as CurrentPagePathContext, b as CurrentPagePathProvider, c as Current
6
6
  import { b as UserData } from '../UserContext-D566nfWA.cjs';
7
7
  export { U as UserContext, a as UserContextValue, c as UserProvider, d as UserProviderProps, u as useHasPermission, e as useHasRole, f as useUser, g as useUserForEvaluation } from '../UserContext-D566nfWA.cjs';
8
8
  import { E as EventBusContextType } from '../event-bus-types-Bl78kokd.cjs';
9
- export { A as AccessTokenProvider, E as EntityBindingContext, a as EntityBindingSource, b as EntitySchemaContextValue, c as EntitySchemaProvider, d as EntitySchemaProviderProps, S as SendEventResult, e as ServerBridgeContextValue, f as ServerBridgeProvider, g as ServerBridgeProviderProps, h as ServerBridgeTransport, i as ServerClientEffect, j as ServerResponseMeta, T as TraitContext, k as TraitContextValue, l as TraitInstance, m as TraitProvider, n as TraitProviderProps, u as useEntityBindingSnapshot, o as useEntitySchema, p as useEntitySchemaOptional, q as useServerBridge, r as useTrait, s as useTraitContext } from '../EntityBindingContext-C6FgxdfG.cjs';
9
+ export { A as AccessTokenProvider, E as EntityBindingContext, a as EntityBindingSource, b as EntitySchemaContextValue, c as EntitySchemaProvider, d as EntitySchemaProviderProps, S as SendEventResult, e as ServerBridgeContextValue, f as ServerBridgeProvider, g as ServerBridgeProviderProps, h as ServerBridgeTransport, i as ServerClientEffect, j as ServerResponseMeta, T as TraitContext, k as TraitContextValue, l as TraitInstance, m as TraitProvider, n as TraitProviderProps, u as useEntityBindingSnapshot, o as useEntitySchema, p as useEntitySchemaOptional, q as useServerBridge, r as useTrait, s as useTraitContext } from '../EntityBindingContext-ChCONv2W.cjs';
10
10
  import { i as UseOfflineExecutorResult, U as UseOfflineExecutorOptions } from '../offline-executor-DdV2o0Zu.cjs';
11
11
  export { N as NavigationContextValue, c as NavigationProvider, d as NavigationProviderProps, e as NavigationState, j as comparePathSpecificity, l as extractRouteParams, m as findPageByName, n as findPageByPath, o as getAllPages, p as getDefaultPage, q as matchPath, r as matchPathAmong, s as pathMatches, u as useActivePage, t as useInitPayload, v as useNavigateTo, w as useNavigation, x as useNavigationId, y as useNavigationState } from '../offline-executor-DdV2o0Zu.cjs';
12
12
  import '../verificationRegistry-DTrKDRoa.cjs';
@@ -6,7 +6,7 @@ export { a as CurrentPagePathContext, b as CurrentPagePathProvider, c as Current
6
6
  import { b as UserData } from '../UserContext-D566nfWA.js';
7
7
  export { U as UserContext, a as UserContextValue, c as UserProvider, d as UserProviderProps, u as useHasPermission, e as useHasRole, f as useUser, g as useUserForEvaluation } from '../UserContext-D566nfWA.js';
8
8
  import { E as EventBusContextType } from '../event-bus-types-Bl78kokd.js';
9
- export { A as AccessTokenProvider, E as EntityBindingContext, a as EntityBindingSource, b as EntitySchemaContextValue, c as EntitySchemaProvider, d as EntitySchemaProviderProps, S as SendEventResult, e as ServerBridgeContextValue, f as ServerBridgeProvider, g as ServerBridgeProviderProps, h as ServerBridgeTransport, i as ServerClientEffect, j as ServerResponseMeta, T as TraitContext, k as TraitContextValue, l as TraitInstance, m as TraitProvider, n as TraitProviderProps, u as useEntityBindingSnapshot, o as useEntitySchema, p as useEntitySchemaOptional, q as useServerBridge, r as useTrait, s as useTraitContext } from '../EntityBindingContext-C6FgxdfG.js';
9
+ export { A as AccessTokenProvider, E as EntityBindingContext, a as EntityBindingSource, b as EntitySchemaContextValue, c as EntitySchemaProvider, d as EntitySchemaProviderProps, S as SendEventResult, e as ServerBridgeContextValue, f as ServerBridgeProvider, g as ServerBridgeProviderProps, h as ServerBridgeTransport, i as ServerClientEffect, j as ServerResponseMeta, T as TraitContext, k as TraitContextValue, l as TraitInstance, m as TraitProvider, n as TraitProviderProps, u as useEntityBindingSnapshot, o as useEntitySchema, p as useEntitySchemaOptional, q as useServerBridge, r as useTrait, s as useTraitContext } from '../EntityBindingContext-ChCONv2W.js';
10
10
  import { i as UseOfflineExecutorResult, U as UseOfflineExecutorOptions } from '../offline-executor-DdV2o0Zu.js';
11
11
  export { N as NavigationContextValue, c as NavigationProvider, d as NavigationProviderProps, e as NavigationState, j as comparePathSpecificity, l as extractRouteParams, m as findPageByName, n as findPageByPath, o as getAllPages, p as getDefaultPage, q as matchPath, r as matchPathAmong, s as pathMatches, u as useActivePage, t as useInitPayload, v as useNavigateTo, w as useNavigation, x as useNavigationId, y as useNavigationState } from '../offline-executor-DdV2o0Zu.js';
12
12
  import '../verificationRegistry-Cwa52VyK.js';