@ranker/raxflow 0.2.2 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/benchmark.d.ts +10 -0
- package/dist/benchmark.d.ts.map +1 -0
- package/dist/benchmark.js +123 -0
- package/dist/benchmark.js.map +1 -0
- package/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +141 -0
- package/dist/bin.js.map +1 -0
- package/dist/bootstrap.d.ts +8 -0
- package/dist/bootstrap.d.ts.map +1 -0
- package/dist/bootstrap.js +22 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/bridge-adapter-templates.d.ts +4 -0
- package/dist/bridge-adapter-templates.d.ts.map +1 -0
- package/dist/bridge-adapter-templates.js +185 -0
- package/dist/bridge-adapter-templates.js.map +1 -0
- package/dist/bridge-test.d.ts +7 -0
- package/dist/bridge-test.d.ts.map +1 -0
- package/dist/bridge-test.js +89 -0
- package/dist/bridge-test.js.map +1 -0
- package/dist/dashboard.d.ts +4 -0
- package/dist/dashboard.d.ts.map +1 -0
- package/{src/dashboard.ts → dist/dashboard.js} +8 -10
- package/dist/dashboard.js.map +1 -0
- package/dist/doctor.d.ts +6 -0
- package/dist/doctor.d.ts.map +1 -0
- package/dist/doctor.js +70 -0
- package/dist/doctor.js.map +1 -0
- package/dist/evolve.d.ts +7 -0
- package/dist/evolve.d.ts.map +1 -0
- package/{src/evolve.ts → dist/evolve.js} +7 -33
- package/dist/evolve.js.map +1 -0
- package/dist/host-init-templates.d.ts +16 -0
- package/dist/host-init-templates.d.ts.map +1 -0
- package/dist/host-init-templates.js +119 -0
- package/dist/host-init-templates.js.map +1 -0
- package/dist/hub/__tests__/commands.test.d.ts +2 -0
- package/dist/hub/__tests__/commands.test.d.ts.map +1 -0
- package/dist/hub/__tests__/commands.test.js +72 -0
- package/dist/hub/__tests__/commands.test.js.map +1 -0
- package/dist/hub/__tests__/history.test.d.ts +2 -0
- package/dist/hub/__tests__/history.test.d.ts.map +1 -0
- package/dist/hub/__tests__/history.test.js +119 -0
- package/dist/hub/__tests__/history.test.js.map +1 -0
- package/dist/hub/__tests__/parser.test.d.ts +2 -0
- package/dist/hub/__tests__/parser.test.d.ts.map +1 -0
- package/dist/hub/__tests__/parser.test.js +92 -0
- package/dist/hub/__tests__/parser.test.js.map +1 -0
- package/dist/hub/commands/agents.d.ts +3 -0
- package/dist/hub/commands/agents.d.ts.map +1 -0
- package/dist/hub/commands/agents.js +36 -0
- package/dist/hub/commands/agents.js.map +1 -0
- package/dist/hub/commands/index.d.ts +4 -0
- package/dist/hub/commands/index.d.ts.map +1 -0
- package/dist/hub/commands/index.js +123 -0
- package/dist/hub/commands/index.js.map +1 -0
- package/dist/hub/commands/logs.d.ts +3 -0
- package/dist/hub/commands/logs.d.ts.map +1 -0
- package/dist/hub/commands/logs.js +53 -0
- package/dist/hub/commands/logs.js.map +1 -0
- package/dist/hub/commands/memory.d.ts +3 -0
- package/dist/hub/commands/memory.d.ts.map +1 -0
- package/dist/hub/commands/memory.js +40 -0
- package/dist/hub/commands/memory.js.map +1 -0
- package/dist/hub/commands/metrics.d.ts +3 -0
- package/dist/hub/commands/metrics.d.ts.map +1 -0
- package/dist/hub/commands/metrics.js +35 -0
- package/dist/hub/commands/metrics.js.map +1 -0
- package/dist/hub/commands/providers.d.ts +3 -0
- package/dist/hub/commands/providers.d.ts.map +1 -0
- package/dist/hub/commands/providers.js +26 -0
- package/dist/hub/commands/providers.js.map +1 -0
- package/dist/hub/commands/run.d.ts +3 -0
- package/dist/hub/commands/run.d.ts.map +1 -0
- package/dist/hub/commands/run.js +31 -0
- package/dist/hub/commands/run.js.map +1 -0
- package/dist/hub/commands/status.d.ts +3 -0
- package/dist/hub/commands/status.d.ts.map +1 -0
- package/dist/hub/commands/status.js +61 -0
- package/dist/hub/commands/status.js.map +1 -0
- package/dist/hub/commands/workflows.d.ts +3 -0
- package/dist/hub/commands/workflows.d.ts.map +1 -0
- package/dist/hub/commands/workflows.js +45 -0
- package/dist/hub/commands/workflows.js.map +1 -0
- package/dist/hub/config-loader.d.ts +4 -0
- package/dist/hub/config-loader.d.ts.map +1 -0
- package/dist/hub/config-loader.js +27 -0
- package/dist/hub/config-loader.js.map +1 -0
- package/dist/hub/event-listener.d.ts +6 -0
- package/dist/hub/event-listener.d.ts.map +1 -0
- package/dist/hub/event-listener.js +12 -0
- package/dist/hub/event-listener.js.map +1 -0
- package/dist/hub/history.d.ts +13 -0
- package/dist/hub/history.d.ts.map +1 -0
- package/dist/hub/history.js +59 -0
- package/dist/hub/history.js.map +1 -0
- package/dist/hub/index.d.ts +4 -0
- package/dist/hub/index.d.ts.map +1 -0
- package/dist/hub/index.js +114 -0
- package/dist/hub/index.js.map +1 -0
- package/dist/hub/parser.d.ts +4 -0
- package/dist/hub/parser.d.ts.map +1 -0
- package/dist/hub/parser.js +98 -0
- package/dist/hub/parser.js.map +1 -0
- package/dist/hub/styles/borders.d.ts +23 -0
- package/dist/hub/styles/borders.d.ts.map +1 -0
- package/dist/hub/styles/borders.js +64 -0
- package/dist/hub/styles/borders.js.map +1 -0
- package/dist/hub/styles/colors.d.ts +63 -0
- package/dist/hub/styles/colors.d.ts.map +1 -0
- package/dist/hub/styles/colors.js +115 -0
- package/dist/hub/styles/colors.js.map +1 -0
- package/dist/hub/styles/typography.d.ts +34 -0
- package/dist/hub/styles/typography.d.ts.map +1 -0
- package/dist/hub/styles/typography.js +60 -0
- package/dist/hub/styles/typography.js.map +1 -0
- package/dist/hub/types.d.ts +27 -0
- package/dist/hub/types.d.ts.map +1 -0
- package/dist/hub/types.js +2 -0
- package/dist/hub/types.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/{src/index.ts → dist/index.js} +1 -0
- package/dist/index.js.map +1 -0
- package/dist/init-host.d.ts +10 -0
- package/dist/init-host.d.ts.map +1 -0
- package/dist/init-host.js +232 -0
- package/dist/init-host.js.map +1 -0
- package/dist/install.d.ts +8 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +99 -0
- package/dist/install.js.map +1 -0
- package/dist/run.d.ts +16 -0
- package/dist/run.d.ts.map +1 -0
- package/dist/run.js +238 -0
- package/dist/run.js.map +1 -0
- package/dist/setup/components/ApiKeyInput.d.ts +25 -0
- package/dist/setup/components/ApiKeyInput.d.ts.map +1 -0
- package/dist/setup/components/ApiKeyInput.js +54 -0
- package/dist/setup/components/ApiKeyInput.js.map +1 -0
- package/dist/setup/components/AsciiBanner.d.ts +22 -0
- package/dist/setup/components/AsciiBanner.d.ts.map +1 -0
- package/{src/setup/components/AsciiBanner.tsx → dist/setup/components/AsciiBanner.js} +24 -94
- package/dist/setup/components/AsciiBanner.js.map +1 -0
- package/dist/setup/components/CliDetector.d.ts +17 -0
- package/dist/setup/components/CliDetector.d.ts.map +1 -0
- package/dist/setup/components/CliDetector.js +81 -0
- package/dist/setup/components/CliDetector.js.map +1 -0
- package/dist/setup/components/ModeSelector.d.ts +8 -0
- package/dist/setup/components/ModeSelector.d.ts.map +1 -0
- package/dist/setup/components/ModeSelector.js +76 -0
- package/dist/setup/components/ModeSelector.js.map +1 -0
- package/dist/setup/components/ProviderSelector.d.ts +18 -0
- package/dist/setup/components/ProviderSelector.d.ts.map +1 -0
- package/dist/setup/components/ProviderSelector.js +98 -0
- package/dist/setup/components/ProviderSelector.js.map +1 -0
- package/dist/setup/components/SetupWizard.d.ts +2 -0
- package/dist/setup/components/SetupWizard.d.ts.map +1 -0
- package/dist/setup/components/SetupWizard.js +212 -0
- package/dist/setup/components/SetupWizard.js.map +1 -0
- package/dist/setup/components/StepIndicator.d.ts +13 -0
- package/dist/setup/components/StepIndicator.d.ts.map +1 -0
- package/dist/setup/components/StepIndicator.js +18 -0
- package/dist/setup/components/StepIndicator.js.map +1 -0
- package/dist/setup/components/SuccessScreen.d.ts +18 -0
- package/dist/setup/components/SuccessScreen.d.ts.map +1 -0
- package/dist/setup/components/SuccessScreen.js +38 -0
- package/dist/setup/components/SuccessScreen.js.map +1 -0
- package/dist/setup/index.d.ts +12 -0
- package/dist/setup/index.d.ts.map +1 -0
- package/{src/setup/index.ts → dist/setup/index.js} +14 -19
- package/dist/setup/index.js.map +1 -0
- package/dist/setup/utils/cli-detection.d.ts +12 -0
- package/dist/setup/utils/cli-detection.d.ts.map +1 -0
- package/dist/setup/utils/cli-detection.js +83 -0
- package/dist/setup/utils/cli-detection.js.map +1 -0
- package/dist/setup/utils/config-writer.d.ts +43 -0
- package/dist/setup/utils/config-writer.d.ts.map +1 -0
- package/dist/setup/utils/config-writer.js +180 -0
- package/dist/setup/utils/config-writer.js.map +1 -0
- package/dist/styles.d.ts +12 -0
- package/dist/styles.d.ts.map +1 -0
- package/dist/styles.js +12 -0
- package/dist/styles.js.map +1 -0
- package/dist/tui/App.d.ts +3 -0
- package/dist/tui/App.d.ts.map +1 -0
- package/dist/tui/App.js +136 -0
- package/dist/tui/App.js.map +1 -0
- package/dist/tui/components/AgentStateIcon.d.ts +18 -0
- package/dist/tui/components/AgentStateIcon.d.ts.map +1 -0
- package/dist/tui/components/AgentStateIcon.js +57 -0
- package/dist/tui/components/AgentStateIcon.js.map +1 -0
- package/dist/tui/components/AnimatedBranch.d.ts +39 -0
- package/dist/tui/components/AnimatedBranch.d.ts.map +1 -0
- package/dist/tui/components/AnimatedBranch.js +64 -0
- package/dist/tui/components/AnimatedBranch.js.map +1 -0
- package/dist/tui/components/ChatPanel.d.ts +17 -0
- package/dist/tui/components/ChatPanel.d.ts.map +1 -0
- package/dist/tui/components/ChatPanel.js +51 -0
- package/dist/tui/components/ChatPanel.js.map +1 -0
- package/dist/tui/components/DAGPanel.d.ts +37 -0
- package/dist/tui/components/DAGPanel.d.ts.map +1 -0
- package/dist/tui/components/DAGPanel.js +52 -0
- package/dist/tui/components/DAGPanel.js.map +1 -0
- package/dist/tui/components/ExecutionTimeline.d.ts +34 -0
- package/dist/tui/components/ExecutionTimeline.d.ts.map +1 -0
- package/dist/tui/components/ExecutionTimeline.js +67 -0
- package/dist/tui/components/ExecutionTimeline.js.map +1 -0
- package/dist/tui/components/Header.d.ts +12 -0
- package/dist/tui/components/Header.d.ts.map +1 -0
- package/dist/tui/components/Header.js +32 -0
- package/dist/tui/components/Header.js.map +1 -0
- package/dist/tui/components/HelpOverlay.d.ts +7 -0
- package/dist/tui/components/HelpOverlay.d.ts.map +1 -0
- package/dist/tui/components/HelpOverlay.js +60 -0
- package/dist/tui/components/HelpOverlay.js.map +1 -0
- package/dist/tui/components/InputBar.d.ts +10 -0
- package/dist/tui/components/InputBar.d.ts.map +1 -0
- package/dist/tui/components/InputBar.js +21 -0
- package/dist/tui/components/InputBar.js.map +1 -0
- package/dist/tui/components/LogsPanel.d.ts +10 -0
- package/dist/tui/components/MemoryPanel.d.ts +22 -0
- package/dist/tui/components/MetricsPanel.d.ts +19 -0
- package/dist/tui/components/StatusPanel.d.ts +24 -0
- package/dist/tui/components/TaskTree.d.ts +28 -0
- package/dist/tui/components/TaskTree.d.ts.map +1 -0
- package/dist/tui/components/TaskTree.js +29 -0
- package/dist/tui/components/TaskTree.js.map +1 -0
- package/dist/tui/components/animations/ProgressBar.d.ts +39 -0
- package/dist/tui/components/animations/ProgressBar.d.ts.map +1 -0
- package/dist/tui/components/animations/ProgressBar.js +39 -0
- package/dist/tui/components/animations/ProgressBar.js.map +1 -0
- package/dist/tui/components/animations/Pulse.d.ts +17 -0
- package/dist/tui/components/animations/Pulse.d.ts.map +1 -0
- package/dist/tui/components/animations/Pulse.js +47 -0
- package/dist/tui/components/animations/Pulse.js.map +1 -0
- package/dist/tui/components/animations/Spinner.d.ts +13 -0
- package/dist/tui/components/animations/Spinner.d.ts.map +1 -0
- package/dist/tui/components/animations/Spinner.js +36 -0
- package/dist/tui/components/animations/Spinner.js.map +1 -0
- package/dist/tui/components/animations/StatusAnimator.d.ts +27 -0
- package/dist/tui/components/animations/StatusAnimator.d.ts.map +1 -0
- package/dist/tui/components/animations/StatusAnimator.js +85 -0
- package/dist/tui/components/animations/StatusAnimator.js.map +1 -0
- package/dist/tui/components/animations/TypingEffect.d.ts +26 -0
- package/dist/tui/components/animations/TypingEffect.d.ts.map +1 -0
- package/dist/tui/components/animations/TypingEffect.js +59 -0
- package/dist/tui/components/animations/TypingEffect.js.map +1 -0
- package/{src/tui/components/animations/index.ts → dist/tui/components/animations/index.d.ts} +2 -10
- package/dist/tui/components/animations/index.d.ts.map +1 -0
- package/dist/tui/components/animations/index.js +6 -0
- package/dist/tui/components/animations/index.js.map +1 -0
- package/dist/tui/hooks/useAnimation.d.ts +42 -0
- package/dist/tui/hooks/useAnimation.d.ts.map +1 -0
- package/dist/tui/hooks/useAnimation.js +212 -0
- package/dist/tui/hooks/useAnimation.js.map +1 -0
- package/dist/tui/hooks/useAppState.d.ts +65 -0
- package/dist/tui/hooks/useAppState.d.ts.map +1 -0
- package/dist/tui/hooks/useAppState.js +293 -0
- package/dist/tui/hooks/useAppState.js.map +1 -0
- package/dist/tui/index.d.ts +3 -0
- package/dist/tui/index.d.ts.map +1 -0
- package/{src/tui/index.ts → dist/tui/index.js} +2 -3
- package/dist/tui/index.js.map +1 -0
- package/dist/tui/services/orchestrator.d.ts +16 -0
- package/dist/tui/services/orchestrator.d.ts.map +1 -0
- package/dist/tui/services/orchestrator.js +152 -0
- package/dist/tui/services/orchestrator.js.map +1 -0
- package/dist/tui/styles/borders.d.ts +31 -0
- package/dist/tui/styles/borders.d.ts.map +1 -0
- package/dist/tui/styles/borders.js +47 -0
- package/dist/tui/styles/borders.js.map +1 -0
- package/dist/tui/styles/colors.d.ts +18 -0
- package/dist/tui/styles/colors.d.ts.map +1 -0
- package/dist/tui/styles/colors.js +18 -0
- package/dist/tui/styles/colors.js.map +1 -0
- package/dist/tui/styles/index.d.ts +6 -0
- package/dist/tui/styles/index.d.ts.map +1 -0
- package/dist/tui/styles/index.js +6 -0
- package/dist/tui/styles/index.js.map +1 -0
- package/dist/tui/styles/indicators.d.ts +67 -0
- package/dist/tui/styles/indicators.d.ts.map +1 -0
- package/dist/tui/styles/indicators.js +42 -0
- package/dist/tui/styles/indicators.js.map +1 -0
- package/dist/tui/styles/layout.d.ts +21 -0
- package/dist/tui/styles/layout.d.ts.map +1 -0
- package/dist/tui/styles/layout.js +42 -0
- package/dist/tui/styles/layout.js.map +1 -0
- package/dist/tui/styles/providers.d.ts +77 -0
- package/dist/tui/styles/providers.d.ts.map +1 -0
- package/dist/tui/styles/providers.js +31 -0
- package/dist/tui/styles/providers.js.map +1 -0
- package/dist/tui/utils/animation.d.ts +44 -0
- package/dist/tui/utils/animation.d.ts.map +1 -0
- package/dist/tui/utils/animation.js +107 -0
- package/dist/tui/utils/animation.js.map +1 -0
- package/dist/vendor-manifests.d.ts +22 -0
- package/dist/vendor-manifests.d.ts.map +1 -0
- package/dist/vendor-manifests.js +94 -0
- package/dist/vendor-manifests.js.map +1 -0
- package/dist/ws-relay.d.ts +12 -0
- package/dist/ws-relay.d.ts.map +1 -0
- package/{src/ws-relay.ts → dist/ws-relay.js} +39 -47
- package/dist/ws-relay.js.map +1 -0
- package/package.json +5 -1
- package/dashboard/index.html +0 -420
- package/src/benchmark.ts +0 -156
- package/src/bin.ts +0 -156
- package/src/bootstrap.ts +0 -36
- package/src/bridge-adapter-templates.ts +0 -181
- package/src/bridge-test.ts +0 -107
- package/src/doctor.ts +0 -92
- package/src/host-init-templates.ts +0 -134
- package/src/hub/__tests__/commands.test.ts +0 -84
- package/src/hub/__tests__/history.test.ts +0 -137
- package/src/hub/__tests__/parser.test.ts +0 -105
- package/src/hub/commands/agents.ts +0 -53
- package/src/hub/commands/index.ts +0 -140
- package/src/hub/commands/logs.ts +0 -70
- package/src/hub/commands/memory.ts +0 -47
- package/src/hub/commands/metrics.ts +0 -49
- package/src/hub/commands/providers.ts +0 -39
- package/src/hub/commands/run.ts +0 -37
- package/src/hub/commands/status.ts +0 -69
- package/src/hub/commands/workflows.ts +0 -64
- package/src/hub/config-loader.ts +0 -37
- package/src/hub/event-listener.ts +0 -17
- package/src/hub/history.ts +0 -66
- package/src/hub/index.ts +0 -132
- package/src/hub/parser.ts +0 -107
- package/src/hub/styles/borders.ts +0 -74
- package/src/hub/styles/colors.ts +0 -129
- package/src/hub/styles/typography.ts +0 -68
- package/src/hub/types.ts +0 -31
- package/src/init-host.ts +0 -285
- package/src/install.ts +0 -118
- package/src/run.ts +0 -317
- package/src/setup/components/ApiKeyInput.tsx +0 -158
- package/src/setup/components/CliDetector.tsx +0 -230
- package/src/setup/components/ModeSelector.tsx +0 -137
- package/src/setup/components/ProviderSelector.tsx +0 -175
- package/src/setup/components/SetupWizard.tsx +0 -368
- package/src/setup/components/StepIndicator.tsx +0 -74
- package/src/setup/components/SuccessScreen.tsx +0 -229
- package/src/setup/utils/cli-detection.ts +0 -99
- package/src/setup/utils/config-writer.ts +0 -249
- package/src/styles.ts +0 -12
- package/src/tui/App.tsx +0 -183
- package/src/tui/components/AgentStateIcon.tsx +0 -84
- package/src/tui/components/AnimatedBranch.tsx +0 -134
- package/src/tui/components/ChatPanel.tsx +0 -128
- package/src/tui/components/DAGPanel.tsx +0 -212
- package/src/tui/components/ExecutionTimeline.tsx +0 -225
- package/src/tui/components/Header.tsx +0 -109
- package/src/tui/components/HelpOverlay.tsx +0 -140
- package/src/tui/components/InputBar.tsx +0 -69
- package/src/tui/components/LogsPanel.tsx +0 -132
- package/src/tui/components/MemoryPanel.tsx +0 -166
- package/src/tui/components/MetricsPanel.tsx +0 -152
- package/src/tui/components/StatusPanel.tsx +0 -140
- package/src/tui/components/TaskTree.tsx +0 -159
- package/src/tui/components/animations/ProgressBar.tsx +0 -160
- package/src/tui/components/animations/Pulse.tsx +0 -73
- package/src/tui/components/animations/Spinner.tsx +0 -54
- package/src/tui/components/animations/StatusAnimator.tsx +0 -153
- package/src/tui/components/animations/TypingEffect.tsx +0 -119
- package/src/tui/hooks/useAnimation.ts +0 -290
- package/src/tui/hooks/useAppState.ts +0 -403
- package/src/tui/services/orchestrator.ts +0 -195
- package/src/tui/styles/borders.ts +0 -51
- package/src/tui/styles/colors.ts +0 -19
- package/src/tui/styles/index.ts +0 -20
- package/src/tui/styles/indicators.ts +0 -54
- package/src/tui/styles/layout.ts +0 -44
- package/src/tui/styles/providers.ts +0 -32
- package/src/tui/utils/animation.ts +0 -124
- package/src/vendor-manifests.ts +0 -113
- package/tsconfig.json +0 -28
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { memo, useMemo } from "react";
|
|
3
|
+
import { Box, Text } from "ink";
|
|
4
|
+
import { tuiColors, treeChars } from "../styles/index.js";
|
|
5
|
+
import { AgentStateIcon } from "./AgentStateIcon.js";
|
|
6
|
+
import { AnimatedBranch } from "./AnimatedBranch.js";
|
|
7
|
+
const TaskNodeItem = memo(function TaskNodeItem({ node, tick, isLast, showDetail = true }) {
|
|
8
|
+
const indent = useMemo(() => " ".repeat(node.level), [node.level]);
|
|
9
|
+
const prefix = isLast ? treeChars.lastBranch : treeChars.branch;
|
|
10
|
+
const timeStr = node.executionTime ? `${node.executionTime.toFixed(1)}s` : "";
|
|
11
|
+
const paddedName = useMemo(() => node.name.padEnd(20), [node.name]);
|
|
12
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { flexDirection: "row", children: [_jsxs(Text, { color: tuiColors.textTertiary, children: [indent, prefix, " "] }), _jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: tuiColors.textSecondary, children: "[" }), _jsx(AgentStateIcon, { state: node.state, tick: tick }), _jsx(Text, { color: tuiColors.textSecondary, children: "]" })] }), _jsxs(Text, { color: tuiColors.textPrimary, children: [" ", paddedName] }), timeStr && (_jsxs(Text, { color: tuiColors.textTertiary, children: [" \u25CF ", timeStr] }))] }), showDetail && node.detail && (_jsxs(Box, { flexDirection: "row", children: [_jsxs(Text, { color: tuiColors.textTertiary, children: [indent, " \u2514\u2500\u2500 "] }), _jsx(Text, { color: tuiColors.textSecondary, children: node.detail })] })), showDetail && node.subtasks && node.subtasks.length > 0 && (_jsx(Box, { flexDirection: "column", children: node.subtasks.map((subtask, idx) => (_jsxs(Box, { flexDirection: "row", children: [_jsxs(Text, { color: tuiColors.textTertiary, children: [indent, " ", idx === node.subtasks.length - 1 ? '└──' : '├──', " "] }), _jsx(Text, { color: tuiColors.textTertiary, children: subtask })] }, idx))) }))] }));
|
|
13
|
+
});
|
|
14
|
+
export const TaskTree = memo(function TaskTree({ rootTask, tasks, tick, isActive = false, maxDisplay = 15 }) {
|
|
15
|
+
const borderColor = isActive ? tuiColors.primary : tuiColors.border;
|
|
16
|
+
const displayTasks = useMemo(() => tasks.slice(0, maxDisplay), [tasks, maxDisplay]);
|
|
17
|
+
const hiddenCount = tasks.length - maxDisplay;
|
|
18
|
+
const taskElements = useMemo(() => displayTasks.map((task, idx) => (_jsx(TaskNodeItem, { node: task, tick: tick, isLast: idx === displayTasks.length - 1 && hiddenCount === 0 }, task.id))), [displayTasks, tick, hiddenCount]);
|
|
19
|
+
return (_jsxs(Box, { flexDirection: "column", borderStyle: "single", borderColor: borderColor, paddingX: 1, children: [_jsxs(Box, { marginBottom: 1, children: [_jsx(Text, { color: tuiColors.primary, bold: true, children: "\u250C\u2500" }), _jsx(Text, { color: tuiColors.primary, bold: true, children: " TASK_TREE " }), _jsx(Text, { color: tuiColors.textTertiary, children: "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500" })] }), _jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: tuiColors.textPrimary, bold: true, children: "\u25A0 " }), _jsxs(Text, { color: tuiColors.textSecondary, children: ["root: ", rootTask] })] }), _jsx(Box, { flexDirection: "column", marginTop: 1, children: _jsx(AnimatedBranch, { type: "vertical", tick: tick, animated: isActive }) }), _jsxs(Box, { flexDirection: "column", children: [taskElements, hiddenCount > 0 && (_jsx(Box, { flexDirection: "row", children: _jsxs(Text, { color: tuiColors.textTertiary, children: [" \u2514\u2500\u2500 +", hiddenCount, " more tasks..."] }) }))] })] }));
|
|
20
|
+
});
|
|
21
|
+
export const TaskHierarchy = memo(function TaskHierarchy({ tasks, tick, expandedIds = new Set() }) {
|
|
22
|
+
const renderNode = (node, isLast) => {
|
|
23
|
+
const hasChildren = (node.children?.length ?? 0) > 0;
|
|
24
|
+
const isExpanded = expandedIds.has(node.id);
|
|
25
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(TaskNodeItem, { node: node, tick: tick, isLast: isLast, showDetail: isExpanded }), hasChildren && isExpanded && (_jsx(Box, { flexDirection: "column", marginLeft: 2, children: node.children.map((child, idx) => (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { flexDirection: "row", children: _jsx(AnimatedBranch, { type: "vertical", tick: tick }) }), renderNode(child, idx === node.children.length - 1)] }, child.id))) }))] }, node.id));
|
|
26
|
+
};
|
|
27
|
+
return (_jsx(Box, { flexDirection: "column", children: tasks.map((task, idx) => renderNode(task, idx === tasks.length - 1)) }));
|
|
28
|
+
});
|
|
29
|
+
//# sourceMappingURL=TaskTree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskTree.js","sourceRoot":"","sources":["../../../src/tui/components/TaskTree.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
interface ProgressBarProps {
|
|
3
|
+
progress: number;
|
|
4
|
+
width?: number;
|
|
5
|
+
showPercentage?: boolean;
|
|
6
|
+
animated?: boolean;
|
|
7
|
+
tick?: number;
|
|
8
|
+
showMarker?: boolean;
|
|
9
|
+
glowEffect?: boolean;
|
|
10
|
+
color?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare const AnimatedProgressBar: React.NamedExoticComponent<ProgressBarProps>;
|
|
13
|
+
interface ProgressWithLabelProps {
|
|
14
|
+
label: string;
|
|
15
|
+
progress: number;
|
|
16
|
+
width?: number;
|
|
17
|
+
tick?: number;
|
|
18
|
+
animated?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export declare const ProgressWithLabel: React.NamedExoticComponent<ProgressWithLabelProps>;
|
|
21
|
+
interface SegmentedProgressProps {
|
|
22
|
+
segments: {
|
|
23
|
+
progress: number;
|
|
24
|
+
color?: string;
|
|
25
|
+
label?: string;
|
|
26
|
+
}[];
|
|
27
|
+
width?: number;
|
|
28
|
+
tick?: number;
|
|
29
|
+
}
|
|
30
|
+
export declare const SegmentedProgress: React.NamedExoticComponent<SegmentedProgressProps>;
|
|
31
|
+
interface WorkflowProgressProps {
|
|
32
|
+
level: string;
|
|
33
|
+
progress: number;
|
|
34
|
+
isActive: boolean;
|
|
35
|
+
tick?: number;
|
|
36
|
+
}
|
|
37
|
+
export declare const WorkflowProgress: React.NamedExoticComponent<WorkflowProgressProps>;
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=ProgressBar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProgressBar.d.ts","sourceRoot":"","sources":["../../../../src/tui/components/animations/ProgressBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAI7C,UAAU,gBAAgB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,mBAAmB,8CAoD9B,CAAC;AAEH,UAAU,sBAAsB;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,iBAAiB,oDAe5B,CAAC;AAEH,UAAU,sBAAsB;IAC9B,QAAQ,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,iBAAiB,oDA2B5B,CAAC;AAEH,UAAU,qBAAqB;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,gBAAgB,mDAuB3B,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { memo, useMemo } from "react";
|
|
3
|
+
import { Box, Text } from "ink";
|
|
4
|
+
import { tuiColors, getProgressMarker, getProgressGlow } from "../../styles/index.js";
|
|
5
|
+
export const AnimatedProgressBar = memo(function AnimatedProgressBar({ progress, width = 16, showPercentage = true, animated = true, tick = 0, showMarker = true, glowEffect = false, color, }) {
|
|
6
|
+
const filled = Math.round((progress / 100) * width);
|
|
7
|
+
const empty = width - filled;
|
|
8
|
+
const markerPos = Math.min(filled, width - 1);
|
|
9
|
+
const barColor = color || (progress >= 100
|
|
10
|
+
? tuiColors.success
|
|
11
|
+
: progress > 0
|
|
12
|
+
? tuiColors.warning
|
|
13
|
+
: tuiColors.textTertiary);
|
|
14
|
+
const filledChar = glowEffect && animated ? getProgressGlow(tick) : "█";
|
|
15
|
+
const emptyChar = "░";
|
|
16
|
+
const markerChar = showMarker && animated && progress > 0 && progress < 100 ? getProgressMarker(tick) : "";
|
|
17
|
+
const beforeMarker = filled > 0 ? filledChar.repeat(Math.max(0, filled - 1)) : "";
|
|
18
|
+
const afterMarker = emptyChar.repeat(empty);
|
|
19
|
+
const progressStr = useMemo(() => progress.toString().padStart(3), [progress]);
|
|
20
|
+
if (showMarker && animated && progress > 0 && progress < 100) {
|
|
21
|
+
return (_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: barColor, children: beforeMarker }), _jsx(Text, { color: tuiColors.primary, bold: true, children: markerChar }), _jsx(Text, { color: tuiColors.textTertiary, children: afterMarker.slice(1) }), showPercentage && (_jsxs(Text, { color: barColor, children: [" ", progressStr, "%"] }))] }));
|
|
22
|
+
}
|
|
23
|
+
const bar = filledChar.repeat(filled) + emptyChar.repeat(empty);
|
|
24
|
+
return (_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: barColor, children: bar }), showPercentage && (_jsxs(Text, { color: barColor, children: [" ", progressStr, "%"] }))] }));
|
|
25
|
+
});
|
|
26
|
+
export const ProgressWithLabel = memo(function ProgressWithLabel({ label, progress, width = 12, tick = 0, animated = true }) {
|
|
27
|
+
const paddedLabel = useMemo(() => label.padEnd(10), [label]);
|
|
28
|
+
return (_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: tuiColors.textSecondary, children: paddedLabel }), _jsx(AnimatedProgressBar, { progress: progress, width: width, tick: tick, animated: animated, showMarker: true })] }));
|
|
29
|
+
});
|
|
30
|
+
export const SegmentedProgress = memo(function SegmentedProgress({ segments, width = 20, tick = 0 }) {
|
|
31
|
+
const totalProgress = useMemo(() => segments.reduce((sum, s) => sum + s.progress, 0) / segments.length, [segments]);
|
|
32
|
+
return (_jsx(Box, { flexDirection: "column", children: segments.map((segment, idx) => (_jsxs(Box, { flexDirection: "row", children: [segment.label && _jsx(Text, { color: tuiColors.textTertiary, children: segment.label.padEnd(8) }), _jsx(AnimatedProgressBar, { progress: segment.progress, width: width, tick: tick, color: segment.color, showPercentage: false }), _jsxs(Text, { color: segment.color || tuiColors.textPrimary, children: [" ", segment.progress, "%"] })] }, idx))) }));
|
|
33
|
+
});
|
|
34
|
+
export const WorkflowProgress = memo(function WorkflowProgress({ level, progress, isActive, tick = 0 }) {
|
|
35
|
+
const levelColor = isActive ? tuiColors.primary : tuiColors.textSecondary;
|
|
36
|
+
const paddedLevel = useMemo(() => level.padEnd(12), [level]);
|
|
37
|
+
return (_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: levelColor, bold: true, children: paddedLevel }), _jsx(AnimatedProgressBar, { progress: progress, width: 12, tick: tick, animated: isActive, showMarker: isActive, glowEffect: isActive, color: isActive ? tuiColors.warning : undefined })] }));
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=ProgressBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProgressBar.js","sourceRoot":"","sources":["../../../../src/tui/components/animations/ProgressBar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
interface PulseProps {
|
|
3
|
+
interval?: number;
|
|
4
|
+
color?: string;
|
|
5
|
+
isAnimating?: boolean;
|
|
6
|
+
type?: "pulse" | "breath" | "ping";
|
|
7
|
+
}
|
|
8
|
+
export declare const Pulse: React.NamedExoticComponent<PulseProps>;
|
|
9
|
+
export declare function usePulseFrame(tick: number, type?: "pulse" | "breath" | "ping"): string;
|
|
10
|
+
export declare function usePulseIntensity(tick: number, interval?: number): number;
|
|
11
|
+
interface StatusPulseProps {
|
|
12
|
+
status: "online" | "offline" | "running" | "error";
|
|
13
|
+
tick?: number;
|
|
14
|
+
}
|
|
15
|
+
export declare const StatusPulse: React.NamedExoticComponent<StatusPulseProps>;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=Pulse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Pulse.d.ts","sourceRoot":"","sources":["../../../../src/tui/components/animations/Pulse.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAC;AAqBpC,UAAU,UAAU;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;CACpC;AAED,eAAO,MAAM,KAAK,wCAYhB,CAAC;AAEH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,OAAO,GAAG,QAAQ,GAAG,MAAgB,GAAG,MAAM,CAG/F;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAY,GAAG,MAAM,CAI9E;AAED,UAAU,gBAAgB;IACxB,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,WAAW,8CActB,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { memo } from "react";
|
|
3
|
+
import { Text } from "ink";
|
|
4
|
+
import { useAnimation } from "../../hooks/useAnimation.js";
|
|
5
|
+
import { tuiColors } from "../../styles/index.js";
|
|
6
|
+
const PULSE_FRAMES = ["●", "◐", "○", "◐"];
|
|
7
|
+
const BREATH_FRAMES = ["●", "●", "◐", "◐", "○", "○", "◐", "◐"];
|
|
8
|
+
const PING_FRAMES = ["●", "●", "●", "○", "○", "○", "○", "○", "○", "○"];
|
|
9
|
+
const FRAME_MAP = {
|
|
10
|
+
pulse: PULSE_FRAMES,
|
|
11
|
+
breath: BREATH_FRAMES,
|
|
12
|
+
ping: PING_FRAMES,
|
|
13
|
+
};
|
|
14
|
+
const DEFAULT_INTERVALS = {
|
|
15
|
+
pulse: 300,
|
|
16
|
+
breath: 600,
|
|
17
|
+
ping: 400,
|
|
18
|
+
};
|
|
19
|
+
export const Pulse = memo(function Pulse({ interval, color = tuiColors.success, isAnimating = true, type = "pulse" }) {
|
|
20
|
+
const frames = FRAME_MAP[type];
|
|
21
|
+
const actualInterval = interval ?? DEFAULT_INTERVALS[type];
|
|
22
|
+
const { frame } = useAnimation({ interval: actualInterval, loop: true, autoStart: isAnimating, maxFps: 15 });
|
|
23
|
+
const currentFrame = frames[frame % frames.length];
|
|
24
|
+
return _jsx(Text, { color: color, children: currentFrame });
|
|
25
|
+
});
|
|
26
|
+
export function usePulseFrame(tick, type = "pulse") {
|
|
27
|
+
const frames = FRAME_MAP[type];
|
|
28
|
+
return frames[tick % frames.length];
|
|
29
|
+
}
|
|
30
|
+
export function usePulseIntensity(tick, interval = 100) {
|
|
31
|
+
const cycleLength = 20;
|
|
32
|
+
const phase = (tick % cycleLength) / cycleLength;
|
|
33
|
+
return 0.5 + Math.sin(phase * Math.PI * 2) * 0.5;
|
|
34
|
+
}
|
|
35
|
+
export const StatusPulse = memo(function StatusPulse({ status, tick }) {
|
|
36
|
+
if (status === "running") {
|
|
37
|
+
return _jsx(Pulse, { interval: 200, color: tuiColors.warning, type: "pulse" });
|
|
38
|
+
}
|
|
39
|
+
if (status === "online") {
|
|
40
|
+
return _jsx(Pulse, { interval: 600, color: tuiColors.success, type: "breath" });
|
|
41
|
+
}
|
|
42
|
+
if (status === "error") {
|
|
43
|
+
return _jsx(Pulse, { interval: 400, color: tuiColors.error, type: "ping" });
|
|
44
|
+
}
|
|
45
|
+
return _jsx(Text, { color: tuiColors.textTertiary, children: "\u25CB" });
|
|
46
|
+
});
|
|
47
|
+
//# sourceMappingURL=Pulse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Pulse.js","sourceRoot":"","sources":["../../../../src/tui/components/animations/Pulse.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export type SpinnerType = "dots" | "circle" | "pulse" | "brackets" | "arrows" | "hamburger" | "grow";
|
|
3
|
+
interface SpinnerProps {
|
|
4
|
+
type?: SpinnerType;
|
|
5
|
+
interval?: number;
|
|
6
|
+
color?: string;
|
|
7
|
+
isAnimating?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare const Spinner: React.NamedExoticComponent<SpinnerProps>;
|
|
10
|
+
export declare function useSpinnerFrame(type: SpinnerType | undefined, tick: number): string;
|
|
11
|
+
export declare const spinnerTypes: SpinnerType[];
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=Spinner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Spinner.d.ts","sourceRoot":"","sources":["../../../../src/tui/components/animations/Spinner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAK7C,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC;AAsBrG,UAAU,YAAY;IACpB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,eAAO,MAAM,OAAO,0CAYlB,CAAC;AAEH,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,YAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAGhF;AAED,eAAO,MAAM,YAAY,EAAkC,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { memo } from "react";
|
|
3
|
+
import { Text } from "ink";
|
|
4
|
+
import { useAnimation } from "../../hooks/useAnimation.js";
|
|
5
|
+
import { tuiColors } from "../../styles/index.js";
|
|
6
|
+
const SPINNER_FRAMES = {
|
|
7
|
+
dots: ["⠋", "⠙", "⠹", "⠸", "⼸", "⠴", "⠦", "⠧", "⠇", "⠏"],
|
|
8
|
+
circle: ["◐", "◓", "◑", "◒"],
|
|
9
|
+
pulse: ["●", "◐", "○", "◐"],
|
|
10
|
+
brackets: ["[ ]", "[= ]", "[== ]", "[=== ]", "[==== ]", "[===== ]", "[====== ]", "[======= ]", "[======== ]", "[========= ]", "[==========]", "[ =========]", "[ ========]", "[ =======]", "[ ======]", "[ =====]", "[ ====]", "[ ===]", "[ ==]", "[ =]"],
|
|
11
|
+
arrows: ["←", "↖", "↑", "↗", "→", "↘", "↓", "↙"],
|
|
12
|
+
hamburger: ["☰", "☱", "ěr", "☳", "☴", "pě", "☲", "☶"],
|
|
13
|
+
grow: ["▁", "▂", "▃", "▄", "▅", "▆", "▇", "█", "▇", "▆", "▅", "▄", "▃", "▂"],
|
|
14
|
+
};
|
|
15
|
+
const DEFAULT_INTERVALS = {
|
|
16
|
+
dots: 100,
|
|
17
|
+
circle: 120,
|
|
18
|
+
pulse: 200,
|
|
19
|
+
brackets: 80,
|
|
20
|
+
arrows: 100,
|
|
21
|
+
hamburger: 150,
|
|
22
|
+
grow: 100,
|
|
23
|
+
};
|
|
24
|
+
export const Spinner = memo(function Spinner({ type = "dots", interval, color = tuiColors.primary, isAnimating = true }) {
|
|
25
|
+
const frames = SPINNER_FRAMES[type];
|
|
26
|
+
const actualInterval = interval ?? DEFAULT_INTERVALS[type];
|
|
27
|
+
const { frame } = useAnimation({ interval: actualInterval, loop: true, autoStart: isAnimating, maxFps: 20 });
|
|
28
|
+
const currentFrame = frames[frame % frames.length];
|
|
29
|
+
return _jsx(Text, { color: color, children: currentFrame });
|
|
30
|
+
});
|
|
31
|
+
export function useSpinnerFrame(type = "dots", tick) {
|
|
32
|
+
const frames = SPINNER_FRAMES[type];
|
|
33
|
+
return frames[tick % frames.length];
|
|
34
|
+
}
|
|
35
|
+
export const spinnerTypes = Object.keys(SPINNER_FRAMES);
|
|
36
|
+
//# sourceMappingURL=Spinner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Spinner.js","sourceRoot":"","sources":["../../../../src/tui/components/animations/Spinner.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,IAAI,EAAW,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAIlD,MAAM,cAAc,GAAkC;IACpD,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACxD,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAC5B,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAC3B,QAAQ,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,CAAC;IAC1U,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAChD,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;IACrD,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;CAC7E,CAAC;AAEF,MAAM,iBAAiB,GAAgC;IACrD,IAAI,EAAE,GAAG;IACT,MAAM,EAAE,GAAG;IACX,KAAK,EAAE,GAAG;IACV,QAAQ,EAAE,EAAE;IACZ,MAAM,EAAE,GAAG;IACX,SAAS,EAAE,GAAG;IACd,IAAI,EAAE,GAAG;CACV,CAAC;AASF,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,OAAO,CAAC,EAC3C,IAAI,GAAG,MAAM,EACb,QAAQ,EACR,KAAK,GAAG,SAAS,CAAC,OAAO,EACzB,WAAW,GAAG,IAAI,EACL;IACb,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,cAAc,GAAG,QAAQ,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC3D,MAAM,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7G,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAEnD,OAAO,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,YAAG,YAAY,GAAQ,CAAC;AACnD,CAAC,CAAC,CAAC;AAEH,MAAM,UAAU,eAAe,CAAC,OAAoB,MAAM,EAAE,IAAY;IACtE,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAkB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export type TransitionStatus = "entering" | "active" | "exiting" | "hidden";
|
|
3
|
+
interface StatusAnimatorProps {
|
|
4
|
+
status: "pending" | "running" | "done" | "error" | "idle" | "queued";
|
|
5
|
+
label?: string;
|
|
6
|
+
showLabel?: boolean;
|
|
7
|
+
transitionDuration?: number;
|
|
8
|
+
}
|
|
9
|
+
export declare const StatusAnimator: React.NamedExoticComponent<StatusAnimatorProps>;
|
|
10
|
+
interface MetricPulseProps {
|
|
11
|
+
value: number | string;
|
|
12
|
+
label: string;
|
|
13
|
+
unit?: string;
|
|
14
|
+
threshold?: {
|
|
15
|
+
warning: number;
|
|
16
|
+
critical: number;
|
|
17
|
+
};
|
|
18
|
+
isHighlighted?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export declare const MetricPulse: React.NamedExoticComponent<MetricPulseProps>;
|
|
21
|
+
interface FitnessAnimatorProps {
|
|
22
|
+
value: number;
|
|
23
|
+
previousValue?: number;
|
|
24
|
+
}
|
|
25
|
+
export declare const FitnessAnimator: React.NamedExoticComponent<FitnessAnimatorProps>;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=StatusAnimator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatusAnimator.d.ts","sourceRoot":"","sources":["../../../../src/tui/components/animations/StatusAnimator.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4C,MAAM,OAAO,CAAC;AAKjE,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE5E,UAAU,mBAAmB;IAC3B,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAqBD,eAAO,MAAM,cAAc,iDAuDzB,CAAC;AAEH,UAAU,gBAAgB;IACxB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,eAAO,MAAM,WAAW,8CAsBtB,CAAC;AAEH,UAAU,oBAAoB;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,eAAe,kDAyB1B,CAAC"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useEffect, memo, useRef } from "react";
|
|
3
|
+
import { Box, Text } from "ink";
|
|
4
|
+
import { tuiColors, getStatusIndicator } from "../../styles/index.js";
|
|
5
|
+
import { useAnimation } from "../../hooks/useAnimation.js";
|
|
6
|
+
const STATUS_COLORS = {
|
|
7
|
+
pending: tuiColors.textTertiary,
|
|
8
|
+
queued: tuiColors.warning,
|
|
9
|
+
running: tuiColors.primary,
|
|
10
|
+
done: tuiColors.success,
|
|
11
|
+
error: tuiColors.error,
|
|
12
|
+
idle: tuiColors.textQuaternary,
|
|
13
|
+
};
|
|
14
|
+
const RUNNING_FRAMES = ["◐", "◓", "◑", "◒"];
|
|
15
|
+
const TRANSITION_FRAMES = ["○", "◐", "◓", "●"];
|
|
16
|
+
const EXIT_FRAMES = ["●", "◑", "◒", "○"];
|
|
17
|
+
const STATUS_ORDER = ["pending", "queued", "running", "done", "error", "idle"];
|
|
18
|
+
function getStatusColor(status) {
|
|
19
|
+
return STATUS_COLORS[status] || tuiColors.textTertiary;
|
|
20
|
+
}
|
|
21
|
+
export const StatusAnimator = memo(function StatusAnimator({ status, label, showLabel = true, transitionDuration = 500, }) {
|
|
22
|
+
const [displayStatus, setDisplayStatus] = useState(status);
|
|
23
|
+
const [isTransitioning, setIsTransitioning] = useState(false);
|
|
24
|
+
const [transitionFrame, setTransitionFrame] = useState(0);
|
|
25
|
+
const timeoutRef = useRef(null);
|
|
26
|
+
const { frame } = useAnimation({ interval: 100, loop: true, maxFps: 15 });
|
|
27
|
+
useEffect(() => {
|
|
28
|
+
if (status !== displayStatus) {
|
|
29
|
+
setIsTransitioning(true);
|
|
30
|
+
timeoutRef.current = setTimeout(() => {
|
|
31
|
+
setDisplayStatus(status);
|
|
32
|
+
setIsTransitioning(false);
|
|
33
|
+
}, transitionDuration);
|
|
34
|
+
return () => {
|
|
35
|
+
if (timeoutRef.current)
|
|
36
|
+
clearTimeout(timeoutRef.current);
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
}, [status, displayStatus, transitionDuration]);
|
|
40
|
+
const getAnimatedIcon = () => {
|
|
41
|
+
if (status === "running") {
|
|
42
|
+
return RUNNING_FRAMES[frame % RUNNING_FRAMES.length];
|
|
43
|
+
}
|
|
44
|
+
if (isTransitioning) {
|
|
45
|
+
const frames = STATUS_ORDER.indexOf(status) > STATUS_ORDER.indexOf(displayStatus)
|
|
46
|
+
? TRANSITION_FRAMES
|
|
47
|
+
: EXIT_FRAMES;
|
|
48
|
+
return frames[transitionFrame % frames.length];
|
|
49
|
+
}
|
|
50
|
+
const statusInfo = getStatusIndicator(displayStatus);
|
|
51
|
+
return statusInfo.icon;
|
|
52
|
+
};
|
|
53
|
+
const color = getStatusColor(status);
|
|
54
|
+
return (_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: color, children: getAnimatedIcon() }), showLabel && label && (_jsxs(Text, { color: color, children: [" ", label] })), showLabel && !label && (_jsxs(Text, { color: tuiColors.textSecondary, children: [" [", status.toUpperCase(), "]"] }))] }));
|
|
55
|
+
});
|
|
56
|
+
export const MetricPulse = memo(function MetricPulse({ value, label, unit, threshold, isHighlighted }) {
|
|
57
|
+
const { frame } = useAnimation({ interval: 200, loop: true, maxFps: 10 });
|
|
58
|
+
const numValue = typeof value === "number" ? value : parseFloat(value) || 0;
|
|
59
|
+
let color = tuiColors.success;
|
|
60
|
+
if (threshold) {
|
|
61
|
+
if (numValue >= threshold.critical)
|
|
62
|
+
color = tuiColors.error;
|
|
63
|
+
else if (numValue >= threshold.warning)
|
|
64
|
+
color = tuiColors.warning;
|
|
65
|
+
}
|
|
66
|
+
return (_jsxs(Box, { flexDirection: "row", children: [_jsxs(Text, { color: tuiColors.textTertiary, children: [label, ":"] }), _jsxs(Text, { color: color, bold: isHighlighted, children: [" ", value, unit || ""] })] }));
|
|
67
|
+
});
|
|
68
|
+
export const FitnessAnimator = memo(function FitnessAnimator({ value, previousValue }) {
|
|
69
|
+
const { frame } = useAnimation({ interval: 150, loop: true, maxFps: 12 });
|
|
70
|
+
const diff = previousValue !== undefined ? value - previousValue : 0;
|
|
71
|
+
const isImproving = diff > 0;
|
|
72
|
+
const isDeclining = diff < 0;
|
|
73
|
+
let color = tuiColors.success;
|
|
74
|
+
if (value >= 0.9)
|
|
75
|
+
color = tuiColors.success;
|
|
76
|
+
else if (value >= 0.7)
|
|
77
|
+
color = tuiColors.warning;
|
|
78
|
+
else
|
|
79
|
+
color = tuiColors.error;
|
|
80
|
+
const frames = ["●", "◐", "●", "◐"];
|
|
81
|
+
const animFrame = (isImproving || isDeclining) ? frames[frame % frames.length] : "●";
|
|
82
|
+
const statusLabel = value >= 0.9 ? "OPTIMAL" : value >= 0.7 ? "GOOD" : "IMPROVING";
|
|
83
|
+
return (_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: tuiColors.textTertiary, children: "Fitness:" }), _jsxs(Text, { color: color, bold: true, children: [" ", value.toFixed(2)] }), _jsxs(Text, { color: tuiColors.textTertiary, children: [" [", statusLabel, "]"] }), isImproving && _jsx(Text, { color: tuiColors.success, children: " \u2191" }), isDeclining && _jsx(Text, { color: tuiColors.error, children: " \u2193" })] }));
|
|
84
|
+
});
|
|
85
|
+
//# sourceMappingURL=StatusAnimator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatusAnimator.js","sourceRoot":"","sources":["../../../../src/tui/components/animations/StatusAnimator.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
interface TypingEffectProps {
|
|
3
|
+
text: string;
|
|
4
|
+
speed?: number;
|
|
5
|
+
color?: string;
|
|
6
|
+
showCursor?: boolean;
|
|
7
|
+
cursorChar?: string;
|
|
8
|
+
onComplete?: () => void;
|
|
9
|
+
isAnimating?: boolean;
|
|
10
|
+
prefix?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare const TypingEffect: React.NamedExoticComponent<TypingEffectProps>;
|
|
13
|
+
interface TypewriterMessageProps {
|
|
14
|
+
text: string;
|
|
15
|
+
speed?: number;
|
|
16
|
+
color?: string;
|
|
17
|
+
isComplete?: boolean;
|
|
18
|
+
}
|
|
19
|
+
export declare const TypewriterMessage: React.NamedExoticComponent<TypewriterMessageProps>;
|
|
20
|
+
interface ProcessingIndicatorProps {
|
|
21
|
+
text?: string;
|
|
22
|
+
color?: string;
|
|
23
|
+
}
|
|
24
|
+
export declare const ProcessingIndicator: React.NamedExoticComponent<ProcessingIndicatorProps>;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=TypingEffect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TypingEffect.d.ts","sourceRoot":"","sources":["../../../../src/tui/components/animations/TypingEffect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4C,MAAM,OAAO,CAAC;AAKjE,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,YAAY,+CAiDvB,CAAC;AAEH,UAAU,sBAAsB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,iBAAiB,oDA2B5B,CAAC;AAEH,UAAU,wBAAwB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,mBAAmB,sDAU9B,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useEffect, memo, useRef } from "react";
|
|
3
|
+
import { Box, Text } from "ink";
|
|
4
|
+
import { tuiColors } from "../../styles/index.js";
|
|
5
|
+
import { Spinner } from "./Spinner.js";
|
|
6
|
+
export const TypingEffect = memo(function TypingEffect({ text, speed = 30, color = tuiColors.textPrimary, showCursor = true, cursorChar = "█", onComplete, isAnimating = true, prefix, }) {
|
|
7
|
+
const [displayedChars, setDisplayedChars] = useState(0);
|
|
8
|
+
const [isComplete, setIsComplete] = useState(false);
|
|
9
|
+
const timeoutRef = useRef(null);
|
|
10
|
+
const onCompleteRef = useRef(onComplete);
|
|
11
|
+
onCompleteRef.current = onComplete;
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
if (!isAnimating) {
|
|
14
|
+
setDisplayedChars(text.length);
|
|
15
|
+
setIsComplete(true);
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
if (displayedChars >= text.length) {
|
|
19
|
+
if (!isComplete) {
|
|
20
|
+
setIsComplete(true);
|
|
21
|
+
onCompleteRef.current?.();
|
|
22
|
+
}
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
timeoutRef.current = setTimeout(() => {
|
|
26
|
+
setDisplayedChars((prev) => prev + 1);
|
|
27
|
+
}, speed);
|
|
28
|
+
return () => {
|
|
29
|
+
if (timeoutRef.current)
|
|
30
|
+
clearTimeout(timeoutRef.current);
|
|
31
|
+
};
|
|
32
|
+
}, [displayedChars, text.length, speed, isComplete, isAnimating]);
|
|
33
|
+
const displayedText = text.slice(0, displayedChars);
|
|
34
|
+
return (_jsxs(Box, { flexDirection: "row", children: [prefix && _jsx(Text, { color: tuiColors.textTertiary, children: prefix }), _jsx(Text, { color: color, children: displayedText }), showCursor && !isComplete && _jsx(Text, { color: tuiColors.primary, children: cursorChar })] }));
|
|
35
|
+
});
|
|
36
|
+
export const TypewriterMessage = memo(function TypewriterMessage({ text, speed = 20, color = tuiColors.textPrimary, isComplete }) {
|
|
37
|
+
const [displayedChars, setDisplayedChars] = useState(0);
|
|
38
|
+
const timeoutRef = useRef(null);
|
|
39
|
+
useEffect(() => {
|
|
40
|
+
if (isComplete) {
|
|
41
|
+
setDisplayedChars(text.length);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (displayedChars >= text.length)
|
|
45
|
+
return;
|
|
46
|
+
timeoutRef.current = setTimeout(() => {
|
|
47
|
+
setDisplayedChars((prev) => prev + 1);
|
|
48
|
+
}, speed);
|
|
49
|
+
return () => {
|
|
50
|
+
if (timeoutRef.current)
|
|
51
|
+
clearTimeout(timeoutRef.current);
|
|
52
|
+
};
|
|
53
|
+
}, [displayedChars, text.length, speed, isComplete]);
|
|
54
|
+
return _jsx(Text, { color: color, children: text.slice(0, displayedChars) });
|
|
55
|
+
});
|
|
56
|
+
export const ProcessingIndicator = memo(function ProcessingIndicator({ text = "Processing", color = tuiColors.warning }) {
|
|
57
|
+
return (_jsxs(Box, { flexDirection: "row", children: [_jsx(Spinner, { type: "dots", color: color }), _jsxs(Text, { color: color, children: [" ", text, "..."] })] }));
|
|
58
|
+
});
|
|
59
|
+
//# sourceMappingURL=TypingEffect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TypingEffect.js","sourceRoot":"","sources":["../../../../src/tui/components/animations/TypingEffect.tsx"],"names":[],"mappings":"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"}
|
package/{src/tui/components/animations/index.ts → dist/tui/components/animations/index.d.ts}
RENAMED
|
@@ -1,16 +1,8 @@
|
|
|
1
1
|
export { Spinner, useSpinnerFrame, spinnerTypes } from "./Spinner.js";
|
|
2
2
|
export type { SpinnerType } from "./Spinner.js";
|
|
3
|
-
|
|
4
3
|
export { Pulse, StatusPulse, usePulseFrame, usePulseIntensity } from "./Pulse.js";
|
|
5
|
-
|
|
6
4
|
export { TypingEffect, TypewriterMessage, ProcessingIndicator } from "./TypingEffect.js";
|
|
7
|
-
|
|
8
5
|
export { StatusAnimator, MetricPulse, FitnessAnimator } from "./StatusAnimator.js";
|
|
9
6
|
export type { TransitionStatus } from "./StatusAnimator.js";
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
AnimatedProgressBar,
|
|
13
|
-
ProgressWithLabel,
|
|
14
|
-
SegmentedProgress,
|
|
15
|
-
WorkflowProgress
|
|
16
|
-
} from "./ProgressBar.js";
|
|
7
|
+
export { AnimatedProgressBar, ProgressWithLabel, SegmentedProgress, WorkflowProgress } from "./ProgressBar.js";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/tui/components/animations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACtE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAElF,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAEzF,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACnF,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { Spinner, useSpinnerFrame, spinnerTypes } from "./Spinner.js";
|
|
2
|
+
export { Pulse, StatusPulse, usePulseFrame, usePulseIntensity } from "./Pulse.js";
|
|
3
|
+
export { TypingEffect, TypewriterMessage, ProcessingIndicator } from "./TypingEffect.js";
|
|
4
|
+
export { StatusAnimator, MetricPulse, FitnessAnimator } from "./StatusAnimator.js";
|
|
5
|
+
export { AnimatedProgressBar, ProgressWithLabel, SegmentedProgress, WorkflowProgress } from "./ProgressBar.js";
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/tui/components/animations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGtE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAElF,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAEzF,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGnF,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export interface AnimationOptions {
|
|
2
|
+
interval?: number;
|
|
3
|
+
loop?: boolean;
|
|
4
|
+
autoStart?: boolean;
|
|
5
|
+
totalFrames?: number;
|
|
6
|
+
maxFps?: number;
|
|
7
|
+
pauseOnHidden?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface AnimationState {
|
|
10
|
+
frame: number;
|
|
11
|
+
tick: number;
|
|
12
|
+
isAnimating: boolean;
|
|
13
|
+
progress: number;
|
|
14
|
+
start: () => void;
|
|
15
|
+
stop: () => void;
|
|
16
|
+
reset: () => void;
|
|
17
|
+
toggle: () => void;
|
|
18
|
+
}
|
|
19
|
+
export declare function useAnimation(options?: AnimationOptions): AnimationState;
|
|
20
|
+
export declare function usePulse(interval?: number): {
|
|
21
|
+
intensity: number;
|
|
22
|
+
frame: number;
|
|
23
|
+
};
|
|
24
|
+
export declare function useTypewriter(text: string, speed?: number, startDelay?: number): {
|
|
25
|
+
displayedText: string;
|
|
26
|
+
isComplete: boolean;
|
|
27
|
+
restart: () => void;
|
|
28
|
+
};
|
|
29
|
+
export declare function useCountdown(initialSeconds: number, options?: {
|
|
30
|
+
autoStart?: boolean;
|
|
31
|
+
onComplete?: () => void;
|
|
32
|
+
}): {
|
|
33
|
+
seconds: number;
|
|
34
|
+
isRunning: boolean;
|
|
35
|
+
start: () => void;
|
|
36
|
+
pause: () => void;
|
|
37
|
+
reset: () => void;
|
|
38
|
+
};
|
|
39
|
+
export declare function useFps(targetFps?: number): number;
|
|
40
|
+
export declare function useDebouncedCallback<T extends (...args: unknown[]) => void>(callback: T, delay: number): T;
|
|
41
|
+
export declare function useThrottledCallback<T extends (...args: unknown[]) => void>(callback: T, delay: number): T;
|
|
42
|
+
//# sourceMappingURL=useAnimation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAnimation.d.ts","sourceRoot":"","sources":["../../../src/tui/hooks/useAnimation.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAKD,wBAAgB,YAAY,CAAC,OAAO,GAAE,gBAAqB,GAAG,cAAc,CAuG3E;AAED,wBAAgB,QAAQ,CAAC,QAAQ,GAAE,MAAa,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAItF;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,KAAK,GAAE,MAAW,EAClB,UAAU,GAAE,MAAU,GACrB;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,CAgDrE;AAED,wBAAgB,YAAY,CAC1B,cAAc,EAAE,MAAM,EACtB,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;CAAO,GAC7D;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,IAAI,CAAA;CAAE,CAkClG;AAED,wBAAgB,MAAM,CAAC,SAAS,GAAE,MAAW,GAAG,MAAM,CA6BrD;AAED,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,EACzE,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE,MAAM,GACZ,CAAC,CASH;AAED,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,EACzE,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE,MAAM,GACZ,CAAC,CAYH"}
|