@flamingo-stack/openframe-frontend-core 0.0.591 → 0.0.592-snapshot.20260905013229

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 (142) hide show
  1. package/dist/{chunk-VGBTCUPG.js → chunk-2645GIM2.js} +2 -2
  2. package/dist/{chunk-BQE4HTDR.js → chunk-2JNCZDJR.js} +2 -2
  3. package/dist/{chunk-USDG6IWK.cjs → chunk-2KISKWOY.cjs} +7 -7
  4. package/dist/{chunk-USDG6IWK.cjs.map → chunk-2KISKWOY.cjs.map} +1 -1
  5. package/dist/{chunk-OBJEFMOI.cjs → chunk-2PMCHL37.cjs} +66 -66
  6. package/dist/{chunk-OBJEFMOI.cjs.map → chunk-2PMCHL37.cjs.map} +1 -1
  7. package/dist/{chunk-NXYOUBOL.cjs → chunk-2VOBGNEY.cjs} +21 -21
  8. package/dist/{chunk-NXYOUBOL.cjs.map → chunk-2VOBGNEY.cjs.map} +1 -1
  9. package/dist/{chunk-LUWFLC3T.js → chunk-3ZHDEZQB.js} +3 -3
  10. package/dist/{chunk-SW3CZ2KS.cjs → chunk-4DRZZWC7.cjs} +152 -86
  11. package/dist/chunk-4DRZZWC7.cjs.map +1 -0
  12. package/dist/{chunk-XK7SLEZB.cjs → chunk-5SGTTSQN.cjs} +3 -3
  13. package/dist/{chunk-XK7SLEZB.cjs.map → chunk-5SGTTSQN.cjs.map} +1 -1
  14. package/dist/{chunk-YMAHVHCX.cjs → chunk-BZEWPW5A.cjs} +3 -3
  15. package/dist/{chunk-YMAHVHCX.cjs.map → chunk-BZEWPW5A.cjs.map} +1 -1
  16. package/dist/{chunk-FHKP4H6N.cjs → chunk-CMAO4PPL.cjs} +5 -5
  17. package/dist/{chunk-FHKP4H6N.cjs.map → chunk-CMAO4PPL.cjs.map} +1 -1
  18. package/dist/{chunk-ZZF6Z7KB.cjs → chunk-FKXDDJEQ.cjs} +11 -11
  19. package/dist/{chunk-ZZF6Z7KB.cjs.map → chunk-FKXDDJEQ.cjs.map} +1 -1
  20. package/dist/{chunk-E455M3WJ.js → chunk-GEP3O6NU.js} +4 -4
  21. package/dist/{chunk-OKWGSJAI.js → chunk-GGQZBSFN.js} +1 -1
  22. package/dist/chunk-GGQZBSFN.js.map +1 -0
  23. package/dist/{chunk-RGCBUNMJ.js → chunk-GXPOEAXL.js} +2 -2
  24. package/dist/{chunk-RNXY35DZ.cjs → chunk-H64ZHSYR.cjs} +1 -1
  25. package/dist/chunk-H64ZHSYR.cjs.map +1 -0
  26. package/dist/{chunk-AMCARR6Y.cjs → chunk-HMRWH2HC.cjs} +15 -15
  27. package/dist/{chunk-AMCARR6Y.cjs.map → chunk-HMRWH2HC.cjs.map} +1 -1
  28. package/dist/{chunk-ZFHIMK4W.js → chunk-J3D2WHWC.js} +5 -5
  29. package/dist/{chunk-T6RY2MC6.js → chunk-KPO6TWEV.js} +8 -8
  30. package/dist/{chunk-CWO3YFVZ.js → chunk-LRQCKSZC.js} +2 -2
  31. package/dist/{chunk-2TJSDSXW.js → chunk-MOHSA65M.js} +2 -2
  32. package/dist/{chunk-4UP2SGSO.js → chunk-MPNCYET3.js} +3 -3
  33. package/dist/{chunk-U2XRBHBX.js → chunk-MV3XJXPG.js} +9 -9
  34. package/dist/{chunk-JHVCH3CK.cjs → chunk-NEFNARFF.cjs} +6 -6
  35. package/dist/{chunk-JHVCH3CK.cjs.map → chunk-NEFNARFF.cjs.map} +1 -1
  36. package/dist/{chunk-HV6MO4HG.cjs → chunk-NRHU4V3E.cjs} +37 -37
  37. package/dist/{chunk-HV6MO4HG.cjs.map → chunk-NRHU4V3E.cjs.map} +1 -1
  38. package/dist/{chunk-B7ZCBGUN.cjs → chunk-O4VZOA2Q.cjs} +3 -3
  39. package/dist/{chunk-B7ZCBGUN.cjs.map → chunk-O4VZOA2Q.cjs.map} +1 -1
  40. package/dist/{chunk-YEKPHSWC.cjs → chunk-OAAQKMMU.cjs} +22 -22
  41. package/dist/{chunk-YEKPHSWC.cjs.map → chunk-OAAQKMMU.cjs.map} +1 -1
  42. package/dist/{chunk-DKVNW2QD.cjs → chunk-QHTDFF52.cjs} +3 -3
  43. package/dist/{chunk-DKVNW2QD.cjs.map → chunk-QHTDFF52.cjs.map} +1 -1
  44. package/dist/{chunk-LL6J6N76.js → chunk-R2J6XMP6.js} +3 -3
  45. package/dist/{chunk-WKOJL6A2.cjs → chunk-S6G6KJ57.cjs} +10 -10
  46. package/dist/{chunk-WKOJL6A2.cjs.map → chunk-S6G6KJ57.cjs.map} +1 -1
  47. package/dist/{chunk-VGY7D6LG.cjs → chunk-STYNZ4QM.cjs} +3 -3
  48. package/dist/{chunk-VGY7D6LG.cjs.map → chunk-STYNZ4QM.cjs.map} +1 -1
  49. package/dist/{chunk-BOED5ISE.js → chunk-UG27ITVP.js} +6 -6
  50. package/dist/{chunk-AZ4A4RBL.cjs → chunk-VDAMJEMR.cjs} +60 -60
  51. package/dist/{chunk-AZ4A4RBL.cjs.map → chunk-VDAMJEMR.cjs.map} +1 -1
  52. package/dist/{chunk-ZYA6274A.js → chunk-VUGQ3Z6E.js} +110 -44
  53. package/dist/chunk-VUGQ3Z6E.js.map +1 -0
  54. package/dist/{chunk-5SJSG5RV.cjs → chunk-WY2GQ62H.cjs} +8 -8
  55. package/dist/{chunk-5SJSG5RV.cjs.map → chunk-WY2GQ62H.cjs.map} +1 -1
  56. package/dist/{chunk-CXILZQFT.cjs → chunk-WZHARPOT.cjs} +19 -19
  57. package/dist/{chunk-CXILZQFT.cjs.map → chunk-WZHARPOT.cjs.map} +1 -1
  58. package/dist/{chunk-WMZ5AUTB.js → chunk-WZJOILPU.js} +2 -2
  59. package/dist/{chunk-QVAKJB64.js → chunk-X7XO73M5.js} +2 -2
  60. package/dist/{chunk-ALTSOKHP.js → chunk-XH5QBMXD.js} +2 -2
  61. package/dist/{chunk-WIMGAPVH.js → chunk-YAZY24ZK.js} +4 -4
  62. package/dist/{chunk-OS72RV57.cjs → chunk-YSJ4TA6V.cjs} +3 -3
  63. package/dist/{chunk-OS72RV57.cjs.map → chunk-YSJ4TA6V.cjs.map} +1 -1
  64. package/dist/{chunk-U3V4TPT5.js → chunk-ZR72HRUJ.js} +3 -3
  65. package/dist/{chunk-BATTVHZT.js → chunk-ZZHHKE2Q.js} +3 -3
  66. package/dist/components/case-studies/index.cjs +10 -10
  67. package/dist/components/case-studies/index.js +4 -4
  68. package/dist/components/contact/index.cjs +5 -5
  69. package/dist/components/contact/index.js +4 -4
  70. package/dist/components/docs/index.cjs +8 -8
  71. package/dist/components/docs/index.js +7 -7
  72. package/dist/components/embeds/index.cjs +5 -5
  73. package/dist/components/embeds/index.js +4 -4
  74. package/dist/components/faq/index.cjs +6 -6
  75. package/dist/components/faq/index.js +5 -5
  76. package/dist/components/features/index.cjs +4 -4
  77. package/dist/components/features/index.js +3 -3
  78. package/dist/components/help-center-pages/index.cjs +27 -27
  79. package/dist/components/help-center-pages/index.js +18 -18
  80. package/dist/components/index.cjs +40 -40
  81. package/dist/components/index.js +18 -18
  82. package/dist/components/meeting-scheduler/index.cjs +31 -31
  83. package/dist/components/meeting-scheduler/index.js +5 -5
  84. package/dist/components/navigation/index.cjs +7 -7
  85. package/dist/components/navigation/index.js +6 -6
  86. package/dist/components/onboarding-guides/index.cjs +8 -8
  87. package/dist/components/onboarding-guides/index.js +7 -7
  88. package/dist/components/related-content/index.cjs +4 -4
  89. package/dist/components/related-content/index.js +3 -3
  90. package/dist/components/tickets/index.cjs +9 -9
  91. package/dist/components/tickets/index.js +8 -8
  92. package/dist/components/ui/data-table/data-table-body.d.ts +18 -1
  93. package/dist/components/ui/data-table/data-table-body.d.ts.map +1 -1
  94. package/dist/components/ui/data-table/data-table-row.d.ts +13 -1
  95. package/dist/components/ui/data-table/data-table-row.d.ts.map +1 -1
  96. package/dist/components/ui/data-table/data-table-skeleton.d.ts +9 -1
  97. package/dist/components/ui/data-table/data-table-skeleton.d.ts.map +1 -1
  98. package/dist/components/ui/data-table/index.d.ts +1 -1
  99. package/dist/components/ui/entity-image.d.ts +12 -1
  100. package/dist/components/ui/entity-image.d.ts.map +1 -1
  101. package/dist/components/ui/index.cjs +4 -4
  102. package/dist/components/ui/index.js +3 -3
  103. package/dist/hooks/index.cjs +3 -3
  104. package/dist/hooks/index.js +2 -2
  105. package/dist/index.cjs +8 -8
  106. package/dist/index.js +7 -7
  107. package/dist/utils/index.cjs.map +1 -1
  108. package/dist/utils/index.js.map +1 -1
  109. package/dist/utils/search-params.cjs.map +1 -1
  110. package/dist/utils/search-params.js.map +1 -1
  111. package/package.json +1 -1
  112. package/src/__tests__/data-table-row-height.test.tsx +170 -0
  113. package/src/__tests__/mlg-platform-leaves.test.ts +1 -1
  114. package/src/components/ui/data-table/data-table-body.tsx +46 -7
  115. package/src/components/ui/data-table/data-table-row.tsx +38 -8
  116. package/src/components/ui/data-table/data-table-skeleton.tsx +27 -3
  117. package/src/components/ui/entity-image.tsx +19 -3
  118. package/src/hooks/state/__tests__/use-api-params.test.ts +1 -1
  119. package/src/utils/search-params.ts +4 -4
  120. package/dist/chunk-OKWGSJAI.js.map +0 -1
  121. package/dist/chunk-RNXY35DZ.cjs.map +0 -1
  122. package/dist/chunk-SW3CZ2KS.cjs.map +0 -1
  123. package/dist/chunk-ZYA6274A.js.map +0 -1
  124. /package/dist/{chunk-VGBTCUPG.js.map → chunk-2645GIM2.js.map} +0 -0
  125. /package/dist/{chunk-BQE4HTDR.js.map → chunk-2JNCZDJR.js.map} +0 -0
  126. /package/dist/{chunk-LUWFLC3T.js.map → chunk-3ZHDEZQB.js.map} +0 -0
  127. /package/dist/{chunk-E455M3WJ.js.map → chunk-GEP3O6NU.js.map} +0 -0
  128. /package/dist/{chunk-RGCBUNMJ.js.map → chunk-GXPOEAXL.js.map} +0 -0
  129. /package/dist/{chunk-ZFHIMK4W.js.map → chunk-J3D2WHWC.js.map} +0 -0
  130. /package/dist/{chunk-T6RY2MC6.js.map → chunk-KPO6TWEV.js.map} +0 -0
  131. /package/dist/{chunk-CWO3YFVZ.js.map → chunk-LRQCKSZC.js.map} +0 -0
  132. /package/dist/{chunk-2TJSDSXW.js.map → chunk-MOHSA65M.js.map} +0 -0
  133. /package/dist/{chunk-4UP2SGSO.js.map → chunk-MPNCYET3.js.map} +0 -0
  134. /package/dist/{chunk-U2XRBHBX.js.map → chunk-MV3XJXPG.js.map} +0 -0
  135. /package/dist/{chunk-LL6J6N76.js.map → chunk-R2J6XMP6.js.map} +0 -0
  136. /package/dist/{chunk-BOED5ISE.js.map → chunk-UG27ITVP.js.map} +0 -0
  137. /package/dist/{chunk-WMZ5AUTB.js.map → chunk-WZJOILPU.js.map} +0 -0
  138. /package/dist/{chunk-QVAKJB64.js.map → chunk-X7XO73M5.js.map} +0 -0
  139. /package/dist/{chunk-ALTSOKHP.js.map → chunk-XH5QBMXD.js.map} +0 -0
  140. /package/dist/{chunk-WIMGAPVH.js.map → chunk-YAZY24ZK.js.map} +0 -0
  141. /package/dist/{chunk-U3V4TPT5.js.map → chunk-ZR72HRUJ.js.map} +0 -0
  142. /package/dist/{chunk-BATTVHZT.js.map → chunk-ZZHHKE2Q.js.map} +0 -0
