@exxatdesignux/ui 0.5.2 → 0.5.3

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 (82) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/consumer-extras/cursor-rules/exxat-data-tables.mdc +8 -6
  3. package/consumer-extras/cursor-rules/exxat-ds-agents.mdc +2 -1
  4. package/consumer-extras/cursor-rules/exxat-hub-supported-views.mdc +54 -0
  5. package/consumer-extras/cursor-rules/exxat-nav-single-active.mdc +31 -0
  6. package/consumer-extras/cursor-skills/exxat-ds-skill/SKILL.md +8 -3
  7. package/consumer-extras/cursor-skills/exxat-ds-skill/references/data-table-pattern.md +15 -5
  8. package/consumer-extras/cursor-skills/exxat-token-economy/SKILL.md +11 -4
  9. package/consumer-extras/handbook/HANDBOOK.md +1 -1
  10. package/consumer-extras/handbook/reference-implementations.md +2 -2
  11. package/consumer-extras/patterns/data-views-pattern.md +6 -0
  12. package/consumer-extras/patterns/hub-supported-views-pattern.md +53 -0
  13. package/dist/components/data-table/index.js +13 -9
  14. package/dist/components/data-table/index.js.map +1 -1
  15. package/dist/components/data-table/pagination.js +13 -9
  16. package/dist/components/data-table/pagination.js.map +1 -1
  17. package/dist/components/data-views/hub-table.d.ts +8 -4
  18. package/dist/components/data-views/hub-table.js +25 -10
  19. package/dist/components/data-views/hub-table.js.map +1 -1
  20. package/dist/components/data-views/index.d.ts +1 -1
  21. package/dist/components/data-views/index.js +25 -10
  22. package/dist/components/data-views/index.js.map +1 -1
  23. package/dist/components/data-views/list-page-connected-view-body.d.ts +1 -1
  24. package/dist/components/data-views/list-page-connected-view-body.js +1 -0
  25. package/dist/components/data-views/list-page-connected-view-body.js.map +1 -1
  26. package/dist/components/table-properties/drawer-button.js +1 -0
  27. package/dist/components/table-properties/drawer-button.js.map +1 -1
  28. package/dist/components/table-properties/drawer.js +1 -0
  29. package/dist/components/table-properties/drawer.js.map +1 -1
  30. package/dist/components/table-properties/index.d.ts +1 -1
  31. package/dist/components/table-properties/index.js +1 -0
  32. package/dist/components/table-properties/index.js.map +1 -1
  33. package/dist/components/templates/index.d.ts +1 -1
  34. package/dist/components/templates/index.js +12 -2
  35. package/dist/components/templates/index.js.map +1 -1
  36. package/dist/components/templates/list-page.d.ts +4 -2
  37. package/dist/components/templates/list-page.js +12 -2
  38. package/dist/components/templates/list-page.js.map +1 -1
  39. package/dist/{data-list-view-registry-CyBoBML4.d.ts → data-list-view-registry-BstmlfQ3.d.ts} +16 -1
  40. package/dist/index.d.ts +2 -1
  41. package/dist/index.js +135 -13
  42. package/dist/index.js.map +1 -1
  43. package/dist/lib/data-list-view-registry.d.ts +1 -1
  44. package/dist/lib/data-list-view-registry.js +17 -1
  45. package/dist/lib/data-list-view-registry.js.map +1 -1
  46. package/dist/lib/data-list-view-surface.d.ts +1 -1
  47. package/dist/lib/data-list-view-surface.js +1 -0
  48. package/dist/lib/data-list-view-surface.js.map +1 -1
  49. package/dist/lib/list-page-table-properties.d.ts +1 -1
  50. package/dist/lib/list-page-table-properties.js +1 -0
  51. package/dist/lib/list-page-table-properties.js.map +1 -1
  52. package/dist/lib/nav-active.d.ts +38 -0
  53. package/dist/lib/nav-active.js +104 -0
  54. package/dist/lib/nav-active.js.map +1 -0
  55. package/package.json +1 -1
  56. package/src/components/data-table/index.tsx +25 -17
  57. package/src/components/data-views/hub-table.tsx +9 -3
  58. package/src/components/templates/list-page.tsx +9 -3
  59. package/src/index.ts +1 -0
  60. package/src/lib/data-list-view-registry.ts +31 -0
  61. package/src/lib/nav-active.ts +162 -0
  62. package/template/.claude/skills/exxat-ds-skill/SKILL.md +2 -1
  63. package/template/AGENTS.md +16 -1
  64. package/template/components/columns-client.tsx +3 -2
  65. package/template/components/columns-showcase.tsx +22 -18
  66. package/template/components/exxat-product-logo.tsx +1 -1
  67. package/template/components/library-table.tsx +62 -23
  68. package/template/components/new-library-item-form.tsx +0 -7
  69. package/template/components/product-wordmark.tsx +1 -1
  70. package/template/components/sidebar/app-sidebar.tsx +14 -106
  71. package/template/components/sidebar/secondary-nav.tsx +22 -4
  72. package/template/components/tokens-hub-auxiliary-views.tsx +301 -0
  73. package/template/components/tokens-themes-client.tsx +44 -16
  74. package/template/docs/HANDBOOK.md +1 -1
  75. package/template/docs/data-views-pattern.md +6 -0
  76. package/template/docs/glossary.md +2 -1
  77. package/template/docs/hub-supported-views-pattern.md +53 -0
  78. package/template/docs/reference-implementations.md +2 -2
  79. package/template/lib/full-hub-supported-views.ts +8 -0
  80. package/template/lib/library-supported-views.ts +5 -12
  81. package/template/package.json +1 -0
  82. package/tokens/hooks-index.json +2 -2
