@ai-matrx/design-system 0.17.2 → 0.17.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.17.3 — 2026-09-12
4
+
5
+ `MatrxDataTable` now keeps a fixed-height append status area at the bottom of
6
+ automatic and manual append surfaces. Active loads show an accessible spinner
7
+ without replacing already loaded rows or shifting the footer, including in
8
+ dark mode and reduced-motion environments.
9
+
10
+ ### Consumer action
11
+
12
+ Update to 0.17.3 for visible, layout-stable feedback while additional table
13
+ rows load. No query, pagination, or API changes are required.
14
+
3
15
  ## 0.17.2 — 2026-09-12
4
16
 
5
17
  `MatrxDataTable` now resets the vertical scroll position of both its desktop
@@ -6516,7 +6516,7 @@ function MatrxDataTableCore({
6516
6516
  mobileCardsClass
6517
6517
  ),
6518
6518
  children: [
6519
- isFetching && !isLoading ? /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
6519
+ isFetching && !isLoading && appendQuery === null ? /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
6520
6520
  "div",
6521
6521
  {
6522
6522
  role: "status",
@@ -6611,7 +6611,7 @@ function MatrxDataTableCore({
6611
6611
  resolve: resolveHierarchyMove
6612
6612
  }
6613
6613
  ) : null,
6614
- isFetching && !isLoading ? /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
6614
+ isFetching && !isLoading && appendQuery === null ? /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
6615
6615
  "div",
6616
6616
  {
6617
6617
  role: "status",
@@ -6972,13 +6972,56 @@ function MatrxDataTableCore({
6972
6972
  }
6973
6973
  ) : null
6974
6974
  ] }),
6975
- appendQuery ? /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { "data-matrx-table-footer": true, className: "flex min-h-16 shrink-0 items-center justify-between gap-3 border-t border-border px-3 py-2", "aria-busy": isLoading || isFetching, children: [
6976
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { role: "status", "aria-live": "polite", className: "text-xs text-muted-foreground", children: [
6977
- isFetching ? "Loading more rows\u2026" : isLoading ? "Loading rows\u2026" : `${data.length.toLocaleString()} loaded${appendQuery.pagination.totalItems === void 0 ? "" : ` of ${appendQuery.pagination.totalItems.toLocaleString()}`}`,
6978
- scrollPagination.error ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("p", { role: "alert", className: "text-destructive", children: scrollPagination.error.message }) : null
6979
- ] }),
6980
- scrollPagination.error && !appendQuery.pagination.hasNextPage ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Button, { type: "button", variant: "outline", onClick: appendQuery.pagination.refresh, children: "Reload rows" }) : appendQuery.pagination.hasNextPage || scrollPagination.error ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Button, { type: "button", variant: "outline", disabled: isLoading || isFetching, onClick: () => void scrollPagination.requestNextPage(), children: scrollPagination.error ? "Retry" : "Load more" }) : !isLoading ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "text-xs text-muted-foreground", children: "All rows loaded" }) : null
6981
- ] }) : !hidePagination && totalItems > 0 ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
6975
+ appendQuery ? /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
6976
+ "div",
6977
+ {
6978
+ "data-matrx-table-footer": true,
6979
+ className: "flex min-h-16 shrink-0 items-center justify-between gap-3 border-t border-border px-3 py-2",
6980
+ "aria-busy": isLoading || isFetching,
6981
+ children: [
6982
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
6983
+ "div",
6984
+ {
6985
+ role: "status",
6986
+ "aria-live": "polite",
6987
+ className: "flex min-w-0 flex-1 items-center gap-2 text-xs text-muted-foreground",
6988
+ children: [
6989
+ isLoading || isFetching ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
6990
+ Loader2,
6991
+ {
6992
+ "data-matrx-table-append-loader": true,
6993
+ "aria-hidden": "true",
6994
+ className: "h-5 w-5 shrink-0 animate-spin text-primary motion-reduce:animate-none"
6995
+ }
6996
+ ) : null,
6997
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "min-w-0", children: [
6998
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("p", { className: "break-words font-medium text-foreground", children: isFetching ? "Loading more rows\u2026" : isLoading ? "Loading rows\u2026" : `${data.length.toLocaleString()} loaded${appendQuery.pagination.totalItems === void 0 ? "" : ` of ${appendQuery.pagination.totalItems.toLocaleString()}`}` }),
6999
+ scrollPagination.error ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("p", { role: "alert", className: "break-words text-destructive", children: scrollPagination.error.message }) : null
7000
+ ] })
7001
+ ]
7002
+ }
7003
+ ),
7004
+ scrollPagination.error && !appendQuery.pagination.hasNextPage ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
7005
+ Button,
7006
+ {
7007
+ type: "button",
7008
+ variant: "outline",
7009
+ onClick: appendQuery.pagination.refresh,
7010
+ children: "Reload rows"
7011
+ }
7012
+ ) : appendQuery.pagination.hasNextPage || scrollPagination.error ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
7013
+ Button,
7014
+ {
7015
+ type: "button",
7016
+ variant: "outline",
7017
+ disabled: isLoading || isFetching,
7018
+ onClick: () => void scrollPagination.requestNextPage(),
7019
+ children: scrollPagination.error ? "Retry" : "Load more"
7020
+ }
7021
+ ) : !isLoading ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "text-xs text-muted-foreground", children: "All rows loaded" }) : null
7022
+ ]
7023
+ }
7024
+ ) : !hidePagination && totalItems > 0 ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
6982
7025
  GenericTablePagination,
6983
7026
  {
6984
7027
  totalItems,