@mastra/playground-ui 58.0.0-alpha.3 → 58.0.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 (213) hide show
  1. package/dist/{code-DhrdtZce.cjs → code-B-x-9sJ1.cjs} +16 -4
  2. package/dist/code-B-x-9sJ1.cjs.map +1 -0
  3. package/dist/{code-D4Vw_fYq.js → code-BeWhOFT4.js} +16 -4
  4. package/dist/code-BeWhOFT4.js.map +1 -0
  5. package/dist/{code-block-BD2N5Yi2.js → code-block-C4caeNBi.js} +2 -2
  6. package/dist/{code-block-BD2N5Yi2.js.map → code-block-C4caeNBi.js.map} +1 -1
  7. package/dist/{code-block-fI67m2KV.cjs → code-block-il1MzQTs.cjs} +2 -2
  8. package/dist/{code-block-fI67m2KV.cjs.map → code-block-il1MzQTs.cjs.map} +1 -1
  9. package/dist/{code-diff-BHZTS4Zh.js → code-diff-Hao35skN.js} +2 -2
  10. package/dist/{code-diff-BHZTS4Zh.js.map → code-diff-Hao35skN.js.map} +1 -1
  11. package/dist/{code-editor-C-0srcj0.js → code-editor-BTxx6wLT.js} +4 -4
  12. package/dist/{code-editor-C-0srcj0.js.map → code-editor-BTxx6wLT.js.map} +1 -1
  13. package/dist/{code-editor-CFu_BYpQ.cjs → code-editor-LgrhXmOy.cjs} +3 -3
  14. package/dist/{code-editor-CFu_BYpQ.cjs.map → code-editor-LgrhXmOy.cjs.map} +1 -1
  15. package/dist/components/Code.cjs.js +1 -1
  16. package/dist/components/Code.es.js +1 -1
  17. package/dist/components/CodeBlock.cjs.js +1 -1
  18. package/dist/components/CodeBlock.es.js +1 -1
  19. package/dist/components/CodeDiff.es.js +1 -1
  20. package/dist/components/CodeEditor.cjs.js +1 -1
  21. package/dist/components/CodeEditor.es.js +1 -1
  22. package/dist/components/DataCodeSection.cjs.js +1 -1
  23. package/dist/components/DataCodeSection.es.js +1 -1
  24. package/dist/components/DataDetailsPanel.cjs.js +2 -78
  25. package/dist/components/DataDetailsPanel.cjs.js.map +1 -1
  26. package/dist/components/DataDetailsPanel.es.js +2 -78
  27. package/dist/components/DataDetailsPanel.es.js.map +1 -1
  28. package/dist/components/DataList.cjs.js +5 -5
  29. package/dist/components/DataList.es.js +5 -5
  30. package/dist/components/DataPanel.cjs.js +1 -1
  31. package/dist/components/DataPanel.es.js +1 -1
  32. package/dist/components/EnvironmentVariablesEditor.cjs.js +1 -1
  33. package/dist/components/EnvironmentVariablesEditor.es.js +1 -1
  34. package/dist/components/LogsDataList.cjs.js +4 -2
  35. package/dist/components/LogsDataList.cjs.js.map +1 -1
  36. package/dist/components/LogsDataList.es.js +4 -2
  37. package/dist/components/LogsDataList.es.js.map +1 -1
  38. package/dist/components/MarkdownRenderer.cjs.js +1 -1
  39. package/dist/components/MarkdownRenderer.es.js +1 -1
  40. package/dist/components/SideDialog.cjs.js +2 -2
  41. package/dist/components/SideDialog.cjs.js.map +1 -1
  42. package/dist/components/SideDialog.es.js +3 -3
  43. package/dist/components/SideDialog.es.js.map +1 -1
  44. package/dist/components/ThemeProvider.es.js +1 -1
  45. package/dist/components/ThemeToggle.es.js +1 -1
  46. package/dist/components/Workflow.cjs.js +5 -5
  47. package/dist/components/Workflow.cjs.js.map +1 -1
  48. package/dist/components/Workflow.es.js +5 -5
  49. package/dist/components/Workflow.es.js.map +1 -1
  50. package/dist/components/ai/chat-event.cjs.js +1 -1
  51. package/dist/components/ai/chat-event.es.js +1 -1
  52. package/dist/components/ai/plan.cjs.js +1 -1
  53. package/dist/components/ai/plan.es.js +1 -1
  54. package/dist/components/ai/tool-call.cjs.js +2 -2
  55. package/dist/components/ai/tool-call.es.js +2 -2
  56. package/dist/data-code-section-Cth9zVkj.js +199 -0
  57. package/dist/data-code-section-Cth9zVkj.js.map +1 -0
  58. package/dist/{data-code-section-DzLc9O0B.cjs → data-code-section-DE4AgaTU.cjs} +44 -210
  59. package/dist/data-code-section-DE4AgaTU.cjs.map +1 -0
  60. package/dist/{data-list-DXjH5wkB.js → data-list-DisTjDHP.js} +3 -3
  61. package/dist/{data-list-DXjH5wkB.js.map → data-list-DisTjDHP.js.map} +1 -1
  62. package/dist/{data-list-CH3HAhK5.cjs → data-list-PwFpP_mo.cjs} +3 -3
  63. package/dist/{data-list-CH3HAhK5.cjs.map → data-list-PwFpP_mo.cjs.map} +1 -1
  64. package/dist/{data-list-skeleton-K_WmrVke.cjs → data-list-skeleton-CjwR0o3w.cjs} +2 -2
  65. package/dist/{data-list-skeleton-K_WmrVke.cjs.map → data-list-skeleton-CjwR0o3w.cjs.map} +1 -1
  66. package/dist/{data-list-skeleton-h4pILqCC.js → data-list-skeleton-DAfM8AjW.js} +2 -2
  67. package/dist/{data-list-skeleton-h4pILqCC.js.map → data-list-skeleton-DAfM8AjW.js.map} +1 -1
  68. package/dist/{data-list-spacer-BQ4_YeyT.js → data-list-spacer-BmorAN0V.js} +2 -2
  69. package/dist/{data-list-spacer-BQ4_YeyT.js.map → data-list-spacer-BmorAN0V.js.map} +1 -1
  70. package/dist/{data-list-spacer-GIVW2hB1.cjs → data-list-spacer-DEcgVGFM.cjs} +2 -2
  71. package/dist/{data-list-spacer-GIVW2hB1.cjs.map → data-list-spacer-DEcgVGFM.cjs.map} +1 -1
  72. package/dist/{data-list-top-LiaWUw5P.js → data-list-top-DpbOA3uw.js} +2 -2
  73. package/dist/data-list-top-DpbOA3uw.js.map +1 -0
  74. package/dist/{data-list-top-B-gb-FY6.cjs → data-list-top-WGUY167p.cjs} +2 -2
  75. package/dist/data-list-top-WGUY167p.cjs.map +1 -0
  76. package/dist/{data-panel-CPZ2GuZN.js → data-panel-BQVTKo86.js} +2 -2
  77. package/dist/{data-panel-CPZ2GuZN.js.map → data-panel-BQVTKo86.js.map} +1 -1
  78. package/dist/{data-panel-CIu6JToM.cjs → data-panel-XPXrhYJI.cjs} +2 -2
  79. package/dist/{data-panel-CIu6JToM.cjs.map → data-panel-XPXrhYJI.cjs.map} +1 -1
  80. package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js +1 -1
  81. package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +1 -1
  82. package/dist/domains/chat/messages/reasoning.cjs.js +1 -1
  83. package/dist/domains/chat/messages/reasoning.es.js +1 -1
  84. package/dist/domains/chat/messages/renderers/message-text.cjs.js +1 -1
  85. package/dist/domains/chat/messages/renderers/message-text.es.js +1 -1
  86. package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js +2 -2
  87. package/dist/domains/chat/tools/badges/code-mode-badge.es.js +2 -2
  88. package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +1 -1
  89. package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +1 -1
  90. package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +1 -1
  91. package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
  92. package/dist/domains/logs/components/log-data-panel.cjs.js +118 -0
  93. package/dist/domains/logs/components/log-data-panel.cjs.js.map +1 -0
  94. package/dist/domains/logs/components/log-data-panel.d.ts +2 -0
  95. package/dist/domains/logs/components/log-data-panel.es.js +114 -0
  96. package/dist/domains/logs/components/log-data-panel.es.js.map +1 -0
  97. package/dist/domains/logs/components/logs-list-view.cjs.js +4 -4
  98. package/dist/domains/logs/components/logs-list-view.cjs.js.map +1 -1
  99. package/dist/domains/logs/components/logs-list-view.es.js +4 -4
  100. package/dist/domains/logs/components/logs-list-view.es.js.map +1 -1
  101. package/dist/domains/logs/components.cjs.js +2 -4
  102. package/dist/domains/logs/components.cjs.js.map +1 -1
  103. package/dist/domains/logs/components.es.js +1 -2
  104. package/dist/domains/logs/components.es.js.map +1 -1
  105. package/dist/domains/logs.cjs.js +2 -4
  106. package/dist/domains/logs.cjs.js.map +1 -1
  107. package/dist/domains/logs.es.js +1 -2
  108. package/dist/domains/logs.es.js.map +1 -1
  109. package/dist/domains/memory/components/observation-detail-view.es.js +1 -1
  110. package/dist/domains/metrics/components/memory-card-view.cjs.js +1 -1
  111. package/dist/domains/metrics/components/memory-card-view.es.js +1 -1
  112. package/dist/domains/metrics/components/model-usage-cost-card-view.cjs.js +1 -1
  113. package/dist/domains/metrics/components/model-usage-cost-card-view.es.js +1 -1
  114. package/dist/domains/metrics/components/scores-card-view.cjs.js +1 -1
  115. package/dist/domains/metrics/components/scores-card-view.es.js +1 -1
  116. package/dist/domains/traces/components/span-data-panel-view.cjs.js +2 -2
  117. package/dist/domains/traces/components/span-data-panel-view.es.js +2 -2
  118. package/dist/domains/traces/components/span-details-view.cjs.js +1 -1
  119. package/dist/domains/traces/components/span-details-view.es.js +1 -1
  120. package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +1 -1
  121. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +1 -1
  122. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +1 -1
  123. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
  124. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +1 -1
  125. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +1 -1
  126. package/dist/domains/traces/components/span-payload/span-payload-json.cjs.js +1 -1
  127. package/dist/domains/traces/components/span-payload/span-payload-json.es.js +1 -1
  128. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +1 -1
  129. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +1 -1
  130. package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +2 -2
  131. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +2 -2
  132. package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +1 -1
  133. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
  134. package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +1 -1
  135. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +1 -1
  136. package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js +1 -1
  137. package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +1 -1
  138. package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
  139. package/dist/domains/traces/components/span-summary-description.es.js +1 -1
  140. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
  141. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
  142. package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js +1 -1
  143. package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js +1 -1
  144. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +1 -1
  145. package/dist/domains/traces/components/trace-data-panel-view.es.js +1 -1
  146. package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
  147. package/dist/domains/traces/components/trace-id-button.es.js +1 -1
  148. package/dist/domains/traces/components/trace-summary-description.cjs.js +1 -1
  149. package/dist/domains/traces/components/trace-summary-description.es.js +1 -1
  150. package/dist/domains/traces/components/traces-list-view.cjs.js +3 -3
  151. package/dist/domains/traces/components/traces-list-view.es.js +3 -3
  152. package/dist/domains/traces/components/traces-page-skeleton.cjs.js +3 -1
  153. package/dist/domains/traces/components/traces-page-skeleton.cjs.js.map +1 -1
  154. package/dist/domains/traces/components/traces-page-skeleton.es.js +3 -1
  155. package/dist/domains/traces/components/traces-page-skeleton.es.js.map +1 -1
  156. package/dist/ee/signals/components/entity-index-list.cjs.js +3 -1
  157. package/dist/ee/signals/components/entity-index-list.cjs.js.map +1 -1
  158. package/dist/ee/signals/components/entity-index-list.es.js +3 -1
  159. package/dist/ee/signals/components/entity-index-list.es.js.map +1 -1
  160. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +2 -1
  161. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js.map +1 -1
  162. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +2 -1
  163. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js.map +1 -1
  164. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +1 -1
  165. package/dist/ee/topics/components/topic-trace-summary-list.es.js +1 -1
  166. package/dist/filter-bar-chip.css +34 -14
  167. package/dist/layout/tabbed-container.cjs.js +1 -1
  168. package/dist/layout/tabbed-container.es.js +1 -1
  169. package/dist/{logs-data-list-XU1hCwI5.js → logs-data-list-5BAeLU57.js} +11 -11
  170. package/dist/logs-data-list-5BAeLU57.js.map +1 -0
  171. package/dist/{logs-data-list-BGJTRyO_.cjs → logs-data-list-YL9yLKF3.cjs} +11 -11
  172. package/dist/logs-data-list-YL9yLKF3.cjs.map +1 -0
  173. package/dist/{markdown-renderer-BBYgxsXL.js → markdown-renderer-Ces7VyRK.js} +2 -2
  174. package/dist/{markdown-renderer-BBYgxsXL.js.map → markdown-renderer-Ces7VyRK.js.map} +1 -1
  175. package/dist/{markdown-renderer-Du_Zd1T-.cjs → markdown-renderer-DtH58325.cjs} +2 -2
  176. package/dist/{markdown-renderer-Du_Zd1T-.cjs.map → markdown-renderer-DtH58325.cjs.map} +1 -1
  177. package/dist/{span-payload-primitives-CzLh6axt.js → span-payload-primitives-Buq9V8nK.js} +2 -2
  178. package/dist/{span-payload-primitives-CzLh6axt.js.map → span-payload-primitives-Buq9V8nK.js.map} +1 -1
  179. package/dist/{span-payload-primitives-KEXwIaeZ.cjs → span-payload-primitives-CjlNH9C-.cjs} +2 -2
  180. package/dist/{span-payload-primitives-KEXwIaeZ.cjs.map → span-payload-primitives-CjlNH9C-.cjs.map} +1 -1
  181. package/dist/src/domains/logs/components/index.d.ts +1 -2
  182. package/dist/src/domains/logs/components/log-data-panel.d.ts +12 -0
  183. package/dist/src/ds/components/Code/code.d.ts +3 -1
  184. package/dist/src/ds/components/DataList/shared.d.ts +2 -2
  185. package/dist/style.css +50 -36
  186. package/dist/{theme-provider-C9ih9jSS.js → theme-provider-CQKmlkHX.js} +2 -2
  187. package/dist/{theme-provider-C9ih9jSS.js.map → theme-provider-CQKmlkHX.js.map} +1 -1
  188. package/dist/{traces-data-list-DLeKSbaZ.cjs → traces-data-list-Dam8-XW-.cjs} +4 -4
  189. package/dist/{traces-data-list-DLeKSbaZ.cjs.map → traces-data-list-Dam8-XW-.cjs.map} +1 -1
  190. package/dist/{traces-data-list-Cjy5a-1f.js → traces-data-list-Dvi0s56v.js} +4 -4
  191. package/dist/{traces-data-list-Cjy5a-1f.js.map → traces-data-list-Dvi0s56v.js.map} +1 -1
  192. package/package.json +8 -8
  193. package/dist/code-D4Vw_fYq.js.map +0 -1
  194. package/dist/code-DhrdtZce.cjs.map +0 -1
  195. package/dist/data-code-section-C75shCII.js +0 -365
  196. package/dist/data-code-section-C75shCII.js.map +0 -1
  197. package/dist/data-code-section-DzLc9O0B.cjs.map +0 -1
  198. package/dist/data-list-top-B-gb-FY6.cjs.map +0 -1
  199. package/dist/data-list-top-LiaWUw5P.js.map +0 -1
  200. package/dist/domains/logs/components/log-details-view.cjs.js +0 -131
  201. package/dist/domains/logs/components/log-details-view.cjs.js.map +0 -1
  202. package/dist/domains/logs/components/log-details-view.d.ts +0 -2
  203. package/dist/domains/logs/components/log-details-view.es.js +0 -127
  204. package/dist/domains/logs/components/log-details-view.es.js.map +0 -1
  205. package/dist/domains/logs/components/logs-layout.cjs.js +0 -36
  206. package/dist/domains/logs/components/logs-layout.cjs.js.map +0 -1
  207. package/dist/domains/logs/components/logs-layout.d.ts +0 -2
  208. package/dist/domains/logs/components/logs-layout.es.js +0 -32
  209. package/dist/domains/logs/components/logs-layout.es.js.map +0 -1
  210. package/dist/logs-data-list-BGJTRyO_.cjs.map +0 -1
  211. package/dist/logs-data-list-XU1hCwI5.js.map +0 -1
  212. package/dist/src/domains/logs/components/log-details-view.d.ts +0 -12
  213. package/dist/src/domains/logs/components/logs-layout.d.ts +0 -19
