@ai-matrx/design-system 0.48.9 → 0.48.10

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,22 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.48.10
4
+ ### Unreleased
5
+ ### page-pass shared fix (2026-09-27): a bottom sheet sizes to its content
6
+
7
+ - The adaptive `BottomSheet` has no 60dvh minimum (it keeps the 90dvh maximum): a two-action sheet was mostly empty and hosts overrode it with `min-h-0`. Proof: `bottom-sheet.test.tsx`, red on the old class.
8
+
9
+
10
+ ### (2026-09-27 — an empty table)
11
+
12
+ - **An empty table (nothing searched or filtered) draws no pager** — "0-0 of 0" and a disabled pager said nothing the empty state did not. A search or filter that matched nothing keeps its footer (it still says what was searched).
13
+ - **The empty / failed-read message cell keeps its room** (`data-matrx-table-message-cell`, excluded from the density padding rule that squeezed it flush under the header).
14
+ - Proof: `MatrxDataTable.cards-no-frame.test.tsx` "zero rows"; `MatrxDataTable.progressive.test.tsx` "an EMPTY table".
15
+
16
+ ### Consumer action
17
+
18
+ A test that expected the pager over an unfiltered empty table now expects none.
19
+
3
20
  ## 0.48.9
4
21
  ### ALC-15 round 5 (a host engine supersedes a built-in format; no JSON twins)
5
22
 