@@ -22,7 +22,7 @@ import {
22
22
  useLocalStorage,
23
23
  useNotificationPermission,
24
24
  useToast
25
- } from "./chunk-2TJSDSXW.js";
25
+ } from "./chunk-MOHSA65M.js";
26
26
  import {
27
27
  Pagination
28
28
  } from "./chunk-GBON2OCG.js";
@@ -9315,7 +9315,8 @@ function ListPageLayout({
9315
9315
  // src/components/ui/entity-image.tsx
9316
9316
  import React7 from "react";
9317
9317
  import { jsx as jsx81 } from "react/jsx-runtime";
9318
- function EntityImage({ src, alt, fallbackText, className }) {
9318
+ var ENTITY_IMAGE_SIZE = "size-[52px] md:size-[60px]";
9319
+ function EntityImage({ src, alt, fallbackText, sizeClassName, className }) {
9319
9320
  const resolvedSrc = useAuthedImageSrc(src);
9320
9321
  const [failedSrc, setFailedSrc] = React7.useState(null);
9321
9322
  const imageFailed = resolvedSrc !== void 0 && failedSrc === resolvedSrc;
@@ -9327,7 +9328,8 @@ function EntityImage({ src, alt, fallbackText, className }) {
9327
9328
  {
9328
9329
  "aria-label": alt,
9329
9330
  className: cn(
9330
- "flex size-[52px] shrink-0 select-none items-center justify-center rounded-md border border-ods-border bg-ods-bg text-ods-text-secondary text-h4 md:size-[60px]",
9331
+ "flex shrink-0 select-none items-center justify-center rounded-md border border-ods-border bg-ods-bg text-ods-text-secondary text-h4",
9332
+ sizeClassName ?? ENTITY_IMAGE_SIZE,
9331
9333
  className
9332
9334
  ),
9333
9335
  children: initials || "?"
@@ -9341,7 +9343,8 @@ function EntityImage({ src, alt, fallbackText, className }) {
9341
9343
  alt: alt ?? "",
9342
9344
  onError: () => setFailedSrc(resolvedSrc),
9343
9345
  className: cn(
9344
- "size-[52px] shrink-0 rounded-md border border-ods-border object-contain md:size-[60px]",
9346
+ "shrink-0 rounded-md border border-ods-border object-contain",
9347
+ sizeClassName ?? ENTITY_IMAGE_SIZE,
9345
9348
  className
9346
9349
  ),
9347
9350
  width: 60,
@@ -13936,7 +13939,7 @@ import { Fragment as Fragment18, jsx as jsx128, jsxs as jsxs98 } from "react/jsx
13936
13939
  var ROW_HEIGHT_DESKTOP2 = "h-[66px] md:h-[78px]";
13937
13940
  var ROW_HEIGHT_MOBILE2 = "h-[66px]";
13938
13941
  var ROW_SHELL_CLASSES = "items-center gap-[var(--spacing-system-mf)] px-[var(--spacing-system-mf)]";
13939
- function DataTableSkeleton({ rows = 10, className, rowClassName }) {
13942
+ function DataTableSkeleton({ rows = 10, className, rowClassName, rowHeightClassName }) {
13940
13943
  const table = useDataTableContext();
13941
13944
  const columns = table.getVisibleFlatColumns();
13942
13945
  const firstColumnId = columns[0]?.id;
@@ -13945,36 +13948,60 @@ function DataTableSkeleton({ rows = 10, className, rowClassName }) {
13945
13948
  {
13946
13949
  className: cn(
13947
13950
  "relative animate-pulse overflow-hidden rounded-md border border-ods-border bg-ods-card",
13951
+ // The slot height sits on the card, matching a real row.
13952
+ rowHeightClassName,
13948
13953
  className
13949
13954
  ),
13950
13955
  children: [
13951
- /* @__PURE__ */ jsx128("div", { className: cn("hidden py-0 md:flex", ROW_SHELL_CLASSES, ROW_HEIGHT_DESKTOP2, rowClassName), children: columns.map((column) => {
13952
- const meta = column.columnDef.meta;
13953
- return /* @__PURE__ */ jsxs98(
13954
- "div",
13955
- {
13956
- className: cn(
13957
- "flex shrink-0 flex-col justify-center",
13958
- meta?.width || "flex-1",
13959
- // Same responsive hiding the real header and row apply.
13960
- // Without it a `hideAt` column was drawn in the skeleton and
13961
- // absent from the loaded table, so below that breakpoint the
13962
- // remaining columns were sized against a different total and
13963
- // the whole row re-laid-out the moment data arrived.
13964
- getHideClasses2(meta?.hideAt)
13965
- ),
13966
- children: [
13967
- /* @__PURE__ */ jsx128("div", { className: "mb-[var(--spacing-system-xxs)] h-5 w-3/4 rounded-sm bg-ods-bg-surface" }),
13968
- index % 2 === 0 && column.id === firstColumnId && /* @__PURE__ */ jsx128("div", { className: "h-4 w-1/2 rounded-sm bg-ods-bg-surface opacity-60" })
13969
- ]
13970
- },
13971
- column.id
13972
- );
13973
- }) }),
13974
- /* @__PURE__ */ jsx128("div", { className: cn("flex justify-start py-0 md:hidden", ROW_SHELL_CLASSES, ROW_HEIGHT_MOBILE2, rowClassName), children: /* @__PURE__ */ jsxs98("div", { className: "flex min-w-0 flex-1 flex-col justify-center py-[var(--spacing-system-sf)]", children: [
13975
- /* @__PURE__ */ jsx128("div", { className: "mb-[var(--spacing-system-xsf)] h-4 w-3/4 rounded-sm bg-ods-bg-surface" }),
13976
- /* @__PURE__ */ jsx128("div", { className: "h-3 w-1/2 rounded-sm bg-ods-bg-surface opacity-60" })
13977
- ] }) })
13956
+ /* @__PURE__ */ jsx128(
13957
+ "div",
13958
+ {
13959
+ className: cn(
13960
+ "hidden py-0 md:flex",
13961
+ ROW_SHELL_CLASSES,
13962
+ rowHeightClassName ? "h-full" : ROW_HEIGHT_DESKTOP2,
13963
+ rowClassName
13964
+ ),
13965
+ children: columns.map((column) => {
13966
+ const meta = column.columnDef.meta;
13967
+ return /* @__PURE__ */ jsxs98(
13968
+ "div",
13969
+ {
13970
+ className: cn(
13971
+ "flex shrink-0 flex-col justify-center",
13972
+ meta?.width || "flex-1",
13973
+ // Same responsive hiding the real header and row apply.
13974
+ // Without it a `hideAt` column was drawn in the skeleton and
13975
+ // absent from the loaded table, so below that breakpoint the
13976
+ // remaining columns were sized against a different total and
13977
+ // the whole row re-laid-out the moment data arrived.
13978
+ getHideClasses2(meta?.hideAt)
13979
+ ),
13980
+ children: [
13981
+ /* @__PURE__ */ jsx128("div", { className: "mb-[var(--spacing-system-xxs)] h-5 w-3/4 rounded-sm bg-ods-bg-surface" }),
13982
+ index % 2 === 0 && column.id === firstColumnId && /* @__PURE__ */ jsx128("div", { className: "h-4 w-1/2 rounded-sm bg-ods-bg-surface opacity-60" })
13983
+ ]
13984
+ },
13985
+ column.id
13986
+ );
13987
+ })
13988
+ }
13989
+ ),
13990
+ /* @__PURE__ */ jsx128(
13991
+ "div",
13992
+ {
13993
+ className: cn(
13994
+ "flex justify-start py-0 md:hidden",
13995
+ ROW_SHELL_CLASSES,
13996
+ rowHeightClassName ? "h-full" : ROW_HEIGHT_MOBILE2,
13997
+ rowClassName
13998
+ ),
13999
+ children: /* @__PURE__ */ jsxs98("div", { className: "flex min-w-0 flex-1 flex-col justify-center py-[var(--spacing-system-sf)]", children: [
14000
+ /* @__PURE__ */ jsx128("div", { className: "mb-[var(--spacing-system-xsf)] h-4 w-3/4 rounded-sm bg-ods-bg-surface" }),
14001
+ /* @__PURE__ */ jsx128("div", { className: "h-3 w-1/2 rounded-sm bg-ods-bg-surface opacity-60" })
14002
+ ] })
14003
+ }
14004
+ )
13978
14005
  ]
13979
14006
  },
13980
14007
  index
@@ -13983,7 +14010,16 @@ function DataTableSkeleton({ rows = 10, className, rowClassName }) {
13983
14010
 
13984
14011
  // src/components/ui/data-table/data-table-row.tsx
13985
14012
  import { Fragment as Fragment19, jsx as jsx129, jsxs as jsxs99 } from "react/jsx-runtime";
13986
- function DataTableRowImpl({ row, onClick, href, compact, autoHeight, className, subRow }) {
14013
+ function DataTableRowImpl({
14014
+ row,
14015
+ onClick,
14016
+ href,
14017
+ compact,
14018
+ autoHeight,
14019
+ rowHeightClassName,
14020
+ className,
14021
+ subRow
14022
+ }) {
13987
14023
  const hasSubRow = subRow != null && subRow !== false;
13988
14024
  const isLinkMode = Boolean(href) && !onClick;
13989
14025
  const isWholeCardLink = isLinkMode && !hasSubRow;
@@ -14004,7 +14040,11 @@ function DataTableRowImpl({ row, onClick, href, compact, autoHeight, className,
14004
14040
  [onClick, row.original, isLinkMode]
14005
14041
  );
14006
14042
  const containerClassName = cn(
14007
- "block overflow-hidden rounded-md border border-ods-border bg-ods-card text-inherit no-underline",
14043
+ "overflow-hidden rounded-md border border-ods-border bg-ods-card text-inherit no-underline",
14044
+ // A stated slot height goes HERE, on the card, with the cells flexing to
14045
+ // fill whatever the sub-row leaves. `border-box` sizing means the number a
14046
+ // caller writes is the number the row occupies, borders included.
14047
+ rowHeightClassName ? `flex flex-col ${rowHeightClassName}` : "block",
14008
14048
  // With a sub-row the link wraps only the cells, so keep the clickable affordance off the whole card.
14009
14049
  (onClick || isWholeCardLink) && "cursor-pointer transition-colors hover:bg-ods-bg-active",
14010
14050
  className
@@ -14015,7 +14055,7 @@ function DataTableRowImpl({ row, onClick, href, compact, autoHeight, className,
14015
14055
  className: cn(
14016
14056
  "flex",
14017
14057
  ROW_SHELL_CLASSES,
14018
- compact ? "py-[var(--spacing-system-xsf)]" : autoHeight ? "min-h-[66px] py-[var(--spacing-system-sf)] md:min-h-[78px]" : `py-0 ${ROW_HEIGHT_DESKTOP2}`,
14058
+ rowHeightClassName ? "min-h-0 flex-1 py-0" : compact ? "py-[var(--spacing-system-xsf)]" : autoHeight ? "min-h-[66px] py-[var(--spacing-system-sf)] md:min-h-[78px]" : `py-0 ${ROW_HEIGHT_DESKTOP2}`,
14019
14059
  hasSubRow && "border-b border-ods-border"
14020
14060
  ),
14021
14061
  children: row.getVisibleCells().map((cell) => {
@@ -14062,7 +14102,10 @@ function DataTableRowImpl({ row, onClick, href, compact, autoHeight, className,
14062
14102
  {
14063
14103
  href,
14064
14104
  prefetch: false,
14065
- className: "block cursor-pointer text-inherit no-underline transition-colors hover:bg-ods-bg-active",
14105
+ className: cn(
14106
+ "cursor-pointer text-inherit no-underline transition-colors hover:bg-ods-bg-active",
14107
+ rowHeightClassName ? "flex min-h-0 flex-1 flex-col" : "block"
14108
+ ),
14066
14109
  onClick: handleClick,
14067
14110
  children: cells
14068
14111
  }
@@ -14091,6 +14134,7 @@ function DataTableBody({
14091
14134
  rowClassName,
14092
14135
  compact,
14093
14136
  autoHeight,
14137
+ rowHeightClassName,
14094
14138
  onRowClick,
14095
14139
  rowHref,
14096
14140
  minRows,
@@ -14099,13 +14143,13 @@ function DataTableBody({
14099
14143
  const table = useDataTableContext();
14100
14144
  const rows = table.getRowModel().rows;
14101
14145
  if (loading && rows.length === 0) {
14102
- return /* @__PURE__ */ jsx130("div", { className: cn("flex w-full flex-col gap-[var(--spacing-system-xsf)]", className), children: /* @__PURE__ */ jsx130(DataTableSkeleton, { rows: skeletonRows }) });
14146
+ return /* @__PURE__ */ jsx130("div", { className: cn("flex w-full flex-col gap-[var(--spacing-system-xsf)]", className), children: /* @__PURE__ */ jsx130(DataTableSkeleton, { rows: skeletonRows, rowHeightClassName }) });
14103
14147
  }
14104
14148
  if (rows.length === 0) {
14105
14149
  const empty = emptyState ? /* @__PURE__ */ jsx130(DataTableEmpty, { ...emptyState }) : emptyMessage != null ? /* @__PURE__ */ jsx130(DataTableEmpty, { title: emptyMessage, description: void 0 }) : /* @__PURE__ */ jsx130(DataTableEmpty, {});
14106
14150
  if (minRows) {
14107
14151
  return /* @__PURE__ */ jsxs100("div", { className: cn("relative flex w-full flex-col gap-[var(--spacing-system-xsf)]", className), children: [
14108
- /* @__PURE__ */ jsx130(PlaceholderRows, { count: minRows }),
14152
+ /* @__PURE__ */ jsx130(PlaceholderRows, { count: minRows, rowHeightClassName }),
14109
14153
  /* @__PURE__ */ jsx130("div", { className: "absolute inset-0 flex items-center justify-center", children: empty })
14110
14154
  ] });
14111
14155
  }
@@ -14125,24 +14169,46 @@ function DataTableBody({
14125
14169
  href,
14126
14170
  compact,
14127
14171
  autoHeight,
14172
+ rowHeightClassName,
14128
14173
  className: cls,
14129
14174
  subRow: renderSubRow?.(item)
14130
14175
  },
14131
14176
  row.id
14132
14177
  );
14133
14178
  }),
14134
- padCount > 0 && /* @__PURE__ */ jsx130(PlaceholderRows, { count: padCount })
14179
+ padCount > 0 && /* @__PURE__ */ jsx130(PlaceholderRows, { count: padCount, rowHeightClassName })
14135
14180
  ] });
14136
14181
  }
14137
- function PlaceholderRows({ count }) {
14182
+ function PlaceholderRows({ count, rowHeightClassName }) {
14138
14183
  return /* @__PURE__ */ jsx130(Fragment20, { children: Array.from({ length: count }).map((_, i) => /* @__PURE__ */ jsxs100(
14139
14184
  "div",
14140
14185
  {
14141
- className: "pointer-events-none relative overflow-hidden rounded-md",
14186
+ className: cn(
14187
+ "pointer-events-none relative overflow-hidden rounded-md border border-transparent",
14188
+ // The stated slot height belongs on the CARD, exactly as a real
14189
+ // row carries it — a real row with a sub-row is taller than its
14190
+ // cells, so reserving the cells' height here left every pad row
14191
+ // short by the sub-row.
14192
+ rowHeightClassName
14193
+ ),
14142
14194
  "aria-hidden": "true",
14143
14195
  children: [
14144
- /* @__PURE__ */ jsx130("div", { className: cn("hidden py-0 md:flex", ROW_SHELL_CLASSES, ROW_HEIGHT_DESKTOP2) }),
14145
- /* @__PURE__ */ jsx130("div", { className: cn("flex justify-start py-0 md:hidden", ROW_SHELL_CLASSES, ROW_HEIGHT_MOBILE2) })
14196
+ /* @__PURE__ */ jsx130(
14197
+ "div",
14198
+ {
14199
+ className: cn("hidden py-0 md:flex", ROW_SHELL_CLASSES, rowHeightClassName ? "h-full" : ROW_HEIGHT_DESKTOP2)
14200
+ }
14201
+ ),
14202
+ /* @__PURE__ */ jsx130(
14203
+ "div",
14204
+ {
14205
+ className: cn(
14206
+ "flex justify-start py-0 md:hidden",
14207
+ ROW_SHELL_CLASSES,
14208
+ rowHeightClassName ? "h-full" : ROW_HEIGHT_MOBILE2
14209
+ )
14210
+ }
14211
+ )
14146
14212
  ]
14147
14213
  },
14148
14214
  `placeholder-${i}`
@@ -30611,4 +30677,4 @@ export {
30611
30677
  FilterPillRow,
30612
30678
  LazyMount
30613
30679
  };
30614
- //# sourceMappingURL=chunk-ZYA6274A.js.map
30680
+ //# sourceMappingURL=chunk-VUGQ3Z6E.js.map