create-principles-disciple 1.146.4 → 1.146.6
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/_release/product-identity.json +1 -1
- package/package.json +3 -3
- package/release-manager/package.json +3 -3
- package/console/dist/ui/App.d.ts +0 -1
- package/console/dist/ui/App.js +0 -172
- package/console/dist/ui/api.d.ts +0 -611
- package/console/dist/ui/api.js +0 -1094
- package/console/dist/ui/components/auth/login-form.d.ts +0 -4
- package/console/dist/ui/components/auth/login-form.js +0 -142
- package/console/dist/ui/components/auth/splash-screen.d.ts +0 -9
- package/console/dist/ui/components/auth/splash-screen.js +0 -22
- package/console/dist/ui/components/error-boundary.d.ts +0 -15
- package/console/dist/ui/components/error-boundary.js +0 -30
- package/console/dist/ui/components/focus/daily-thought-card.d.ts +0 -1
- package/console/dist/ui/components/focus/daily-thought-card.js +0 -41
- package/console/dist/ui/components/language-switcher.d.ts +0 -2
- package/console/dist/ui/components/language-switcher.js +0 -17
- package/console/dist/ui/components/layout/app-sidebar.d.ts +0 -27
- package/console/dist/ui/components/layout/app-sidebar.js +0 -128
- package/console/dist/ui/components/layout/page-loading.d.ts +0 -13
- package/console/dist/ui/components/layout/page-loading.js +0 -14
- package/console/dist/ui/components/layout/page-shell.d.ts +0 -12
- package/console/dist/ui/components/layout/page-shell.js +0 -11
- package/console/dist/ui/components/layout/section-title.d.ts +0 -10
- package/console/dist/ui/components/layout/section-title.js +0 -9
- package/console/dist/ui/components/notifications/NotificationProvider.d.ts +0 -14
- package/console/dist/ui/components/notifications/NotificationProvider.js +0 -136
- package/console/dist/ui/components/notifications/favicon-badge.d.ts +0 -3
- package/console/dist/ui/components/notifications/favicon-badge.js +0 -68
- package/console/dist/ui/components/notifications/notification-reducer.d.ts +0 -9
- package/console/dist/ui/components/notifications/notification-reducer.js +0 -9
- package/console/dist/ui/components/notifications/sound-storage.d.ts +0 -3
- package/console/dist/ui/components/notifications/sound-storage.js +0 -37
- package/console/dist/ui/components/notifications/useNotifications.d.ts +0 -1
- package/console/dist/ui/components/notifications/useNotifications.js +0 -9
- package/console/dist/ui/components/onboarding/CircuitDiagram.d.ts +0 -8
- package/console/dist/ui/components/onboarding/CircuitDiagram.js +0 -18
- package/console/dist/ui/components/onboarding/DemoResultView.d.ts +0 -22
- package/console/dist/ui/components/onboarding/DemoResultView.js +0 -33
- package/console/dist/ui/components/onboarding/SlashCommandsCard.d.ts +0 -16
- package/console/dist/ui/components/onboarding/SlashCommandsCard.js +0 -20
- package/console/dist/ui/components/onboarding/slashCommands.d.ts +0 -20
- package/console/dist/ui/components/onboarding/slashCommands.js +0 -22
- package/console/dist/ui/components/receipts/ReceiptCoverageDisclosure.d.ts +0 -6
- package/console/dist/ui/components/receipts/ReceiptCoverageDisclosure.js +0 -66
- package/console/dist/ui/components/theme-provider.d.ts +0 -14
- package/console/dist/ui/components/theme-provider.js +0 -40
- package/console/dist/ui/components/theme-toggle.d.ts +0 -2
- package/console/dist/ui/components/theme-toggle.js +0 -11
- package/console/dist/ui/components/ui/alert-dialog.d.ts +0 -20
- package/console/dist/ui/components/ui/alert-dialog.js +0 -26
- package/console/dist/ui/components/ui/badge.d.ts +0 -9
- package/console/dist/ui/components/ui/badge.js +0 -22
- package/console/dist/ui/components/ui/button.d.ts +0 -11
- package/console/dist/ui/components/ui/button.js +0 -34
- package/console/dist/ui/components/ui/card.d.ts +0 -8
- package/console/dist/ui/components/ui/card.js +0 -16
- package/console/dist/ui/components/ui/charts.d.ts +0 -51
- package/console/dist/ui/components/ui/charts.js +0 -72
- package/console/dist/ui/components/ui/dialog.d.ts +0 -19
- package/console/dist/ui/components/ui/dialog.js +0 -22
- package/console/dist/ui/components/ui/input.d.ts +0 -3
- package/console/dist/ui/components/ui/input.js +0 -8
- package/console/dist/ui/components/ui/markdown.d.ts +0 -24
- package/console/dist/ui/components/ui/markdown.js +0 -119
- package/console/dist/ui/components/ui/progress-bar.d.ts +0 -20
- package/console/dist/ui/components/ui/progress-bar.js +0 -38
- package/console/dist/ui/components/ui/select.d.ts +0 -13
- package/console/dist/ui/components/ui/select.js +0 -26
- package/console/dist/ui/components/ui/separator.d.ts +0 -3
- package/console/dist/ui/components/ui/separator.js +0 -6
- package/console/dist/ui/components/ui/sheet.d.ts +0 -25
- package/console/dist/ui/components/ui/sheet.js +0 -37
- package/console/dist/ui/components/ui/shiny-text.d.ts +0 -28
- package/console/dist/ui/components/ui/shiny-text.js +0 -46
- package/console/dist/ui/components/ui/skeleton.d.ts +0 -3
- package/console/dist/ui/components/ui/skeleton.js +0 -6
- package/console/dist/ui/components/ui/sonner.d.ts +0 -3
- package/console/dist/ui/components/ui/sonner.js +0 -13
- package/console/dist/ui/components/ui/tooltip.d.ts +0 -7
- package/console/dist/ui/components/ui/tooltip.js +0 -10
- package/console/dist/ui/data/daily-thoughts.d.ts +0 -15
- package/console/dist/ui/data/daily-thoughts.js +0 -164
- package/console/dist/ui/hooks/useNotificationSound.d.ts +0 -12
- package/console/dist/ui/hooks/useNotificationSound.js +0 -74
- package/console/dist/ui/i18n/en.json +0 -2399
- package/console/dist/ui/i18n/index.d.ts +0 -2
- package/console/dist/ui/i18n/index.js +0 -32
- package/console/dist/ui/i18n/zh-CN.json +0 -2399
- package/console/dist/ui/main.d.ts +0 -1
- package/console/dist/ui/main.js +0 -9
- package/console/dist/ui/pages/ReportProblemValidators.d.ts +0 -144
- package/console/dist/ui/pages/ReportProblemValidators.js +0 -418
- package/console/dist/ui/pages/activation/ActivationPage.d.ts +0 -1
- package/console/dist/ui/pages/activation/ActivationPage.js +0 -512
- package/console/dist/ui/pages/activation/ActivationValidators.d.ts +0 -20
- package/console/dist/ui/pages/activation/ActivationValidators.js +0 -160
- package/console/dist/ui/pages/control-center/AgentCard.d.ts +0 -31
- package/console/dist/ui/pages/control-center/AgentCard.js +0 -212
- package/console/dist/ui/pages/control-center/AgentGroup.d.ts +0 -26
- package/console/dist/ui/pages/control-center/AgentGroup.js +0 -38
- package/console/dist/ui/pages/control-center/ControlCenterPage.d.ts +0 -1
- package/console/dist/ui/pages/control-center/ControlCenterPage.js +0 -509
- package/console/dist/ui/pages/control-center/DesignGatePanel.d.ts +0 -1
- package/console/dist/ui/pages/control-center/DesignGatePanel.js +0 -137
- package/console/dist/ui/pages/control-center/RuntimeProfileManager.d.ts +0 -31
- package/console/dist/ui/pages/control-center/RuntimeProfileManager.js +0 -199
- package/console/dist/ui/pages/control-center/WorkflowDiagram.d.ts +0 -17
- package/console/dist/ui/pages/control-center/WorkflowDiagram.js +0 -55
- package/console/dist/ui/pages/debt/DebtPage.d.ts +0 -2
- package/console/dist/ui/pages/debt/DebtPage.js +0 -222
- package/console/dist/ui/pages/design-system/DesignSystemPage.d.ts +0 -2
- package/console/dist/ui/pages/design-system/DesignSystemPage.js +0 -30
- package/console/dist/ui/pages/examiner/ExaminerPage.d.ts +0 -15
- package/console/dist/ui/pages/examiner/ExaminerPage.js +0 -158
- package/console/dist/ui/pages/failed-tasks/FailedTasksPage.d.ts +0 -1
- package/console/dist/ui/pages/failed-tasks/FailedTasksPage.js +0 -421
- package/console/dist/ui/pages/focus/ApprovalSubjectReading.d.ts +0 -24
- package/console/dist/ui/pages/focus/ApprovalSubjectReading.js +0 -133
- package/console/dist/ui/pages/focus/FocusPage.d.ts +0 -123
- package/console/dist/ui/pages/focus/FocusPage.js +0 -567
- package/console/dist/ui/pages/focus/OwnerDecisionCard.d.ts +0 -9
- package/console/dist/ui/pages/focus/OwnerDecisionCard.js +0 -111
- package/console/dist/ui/pages/focus/OwnerWorkbench.d.ts +0 -19
- package/console/dist/ui/pages/focus/OwnerWorkbench.js +0 -75
- package/console/dist/ui/pages/focus/RuleCandidateBindingPanel.d.ts +0 -34
- package/console/dist/ui/pages/focus/RuleCandidateBindingPanel.js +0 -298
- package/console/dist/ui/pages/focus/focus-validation.d.ts +0 -40
- package/console/dist/ui/pages/focus/focus-validation.js +0 -211
- package/console/dist/ui/pages/intent/IntentOnboarding.d.ts +0 -67
- package/console/dist/ui/pages/intent/IntentOnboarding.js +0 -289
- package/console/dist/ui/pages/intent/IntentPage.d.ts +0 -1
- package/console/dist/ui/pages/intent/IntentPage.js +0 -252
- package/console/dist/ui/pages/pain/PainEvidenceValidators.d.ts +0 -59
- package/console/dist/ui/pages/pain/PainEvidenceValidators.js +0 -125
- package/console/dist/ui/pages/pain/PainPage.d.ts +0 -1
- package/console/dist/ui/pages/pain/PainPage.js +0 -420
- package/console/dist/ui/pages/pain/pain-card-helpers.d.ts +0 -175
- package/console/dist/ui/pages/pain/pain-card-helpers.js +0 -181
- package/console/dist/ui/pages/principles/CorePrinciplesPage.d.ts +0 -10
- package/console/dist/ui/pages/principles/CorePrinciplesPage.js +0 -59
- package/console/dist/ui/pages/principles/PrincipleDetailPage.d.ts +0 -60
- package/console/dist/ui/pages/principles/PrincipleDetailPage.js +0 -602
- package/console/dist/ui/pages/principles/PrinciplesPage.d.ts +0 -1
- package/console/dist/ui/pages/principles/PrinciplesPage.js +0 -327
- package/console/dist/ui/pages/principles/PrinciplesViewNav.d.ts +0 -8
- package/console/dist/ui/pages/principles/PrinciplesViewNav.js +0 -15
- package/console/dist/ui/pages/report-problem/ReportProblemPage.d.ts +0 -1
- package/console/dist/ui/pages/report-problem/ReportProblemPage.js +0 -467
- package/console/dist/ui/pages/settings/SettingsPage.d.ts +0 -4
- package/console/dist/ui/pages/settings/SettingsPage.js +0 -457
- package/console/dist/ui/pages/settings/UpdatePage.d.ts +0 -1
- package/console/dist/ui/pages/settings/UpdatePage.js +0 -215
- package/console/dist/ui/pages/welcome/WelcomePage.d.ts +0 -5
- package/console/dist/ui/pages/welcome/WelcomePage.js +0 -187
- package/console/dist/ui/utils/agent-metadata.d.ts +0 -71
- package/console/dist/ui/utils/agent-metadata.js +0 -284
- package/console/dist/ui/utils/approval-review.d.ts +0 -30
- package/console/dist/ui/utils/approval-review.js +0 -50
- package/console/dist/ui/utils/approval-warning-localization.d.ts +0 -34
- package/console/dist/ui/utils/approval-warning-localization.js +0 -148
- package/console/dist/ui/utils/attention-presentation.d.ts +0 -35
- package/console/dist/ui/utils/attention-presentation.js +0 -46
- package/console/dist/ui/utils/blocker-localization.d.ts +0 -23
- package/console/dist/ui/utils/blocker-localization.js +0 -36
- package/console/dist/ui/utils/control-center-helpers.d.ts +0 -79
- package/console/dist/ui/utils/control-center-helpers.js +0 -189
- package/console/dist/ui/utils/enum-labels.d.ts +0 -50
- package/console/dist/ui/utils/enum-labels.js +0 -171
- package/console/dist/ui/utils/format-date.d.ts +0 -11
- package/console/dist/ui/utils/format-date.js +0 -17
- package/console/dist/ui/utils/onboarding-state.d.ts +0 -25
- package/console/dist/ui/utils/onboarding-state.js +0 -77
- package/console/dist/ui/utils/reading-layout.d.ts +0 -20
- package/console/dist/ui/utils/reading-layout.js +0 -46
- package/console/dist/ui/utils/rule-binding-validators.d.ts +0 -13
- package/console/dist/ui/utils/rule-binding-validators.js +0 -188
- package/console/dist/ui/utils/runtime-mode.d.ts +0 -11
- package/console/dist/ui/utils/runtime-mode.js +0 -11
- package/console/dist/ui/utils/token-storage.d.ts +0 -22
- package/console/dist/ui/utils/token-storage.js +0 -47
- package/console/dist/ui/utils/validators.d.ts +0 -1178
- package/console/dist/ui/utils/validators.js +0 -3297
- package/release-manager/dist/bootstrap-entry.d.ts +0 -2
- package/release-manager/dist/bootstrap-entry.d.ts.map +0 -1
- package/release-manager/dist/bootstrap-entry.js.map +0 -1
- package/release-manager/dist/i18n.d.ts +0 -6
- package/release-manager/dist/i18n.d.ts.map +0 -1
- package/release-manager/dist/i18n.js.map +0 -1
- package/release-manager/dist/index.d.ts +0 -7
- package/release-manager/dist/index.d.ts.map +0 -1
- package/release-manager/dist/index.js +0 -656
- package/release-manager/dist/index.js.map +0 -1
- package/release-manager/dist/installer.d.ts +0 -629
- package/release-manager/dist/installer.d.ts.map +0 -1
- package/release-manager/dist/installer.js.map +0 -1
- package/release-manager/dist/installers/codex-host-installer.d.ts +0 -39
- package/release-manager/dist/installers/codex-host-installer.d.ts.map +0 -1
- package/release-manager/dist/installers/codex-host-installer.js.map +0 -1
- package/release-manager/dist/installers/index.d.ts +0 -51
- package/release-manager/dist/installers/index.d.ts.map +0 -1
- package/release-manager/dist/installers/index.js.map +0 -1
- package/release-manager/dist/installers/openclaw-host-installer.d.ts +0 -14
- package/release-manager/dist/installers/openclaw-host-installer.d.ts.map +0 -1
- package/release-manager/dist/installers/openclaw-host-installer.js.map +0 -1
- package/release-manager/dist/installers/workbuddy-host-installer.d.ts +0 -335
- package/release-manager/dist/installers/workbuddy-host-installer.d.ts.map +0 -1
- package/release-manager/dist/installers/workbuddy-host-installer.js.map +0 -1
- package/release-manager/dist/mvp-config.d.ts +0 -233
- package/release-manager/dist/mvp-config.d.ts.map +0 -1
- package/release-manager/dist/mvp-config.js.map +0 -1
- package/release-manager/dist/prompts.d.ts +0 -43
- package/release-manager/dist/prompts.d.ts.map +0 -1
- package/release-manager/dist/prompts.js +0 -268
- package/release-manager/dist/prompts.js.map +0 -1
- package/release-manager/dist/skill-language.d.ts +0 -32
- package/release-manager/dist/skill-language.d.ts.map +0 -1
- package/release-manager/dist/skill-language.js.map +0 -1
- package/release-manager/dist/uninstaller.d.ts +0 -68
- package/release-manager/dist/uninstaller.d.ts.map +0 -1
- package/release-manager/dist/uninstaller.js +0 -746
- package/release-manager/dist/uninstaller.js.map +0 -1
- package/release-manager/dist/update/apply-payload.d.ts +0 -143
- package/release-manager/dist/update/apply-payload.d.ts.map +0 -1
- package/release-manager/dist/update/apply-payload.js.map +0 -1
- package/release-manager/dist/update/atomic-file.d.ts +0 -35
- package/release-manager/dist/update/atomic-file.d.ts.map +0 -1
- package/release-manager/dist/update/atomic-file.js.map +0 -1
- package/release-manager/dist/update/bootstrap-executor.d.ts +0 -21
- package/release-manager/dist/update/bootstrap-executor.d.ts.map +0 -1
- package/release-manager/dist/update/bootstrap-executor.js.map +0 -1
- package/release-manager/dist/update/bootstrap-protocol.d.ts +0 -56
- package/release-manager/dist/update/bootstrap-protocol.d.ts.map +0 -1
- package/release-manager/dist/update/bootstrap-protocol.js.map +0 -1
- package/release-manager/dist/update/channel-metadata.d.ts +0 -28
- package/release-manager/dist/update/channel-metadata.d.ts.map +0 -1
- package/release-manager/dist/update/channel-metadata.js.map +0 -1
- package/release-manager/dist/update/channel-promotion.d.ts +0 -39
- package/release-manager/dist/update/channel-promotion.d.ts.map +0 -1
- package/release-manager/dist/update/channel-promotion.js +0 -55
- package/release-manager/dist/update/channel-promotion.js.map +0 -1
- package/release-manager/dist/update/console-surface.d.ts +0 -19
- package/release-manager/dist/update/console-surface.d.ts.map +0 -1
- package/release-manager/dist/update/console-surface.js.map +0 -1
- package/release-manager/dist/update/data-compatibility.d.ts +0 -35
- package/release-manager/dist/update/data-compatibility.d.ts.map +0 -1
- package/release-manager/dist/update/data-compatibility.js +0 -45
- package/release-manager/dist/update/data-compatibility.js.map +0 -1
- package/release-manager/dist/update/install-layout.d.ts +0 -105
- package/release-manager/dist/update/install-layout.d.ts.map +0 -1
- package/release-manager/dist/update/install-layout.js.map +0 -1
- package/release-manager/dist/update/product-identity.d.ts +0 -70
- package/release-manager/dist/update/product-identity.d.ts.map +0 -1
- package/release-manager/dist/update/product-identity.js.map +0 -1
- package/release-manager/dist/update/release-asset-manifest.d.ts +0 -31
- package/release-manager/dist/update/release-asset-manifest.d.ts.map +0 -1
- package/release-manager/dist/update/release-asset-manifest.js.map +0 -1
- package/release-manager/dist/update/release-identity.d.ts +0 -33
- package/release-manager/dist/update/release-identity.d.ts.map +0 -1
- package/release-manager/dist/update/release-identity.js.map +0 -1
- package/release-manager/dist/update/release-manager-authority.d.ts +0 -39
- package/release-manager/dist/update/release-manager-authority.d.ts.map +0 -1
- package/release-manager/dist/update/release-manager-authority.js.map +0 -1
- package/release-manager/dist/update/release-manager.d.ts +0 -156
- package/release-manager/dist/update/release-manager.d.ts.map +0 -1
- package/release-manager/dist/update/release-manager.js.map +0 -1
- package/release-manager/dist/update/release-metadata-publisher.d.ts +0 -199
- package/release-manager/dist/update/release-metadata-publisher.d.ts.map +0 -1
- package/release-manager/dist/update/release-metadata-publisher.js +0 -478
- package/release-manager/dist/update/release-metadata-publisher.js.map +0 -1
- package/release-manager/dist/update/release-metadata-source.d.ts +0 -85
- package/release-manager/dist/update/release-metadata-source.d.ts.map +0 -1
- package/release-manager/dist/update/release-metadata-source.js.map +0 -1
- package/release-manager/dist/update/release-metadata.d.ts +0 -60
- package/release-manager/dist/update/release-metadata.d.ts.map +0 -1
- package/release-manager/dist/update/release-metadata.js.map +0 -1
- package/release-manager/dist/update/release-policy.d.ts +0 -51
- package/release-manager/dist/update/release-policy.d.ts.map +0 -1
- package/release-manager/dist/update/release-policy.js.map +0 -1
- package/release-manager/dist/update/rollback-policy.d.ts +0 -56
- package/release-manager/dist/update/rollback-policy.d.ts.map +0 -1
- package/release-manager/dist/update/rollback-policy.js +0 -61
- package/release-manager/dist/update/rollback-policy.js.map +0 -1
- package/release-manager/dist/update/transaction-journal.d.ts +0 -212
- package/release-manager/dist/update/transaction-journal.d.ts.map +0 -1
- package/release-manager/dist/update/transaction-journal.js.map +0 -1
- package/release-manager/dist/update/trust-metadata.d.ts +0 -55
- package/release-manager/dist/update/trust-metadata.d.ts.map +0 -1
- package/release-manager/dist/update/trust-metadata.js.map +0 -1
- package/release-manager/dist/update/trust-root-provisioning.d.ts +0 -99
- package/release-manager/dist/update/trust-root-provisioning.d.ts.map +0 -1
- package/release-manager/dist/update/trust-root-provisioning.js.map +0 -1
- package/release-manager/dist/update/update-history.d.ts +0 -46
- package/release-manager/dist/update/update-history.d.ts.map +0 -1
- package/release-manager/dist/update/update-history.js +0 -123
- package/release-manager/dist/update/update-history.js.map +0 -1
- package/release-manager/dist/utils/config-file-io.d.ts +0 -34
- package/release-manager/dist/utils/config-file-io.d.ts.map +0 -1
- package/release-manager/dist/utils/config-file-io.js.map +0 -1
- package/release-manager/dist/utils/env.d.ts +0 -94
- package/release-manager/dist/utils/env.d.ts.map +0 -1
- package/release-manager/dist/utils/env.js.map +0 -1
- package/release-manager/dist/utils/logger.d.ts +0 -15
- package/release-manager/dist/utils/logger.d.ts.map +0 -1
- package/release-manager/dist/utils/logger.js.map +0 -1
- package/release-manager/dist/utils/workspace-divergence.d.ts +0 -36
- package/release-manager/dist/utils/workspace-divergence.d.ts.map +0 -1
- package/release-manager/dist/utils/workspace-divergence.js.map +0 -1
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import * as React from "react";
|
|
3
|
-
import * as SheetPrimitive from "@radix-ui/react-dialog";
|
|
4
|
-
import { cva } from "class-variance-authority";
|
|
5
|
-
import { X } from "lucide-react";
|
|
6
|
-
import i18n from "../../i18n/index.js";
|
|
7
|
-
import { cn } from "../../../lib/utils.js";
|
|
8
|
-
const Sheet = SheetPrimitive.Root;
|
|
9
|
-
const SheetTrigger = SheetPrimitive.Trigger;
|
|
10
|
-
const SheetClose = SheetPrimitive.Close;
|
|
11
|
-
const SheetPortal = SheetPrimitive.Portal;
|
|
12
|
-
const SheetOverlay = React.forwardRef(({ className, ...props }, ref) => (_jsx(SheetPrimitive.Overlay, { className: cn("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0", className), ...props, ref: ref })));
|
|
13
|
-
SheetOverlay.displayName = SheetPrimitive.Overlay.displayName;
|
|
14
|
-
const sheetVariants = cva("fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out", {
|
|
15
|
-
variants: {
|
|
16
|
-
side: {
|
|
17
|
-
top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
|
|
18
|
-
bottom: "inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
|
|
19
|
-
left: "inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",
|
|
20
|
-
right: "inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm",
|
|
21
|
-
},
|
|
22
|
-
},
|
|
23
|
-
defaultVariants: {
|
|
24
|
-
side: "right",
|
|
25
|
-
},
|
|
26
|
-
});
|
|
27
|
-
const SheetContent = React.forwardRef(({ side = "right", className, children, ...props }, ref) => (_jsxs(SheetPortal, { children: [_jsx(SheetOverlay, {}), _jsxs(SheetPrimitive.Content, { ref: ref, className: cn(sheetVariants({ side }), className), ...props, children: [_jsxs(SheetPrimitive.Close, { className: "absolute right-4 top-4 flex h-11 w-11 items-center justify-center rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary", children: [_jsx(X, { className: "h-4 w-4" }), _jsx("span", { className: "sr-only", children: i18n.t("common.close", { defaultValue: "关闭" }) })] }), children] })] })));
|
|
28
|
-
SheetContent.displayName = SheetPrimitive.Content.displayName;
|
|
29
|
-
const SheetHeader = ({ className, ...props }) => (_jsx("div", { className: cn("flex flex-col gap-2 text-center sm:text-left", className), ...props }));
|
|
30
|
-
SheetHeader.displayName = "SheetHeader";
|
|
31
|
-
const SheetFooter = ({ className, ...props }) => (_jsx("div", { className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className), ...props }));
|
|
32
|
-
SheetFooter.displayName = "SheetFooter";
|
|
33
|
-
const SheetTitle = React.forwardRef(({ className, ...props }, ref) => (_jsx(SheetPrimitive.Title, { ref: ref, className: cn("text-lg font-semibold text-foreground", className), ...props })));
|
|
34
|
-
SheetTitle.displayName = SheetPrimitive.Title.displayName;
|
|
35
|
-
const SheetDescription = React.forwardRef(({ className, ...props }, ref) => (_jsx(SheetPrimitive.Description, { ref: ref, className: cn("text-sm text-muted-foreground", className), ...props })));
|
|
36
|
-
SheetDescription.displayName = SheetPrimitive.Description.displayName;
|
|
37
|
-
export { Sheet, SheetPortal, SheetOverlay, SheetTrigger, SheetClose, SheetContent, SheetHeader, SheetFooter, SheetTitle, SheetDescription, };
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { type ElementType, type ReactNode } from "react";
|
|
2
|
-
export interface ShinyTextProps {
|
|
3
|
-
children: ReactNode;
|
|
4
|
-
className?: string;
|
|
5
|
-
disabled?: boolean;
|
|
6
|
-
/** Animation duration in seconds (default: 4) */
|
|
7
|
-
duration?: number;
|
|
8
|
-
/** Brightness of the shine effect (0.0-1.0, default: 0.6) */
|
|
9
|
-
brightness?: number;
|
|
10
|
-
/**
|
|
11
|
-
* Underlying element to render. Defaults to "span". Use "h1" (etc.) when
|
|
12
|
-
* wrapping a page title so heading semantics are preserved for assistive
|
|
13
|
-
* tech — the shimmer is a visual effect, not a structural change.
|
|
14
|
-
*/
|
|
15
|
-
as?: ElementType;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* ShinyText - A subtle shimmer animation for page titles
|
|
19
|
-
*
|
|
20
|
-
* Uses CSS gradient mask to create a gentle light sweep effect across text.
|
|
21
|
-
* Respects prefers-reduced-motion accessibility preference.
|
|
22
|
-
*
|
|
23
|
-
* @example
|
|
24
|
-
* <ShinyText as="h1" duration={4} brightness={0.6}>
|
|
25
|
-
* 现在,值得你判断的事
|
|
26
|
-
* </ShinyText>
|
|
27
|
-
*/
|
|
28
|
-
export declare function ShinyText({ children, className, disabled, duration, brightness, as: Component, }: ShinyTextProps): import("react").JSX.Element;
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useEffect, useState } from "react";
|
|
3
|
-
/**
|
|
4
|
-
* ShinyText - A subtle shimmer animation for page titles
|
|
5
|
-
*
|
|
6
|
-
* Uses CSS gradient mask to create a gentle light sweep effect across text.
|
|
7
|
-
* Respects prefers-reduced-motion accessibility preference.
|
|
8
|
-
*
|
|
9
|
-
* @example
|
|
10
|
-
* <ShinyText as="h1" duration={4} brightness={0.6}>
|
|
11
|
-
* 现在,值得你判断的事
|
|
12
|
-
* </ShinyText>
|
|
13
|
-
*/
|
|
14
|
-
export function ShinyText({ children, className = "", disabled = false, duration = 4, brightness = 0.6, as: Component = "span", }) {
|
|
15
|
-
const [prefersReducedMotion, setPrefersReducedMotion] = useState(false);
|
|
16
|
-
useEffect(() => {
|
|
17
|
-
// Check for reduced motion preference
|
|
18
|
-
const mediaQuery = window.matchMedia("(prefers-reduced-motion: reduce)");
|
|
19
|
-
setPrefersReducedMotion(mediaQuery.matches);
|
|
20
|
-
// Listen for changes
|
|
21
|
-
const handleChange = (e) => {
|
|
22
|
-
setPrefersReducedMotion(e.matches);
|
|
23
|
-
};
|
|
24
|
-
mediaQuery.addEventListener("change", handleChange);
|
|
25
|
-
return () => mediaQuery.removeEventListener("change", handleChange);
|
|
26
|
-
}, []);
|
|
27
|
-
// Disable animation if user prefers reduced motion or explicitly disabled
|
|
28
|
-
const isDisabled = disabled || prefersReducedMotion;
|
|
29
|
-
if (isDisabled) {
|
|
30
|
-
return _jsx(Component, { className: className, children: children });
|
|
31
|
-
}
|
|
32
|
-
const style = {
|
|
33
|
-
background: `linear-gradient(
|
|
34
|
-
110deg,
|
|
35
|
-
currentColor 45%,
|
|
36
|
-
rgba(255, 255, 255, ${brightness}) 50%,
|
|
37
|
-
currentColor 55%
|
|
38
|
-
)`,
|
|
39
|
-
backgroundSize: "200% 100%",
|
|
40
|
-
WebkitBackgroundClip: "text",
|
|
41
|
-
backgroundClip: "text",
|
|
42
|
-
WebkitTextFillColor: "transparent",
|
|
43
|
-
animation: `shimmer ${duration}s linear infinite`,
|
|
44
|
-
};
|
|
45
|
-
return (_jsx(Component, { className: className, style: style, children: children }));
|
|
46
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { Toaster as Sonner } from "sonner";
|
|
3
|
-
const Toaster = ({ ...props }) => {
|
|
4
|
-
return (_jsx(Sonner, { className: "toaster group", toastOptions: {
|
|
5
|
-
classNames: {
|
|
6
|
-
toast: "group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",
|
|
7
|
-
description: "group-[.toast]:text-muted-foreground",
|
|
8
|
-
actionButton: "group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",
|
|
9
|
-
cancelButton: "group-[.toast]:bg-muted group-[.toast]:text-muted-foreground",
|
|
10
|
-
},
|
|
11
|
-
}, ...props }));
|
|
12
|
-
};
|
|
13
|
-
export { Toaster };
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import * as TooltipPrimitive from "@radix-ui/react-tooltip";
|
|
3
|
-
declare const TooltipProvider: React.FC<TooltipPrimitive.TooltipProviderProps>;
|
|
4
|
-
declare const Tooltip: React.FC<TooltipPrimitive.TooltipProps>;
|
|
5
|
-
declare const TooltipTrigger: React.ForwardRefExoticComponent<TooltipPrimitive.TooltipTriggerProps & React.RefAttributes<HTMLButtonElement>>;
|
|
6
|
-
declare const TooltipContent: React.ForwardRefExoticComponent<Omit<TooltipPrimitive.TooltipContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
7
|
-
export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import * as React from "react";
|
|
3
|
-
import * as TooltipPrimitive from "@radix-ui/react-tooltip";
|
|
4
|
-
import { cn } from "../../../lib/utils.js";
|
|
5
|
-
const TooltipProvider = TooltipPrimitive.Provider;
|
|
6
|
-
const Tooltip = TooltipPrimitive.Root;
|
|
7
|
-
const TooltipTrigger = TooltipPrimitive.Trigger;
|
|
8
|
-
const TooltipContent = React.forwardRef(({ className, sideOffset = 4, ...props }, ref) => (_jsx(TooltipPrimitive.Portal, { children: _jsx(TooltipPrimitive.Content, { ref: ref, sideOffset: sideOffset, className: cn("z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", className), ...props }) })));
|
|
9
|
-
TooltipContent.displayName = TooltipPrimitive.Content.displayName;
|
|
10
|
-
export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export interface DailyThought {
|
|
2
|
-
id: string;
|
|
3
|
-
zh: {
|
|
4
|
-
quote: string;
|
|
5
|
-
author: string;
|
|
6
|
-
note: string;
|
|
7
|
-
};
|
|
8
|
-
en: {
|
|
9
|
-
quote: string;
|
|
10
|
-
author: string;
|
|
11
|
-
note: string;
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
export declare const DAILY_THOUGHTS: DailyThought[];
|
|
15
|
-
export declare function getDailyThoughtIndex(thoughts: readonly DailyThought[], dateString: string): number;
|
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
export const DAILY_THOUGHTS = [
|
|
2
|
-
{
|
|
3
|
-
id: "dt-001",
|
|
4
|
-
zh: { quote: "慢即是快", author: "老子《道德经》", note: "急于求成往往欲速不达,慢下来才能看清全局。" },
|
|
5
|
-
en: { quote: "Slow is fast", author: "Lao Tzu, Tao Te Ching", note: "Rushing often backfires; slowing down reveals the whole board." },
|
|
6
|
-
},
|
|
7
|
-
{
|
|
8
|
-
id: "dt-002",
|
|
9
|
-
zh: { quote: "三思而后行", author: "《论语·公冶长》", note: "重大判断前,先让念头经过三次审视。" },
|
|
10
|
-
en: { quote: "Think thrice before you act", author: "The Analects", note: "Before a major decision, let the thought pass through three layers of scrutiny." },
|
|
11
|
-
},
|
|
12
|
-
{
|
|
13
|
-
id: "dt-003",
|
|
14
|
-
zh: { quote: "知己知彼,百战不殆", author: "孙子《孙子兵法》", note: "了解现状与自身立场,比急着出招更重要。" },
|
|
15
|
-
en: { quote: "Know yourself and know your enemy", author: "Sun Tzu, The Art of War", note: "Understanding the situation and your own position matters more than rushing to move." },
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
id: "dt-004",
|
|
19
|
-
zh: { quote: "知行合一", author: "王阳明", note: "真正的知道会自然导向恰当的行动;若行动迟疑,往往是因为知道得还不够深。" },
|
|
20
|
-
en: { quote: "Knowledge and action are one", author: "Wang Yangming", note: "True knowing leads naturally to fitting action; hesitation often means the knowing is still shallow." },
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
id: "dt-005",
|
|
24
|
-
zh: { quote: "结硬寨,打呆仗", author: "曾国藩", note: "把基本功做扎实,胜过追求花招与速胜。" },
|
|
25
|
-
en: { quote: "Build solid camps, fight dull battles", author: "Zeng Guofan", note: "Solid fundamentals beat flashy shortcuts and quick wins." },
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
id: "dt-006",
|
|
29
|
-
zh: { quote: "格物致知", author: "《礼记·大学》", note: "从事物的细节中推究原理,判断自然有根有据。" },
|
|
30
|
-
en: { quote: "Investigate things to extend knowledge", author: "The Book of Rites", note: "Sound judgment grows from careful examination of particulars." },
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
id: "dt-007",
|
|
34
|
-
zh: { quote: "不积跬步,无以至千里", author: "荀子《劝学》", note: "长期主义不是一次大动作,而是持续小步的累积。" },
|
|
35
|
-
en: { quote: "Without accumulating steps, one cannot reach a thousand li", author: "Xunzi", note: "Long-termism is not one grand move, but the steady accumulation of small steps." },
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
id: "dt-008",
|
|
39
|
-
zh: { quote: "志不强者智不达", author: "墨子", note: "方向不清时,才智只会四处耗散。" },
|
|
40
|
-
en: { quote: "Without strong purpose, intelligence cannot reach far", author: "Mozu", note: "When direction is unclear, talent scatters." },
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
id: "dt-009",
|
|
44
|
-
zh: { quote: "千里之堤,溃于蚁穴", author: "《韩非子》", note: "小偏差若不及时处理,终将演变成大风险。" },
|
|
45
|
-
en: { quote: "A thousand-mile dike collapses from an ant hole", author: "Han Feizi", note: "Small deviations, left unattended, grow into large risks." },
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
id: "dt-010",
|
|
49
|
-
zh: { quote: "吾生也有涯,而知也无涯", author: "庄子《养生主》", note: "承认无知,是谨慎决策的起点。" },
|
|
50
|
-
en: { quote: "Life is finite, but knowledge is infinite", author: "Zhuangzi", note: "Acknowledging ignorance is the beginning of prudent judgment." },
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
id: "dt-011",
|
|
54
|
-
zh: { quote: "我思故我在", author: "笛卡尔", note: "在行动之前,先确认自己真正理解了什么。" },
|
|
55
|
-
en: { quote: "I think, therefore I am", author: "René Descartes", note: "Before acting, verify what you actually understand." },
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
id: "dt-012",
|
|
59
|
-
zh: { quote: "认识你自己", author: "苏格拉底", note: "最难的判断,是看清自己在这场决策中的偏见。" },
|
|
60
|
-
en: { quote: "Know thyself", author: "Socrates", note: "The hardest judgment is seeing your own bias in the decision." },
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
id: "dt-013",
|
|
64
|
-
zh: { quote: "优秀不是一种行为,而是一种习惯", author: "亚里士多德", note: "治理的质量,来自反复做对的系统,而非一次灵光乍现。" },
|
|
65
|
-
en: { quote: "Excellence is not an act, but a habit", author: "Aristotle", note: "Good governance comes from systems that repeatedly do the right thing, not from one bright insight." },
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
id: "dt-014",
|
|
69
|
-
zh: { quote: "反过来想,总是反过来想", author: "查理·芒格", note: "先问自己什么会导致失败,再决定如何前进。" },
|
|
70
|
-
en: { quote: "Invert, always invert", author: "Charlie Munger", note: "Ask what would cause failure before deciding how to proceed." },
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
id: "dt-015",
|
|
74
|
-
zh: { quote: "风会熄灭蜡烛,却能使火堆烧得更旺", author: "纳西姆·塔勒布", note: "随机波动会摧毁脆弱的东西,也会让抗脆弱的系统变得更强。" },
|
|
75
|
-
en: { quote: "Wind extinguishes a candle and energizes a fire", author: "Nassim Taleb", note: "Randomness destroys the fragile and strengthens the antifragile." },
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
id: "dt-016",
|
|
79
|
-
zh: { quote: "思考,快与慢", author: "丹尼尔·卡尼曼", note: "重要决策别让直觉独占舞台,给慢思考留出时间。" },
|
|
80
|
-
en: { quote: "Thinking, fast and slow", author: "Daniel Kahneman", note: "For important decisions, do not let intuition take the whole stage; give slow thinking its time." },
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
id: "dt-017",
|
|
84
|
-
zh: { quote: "真正的学习来自行动后的反思", author: "彼得·圣吉", note: "没有复盘的经验只是经历,不会自动变成能力。" },
|
|
85
|
-
en: { quote: "Real learning comes from reflection after action", author: "Peter Senge", note: "Experience without review remains mere occurrence; it does not automatically become capability." },
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
id: "dt-018",
|
|
89
|
-
zh: { quote: "痛苦 + 反思 = 进步", author: "雷·达里奥", note: "把每一次偏差都当作反馈,而不是失败。" },
|
|
90
|
-
en: { quote: "Pain + reflection = progress", author: "Ray Dalio", note: "Treat every deviation as feedback, not failure." },
|
|
91
|
-
},
|
|
92
|
-
{
|
|
93
|
-
id: "dt-019",
|
|
94
|
-
zh: { quote: "如果我有1小时来解决一个问题,我会花55分钟思考问题本身", author: "爱因斯坦", note: "定义问题所花的时间,会直接决定解决方案的质量。" },
|
|
95
|
-
en: { quote: "If I had an hour to solve a problem, I would spend 55 minutes defining it", author: "Albert Einstein", note: "The time spent defining a problem directly determines the quality of the solution." },
|
|
96
|
-
},
|
|
97
|
-
{
|
|
98
|
-
id: "dt-020",
|
|
99
|
-
zh: { quote: "风险来自于你不知道自己在做什么", author: "沃伦·巴菲特", note: "承认自己不懂,比假装懂更安全。" },
|
|
100
|
-
en: { quote: "Risk comes from not knowing what you are doing", author: "Warren Buffett", note: "Admitting you do not understand is safer than pretending you do." },
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
id: "dt-021",
|
|
104
|
-
zh: { quote: "Stay hungry, stay foolish", author: "史蒂夫·乔布斯", note: "保持好奇与谦逊,才能看见旧假设之外的新可能。" },
|
|
105
|
-
en: { quote: "Stay hungry, stay foolish", author: "Steve Jobs", note: "Curiosity and humility let you see possibilities beyond old assumptions." },
|
|
106
|
-
},
|
|
107
|
-
{
|
|
108
|
-
id: "dt-022",
|
|
109
|
-
zh: { quote: "命运引导愿意的人,也会拖走不情愿的人", author: "塞涅卡", note: "长期趋势不会等待任何人;主动顺应比被动抗拒更有力量。" },
|
|
110
|
-
en: { quote: "Fate leads the willing and drags the unwilling", author: "Seneca", note: "Long-term trends wait for no one; willing alignment beats reluctant resistance." },
|
|
111
|
-
},
|
|
112
|
-
{
|
|
113
|
-
id: "dt-023",
|
|
114
|
-
zh: { quote: "你的生活由你的思想塑造", author: "马可·奥勒留", note: "先调整看待问题的方式,再调整行动。" },
|
|
115
|
-
en: { quote: "Your life is shaped by your thoughts", author: "Marcus Aurelius", note: "Adjust how you see the problem before adjusting your action." },
|
|
116
|
-
},
|
|
117
|
-
{
|
|
118
|
-
id: "dt-024",
|
|
119
|
-
zh: { quote: "世界上最大的监狱,是人的思维", author: "叔本华", note: "当你只有一种解释框架时,每个问题看起来都似曾相识。" },
|
|
120
|
-
en: { quote: "The greatest prison is the mind", author: "Arthur Schopenhauer", note: "When you have only one frame, every problem looks familiar." },
|
|
121
|
-
},
|
|
122
|
-
{
|
|
123
|
-
id: "dt-025",
|
|
124
|
-
zh: { quote: "我的语言的界限意味着我的世界的界限", author: "维特根斯坦", note: "说不清的问题,往往是因为还没有真正理解它。" },
|
|
125
|
-
en: { quote: "The limits of my language mean the limits of my world", author: "Ludwig Wittgenstein", note: "What you cannot articulate clearly, you have not yet truly understood." },
|
|
126
|
-
},
|
|
127
|
-
{
|
|
128
|
-
id: "dt-026",
|
|
129
|
-
zh: { quote: "科学始于问题", author: "卡尔·波普尔", note: "好的判断从提出可证伪的问题开始,而不是寻找确认的证据。" },
|
|
130
|
-
en: { quote: "Science starts with problems", author: "Karl Popper", note: "Good judgment begins with falsifiable questions, not with confirming evidence." },
|
|
131
|
-
},
|
|
132
|
-
{
|
|
133
|
-
id: "dt-027",
|
|
134
|
-
zh: { quote: "人类是有限理性的动物", author: "赫伯特·西蒙", note: "不要追求最优解,追求在信息和时间内足够好的解。" },
|
|
135
|
-
en: { quote: "Humans are boundedly rational", author: "Herbert Simon", note: "Do not seek the optimal solution; seek one good enough within the information and time available." },
|
|
136
|
-
},
|
|
137
|
-
{
|
|
138
|
-
id: "dt-028",
|
|
139
|
-
zh: { quote: "市场保持非理性的时间,可能比你保持偿付能力的时间更长", author: "约翰·梅纳德·凯恩斯", note: "不要和系统僵持;先活下来,再等待正确的时机。" },
|
|
140
|
-
en: { quote: "The market can stay irrational longer than you can stay solvent", author: "John Maynard Keynes", note: "Do not fight the system head-on; survive first, then wait for the right moment." },
|
|
141
|
-
},
|
|
142
|
-
{
|
|
143
|
-
id: "dt-029",
|
|
144
|
-
zh: { quote: "有些事情在我们的控制之内,有些不在", author: "爱比克泰德", note: "把精力花在可控的事上,对不可控的事保持接纳。" },
|
|
145
|
-
en: { quote: "Some things are within our control, others are not", author: "Epictetus", note: "Spend energy on what you can control; accept what you cannot." },
|
|
146
|
-
},
|
|
147
|
-
{
|
|
148
|
-
id: "dt-030",
|
|
149
|
-
zh: { quote: "告诉我,我会忘记;教我,我会记住;让我参与,我会学会", author: "本杰明·富兰克林", note: "真正内化的原则,来自亲身参与和反复实践。" },
|
|
150
|
-
en: { quote: "Tell me and I forget; teach me and I remember; involve me and I learn", author: "Benjamin Franklin", note: "Principles are truly internalized through participation and repeated practice." },
|
|
151
|
-
},
|
|
152
|
-
];
|
|
153
|
-
export function getDailyThoughtIndex(thoughts, dateString) {
|
|
154
|
-
if (thoughts.length === 0) {
|
|
155
|
-
return -1;
|
|
156
|
-
}
|
|
157
|
-
let hash = 2166136261;
|
|
158
|
-
for (let i = 0; i < dateString.length; i++) {
|
|
159
|
-
hash ^= dateString.charCodeAt(i);
|
|
160
|
-
// FNV-1a 32-bit prime multiplication
|
|
161
|
-
hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);
|
|
162
|
-
}
|
|
163
|
-
return Math.abs(hash) % thoughts.length;
|
|
164
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export type NotificationSoundType = 'pending' | 'degraded';
|
|
2
|
-
export declare const SOUND_CONFIG: Record<NotificationSoundType, {
|
|
3
|
-
waveform: OscillatorType;
|
|
4
|
-
frequency: number;
|
|
5
|
-
durationMs: number;
|
|
6
|
-
volume: number;
|
|
7
|
-
}>;
|
|
8
|
-
export declare function useNotificationSound(): {
|
|
9
|
-
playSound: (type: NotificationSoundType) => void;
|
|
10
|
-
unlockAudio: () => void;
|
|
11
|
-
audioUnlocked: boolean;
|
|
12
|
-
};
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
2
|
-
export const SOUND_CONFIG = {
|
|
3
|
-
pending: { waveform: 'sine', frequency: 880, durationMs: 150, volume: 0.3 },
|
|
4
|
-
degraded: { waveform: 'triangle', frequency: 440, durationMs: 200, volume: 0.3 },
|
|
5
|
-
};
|
|
6
|
-
export function useNotificationSound() {
|
|
7
|
-
const [audioUnlocked, setAudioUnlocked] = useState(false);
|
|
8
|
-
const audioContextRef = useRef(null);
|
|
9
|
-
const mountedRef = useRef(true);
|
|
10
|
-
useEffect(() => () => {
|
|
11
|
-
mountedRef.current = false;
|
|
12
|
-
const ctx = audioContextRef.current;
|
|
13
|
-
audioContextRef.current = null;
|
|
14
|
-
if (ctx && ctx.state !== 'closed') {
|
|
15
|
-
void ctx.close().catch((error) => {
|
|
16
|
-
console.warn('Failed to close notification audio context:', error);
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
}, []);
|
|
20
|
-
const unlockAudio = useCallback(() => {
|
|
21
|
-
if (audioUnlocked)
|
|
22
|
-
return;
|
|
23
|
-
if (typeof window === 'undefined' || !window.AudioContext)
|
|
24
|
-
return;
|
|
25
|
-
try {
|
|
26
|
-
const ctx = audioContextRef.current ?? new AudioContext();
|
|
27
|
-
audioContextRef.current = ctx;
|
|
28
|
-
if (ctx.state === 'suspended') {
|
|
29
|
-
ctx.resume().then(() => {
|
|
30
|
-
if (mountedRef.current)
|
|
31
|
-
setAudioUnlocked(true);
|
|
32
|
-
}).catch(() => {
|
|
33
|
-
// Autoplay policy blocked; remain locked.
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
if (mountedRef.current)
|
|
38
|
-
setAudioUnlocked(true);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
catch (err) {
|
|
42
|
-
console.warn('Failed to unlock audio:', err);
|
|
43
|
-
}
|
|
44
|
-
}, [audioUnlocked]);
|
|
45
|
-
const playSound = useCallback((type) => {
|
|
46
|
-
if (!audioUnlocked)
|
|
47
|
-
return;
|
|
48
|
-
if (typeof window === 'undefined' || !window.AudioContext)
|
|
49
|
-
return;
|
|
50
|
-
try {
|
|
51
|
-
const ctx = audioContextRef.current ?? new AudioContext();
|
|
52
|
-
audioContextRef.current = ctx;
|
|
53
|
-
if (ctx.state === 'suspended') {
|
|
54
|
-
ctx.resume().catch(() => { });
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
const config = SOUND_CONFIG[type];
|
|
58
|
-
const oscillator = ctx.createOscillator();
|
|
59
|
-
const gainNode = ctx.createGain();
|
|
60
|
-
oscillator.type = config.waveform;
|
|
61
|
-
oscillator.frequency.setValueAtTime(config.frequency, ctx.currentTime);
|
|
62
|
-
gainNode.gain.setValueAtTime(config.volume, ctx.currentTime);
|
|
63
|
-
gainNode.gain.exponentialRampToValueAtTime(0.001, ctx.currentTime + config.durationMs / 1000);
|
|
64
|
-
oscillator.connect(gainNode);
|
|
65
|
-
gainNode.connect(ctx.destination);
|
|
66
|
-
oscillator.start(ctx.currentTime);
|
|
67
|
-
oscillator.stop(ctx.currentTime + config.durationMs / 1000);
|
|
68
|
-
}
|
|
69
|
-
catch (err) {
|
|
70
|
-
console.warn('Failed to play notification sound:', err);
|
|
71
|
-
}
|
|
72
|
-
}, [audioUnlocked]);
|
|
73
|
-
return { playSound, unlockAudio, audioUnlocked };
|
|
74
|
-
}
|