@@ -20,7 +20,7 @@ import '../../lib/table-properties-types.js';
20
20
  import '../data-table/use-table-state.js';
21
21
  import '../../lib/row-height.js';
22
22
  import '../../lib/data-list-view.js';
23
- import '../../data-list-view-registry-CyBoBML4.js';
23
+ import '../../data-list-view-registry-BstmlfQ3.js';
24
24
  import '../../lib/data-list-display-options.js';
25
25
  import '../../lib/list-page-table-properties.js';
26
26
  import '../ui/collapsible.js';
@@ -2283,13 +2283,15 @@ function useBulkBarFixedToTableScrollEl(scrollRef, active, fullWidth) {
2283
2283
  const scheduled = rafThrottle(apply);
2284
2284
  const ro = new ResizeObserver(scheduled);
2285
2285
  ro.observe(el);
2286
+ el.addEventListener("scroll", scheduled, { passive: true });
2286
2287
  window.addEventListener("resize", scheduled, { passive: true });
2287
- window.addEventListener("scroll", scheduled, { passive: true, capture: true });
2288
+ window.addEventListener("scroll", scheduled, { passive: true });
2288
2289
  return () => {
2289
2290
  scheduled.cancel();
2290
2291
  ro.disconnect();
2292
+ el.removeEventListener("scroll", scheduled);
2291
2293
  window.removeEventListener("resize", scheduled);
2292
- window.removeEventListener("scroll", scheduled, { capture: true });
2294
+ window.removeEventListener("scroll", scheduled);
2293
2295
  };
2294
2296
  }, [active, fullWidth, scrollRef]);
2295
2297
  return style;
@@ -2456,11 +2458,13 @@ function DataTableInner({
2456
2458
  };
2457
2459
  update();
2458
2460
  const scheduled = rafThrottle(update);
2459
- window.addEventListener("scroll", scheduled, { passive: true, capture: true });
2461
+ wrapEl.addEventListener("scroll", scheduled, { passive: true });
2462
+ window.addEventListener("scroll", scheduled, { passive: true });
2460
2463
  window.addEventListener("resize", scheduled, { passive: true });
2461
2464
  return () => {
2462
2465
  scheduled.cancel();
2463
- window.removeEventListener("scroll", scheduled, { capture: true });
2466
+ wrapEl.removeEventListener("scroll", scheduled);
2467
+ window.removeEventListener("scroll", scheduled);
2464
2468
  window.removeEventListener("resize", scheduled);
2465
2469
  };
2466
2470
  }, [showColumnHeaders, rows.length, displayCols.length]);