@@ -1 +1 @@
1
- {"version":3,"file":"data-list-DXjH5wkB.js","sources":["../src/ds/components/DataList/data-list-pagination.tsx","../src/ds/components/DataList/data-list-row-static.tsx","../src/ds/components/DataList/data-list-subheader.tsx","../src/ds/components/DataList/data-list-subheading.tsx","../src/ds/components/DataList/data-list-top-cells.tsx","../src/ds/components/DataList/data-list.tsx"],"sourcesContent":["import { ArrowLeftIcon, ArrowRightIcon } from 'lucide-react';\nimport { Button } from '@/ds/components/Button';\n\nexport type DataListPaginationProps = {\n currentPage?: number;\n hasMore?: boolean;\n onNextPage?: () => void;\n onPrevPage?: () => void;\n};\n\nexport function DataListPagination({ currentPage, hasMore, onNextPage, onPrevPage }: DataListPaginationProps) {\n const showNavigation = (typeof currentPage === 'number' && currentPage > 0) || hasMore;\n\n return (\n <div className=\"col-span-full flex items-center justify-center gap-4 py-3 text-body text-muted-foreground\">\n <span>\n Page <b>{currentPage ? currentPage + 1 : '1'}</b>\n </span>\n {showNavigation && (\n <div className=\"flex gap-4\">\n {typeof currentPage === 'number' && currentPage > 0 && (\n <Button type=\"button\" size=\"sm\" onClick={onPrevPage} icon={<ArrowLeftIcon />}>\n Previous\n </Button>\n )}\n {hasMore && (\n <Button type=\"button\" size=\"sm\" onClick={onNextPage} icon={<ArrowRightIcon />}>\n Next\n </Button>\n )}\n </div>\n )}\n </div>\n );\n}\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { useDataListRowWrapperContext } from './data-list-row-wrapper-context';\nimport { dataListRowStaticStyles } from './shared';\nimport type { DataListRowSharedProps } from './shared';\nimport { cn } from '@/lib/utils';\n\nexport type DataListRowStaticProps = ComponentPropsWithoutRef<'div'> & DataListRowSharedProps;\n\n/**\n * Non-interactive row. Use when a row should *display* like a regular row but\n * has no link target or click handler\n */\nexport const DataListRowStatic = forwardRef<HTMLDivElement, DataListRowStaticProps>(\n ({ children, className, colStart, colEnd, featured, variant, style, ...rest }, ref) => {\n const isWrapped = useDataListRowWrapperContext();\n const hasColumnOverride = colStart !== undefined || colEnd !== undefined;\n const resolvedStyle = hasColumnOverride ? { ...style, gridColumn: `${colStart ?? 1} / ${colEnd ?? -1}` } : style;\n return (\n <div\n ref={ref}\n className={cn(isWrapped ? 'grid grid-cols-subgrid gap-4 px-3' : dataListRowStaticStyles, className)}\n style={resolvedStyle}\n data-featured={featured || undefined}\n data-variant={variant ?? 'default'}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nDataListRowStatic.displayName = 'DataListRowStatic';\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListSubheaderProps = ComponentPropsWithoutRef<'div'>;\n\nexport const DataListSubheader = forwardRef<HTMLDivElement, DataListSubheaderProps>(\n ({ children, className, ...rest }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'data-list-subheader relative isolate col-span-full px-3 py-2 text-subheading text-muted-foreground',\n 'bg-(--data-list-background)',\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nDataListSubheader.displayName = 'DataListSubheader';\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListSubHeadingProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function DataListSubHeading({ children, className }: DataListSubHeadingProps) {\n return <span className={cn('text-caption text-placeholder', className)}>{children}</span>;\n}\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListTopCellsProps = ComponentPropsWithoutRef<'div'> & {\n /**\n * Drop the group's default left margin. Use when this sits as the second\n * child of a gap-0 `DataList.Top`, beside a `DataList.TopSelectCell` that\n * owns the leading column.\n */\n flushLeft?: boolean;\n /**\n * Place the group starting at this column line, spanning through to the\n * last column. Defaults to the full grid (`col-span-full`). Use when this\n * sits beside a leading cell that owns column 1.\n */\n colStart?: number;\n};\n\n/**\n * Non-interactive header equivalent of `DataList.RowButton`. Groups a set of\n * `DataList.TopCell`s with the same horizontal layout (gap, mx, px) as\n * `RowButton`, so columns inside a wrapped `Top` line up cell-for-cell with the\n * columns inside a wrapped `Row`.\n */\nexport const DataListTopCells = forwardRef<HTMLDivElement, DataListTopCellsProps>(\n ({ children, className, flushLeft, colStart, style, ...rest }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'pointer-events-none grid grid-cols-subgrid gap-4 px-3 [&>*]:pointer-events-auto',\n !colStart && 'col-span-full',\n flushLeft && 'pl-0!',\n className,\n )}\n style={colStart ? { ...style, gridColumn: `${colStart} / -1` } : style}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nDataListTopCells.displayName = 'DataListTopCells';\n","import {\n DataListActionsCell,\n DataListCell,\n DataListTextCell,\n DataListNameCell,\n DataListDescriptionCell,\n DataListIdCell,\n DataListRowHeaderCell,\n DataListNumberCell,\n DataListSelectCell,\n DataListDateCell,\n DataListCreatedCell,\n DataListTimeCell,\n} from './data-list-cells';\nimport { DataListNextPageLoading } from './data-list-next-page-loading';\nimport { DataListNoMatch } from './data-list-no-match';\nimport { DataListPagination } from './data-list-pagination';\nimport { DataListRoot } from './data-list-root';\nimport { DataListRowButton } from './data-list-row-button';\nimport { DataListRowLink } from './data-list-row-link';\nimport { DataListRowStatic } from './data-list-row-static';\nimport { DataListRowWrapper } from './data-list-row-wrapper';\nimport { DataListSortableTopCell } from './data-list-sortable-top-cell';\nimport { DataListSpacer } from './data-list-spacer';\nimport { DataListSubheader } from './data-list-subheader';\nimport { DataListSubHeading } from './data-list-subheading';\nimport { DataListTop } from './data-list-top';\nimport {\n DataListTopCell,\n DataListTopCellWithTooltip,\n DataListTopCellSmart,\n DataListTopSelectCell,\n} from './data-list-top-cell';\nimport { DataListTopCells } from './data-list-top-cells';\n\nexport type { DataListRootProps, DataListVariant } from './data-list-root';\nexport type { DataListSortableTopCellProps, DataListSort } from './data-list-sortable-top-cell';\n\nexport const DataList = Object.assign(DataListRoot, {\n Top: DataListTop,\n TopCells: DataListTopCells,\n TopCell: DataListTopCell,\n SortableTopCell: DataListSortableTopCell,\n TopCellWithTooltip: DataListTopCellWithTooltip,\n TopCellSmart: DataListTopCellSmart,\n RowWrapper: DataListRowWrapper,\n RowButton: DataListRowButton,\n RowLink: DataListRowLink,\n RowStatic: DataListRowStatic,\n Cell: DataListCell,\n ActionsCell: DataListActionsCell,\n TextCell: DataListTextCell,\n NameCell: DataListNameCell,\n DescriptionCell: DataListDescriptionCell,\n IdCell: DataListIdCell,\n RowHeaderCell: DataListRowHeaderCell,\n NumberCell: DataListNumberCell,\n DateCell: DataListDateCell,\n CreatedCell: DataListCreatedCell,\n TimeCell: DataListTimeCell,\n SelectCell: DataListSelectCell,\n TopSelectCell: DataListTopSelectCell,\n NoMatch: DataListNoMatch,\n Subheader: DataListSubheader,\n SubHeading: DataListSubHeading,\n Spacer: DataListSpacer,\n NextPageLoading: DataListNextPageLoading,\n Pagination: DataListPagination,\n});\n"],"names":[],"mappings":";;;;;;;;AAUO,SAAS,mBAAmB,EAAE,WAAA,EAAa,OAAA,EAAS,UAAA,EAAY,YAAW,EAA4B;AAC5G,EAAA,MAAM,cAAA,GAAkB,OAAO,WAAA,KAAgB,QAAA,IAAY,cAAc,CAAA,IAAM,OAAA;AAE/E,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2FAAA,EACb,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAA;AAAA,MAAA,OAAA;AAAA,sBACC,GAAA,CAAC,GAAA,EAAA,EAAG,QAAA,EAAA,WAAA,GAAc,WAAA,GAAc,IAAI,GAAA,EAAI;AAAA,KAAA,EAC/C,CAAA;AAAA,IACC,cAAA,oBACC,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EACZ,QAAA,EAAA;AAAA,MAAA,OAAO,gBAAgB,QAAA,IAAY,WAAA,GAAc,CAAA,oBAChD,GAAA,CAAC,UAAO,IAAA,EAAK,QAAA,EAAS,IAAA,EAAK,IAAA,EAAK,SAAS,UAAA,EAAY,IAAA,kBAAM,GAAA,CAAC,aAAA,EAAA,EAAc,GAAI,QAAA,EAAA,UAAA,EAE9E,CAAA;AAAA,MAED,OAAA,oBACC,GAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,IAAA,EAAK,IAAA,EAAK,OAAA,EAAS,UAAA,EAAY,IAAA,kBAAM,GAAA,CAAC,cAAA,EAAA,EAAe,GAAI,QAAA,EAAA,MAAA,EAE/E;AAAA,KAAA,EAEJ;AAAA,GAAA,EAEJ,CAAA;AAEJ;;ACrBO,MAAM,iBAAA,GAAoB,UAAA;AAAA,EAC/B,CAAC,EAAE,QAAA,EAAU,SAAA,EAAW,QAAA,EAAU,MAAA,EAAQ,QAAA,EAAU,OAAA,EAAS,KAAA,EAAO,GAAG,IAAA,EAAK,EAAG,GAAA,KAAQ;AACrF,IAAA,MAAM,YAAY,4BAAA,EAA6B;AAC/C,IAAA,MAAM,iBAAA,GAAoB,QAAA,KAAa,MAAA,IAAa,MAAA,KAAW,MAAA;AAC/D,IAAA,MAAM,aAAA,GAAgB,iBAAA,GAAoB,EAAE,GAAG,KAAA,EAAO,UAAA,EAAY,CAAA,EAAG,QAAA,IAAY,CAAC,CAAA,GAAA,EAAM,MAAA,IAAU,EAAE,IAAG,GAAI,KAAA;AAC3G,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA,CAAG,SAAA,GAAY,mCAAA,GAAsC,yBAAyB,SAAS,CAAA;AAAA,QAClG,KAAA,EAAO,aAAA;AAAA,QACP,iBAAe,QAAA,IAAY,MAAA;AAAA,QAC3B,gBAAc,OAAA,IAAW,SAAA;AAAA,QACxB,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF,CAAA;AAEA,iBAAA,CAAkB,WAAA,GAAc,mBAAA;;AC3BzB,MAAM,iBAAA,GAAoB,UAAA;AAAA,EAC/B,CAAC,EAAE,QAAA,EAAU,WAAW,GAAG,IAAA,IAAQ,GAAA,KAAQ;AACzC,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,oGAAA;AAAA,UACA,6BAAA;AAAA,UACA;AAAA,SACF;AAAA,QACC,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,iBAAA,CAAkB,WAAA,GAAc,mBAAA;;AChBzB,SAAS,kBAAA,CAAmB,EAAE,QAAA,EAAU,SAAA,EAAU,EAA4B;AACnF,EAAA,2BAAQ,MAAA,EAAA,EAAK,SAAA,EAAW,GAAG,+BAAA,EAAiC,SAAS,GAAI,QAAA,EAAS,CAAA;AACpF;;ACeO,MAAM,gBAAA,GAAmB,UAAA;AAAA,EAC9B,CAAC,EAAE,QAAA,EAAU,SAAA,EAAW,SAAA,EAAW,UAAU,KAAA,EAAO,GAAG,IAAA,EAAK,EAAG,GAAA,KAAQ;AACrE,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,iFAAA;AAAA,UACA,CAAC,QAAA,IAAY,eAAA;AAAA,UACb,SAAA,IAAa,OAAA;AAAA,UACb;AAAA,SACF;AAAA,QACA,KAAA,EAAO,WAAW,EAAE,GAAG,OAAO,UAAA,EAAY,CAAA,EAAG,QAAQ,CAAA,KAAA,CAAA,EAAQ,GAAI,KAAA;AAAA,QAChE,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF,CAAA;AAEA,gBAAA,CAAiB,WAAA,GAAc,kBAAA;;ACPxB,MAAM,QAAA,GAAW,MAAA,CAAO,MAAA,CAAO,YAAA,EAAc;AAAA,EAClD,GAAA,EAAK,WAAA;AAAA,EACL,QAAA,EAAU,gBAAA;AAAA,EACV,OAAA,EAAS,eAAA;AAAA,EACT,eAAA,EAAiB,uBAAA;AAAA,EACjB,kBAAA,EAAoB,0BAAA;AAAA,EACpB,YAAA,EAAc,oBAAA;AAAA,EACd,UAAA,EAAY,kBAAA;AAAA,EACZ,SAAA,EAAW,iBAAA;AAAA,EACX,OAAA,EAAS,eAAA;AAAA,EACT,SAAA,EAAW,iBAAA;AAAA,EACX,IAAA,EAAM,YAAA;AAAA,EACN,WAAA,EAAa,mBAAA;AAAA,EACb,QAAA,EAAU,gBAAA;AAAA,EACV,QAAA,EAAU,gBAAA;AAAA,EACV,eAAA,EAAiB,uBAAA;AAAA,EACjB,MAAA,EAAQ,cAAA;AAAA,EACR,aAAA,EAAe,qBAAA;AAAA,EACf,UAAA,EAAY,kBAAA;AAAA,EACZ,QAAA,EAAU,gBAAA;AAAA,EACV,WAAA,EAAa,mBAAA;AAAA,EACb,QAAA,EAAU,gBAAA;AAAA,EACV,UAAA,EAAY,kBAAA;AAAA,EACZ,aAAA,EAAe,qBAAA;AAAA,EACf,OAAA,EAAS,eAAA;AAAA,EACT,SAAA,EAAW,iBAAA;AAAA,EACX,UAAA,EAAY,kBAAA;AAAA,EACZ,MAAA,EAAQ,cAAA;AAAA,EACR,eAAA,EAAiB,uBAAA;AAAA,EACjB,UAAA,EAAY;AACd,CAAC;;;;"}
1
+ {"version":3,"file":"data-list-DisTjDHP.js","sources":["../src/ds/components/DataList/data-list-pagination.tsx","../src/ds/components/DataList/data-list-row-static.tsx","../src/ds/components/DataList/data-list-subheader.tsx","../src/ds/components/DataList/data-list-subheading.tsx","../src/ds/components/DataList/data-list-top-cells.tsx","../src/ds/components/DataList/data-list.tsx"],"sourcesContent":["import { ArrowLeftIcon, ArrowRightIcon } from 'lucide-react';\nimport { Button } from '@/ds/components/Button';\n\nexport type DataListPaginationProps = {\n currentPage?: number;\n hasMore?: boolean;\n onNextPage?: () => void;\n onPrevPage?: () => void;\n};\n\nexport function DataListPagination({ currentPage, hasMore, onNextPage, onPrevPage }: DataListPaginationProps) {\n const showNavigation = (typeof currentPage === 'number' && currentPage > 0) || hasMore;\n\n return (\n <div className=\"col-span-full flex items-center justify-center gap-4 py-3 text-body text-muted-foreground\">\n <span>\n Page <b>{currentPage ? currentPage + 1 : '1'}</b>\n </span>\n {showNavigation && (\n <div className=\"flex gap-4\">\n {typeof currentPage === 'number' && currentPage > 0 && (\n <Button type=\"button\" size=\"sm\" onClick={onPrevPage} icon={<ArrowLeftIcon />}>\n Previous\n </Button>\n )}\n {hasMore && (\n <Button type=\"button\" size=\"sm\" onClick={onNextPage} icon={<ArrowRightIcon />}>\n Next\n </Button>\n )}\n </div>\n )}\n </div>\n );\n}\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { useDataListRowWrapperContext } from './data-list-row-wrapper-context';\nimport { dataListRowStaticStyles } from './shared';\nimport type { DataListRowSharedProps } from './shared';\nimport { cn } from '@/lib/utils';\n\nexport type DataListRowStaticProps = ComponentPropsWithoutRef<'div'> & DataListRowSharedProps;\n\n/**\n * Non-interactive row. Use when a row should *display* like a regular row but\n * has no link target or click handler\n */\nexport const DataListRowStatic = forwardRef<HTMLDivElement, DataListRowStaticProps>(\n ({ children, className, colStart, colEnd, featured, variant, style, ...rest }, ref) => {\n const isWrapped = useDataListRowWrapperContext();\n const hasColumnOverride = colStart !== undefined || colEnd !== undefined;\n const resolvedStyle = hasColumnOverride ? { ...style, gridColumn: `${colStart ?? 1} / ${colEnd ?? -1}` } : style;\n return (\n <div\n ref={ref}\n className={cn(isWrapped ? 'grid grid-cols-subgrid gap-4 px-3' : dataListRowStaticStyles, className)}\n style={resolvedStyle}\n data-featured={featured || undefined}\n data-variant={variant ?? 'default'}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nDataListRowStatic.displayName = 'DataListRowStatic';\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListSubheaderProps = ComponentPropsWithoutRef<'div'>;\n\nexport const DataListSubheader = forwardRef<HTMLDivElement, DataListSubheaderProps>(\n ({ children, className, ...rest }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'data-list-subheader relative isolate col-span-full px-3 py-2 text-subheading text-muted-foreground',\n 'bg-(--data-list-background)',\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nDataListSubheader.displayName = 'DataListSubheader';\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListSubHeadingProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function DataListSubHeading({ children, className }: DataListSubHeadingProps) {\n return <span className={cn('text-caption text-placeholder', className)}>{children}</span>;\n}\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListTopCellsProps = ComponentPropsWithoutRef<'div'> & {\n /**\n * Drop the group's default left margin. Use when this sits as the second\n * child of a gap-0 `DataList.Top`, beside a `DataList.TopSelectCell` that\n * owns the leading column.\n */\n flushLeft?: boolean;\n /**\n * Place the group starting at this column line, spanning through to the\n * last column. Defaults to the full grid (`col-span-full`). Use when this\n * sits beside a leading cell that owns column 1.\n */\n colStart?: number;\n};\n\n/**\n * Non-interactive header equivalent of `DataList.RowButton`. Groups a set of\n * `DataList.TopCell`s with the same horizontal layout (gap, mx, px) as\n * `RowButton`, so columns inside a wrapped `Top` line up cell-for-cell with the\n * columns inside a wrapped `Row`.\n */\nexport const DataListTopCells = forwardRef<HTMLDivElement, DataListTopCellsProps>(\n ({ children, className, flushLeft, colStart, style, ...rest }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'pointer-events-none grid grid-cols-subgrid gap-4 px-3 [&>*]:pointer-events-auto',\n !colStart && 'col-span-full',\n flushLeft && 'pl-0!',\n className,\n )}\n style={colStart ? { ...style, gridColumn: `${colStart} / -1` } : style}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nDataListTopCells.displayName = 'DataListTopCells';\n","import {\n DataListActionsCell,\n DataListCell,\n DataListTextCell,\n DataListNameCell,\n DataListDescriptionCell,\n DataListIdCell,\n DataListRowHeaderCell,\n DataListNumberCell,\n DataListSelectCell,\n DataListDateCell,\n DataListCreatedCell,\n DataListTimeCell,\n} from './data-list-cells';\nimport { DataListNextPageLoading } from './data-list-next-page-loading';\nimport { DataListNoMatch } from './data-list-no-match';\nimport { DataListPagination } from './data-list-pagination';\nimport { DataListRoot } from './data-list-root';\nimport { DataListRowButton } from './data-list-row-button';\nimport { DataListRowLink } from './data-list-row-link';\nimport { DataListRowStatic } from './data-list-row-static';\nimport { DataListRowWrapper } from './data-list-row-wrapper';\nimport { DataListSortableTopCell } from './data-list-sortable-top-cell';\nimport { DataListSpacer } from './data-list-spacer';\nimport { DataListSubheader } from './data-list-subheader';\nimport { DataListSubHeading } from './data-list-subheading';\nimport { DataListTop } from './data-list-top';\nimport {\n DataListTopCell,\n DataListTopCellWithTooltip,\n DataListTopCellSmart,\n DataListTopSelectCell,\n} from './data-list-top-cell';\nimport { DataListTopCells } from './data-list-top-cells';\n\nexport type { DataListRootProps, DataListVariant } from './data-list-root';\nexport type { DataListSortableTopCellProps, DataListSort } from './data-list-sortable-top-cell';\n\nexport const DataList = Object.assign(DataListRoot, {\n Top: DataListTop,\n TopCells: DataListTopCells,\n TopCell: DataListTopCell,\n SortableTopCell: DataListSortableTopCell,\n TopCellWithTooltip: DataListTopCellWithTooltip,\n TopCellSmart: DataListTopCellSmart,\n RowWrapper: DataListRowWrapper,\n RowButton: DataListRowButton,\n RowLink: DataListRowLink,\n RowStatic: DataListRowStatic,\n Cell: DataListCell,\n ActionsCell: DataListActionsCell,\n TextCell: DataListTextCell,\n NameCell: DataListNameCell,\n DescriptionCell: DataListDescriptionCell,\n IdCell: DataListIdCell,\n RowHeaderCell: DataListRowHeaderCell,\n NumberCell: DataListNumberCell,\n DateCell: DataListDateCell,\n CreatedCell: DataListCreatedCell,\n TimeCell: DataListTimeCell,\n SelectCell: DataListSelectCell,\n TopSelectCell: DataListTopSelectCell,\n NoMatch: DataListNoMatch,\n Subheader: DataListSubheader,\n SubHeading: DataListSubHeading,\n Spacer: DataListSpacer,\n NextPageLoading: DataListNextPageLoading,\n Pagination: DataListPagination,\n});\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- const dataListTop = require('./data-list-top-B-gb-FY6.cjs');
4
- const dataListSpacer = require('./data-list-spacer-GIVW2hB1.cjs');
3
+ const dataListTop = require('./data-list-top-WGUY167p.cjs');
4
+ const dataListSpacer = require('./data-list-spacer-DEcgVGFM.cjs');
5
5
  const jsxRuntime = require('react/jsx-runtime');
6
6
  const lucideReact = require('lucide-react');
7
7
  const Button = require('./Button-BAMnPqos.cjs');
@@ -122,4 +122,4 @@ const DataList = Object.assign(dataListTop.DataListRoot, {
122
122
  exports.DataList = DataList;
123
123
  exports.DataListSubHeading = DataListSubHeading;
124
124
  exports.DataListSubheader = DataListSubheader;
125
- //# sourceMappingURL=data-list-CH3HAhK5.cjs.map
125
+ //# sourceMappingURL=data-list-PwFpP_mo.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-list-CH3HAhK5.cjs","sources":["../src/ds/components/DataList/data-list-pagination.tsx","../src/ds/components/DataList/data-list-row-static.tsx","../src/ds/components/DataList/data-list-subheader.tsx","../src/ds/components/DataList/data-list-subheading.tsx","../src/ds/components/DataList/data-list-top-cells.tsx","../src/ds/components/DataList/data-list.tsx"],"sourcesContent":["import { ArrowLeftIcon, ArrowRightIcon } from 'lucide-react';\nimport { Button } from '@/ds/components/Button';\n\nexport type DataListPaginationProps = {\n currentPage?: number;\n hasMore?: boolean;\n onNextPage?: () => void;\n onPrevPage?: () => void;\n};\n\nexport function DataListPagination({ currentPage, hasMore, onNextPage, onPrevPage }: DataListPaginationProps) {\n const showNavigation = (typeof currentPage === 'number' && currentPage > 0) || hasMore;\n\n return (\n <div className=\"col-span-full flex items-center justify-center gap-4 py-3 text-body text-muted-foreground\">\n <span>\n Page <b>{currentPage ? currentPage + 1 : '1'}</b>\n </span>\n {showNavigation && (\n <div className=\"flex gap-4\">\n {typeof currentPage === 'number' && currentPage > 0 && (\n <Button type=\"button\" size=\"sm\" onClick={onPrevPage} icon={<ArrowLeftIcon />}>\n Previous\n </Button>\n )}\n {hasMore && (\n <Button type=\"button\" size=\"sm\" onClick={onNextPage} icon={<ArrowRightIcon />}>\n Next\n </Button>\n )}\n </div>\n )}\n </div>\n );\n}\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { useDataListRowWrapperContext } from './data-list-row-wrapper-context';\nimport { dataListRowStaticStyles } from './shared';\nimport type { DataListRowSharedProps } from './shared';\nimport { cn } from '@/lib/utils';\n\nexport type DataListRowStaticProps = ComponentPropsWithoutRef<'div'> & DataListRowSharedProps;\n\n/**\n * Non-interactive row. Use when a row should *display* like a regular row but\n * has no link target or click handler\n */\nexport const DataListRowStatic = forwardRef<HTMLDivElement, DataListRowStaticProps>(\n ({ children, className, colStart, colEnd, featured, variant, style, ...rest }, ref) => {\n const isWrapped = useDataListRowWrapperContext();\n const hasColumnOverride = colStart !== undefined || colEnd !== undefined;\n const resolvedStyle = hasColumnOverride ? { ...style, gridColumn: `${colStart ?? 1} / ${colEnd ?? -1}` } : style;\n return (\n <div\n ref={ref}\n className={cn(isWrapped ? 'grid grid-cols-subgrid gap-4 px-3' : dataListRowStaticStyles, className)}\n style={resolvedStyle}\n data-featured={featured || undefined}\n data-variant={variant ?? 'default'}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nDataListRowStatic.displayName = 'DataListRowStatic';\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListSubheaderProps = ComponentPropsWithoutRef<'div'>;\n\nexport const DataListSubheader = forwardRef<HTMLDivElement, DataListSubheaderProps>(\n ({ children, className, ...rest }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'data-list-subheader relative isolate col-span-full px-3 py-2 text-subheading text-muted-foreground',\n 'bg-(--data-list-background)',\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nDataListSubheader.displayName = 'DataListSubheader';\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListSubHeadingProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function DataListSubHeading({ children, className }: DataListSubHeadingProps) {\n return <span className={cn('text-caption text-placeholder', className)}>{children}</span>;\n}\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListTopCellsProps = ComponentPropsWithoutRef<'div'> & {\n /**\n * Drop the group's default left margin. Use when this sits as the second\n * child of a gap-0 `DataList.Top`, beside a `DataList.TopSelectCell` that\n * owns the leading column.\n */\n flushLeft?: boolean;\n /**\n * Place the group starting at this column line, spanning through to the\n * last column. Defaults to the full grid (`col-span-full`). Use when this\n * sits beside a leading cell that owns column 1.\n */\n colStart?: number;\n};\n\n/**\n * Non-interactive header equivalent of `DataList.RowButton`. Groups a set of\n * `DataList.TopCell`s with the same horizontal layout (gap, mx, px) as\n * `RowButton`, so columns inside a wrapped `Top` line up cell-for-cell with the\n * columns inside a wrapped `Row`.\n */\nexport const DataListTopCells = forwardRef<HTMLDivElement, DataListTopCellsProps>(\n ({ children, className, flushLeft, colStart, style, ...rest }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'pointer-events-none grid grid-cols-subgrid gap-4 px-3 [&>*]:pointer-events-auto',\n !colStart && 'col-span-full',\n flushLeft && 'pl-0!',\n className,\n )}\n style={colStart ? { ...style, gridColumn: `${colStart} / -1` } : style}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nDataListTopCells.displayName = 'DataListTopCells';\n","import {\n DataListActionsCell,\n DataListCell,\n DataListTextCell,\n DataListNameCell,\n DataListDescriptionCell,\n DataListIdCell,\n DataListRowHeaderCell,\n DataListNumberCell,\n DataListSelectCell,\n DataListDateCell,\n DataListCreatedCell,\n DataListTimeCell,\n} from './data-list-cells';\nimport { DataListNextPageLoading } from './data-list-next-page-loading';\nimport { DataListNoMatch } from './data-list-no-match';\nimport { DataListPagination } from './data-list-pagination';\nimport { DataListRoot } from './data-list-root';\nimport { DataListRowButton } from './data-list-row-button';\nimport { DataListRowLink } from './data-list-row-link';\nimport { DataListRowStatic } from './data-list-row-static';\nimport { DataListRowWrapper } from './data-list-row-wrapper';\nimport { DataListSortableTopCell } from './data-list-sortable-top-cell';\nimport { DataListSpacer } from './data-list-spacer';\nimport { DataListSubheader } from './data-list-subheader';\nimport { DataListSubHeading } from './data-list-subheading';\nimport { DataListTop } from './data-list-top';\nimport {\n DataListTopCell,\n DataListTopCellWithTooltip,\n DataListTopCellSmart,\n DataListTopSelectCell,\n} from './data-list-top-cell';\nimport { DataListTopCells } from './data-list-top-cells';\n\nexport type { DataListRootProps, DataListVariant } from './data-list-root';\nexport type { DataListSortableTopCellProps, DataListSort } from './data-list-sortable-top-cell';\n\nexport const DataList = Object.assign(DataListRoot, {\n Top: DataListTop,\n TopCells: DataListTopCells,\n TopCell: DataListTopCell,\n SortableTopCell: DataListSortableTopCell,\n TopCellWithTooltip: DataListTopCellWithTooltip,\n TopCellSmart: DataListTopCellSmart,\n RowWrapper: DataListRowWrapper,\n RowButton: DataListRowButton,\n RowLink: DataListRowLink,\n RowStatic: DataListRowStatic,\n Cell: DataListCell,\n ActionsCell: DataListActionsCell,\n TextCell: DataListTextCell,\n NameCell: DataListNameCell,\n DescriptionCell: DataListDescriptionCell,\n IdCell: DataListIdCell,\n RowHeaderCell: DataListRowHeaderCell,\n NumberCell: DataListNumberCell,\n DateCell: DataListDateCell,\n CreatedCell: DataListCreatedCell,\n TimeCell: DataListTimeCell,\n SelectCell: DataListSelectCell,\n TopSelectCell: DataListTopSelectCell,\n NoMatch: DataListNoMatch,\n Subheader: DataListSubheader,\n SubHeading: DataListSubHeading,\n Spacer: DataListSpacer,\n NextPageLoading: DataListNextPageLoading,\n Pagination: DataListPagination,\n});\n"],"names":["jsxs","jsx","Button","ArrowLeftIcon","ArrowRightIcon","forwardRef","useDataListRowWrapperContext","cn","dataListRowStaticStyles","DataListRoot","DataListTop","DataListTopCell","DataListSortableTopCell","DataListTopCellWithTooltip","DataListTopCellSmart","DataListRowWrapper","DataListRowButton","DataListRowLink","DataListCell","DataListActionsCell","DataListTextCell","DataListNameCell","DataListDescriptionCell","DataListIdCell","DataListRowHeaderCell","DataListNumberCell","DataListDateCell","DataListCreatedCell","DataListTimeCell","DataListSelectCell","DataListTopSelectCell","DataListNoMatch","DataListSpacer","DataListNextPageLoading"],"mappings":"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"}
1
+ {"version":3,"file":"data-list-PwFpP_mo.cjs","sources":["../src/ds/components/DataList/data-list-pagination.tsx","../src/ds/components/DataList/data-list-row-static.tsx","../src/ds/components/DataList/data-list-subheader.tsx","../src/ds/components/DataList/data-list-subheading.tsx","../src/ds/components/DataList/data-list-top-cells.tsx","../src/ds/components/DataList/data-list.tsx"],"sourcesContent":["import { ArrowLeftIcon, ArrowRightIcon } from 'lucide-react';\nimport { Button } from '@/ds/components/Button';\n\nexport type DataListPaginationProps = {\n currentPage?: number;\n hasMore?: boolean;\n onNextPage?: () => void;\n onPrevPage?: () => void;\n};\n\nexport function DataListPagination({ currentPage, hasMore, onNextPage, onPrevPage }: DataListPaginationProps) {\n const showNavigation = (typeof currentPage === 'number' && currentPage > 0) || hasMore;\n\n return (\n <div className=\"col-span-full flex items-center justify-center gap-4 py-3 text-body text-muted-foreground\">\n <span>\n Page <b>{currentPage ? currentPage + 1 : '1'}</b>\n </span>\n {showNavigation && (\n <div className=\"flex gap-4\">\n {typeof currentPage === 'number' && currentPage > 0 && (\n <Button type=\"button\" size=\"sm\" onClick={onPrevPage} icon={<ArrowLeftIcon />}>\n Previous\n </Button>\n )}\n {hasMore && (\n <Button type=\"button\" size=\"sm\" onClick={onNextPage} icon={<ArrowRightIcon />}>\n Next\n </Button>\n )}\n </div>\n )}\n </div>\n );\n}\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { useDataListRowWrapperContext } from './data-list-row-wrapper-context';\nimport { dataListRowStaticStyles } from './shared';\nimport type { DataListRowSharedProps } from './shared';\nimport { cn } from '@/lib/utils';\n\nexport type DataListRowStaticProps = ComponentPropsWithoutRef<'div'> & DataListRowSharedProps;\n\n/**\n * Non-interactive row. Use when a row should *display* like a regular row but\n * has no link target or click handler\n */\nexport const DataListRowStatic = forwardRef<HTMLDivElement, DataListRowStaticProps>(\n ({ children, className, colStart, colEnd, featured, variant, style, ...rest }, ref) => {\n const isWrapped = useDataListRowWrapperContext();\n const hasColumnOverride = colStart !== undefined || colEnd !== undefined;\n const resolvedStyle = hasColumnOverride ? { ...style, gridColumn: `${colStart ?? 1} / ${colEnd ?? -1}` } : style;\n return (\n <div\n ref={ref}\n className={cn(isWrapped ? 'grid grid-cols-subgrid gap-4 px-3' : dataListRowStaticStyles, className)}\n style={resolvedStyle}\n data-featured={featured || undefined}\n data-variant={variant ?? 'default'}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nDataListRowStatic.displayName = 'DataListRowStatic';\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListSubheaderProps = ComponentPropsWithoutRef<'div'>;\n\nexport const DataListSubheader = forwardRef<HTMLDivElement, DataListSubheaderProps>(\n ({ children, className, ...rest }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'data-list-subheader relative isolate col-span-full px-3 py-2 text-subheading text-muted-foreground',\n 'bg-(--data-list-background)',\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nDataListSubheader.displayName = 'DataListSubheader';\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListSubHeadingProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function DataListSubHeading({ children, className }: DataListSubHeadingProps) {\n return <span className={cn('text-caption text-placeholder', className)}>{children}</span>;\n}\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListTopCellsProps = ComponentPropsWithoutRef<'div'> & {\n /**\n * Drop the group's default left margin. Use when this sits as the second\n * child of a gap-0 `DataList.Top`, beside a `DataList.TopSelectCell` that\n * owns the leading column.\n */\n flushLeft?: boolean;\n /**\n * Place the group starting at this column line, spanning through to the\n * last column. Defaults to the full grid (`col-span-full`). Use when this\n * sits beside a leading cell that owns column 1.\n */\n colStart?: number;\n};\n\n/**\n * Non-interactive header equivalent of `DataList.RowButton`. Groups a set of\n * `DataList.TopCell`s with the same horizontal layout (gap, mx, px) as\n * `RowButton`, so columns inside a wrapped `Top` line up cell-for-cell with the\n * columns inside a wrapped `Row`.\n */\nexport const DataListTopCells = forwardRef<HTMLDivElement, DataListTopCellsProps>(\n ({ children, className, flushLeft, colStart, style, ...rest }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'pointer-events-none grid grid-cols-subgrid gap-4 px-3 [&>*]:pointer-events-auto',\n !colStart && 'col-span-full',\n flushLeft && 'pl-0!',\n className,\n )}\n style={colStart ? { ...style, gridColumn: `${colStart} / -1` } : style}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nDataListTopCells.displayName = 'DataListTopCells';\n","import {\n DataListActionsCell,\n DataListCell,\n DataListTextCell,\n DataListNameCell,\n DataListDescriptionCell,\n DataListIdCell,\n DataListRowHeaderCell,\n DataListNumberCell,\n DataListSelectCell,\n DataListDateCell,\n DataListCreatedCell,\n DataListTimeCell,\n} from './data-list-cells';\nimport { DataListNextPageLoading } from './data-list-next-page-loading';\nimport { DataListNoMatch } from './data-list-no-match';\nimport { DataListPagination } from './data-list-pagination';\nimport { DataListRoot } from './data-list-root';\nimport { DataListRowButton } from './data-list-row-button';\nimport { DataListRowLink } from './data-list-row-link';\nimport { DataListRowStatic } from './data-list-row-static';\nimport { DataListRowWrapper } from './data-list-row-wrapper';\nimport { DataListSortableTopCell } from './data-list-sortable-top-cell';\nimport { DataListSpacer } from './data-list-spacer';\nimport { DataListSubheader } from './data-list-subheader';\nimport { DataListSubHeading } from './data-list-subheading';\nimport { DataListTop } from './data-list-top';\nimport {\n DataListTopCell,\n DataListTopCellWithTooltip,\n DataListTopCellSmart,\n DataListTopSelectCell,\n} from './data-list-top-cell';\nimport { DataListTopCells } from './data-list-top-cells';\n\nexport type { DataListRootProps, DataListVariant } from './data-list-root';\nexport type { DataListSortableTopCellProps, DataListSort } from './data-list-sortable-top-cell';\n\nexport const DataList = Object.assign(DataListRoot, {\n Top: DataListTop,\n TopCells: DataListTopCells,\n TopCell: DataListTopCell,\n SortableTopCell: DataListSortableTopCell,\n TopCellWithTooltip: DataListTopCellWithTooltip,\n TopCellSmart: DataListTopCellSmart,\n RowWrapper: DataListRowWrapper,\n RowButton: DataListRowButton,\n RowLink: DataListRowLink,\n RowStatic: DataListRowStatic,\n Cell: DataListCell,\n ActionsCell: DataListActionsCell,\n TextCell: DataListTextCell,\n NameCell: DataListNameCell,\n DescriptionCell: DataListDescriptionCell,\n IdCell: DataListIdCell,\n RowHeaderCell: DataListRowHeaderCell,\n NumberCell: DataListNumberCell,\n DateCell: DataListDateCell,\n CreatedCell: DataListCreatedCell,\n TimeCell: DataListTimeCell,\n SelectCell: DataListSelectCell,\n TopSelectCell: DataListTopSelectCell,\n NoMatch: DataListNoMatch,\n Subheader: DataListSubheader,\n SubHeading: DataListSubHeading,\n Spacer: DataListSpacer,\n NextPageLoading: DataListNextPageLoading,\n Pagination: DataListPagination,\n});\n"],"names":["jsxs","jsx","Button","ArrowLeftIcon","ArrowRightIcon","forwardRef","useDataListRowWrapperContext","cn","dataListRowStaticStyles","DataListRoot","DataListTop","DataListTopCell","DataListSortableTopCell","DataListTopCellWithTooltip","DataListTopCellSmart","DataListRowWrapper","DataListRowButton","DataListRowLink","DataListCell","DataListActionsCell","DataListTextCell","DataListNameCell","DataListDescriptionCell","DataListIdCell","DataListRowHeaderCell","DataListNumberCell","DataListDateCell","DataListCreatedCell","DataListTimeCell","DataListSelectCell","DataListTopSelectCell","DataListNoMatch","DataListSpacer","DataListNextPageLoading"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  const jsxRuntime = require('react/jsx-runtime');
4
- const dataListTop = require('./data-list-top-B-gb-FY6.cjs');
4
+ const dataListTop = require('./data-list-top-WGUY167p.cjs');
5
5
  const utils_cn = require('./cn-DG0X1KEP.cjs');
6
6
 
7
7
  const widths = ["75%", "50%", "65%", "90%", "60%", "80%"];
@@ -35,4 +35,4 @@ function DataListSkeleton({
35
35
  }
36
36
 
37
37
  exports.DataListSkeleton = DataListSkeleton;
38
- //# sourceMappingURL=data-list-skeleton-K_WmrVke.cjs.map
38
+ //# sourceMappingURL=data-list-skeleton-CjwR0o3w.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-list-skeleton-K_WmrVke.cjs","sources":["../src/ds/components/DataList/data-list-skeleton.tsx"],"sourcesContent":["import { DataListCell } from './data-list-cells';\nimport { DataListRoot } from './data-list-root';\nimport type { DataListFit, DataListVariant } from './data-list-root';\nimport { DataListTop } from './data-list-top';\nimport { DataListTopCell } from './data-list-top-cell';\nimport { dataListRowOuterStyles, splitColumns } from './shared';\nimport { cn } from '@/lib/utils';\n\nconst widths = ['75%', '50%', '65%', '90%', '60%', '80%'] as const;\nconst headerWidths = ['3rem', '5rem', '4rem', '3.5rem', '4.5rem', '3rem'] as const;\n\nexport type DataListSkeletonProps = {\n columns?: string;\n numberOfRows?: number;\n fit?: DataListFit;\n variant?: DataListVariant;\n};\n\nfunction SkeletonBar({ width, className }: { width: string; className?: string }) {\n return (\n <div\n className={cn('h-4 animate-pulse rounded-lg bg-(--data-list-background) text-transparent select-none', className)}\n style={{ width }}\n />\n );\n}\n\n/**\n * Loading placeholder mirroring the real list: same root, a sticky header\n * band with one placeholder label per column, then rows of placeholder cells.\n */\nexport function DataListSkeleton({\n columns = 'auto 1fr auto auto',\n numberOfRows = 3,\n fit,\n variant,\n}: DataListSkeletonProps) {\n const columnParts = splitColumns(columns);\n const columnCount = columnParts.length;\n const skeletonColumns = columnParts.map(col => (col === 'auto' ? 'minmax(6rem, auto)' : col)).join(' ');\n\n const getPseudoRandomWidth = (rowIdx: number, colIdx: number) => {\n const index = (rowIdx + colIdx + columnCount + numberOfRows) % widths.length;\n return widths[index] ?? widths[0];\n };\n\n return (\n <DataListRoot columns={skeletonColumns} fit={fit} variant={variant}>\n <DataListTop>\n {Array.from({ length: columnCount }).map((_, colIdx) => (\n <DataListTopCell key={colIdx}>\n <SkeletonBar width={headerWidths[colIdx % headerWidths.length] ?? headerWidths[0]} className=\"h-3\" />\n </DataListTopCell>\n ))}\n </DataListTop>\n {Array.from({ length: numberOfRows }).map((_, rowIdx) => (\n <div key={rowIdx} className={cn('grid grid-cols-subgrid gap-4 px-3', ...dataListRowOuterStyles)}>\n {Array.from({ length: columnCount }).map((_, colIdx) => (\n <DataListCell key={colIdx}>\n <SkeletonBar width={getPseudoRandomWidth(rowIdx, colIdx)} />\n </DataListCell>\n ))}\n </div>\n ))}\n </DataListRoot>\n );\n}\n"],"names":["jsx","cn","splitColumns","jsxs","DataListRoot","DataListTop","DataListTopCell","dataListRowOuterStyles","_","DataListCell"],"mappings":";;;;;;AAQA,MAAM,SAAS,CAAC,KAAA,EAAO,OAAO,KAAA,EAAO,KAAA,EAAO,OAAO,KAAK,CAAA;AACxD,MAAM,eAAe,CAAC,MAAA,EAAQ,QAAQ,MAAA,EAAQ,QAAA,EAAU,UAAU,MAAM,CAAA;AASxE,SAAS,WAAA,CAAY,EAAE,KAAA,EAAO,SAAA,EAAU,EAA0C;AAChF,EAAA,uBACEA,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWC,WAAA,CAAG,uFAAA,EAAyF,SAAS,CAAA;AAAA,MAChH,KAAA,EAAO,EAAE,KAAA;AAAM;AAAA,GACjB;AAEJ;AAMO,SAAS,gBAAA,CAAiB;AAAA,EAC/B,OAAA,GAAU,oBAAA;AAAA,EACV,YAAA,GAAe,CAAA;AAAA,EACf,GAAA;AAAA,EACA;AACF,CAAA,EAA0B;AACxB,EAAA,MAAM,WAAA,GAAcC,yBAAa,OAAO,CAAA;AACxC,EAAA,MAAM,cAAc,WAAA,CAAY,MAAA;AAChC,EAAA,MAAM,eAAA,GAAkB,WAAA,CAAY,GAAA,CAAI,CAAA,GAAA,KAAQ,GAAA,KAAQ,SAAS,oBAAA,GAAuB,GAAI,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAEtG,EAAA,MAAM,oBAAA,GAAuB,CAAC,MAAA,EAAgB,MAAA,KAAmB;AAC/D,IAAA,MAAM,KAAA,GAAA,CAAS,MAAA,GAAS,MAAA,GAAS,WAAA,GAAc,gBAAgB,MAAA,CAAO,MAAA;AACtE,IAAA,OAAO,MAAA,CAAO,KAAK,CAAA,IAAK,MAAA,CAAO,CAAC,CAAA;AAAA,EAClC,CAAA;AAEA,EAAA,uBACEC,eAAA,CAACC,wBAAA,EAAA,EAAa,OAAA,EAAS,eAAA,EAAiB,KAAU,OAAA,EAChD,QAAA,EAAA;AAAA,oBAAAJ,cAAA,CAACK,uBAAA,EAAA,EACE,QAAA,EAAA,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,WAAA,EAAa,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,EAAG,MAAA,oCAC1CC,2BAAA,EAAA,EACC,QAAA,kBAAAN,cAAA,CAAC,WAAA,EAAA,EAAY,KAAA,EAAO,YAAA,CAAa,MAAA,GAAS,YAAA,CAAa,MAAM,CAAA,IAAK,YAAA,CAAa,CAAC,CAAA,EAAG,SAAA,EAAU,KAAA,EAAM,CAAA,EAAA,EAD/E,MAEtB,CACD,CAAA,EACH,CAAA;AAAA,IACC,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,cAAc,CAAA,CAAE,IAAI,CAAC,CAAA,EAAG,2BAC5CA,cAAA,CAAC,KAAA,EAAA,EAAiB,WAAWC,WAAA,CAAG,mCAAA,EAAqC,GAAGM,kCAAsB,CAAA,EAC3F,gBAAM,IAAA,CAAK,EAAE,QAAQ,WAAA,EAAa,EAAE,GAAA,CAAI,CAACC,IAAG,MAAA,qBAC3CR,cAAA,CAACS,4BACC,QAAA,kBAAAT,cAAA,CAAC,WAAA,EAAA,EAAY,OAAO,oBAAA,CAAqB,MAAA,EAAQ,MAAM,CAAA,EAAG,CAAA,EAAA,EADzC,MAEnB,CACD,CAAA,EAAA,EALO,MAMV,CACD;AAAA,GAAA,EACH,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"data-list-skeleton-CjwR0o3w.cjs","sources":["../src/ds/components/DataList/data-list-skeleton.tsx"],"sourcesContent":["import { DataListCell } from './data-list-cells';\nimport { DataListRoot } from './data-list-root';\nimport type { DataListFit, DataListVariant } from './data-list-root';\nimport { DataListTop } from './data-list-top';\nimport { DataListTopCell } from './data-list-top-cell';\nimport { dataListRowOuterStyles, splitColumns } from './shared';\nimport { cn } from '@/lib/utils';\n\nconst widths = ['75%', '50%', '65%', '90%', '60%', '80%'] as const;\nconst headerWidths = ['3rem', '5rem', '4rem', '3.5rem', '4.5rem', '3rem'] as const;\n\nexport type DataListSkeletonProps = {\n columns?: string;\n numberOfRows?: number;\n fit?: DataListFit;\n variant?: DataListVariant;\n};\n\nfunction SkeletonBar({ width, className }: { width: string; className?: string }) {\n return (\n <div\n className={cn('h-4 animate-pulse rounded-lg bg-(--data-list-background) text-transparent select-none', className)}\n style={{ width }}\n />\n );\n}\n\n/**\n * Loading placeholder mirroring the real list: same root, a sticky header\n * band with one placeholder label per column, then rows of placeholder cells.\n */\nexport function DataListSkeleton({\n columns = 'auto 1fr auto auto',\n numberOfRows = 3,\n fit,\n variant,\n}: DataListSkeletonProps) {\n const columnParts = splitColumns(columns);\n const columnCount = columnParts.length;\n const skeletonColumns = columnParts.map(col => (col === 'auto' ? 'minmax(6rem, auto)' : col)).join(' ');\n\n const getPseudoRandomWidth = (rowIdx: number, colIdx: number) => {\n const index = (rowIdx + colIdx + columnCount + numberOfRows) % widths.length;\n return widths[index] ?? widths[0];\n };\n\n return (\n <DataListRoot columns={skeletonColumns} fit={fit} variant={variant}>\n <DataListTop>\n {Array.from({ length: columnCount }).map((_, colIdx) => (\n <DataListTopCell key={colIdx}>\n <SkeletonBar width={headerWidths[colIdx % headerWidths.length] ?? headerWidths[0]} className=\"h-3\" />\n </DataListTopCell>\n ))}\n </DataListTop>\n {Array.from({ length: numberOfRows }).map((_, rowIdx) => (\n <div key={rowIdx} className={cn('grid grid-cols-subgrid gap-4 px-3', ...dataListRowOuterStyles)}>\n {Array.from({ length: columnCount }).map((_, colIdx) => (\n <DataListCell key={colIdx}>\n <SkeletonBar width={getPseudoRandomWidth(rowIdx, colIdx)} />\n </DataListCell>\n ))}\n </div>\n ))}\n </DataListRoot>\n );\n}\n"],"names":["jsx","cn","splitColumns","jsxs","DataListRoot","DataListTop","DataListTopCell","dataListRowOuterStyles","_","DataListCell"],"mappings":";;;;;;AAQA,MAAM,SAAS,CAAC,KAAA,EAAO,OAAO,KAAA,EAAO,KAAA,EAAO,OAAO,KAAK,CAAA;AACxD,MAAM,eAAe,CAAC,MAAA,EAAQ,QAAQ,MAAA,EAAQ,QAAA,EAAU,UAAU,MAAM,CAAA;AASxE,SAAS,WAAA,CAAY,EAAE,KAAA,EAAO,SAAA,EAAU,EAA0C;AAChF,EAAA,uBACEA,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWC,WAAA,CAAG,uFAAA,EAAyF,SAAS,CAAA;AAAA,MAChH,KAAA,EAAO,EAAE,KAAA;AAAM;AAAA,GACjB;AAEJ;AAMO,SAAS,gBAAA,CAAiB;AAAA,EAC/B,OAAA,GAAU,oBAAA;AAAA,EACV,YAAA,GAAe,CAAA;AAAA,EACf,GAAA;AAAA,EACA;AACF,CAAA,EAA0B;AACxB,EAAA,MAAM,WAAA,GAAcC,yBAAa,OAAO,CAAA;AACxC,EAAA,MAAM,cAAc,WAAA,CAAY,MAAA;AAChC,EAAA,MAAM,eAAA,GAAkB,WAAA,CAAY,GAAA,CAAI,CAAA,GAAA,KAAQ,GAAA,KAAQ,SAAS,oBAAA,GAAuB,GAAI,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAEtG,EAAA,MAAM,oBAAA,GAAuB,CAAC,MAAA,EAAgB,MAAA,KAAmB;AAC/D,IAAA,MAAM,KAAA,GAAA,CAAS,MAAA,GAAS,MAAA,GAAS,WAAA,GAAc,gBAAgB,MAAA,CAAO,MAAA;AACtE,IAAA,OAAO,MAAA,CAAO,KAAK,CAAA,IAAK,MAAA,CAAO,CAAC,CAAA;AAAA,EAClC,CAAA;AAEA,EAAA,uBACEC,eAAA,CAACC,wBAAA,EAAA,EAAa,OAAA,EAAS,eAAA,EAAiB,KAAU,OAAA,EAChD,QAAA,EAAA;AAAA,oBAAAJ,cAAA,CAACK,uBAAA,EAAA,EACE,QAAA,EAAA,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,WAAA,EAAa,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,EAAG,MAAA,oCAC1CC,2BAAA,EAAA,EACC,QAAA,kBAAAN,cAAA,CAAC,WAAA,EAAA,EAAY,KAAA,EAAO,YAAA,CAAa,MAAA,GAAS,YAAA,CAAa,MAAM,CAAA,IAAK,YAAA,CAAa,CAAC,CAAA,EAAG,SAAA,EAAU,KAAA,EAAM,CAAA,EAAA,EAD/E,MAEtB,CACD,CAAA,EACH,CAAA;AAAA,IACC,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,cAAc,CAAA,CAAE,IAAI,CAAC,CAAA,EAAG,2BAC5CA,cAAA,CAAC,KAAA,EAAA,EAAiB,WAAWC,WAAA,CAAG,mCAAA,EAAqC,GAAGM,kCAAsB,CAAA,EAC3F,gBAAM,IAAA,CAAK,EAAE,QAAQ,WAAA,EAAa,EAAE,GAAA,CAAI,CAACC,IAAG,MAAA,qBAC3CR,cAAA,CAACS,4BACC,QAAA,kBAAAT,cAAA,CAAC,WAAA,EAAA,EAAY,OAAO,oBAAA,CAAqB,MAAA,EAAQ,MAAM,CAAA,EAAG,CAAA,EAAA,EADzC,MAEnB,CACD,CAAA,EAAA,EALO,MAMV,CACD;AAAA,GAAA,EACH,CAAA;AAEJ;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { s as splitColumns, D as DataListRoot, a as DataListTop, b as DataListTopCell, c as DataListCell, d as dataListRowOuterStyles } from './data-list-top-LiaWUw5P.js';
2
+ import { s as splitColumns, D as DataListRoot, a as DataListTop, b as DataListTopCell, c as DataListCell, d as dataListRowOuterStyles } from './data-list-top-DpbOA3uw.js';
3
3
  import { c as cn } from './cn-65Adrsfj.js';
4
4
 
5
5
  const widths = ["75%", "50%", "65%", "90%", "60%", "80%"];
@@ -33,4 +33,4 @@ function DataListSkeleton({
33
33
  }
34
34
 
35
35
  export { DataListSkeleton as D };
36
- //# sourceMappingURL=data-list-skeleton-h4pILqCC.js.map
36
+ //# sourceMappingURL=data-list-skeleton-DAfM8AjW.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-list-skeleton-h4pILqCC.js","sources":["../src/ds/components/DataList/data-list-skeleton.tsx"],"sourcesContent":["import { DataListCell } from './data-list-cells';\nimport { DataListRoot } from './data-list-root';\nimport type { DataListFit, DataListVariant } from './data-list-root';\nimport { DataListTop } from './data-list-top';\nimport { DataListTopCell } from './data-list-top-cell';\nimport { dataListRowOuterStyles, splitColumns } from './shared';\nimport { cn } from '@/lib/utils';\n\nconst widths = ['75%', '50%', '65%', '90%', '60%', '80%'] as const;\nconst headerWidths = ['3rem', '5rem', '4rem', '3.5rem', '4.5rem', '3rem'] as const;\n\nexport type DataListSkeletonProps = {\n columns?: string;\n numberOfRows?: number;\n fit?: DataListFit;\n variant?: DataListVariant;\n};\n\nfunction SkeletonBar({ width, className }: { width: string; className?: string }) {\n return (\n <div\n className={cn('h-4 animate-pulse rounded-lg bg-(--data-list-background) text-transparent select-none', className)}\n style={{ width }}\n />\n );\n}\n\n/**\n * Loading placeholder mirroring the real list: same root, a sticky header\n * band with one placeholder label per column, then rows of placeholder cells.\n */\nexport function DataListSkeleton({\n columns = 'auto 1fr auto auto',\n numberOfRows = 3,\n fit,\n variant,\n}: DataListSkeletonProps) {\n const columnParts = splitColumns(columns);\n const columnCount = columnParts.length;\n const skeletonColumns = columnParts.map(col => (col === 'auto' ? 'minmax(6rem, auto)' : col)).join(' ');\n\n const getPseudoRandomWidth = (rowIdx: number, colIdx: number) => {\n const index = (rowIdx + colIdx + columnCount + numberOfRows) % widths.length;\n return widths[index] ?? widths[0];\n };\n\n return (\n <DataListRoot columns={skeletonColumns} fit={fit} variant={variant}>\n <DataListTop>\n {Array.from({ length: columnCount }).map((_, colIdx) => (\n <DataListTopCell key={colIdx}>\n <SkeletonBar width={headerWidths[colIdx % headerWidths.length] ?? headerWidths[0]} className=\"h-3\" />\n </DataListTopCell>\n ))}\n </DataListTop>\n {Array.from({ length: numberOfRows }).map((_, rowIdx) => (\n <div key={rowIdx} className={cn('grid grid-cols-subgrid gap-4 px-3', ...dataListRowOuterStyles)}>\n {Array.from({ length: columnCount }).map((_, colIdx) => (\n <DataListCell key={colIdx}>\n <SkeletonBar width={getPseudoRandomWidth(rowIdx, colIdx)} />\n </DataListCell>\n ))}\n </div>\n ))}\n </DataListRoot>\n );\n}\n"],"names":["_"],"mappings":";;;;AAQA,MAAM,SAAS,CAAC,KAAA,EAAO,OAAO,KAAA,EAAO,KAAA,EAAO,OAAO,KAAK,CAAA;AACxD,MAAM,eAAe,CAAC,MAAA,EAAQ,QAAQ,MAAA,EAAQ,QAAA,EAAU,UAAU,MAAM,CAAA;AASxE,SAAS,WAAA,CAAY,EAAE,KAAA,EAAO,SAAA,EAAU,EAA0C;AAChF,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,uFAAA,EAAyF,SAAS,CAAA;AAAA,MAChH,KAAA,EAAO,EAAE,KAAA;AAAM;AAAA,GACjB;AAEJ;AAMO,SAAS,gBAAA,CAAiB;AAAA,EAC/B,OAAA,GAAU,oBAAA;AAAA,EACV,YAAA,GAAe,CAAA;AAAA,EACf,GAAA;AAAA,EACA;AACF,CAAA,EAA0B;AACxB,EAAA,MAAM,WAAA,GAAc,aAAa,OAAO,CAAA;AACxC,EAAA,MAAM,cAAc,WAAA,CAAY,MAAA;AAChC,EAAA,MAAM,eAAA,GAAkB,WAAA,CAAY,GAAA,CAAI,CAAA,GAAA,KAAQ,GAAA,KAAQ,SAAS,oBAAA,GAAuB,GAAI,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAEtG,EAAA,MAAM,oBAAA,GAAuB,CAAC,MAAA,EAAgB,MAAA,KAAmB;AAC/D,IAAA,MAAM,KAAA,GAAA,CAAS,MAAA,GAAS,MAAA,GAAS,WAAA,GAAc,gBAAgB,MAAA,CAAO,MAAA;AACtE,IAAA,OAAO,MAAA,CAAO,KAAK,CAAA,IAAK,MAAA,CAAO,CAAC,CAAA;AAAA,EAClC,CAAA;AAEA,EAAA,uBACE,IAAA,CAAC,YAAA,EAAA,EAAa,OAAA,EAAS,eAAA,EAAiB,KAAU,OAAA,EAChD,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,WAAA,EAAA,EACE,QAAA,EAAA,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,WAAA,EAAa,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,EAAG,MAAA,yBAC1C,eAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,WAAA,EAAA,EAAY,KAAA,EAAO,YAAA,CAAa,MAAA,GAAS,YAAA,CAAa,MAAM,CAAA,IAAK,YAAA,CAAa,CAAC,CAAA,EAAG,SAAA,EAAU,KAAA,EAAM,CAAA,EAAA,EAD/E,MAEtB,CACD,CAAA,EACH,CAAA;AAAA,IACC,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,cAAc,CAAA,CAAE,IAAI,CAAC,CAAA,EAAG,2BAC5C,GAAA,CAAC,KAAA,EAAA,EAAiB,WAAW,EAAA,CAAG,mCAAA,EAAqC,GAAG,sBAAsB,CAAA,EAC3F,gBAAM,IAAA,CAAK,EAAE,QAAQ,WAAA,EAAa,EAAE,GAAA,CAAI,CAACA,IAAG,MAAA,qBAC3C,GAAA,CAAC,gBACC,QAAA,kBAAA,GAAA,CAAC,WAAA,EAAA,EAAY,OAAO,oBAAA,CAAqB,MAAA,EAAQ,MAAM,CAAA,EAAG,CAAA,EAAA,EADzC,MAEnB,CACD,CAAA,EAAA,EALO,MAMV,CACD;AAAA,GAAA,EACH,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"data-list-skeleton-DAfM8AjW.js","sources":["../src/ds/components/DataList/data-list-skeleton.tsx"],"sourcesContent":["import { DataListCell } from './data-list-cells';\nimport { DataListRoot } from './data-list-root';\nimport type { DataListFit, DataListVariant } from './data-list-root';\nimport { DataListTop } from './data-list-top';\nimport { DataListTopCell } from './data-list-top-cell';\nimport { dataListRowOuterStyles, splitColumns } from './shared';\nimport { cn } from '@/lib/utils';\n\nconst widths = ['75%', '50%', '65%', '90%', '60%', '80%'] as const;\nconst headerWidths = ['3rem', '5rem', '4rem', '3.5rem', '4.5rem', '3rem'] as const;\n\nexport type DataListSkeletonProps = {\n columns?: string;\n numberOfRows?: number;\n fit?: DataListFit;\n variant?: DataListVariant;\n};\n\nfunction SkeletonBar({ width, className }: { width: string; className?: string }) {\n return (\n <div\n className={cn('h-4 animate-pulse rounded-lg bg-(--data-list-background) text-transparent select-none', className)}\n style={{ width }}\n />\n );\n}\n\n/**\n * Loading placeholder mirroring the real list: same root, a sticky header\n * band with one placeholder label per column, then rows of placeholder cells.\n */\nexport function DataListSkeleton({\n columns = 'auto 1fr auto auto',\n numberOfRows = 3,\n fit,\n variant,\n}: DataListSkeletonProps) {\n const columnParts = splitColumns(columns);\n const columnCount = columnParts.length;\n const skeletonColumns = columnParts.map(col => (col === 'auto' ? 'minmax(6rem, auto)' : col)).join(' ');\n\n const getPseudoRandomWidth = (rowIdx: number, colIdx: number) => {\n const index = (rowIdx + colIdx + columnCount + numberOfRows) % widths.length;\n return widths[index] ?? widths[0];\n };\n\n return (\n <DataListRoot columns={skeletonColumns} fit={fit} variant={variant}>\n <DataListTop>\n {Array.from({ length: columnCount }).map((_, colIdx) => (\n <DataListTopCell key={colIdx}>\n <SkeletonBar width={headerWidths[colIdx % headerWidths.length] ?? headerWidths[0]} className=\"h-3\" />\n </DataListTopCell>\n ))}\n </DataListTop>\n {Array.from({ length: numberOfRows }).map((_, rowIdx) => (\n <div key={rowIdx} className={cn('grid grid-cols-subgrid gap-4 px-3', ...dataListRowOuterStyles)}>\n {Array.from({ length: columnCount }).map((_, colIdx) => (\n <DataListCell key={colIdx}>\n <SkeletonBar width={getPseudoRandomWidth(rowIdx, colIdx)} />\n </DataListCell>\n ))}\n </div>\n ))}\n </DataListRoot>\n );\n}\n"],"names":["_"],"mappings":";;;;AAQA,MAAM,SAAS,CAAC,KAAA,EAAO,OAAO,KAAA,EAAO,KAAA,EAAO,OAAO,KAAK,CAAA;AACxD,MAAM,eAAe,CAAC,MAAA,EAAQ,QAAQ,MAAA,EAAQ,QAAA,EAAU,UAAU,MAAM,CAAA;AASxE,SAAS,WAAA,CAAY,EAAE,KAAA,EAAO,SAAA,EAAU,EAA0C;AAChF,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,uFAAA,EAAyF,SAAS,CAAA;AAAA,MAChH,KAAA,EAAO,EAAE,KAAA;AAAM;AAAA,GACjB;AAEJ;AAMO,SAAS,gBAAA,CAAiB;AAAA,EAC/B,OAAA,GAAU,oBAAA;AAAA,EACV,YAAA,GAAe,CAAA;AAAA,EACf,GAAA;AAAA,EACA;AACF,CAAA,EAA0B;AACxB,EAAA,MAAM,WAAA,GAAc,aAAa,OAAO,CAAA;AACxC,EAAA,MAAM,cAAc,WAAA,CAAY,MAAA;AAChC,EAAA,MAAM,eAAA,GAAkB,WAAA,CAAY,GAAA,CAAI,CAAA,GAAA,KAAQ,GAAA,KAAQ,SAAS,oBAAA,GAAuB,GAAI,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAEtG,EAAA,MAAM,oBAAA,GAAuB,CAAC,MAAA,EAAgB,MAAA,KAAmB;AAC/D,IAAA,MAAM,KAAA,GAAA,CAAS,MAAA,GAAS,MAAA,GAAS,WAAA,GAAc,gBAAgB,MAAA,CAAO,MAAA;AACtE,IAAA,OAAO,MAAA,CAAO,KAAK,CAAA,IAAK,MAAA,CAAO,CAAC,CAAA;AAAA,EAClC,CAAA;AAEA,EAAA,uBACE,IAAA,CAAC,YAAA,EAAA,EAAa,OAAA,EAAS,eAAA,EAAiB,KAAU,OAAA,EAChD,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,WAAA,EAAA,EACE,QAAA,EAAA,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,WAAA,EAAa,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,EAAG,MAAA,yBAC1C,eAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,WAAA,EAAA,EAAY,KAAA,EAAO,YAAA,CAAa,MAAA,GAAS,YAAA,CAAa,MAAM,CAAA,IAAK,YAAA,CAAa,CAAC,CAAA,EAAG,SAAA,EAAU,KAAA,EAAM,CAAA,EAAA,EAD/E,MAEtB,CACD,CAAA,EACH,CAAA;AAAA,IACC,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,cAAc,CAAA,CAAE,IAAI,CAAC,CAAA,EAAG,2BAC5C,GAAA,CAAC,KAAA,EAAA,EAAiB,WAAW,EAAA,CAAG,mCAAA,EAAqC,GAAG,sBAAsB,CAAA,EAC3F,gBAAM,IAAA,CAAK,EAAE,QAAQ,WAAA,EAAa,EAAE,GAAA,CAAI,CAACA,IAAG,MAAA,qBAC3C,GAAA,CAAC,gBACC,QAAA,kBAAA,GAAA,CAAC,WAAA,EAAA,EAAY,OAAO,oBAAA,CAAqB,MAAA,EAAQ,MAAM,CAAA,EAAG,CAAA,EAAA,EADzC,MAEnB,CACD,CAAA,EAAA,EALO,MAMV,CACD;AAAA,GAAA,EACH,CAAA;AAEJ;;;;"}
@@ -1,7 +1,7 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { c as cn } from './cn-65Adrsfj.js';
3
3
  import { useContext, createContext, forwardRef } from 'react';
4
- import { u as dataListRowInteractiveStyles, v as dataListRowStyles, d as dataListRowOuterStyles, w as dataListRowStateStyles, b as DataListTopCell } from './data-list-top-LiaWUw5P.js';
4
+ import { u as dataListRowInteractiveStyles, v as dataListRowStyles, d as dataListRowOuterStyles, w as dataListRowStateStyles, b as DataListTopCell } from './data-list-top-DpbOA3uw.js';
5
5
  import { useFluidMenuItemRef } from './primitives/fluid-menu.es.js';
6
6
  import { ArrowUpDown, ArrowDown, ArrowUp } from 'lucide-react';
7
7
  import { B as Button } from './Button-B8nF87ai.js';
@@ -197,4 +197,4 @@ function DataListSpacer({ height }) {
197
197
  }
198
198
 
199
199
  export { DataListNextPageLoading as D, DataListNoMatch as a, DataListSpacer as b, DataListRowLink as c, DataListRowButton as d, DataListRowWrapper as e, DataListSortableTopCell as f, useDataListRowWrapperContext as u };
200
- //# sourceMappingURL=data-list-spacer-BQ4_YeyT.js.map
200
+ //# sourceMappingURL=data-list-spacer-BmorAN0V.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-list-spacer-BQ4_YeyT.js","sources":["../src/ds/components/DataList/data-list-next-page-loading.tsx","../src/ds/components/DataList/data-list-no-match.tsx","../src/ds/components/DataList/data-list-row-wrapper-context.ts","../src/ds/components/DataList/data-list-row-button.tsx","../src/ds/components/DataList/data-list-row-link.tsx","../src/ds/components/DataList/data-list-row-wrapper.tsx","../src/ds/components/DataList/data-list-sortable-top-cell.tsx","../src/ds/components/DataList/data-list-spacer.tsx"],"sourcesContent":["import { cn } from '@/lib/utils';\n\nexport type DataListNextPageLoadingProps = {\n isLoading?: boolean;\n hasMore?: boolean;\n setEndOfListElement?: (element: HTMLDivElement | null) => void;\n loadingText?: string;\n};\n\nexport function DataListNextPageLoading({\n isLoading,\n setEndOfListElement,\n hasMore,\n loadingText = 'Loading more data...',\n}: DataListNextPageLoadingProps) {\n if (!setEndOfListElement) {\n return null;\n }\n\n return (\n <div\n ref={setEndOfListElement}\n // Zero-height when idle so it adds no trailing space below the last row;\n // IntersectionObserver still fires for a zero-area target at the viewport edge.\n className={cn('col-span-full -mt-px flex justify-center text-body text-muted-foreground opacity-50', {\n 'py-4': isLoading,\n })}\n >\n {isLoading && loadingText}\n </div>\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListNoMatchProps = ComponentPropsWithoutRef<'div'> & {\n message?: string;\n};\n\nexport function DataListNoMatch({\n message = 'Nothing matches your search',\n className,\n ...props\n}: DataListNoMatchProps) {\n return (\n <div\n className={cn(\n 'col-span-full flex flex-col items-center justify-center gap-2 rounded-lg bg-background py-8 text-muted-foreground',\n className,\n )}\n {...props}\n >\n <p className=\"text-body\">{message}</p>\n </div>\n );\n}\n","import { createContext, useContext } from 'react';\n\nexport const DataListRowWrapperContext = createContext(false);\n\nexport function useDataListRowWrapperContext() {\n return useContext(DataListRowWrapperContext);\n}\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { useDataListRowWrapperContext } from './data-list-row-wrapper-context';\nimport { dataListRowInteractiveStyles, dataListRowStyles } from './shared';\nimport type { DataListRowSharedProps } from './shared';\nimport { useFluidMenuItemRef } from '@/ds/primitives/fluid-menu';\nimport { cn } from '@/lib/utils';\n\nexport type DataListRowButtonProps = ComponentPropsWithoutRef<'button'> & DataListRowSharedProps;\n\n/**\n * Forwarded ref + spread props so virtualizers (`useVirtualizer.measureElement`)\n * can attach a ref and `data-index` to each rendered row.\n */\nexport const DataListRowButton = forwardRef<HTMLButtonElement, DataListRowButtonProps>(\n ({ children, className, type = 'button', colStart, colEnd, featured, variant, style, ...rest }, ref) => {\n const isWrapped = useDataListRowWrapperContext();\n // Standalone rows register with the root's fluid hover; wrapped ones let the wrapper do it.\n const fluidRef = useFluidMenuItemRef(ref);\n const hasColumnOverride = colStart !== undefined || colEnd !== undefined;\n const resolvedStyle = hasColumnOverride ? { ...style, gridColumn: `${colStart ?? 1} / ${colEnd ?? -1}` } : style;\n return (\n <button\n ref={isWrapped ? ref : fluidRef}\n type={type}\n className={cn(...(isWrapped ? dataListRowInteractiveStyles : dataListRowStyles), 'text-left', className)}\n style={resolvedStyle}\n data-featured={featured || undefined}\n data-variant={variant ?? 'default'}\n {...rest}\n >\n {children}\n </button>\n );\n },\n);\n\nDataListRowButton.displayName = 'DataListRowButton';\n","import { forwardRef } from 'react';\nimport type { CSSProperties, ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { useDataListRowWrapperContext } from './data-list-row-wrapper-context';\nimport { dataListRowInteractiveStyles, dataListRowStyles } from './shared';\nimport type { DataListRowSharedProps } from './shared';\nimport { useFluidMenuItemRef } from '@/ds/primitives/fluid-menu';\nimport type { LinkComponent } from '@/ds/types/link-component';\nimport { cn } from '@/lib/utils';\n\nexport type DataListRowLinkProps = DataListRowSharedProps & {\n children: ReactNode;\n to: string;\n className?: string;\n style?: CSSProperties;\n LinkComponent?: LinkComponent;\n} & Omit<ComponentPropsWithoutRef<'a'>, 'href' | 'children' | 'className' | 'style'>;\n\nexport const DataListRowLink = forwardRef<HTMLAnchorElement, DataListRowLinkProps>(\n (\n { children, to, className, style, LinkComponent: Link = 'a', colStart, colEnd, featured, variant, ...rest },\n ref,\n ) => {\n const isWrapped = useDataListRowWrapperContext();\n // Standalone rows register with the root's fluid hover; wrapped ones let the wrapper do it.\n const fluidRef = useFluidMenuItemRef(ref);\n const hasColumnOverride = colStart !== undefined || colEnd !== undefined;\n const resolvedStyle = hasColumnOverride ? { ...style, gridColumn: `${colStart ?? 1} / ${colEnd ?? -1}` } : style;\n return (\n <Link\n ref={isWrapped ? ref : fluidRef}\n href={to}\n className={cn(...(isWrapped ? dataListRowInteractiveStyles : dataListRowStyles), className)}\n style={resolvedStyle}\n data-featured={featured || undefined}\n data-variant={variant ?? 'default'}\n {...rest}\n >\n {children}\n </Link>\n );\n },\n);\n\nDataListRowLink.displayName = 'DataListRowLink';\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef, KeyboardEvent, MouseEvent } from 'react';\nimport { DataListRowWrapperContext } from './data-list-row-wrapper-context';\nimport { dataListRowOuterStyles, dataListRowStateStyles } from './shared';\nimport { useFluidMenuItemRef } from '@/ds/primitives/fluid-menu';\nimport { cn } from '@/lib/utils';\n\nexport type DataListRowWrapperProps = ComponentPropsWithoutRef<'div'> & {\n /**\n * Makes the whole wrapper the row's activation target: it becomes focusable\n * (`tabIndex=0` unless overridden, e.g. by `getRowProps`), and a click or\n * Enter on the wrapper itself calls this. Descendants that must not activate\n * the row (the inner link, popover triggers, action buttons) should call\n * `event.stopPropagation()` on their click.\n */\n onSelectRow?: () => void;\n};\n\n/**\n * Grid wrapper used to host a leading or trailing cell (e.g. a selection\n * checkbox or row actions) alongside a `DataList.RowButton` / `RowLink`.\n *\n * Without `onSelectRow` it is non-interactive: hover/focus/click only apply to\n * the nested row primitive. With `onSelectRow` the wrapper itself becomes the\n * click / Enter target so the entire row (including trailing cells) activates.\n * For standalone interactive rows, use `DataList.RowButton` directly.\n *\n * Carries the `.data-list-row` marker so root-level row styling behaves the\n * same in wrapped and standalone rows.\n */\nexport const DataListRowWrapper = forwardRef<HTMLDivElement, DataListRowWrapperProps>(\n ({ children, className, onSelectRow, onClick, onKeyDown, tabIndex, ...rest }, ref) => {\n const isSelectable = onSelectRow !== undefined;\n // The wrapper is the `.data-list-row` element, so it (not the nested\n // RowButton/RowLink) registers with the root's fluid hover.\n const rowRef = useFluidMenuItemRef(ref);\n\n const handleClick = (event: MouseEvent<HTMLDivElement>) => {\n onClick?.(event);\n if (!isSelectable || event.defaultPrevented) return;\n onSelectRow();\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n if (!isSelectable || event.defaultPrevented) return;\n // Only when the wrapper itself is focused. A focused descendant (the\n // link) receiving Enter fires its own native click; handling it here too\n // would activate the row twice.\n if (event.key === 'Enter' && event.target === event.currentTarget) {\n event.preventDefault();\n onSelectRow();\n }\n };\n\n return (\n <DataListRowWrapperContext.Provider value>\n <div\n ref={rowRef}\n tabIndex={tabIndex ?? (isSelectable ? 0 : undefined)}\n className={cn(\n 'grid grid-cols-subgrid gap-0',\n ...dataListRowOuterStyles,\n ...dataListRowStateStyles,\n isSelectable &&\n 'cursor-pointer outline-none focus-visible:ring-1 focus-visible:ring-accent1 focus-visible:ring-inset',\n className,\n )}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...rest}\n >\n {children}\n </div>\n </DataListRowWrapperContext.Provider>\n );\n },\n);\n\nDataListRowWrapper.displayName = 'DataListRowWrapper';\n","import { ArrowDown, ArrowUp, ArrowUpDown } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport { DataListTopCell } from './data-list-top-cell';\nimport type { DataListTopCellProps } from './data-list-top-cell';\nimport { Button } from '@/ds/components/Button';\nimport { cn } from '@/lib/utils';\n\nexport type DataListSort = 'asc' | 'desc';\n\nconst sortIcons = {\n asc: ArrowUp,\n desc: ArrowDown,\n none: ArrowUpDown,\n};\n\nconst sortLabels = {\n asc: 'ascending',\n desc: 'descending',\n};\n\nconst sortAnimations = {\n asc: 'animate-sort-arrow-up',\n desc: 'animate-sort-arrow-down',\n};\n\nconst sortTooltips = {\n asc: 'Asc',\n desc: 'Desc',\n none: 'Sort',\n};\n\nexport type DataListSortableTopCellProps<K extends string = string> = Omit<\n DataListTopCellProps,\n 'aria-sort' | 'as' | 'children' | 'onClick'\n> & {\n children: ReactNode;\n sortKey: K;\n sort?: DataListSort;\n onSortChange: (sort: DataListSort, key: K) => void;\n align?: 'start' | 'end';\n};\n\nexport function DataListSortableTopCell<K extends string = string>({\n children,\n sortKey,\n sort,\n onSortChange,\n align = 'start',\n className,\n ...props\n}: DataListSortableTopCellProps<K>) {\n const next: DataListSort = sort === 'asc' ? 'desc' : 'asc';\n const SortIcon = sortIcons[sort ?? 'none'];\n const label = typeof children === 'string' ? children : sortKey;\n const current = sort ? `sorted ${sortLabels[sort]}` : 'not sorted';\n\n return (\n <DataListTopCell\n data-sort={sort ?? 'none'}\n className={cn('gap-1 overflow-visible', align === 'end' && 'flex-row-reverse', className)}\n {...props}\n >\n <span className=\"min-w-0 truncate\">{children}</span>\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label={`${label}, ${current}, sort ${sortLabels[next]}`}\n tooltip={sortTooltips[sort ?? 'none']}\n onClick={() => onSortChange(next, sortKey)}\n className={cn('shrink-0', sort ? 'text-foreground' : 'text-muted-foreground')}\n >\n <SortIcon key={sort ?? 'none'} className={sort && sortAnimations[sort]} />\n </Button>\n </DataListTopCell>\n );\n}\n","export type DataListSpacerProps = {\n /** Pixel height of the spacer. Pass 0 to render nothing. */\n height: number;\n};\n\n/**\n * Pads top/bottom of the visible window when virtualizing — preserves the\n * grid's total scroll height for the rows that aren't currently rendered.\n * Spans the full grid width so it doesn't disturb column layout.\n */\nexport function DataListSpacer({ height }: DataListSpacerProps) {\n if (height <= 0) return null;\n return <div className=\"col-span-full\" style={{ height }} />;\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data-list-spacer-BmorAN0V.js","sources":["../src/ds/components/DataList/data-list-next-page-loading.tsx","../src/ds/components/DataList/data-list-no-match.tsx","../src/ds/components/DataList/data-list-row-wrapper-context.ts","../src/ds/components/DataList/data-list-row-button.tsx","../src/ds/components/DataList/data-list-row-link.tsx","../src/ds/components/DataList/data-list-row-wrapper.tsx","../src/ds/components/DataList/data-list-sortable-top-cell.tsx","../src/ds/components/DataList/data-list-spacer.tsx"],"sourcesContent":["import { cn } from '@/lib/utils';\n\nexport type DataListNextPageLoadingProps = {\n isLoading?: boolean;\n hasMore?: boolean;\n setEndOfListElement?: (element: HTMLDivElement | null) => void;\n loadingText?: string;\n};\n\nexport function DataListNextPageLoading({\n isLoading,\n setEndOfListElement,\n hasMore,\n loadingText = 'Loading more data...',\n}: DataListNextPageLoadingProps) {\n if (!setEndOfListElement) {\n return null;\n }\n\n return (\n <div\n ref={setEndOfListElement}\n // Zero-height when idle so it adds no trailing space below the last row;\n // IntersectionObserver still fires for a zero-area target at the viewport edge.\n className={cn('col-span-full -mt-px flex justify-center text-body text-muted-foreground opacity-50', {\n 'py-4': isLoading,\n })}\n >\n {isLoading && loadingText}\n </div>\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListNoMatchProps = ComponentPropsWithoutRef<'div'> & {\n message?: string;\n};\n\nexport function DataListNoMatch({\n message = 'Nothing matches your search',\n className,\n ...props\n}: DataListNoMatchProps) {\n return (\n <div\n className={cn(\n 'col-span-full flex flex-col items-center justify-center gap-2 rounded-lg bg-background py-8 text-muted-foreground',\n className,\n )}\n {...props}\n >\n <p className=\"text-body\">{message}</p>\n </div>\n );\n}\n","import { createContext, useContext } from 'react';\n\nexport const DataListRowWrapperContext = createContext(false);\n\nexport function useDataListRowWrapperContext() {\n return useContext(DataListRowWrapperContext);\n}\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { useDataListRowWrapperContext } from './data-list-row-wrapper-context';\nimport { dataListRowInteractiveStyles, dataListRowStyles } from './shared';\nimport type { DataListRowSharedProps } from './shared';\nimport { useFluidMenuItemRef } from '@/ds/primitives/fluid-menu';\nimport { cn } from '@/lib/utils';\n\nexport type DataListRowButtonProps = ComponentPropsWithoutRef<'button'> & DataListRowSharedProps;\n\n/**\n * Forwarded ref + spread props so virtualizers (`useVirtualizer.measureElement`)\n * can attach a ref and `data-index` to each rendered row.\n */\nexport const DataListRowButton = forwardRef<HTMLButtonElement, DataListRowButtonProps>(\n ({ children, className, type = 'button', colStart, colEnd, featured, variant, style, ...rest }, ref) => {\n const isWrapped = useDataListRowWrapperContext();\n // Standalone rows register with the root's fluid hover; wrapped ones let the wrapper do it.\n const fluidRef = useFluidMenuItemRef(ref);\n const hasColumnOverride = colStart !== undefined || colEnd !== undefined;\n const resolvedStyle = hasColumnOverride ? { ...style, gridColumn: `${colStart ?? 1} / ${colEnd ?? -1}` } : style;\n return (\n <button\n ref={isWrapped ? ref : fluidRef}\n type={type}\n className={cn(...(isWrapped ? dataListRowInteractiveStyles : dataListRowStyles), 'text-left', className)}\n style={resolvedStyle}\n data-featured={featured || undefined}\n data-variant={variant ?? 'default'}\n {...rest}\n >\n {children}\n </button>\n );\n },\n);\n\nDataListRowButton.displayName = 'DataListRowButton';\n","import { forwardRef } from 'react';\nimport type { CSSProperties, ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { useDataListRowWrapperContext } from './data-list-row-wrapper-context';\nimport { dataListRowInteractiveStyles, dataListRowStyles } from './shared';\nimport type { DataListRowSharedProps } from './shared';\nimport { useFluidMenuItemRef } from '@/ds/primitives/fluid-menu';\nimport type { LinkComponent } from '@/ds/types/link-component';\nimport { cn } from '@/lib/utils';\n\nexport type DataListRowLinkProps = DataListRowSharedProps & {\n children: ReactNode;\n to: string;\n className?: string;\n style?: CSSProperties;\n LinkComponent?: LinkComponent;\n} & Omit<ComponentPropsWithoutRef<'a'>, 'href' | 'children' | 'className' | 'style'>;\n\nexport const DataListRowLink = forwardRef<HTMLAnchorElement, DataListRowLinkProps>(\n (\n { children, to, className, style, LinkComponent: Link = 'a', colStart, colEnd, featured, variant, ...rest },\n ref,\n ) => {\n const isWrapped = useDataListRowWrapperContext();\n // Standalone rows register with the root's fluid hover; wrapped ones let the wrapper do it.\n const fluidRef = useFluidMenuItemRef(ref);\n const hasColumnOverride = colStart !== undefined || colEnd !== undefined;\n const resolvedStyle = hasColumnOverride ? { ...style, gridColumn: `${colStart ?? 1} / ${colEnd ?? -1}` } : style;\n return (\n <Link\n ref={isWrapped ? ref : fluidRef}\n href={to}\n className={cn(...(isWrapped ? dataListRowInteractiveStyles : dataListRowStyles), className)}\n style={resolvedStyle}\n data-featured={featured || undefined}\n data-variant={variant ?? 'default'}\n {...rest}\n >\n {children}\n </Link>\n );\n },\n);\n\nDataListRowLink.displayName = 'DataListRowLink';\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef, KeyboardEvent, MouseEvent } from 'react';\nimport { DataListRowWrapperContext } from './data-list-row-wrapper-context';\nimport { dataListRowOuterStyles, dataListRowStateStyles } from './shared';\nimport { useFluidMenuItemRef } from '@/ds/primitives/fluid-menu';\nimport { cn } from '@/lib/utils';\n\nexport type DataListRowWrapperProps = ComponentPropsWithoutRef<'div'> & {\n /**\n * Makes the whole wrapper the row's activation target: it becomes focusable\n * (`tabIndex=0` unless overridden, e.g. by `getRowProps`), and a click or\n * Enter on the wrapper itself calls this. Descendants that must not activate\n * the row (the inner link, popover triggers, action buttons) should call\n * `event.stopPropagation()` on their click.\n */\n onSelectRow?: () => void;\n};\n\n/**\n * Grid wrapper used to host a leading or trailing cell (e.g. a selection\n * checkbox or row actions) alongside a `DataList.RowButton` / `RowLink`.\n *\n * Without `onSelectRow` it is non-interactive: hover/focus/click only apply to\n * the nested row primitive. With `onSelectRow` the wrapper itself becomes the\n * click / Enter target so the entire row (including trailing cells) activates.\n * For standalone interactive rows, use `DataList.RowButton` directly.\n *\n * Carries the `.data-list-row` marker so root-level row styling behaves the\n * same in wrapped and standalone rows.\n */\nexport const DataListRowWrapper = forwardRef<HTMLDivElement, DataListRowWrapperProps>(\n ({ children, className, onSelectRow, onClick, onKeyDown, tabIndex, ...rest }, ref) => {\n const isSelectable = onSelectRow !== undefined;\n // The wrapper is the `.data-list-row` element, so it (not the nested\n // RowButton/RowLink) registers with the root's fluid hover.\n const rowRef = useFluidMenuItemRef(ref);\n\n const handleClick = (event: MouseEvent<HTMLDivElement>) => {\n onClick?.(event);\n if (!isSelectable || event.defaultPrevented) return;\n onSelectRow();\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n if (!isSelectable || event.defaultPrevented) return;\n // Only when the wrapper itself is focused. A focused descendant (the\n // link) receiving Enter fires its own native click; handling it here too\n // would activate the row twice.\n if (event.key === 'Enter' && event.target === event.currentTarget) {\n event.preventDefault();\n onSelectRow();\n }\n };\n\n return (\n <DataListRowWrapperContext.Provider value>\n <div\n ref={rowRef}\n tabIndex={tabIndex ?? (isSelectable ? 0 : undefined)}\n className={cn(\n 'grid grid-cols-subgrid gap-0',\n ...dataListRowOuterStyles,\n ...dataListRowStateStyles,\n isSelectable &&\n 'cursor-pointer outline-none focus-visible:ring-1 focus-visible:ring-accent1 focus-visible:ring-inset',\n className,\n )}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...rest}\n >\n {children}\n </div>\n </DataListRowWrapperContext.Provider>\n );\n },\n);\n\nDataListRowWrapper.displayName = 'DataListRowWrapper';\n","import { ArrowDown, ArrowUp, ArrowUpDown } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport { DataListTopCell } from './data-list-top-cell';\nimport type { DataListTopCellProps } from './data-list-top-cell';\nimport { Button } from '@/ds/components/Button';\nimport { cn } from '@/lib/utils';\n\nexport type DataListSort = 'asc' | 'desc';\n\nconst sortIcons = {\n asc: ArrowUp,\n desc: ArrowDown,\n none: ArrowUpDown,\n};\n\nconst sortLabels = {\n asc: 'ascending',\n desc: 'descending',\n};\n\nconst sortAnimations = {\n asc: 'animate-sort-arrow-up',\n desc: 'animate-sort-arrow-down',\n};\n\nconst sortTooltips = {\n asc: 'Asc',\n desc: 'Desc',\n none: 'Sort',\n};\n\nexport type DataListSortableTopCellProps<K extends string = string> = Omit<\n DataListTopCellProps,\n 'aria-sort' | 'as' | 'children' | 'onClick'\n> & {\n children: ReactNode;\n sortKey: K;\n sort?: DataListSort;\n onSortChange: (sort: DataListSort, key: K) => void;\n align?: 'start' | 'end';\n};\n\nexport function DataListSortableTopCell<K extends string = string>({\n children,\n sortKey,\n sort,\n onSortChange,\n align = 'start',\n className,\n ...props\n}: DataListSortableTopCellProps<K>) {\n const next: DataListSort = sort === 'asc' ? 'desc' : 'asc';\n const SortIcon = sortIcons[sort ?? 'none'];\n const label = typeof children === 'string' ? children : sortKey;\n const current = sort ? `sorted ${sortLabels[sort]}` : 'not sorted';\n\n return (\n <DataListTopCell\n data-sort={sort ?? 'none'}\n className={cn('gap-1 overflow-visible', align === 'end' && 'flex-row-reverse', className)}\n {...props}\n >\n <span className=\"min-w-0 truncate\">{children}</span>\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label={`${label}, ${current}, sort ${sortLabels[next]}`}\n tooltip={sortTooltips[sort ?? 'none']}\n onClick={() => onSortChange(next, sortKey)}\n className={cn('shrink-0', sort ? 'text-foreground' : 'text-muted-foreground')}\n >\n <SortIcon key={sort ?? 'none'} className={sort && sortAnimations[sort]} />\n </Button>\n </DataListTopCell>\n );\n}\n","export type DataListSpacerProps = {\n /** Pixel height of the spacer. Pass 0 to render nothing. */\n height: number;\n};\n\n/**\n * Pads top/bottom of the visible window when virtualizing — preserves the\n * grid's total scroll height for the rows that aren't currently rendered.\n * Spans the full grid width so it doesn't disturb column layout.\n */\nexport function DataListSpacer({ height }: DataListSpacerProps) {\n if (height <= 0) return null;\n return <div className=\"col-span-full\" style={{ height }} />;\n}\n"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  const jsxRuntime = require('react/jsx-runtime');
4
4
  const utils_cn = require('./cn-DG0X1KEP.cjs');
5
5
  const React = require('react');
6
- const dataListTop = require('./data-list-top-B-gb-FY6.cjs');
6
+ const dataListTop = require('./data-list-top-WGUY167p.cjs');
7
7
  const primitives_fluidMenu = require('./primitives/fluid-menu.cjs.js');
8
8
  const lucideReact = require('lucide-react');
9
9
  const Button = require('./Button-BAMnPqos.cjs');
@@ -206,4 +206,4 @@ exports.DataListRowWrapper = DataListRowWrapper;
206
206
  exports.DataListSortableTopCell = DataListSortableTopCell;
207
207
  exports.DataListSpacer = DataListSpacer;
208
208
  exports.useDataListRowWrapperContext = useDataListRowWrapperContext;
209
- //# sourceMappingURL=data-list-spacer-GIVW2hB1.cjs.map
209
+ //# sourceMappingURL=data-list-spacer-DEcgVGFM.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-list-spacer-GIVW2hB1.cjs","sources":["../src/ds/components/DataList/data-list-next-page-loading.tsx","../src/ds/components/DataList/data-list-no-match.tsx","../src/ds/components/DataList/data-list-row-wrapper-context.ts","../src/ds/components/DataList/data-list-row-button.tsx","../src/ds/components/DataList/data-list-row-link.tsx","../src/ds/components/DataList/data-list-row-wrapper.tsx","../src/ds/components/DataList/data-list-sortable-top-cell.tsx","../src/ds/components/DataList/data-list-spacer.tsx"],"sourcesContent":["import { cn } from '@/lib/utils';\n\nexport type DataListNextPageLoadingProps = {\n isLoading?: boolean;\n hasMore?: boolean;\n setEndOfListElement?: (element: HTMLDivElement | null) => void;\n loadingText?: string;\n};\n\nexport function DataListNextPageLoading({\n isLoading,\n setEndOfListElement,\n hasMore,\n loadingText = 'Loading more data...',\n}: DataListNextPageLoadingProps) {\n if (!setEndOfListElement) {\n return null;\n }\n\n return (\n <div\n ref={setEndOfListElement}\n // Zero-height when idle so it adds no trailing space below the last row;\n // IntersectionObserver still fires for a zero-area target at the viewport edge.\n className={cn('col-span-full -mt-px flex justify-center text-body text-muted-foreground opacity-50', {\n 'py-4': isLoading,\n })}\n >\n {isLoading && loadingText}\n </div>\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListNoMatchProps = ComponentPropsWithoutRef<'div'> & {\n message?: string;\n};\n\nexport function DataListNoMatch({\n message = 'Nothing matches your search',\n className,\n ...props\n}: DataListNoMatchProps) {\n return (\n <div\n className={cn(\n 'col-span-full flex flex-col items-center justify-center gap-2 rounded-lg bg-background py-8 text-muted-foreground',\n className,\n )}\n {...props}\n >\n <p className=\"text-body\">{message}</p>\n </div>\n );\n}\n","import { createContext, useContext } from 'react';\n\nexport const DataListRowWrapperContext = createContext(false);\n\nexport function useDataListRowWrapperContext() {\n return useContext(DataListRowWrapperContext);\n}\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { useDataListRowWrapperContext } from './data-list-row-wrapper-context';\nimport { dataListRowInteractiveStyles, dataListRowStyles } from './shared';\nimport type { DataListRowSharedProps } from './shared';\nimport { useFluidMenuItemRef } from '@/ds/primitives/fluid-menu';\nimport { cn } from '@/lib/utils';\n\nexport type DataListRowButtonProps = ComponentPropsWithoutRef<'button'> & DataListRowSharedProps;\n\n/**\n * Forwarded ref + spread props so virtualizers (`useVirtualizer.measureElement`)\n * can attach a ref and `data-index` to each rendered row.\n */\nexport const DataListRowButton = forwardRef<HTMLButtonElement, DataListRowButtonProps>(\n ({ children, className, type = 'button', colStart, colEnd, featured, variant, style, ...rest }, ref) => {\n const isWrapped = useDataListRowWrapperContext();\n // Standalone rows register with the root's fluid hover; wrapped ones let the wrapper do it.\n const fluidRef = useFluidMenuItemRef(ref);\n const hasColumnOverride = colStart !== undefined || colEnd !== undefined;\n const resolvedStyle = hasColumnOverride ? { ...style, gridColumn: `${colStart ?? 1} / ${colEnd ?? -1}` } : style;\n return (\n <button\n ref={isWrapped ? ref : fluidRef}\n type={type}\n className={cn(...(isWrapped ? dataListRowInteractiveStyles : dataListRowStyles), 'text-left', className)}\n style={resolvedStyle}\n data-featured={featured || undefined}\n data-variant={variant ?? 'default'}\n {...rest}\n >\n {children}\n </button>\n );\n },\n);\n\nDataListRowButton.displayName = 'DataListRowButton';\n","import { forwardRef } from 'react';\nimport type { CSSProperties, ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { useDataListRowWrapperContext } from './data-list-row-wrapper-context';\nimport { dataListRowInteractiveStyles, dataListRowStyles } from './shared';\nimport type { DataListRowSharedProps } from './shared';\nimport { useFluidMenuItemRef } from '@/ds/primitives/fluid-menu';\nimport type { LinkComponent } from '@/ds/types/link-component';\nimport { cn } from '@/lib/utils';\n\nexport type DataListRowLinkProps = DataListRowSharedProps & {\n children: ReactNode;\n to: string;\n className?: string;\n style?: CSSProperties;\n LinkComponent?: LinkComponent;\n} & Omit<ComponentPropsWithoutRef<'a'>, 'href' | 'children' | 'className' | 'style'>;\n\nexport const DataListRowLink = forwardRef<HTMLAnchorElement, DataListRowLinkProps>(\n (\n { children, to, className, style, LinkComponent: Link = 'a', colStart, colEnd, featured, variant, ...rest },\n ref,\n ) => {\n const isWrapped = useDataListRowWrapperContext();\n // Standalone rows register with the root's fluid hover; wrapped ones let the wrapper do it.\n const fluidRef = useFluidMenuItemRef(ref);\n const hasColumnOverride = colStart !== undefined || colEnd !== undefined;\n const resolvedStyle = hasColumnOverride ? { ...style, gridColumn: `${colStart ?? 1} / ${colEnd ?? -1}` } : style;\n return (\n <Link\n ref={isWrapped ? ref : fluidRef}\n href={to}\n className={cn(...(isWrapped ? dataListRowInteractiveStyles : dataListRowStyles), className)}\n style={resolvedStyle}\n data-featured={featured || undefined}\n data-variant={variant ?? 'default'}\n {...rest}\n >\n {children}\n </Link>\n );\n },\n);\n\nDataListRowLink.displayName = 'DataListRowLink';\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef, KeyboardEvent, MouseEvent } from 'react';\nimport { DataListRowWrapperContext } from './data-list-row-wrapper-context';\nimport { dataListRowOuterStyles, dataListRowStateStyles } from './shared';\nimport { useFluidMenuItemRef } from '@/ds/primitives/fluid-menu';\nimport { cn } from '@/lib/utils';\n\nexport type DataListRowWrapperProps = ComponentPropsWithoutRef<'div'> & {\n /**\n * Makes the whole wrapper the row's activation target: it becomes focusable\n * (`tabIndex=0` unless overridden, e.g. by `getRowProps`), and a click or\n * Enter on the wrapper itself calls this. Descendants that must not activate\n * the row (the inner link, popover triggers, action buttons) should call\n * `event.stopPropagation()` on their click.\n */\n onSelectRow?: () => void;\n};\n\n/**\n * Grid wrapper used to host a leading or trailing cell (e.g. a selection\n * checkbox or row actions) alongside a `DataList.RowButton` / `RowLink`.\n *\n * Without `onSelectRow` it is non-interactive: hover/focus/click only apply to\n * the nested row primitive. With `onSelectRow` the wrapper itself becomes the\n * click / Enter target so the entire row (including trailing cells) activates.\n * For standalone interactive rows, use `DataList.RowButton` directly.\n *\n * Carries the `.data-list-row` marker so root-level row styling behaves the\n * same in wrapped and standalone rows.\n */\nexport const DataListRowWrapper = forwardRef<HTMLDivElement, DataListRowWrapperProps>(\n ({ children, className, onSelectRow, onClick, onKeyDown, tabIndex, ...rest }, ref) => {\n const isSelectable = onSelectRow !== undefined;\n // The wrapper is the `.data-list-row` element, so it (not the nested\n // RowButton/RowLink) registers with the root's fluid hover.\n const rowRef = useFluidMenuItemRef(ref);\n\n const handleClick = (event: MouseEvent<HTMLDivElement>) => {\n onClick?.(event);\n if (!isSelectable || event.defaultPrevented) return;\n onSelectRow();\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n if (!isSelectable || event.defaultPrevented) return;\n // Only when the wrapper itself is focused. A focused descendant (the\n // link) receiving Enter fires its own native click; handling it here too\n // would activate the row twice.\n if (event.key === 'Enter' && event.target === event.currentTarget) {\n event.preventDefault();\n onSelectRow();\n }\n };\n\n return (\n <DataListRowWrapperContext.Provider value>\n <div\n ref={rowRef}\n tabIndex={tabIndex ?? (isSelectable ? 0 : undefined)}\n className={cn(\n 'grid grid-cols-subgrid gap-0',\n ...dataListRowOuterStyles,\n ...dataListRowStateStyles,\n isSelectable &&\n 'cursor-pointer outline-none focus-visible:ring-1 focus-visible:ring-accent1 focus-visible:ring-inset',\n className,\n )}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...rest}\n >\n {children}\n </div>\n </DataListRowWrapperContext.Provider>\n );\n },\n);\n\nDataListRowWrapper.displayName = 'DataListRowWrapper';\n","import { ArrowDown, ArrowUp, ArrowUpDown } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport { DataListTopCell } from './data-list-top-cell';\nimport type { DataListTopCellProps } from './data-list-top-cell';\nimport { Button } from '@/ds/components/Button';\nimport { cn } from '@/lib/utils';\n\nexport type DataListSort = 'asc' | 'desc';\n\nconst sortIcons = {\n asc: ArrowUp,\n desc: ArrowDown,\n none: ArrowUpDown,\n};\n\nconst sortLabels = {\n asc: 'ascending',\n desc: 'descending',\n};\n\nconst sortAnimations = {\n asc: 'animate-sort-arrow-up',\n desc: 'animate-sort-arrow-down',\n};\n\nconst sortTooltips = {\n asc: 'Asc',\n desc: 'Desc',\n none: 'Sort',\n};\n\nexport type DataListSortableTopCellProps<K extends string = string> = Omit<\n DataListTopCellProps,\n 'aria-sort' | 'as' | 'children' | 'onClick'\n> & {\n children: ReactNode;\n sortKey: K;\n sort?: DataListSort;\n onSortChange: (sort: DataListSort, key: K) => void;\n align?: 'start' | 'end';\n};\n\nexport function DataListSortableTopCell<K extends string = string>({\n children,\n sortKey,\n sort,\n onSortChange,\n align = 'start',\n className,\n ...props\n}: DataListSortableTopCellProps<K>) {\n const next: DataListSort = sort === 'asc' ? 'desc' : 'asc';\n const SortIcon = sortIcons[sort ?? 'none'];\n const label = typeof children === 'string' ? children : sortKey;\n const current = sort ? `sorted ${sortLabels[sort]}` : 'not sorted';\n\n return (\n <DataListTopCell\n data-sort={sort ?? 'none'}\n className={cn('gap-1 overflow-visible', align === 'end' && 'flex-row-reverse', className)}\n {...props}\n >\n <span className=\"min-w-0 truncate\">{children}</span>\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label={`${label}, ${current}, sort ${sortLabels[next]}`}\n tooltip={sortTooltips[sort ?? 'none']}\n onClick={() => onSortChange(next, sortKey)}\n className={cn('shrink-0', sort ? 'text-foreground' : 'text-muted-foreground')}\n >\n <SortIcon key={sort ?? 'none'} className={sort && sortAnimations[sort]} />\n </Button>\n </DataListTopCell>\n );\n}\n","export type DataListSpacerProps = {\n /** Pixel height of the spacer. Pass 0 to render nothing. */\n height: number;\n};\n\n/**\n * Pads top/bottom of the visible window when virtualizing — preserves the\n * grid's total scroll height for the rows that aren't currently rendered.\n * Spans the full grid width so it doesn't disturb column layout.\n */\nexport function DataListSpacer({ height }: DataListSpacerProps) {\n if (height <= 0) return null;\n return <div className=\"col-span-full\" style={{ height }} />;\n}\n"],"names":["jsx","cn","createContext","useContext","forwardRef","useFluidMenuItemRef","dataListRowInteractiveStyles","dataListRowStyles","dataListRowOuterStyles","dataListRowStateStyles","ArrowUp","ArrowDown","ArrowUpDown","jsxs","DataListTopCell","Button"],"mappings":";;;;;;;;;;AASO,SAAS,uBAAA,CAAwB;AAAA,EACtC,SAAA;AAAA,EACA,mBAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA,GAAc;AAChB,CAAA,EAAiC;AAC/B,EAAA,IAAI,CAAC,mBAAA,EAAqB;AACxB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACEA,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,mBAAA;AAAA,MAGL,SAAA,EAAWC,YAAG,qFAAA,EAAuF;AAAA,QACnG,MAAA,EAAQ;AAAA,OACT,CAAA;AAAA,MAEA,QAAA,EAAA,SAAA,IAAa;AAAA;AAAA,GAChB;AAEJ;;ACxBO,SAAS,eAAA,CAAgB;AAAA,EAC9B,OAAA,GAAU,6BAAA;AAAA,EACV,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAyB;AACvB,EAAA,uBACED,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWC,WAAA;AAAA,QACT,mHAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAAD,cAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,WAAA,EAAa,QAAA,EAAA,OAAA,EAAQ;AAAA;AAAA,GACpC;AAEJ;;ACrBO,MAAM,yBAAA,GAA4BE,oBAAc,KAAK,CAAA;AAErD,SAAS,4BAAA,GAA+B;AAC7C,EAAA,OAAOC,iBAAW,yBAAyB,CAAA;AAC7C;;ACQO,MAAM,iBAAA,GAAoBC,gBAAA;AAAA,EAC/B,CAAC,EAAE,QAAA,EAAU,SAAA,EAAW,OAAO,QAAA,EAAU,QAAA,EAAU,MAAA,EAAQ,QAAA,EAAU,OAAA,EAAS,KAAA,EAAO,GAAG,IAAA,IAAQ,GAAA,KAAQ;AACtG,IAAA,MAAM,YAAY,4BAAA,EAA6B;AAE/C,IAAA,MAAM,QAAA,GAAWC,yCAAoB,GAAG,CAAA;AACxC,IAAA,MAAM,iBAAA,GAAoB,QAAA,KAAa,MAAA,IAAa,MAAA,KAAW,MAAA;AAC/D,IAAA,MAAM,aAAA,GAAgB,iBAAA,GAAoB,EAAE,GAAG,KAAA,EAAO,UAAA,EAAY,CAAA,EAAG,QAAA,IAAY,CAAC,CAAA,GAAA,EAAM,MAAA,IAAU,EAAE,IAAG,GAAI,KAAA;AAC3G,IAAA,uBACEL,cAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,YAAY,GAAA,GAAM,QAAA;AAAA,QACvB,IAAA;AAAA,QACA,WAAWC,WAAA,CAAG,GAAI,YAAYK,wCAAA,GAA+BC,6BAAA,EAAoB,aAAa,SAAS,CAAA;AAAA,QACvG,KAAA,EAAO,aAAA;AAAA,QACP,iBAAe,QAAA,IAAY,MAAA;AAAA,QAC3B,gBAAc,OAAA,IAAW,SAAA;AAAA,QACxB,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,iBAAA,CAAkB,WAAA,GAAc,mBAAA;;ACpBzB,MAAM,eAAA,GAAkBH,gBAAA;AAAA,EAC7B,CACE,EAAE,QAAA,EAAU,EAAA,EAAI,SAAA,EAAW,OAAO,aAAA,EAAe,IAAA,GAAO,GAAA,EAAK,QAAA,EAAU,QAAQ,QAAA,EAAU,OAAA,EAAS,GAAG,IAAA,IACrG,GAAA,KACG;AACH,IAAA,MAAM,YAAY,4BAAA,EAA6B;AAE/C,IAAA,MAAM,QAAA,GAAWC,yCAAoB,GAAG,CAAA;AACxC,IAAA,MAAM,iBAAA,GAAoB,QAAA,KAAa,MAAA,IAAa,MAAA,KAAW,MAAA;AAC/D,IAAA,MAAM,aAAA,GAAgB,iBAAA,GAAoB,EAAE,GAAG,KAAA,EAAO,UAAA,EAAY,CAAA,EAAG,QAAA,IAAY,CAAC,CAAA,GAAA,EAAM,MAAA,IAAU,EAAE,IAAG,GAAI,KAAA;AAC3G,IAAA,uBACEL,cAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,YAAY,GAAA,GAAM,QAAA;AAAA,QACvB,IAAA,EAAM,EAAA;AAAA,QACN,WAAWC,WAAA,CAAG,GAAI,SAAA,GAAYK,wCAAA,GAA+BC,+BAAoB,SAAS,CAAA;AAAA,QAC1F,KAAA,EAAO,aAAA;AAAA,QACP,iBAAe,QAAA,IAAY,MAAA;AAAA,QAC3B,gBAAc,OAAA,IAAW,SAAA;AAAA,QACxB,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,eAAA,CAAgB,WAAA,GAAc,iBAAA;;ACbvB,MAAM,kBAAA,GAAqBH,gBAAA;AAAA,EAChC,CAAC,EAAE,QAAA,EAAU,SAAA,EAAW,WAAA,EAAa,OAAA,EAAS,SAAA,EAAW,QAAA,EAAU,GAAG,IAAA,EAAK,EAAG,GAAA,KAAQ;AACpF,IAAA,MAAM,eAAe,WAAA,KAAgB,MAAA;AAGrC,IAAA,MAAM,MAAA,GAASC,yCAAoB,GAAG,CAAA;AAEtC,IAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAAsC;AACzD,MAAA,OAAA,GAAU,KAAK,CAAA;AACf,MAAA,IAAI,CAAC,YAAA,IAAgB,KAAA,CAAM,gBAAA,EAAkB;AAC7C,MAAA,WAAA,EAAY;AAAA,IACd,CAAA;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAyC;AAC9D,MAAA,SAAA,GAAY,KAAK,CAAA;AACjB,MAAA,IAAI,CAAC,YAAA,IAAgB,KAAA,CAAM,gBAAA,EAAkB;AAI7C,MAAA,IAAI,MAAM,GAAA,KAAQ,OAAA,IAAW,KAAA,CAAM,MAAA,KAAW,MAAM,aAAA,EAAe;AACjE,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,WAAA,EAAY;AAAA,MACd;AAAA,IACF,CAAA;AAEA,IAAA,uBACEL,cAAA,CAAC,yBAAA,CAA0B,QAAA,EAA1B,EAAmC,OAAK,IAAA,EACvC,QAAA,kBAAAA,cAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,MAAA;AAAA,QACL,QAAA,EAAU,QAAA,KAAa,YAAA,GAAe,CAAA,GAAI,MAAA,CAAA;AAAA,QAC1C,SAAA,EAAWC,WAAA;AAAA,UACT,8BAAA;AAAA,UACA,GAAGO,kCAAA;AAAA,UACH,GAAGC,kCAAA;AAAA,UACH,YAAA,IACE,sGAAA;AAAA,UACF;AAAA,SACF;AAAA,QACA,OAAA,EAAS,WAAA;AAAA,QACT,SAAA,EAAW,aAAA;AAAA,QACV,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH,EACF,CAAA;AAAA,EAEJ;AACF;AAEA,kBAAA,CAAmB,WAAA,GAAc,oBAAA;;ACtEjC,MAAM,SAAA,GAAY;AAAA,EAChB,GAAA,EAAKC,mBAAA;AAAA,EACL,IAAA,EAAMC,qBAAA;AAAA,EACN,IAAA,EAAMC;AACR,CAAA;AAEA,MAAM,UAAA,GAAa;AAAA,EACjB,GAAA,EAAK,WAAA;AAAA,EACL,IAAA,EAAM;AACR,CAAA;AAEA,MAAM,cAAA,GAAiB;AAAA,EACrB,GAAA,EAAK,uBAAA;AAAA,EACL,IAAA,EAAM;AACR,CAAA;AAEA,MAAM,YAAA,GAAe;AAAA,EACnB,GAAA,EAAK,KAAA;AAAA,EACL,IAAA,EAAM,MAAA;AAAA,EACN,IAAA,EAAM;AACR,CAAA;AAaO,SAAS,uBAAA,CAAmD;AAAA,EACjE,QAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,YAAA;AAAA,EACA,KAAA,GAAQ,OAAA;AAAA,EACR,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAoC;AAClC,EAAA,MAAM,IAAA,GAAqB,IAAA,KAAS,KAAA,GAAQ,MAAA,GAAS,KAAA;AACrD,EAAA,MAAM,QAAA,GAAW,SAAA,CAAU,IAAA,IAAQ,MAAM,CAAA;AACzC,EAAA,MAAM,KAAA,GAAQ,OAAO,QAAA,KAAa,QAAA,GAAW,QAAA,GAAW,OAAA;AACxD,EAAA,MAAM,UAAU,IAAA,GAAO,CAAA,OAAA,EAAU,UAAA,CAAW,IAAI,CAAC,CAAA,CAAA,GAAK,YAAA;AAEtD,EAAA,uBACEC,eAAA;AAAA,IAACC,2BAAA;AAAA,IAAA;AAAA,MACC,aAAW,IAAA,IAAQ,MAAA;AAAA,MACnB,WAAWb,WAAA,CAAG,wBAAA,EAA0B,KAAA,KAAU,KAAA,IAAS,oBAAoB,SAAS,CAAA;AAAA,MACvF,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAD,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,kBAAA,EAAoB,QAAA,EAAS,CAAA;AAAA,wBAC7CA,cAAA;AAAA,UAACe,aAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAK,SAAA;AAAA,YACL,YAAA,EAAY,GAAG,KAAK,CAAA,EAAA,EAAK,OAAO,CAAA,OAAA,EAAU,UAAA,CAAW,IAAI,CAAC,CAAA,CAAA;AAAA,YAC1D,OAAA,EAAS,YAAA,CAAa,IAAA,IAAQ,MAAM,CAAA;AAAA,YACpC,OAAA,EAAS,MAAM,YAAA,CAAa,IAAA,EAAM,OAAO,CAAA;AAAA,YACzC,SAAA,EAAWd,WAAA,CAAG,UAAA,EAAY,IAAA,GAAO,oBAAoB,uBAAuB,CAAA;AAAA,YAE5E,QAAA,kBAAAD,cAAA,CAAC,YAA8B,SAAA,EAAW,IAAA,IAAQ,eAAe,IAAI,CAAA,EAAA,EAAtD,QAAQ,MAAiD;AAAA;AAAA;AAC1E;AAAA;AAAA,GACF;AAEJ;;ACjEO,SAAS,cAAA,CAAe,EAAE,MAAA,EAAO,EAAwB;AAC9D,EAAA,IAAI,MAAA,IAAU,GAAG,OAAO,IAAA;AACxB,EAAA,sCAAQ,KAAA,EAAA,EAAI,SAAA,EAAU,iBAAgB,KAAA,EAAO,EAAE,QAAO,EAAG,CAAA;AAC3D;;;;;;;;;;;"}
1
+ {"version":3,"file":"data-list-spacer-DEcgVGFM.cjs","sources":["../src/ds/components/DataList/data-list-next-page-loading.tsx","../src/ds/components/DataList/data-list-no-match.tsx","../src/ds/components/DataList/data-list-row-wrapper-context.ts","../src/ds/components/DataList/data-list-row-button.tsx","../src/ds/components/DataList/data-list-row-link.tsx","../src/ds/components/DataList/data-list-row-wrapper.tsx","../src/ds/components/DataList/data-list-sortable-top-cell.tsx","../src/ds/components/DataList/data-list-spacer.tsx"],"sourcesContent":["import { cn } from '@/lib/utils';\n\nexport type DataListNextPageLoadingProps = {\n isLoading?: boolean;\n hasMore?: boolean;\n setEndOfListElement?: (element: HTMLDivElement | null) => void;\n loadingText?: string;\n};\n\nexport function DataListNextPageLoading({\n isLoading,\n setEndOfListElement,\n hasMore,\n loadingText = 'Loading more data...',\n}: DataListNextPageLoadingProps) {\n if (!setEndOfListElement) {\n return null;\n }\n\n return (\n <div\n ref={setEndOfListElement}\n // Zero-height when idle so it adds no trailing space below the last row;\n // IntersectionObserver still fires for a zero-area target at the viewport edge.\n className={cn('col-span-full -mt-px flex justify-center text-body text-muted-foreground opacity-50', {\n 'py-4': isLoading,\n })}\n >\n {isLoading && loadingText}\n </div>\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListNoMatchProps = ComponentPropsWithoutRef<'div'> & {\n message?: string;\n};\n\nexport function DataListNoMatch({\n message = 'Nothing matches your search',\n className,\n ...props\n}: DataListNoMatchProps) {\n return (\n <div\n className={cn(\n 'col-span-full flex flex-col items-center justify-center gap-2 rounded-lg bg-background py-8 text-muted-foreground',\n className,\n )}\n {...props}\n >\n <p className=\"text-body\">{message}</p>\n </div>\n );\n}\n","import { createContext, useContext } from 'react';\n\nexport const DataListRowWrapperContext = createContext(false);\n\nexport function useDataListRowWrapperContext() {\n return useContext(DataListRowWrapperContext);\n}\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { useDataListRowWrapperContext } from './data-list-row-wrapper-context';\nimport { dataListRowInteractiveStyles, dataListRowStyles } from './shared';\nimport type { DataListRowSharedProps } from './shared';\nimport { useFluidMenuItemRef } from '@/ds/primitives/fluid-menu';\nimport { cn } from '@/lib/utils';\n\nexport type DataListRowButtonProps = ComponentPropsWithoutRef<'button'> & DataListRowSharedProps;\n\n/**\n * Forwarded ref + spread props so virtualizers (`useVirtualizer.measureElement`)\n * can attach a ref and `data-index` to each rendered row.\n */\nexport const DataListRowButton = forwardRef<HTMLButtonElement, DataListRowButtonProps>(\n ({ children, className, type = 'button', colStart, colEnd, featured, variant, style, ...rest }, ref) => {\n const isWrapped = useDataListRowWrapperContext();\n // Standalone rows register with the root's fluid hover; wrapped ones let the wrapper do it.\n const fluidRef = useFluidMenuItemRef(ref);\n const hasColumnOverride = colStart !== undefined || colEnd !== undefined;\n const resolvedStyle = hasColumnOverride ? { ...style, gridColumn: `${colStart ?? 1} / ${colEnd ?? -1}` } : style;\n return (\n <button\n ref={isWrapped ? ref : fluidRef}\n type={type}\n className={cn(...(isWrapped ? dataListRowInteractiveStyles : dataListRowStyles), 'text-left', className)}\n style={resolvedStyle}\n data-featured={featured || undefined}\n data-variant={variant ?? 'default'}\n {...rest}\n >\n {children}\n </button>\n );\n },\n);\n\nDataListRowButton.displayName = 'DataListRowButton';\n","import { forwardRef } from 'react';\nimport type { CSSProperties, ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { useDataListRowWrapperContext } from './data-list-row-wrapper-context';\nimport { dataListRowInteractiveStyles, dataListRowStyles } from './shared';\nimport type { DataListRowSharedProps } from './shared';\nimport { useFluidMenuItemRef } from '@/ds/primitives/fluid-menu';\nimport type { LinkComponent } from '@/ds/types/link-component';\nimport { cn } from '@/lib/utils';\n\nexport type DataListRowLinkProps = DataListRowSharedProps & {\n children: ReactNode;\n to: string;\n className?: string;\n style?: CSSProperties;\n LinkComponent?: LinkComponent;\n} & Omit<ComponentPropsWithoutRef<'a'>, 'href' | 'children' | 'className' | 'style'>;\n\nexport const DataListRowLink = forwardRef<HTMLAnchorElement, DataListRowLinkProps>(\n (\n { children, to, className, style, LinkComponent: Link = 'a', colStart, colEnd, featured, variant, ...rest },\n ref,\n ) => {\n const isWrapped = useDataListRowWrapperContext();\n // Standalone rows register with the root's fluid hover; wrapped ones let the wrapper do it.\n const fluidRef = useFluidMenuItemRef(ref);\n const hasColumnOverride = colStart !== undefined || colEnd !== undefined;\n const resolvedStyle = hasColumnOverride ? { ...style, gridColumn: `${colStart ?? 1} / ${colEnd ?? -1}` } : style;\n return (\n <Link\n ref={isWrapped ? ref : fluidRef}\n href={to}\n className={cn(...(isWrapped ? dataListRowInteractiveStyles : dataListRowStyles), className)}\n style={resolvedStyle}\n data-featured={featured || undefined}\n data-variant={variant ?? 'default'}\n {...rest}\n >\n {children}\n </Link>\n );\n },\n);\n\nDataListRowLink.displayName = 'DataListRowLink';\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef, KeyboardEvent, MouseEvent } from 'react';\nimport { DataListRowWrapperContext } from './data-list-row-wrapper-context';\nimport { dataListRowOuterStyles, dataListRowStateStyles } from './shared';\nimport { useFluidMenuItemRef } from '@/ds/primitives/fluid-menu';\nimport { cn } from '@/lib/utils';\n\nexport type DataListRowWrapperProps = ComponentPropsWithoutRef<'div'> & {\n /**\n * Makes the whole wrapper the row's activation target: it becomes focusable\n * (`tabIndex=0` unless overridden, e.g. by `getRowProps`), and a click or\n * Enter on the wrapper itself calls this. Descendants that must not activate\n * the row (the inner link, popover triggers, action buttons) should call\n * `event.stopPropagation()` on their click.\n */\n onSelectRow?: () => void;\n};\n\n/**\n * Grid wrapper used to host a leading or trailing cell (e.g. a selection\n * checkbox or row actions) alongside a `DataList.RowButton` / `RowLink`.\n *\n * Without `onSelectRow` it is non-interactive: hover/focus/click only apply to\n * the nested row primitive. With `onSelectRow` the wrapper itself becomes the\n * click / Enter target so the entire row (including trailing cells) activates.\n * For standalone interactive rows, use `DataList.RowButton` directly.\n *\n * Carries the `.data-list-row` marker so root-level row styling behaves the\n * same in wrapped and standalone rows.\n */\nexport const DataListRowWrapper = forwardRef<HTMLDivElement, DataListRowWrapperProps>(\n ({ children, className, onSelectRow, onClick, onKeyDown, tabIndex, ...rest }, ref) => {\n const isSelectable = onSelectRow !== undefined;\n // The wrapper is the `.data-list-row` element, so it (not the nested\n // RowButton/RowLink) registers with the root's fluid hover.\n const rowRef = useFluidMenuItemRef(ref);\n\n const handleClick = (event: MouseEvent<HTMLDivElement>) => {\n onClick?.(event);\n if (!isSelectable || event.defaultPrevented) return;\n onSelectRow();\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n if (!isSelectable || event.defaultPrevented) return;\n // Only when the wrapper itself is focused. A focused descendant (the\n // link) receiving Enter fires its own native click; handling it here too\n // would activate the row twice.\n if (event.key === 'Enter' && event.target === event.currentTarget) {\n event.preventDefault();\n onSelectRow();\n }\n };\n\n return (\n <DataListRowWrapperContext.Provider value>\n <div\n ref={rowRef}\n tabIndex={tabIndex ?? (isSelectable ? 0 : undefined)}\n className={cn(\n 'grid grid-cols-subgrid gap-0',\n ...dataListRowOuterStyles,\n ...dataListRowStateStyles,\n isSelectable &&\n 'cursor-pointer outline-none focus-visible:ring-1 focus-visible:ring-accent1 focus-visible:ring-inset',\n className,\n )}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...rest}\n >\n {children}\n </div>\n </DataListRowWrapperContext.Provider>\n );\n },\n);\n\nDataListRowWrapper.displayName = 'DataListRowWrapper';\n","import { ArrowDown, ArrowUp, ArrowUpDown } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport { DataListTopCell } from './data-list-top-cell';\nimport type { DataListTopCellProps } from './data-list-top-cell';\nimport { Button } from '@/ds/components/Button';\nimport { cn } from '@/lib/utils';\n\nexport type DataListSort = 'asc' | 'desc';\n\nconst sortIcons = {\n asc: ArrowUp,\n desc: ArrowDown,\n none: ArrowUpDown,\n};\n\nconst sortLabels = {\n asc: 'ascending',\n desc: 'descending',\n};\n\nconst sortAnimations = {\n asc: 'animate-sort-arrow-up',\n desc: 'animate-sort-arrow-down',\n};\n\nconst sortTooltips = {\n asc: 'Asc',\n desc: 'Desc',\n none: 'Sort',\n};\n\nexport type DataListSortableTopCellProps<K extends string = string> = Omit<\n DataListTopCellProps,\n 'aria-sort' | 'as' | 'children' | 'onClick'\n> & {\n children: ReactNode;\n sortKey: K;\n sort?: DataListSort;\n onSortChange: (sort: DataListSort, key: K) => void;\n align?: 'start' | 'end';\n};\n\nexport function DataListSortableTopCell<K extends string = string>({\n children,\n sortKey,\n sort,\n onSortChange,\n align = 'start',\n className,\n ...props\n}: DataListSortableTopCellProps<K>) {\n const next: DataListSort = sort === 'asc' ? 'desc' : 'asc';\n const SortIcon = sortIcons[sort ?? 'none'];\n const label = typeof children === 'string' ? children : sortKey;\n const current = sort ? `sorted ${sortLabels[sort]}` : 'not sorted';\n\n return (\n <DataListTopCell\n data-sort={sort ?? 'none'}\n className={cn('gap-1 overflow-visible', align === 'end' && 'flex-row-reverse', className)}\n {...props}\n >\n <span className=\"min-w-0 truncate\">{children}</span>\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label={`${label}, ${current}, sort ${sortLabels[next]}`}\n tooltip={sortTooltips[sort ?? 'none']}\n onClick={() => onSortChange(next, sortKey)}\n className={cn('shrink-0', sort ? 'text-foreground' : 'text-muted-foreground')}\n >\n <SortIcon key={sort ?? 'none'} className={sort && sortAnimations[sort]} />\n </Button>\n </DataListTopCell>\n );\n}\n","export type DataListSpacerProps = {\n /** Pixel height of the spacer. Pass 0 to render nothing. */\n height: number;\n};\n\n/**\n * Pads top/bottom of the visible window when virtualizing — preserves the\n * grid's total scroll height for the rows that aren't currently rendered.\n * Spans the full grid width so it doesn't disturb column layout.\n */\nexport function DataListSpacer({ height }: DataListSpacerProps) {\n if (height <= 0) return null;\n return <div className=\"col-span-full\" style={{ height }} />;\n}\n"],"names":["jsx","cn","createContext","useContext","forwardRef","useFluidMenuItemRef","dataListRowInteractiveStyles","dataListRowStyles","dataListRowOuterStyles","dataListRowStateStyles","ArrowUp","ArrowDown","ArrowUpDown","jsxs","DataListTopCell","Button"],"mappings":";;;;;;;;;;AASO,SAAS,uBAAA,CAAwB;AAAA,EACtC,SAAA;AAAA,EACA,mBAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA,GAAc;AAChB,CAAA,EAAiC;AAC/B,EAAA,IAAI,CAAC,mBAAA,EAAqB;AACxB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACEA,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,mBAAA;AAAA,MAGL,SAAA,EAAWC,YAAG,qFAAA,EAAuF;AAAA,QACnG,MAAA,EAAQ;AAAA,OACT,CAAA;AAAA,MAEA,QAAA,EAAA,SAAA,IAAa;AAAA;AAAA,GAChB;AAEJ;;ACxBO,SAAS,eAAA,CAAgB;AAAA,EAC9B,OAAA,GAAU,6BAAA;AAAA,EACV,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAyB;AACvB,EAAA,uBACED,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWC,WAAA;AAAA,QACT,mHAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAAD,cAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,WAAA,EAAa,QAAA,EAAA,OAAA,EAAQ;AAAA;AAAA,GACpC;AAEJ;;ACrBO,MAAM,yBAAA,GAA4BE,oBAAc,KAAK,CAAA;AAErD,SAAS,4BAAA,GAA+B;AAC7C,EAAA,OAAOC,iBAAW,yBAAyB,CAAA;AAC7C;;ACQO,MAAM,iBAAA,GAAoBC,gBAAA;AAAA,EAC/B,CAAC,EAAE,QAAA,EAAU,SAAA,EAAW,OAAO,QAAA,EAAU,QAAA,EAAU,MAAA,EAAQ,QAAA,EAAU,OAAA,EAAS,KAAA,EAAO,GAAG,IAAA,IAAQ,GAAA,KAAQ;AACtG,IAAA,MAAM,YAAY,4BAAA,EAA6B;AAE/C,IAAA,MAAM,QAAA,GAAWC,yCAAoB,GAAG,CAAA;AACxC,IAAA,MAAM,iBAAA,GAAoB,QAAA,KAAa,MAAA,IAAa,MAAA,KAAW,MAAA;AAC/D,IAAA,MAAM,aAAA,GAAgB,iBAAA,GAAoB,EAAE,GAAG,KAAA,EAAO,UAAA,EAAY,CAAA,EAAG,QAAA,IAAY,CAAC,CAAA,GAAA,EAAM,MAAA,IAAU,EAAE,IAAG,GAAI,KAAA;AAC3G,IAAA,uBACEL,cAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,YAAY,GAAA,GAAM,QAAA;AAAA,QACvB,IAAA;AAAA,QACA,WAAWC,WAAA,CAAG,GAAI,YAAYK,wCAAA,GAA+BC,6BAAA,EAAoB,aAAa,SAAS,CAAA;AAAA,QACvG,KAAA,EAAO,aAAA;AAAA,QACP,iBAAe,QAAA,IAAY,MAAA;AAAA,QAC3B,gBAAc,OAAA,IAAW,SAAA;AAAA,QACxB,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,iBAAA,CAAkB,WAAA,GAAc,mBAAA;;ACpBzB,MAAM,eAAA,GAAkBH,gBAAA;AAAA,EAC7B,CACE,EAAE,QAAA,EAAU,EAAA,EAAI,SAAA,EAAW,OAAO,aAAA,EAAe,IAAA,GAAO,GAAA,EAAK,QAAA,EAAU,QAAQ,QAAA,EAAU,OAAA,EAAS,GAAG,IAAA,IACrG,GAAA,KACG;AACH,IAAA,MAAM,YAAY,4BAAA,EAA6B;AAE/C,IAAA,MAAM,QAAA,GAAWC,yCAAoB,GAAG,CAAA;AACxC,IAAA,MAAM,iBAAA,GAAoB,QAAA,KAAa,MAAA,IAAa,MAAA,KAAW,MAAA;AAC/D,IAAA,MAAM,aAAA,GAAgB,iBAAA,GAAoB,EAAE,GAAG,KAAA,EAAO,UAAA,EAAY,CAAA,EAAG,QAAA,IAAY,CAAC,CAAA,GAAA,EAAM,MAAA,IAAU,EAAE,IAAG,GAAI,KAAA;AAC3G,IAAA,uBACEL,cAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,YAAY,GAAA,GAAM,QAAA;AAAA,QACvB,IAAA,EAAM,EAAA;AAAA,QACN,WAAWC,WAAA,CAAG,GAAI,SAAA,GAAYK,wCAAA,GAA+BC,+BAAoB,SAAS,CAAA;AAAA,QAC1F,KAAA,EAAO,aAAA;AAAA,QACP,iBAAe,QAAA,IAAY,MAAA;AAAA,QAC3B,gBAAc,OAAA,IAAW,SAAA;AAAA,QACxB,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,eAAA,CAAgB,WAAA,GAAc,iBAAA;;ACbvB,MAAM,kBAAA,GAAqBH,gBAAA;AAAA,EAChC,CAAC,EAAE,QAAA,EAAU,SAAA,EAAW,WAAA,EAAa,OAAA,EAAS,SAAA,EAAW,QAAA,EAAU,GAAG,IAAA,EAAK,EAAG,GAAA,KAAQ;AACpF,IAAA,MAAM,eAAe,WAAA,KAAgB,MAAA;AAGrC,IAAA,MAAM,MAAA,GAASC,yCAAoB,GAAG,CAAA;AAEtC,IAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAAsC;AACzD,MAAA,OAAA,GAAU,KAAK,CAAA;AACf,MAAA,IAAI,CAAC,YAAA,IAAgB,KAAA,CAAM,gBAAA,EAAkB;AAC7C,MAAA,WAAA,EAAY;AAAA,IACd,CAAA;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAyC;AAC9D,MAAA,SAAA,GAAY,KAAK,CAAA;AACjB,MAAA,IAAI,CAAC,YAAA,IAAgB,KAAA,CAAM,gBAAA,EAAkB;AAI7C,MAAA,IAAI,MAAM,GAAA,KAAQ,OAAA,IAAW,KAAA,CAAM,MAAA,KAAW,MAAM,aAAA,EAAe;AACjE,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,WAAA,EAAY;AAAA,MACd;AAAA,IACF,CAAA;AAEA,IAAA,uBACEL,cAAA,CAAC,yBAAA,CAA0B,QAAA,EAA1B,EAAmC,OAAK,IAAA,EACvC,QAAA,kBAAAA,cAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,MAAA;AAAA,QACL,QAAA,EAAU,QAAA,KAAa,YAAA,GAAe,CAAA,GAAI,MAAA,CAAA;AAAA,QAC1C,SAAA,EAAWC,WAAA;AAAA,UACT,8BAAA;AAAA,UACA,GAAGO,kCAAA;AAAA,UACH,GAAGC,kCAAA;AAAA,UACH,YAAA,IACE,sGAAA;AAAA,UACF;AAAA,SACF;AAAA,QACA,OAAA,EAAS,WAAA;AAAA,QACT,SAAA,EAAW,aAAA;AAAA,QACV,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH,EACF,CAAA;AAAA,EAEJ;AACF;AAEA,kBAAA,CAAmB,WAAA,GAAc,oBAAA;;ACtEjC,MAAM,SAAA,GAAY;AAAA,EAChB,GAAA,EAAKC,mBAAA;AAAA,EACL,IAAA,EAAMC,qBAAA;AAAA,EACN,IAAA,EAAMC;AACR,CAAA;AAEA,MAAM,UAAA,GAAa;AAAA,EACjB,GAAA,EAAK,WAAA;AAAA,EACL,IAAA,EAAM;AACR,CAAA;AAEA,MAAM,cAAA,GAAiB;AAAA,EACrB,GAAA,EAAK,uBAAA;AAAA,EACL,IAAA,EAAM;AACR,CAAA;AAEA,MAAM,YAAA,GAAe;AAAA,EACnB,GAAA,EAAK,KAAA;AAAA,EACL,IAAA,EAAM,MAAA;AAAA,EACN,IAAA,EAAM;AACR,CAAA;AAaO,SAAS,uBAAA,CAAmD;AAAA,EACjE,QAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,YAAA;AAAA,EACA,KAAA,GAAQ,OAAA;AAAA,EACR,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAoC;AAClC,EAAA,MAAM,IAAA,GAAqB,IAAA,KAAS,KAAA,GAAQ,MAAA,GAAS,KAAA;AACrD,EAAA,MAAM,QAAA,GAAW,SAAA,CAAU,IAAA,IAAQ,MAAM,CAAA;AACzC,EAAA,MAAM,KAAA,GAAQ,OAAO,QAAA,KAAa,QAAA,GAAW,QAAA,GAAW,OAAA;AACxD,EAAA,MAAM,UAAU,IAAA,GAAO,CAAA,OAAA,EAAU,UAAA,CAAW,IAAI,CAAC,CAAA,CAAA,GAAK,YAAA;AAEtD,EAAA,uBACEC,eAAA;AAAA,IAACC,2BAAA;AAAA,IAAA;AAAA,MACC,aAAW,IAAA,IAAQ,MAAA;AAAA,MACnB,WAAWb,WAAA,CAAG,wBAAA,EAA0B,KAAA,KAAU,KAAA,IAAS,oBAAoB,SAAS,CAAA;AAAA,MACvF,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAD,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,kBAAA,EAAoB,QAAA,EAAS,CAAA;AAAA,wBAC7CA,cAAA;AAAA,UAACe,aAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAK,SAAA;AAAA,YACL,YAAA,EAAY,GAAG,KAAK,CAAA,EAAA,EAAK,OAAO,CAAA,OAAA,EAAU,UAAA,CAAW,IAAI,CAAC,CAAA,CAAA;AAAA,YAC1D,OAAA,EAAS,YAAA,CAAa,IAAA,IAAQ,MAAM,CAAA;AAAA,YACpC,OAAA,EAAS,MAAM,YAAA,CAAa,IAAA,EAAM,OAAO,CAAA;AAAA,YACzC,SAAA,EAAWd,WAAA,CAAG,UAAA,EAAY,IAAA,GAAO,oBAAoB,uBAAuB,CAAA;AAAA,YAE5E,QAAA,kBAAAD,cAAA,CAAC,YAA8B,SAAA,EAAW,IAAA,IAAQ,eAAe,IAAI,CAAA,EAAA,EAAtD,QAAQ,MAAiD;AAAA;AAAA;AAC1E;AAAA;AAAA,GACF;AAEJ;;ACjEO,SAAS,cAAA,CAAe,EAAE,MAAA,EAAO,EAAwB;AAC9D,EAAA,IAAI,MAAA,IAAU,GAAG,OAAO,IAAA;AACxB,EAAA,sCAAQ,KAAA,EAAA,EAAI,SAAA,EAAU,iBAAgB,KAAA,EAAO,EAAE,QAAO,EAAG,CAAA;AAC3D;;;;;;;;;;;"}
@@ -19,7 +19,7 @@ const dataListRowStateStyles = [
19
19
  "active:bg-fill",
20
20
  "focus-visible:bg-surface-panel has-focus-visible:bg-surface-panel",
21
21
  "data-featured:before:bg-surface-panel has-data-featured:before:bg-surface-panel has-data-selected:before:bg-surface-panel",
22
- "data-[variant=error]:bg-notice-destructive/10 has-data-[variant=error]:bg-notice-destructive/10"
22
+ "data-[variant=error]:bg-notice-destructive/10 has-data-[variant=error]:bg-notice-destructive/10 data-[variant=error]:active:bg-notice-destructive/20 has-data-[variant=error]:active:bg-notice-destructive/20"
23
23
  ];
24
24
  const dataListRowInteractiveStyles = [
25
25
  "grid grid-cols-subgrid gap-4 px-3 cursor-pointer",
@@ -364,4 +364,4 @@ function DataListTop({ children, className, hasLeadingCell, ...props }) {
364
364
  }
365
365
 
366
366
  export { DataListRoot as D, DataListTop as a, DataListTopCell as b, DataListCell as c, dataListRowOuterStyles as d, DataListTextCell as e, DataListTimeCell as f, DataListDateCell as g, DataListTopCellSmart as h, DataListTopCellWithTooltip as i, DataListCreatedCell as j, DataListIdCell as k, dataListRowStaticStyles as l, DataListTopSelectCell as m, DataListSelectCell as n, DataListNumberCell as o, DataListRowHeaderCell as p, DataListDescriptionCell as q, DataListNameCell as r, splitColumns as s, DataListActionsCell as t, dataListRowInteractiveStyles as u, dataListRowStyles as v, dataListRowStateStyles as w };
367
- //# sourceMappingURL=data-list-top-LiaWUw5P.js.map
367
+ //# sourceMappingURL=data-list-top-DpbOA3uw.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-list-top-DpbOA3uw.js","sources":["../src/ds/components/DataList/shared.ts","../src/ds/components/DataList/data-list-cells.tsx","../src/ds/components/DataList/data-list-root.tsx","../src/ds/components/DataList/data-list-top-cell.tsx","../src/ds/components/DataList/data-list-top.tsx"],"sourcesContent":["/**\n * Row-level styling for the element that participates in the row sibling\n * chain — applied to `DataList.RowButton` / `DataList.RowLink` when used\n * standalone, and to `DataList.RowWrapper` when used as a shell around them.\n *\n * Carries the `.data-list-row` marker class the root styles target.\n */\nexport const dataListRowOuterStyles = [\n 'group/data-list-row data-list-row col-span-full relative min-h-9',\n // The row surface is a `before` pseudo at `-z-2` so the root's fluid hover\n // highlight (`-z-1`) can glide *between* the surface and the row content,\n // exactly like menu items. The row element itself stays transparent.\n \"before:absolute before:inset-0 before:-z-2 before:rounded-[inherit] before:bg-background before:content-['']\",\n] as const;\n\n/**\n * Interactive state fills for the outer row element. Applied to standalone\n * `RowButton` / `RowLink` and to `RowWrapper`. The `has-*` forms let a wrapper\n * mirror the tone of the interactive row nested inside it.\n *\n * Hover is not painted per row: the root renders one fluid `fill-subtle`\n * highlight under the row content. Rows are sunken wells (`--background`) inside\n * the card panel, whose material also shows through the 1px gaps between them,\n * so a resting tone steps to `--surface-panel` — the opaque twin of a `--fill`\n * rung over the well — rather than to `--card`, which would make a selected row\n * the exact colour of the separators around it. Pressed rises a full `--fill`\n * rung, the same rung a resting control carries, and error sits on the row\n * element itself so it reads on top of the highlight.\n */\nexport const dataListRowStateStyles = [\n 'active:bg-fill',\n 'focus-visible:bg-surface-panel has-focus-visible:bg-surface-panel',\n 'data-featured:before:bg-surface-panel has-data-featured:before:bg-surface-panel has-data-selected:before:bg-surface-panel',\n 'data-[variant=error]:bg-notice-destructive/10 has-data-[variant=error]:bg-notice-destructive/10 data-[variant=error]:active:bg-notice-destructive/20 has-data-[variant=error]:active:bg-notice-destructive/20',\n] as const;\n\n/**\n * Layout and focus for the interactive element. The background lives on the\n * outer row element so it sits inside the root surface.\n */\nexport const dataListRowInteractiveStyles = [\n 'grid grid-cols-subgrid gap-4 px-3 cursor-pointer',\n 'outline-none focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-accent1',\n] as const;\n\nexport const dataListRowStyles = [\n ...dataListRowInteractiveStyles,\n ...dataListRowOuterStyles,\n ...dataListRowStateStyles,\n] as const;\n\nexport const dataListRowStaticStyles = ['grid grid-cols-subgrid gap-4 px-3', ...dataListRowOuterStyles] as const;\n\n/**\n * Row actions that stay out of the way until the row is hovered or focused.\n * Opacity, not display, so the column keeps its width and nothing shifts. A\n * coarse pointer never hovers, so there they stay visible — hidden controls\n * that still take taps would be worse than no reveal at all.\n */\nexport const dataListRowActionRevealStyles =\n 'opacity-0 pointer-coarse:opacity-100 group-focus-within/data-list-row:opacity-100 group-hover/data-list-row:opacity-100';\n\nexport type DataListSticky = 'start';\n\nexport const dataListStickyStartStyles = [\n 'data-list-sticky-start sticky left-0 z-10 isolate self-stretch overflow-visible',\n] as const;\n\n/** Tone for a single row. Exposed as `data-variant`; `error` tints the row. */\nexport type DataListRowVariant = 'default' | 'error';\n\n/**\n * Layout/state modifiers shared by interactive row primitives\n * (`DataList.RowButton`, `DataList.RowLink`).\n */\nexport type DataListRowSharedProps = {\n /** Row tone — exposed on the element as `data-variant`. */\n variant?: DataListRowVariant;\n /**\n * Place the row starting at this column line. Defaults to column 1. Use\n * when the row sits beside a leading cell that owns column 1.\n */\n colStart?: number;\n /**\n * Place the row ending at this column line (use negative values to count\n * from the end, e.g. `-2`). Defaults to `-1` (the last line). Use when the\n * row sits beside a trailing cell that owns the last column.\n */\n colEnd?: number;\n /**\n * Mark the row as featured (e.g. the row whose detail is open in a side\n * panel). Exposed on the element as `data-featured` and tints the row.\n */\n featured?: boolean;\n};\n\n/** Split a grid-template-columns string on top-level whitespace only, so `minmax(0, 10rem)` stays one track. */\nexport function splitColumns(columns: string): string[] {\n const parts: string[] = [];\n let depth = 0;\n let current = '';\n for (const char of columns) {\n if (char === '(') depth++;\n if (char === ')') depth--;\n if (/\\s/.test(char) && depth === 0) {\n if (current) parts.push(current);\n current = '';\n } else {\n current += char;\n }\n }\n if (current) parts.push(current);\n return parts;\n}\n","import { format, isToday } from 'date-fns';\nimport { Children, cloneElement, isValidElement } from 'react';\nimport type { ComponentPropsWithoutRef, ElementType, ReactNode } from 'react';\nimport { dataListRowActionRevealStyles, dataListStickyStartStyles } from './shared';\nimport type { DataListSticky } from './shared';\nimport { Checkbox } from '@/ds/components/Checkbox';\nimport { cn } from '@/lib/utils';\n\nexport type DataListCellProps = {\n children?: ReactNode;\n className?: string;\n /**\n * HTML element rendered for the cell. Defaults to `span`. Use `'label'` when\n * the cell wraps a labelable control (e.g. a Checkbox), so the whole cell\n * area acts as the click/hover target.\n */\n as?: ElementType;\n /**\n * Pins the cell to the horizontal start edge of the list while the list\n * scrolls sideways.\n */\n sticky?: DataListSticky;\n} & Omit<ComponentPropsWithoutRef<'div'>, 'children' | 'className'>;\n\nexport function DataListCell({ children, className, as, sticky, ...rest }: DataListCellProps) {\n const Component = as || 'span';\n return (\n <Component\n className={cn(\n 'relative grid max-w-full min-w-0 items-center overflow-hidden text-body-sm whitespace-nowrap text-muted-foreground empty:before:text-placeholder empty:before:content-[\"—\"]',\n sticky === 'start' && dataListStickyStartStyles,\n className,\n )}\n {...rest}\n >\n {children}\n </Component>\n );\n}\n\n/**\n * Trailing cell for row actions, revealed on row hover or keyboard focus.\n * Sits beside a `DataList.RowButton` inside a `DataList.RowWrapper`.\n */\nexport function DataListActionsCell({ children, className, ...rest }: DataListCellProps) {\n return (\n <DataListCell className={className} {...rest}>\n <span\n className={cn(\n 'flex w-full items-center justify-end gap-1 pr-3 transition-opacity duration-200',\n dataListRowActionRevealStyles,\n )}\n >\n {children}\n </span>\n </DataListCell>\n );\n}\n\nconst dataListTruncateContentStyles =\n 'block min-w-0 max-w-full truncate empty:before:content-[\"—\"] empty:before:text-placeholder [&>*]:min-w-0 [&>*]:max-w-full [&>*]:overflow-hidden [&>*]:text-ellipsis [&>*]:whitespace-nowrap';\nconst dataListInlineTextTruncateStyles = 'min-w-0 flex-1 truncate';\n\nfunction DataListInlineText({ children }: { children: string | number }) {\n return <span className={dataListInlineTextTruncateStyles}>{children}</span>;\n}\n\nfunction DataListTruncatedTextNodes({ children }: { children: ReactNode }) {\n return Children.map(children, child => {\n if (typeof child === 'string' || typeof child === 'number') {\n return <DataListInlineText>{child}</DataListInlineText>;\n }\n\n return child;\n });\n}\n\nfunction DataListTruncatedCellContent({ children }: { children: ReactNode }) {\n return Children.map(children, child => {\n if (!isValidElement<{ children?: ReactNode; className?: string }>(child) || typeof child.type !== 'string') {\n return child;\n }\n\n return cloneElement(child, {\n className: cn('max-w-full min-w-0 overflow-hidden', child.props.className),\n children: <DataListTruncatedTextNodes>{child.props.children}</DataListTruncatedTextNodes>,\n });\n });\n}\n\nexport type DataListTextCellProps = DataListCellProps & {\n /**\n * Typeface for the cell text. `mono` is for genuine code — paths, env values,\n * serialized JSON — and drops a size step to match the sans columns optically.\n */\n font?: 'sans' | 'mono';\n};\n\nexport function DataListTextCell({ children, className, font = 'sans', ...rest }: DataListTextCellProps) {\n return (\n <DataListCell className={cn(font === 'mono' && 'font-mono text-body-sm', className)} {...rest}>\n <span className={dataListTruncateContentStyles}>\n <DataListTruncatedCellContent>{children}</DataListTruncatedCellContent>\n </span>\n </DataListCell>\n );\n}\n\nexport function DataListNameCell({ children, className }: DataListCellProps) {\n return (\n <DataListCell className={cn('text-left text-label text-foreground', className)}>\n <span className={dataListTruncateContentStyles}>\n <DataListTruncatedCellContent>{children}</DataListTruncatedCellContent>\n </span>\n </DataListCell>\n );\n}\n\nexport function DataListDescriptionCell({ children, className }: DataListCellProps) {\n return (\n <DataListCell className={cn('text-muted-foreground', className)}>\n <span className={dataListTruncateContentStyles}>\n <DataListTruncatedCellContent>{children}</DataListTruncatedCellContent>\n </span>\n </DataListCell>\n );\n}\n\nexport type DataListRowHeaderCellProps = Omit<DataListCellProps, 'sticky'>;\n\nexport function DataListRowHeaderCell({ children, className, ...rest }: DataListRowHeaderCellProps) {\n return (\n <DataListCell\n sticky=\"start\"\n className={cn(\n 'data-list-row-header -mx-3 w-auto max-w-none px-3 text-left text-label text-foreground',\n className,\n )}\n {...rest}\n >\n <span className={cn(dataListTruncateContentStyles, 'relative z-10 w-full')}>\n <DataListTruncatedCellContent>{children}</DataListTruncatedCellContent>\n </span>\n </DataListCell>\n );\n}\n\nexport type DataListNumberCellProps = DataListCellProps & {\n /**\n * Emphasizes the value with the ink tone and the label role — use for the\n * primary metric in a row (e.g. a total or headline number).\n */\n highlight?: boolean;\n};\n\n/**\n * Right-aligned numeric cell with tabular figures, for metric and summary\n * tables. Pass `highlight` for the emphasized column.\n */\nexport function DataListNumberCell({ children, className, highlight, ...rest }: DataListNumberCellProps) {\n return (\n <DataListCell\n className={cn(\n 'justify-items-end text-right text-muted-foreground tabular-nums',\n highlight && 'text-label text-foreground',\n className,\n )}\n {...rest}\n >\n {children}\n </DataListCell>\n );\n}\n\nfunction getShortId(id: string | undefined): string {\n return id?.slice(0, 8) ?? '';\n}\n\nexport interface DataListIdCellProps {\n id: string;\n}\n\nexport function DataListIdCell({ id }: DataListIdCellProps) {\n return <DataListCell className=\"tracking-wide text-muted-foreground\">{getShortId(id)}</DataListCell>;\n}\n\nexport interface DataListSelectCellProps {\n checked: boolean;\n /**\n * Called when the checkbox is clicked. Receives the click event's `shiftKey`\n * so callers can implement range-select. The cell stops the click from\n * reaching the host row, so the row's `onClick` doesn't fire.\n */\n onToggle: (shiftKey: boolean) => void;\n /** Disable the checkbox, e.g. while a selection mutation is in flight. */\n disabled?: boolean;\n 'aria-label'?: string;\n}\n\nexport function DataListSelectCell({ checked, onToggle, disabled, ...rest }: DataListSelectCellProps) {\n return (\n <DataListCell\n as=\"label\"\n className={cn(\n 'size-8 justify-items-center self-center overflow-visible px-0',\n disabled ? 'cursor-not-allowed' : 'cursor-pointer',\n )}\n onClick={e => e.stopPropagation()}\n data-selected={checked || undefined}\n >\n <Checkbox\n checked={checked}\n disabled={disabled}\n onCheckedChange={() => {}} // no-op: selection handled by onClick to capture shiftKey\n // The click still has to bubble to the cell above, which is what keeps it\n // off the host row. Base UI withholds this handler while disabled.\n onClick={e => onToggle(e.shiftKey)}\n aria-label={rest['aria-label']}\n />\n </DataListCell>\n );\n}\n\nfunction toDate(value: Date | string): Date | null {\n const date = value instanceof Date ? value : new Date(value);\n return isNaN(date.getTime()) ? null : date;\n}\n\nexport interface DataListDateCellProps {\n timestamp: Date | string;\n}\n\n/** Compact date cell — `Today` or `MMM dd` (e.g. `May 19`). */\nexport function DataListDateCell({ timestamp }: DataListDateCellProps) {\n const date = toDate(timestamp);\n return (\n <DataListCell className=\"text-muted-foreground\">\n {date ? (isToday(date) ? 'Today' : format(date, 'MMM dd')) : null}\n </DataListCell>\n );\n}\n\nexport interface DataListCreatedCellProps {\n timestamp: Date | string;\n}\n\n/** Compact date + time cell — always `MMM d HH:mm:ss` (e.g. `Aug 31 13:07:47`), 24h, no milliseconds. */\nexport function DataListCreatedCell({ timestamp }: DataListCreatedCellProps) {\n const date = toDate(timestamp);\n return (\n <DataListCell className=\"text-muted-foreground tabular-nums\">\n {date ? format(date, 'MMM d HH:mm:ss') : null}\n </DataListCell>\n );\n}\n\nexport interface DataListTimeCellProps {\n timestamp: Date | string;\n}\n\nexport function DataListTimeCell({ timestamp }: DataListTimeCellProps) {\n const date = toDate(timestamp);\n return (\n <DataListCell className=\"flex text-muted-foreground tabular-nums\">\n {date ? (\n <>\n {format(date, 'h:mm:ss')}\n <span className=\"text-placeholder\">\n .{String(date.getMilliseconds()).padStart(3, '0')} {format(date, 'aaa')}\n </span>\n </>\n ) : null}\n </DataListCell>\n );\n}\n","import type { CSSProperties, ReactNode, RefObject } from 'react';\nimport { ScrollArea } from '@/ds/components/ScrollArea/scroll-area';\nimport type { ScrollAreaMask, ScrollAreaProps } from '@/ds/components/ScrollArea/scroll-area';\nimport { FluidMenuItems, useFluidMenu } from '@/ds/primitives/fluid-menu';\nimport { raisedSurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { cn } from '@/lib/utils';\n\n/**\n * Horizontal sizing of the list grid.\n *\n * - `content`: the grid is as wide as its widest content (`w-max`) and the\n * ScrollArea scrolls horizontally when it exceeds the container.\n * - `container`: the grid fills the container width and never exceeds it;\n * flexible tracks (`minmax(0, 1fr)`) shrink so truncating cells ellipsize\n * instead of widening the table.\n */\nexport type DataListFit = 'content' | 'container';\n\n/**\n * Surface treatment of the list.\n *\n * - `default`: rows sit as wells inside a raised card panel — the same material\n * and elevation as a card, a popover or a settings container.\n * - `light`: no panel behind the rows; rows sit directly on the page.\n */\nexport type DataListVariant = 'default' | 'light';\n\nexport type DataListRootProps = Omit<ScrollAreaProps, 'children' | 'orientation' | 'mask' | 'viewportRef'> & {\n children: ReactNode;\n columns: string;\n /** Grid width behavior; defaults to `content` (existing horizontal-scroll sizing). */\n fit?: DataListFit;\n /** Surface treatment; defaults to `default` (rows on a raised card panel). */\n variant?: DataListVariant;\n /**\n * Edge fades from the underlying ScrollArea. DataList keeps the top fade off\n * by default so it does not fade the sticky top header.\n */\n mask?: ScrollAreaMask;\n /**\n * Ref to the scroll container — pass this to TanStack Virtual's\n * `getScrollElement` when virtualizing. Without it, the ScrollArea viewport\n * scrolls normally.\n */\n scrollRef?: RefObject<HTMLDivElement | null>;\n};\n\ntype DataListRootStyle = CSSProperties & {\n '--data-list-background'?: string;\n};\n\nfunction getDataListMask(mask: ScrollAreaMask | undefined): ScrollAreaMask {\n if (mask === undefined) return { top: false };\n if (mask === true || mask === false) return mask;\n\n return { top: false, ...mask };\n}\n\n/**\n * The root owns the unified table treatment so standalone and wrapped rows look\n * identical without requiring a per-row index. The ScrollArea provides the\n * fixed frame; this grid paints the sticky header and separators. The root is\n * the only element that defines a color: sticky parts read the background\n * through `--data-list-background` so they stay opaque while scrolling, and\n * rows/header draw no separators, borders or rings of their own.\n */\nconst dataListGridStyles = [\n 'gap-y-px',\n // Rows are siblings of the header, so first/last are found via sibling combinators.\n '[&_.data-list-row:not(.data-list-row~.data-list-row)]:rounded-t-lg',\n '[&_.data-list-row:not(:has(~.data-list-row))]:rounded-b-lg',\n '[&_.data-list-row:not(.data-list-row~.data-list-row)>.data-list-sticky-start]:rounded-tl-lg',\n '[&_.data-list-row:not(:has(~.data-list-row))>.data-list-sticky-start]:rounded-bl-lg',\n // Subheaders split the rows into sections; each section gets its own rounded ends.\n '[&_.data-list-subheader+.data-list-row]:rounded-t-lg',\n '[&_.data-list-row:has(+.data-list-subheader)]:rounded-b-lg',\n '[&_.data-list-subheader+.data-list-row>.data-list-sticky-start]:rounded-tl-lg',\n '[&_.data-list-row:has(+.data-list-subheader)>.data-list-sticky-start]:rounded-bl-lg',\n // The fluid highlight follows the same ends: rounded only when the active\n // row is the first/last of its section, square everywhere else. `:has()`\n // cannot nest, so \"last\" is written as \"no row follows the active one\".\n '[&:has(.data-list-row[data-fluid-hover-active]:not(.data-list-row~.data-list-row))_[data-slot=fluid-hover-highlight]]:rounded-t-lg',\n '[&:has(.data-list-row[data-fluid-hover-active]):not(:has(.data-list-row[data-fluid-hover-active]~.data-list-row))_[data-slot=fluid-hover-highlight]]:rounded-b-lg',\n '[&:has(.data-list-subheader+.data-list-row[data-fluid-hover-active])_[data-slot=fluid-hover-highlight]]:rounded-t-lg',\n '[&:has(.data-list-row[data-fluid-hover-active]+.data-list-subheader)_[data-slot=fluid-hover-highlight]]:rounded-b-lg',\n '[&_.data-list-top]:bg-(--data-list-background)',\n '[&_.data-list-row>.data-list-sticky-start]:bg-background',\n // A sticky cell must stay opaque over horizontally scrolled cells, so it\n // cannot show the fluid highlight through; it takes the opaque twin of a fill\n // rung over the row well instead, the same level a selected row rests on.\n '[&_.data-list-row[data-fluid-hover-active]>.data-list-sticky-start]:bg-surface-panel',\n '[&_.data-list-row>.data-list-sticky-start]:after:right-0',\n '[&_.data-list-top>.data-list-sticky-start]:after:right-0',\n] as const;\n\nconst dataListVariantClasses: Record<DataListVariant, string> = {\n default: raisedSurfaceStyle,\n light: '',\n};\n\n// The sticky header reads this so it stays opaque while scrolling: the panel\n// material by default, the page surface when there is no panel.\nconst dataListVariantBackground: Record<DataListVariant, string> = {\n default: 'var(--card)',\n light: 'var(--background)',\n};\n\nconst dataListFitClasses: Record<DataListFit, string> = {\n content: 'w-max max-w-none min-w-full',\n container: 'w-full max-w-full',\n};\n\nexport function DataListRoot({\n children,\n columns,\n className,\n fit = 'content',\n variant = 'default',\n mask,\n scrollRef,\n ...props\n}: DataListRootProps) {\n const gridStyle: DataListRootStyle = {\n '--data-list-background': dataListVariantBackground[variant],\n gridTemplateColumns: columns,\n };\n\n // One hover surface travels between rows (same primitive as menus/selects).\n // Subheaders, pagination and whitespace stay inert, so no gap-click routing.\n const menu = useFluidMenu<HTMLDivElement>({ gapClick: false });\n\n const grid = (\n <div\n // Lists scroll inside the ScrollArea viewport (below); the grid just lays out.\n // It is also the offsetParent rows are measured against and the highlight is positioned in.\n className={cn('grid content-start', ...dataListGridStyles, dataListFitClasses[fit], menu.containerClassName)}\n style={gridStyle}\n {...menu.getContainerProps({})}\n >\n {/* The highlight is the old row hover color. It sits between each row's\n `before` surface (-z-2) and the row content (see `dataListRowOuterStyles`). */}\n <FluidMenuItems menu={menu} className=\"rounded-none bg-fill-subtle\">\n {children}\n </FluidMenuItems>\n </div>\n );\n\n // DataList uses the DS ScrollArea: an overlay scrollbar, so the sticky header\n // spans the full width. Masks default to every overflowing edge except the\n // top — a top fade would fade the opaque sticky header. A virtualizing list\n // passes `scrollRef`, forwarded as `viewportRef` so it scrolls this viewport.\n return (\n <ScrollArea\n {...props}\n orientation=\"both\"\n mask={getDataListMask(mask)}\n viewportRef={scrollRef}\n // Outer radius = row radius (8px) + 4px inset so the corners stay concentric.\n // Size to content but never exceed the parent. Flex (unlike grid `1fr`) lays\n // items out against the max-height-clamped container, so short lists stay\n // compact and long ones shrink the viewport and scroll. `self-start` stops\n // a grid/flex parent from stretching the root to the full row height.\n viewPortClassName=\"min-h-0 flex-1 basis-auto\"\n className={cn(\n 'flex max-h-full w-full flex-col self-start rounded-xl p-1',\n dataListVariantClasses[variant],\n className,\n )}\n >\n {grid}\n </ScrollArea>\n );\n}\n","import type { ComponentPropsWithoutRef, ElementType, ReactNode } from 'react';\nimport { forwardRef } from 'react';\nimport { dataListStickyStartStyles } from './shared';\nimport type { DataListSticky } from './shared';\nimport { Checkbox } from '@/ds/components/Checkbox';\nimport { Tooltip, TooltipTrigger, TooltipContent } from '@/ds/components/Tooltip';\nimport { cn } from '@/lib/utils';\n\nexport type DataListTopCellProps = {\n children: ReactNode;\n className?: string;\n /**\n * HTML element rendered for the top cell. Defaults to `span`. Use `'label'`\n * when the cell wraps a labelable control (e.g. a select-all Checkbox).\n */\n as?: ElementType;\n /** Pins the top cell to the horizontal start edge while the list scrolls sideways. */\n sticky?: DataListSticky;\n} & Omit<ComponentPropsWithoutRef<'div'>, 'children' | 'className' | 'ref'>;\n\nexport const DataListTopCell = forwardRef<HTMLSpanElement, DataListTopCellProps>(\n ({ children, className, as, sticky, ...rest }, ref) => {\n const Component = as || 'span';\n const isText = typeof children === 'string' || typeof children === 'number';\n return (\n <Component\n ref={ref}\n className={cn(\n 'flex h-10 max-w-full min-w-0 items-center overflow-hidden py-1 text-column whitespace-nowrap text-muted-foreground',\n sticky === 'start' && dataListStickyStartStyles,\n sticky === 'start' && '-mr-3 -ml-3 w-auto max-w-none pr-3 pl-3',\n sticky === 'start' && 'z-20',\n className,\n )}\n {...rest}\n >\n {/* Plain string/number titles truncate with an ellipsis; element children\n (icons, smart long/short labels, checkboxes) render as-is. */}\n {isText ? <span className=\"min-w-0 truncate\">{children}</span> : children}\n </Component>\n );\n },\n);\n\nexport type DataListTopCellWithTooltipProps = {\n children: ReactNode;\n tooltip: ReactNode;\n className?: string;\n};\n\nexport function DataListTopCellWithTooltip({ children, tooltip, className }: DataListTopCellWithTooltipProps) {\n return (\n <Tooltip>\n <TooltipTrigger>\n <DataListTopCell className={className}>{children}</DataListTopCell>\n </TooltipTrigger>\n <TooltipContent>{tooltip}</TooltipContent>\n </Tooltip>\n );\n}\n\nexport type DataListTopCellSmartProps = {\n long: ReactNode;\n short: ReactNode;\n tooltip?: string;\n breakpoint?: 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n className?: string;\n};\n\nconst breakpointClasses: Record<'sm' | 'md' | 'lg' | 'xl' | '2xl', { show: string; hide: string }> = {\n sm: { show: 'hidden sm:inline-flex', hide: 'inline-flex sm:hidden' },\n md: { show: 'hidden md:inline-flex', hide: 'inline-flex md:hidden' },\n lg: { show: 'hidden lg:inline-flex', hide: 'inline-flex lg:hidden' },\n xl: { show: 'hidden xl:inline-flex', hide: 'inline-flex xl:hidden' },\n '2xl': { show: 'hidden 2xl:inline-flex', hide: 'inline-flex 2xl:hidden' },\n};\n\nexport function DataListTopCellSmart({\n long,\n short,\n tooltip,\n breakpoint = '2xl',\n className,\n}: DataListTopCellSmartProps) {\n const tooltipText = tooltip ?? (typeof long === 'string' ? long : undefined);\n const bp = breakpointClasses[breakpoint];\n\n const content = (\n <>\n <span className={cn('items-center gap-1', bp.show)}>{long}</span>\n <span className={cn('items-center gap-1', bp.hide)}>{short}</span>\n </>\n );\n\n if (tooltipText) {\n return (\n <DataListTopCellWithTooltip tooltip={tooltipText} className={cn('flex [&_svg]:size-[1.3em]', className)}>\n {content}\n </DataListTopCellWithTooltip>\n );\n }\n\n return <DataListTopCell className={cn('flex [&_svg]:size-[1.3em]', className)}>{content}</DataListTopCell>;\n}\n\nexport interface DataListTopSelectCellProps {\n /** Pass `'indeterminate'` when some — but not all — rows are selected. */\n checked: boolean | 'indeterminate';\n /** Toggles the global selection. Typically clears when fully selected, otherwise selects all. */\n onToggle: () => void;\n 'aria-label'?: string;\n}\n\nexport function DataListTopSelectCell({ checked, onToggle, ...rest }: DataListTopSelectCellProps) {\n return (\n <DataListTopCell\n as=\"label\"\n className=\"w-8 cursor-pointer justify-center overflow-visible px-0 py-0!\"\n onClick={e => e.stopPropagation()}\n >\n <Checkbox checked={checked} onCheckedChange={() => onToggle()} aria-label={rest['aria-label']} />\n </DataListTopCell>\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListTopProps = ComponentPropsWithoutRef<'div'> & {\n /**\n * Switch to a \"leading cell\" layout: drops the default gap between children\n * and the default left padding, so a leading cell (e.g. `TopSelectCell`)\n * sits flush against the grid edge and an inner `TopCells` group owns the\n * remaining column spacing. Mirrors how `Row` + `RowButton` compose.\n */\n hasLeadingCell?: boolean;\n};\n\nexport function DataListTop({ children, className, hasLeadingCell, ...props }: DataListTopProps) {\n return (\n <div\n className={cn(\n 'group/data-list-top data-list-top sticky top-0 z-20 col-span-full grid grid-cols-subgrid gap-4 px-3',\n hasLeadingCell && 'gap-0 pl-0!',\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;AAOO,MAAM,sBAAA,GAAyB;AAAA,EACpC,kEAAA;AAAA;AAAA;AAAA;AAAA,EAIA;AACF;AAgBO,MAAM,sBAAA,GAAyB;AAAA,EACpC,gBAAA;AAAA,EACA,mEAAA;AAAA,EACA,2HAAA;AAAA,EACA;AACF;AAMO,MAAM,4BAAA,GAA+B;AAAA,EAC1C,kDAAA;AAAA,EACA;AACF;AAEO,MAAM,iBAAA,GAAoB;AAAA,EAC/B,GAAG,4BAAA;AAAA,EACH,GAAG,sBAAA;AAAA,EACH,GAAG;AACL;AAEO,MAAM,uBAAA,GAA0B,CAAC,mCAAA,EAAqC,GAAG,sBAAsB;AAQ/F,MAAM,6BAAA,GACX,yHAAA;AAIK,MAAM,yBAAA,GAA4B;AAAA,EACvC;AACF,CAAA;AA+BO,SAAS,aAAa,OAAA,EAA2B;AACtD,EAAA,MAAM,QAAkB,EAAC;AACzB,EAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,EAAA,IAAI,OAAA,GAAU,EAAA;AACd,EAAA,KAAA,MAAW,QAAQ,OAAA,EAAS;AAC1B,IAAA,IAAI,SAAS,GAAA,EAAK,KAAA,EAAA;AAClB,IAAA,IAAI,SAAS,GAAA,EAAK,KAAA,EAAA;AAClB,IAAA,IAAI,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,IAAK,UAAU,CAAA,EAAG;AAClC,MAAA,IAAI,OAAA,EAAS,KAAA,CAAM,IAAA,CAAK,OAAO,CAAA;AAC/B,MAAA,OAAA,GAAU,EAAA;AAAA,IACZ,CAAA,MAAO;AACL,MAAA,OAAA,IAAW,IAAA;AAAA,IACb;AAAA,EACF;AACA,EAAA,IAAI,OAAA,EAAS,KAAA,CAAM,IAAA,CAAK,OAAO,CAAA;AAC/B,EAAA,OAAO,KAAA;AACT;;ACzFO,SAAS,YAAA,CAAa,EAAE,QAAA,EAAU,SAAA,EAAW,IAAI,MAAA,EAAQ,GAAG,MAAK,EAAsB;AAC5F,EAAA,MAAM,YAAY,EAAA,IAAM,MAAA;AACxB,EAAA,uBACE,GAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,6KAAA;AAAA,QACA,WAAW,OAAA,IAAW,yBAAA;AAAA,QACtB;AAAA,OACF;AAAA,MACC,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ;AAMO,SAAS,oBAAoB,EAAE,QAAA,EAAU,SAAA,EAAW,GAAG,MAAK,EAAsB;AACvF,EAAA,uBACE,GAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAuB,GAAG,IAAA,EACtC,QAAA,kBAAA,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,iFAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEC;AAAA;AAAA,GACH,EACF,CAAA;AAEJ;AAEA,MAAM,6BAAA,GACJ,6LAAA;AACF,MAAM,gCAAA,GAAmC,yBAAA;AAEzC,SAAS,kBAAA,CAAmB,EAAE,QAAA,EAAS,EAAkC;AACvE,EAAA,uBAAO,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,gCAAA,EAAmC,QAAA,EAAS,CAAA;AACtE;AAEA,SAAS,0BAAA,CAA2B,EAAE,QAAA,EAAS,EAA4B;AACzE,EAAA,OAAO,QAAA,CAAS,GAAA,CAAI,QAAA,EAAU,CAAA,KAAA,KAAS;AACrC,IAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,OAAO,UAAU,QAAA,EAAU;AAC1D,MAAA,uBAAO,GAAA,CAAC,sBAAoB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,IACpC;AAEA,IAAA,OAAO,KAAA;AAAA,EACT,CAAC,CAAA;AACH;AAEA,SAAS,4BAAA,CAA6B,EAAE,QAAA,EAAS,EAA4B;AAC3E,EAAA,OAAO,QAAA,CAAS,GAAA,CAAI,QAAA,EAAU,CAAA,KAAA,KAAS;AACrC,IAAA,IAAI,CAAC,cAAA,CAA6D,KAAK,KAAK,OAAO,KAAA,CAAM,SAAS,QAAA,EAAU;AAC1G,MAAA,OAAO,KAAA;AAAA,IACT;AAEA,IAAA,OAAO,aAAa,KAAA,EAAO;AAAA,MACzB,SAAA,EAAW,EAAA,CAAG,oCAAA,EAAsC,KAAA,CAAM,MAAM,SAAS,CAAA;AAAA,MACzE,QAAA,kBAAU,GAAA,CAAC,0BAAA,EAAA,EAA4B,QAAA,EAAA,KAAA,CAAM,MAAM,QAAA,EAAS;AAAA,KAC7D,CAAA;AAAA,EACH,CAAC,CAAA;AACH;AAUO,SAAS,gBAAA,CAAiB,EAAE,QAAA,EAAU,SAAA,EAAW,OAAO,MAAA,EAAQ,GAAG,MAAK,EAA0B;AACvG,EAAA,2BACG,YAAA,EAAA,EAAa,SAAA,EAAW,GAAG,IAAA,KAAS,MAAA,IAAU,0BAA0B,SAAS,CAAA,EAAI,GAAG,IAAA,EACvF,QAAA,kBAAA,GAAA,CAAC,UAAK,SAAA,EAAW,6BAAA,EACf,8BAAC,4BAAA,EAAA,EAA8B,QAAA,EAAS,GAC1C,CAAA,EACF,CAAA;AAEJ;AAEO,SAAS,gBAAA,CAAiB,EAAE,QAAA,EAAU,SAAA,EAAU,EAAsB;AAC3E,EAAA,uBACE,GAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAW,EAAA,CAAG,wCAAwC,SAAS,CAAA,EAC3E,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,WAAW,6BAAA,EACf,QAAA,kBAAA,GAAA,CAAC,4BAAA,EAAA,EAA8B,QAAA,EAAS,GAC1C,CAAA,EACF,CAAA;AAEJ;AAEO,SAAS,uBAAA,CAAwB,EAAE,QAAA,EAAU,SAAA,EAAU,EAAsB;AAClF,EAAA,uBACE,GAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAW,EAAA,CAAG,yBAAyB,SAAS,CAAA,EAC5D,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,WAAW,6BAAA,EACf,QAAA,kBAAA,GAAA,CAAC,4BAAA,EAAA,EAA8B,QAAA,EAAS,GAC1C,CAAA,EACF,CAAA;AAEJ;AAIO,SAAS,sBAAsB,EAAE,QAAA,EAAU,SAAA,EAAW,GAAG,MAAK,EAA+B;AAClG,EAAA,uBACE,GAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,MAAA,EAAO,OAAA;AAAA,MACP,SAAA,EAAW,EAAA;AAAA,QACT,wFAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,IAAA;AAAA,MAEJ,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,6BAAA,EAA+B,sBAAsB,CAAA,EACvE,QAAA,kBAAA,GAAA,CAAC,4BAAA,EAAA,EAA8B,QAAA,EAAS,CAAA,EAC1C;AAAA;AAAA,GACF;AAEJ;AAcO,SAAS,mBAAmB,EAAE,QAAA,EAAU,WAAW,SAAA,EAAW,GAAG,MAAK,EAA4B;AACvG,EAAA,uBACE,GAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,iEAAA;AAAA,QACA,SAAA,IAAa,4BAAA;AAAA,QACb;AAAA,OACF;AAAA,MACC,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ;AAEA,SAAS,WAAW,EAAA,EAAgC;AAClD,EAAA,OAAO,EAAA,EAAI,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,IAAK,EAAA;AAC5B;AAMO,SAAS,cAAA,CAAe,EAAE,EAAA,EAAG,EAAwB;AAC1D,EAAA,2BAAQ,YAAA,EAAA,EAAa,SAAA,EAAU,qCAAA,EAAuC,QAAA,EAAA,UAAA,CAAW,EAAE,CAAA,EAAE,CAAA;AACvF;AAeO,SAAS,mBAAmB,EAAE,OAAA,EAAS,UAAU,QAAA,EAAU,GAAG,MAAK,EAA4B;AACpG,EAAA,uBACE,GAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,EAAA,EAAG,OAAA;AAAA,MACH,SAAA,EAAW,EAAA;AAAA,QACT,+DAAA;AAAA,QACA,WAAW,oBAAA,GAAuB;AAAA,OACpC;AAAA,MACA,OAAA,EAAS,CAAA,CAAA,KAAK,CAAA,CAAE,eAAA,EAAgB;AAAA,MAChC,iBAAe,OAAA,IAAW,MAAA;AAAA,MAE1B,QAAA,kBAAA,GAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,OAAA;AAAA,UACA,QAAA;AAAA,UACA,iBAAiB,MAAM;AAAA,UAAC,CAAA;AAAA,UAGxB,OAAA,EAAS,CAAA,CAAA,KAAK,QAAA,CAAS,CAAA,CAAE,QAAQ,CAAA;AAAA,UACjC,YAAA,EAAY,KAAK,YAAY;AAAA;AAAA;AAC/B;AAAA,GACF;AAEJ;AAEA,SAAS,OAAO,KAAA,EAAmC;AACjD,EAAA,MAAM,OAAO,KAAA,YAAiB,IAAA,GAAO,KAAA,GAAQ,IAAI,KAAK,KAAK,CAAA;AAC3D,EAAA,OAAO,KAAA,CAAM,IAAA,CAAK,OAAA,EAAS,IAAI,IAAA,GAAO,IAAA;AACxC;AAOO,SAAS,gBAAA,CAAiB,EAAE,SAAA,EAAU,EAA0B;AACrE,EAAA,MAAM,IAAA,GAAO,OAAO,SAAS,CAAA;AAC7B,EAAA,uBACE,GAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAU,uBAAA,EACrB,QAAA,EAAA,IAAA,GAAQ,OAAA,CAAQ,IAAI,CAAA,GAAI,OAAA,GAAU,MAAA,CAAO,IAAA,EAAM,QAAQ,IAAK,IAAA,EAC/D,CAAA;AAEJ;AAOO,SAAS,mBAAA,CAAoB,EAAE,SAAA,EAAU,EAA6B;AAC3E,EAAA,MAAM,IAAA,GAAO,OAAO,SAAS,CAAA;AAC7B,EAAA,uBACE,GAAA,CAAC,gBAAa,SAAA,EAAU,oCAAA,EACrB,iBAAO,MAAA,CAAO,IAAA,EAAM,gBAAgB,CAAA,GAAI,IAAA,EAC3C,CAAA;AAEJ;AAMO,SAAS,gBAAA,CAAiB,EAAE,SAAA,EAAU,EAA0B;AACrE,EAAA,MAAM,IAAA,GAAO,OAAO,SAAS,CAAA;AAC7B,EAAA,uBACE,GAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAU,yCAAA,EACrB,iCACC,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,MAAA,CAAO,MAAM,SAAS,CAAA;AAAA,oBACvB,IAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,kBAAA,EAAmB,QAAA,EAAA;AAAA,MAAA,GAAA;AAAA,MAC/B,OAAO,IAAA,CAAK,eAAA,EAAiB,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG,CAAA;AAAA,MAAE,GAAA;AAAA,MAAE,MAAA,CAAO,MAAM,KAAK;AAAA,KAAA,EACxE;AAAA,GAAA,EACF,IACE,IAAA,EACN,CAAA;AAEJ;;AC/NA,SAAS,gBAAgB,IAAA,EAAkD;AACzE,EAAA,IAAI,IAAA,KAAS,MAAA,EAAW,OAAO,EAAE,KAAK,KAAA,EAAM;AAC5C,EAAA,IAAI,IAAA,KAAS,IAAA,IAAQ,IAAA,KAAS,KAAA,EAAO,OAAO,IAAA;AAE5C,EAAA,OAAO,EAAE,GAAA,EAAK,KAAA,EAAO,GAAG,IAAA,EAAK;AAC/B;AAUA,MAAM,kBAAA,GAAqB;AAAA,EACzB,UAAA;AAAA;AAAA,EAEA,oEAAA;AAAA,EACA,4DAAA;AAAA,EACA,6FAAA;AAAA,EACA,qFAAA;AAAA;AAAA,EAEA,sDAAA;AAAA,EACA,4DAAA;AAAA,EACA,+EAAA;AAAA,EACA,qFAAA;AAAA;AAAA;AAAA;AAAA,EAIA,oIAAA;AAAA,EACA,mKAAA;AAAA,EACA,sHAAA;AAAA,EACA,sHAAA;AAAA,EACA,gDAAA;AAAA,EACA,0DAAA;AAAA;AAAA;AAAA;AAAA,EAIA,sFAAA;AAAA,EACA,0DAAA;AAAA,EACA;AACF,CAAA;AAEA,MAAM,sBAAA,GAA0D;AAAA,EAC9D,OAAA,EAAS,kBAAA;AAAA,EACT,KAAA,EAAO;AACT,CAAA;AAIA,MAAM,yBAAA,GAA6D;AAAA,EACjE,OAAA,EAAS,aAAA;AAAA,EACT,KAAA,EAAO;AACT,CAAA;AAEA,MAAM,kBAAA,GAAkD;AAAA,EACtD,OAAA,EAAS,6BAAA;AAAA,EACT,SAAA,EAAW;AACb,CAAA;AAEO,SAAS,YAAA,CAAa;AAAA,EAC3B,QAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAA,GAAM,SAAA;AAAA,EACN,OAAA,GAAU,SAAA;AAAA,EACV,IAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAsB;AACpB,EAAA,MAAM,SAAA,GAA+B;AAAA,IACnC,wBAAA,EAA0B,0BAA0B,OAAO,CAAA;AAAA,IAC3D,mBAAA,EAAqB;AAAA,GACvB;AAIA,EAAA,MAAM,IAAA,GAAO,YAAA,CAA6B,EAAE,QAAA,EAAU,OAAO,CAAA;AAE7D,EAAA,MAAM,IAAA,mBACJ,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MAGC,SAAA,EAAW,GAAG,oBAAA,EAAsB,GAAG,oBAAoB,kBAAA,CAAmB,GAAG,CAAA,EAAG,IAAA,CAAK,kBAAkB,CAAA;AAAA,MAC3G,KAAA,EAAO,SAAA;AAAA,MACN,GAAG,IAAA,CAAK,iBAAA,CAAkB,EAAE,CAAA;AAAA,MAI7B,QAAA,kBAAA,GAAA,CAAC,cAAA,EAAA,EAAe,IAAA,EAAY,SAAA,EAAU,+BACnC,QAAA,EACH;AAAA;AAAA,GACF;AAOF,EAAA,uBACE,GAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACE,GAAG,KAAA;AAAA,MACJ,WAAA,EAAY,MAAA;AAAA,MACZ,IAAA,EAAM,gBAAgB,IAAI,CAAA;AAAA,MAC1B,WAAA,EAAa,SAAA;AAAA,MAMb,iBAAA,EAAkB,2BAAA;AAAA,MAClB,SAAA,EAAW,EAAA;AAAA,QACT,2DAAA;AAAA,QACA,uBAAuB,OAAO,CAAA;AAAA,QAC9B;AAAA,OACF;AAAA,MAEC,QAAA,EAAA;AAAA;AAAA,GACH;AAEJ;;ACxJO,MAAM,eAAA,GAAkB,UAAA;AAAA,EAC7B,CAAC,EAAE,QAAA,EAAU,SAAA,EAAW,IAAI,MAAA,EAAQ,GAAG,IAAA,EAAK,EAAG,GAAA,KAAQ;AACrD,IAAA,MAAM,YAAY,EAAA,IAAM,MAAA;AACxB,IAAA,MAAM,MAAA,GAAS,OAAO,QAAA,KAAa,QAAA,IAAY,OAAO,QAAA,KAAa,QAAA;AACnE,IAAA,uBACE,GAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,oHAAA;AAAA,UACA,WAAW,OAAA,IAAW,yBAAA;AAAA,UACtB,WAAW,OAAA,IAAW,yCAAA;AAAA,UACtB,WAAW,OAAA,IAAW,MAAA;AAAA,UACtB;AAAA,SACF;AAAA,QACC,GAAG,IAAA;AAAA,QAIH,mCAAS,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,kBAAA,EAAoB,UAAS,CAAA,GAAU;AAAA;AAAA,KACnE;AAAA,EAEJ;AACF;AAQO,SAAS,0BAAA,CAA2B,EAAE,QAAA,EAAU,OAAA,EAAS,WAAU,EAAoC;AAC5G,EAAA,4BACG,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,cAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,eAAA,EAAA,EAAgB,SAAA,EAAuB,UAAS,CAAA,EACnD,CAAA;AAAA,oBACA,GAAA,CAAC,kBAAgB,QAAA,EAAA,OAAA,EAAQ;AAAA,GAAA,EAC3B,CAAA;AAEJ;AAUA,MAAM,iBAAA,GAA+F;AAAA,EACnG,EAAA,EAAI,EAAE,IAAA,EAAM,uBAAA,EAAyB,MAAM,uBAAA,EAAwB;AAAA,EACnE,EAAA,EAAI,EAAE,IAAA,EAAM,uBAAA,EAAyB,MAAM,uBAAA,EAAwB;AAAA,EACnE,EAAA,EAAI,EAAE,IAAA,EAAM,uBAAA,EAAyB,MAAM,uBAAA,EAAwB;AAAA,EACnE,EAAA,EAAI,EAAE,IAAA,EAAM,uBAAA,EAAyB,MAAM,uBAAA,EAAwB;AAAA,EACnE,KAAA,EAAO,EAAE,IAAA,EAAM,wBAAA,EAA0B,MAAM,wBAAA;AACjD,CAAA;AAEO,SAAS,oBAAA,CAAqB;AAAA,EACnC,IAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA,GAAa,KAAA;AAAA,EACb;AACF,CAAA,EAA8B;AAC5B,EAAA,MAAM,WAAA,GAAc,OAAA,KAAY,OAAO,IAAA,KAAS,WAAW,IAAA,GAAO,MAAA,CAAA;AAClE,EAAA,MAAM,EAAA,GAAK,kBAAkB,UAAU,CAAA;AAEvC,EAAA,MAAM,0BACJ,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,UAAK,SAAA,EAAW,EAAA,CAAG,sBAAsB,EAAA,CAAG,IAAI,GAAI,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,oBAC1D,GAAA,CAAC,UAAK,SAAA,EAAW,EAAA,CAAG,sBAAsB,EAAA,CAAG,IAAI,GAAI,QAAA,EAAA,KAAA,EAAM;AAAA,GAAA,EAC7D,CAAA;AAGF,EAAA,IAAI,WAAA,EAAa;AACf,IAAA,uBACE,GAAA,CAAC,8BAA2B,OAAA,EAAS,WAAA,EAAa,WAAW,EAAA,CAAG,2BAAA,EAA6B,SAAS,CAAA,EACnG,QAAA,EAAA,OAAA,EACH,CAAA;AAAA,EAEJ;AAEA,EAAA,2BAAQ,eAAA,EAAA,EAAgB,SAAA,EAAW,GAAG,2BAAA,EAA6B,SAAS,GAAI,QAAA,EAAA,OAAA,EAAQ,CAAA;AAC1F;AAUO,SAAS,sBAAsB,EAAE,OAAA,EAAS,QAAA,EAAU,GAAG,MAAK,EAA+B;AAChG,EAAA,uBACE,GAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,EAAA,EAAG,OAAA;AAAA,MACH,SAAA,EAAU,+DAAA;AAAA,MACV,OAAA,EAAS,CAAA,CAAA,KAAK,CAAA,CAAE,eAAA,EAAgB;AAAA,MAEhC,QAAA,kBAAA,GAAA,CAAC,QAAA,EAAA,EAAS,OAAA,EAAkB,eAAA,EAAiB,MAAM,UAAS,EAAG,YAAA,EAAY,IAAA,CAAK,YAAY,CAAA,EAAG;AAAA;AAAA,GACjG;AAEJ;;AC9GO,SAAS,YAAY,EAAE,QAAA,EAAU,WAAW,cAAA,EAAgB,GAAG,OAAM,EAAqB;AAC/F,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,qGAAA;AAAA,QACA,cAAA,IAAkB,aAAA;AAAA,QAClB;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ;;;;"}
@@ -21,7 +21,7 @@ const dataListRowStateStyles = [
21
21
  "active:bg-fill",
22
22
  "focus-visible:bg-surface-panel has-focus-visible:bg-surface-panel",
23
23
  "data-featured:before:bg-surface-panel has-data-featured:before:bg-surface-panel has-data-selected:before:bg-surface-panel",
24
- "data-[variant=error]:bg-notice-destructive/10 has-data-[variant=error]:bg-notice-destructive/10"
24
+ "data-[variant=error]:bg-notice-destructive/10 has-data-[variant=error]:bg-notice-destructive/10 data-[variant=error]:active:bg-notice-destructive/20 has-data-[variant=error]:active:bg-notice-destructive/20"
25
25
  ];
26
26
  const dataListRowInteractiveStyles = [
27
27
  "grid grid-cols-subgrid gap-4 px-3 cursor-pointer",
@@ -389,4 +389,4 @@ exports.dataListRowStateStyles = dataListRowStateStyles;
389
389
  exports.dataListRowStaticStyles = dataListRowStaticStyles;
390
390
  exports.dataListRowStyles = dataListRowStyles;
391
391
  exports.splitColumns = splitColumns;
392
- //# sourceMappingURL=data-list-top-B-gb-FY6.cjs.map
392
+ //# sourceMappingURL=data-list-top-WGUY167p.cjs.map