@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,83 +1,81 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* A navigation item rendered by {@link SmartSidebar}.
|
|
4
|
+
* @see SmartSidebar
|
|
4
5
|
*/
|
|
5
6
|
export interface SmartSidebarItem {
|
|
6
|
-
/**
|
|
7
|
+
/** Visible item label; also used in collapsed tooltips. */
|
|
7
8
|
label: string;
|
|
8
|
-
/**
|
|
9
|
+
/** Icon rendered in expanded and collapsed layouts. */
|
|
9
10
|
icon: React.ReactNode;
|
|
10
|
-
/**
|
|
11
|
+
/** Opaque destination passed to onNavigate; compared exactly with activePath. */
|
|
11
12
|
path: string;
|
|
12
|
-
/**
|
|
13
|
+
/** Disables item activation when true; omitted means enabled. */
|
|
13
14
|
disabled?: boolean;
|
|
14
|
-
/**
|
|
15
|
+
/** Additional content shown beside the expanded item label. */
|
|
15
16
|
extra?: React.ReactNode;
|
|
16
17
|
}
|
|
17
18
|
/**
|
|
18
19
|
* サイドバーのグループ
|
|
19
20
|
*/
|
|
20
21
|
export interface SmartSidebarGroup {
|
|
21
|
-
/**
|
|
22
|
+
/** Optional heading; omitted headings render no group title. */
|
|
22
23
|
title?: string;
|
|
23
|
-
/**
|
|
24
|
+
/** Items in display order. */
|
|
24
25
|
items: SmartSidebarItem[];
|
|
25
|
-
/**
|
|
26
|
+
/** Allows the expanded sidebar heading to toggle between all items and a two-item preview. */
|
|
26
27
|
collapsible?: boolean;
|
|
27
|
-
/**
|
|
28
|
+
/** Initial two-item group preview state; defaults to false. Later prop changes do not reset local state. */
|
|
28
29
|
defaultCollapsed?: boolean;
|
|
29
30
|
}
|
|
30
31
|
/**
|
|
31
32
|
* サイドバーのプロップス
|
|
32
33
|
*/
|
|
33
34
|
export interface SidebarProps {
|
|
34
|
-
/**
|
|
35
|
+
/** Additional classes for the sidebar root. */
|
|
35
36
|
className?: string;
|
|
36
|
-
/**
|
|
37
|
+
/** Groups in display order. */
|
|
37
38
|
groups: SmartSidebarGroup[];
|
|
38
|
-
/**
|
|
39
|
+
/** Optional navigation items pinned below the scrollable groups. */
|
|
39
40
|
footerItems?: SmartSidebarItem[];
|
|
40
|
-
/**
|
|
41
|
+
/** Exact path used to highlight active items; no item is active when omitted. */
|
|
41
42
|
activePath?: string;
|
|
42
|
-
/**
|
|
43
|
+
/** Called with the activated item path; the host performs routing. */
|
|
43
44
|
onNavigate?: (path: string) => void;
|
|
44
|
-
/**
|
|
45
|
+
/** Controlled whole-sidebar collapse state; defaults to false. */
|
|
45
46
|
collapsed?: boolean;
|
|
46
|
-
/**
|
|
47
|
+
/** Called by the toggle button; the host must update collapsed. Omitted hides the button. */
|
|
47
48
|
onToggleCollapse?: () => void;
|
|
48
|
-
/**
|
|
49
|
+
/** Renders header content with the current collapsed state. */
|
|
49
50
|
header?: (collapsed: boolean) => React.ReactNode;
|
|
50
|
-
/**
|
|
51
|
+
/** Renders footer content with the current collapsed state. */
|
|
51
52
|
sidebarFooter?: (collapsed: boolean) => React.ReactNode;
|
|
52
53
|
}
|
|
53
54
|
/**
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
55
|
+
* Renders grouped navigation with controlled sidebar collapse and local group collapse.
|
|
56
|
+
* @param props - Navigation items, controlled selection/collapse and render callbacks; see {@link SidebarProps}.
|
|
57
|
+
* @returns The sidebar element, including its own tooltip provider.
|
|
58
|
+
* @remarks Import Appkit CSS. ThemeProvider enables reactive spacing density; without one,
|
|
59
|
+
* the theme context uses normal spacing. The host owns routing
|
|
60
|
+
* and updates activePath/collapsed. Sidebar from the same entry is a compound namespace;
|
|
61
|
+
* use SmartSidebar for this groups-based API. CSS variables --sidebar-width and
|
|
62
|
+
* --sidebar-collapsed-width fall back to 16rem and 4rem respectively.
|
|
59
63
|
* @example
|
|
60
64
|
* ```tsx
|
|
61
|
-
* import {
|
|
62
|
-
* import {
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
* {
|
|
66
|
-
* title: 'メイン',
|
|
67
|
-
* items: [
|
|
68
|
-
* { label: 'ホーム', icon: <Home />, path: '/' },
|
|
69
|
-
* { label: '設定', icon: <Settings />, path: '/settings' },
|
|
70
|
-
* ],
|
|
71
|
-
* },
|
|
72
|
-
* ];
|
|
65
|
+
* import { useState } from 'react';
|
|
66
|
+
* import { SmartSidebar } from '@alneas/appkit-react/tools/sidebar';
|
|
67
|
+
* import { ThemeProvider } from '@alneas/appkit-react/ui/theme';
|
|
68
|
+
* import '@alneas/appkit-react/styles';
|
|
73
69
|
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
70
|
+
* export function Navigation() {
|
|
71
|
+
* const [path, setPath] = useState('/');
|
|
72
|
+
* const [collapsed, setCollapsed] = useState(false);
|
|
73
|
+
* return <ThemeProvider><SmartSidebar
|
|
74
|
+
* groups={[{ title: 'Main', items: [{ label: 'Home', icon: <span>H</span>, path: '/' }] }]}
|
|
75
|
+
* activePath={path} onNavigate={setPath} collapsed={collapsed}
|
|
76
|
+
* onToggleCollapse={() => setCollapsed(value => !value)}
|
|
77
|
+
* /></ThemeProvider>;
|
|
78
|
+
* }
|
|
81
79
|
* ```
|
|
82
80
|
*/
|
|
83
81
|
export declare function SmartSidebar({ className, groups, footerItems, activePath, onNavigate, collapsed, onToggleCollapse, header, sidebarFooter, }: SidebarProps): React.JSX.Element;
|
|
@@ -1,83 +1,81 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* A navigation item rendered by {@link SmartSidebar}.
|
|
4
|
+
* @see SmartSidebar
|
|
4
5
|
*/
|
|
5
6
|
export interface SmartSidebarItem {
|
|
6
|
-
/**
|
|
7
|
+
/** Visible item label; also used in collapsed tooltips. */
|
|
7
8
|
label: string;
|
|
8
|
-
/**
|
|
9
|
+
/** Icon rendered in expanded and collapsed layouts. */
|
|
9
10
|
icon: React.ReactNode;
|
|
10
|
-
/**
|
|
11
|
+
/** Opaque destination passed to onNavigate; compared exactly with activePath. */
|
|
11
12
|
path: string;
|
|
12
|
-
/**
|
|
13
|
+
/** Disables item activation when true; omitted means enabled. */
|
|
13
14
|
disabled?: boolean;
|
|
14
|
-
/**
|
|
15
|
+
/** Additional content shown beside the expanded item label. */
|
|
15
16
|
extra?: React.ReactNode;
|
|
16
17
|
}
|
|
17
18
|
/**
|
|
18
19
|
* サイドバーのグループ
|
|
19
20
|
*/
|
|
20
21
|
export interface SmartSidebarGroup {
|
|
21
|
-
/**
|
|
22
|
+
/** Optional heading; omitted headings render no group title. */
|
|
22
23
|
title?: string;
|
|
23
|
-
/**
|
|
24
|
+
/** Items in display order. */
|
|
24
25
|
items: SmartSidebarItem[];
|
|
25
|
-
/**
|
|
26
|
+
/** Allows the expanded sidebar heading to toggle between all items and a two-item preview. */
|
|
26
27
|
collapsible?: boolean;
|
|
27
|
-
/**
|
|
28
|
+
/** Initial two-item group preview state; defaults to false. Later prop changes do not reset local state. */
|
|
28
29
|
defaultCollapsed?: boolean;
|
|
29
30
|
}
|
|
30
31
|
/**
|
|
31
32
|
* サイドバーのプロップス
|
|
32
33
|
*/
|
|
33
34
|
export interface SidebarProps {
|
|
34
|
-
/**
|
|
35
|
+
/** Additional classes for the sidebar root. */
|
|
35
36
|
className?: string;
|
|
36
|
-
/**
|
|
37
|
+
/** Groups in display order. */
|
|
37
38
|
groups: SmartSidebarGroup[];
|
|
38
|
-
/**
|
|
39
|
+
/** Optional navigation items pinned below the scrollable groups. */
|
|
39
40
|
footerItems?: SmartSidebarItem[];
|
|
40
|
-
/**
|
|
41
|
+
/** Exact path used to highlight active items; no item is active when omitted. */
|
|
41
42
|
activePath?: string;
|
|
42
|
-
/**
|
|
43
|
+
/** Called with the activated item path; the host performs routing. */
|
|
43
44
|
onNavigate?: (path: string) => void;
|
|
44
|
-
/**
|
|
45
|
+
/** Controlled whole-sidebar collapse state; defaults to false. */
|
|
45
46
|
collapsed?: boolean;
|
|
46
|
-
/**
|
|
47
|
+
/** Called by the toggle button; the host must update collapsed. Omitted hides the button. */
|
|
47
48
|
onToggleCollapse?: () => void;
|
|
48
|
-
/**
|
|
49
|
+
/** Renders header content with the current collapsed state. */
|
|
49
50
|
header?: (collapsed: boolean) => React.ReactNode;
|
|
50
|
-
/**
|
|
51
|
+
/** Renders footer content with the current collapsed state. */
|
|
51
52
|
sidebarFooter?: (collapsed: boolean) => React.ReactNode;
|
|
52
53
|
}
|
|
53
54
|
/**
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
55
|
+
* Renders grouped navigation with controlled sidebar collapse and local group collapse.
|
|
56
|
+
* @param props - Navigation items, controlled selection/collapse and render callbacks; see {@link SidebarProps}.
|
|
57
|
+
* @returns The sidebar element, including its own tooltip provider.
|
|
58
|
+
* @remarks Import Appkit CSS. ThemeProvider enables reactive spacing density; without one,
|
|
59
|
+
* the theme context uses normal spacing. The host owns routing
|
|
60
|
+
* and updates activePath/collapsed. Sidebar from the same entry is a compound namespace;
|
|
61
|
+
* use SmartSidebar for this groups-based API. CSS variables --sidebar-width and
|
|
62
|
+
* --sidebar-collapsed-width fall back to 16rem and 4rem respectively.
|
|
59
63
|
* @example
|
|
60
64
|
* ```tsx
|
|
61
|
-
* import {
|
|
62
|
-
* import {
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
* {
|
|
66
|
-
* title: 'メイン',
|
|
67
|
-
* items: [
|
|
68
|
-
* { label: 'ホーム', icon: <Home />, path: '/' },
|
|
69
|
-
* { label: '設定', icon: <Settings />, path: '/settings' },
|
|
70
|
-
* ],
|
|
71
|
-
* },
|
|
72
|
-
* ];
|
|
65
|
+
* import { useState } from 'react';
|
|
66
|
+
* import { SmartSidebar } from '@alneas/appkit-react/tools/sidebar';
|
|
67
|
+
* import { ThemeProvider } from '@alneas/appkit-react/ui/theme';
|
|
68
|
+
* import '@alneas/appkit-react/styles';
|
|
73
69
|
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
70
|
+
* export function Navigation() {
|
|
71
|
+
* const [path, setPath] = useState('/');
|
|
72
|
+
* const [collapsed, setCollapsed] = useState(false);
|
|
73
|
+
* return <ThemeProvider><SmartSidebar
|
|
74
|
+
* groups={[{ title: 'Main', items: [{ label: 'Home', icon: <span>H</span>, path: '/' }] }]}
|
|
75
|
+
* activePath={path} onNavigate={setPath} collapsed={collapsed}
|
|
76
|
+
* onToggleCollapse={() => setCollapsed(value => !value)}
|
|
77
|
+
* /></ThemeProvider>;
|
|
78
|
+
* }
|
|
81
79
|
* ```
|
|
82
80
|
*/
|
|
83
81
|
export declare function SmartSidebar({ className, groups, footerItems, activePath, onNavigate, collapsed, onToggleCollapse, header, sidebarFooter, }: SidebarProps): React.JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SmartSidebar.js","names":["React","React$1","sidebarDensity","SmartSidebar","useTheme","density","spacingTheme","handleNavigate","onNavigate","path","TooltipProvider","cn","collapsed","className","header","onToggleCollapse","Button","PanelLeft","ScrollArea","groups","SidebarGroupSection","index","footerItems","SidebarItemRow","activePath","item","sidebarFooter","groupCollapsed","setGroupCollapsed","group","isGroupCollapsible","toggleGroup","prev","visibleItems","Separator","Tooltip","TooltipTrigger","buttonVariants","isActive","itemHeight","TooltipContent"],"sources":["../../../../src/tools/components/sidebar/SmartSidebar.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cn } from \"../../lib/utils\";\nimport { Button, buttonVariants } from '../ui/button';\nimport { ScrollArea } from '../ui/scroll-area';\nimport { Separator } from '../ui/separator';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../ui/tooltip';\nimport { PanelLeft } from 'lucide-react';\nimport { useTheme, type SpacingTheme } from '../theme/theme-context';\n\nconst sidebarDensity: Record<SpacingTheme, {\n groupGap: string;\n itemGap: string;\n itemHeight: string;\n}> = {\n compact: { groupGap: 'gap-1', itemGap: 'gap-0', itemHeight: 'h-8' },\n normal: { groupGap: 'gap-2', itemGap: 'gap-1', itemHeight: 'h-9' },\n comfortable: { groupGap: 'gap-4', itemGap: 'gap-2', itemHeight: 'h-11' },\n};\n\n/**\n * サイドバーのアイテム\n */\nexport interface SmartSidebarItem {\n /** ラベル */\n label: string;\n /** アイコン */\n icon: React.ReactNode;\n /** パス */\n path: string;\n /** 無効化 */\n disabled?: boolean;\n /** バッジ等の追加コンテンツ */\n extra?: React.ReactNode;\n}\n\n/**\n * サイドバーのグループ\n */\nexport interface SmartSidebarGroup {\n /** グループタイトル */\n title?: string;\n /** アイテム */\n items: SmartSidebarItem[];\n /** 折りたたみ可能か */\n collapsible?: boolean;\n /** 初期状態で折りたたまれているか */\n defaultCollapsed?: boolean;\n}\n\n/**\n * サイドバーのプロップス\n */\nexport interface SidebarProps {\n /** 追加CSS */\n className?: string;\n /** ナビゲーショングループ */\n groups: SmartSidebarGroup[];\n /** フッターアイテム */\n footerItems?: SmartSidebarItem[];\n /** 現在のパス */\n activePath?: string;\n /** ナビゲーション発火 */\n onNavigate?: (path: string) => void;\n /** 折りたたみ状態 */\n collapsed?: boolean;\n /** 折りたたみトグル */\n onToggleCollapse?: () => void;\n /** カスタムヘッダー */\n header?: (collapsed: boolean) => React.ReactNode;\n /** カスタムフッター */\n sidebarFooter?: (collapsed: boolean) => React.ReactNode;\n}\n\n/**\n * サイドバーコンポーネント\n *\n * 折りたたみ可能なナビゲーションサイドバー。\n * グループ化されたアイテム、アイコン、ツールチップに対応。\n *\n * @example\n * ```tsx\n * import { Sidebar } from '@alneas/appkit-react/tools/sidebar';\n * import { Home, Settings } from 'lucide-react';\n *\n * const groups = [\n * {\n * title: 'メイン',\n * items: [\n * { label: 'ホーム', icon: <Home />, path: '/' },\n * { label: '設定', icon: <Settings />, path: '/settings' },\n * ],\n * },\n * ];\n *\n * <Sidebar\n * groups={groups}\n * activePath={location.pathname}\n * onNavigate={(path) => navigate(path)}\n * collapsed={isCollapsed}\n * onToggleCollapse={() => setIsCollapsed(!isCollapsed)}\n * />\n * ```\n */\nexport function SmartSidebar({\n className,\n groups,\n footerItems,\n activePath,\n onNavigate,\n collapsed = false,\n onToggleCollapse,\n header,\n sidebarFooter,\n}: SidebarProps) {\n const { spacingTheme } = useTheme();\n const density = sidebarDensity[spacingTheme];\n const handleNavigate = (path: string) => {\n if (onNavigate) {\n onNavigate(path);\n }\n };\n\n // Determine width based on collapsed state\n // w-64 (16rem) -> expanded\n // w-16 (4rem) -> collapsed\n // You can adjust these values or make them configurable if needed\n const widthClass = collapsed\n ? 'w-[var(--sidebar-collapsed-width,4rem)]'\n : 'w-[var(--sidebar-width,16rem)]';\n\n return (\n <TooltipProvider>\n <div\n className={cn(\n 'flex flex-col h-full bg-muted/20 border-r border-border transition-all duration-300 ease-in-out',\n widthClass,\n className,\n )}\n >\n {/* Combined Header and Toggle Section */}\n <div\n className={cn(\n 'flex-none flex items-center h-14 px-3 gap-2',\n collapsed ? 'justify-center' : 'justify-between',\n )}\n >\n {/* Custom Header Content */}\n {header && (\n <div\n className={cn(\n 'overflow-hidden whitespace-nowrap transition-all duration-300 ease-in-out',\n collapsed && onToggleCollapse\n ? 'max-w-0 opacity-0 flex-none'\n : 'max-w-full flex-1 opacity-100',\n )}\n >\n {header(collapsed)}\n </div>\n )}\n\n {/* Toggle Button */}\n {onToggleCollapse && (\n <Button\n variant='ghost'\n size='icon'\n className='h-8 w-8 shrink-0'\n onClick={onToggleCollapse}\n >\n <PanelLeft size={16} />\n </Button>\n )}\n </div>\n\n <ScrollArea className='flex-1 py-2 min-h-0'>\n <nav className={cn('flex flex-col px-2', density.groupGap)}>\n {groups.map((group, index) => (\n <SidebarGroupSection\n key={index}\n group={group}\n collapsed={collapsed}\n activePath={activePath}\n onNavigate={handleNavigate}\n density={density}\n />\n ))}\n </nav>\n </ScrollArea>\n\n {/* Footer Items Section (Sticky Bottom) */}\n {footerItems && footerItems.length > 0 && (\n <div className='flex-none mt-auto p-2 border-t border-border bg-background/50 backdrop-blur-sm'>\n <ul className={cn('flex flex-col', density.itemGap)}>\n {footerItems.map((item, index) => (\n <SidebarItemRow\n key={index}\n item={item}\n collapsed={collapsed}\n isActive={activePath === item.path}\n onNavigate={handleNavigate}\n itemHeight={density.itemHeight}\n />\n ))}\n </ul>\n </div>\n )}\n\n {/* Custom Footer Section */}\n {sidebarFooter && (\n <div\n className={cn(\n 'flex-none p-4 border-t border-border bg-background/50 backdrop-blur-sm',\n collapsed ? 'flex justify-center' : '',\n )}\n >\n {sidebarFooter(collapsed)}\n </div>\n )}\n </div>\n </TooltipProvider>\n );\n}\n\nfunction SidebarGroupSection({\n group,\n collapsed,\n activePath,\n onNavigate,\n density,\n}: {\n group: SmartSidebarGroup;\n collapsed: boolean;\n activePath?: string;\n onNavigate: (path: string) => void;\n density: (typeof sidebarDensity)[SpacingTheme];\n}) {\n const [groupCollapsed, setGroupCollapsed] = React.useState(\n group.defaultCollapsed ?? false\n );\n\n const isGroupCollapsible = group.collapsible && !collapsed;\n\n const toggleGroup = React.useCallback(() => {\n if (isGroupCollapsible) setGroupCollapsed(prev => !prev);\n }, [isGroupCollapsible]);\n\n // If no items, don't render group\n if (!group.items?.length) return null;\n\n const visibleItems = isGroupCollapsible && groupCollapsed\n ? group.items.slice(0, 2)\n : group.items;\n\n return (\n <div className={cn('flex flex-col', density.itemGap)}>\n {/* Group Title Area - Fixed Height for smooth transition */}\n {group.title && (\n <div\n className={cn(\n 'h-7 flex items-center relative px-2',\n isGroupCollapsible && 'cursor-pointer hover:text-primary transition-colors',\n )}\n onClick={toggleGroup}\n >\n {/* Title Text */}\n <h4\n className={cn(\n 'text-sm font-semibold text-primary/80 uppercase tracking-wider overflow-hidden text-ellipsis whitespace-nowrap absolute left-2 right-2 transition-all duration-300 ease-in-out',\n collapsed ? 'opacity-0 translate-x-[-10px]' : 'opacity-100 translate-x-0',\n )}\n >\n {group.title}\n {isGroupCollapsible && (\n <span className='ml-1.5 text-xs opacity-60'>\n {groupCollapsed ? '▸' : '▾'}\n </span>\n )}\n </h4>\n\n {/* Collapsed Separator */}\n <div\n className={cn(\n 'absolute left-0 right-0 top-1/2 -translate-y-1/2 flex justify-center transition-all duration-300',\n collapsed ? 'opacity-100' : 'opacity-0',\n )}\n >\n <Separator className='w-8 opacity-50' />\n </div>\n </div>\n )}\n\n <ul className={cn('flex flex-col', density.itemGap)}>\n {visibleItems.map((item, index) => (\n <SidebarItemRow\n key={index}\n item={item}\n collapsed={collapsed}\n isActive={activePath === item.path}\n onNavigate={onNavigate}\n itemHeight={density.itemHeight}\n />\n ))}\n {isGroupCollapsible && groupCollapsed && group.items.length > 2 && (\n <li>\n <button\n onClick={(e) => { e.stopPropagation(); setGroupCollapsed(false); }}\n className='flex w-full items-center justify-center h-8 text-xs text-muted-foreground hover:text-primary transition-colors'\n >\n +{group.items.length - 2} more\n </button>\n </li>\n )}\n </ul>\n </div>\n );\n}\n\nfunction SidebarItemRow({\n item,\n collapsed,\n isActive,\n onNavigate,\n itemHeight,\n}: {\n item: SmartSidebarItem;\n collapsed: boolean;\n isActive: boolean;\n onNavigate: (path: string) => void;\n itemHeight: string;\n}) {\n return (\n <li>\n <Tooltip>\n <TooltipTrigger\n className={cn(\n buttonVariants({ variant: isActive ? 'secondary' : 'ghost' }),\n 'flex w-full items-center transition-all duration-300',\n itemHeight,\n collapsed ? 'justify-center px-1' : 'justify-start px-3',\n isActive && 'bg-primary/10 text-primary font-medium hover:bg-primary/20',\n !isActive && 'text-muted-foreground hover:text-foreground font-normal',\n )}\n onClick={() => onNavigate(item.path)}\n disabled={item.disabled}\n >\n {/* Icon Wrapper */}\n <span\n className={cn(\n 'flex items-center justify-center shrink-0 transition-all duration-300',\n isActive ? 'text-primary' : 'opacity-70',\n )}\n >\n {React.isValidElement(item.icon)\n ? // @ts-expect-error - cloning strictly for size prop if supported\n React.cloneElement(item.icon, { size: 18 })\n : item.icon}\n </span>\n\n {/* Label & Extra Wrapper for smooth transition */}\n <span\n className={cn(\n 'flex flex-1 items-center overflow-hidden transition-all duration-300 ease-in-out',\n collapsed ? 'max-w-0 opacity-0' : 'max-w-[200px] opacity-100 ml-3',\n )}\n >\n <span className='truncate flex-1 text-left text-sm'>{item.label}</span>\n {item.extra && (\n <span className='shrink-0 text-xs text-muted-foreground ml-2'>{item.extra}</span>\n )}\n </span>\n </TooltipTrigger>\n {collapsed && (\n <TooltipContent side='right' className='flex items-center gap-2'>\n {item.label}\n {item.extra && <span className='opacity-70'>{item.extra}</span>}\n </TooltipContent>\n )}\n </Tooltip>\n </li>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SmartSidebar.js","names":["React","React$1","sidebarDensity","SmartSidebar","useTheme","density","spacingTheme","handleNavigate","onNavigate","path","TooltipProvider","cn","collapsed","className","header","onToggleCollapse","Button","PanelLeft","ScrollArea","groups","SidebarGroupSection","index","footerItems","SidebarItemRow","activePath","item","sidebarFooter","groupCollapsed","setGroupCollapsed","group","isGroupCollapsible","toggleGroup","prev","visibleItems","Separator","Tooltip","TooltipTrigger","buttonVariants","isActive","itemHeight","TooltipContent"],"sources":["../../../../src/tools/components/sidebar/SmartSidebar.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cn } from \"../../lib/utils\";\nimport { Button, buttonVariants } from '../ui/button';\nimport { ScrollArea } from '../ui/scroll-area';\nimport { Separator } from '../ui/separator';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../ui/tooltip';\nimport { PanelLeft } from 'lucide-react';\nimport { useTheme, type SpacingTheme } from '../theme/theme-context';\n\nconst sidebarDensity: Record<SpacingTheme, {\n groupGap: string;\n itemGap: string;\n itemHeight: string;\n}> = {\n compact: { groupGap: 'gap-1', itemGap: 'gap-0', itemHeight: 'h-8' },\n normal: { groupGap: 'gap-2', itemGap: 'gap-1', itemHeight: 'h-9' },\n comfortable: { groupGap: 'gap-4', itemGap: 'gap-2', itemHeight: 'h-11' },\n};\n\n/**\n * A navigation item rendered by {@link SmartSidebar}.\n * @see SmartSidebar\n */\nexport interface SmartSidebarItem {\n /** Visible item label; also used in collapsed tooltips. */\n label: string;\n /** Icon rendered in expanded and collapsed layouts. */\n icon: React.ReactNode;\n /** Opaque destination passed to onNavigate; compared exactly with activePath. */\n path: string;\n /** Disables item activation when true; omitted means enabled. */\n disabled?: boolean;\n /** Additional content shown beside the expanded item label. */\n extra?: React.ReactNode;\n}\n\n/**\n * サイドバーのグループ\n */\nexport interface SmartSidebarGroup {\n /** Optional heading; omitted headings render no group title. */\n title?: string;\n /** Items in display order. */\n items: SmartSidebarItem[];\n /** Allows the expanded sidebar heading to toggle between all items and a two-item preview. */\n collapsible?: boolean;\n /** Initial two-item group preview state; defaults to false. Later prop changes do not reset local state. */\n defaultCollapsed?: boolean;\n}\n\n/**\n * サイドバーのプロップス\n */\nexport interface SidebarProps {\n /** Additional classes for the sidebar root. */\n className?: string;\n /** Groups in display order. */\n groups: SmartSidebarGroup[];\n /** Optional navigation items pinned below the scrollable groups. */\n footerItems?: SmartSidebarItem[];\n /** Exact path used to highlight active items; no item is active when omitted. */\n activePath?: string;\n /** Called with the activated item path; the host performs routing. */\n onNavigate?: (path: string) => void;\n /** Controlled whole-sidebar collapse state; defaults to false. */\n collapsed?: boolean;\n /** Called by the toggle button; the host must update collapsed. Omitted hides the button. */\n onToggleCollapse?: () => void;\n /** Renders header content with the current collapsed state. */\n header?: (collapsed: boolean) => React.ReactNode;\n /** Renders footer content with the current collapsed state. */\n sidebarFooter?: (collapsed: boolean) => React.ReactNode;\n}\n\n/**\n * Renders grouped navigation with controlled sidebar collapse and local group collapse.\n * @param props - Navigation items, controlled selection/collapse and render callbacks; see {@link SidebarProps}.\n * @returns The sidebar element, including its own tooltip provider.\n * @remarks Import Appkit CSS. ThemeProvider enables reactive spacing density; without one,\n * the theme context uses normal spacing. The host owns routing\n * and updates activePath/collapsed. Sidebar from the same entry is a compound namespace;\n * use SmartSidebar for this groups-based API. CSS variables --sidebar-width and\n * --sidebar-collapsed-width fall back to 16rem and 4rem respectively.\n * @example\n * ```tsx\n * import { useState } from 'react';\n * import { SmartSidebar } from '@alneas/appkit-react/tools/sidebar';\n * import { ThemeProvider } from '@alneas/appkit-react/ui/theme';\n * import '@alneas/appkit-react/styles';\n *\n * export function Navigation() {\n * const [path, setPath] = useState('/');\n * const [collapsed, setCollapsed] = useState(false);\n * return <ThemeProvider><SmartSidebar\n * groups={[{ title: 'Main', items: [{ label: 'Home', icon: <span>H</span>, path: '/' }] }]}\n * activePath={path} onNavigate={setPath} collapsed={collapsed}\n * onToggleCollapse={() => setCollapsed(value => !value)}\n * /></ThemeProvider>;\n * }\n * ```\n */\nexport function SmartSidebar({\n className,\n groups,\n footerItems,\n activePath,\n onNavigate,\n collapsed = false,\n onToggleCollapse,\n header,\n sidebarFooter,\n}: SidebarProps) {\n const { spacingTheme } = useTheme();\n const density = sidebarDensity[spacingTheme];\n const handleNavigate = (path: string) => {\n if (onNavigate) {\n onNavigate(path);\n }\n };\n\n // Determine width based on collapsed state\n // w-64 (16rem) -> expanded\n // w-16 (4rem) -> collapsed\n // You can adjust these values or make them configurable if needed\n const widthClass = collapsed\n ? 'w-[var(--sidebar-collapsed-width,4rem)]'\n : 'w-[var(--sidebar-width,16rem)]';\n\n return (\n <TooltipProvider>\n <div\n className={cn(\n 'flex flex-col h-full bg-muted/20 border-r border-border transition-all duration-300 ease-in-out',\n widthClass,\n className,\n )}\n >\n {/* Combined Header and Toggle Section */}\n <div\n className={cn(\n 'flex-none flex items-center h-14 px-3 gap-2',\n collapsed ? 'justify-center' : 'justify-between',\n )}\n >\n {/* Custom Header Content */}\n {header && (\n <div\n className={cn(\n 'overflow-hidden whitespace-nowrap transition-all duration-300 ease-in-out',\n collapsed && onToggleCollapse\n ? 'max-w-0 opacity-0 flex-none'\n : 'max-w-full flex-1 opacity-100',\n )}\n >\n {header(collapsed)}\n </div>\n )}\n\n {/* Toggle Button */}\n {onToggleCollapse && (\n <Button\n variant='ghost'\n size='icon'\n className='h-8 w-8 shrink-0'\n onClick={onToggleCollapse}\n >\n <PanelLeft size={16} />\n </Button>\n )}\n </div>\n\n <ScrollArea className='flex-1 py-2 min-h-0'>\n <nav className={cn('flex flex-col px-2', density.groupGap)}>\n {groups.map((group, index) => (\n <SidebarGroupSection\n key={index}\n group={group}\n collapsed={collapsed}\n activePath={activePath}\n onNavigate={handleNavigate}\n density={density}\n />\n ))}\n </nav>\n </ScrollArea>\n\n {/* Footer Items Section (Sticky Bottom) */}\n {footerItems && footerItems.length > 0 && (\n <div className='flex-none mt-auto p-2 border-t border-border bg-background/50 backdrop-blur-sm'>\n <ul className={cn('flex flex-col', density.itemGap)}>\n {footerItems.map((item, index) => (\n <SidebarItemRow\n key={index}\n item={item}\n collapsed={collapsed}\n isActive={activePath === item.path}\n onNavigate={handleNavigate}\n itemHeight={density.itemHeight}\n />\n ))}\n </ul>\n </div>\n )}\n\n {/* Custom Footer Section */}\n {sidebarFooter && (\n <div\n className={cn(\n 'flex-none p-4 border-t border-border bg-background/50 backdrop-blur-sm',\n collapsed ? 'flex justify-center' : '',\n )}\n >\n {sidebarFooter(collapsed)}\n </div>\n )}\n </div>\n </TooltipProvider>\n );\n}\n\nfunction SidebarGroupSection({\n group,\n collapsed,\n activePath,\n onNavigate,\n density,\n}: {\n group: SmartSidebarGroup;\n collapsed: boolean;\n activePath?: string;\n onNavigate: (path: string) => void;\n density: (typeof sidebarDensity)[SpacingTheme];\n}) {\n const [groupCollapsed, setGroupCollapsed] = React.useState(\n group.defaultCollapsed ?? false\n );\n\n const isGroupCollapsible = group.collapsible && !collapsed;\n\n const toggleGroup = React.useCallback(() => {\n if (isGroupCollapsible) setGroupCollapsed(prev => !prev);\n }, [isGroupCollapsible]);\n\n // If no items, don't render group\n if (!group.items?.length) return null;\n\n const visibleItems = isGroupCollapsible && groupCollapsed\n ? group.items.slice(0, 2)\n : group.items;\n\n return (\n <div className={cn('flex flex-col', density.itemGap)}>\n {/* Group Title Area - Fixed Height for smooth transition */}\n {group.title && (\n <div\n className={cn(\n 'h-7 flex items-center relative px-2',\n isGroupCollapsible && 'cursor-pointer hover:text-primary transition-colors',\n )}\n onClick={toggleGroup}\n >\n {/* Title Text */}\n <h4\n className={cn(\n 'text-sm font-semibold text-primary/80 uppercase tracking-wider overflow-hidden text-ellipsis whitespace-nowrap absolute left-2 right-2 transition-all duration-300 ease-in-out',\n collapsed ? 'opacity-0 translate-x-[-10px]' : 'opacity-100 translate-x-0',\n )}\n >\n {group.title}\n {isGroupCollapsible && (\n <span className='ml-1.5 text-xs opacity-60'>\n {groupCollapsed ? '▸' : '▾'}\n </span>\n )}\n </h4>\n\n {/* Collapsed Separator */}\n <div\n className={cn(\n 'absolute left-0 right-0 top-1/2 -translate-y-1/2 flex justify-center transition-all duration-300',\n collapsed ? 'opacity-100' : 'opacity-0',\n )}\n >\n <Separator className='w-8 opacity-50' />\n </div>\n </div>\n )}\n\n <ul className={cn('flex flex-col', density.itemGap)}>\n {visibleItems.map((item, index) => (\n <SidebarItemRow\n key={index}\n item={item}\n collapsed={collapsed}\n isActive={activePath === item.path}\n onNavigate={onNavigate}\n itemHeight={density.itemHeight}\n />\n ))}\n {isGroupCollapsible && groupCollapsed && group.items.length > 2 && (\n <li>\n <button\n onClick={(e) => { e.stopPropagation(); setGroupCollapsed(false); }}\n className='flex w-full items-center justify-center h-8 text-xs text-muted-foreground hover:text-primary transition-colors'\n >\n +{group.items.length - 2} more\n </button>\n </li>\n )}\n </ul>\n </div>\n );\n}\n\nfunction SidebarItemRow({\n item,\n collapsed,\n isActive,\n onNavigate,\n itemHeight,\n}: {\n item: SmartSidebarItem;\n collapsed: boolean;\n isActive: boolean;\n onNavigate: (path: string) => void;\n itemHeight: string;\n}) {\n return (\n <li>\n <Tooltip>\n <TooltipTrigger\n className={cn(\n buttonVariants({ variant: isActive ? 'secondary' : 'ghost' }),\n 'flex w-full items-center transition-all duration-300',\n itemHeight,\n collapsed ? 'justify-center px-1' : 'justify-start px-3',\n isActive && 'bg-primary/10 text-primary font-medium hover:bg-primary/20',\n !isActive && 'text-muted-foreground hover:text-foreground font-normal',\n )}\n onClick={() => onNavigate(item.path)}\n disabled={item.disabled}\n >\n {/* Icon Wrapper */}\n <span\n className={cn(\n 'flex items-center justify-center shrink-0 transition-all duration-300',\n isActive ? 'text-primary' : 'opacity-70',\n )}\n >\n {React.isValidElement(item.icon)\n ? // @ts-expect-error - cloning strictly for size prop if supported\n React.cloneElement(item.icon, { size: 18 })\n : item.icon}\n </span>\n\n {/* Label & Extra Wrapper for smooth transition */}\n <span\n className={cn(\n 'flex flex-1 items-center overflow-hidden transition-all duration-300 ease-in-out',\n collapsed ? 'max-w-0 opacity-0' : 'max-w-[200px] opacity-100 ml-3',\n )}\n >\n <span className='truncate flex-1 text-left text-sm'>{item.label}</span>\n {item.extra && (\n <span className='shrink-0 text-xs text-muted-foreground ml-2'>{item.extra}</span>\n )}\n </span>\n </TooltipTrigger>\n {collapsed && (\n <TooltipContent side='right' className='flex items-center gap-2'>\n {item.label}\n {item.extra && <span className='opacity-70'>{item.extra}</span>}\n </TooltipContent>\n )}\n </Tooltip>\n </li>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SplashScreen.cjs","names":["React","cn","ScreenTransition","require_runtime","require_ui_lib_utils","require_tools_components_future_ScreenTransition","react_jsx_runtime","react","PHASE_MESSAGES","SplashScreen","exited","setExited","handleHalf","onComplete","defaultContent","logo","message","phase","children","i","className"],"sources":["../../../../src/tools/components/splash/SplashScreen.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { cn } from '../../lib/utils';\nimport { ScreenTransition, type TransitionType } from '../future/ScreenTransition';\n\nconst PHASE_MESSAGES: Record<string, string> = {\n initializing: 'システムを初期化しています...',\n loading: 'データを読み込んでいます...',\n hydrating: 'アプリケーションを起動しています...',\n connecting: 'サーバーに接続しています...',\n syncing: 'データを同期しています...',\n ready: '',\n};\n\nexport interface SplashScreenProps {\n
|
|
1
|
+
{"version":3,"file":"SplashScreen.cjs","names":["React","cn","ScreenTransition","require_runtime","require_ui_lib_utils","require_tools_components_future_ScreenTransition","react_jsx_runtime","react","PHASE_MESSAGES","SplashScreen","exited","setExited","handleHalf","onComplete","defaultContent","logo","message","phase","children","i","className"],"sources":["../../../../src/tools/components/splash/SplashScreen.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { cn } from '../../lib/utils';\nimport { ScreenTransition, type TransitionType } from '../future/ScreenTransition';\n\nconst PHASE_MESSAGES: Record<string, string> = {\n initializing: 'システムを初期化しています...',\n loading: 'データを読み込んでいます...',\n hydrating: 'アプリケーションを起動しています...',\n connecting: 'サーバーに接続しています...',\n syncing: 'データを同期しています...',\n ready: '',\n};\n\n/**\n * Host inputs and presentation settings for SplashScreen.\n * @see SplashScreen\n */\nexport interface SplashScreenProps {\n /**\n * Mount as true, then set false to trigger one dismissal. Initial false does not dismiss automatically.\n */\n show: boolean;\n /**\n * Transition class-name suffix; defaults to glitch. Matching animation CSS is host-owned.\n */\n type?: TransitionType;\n /**\n * Configured full transition duration in milliseconds; defaults to 600. Splash removal/onComplete occur at duration / 2.\n */\n duration?: number;\n /**\n * Built-in phase message key (initializing/loading/hydrating/connecting/syncing/ready); unknown strings display verbatim, omitted displays LOADING.\n */\n phase?: string;\n /**\n * Truthy custom text overriding the phase message; an empty string falls back to the phase.\n */\n message?: string;\n /**\n * Optional logo; omitted renders LOADING text.\n */\n logo?: React.ReactNode;\n /**\n * Truthy custom content replacing phase/message/logo output.\n */\n children?: React.ReactNode;\n /**\n * Called once when the exit midpoint removes the splash, not after the full duration. Later show=true does not remount it.\n * @returns No value; complete the host callback action.\n */\n onComplete?: () => void;\n /**\n * Additional classes on the component outer element.\n */\n className?: string;\n}\n\n/**\n * Shows a full-screen loading surface until a true-to-false show change reaches the transition midpoint.\n * @param props - Visibility trigger, transition settings and optional loading content/callback; see SplashScreenProps. Wrapper defaults: type='glitch', duration=600.\n * @returns The rendered SplashScreen composition.\n * @remarks Import @alneas/appkit-react/styles in the rendering host. Import Appkit CSS. The host owns readiness and must mount with show=true, then change to false to start dismissal. Initial show=false does not dismiss because the internal transition records that initial trigger. At duration/2 the splash unmounts itself and calls onComplete; it does not wait for a full exit/enter cycle or reappear after show becomes true. Supplied truthy children replace default content. Transition class names and --future-duration are emitted, but this package has no public tools/transitions stylesheet/export and its bundled CSS supplies no future-transition/splash-dot animation rules; the host must add matching CSS to see those effects.\n * @example\n * ```tsx\n * import { useState } from 'react';\n * import { SplashScreen } from '@alneas/appkit-react/tools/splash';\n * import '@alneas/appkit-react/styles';\n *\n * export function Example() {\n * const [show, setShow] = useState(true);\n * return (<><button type=\"button\" onClick={() => setShow(false)}>Ready</button><SplashScreen show={show} phase=\"loading\" /></>);\n * }\n * ```\n */\nexport function SplashScreen({\n show,\n type = 'glitch',\n duration = 600,\n phase,\n message,\n logo,\n children,\n onComplete,\n className,\n}: SplashScreenProps) {\n const [exited, setExited] = React.useState(false);\n\n const handleHalf = React.useCallback(() => {\n setExited(true);\n onComplete?.();\n }, [onComplete]);\n\n if (exited) return null;\n\n const defaultContent = (\n <div className=\"flex flex-col items-center justify-center min-h-screen bg-background text-foreground\">\n {logo && <div className=\"mb-6\">{logo}</div>}\n {!logo && (\n <div className=\"mb-6 text-2xl font-bold tracking-[0.3em] text-foreground\">\n LOADING\n </div>\n )}\n <div\n className={cn(\n 'font-mono text-xs tracking-[0.2em]',\n 'text-foreground',\n )}\n >\n {message || (phase ? PHASE_MESSAGES[phase] ?? phase : 'LOADING')}\n </div>\n {(!message && !children) && (\n <div className=\"mt-8 flex gap-1\">\n {[0, 1, 2].map((i) => (\n <div\n key={i}\n className=\"w-1.5 h-1.5 rounded-full bg-primary\"\n style={{\n animation: 'splash-dot 1.4s ease-in-out infinite',\n animationDelay: `${i * 0.2}s`,\n opacity: 0.3,\n }}\n />\n ))}\n </div>\n )}\n </div>\n );\n\n return (\n <div\n className={cn('fixed inset-0 z-[10000]', className)}\n style={{ background: 'var(--background)' }}\n >\n <ScreenTransition\n type={type}\n duration={duration}\n trigger={show ? 0 : 1}\n onHalf={handleHalf}\n >\n {children || defaultContent}\n </ScreenTransition>\n </div>\n );\n}\nSplashScreen.displayName = 'SplashScreen';\n"],"mappings":"A,kTAMA,IAAMQ,EAAyC,CAC7C,aAAc,mBACd,QAAS,kBACT,UAAW,sBACX,WAAY,kBACZ,QAAS,iBACT,MAAO,EACT,EA+DA,SAAgBC,EAAa,CAC3B,OACA,OAAO,SACP,WAAW,IACX,QACA,UACA,OACA,WACA,aACA,aACoB,CACpB,GAAM,CAACC,EAAQC,GAAaX,EAAM,SAAS,EAAK,EAE1CY,EAAaZ,EAAM,gBAAkB,CACzCW,EAAU,EAAI,EACdE,IAAa,CACf,EAAG,CAACA,CAAU,CAAC,EAEf,GAAIH,EAAQ,OAAO,KAEnB,IAAMI,GACJ,EAAAR,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,uFAAf,SAAA,CACGS,IAAQ,EAAAT,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,OAAQ,SAAAS,CAAU,CAAA,EACzC,CAACA,IACA,EAAAT,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,2DAA2D,SAAA,SAErE,CAAA,GAEP,EAAAA,EAAA,IAAA,CAAC,MAAD,CACE,UAAWL,EAAAA,GACT,qCACA,iBACF,EAEC,SAAAe,IAAYC,EAAQT,EAAeS,IAAUA,EAAQ,UACnD,CAAA,EACH,CAACD,GAAW,CAACE,IACb,EAAAZ,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,kBACZ,SAAA,CAAC,EAAG,EAAG,CAAC,CAAC,CAAC,IAAK,IACd,EAAAA,EAAA,IAAA,CAAC,MAAD,CAEE,UAAU,sCACV,MAAO,CACL,UAAW,uCACX,eAAgB,GAAGa,EAAI,GAAI,GAC3B,QAAS,EACX,CACD,EAPMA,CAON,CACF,CACE,CAAA,CAEJ,C,GAGP,OACE,EAAAb,EAAA,IAAA,CAAC,MAAD,CACE,UAAWL,EAAAA,GAAG,0BAA2BmB,CAAS,EAClD,MAAO,CAAE,WAAY,mBAAoB,EAEzC,UAAA,EAAAd,EAAA,IAAA,CAACJ,EAAAA,iBAAD,CACQ,OACI,WACV,QAAS,IACT,OAAQU,EAEP,SAAAM,GAAYJ,CACG,CAAA,CACf,CAAA,CAET,CACA,EAAa,YAAc,e"}
|
|
@@ -1,88 +1,63 @@
|
|
|
1
1
|
import { TransitionType } from '../future/ScreenTransition.cjs';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
+
/**
|
|
4
|
+
* Host inputs and presentation settings for SplashScreen.
|
|
5
|
+
* @see SplashScreen
|
|
6
|
+
*/
|
|
3
7
|
export interface SplashScreenProps {
|
|
4
|
-
/**
|
|
8
|
+
/**
|
|
9
|
+
* Mount as true, then set false to trigger one dismissal. Initial false does not dismiss automatically.
|
|
10
|
+
*/
|
|
5
11
|
show: boolean;
|
|
6
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* Transition class-name suffix; defaults to glitch. Matching animation CSS is host-owned.
|
|
14
|
+
*/
|
|
7
15
|
type?: TransitionType;
|
|
8
|
-
/**
|
|
16
|
+
/**
|
|
17
|
+
* Configured full transition duration in milliseconds; defaults to 600. Splash removal/onComplete occur at duration / 2.
|
|
18
|
+
*/
|
|
9
19
|
duration?: number;
|
|
10
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* Built-in phase message key (initializing/loading/hydrating/connecting/syncing/ready); unknown strings display verbatim, omitted displays LOADING.
|
|
22
|
+
*/
|
|
11
23
|
phase?: string;
|
|
12
|
-
/**
|
|
24
|
+
/**
|
|
25
|
+
* Truthy custom text overriding the phase message; an empty string falls back to the phase.
|
|
26
|
+
*/
|
|
13
27
|
message?: string;
|
|
14
|
-
/**
|
|
28
|
+
/**
|
|
29
|
+
* Optional logo; omitted renders LOADING text.
|
|
30
|
+
*/
|
|
15
31
|
logo?: React.ReactNode;
|
|
16
|
-
/**
|
|
32
|
+
/**
|
|
33
|
+
* Truthy custom content replacing phase/message/logo output.
|
|
34
|
+
*/
|
|
17
35
|
children?: React.ReactNode;
|
|
18
|
-
/**
|
|
36
|
+
/**
|
|
37
|
+
* Called once when the exit midpoint removes the splash, not after the full duration. Later show=true does not remount it.
|
|
38
|
+
* @returns No value; complete the host callback action.
|
|
39
|
+
*/
|
|
19
40
|
onComplete?: () => void;
|
|
20
|
-
/**
|
|
41
|
+
/**
|
|
42
|
+
* Additional classes on the component outer element.
|
|
43
|
+
*/
|
|
21
44
|
className?: string;
|
|
22
45
|
}
|
|
23
46
|
/**
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* 完了後に DOM から削除される。
|
|
29
|
-
*
|
|
30
|
-
* 子要素を渡せば完全カスタム表示、渡さなければ `phase` に応じた
|
|
31
|
-
* デフォルトメッセージ + ロゴを表示する。
|
|
32
|
-
*
|
|
33
|
-
* ### 表示タイミングの制御
|
|
34
|
-
*
|
|
35
|
-
* スプラッシュの表示制御はプロジェクト側で行う。典型的なパターン:
|
|
36
|
-
*
|
|
37
|
-
* ```tsx
|
|
38
|
-
* function App() {
|
|
39
|
-
* const [ready, setReady] = useState(false);
|
|
40
|
-
*
|
|
41
|
-
* useEffect(() => {
|
|
42
|
-
* Promise.all([
|
|
43
|
-
* initAuth(),
|
|
44
|
-
* loadData(),
|
|
45
|
-
* hydrateApp(),
|
|
46
|
-
* ]).then(() => setReady(true));
|
|
47
|
-
* }, []);
|
|
48
|
-
*
|
|
49
|
-
* return (
|
|
50
|
-
* <>
|
|
51
|
-
* <SplashScreen
|
|
52
|
-
* show={!ready}
|
|
53
|
-
* type="radial"
|
|
54
|
-
* phase={phase}
|
|
55
|
-
* onComplete={() => console.log('splash finished')}
|
|
56
|
-
* />
|
|
57
|
-
* {ready && <MainApp />}
|
|
58
|
-
* </>
|
|
59
|
-
* );
|
|
60
|
-
* }
|
|
61
|
-
* ```
|
|
62
|
-
*
|
|
63
|
-
* @param props - コンポーネントのプロパティ
|
|
64
|
-
* @param props.show - false になると退場アニメーションを開始する
|
|
65
|
-
* @param props.type - 退場アニメーションの種類(デフォルト: glitch)
|
|
66
|
-
* @param props.duration - アニメーション時間(デフォルト: 600ms)
|
|
67
|
-
* @param props.phase - 表示するフェーズ名。内蔵メッセージ: initializing / loading / hydrating / connecting / syncing
|
|
68
|
-
* @param props.message - 任意のメッセージ文字列(phase より優先)
|
|
69
|
-
* @param props.logo - ロゴ要素
|
|
70
|
-
* @param props.children - 完全カスタムコンテンツ
|
|
71
|
-
* @param props.onComplete - 退場アニメーション完了時のコールバック
|
|
72
|
-
* @param props.className - 追加クラス
|
|
73
|
-
*
|
|
47
|
+
* Shows a full-screen loading surface until a true-to-false show change reaches the transition midpoint.
|
|
48
|
+
* @param props - Visibility trigger, transition settings and optional loading content/callback; see SplashScreenProps. Wrapper defaults: type='glitch', duration=600.
|
|
49
|
+
* @returns The rendered SplashScreen composition.
|
|
50
|
+
* @remarks Import @alneas/appkit-react/styles in the rendering host. Import Appkit CSS. The host owns readiness and must mount with show=true, then change to false to start dismissal. Initial show=false does not dismiss because the internal transition records that initial trigger. At duration/2 the splash unmounts itself and calls onComplete; it does not wait for a full exit/enter cycle or reappear after show becomes true. Supplied truthy children replace default content. Transition class names and --future-duration are emitted, but this package has no public tools/transitions stylesheet/export and its bundled CSS supplies no future-transition/splash-dot animation rules; the host must add matching CSS to see those effects.
|
|
74
51
|
* @example
|
|
75
52
|
* ```tsx
|
|
76
|
-
*
|
|
77
|
-
*
|
|
53
|
+
* import { useState } from 'react';
|
|
54
|
+
* import { SplashScreen } from '@alneas/appkit-react/tools/splash';
|
|
55
|
+
* import '@alneas/appkit-react/styles';
|
|
78
56
|
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
* <SplashScreen show={splash} type="glitch">
|
|
84
|
-
* <MyCustomContent />
|
|
85
|
-
* </SplashScreen>
|
|
57
|
+
* export function Example() {
|
|
58
|
+
* const [show, setShow] = useState(true);
|
|
59
|
+
* return (<><button type="button" onClick={() => setShow(false)}>Ready</button><SplashScreen show={show} phase="loading" /></>);
|
|
60
|
+
* }
|
|
86
61
|
* ```
|
|
87
62
|
*/
|
|
88
63
|
export declare function SplashScreen({ show, type, duration, phase, message, logo, children, onComplete, className, }: SplashScreenProps): React.JSX.Element | null;
|