@@ -2897,11 +2901,11 @@ function DataTableInner({
2897
2901
  const rowPy = rowHeight === "compact" ? "py-1" : rowHeight === "comfortable" ? "py-4" : "py-2.5";
2898
2902
  const cs = cellStyle(col.key);
2899
2903
  const tdBase = cn(
2900
- `px-3 ${rowPy} align-middle`,
2904
+ `px-3 ${rowPy} align-middle max-w-0`,
2901
2905
  showGridlines && !isEdgePin && "border-e border-border last:border-e-0",
2902
2906
  "border-b border-border group-last/row:border-b-0",
2903
2907
  isPinned && [
2904
- "z-20 pinned-cell",
2908
+ "z-20 pinned-cell relative",
2905
2909
  "bg-dt-row-bg",
2906
2910
  "group-data-[state=selected]/row:bg-dt-row-selected",
2907
2911
  "group-hover/row:bg-dt-row-hover",
@@ -2951,17 +2955,17 @@ function DataTableInner({
2951
2955
  wrap && "[&_.truncate]:!whitespace-normal [&_.truncate]:!overflow-visible [&_.truncate]:!text-clip"
2952
2956
  ),
2953
2957
  style: tdStyle,
2954
- children: col.cell(row, {
2958
+ children: /* @__PURE__ */ jsx("div", { className: "min-w-0 overflow-hidden", children: col.cell(row, {
2955
2959
  rowIndex,
2956
2960
  selected: isSelected,
2957
2961
  onSelect: (checked) => checked ? setSelected((prev) => /* @__PURE__ */ new Set([...prev, rowId])) : toggleRow(rowId)
2958
- })
2962
+ }) })
2959
2963
  },
2960
2964
  col.key
2961
2965
  );
2962
2966
  }
2963
2967
  const rawVal = String(row[col.key] ?? "");
2964
- return /* @__PURE__ */ jsx("td", { className: cn(tdBase, "text-sm text-foreground/80"), style: tdStyle, children: /* @__PURE__ */ jsx("span", { className: wrap ? "whitespace-normal" : "block truncate", title: !wrap ? rawVal : void 0, children: rawVal }) }, col.key);
2968
+ return /* @__PURE__ */ jsx("td", { className: cn(tdBase, "text-sm text-foreground/80"), style: tdStyle, children: /* @__PURE__ */ jsx("div", { className: "min-w-0 overflow-hidden", children: /* @__PURE__ */ jsx("span", { className: wrap ? "whitespace-normal" : "block truncate", title: !wrap ? rawVal : void 0, children: rawVal }) }) }, col.key);
2965
2969
  })
2966
2970
  },
2967
2971
  String(rowId)
@@ -3289,6 +3293,16 @@ var BY_VALUE = new Map(
3289
3293
  DEFINITIONS.map((d) => [d.value, d])
3290
3294
  );
3291
3295
  var DATA_LIST_VIEW_REGISTRY = DEFINITIONS;
3296
+ var FULL_HUB_SUPPORTED_VIEWS = [
3297
+ "table",
3298
+ "list",
3299
+ "board",
3300
+ "dashboard",
3301
+ "folder",
3302
+ "panel",
3303
+ "tree-panel"
3304
+ ];
3305
+ DATA_LIST_VIEW_REGISTRY.map((d) => d.value);
3292
3306
  function dataListViewDefinition(view) {
3293
3307
  const def = BY_VALUE.get(view);
3294
3308
  if (!def) {
@@ -5525,7 +5539,7 @@ function HubTable({
5525
5539
  columns,
5526
5540
  view,
5527
5541
  onViewChange,
5528
- supportedViewTypes,
5542
+ supportedViewTypes: supportedViewTypesProp,
5529
5543
  hubLabel,
5530
5544
  lifecycleTabLabel,
5531
5545
  searchAriaLabel,
@@ -5561,6 +5575,7 @@ function HubTable({
5561
5575
  boardColumnCountBadgeClassName,
5562
5576
  boardEmptyColumnLabel
5563
5577
  }) {
5578
+ const supportedViewTypes = supportedViewTypesProp ?? FULL_HUB_SUPPORTED_VIEWS;
5564
5579
  const filterFields = React10.useMemo(() => columnsToFilterFields(columns), [columns]);
5565
5580
  const fieldDefinitions = React10.useMemo(() => columnsToFieldDefinitions(columns), [columns]);
5566
5581
  const resolveColumnLabel = React10.useCallback(