@alneas/appkit-react 0.1.0 → 0.2.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/CHANGELOG.md +53 -0
- package/README.md +85 -15
- package/consumer-ai/SKILL.md +12 -0
- package/consumer-ai/api-index.json +103754 -0
- package/consumer-ai/package-context.json +409 -0
- package/dist/ai/action/ExecutionHistory.cjs.map +1 -1
- package/dist/ai/action/ExecutionHistory.d.cts +32 -2
- package/dist/ai/action/ExecutionHistory.d.ts +32 -2
- package/dist/ai/action/ExecutionHistory.js.map +1 -1
- package/dist/ai/action/ScreenActionContext.cjs.map +1 -1
- package/dist/ai/action/ScreenActionContext.d.cts +15 -2
- package/dist/ai/action/ScreenActionContext.d.ts +15 -2
- package/dist/ai/action/ScreenActionContext.js.map +1 -1
- package/dist/ai/action/context.cjs.map +1 -1
- package/dist/ai/action/context.d.cts +19 -3
- package/dist/ai/action/context.d.ts +19 -3
- package/dist/ai/action/context.js.map +1 -1
- package/dist/ai/action/types.d.cts +35 -3
- package/dist/ai/action/types.d.ts +35 -3
- package/dist/ai/action/use-execution-session.cjs.map +1 -1
- package/dist/ai/action/use-execution-session.d.cts +17 -1
- package/dist/ai/action/use-execution-session.d.ts +17 -1
- package/dist/ai/action/use-execution-session.js.map +1 -1
- package/dist/ai/action/use-screen-action-registry.cjs.map +1 -1
- package/dist/ai/action/use-screen-action-registry.d.cts +77 -8
- package/dist/ai/action/use-screen-action-registry.d.ts +77 -8
- package/dist/ai/action/use-screen-action-registry.js.map +1 -1
- package/dist/ai/action/use-screen-action.cjs.map +1 -1
- package/dist/ai/action/use-screen-action.d.cts +23 -6
- package/dist/ai/action/use-screen-action.d.ts +23 -6
- package/dist/ai/action/use-screen-action.js.map +1 -1
- package/dist/ai/action/use-screen-context.cjs.map +1 -1
- package/dist/ai/action/use-screen-context.d.cts +42 -5
- package/dist/ai/action/use-screen-context.d.ts +42 -5
- package/dist/ai/action/use-screen-context.js.map +1 -1
- package/dist/ai/ai-chat/transport.cjs.map +1 -1
- package/dist/ai/ai-chat/transport.d.cts +35 -8
- package/dist/ai/ai-chat/transport.d.ts +35 -8
- package/dist/ai/ai-chat/transport.js.map +1 -1
- package/dist/ai/generative-ui/GenerativeUIRenderer.cjs.map +1 -1
- package/dist/ai/generative-ui/GenerativeUIRenderer.d.cts +21 -3
- package/dist/ai/generative-ui/GenerativeUIRenderer.d.ts +21 -3
- package/dist/ai/generative-ui/GenerativeUIRenderer.js.map +1 -1
- package/dist/ai/generative-ui/error-boundary.cjs.map +1 -1
- package/dist/ai/generative-ui/error-boundary.d.cts +98 -2
- package/dist/ai/generative-ui/error-boundary.d.ts +98 -2
- package/dist/ai/generative-ui/error-boundary.js.map +1 -1
- package/dist/ai/generative-ui/registry.cjs.map +1 -1
- package/dist/ai/generative-ui/registry.d.cts +96 -7
- package/dist/ai/generative-ui/registry.d.ts +96 -7
- package/dist/ai/generative-ui/registry.js.map +1 -1
- package/dist/ai/proposal/ProposalFieldReview.cjs.map +1 -1
- package/dist/ai/proposal/ProposalFieldReview.d.cts +170 -8
- package/dist/ai/proposal/ProposalFieldReview.d.ts +170 -8
- package/dist/ai/proposal/ProposalFieldReview.js.map +1 -1
- package/dist/ai/proposal/types.d.cts +97 -26
- package/dist/ai/proposal/types.d.ts +97 -26
- package/dist/ai/proposal/use-proposal-batch-review.cjs.map +1 -1
- package/dist/ai/proposal/use-proposal-batch-review.d.cts +133 -7
- package/dist/ai/proposal/use-proposal-batch-review.d.ts +133 -7
- package/dist/ai/proposal/use-proposal-batch-review.js.map +1 -1
- package/dist/ai/proposal/use-proposal-review.cjs.map +1 -1
- package/dist/ai/proposal/use-proposal-review.d.cts +47 -5
- package/dist/ai/proposal/use-proposal-review.d.ts +47 -5
- package/dist/ai/proposal/use-proposal-review.js.map +1 -1
- package/dist/avatar.svg +1 -0
- package/dist/consumer-ai/SKILL.md +6 -0
- package/dist/consumer-ai/api-index.json +103754 -0
- package/dist/consumer-ai/package-context.json +5 -3
- package/dist/mockServiceWorker.js +361 -0
- package/dist/styles.css +1 -1
- package/dist/tools/components/auth/AuthForms.cjs.map +1 -1
- package/dist/tools/components/auth/AuthForms.d.cts +131 -81
- package/dist/tools/components/auth/AuthForms.d.ts +131 -81
- package/dist/tools/components/auth/AuthForms.js.map +1 -1
- package/dist/tools/components/auth/AuthGuard.cjs.map +1 -1
- package/dist/tools/components/auth/AuthGuard.d.cts +31 -4
- package/dist/tools/components/auth/AuthGuard.d.ts +31 -4
- package/dist/tools/components/auth/AuthGuard.js.map +1 -1
- package/dist/tools/components/auth/AuthProvider.cjs.map +1 -1
- package/dist/tools/components/auth/AuthProvider.d.cts +39 -42
- package/dist/tools/components/auth/AuthProvider.d.ts +39 -42
- package/dist/tools/components/auth/AuthProvider.js.map +1 -1
- package/dist/tools/components/auth/ProtectedRoute.cjs.map +1 -1
- package/dist/tools/components/auth/ProtectedRoute.d.cts +75 -60
- package/dist/tools/components/auth/ProtectedRoute.d.ts +75 -60
- package/dist/tools/components/auth/ProtectedRoute.js.map +1 -1
- package/dist/tools/components/auth/SignInButton.cjs.map +1 -1
- package/dist/tools/components/auth/SignInButton.d.cts +26 -18
- package/dist/tools/components/auth/SignInButton.d.ts +26 -18
- package/dist/tools/components/auth/SignInButton.js.map +1 -1
- package/dist/tools/components/auth/UserProfileProvider.cjs.map +1 -1
- package/dist/tools/components/auth/UserProfileProvider.d.cts +48 -20
- package/dist/tools/components/auth/UserProfileProvider.d.ts +48 -20
- package/dist/tools/components/auth/UserProfileProvider.js.map +1 -1
- package/dist/tools/components/auth/adapters/better-auth-adapter.cjs.map +1 -1
- package/dist/tools/components/auth/adapters/better-auth-adapter.d.cts +371 -51
- package/dist/tools/components/auth/adapters/better-auth-adapter.d.ts +371 -51
- package/dist/tools/components/auth/adapters/better-auth-adapter.js.map +1 -1
- package/dist/tools/components/auth/adapters/mock-adapter.cjs.map +1 -1
- package/dist/tools/components/auth/adapters/mock-adapter.d.cts +149 -28
- package/dist/tools/components/auth/adapters/mock-adapter.d.ts +149 -28
- package/dist/tools/components/auth/adapters/mock-adapter.js.map +1 -1
- package/dist/tools/components/auth/auth-session.cjs.map +1 -1
- package/dist/tools/components/auth/auth-session.d.cts +147 -1
- package/dist/tools/components/auth/auth-session.d.ts +147 -1
- package/dist/tools/components/auth/auth-session.js.map +1 -1
- package/dist/tools/components/auth/session-cache.cjs.map +1 -1
- package/dist/tools/components/auth/session-cache.d.cts +88 -24
- package/dist/tools/components/auth/session-cache.d.ts +88 -24
- package/dist/tools/components/auth/session-cache.js.map +1 -1
- package/dist/tools/components/auth/types.cjs.map +1 -1
- package/dist/tools/components/auth/types.d.cts +329 -106
- package/dist/tools/components/auth/types.d.ts +329 -106
- package/dist/tools/components/auth/types.js.map +1 -1
- package/dist/tools/components/auth/useAuth.cjs.map +1 -1
- package/dist/tools/components/auth/useAuth.d.cts +110 -17
- package/dist/tools/components/auth/useAuth.d.ts +110 -17
- package/dist/tools/components/auth/useAuth.js.map +1 -1
- package/dist/tools/components/auth/useAuthGuard.cjs.map +1 -1
- package/dist/tools/components/auth/useAuthGuard.d.cts +49 -38
- package/dist/tools/components/auth/useAuthGuard.d.ts +49 -38
- package/dist/tools/components/auth/useAuthGuard.js.map +1 -1
- package/dist/tools/components/auth/useRoleCheck.cjs.map +1 -1
- package/dist/tools/components/auth/useRoleCheck.d.cts +48 -1
- package/dist/tools/components/auth/useRoleCheck.d.ts +48 -1
- package/dist/tools/components/auth/useRoleCheck.js.map +1 -1
- package/dist/tools/components/auth/useUserProfile.cjs.map +1 -1
- package/dist/tools/components/auth/useUserProfile.d.cts +66 -1
- package/dist/tools/components/auth/useUserProfile.d.ts +66 -1
- package/dist/tools/components/auth/useUserProfile.js.map +1 -1
- package/dist/tools/components/barcode/BarcodeGenerator.cjs.map +1 -1
- package/dist/tools/components/barcode/BarcodeGenerator.d.cts +32 -18
- package/dist/tools/components/barcode/BarcodeGenerator.d.ts +32 -18
- package/dist/tools/components/barcode/BarcodeGenerator.js.map +1 -1
- package/dist/tools/components/barcode/QRCodeGenerator.cjs +1 -1
- package/dist/tools/components/barcode/QRCodeGenerator.cjs.map +1 -1
- package/dist/tools/components/barcode/QRCodeGenerator.d.cts +20 -13
- package/dist/tools/components/barcode/QRCodeGenerator.d.ts +20 -13
- package/dist/tools/components/barcode/QRCodeGenerator.js +1 -1
- package/dist/tools/components/barcode/QRCodeGenerator.js.map +1 -1
- package/dist/tools/components/barcode/QRCodeScanner.cjs.map +1 -1
- package/dist/tools/components/barcode/QRCodeScanner.d.cts +32 -1
- package/dist/tools/components/barcode/QRCodeScanner.d.ts +32 -1
- package/dist/tools/components/barcode/QRCodeScanner.js.map +1 -1
- package/dist/tools/components/calendar/ResourceCalendar.cjs.map +1 -1
- package/dist/tools/components/calendar/ResourceCalendar.d.cts +17 -42
- package/dist/tools/components/calendar/ResourceCalendar.d.ts +17 -42
- package/dist/tools/components/calendar/ResourceCalendar.js.map +1 -1
- package/dist/tools/components/calendar/views/ResourceView.cjs +1 -1
- package/dist/tools/components/calendar/views/ResourceView.cjs.map +1 -1
- package/dist/tools/components/calendar/views/ResourceView.js +2 -2
- package/dist/tools/components/calendar/views/ResourceView.js.map +1 -1
- package/dist/tools/components/chart/ComposedChart.cjs.map +1 -1
- package/dist/tools/components/chart/ComposedChart.d.cts +54 -1
- package/dist/tools/components/chart/ComposedChart.d.ts +54 -1
- package/dist/tools/components/chart/ComposedChart.js.map +1 -1
- package/dist/tools/components/chart/SimpleAreaChart.cjs.map +1 -1
- package/dist/tools/components/chart/SimpleAreaChart.d.cts +41 -1
- package/dist/tools/components/chart/SimpleAreaChart.d.ts +41 -1
- package/dist/tools/components/chart/SimpleAreaChart.js.map +1 -1
- package/dist/tools/components/chart/SimpleBarChart.cjs.map +1 -1
- package/dist/tools/components/chart/SimpleBarChart.d.cts +34 -24
- package/dist/tools/components/chart/SimpleBarChart.d.ts +34 -24
- package/dist/tools/components/chart/SimpleBarChart.js.map +1 -1
- package/dist/tools/components/chart/SimpleLineChart.cjs.map +1 -1
- package/dist/tools/components/chart/SimpleLineChart.d.cts +31 -28
- package/dist/tools/components/chart/SimpleLineChart.d.ts +31 -28
- package/dist/tools/components/chart/SimpleLineChart.js.map +1 -1
- package/dist/tools/components/chart/SimplePieChart.cjs.map +1 -1
- package/dist/tools/components/chart/SimplePieChart.d.cts +28 -22
- package/dist/tools/components/chart/SimplePieChart.d.ts +28 -22
- package/dist/tools/components/chart/SimplePieChart.js.map +1 -1
- package/dist/tools/components/chart/SimpleRadarChart.cjs.map +1 -1
- package/dist/tools/components/chart/SimpleRadarChart.d.cts +38 -1
- package/dist/tools/components/chart/SimpleRadarChart.d.ts +38 -1
- package/dist/tools/components/chart/SimpleRadarChart.js.map +1 -1
- package/dist/tools/components/chart/SimpleScatterChart.cjs.map +1 -1
- package/dist/tools/components/chart/SimpleScatterChart.d.cts +44 -1
- package/dist/tools/components/chart/SimpleScatterChart.d.ts +44 -1
- package/dist/tools/components/chart/SimpleScatterChart.js.map +1 -1
- package/dist/tools/components/chart/StackedBarChart.cjs.map +1 -1
- package/dist/tools/components/chart/StackedBarChart.d.cts +38 -1
- package/dist/tools/components/chart/StackedBarChart.d.ts +38 -1
- package/dist/tools/components/chart/StackedBarChart.js.map +1 -1
- package/dist/tools/components/data-table/data-table.cjs +1 -1
- package/dist/tools/components/data-table/data-table.cjs.map +1 -1
- package/dist/tools/components/data-table/data-table.js +286 -263
- package/dist/tools/components/data-table/data-table.js.map +1 -1
- package/dist/tools/components/data-table/table-utils.cjs.map +1 -1
- package/dist/tools/components/data-table/table-utils.d.cts +45 -35
- package/dist/tools/components/data-table/table-utils.d.ts +45 -35
- package/dist/tools/components/data-table/table-utils.js.map +1 -1
- package/dist/tools/components/editable-table/editable-table.cjs +1 -1
- package/dist/tools/components/editable-table/editable-table.cjs.map +1 -1
- package/dist/tools/components/editable-table/editable-table.js +15 -2
- package/dist/tools/components/editable-table/editable-table.js.map +1 -1
- package/dist/tools/components/error/ErrorDialog.cjs +1 -1
- package/dist/tools/components/error/ErrorDialog.cjs.map +1 -1
- package/dist/tools/components/error/ErrorDialog.js +1 -1
- package/dist/tools/components/error/ErrorDialog.js.map +1 -1
- package/dist/tools/components/error/ErrorInline.cjs +1 -1
- package/dist/tools/components/error/ErrorInline.cjs.map +1 -1
- package/dist/tools/components/error/ErrorInline.js +1 -1
- package/dist/tools/components/error/ErrorInline.js.map +1 -1
- package/dist/tools/components/error/ErrorNotification.cjs +1 -1
- package/dist/tools/components/error/ErrorNotification.cjs.map +1 -1
- package/dist/tools/components/error/ErrorNotification.js +10 -10
- package/dist/tools/components/error/ErrorNotification.js.map +1 -1
- package/dist/tools/components/file-browser/FilePreview.cjs +1 -1
- package/dist/tools/components/file-browser/FilePreview.cjs.map +1 -1
- package/dist/tools/components/file-browser/FilePreview.js +28 -26
- package/dist/tools/components/file-browser/FilePreview.js.map +1 -1
- package/dist/tools/components/filter/filter.cjs.map +1 -1
- package/dist/tools/components/filter/filter.d.cts +23 -34
- package/dist/tools/components/filter/filter.d.ts +23 -34
- package/dist/tools/components/filter/filter.js.map +1 -1
- package/dist/tools/components/form/EnhancedDetailPage.cjs.map +1 -1
- package/dist/tools/components/form/EnhancedDetailPage.d.cts +47 -42
- package/dist/tools/components/form/EnhancedDetailPage.d.ts +47 -42
- package/dist/tools/components/form/EnhancedDetailPage.js.map +1 -1
- package/dist/tools/components/form/form-grid.cjs.map +1 -1
- package/dist/tools/components/form/form-grid.d.cts +44 -22
- package/dist/tools/components/form/form-grid.d.ts +44 -22
- package/dist/tools/components/form/form-grid.js.map +1 -1
- package/dist/tools/components/gantt/GanttChart.cjs +1 -1
- package/dist/tools/components/gantt/GanttChart.cjs.map +1 -1
- package/dist/tools/components/gantt/GanttChart.d.cts +20 -1
- package/dist/tools/components/gantt/GanttChart.d.ts +20 -1
- package/dist/tools/components/gantt/GanttChart.js +3 -0
- package/dist/tools/components/gantt/GanttChart.js.map +1 -1
- package/dist/tools/components/gantt/components/GanttTaskBar.cjs +1 -1
- package/dist/tools/components/gantt/components/GanttTaskBar.cjs.map +1 -1
- package/dist/tools/components/gantt/components/GanttTaskBar.js +2 -1
- package/dist/tools/components/gantt/components/GanttTaskBar.js.map +1 -1
- package/dist/tools/components/header/header.cjs +1 -1
- package/dist/tools/components/header/header.cjs.map +1 -1
- package/dist/tools/components/header/header.d.cts +103 -40
- package/dist/tools/components/header/header.d.ts +103 -40
- package/dist/tools/components/header/header.js +1 -1
- package/dist/tools/components/header/header.js.map +1 -1
- package/dist/tools/components/i18n/LanguageSwitcher.cjs.map +1 -1
- package/dist/tools/components/i18n/LanguageSwitcher.d.cts +18 -14
- package/dist/tools/components/i18n/LanguageSwitcher.d.ts +18 -14
- package/dist/tools/components/i18n/LanguageSwitcher.js.map +1 -1
- package/dist/tools/components/kanban/KanbanBoard.cjs +1 -1
- package/dist/tools/components/kanban/KanbanBoard.cjs.map +1 -1
- package/dist/tools/components/kanban/KanbanBoard.d.cts +16 -34
- package/dist/tools/components/kanban/KanbanBoard.d.ts +16 -34
- package/dist/tools/components/kanban/KanbanBoard.js +3 -0
- package/dist/tools/components/kanban/KanbanBoard.js.map +1 -1
- package/dist/tools/components/kanban/KanbanColumn.cjs +1 -1
- package/dist/tools/components/kanban/KanbanColumn.cjs.map +1 -1
- package/dist/tools/components/kanban/KanbanColumn.js +1 -1
- package/dist/tools/components/kanban/KanbanColumn.js.map +1 -1
- package/dist/tools/components/kanban/kanban-compound.cjs +1 -1
- package/dist/tools/components/kanban/kanban-compound.cjs.map +1 -1
- package/dist/tools/components/kanban/kanban-compound.js +4 -1
- package/dist/tools/components/kanban/kanban-compound.js.map +1 -1
- package/dist/tools/components/kanban/kanban-primitives.cjs +1 -1
- package/dist/tools/components/kanban/kanban-primitives.cjs.map +1 -1
- package/dist/tools/components/kanban/kanban-primitives.js +0 -1
- package/dist/tools/components/kanban/kanban-primitives.js.map +1 -1
- package/dist/tools/components/priority-queue/PriorityCard.cjs +1 -1
- package/dist/tools/components/priority-queue/PriorityCard.cjs.map +1 -1
- package/dist/tools/components/priority-queue/PriorityCard.js +3 -1
- package/dist/tools/components/priority-queue/PriorityCard.js.map +1 -1
- package/dist/tools/components/sidebar/SmartSidebar.cjs.map +1 -1
- package/dist/tools/components/sidebar/SmartSidebar.d.cts +41 -43
- package/dist/tools/components/sidebar/SmartSidebar.d.ts +41 -43
- package/dist/tools/components/sidebar/SmartSidebar.js.map +1 -1
- package/dist/tools/components/splash/SplashScreen.cjs.map +1 -1
- package/dist/tools/components/splash/SplashScreen.d.cts +43 -68
- package/dist/tools/components/splash/SplashScreen.d.ts +43 -68
- package/dist/tools/components/splash/SplashScreen.js.map +1 -1
- package/dist/tools/components/workflow/WorkflowStatusPanel.cjs +1 -1
- package/dist/tools/components/workflow/WorkflowStatusPanel.cjs.map +1 -1
- package/dist/tools/components/workflow/WorkflowStatusPanel.js +2 -2
- package/dist/tools/components/workflow/WorkflowStatusPanel.js.map +1 -1
- package/dist/tools/lib/data-access/data-access-context.cjs.map +1 -1
- package/dist/tools/lib/data-access/data-access-context.d.cts +15 -6
- package/dist/tools/lib/data-access/data-access-context.d.ts +15 -6
- package/dist/tools/lib/data-access/data-access-context.js.map +1 -1
- package/dist/tools/lib/data-access/react-query-provider.cjs.map +1 -1
- package/dist/tools/lib/data-access/react-query-provider.d.cts +19 -2
- package/dist/tools/lib/data-access/react-query-provider.d.ts +19 -2
- package/dist/tools/lib/data-access/react-query-provider.js.map +1 -1
- package/dist/tools/lib/data-access/react-query.cjs.map +1 -1
- package/dist/tools/lib/data-access/react-query.d.cts +365 -90
- package/dist/tools/lib/data-access/react-query.d.ts +365 -90
- package/dist/tools/lib/data-access/react-query.js.map +1 -1
- package/dist/tools/lib/error/AppError.cjs.map +1 -1
- package/dist/tools/lib/error/AppError.d.cts +157 -63
- package/dist/tools/lib/error/AppError.d.ts +157 -63
- package/dist/tools/lib/error/AppError.js.map +1 -1
- package/dist/tools/lib/hooks/useAsyncWithTimeout.cjs.map +1 -1
- package/dist/tools/lib/hooks/useAsyncWithTimeout.d.cts +79 -26
- package/dist/tools/lib/hooks/useAsyncWithTimeout.d.ts +79 -26
- package/dist/tools/lib/hooks/useAsyncWithTimeout.js.map +1 -1
- package/dist/tools/lib/hooks/useError.cjs.map +1 -1
- package/dist/tools/lib/hooks/useError.d.cts +51 -16
- package/dist/tools/lib/hooks/useError.d.ts +51 -16
- package/dist/tools/lib/hooks/useError.js.map +1 -1
- package/dist/tools/lib/schema/ajv.cjs +1 -1
- package/dist/tools/lib/schema/ajv.cjs.map +1 -1
- package/dist/tools/lib/schema/ajv.d.cts +19 -8
- package/dist/tools/lib/schema/ajv.d.ts +19 -8
- package/dist/tools/lib/schema/ajv.js +2 -1
- package/dist/tools/lib/schema/ajv.js.map +1 -1
- package/dist/tools/lib/state/error-store.cjs.map +1 -1
- package/dist/tools/lib/state/error-store.d.cts +61 -10
- package/dist/tools/lib/state/error-store.d.ts +61 -10
- package/dist/tools/lib/state/error-store.js.map +1 -1
- package/dist/tools/lib/state/store-factory.cjs.map +1 -1
- package/dist/tools/lib/state/store-factory.d.cts +25 -4
- package/dist/tools/lib/state/store-factory.d.ts +25 -4
- package/dist/tools/lib/state/store-factory.js.map +1 -1
- package/dist/tools/lib/state/ui-store.cjs.map +1 -1
- package/dist/tools/lib/state/ui-store.d.cts +39 -0
- package/dist/tools/lib/state/ui-store.d.ts +39 -0
- package/dist/tools/lib/state/ui-store.js.map +1 -1
- package/dist/ui/components/theme/theme-context.cjs.map +1 -1
- package/dist/ui/components/theme/theme-context.d.cts +171 -1
- package/dist/ui/components/theme/theme-context.d.ts +171 -1
- package/dist/ui/components/theme/theme-context.js.map +1 -1
- package/dist/ui/components/theme/theme-provider.cjs.map +1 -1
- package/dist/ui/components/theme/theme-provider.d.cts +31 -19
- package/dist/ui/components/theme/theme-provider.d.ts +31 -19
- package/dist/ui/components/theme/theme-provider.js.map +1 -1
- package/dist/ui/components/theme/theme-script.cjs.map +1 -1
- package/dist/ui/components/theme/theme-script.d.cts +16 -1
- package/dist/ui/components/theme/theme-script.d.ts +16 -1
- package/dist/ui/components/theme/theme-script.js.map +1 -1
- package/dist/ui/components/theme/theme-switcher.cjs +1 -1
- package/dist/ui/components/theme/theme-switcher.cjs.map +1 -1
- package/dist/ui/components/theme/theme-switcher.d.cts +82 -13
- package/dist/ui/components/theme/theme-switcher.d.ts +82 -13
- package/dist/ui/components/theme/theme-switcher.js +8 -0
- package/dist/ui/components/theme/theme-switcher.js.map +1 -1
- package/dist/ui/components/ui/accordion.cjs.map +1 -1
- package/dist/ui/components/ui/accordion.d.cts +60 -0
- package/dist/ui/components/ui/accordion.d.ts +60 -0
- package/dist/ui/components/ui/accordion.js.map +1 -1
- package/dist/ui/components/ui/adjustable-pane.cjs.map +1 -1
- package/dist/ui/components/ui/adjustable-pane.d.cts +44 -26
- package/dist/ui/components/ui/adjustable-pane.d.ts +44 -26
- package/dist/ui/components/ui/adjustable-pane.js.map +1 -1
- package/dist/ui/components/ui/alert-dialog.cjs.map +1 -1
- package/dist/ui/components/ui/alert-dialog.d.cts +179 -2
- package/dist/ui/components/ui/alert-dialog.d.ts +179 -2
- package/dist/ui/components/ui/alert-dialog.js.map +1 -1
- package/dist/ui/components/ui/alert.cjs.map +1 -1
- package/dist/ui/components/ui/alert.d.cts +52 -4
- package/dist/ui/components/ui/alert.d.ts +52 -4
- package/dist/ui/components/ui/alert.js.map +1 -1
- package/dist/ui/components/ui/aspect-ratio.cjs.map +1 -1
- package/dist/ui/components/ui/aspect-ratio.d.cts +16 -1
- package/dist/ui/components/ui/aspect-ratio.d.ts +16 -1
- package/dist/ui/components/ui/aspect-ratio.js.map +1 -1
- package/dist/ui/components/ui/avatar.cjs.map +1 -1
- package/dist/ui/components/ui/avatar.d.cts +87 -3
- package/dist/ui/components/ui/avatar.d.ts +87 -3
- package/dist/ui/components/ui/avatar.js.map +1 -1
- package/dist/ui/components/ui/badge-components.cjs.map +1 -1
- package/dist/ui/components/ui/badge-components.d.cts +13 -1
- package/dist/ui/components/ui/badge-components.d.ts +13 -1
- package/dist/ui/components/ui/badge-components.js.map +1 -1
- package/dist/ui/components/ui/badge-variants.cjs.map +1 -1
- package/dist/ui/components/ui/badge-variants.d.cts +15 -0
- package/dist/ui/components/ui/badge-variants.d.ts +15 -0
- package/dist/ui/components/ui/badge-variants.js.map +1 -1
- package/dist/ui/components/ui/breadcrumb.cjs.map +1 -1
- package/dist/ui/components/ui/breadcrumb.d.cts +91 -7
- package/dist/ui/components/ui/breadcrumb.d.ts +91 -7
- package/dist/ui/components/ui/breadcrumb.js.map +1 -1
- package/dist/ui/components/ui/button-components.cjs.map +1 -1
- package/dist/ui/components/ui/button-components.d.cts +18 -6
- package/dist/ui/components/ui/button-components.d.ts +18 -6
- package/dist/ui/components/ui/button-components.js.map +1 -1
- package/dist/ui/components/ui/button-group-components.cjs.map +1 -1
- package/dist/ui/components/ui/button-group-components.d.cts +39 -3
- package/dist/ui/components/ui/button-group-components.d.ts +39 -3
- package/dist/ui/components/ui/button-group-components.js.map +1 -1
- package/dist/ui/components/ui/button-group-variants.cjs.map +1 -1
- package/dist/ui/components/ui/button-group-variants.d.cts +15 -0
- package/dist/ui/components/ui/button-group-variants.d.ts +15 -0
- package/dist/ui/components/ui/button-group-variants.js.map +1 -1
- package/dist/ui/components/ui/button-variants.cjs.map +1 -1
- package/dist/ui/components/ui/button-variants.d.cts +13 -2
- package/dist/ui/components/ui/button-variants.d.ts +13 -2
- package/dist/ui/components/ui/button-variants.js.map +1 -1
- package/dist/ui/components/ui/card.cjs.map +1 -1
- package/dist/ui/components/ui/card.d.cts +106 -2
- package/dist/ui/components/ui/card.d.ts +106 -2
- package/dist/ui/components/ui/card.js.map +1 -1
- package/dist/ui/components/ui/checkbox-group.cjs.map +1 -1
- package/dist/ui/components/ui/checkbox-group.d.cts +13 -1
- package/dist/ui/components/ui/checkbox-group.d.ts +13 -1
- package/dist/ui/components/ui/checkbox-group.js.map +1 -1
- package/dist/ui/components/ui/checkbox.cjs.map +1 -1
- package/dist/ui/components/ui/checkbox.d.cts +17 -6
- package/dist/ui/components/ui/checkbox.d.ts +17 -6
- package/dist/ui/components/ui/checkbox.js.map +1 -1
- package/dist/ui/components/ui/collapsible.cjs.map +1 -1
- package/dist/ui/components/ui/collapsible.d.cts +39 -3
- package/dist/ui/components/ui/collapsible.d.ts +39 -3
- package/dist/ui/components/ui/collapsible.js.map +1 -1
- package/dist/ui/components/ui/combobox-components.cjs.map +1 -1
- package/dist/ui/components/ui/combobox-components.d.cts +209 -14
- package/dist/ui/components/ui/combobox-components.d.ts +209 -14
- package/dist/ui/components/ui/combobox-components.js.map +1 -1
- package/dist/ui/components/ui/combobox-hooks.cjs.map +1 -1
- package/dist/ui/components/ui/combobox-hooks.d.cts +13 -1
- package/dist/ui/components/ui/combobox-hooks.d.ts +13 -1
- package/dist/ui/components/ui/combobox-hooks.js.map +1 -1
- package/dist/ui/components/ui/command.cjs.map +1 -1
- package/dist/ui/components/ui/command.d.cts +132 -9
- package/dist/ui/components/ui/command.d.ts +132 -9
- package/dist/ui/components/ui/command.js.map +1 -1
- package/dist/ui/components/ui/context-menu.cjs.map +1 -1
- package/dist/ui/components/ui/context-menu.d.cts +233 -2
- package/dist/ui/components/ui/context-menu.d.ts +233 -2
- package/dist/ui/components/ui/context-menu.js.map +1 -1
- package/dist/ui/components/ui/dialog.cjs.map +1 -1
- package/dist/ui/components/ui/dialog.d.cts +157 -5
- package/dist/ui/components/ui/dialog.d.ts +157 -5
- package/dist/ui/components/ui/dialog.js.map +1 -1
- package/dist/ui/components/ui/drawer.cjs.map +1 -1
- package/dist/ui/components/ui/drawer.d.cts +130 -10
- package/dist/ui/components/ui/drawer.d.ts +130 -10
- package/dist/ui/components/ui/drawer.js.map +1 -1
- package/dist/ui/components/ui/dropdown-menu.cjs.map +1 -1
- package/dist/ui/components/ui/dropdown-menu.d.cts +225 -6
- package/dist/ui/components/ui/dropdown-menu.d.ts +225 -6
- package/dist/ui/components/ui/dropdown-menu.js.map +1 -1
- package/dist/ui/components/ui/empty.cjs.map +1 -1
- package/dist/ui/components/ui/empty.d.cts +78 -6
- package/dist/ui/components/ui/empty.d.ts +78 -6
- package/dist/ui/components/ui/empty.js.map +1 -1
- package/dist/ui/components/ui/field.cjs.map +1 -1
- package/dist/ui/components/ui/field.d.cts +180 -6
- package/dist/ui/components/ui/field.d.ts +180 -6
- package/dist/ui/components/ui/field.js.map +1 -1
- package/dist/ui/components/ui/file-icon.cjs.map +1 -1
- package/dist/ui/components/ui/file-icon.d.cts +32 -4
- package/dist/ui/components/ui/file-icon.d.ts +32 -4
- package/dist/ui/components/ui/file-icon.js.map +1 -1
- package/dist/ui/components/ui/hover-card.cjs.map +1 -1
- package/dist/ui/components/ui/hover-card.d.cts +39 -3
- package/dist/ui/components/ui/hover-card.d.ts +39 -3
- package/dist/ui/components/ui/hover-card.js.map +1 -1
- package/dist/ui/components/ui/input-group.cjs.map +1 -1
- package/dist/ui/components/ui/input-group.d.cts +84 -6
- package/dist/ui/components/ui/input-group.d.ts +84 -6
- package/dist/ui/components/ui/input-group.js.map +1 -1
- package/dist/ui/components/ui/input-otp.cjs.map +1 -1
- package/dist/ui/components/ui/input-otp.d.cts +58 -4
- package/dist/ui/components/ui/input-otp.d.ts +58 -4
- package/dist/ui/components/ui/input-otp.js.map +1 -1
- package/dist/ui/components/ui/input.cjs.map +1 -1
- package/dist/ui/components/ui/input.d.cts +18 -10
- package/dist/ui/components/ui/input.d.ts +18 -10
- package/dist/ui/components/ui/input.js.map +1 -1
- package/dist/ui/components/ui/item.cjs.map +1 -1
- package/dist/ui/components/ui/item.d.cts +130 -10
- package/dist/ui/components/ui/item.d.ts +130 -10
- package/dist/ui/components/ui/item.js.map +1 -1
- package/dist/ui/components/ui/kbd.cjs.map +1 -1
- package/dist/ui/components/ui/kbd.d.cts +26 -2
- package/dist/ui/components/ui/kbd.d.ts +26 -2
- package/dist/ui/components/ui/kbd.js.map +1 -1
- package/dist/ui/components/ui/label.cjs.map +1 -1
- package/dist/ui/components/ui/label.d.cts +15 -0
- package/dist/ui/components/ui/label.d.ts +15 -0
- package/dist/ui/components/ui/label.js.map +1 -1
- package/dist/ui/components/ui/layout.cjs +1 -1
- package/dist/ui/components/ui/layout.cjs.map +1 -1
- package/dist/ui/components/ui/layout.d.cts +45 -11
- package/dist/ui/components/ui/layout.d.ts +45 -11
- package/dist/ui/components/ui/layout.js +22 -20
- package/dist/ui/components/ui/layout.js.map +1 -1
- package/dist/ui/components/ui/menubar.cjs.map +1 -1
- package/dist/ui/components/ui/menubar.d.cts +220 -16
- package/dist/ui/components/ui/menubar.d.ts +220 -16
- package/dist/ui/components/ui/menubar.js.map +1 -1
- package/dist/ui/components/ui/meter.cjs.map +1 -1
- package/dist/ui/components/ui/meter.d.cts +52 -4
- package/dist/ui/components/ui/meter.d.ts +52 -4
- package/dist/ui/components/ui/meter.js.map +1 -1
- package/dist/ui/components/ui/mobile-form-variants.cjs.map +1 -1
- package/dist/ui/components/ui/mobile-form-variants.d.cts +30 -0
- package/dist/ui/components/ui/mobile-form-variants.d.ts +30 -0
- package/dist/ui/components/ui/mobile-form-variants.js.map +1 -1
- package/dist/ui/components/ui/mobile-form.cjs.map +1 -1
- package/dist/ui/components/ui/mobile-form.d.cts +186 -9
- package/dist/ui/components/ui/mobile-form.d.ts +186 -9
- package/dist/ui/components/ui/mobile-form.js.map +1 -1
- package/dist/ui/components/ui/navigation-menu-components.cjs.map +1 -1
- package/dist/ui/components/ui/navigation-menu-components.d.cts +104 -8
- package/dist/ui/components/ui/navigation-menu-components.d.ts +104 -8
- package/dist/ui/components/ui/navigation-menu-components.js.map +1 -1
- package/dist/ui/components/ui/navigation-menu-variants.cjs.map +1 -1
- package/dist/ui/components/ui/navigation-menu-variants.d.cts +15 -0
- package/dist/ui/components/ui/navigation-menu-variants.d.ts +15 -0
- package/dist/ui/components/ui/navigation-menu-variants.js.map +1 -1
- package/dist/ui/components/ui/number-field.cjs.map +1 -1
- package/dist/ui/components/ui/number-field.d.cts +78 -6
- package/dist/ui/components/ui/number-field.d.ts +78 -6
- package/dist/ui/components/ui/number-field.js.map +1 -1
- package/dist/ui/components/ui/pagination.cjs.map +1 -1
- package/dist/ui/components/ui/pagination.d.cts +99 -7
- package/dist/ui/components/ui/pagination.d.ts +99 -7
- package/dist/ui/components/ui/pagination.js.map +1 -1
- package/dist/ui/components/ui/password-input.cjs.map +1 -1
- package/dist/ui/components/ui/password-input.d.cts +10 -7
- package/dist/ui/components/ui/password-input.d.ts +10 -7
- package/dist/ui/components/ui/password-input.js.map +1 -1
- package/dist/ui/components/ui/popover.cjs.map +1 -1
- package/dist/ui/components/ui/popover.d.cts +86 -2
- package/dist/ui/components/ui/popover.d.ts +86 -2
- package/dist/ui/components/ui/popover.js.map +1 -1
- package/dist/ui/components/ui/progress.cjs.map +1 -1
- package/dist/ui/components/ui/progress.d.cts +72 -2
- package/dist/ui/components/ui/progress.d.ts +72 -2
- package/dist/ui/components/ui/progress.js.map +1 -1
- package/dist/ui/components/ui/radio-card.cjs.map +1 -1
- package/dist/ui/components/ui/radio-card.d.cts +32 -4
- package/dist/ui/components/ui/radio-card.d.ts +32 -4
- package/dist/ui/components/ui/radio-card.js.map +1 -1
- package/dist/ui/components/ui/radio-group.cjs.map +1 -1
- package/dist/ui/components/ui/radio-group.d.cts +28 -2
- package/dist/ui/components/ui/radio-group.d.ts +28 -2
- package/dist/ui/components/ui/radio-group.js.map +1 -1
- package/dist/ui/components/ui/resizable.cjs.map +1 -1
- package/dist/ui/components/ui/resizable.d.cts +42 -3
- package/dist/ui/components/ui/resizable.d.ts +42 -3
- package/dist/ui/components/ui/resizable.js.map +1 -1
- package/dist/ui/components/ui/responsive-list.cjs.map +1 -1
- package/dist/ui/components/ui/responsive-list.d.cts +176 -13
- package/dist/ui/components/ui/responsive-list.d.ts +176 -13
- package/dist/ui/components/ui/responsive-list.js.map +1 -1
- package/dist/ui/components/ui/scroll-area.cjs.map +1 -1
- package/dist/ui/components/ui/scroll-area.d.cts +28 -1
- package/dist/ui/components/ui/scroll-area.d.ts +28 -1
- package/dist/ui/components/ui/scroll-area.js.map +1 -1
- package/dist/ui/components/ui/searchable-select-input.cjs.map +1 -1
- package/dist/ui/components/ui/searchable-select-input.d.cts +199 -49
- package/dist/ui/components/ui/searchable-select-input.d.ts +199 -49
- package/dist/ui/components/ui/searchable-select-input.js.map +1 -1
- package/dist/ui/components/ui/select.cjs.map +1 -1
- package/dist/ui/components/ui/select.d.cts +205 -40
- package/dist/ui/components/ui/select.d.ts +205 -40
- package/dist/ui/components/ui/select.js.map +1 -1
- package/dist/ui/components/ui/separator.cjs.map +1 -1
- package/dist/ui/components/ui/separator.d.cts +13 -2
- package/dist/ui/components/ui/separator.d.ts +13 -2
- package/dist/ui/components/ui/separator.js.map +1 -1
- package/dist/ui/components/ui/sheet.cjs.map +1 -1
- package/dist/ui/components/ui/sheet.d.cts +128 -3
- package/dist/ui/components/ui/sheet.d.ts +128 -3
- package/dist/ui/components/ui/sheet.js.map +1 -1
- package/dist/ui/components/ui/skeleton.cjs.map +1 -1
- package/dist/ui/components/ui/skeleton.d.cts +13 -1
- package/dist/ui/components/ui/skeleton.d.ts +13 -1
- package/dist/ui/components/ui/skeleton.js.map +1 -1
- package/dist/ui/components/ui/slider.cjs.map +1 -1
- package/dist/ui/components/ui/slider.d.cts +13 -7
- package/dist/ui/components/ui/slider.d.ts +13 -7
- package/dist/ui/components/ui/slider.js.map +1 -1
- package/dist/ui/components/ui/spinner.cjs.map +1 -1
- package/dist/ui/components/ui/spinner.d.cts +13 -1
- package/dist/ui/components/ui/spinner.d.ts +13 -1
- package/dist/ui/components/ui/spinner.js.map +1 -1
- package/dist/ui/components/ui/switch.cjs.map +1 -1
- package/dist/ui/components/ui/switch.d.cts +26 -0
- package/dist/ui/components/ui/switch.d.ts +26 -0
- package/dist/ui/components/ui/switch.js.map +1 -1
- package/dist/ui/components/ui/table.cjs.map +1 -1
- package/dist/ui/components/ui/table.d.cts +118 -2
- package/dist/ui/components/ui/table.d.ts +118 -2
- package/dist/ui/components/ui/table.js.map +1 -1
- package/dist/ui/components/ui/tabs-components.cjs.map +1 -1
- package/dist/ui/components/ui/tabs-components.d.cts +52 -5
- package/dist/ui/components/ui/tabs-components.d.ts +52 -5
- package/dist/ui/components/ui/tabs-components.js.map +1 -1
- package/dist/ui/components/ui/tabs-variants.cjs.map +1 -1
- package/dist/ui/components/ui/tabs-variants.d.cts +15 -0
- package/dist/ui/components/ui/tabs-variants.d.ts +15 -0
- package/dist/ui/components/ui/tabs-variants.js.map +1 -1
- package/dist/ui/components/ui/textarea.cjs.map +1 -1
- package/dist/ui/components/ui/textarea.d.cts +23 -0
- package/dist/ui/components/ui/textarea.d.ts +23 -0
- package/dist/ui/components/ui/textarea.js.map +1 -1
- package/dist/ui/components/ui/toast.cjs.map +1 -1
- package/dist/ui/components/ui/toast.d.cts +136 -0
- package/dist/ui/components/ui/toast.d.ts +136 -0
- package/dist/ui/components/ui/toast.js.map +1 -1
- package/dist/ui/components/ui/toaster.cjs.map +1 -1
- package/dist/ui/components/ui/toaster.d.cts +12 -3
- package/dist/ui/components/ui/toaster.d.ts +12 -3
- package/dist/ui/components/ui/toaster.js.map +1 -1
- package/dist/ui/components/ui/toggle-components.cjs.map +1 -1
- package/dist/ui/components/ui/toggle-components.d.cts +15 -0
- package/dist/ui/components/ui/toggle-components.d.ts +15 -0
- package/dist/ui/components/ui/toggle-components.js.map +1 -1
- package/dist/ui/components/ui/toggle-group.cjs.map +1 -1
- package/dist/ui/components/ui/toggle-group.d.cts +33 -0
- package/dist/ui/components/ui/toggle-group.d.ts +33 -0
- package/dist/ui/components/ui/toggle-group.js.map +1 -1
- package/dist/ui/components/ui/toggle-variants.cjs.map +1 -1
- package/dist/ui/components/ui/toggle-variants.d.cts +15 -0
- package/dist/ui/components/ui/toggle-variants.d.ts +15 -0
- package/dist/ui/components/ui/toggle-variants.js.map +1 -1
- package/dist/ui/components/ui/toolbar.cjs.map +1 -1
- package/dist/ui/components/ui/toolbar.d.cts +94 -7
- package/dist/ui/components/ui/toolbar.d.ts +94 -7
- package/dist/ui/components/ui/toolbar.js.map +1 -1
- package/dist/ui/components/ui/tooltip.cjs.map +1 -1
- package/dist/ui/components/ui/tooltip.d.cts +54 -3
- package/dist/ui/components/ui/tooltip.d.ts +54 -3
- package/dist/ui/components/ui/tooltip.js.map +1 -1
- package/dist/ui/lib/hooks/use-gps.cjs.map +1 -1
- package/dist/ui/lib/hooks/use-gps.d.cts +29 -4
- package/dist/ui/lib/hooks/use-gps.d.ts +29 -4
- package/dist/ui/lib/hooks/use-gps.js.map +1 -1
- package/dist/ui/lib/hooks/use-is-client.cjs.map +1 -1
- package/dist/ui/lib/hooks/use-is-client.d.cts +11 -2
- package/dist/ui/lib/hooks/use-is-client.d.ts +11 -2
- package/dist/ui/lib/hooks/use-is-client.js.map +1 -1
- package/dist/ui/lib/hooks/use-keyboard-shortcut.cjs.map +1 -1
- package/dist/ui/lib/hooks/use-keyboard-shortcut.d.cts +48 -18
- package/dist/ui/lib/hooks/use-keyboard-shortcut.d.ts +48 -18
- package/dist/ui/lib/hooks/use-keyboard-shortcut.js.map +1 -1
- package/dist/ui/lib/hooks/use-mobile.cjs.map +1 -1
- package/dist/ui/lib/hooks/use-mobile.d.cts +11 -3
- package/dist/ui/lib/hooks/use-mobile.d.ts +11 -3
- package/dist/ui/lib/hooks/use-mobile.js.map +1 -1
- package/dist/ui/lib/hooks/use-toast.cjs.map +1 -1
- package/dist/ui/lib/hooks/use-toast.d.cts +184 -15
- package/dist/ui/lib/hooks/use-toast.d.ts +184 -15
- package/dist/ui/lib/hooks/use-toast.js.map +1 -1
- package/dist/ui/lib/ime-utils.cjs.map +1 -1
- package/dist/ui/lib/ime-utils.d.cts +40 -13
- package/dist/ui/lib/ime-utils.d.ts +40 -13
- package/dist/ui/lib/ime-utils.js.map +1 -1
- package/dist/ui/lib/utils.cjs.map +1 -1
- package/dist/ui/lib/utils.d.cts +9 -6
- package/dist/ui/lib/utils.d.ts +9 -6
- package/dist/ui/lib/utils.js.map +1 -1
- package/docs/ai.md +34 -1
- package/docs/exports.md +5 -1
- package/docs/index.md +89 -16
- package/docs/migration.md +268 -0
- package/docs/request-form.md +4 -1
- package/docs/tools.md +4 -1
- package/docs/ui.md +4 -1
- package/llms-full.txt +499 -36
- package/llms.txt +4 -0
- package/package.json +35 -5
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../ui/lib/utils.cjs"),n=require("../../../ui/components/ui/button-variants.cjs"),r=require("../../../ui/components/ui/button-components.cjs"),i=require("../../../ui/components/ui/input.cjs"),a=require("../../../ui/components/ui/dropdown-menu.cjs"),o=require("../../../ui/components/ui/table.cjs"),ee=require("../../paraglide/messages/datatable_filterplaceholder2.cjs"),s=require("../../paraglide/messages/datatable_gotofirstpage4.cjs"),c=require("../../paraglide/messages/datatable_gotolastpage4.cjs"),l=require("../../paraglide/messages/datatable_gotonextpage4.cjs"),u=require("../../paraglide/messages/datatable_gotopreviouspage4.cjs"),d=require("../../paraglide/messages/datatable_items1.cjs"),f=require("../../paraglide/messages/datatable_noresults2.cjs"),p=require("../../paraglide/messages/datatable_page1.cjs"),m=require("../../paraglide/messages/datatable_rowsperpage3.cjs"),h=require("../../paraglide/messages/datatable_rowsselected2.cjs"),te=require("../../paraglide/messages/datatable_togglecolumns2.cjs"),ne=require("../../paraglide/messages/datatable_view1.cjs"),re=require("./table-engine.cjs"),g=require("./table-store.cjs");let _=require("react/jsx-runtime"),v=require("react");v=e.__toESM(v,1);let y=require("lucide-react"),b=require("@dnd-kit/core"),x=require("@dnd-kit/sortable"),ie=require("@dnd-kit/utilities"),S=require("@tanstack/react-table");function ae({header:e,enableColumnOrdering:n=!0,enableMultiSort:r=!1,sortIndex:i}){let{attributes:a,listeners:ee,setNodeRef:s,transform:c,transition:l,isDragging:u}=(0,x.useSortable)({id:e.column.id,disabled:!n}),d=e.column.getCanSort(),f=e.column.getIsSorted(),p=f!==!1,m=n?{transform:ie.CSS.Translate.toString(c),transition:l,opacity:u?.8:1,zIndex:+!!u,position:`relative`,cursor:`move`}:{},h=t=>{d&&(r&&t.shiftKey?e.column.toggleSorting(void 0,!0):e.column.toggleSorting())};return(0,_.jsx)(o.TableHead,{ref:n?s:void 0,style:m,...n?{...a,...ee}:{},className:t.cn(`bg-primary/10 text-primary font-bold border-b border-primary/20`,d&&`cursor-pointer select-none hover:bg-primary/20 transition-colors`),onClick:d?h:void 0,children:e.isPlaceholder?null:(0,_.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,_.jsx)(`span`,{className:t.cn(p&&`font-semibold`),children:(0,S.flexRender)(e.column.columnDef.header,e.getContext())}),p&&(0,_.jsxs)(`span`,{className:`inline-flex items-center text-xs`,children:[f===`asc`?(0,_.jsx)(y.ChevronUp,{className:`h-3.5 w-3.5`}):(0,_.jsx)(y.ChevronDown,{className:`h-3.5 w-3.5`}),r&&i!==void 0&&i>=0&&(0,_.jsx)(`span`,{className:`text-[10px] ml-0.5`,children:i+1})]})]})})}function oe({columns:e,data:n,variant:a=`default`,filterContent:s,storageKey:c,enableSortingByDefault:l=!0,enableMultiSort:u=!1,showRowNumber:p=!1,itemCount:m,onAdd:h,pageCount:te,rowCount:ne,onPaginationChange:ie,onSortingChange:oe,onColumnFiltersChange:T,onRowClick:E,onSelectionChange:D,rowIdField:O=`id`,manualPagination:k=!1,manualSorting:ce=!1,manualFiltering:A=!1,filterColumn:j,sorting:M,pagination:N,enableColumnOrdering:le=!0,containerClassName:P,tableClassName:F,pageSizeOptions:I=[10,20,30,50,100],filterLayout:L=`inline`,defaultFilterOpen:ue=!1,activeFiltersContent:R}){"use no memo";let de=g.useDataTableStore(e=>e.getTableSettings),fe=g.useDataTableStore(e=>e.setTableSettings),z=g.useDataTableStore(e=>e._hasHydrated),B=v.useSyncExternalStore(v.useCallback(()=>()=>{},[]),()=>!0,()=>!1),[V,pe]=v.useState(ue),[me,he]=v.useState(M||[]),[H,ge]=v.useState([]),[U,_e]=v.useState({}),[ve,ye]=v.useState({}),[be,xe]=v.useState(N||{pageIndex:0,pageSize:10}),[W,G]=v.useState(e.map(e=>e.id||e.accessorKey)),Se=N!==void 0,K=M??me,q=N??be,Ce=e=>{let t=typeof e==`function`?e(K):e;M===void 0&&he(t),oe?.(t)},we=e=>{let t=typeof e==`function`?e(q):e;N===void 0&&xe(t),ie?.(t)},[J,Te]=v.useState(null),Y=v.useMemo(()=>e.map(e=>e.id||e.accessorKey||``).join(`|`),[e]),X=v.useMemo(()=>new Set(Y.split(`|`).filter(Boolean)),[Y]),Z=c?JSON.stringify([c,Y,!!M,!!N]):null;if(z&&c&&J!==Z){Te(Z);let e=de(c);if(e){if(!M&&e.sorting&&e.sorting.length>0){let t=e.sorting.filter(e=>X.has(e.id));t.length>0&&he(t)}if(e.columnVisibility&&Object.keys(e.columnVisibility).length>0){let t={};for(let[n,r]of Object.entries(e.columnVisibility))X.has(n)&&(t[n]=r);Object.keys(t).length>0&&_e(t)}if(!N&&e.pageSize&&e.pageSize!==10&&xe(t=>({...t,pageSize:e.pageSize})),e.columnOrder&&e.columnOrder.length>0){let t=e.columnOrder.filter(e=>X.has(e)),n=new Set(t),r=Array.from(X).filter(e=>!n.has(e)),i=[...t,...r];i.length>0&&G(i)}}}let Ee=v.useMemo(()=>({id:`rowNumber`,header:`No`,enableSorting:!1,cell:({row:e,table:t})=>{let n=t.store.state.pagination;return n?n.pageIndex*n.pageSize+e.index+1:e.index+1}}),[]),De=v.useMemo(()=>{let t=p?[Ee,...e]:e;return l?t.map(e=>({...e,enableSorting:e.enableSorting!==!1})):t},[p,e,Ee,l]),Oe=v.useCallback(e=>{if(O)return O.split(`_`).reduce((e,t)=>{if(e&&typeof e==`object`&&t!==`__proto__`&&t!==`constructor`&&t!==`prototype`&&Object.prototype.hasOwnProperty.call(e,t))return e[t]},e)},[O]);v.useEffect(()=>{c&&z&&J===Z&&fe(c,{columnOrder:W,columnVisibility:U,sorting:K,pageSize:q.pageSize})},[c,W,U,K,q.pageSize,fe,z,J,Z]),v.useEffect(()=>{A&&T&&T(H)},[H,A,T]);let Q=(0,S.useTable)({features:re.dataTableFeatures,data:n,columns:De,pageCount:k?te:void 0,rowCount:k?ne:void 0,getRowId:O?(e,t)=>{let n=O.split(`_`).reduce((e,t)=>{if(e&&typeof e==`object`&&t in e)return e[t]},e);return String(n===void 0?t:n)}:void 0,state:{sorting:K,columnFilters:H,columnVisibility:U,rowSelection:ve,pagination:q,columnOrder:W},enableRowSelection:!0,enableMultiSort:u,onRowSelectionChange:ye,onSortingChange:Ce,onColumnFiltersChange:ge,onColumnVisibilityChange:_e,onPaginationChange:we,onColumnOrderChange:G,autoResetPageIndex:k||Se?!1:void 0,manualPagination:k,manualSorting:ce,manualFiltering:A});v.useEffect(()=>{D&&D(Q.getFilteredSelectedRowModel().rows.map(e=>e.original))},[ve,Q,D]);let ke=(0,b.useSensors)((0,b.useSensor)(b.PointerSensor,{activationConstraint:{distance:8}}),(0,b.useSensor)(b.KeyboardSensor,{coordinateGetter:x.sortableKeyboardCoordinates})),Ae=v.useCallback(e=>{let{active:t,over:n}=e;t&&n&&t.id!==n.id&&G(e=>{let r=e.indexOf(t.id),i=e.indexOf(n.id);return(0,x.arrayMove)(e,r,i)})},[]),je=v.useCallback(e=>K.findIndex(t=>t.id===e),[K]),Me=v.useCallback(()=>(0,_.jsx)(b.DndContext,{sensors:ke,collisionDetection:b.closestCenter,onDragEnd:Ae,children:(0,_.jsx)(`div`,{className:t.cn(`rounded-md border`,F),children:(0,_.jsxs)(o.Table,{children:[(0,_.jsx)(o.TableHeader,{children:Q.getHeaderGroups().map(e=>(0,_.jsx)(x.SortableContext,{items:W,strategy:x.horizontalListSortingStrategy,children:(0,_.jsx)(o.TableRow,{children:e.headers.map(e=>(0,_.jsx)(ae,{header:e,enableColumnOrdering:le,enableMultiSort:u,sortIndex:je(e.column.id)},e.id))})},e.id))}),(0,_.jsx)(o.TableBody,{children:Q.getRowModel().rows?.length?Q.getRowModel().rows.map(e=>(0,_.jsx)(o.TableRow,{"data-state":e.getIsSelected()&&`selected`,onClick:()=>E&&E(Oe(e.original)),className:E?`cursor-pointer hover:bg-muted/50`:void 0,children:e.getVisibleCells().map(e=>(0,_.jsx)(o.TableCell,{children:(0,S.flexRender)(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,_.jsx)(o.TableRow,{children:(0,_.jsx)(o.TableCell,{colSpan:De.length,className:`h-24 text-center`,children:f.dataTable_noResults()})})})]})})}),[ke,Ae,Q,De,W,le,u,je,E,Oe,F]),$=()=>(0,_.jsx)(`div`,{className:t.cn(`rounded-md border`,F),children:(0,_.jsx)(o.Table,{children:(0,_.jsx)(o.TableBody,{children:(0,_.jsx)(o.TableRow,{children:(0,_.jsx)(o.TableCell,{className:`h-24 text-center`,children:(0,_.jsx)(`div`,{className:`text-muted-foreground`,children:`Loading...`})})})})})});return a===`minimal`?(0,_.jsxs)(`div`,{className:t.cn(`space-y-4`,P),children:[B?Me():$(),(0,_.jsx)(w,{table:Q,pageSizeOptions:I})]}):a===`toolbar`?(0,_.jsxs)(`div`,{className:t.cn(`relative h-full`,P),children:[h&&(0,_.jsx)(`div`,{className:`absolute left-0 top-0 w-full h-full z-10 pointer-events-none`,children:(0,_.jsx)(`div`,{className:`fixed right-4 bottom-10 pointer-events-auto`,children:(0,_.jsx)(r.Button,{type:`button`,size:`icon`,onClick:h,className:`w-12 h-12 rounded-full shadow-lg`,children:(0,_.jsx)(y.Plus,{className:`w-6 h-6`})})})}),(0,_.jsxs)(`div`,{className:`relative h-full flex flex-col`,children:[(0,_.jsxs)(`div`,{className:`bg-muted p-2 rounded-t-md grid grid-cols-1 sm:grid-cols-[1fr_minmax(0,auto)_1fr] items-center gap-2`,children:[(0,_.jsxs)(`div`,{className:`flex flex-wrap justify-center items-center gap-2 sm:col-start-2 sm:col-end-3`,children:[(0,_.jsx)(C,{table:Q}),s&&L===`inline`&&s,s&&L===`panel`&&(0,_.jsxs)(r.Button,{type:`button`,variant:V?`default`:`outline`,size:`sm`,onClick:()=>pe(!V),className:`h-8 gap-1.5`,children:[(0,_.jsx)(y.Filter,{className:`h-4 w-4`}),(0,_.jsx)(`span`,{children:`フィルター`})]})]}),(0,_.jsxs)(`div`,{className:`flex items-center gap-3 justify-center sm:justify-end sm:col-start-3 sm:col-end-4`,children:[(0,_.jsx)(se,{table:Q,pageSizeOptions:I}),typeof m==`number`&&(0,_.jsx)(`span`,{className:`text-sm text-muted-foreground whitespace-nowrap`,children:`${m.toLocaleString()} ${d.dataTable_items()}`})]})]}),s&&L===`panel`&&(0,_.jsx)(`div`,{className:t.cn(`border-b transition-all duration-200 ease-in-out overflow-hidden bg-background`,V?`max-h-[500px] p-4`:`max-h-0 p-0 border-none`),children:s}),R&&(0,_.jsx)(`div`,{className:`bg-background px-4 py-1.5 border-b`,children:R}),(0,_.jsx)(`div`,{className:`flex-1 overflow-auto`,children:B?Me():$()})]})]}):(0,_.jsxs)(`div`,{className:t.cn(`space-y-4`,P),children:[(0,_.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,_.jsx)(`div`,{className:`flex items-center py-4`,children:j&&(0,_.jsx)(i.Input,{placeholder:ee.dataTable_filterPlaceholder({column:j}),value:Q.getColumn(j)?.getFilterValue()??``,onChange:e=>Q.getColumn(j)?.setFilterValue(e.target.value),className:`max-w-sm`})}),(0,_.jsx)(C,{table:Q})]}),R&&(0,_.jsx)(`div`,{className:`border rounded-md bg-background px-3 py-1`,children:R}),B?Me():$(),(0,_.jsx)(w,{table:Q,pageSizeOptions:I}),h&&(0,_.jsx)(`div`,{className:`fixed right-4 bottom-10 z-10`,children:(0,_.jsx)(r.Button,{type:`button`,size:`icon`,onClick:h,className:`w-12 h-12 rounded-full shadow-lg`,children:(0,_.jsx)(y.Plus,{className:`w-6 h-6`})})})]})}function C({table:e}){return(0,_.jsxs)(a.DropdownMenu,{children:[(0,_.jsxs)(a.DropdownMenuTrigger,{className:n.buttonVariants({variant:`default`,size:`sm`,className:`h-8`}),children:[(0,_.jsx)(y.Settings2,{className:`mr-2 h-4 w-4`}),ne.dataTable_view()]}),(0,_.jsx)(a.DropdownMenuContent,{align:`end`,className:`w-40`,children:(0,_.jsxs)(a.DropdownMenuGroup,{children:[(0,_.jsx)(a.DropdownMenuLabel,{children:te.dataTable_toggleColumns()}),(0,_.jsx)(a.DropdownMenuSeparator,{}),e.getAllColumns().filter(e=>e.accessorFn!==void 0&&e.getCanHide()).map(e=>(0,_.jsx)(a.DropdownMenuCheckboxItem,{className:`capitalize`,checked:e.getIsVisible(),onCheckedChange:t=>e.toggleVisibility(!!t),children:typeof e.columnDef.header==`string`?e.columnDef.header:e.id},e.id))]})})]})}function w({table:e,pageSizeOptions:t=[10,20,30,50,100]}){return(0,_.jsxs)(`div`,{className:`flex items-center justify-between px-2`,children:[(0,_.jsx)(`div`,{className:`flex-1 text-sm text-muted-foreground`,children:h.dataTable_rowsSelected({selected:e.getFilteredSelectedRowModel().rows.length,total:e.getFilteredRowModel().rows.length})}),(0,_.jsxs)(`div`,{className:`flex items-center space-x-6 lg:space-x-8`,children:[(0,_.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[(0,_.jsx)(`p`,{className:`text-sm font-medium`,children:m.dataTable_rowsPerPage()}),(0,_.jsx)(`select`,{"aria-label":m.dataTable_rowsPerPage(),value:`${e.store.state.pagination.pageSize}`,onChange:t=>{e.setPageSize(Number(t.target.value))},className:`h-8 w-fit min-w-16 rounded-md border border-input bg-background px-2 py-1 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`,children:t.map(e=>(0,_.jsx)(`option`,{value:`${e}`,children:e},e))})]}),(0,_.jsx)(`div`,{className:`flex w-24 items-center justify-center text-sm font-medium`,children:p.dataTable_page({current:e.store.state.pagination.pageIndex+1,total:e.getPageCount()})}),(0,_.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[(0,_.jsxs)(r.Button,{variant:`default`,size:`icon`,className:`hidden h-8 w-8 lg:flex hover:bg-primary/90`,onClick:()=>e.setPageIndex(0),disabled:!e.getCanPreviousPage(),children:[(0,_.jsx)(`span`,{className:`sr-only`,children:s.dataTable_goToFirstPage()}),(0,_.jsx)(y.ChevronsLeft,{className:`h-4 w-4`})]}),(0,_.jsxs)(r.Button,{variant:`default`,size:`icon`,className:`h-8 w-8 hover:bg-primary/90`,onClick:()=>e.previousPage(),disabled:!e.getCanPreviousPage(),children:[(0,_.jsx)(`span`,{className:`sr-only`,children:u.dataTable_goToPreviousPage()}),(0,_.jsx)(y.ChevronLeft,{className:`h-4 w-4`})]}),(0,_.jsxs)(r.Button,{variant:`default`,size:`icon`,className:`h-8 w-8 hover:bg-primary/90`,onClick:()=>e.nextPage(),disabled:!e.getCanNextPage(),children:[(0,_.jsx)(`span`,{className:`sr-only`,children:l.dataTable_goToNextPage()}),(0,_.jsx)(y.ChevronRight,{className:`h-4 w-4`})]}),(0,_.jsxs)(r.Button,{variant:`default`,size:`icon`,className:`hidden h-8 w-8 lg:flex hover:bg-primary/90`,onClick:()=>e.setPageIndex(e.getPageCount()-1),disabled:!e.getCanNextPage(),children:[(0,_.jsx)(`span`,{className:`sr-only`,children:c.dataTable_goToLastPage()}),(0,_.jsx)(y.ChevronsRight,{className:`h-4 w-4`})]})]})]})]})}function se({table:e,pageSizeOptions:t=[10,20,30,50,100]}){let n=e.getPageCount();return(0,_.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,_.jsx)(`select`,{"aria-label":m.dataTable_rowsPerPage(),value:`${e.store.state.pagination.pageSize}`,onChange:t=>{e.setPageSize(Number(t.target.value))},className:`h-8 w-fit min-w-16 rounded-md border border-input bg-background px-2 py-1 text-sm`,children:t.map(e=>(0,_.jsx)(`option`,{value:`${e}`,children:e},e))}),n>1&&(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(r.Button,{variant:`default`,size:`icon`,className:`h-8 w-8 hover:bg-primary/90`,onClick:()=>e.setPageIndex(0),disabled:e.store.state.pagination.pageIndex===0,children:(0,_.jsx)(y.ChevronsLeft,{className:`h-4 w-4`})}),(0,_.jsx)(r.Button,{variant:`default`,size:`icon`,className:`h-8 w-8 hover:bg-primary/90`,onClick:()=>e.previousPage(),disabled:!e.getCanPreviousPage(),children:(0,_.jsx)(y.ChevronLeft,{className:`h-4 w-4`})}),(0,_.jsxs)(`span`,{className:`text-sm text-muted-foreground whitespace-nowrap px-1`,children:[e.store.state.pagination.pageIndex+1,` / `,n]}),(0,_.jsx)(r.Button,{variant:`default`,size:`icon`,className:`h-8 w-8 hover:bg-primary/90`,onClick:()=>e.nextPage(),disabled:!e.getCanNextPage(),children:(0,_.jsx)(y.ChevronRight,{className:`h-4 w-4`})}),(0,_.jsx)(r.Button,{variant:`default`,size:`icon`,className:`h-8 w-8 hover:bg-primary/90`,onClick:()=>e.setPageIndex(n-1),disabled:e.store.state.pagination.pageIndex===n-1,children:(0,_.jsx)(y.ChevronsRight,{className:`h-4 w-4`})})]})]})}exports.DataTable=oe,exports.DataTablePagination=w,exports.DataTablePaginationCompact=se,exports.DataTableViewOptions=C;
|
|
1
|
+
"use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../ui/lib/utils.cjs"),n=require("../../../ui/components/ui/button-variants.cjs"),r=require("../../../ui/components/ui/button-components.cjs"),i=require("../../../ui/components/ui/input.cjs"),a=require("../../../ui/components/ui/dropdown-menu.cjs"),o=require("../../../ui/components/ui/table.cjs"),ee=require("../../paraglide/messages/datatable_filterplaceholder2.cjs"),s=require("../../paraglide/messages/datatable_gotofirstpage4.cjs"),c=require("../../paraglide/messages/datatable_gotolastpage4.cjs"),l=require("../../paraglide/messages/datatable_gotonextpage4.cjs"),u=require("../../paraglide/messages/datatable_gotopreviouspage4.cjs"),d=require("../../paraglide/messages/datatable_items1.cjs"),f=require("../../paraglide/messages/datatable_noresults2.cjs"),p=require("../../paraglide/messages/datatable_page1.cjs"),m=require("../../paraglide/messages/datatable_rowsperpage3.cjs"),h=require("../../paraglide/messages/datatable_rowsselected2.cjs"),g=require("../../paraglide/messages/datatable_togglecolumns2.cjs"),te=require("../../paraglide/messages/datatable_view1.cjs"),ne=require("./table-engine.cjs"),_=require("./table-store.cjs");let v=require("react/jsx-runtime"),y=require("react");y=e.__toESM(y,1);let b=require("lucide-react"),x=require("@dnd-kit/core"),S=require("@dnd-kit/sortable"),re=require("@dnd-kit/utilities"),C=require("@tanstack/react-table");function ie({header:e,enableColumnOrdering:n=!0,enableMultiSort:r=!1,sortIndex:i}){let{attributes:a,listeners:ee,setNodeRef:s,setActivatorNodeRef:c,transform:l,transition:u,isDragging:d}=(0,S.useSortable)({id:e.column.id,disabled:!n}),f=e.column.getCanSort(),p=e.column.getIsSorted(),m=p!==!1,h=f&&typeof e.column.columnDef.header!=`function`?`button`:`span`,g=n?{transform:re.CSS.Translate.toString(l),transition:u,opacity:d?.8:1,zIndex:+!!d,position:`relative`,cursor:`move`}:{};return(0,v.jsxs)(o.TableHead,{ref:n?s:void 0,style:g,"aria-sort":f?p===`asc`?`ascending`:p===`desc`?`descending`:`none`:void 0,className:t.cn(`bg-primary/10 text-primary font-bold border-b border-primary/20`,f&&`cursor-pointer select-none hover:bg-primary/20 transition-colors`),onClick:f?t=>{f&&!t.target.closest(`button, input, select, [role=checkbox]`)&&(r&&t.shiftKey?e.column.toggleSorting(void 0,!0):e.column.toggleSorting())}:void 0,children:[n&&!e.isPlaceholder&&(0,v.jsx)(`button`,{type:`button`,ref:c,...a,...ee,"aria-label":`Reorder column ${e.column.id}`,className:`inline-flex h-6 w-6 items-center justify-center cursor-grab`,children:(0,v.jsx)(b.GripVertical,{className:`h-3 w-3`,"aria-hidden":`true`})}),e.isPlaceholder?null:(0,v.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,v.jsx)(h,{className:t.cn(m&&`font-semibold`),...h===`button`?{type:`button`,onClick:t=>{t.stopPropagation(),e.column.toggleSorting(void 0,r&&t.shiftKey)}}:{},children:(0,C.flexRender)(e.column.columnDef.header,e.getContext())}),m&&(0,v.jsxs)(`span`,{className:`inline-flex items-center text-xs`,children:[p===`asc`?(0,v.jsx)(b.ChevronUp,{className:`h-3.5 w-3.5`}):(0,v.jsx)(b.ChevronDown,{className:`h-3.5 w-3.5`}),r&&i!==void 0&&i>=0&&(0,v.jsx)(`span`,{className:`text-[10px] ml-0.5`,children:i+1})]})]})]})}function ae({columns:e,data:n,variant:a=`default`,filterContent:s,storageKey:c,enableSortingByDefault:l=!0,enableMultiSort:u=!1,showRowNumber:p=!1,itemCount:m,onAdd:h,pageCount:g,rowCount:te,onPaginationChange:re,onSortingChange:ae,onColumnFiltersChange:E,onRowClick:D,onSelectionChange:O,rowIdField:k=`id`,manualPagination:A=!1,manualSorting:se=!1,manualFiltering:j=!1,filterColumn:M,sorting:N,pagination:P,enableColumnOrdering:ce=!0,containerClassName:F,tableClassName:I,pageSizeOptions:L=[10,20,30,50,100],filterLayout:R=`inline`,defaultFilterOpen:le=!1,activeFiltersContent:z}){"use no memo";let ue=_.useDataTableStore(e=>e.getTableSettings),de=_.useDataTableStore(e=>e.setTableSettings),B=_.useDataTableStore(e=>e._hasHydrated),V=y.useSyncExternalStore(y.useCallback(()=>()=>{},[]),()=>!0,()=>!1),[H,fe]=y.useState(le),[pe,me]=y.useState(N||[]),[he,ge]=y.useState([]),[U,_e]=y.useState({}),[ve,ye]=y.useState({}),[be,xe]=y.useState(P||{pageIndex:0,pageSize:10}),[W,G]=y.useState(e.map(e=>e.id||e.accessorKey)),Se=P!==void 0,K=N??pe,q=P??be,Ce=e=>{let t=typeof e==`function`?e(K):e;N===void 0&&me(t),ae?.(t)},we=e=>{let t=typeof e==`function`?e(q):e;P===void 0&&xe(t),re?.(t)},[J,Te]=y.useState(null),Y=y.useMemo(()=>e.map(e=>e.id||e.accessorKey||``).join(`|`),[e]),X=y.useMemo(()=>new Set(Y.split(`|`).filter(Boolean)),[Y]),Z=c?JSON.stringify([c,Y,!!N,!!P]):null;if(B&&c&&J!==Z){Te(Z);let e=ue(c);if(e){if(!N&&e.sorting&&e.sorting.length>0){let t=e.sorting.filter(e=>X.has(e.id));t.length>0&&me(t)}if(e.columnVisibility&&Object.keys(e.columnVisibility).length>0){let t={};for(let[n,r]of Object.entries(e.columnVisibility))X.has(n)&&(t[n]=r);Object.keys(t).length>0&&_e(t)}if(!P&&e.pageSize&&e.pageSize!==10&&xe(t=>({...t,pageSize:e.pageSize})),e.columnOrder&&e.columnOrder.length>0){let t=e.columnOrder.filter(e=>X.has(e)),n=new Set(t),r=Array.from(X).filter(e=>!n.has(e)),i=[...t,...r];i.length>0&&G(i)}}}let Ee=y.useMemo(()=>({id:`rowNumber`,header:`No`,enableSorting:!1,cell:({row:e,table:t})=>{let n=t.store.state.pagination;return n?n.pageIndex*n.pageSize+e.index+1:e.index+1}}),[]),Q=y.useMemo(()=>{let t=p?[Ee,...e]:e;return l?t.map(e=>({...e,enableSorting:e.enableSorting!==!1})):t},[p,e,Ee,l]),De=y.useCallback(e=>{if(k)return k.split(`_`).reduce((e,t)=>{if(e&&typeof e==`object`&&t!==`__proto__`&&t!==`constructor`&&t!==`prototype`&&Object.prototype.hasOwnProperty.call(e,t))return e[t]},e)},[k]);y.useEffect(()=>{c&&B&&J===Z&&de(c,{columnOrder:W,columnVisibility:U,sorting:K,pageSize:q.pageSize})},[c,W,U,K,q.pageSize,de,B,J,Z]),y.useEffect(()=>{j&&E&&E(he)},[he,j,E]);let $=(0,C.useTable)({features:ne.dataTableFeatures,data:n,columns:Q,pageCount:A?g:void 0,rowCount:A?te:void 0,getRowId:k?(e,t)=>{let n=k.split(`_`).reduce((e,t)=>{if(e&&typeof e==`object`&&t in e)return e[t]},e);return String(n===void 0?t:n)}:void 0,state:{sorting:K,columnFilters:he,columnVisibility:U,rowSelection:ve,pagination:q,columnOrder:W},enableRowSelection:!0,enableMultiSort:u,onRowSelectionChange:ye,onSortingChange:Ce,onColumnFiltersChange:ge,onColumnVisibilityChange:_e,onPaginationChange:we,onColumnOrderChange:G,autoResetPageIndex:A||Se?!1:void 0,manualPagination:A,manualSorting:se,manualFiltering:j});y.useEffect(()=>{O&&O($.getFilteredSelectedRowModel().rows.map(e=>e.original))},[ve,$,O]);let Oe=(0,x.useSensors)((0,x.useSensor)(x.PointerSensor,{activationConstraint:{distance:8}}),(0,x.useSensor)(x.KeyboardSensor,{coordinateGetter:S.sortableKeyboardCoordinates})),ke=y.useCallback(e=>{let{active:t,over:n}=e;t&&n&&t.id!==n.id&&G(e=>{let r=e.indexOf(t.id),i=e.indexOf(n.id);return(0,S.arrayMove)(e,r,i)})},[]),Ae=y.useCallback(e=>K.findIndex(t=>t.id===e),[K]),je=y.useCallback(()=>(0,v.jsx)(x.DndContext,{sensors:Oe,collisionDetection:x.closestCenter,onDragEnd:ke,children:(0,v.jsx)(`div`,{className:t.cn(`rounded-md border`,I),children:(0,v.jsxs)(o.Table,{children:[(0,v.jsx)(o.TableHeader,{children:$.getHeaderGroups().map(e=>(0,v.jsx)(S.SortableContext,{items:W,strategy:S.horizontalListSortingStrategy,children:(0,v.jsx)(o.TableRow,{children:e.headers.map(e=>(0,v.jsx)(ie,{header:e,enableColumnOrdering:ce,enableMultiSort:u,sortIndex:Ae(e.column.id)},e.id))})},e.id))}),(0,v.jsx)(o.TableBody,{children:$.getRowModel().rows?.length?$.getRowModel().rows.map(e=>(0,v.jsx)(o.TableRow,{"data-state":e.getIsSelected()&&`selected`,onClick:()=>D&&D(De(e.original)),className:D?`cursor-pointer hover:bg-muted/50`:void 0,children:e.getVisibleCells().map(e=>(0,v.jsx)(o.TableCell,{children:(0,C.flexRender)(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,v.jsx)(o.TableRow,{children:(0,v.jsx)(o.TableCell,{colSpan:Q.length,className:`h-24 text-center`,children:f.dataTable_noResults()})})})]})})}),[Oe,ke,$,Q,W,ce,u,Ae,D,De,I]),Me=()=>(0,v.jsx)(`div`,{className:t.cn(`rounded-md border`,I),children:(0,v.jsx)(o.Table,{children:(0,v.jsx)(o.TableBody,{children:(0,v.jsx)(o.TableRow,{children:(0,v.jsx)(o.TableCell,{className:`h-24 text-center`,children:(0,v.jsx)(`div`,{className:`text-muted-foreground`,children:`Loading...`})})})})})});return a===`minimal`?(0,v.jsxs)(`div`,{className:t.cn(`space-y-4`,F),children:[V?je():Me(),(0,v.jsx)(T,{table:$,pageSizeOptions:L})]}):a===`toolbar`?(0,v.jsxs)(`div`,{className:t.cn(`relative h-full`,F),children:[h&&(0,v.jsx)(`div`,{className:`absolute left-0 top-0 w-full h-full z-10 pointer-events-none`,children:(0,v.jsx)(`div`,{className:`fixed right-4 bottom-10 pointer-events-auto`,children:(0,v.jsx)(r.Button,{type:`button`,size:`icon`,"aria-label":`Add row`,onClick:h,className:`w-12 h-12 rounded-full shadow-lg`,children:(0,v.jsx)(b.Plus,{className:`w-6 h-6`})})})}),(0,v.jsxs)(`div`,{className:`relative h-full flex flex-col`,children:[(0,v.jsxs)(`div`,{className:`bg-muted p-2 rounded-t-md grid grid-cols-1 sm:grid-cols-[1fr_minmax(0,auto)_1fr] items-center gap-2`,children:[(0,v.jsxs)(`div`,{className:`flex flex-wrap justify-center items-center gap-2 sm:col-start-2 sm:col-end-3`,children:[(0,v.jsx)(w,{table:$}),s&&R===`inline`&&s,s&&R===`panel`&&(0,v.jsxs)(r.Button,{type:`button`,variant:H?`default`:`outline`,size:`sm`,onClick:()=>fe(!H),className:`h-8 gap-1.5`,children:[(0,v.jsx)(b.Filter,{className:`h-4 w-4`}),(0,v.jsx)(`span`,{children:`フィルター`})]})]}),(0,v.jsxs)(`div`,{className:`flex items-center gap-3 justify-center sm:justify-end sm:col-start-3 sm:col-end-4`,children:[(0,v.jsx)(oe,{table:$,pageSizeOptions:L}),typeof m==`number`&&(0,v.jsx)(`span`,{className:`text-sm text-muted-foreground whitespace-nowrap`,children:`${m.toLocaleString()} ${d.dataTable_items()}`})]})]}),s&&R===`panel`&&(0,v.jsx)(`div`,{className:t.cn(`border-b transition-all duration-200 ease-in-out overflow-hidden bg-background`,H?`max-h-[500px] p-4`:`max-h-0 p-0 border-none`),children:s}),z&&(0,v.jsx)(`div`,{className:`bg-background px-4 py-1.5 border-b`,children:z}),(0,v.jsx)(`div`,{className:`flex-1 overflow-auto`,children:V?je():Me()})]})]}):(0,v.jsxs)(`div`,{className:t.cn(`space-y-4`,F),children:[(0,v.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,v.jsx)(`div`,{className:`flex items-center py-4`,children:M&&(0,v.jsx)(i.Input,{placeholder:ee.dataTable_filterPlaceholder({column:M}),value:$.getColumn(M)?.getFilterValue()??``,onChange:e=>$.getColumn(M)?.setFilterValue(e.target.value),className:`max-w-sm`})}),(0,v.jsx)(w,{table:$})]}),z&&(0,v.jsx)(`div`,{className:`border rounded-md bg-background px-3 py-1`,children:z}),V?je():Me(),(0,v.jsx)(T,{table:$,pageSizeOptions:L}),h&&(0,v.jsx)(`div`,{className:`fixed right-4 bottom-10 z-10`,children:(0,v.jsx)(r.Button,{type:`button`,size:`icon`,onClick:h,className:`w-12 h-12 rounded-full shadow-lg`,children:(0,v.jsx)(b.Plus,{className:`w-6 h-6`})})})]})}function w({table:e}){return(0,v.jsxs)(a.DropdownMenu,{children:[(0,v.jsxs)(a.DropdownMenuTrigger,{className:n.buttonVariants({variant:`default`,size:`sm`,className:`h-8`}),children:[(0,v.jsx)(b.Settings2,{className:`mr-2 h-4 w-4`}),te.dataTable_view()]}),(0,v.jsx)(a.DropdownMenuContent,{align:`end`,className:`w-40`,children:(0,v.jsxs)(a.DropdownMenuGroup,{children:[(0,v.jsx)(a.DropdownMenuLabel,{children:g.dataTable_toggleColumns()}),(0,v.jsx)(a.DropdownMenuSeparator,{}),e.getAllColumns().filter(e=>e.accessorFn!==void 0&&e.getCanHide()).map(e=>(0,v.jsx)(a.DropdownMenuCheckboxItem,{className:`capitalize`,checked:e.getIsVisible(),onCheckedChange:t=>e.toggleVisibility(!!t),children:typeof e.columnDef.header==`string`?e.columnDef.header:e.id},e.id))]})})]})}function T({table:e,pageSizeOptions:t=[10,20,30,50,100]}){return(0,v.jsxs)(`div`,{className:`flex items-center justify-between px-2`,children:[(0,v.jsx)(`div`,{className:`flex-1 text-sm text-muted-foreground`,children:h.dataTable_rowsSelected({selected:e.getFilteredSelectedRowModel().rows.length,total:e.getFilteredRowModel().rows.length})}),(0,v.jsxs)(`div`,{className:`flex items-center space-x-6 lg:space-x-8`,children:[(0,v.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[(0,v.jsx)(`p`,{className:`text-sm font-medium`,children:m.dataTable_rowsPerPage()}),(0,v.jsx)(`select`,{"aria-label":m.dataTable_rowsPerPage(),value:`${e.store.state.pagination.pageSize}`,onChange:t=>{e.setPageSize(Number(t.target.value))},className:`h-8 w-fit min-w-16 rounded-md border border-input bg-background px-2 py-1 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`,children:t.map(e=>(0,v.jsx)(`option`,{value:`${e}`,children:e},e))})]}),(0,v.jsx)(`div`,{className:`flex w-24 items-center justify-center text-sm font-medium`,children:p.dataTable_page({current:e.store.state.pagination.pageIndex+1,total:e.getPageCount()})}),(0,v.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[(0,v.jsxs)(r.Button,{variant:`default`,size:`icon`,className:`hidden h-8 w-8 lg:flex hover:bg-primary/90`,"aria-label":s.dataTable_goToFirstPage(),onClick:()=>e.setPageIndex(0),disabled:!e.getCanPreviousPage(),children:[(0,v.jsx)(`span`,{className:`sr-only`,children:s.dataTable_goToFirstPage()}),(0,v.jsx)(b.ChevronsLeft,{className:`h-4 w-4`})]}),(0,v.jsxs)(r.Button,{variant:`default`,size:`icon`,className:`h-8 w-8 hover:bg-primary/90`,"aria-label":u.dataTable_goToPreviousPage(),onClick:()=>e.previousPage(),disabled:!e.getCanPreviousPage(),children:[(0,v.jsx)(`span`,{className:`sr-only`,children:u.dataTable_goToPreviousPage()}),(0,v.jsx)(b.ChevronLeft,{className:`h-4 w-4`})]}),(0,v.jsxs)(r.Button,{variant:`default`,size:`icon`,className:`h-8 w-8 hover:bg-primary/90`,"aria-label":l.dataTable_goToNextPage(),onClick:()=>e.nextPage(),disabled:!e.getCanNextPage(),children:[(0,v.jsx)(`span`,{className:`sr-only`,children:l.dataTable_goToNextPage()}),(0,v.jsx)(b.ChevronRight,{className:`h-4 w-4`})]}),(0,v.jsxs)(r.Button,{variant:`default`,size:`icon`,className:`hidden h-8 w-8 lg:flex hover:bg-primary/90`,"aria-label":c.dataTable_goToLastPage(),onClick:()=>e.setPageIndex(e.getPageCount()-1),disabled:!e.getCanNextPage(),children:[(0,v.jsx)(`span`,{className:`sr-only`,children:c.dataTable_goToLastPage()}),(0,v.jsx)(b.ChevronsRight,{className:`h-4 w-4`})]})]})]})]})}function oe({table:e,pageSizeOptions:t=[10,20,30,50,100]}){let n=e.getPageCount();return(0,v.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,v.jsx)(`select`,{"aria-label":m.dataTable_rowsPerPage(),value:`${e.store.state.pagination.pageSize}`,onChange:t=>{e.setPageSize(Number(t.target.value))},className:`h-8 w-fit min-w-16 rounded-md border border-input bg-background px-2 py-1 text-sm`,children:t.map(e=>(0,v.jsx)(`option`,{value:`${e}`,children:e},e))}),n>1&&(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(r.Button,{variant:`default`,size:`icon`,className:`h-8 w-8 hover:bg-primary/90`,"aria-label":s.dataTable_goToFirstPage(),onClick:()=>e.setPageIndex(0),disabled:e.store.state.pagination.pageIndex===0,children:(0,v.jsx)(b.ChevronsLeft,{className:`h-4 w-4`})}),(0,v.jsx)(r.Button,{variant:`default`,size:`icon`,className:`h-8 w-8 hover:bg-primary/90`,"aria-label":u.dataTable_goToPreviousPage(),onClick:()=>e.previousPage(),disabled:!e.getCanPreviousPage(),children:(0,v.jsx)(b.ChevronLeft,{className:`h-4 w-4`})}),(0,v.jsxs)(`span`,{className:`text-sm text-muted-foreground whitespace-nowrap px-1`,children:[e.store.state.pagination.pageIndex+1,` / `,n]}),(0,v.jsx)(r.Button,{variant:`default`,size:`icon`,className:`h-8 w-8 hover:bg-primary/90`,"aria-label":l.dataTable_goToNextPage(),onClick:()=>e.nextPage(),disabled:!e.getCanNextPage(),children:(0,v.jsx)(b.ChevronRight,{className:`h-4 w-4`})}),(0,v.jsx)(r.Button,{variant:`default`,size:`icon`,className:`h-8 w-8 hover:bg-primary/90`,"aria-label":c.dataTable_goToLastPage(),onClick:()=>e.setPageIndex(n-1),disabled:e.store.state.pagination.pageIndex===n-1,children:(0,v.jsx)(b.ChevronsRight,{className:`h-4 w-4`})})]})]})}exports.DataTable=ae,exports.DataTablePagination=T,exports.DataTablePaginationCompact=oe,exports.DataTableViewOptions=w;
|
|
2
2
|
//# sourceMappingURL=data-table.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-table.cjs","names":["useSortable","CSS","TableHead","cn","flexRender","ChevronUp","ChevronDown","useDataTableStore","React","useTable","dataTableFeatures","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","arrayMove","DndContext","closestCenter","Table","TableHeader","SortableContext","horizontalListSortingStrategy","TableRow","TableBody","TableCell","Button","Plus","FilterIcon","Input","DropdownMenu","DropdownMenuTrigger","buttonVariants","Settings2","DropdownMenuContent","DropdownMenuGroup","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuCheckboxItem","ChevronsLeft","ChevronLeft","ChevronRight","ChevronsRight","_Fragment","require_runtime","require_ui_lib_utils","require_ui_components_ui_button_variants","require_ui_components_ui_button_components","require_ui_components_ui_input","require_ui_components_ui_dropdown_menu","require_ui_components_ui_table","require_datatable_filterplaceholder2","require_datatable_gotofirstpage4","require_datatable_gotolastpage4","require_datatable_gotonextpage4","require_datatable_gotopreviouspage4","require_datatable_items1","require_datatable_noresults2","require_datatable_page1","require_datatable_rowsperpage3","require_datatable_rowsselected2","require_datatable_togglecolumns2","require_datatable_view1","require_tools_components_data_table_table_engine","require_tools_components_data_table_table_store","react_jsx_runtime","react","lucide_react","_dnd_kit_core","_dnd_kit_sortable","_dnd_kit_utilities","_tanstack_react_table","DataTableColumnHeader","header","enableColumnOrdering","canSort","sortDirection","isSorted","style","transform","isDragging","handleSort","enableMultiSort","e","setNodeRef","attributes","listeners","sortIndex","DataTable","controlledSorting","controlledPagination","getTableSettings","state","setTableSettings","hasHydrated","mounted","filterOpen","setFilterOpen","defaultFilterOpen","localSorting","setLocalSorting","columnFilters","setColumnFilters","columnVisibility","setColumnVisibility","rowSelection","setRowSelection","localPagination","setLocalPagination","columnOrder","setColumnOrder","columns","c","isPaginationControlled","sorting","pagination","setSorting","next","updater","onSortingChange","setPagination","onPaginationChange","settingsLoaded","setSettingsLoaded","columnIdListKey","validColumnIds","loadKey","storageKey","storedSettings","validSorting","s","validVisibility","key","value","prev","validStoredOrder","id","storedOrderSet","newColumns","mergedOrder","rowNumberColumn","tableInstance","paginationState","row","columnsWithRowNumber","cols","showRowNumber","enableSortingByDefault","col","getRowId","rowIdField","obj","originalRow","manualFiltering","onColumnFiltersChange","table","manualPagination","pageCount","rowCount","index","onSelectionChange","sensors","handleDragEnd","event","active","over","oldIndex","order","newIndex","getSortIndex","columnId","renderTable","tableClassName","headerGroup","onRowClick","cell","renderLoadingTable","variant","containerClassName","DataTablePagination","onAdd","DataTableViewOptions","filterContent","filterLayout","DataTablePaginationCompact","itemCount","activeFiltersContent","filterColumn","column","pageSizeOptions","pageSize","totalPages"],"sources":["../../../../src/tools/components/data-table/data-table.tsx"],"sourcesContent":["/**\n * @fileoverview DataTable component with sorting, pagination, and persistence\n *\n * A feature-rich data table built on TanStack Table with:\n * - Three layout variants: default, toolbar, minimal\n * - Single and multi-column sorting\n * - Column reordering via drag-and-drop\n * - Column visibility toggle\n * - Settings persistence via Zustand store\n * - Row selection and click handling\n * - Server-side pagination/sorting support\n *\n * @module data-table/data-table\n */\n\nimport * as React from 'react';\nimport {\n ColumnDef,\n ColumnFiltersState,\n SortingState,\n VisibilityState,\n ColumnOrderState,\n PaginationState,\n flexRender,\n useTable,\n dataTableFeatures,\n Table as TableInstance,\n Header,\n} from './table-engine';\nimport * as m from '../../paraglide/messages.js';\n\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n DragEndEvent,\n} from '@dnd-kit/core';\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n horizontalListSortingStrategy,\n useSortable,\n} from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\n\nimport { cn } from \"../../lib/utils\";\nimport { Button, buttonVariants } from '../ui/button';\nimport { Input } from '../ui/input';\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '../ui/table';\n\nimport {\n ChevronLeft,\n ChevronRight,\n ChevronsLeft,\n ChevronsRight,\n Settings2,\n Plus,\n ChevronUp,\n ChevronDown,\n Filter as FilterIcon,\n} from 'lucide-react';\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuTrigger,\n DropdownMenuSeparator,\n DropdownMenuLabel,\n DropdownMenuGroup,\n} from '../ui/dropdown-menu';\n\nimport { useDataTableStore } from './table-store';\n\n// =============================================================================\n// Types\n// =============================================================================\n\n/**\n * テーブルレイアウトのバリアント\n * Table layout variants\n */\nexport type DataTableVariant = 'default' | 'toolbar' | 'minimal';\n\n// =============================================================================\n// Sortable Header Component\n// =============================================================================\n\ninterface DataTableColumnHeaderProps<\n TData extends object,\n TValue,\n> extends React.HTMLAttributes<HTMLTableCellElement> {\n header: Header<TData, TValue>;\n enableColumnOrdering?: boolean;\n enableMultiSort?: boolean;\n sortIndex?: number;\n}\n\nfunction DataTableColumnHeader<TData extends object, TValue>({\n header,\n enableColumnOrdering = true,\n enableMultiSort = false,\n sortIndex,\n}: DataTableColumnHeaderProps<TData, TValue>) {\n const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({\n id: header.column.id,\n disabled: !enableColumnOrdering,\n });\n\n const canSort = header.column.getCanSort();\n const sortDirection = header.column.getIsSorted();\n const isSorted = sortDirection !== false;\n\n const style: React.CSSProperties = enableColumnOrdering\n ? {\n transform: CSS.Translate.toString(transform),\n transition,\n opacity: isDragging ? 0.8 : 1,\n zIndex: isDragging ? 1 : 0,\n position: 'relative',\n cursor: 'move',\n }\n : {};\n\n const handleSort = (e: React.MouseEvent) => {\n if (!canSort) return;\n if (enableMultiSort && e.shiftKey) {\n header.column.toggleSorting(undefined, true);\n } else {\n header.column.toggleSorting();\n }\n };\n\n return (\n <TableHead\n ref={enableColumnOrdering ? setNodeRef : undefined}\n style={style}\n {...(enableColumnOrdering ? { ...attributes, ...listeners } : {})}\n className={cn(\n 'bg-primary/10 text-primary font-bold border-b border-primary/20',\n canSort && 'cursor-pointer select-none hover:bg-primary/20 transition-colors',\n )}\n onClick={canSort ? handleSort : undefined}\n >\n {header.isPlaceholder ? null : (\n <span className='inline-flex items-center gap-1'>\n <span className={cn(isSorted && 'font-semibold')}>\n {flexRender(header.column.columnDef.header, header.getContext())}\n </span>\n {/* Only show sort indicator when column is actively sorted */}\n {isSorted && (\n <span className='inline-flex items-center text-xs'>\n {sortDirection === 'asc' ? (\n <ChevronUp className='h-3.5 w-3.5' />\n ) : (\n <ChevronDown className='h-3.5 w-3.5' />\n )}\n {enableMultiSort && sortIndex !== undefined && sortIndex >= 0 && (\n <span className='text-[10px] ml-0.5'>{sortIndex + 1}</span>\n )}\n </span>\n )}\n </span>\n )}\n </TableHead>\n );\n}\n\n// =============================================================================\n// DataTable Props\n// =============================================================================\n\n/**\n * DataTableProps\n * DataTableのプロップス\n *\n * ## AI/Automation Features\n * - `testId`: Container element\n * - Pattern: `{testId}`, rows: `{testId}-row-{id}`, pagination: `{testId}-pagination`\n */\nexport interface DataTableProps<TData extends object, TValue> {\n /** AI/E2E Test用の安定ID / Stable test identifier */\n testId?: string;\n /** 列定義 / Column definitions */\n columns: ColumnDef<TData, TValue>[];\n /** データ配列 / Data array */\n data: TData[];\n /** テーブルレイアウトのバリアント / Table layout variant */\n variant?: DataTableVariant;\n /** ツールバー用カスタムフィルターコンテンツ / Custom filter content for toolbar */\n filterContent?: React.ReactNode;\n /** 設定永続化用キー(Zustandストアで使用) / Storage key for persisting settings */\n storageKey?: string;\n /** 全カラムをデフォルトでソート可能にする / Enable sorting on all columns by default */\n enableSortingByDefault?: boolean;\n /** 複数カラムソートを有効化 / Enable multi-column sorting */\n enableMultiSort?: boolean;\n /** 行番号カラムを表示 / Show row number column */\n showRowNumber?: boolean;\n /** アイテム総数(表示用) / Total item count for display */\n itemCount?: number;\n /** 追加ボタンのコールバック / Callback for floating add button */\n onAdd?: () => void;\n /** 総ページ数(手動ページネーション時) / Total page count for manual pagination */\n pageCount?: number;\n /** 総行数(手動ページネーション時) / Total row count for manual pagination */\n rowCount?: number;\n /**\n * ページ変更時のコールバック / Pagination change callback\n * 操作による変更要求時に通知。初期マウント・props同期では通知しません。\n */\n onPaginationChange?: (pagination: { pageIndex: number; pageSize: number }) => void;\n /** ソートの変更要求時のコールバック(初期マウント・props同期では通知しない) / Requested sorting change */\n onSortingChange?: (sorting: SortingState) => void;\n /** フィルタ変更時のコールバック / Filter change callback */\n onColumnFiltersChange?: (filters: ColumnFiltersState) => void;\n /** 行クリック時のコールバック / Row click callback */\n onRowClick?: (rowId: string | number) => void;\n /** 選択変更時のコールバック / Selection change callback */\n onSelectionChange?: (selectedRows: TData[]) => void;\n /** 行ID用フィールド名 / Row ID field name */\n rowIdField?: string;\n /** サーバーサイドページネーション / Server-side pagination */\n manualPagination?: boolean;\n /** サーバーサイドソート / Server-side sorting */\n manualSorting?: boolean;\n /** サーバーサイドフィルタ / Server-side filtering */\n manualFiltering?: boolean;\n /** フィルタ対象カラム / Filter column name */\n filterColumn?: string;\n /** ページサイズのオプション / Page size options */\n pageSizeOptions?: number[];\n /** ソート推移のオプション(外部制御用) / Sorting state for controlled mode */\n sorting?: SortingState;\n /**\n * 現在のページネーション(外部制御用) / Pagination state for controlled mode\n * 指定時はページ自動リセット(autoResetPageIndex)を無効化します。\n */\n pagination?: PaginationState;\n /** 列の並べ替え有効化 / Enable column reordering */\n enableColumnOrdering?: boolean;\n /** コンテナのクラス名 / Container class name */\n containerClassName?: string;\n /** テーブルのクラス名 / Table class name */\n tableClassName?: string;\n /** フィルターのレイアウトモード / Filter layout mode */\n filterLayout?: 'inline' | 'panel';\n /** フィルターパネルの初期開閉状態 / Default open state of the filter panel */\n defaultFilterOpen?: boolean;\n /** アクティブフィルター表示用のコンテンツ / Custom active filters component or node */\n activeFiltersContent?: React.ReactNode;\n}\n\n// =============================================================================\n// DataTable Component\n// =============================================================================\n\n/**\n * データテーブルコンポーネント\n *\n * ソート、フィルタ、ページネーション、行選択、列並べ替えに対応した\n * 高機能なデータテーブル。TanStack Table を使用。\n *\n * ## 制御モード (Controlled Mode)\n * `sorting` と `pagination` プロップスを渡すことで、外部状態からテーブルを制御できます。\n * これにより、サーバーサイドソートとクライアントサイドページネーションといった\n * 柔軟な組み合わせが、共有ライブラリ側のロジックを変更せずに実現可能です。\n *\n * 補足:\n * - `pagination` を指定した場合、`manualPagination` が false でも `onPaginationChange` を通知します。\n * - `pagination` 指定時はデータ更新時の `pageIndex` 自動リセットを無効化します。\n *\n * @example 基本的な使い方 (Uncontrolled)\n * ```tsx\n * <DataTable columns={columns} data={data} />\n * ```\n *\n * @example 外部状態によるソート制御 (Controlled Sorting)\n * ```tsx\n * const [sorting, setSorting] = useState<SortingState>([]);\n * <DataTable\n * columns={columns}\n * data={data}\n * sorting={sorting}\n * onSortingChange={setSorting}\n * manualSorting={true}\n * />\n * ```\n */\nexport function DataTable<TData extends object, TValue>({\n columns,\n data,\n variant = 'default',\n filterContent,\n storageKey,\n enableSortingByDefault = true,\n enableMultiSort = false,\n showRowNumber = false,\n itemCount,\n onAdd,\n pageCount,\n rowCount,\n onPaginationChange,\n onSortingChange,\n onColumnFiltersChange,\n onRowClick,\n onSelectionChange,\n rowIdField = 'id',\n manualPagination = false,\n manualSorting = false,\n manualFiltering = false,\n filterColumn,\n sorting: controlledSorting,\n pagination: controlledPagination,\n enableColumnOrdering = true,\n containerClassName,\n tableClassName,\n pageSizeOptions = [10, 20, 30, 50, 100],\n filterLayout = 'inline',\n defaultFilterOpen = false,\n activeFiltersContent,\n}: DataTableProps<TData, TValue>) {\n 'use no memo';\n\n // Get persisted settings from store (must be called before any early returns)\n const getTableSettings = useDataTableStore((state) => state.getTableSettings);\n const setTableSettings = useDataTableStore((state) => state.setTableSettings);\n const hasHydrated = useDataTableStore((state) => state._hasHydrated);\n\n // SSR safety: Only render on client\n // useSyncExternalStore ensures we have a consistent value during hydration\n const mounted = React.useSyncExternalStore(\n React.useCallback(() => () => {}, []),\n () => true,\n () => false,\n );\n const [filterOpen, setFilterOpen] = React.useState(defaultFilterOpen);\n\n // Initialize state with default values (SSR-safe)\n const [localSorting, setLocalSorting] = React.useState<SortingState>(controlledSorting || []);\n const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>([]);\n const [columnVisibility, setColumnVisibility] = React.useState<VisibilityState>({});\n const [rowSelection, setRowSelection] = React.useState({});\n const [localPagination, setLocalPagination] = React.useState<PaginationState>(\n controlledPagination || {\n pageIndex: 0,\n pageSize: 10,\n },\n );\n const [columnOrder, setColumnOrder] = React.useState<ColumnOrderState>(\n columns.map((c) => c.id || ((c as { accessorKey?: string }).accessorKey as string)),\n );\n const isPaginationControlled = controlledPagination !== undefined;\n const sorting = controlledSorting ?? localSorting;\n const pagination = controlledPagination ?? localPagination;\n const setSorting: React.Dispatch<React.SetStateAction<SortingState>> = (updater) => {\n const next = typeof updater === 'function' ? updater(sorting) : updater;\n if (controlledSorting === undefined) setLocalSorting(next);\n onSortingChange?.(next);\n };\n const setPagination: React.Dispatch<React.SetStateAction<PaginationState>> = (updater) => {\n const next = typeof updater === 'function' ? updater(pagination) : updater;\n if (controlledPagination === undefined) setLocalPagination(next);\n onPaginationChange?.(next);\n };\n const [settingsLoaded, setSettingsLoaded] = React.useState<string | null>(null);\n const columnIdListKey = React.useMemo(\n () => columns.map((c) => c.id || (c as { accessorKey?: string }).accessorKey || '').join('|'),\n [columns],\n );\n const validColumnIds = React.useMemo(\n () => new Set(columnIdListKey.split('|').filter(Boolean)),\n [columnIdListKey],\n );\n\n // Guarded render-time hydration, avoiding a stale-state effect render.\n const loadKey = storageKey ? JSON.stringify([storageKey, columnIdListKey, Boolean(controlledSorting), Boolean(controlledPagination)]) : null;\n if (hasHydrated && storageKey && settingsLoaded !== loadKey) {\n setSettingsLoaded(loadKey);\n const storedSettings = getTableSettings(storageKey);\n if (storedSettings) {\n if (!controlledSorting && storedSettings.sorting && storedSettings.sorting.length > 0) {\n // Filter out sorting for columns that no longer exist\n const validSorting = storedSettings.sorting.filter((s) => validColumnIds.has(s.id));\n if (validSorting.length > 0) {\n setLocalSorting(validSorting);\n }\n }\n if (\n storedSettings.columnVisibility &&\n Object.keys(storedSettings.columnVisibility).length > 0\n ) {\n // Filter out visibility for columns that no longer exist\n const validVisibility: Record<string, boolean> = {};\n for (const [key, value] of Object.entries(storedSettings.columnVisibility)) {\n if (validColumnIds.has(key)) {\n validVisibility[key] = value;\n }\n }\n if (Object.keys(validVisibility).length > 0) {\n setColumnVisibility(validVisibility);\n }\n }\n if (!controlledPagination && storedSettings.pageSize && storedSettings.pageSize !== 10) {\n setLocalPagination((prev) => ({ ...prev, pageSize: storedSettings.pageSize }));\n }\n if (storedSettings.columnOrder && storedSettings.columnOrder.length > 0) {\n // Filter out columns that no longer exist and add new columns\n const validStoredOrder = storedSettings.columnOrder.filter((id) => validColumnIds.has(id));\n const storedOrderSet = new Set(validStoredOrder);\n const newColumns = Array.from(validColumnIds).filter((id) => !storedOrderSet.has(id));\n const mergedOrder = [...validStoredOrder, ...newColumns];\n if (mergedOrder.length > 0) {\n setColumnOrder(mergedOrder);\n }\n }\n }\n }\n\n // Row number column definition (MUST be called before early return)\n const rowNumberColumn: ColumnDef<TData, TValue> = React.useMemo(\n () => ({\n id: 'rowNumber',\n header: 'No',\n enableSorting: false,\n cell: ({ row, table: tableInstance }) => {\n const paginationState = tableInstance.store.state.pagination;\n if (paginationState) {\n return paginationState.pageIndex * paginationState.pageSize + row.index + 1;\n }\n return row.index + 1;\n },\n }),\n [],\n );\n\n // Add row number column if requested (MUST be called before early return)\n const columnsWithRowNumber = React.useMemo(() => {\n const cols = showRowNumber ? [rowNumberColumn, ...columns] : columns;\n // Apply enableSortingByDefault to all columns that don't explicitly disable sorting\n if (enableSortingByDefault) {\n return cols.map((col) => ({\n ...col,\n enableSorting: col.enableSorting !== false,\n }));\n }\n return cols;\n }, [showRowNumber, columns, rowNumberColumn, enableSortingByDefault]);\n\n // Helper to extract nested ID safely (MUST be called before early return)\n const getRowId = React.useCallback(\n (originalRow: TData) => {\n if (!rowIdField) return undefined;\n // Simple dot notation support for id field\n\n return rowIdField.split('_').reduce<unknown>((obj, key) => {\n if (\n obj &&\n typeof obj === 'object' &&\n key !== '__proto__' &&\n key !== 'constructor' &&\n key !== 'prototype' &&\n Object.prototype.hasOwnProperty.call(obj, key)\n ) {\n return (obj as Record<string, unknown>)[key];\n }\n return undefined;\n }, originalRow as unknown);\n },\n [rowIdField],\n );\n\n // Persist settings to store (MUST be called before early return)\n React.useEffect(() => {\n if (storageKey && hasHydrated && settingsLoaded === loadKey) {\n setTableSettings(storageKey, {\n columnOrder,\n columnVisibility,\n sorting,\n pageSize: pagination.pageSize,\n });\n }\n }, [storageKey, columnOrder, columnVisibility, sorting, pagination.pageSize, setTableSettings, hasHydrated, settingsLoaded, loadKey]);\n\n React.useEffect(() => {\n if (manualFiltering && onColumnFiltersChange) {\n onColumnFiltersChange(columnFilters);\n }\n }, [columnFilters, manualFiltering, onColumnFiltersChange]);\n\n // Create table instance (MUST be called before early return)\n const table = useTable({\n features: dataTableFeatures,\n data,\n // Table 9 erases heterogeneous cell values to unknown at the table boundary.\n columns: columnsWithRowNumber as ColumnDef<TData>[],\n pageCount: manualPagination ? pageCount : undefined,\n rowCount: manualPagination ? rowCount : undefined,\n getRowId: rowIdField\n ? (originalRow, index) => {\n const id = rowIdField.split('_').reduce<unknown>((obj, key) => {\n if (obj && typeof obj === 'object' && key in (obj as Record<string, unknown>)) {\n return (obj as Record<string, unknown>)[key];\n }\n return undefined;\n }, originalRow as unknown);\n return id !== undefined ? String(id) : String(index);\n }\n : undefined,\n state: {\n sorting,\n columnFilters,\n columnVisibility,\n rowSelection,\n pagination,\n columnOrder,\n },\n enableRowSelection: true,\n enableMultiSort,\n onRowSelectionChange: setRowSelection,\n onSortingChange: setSorting,\n onColumnFiltersChange: setColumnFilters,\n onColumnVisibilityChange: setColumnVisibility,\n onPaginationChange: setPagination,\n onColumnOrderChange: setColumnOrder,\n autoResetPageIndex: manualPagination || isPaginationControlled ? false : undefined,\n manualPagination,\n manualSorting,\n manualFiltering,\n });\n\n // Sync selection to parent (MUST be called before early return)\n React.useEffect(() => {\n if (onSelectionChange) {\n const selectedRows = table.getFilteredSelectedRowModel().rows.map((row) => row.original);\n onSelectionChange(selectedRows);\n }\n }, [rowSelection, table, onSelectionChange]);\n\n // DnD Sensors (MUST be called before early return)\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: {\n distance: 8,\n },\n }),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n }),\n );\n\n // Handle drag end callback (MUST be defined before early return)\n const handleDragEnd = React.useCallback((event: DragEndEvent) => {\n const { active, over } = event;\n if (active && over && active.id !== over.id) {\n setColumnOrder((order) => {\n const oldIndex = order.indexOf(active.id as string);\n const newIndex = order.indexOf(over.id as string);\n return arrayMove(order, oldIndex, newIndex);\n });\n }\n }, []);\n\n // Get sort index for multi-sort display (MUST be called before early return)\n const getSortIndex = React.useCallback(\n (columnId: string): number => {\n return sorting.findIndex((s) => s.id === columnId);\n },\n [sorting],\n );\n\n // Render table content (MUST be called before early return)\n const renderTable = React.useCallback(\n () => (\n <DndContext sensors={sensors} collisionDetection={closestCenter} onDragEnd={handleDragEnd}>\n <div className={cn('rounded-md border', tableClassName)}>\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <SortableContext\n key={headerGroup.id}\n items={columnOrder}\n strategy={horizontalListSortingStrategy}\n >\n <TableRow>\n {headerGroup.headers.map((header) => (\n <DataTableColumnHeader\n key={header.id}\n header={header}\n enableColumnOrdering={enableColumnOrdering}\n enableMultiSort={enableMultiSort}\n sortIndex={getSortIndex(header.column.id)}\n />\n ))}\n </TableRow>\n </SortableContext>\n ))}\n </TableHeader>\n <TableBody>\n {table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() && 'selected'}\n onClick={() =>\n onRowClick && onRowClick(getRowId(row.original) as string | number)\n }\n className={onRowClick ? 'cursor-pointer hover:bg-muted/50' : undefined}\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell key={cell.id}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell colSpan={columnsWithRowNumber.length} className='h-24 text-center'>\n {m.dataTable_noResults()}\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </div>\n </DndContext>\n ),\n [\n sensors,\n handleDragEnd,\n table,\n columnsWithRowNumber,\n columnOrder,\n enableColumnOrdering,\n enableMultiSort,\n getSortIndex,\n onRowClick,\n getRowId,\n tableClassName,\n ],\n );\n\n // Render loading table during SSR - simple version to avoid hydration issues\n const renderLoadingTable = () => (\n <div className={cn('rounded-md border', tableClassName)}>\n <Table>\n <TableBody>\n <TableRow>\n <TableCell className='h-24 text-center'>\n <div className='text-muted-foreground'>Loading...</div>\n </TableCell>\n </TableRow>\n </TableBody>\n </Table>\n </div>\n );\n\n // Variant: minimal - just table with pagination\n if (variant === 'minimal') {\n return (\n <div className={cn('space-y-4', containerClassName)}>\n {mounted ? renderTable() : renderLoadingTable()}\n <DataTablePagination table={table} pageSizeOptions={pageSizeOptions} />\n </div>\n );\n }\n\n // Variant: toolbar - setagaya-front style with toolbar above table\n if (variant === 'toolbar') {\n return (\n <div className={cn('relative h-full', containerClassName)}>\n {onAdd && (\n <div className='absolute left-0 top-0 w-full h-full z-10 pointer-events-none'>\n <div className='fixed right-4 bottom-10 pointer-events-auto'>\n <Button\n type='button'\n size='icon'\n onClick={onAdd}\n className='w-12 h-12 rounded-full shadow-lg'\n >\n <Plus className='w-6 h-6' />\n </Button>\n </div>\n </div>\n )}\n <div className='relative h-full flex flex-col'>\n {/* Toolbar */}\n <div className='bg-muted p-2 rounded-t-md grid grid-cols-1 sm:grid-cols-[1fr_minmax(0,auto)_1fr] items-center gap-2'>\n {/* Center: Column settings + filter content */}\n <div className='flex flex-wrap justify-center items-center gap-2 sm:col-start-2 sm:col-end-3'>\n <DataTableViewOptions table={table} />\n {filterContent && filterLayout === 'inline' && filterContent}\n {filterContent && filterLayout === 'panel' && (\n <Button\n type='button'\n variant={filterOpen ? 'default' : 'outline'}\n size='sm'\n onClick={() => setFilterOpen(!filterOpen)}\n className='h-8 gap-1.5'\n >\n <FilterIcon className='h-4 w-4' />\n <span>フィルター</span>\n </Button>\n )}\n </div>\n {/* Right: Pagination + count */}\n <div className='flex items-center gap-3 justify-center sm:justify-end sm:col-start-3 sm:col-end-4'>\n <DataTablePaginationCompact table={table} pageSizeOptions={pageSizeOptions} />\n {typeof itemCount === 'number' && (\n <span className='text-sm text-muted-foreground whitespace-nowrap'>\n {`${itemCount.toLocaleString()} ${m.dataTable_items()}`}\n </span>\n )}\n </div>\n </div>\n {/* Filter Panel (Collapsible) */}\n {filterContent && filterLayout === 'panel' && (\n <div\n className={cn(\n 'border-b transition-all duration-200 ease-in-out overflow-hidden bg-background',\n filterOpen ? 'max-h-[500px] p-4' : 'max-h-0 p-0 border-none',\n )}\n >\n {filterContent}\n </div>\n )}\n {/* Active Filters Display */}\n {activeFiltersContent && (\n <div className='bg-background px-4 py-1.5 border-b'>{activeFiltersContent}</div>\n )}\n {/* Table */}\n <div className='flex-1 overflow-auto'>\n {mounted ? renderTable() : renderLoadingTable()}\n </div>\n </div>\n </div>\n );\n }\n\n // Variant: default - current behavior\n return (\n <div className={cn('space-y-4', containerClassName)}>\n <div className='flex items-center justify-between'>\n <div className='flex items-center py-4'>\n {filterColumn && (\n <Input\n placeholder={m.dataTable_filterPlaceholder({ column: filterColumn })}\n value={(table.getColumn(filterColumn)?.getFilterValue() as string) ?? ''}\n onChange={(event) =>\n table.getColumn(filterColumn)?.setFilterValue(event.target.value)\n }\n className='max-w-sm'\n />\n )}\n </div>\n <DataTableViewOptions table={table} />\n </div>\n {activeFiltersContent && (\n <div className='border rounded-md bg-background px-3 py-1'>{activeFiltersContent}</div>\n )}\n {mounted ? renderTable() : renderLoadingTable()}\n <DataTablePagination table={table} pageSizeOptions={pageSizeOptions} />\n {onAdd && (\n <div className='fixed right-4 bottom-10 z-10'>\n <Button\n type='button'\n size='icon'\n onClick={onAdd}\n className='w-12 h-12 rounded-full shadow-lg'\n >\n <Plus className='w-6 h-6' />\n </Button>\n </div>\n )}\n </div>\n );\n}\n\n// =============================================================================\n// View Options Component\n// =============================================================================\n\ninterface DataTableViewOptionsProps<TData extends object> {\n table: TableInstance<TData>;\n}\n\n/**\n * テーブルの表示列を切り替える設定ドロップダウンメニューコンポーネント\n */\nexport function DataTableViewOptions<TData extends object>({ table }: DataTableViewOptionsProps<TData>) {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger\n className={buttonVariants({ variant: 'default', size: 'sm', className: 'h-8' })}\n >\n <Settings2 className='mr-2 h-4 w-4' />\n {m.dataTable_view()}\n </DropdownMenuTrigger>\n <DropdownMenuContent align='end' className='w-40'>\n <DropdownMenuGroup>\n <DropdownMenuLabel>{m.dataTable_toggleColumns()}</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {table\n .getAllColumns()\n .filter((column) => typeof column.accessorFn !== 'undefined' && column.getCanHide())\n .map((column) => {\n return (\n <DropdownMenuCheckboxItem\n key={column.id}\n className='capitalize'\n checked={column.getIsVisible()}\n onCheckedChange={(value) => column.toggleVisibility(!!value)}\n >\n {typeof column.columnDef.header === 'string'\n ? column.columnDef.header\n : column.id}\n </DropdownMenuCheckboxItem>\n );\n })}\n </DropdownMenuGroup>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\n// =============================================================================\n// Pagination Component (Full)\n// =============================================================================\n\ninterface DataTablePaginationProps<TData extends object> {\n table: TableInstance<TData>;\n pageSizeOptions?: number[];\n}\n\n/**\n * テーブルの標準的なページネーションコントロールコンポーネント\n */\nexport function DataTablePagination<TData extends object>({\n table,\n pageSizeOptions = [10, 20, 30, 50, 100],\n}: DataTablePaginationProps<TData>) {\n return (\n <div className='flex items-center justify-between px-2'>\n <div className='flex-1 text-sm text-muted-foreground'>\n {m.dataTable_rowsSelected({\n selected: table.getFilteredSelectedRowModel().rows.length,\n total: table.getFilteredRowModel().rows.length,\n })}\n </div>\n <div className='flex items-center space-x-6 lg:space-x-8'>\n <div className='flex items-center space-x-2'>\n <p className='text-sm font-medium'>{m.dataTable_rowsPerPage()}</p>\n <select\n aria-label={m.dataTable_rowsPerPage()}\n value={`${table.store.state.pagination.pageSize}`}\n onChange={(e) => {\n table.setPageSize(Number(e.target.value));\n }}\n className='h-8 w-fit min-w-16 rounded-md border border-input bg-background px-2 py-1 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2'\n >\n {pageSizeOptions.map((pageSize) => (\n <option key={pageSize} value={`${pageSize}`}>\n {pageSize}\n </option>\n ))}\n </select>\n </div>\n <div className='flex w-24 items-center justify-center text-sm font-medium'>\n {m.dataTable_page({\n current: table.store.state.pagination.pageIndex + 1,\n total: table.getPageCount(),\n })}\n </div>\n <div className='flex items-center space-x-2'>\n <Button\n variant='default'\n size='icon'\n className='hidden h-8 w-8 lg:flex hover:bg-primary/90'\n onClick={() => table.setPageIndex(0)}\n disabled={!table.getCanPreviousPage()}\n >\n <span className='sr-only'>{m.dataTable_goToFirstPage()}</span>\n <ChevronsLeft className='h-4 w-4' />\n </Button>\n <Button\n variant='default'\n size='icon'\n className='h-8 w-8 hover:bg-primary/90'\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n <span className='sr-only'>{m.dataTable_goToPreviousPage()}</span>\n <ChevronLeft className='h-4 w-4' />\n </Button>\n <Button\n variant='default'\n size='icon'\n className='h-8 w-8 hover:bg-primary/90'\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n <span className='sr-only'>{m.dataTable_goToNextPage()}</span>\n <ChevronRight className='h-4 w-4' />\n </Button>\n <Button\n variant='default'\n size='icon'\n className='hidden h-8 w-8 lg:flex hover:bg-primary/90'\n onClick={() => table.setPageIndex(table.getPageCount() - 1)}\n disabled={!table.getCanNextPage()}\n >\n <span className='sr-only'>{m.dataTable_goToLastPage()}</span>\n <ChevronsRight className='h-4 w-4' />\n </Button>\n </div>\n </div>\n </div>\n );\n}\n\n// =============================================================================\n// Pagination Component (Compact - for toolbar variant)\n// =============================================================================\n\ninterface DataTablePaginationCompactProps<TData extends object> {\n table: TableInstance<TData>;\n pageSizeOptions?: number[];\n}\n\n/**\n * ツールバー等に配置するコンパクトなページネーションコントロールコンポーネント\n */\nexport function DataTablePaginationCompact<TData extends object>({\n table,\n pageSizeOptions = [10, 20, 30, 50, 100],\n}: DataTablePaginationCompactProps<TData>) {\n const totalPages = table.getPageCount();\n\n return (\n <div className='flex items-center gap-1'>\n <select\n aria-label={m.dataTable_rowsPerPage()}\n value={`${table.store.state.pagination.pageSize}`}\n onChange={(e) => {\n table.setPageSize(Number(e.target.value));\n }}\n className='h-8 w-fit min-w-16 rounded-md border border-input bg-background px-2 py-1 text-sm'\n >\n {pageSizeOptions.map((pageSize) => (\n <option key={pageSize} value={`${pageSize}`}>\n {pageSize}\n </option>\n ))}\n </select>\n {totalPages > 1 && (\n <>\n <Button\n variant='default'\n size='icon'\n className='h-8 w-8 hover:bg-primary/90'\n onClick={() => table.setPageIndex(0)}\n disabled={table.store.state.pagination.pageIndex === 0}\n >\n <ChevronsLeft className='h-4 w-4' />\n </Button>\n <Button\n variant='default'\n size='icon'\n className='h-8 w-8 hover:bg-primary/90'\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n <ChevronLeft className='h-4 w-4' />\n </Button>\n <span className='text-sm text-muted-foreground whitespace-nowrap px-1'>\n {table.store.state.pagination.pageIndex + 1} / {totalPages}\n </span>\n <Button\n variant='default'\n size='icon'\n className='h-8 w-8 hover:bg-primary/90'\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n <ChevronRight className='h-4 w-4' />\n </Button>\n <Button\n variant='default'\n size='icon'\n className='h-8 w-8 hover:bg-primary/90'\n onClick={() => table.setPageIndex(totalPages - 1)}\n disabled={table.store.state.pagination.pageIndex === totalPages - 1}\n >\n <ChevronsRight className='h-4 w-4' />\n </Button>\n </>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"data-table.cjs","names":["useSortable","CSS","TableHead","cn","GripVertical","flexRender","ChevronUp","ChevronDown","useDataTableStore","React","useTable","dataTableFeatures","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","arrayMove","DndContext","closestCenter","Table","TableHeader","SortableContext","horizontalListSortingStrategy","TableRow","TableBody","TableCell","Button","Plus","FilterIcon","Input","DropdownMenu","DropdownMenuTrigger","buttonVariants","Settings2","DropdownMenuContent","DropdownMenuGroup","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuCheckboxItem","ChevronsLeft","ChevronLeft","ChevronRight","ChevronsRight","_Fragment","require_runtime","require_ui_lib_utils","require_ui_components_ui_button_variants","require_ui_components_ui_button_components","require_ui_components_ui_input","require_ui_components_ui_dropdown_menu","require_ui_components_ui_table","require_datatable_filterplaceholder2","require_datatable_gotofirstpage4","require_datatable_gotolastpage4","require_datatable_gotonextpage4","require_datatable_gotopreviouspage4","require_datatable_items1","require_datatable_noresults2","require_datatable_page1","require_datatable_rowsperpage3","require_datatable_rowsselected2","require_datatable_togglecolumns2","require_datatable_view1","require_tools_components_data_table_table_engine","require_tools_components_data_table_table_store","react_jsx_runtime","react","lucide_react","_dnd_kit_core","_dnd_kit_sortable","_dnd_kit_utilities","_tanstack_react_table","DataTableColumnHeader","header","enableColumnOrdering","canSort","sortDirection","isSorted","SortLabel","style","transform","isDragging","setNodeRef","enableMultiSort","e","setActivatorNodeRef","attributes","listeners","event","sortIndex","DataTable","controlledSorting","controlledPagination","getTableSettings","state","setTableSettings","hasHydrated","mounted","filterOpen","setFilterOpen","defaultFilterOpen","localSorting","setLocalSorting","columnFilters","setColumnFilters","columnVisibility","setColumnVisibility","rowSelection","setRowSelection","localPagination","setLocalPagination","columnOrder","setColumnOrder","columns","c","isPaginationControlled","sorting","pagination","setSorting","next","updater","onSortingChange","setPagination","onPaginationChange","settingsLoaded","setSettingsLoaded","columnIdListKey","validColumnIds","loadKey","storageKey","storedSettings","validSorting","s","validVisibility","key","value","prev","validStoredOrder","id","storedOrderSet","newColumns","mergedOrder","rowNumberColumn","tableInstance","paginationState","row","columnsWithRowNumber","cols","showRowNumber","enableSortingByDefault","col","getRowId","rowIdField","obj","originalRow","manualFiltering","onColumnFiltersChange","table","manualPagination","pageCount","rowCount","index","onSelectionChange","sensors","handleDragEnd","active","over","oldIndex","order","newIndex","getSortIndex","columnId","renderTable","tableClassName","headerGroup","onRowClick","cell","renderLoadingTable","variant","containerClassName","DataTablePagination","onAdd","DataTableViewOptions","filterContent","filterLayout","DataTablePaginationCompact","itemCount","activeFiltersContent","filterColumn","column","pageSizeOptions","pageSize","totalPages"],"sources":["../../../../src/tools/components/data-table/data-table.tsx"],"sourcesContent":["/**\n * @fileoverview DataTable component with sorting, pagination, and persistence\n *\n * A feature-rich data table built on TanStack Table with:\n * - Three layout variants: default, toolbar, minimal\n * - Single and multi-column sorting\n * - Column reordering via drag-and-drop\n * - Column visibility toggle\n * - Settings persistence via Zustand store\n * - Row selection and click handling\n * - Server-side pagination/sorting support\n *\n * @module data-table/data-table\n */\n\nimport * as React from 'react';\nimport {\n ColumnDef,\n ColumnFiltersState,\n SortingState,\n VisibilityState,\n ColumnOrderState,\n PaginationState,\n flexRender,\n useTable,\n dataTableFeatures,\n Table as TableInstance,\n Header,\n} from './table-engine';\nimport * as m from '../../paraglide/messages.js';\n\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n DragEndEvent,\n} from '@dnd-kit/core';\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n horizontalListSortingStrategy,\n useSortable,\n} from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\n\nimport { cn } from \"../../lib/utils\";\nimport { Button, buttonVariants } from '../ui/button';\nimport { Input } from '../ui/input';\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '../ui/table';\n\nimport {\n ChevronLeft,\n ChevronRight,\n ChevronsLeft,\n ChevronsRight,\n Settings2,\n GripVertical,\n Plus,\n ChevronUp,\n ChevronDown,\n Filter as FilterIcon,\n} from 'lucide-react';\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuTrigger,\n DropdownMenuSeparator,\n DropdownMenuLabel,\n DropdownMenuGroup,\n} from '../ui/dropdown-menu';\n\nimport { useDataTableStore } from './table-store';\n\n// =============================================================================\n// Types\n// =============================================================================\n\n/**\n * テーブルレイアウトのバリアント\n * Table layout variants\n */\nexport type DataTableVariant = 'default' | 'toolbar' | 'minimal';\n\n// =============================================================================\n// Sortable Header Component\n// =============================================================================\n\ninterface DataTableColumnHeaderProps<\n TData extends object,\n TValue,\n> extends React.HTMLAttributes<HTMLTableCellElement> {\n header: Header<TData, TValue>;\n enableColumnOrdering?: boolean;\n enableMultiSort?: boolean;\n sortIndex?: number;\n}\n\nfunction DataTableColumnHeader<TData extends object, TValue>({\n header,\n enableColumnOrdering = true,\n enableMultiSort = false,\n sortIndex,\n}: DataTableColumnHeaderProps<TData, TValue>) {\n const { attributes, listeners, setNodeRef, setActivatorNodeRef, transform, transition, isDragging } = useSortable({\n id: header.column.id,\n disabled: !enableColumnOrdering,\n });\n\n const canSort = header.column.getCanSort();\n const sortDirection = header.column.getIsSorted();\n const isSorted = sortDirection !== false;\n const SortLabel = canSort && typeof header.column.columnDef.header !== 'function' ? 'button' : 'span';\n\n const style: React.CSSProperties = enableColumnOrdering\n ? {\n transform: CSS.Translate.toString(transform),\n transition,\n opacity: isDragging ? 0.8 : 1,\n zIndex: isDragging ? 1 : 0,\n position: 'relative',\n cursor: 'move',\n }\n : {};\n\n const handleSort = (e: React.MouseEvent) => {\n if (!canSort || (e.target as HTMLElement).closest('button, input, select, [role=checkbox]')) return;\n if (enableMultiSort && e.shiftKey) {\n header.column.toggleSorting(undefined, true);\n } else {\n header.column.toggleSorting();\n }\n };\n\n return (\n <TableHead\n ref={enableColumnOrdering ? setNodeRef : undefined}\n style={style}\n aria-sort={canSort ? (sortDirection === 'asc' ? 'ascending' : sortDirection === 'desc' ? 'descending' : 'none') : undefined}\n className={cn(\n 'bg-primary/10 text-primary font-bold border-b border-primary/20',\n canSort && 'cursor-pointer select-none hover:bg-primary/20 transition-colors',\n )}\n onClick={canSort ? handleSort : undefined}\n >\n {enableColumnOrdering && !header.isPlaceholder && <button\n type='button' ref={setActivatorNodeRef} {...attributes} {...listeners}\n aria-label={`Reorder column ${header.column.id}`}\n className='inline-flex h-6 w-6 items-center justify-center cursor-grab'\n ><GripVertical className='h-3 w-3' aria-hidden='true' /></button>}\n {header.isPlaceholder ? null : (\n <span className='inline-flex items-center gap-1'>\n <SortLabel className={cn(isSorted && 'font-semibold')}\n {...(SortLabel === 'button' ? { type: 'button' as const, onClick: (event: React.MouseEvent) => {\n event.stopPropagation();\n header.column.toggleSorting(undefined, enableMultiSort && event.shiftKey);\n } } : {})}\n >\n {flexRender(header.column.columnDef.header, header.getContext())}\n </SortLabel>\n {/* Only show sort indicator when column is actively sorted */}\n {isSorted && (\n <span className='inline-flex items-center text-xs'>\n {sortDirection === 'asc' ? (\n <ChevronUp className='h-3.5 w-3.5' />\n ) : (\n <ChevronDown className='h-3.5 w-3.5' />\n )}\n {enableMultiSort && sortIndex !== undefined && sortIndex >= 0 && (\n <span className='text-[10px] ml-0.5'>{sortIndex + 1}</span>\n )}\n </span>\n )}\n </span>\n )}\n </TableHead>\n );\n}\n\n// =============================================================================\n// DataTable Props\n// =============================================================================\n\n/**\n * DataTableProps\n * DataTableのプロップス\n *\n * ## AI/Automation Features\n * - `testId`: Container element\n * - Pattern: `{testId}`, rows: `{testId}-row-{id}`, pagination: `{testId}-pagination`\n */\nexport interface DataTableProps<TData extends object, TValue> {\n /** AI/E2E Test用の安定ID / Stable test identifier */\n testId?: string;\n /** 列定義 / Column definitions */\n columns: ColumnDef<TData, TValue>[];\n /** データ配列 / Data array */\n data: TData[];\n /** テーブルレイアウトのバリアント / Table layout variant */\n variant?: DataTableVariant;\n /** ツールバー用カスタムフィルターコンテンツ / Custom filter content for toolbar */\n filterContent?: React.ReactNode;\n /** 設定永続化用キー(Zustandストアで使用) / Storage key for persisting settings */\n storageKey?: string;\n /** 全カラムをデフォルトでソート可能にする / Enable sorting on all columns by default */\n enableSortingByDefault?: boolean;\n /** 複数カラムソートを有効化 / Enable multi-column sorting */\n enableMultiSort?: boolean;\n /** 行番号カラムを表示 / Show row number column */\n showRowNumber?: boolean;\n /** アイテム総数(表示用) / Total item count for display */\n itemCount?: number;\n /** 追加ボタンのコールバック / Callback for floating add button */\n onAdd?: () => void;\n /** 総ページ数(手動ページネーション時) / Total page count for manual pagination */\n pageCount?: number;\n /** 総行数(手動ページネーション時) / Total row count for manual pagination */\n rowCount?: number;\n /**\n * ページ変更時のコールバック / Pagination change callback\n * 操作による変更要求時に通知。初期マウント・props同期では通知しません。\n */\n onPaginationChange?: (pagination: { pageIndex: number; pageSize: number }) => void;\n /** ソートの変更要求時のコールバック(初期マウント・props同期では通知しない) / Requested sorting change */\n onSortingChange?: (sorting: SortingState) => void;\n /** フィルタ変更時のコールバック / Filter change callback */\n onColumnFiltersChange?: (filters: ColumnFiltersState) => void;\n /** 行クリック時のコールバック / Row click callback */\n onRowClick?: (rowId: string | number) => void;\n /** 選択変更時のコールバック / Selection change callback */\n onSelectionChange?: (selectedRows: TData[]) => void;\n /** 行ID用フィールド名 / Row ID field name */\n rowIdField?: string;\n /** サーバーサイドページネーション / Server-side pagination */\n manualPagination?: boolean;\n /** サーバーサイドソート / Server-side sorting */\n manualSorting?: boolean;\n /** サーバーサイドフィルタ / Server-side filtering */\n manualFiltering?: boolean;\n /** フィルタ対象カラム / Filter column name */\n filterColumn?: string;\n /** ページサイズのオプション / Page size options */\n pageSizeOptions?: number[];\n /** ソート推移のオプション(外部制御用) / Sorting state for controlled mode */\n sorting?: SortingState;\n /**\n * 現在のページネーション(外部制御用) / Pagination state for controlled mode\n * 指定時はページ自動リセット(autoResetPageIndex)を無効化します。\n */\n pagination?: PaginationState;\n /** 列の並べ替え有効化 / Enable column reordering */\n enableColumnOrdering?: boolean;\n /** コンテナのクラス名 / Container class name */\n containerClassName?: string;\n /** テーブルのクラス名 / Table class name */\n tableClassName?: string;\n /** フィルターのレイアウトモード / Filter layout mode */\n filterLayout?: 'inline' | 'panel';\n /** フィルターパネルの初期開閉状態 / Default open state of the filter panel */\n defaultFilterOpen?: boolean;\n /** アクティブフィルター表示用のコンテンツ / Custom active filters component or node */\n activeFiltersContent?: React.ReactNode;\n}\n\n// =============================================================================\n// DataTable Component\n// =============================================================================\n\n/**\n * データテーブルコンポーネント\n *\n * ソート、フィルタ、ページネーション、行選択、列並べ替えに対応した\n * 高機能なデータテーブル。TanStack Table を使用。\n *\n * ## 制御モード (Controlled Mode)\n * `sorting` と `pagination` プロップスを渡すことで、外部状態からテーブルを制御できます。\n * これにより、サーバーサイドソートとクライアントサイドページネーションといった\n * 柔軟な組み合わせが、共有ライブラリ側のロジックを変更せずに実現可能です。\n *\n * 補足:\n * - `pagination` を指定した場合、`manualPagination` が false でも `onPaginationChange` を通知します。\n * - `pagination` 指定時はデータ更新時の `pageIndex` 自動リセットを無効化します。\n *\n * @example 基本的な使い方 (Uncontrolled)\n * ```tsx\n * <DataTable columns={columns} data={data} />\n * ```\n *\n * @example 外部状態によるソート制御 (Controlled Sorting)\n * ```tsx\n * const [sorting, setSorting] = useState<SortingState>([]);\n * <DataTable\n * columns={columns}\n * data={data}\n * sorting={sorting}\n * onSortingChange={setSorting}\n * manualSorting={true}\n * />\n * ```\n */\nexport function DataTable<TData extends object, TValue>({\n columns,\n data,\n variant = 'default',\n filterContent,\n storageKey,\n enableSortingByDefault = true,\n enableMultiSort = false,\n showRowNumber = false,\n itemCount,\n onAdd,\n pageCount,\n rowCount,\n onPaginationChange,\n onSortingChange,\n onColumnFiltersChange,\n onRowClick,\n onSelectionChange,\n rowIdField = 'id',\n manualPagination = false,\n manualSorting = false,\n manualFiltering = false,\n filterColumn,\n sorting: controlledSorting,\n pagination: controlledPagination,\n enableColumnOrdering = true,\n containerClassName,\n tableClassName,\n pageSizeOptions = [10, 20, 30, 50, 100],\n filterLayout = 'inline',\n defaultFilterOpen = false,\n activeFiltersContent,\n}: DataTableProps<TData, TValue>) {\n 'use no memo';\n\n // Get persisted settings from store (must be called before any early returns)\n const getTableSettings = useDataTableStore((state) => state.getTableSettings);\n const setTableSettings = useDataTableStore((state) => state.setTableSettings);\n const hasHydrated = useDataTableStore((state) => state._hasHydrated);\n\n // SSR safety: Only render on client\n // useSyncExternalStore ensures we have a consistent value during hydration\n const mounted = React.useSyncExternalStore(\n React.useCallback(() => () => {}, []),\n () => true,\n () => false,\n );\n const [filterOpen, setFilterOpen] = React.useState(defaultFilterOpen);\n\n // Initialize state with default values (SSR-safe)\n const [localSorting, setLocalSorting] = React.useState<SortingState>(controlledSorting || []);\n const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>([]);\n const [columnVisibility, setColumnVisibility] = React.useState<VisibilityState>({});\n const [rowSelection, setRowSelection] = React.useState({});\n const [localPagination, setLocalPagination] = React.useState<PaginationState>(\n controlledPagination || {\n pageIndex: 0,\n pageSize: 10,\n },\n );\n const [columnOrder, setColumnOrder] = React.useState<ColumnOrderState>(\n columns.map((c) => c.id || ((c as { accessorKey?: string }).accessorKey as string)),\n );\n const isPaginationControlled = controlledPagination !== undefined;\n const sorting = controlledSorting ?? localSorting;\n const pagination = controlledPagination ?? localPagination;\n const setSorting: React.Dispatch<React.SetStateAction<SortingState>> = (updater) => {\n const next = typeof updater === 'function' ? updater(sorting) : updater;\n if (controlledSorting === undefined) setLocalSorting(next);\n onSortingChange?.(next);\n };\n const setPagination: React.Dispatch<React.SetStateAction<PaginationState>> = (updater) => {\n const next = typeof updater === 'function' ? updater(pagination) : updater;\n if (controlledPagination === undefined) setLocalPagination(next);\n onPaginationChange?.(next);\n };\n const [settingsLoaded, setSettingsLoaded] = React.useState<string | null>(null);\n const columnIdListKey = React.useMemo(\n () => columns.map((c) => c.id || (c as { accessorKey?: string }).accessorKey || '').join('|'),\n [columns],\n );\n const validColumnIds = React.useMemo(\n () => new Set(columnIdListKey.split('|').filter(Boolean)),\n [columnIdListKey],\n );\n\n // Guarded render-time hydration, avoiding a stale-state effect render.\n const loadKey = storageKey ? JSON.stringify([storageKey, columnIdListKey, Boolean(controlledSorting), Boolean(controlledPagination)]) : null;\n if (hasHydrated && storageKey && settingsLoaded !== loadKey) {\n setSettingsLoaded(loadKey);\n const storedSettings = getTableSettings(storageKey);\n if (storedSettings) {\n if (!controlledSorting && storedSettings.sorting && storedSettings.sorting.length > 0) {\n // Filter out sorting for columns that no longer exist\n const validSorting = storedSettings.sorting.filter((s) => validColumnIds.has(s.id));\n if (validSorting.length > 0) {\n setLocalSorting(validSorting);\n }\n }\n if (\n storedSettings.columnVisibility &&\n Object.keys(storedSettings.columnVisibility).length > 0\n ) {\n // Filter out visibility for columns that no longer exist\n const validVisibility: Record<string, boolean> = {};\n for (const [key, value] of Object.entries(storedSettings.columnVisibility)) {\n if (validColumnIds.has(key)) {\n validVisibility[key] = value;\n }\n }\n if (Object.keys(validVisibility).length > 0) {\n setColumnVisibility(validVisibility);\n }\n }\n if (!controlledPagination && storedSettings.pageSize && storedSettings.pageSize !== 10) {\n setLocalPagination((prev) => ({ ...prev, pageSize: storedSettings.pageSize }));\n }\n if (storedSettings.columnOrder && storedSettings.columnOrder.length > 0) {\n // Filter out columns that no longer exist and add new columns\n const validStoredOrder = storedSettings.columnOrder.filter((id) => validColumnIds.has(id));\n const storedOrderSet = new Set(validStoredOrder);\n const newColumns = Array.from(validColumnIds).filter((id) => !storedOrderSet.has(id));\n const mergedOrder = [...validStoredOrder, ...newColumns];\n if (mergedOrder.length > 0) {\n setColumnOrder(mergedOrder);\n }\n }\n }\n }\n\n // Row number column definition (MUST be called before early return)\n const rowNumberColumn: ColumnDef<TData, TValue> = React.useMemo(\n () => ({\n id: 'rowNumber',\n header: 'No',\n enableSorting: false,\n cell: ({ row, table: tableInstance }) => {\n const paginationState = tableInstance.store.state.pagination;\n if (paginationState) {\n return paginationState.pageIndex * paginationState.pageSize + row.index + 1;\n }\n return row.index + 1;\n },\n }),\n [],\n );\n\n // Add row number column if requested (MUST be called before early return)\n const columnsWithRowNumber = React.useMemo(() => {\n const cols = showRowNumber ? [rowNumberColumn, ...columns] : columns;\n // Apply enableSortingByDefault to all columns that don't explicitly disable sorting\n if (enableSortingByDefault) {\n return cols.map((col) => ({\n ...col,\n enableSorting: col.enableSorting !== false,\n }));\n }\n return cols;\n }, [showRowNumber, columns, rowNumberColumn, enableSortingByDefault]);\n\n // Helper to extract nested ID safely (MUST be called before early return)\n const getRowId = React.useCallback(\n (originalRow: TData) => {\n if (!rowIdField) return undefined;\n // Simple dot notation support for id field\n\n return rowIdField.split('_').reduce<unknown>((obj, key) => {\n if (\n obj &&\n typeof obj === 'object' &&\n key !== '__proto__' &&\n key !== 'constructor' &&\n key !== 'prototype' &&\n Object.prototype.hasOwnProperty.call(obj, key)\n ) {\n return (obj as Record<string, unknown>)[key];\n }\n return undefined;\n }, originalRow as unknown);\n },\n [rowIdField],\n );\n\n // Persist settings to store (MUST be called before early return)\n React.useEffect(() => {\n if (storageKey && hasHydrated && settingsLoaded === loadKey) {\n setTableSettings(storageKey, {\n columnOrder,\n columnVisibility,\n sorting,\n pageSize: pagination.pageSize,\n });\n }\n }, [storageKey, columnOrder, columnVisibility, sorting, pagination.pageSize, setTableSettings, hasHydrated, settingsLoaded, loadKey]);\n\n React.useEffect(() => {\n if (manualFiltering && onColumnFiltersChange) {\n onColumnFiltersChange(columnFilters);\n }\n }, [columnFilters, manualFiltering, onColumnFiltersChange]);\n\n // Create table instance (MUST be called before early return)\n const table = useTable({\n features: dataTableFeatures,\n data,\n // Table 9 erases heterogeneous cell values to unknown at the table boundary.\n columns: columnsWithRowNumber as ColumnDef<TData>[],\n pageCount: manualPagination ? pageCount : undefined,\n rowCount: manualPagination ? rowCount : undefined,\n getRowId: rowIdField\n ? (originalRow, index) => {\n const id = rowIdField.split('_').reduce<unknown>((obj, key) => {\n if (obj && typeof obj === 'object' && key in (obj as Record<string, unknown>)) {\n return (obj as Record<string, unknown>)[key];\n }\n return undefined;\n }, originalRow as unknown);\n return id !== undefined ? String(id) : String(index);\n }\n : undefined,\n state: {\n sorting,\n columnFilters,\n columnVisibility,\n rowSelection,\n pagination,\n columnOrder,\n },\n enableRowSelection: true,\n enableMultiSort,\n onRowSelectionChange: setRowSelection,\n onSortingChange: setSorting,\n onColumnFiltersChange: setColumnFilters,\n onColumnVisibilityChange: setColumnVisibility,\n onPaginationChange: setPagination,\n onColumnOrderChange: setColumnOrder,\n autoResetPageIndex: manualPagination || isPaginationControlled ? false : undefined,\n manualPagination,\n manualSorting,\n manualFiltering,\n });\n\n // Sync selection to parent (MUST be called before early return)\n React.useEffect(() => {\n if (onSelectionChange) {\n const selectedRows = table.getFilteredSelectedRowModel().rows.map((row) => row.original);\n onSelectionChange(selectedRows);\n }\n }, [rowSelection, table, onSelectionChange]);\n\n // DnD Sensors (MUST be called before early return)\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: {\n distance: 8,\n },\n }),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n }),\n );\n\n // Handle drag end callback (MUST be defined before early return)\n const handleDragEnd = React.useCallback((event: DragEndEvent) => {\n const { active, over } = event;\n if (active && over && active.id !== over.id) {\n setColumnOrder((order) => {\n const oldIndex = order.indexOf(active.id as string);\n const newIndex = order.indexOf(over.id as string);\n return arrayMove(order, oldIndex, newIndex);\n });\n }\n }, []);\n\n // Get sort index for multi-sort display (MUST be called before early return)\n const getSortIndex = React.useCallback(\n (columnId: string): number => {\n return sorting.findIndex((s) => s.id === columnId);\n },\n [sorting],\n );\n\n // Render table content (MUST be called before early return)\n const renderTable = React.useCallback(\n () => (\n <DndContext sensors={sensors} collisionDetection={closestCenter} onDragEnd={handleDragEnd}>\n <div className={cn('rounded-md border', tableClassName)}>\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <SortableContext\n key={headerGroup.id}\n items={columnOrder}\n strategy={horizontalListSortingStrategy}\n >\n <TableRow>\n {headerGroup.headers.map((header) => (\n <DataTableColumnHeader\n key={header.id}\n header={header}\n enableColumnOrdering={enableColumnOrdering}\n enableMultiSort={enableMultiSort}\n sortIndex={getSortIndex(header.column.id)}\n />\n ))}\n </TableRow>\n </SortableContext>\n ))}\n </TableHeader>\n <TableBody>\n {table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() && 'selected'}\n onClick={() =>\n onRowClick && onRowClick(getRowId(row.original) as string | number)\n }\n className={onRowClick ? 'cursor-pointer hover:bg-muted/50' : undefined}\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell key={cell.id}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell colSpan={columnsWithRowNumber.length} className='h-24 text-center'>\n {m.dataTable_noResults()}\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </div>\n </DndContext>\n ),\n [\n sensors,\n handleDragEnd,\n table,\n columnsWithRowNumber,\n columnOrder,\n enableColumnOrdering,\n enableMultiSort,\n getSortIndex,\n onRowClick,\n getRowId,\n tableClassName,\n ],\n );\n\n // Render loading table during SSR - simple version to avoid hydration issues\n const renderLoadingTable = () => (\n <div className={cn('rounded-md border', tableClassName)}>\n <Table>\n <TableBody>\n <TableRow>\n <TableCell className='h-24 text-center'>\n <div className='text-muted-foreground'>Loading...</div>\n </TableCell>\n </TableRow>\n </TableBody>\n </Table>\n </div>\n );\n\n // Variant: minimal - just table with pagination\n if (variant === 'minimal') {\n return (\n <div className={cn('space-y-4', containerClassName)}>\n {mounted ? renderTable() : renderLoadingTable()}\n <DataTablePagination table={table} pageSizeOptions={pageSizeOptions} />\n </div>\n );\n }\n\n // Variant: toolbar - setagaya-front style with toolbar above table\n if (variant === 'toolbar') {\n return (\n <div className={cn('relative h-full', containerClassName)}>\n {onAdd && (\n <div className='absolute left-0 top-0 w-full h-full z-10 pointer-events-none'>\n <div className='fixed right-4 bottom-10 pointer-events-auto'>\n <Button\n type='button'\n size='icon'\n aria-label='Add row'\n onClick={onAdd}\n className='w-12 h-12 rounded-full shadow-lg'\n >\n <Plus className='w-6 h-6' />\n </Button>\n </div>\n </div>\n )}\n <div className='relative h-full flex flex-col'>\n {/* Toolbar */}\n <div className='bg-muted p-2 rounded-t-md grid grid-cols-1 sm:grid-cols-[1fr_minmax(0,auto)_1fr] items-center gap-2'>\n {/* Center: Column settings + filter content */}\n <div className='flex flex-wrap justify-center items-center gap-2 sm:col-start-2 sm:col-end-3'>\n <DataTableViewOptions table={table} />\n {filterContent && filterLayout === 'inline' && filterContent}\n {filterContent && filterLayout === 'panel' && (\n <Button\n type='button'\n variant={filterOpen ? 'default' : 'outline'}\n size='sm'\n onClick={() => setFilterOpen(!filterOpen)}\n className='h-8 gap-1.5'\n >\n <FilterIcon className='h-4 w-4' />\n <span>フィルター</span>\n </Button>\n )}\n </div>\n {/* Right: Pagination + count */}\n <div className='flex items-center gap-3 justify-center sm:justify-end sm:col-start-3 sm:col-end-4'>\n <DataTablePaginationCompact table={table} pageSizeOptions={pageSizeOptions} />\n {typeof itemCount === 'number' && (\n <span className='text-sm text-muted-foreground whitespace-nowrap'>\n {`${itemCount.toLocaleString()} ${m.dataTable_items()}`}\n </span>\n )}\n </div>\n </div>\n {/* Filter Panel (Collapsible) */}\n {filterContent && filterLayout === 'panel' && (\n <div\n className={cn(\n 'border-b transition-all duration-200 ease-in-out overflow-hidden bg-background',\n filterOpen ? 'max-h-[500px] p-4' : 'max-h-0 p-0 border-none',\n )}\n >\n {filterContent}\n </div>\n )}\n {/* Active Filters Display */}\n {activeFiltersContent && (\n <div className='bg-background px-4 py-1.5 border-b'>{activeFiltersContent}</div>\n )}\n {/* Table */}\n <div className='flex-1 overflow-auto'>\n {mounted ? renderTable() : renderLoadingTable()}\n </div>\n </div>\n </div>\n );\n }\n\n // Variant: default - current behavior\n return (\n <div className={cn('space-y-4', containerClassName)}>\n <div className='flex items-center justify-between'>\n <div className='flex items-center py-4'>\n {filterColumn && (\n <Input\n placeholder={m.dataTable_filterPlaceholder({ column: filterColumn })}\n value={(table.getColumn(filterColumn)?.getFilterValue() as string) ?? ''}\n onChange={(event) =>\n table.getColumn(filterColumn)?.setFilterValue(event.target.value)\n }\n className='max-w-sm'\n />\n )}\n </div>\n <DataTableViewOptions table={table} />\n </div>\n {activeFiltersContent && (\n <div className='border rounded-md bg-background px-3 py-1'>{activeFiltersContent}</div>\n )}\n {mounted ? renderTable() : renderLoadingTable()}\n <DataTablePagination table={table} pageSizeOptions={pageSizeOptions} />\n {onAdd && (\n <div className='fixed right-4 bottom-10 z-10'>\n <Button\n type='button'\n size='icon'\n onClick={onAdd}\n className='w-12 h-12 rounded-full shadow-lg'\n >\n <Plus className='w-6 h-6' />\n </Button>\n </div>\n )}\n </div>\n );\n}\n\n// =============================================================================\n// View Options Component\n// =============================================================================\n\ninterface DataTableViewOptionsProps<TData extends object> {\n table: TableInstance<TData>;\n}\n\n/**\n * テーブルの表示列を切り替える設定ドロップダウンメニューコンポーネント\n */\nexport function DataTableViewOptions<TData extends object>({ table }: DataTableViewOptionsProps<TData>) {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger\n className={buttonVariants({ variant: 'default', size: 'sm', className: 'h-8' })}\n >\n <Settings2 className='mr-2 h-4 w-4' />\n {m.dataTable_view()}\n </DropdownMenuTrigger>\n <DropdownMenuContent align='end' className='w-40'>\n <DropdownMenuGroup>\n <DropdownMenuLabel>{m.dataTable_toggleColumns()}</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {table\n .getAllColumns()\n .filter((column) => typeof column.accessorFn !== 'undefined' && column.getCanHide())\n .map((column) => {\n return (\n <DropdownMenuCheckboxItem\n key={column.id}\n className='capitalize'\n checked={column.getIsVisible()}\n onCheckedChange={(value) => column.toggleVisibility(!!value)}\n >\n {typeof column.columnDef.header === 'string'\n ? column.columnDef.header\n : column.id}\n </DropdownMenuCheckboxItem>\n );\n })}\n </DropdownMenuGroup>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\n// =============================================================================\n// Pagination Component (Full)\n// =============================================================================\n\ninterface DataTablePaginationProps<TData extends object> {\n table: TableInstance<TData>;\n pageSizeOptions?: number[];\n}\n\n/**\n * テーブルの標準的なページネーションコントロールコンポーネント\n */\nexport function DataTablePagination<TData extends object>({\n table,\n pageSizeOptions = [10, 20, 30, 50, 100],\n}: DataTablePaginationProps<TData>) {\n return (\n <div className='flex items-center justify-between px-2'>\n <div className='flex-1 text-sm text-muted-foreground'>\n {m.dataTable_rowsSelected({\n selected: table.getFilteredSelectedRowModel().rows.length,\n total: table.getFilteredRowModel().rows.length,\n })}\n </div>\n <div className='flex items-center space-x-6 lg:space-x-8'>\n <div className='flex items-center space-x-2'>\n <p className='text-sm font-medium'>{m.dataTable_rowsPerPage()}</p>\n <select\n aria-label={m.dataTable_rowsPerPage()}\n value={`${table.store.state.pagination.pageSize}`}\n onChange={(e) => {\n table.setPageSize(Number(e.target.value));\n }}\n className='h-8 w-fit min-w-16 rounded-md border border-input bg-background px-2 py-1 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2'\n >\n {pageSizeOptions.map((pageSize) => (\n <option key={pageSize} value={`${pageSize}`}>\n {pageSize}\n </option>\n ))}\n </select>\n </div>\n <div className='flex w-24 items-center justify-center text-sm font-medium'>\n {m.dataTable_page({\n current: table.store.state.pagination.pageIndex + 1,\n total: table.getPageCount(),\n })}\n </div>\n <div className='flex items-center space-x-2'>\n <Button\n variant='default'\n size='icon'\n className='hidden h-8 w-8 lg:flex hover:bg-primary/90'\n aria-label={m.dataTable_goToFirstPage()}\n onClick={() => table.setPageIndex(0)}\n disabled={!table.getCanPreviousPage()}\n >\n <span className='sr-only'>{m.dataTable_goToFirstPage()}</span>\n <ChevronsLeft className='h-4 w-4' />\n </Button>\n <Button\n variant='default'\n size='icon'\n className='h-8 w-8 hover:bg-primary/90'\n aria-label={m.dataTable_goToPreviousPage()}\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n <span className='sr-only'>{m.dataTable_goToPreviousPage()}</span>\n <ChevronLeft className='h-4 w-4' />\n </Button>\n <Button\n variant='default'\n size='icon'\n className='h-8 w-8 hover:bg-primary/90'\n aria-label={m.dataTable_goToNextPage()}\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n <span className='sr-only'>{m.dataTable_goToNextPage()}</span>\n <ChevronRight className='h-4 w-4' />\n </Button>\n <Button\n variant='default'\n size='icon'\n className='hidden h-8 w-8 lg:flex hover:bg-primary/90'\n aria-label={m.dataTable_goToLastPage()}\n onClick={() => table.setPageIndex(table.getPageCount() - 1)}\n disabled={!table.getCanNextPage()}\n >\n <span className='sr-only'>{m.dataTable_goToLastPage()}</span>\n <ChevronsRight className='h-4 w-4' />\n </Button>\n </div>\n </div>\n </div>\n );\n}\n\n// =============================================================================\n// Pagination Component (Compact - for toolbar variant)\n// =============================================================================\n\ninterface DataTablePaginationCompactProps<TData extends object> {\n table: TableInstance<TData>;\n pageSizeOptions?: number[];\n}\n\n/**\n * ツールバー等に配置するコンパクトなページネーションコントロールコンポーネント\n */\nexport function DataTablePaginationCompact<TData extends object>({\n table,\n pageSizeOptions = [10, 20, 30, 50, 100],\n}: DataTablePaginationCompactProps<TData>) {\n const totalPages = table.getPageCount();\n\n return (\n <div className='flex items-center gap-1'>\n <select\n aria-label={m.dataTable_rowsPerPage()}\n value={`${table.store.state.pagination.pageSize}`}\n onChange={(e) => {\n table.setPageSize(Number(e.target.value));\n }}\n className='h-8 w-fit min-w-16 rounded-md border border-input bg-background px-2 py-1 text-sm'\n >\n {pageSizeOptions.map((pageSize) => (\n <option key={pageSize} value={`${pageSize}`}>\n {pageSize}\n </option>\n ))}\n </select>\n {totalPages > 1 && (\n <>\n <Button\n variant='default'\n size='icon'\n className='h-8 w-8 hover:bg-primary/90'\n aria-label={m.dataTable_goToFirstPage()}\n onClick={() => table.setPageIndex(0)}\n disabled={table.store.state.pagination.pageIndex === 0}\n >\n <ChevronsLeft className='h-4 w-4' />\n </Button>\n <Button\n variant='default'\n size='icon'\n className='h-8 w-8 hover:bg-primary/90'\n aria-label={m.dataTable_goToPreviousPage()}\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n <ChevronLeft className='h-4 w-4' />\n </Button>\n <span className='text-sm text-muted-foreground whitespace-nowrap px-1'>\n {table.store.state.pagination.pageIndex + 1} / {totalPages}\n </span>\n <Button\n variant='default'\n size='icon'\n className='h-8 w-8 hover:bg-primary/90'\n aria-label={m.dataTable_goToNextPage()}\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n <ChevronRight className='h-4 w-4' />\n </Button>\n <Button\n variant='default'\n size='icon'\n className='h-8 w-8 hover:bg-primary/90'\n aria-label={m.dataTable_goToLastPage()}\n onClick={() => table.setPageIndex(totalPages - 1)}\n disabled={table.store.state.pagination.pageIndex === totalPages - 1}\n >\n <ChevronsRight className='h-4 w-4' />\n </Button>\n </>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
|