@@ -43905,7 +43905,9 @@ function BottomSheet({
43905
43905
  {
43906
43906
  className: cn(
43907
43907
  "fixed inset-x-0 bottom-0 z-[10000] mt-24 flex flex-col rounded-t-2xl overflow-hidden",
43908
- size === "full" ? "h-[92dvh]" : "min-h-[60dvh] max-h-[90dvh]",
43908
+ // Adaptive sizes to its content, up to 90dvh — never a 60dvh floor that
43909
+ // left a two-action sheet mostly empty (hosts overrode it with min-h-0).
43910
+ size === "full" ? "h-[92dvh]" : "max-h-[90dvh]",
43909
43911
  surface === "solid" && "border border-b-0 border-border bg-background shadow-2xl",
43910
43912
  contentClassName
43911
43913
  ),
@@ -51181,10 +51183,11 @@ function MatrxDataTableCore(coreProps) {
51181
51183
  },
51182
51184
  "matrx-column-spacer-end"
51183
51185
  ) : null
51184
- ] }, `sk-${i}`)) : readFailure ? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("tr", { children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("td", { colSpan: renderedColSpan, className: "px-0 py-12 text-center", children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { className: "sticky left-0 flex flex-col items-center gap-2 whitespace-normal px-4", style: { width: "100cqw", maxWidth: "100%" }, children: readFailure }) }) }) : paginated.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("tr", { children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
51186
+ ] }, `sk-${i}`)) : readFailure ? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("tr", { children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("td", { colSpan: renderedColSpan, "data-matrx-table-message-cell": true, className: "px-0 py-12 text-center", children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { className: "sticky left-0 flex flex-col items-center gap-2 whitespace-normal px-4", style: { width: "100cqw", maxWidth: "100%" }, children: readFailure }) }) }) : paginated.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("tr", { children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
51185
51187
  "td",
51186
51188
  {
51187
51189
  colSpan: renderedColSpan,
51190
+ "data-matrx-table-message-cell": true,
51188
51191
  className: "px-0 py-12 text-center",
51189
51192
  children: /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)("div", { "data-matrx-table-empty-state": true, className: "sticky left-0 flex flex-col items-center gap-2 whitespace-normal px-4", style: { width: "100cqw", maxWidth: "100%" }, children: [
51190
51193
  renderedEmptyState?.icon,
@@ -51471,32 +51474,38 @@ function MatrxDataTableCore(coreProps) {
51471
51474
  ] }) : !isLoading && appendQuery.pagination.totalItems !== void 0 && data.length === appendQuery.pagination.totalItems ? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("span", { className: "min-w-0 max-w-full break-words whitespace-normal px-3 text-xs text-muted-foreground sm:text-sm", children: "All rows loaded" }) : null
51472
51475
  ]
51473
51476
  }
51474
- ) : !hidePagination ? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(MatrxTableChrome, { part: "pagination", epoch: paginationEpoch, render: () => /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { className: "shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
51475
- GenericTablePagination,
51476
- {
51477
- totalItems,
51478
- ...paginationLabelFormat ? { labelFormat: paginationLabelFormat } : sourceTotal === void 0 ? {} : { labelFormat: (start, end, total) => `${(0, import_format5.formatCount)(start)}\u2013${(0, import_format5.formatCount)(end)} of ${(0, import_format5.formatCount)(total)} matching \xB7 ${(0, import_format5.formatCount)(data.length)} / ${(0, import_format5.formatCount)(sourceTotal)} loaded` },
51479
- ...localProgressiveEnabled ? { progressive: {
51480
- shownCount: progressiveRows.shownCount,
51481
- loadedCount: data.length,
51482
- hasMore: progressiveRows.hasMore,
51483
- onShowMore: () => void chromeLatest.current.showMore()
51484
- } } : {},
51485
- itemsPerPage: pageSize === 0 && allRowsAreLoaded ? 0 : effectivePageSize,
51486
- currentPage: safePage,
51487
- onPageChange: setPage,
51488
- onItemsPerPageChange: (n2) => {
51489
- setPageSize(n2);
51490
- if (!controlledQuery) setPage(1);
51491
- },
51492
- pageSizeOptions: pageSizeOptions.filter((size) => size > 0),
51493
- showAllOption: allRowsAreLoaded,
51494
- allValue: 0,
51495
- allOptionLabel: "All loaded",
51496
- compact: true,
51497
- hideEntriesInfo: false
51498
- }
51499
- ) }) }) : null,
51477
+ ) : !hidePagination && !(totalItems === 0 && !isLoading && !hasActiveFilters) ? (
51478
+ // No pager over a table that is simply EMPTY: "0-0 of 0" and a disabled pager
51479
+ // say nothing the empty state does not (page-pass 2026-09-27,
51480
+ // /education/quizzes). A search or filter that matched nothing keeps it — its
51481
+ // footer still says what was searched ("0–0 of 0 matching · 2 / 12 loaded").
51482
+ /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(MatrxTableChrome, { part: "pagination", epoch: paginationEpoch, render: () => /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { className: "shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
51483
+ GenericTablePagination,
51484
+ {
51485
+ totalItems,
51486
+ ...paginationLabelFormat ? { labelFormat: paginationLabelFormat } : sourceTotal === void 0 ? {} : { labelFormat: (start, end, total) => `${(0, import_format5.formatCount)(start)}\u2013${(0, import_format5.formatCount)(end)} of ${(0, import_format5.formatCount)(total)} matching \xB7 ${(0, import_format5.formatCount)(data.length)} / ${(0, import_format5.formatCount)(sourceTotal)} loaded` },
51487
+ ...localProgressiveEnabled ? { progressive: {
51488
+ shownCount: progressiveRows.shownCount,
51489
+ loadedCount: data.length,
51490
+ hasMore: progressiveRows.hasMore,
51491
+ onShowMore: () => void chromeLatest.current.showMore()
51492
+ } } : {},
51493
+ itemsPerPage: pageSize === 0 && allRowsAreLoaded ? 0 : effectivePageSize,
51494
+ currentPage: safePage,
51495
+ onPageChange: setPage,
51496
+ onItemsPerPageChange: (n2) => {
51497
+ setPageSize(n2);
51498
+ if (!controlledQuery) setPage(1);
51499
+ },
51500
+ pageSizeOptions: pageSizeOptions.filter((size) => size > 0),
51501
+ showAllOption: allRowsAreLoaded,
51502
+ allValue: 0,
51503
+ allOptionLabel: "All loaded",
51504
+ compact: true,
51505
+ hideEntriesInfo: false
51506
+ }
51507
+ ) }) })
51508
+ ) : null,
51500
51509
  selection && selectionCount > 0 ? /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(
51501
51510
  "div",
51502
51511
  {