@pstdio/ui 0.15.0 → 0.17.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.
- package/dist/{MermaidComponent-DBJsTOmj.js → MermaidComponent-BCMQqPqu.js} +11 -11
- package/dist/{MermaidComponent-DBJsTOmj.js.map → MermaidComponent-BCMQqPqu.js.map} +1 -1
- package/dist/browser-storage-BinyFNJX.js +40 -0
- package/dist/browser-storage-BinyFNJX.js.map +1 -0
- package/dist/chat-ui.js +1832 -1275
- package/dist/chat-ui.js.map +1 -1
- package/dist/checkbox-B2zYVemL.js +70 -0
- package/dist/checkbox-B2zYVemL.js.map +1 -0
- package/dist/components/chat-ui/components/ai-conversation.d.ts +1 -1
- package/dist/components/chat-ui/components/ai-message.d.ts +1 -1
- package/dist/components/chat-ui/components/ai-response.d.ts +0 -1
- package/dist/components/chat-ui/components/attachment-list.d.ts +1 -1
- package/dist/components/chat-ui/components/auto-scroll.d.ts +27 -0
- package/dist/components/chat-ui/components/chat-input-actions.d.ts +1 -0
- package/dist/components/chat-ui/components/chat-input.d.ts +8 -2
- package/dist/components/chat-ui/components/chat-message-animation.d.ts +22 -0
- package/dist/components/chat-ui/components/chat-panel.d.ts +11 -5
- package/dist/components/chat-ui/components/composer-constants.d.ts +1 -0
- package/dist/components/chat-ui/components/conversation-browse.d.ts +22 -0
- package/dist/components/chat-ui/components/message-types.d.ts +14 -0
- package/dist/components/chat-ui/components/queued-follow-up-list-state.d.ts +4 -0
- package/dist/components/chat-ui/components/queued-follow-up-list.d.ts +11 -0
- package/dist/components/chat-ui/components/timeline.d.ts +5 -2
- package/dist/components/chat-ui/components/working-indicator.d.ts +9 -0
- package/dist/components/chat-ui/components/workspace-hub.d.ts +8 -1
- package/dist/components/chat-ui/index.d.ts +4 -2
- package/dist/components/chat-ui/performance/chat-performance-fixtures.d.ts +0 -1
- package/dist/components/chat-ui/tool-rendering/build-timeline.d.ts +4 -14
- package/dist/components/chat-ui/tool-rendering/question-prompt.d.ts +9 -0
- package/dist/components/chat-ui/tool-rendering/shared.d.ts +1 -1
- package/dist/components/chat-ui/tool-rendering/types.d.ts +1 -2
- package/dist/components/command-palette/index.d.ts +4 -0
- package/dist/components/data-table/build-columns.d.ts +13 -2
- package/dist/components/data-table/categorical-color-cell.d.ts +8 -0
- package/dist/components/data-table/color-cell-style.d.ts +13 -0
- package/dist/components/data-table/color-scale-cell.d.ts +7 -0
- package/dist/components/data-table/data-table-column-menu.d.ts +12 -0
- package/dist/components/data-table/data-table-header.d.ts +18 -0
- package/dist/components/data-table/data-table-stat-chart.d.ts +21 -0
- package/dist/components/data-table/data-table-state.d.ts +27 -0
- package/dist/components/data-table/data-table-stats-row.d.ts +11 -0
- package/dist/components/data-table/data-table-stats.d.ts +19 -0
- package/dist/components/data-table/data-table-table-parts.d.ts +21 -0
- package/dist/components/data-table/data-table.story-descriptions.d.ts +6 -0
- package/dist/components/data-table/data-table.story-fixtures.d.ts +6 -0
- package/dist/components/data-table/friendly-json-display.d.ts +31 -0
- package/dist/components/data-table/index.d.ts +3 -1
- package/dist/components/data-table/json-cell.d.ts +6 -0
- package/dist/components/data-table/pagination-footer.d.ts +4 -1
- package/dist/components/data-table/selection-toolbar.d.ts +3 -1
- package/dist/components/data-table/types.d.ts +72 -0
- package/dist/components/diff-viewer/diff-card.d.ts +1 -0
- package/dist/components/diff-viewer/diff-drawer-scroll.d.ts +0 -19
- package/dist/components/diff-viewer/diff-drawer.d.ts +1 -0
- package/dist/components/diff-viewer/index.d.ts +2 -0
- package/dist/components/diff-viewer/use-selected-diff-scroll.d.ts +7 -3
- package/dist/components/internal/style-guide.d.ts +14 -0
- package/dist/components/internal/token-editor-controls.d.ts +8 -0
- package/dist/components/internal/token-editor-data.d.ts +40 -0
- package/dist/components/internal/token-editor-state.d.ts +22 -0
- package/dist/components/{data-renderer → kanban-renderer}/display-menu.d.ts +4 -4
- package/dist/components/{data-renderer → kanban-renderer}/filter-menu.d.ts +3 -3
- package/dist/components/kanban-renderer/index.d.ts +19 -0
- package/dist/components/kanban-renderer/kanban-renderer-attribute-badge.d.ts +7 -0
- package/dist/components/{data-renderer/data-renderer-board-column-header.d.ts → kanban-renderer/kanban-renderer-board-column-header.d.ts} +2 -2
- package/dist/components/{data-renderer/data-renderer-board-group-section.d.ts → kanban-renderer/kanban-renderer-board-group-section.d.ts} +2 -2
- package/dist/components/{data-renderer/data-renderer-board-move.d.ts → kanban-renderer/kanban-renderer-board-move.d.ts} +3 -3
- package/dist/components/{data-renderer/data-renderer-board.d.ts → kanban-renderer/kanban-renderer-board.d.ts} +16 -15
- package/dist/components/{data-renderer/data-renderer-card.d.ts → kanban-renderer/kanban-renderer-card.d.ts} +5 -4
- package/dist/components/{data-renderer/data-renderer-content.d.ts → kanban-renderer/kanban-renderer-content.d.ts} +8 -8
- package/dist/components/kanban-renderer/kanban-renderer-create-dialog.d.ts +12 -0
- package/dist/components/kanban-renderer/kanban-renderer-create-field.d.ts +10 -0
- package/dist/components/kanban-renderer/kanban-renderer-grouping.d.ts +23 -0
- package/dist/components/{data-renderer/data-renderer-helpers.d.ts → kanban-renderer/kanban-renderer-helpers.d.ts} +15 -15
- package/dist/components/kanban-renderer/kanban-renderer-list-items.d.ts +25 -0
- package/dist/components/kanban-renderer/kanban-renderer-list.d.ts +43 -0
- package/dist/components/{data-renderer/data-renderer-story-fixtures.d.ts → kanban-renderer/kanban-renderer-story-fixtures.d.ts} +3 -2
- package/dist/components/kanban-renderer/kanban-renderer-toolbar.d.ts +15 -0
- package/dist/components/kanban-renderer/kanban-renderer-view-bar.d.ts +14 -0
- package/dist/components/kanban-renderer/kanban-renderer-views.d.ts +12 -0
- package/dist/components/{data-renderer/data-renderer.d.ts → kanban-renderer/kanban-renderer.d.ts} +12 -9
- package/dist/components/{data-renderer → kanban-renderer}/types.d.ts +51 -14
- package/dist/components/kanban-renderer/use-kanban-renderer-store.d.ts +78 -0
- package/dist/components/layout/index.d.ts +7 -0
- package/dist/components/layout/panel-header.constants.d.ts +3 -0
- package/dist/components/{resizable-split-layout.d.ts → layout/resizable-split-layout.d.ts} +3 -2
- package/dist/components/layout/resizable-split-layout.geometry.d.ts +56 -0
- package/dist/components/{resizable-split-layout.handle.d.ts → layout/resizable-split-layout.handle.d.ts} +6 -2
- package/dist/components/layout/resizable-split-layout.panels.d.ts +25 -0
- package/dist/components/list-row/list-row-actions.d.ts +1 -0
- package/dist/components/list-row/list-row-content.d.ts +7 -0
- package/dist/components/list-row/list-row.types.d.ts +4 -1
- package/dist/components/overlays/attached-menu.d.ts +6 -0
- package/dist/components/overlays/attachment-chip.d.ts +13 -0
- package/dist/components/overlays/index.d.ts +16 -0
- package/dist/components/{resource-context-menu.d.ts → overlays/resource-context-menu.d.ts} +13 -1
- package/dist/components/{search-modal-content.d.ts → overlays/search-modal-content.d.ts} +1 -1
- package/dist/components/{searchable-menu.d.ts → overlays/searchable-menu.d.ts} +1 -1
- package/dist/components/param-editor/index.d.ts +24 -0
- package/dist/components/param-editor/inputs/action-input.d.ts +13 -0
- package/dist/components/param-editor/inputs/anchor-grid-input.d.ts +12 -0
- package/dist/components/param-editor/inputs/anchor-grid.d.ts +4 -0
- package/dist/components/param-editor/inputs/file-accept.d.ts +22 -0
- package/dist/components/param-editor/inputs/file-drop-input.d.ts +14 -0
- package/dist/components/param-editor/inputs/numeric-value.d.ts +6 -0
- package/dist/components/param-editor/inputs/range-input.d.ts +17 -0
- package/dist/components/param-editor/inputs/range-value.d.ts +5 -0
- package/dist/components/param-editor/inputs/resource-input-chips.d.ts +15 -0
- package/dist/components/param-editor/inputs/resource-input.d.ts +18 -0
- package/dist/components/param-editor/inputs/segmented-input.d.ts +14 -0
- package/dist/components/param-editor/{selection-input.d.ts → inputs/selection-input.d.ts} +6 -6
- package/dist/components/param-editor/inputs/selection-menu.d.ts +29 -0
- package/dist/components/param-editor/inputs/slider-marks.d.ts +5 -0
- package/dist/components/param-editor/inputs/vector-input.d.ts +17 -0
- package/dist/components/param-editor/inputs/vector-value.d.ts +7 -0
- package/dist/components/param-editor/param-editor-control-item.d.ts +15 -0
- package/dist/components/param-editor/param-editor-control-list.d.ts +5 -0
- package/dist/components/param-editor/param-editor-field-label.d.ts +1 -0
- package/dist/components/param-editor/param-editor-field.d.ts +11 -0
- package/dist/components/param-editor/param-editor-horizontal.d.ts +1 -0
- package/dist/components/param-editor/param-editor-inline-group.d.ts +5 -0
- package/dist/components/param-editor/param-editor-read-only-field.d.ts +9 -0
- package/dist/components/param-editor/param-editor-section.d.ts +17 -0
- package/dist/components/param-editor/param-editor.d.ts +3 -1
- package/dist/components/param-editor/param-editor.types.d.ts +135 -24
- package/dist/components/{breadcrumb.d.ts → primitives/breadcrumb.d.ts} +1 -1
- package/dist/components/primitives/index.d.ts +28 -0
- package/dist/components/{number-input.d.ts → primitives/number-input.d.ts} +0 -2
- package/dist/components/{session-indicator.d.ts → primitives/session-indicator.d.ts} +2 -1
- package/dist/components/{tooltip.d.ts → primitives/tooltip.d.ts} +0 -1
- package/dist/components/rich-text/prompt-input/commands.d.ts +0 -17
- package/dist/components/rich-text/prompt-input/events.d.ts +0 -13
- package/dist/components/rich-text/prompt-input/plugins/CommentPlugin/nodes/CommentNode/CommentNode.d.ts +1 -2
- package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/ReferenceMenuPlugin.d.ts +2 -1
- package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/hooks/useContextLookup.d.ts +2 -1
- package/dist/components/rich-text/prompt-input/plugins/ReferencePlugin/ReferencePlugin.d.ts +2 -1
- package/dist/components/rich-text/prompt-input/plugins/ReferencePlugin/nodes/ReferenceNode/ReferenceNode.d.ts +1 -2
- package/dist/components/rich-text/prompt-input/prompt-input.d.ts +3 -2
- package/dist/components/rich-text/prompt-input/utils.d.ts +1 -2
- package/dist/components/rich-text/shared/plugins/MermaidPlugin/MermaidNode.d.ts +0 -1
- package/dist/components/rich-text/types.d.ts +1 -1
- package/dist/components/rich-text/utils/inferResourceType.d.ts +1 -1
- package/dist/components/{sidebar/sidebar-footer.d.ts → sidenav/sidenav-footer.d.ts} +2 -2
- package/dist/components/{sidebar/sidebar-header.d.ts → sidenav/sidenav-header.d.ts} +2 -2
- package/dist/components/sidenav/sidenav.d.ts +2 -0
- package/dist/components/sidenav/sidenav.store.d.ts +49 -0
- package/dist/components/{sidebar/sidebar.types.d.ts → sidenav/sidenav.types.d.ts} +6 -6
- package/dist/components/tab-strip/tab-visibility-filter.d.ts +2 -1
- package/dist/components/tag-editor/tag-editor-row.d.ts +1 -1
- package/dist/components/tag-editor/tag-editor.types.d.ts +1 -1
- package/dist/components/terminal/bind-session.d.ts +33 -0
- package/dist/components/terminal/index.d.ts +6 -0
- package/dist/components/terminal/scripted-bridge.d.ts +35 -0
- package/dist/components/terminal/terminal-contract.d.ts +22 -0
- package/dist/components/terminal/terminal-theme.d.ts +12 -0
- package/dist/components/terminal/terminal.d.ts +56 -0
- package/dist/components/terminal/types.d.ts +35 -0
- package/dist/components/terminal/use-terminal-session.d.ts +21 -0
- package/dist/components/tree-list/tree-list-order-filter.d.ts +1 -2
- package/dist/components/tree-list/tree-list-visibility-filter.d.ts +1 -2
- package/dist/components/tree-list/tree-list.d.ts +2 -2
- package/dist/components/tree-list/tree-list.types.d.ts +4 -0
- package/dist/data-table.js +1271 -0
- package/dist/data-table.js.map +1 -0
- package/dist/diff-editor-BnfV8cYB.js +182 -0
- package/dist/diff-editor-BnfV8cYB.js.map +1 -0
- package/dist/diff.js +1313 -0
- package/dist/diff.js.map +1 -0
- package/dist/empty-state-Bo4HVrgr.js +34 -0
- package/dist/empty-state-Bo4HVrgr.js.map +1 -0
- package/dist/foundations/gallery/gallery-frame.d.ts +21 -0
- package/dist/foundations/gallery/sections/badges-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/buttons-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/composite-chat-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/composites-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/feedback-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/input-authoring-card.d.ts +1 -0
- package/dist/foundations/gallery/sections/inputs-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/layout-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/navigation-identity-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/overlays-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/panels-section.d.ts +1 -0
- package/dist/foundations/gallery/sections/param-editor-composite-card.d.ts +1 -0
- package/dist/foundations/gallery/sections/settings-composite-cards.d.ts +1 -0
- package/dist/index.d.ts +14 -87
- package/dist/index.js +2027 -7501
- package/dist/index.js.map +1 -1
- package/dist/kanban-renderer-toolbar-B9ro-9z1.js +1318 -0
- package/dist/kanban-renderer-toolbar-B9ro-9z1.js.map +1 -0
- package/dist/kanban-renderer.js +1087 -0
- package/dist/kanban-renderer.js.map +1 -0
- package/dist/list-row-YRUxEcy3.js +808 -0
- package/dist/list-row-YRUxEcy3.js.map +1 -0
- package/dist/mermaid-renderer-DZo3qj6D.js +425 -0
- package/dist/mermaid-renderer-DZo3qj6D.js.map +1 -0
- package/dist/mermaid.js +5 -0
- package/dist/mermaid.js.map +1 -0
- package/dist/param-editor-CYZJbmKu.js +933 -0
- package/dist/param-editor-CYZJbmKu.js.map +1 -0
- package/dist/param-editor-read-only-field-DgtLqcFa.js +925 -0
- package/dist/param-editor-read-only-field-DgtLqcFa.js.map +1 -0
- package/dist/prism-BXb57lxL.js +125 -0
- package/dist/prism-BXb57lxL.js.map +1 -0
- package/dist/radio-cLMEBBZk.js +76 -0
- package/dist/radio-cLMEBBZk.js.map +1 -0
- package/dist/resource-badge-qCWHP-wQ.js +99 -0
- package/dist/resource-badge-qCWHP-wQ.js.map +1 -0
- package/dist/{rich-message-DNSEhxXh.js → rich-message-DBf_5YlW.js} +462 -481
- package/dist/rich-message-DBf_5YlW.js.map +1 -0
- package/dist/rich-text.js +300 -299
- package/dist/rich-text.js.map +1 -1
- package/dist/scroll-area-BMbg1WcD.js +91 -0
- package/dist/scroll-area-BMbg1WcD.js.map +1 -0
- package/dist/style.css +1 -1
- package/dist/terminal.js +359 -0
- package/dist/terminal.js.map +1 -0
- package/dist/theme/global.d.ts +3 -0
- package/dist/theme/primitives/sizes.d.ts +23 -0
- package/dist/theme/recipes/badge.d.ts +50 -0
- package/dist/theme/recipes/button.d.ts +30 -19
- package/dist/theme/recipes/color-picker.d.ts +1 -0
- package/dist/theme/recipes/dialog.d.ts +1 -1
- package/dist/theme/recipes/drawer.d.ts +1 -1
- package/dist/theme/recipes/input.d.ts +55 -0
- package/dist/theme/recipes/number-input.d.ts +98 -0
- package/dist/theme/recipes/tabs.d.ts +49 -28
- package/dist/theme/recipes/textarea.d.ts +62 -1
- package/dist/theme/recipes/timeline.d.ts +74 -0
- package/dist/theme/tokens/borders.d.ts +0 -3
- package/dist/theme/tokens/colors.d.ts +118 -94
- package/dist/{theme-25P7ij4C.js → theme-CNhnbvcE.js} +1300 -375
- package/dist/theme-CNhnbvcE.js.map +1 -0
- package/dist/theme-preference-DOzHx64J.js +123 -0
- package/dist/theme-preference-DOzHx64J.js.map +1 -0
- package/dist/theme.js +1 -1
- package/dist/tree-list-CZHLAURU.js +1033 -0
- package/dist/tree-list-CZHLAURU.js.map +1 -0
- package/package.json +29 -3
- package/dist/components/data-renderer/card-interaction-guard.d.ts +0 -2
- package/dist/components/data-renderer/data-renderer-attribute-badge.d.ts +0 -7
- package/dist/components/data-renderer/data-renderer-grouping.d.ts +0 -23
- package/dist/components/data-renderer/data-renderer-list.d.ts +0 -39
- package/dist/components/data-renderer/data-renderer-toolbar.d.ts +0 -12
- package/dist/components/data-renderer/use-data-renderer-store.d.ts +0 -59
- package/dist/components/file-tree-helpers.d.ts +0 -8
- package/dist/components/open-source-notices-screen.d.ts +0 -20
- package/dist/components/panel-header.constants.d.ts +0 -1
- package/dist/components/param-editor/input-group.d.ts +0 -10
- package/dist/components/rich-text/shared/plugins/MermaidPlugin/index.d.ts +0 -1
- package/dist/components/rich-text/shared/plugins/TableActionMenuPlugin/TableActionMenuPlugin.d.ts +0 -5
- package/dist/components/rich-text/shared/plugins/TableCellResizerPlugin/TableCellResizerPlugin.d.ts +0 -2
- package/dist/components/rich-text/theme/report-theme.d.ts +0 -3
- package/dist/components/sidebar/sidebar.d.ts +0 -2
- package/dist/components/sidebar/sidebar.store.d.ts +0 -49
- package/dist/components/style-guide-data.d.ts +0 -40
- package/dist/components/style-guide.d.ts +0 -1
- package/dist/mermaid-renderer-CPGj6vsb.js +0 -570
- package/dist/mermaid-renderer-CPGj6vsb.js.map +0 -1
- package/dist/radio-DJtQY9po.js +0 -286
- package/dist/radio-DJtQY9po.js.map +0 -1
- package/dist/resource-badge-CeJTOn8F.js +0 -188
- package/dist/resource-badge-CeJTOn8F.js.map +0 -1
- package/dist/rich-message-DNSEhxXh.js.map +0 -1
- package/dist/theme-25P7ij4C.js.map +0 -1
- package/dist/utils/formats.d.ts +0 -7
- /package/dist/components/{palette-filter.d.ts → command-palette/palette-filter.d.ts} +0 -0
- /package/dist/components/{palette-list.d.ts → command-palette/palette-list.d.ts} +0 -0
- /package/dist/components/{palette-shortcut.d.ts → command-palette/palette-shortcut.d.ts} +0 -0
- /package/dist/components/{palette.d.ts → command-palette/palette.d.ts} +0 -0
- /package/dist/components/{code-editor.d.ts → diff-viewer/code-editor.d.ts} +0 -0
- /package/dist/components/{column-file-browser.d.ts → file-browser/column-file-browser.d.ts} +0 -0
- /package/dist/components/{performance-panel.d.ts → internal/performance-panel.d.ts} +0 -0
- /package/dist/components/{data-renderer/data-renderer-badge-helpers.d.ts → kanban-renderer/kanban-renderer-badge-helpers.d.ts} +0 -0
- /package/dist/components/{data-renderer/data-renderer-enum-helpers.d.ts → kanban-renderer/kanban-renderer-enum-helpers.d.ts} +0 -0
- /package/dist/components/{data-renderer → kanban-renderer}/use-resolved-attributes.d.ts +0 -0
- /package/dist/components/{header.d.ts → layout/header.d.ts} +0 -0
- /package/dist/components/{horizontal-menu-stack.d.ts → layout/horizontal-menu-stack.d.ts} +0 -0
- /package/dist/components/{item-section.d.ts → layout/item-section.d.ts} +0 -0
- /package/dist/components/{attached-panel.d.ts → overlays/attached-panel.d.ts} +0 -0
- /package/dist/components/{bubble-button.d.ts → overlays/bubble-button.d.ts} +0 -0
- /package/dist/components/{bubble-panel.d.ts → overlays/bubble-panel.d.ts} +0 -0
- /package/dist/components/{delete-confirmation-modal.d.ts → overlays/delete-confirmation-modal.d.ts} +0 -0
- /package/dist/components/{repo-picker-dialog.d.ts → overlays/repo-picker-dialog.d.ts} +0 -0
- /package/dist/components/param-editor/{color-input.d.ts → inputs/color-input.d.ts} +0 -0
- /package/dist/components/param-editor/{date-input.d.ts → inputs/date-input.d.ts} +0 -0
- /package/dist/components/param-editor/{horizontal-text-input.d.ts → inputs/horizontal-text-input.d.ts} +0 -0
- /package/dist/components/param-editor/{number-input.d.ts → inputs/number-input.d.ts} +0 -0
- /package/dist/components/param-editor/{text-input.d.ts → inputs/text-input.d.ts} +0 -0
- /package/dist/components/{alert.d.ts → primitives/alert.d.ts} +0 -0
- /package/dist/components/{checkbox.d.ts → primitives/checkbox.d.ts} +0 -0
- /package/dist/components/{content-placeholder.d.ts → primitives/content-placeholder.d.ts} +0 -0
- /package/dist/components/{empty-state.d.ts → primitives/empty-state.d.ts} +0 -0
- /package/dist/components/{error-boundary.d.ts → primitives/error-boundary.d.ts} +0 -0
- /package/dist/components/{icon-color-picker.d.ts → primitives/icon-color-picker.d.ts} +0 -0
- /package/dist/components/{info-card.d.ts → primitives/info-card.d.ts} +0 -0
- /package/dist/components/{integration-card.d.ts → primitives/integration-card.d.ts} +0 -0
- /package/dist/components/{radio.d.ts → primitives/radio.d.ts} +0 -0
- /package/dist/components/{resource-badge.d.ts → primitives/resource-badge.d.ts} +0 -0
- /package/dist/components/{scroll-area.d.ts → primitives/scroll-area.d.ts} +0 -0
- /package/dist/components/{simple-card.d.ts → primitives/simple-card.d.ts} +0 -0
- /package/dist/components/{slider.d.ts → primitives/slider.d.ts} +0 -0
- /package/dist/components/{switch.d.ts → primitives/switch.d.ts} +0 -0
- /package/dist/components/{toaster.d.ts → primitives/toaster.d.ts} +0 -0
- /package/dist/components/{workspace-badge.d.ts → primitives/workspace-badge.d.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-table.js","sources":["../src/components/data-table/categorical-color-cell.tsx","../src/components/data-table/color-cell-style.ts","../src/components/data-table/color-scale-cell.tsx","../src/components/data-table/helpers.tsx","../src/components/data-table/friendly-json-display.tsx","../src/components/data-table/json-cell.tsx","../src/components/data-table/build-columns.tsx","../src/components/data-table/data-table-column-menu.tsx","../src/components/data-table/selection-toolbar.tsx","../src/components/data-table/data-table-header.tsx","../src/components/data-table/data-table-state.ts","../src/components/data-table/data-table-stat-chart.tsx","../src/components/data-table/data-table-stats.ts","../src/components/data-table/data-table-stats-row.tsx","../src/components/data-table/data-table-table-parts.tsx","../src/components/data-table/pagination-footer.tsx","../src/components/data-table/data-table.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport type { DataTableCategoricalColor } from \"./types\";\n\ninterface CategoricalColorCellProps {\n children: ReactNode;\n}\n\nexport const resolveCategoricalColor = (value: unknown, categories: DataTableCategoricalColor[]) => {\n return categories.find((category) => Object.is(category.value, value))?.color ?? null;\n};\n\nexport const CategoricalColorCell = (props: CategoricalColorCellProps) => {\n const { children } = props;\n\n return children;\n};\n","import type { DataTableThemeColor } from \"./types\";\n\ninterface RgbColor {\n r: number;\n g: number;\n b: number;\n}\n\nconst darkTextColor = \"#111827\";\nconst lightTextColor = \"#ffffff\";\nconst darkColorTarget = \"#000000\";\nconst readableContrastRatio = 4.5;\n\nconst expandShortHex = (hex: string) =>\n hex\n .split(\"\")\n .map((character) => character + character)\n .join(\"\");\n\nexport const parseHexColor = (color: string) => {\n const normalized = color.trim();\n const hex = normalized.startsWith(\"#\") ? normalized.slice(1) : normalized;\n const expandedHex = hex.length === 3 ? expandShortHex(hex) : hex;\n if (!/^[\\da-f]{6}$/i.test(expandedHex)) return null;\n\n return {\n r: Number.parseInt(expandedHex.slice(0, 2), 16),\n g: Number.parseInt(expandedHex.slice(2, 4), 16),\n b: Number.parseInt(expandedHex.slice(4, 6), 16),\n };\n};\n\nconst toLinearChannel = (channel: number) => {\n const normalized = channel / 255;\n return normalized <= 0.03928 ? normalized / 12.92 : ((normalized + 0.055) / 1.055) ** 2.4;\n};\n\nconst relativeLuminance = (color: RgbColor) =>\n 0.2126 * toLinearChannel(color.r) + 0.7152 * toLinearChannel(color.g) + 0.0722 * toLinearChannel(color.b);\n\nconst contrastRatio = (foreground: RgbColor, background: RgbColor) => {\n const foregroundLuminance = relativeLuminance(foreground);\n const backgroundLuminance = relativeLuminance(background);\n const lighter = Math.max(foregroundLuminance, backgroundLuminance);\n const darker = Math.min(foregroundLuminance, backgroundLuminance);\n return (lighter + 0.05) / (darker + 0.05);\n};\n\nconst toHexColor = (color: RgbColor) => {\n const toHexChannel = (channel: number) => Math.round(channel).toString(16).padStart(2, \"0\");\n return `#${toHexChannel(color.r)}${toHexChannel(color.g)}${toHexChannel(color.b)}`;\n};\n\nconst mixRgbColors = (start: RgbColor, end: RgbColor, endWeight: number) => ({\n r: start.r * (1 - endWeight) + end.r * endWeight,\n g: start.g * (1 - endWeight) + end.g * endWeight,\n b: start.b * (1 - endWeight) + end.b * endWeight,\n});\n\nexport const contrastRatioForHexColors = (foregroundColor: string, backgroundColor: string) => {\n const foreground = parseHexColor(foregroundColor);\n const background = parseHexColor(backgroundColor);\n if (!foreground || !background) return 0;\n return contrastRatio(foreground, background);\n};\n\nconst findMatchingForeground = (background: RgbColor, target: RgbColor) => {\n for (let step = 1; step <= 50; step += 1) {\n const candidate = mixRgbColors(background, target, step / 50);\n if (contrastRatio(candidate, background) >= readableContrastRatio) {\n return { color: toHexColor(candidate), step };\n }\n }\n\n return { color: toHexColor(target), step: 50 };\n};\n\nexport const resolveReadableTextColor = (backgroundColor: string) => {\n const background = parseHexColor(backgroundColor);\n if (!background) return darkTextColor;\n\n const darkText = parseHexColor(darkColorTarget)!;\n const lightText = parseHexColor(lightTextColor)!;\n const darkerMatch = findMatchingForeground(background, darkText);\n const lighterMatch = findMatchingForeground(background, lightText);\n\n return darkerMatch.step <= lighterMatch.step ? darkerMatch.color : lighterMatch.color;\n};\n\nexport const mixHexColors = (startColor: string, endColor: string, startWeight: number) => {\n const start = parseHexColor(startColor);\n const end = parseHexColor(endColor);\n if (!start || !end) return null;\n\n return toHexColor(mixRgbColors(start, end, 1 - startWeight));\n};\n\nexport const resolveColorCellStyle = (color: DataTableThemeColor) => {\n const lightForeground = color.foreground?.light ?? resolveReadableTextColor(color.light);\n const darkForeground = color.foreground?.dark ?? resolveReadableTextColor(color.dark);\n\n return {\n backgroundColor: `light-dark(${color.light}, ${color.dark})`,\n color: `light-dark(${lightForeground}, ${darkForeground})`,\n };\n};\n","import { Text } from \"@chakra-ui/react\";\nimport { mixHexColors } from \"./color-cell-style\";\nimport type { DataTableColorScaleStop, DataTableThemeColor } from \"./types\";\n\ninterface ColorScaleCellProps {\n value: number;\n}\n\nconst toDisplayPercent = (value: number) => Math.round(value * 100) / 100;\n\nconst mixColors = (startColor: string, endColor: string, startWeight: number) => {\n const mixedColor = mixHexColors(startColor, endColor, startWeight);\n if (mixedColor) return mixedColor;\n\n return `color-mix(in srgb, ${startColor} ${toDisplayPercent(startWeight * 100)}%, ${endColor})`;\n};\n\nconst mixThemeColors = (start: DataTableThemeColor, end: DataTableThemeColor, startWeight: number) => {\n const foreground =\n start.foreground && end.foreground\n ? {\n light: mixColors(start.foreground.light, end.foreground.light, startWeight),\n dark: mixColors(start.foreground.dark, end.foreground.dark, startWeight),\n }\n : undefined;\n\n return {\n light: mixColors(start.light, end.light, startWeight),\n dark: mixColors(start.dark, end.dark, startWeight),\n ...(foreground ? { foreground } : {}),\n };\n};\n\nexport const resolveColorScaleValue = (value: unknown, stops: DataTableColorScaleStop[]) => {\n if (typeof value !== \"number\" || !Number.isFinite(value) || stops.length < 2) return null;\n\n const firstStop = stops[0]!;\n const lastStop = stops[stops.length - 1]!;\n const range = lastStop.value - firstStop.value;\n if (range <= 0) return null;\n\n if (value <= firstStop.value) return firstStop.color;\n if (value >= lastStop.value) return lastStop.color;\n\n const endIndex = stops.findIndex((stop) => value <= stop.value);\n const startStop = stops[endIndex - 1]!;\n const endStop = stops[endIndex]!;\n const segmentProgress = (value - startStop.value) / (endStop.value - startStop.value);\n const startWeight = 1 - segmentProgress;\n return mixThemeColors(startStop.color, endStop.color, startWeight);\n};\n\nexport const ColorScaleCell = (props: ColorScaleCellProps) => {\n const { value } = props;\n\n return (\n <Text textStyle=\"paragraph/S/medium\" fontVariantNumeric=\"tabular-nums\" truncate>\n {value}\n </Text>\n );\n};\n","import { Icon as ChakraIcon } from \"@chakra-ui/react\";\nimport { createColumnHelper } from \"@tanstack/react-table\";\nimport { CalendarClock, CheckCircle2, Hash, Type } from \"lucide-react\";\nimport { isValidElement, type ReactElement, type ReactNode } from \"react\";\n\nimport type { ColumnType, DisplayValue, RowData } from \"./types\";\n\nexport const isDisplayValue = (value: unknown): value is DisplayValue =>\n typeof value === \"object\" && value !== null && \"display\" in value;\n\nexport const isString = (v: unknown): v is string => typeof v === \"string\" || v instanceof String;\nexport const isNumber = (v: unknown): v is number => typeof v === \"number\" || v instanceof Number;\nexport const isBoolean = (v: unknown): v is boolean => typeof v === \"boolean\" || v instanceof Boolean;\n\nexport const getType = (values: unknown[]): ColumnType => {\n const comparableValues = values\n .map((value) => {\n if (isDisplayValue(value)) return value.sortValue ?? null;\n if (value instanceof String || value instanceof Number || value instanceof Boolean) return value.valueOf();\n if (isValidElement(value)) return null;\n return value;\n })\n .filter((value) => value !== null && value !== undefined);\n\n if (comparableValues.length === 0) return \"unknown\";\n if (comparableValues.every((v) => isString(v) && !Number.isNaN(Date.parse(v.toString())))) return \"date\";\n if (comparableValues.every((v) => isNumber(v))) return \"number\";\n if (comparableValues.every((v) => isBoolean(v))) return \"boolean\";\n if (comparableValues.every((v) => isString(v))) return \"string\";\n return \"unknown\";\n};\n\nconst headerIconProps = {\n boxSize: \"14px\",\n marginRight: \"2px\",\n};\n\nexport const getIcon = (values: unknown[]): ReactElement | null => {\n const type = getType(values);\n if (type === \"date\") return <ChakraIcon as={CalendarClock} {...headerIconProps} />;\n if (type === \"string\") return <ChakraIcon as={Type} {...headerIconProps} />;\n if (type === \"number\") return <ChakraIcon as={Hash} {...headerIconProps} />;\n if (type === \"boolean\") return <ChakraIcon as={CheckCircle2} {...headerIconProps} />;\n return null;\n};\n\nexport function formatDisplayValue(value: unknown): ReactNode {\n if (isDisplayValue(value)) return value.display;\n if (isValidElement(value)) return value;\n\n if (value instanceof String || value instanceof Number || value instanceof Boolean) {\n value = value.valueOf();\n }\n\n switch (typeof value) {\n case \"boolean\":\n return value ? \"TRUE\" : \"FALSE\";\n case \"number\":\n return value;\n case \"object\":\n return value !== null ? JSON.stringify(value) : \"-\";\n case \"undefined\":\n return \"-\";\n default:\n return value ? String(value) : \"-\";\n }\n}\n\nexport const columnHelper = createColumnHelper<RowData>();\n","import { ParamEditor } from \"@/components/param-editor\";\n\ninterface JsonField {\n label: string;\n value: unknown;\n}\n\nexport interface FriendlyJsonDisplayProps {\n value: unknown;\n}\n\nconst imageExtensionPattern = /\\.(avif|bmp|gif|jpe?g|png|svg|webp)$/i;\nconst imageLabelPattern = /(^|\\s)(avatar|image|logo|photo|picture|thumbnail)(\\s|$)/i;\n\nconst humanizeKey = (key: string) => {\n const words = key\n .replace(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n .replace(/[_-]+/g, \" \")\n .trim()\n .toLowerCase();\n\n return words ? `${words[0]?.toUpperCase()}${words.slice(1)}` : \"Details\";\n};\n\nconst formatPath = (path: string[]) => path.map((part) => (/^\\d+$/.test(part) ? part : humanizeKey(part))).join(\" / \");\n\nconst isPrimitiveArray = (value: unknown[]) => value.every((item) => item === null || typeof item !== \"object\");\n\nconst appendJsonFields = (value: unknown, path: string[], fields: JsonField[]) => {\n if (Array.isArray(value)) {\n if (value.length === 0 || isPrimitiveArray(value)) {\n fields.push({ label: formatPath(path), value });\n return;\n }\n\n value.forEach((item, index) => {\n appendJsonFields(item, [...path, String(index + 1)], fields);\n });\n return;\n }\n\n if (value !== null && typeof value === \"object\") {\n const entries = Object.entries(value);\n if (entries.length === 0) {\n fields.push({ label: formatPath(path), value: null });\n return;\n }\n\n entries.forEach(([key, item]) => {\n appendJsonFields(item, [...path, key], fields);\n });\n return;\n }\n\n fields.push({ label: formatPath(path), value });\n};\n\nexport const parseJsonCellValue = (value: unknown) => {\n if (typeof value !== \"string\") return value;\n\n try {\n return JSON.parse(value) as unknown;\n } catch {\n return value;\n }\n};\n\nexport const buildJsonFields = (value: unknown) => {\n const fields: JsonField[] = [];\n appendJsonFields(parseJsonCellValue(value), [], fields);\n return fields.map((field) => ({ ...field, label: field.label || \"Value\" }));\n};\n\nexport const isJsonImageValue = (value: unknown, label: string) => {\n if (typeof value !== \"string\") return false;\n if (value.startsWith(\"data:image/\")) return true;\n\n try {\n const url = new URL(value);\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") return false;\n return imageExtensionPattern.test(url.pathname) || imageLabelPattern.test(label);\n } catch {\n return false;\n }\n};\n\nexport const isJsonImageArray = (value: unknown, label: string) => {\n return Array.isArray(value) && value.length > 0 && value.every((item) => isJsonImageValue(item, label));\n};\n\nconst formatJsonPrimitive = (value: unknown) => {\n if (value === null || value === undefined || value === \"\") return \"Not provided\";\n if (typeof value === \"boolean\") return value ? \"Yes\" : \"No\";\n return String(value);\n};\n\nconst formatJsonValue = (value: unknown) => {\n if (Array.isArray(value)) return value.length === 0 ? \"None\" : value.map(formatJsonPrimitive).join(\", \");\n return formatJsonPrimitive(value);\n};\n\nexport const getJsonCellSummary = (value: unknown) => {\n const parsedValue = parseJsonCellValue(value);\n if (Array.isArray(parsedValue) && parsedValue.length === 0) return \"No details\";\n if (parsedValue !== null && typeof parsedValue === \"object\" && Object.keys(parsedValue).length === 0) {\n return \"No details\";\n }\n\n const fields = buildJsonFields(value).filter(\n (field) => !isJsonImageValue(field.value, field.label) && !isJsonImageArray(field.value, field.label),\n );\n if (fields.length === 0) return \"No details\";\n\n const visibleValues = fields.slice(0, 2).map((field) => formatJsonValue(field.value));\n const remainingCount = fields.length - visibleValues.length;\n return [...visibleValues, remainingCount > 0 ? `${remainingCount} more` : null].filter(Boolean).join(\" · \");\n};\n\nconst toReadOnlyValue = (field: JsonField) => {\n const { label, value } = field;\n if (isJsonImageValue(value, label)) {\n return { type: \"image\" as const, src: String(value), alt: `${label} preview` };\n }\n if (Array.isArray(value) && isJsonImageArray(value, label)) {\n return {\n type: \"image-gallery\" as const,\n images: value.map((image, index) => ({ src: String(image), alt: `${label} ${index + 1} preview` })),\n };\n }\n if (Array.isArray(value)) return value as Array<string | number | boolean | null>;\n if (value === undefined) return null;\n return value as string | number | boolean | null;\n};\n\nexport const buildFriendlyJsonParams = (value: unknown) =>\n buildJsonFields(value).map((field, index) => ({\n id: `friendly-json-${index}`,\n name: field.label,\n type: \"readOnly\" as const,\n value: toReadOnlyValue(field),\n }));\n\nexport const FriendlyJsonDisplay = (props: FriendlyJsonDisplayProps) => {\n const { value } = props;\n return <ParamEditor params={buildFriendlyJsonParams(value)} readOnly fullWidth />;\n};\n","import { Button, HStack, Image, Popover, Portal, Text } from \"@chakra-ui/react\";\nimport { Braces, ChevronRight } from \"lucide-react\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\nimport {\n buildJsonFields,\n FriendlyJsonDisplay,\n getJsonCellSummary,\n isJsonImageArray,\n isJsonImageValue,\n} from \"./friendly-json-display\";\n\ninterface JsonCellProps {\n columnLabel: string;\n value: unknown;\n}\n\nconst stopRowActivation = (event: { stopPropagation: () => void }) => event.stopPropagation();\n\nexport const JsonCell = (props: JsonCellProps) => {\n const { columnLabel, value } = props;\n const fields = buildJsonFields(value);\n const imageFields = fields\n .flatMap((field) => {\n if (isJsonImageValue(field.value, field.label)) return [field];\n if (!Array.isArray(field.value) || !isJsonImageArray(field.value, field.label)) return [];\n return field.value.map((image, index) => ({ label: `${field.label} ${index + 1}`, value: image }));\n })\n .slice(0, 2);\n const summary = getJsonCellSummary(value);\n\n return (\n <Popover.Root positioning={{ placement: \"bottom-start\", offset: { mainAxis: 6 } }}>\n <Popover.Trigger asChild>\n <Button\n aria-label={`View ${columnLabel} details`}\n variant=\"ghost\"\n size=\"xs\"\n width=\"full\"\n minWidth=\"0\"\n height=\"28px\"\n paddingX=\"2xs\"\n justifyContent=\"flex-start\"\n onClick={stopRowActivation}\n >\n {imageFields.length > 0 ? (\n <HStack gap=\"-1\" flexShrink=\"0\">\n {imageFields.map((field) => (\n <Image\n key={field.label}\n src={String(field.value)}\n alt={`${field.label} preview`}\n boxSize=\"22px\"\n borderRadius=\"xs\"\n borderWidth=\"1px\"\n borderColor=\"border.subtle\"\n objectFit=\"cover\"\n />\n ))}\n </HStack>\n ) : (\n <Braces size={14} />\n )}\n <Text flex=\"1\" minWidth=\"0\" textAlign=\"left\" textStyle=\"paragraph/S/regular\" truncate>\n {summary}\n </Text>\n <ChevronRight size={12} />\n </Button>\n </Popover.Trigger>\n <Portal>\n <Popover.Positioner>\n <Popover.Content width=\"min(380px, calc(100vw - 32px))\" padding=\"0\" background=\"bg\" overflow=\"hidden\">\n <ScrollArea maxH=\"360px\" viewportProps={{ overscrollBehavior: \"contain\" }}>\n <FriendlyJsonDisplay value={value} />\n </ScrollArea>\n </Popover.Content>\n </Popover.Positioner>\n </Portal>\n </Popover.Root>\n );\n};\n","import { Icon as ChakraIcon, chakra, IconButton, Menu, Portal, Text } from \"@chakra-ui/react\";\nimport type { CellContext, HeaderContext, RowSelectionState } from \"@tanstack/react-table\";\nimport { Check, ChevronDown, CircleHelp, Minus } from \"lucide-react\";\nimport { type CSSProperties, cloneElement, isValidElement, type ReactNode } from \"react\";\n\nimport { Checkbox } from \"@/components/primitives/checkbox\";\nimport { Tooltip } from \"@/components/primitives/tooltip\";\nimport { ListRow } from \"../list-row/list-row\";\nimport { CategoricalColorCell, resolveCategoricalColor } from \"./categorical-color-cell\";\nimport { resolveColorCellStyle } from \"./color-cell-style\";\nimport { ColorScaleCell, resolveColorScaleValue } from \"./color-scale-cell\";\nimport { columnHelper, formatDisplayValue, getIcon, isDisplayValue } from \"./helpers\";\nimport { JsonCell } from \"./json-cell\";\nimport type { DataTableColumnRenderer, DataTableRowAction, RowData } from \"./types\";\n\nconst getSortValue = (value: unknown) => {\n return isDisplayValue(value) ? value.sortValue : value;\n};\n\nconst compareValues = (valueA: unknown, valueB: unknown) => {\n if (valueA === valueB) return 0;\n if (valueA === null || valueA === undefined) return 1;\n if (valueB === null || valueB === undefined) return -1;\n\n if (typeof valueA === \"number\" && typeof valueB === \"number\") {\n return valueA - valueB;\n }\n\n return String(valueA).localeCompare(String(valueB));\n};\n\nconst toSingleLineElement = (element: ReactNode) => {\n if (!isValidElement<{ style?: CSSProperties }>(element)) return element;\n\n return cloneElement(element, {\n style: {\n ...element.props.style,\n flexWrap: \"nowrap\",\n minWidth: 0,\n whiteSpace: \"nowrap\",\n },\n });\n};\n\ninterface BuildColumnsOptions {\n columnIcons?: Partial<Record<string, ReactNode>>;\n columnDescriptions?: Partial<Record<string, string>>;\n compactHeaders?: Partial<Record<string, string>>;\n enableSelection?: boolean;\n rowActions?: DataTableRowAction[];\n selectedRowIds?: RowSelectionState;\n columnRenderers?: Partial<Record<string, DataTableColumnRenderer>>;\n}\n\nconst stopControlPropagation = (event: { stopPropagation: () => void }) => {\n event.stopPropagation();\n};\n\nconst SelectionHeader = (props: HeaderContext<RowData, unknown>) => {\n const { table } = props;\n const checked = table.getIsAllRowsSelected();\n const isIndeterminate = !checked && table.getIsSomeRowsSelected();\n\n return (\n <Checkbox\n checked={checked ? true : isIndeterminate ? \"indeterminate\" : false}\n aria-label=\"Select all\"\n icon={<ChakraIcon as={isIndeterminate ? Minus : Check} boxSize=\"12px\" strokeWidth=\"3\" />}\n onClick={stopControlPropagation}\n onCheckedChange={(details) => table.toggleAllRowsSelected(details.checked === true)}\n />\n );\n};\n\nconst SelectionCell = (props: CellContext<RowData, unknown> & { selectedRowIds?: RowSelectionState }) => {\n const { row, selectedRowIds } = props;\n\n return (\n <Checkbox\n checked={Boolean(selectedRowIds?.[row.id])}\n aria-label=\"Select row\"\n icon={<ChakraIcon as={Check} boxSize=\"12px\" strokeWidth=\"3\" />}\n onClick={stopControlPropagation}\n onCheckedChange={(details) => row.toggleSelected(details.checked === true)}\n />\n );\n};\n\nconst RowActionsCell = (props: CellContext<RowData, unknown> & { actions: DataTableRowAction[] }) => {\n const { row, actions } = props;\n\n return (\n <Menu.Root>\n <Menu.Trigger asChild>\n <IconButton aria-label=\"Row actions\" size=\"2xs\" variant=\"ghost\" onClick={stopControlPropagation}>\n <ChakraIcon as={ChevronDown} boxSize=\"14px\" />\n </IconButton>\n </Menu.Trigger>\n <Portal>\n <Menu.Positioner>\n <Menu.Content zIndex=\"popover\" bg=\"bg\">\n {actions.map((action) => (\n <Menu.Item key={action.label} value={action.label} asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n tone={action.destructive ? \"danger\" : \"default\"}\n label={action.label}\n icon={action.icon}\n onClick={stopControlPropagation}\n onActivate={() => action.onSelect(row.original)}\n />\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Positioner>\n </Portal>\n </Menu.Root>\n );\n};\n\ninterface FormattedCellProps {\n value: unknown;\n}\n\nconst FormattedCell = (props: FormattedCellProps) => {\n const { value } = props;\n const displayValue = formatDisplayValue(value);\n\n if (isValidElement(displayValue)) {\n return (\n <chakra.span display=\"inline-flex\" maxWidth=\"full\" minW=\"0\" overflow=\"hidden\" whiteSpace=\"nowrap\">\n {toSingleLineElement(displayValue)}\n </chakra.span>\n );\n }\n\n return (\n <Text maxWidth=\"full\" overflow=\"hidden\" textOverflow=\"ellipsis\" textStyle=\"paragraph/S/regular\" whiteSpace=\"nowrap\">\n {displayValue}\n </Text>\n );\n};\n\ninterface DataCellProps {\n columnLabel: string;\n renderer?: DataTableColumnRenderer;\n value: unknown;\n}\n\nconst DataCell = (props: DataCellProps) => {\n const { columnLabel, renderer, value } = props;\n\n if (renderer?.type === \"json\") return <JsonCell columnLabel={columnLabel} value={value} />;\n\n if (renderer?.type === \"color-scale\") {\n const color = resolveColorScaleValue(value, renderer.stops);\n if (color && typeof value === \"number\") return <ColorScaleCell value={value} />;\n }\n\n if (renderer?.type === \"categorical-color\") {\n const color = resolveCategoricalColor(value, renderer.categories);\n if (color) {\n return (\n <CategoricalColorCell>\n <FormattedCell value={value} />\n </CategoricalColorCell>\n );\n }\n }\n\n return <FormattedCell value={value} />;\n};\n\nconst resolveDataCellStyle = (value: unknown, renderer?: DataTableColumnRenderer) => {\n if (renderer?.type === \"color-scale\") {\n const color = resolveColorScaleValue(value, renderer.stops);\n if (color && typeof value === \"number\") return resolveColorCellStyle(color);\n }\n\n if (renderer?.type === \"categorical-color\") {\n const color = resolveCategoricalColor(value, renderer.categories);\n if (color) return resolveColorCellStyle(color);\n }\n};\n\nexport function buildColumns(data: RowData[], columnKeys: string[], options: BuildColumnsOptions = {}) {\n const {\n columnIcons,\n columnDescriptions,\n compactHeaders,\n enableSelection = false,\n rowActions = [],\n selectedRowIds,\n columnRenderers,\n } = options;\n const rowIndexColumn = columnHelper.accessor((_row, rowIndex) => rowIndex + 1, {\n header: \"\",\n id: \"rowIndex\",\n enableResizing: false,\n size: 20,\n cell: (info) => (\n <chakra.span display={\"block\"} textStyle={\"paragraph/S/regular\"} textAlign={\"center\"}>\n {info.getValue()}\n </chakra.span>\n ),\n });\n\n const selectionColumn = columnHelper.display({\n id: \"rowSelection\",\n header: SelectionHeader,\n cell: (info) => <SelectionCell {...info} selectedRowIds={selectedRowIds} />,\n enableResizing: false,\n enableSorting: false,\n size: 36,\n });\n\n const dataColumns = columnKeys.map((key) => {\n const fallBackKey = key || \"-\";\n const columnValues = data.map((row) => row[fallBackKey]);\n const renderer = columnRenderers?.[fallBackKey];\n const customIcon = columnIcons?.[fallBackKey];\n const headerIcon = customIcon === undefined ? getIcon(columnValues) : customIcon;\n const columnDescription = columnDescriptions?.[fallBackKey];\n\n return columnHelper.accessor((row) => row[fallBackKey], {\n id: fallBackKey,\n header: () => {\n const headerLabel = compactHeaders?.[fallBackKey] ?? fallBackKey;\n return (\n <chakra.span display=\"inline-flex\" alignItems=\"center\" gap=\"4px\" minW=\"0\" maxW=\"full\" overflow=\"hidden\">\n {headerIcon}\n <chakra.span overflow=\"hidden\" textOverflow=\"ellipsis\" whiteSpace=\"nowrap\">\n {headerLabel}\n </chakra.span>\n {columnDescription ? (\n <Tooltip content={columnDescription}>\n <ChakraIcon\n as={CircleHelp}\n aria-label={`About ${headerLabel}`}\n boxSize=\"12px\"\n color=\"fg.muted\"\n cursor=\"help\"\n flexShrink={0}\n opacity={0.6}\n tabIndex={0}\n />\n </Tooltip>\n ) : null}\n </chakra.span>\n );\n },\n cell: (info) => <DataCell columnLabel={fallBackKey} renderer={renderer} value={info.getValue()} />,\n meta: {\n getCellStyle: (value: unknown) => resolveDataCellStyle(value, renderer),\n },\n sortingFn: (rowA, rowB) => {\n const valueA = getSortValue(rowA.original[fallBackKey]);\n const valueB = getSortValue(rowB.original[fallBackKey]);\n return compareValues(valueA, valueB);\n },\n });\n });\n\n const rowActionsColumn = columnHelper.display({\n id: \"rowActions\",\n header: \"\",\n cell: (info) => <RowActionsCell {...info} actions={rowActions} />,\n enableResizing: false,\n enableSorting: false,\n size: 36,\n });\n\n return [\n rowIndexColumn,\n ...(enableSelection ? [selectionColumn] : []),\n ...dataColumns,\n ...(rowActions.length > 0 ? [rowActionsColumn] : []),\n ];\n}\n","import { Box, HStack, Icon, IconButton, Input, Popover, Portal, Stack, Text } from \"@chakra-ui/react\";\nimport { closestCenter, DndContext, type DragEndEvent, PointerSensor, useSensor, useSensors } from \"@dnd-kit/core\";\nimport { SortableContext, useSortable, verticalListSortingStrategy } from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { Check, Columns3, GripVertical, Search } from \"lucide-react\";\nimport { useState } from \"react\";\n\nimport { Checkbox } from \"@/components/primitives/checkbox\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\n\ninterface DataTableColumnMenuColumn {\n id: string;\n label: string;\n}\n\ninterface DataTableColumnMenuProps {\n columns: DataTableColumnMenuColumn[];\n visibleColumnIds: Set<string>;\n onColumnToggle: (columnId: string) => void;\n onColumnReorder: (activeColumnId: string, overColumnId: string) => void;\n}\n\ninterface DataTableColumnMenuRowProps {\n column: DataTableColumnMenuColumn;\n checked: boolean;\n onColumnToggle: (columnId: string) => void;\n}\n\nconst DataTableColumnMenuRow = (props: DataTableColumnMenuRowProps) => {\n const { column, checked, onColumnToggle } = props;\n const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({ id: column.id });\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n opacity: isDragging ? 0.5 : 1,\n };\n\n return (\n <HStack\n ref={setNodeRef}\n style={style}\n gap=\"2xs\"\n minW=\"0\"\n width=\"full\"\n borderRadius=\"xs\"\n px=\"xs\"\n py=\"2xs\"\n _hover={{ bg: \"bg.hover\" }}\n >\n <Box as=\"span\" display=\"inline-flex\" cursor=\"grab\" color=\"fg.muted\" {...attributes} {...listeners}>\n <GripVertical size={14} />\n </Box>\n <Checkbox\n checked={checked}\n size=\"sm\"\n icon={<Icon as={Check} boxSize=\"12px\" strokeWidth=\"3\" />}\n onCheckedChange={() => onColumnToggle(column.id)}\n >\n <Text as=\"span\" textStyle=\"label/S/regular\" truncate>\n {column.label}\n </Text>\n </Checkbox>\n </HStack>\n );\n};\n\nexport const DataTableColumnMenu = (props: DataTableColumnMenuProps) => {\n const { columns, visibleColumnIds, onColumnToggle, onColumnReorder } = props;\n const [query, setQuery] = useState(\"\");\n const sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: 5 } }));\n const normalizedQuery = query.trim().toLowerCase();\n const filteredColumns = normalizedQuery\n ? columns.filter((column) => column.label.toLowerCase().includes(normalizedQuery))\n : columns;\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event;\n if (!over || active.id === over.id) return;\n\n onColumnReorder(String(active.id), String(over.id));\n };\n\n return (\n <Popover.Root positioning={{ placement: \"bottom-end\", offset: { mainAxis: 8 } }}>\n <Popover.Trigger asChild>\n <IconButton aria-label=\"Manage columns\" variant=\"ghost\" size=\"sm\">\n <Icon as={Columns3} boxSize=\"14px\" />\n </IconButton>\n </Popover.Trigger>\n <Portal>\n <Popover.Positioner>\n <Popover.Content width=\"min(320px, calc(100vw - 32px))\" p=\"0\" bg=\"bg\" overflow=\"hidden\">\n <Stack gap=\"0\">\n <HStack borderBottomWidth=\"1px\" borderColor=\"border.subtle\" padding=\"xs\" gap=\"2xs\">\n <Icon as={Search} boxSize=\"14px\" color=\"fg.muted\" />\n <Input\n size=\"xs\"\n variant=\"flushed\"\n placeholder=\"Search columns\"\n value={query}\n onChange={(event) => setQuery(event.target.value)}\n />\n </HStack>\n <ScrollArea maxH=\"280px\" viewportProps={{ overscrollBehavior: \"contain\" }}>\n <Box padding=\"2xs\">\n <DndContext sensors={sensors} collisionDetection={closestCenter} onDragEnd={handleDragEnd}>\n <SortableContext items={columns.map((column) => column.id)} strategy={verticalListSortingStrategy}>\n <Stack gap=\"1px\">\n {filteredColumns.map((column) => (\n <DataTableColumnMenuRow\n key={column.id}\n column={column}\n checked={visibleColumnIds.has(column.id)}\n onColumnToggle={onColumnToggle}\n />\n ))}\n </Stack>\n </SortableContext>\n </DndContext>\n </Box>\n </ScrollArea>\n </Stack>\n </Popover.Content>\n </Popover.Positioner>\n </Portal>\n </Popover.Root>\n );\n};\n","import { Button, Icon as ChakraIcon, Flex, IconButton, Menu, Portal, Stack, Text } from \"@chakra-ui/react\";\nimport { X } from \"lucide-react\";\nimport { ListRow } from \"../list-row/list-row\";\nimport type { DataTableSelectionAction, RowData } from \"./types\";\n\ninterface SelectionToolbarProps {\n selectedCount: number;\n totalCount: number;\n onClearSelection: () => void;\n onSelectAll: () => void;\n actions: DataTableSelectionAction[];\n selectedRows: RowData[];\n}\n\nexport function SelectionToolbar(props: SelectionToolbarProps) {\n const { selectedCount, totalCount, onClearSelection, onSelectAll, actions, selectedRows } = props;\n const actionLabel = actions.length === 1 ? actions[0]?.label : \"Actions\";\n\n return (\n <Flex alignItems=\"center\" paddingY=\"2xs\" paddingX=\"sm\">\n <Stack direction=\"row\" alignItems=\"center\">\n <IconButton aria-label=\"clear-selection\" onClick={onClearSelection} size=\"xs\">\n <ChakraIcon as={X} boxSize=\"16px\" />\n </IconButton>\n <Text>{selectedCount} rows selected</Text>\n {selectedCount !== totalCount && (\n <Button size=\"xs\" onClick={onSelectAll}>\n Select all {totalCount} rows\n </Button>\n )}\n {actions.length === 1 && actions[0] ? (\n <Button size=\"xs\" onClick={() => actions[0]?.onSelect(selectedRows)}>\n {actionLabel}\n </Button>\n ) : null}\n {actions.length > 1 ? (\n <Menu.Root>\n <Menu.Trigger asChild>\n <Button size=\"xs\">{actionLabel}</Button>\n </Menu.Trigger>\n <Portal>\n <Menu.Positioner>\n <Menu.Content zIndex=\"popover\" bg=\"bg\">\n {actions.map((action) => (\n <Menu.Item key={action.label} value={action.label} asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n tone={action.destructive ? \"danger\" : \"default\"}\n label={action.label}\n icon={action.icon}\n onActivate={() => action.onSelect(selectedRows)}\n />\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Positioner>\n </Portal>\n </Menu.Root>\n ) : null}\n </Stack>\n </Flex>\n );\n}\n","import { Text } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\nimport { KanbanRendererToolbar } from \"../kanban-renderer/kanban-renderer-toolbar\";\nimport type { AttributeDescriptor, KanbanRendererRow } from \"../kanban-renderer/types\";\nimport { SelectionToolbar } from \"./selection-toolbar\";\nimport type { DataTableSelectionAction, RowData } from \"./types\";\n\ninterface DataTableHeaderProps {\n rows: KanbanRendererRow[];\n attributes: AttributeDescriptor[];\n storageKey: string;\n selectedCount: number;\n totalCount: number;\n visibleCount: number;\n actions: DataTableSelectionAction[];\n selectedRows: RowData[];\n columnControl: ReactNode;\n onClearSelection: () => void;\n onSelectAll: () => void;\n}\n\nexport const DataTableHeader = (props: DataTableHeaderProps) => {\n const {\n rows,\n attributes,\n storageKey,\n selectedCount,\n totalCount,\n visibleCount,\n actions,\n selectedRows,\n columnControl,\n onClearSelection,\n onSelectAll,\n } = props;\n\n const leading =\n selectedCount > 0 ? (\n <SelectionToolbar\n selectedCount={selectedCount}\n totalCount={totalCount}\n onClearSelection={onClearSelection}\n onSelectAll={onSelectAll}\n actions={actions}\n selectedRows={selectedRows}\n />\n ) : (\n <Text px=\"xs\" textStyle=\"label/S/regular\" color=\"fg.muted\">\n {visibleCount} rows\n </Text>\n );\n\n return (\n <KanbanRendererToolbar\n rows={rows}\n storageKey={storageKey}\n attributes={attributes}\n defaultSettings={{ viewMode: \"list\" }}\n leading={leading}\n displayControl={columnControl}\n />\n );\n};\n","import type {\n AttributeDescriptor,\n KanbanRendererFilterState,\n KanbanRendererRow,\n} from \"@/components/kanban-renderer/types\";\nimport { filterRows } from \"../kanban-renderer/kanban-renderer-grouping\";\nimport { isDisplayValue } from \"./helpers\";\nimport type { DataTableProps, DataTableSelectionAction, RowData } from \"./types\";\n\nexport const defaultPageSize = 30;\n\nexport interface DataTableRendererRow extends KanbanRendererRow {\n sourceRow: RowData;\n}\n\nexport const resolveDataTableRowId = (row: RowData, index: number, getRowId?: DataTableProps[\"getRowId\"]) => {\n if (getRowId) return getRowId(row, index);\n return typeof row.id === \"string\" ? row.id : String(index);\n};\n\nexport const resolveInitialPageSize = (props: Pick<DataTableProps, \"initialPageSize\">) => {\n if (typeof props.initialPageSize === \"number\" && props.initialPageSize > 0) return props.initialPageSize;\n return defaultPageSize;\n};\n\nexport const getSelectedOriginalRows = (rows: Array<{ original: RowData }>) => rows.map((row) => row.original);\n\nexport const resolveSelectionActions = (\n props: Pick<DataTableProps, \"selectionActions\" | \"onCSVDownload\" | \"getRowId\">,\n) => {\n const actions: DataTableSelectionAction[] = [...(props.selectionActions ?? [])];\n\n if (props.onCSVDownload) {\n actions.push({\n label: \"Download CSV\",\n onSelect: (rows) => {\n props.onCSVDownload?.(rows.map((row, index) => resolveDataTableRowId(row, index, props.getRowId)));\n },\n });\n }\n\n return actions;\n};\n\nexport const shouldEnableSelection = (\n props: Pick<DataTableProps, \"selectionMode\" | \"selectionActions\" | \"onCSVDownload\">,\n) => props.selectionMode === \"multiple\" || Boolean(props.onCSVDownload) || Boolean(props.selectionActions?.length);\n\nexport const shouldHighlightActiveRow = (props: {\n enableRowActivation?: boolean;\n activeRowId?: string | null;\n rowId: string;\n}) => props.enableRowActivation === true && props.activeRowId === props.rowId;\n\nconst toAttributeValue = (value: unknown) => {\n const raw = isDisplayValue(value) ? value.sortValue : value;\n if (typeof raw === \"boolean\") return String(raw);\n return raw;\n};\n\nconst isNumberColumn = (rows: RowData[], columnKey: string) => {\n const values = rows\n .map((row) => toAttributeValue(row[columnKey]))\n .filter((value) => value !== null && value !== undefined);\n return values.length > 0 && values.every((value) => typeof value === \"number\");\n};\n\nconst resolveAttributeType = (rows: RowData[], columnKey: string): AttributeDescriptor[\"type\"] => {\n if (isNumberColumn(rows, columnKey)) return { kind: \"number\" };\n return { kind: \"string\" };\n};\n\nexport const buildDataTableRendererAttributes = (\n rows: RowData[],\n columnKeys: string[],\n compactHeaders?: Partial<Record<string, string>>,\n): AttributeDescriptor[] =>\n columnKeys.map((columnKey) => ({\n id: columnKey,\n label: compactHeaders?.[columnKey] ?? columnKey,\n type: resolveAttributeType(rows, columnKey),\n filterable: true,\n sortable: true,\n displayable: true,\n }));\n\nexport const buildDataTableRendererRows = (\n rows: RowData[],\n columnKeys: string[],\n getRowId?: DataTableProps[\"getRowId\"],\n): DataTableRendererRow[] =>\n rows.map((row, index) => {\n const attributes = Object.fromEntries(columnKeys.map((columnKey) => [columnKey, toAttributeValue(row[columnKey])]));\n const rowId = resolveDataTableRowId(row, index, getRowId);\n const firstValue = columnKeys.length > 0 ? toAttributeValue(row[columnKeys[0]!]) : rowId;\n\n return {\n id: rowId,\n title: String(firstValue ?? rowId),\n attributes,\n sourceRow: row,\n };\n });\n\nexport const filterDataTableRows = (\n rows: DataTableRendererRow[],\n filters: KanbanRendererFilterState,\n attributes: AttributeDescriptor[],\n) => filterRows(rows, filters, attributes) as DataTableRendererRow[];\n\nexport const resolveDataTableColumnOrder = (availableColumnIds: string[], requestedColumnOrder: string[]) => {\n const availableColumnIdSet = new Set(availableColumnIds);\n const orderedColumnIds = requestedColumnOrder.filter((columnId) => availableColumnIdSet.has(columnId));\n const orderedColumnIdSet = new Set(orderedColumnIds);\n const missingColumnIds = availableColumnIds.filter((columnId) => !orderedColumnIdSet.has(columnId));\n\n return [...orderedColumnIds, ...missingColumnIds];\n};\n\nexport const reorderDataTableColumns = (columnIds: string[], activeColumnId: string, overColumnId: string) => {\n const activeIndex = columnIds.indexOf(activeColumnId);\n const overIndex = columnIds.indexOf(overColumnId);\n\n if (activeIndex < 0 || overIndex < 0 || activeIndex === overIndex) return columnIds;\n\n const nextColumnIds = [...columnIds];\n const [activeColumn] = nextColumnIds.splice(activeIndex, 1);\n if (!activeColumn) return columnIds;\n\n nextColumnIds.splice(overIndex, 0, activeColumn);\n return nextColumnIds;\n};\n\nexport const resolveDataTableToolbarStorageKey = (props: { toolbarStorageKey?: string; columnKeys: string[] }) =>\n props.toolbarStorageKey ?? `data-table:${props.columnKeys.join(\"|\") || \"empty\"}`;\n","import { Chart, type UseChartProps, useChart } from \"@chakra-ui/charts\";\nimport type { ReactNode } from \"react\";\nimport {\n Bar,\n BarChart,\n Tooltip as RechartsTooltip,\n useActiveTooltipCoordinate,\n usePlotArea,\n XAxis,\n YAxis,\n} from \"recharts\";\n\ntype ChartSeries<T> = NonNullable<UseChartProps<T>[\"series\"]>[number];\ntype StringKeyOf<T> = Extract<keyof T, string>;\n\nconst StatChartCrosshair = () => {\n const coordinate = useActiveTooltipCoordinate();\n const plotArea = usePlotArea();\n\n if (!coordinate || !plotArea) return null;\n\n return (\n <g pointerEvents=\"none\" stroke=\"var(--chakra-colors-border-emphasized)\" strokeWidth=\"1\">\n <line x1={coordinate.x} x2={coordinate.x} y1={plotArea.y} y2={plotArea.y + plotArea.height} />\n <line x1={plotArea.x} x2={plotArea.x + plotArea.width} y1={coordinate.y} y2={coordinate.y} />\n </g>\n );\n};\n\ninterface DataTableStatChartProps<T extends object> {\n data: T[];\n dataKey: StringKeyOf<T>;\n color: ChartSeries<T>[\"color\"];\n height: string;\n ariaLabel: string;\n tooltipLabel: (datum: T) => ReactNode;\n tooltipValue: (value: string | number) => ReactNode;\n tooltipSeriesLabel: string;\n layout?: \"horizontal\" | \"vertical\";\n categoryKey?: StringKeyOf<T>;\n domain?: [number, number];\n barSize?: number;\n barCategoryGap?: number;\n}\n\nexport const DataTableStatChart = <T extends object>(props: DataTableStatChartProps<T>) => {\n const {\n data,\n dataKey,\n color,\n height,\n ariaLabel,\n tooltipLabel,\n tooltipValue,\n tooltipSeriesLabel,\n layout = \"horizontal\",\n categoryKey,\n domain,\n barSize,\n barCategoryGap = 1,\n } = props;\n const chart = useChart({ data, series: [{ name: dataKey, color }] });\n const getBarValue = (datum: T) => datum[dataKey] as string | number;\n const getCategoryValue = categoryKey ? (datum: T) => datum[categoryKey] as string | number : undefined;\n\n return (\n <Chart.Root chart={chart} height={height} aspectRatio=\"auto\" cursor=\"crosshair\" aria-label={ariaLabel}>\n <BarChart\n responsive\n data={chart.data}\n layout={layout}\n margin={{ top: 2, right: 0, bottom: 0, left: 0 }}\n barCategoryGap={barCategoryGap}\n >\n {layout === \"vertical\" ? (\n <>\n <XAxis type=\"number\" domain={domain} hide />\n <YAxis type=\"category\" dataKey={getCategoryValue} hide />\n </>\n ) : null}\n <Bar dataKey={getBarValue} fill={chart.color(color)} barSize={barSize} isAnimationActive={false} />\n <RechartsTooltip\n allowEscapeViewBox={{ x: true, y: true }}\n content={\n <Chart.Tooltip\n labelFormatter={(label, payload) => {\n const datum = payload[0]?.payload as T | undefined;\n return datum ? tooltipLabel(datum) : label;\n }}\n formatter={(value) => [tooltipValue(value), tooltipSeriesLabel]}\n />\n }\n cursor={<StatChartCrosshair />}\n isAnimationActive={false}\n wrapperStyle={{ zIndex: 1800 }}\n />\n </BarChart>\n </Chart.Root>\n );\n};\n","import { isDisplayValue } from \"./helpers\";\nimport type { RowData } from \"./types\";\n\nexport interface HistogramBin {\n start: number;\n end: number;\n count: number;\n}\n\nexport interface HistogramStat {\n min: number;\n max: number;\n bins: HistogramBin[];\n}\n\nexport interface TopValueStat {\n label: string;\n count: number;\n percentage: number;\n}\n\nconst getStatValue = (value: unknown) => (isDisplayValue(value) ? value.sortValue : value);\n\nconst getColumnStatValues = (rows: RowData[], columnId: string) =>\n rows\n .map((row) => getStatValue(row[columnId]))\n .filter((value) => value !== null && value !== undefined && value !== \"\");\n\nexport const countUniqueStatValues = (rows: RowData[], columnId: string) =>\n new Set(getColumnStatValues(rows, columnId)).size;\n\nexport const buildTopValuesStat = (rows: RowData[], columnId: string, limit: number) => {\n const values = getColumnStatValues(rows, columnId);\n const counts = new Map<unknown, number>();\n\n for (const value of values) {\n counts.set(value, (counts.get(value) ?? 0) + 1);\n }\n\n const groups: TopValueStat[] = [...counts.entries()]\n .map(([value, count]) => ({\n label: String(value),\n count,\n percentage: Math.round((count / values.length) * 100),\n }))\n .sort((left, right) => right.count - left.count || left.label.localeCompare(right.label));\n const topGroups = groups.slice(0, limit);\n const otherCount = groups.slice(limit).reduce((total, group) => total + group.count, 0);\n\n if (otherCount === 0) return topGroups;\n\n return [\n ...topGroups,\n {\n label: \"Other\",\n count: otherCount,\n percentage: Math.round((otherCount / values.length) * 100),\n },\n ];\n};\n\nexport const buildHistogramStat = (rows: RowData[], columnId: string, binCount: number): HistogramStat | null => {\n const values = getColumnStatValues(rows, columnId).filter((value): value is number => typeof value === \"number\");\n if (values.length === 0) return null;\n\n const min = Math.min(...values);\n const max = Math.max(...values);\n const binWidth = (max - min) / binCount;\n const bins = Array.from({ length: binCount }, (_, index) => ({\n start: min + binWidth * index,\n end: min + binWidth * (index + 1),\n count: 0,\n }));\n\n for (const value of values) {\n const binIndex = value === max || binWidth === 0 ? binCount - 1 : Math.floor((value - min) / binWidth);\n bins[binIndex]!.count += 1;\n }\n\n return { min, max, bins };\n};\n","import { Box, Flex, Table, Text } from \"@chakra-ui/react\";\nimport type { Header, HeaderGroup } from \"@tanstack/react-table\";\nimport { DataTableStatChart } from \"./data-table-stat-chart\";\nimport { buildHistogramStat, buildTopValuesStat, countUniqueStatValues } from \"./data-table-stats\";\nimport type { DataTableColumnStat, RowData } from \"./types\";\n\nconst formatNumber = new Intl.NumberFormat(undefined, { maximumFractionDigits: 2 }).format;\n\ninterface UniqueStatProps {\n rows: RowData[];\n columnId: string;\n}\n\nconst UniqueStat = (props: UniqueStatProps) => {\n const { rows, columnId } = props;\n const count = countUniqueStatValues(rows, columnId);\n\n return (\n <Flex direction=\"column\" gap=\"2xs\" alignItems=\"flex-start\">\n <Text textStyle=\"label/L/medium\" lineHeight=\"1\">\n {formatNumber(count)}\n </Text>\n <Text textStyle=\"label/XS/regular\" color=\"fg.muted\">\n unique values\n </Text>\n </Flex>\n );\n};\n\ninterface HistogramStatProps {\n rows: RowData[];\n columnId: string;\n binCount: number;\n}\n\nconst HistogramStat = (props: HistogramStatProps) => {\n const { rows, columnId, binCount } = props;\n const histogram = buildHistogramStat(rows, columnId, binCount);\n\n if (!histogram) {\n return (\n <Text textStyle=\"label/XS/regular\" color=\"fg.muted\">\n No numeric values\n </Text>\n );\n }\n\n return (\n <Flex direction=\"column\" width=\"100%\" gap=\"2xs\">\n <DataTableStatChart\n data={histogram.bins}\n dataKey=\"count\"\n color=\"vis.categorical.1\"\n height=\"40px\"\n ariaLabel={`Distribution for ${columnId}`}\n tooltipLabel={(bin) => `${formatNumber(bin.start)} – ${formatNumber(bin.end)}`}\n tooltipValue={(value) => `${formatNumber(Number(value))} values`}\n tooltipSeriesLabel=\"Count\"\n />\n <Flex justifyContent=\"space-between\" gap=\"xs\">\n <Text textStyle=\"label/XS/regular\" color=\"fg.muted\">\n {formatNumber(histogram.min)}\n </Text>\n <Text textStyle=\"label/XS/regular\" color=\"fg.muted\">\n {formatNumber(histogram.max)}\n </Text>\n </Flex>\n </Flex>\n );\n};\n\ninterface TopValuesStatProps {\n rows: RowData[];\n columnId: string;\n limit: number;\n}\n\nconst TopValuesStat = (props: TopValuesStatProps) => {\n const { rows, columnId, limit } = props;\n const groups = buildTopValuesStat(rows, columnId, limit);\n\n return (\n <Flex direction=\"column\" width=\"100%\" gap=\"2xs\">\n {groups.map((group) => (\n <Box key={group.label} position=\"relative\" height=\"18px\">\n <DataTableStatChart\n data={[group]}\n dataKey=\"percentage\"\n categoryKey=\"label\"\n color=\"vis.sequential.blue.low-3\"\n height=\"18px\"\n ariaLabel={`${group.label}: ${group.percentage}%`}\n layout=\"vertical\"\n domain={[0, 100]}\n barSize={18}\n tooltipLabel={(datum) => `${datum.label} · ${formatNumber(datum.count)} values`}\n tooltipValue={(value) => `${formatNumber(Number(value))}%`}\n tooltipSeriesLabel=\"Share\"\n />\n <Flex\n position=\"absolute\"\n inset=\"0\"\n paddingX=\"2xs\"\n justifyContent=\"space-between\"\n gap=\"xs\"\n pointerEvents=\"none\"\n >\n <Text textStyle=\"label/XS/regular\" truncate>\n {group.label}\n </Text>\n <Text textStyle=\"label/XS/medium\" color=\"fg.muted\">\n {group.percentage}%\n </Text>\n </Flex>\n </Box>\n ))}\n </Flex>\n );\n};\n\ninterface DataTableStatProps {\n rows: RowData[];\n columnId: string;\n stat: DataTableColumnStat;\n}\n\nconst DataTableStat = (props: DataTableStatProps) => {\n const { rows, columnId, stat } = props;\n\n if (stat.type === \"unique\") return <UniqueStat rows={rows} columnId={columnId} />;\n if (stat.type === \"histogram\") {\n return <HistogramStat rows={rows} columnId={columnId} binCount={stat.bins ?? 10} />;\n }\n return <TopValuesStat rows={rows} columnId={columnId} limit={stat.limit ?? 2} />;\n};\n\ninterface DataTableStatCellProps {\n header: Header<RowData, unknown>;\n headerGroup: HeaderGroup<RowData>;\n rows: RowData[];\n columnStats: Partial<Record<string, DataTableColumnStat>>;\n fullWidth?: boolean;\n}\n\nconst DataTableStatCell = (props: DataTableStatCellProps) => {\n const { header, headerGroup, rows, columnStats, fullWidth } = props;\n const stat = columnStats[header.column.id];\n\n return (\n <Table.ColumnHeader\n data-column-id={header.column.id}\n data-stat-type={stat?.type}\n borderRight=\"1px solid\"\n _last={{ borderRight: \"none\" }}\n borderColor=\"border.subtle\"\n padding=\"xs\"\n verticalAlign=\"middle\"\n overflow=\"hidden\"\n style={{\n width:\n fullWidth && headerGroup.headers.indexOf(header) === headerGroup.headers.length - 1\n ? undefined\n : `calc(var(--header-${header.id}-size) * 1px)`,\n }}\n >\n {stat ? <DataTableStat rows={rows} columnId={header.column.id} stat={stat} /> : null}\n </Table.ColumnHeader>\n );\n};\n\ninterface DataTableStatsRowProps {\n headerGroup: HeaderGroup<RowData>;\n rows: RowData[];\n columnStats: Partial<Record<string, DataTableColumnStat>>;\n fullWidth?: boolean;\n noBorder?: boolean;\n}\n\nexport const DataTableStatsRow = (props: DataTableStatsRowProps) => {\n const { headerGroup, rows, columnStats, fullWidth, noBorder } = props;\n const hasVisibleStats = headerGroup.headers.some((header) => columnStats[header.column.id]);\n\n if (!hasVisibleStats) return null;\n\n return (\n <Table.Row\n className=\"data-table-stats-row\"\n borderRight={noBorder ? \"none\" : \"1px solid\"}\n borderColor=\"border.subtle\"\n >\n {headerGroup.headers.map((header) => (\n <DataTableStatCell\n key={header.id}\n header={header}\n headerGroup={headerGroup}\n rows={rows}\n columnStats={columnStats}\n fullWidth={fullWidth}\n />\n ))}\n </Table.Row>\n );\n};\n","import { Icon as ChakraIcon, Flex, IconButton, Menu, Portal, Table, Text } from \"@chakra-ui/react\";\nimport {\n type Cell,\n flexRender,\n type Header,\n type HeaderGroup,\n type Row,\n type Table as TanStackTable,\n} from \"@tanstack/react-table\";\nimport { ArrowDownAZ, ArrowUpAZ, MoreVertical } from \"lucide-react\";\nimport type { CSSProperties } from \"react\";\nimport { ResourceContextMenu } from \"@/components/overlays/resource-context-menu\";\nimport { Tooltip } from \"@/components/primitives/tooltip\";\nimport { ListRow } from \"../list-row/list-row\";\nimport type { DataTableCellContext, DataTableProps, RowData } from \"./types\";\n\nconst utilityColumnIds = new Set([\"rowIndex\", \"rowSelection\", \"rowActions\"]);\n\nconst getSortMenuIcon = (sortDirection: false | \"asc\" | \"desc\") => {\n if (sortDirection === \"asc\") return ArrowUpAZ;\n if (sortDirection === \"desc\") return ArrowDownAZ;\n return MoreVertical;\n};\n\ninterface DataTableColumnHeaderProps {\n header: Header<RowData, unknown>;\n headerGroup: HeaderGroup<RowData>;\n table: TanStackTable<RowData>;\n fullWidth?: boolean;\n hasDescription?: boolean;\n}\n\nexport const DataTableColumnHeader = (props: DataTableColumnHeaderProps) => {\n const { header, headerGroup, table, fullWidth, hasDescription } = props;\n const sortDirection = header.column.getIsSorted();\n const canSortColumn = !utilityColumnIds.has(header.column.id) && table.getCoreRowModel().rows.length > 1;\n const SortIcon = getSortMenuIcon(sortDirection);\n const tooltipContent =\n header.column.id === \"rowSelection\"\n ? \"Select all\"\n : flexRender(header.column.columnDef.header, header.getContext());\n\n return (\n <Table.ColumnHeader\n data-column-id={header.column.id}\n textTransform=\"none\"\n borderRight=\"1px solid\"\n _last={{ borderRight: \"none\" }}\n borderColor=\"border.subtle\"\n paddingX=\"xs\"\n paddingY=\"xs\"\n key={header.id}\n overflow=\"hidden\"\n position=\"relative\"\n verticalAlign=\"middle\"\n whiteSpace=\"nowrap\"\n style={{\n width:\n fullWidth && headerGroup.headers.indexOf(header) === headerGroup.headers.length - 1\n ? undefined\n : `calc(var(--header-${header.id}-size) * 1px)`,\n }}\n >\n <Tooltip content={tooltipContent} disabled={hasDescription}>\n <Flex className=\"group\" alignItems=\"center\" justifyContent=\"space-between\" gap=\"1\" flex=\"1\" minW=\"0\">\n <Text textStyle=\"label/S/medium\" lineHeight=\"1.2\" truncate>\n {flexRender(header.column.columnDef.header, header.getContext())}\n </Text>\n {canSortColumn && (\n <Menu.Root>\n <Menu.Trigger asChild>\n <IconButton\n ml=\"2px\"\n size=\"2xs\"\n aria-label={sortDirection ? `Sorted ${sortDirection}` : \"Sort column\"}\n variant=\"ghost\"\n visibility={sortDirection ? \"visible\" : \"hidden\"}\n _groupHover={{ visibility: \"visible\" }}\n >\n <ChakraIcon as={SortIcon} boxSize=\"14px\" />\n </IconButton>\n </Menu.Trigger>\n <Portal>\n <Menu.Positioner>\n <Menu.Content zIndex=\"popover\" bg=\"bg\">\n <Menu.Item value=\"sort-asc\" asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n label=\"Sort ascending\"\n icon={<ChakraIcon as={ArrowUpAZ} boxSize=\"16px\" />}\n disabled={sortDirection === \"asc\"}\n onActivate={() => header.column.toggleSorting(false)}\n />\n </Menu.Item>\n <Menu.Item value=\"sort-desc\" asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n label=\"Sort descending\"\n icon={<ChakraIcon as={ArrowDownAZ} boxSize=\"16px\" />}\n disabled={sortDirection === \"desc\"}\n onActivate={() => header.column.toggleSorting(true)}\n />\n </Menu.Item>\n {sortDirection && (\n <Menu.Item value=\"clear-sort\" asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n label=\"Clear sort\"\n onActivate={() => header.column.clearSorting()}\n />\n </Menu.Item>\n )}\n </Menu.Content>\n </Menu.Positioner>\n </Portal>\n </Menu.Root>\n )}\n {header.column.getCanResize() && (\n <span\n {...{\n onDoubleClick: () => header.column.resetSize(),\n onMouseDown: header.getResizeHandler(),\n onTouchStart: header.getResizeHandler(),\n className: `resizer ${header.column.getIsResizing() ? \"isResizing\" : \"\"}`,\n }}\n />\n )}\n </Flex>\n </Tooltip>\n </Table.ColumnHeader>\n );\n};\n\ninterface DataTableCellViewProps {\n cell: Cell<RowData, unknown>;\n row: Row<RowData>;\n getCellContextMenuActions?: DataTableProps[\"getCellContextMenuActions\"];\n}\n\ninterface DataTableColumnMeta {\n getCellStyle?: (value: unknown) => CSSProperties | undefined;\n}\n\nconst DataTableCellView = (props: DataTableCellViewProps) => {\n const { cell, row, getCellContextMenuActions } = props;\n const columnMeta = cell.column.columnDef.meta as DataTableColumnMeta | undefined;\n const cellStyle = columnMeta?.getCellStyle?.(cell.getValue());\n const cellContext: DataTableCellContext = {\n row: row.original,\n rowId: row.id,\n columnId: cell.column.id,\n value: cell.getValue(),\n };\n const contextActions =\n getCellContextMenuActions?.(cellContext).map((action) => ({\n key: action.label,\n label: action.label,\n icon: action.icon,\n onClick: () => action.onSelect(cellContext),\n })) ?? [];\n const cellElement = (\n <Table.Cell\n data-column-id={cell.column.id}\n width=\"fit-content\"\n maxWidth=\"12rem\"\n overflow=\"hidden\"\n padding=\"xs\"\n borderRight=\"1px solid\"\n borderColor=\"border.subtle\"\n _last={{ borderRight: \"none\" }}\n borderBottom=\"none\"\n key={cell.id}\n textStyle=\"paragraph/S/regular\"\n textOverflow=\"ellipsis\"\n whiteSpace=\"nowrap\"\n style={cellStyle}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Table.Cell>\n );\n\n if (contextActions.length === 0) return cellElement;\n\n return (\n <ResourceContextMenu key={cell.id} actions={contextActions}>\n {cellElement}\n </ResourceContextMenu>\n );\n};\n\ninterface DataTableBodyRowProps {\n row: Row<RowData>;\n noBorder?: boolean;\n rowIsInteractive: boolean;\n rowIsActive: boolean;\n rowIsSelected: boolean;\n onRowClick?: DataTableProps[\"onRowClick\"];\n getCellContextMenuActions?: DataTableProps[\"getCellContextMenuActions\"];\n}\n\nexport const DataTableBodyRow = (props: DataTableBodyRowProps) => {\n const { row, noBorder, rowIsInteractive, rowIsActive, rowIsSelected, onRowClick, getCellContextMenuActions } = props;\n\n return (\n <Table.Row\n key={row.id}\n data-active={rowIsActive ? \"true\" : undefined}\n data-selected={rowIsSelected ? \"true\" : undefined}\n aria-selected={rowIsSelected ? \"true\" : undefined}\n cursor={rowIsInteractive ? \"pointer\" : undefined}\n onClick={rowIsInteractive ? () => onRowClick?.(row.original) : undefined}\n borderTop={noBorder ? \"none\" : \"1px solid\"}\n borderBottom=\"1px solid\"\n borderRight={noBorder ? \"none\" : \"1px solid\"}\n _last={{ borderBottom: noBorder ? \"none\" : \"1px solid\", borderColor: \"border.subtle\" }}\n borderColor=\"border.subtle\"\n background={rowIsActive ? \"bg.active\" : \"bg\"}\n >\n {row.getVisibleCells().map((cell) => (\n <DataTableCellView key={cell.id} cell={cell} row={row} getCellContextMenuActions={getCellContextMenuActions} />\n ))}\n </Table.Row>\n );\n};\n","import { Button, Icon as ChakraIcon, Flex, IconButton, Menu, Portal, Stack, Text } from \"@chakra-ui/react\";\nimport type { useReactTable } from \"@tanstack/react-table\";\nimport { ChevronLeft, ChevronRight, ChevronsLeft, ChevronsRight } from \"lucide-react\";\n\nimport { NumberInputField, NumberInputRoot } from \"@/components/primitives/number-input\";\nimport { ListRow } from \"../list-row/list-row\";\nimport type { RowData } from \"./types\";\n\nexport function PaginationFooter({\n table,\n pageIndex,\n pageSize,\n pageSizeOptions,\n}: {\n table: ReturnType<typeof useReactTable<RowData>>;\n pageIndex: number;\n pageSize: number;\n pageSizeOptions: number[];\n}) {\n const totalPages = Math.max(table.getPageCount(), 1);\n const canGoBack = pageIndex > 0;\n const canGoForward = pageIndex < totalPages - 1;\n\n return (\n <Flex\n alignItems=\"center\"\n justifyContent=\"space-between\"\n borderTop=\"1px solid\"\n borderColor={\"border.subtle\"}\n paddingX=\"xs\"\n >\n <Text textStyle=\"label/S/regular\">{table.getCoreRowModel().rows.length} rows</Text>\n <Stack alignItems=\"center\" direction=\"row\" justifyContent=\"flex-end\" paddingY=\"xs\">\n <Flex alignItems=\"center\" gap=\"xs\" marginRight=\"sm\">\n <Text textStyle=\"label/S/regular\">Rows per page</Text>\n <Menu.Root>\n <Menu.Trigger asChild>\n <Button size=\"xs\" variant=\"outline\">\n {pageSize}\n </Button>\n </Menu.Trigger>\n <Portal>\n <Menu.Positioner>\n <Menu.Content zIndex=\"popover\" bg=\"bg\">\n {pageSizeOptions.map((option) => (\n <Menu.Item key={option} value={`${option}`} asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n label={`${option}`}\n isSelected={option === pageSize}\n onActivate={() => table.setPageSize(option)}\n />\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Positioner>\n </Portal>\n </Menu.Root>\n </Flex>\n <IconButton size=\"xs\" aria-label=\"Go to first page\" onClick={() => table.setPageIndex(0)} disabled={!canGoBack}>\n <ChakraIcon as={ChevronsLeft} boxSize=\"14px\" />\n </IconButton>\n <IconButton\n size=\"xs\"\n aria-label=\"Go to previous page\"\n onClick={() => table.setPageIndex(pageIndex - 1)}\n disabled={!canGoBack}\n >\n <ChakraIcon as={ChevronLeft} boxSize=\"14px\" />\n </IconButton>\n <IconButton\n size=\"xs\"\n aria-label=\"Go to next page\"\n onClick={() => table.setPageIndex(pageIndex + 1)}\n disabled={!canGoForward}\n >\n <ChakraIcon as={ChevronRight} boxSize=\"14px\" />\n </IconButton>\n <IconButton\n size=\"xs\"\n aria-label=\"Go to last page\"\n onClick={() => table.setPageIndex(table.getPageCount() - 1)}\n disabled={!canGoForward}\n >\n <ChakraIcon as={ChevronsRight} boxSize=\"14px\" />\n </IconButton>\n <Flex alignItems=\"center\" height=\"100%\" marginLeft=\"sm\" marginRight=\"md\" gap=\"xs\">\n <Text>Page</Text>\n <NumberInputRoot\n margin=\"2xs\"\n width=\"3rem\"\n size=\"xs\"\n min={1}\n max={totalPages}\n value={`${pageIndex + 1}`}\n onValueChange={(details) => {\n const next = Number.isNaN(details.valueAsNumber) ? 1 : details.valueAsNumber;\n const clamped = Math.min(totalPages, Math.max(1, next));\n table.setPageIndex(clamped - 1);\n }}\n >\n <NumberInputField className=\"nodrag\" />\n </NumberInputRoot>\n <Text>of {totalPages}</Text>\n </Flex>\n </Stack>\n </Flex>\n );\n}\n","import \"./data-table.css\";\n\nimport { Flex, Table } from \"@chakra-ui/react\";\nimport {\n getCoreRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n type PaginationState,\n type RowSelectionState,\n type SortingState,\n useReactTable,\n} from \"@tanstack/react-table\";\nimport { Fragment, useEffect, useState } from \"react\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\nimport { useKanbanRendererStore } from \"../kanban-renderer/use-kanban-renderer-store\";\nimport { buildColumns } from \"./build-columns\";\nimport { DataTableColumnMenu } from \"./data-table-column-menu\";\nimport { DataTableHeader } from \"./data-table-header\";\nimport {\n buildDataTableRendererAttributes,\n buildDataTableRendererRows,\n filterDataTableRows,\n getSelectedOriginalRows,\n reorderDataTableColumns,\n resolveDataTableColumnOrder,\n resolveDataTableRowId,\n resolveDataTableToolbarStorageKey,\n resolveInitialPageSize,\n resolveSelectionActions,\n shouldEnableSelection,\n shouldHighlightActiveRow,\n} from \"./data-table-state\";\nimport { DataTableStatsRow } from \"./data-table-stats-row\";\nimport { DataTableBodyRow, DataTableColumnHeader } from \"./data-table-table-parts\";\nimport { PaginationFooter } from \"./pagination-footer\";\nimport type { DataTableProps } from \"./types\";\n\nexport const DataTable = (props: DataTableProps) => {\n const {\n data,\n noBorder,\n fullWidth,\n hiddenColumns,\n onRowClick,\n isRowInteractive,\n activeRowId,\n columnIcons,\n columnDescriptions,\n compactHeaders,\n columnStats,\n columnRenderers,\n initialPageSize,\n pageSizeOptions = [10, 20, 30, 50, 100],\n rowActions = [],\n getRowId,\n toolbarStorageKey,\n enableRowActivation = false,\n getCellContextMenuActions,\n } = props;\n const [sorting, setSorting] = useState<SortingState>([]);\n const [pagination, setPagination] = useState<PaginationState>(() => ({\n pageIndex: 0,\n pageSize: resolveInitialPageSize({ initialPageSize }),\n }));\n const [rowSelection, setRowSelection] = useState<RowSelectionState>({});\n const [columnOrder, setColumnOrder] = useState<string[]>(() => {\n const propHiddenColumnsSet = new Set(hiddenColumns ?? []);\n return Object.keys(data[0] || {}).filter((key) => !propHiddenColumnsSet.has(key));\n });\n const [hiddenColumnMenuIds, setHiddenColumnMenuIds] = useState<Set<string>>(() => new Set());\n const hiddenColumnsSet = new Set(hiddenColumns ?? []);\n const baseColumnKeys = Object.keys(data[0] || {}).filter((key) => !hiddenColumnsSet.has(key));\n const orderedBaseColumnKeys = resolveDataTableColumnOrder(baseColumnKeys, columnOrder);\n const visibleColumnIds = new Set(orderedBaseColumnKeys.filter((key) => !hiddenColumnMenuIds.has(key)));\n const columnKeys = orderedBaseColumnKeys.filter((key) => visibleColumnIds.has(key));\n const enableSelection = shouldEnableSelection(props);\n const selectionActions = resolveSelectionActions(props);\n const rendererAttributes = buildDataTableRendererAttributes(data, orderedBaseColumnKeys, compactHeaders);\n const rendererRows = buildDataTableRendererRows(data, orderedBaseColumnKeys, getRowId);\n const resolvedToolbarStorageKey = resolveDataTableToolbarStorageKey({\n toolbarStorageKey,\n columnKeys: baseColumnKeys,\n });\n const filters = useKanbanRendererStore(resolvedToolbarStorageKey, (state) => state.filters, {\n settings: { viewMode: \"list\" },\n });\n const filteredRendererRows = filterDataTableRows(rendererRows, filters, rendererAttributes);\n const filteredData = filteredRendererRows.map((row) => row.sourceRow);\n const columns = buildColumns(data, columnKeys, {\n columnIcons,\n columnDescriptions,\n compactHeaders,\n enableSelection,\n rowActions,\n selectedRowIds: rowSelection,\n columnRenderers,\n });\n\n const table = useReactTable({\n data: filteredData,\n columns,\n defaultColumn: { size: 150, minSize: 40, maxSize: 800 },\n state: { sorting, pagination, rowSelection },\n getRowId: (row, index) => resolveDataTableRowId(row, index, getRowId),\n columnResizeMode: \"onChange\",\n columnResizeDirection: \"ltr\",\n onSortingChange: setSorting,\n onPaginationChange: setPagination,\n onRowSelectionChange: setRowSelection,\n getSortedRowModel: getSortedRowModel(),\n getCoreRowModel: getCoreRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n enableMultiRowSelection: enableSelection,\n enableRowSelection: enableSelection,\n autoResetAll: false,\n });\n\n useEffect(() => {\n const pageCount = table.getPageCount();\n if (pageCount === 0 || pagination.pageIndex < pageCount) return;\n\n setPagination((current) => ({\n ...current,\n pageIndex: Math.max(pageCount - 1, 0),\n }));\n }, [pagination.pageIndex, table]);\n\n const columnSizeVars = (() => {\n const headers = table.getFlatHeaders();\n const colSizes: Record<string, number> = {};\n for (let i = 0; i < headers.length; i++) {\n const header = headers[i]!;\n colSizes[`--header-${header.id}-size`] = header.getSize();\n colSizes[`--col-${header.column.id}-size`] = header.column.getSize();\n }\n return colSizes;\n })();\n\n const selectedRows = table.getSelectedRowModel().rows;\n const allRows = table.getCoreRowModel().rows;\n const selectedOriginalRows = getSelectedOriginalRows(selectedRows);\n const columnControl = (\n <DataTableColumnMenu\n columns={orderedBaseColumnKeys.map((columnId) => ({\n id: columnId,\n label: compactHeaders?.[columnId] ?? columnId,\n }))}\n visibleColumnIds={visibleColumnIds}\n onColumnToggle={(columnId) =>\n setHiddenColumnMenuIds((current) => {\n const next = new Set(current);\n if (next.has(columnId)) {\n next.delete(columnId);\n } else {\n next.add(columnId);\n }\n return next;\n })\n }\n onColumnReorder={(activeColumnId, overColumnId) =>\n setColumnOrder((current) =>\n reorderDataTableColumns(resolveDataTableColumnOrder(baseColumnKeys, current), activeColumnId, overColumnId),\n )\n }\n />\n );\n\n return (\n <Flex direction=\"column\" height=\"100%\" width=\"100%\">\n <DataTableHeader\n rows={rendererRows}\n storageKey={resolvedToolbarStorageKey}\n attributes={rendererAttributes}\n selectedCount={enableSelection ? selectedRows.length : 0}\n totalCount={allRows.length}\n visibleCount={filteredData.length}\n onClearSelection={() => table.toggleAllRowsSelected(false)}\n onSelectAll={() => table.toggleAllRowsSelected(true)}\n actions={selectionActions}\n selectedRows={selectedOriginalRows}\n columnControl={columnControl}\n />\n <ScrollArea height=\"100%\" maxWidth=\"unset\" showHorizontalScrollbar>\n <Table.Root\n className={`data-table${fullWidth ? \" full-width\" : \"\"}`}\n style={{ ...columnSizeVars, width: fullWidth ? \"100%\" : table.getTotalSize() }}\n >\n <Table.Header>\n {table.getHeaderGroups().map((headerGroup) => (\n <Fragment key={headerGroup.id}>\n <Table.Row\n className=\"data-table-column-header-row\"\n borderRight={noBorder ? \"none\" : \"1px solid\"}\n borderColor=\"border.subtle\"\n >\n {headerGroup.headers.map((header) => (\n <DataTableColumnHeader\n key={header.id}\n header={header}\n headerGroup={headerGroup}\n table={table}\n fullWidth={fullWidth}\n hasDescription={Boolean(columnDescriptions?.[header.column.id])}\n />\n ))}\n </Table.Row>\n {columnStats ? (\n <DataTableStatsRow\n headerGroup={headerGroup}\n rows={filteredData}\n columnStats={columnStats}\n noBorder={noBorder}\n fullWidth={fullWidth}\n />\n ) : null}\n </Fragment>\n ))}\n </Table.Header>\n <Table.Body>\n {table.getRowModel().rows.map((row) => {\n const rowIsInteractive = onRowClick ? (isRowInteractive?.(row.original) ?? true) : false;\n const rowIsActive = shouldHighlightActiveRow({ enableRowActivation, activeRowId, rowId: row.id });\n const rowIsSelected = row.getIsSelected();\n\n return (\n <DataTableBodyRow\n key={row.id}\n row={row}\n noBorder={noBorder}\n rowIsInteractive={rowIsInteractive}\n rowIsActive={rowIsActive}\n rowIsSelected={rowIsSelected}\n onRowClick={onRowClick}\n getCellContextMenuActions={getCellContextMenuActions}\n />\n );\n })}\n </Table.Body>\n </Table.Root>\n </ScrollArea>\n {table.getPageCount() > 1 && (\n <PaginationFooter\n table={table}\n pageIndex={pagination.pageIndex}\n pageSize={pagination.pageSize}\n pageSizeOptions={pageSizeOptions}\n />\n )}\n </Flex>\n );\n};\n"],"names":["resolveCategoricalColor","value","categories","find","category","Object","is","color","CategoricalColorCell","props","children","darkTextColor","lightTextColor","darkColorTarget","readableContrastRatio","expandShortHex","hex","split","map","character","join","parseHexColor","normalized","trim","startsWith","slice","expandedHex","length","test","r","Number","parseInt","g","b","toLinearChannel","channel","relativeLuminance","contrastRatio","foreground","background","foregroundLuminance","backgroundLuminance","lighter","Math","max","darker","min","toHexColor","toHexChannel","round","toString","padStart","mixRgbColors","start","end","endWeight","findMatchingForeground","target","step","candidate","resolveReadableTextColor","backgroundColor","darkText","lightText","darkerMatch","lighterMatch","mixHexColors","startColor","endColor","startWeight","resolveColorCellStyle","lightForeground","light","darkForeground","dark","toDisplayPercent","mixColors","mixedColor","mixThemeColors","undefined","resolveColorScaleValue","stops","isFinite","firstStop","lastStop","endIndex","findIndex","stop","startStop","endStop","ColorScaleCell","$","_c","t0","jsx","Text","isDisplayValue","isString","v","String","isNumber","isBoolean","Boolean","getType","values","comparableValues","sortValue","valueOf","isValidElement","filter","every","isNaN","Date","parse","headerIconProps","boxSize","marginRight","getIcon","type","ChakraIcon","CalendarClock","Type","Hash","CheckCircle2","formatDisplayValue","display","JSON","stringify","columnHelper","createColumnHelper","imageExtensionPattern","imageLabelPattern","humanizeKey","key","words","replace","toLowerCase","toUpperCase","formatPath","path","part","isPrimitiveArray","item","appendJsonFields","fields","Array","isArray","push","label","forEach","index","entries","parseJsonCellValue","buildJsonFields","field","isJsonImageValue","url","URL","protocol","pathname","isJsonImageArray","formatJsonPrimitive","formatJsonValue","getJsonCellSummary","parsedValue","keys","visibleValues","remainingCount","toReadOnlyValue","src","alt","images","image","buildFriendlyJsonParams","id","name","FriendlyJsonDisplay","t1","ParamEditor","stopRowActivation","event","stopPropagation","JsonCell","columnLabel","T0","T1","T2","summary","t10","t11","t2","t3","t4","t5","t6","t7","t8","t9","imageFields","flatMap","_temp","t12","Popover","Root","Symbol","for","placement","offset","mainAxis","Trigger","Button","HStack","_temp2","Braces","t13","ChevronRight","t14","t15","t16","overscrollBehavior","t17","Portal","ScrollArea","t18","field_0","Image","getSortValue","compareValues","valueA","valueB","localeCompare","toSingleLineElement","element","cloneElement","style","flexWrap","minWidth","whiteSpace","stopControlPropagation","SelectionHeader","table","checked","getIsAllRowsSelected","isIndeterminate","getIsSomeRowsSelected","Minus","Check","details","toggleAllRowsSelected","Checkbox","SelectionCell","row","selectedRowIds","toggleSelected","RowActionsCell","actions","IconButton","ChevronDown","action","Menu","ListRow","destructive","icon","onSelect","original","jsxs","FormattedCell","displayValue","bb0","chakra","DataCell","renderer","resolveDataCellStyle","buildColumns","data","columnKeys","options","columnIcons","columnDescriptions","compactHeaders","enableSelection","rowActions","columnRenderers","rowIndexColumn","accessor","_row","rowIndex","header","enableResizing","size","cell","info","getValue","selectionColumn","enableSorting","dataColumns","fallBackKey","columnValues","customIcon","headerIcon","columnDescription","headerLabel","Tooltip","CircleHelp","meta","getCellStyle","sortingFn","rowA","rowB","rowActionsColumn","DataTableColumnMenuRow","column","onColumnToggle","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","CSS","Transform","opacity","bg","GripVertical","Box","Icon","DataTableColumnMenu","columns","visibleColumnIds","onColumnReorder","query","setQuery","useState","activationConstraint","distance","sensors","useSensors","useSensor","PointerSensor","normalizedQuery","includes","filteredColumns","active","over","handleDragEnd","Columns3","Search","event_0","Input","column_1","has","Stack","SortableContext","verticalListSortingStrategy","DndContext","closestCenter","column_0","SelectionToolbar","selectedCount","totalCount","onClearSelection","onSelectAll","selectedRows","actionLabel","X","Flex","DataTableHeader","rows","storageKey","visibleCount","columnControl","leading","viewMode","KanbanRendererToolbar","defaultPageSize","resolveDataTableRowId","getRowId","resolveInitialPageSize","initialPageSize","getSelectedOriginalRows","resolveSelectionActions","selectionActions","onCSVDownload","shouldEnableSelection","selectionMode","shouldHighlightActiveRow","enableRowActivation","activeRowId","rowId","toAttributeValue","raw","isNumberColumn","columnKey","resolveAttributeType","kind","buildDataTableRendererAttributes","filterable","sortable","displayable","buildDataTableRendererRows","fromEntries","firstValue","title","sourceRow","filterDataTableRows","filters","filterRows","resolveDataTableColumnOrder","availableColumnIds","requestedColumnOrder","availableColumnIdSet","Set","orderedColumnIds","columnId","orderedColumnIdSet","missingColumnIds","reorderDataTableColumns","columnIds","activeColumnId","overColumnId","activeIndex","indexOf","overIndex","nextColumnIds","activeColumn","splice","resolveDataTableToolbarStorageKey","toolbarStorageKey","StatChartCrosshair","coordinate","useActiveTooltipCoordinate","plotArea","usePlotArea","y","height","x","width","DataTableStatChart","dataKey","ariaLabel","tooltipLabel","tooltipValue","tooltipSeriesLabel","layout","categoryKey","domain","barSize","barCategoryGap","series","chart","useChart","datum","getBarValue","datum_0","getCategoryValue","top","right","bottom","left","Fragment","XAxis","YAxis","Bar","payload","datum_1","Chart","zIndex","RechartsTooltip","BarChart","t19","getStatValue","getColumnStatValues","countUniqueStatValues","buildTopValuesStat","limit","counts","Map","set","get","groups","count","percentage","sort","topGroups","otherCount","reduce","total","group","buildHistogramStat","binCount","binWidth","bins","from","_","binIndex","floor","formatNumber","Intl","NumberFormat","maximumFractionDigits","format","UniqueStat","HistogramStat","histogram","TopValuesStat","_temp5","DataTableStat","stat","DataTableStatCell","headerGroup","columnStats","fullWidth","borderRight","headers","Table","DataTableStatsRow","noBorder","some","header_0","bin","_temp3","_temp4","utilityColumnIds","getSortMenuIcon","sortDirection","ArrowUpAZ","ArrowDownAZ","MoreVertical","DataTableColumnHeader","hasDescription","canSortColumn","getIsSorted","getCoreRowModel","SortIcon","flexRender","columnDef","getContext","tooltipContent","visibility","toggleSorting","clearSorting","getCanResize","onDoubleClick","resetSize","onMouseDown","getResizeHandler","onTouchStart","className","getIsResizing","DataTableCellView","getCellContextMenuActions","columnMeta","cellStyle","cellContext","onClick","contextActions","cellElement","ResourceContextMenu","DataTableBodyRow","rowIsInteractive","rowIsActive","rowIsSelected","onRowClick","borderBottom","borderColor","getVisibleCells","PaginationFooter","pageIndex","pageSize","pageSizeOptions","getPageCount","totalPages","canGoBack","canGoForward","option","setPageSize","setPageIndex","ChevronsLeft","ChevronLeft","t20","t21","t22","t23","ChevronsRight","t24","t25","t26","t27","next","valueAsNumber","clamped","t28","NumberInputField","t29","NumberInputRoot","t30","t31","t32","t33","DataTable","hiddenColumns","isRowInteractive","sorting","setSorting","pagination","setPagination","rowSelection","setRowSelection","columnOrder","setColumnOrder","propHiddenColumnsSet","hiddenColumnMenuIds","setHiddenColumnMenuIds","hiddenColumnsSet","baseColumnKeys","orderedBaseColumnKeys","rendererAttributes","rendererRows","resolvedToolbarStorageKey","useKanbanRendererStore","state","settings","filteredData","useReactTable","defaultColumn","minSize","maxSize","columnResizeMode","columnResizeDirection","onSortingChange","onPaginationChange","onRowSelectionChange","getSortedRowModel","getPaginationRowModel","enableMultiRowSelection","enableRowSelection","autoResetAll","useEffect","pageCount","current","columnSizeVars","getFlatHeaders","colSizes","i","getSize","getSelectedRowModel","allRows","selectedOriginalRows","delete","add","getTotalSize","getHeaderGroups","getRowModel","getIsSelected"],"mappings":"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"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { jsx as m, jsxs as R } from "react/jsx-runtime";
|
|
2
|
+
import { c as _ } from "react/compiler-runtime";
|
|
3
|
+
import { Span as b, Box as A } from "@chakra-ui/react";
|
|
4
|
+
import { DiffModeEnum as E, DiffView as N } from "@git-diff-view/react";
|
|
5
|
+
import "@git-diff-view/react/styles/diff-view.css";
|
|
6
|
+
import { useRef as V } from "react";
|
|
7
|
+
import { generateDiffFile as z } from "@git-diff-view/file";
|
|
8
|
+
const te = (t) => {
|
|
9
|
+
const e = _(20), {
|
|
10
|
+
fileName: o,
|
|
11
|
+
additions: i,
|
|
12
|
+
deletions: n,
|
|
13
|
+
label: a,
|
|
14
|
+
variant: f,
|
|
15
|
+
size: l,
|
|
16
|
+
onClick: r,
|
|
17
|
+
onClickFileLink: s
|
|
18
|
+
} = t, h = f === void 0 ? "outline" : f, j = (l === void 0 ? "default" : l) === "small", v = h === "outline" ? "1px solid" : "none", w = h === "outline" ? j ? "3xs" : "2xs" : "2px", k = j ? "label/S/regular" : void 0, D = r ? "pointer" : "default", y = r ? "bg.muted" : "none";
|
|
19
|
+
let d;
|
|
20
|
+
e[0] !== y ? (d = {
|
|
21
|
+
background: y
|
|
22
|
+
}, e[0] = y, e[1] = d) : d = e[1];
|
|
23
|
+
let c;
|
|
24
|
+
e[2] !== o || e[3] !== s ? (c = o && /* @__PURE__ */ m(b, { display: "inline-block", maxW: "24ch", truncate: !0, mr: "xs", title: o, onClick: (F) => {
|
|
25
|
+
F.stopPropagation(), s?.();
|
|
26
|
+
}, cursor: s ? "pointer" : "default", _hover: {
|
|
27
|
+
textDecoration: s ? "underline" : "none",
|
|
28
|
+
color: s ? "fg.blue-dark" : "fg.muted"
|
|
29
|
+
}, children: o }), e[2] = o, e[3] = s, e[4] = c) : c = e[4];
|
|
30
|
+
const L = `+${i}`;
|
|
31
|
+
let u;
|
|
32
|
+
e[5] !== L ? (u = /* @__PURE__ */ m(b, { color: "fg.success", children: L }), e[5] = L, e[6] = u) : u = e[6];
|
|
33
|
+
const C = `-${n}`;
|
|
34
|
+
let g;
|
|
35
|
+
e[7] !== C ? (g = /* @__PURE__ */ m(b, { color: "fg.error", children: C }), e[7] = C, e[8] = g) : g = e[8];
|
|
36
|
+
let x;
|
|
37
|
+
return e[9] !== a || e[10] !== r || e[11] !== u || e[12] !== g || e[13] !== v || e[14] !== w || e[15] !== k || e[16] !== D || e[17] !== d || e[18] !== c ? (x = /* @__PURE__ */ R(b, { display: "inline-flex", alignItems: "center", gap: "2xs", border: v, borderColor: "border.subtle", color: "fg.muted", paddingX: w, paddingY: "1px", borderRadius: "xs", textStyle: k, cursor: D, onClick: r, _hover: d, children: [
|
|
38
|
+
a,
|
|
39
|
+
c,
|
|
40
|
+
u,
|
|
41
|
+
g
|
|
42
|
+
] }), e[9] = a, e[10] = r, e[11] = u, e[12] = g, e[13] = v, e[14] = w, e[15] = k, e[16] = D, e[17] = d, e[18] = c, e[19] = x) : x = e[19], x;
|
|
43
|
+
}, W = "before.txt", B = "after.txt", H = 100, M = {
|
|
44
|
+
ts: "typescript",
|
|
45
|
+
tsx: "typescript",
|
|
46
|
+
js: "javascript",
|
|
47
|
+
jsx: "javascript",
|
|
48
|
+
json: "json",
|
|
49
|
+
md: "markdown",
|
|
50
|
+
py: "python",
|
|
51
|
+
go: "go",
|
|
52
|
+
rs: "rust",
|
|
53
|
+
css: "css",
|
|
54
|
+
html: "html",
|
|
55
|
+
sh: "shell",
|
|
56
|
+
yml: "yaml",
|
|
57
|
+
yaml: "yaml"
|
|
58
|
+
}, P = (t) => (t.split(/[\\/]/).pop() ?? t).split(".").pop()?.toLowerCase(), T = ({
|
|
59
|
+
language: t,
|
|
60
|
+
oldPath: e,
|
|
61
|
+
newPath: o
|
|
62
|
+
}) => {
|
|
63
|
+
if (t)
|
|
64
|
+
return t;
|
|
65
|
+
const i = P(o ?? e ?? "");
|
|
66
|
+
return i ? M[i] ?? "plaintext" : "plaintext";
|
|
67
|
+
}, p = /* @__PURE__ */ new Map(), I = ({
|
|
68
|
+
original: t,
|
|
69
|
+
modified: e,
|
|
70
|
+
language: o,
|
|
71
|
+
oldPath: i,
|
|
72
|
+
newPath: n
|
|
73
|
+
}) => [t, e, o ?? "", i ?? "", n ?? ""].join("\0"), K = (t) => {
|
|
74
|
+
const e = t.join(`
|
|
75
|
+
`).split(`
|
|
76
|
+
`);
|
|
77
|
+
let o = 0, i = 0, n = 0, a = !1, f = 0, l = 0;
|
|
78
|
+
const r = () => {
|
|
79
|
+
o += f + l, i += Math.max(f, l), f = 0, l = 0;
|
|
80
|
+
};
|
|
81
|
+
for (const s of e)
|
|
82
|
+
s.startsWith("@@") ? (r(), n += 1, a = !0) : a && (s.startsWith("+") ? f += 1 : s.startsWith("-") ? l += 1 : s.startsWith(" ") && (r(), o += 1, i += 1));
|
|
83
|
+
return r(), {
|
|
84
|
+
unifiedContentRows: o,
|
|
85
|
+
splitContentRows: i,
|
|
86
|
+
hunkRows: n
|
|
87
|
+
};
|
|
88
|
+
}, $ = ({
|
|
89
|
+
original: t,
|
|
90
|
+
modified: e,
|
|
91
|
+
language: o,
|
|
92
|
+
oldPath: i,
|
|
93
|
+
newPath: n
|
|
94
|
+
}) => {
|
|
95
|
+
const a = i ?? n ?? W, f = n ?? i ?? B, l = T({
|
|
96
|
+
language: o,
|
|
97
|
+
oldPath: i,
|
|
98
|
+
newPath: n
|
|
99
|
+
}), r = z(a, t, f, e, l, l, {
|
|
100
|
+
context: 3
|
|
101
|
+
});
|
|
102
|
+
return {
|
|
103
|
+
oldFile: {
|
|
104
|
+
fileName: a,
|
|
105
|
+
fileLang: l,
|
|
106
|
+
content: t
|
|
107
|
+
},
|
|
108
|
+
newFile: {
|
|
109
|
+
fileName: f,
|
|
110
|
+
fileLang: l,
|
|
111
|
+
content: e
|
|
112
|
+
},
|
|
113
|
+
hunks: r._diffList,
|
|
114
|
+
...K(r._diffList)
|
|
115
|
+
};
|
|
116
|
+
}, X = (t) => {
|
|
117
|
+
const e = I(t), o = p.get(e);
|
|
118
|
+
if (o) return o;
|
|
119
|
+
const i = $(t);
|
|
120
|
+
if (p.size >= H) {
|
|
121
|
+
const n = p.keys().next().value;
|
|
122
|
+
n !== void 0 && p.delete(n);
|
|
123
|
+
}
|
|
124
|
+
return p.set(e, i), i;
|
|
125
|
+
}, q = (t, e) => t.original === e.original && t.modified === e.modified && t.language === e.language && t.oldPath === e.oldPath && t.newPath === e.newPath, O = (t, e, o) => t && q(t.input, e) ? t : {
|
|
126
|
+
input: e,
|
|
127
|
+
data: o()
|
|
128
|
+
};
|
|
129
|
+
function oe(t) {
|
|
130
|
+
const {
|
|
131
|
+
original: e,
|
|
132
|
+
modified: o,
|
|
133
|
+
language: i,
|
|
134
|
+
oldPath: n,
|
|
135
|
+
newPath: a,
|
|
136
|
+
sideBySide: f = !1,
|
|
137
|
+
disableScroll: l = !0,
|
|
138
|
+
data: r
|
|
139
|
+
} = t, s = V(null), h = {
|
|
140
|
+
original: e,
|
|
141
|
+
modified: o,
|
|
142
|
+
language: i,
|
|
143
|
+
oldPath: n,
|
|
144
|
+
newPath: a
|
|
145
|
+
};
|
|
146
|
+
s.current = O(s.current, h, () => r ?? X({
|
|
147
|
+
original: e,
|
|
148
|
+
modified: o,
|
|
149
|
+
language: i,
|
|
150
|
+
oldPath: n,
|
|
151
|
+
newPath: a
|
|
152
|
+
}));
|
|
153
|
+
const S = f ? E.Split : E.Unified;
|
|
154
|
+
return /* @__PURE__ */ m(A, { height: "100%", width: "100%", position: "relative", zIndex: "0", overflow: l ? "hidden" : "auto", bg: "bg", css: {
|
|
155
|
+
"& .gdv-root, & .gdv-view, & .gdv-file, & .gdv-content, & .gdv-hunk, & .gdv-line": {
|
|
156
|
+
background: "var(--chakra-colors-bg)"
|
|
157
|
+
},
|
|
158
|
+
"& .gdv-root": {
|
|
159
|
+
border: "none",
|
|
160
|
+
borderRadius: "0"
|
|
161
|
+
},
|
|
162
|
+
"& .gdv-line-number": {
|
|
163
|
+
fontSize: "11px"
|
|
164
|
+
}
|
|
165
|
+
}, children: /* @__PURE__ */ m(
|
|
166
|
+
N,
|
|
167
|
+
{
|
|
168
|
+
data: s.current.data,
|
|
169
|
+
diffViewMode: S,
|
|
170
|
+
diffViewTheme: "dark",
|
|
171
|
+
diffViewHighlight: !0,
|
|
172
|
+
diffViewWrap: !1,
|
|
173
|
+
diffViewFontSize: 11
|
|
174
|
+
}
|
|
175
|
+
) });
|
|
176
|
+
}
|
|
177
|
+
export {
|
|
178
|
+
oe as D,
|
|
179
|
+
te as a,
|
|
180
|
+
X as b
|
|
181
|
+
};
|
|
182
|
+
//# sourceMappingURL=diff-editor-BnfV8cYB.js.map
|