auricui-skill 0.0.0-stage → 0.1.2
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/LICENSE +21 -0
- package/README.md +29 -2
- package/bin/install.mjs +66 -0
- package/package.json +29 -4
- package/skill/SKILL.md +64 -0
- package/skill/agents/openai.yaml +4 -0
- package/skill/assets/examples/ApprovalCard.tsx +8 -0
- package/skill/assets/examples/BasicApp.tsx +38 -0
- package/skill/assets/examples/BriefingCard.tsx +8 -0
- package/skill/assets/examples/ChatControls.tsx +49 -0
- package/skill/assets/examples/ChatPanel.tsx +73 -0
- package/skill/assets/examples/Checkbox.tsx +13 -0
- package/skill/assets/examples/Combobox.tsx +14 -0
- package/skill/assets/examples/Drawer.tsx +10 -0
- package/skill/assets/examples/MemoryCard.tsx +9 -0
- package/skill/assets/examples/MessageList.tsx +8 -0
- package/skill/assets/examples/Theme.tsx +14 -0
- package/skill/assets/examples/ToolCall.tsx +8 -0
- package/skill/assets/examples/Tree.tsx +15 -0
- package/skill/assets/examples/examples.css +11 -0
- package/skill/assets/library/auricui-0.1.0-preview.1.tgz +0 -0
- package/skill/assets/library/auricui-0.1.0-preview.3.tgz +0 -0
- package/skill/assets/library/auricui-0.1.0-preview.4.tgz +0 -0
- package/skill/assets/upstream/LICENSE +21 -0
- package/skill/assets/upstream/apps/desktop/chat/src/App.tsx +1099 -0
- package/skill/assets/upstream/apps/desktop/chat/src/app-bridge.ts +154 -0
- package/skill/assets/upstream/apps/desktop/chat/src/chat.css +1812 -0
- package/skill/assets/upstream/apps/desktop/chat/src/components/AddSkill.tsx +223 -0
- package/skill/assets/upstream/apps/desktop/chat/src/components/AgentActivityRow.tsx +716 -0
- package/skill/assets/upstream/apps/desktop/chat/src/components/AgentIcons.tsx +46 -0
- package/skill/assets/upstream/apps/desktop/chat/src/components/AttachmentCard.tsx +34 -0
- package/skill/assets/upstream/apps/desktop/chat/src/components/AttachmentPreview.tsx +331 -0
- package/skill/assets/upstream/apps/desktop/chat/src/components/BalanceNotice.tsx +22 -0
- package/skill/assets/upstream/apps/desktop/chat/src/components/BrandLogo.tsx +35 -0
- package/skill/assets/upstream/apps/desktop/chat/src/components/ComposerCard.tsx +182 -0
- package/skill/assets/upstream/apps/desktop/chat/src/components/ConversationSessionBar.tsx +292 -0
- package/skill/assets/upstream/apps/desktop/chat/src/components/CopyDiagnostics.tsx +24 -0
- package/skill/assets/upstream/apps/desktop/chat/src/components/Divider.tsx +47 -0
- package/skill/assets/upstream/apps/desktop/chat/src/components/FileChangesList.tsx +119 -0
- package/skill/assets/upstream/apps/desktop/chat/src/components/Markdown.tsx +198 -0
- package/skill/assets/upstream/apps/desktop/chat/src/components/ModelPopover.tsx +280 -0
- package/skill/assets/upstream/apps/desktop/chat/src/components/NoticeCard.tsx +87 -0
- package/skill/assets/upstream/apps/desktop/chat/src/components/Popover.tsx +195 -0
- package/skill/assets/upstream/apps/desktop/chat/src/components/PreviewFrame.tsx +129 -0
- package/skill/assets/upstream/apps/desktop/chat/src/components/ProjectConversation.tsx +852 -0
- package/skill/assets/upstream/apps/desktop/chat/src/components/ProjectStarters.tsx +118 -0
- package/skill/assets/upstream/apps/desktop/chat/src/components/Tooltip.tsx +191 -0
- package/skill/assets/upstream/apps/desktop/chat/src/components/TurnLog.tsx +583 -0
- package/skill/assets/upstream/apps/desktop/chat/src/components/TurnQuestionCard.tsx +133 -0
- package/skill/assets/upstream/apps/desktop/chat/src/components/dock-pane-bar.ts +14 -0
- package/skill/assets/upstream/apps/desktop/chat/src/components/project-version.ts +37 -0
- package/skill/assets/upstream/apps/desktop/chat/src/components/prompt-editor/MentionMenuPlugin.tsx +372 -0
- package/skill/assets/upstream/apps/desktop/chat/src/components/prompt-editor/PromptEditor.tsx +476 -0
- package/skill/assets/upstream/apps/desktop/chat/src/components/prompt-editor/PromptPill.tsx +399 -0
- package/skill/assets/upstream/apps/desktop/chat/src/components/prompt-editor/PromptReferenceNode.tsx +164 -0
- package/skill/assets/upstream/apps/desktop/chat/src/components/prompt-editor/index.ts +31 -0
- package/skill/assets/upstream/apps/desktop/chat/src/components/prompt-editor/mention-menu.ts +206 -0
- package/skill/assets/upstream/apps/desktop/chat/src/components/prompt-editor/prompt-text.ts +171 -0
- package/skill/assets/upstream/apps/desktop/chat/src/components/useStickToBottom.ts +320 -0
- package/skill/assets/upstream/apps/desktop/chat/src/components/useTicker.ts +55 -0
- package/skill/assets/upstream/apps/desktop/chat/src/i18n/index.ts +42 -0
- package/skill/assets/upstream/apps/desktop/chat/src/i18n/locales/en-US.ts +408 -0
- package/skill/assets/upstream/apps/desktop/chat/src/i18n/locales/es.ts +407 -0
- package/skill/assets/upstream/apps/desktop/chat/src/i18n/locales/ja.ts +407 -0
- package/skill/assets/upstream/apps/desktop/chat/src/i18n/locales/ko.ts +403 -0
- package/skill/assets/upstream/apps/desktop/chat/src/i18n/locales/words.ts +6 -0
- package/skill/assets/upstream/apps/desktop/chat/src/i18n/locales/zh-CN.ts +407 -0
- package/skill/assets/upstream/apps/desktop/chat/src/i18n/lookup.ts +12 -0
- package/skill/assets/upstream/apps/desktop/chat/src/lib/agent-activity-runs.ts +154 -0
- package/skill/assets/upstream/apps/desktop/chat/src/lib/agent-menu-rows.ts +41 -0
- package/skill/assets/upstream/apps/desktop/chat/src/lib/agent-refs.ts +105 -0
- package/skill/assets/upstream/apps/desktop/chat/src/lib/agent-transcript.ts +440 -0
- package/skill/assets/upstream/apps/desktop/chat/src/lib/asset-lists.ts +75 -0
- package/skill/assets/upstream/apps/desktop/chat/src/lib/attachment-place.ts +17 -0
- package/skill/assets/upstream/apps/desktop/chat/src/lib/balance.ts +16 -0
- package/skill/assets/upstream/apps/desktop/chat/src/lib/chat-layer.ts +10 -0
- package/skill/assets/upstream/apps/desktop/chat/src/lib/chat-menu.ts +18 -0
- package/skill/assets/upstream/apps/desktop/chat/src/lib/chat-store.ts +101 -0
- package/skill/assets/upstream/apps/desktop/chat/src/lib/composer-attachments.ts +189 -0
- package/skill/assets/upstream/apps/desktop/chat/src/lib/desktop-attachments.ts +178 -0
- package/skill/assets/upstream/apps/desktop/chat/src/lib/desktop-bridge.ts +291 -0
- package/skill/assets/upstream/apps/desktop/chat/src/lib/developer.ts +39 -0
- package/skill/assets/upstream/apps/desktop/chat/src/lib/esc-stop.ts +23 -0
- package/skill/assets/upstream/apps/desktop/chat/src/lib/file-changes.ts +32 -0
- package/skill/assets/upstream/apps/desktop/chat/src/lib/live-activity.ts +20 -0
- package/skill/assets/upstream/apps/desktop/chat/src/lib/local-agent-run.ts +1174 -0
- package/skill/assets/upstream/apps/desktop/chat/src/lib/local-sessions.ts +25 -0
- package/skill/assets/upstream/apps/desktop/chat/src/lib/model-calls.ts +87 -0
- package/skill/assets/upstream/apps/desktop/chat/src/lib/pretty-json.ts +12 -0
- package/skill/assets/upstream/apps/desktop/chat/src/lib/preview-top.ts +15 -0
- package/skill/assets/upstream/apps/desktop/chat/src/lib/project-resources.ts +66 -0
- package/skill/assets/upstream/apps/desktop/chat/src/lib/project-sessions.ts +66 -0
- package/skill/assets/upstream/apps/desktop/chat/src/lib/project-versions.ts +116 -0
- package/skill/assets/upstream/apps/desktop/chat/src/lib/ref-pictures.ts +119 -0
- package/skill/assets/upstream/apps/desktop/chat/src/lib/relative-time.ts +46 -0
- package/skill/assets/upstream/apps/desktop/chat/src/lib/skill-pages.ts +29 -0
- package/skill/assets/upstream/apps/desktop/chat/src/lib/step-file.ts +23 -0
- package/skill/assets/upstream/apps/desktop/chat/src/lib/structural-share.ts +52 -0
- package/skill/assets/upstream/apps/desktop/chat/src/lib/studio-film.ts +44 -0
- package/skill/assets/upstream/apps/desktop/chat/src/lib/studio-transfer.ts +40 -0
- package/skill/assets/upstream/apps/desktop/chat/src/lib/unprompted.ts +27 -0
- package/skill/assets/upstream/apps/desktop/chat/src/lib/upload-limits.ts +53 -0
- package/skill/assets/upstream/apps/desktop/chat/src/mount.tsx +19 -0
- package/skill/assets/upstream/apps/desktop/chat/src/state/local-agent-store.ts +296 -0
- package/skill/assets/upstream/apps/desktop/chat/src/studio-refs.ts +307 -0
- package/skill/assets/upstream/apps/desktop/package.json +51 -0
- package/skill/assets/upstream/apps/desktop/shell/bridge.ts +415 -0
- package/skill/assets/upstream/apps/desktop/shell/index.html +27 -0
- package/skill/assets/upstream/apps/desktop/shell/main.tsx +17 -0
- package/skill/assets/upstream/apps/desktop/shell/shell.css +17 -0
- package/skill/assets/upstream/apps/desktop/shell/vite.config.ts +65 -0
- package/skill/assets/upstream/apps/desktop/src/agent-definitions.mjs +31 -0
- package/skill/assets/upstream/packages/openfilm/LICENSE +21 -0
- package/skill/assets/upstream/packages/openfilm/package.json +88 -0
- package/skill/assets/upstream/packages/openfilm/src/film-doc.d.mts +125 -0
- package/skill/assets/upstream/packages/openfilm/src/film-doc.mjs +986 -0
- package/skill/assets/upstream/packages/openfilm/src/overrides.mjs +73 -0
- package/skill/assets/upstream/packages/openfilm/src/timeline.mjs +1280 -0
- package/skill/assets/upstream/packages/openfilm/studio/server/bridge.js +209 -0
- package/skill/assets/upstream/packages/openfilm/studio/server/film-subtitle.mjs +785 -0
- package/skill/assets/upstream/packages/openfilm/studio/server/ops.mjs +403 -0
- package/skill/assets/upstream/packages/openfilm/studio/server/stage.js +1649 -0
- package/skill/assets/upstream/packages/openfilm/studio/server/track-layout.mjs +43 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/App.tsx +156 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/api.ts +328 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/AudioMeters.tsx +188 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/BlockThumbs.tsx +84 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/BlockWaveform.tsx +201 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/BrandLoadingScreen.tsx +56 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/BrandLogo.tsx +25 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/Card.tsx +89 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/ColorPicker.tsx +204 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/ConfirmDialog.tsx +96 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/ContextMenu.tsx +422 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/DesktopDialog.tsx +271 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/ExamplesGallery.tsx +372 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/FilmFullscreenBar.tsx +147 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/FilmInspector.tsx +2310 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/FilmStageSelect.tsx +3296 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/FocusNav.tsx +28 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/FontFamilyPicker.tsx +293 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/FramePicker.tsx +69 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/InspectorPanel.tsx +25 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/Launcher.tsx +38 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/LayersPanel.tsx +277 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/LiveTime.tsx +101 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/MediaPool.tsx +1413 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/MediaPreview.tsx +188 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/MenuSelect.tsx +161 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/MgOutline.tsx +24 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/OperationHistory.tsx +184 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/PaneDivider.tsx +292 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/PasteAttrsDialog.tsx +69 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/PlaybackMenu.tsx +110 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/Popover.tsx +159 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/ProjectCover.tsx +60 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/ProjectHistoryControls.tsx +748 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/ProjectLayoutMenu.tsx +82 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/ProjectMenu.tsx +111 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/ProjectSources.tsx +587 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/ProjectView.tsx +3222 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/ProjectsLibrary.tsx +567 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/ProjectsView.tsx +1593 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/PropertiesSection.tsx +418 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/ResourceInspector.tsx +100 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/SelectionToolbar.tsx +157 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/SkillsLibrary.tsx +504 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/SourcePreview.tsx +464 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/SpendAsks.tsx +88 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/StageMaskOverlay.tsx +299 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/StageTransformFrame.tsx +246 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/SubtitleInspector.module.css +46 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/SubtitleInspector.tsx +884 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/SubtitleOverlay.tsx +148 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/SubtitleRow.tsx +419 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/TabStrip.tsx +188 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/Timeline.tsx +4911 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/TimelineMarkers.tsx +329 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/Toast.tsx +55 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/Tooltip.tsx +193 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/UpdateButton.tsx +104 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/ViewerBar.tsx +98 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/WhatsNew.tsx +147 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/dock-pane-bar.ts +16 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/export/ExportCenter.tsx +1502 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/export/ExportTray.tsx +284 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/film-stage-hit.ts +18 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/inspector-fields.tsx +863 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/inspector-look.tsx +1357 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/player-controls/controls-bar.tsx +397 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/player-controls/transport.tsx +294 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/replace-drop.ts +20 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/settings/AgentsSection.tsx +613 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/settings/CustomServices.tsx +104 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/settings/DiagnosticsGroup.tsx +202 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/settings/ModelsSection.tsx +179 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/settings/ProviderMark.tsx +24 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/settings/ProvidersSection.tsx +177 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/settings/SettingsModal.tsx +511 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/settings/SettingsSelect.tsx +84 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/settings/ShortcutsSection.tsx +291 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/settings/StorageGroup.tsx +119 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/settings/theme.ts +47 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/settings/ui.tsx +139 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/settings/use-settings.ts +10 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/stage-menu.tsx +283 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/timeline-head-extras.tsx +91 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/typing-target.ts +45 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/use-editor-tools.tsx +408 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/use-page-changes.ts +48 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/use-project-history.ts +113 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/components/useBlockDrag.ts +639 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/editor/Preview.tsx +426 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/editor/player.ts +558 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/editor/preview-frames.ts +36 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/editor/steps.ts +36 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/editor/undo.ts +156 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/editor/use-film.ts +212 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/editor/use-preview-renders.ts +89 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/globals.css +559 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/i18n/en.ts +1901 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/i18n/es.ts +1900 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/i18n/index.ts +130 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/i18n/ja.ts +1900 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/i18n/ko.ts +1896 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/i18n/words.ts +6 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/i18n/zh-CN.ts +1901 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/agent-row.ts +21 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/asset-timeline.ts +469 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/audio-levels.ts +60 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/batch-map.ts +28 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/browser.ts +10 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/canvas-fit.ts +116 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/chat-marks.ts +114 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/clip-attrs.ts +102 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/clip-fade.ts +70 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/clip-look.ts +520 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/clip-mask.ts +536 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/clip-replace.ts +60 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/component-props.ts +128 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/context-length.ts +12 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/desktop-build.ts +44 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/diagnostics.ts +68 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/double-press.ts +22 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/dropped-overrides.ts +139 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/export-jobs.ts +191 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/export-spec.ts +261 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/field-input.ts +155 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/film-clip-edits.ts +82 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/film-frame.ts +134 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/film-overrides.ts +107 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/film-shape.ts +172 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/film.ts +80 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/font-menu.ts +236 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/font-styles.ts +129 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/freeze-frame.ts +49 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/host.ts +438 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/inspect-scrub.ts +26 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/keymap-store.ts +74 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/keymap.ts +529 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/layers-tree.ts +133 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/look.ts +83 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/loudness.ts +58 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/markers.ts +152 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/media-bar.ts +58 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/media-folders.ts +45 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/media-place.ts +102 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/media-queue.ts +107 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/media-selection.ts +64 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/menu-position.ts +77 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/mg-transform.ts +111 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/mixed.ts +3 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/page-changes.ts +45 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/picture-files.ts +19 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/preview-prefs.ts +46 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/preview-renders.ts +71 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/project-delete.ts +20 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/project-folders.ts +144 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/project-history.ts +188 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/project-sources.ts +283 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/projects-page.ts +40 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/provider-marks.ts +35 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/providers.ts +163 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/resource-drag.ts +131 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/retry-image.ts +17 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/saved-insert.ts +40 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/saved.ts +125 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/selection-toolbar.ts +158 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/shortcut-hint.ts +21 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/similar-layers.ts +46 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/solo.ts +19 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/stage-clip.ts +60 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/stage-crop.ts +232 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/stage-gesture.ts +277 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/stage-layers.ts +71 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/stage-mask.ts +176 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/stage-measure.ts +53 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/stage-types.ts +155 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/studio-refs.ts +248 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/studio-version.ts +41 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/subtitle-cues.ts +238 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/subtitles.ts +263 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/tab-menu.ts +6 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/template-controls.ts +131 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/theme-changes.ts +31 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/thumb-cache.ts +63 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/thumb-cell.ts +8 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/thumb-frame.ts +76 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/thumb-pick.ts +42 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/timecode.ts +161 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/timeline-clipboard.ts +279 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/timeline-drag.ts +589 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/timeline-edit.ts +1138 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/timeline-keys.ts +63 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/timeline-layout.ts +1038 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/timeline-nav.ts +160 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/timeline-prefs.ts +73 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/timeline-split.ts +40 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/timeline-view.ts +105 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/title.ts +39 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/track-heights.ts +55 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/track-lock.ts +27 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/transitions.ts +459 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/type-metrics.ts +83 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/use-film-subtitles.ts +111 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/use-fonts.ts +181 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/use-loaded-thumbs.ts +91 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/use-subtitle-edits.ts +134 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/use-subtitle-font.ts +51 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/use-subtitle-style.ts +68 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/waveform-columns.ts +48 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/web-update.ts +41 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/whats-new.ts +401 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/lib/workspace-resources.ts +373 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/src/main.tsx +10 -0
- package/skill/assets/upstream/packages/openfilm/studio/ui/vite.config.ts +12 -0
- package/skill/assets/upstream/packages/shared/package.json +45 -0
- package/skill/assets/upstream/packages/shared/src/agent-activity.ts +263 -0
- package/skill/assets/upstream/packages/shared/src/contract.ts +285 -0
- package/skill/assets/upstream/packages/shared/src/index.ts +17 -0
- package/skill/assets/upstream/packages/shared/src/markdown-blocks.ts +252 -0
- package/skill/assets/upstream/packages/shared/src/modality.ts +4 -0
- package/skill/assets/upstream/packages/shared/src/prompt-reference.ts +113 -0
- package/skill/assets/upstream/packages/shared/src/title.ts +76 -0
- package/skill/assets/upstream/packages/shared/src/turn.ts +68 -0
- package/skill/assets/upstream/packages/shared/src/video.ts +26 -0
- package/skill/references/agent-components.md +33 -0
- package/skill/references/api-index.json +2693 -0
- package/skill/references/chat-components.md +65 -0
- package/skill/references/components.md +23 -0
- package/skill/references/core-components.md +44 -0
- package/skill/references/dependencies.md +22 -0
- package/skill/references/esm-package.md +48 -0
- package/skill/references/integration.md +43 -0
- package/skill/references/library-manifest.json +12 -0
- package/skill/references/source-manifest.json +325 -0
- package/skill/references/studio-components.md +24 -0
- package/skill/references/theme-motion.md +49 -0
- package/skill/references/troubleshooting.md +27 -0
- package/skill/references/verification.md +13 -0
- package/skill/scripts/check_dependencies.py +109 -0
- package/skill/scripts/inspect_api.py +60 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 OpenFilm contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,30 @@
|
|
|
1
|
-
#
|
|
1
|
+
# AuricUI Skill
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
为编码 Agent 安装 AuricUI 组件库指南,包括 API 查询、基础组件、Agent / Personal Agent、AI 聊天、Studio、主题动画、依赖检查和可编译示例。需要 Node.js >=20.19;附带的依赖/API 检查工具使用 Python 3 标准库。
|
|
4
|
+
|
|
5
|
+
此 npm 包是 Skill 安装器,React 组件库本身为 `auricui`。安装器只复制技能文件;在应用中安装 UI 库由 Agent 按 Skill 指南完成。
|
|
6
|
+
|
|
7
|
+
发布本包之后,可执行:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# 当前项目:.agents/skills/auricui
|
|
11
|
+
npx auricui-skill@latest
|
|
12
|
+
|
|
13
|
+
# Codex 全局:CODEX_HOME/skills,未设置时为 ~/.codex/skills
|
|
14
|
+
npx auricui-skill@latest --global
|
|
15
|
+
|
|
16
|
+
# 其他支持 SKILL.md 的 Agent:传入其实际技能目录
|
|
17
|
+
npx auricui-skill@latest --dir ./my-agent-skills
|
|
18
|
+
|
|
19
|
+
# 更新现有安装,自动备份旧版本
|
|
20
|
+
npx auricui-skill@latest --global --update
|
|
21
|
+
|
|
22
|
+
# 仅查看路径
|
|
23
|
+
npx auricui-skill@latest --dry-run
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
自定义目录参数表示技能的父目录,安装器会追加 `auricui`。已有目录默认不覆盖;`--update` 的备份位于 skills 父目录下的 `.auricui-skill-backups/`,终端会输出确切位置。符号链接目标不会被覆盖。
|
|
27
|
+
|
|
28
|
+
安装后刷新 Agent 技能列表或新开会话,使用 `$auricui`;不支持自动扫描技能的 Agent 可显式读取安装目录中的 SKILL.md。组件基线为 `0.1.0-preview.3`,实际安装版本不同则按其声明核对 API。
|
|
29
|
+
|
|
30
|
+
包含的源参考快照和本地组件包保留 MIT 与第三方许可;详见 Skill 内来源资料和组件包的 LICENSE / THIRD-PARTY-NOTICES.md。
|
package/bin/install.mjs
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import os from 'node:os';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
6
|
+
import { randomUUID } from 'node:crypto';
|
|
7
|
+
|
|
8
|
+
const help = `AuricUI Skill installer
|
|
9
|
+
|
|
10
|
+
Usage: npx auricui-skill [--global | --dir <skills-directory>] [--update] [--dry-run]
|
|
11
|
+
|
|
12
|
+
Default: .agents/skills/auricui in the current project
|
|
13
|
+
--global Install into CODEX_HOME/skills, or ~/.codex/skills
|
|
14
|
+
--dir Choose another agent's skills directory; appends /auricui
|
|
15
|
+
--update Back up and replace an existing auricui skill
|
|
16
|
+
--dry-run Show the destination without writing files
|
|
17
|
+
--help Show this help
|
|
18
|
+
|
|
19
|
+
The installer copies the Skill only. Your agent follows it to install/use the auricui React library.
|
|
20
|
+
`;
|
|
21
|
+
|
|
22
|
+
function main() {
|
|
23
|
+
let global = false, directory, update = false, dry = false;
|
|
24
|
+
const args = process.argv.slice(2);
|
|
25
|
+
if (args.includes('--help') || args.includes('-h')) { console.log(help); return; }
|
|
26
|
+
for (let i = 0; i < args.length; i++) {
|
|
27
|
+
const arg = args[i];
|
|
28
|
+
if (arg === '--global') global = true;
|
|
29
|
+
else if (arg === '--update') update = true;
|
|
30
|
+
else if (arg === '--dry-run') dry = true;
|
|
31
|
+
else if (arg === '--dir') {
|
|
32
|
+
directory = args[++i];
|
|
33
|
+
if (!directory || directory.startsWith('--')) throw new Error('--dir requires a skills directory');
|
|
34
|
+
} else throw new Error(`Unknown argument: ${arg}`);
|
|
35
|
+
}
|
|
36
|
+
if (global && directory) throw new Error('Choose either --global or --dir');
|
|
37
|
+
const base = path.resolve(directory ?? (global
|
|
38
|
+
? path.join(process.env.CODEX_HOME || path.join(os.homedir(), '.codex'), 'skills')
|
|
39
|
+
: path.join(process.cwd(), '.agents', 'skills')));
|
|
40
|
+
const target = path.join(base, 'auricui');
|
|
41
|
+
const source = fileURLToPath(new URL('../skill/', import.meta.url));
|
|
42
|
+
if (!fs.existsSync(path.join(source, 'SKILL.md'))) throw new Error('Skill payload missing. Build the distribution package before running it.');
|
|
43
|
+
const present = fs.existsSync(target) || (() => { try { return fs.lstatSync(target).isSymbolicLink(); } catch { return false; } })();
|
|
44
|
+
console.log(`Destination: ${target}`);
|
|
45
|
+
if (dry) { console.log('Dry run: no files written.' + (present ? ' Destination already exists; an actual update requires --update.' : '')); return; }
|
|
46
|
+
if (present && fs.lstatSync(target).isSymbolicLink()) throw new Error(`Refusing to replace a symlink: ${target}`);
|
|
47
|
+
if (present && !update) throw new Error(`Skill already exists: ${target}\nUse --update to back it up and replace it.`);
|
|
48
|
+
if (present && !fs.statSync(target).isDirectory()) throw new Error(`Destination is not a directory: ${target}`);
|
|
49
|
+
fs.mkdirSync(base, {recursive: true});
|
|
50
|
+
const staging = fs.mkdtempSync(path.join(base, '.auricui-stage-'));
|
|
51
|
+
let backup;
|
|
52
|
+
try {
|
|
53
|
+
fs.cpSync(source, staging, {recursive: true, dereference: false});
|
|
54
|
+
if (present) {
|
|
55
|
+
backup = path.join(path.dirname(base), '.auricui-skill-backups', `${Date.now()}-${randomUUID()}`);
|
|
56
|
+
fs.mkdirSync(path.dirname(backup), {recursive: true});
|
|
57
|
+
fs.renameSync(target, backup);
|
|
58
|
+
}
|
|
59
|
+
try { fs.renameSync(staging, target); }
|
|
60
|
+
catch (error) { if (backup) fs.renameSync(backup, target); throw error; }
|
|
61
|
+
} finally { fs.rmSync(staging, {recursive: true, force: true}); }
|
|
62
|
+
if (backup) console.log(`Previous skill backed up: ${backup}`);
|
|
63
|
+
console.log('Installed AuricUI Skill. Refresh your agent skill list or open a new session, then invoke $auricui.');
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
try { main(); } catch (error) { console.error(error.message); process.exitCode = 1; }
|
package/package.json
CHANGED
|
@@ -1,6 +1,31 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "auricui-skill",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.1.2",
|
|
4
|
+
"description": "Install the AuricUI component-library skill for coding agents",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"bin": {
|
|
8
|
+
"auricui-skill": "bin/install.mjs"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"bin",
|
|
12
|
+
"skill",
|
|
13
|
+
"README.md",
|
|
14
|
+
"LICENSE"
|
|
15
|
+
],
|
|
16
|
+
"engines": {
|
|
17
|
+
"node": ">=20.19"
|
|
18
|
+
},
|
|
19
|
+
"publishConfig": {
|
|
20
|
+
"access": "public",
|
|
21
|
+
"tag": "latest"
|
|
22
|
+
},
|
|
23
|
+
"keywords": [
|
|
24
|
+
"auricui",
|
|
25
|
+
"agent",
|
|
26
|
+
"skill",
|
|
27
|
+
"react",
|
|
28
|
+
"ui"
|
|
29
|
+
],
|
|
30
|
+
"author": "hehuan"
|
|
31
|
+
}
|
package/skill/SKILL.md
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: auricui
|
|
3
|
+
description: 使用 auricui React 组件库开发深色应用、设置面板和 AI 聊天界面;提供组件选择、准确的 props、主题与动画、服务适配和安装排错。用户提到 AuricUI、auricui/agent、auricui/chat、auricui/studio,或要求沿用这套视觉系统时使用。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# AuricUI
|
|
7
|
+
|
|
8
|
+
以已安装的 `auricui` 成品包开发应用。文档和可编译示例基于 `0.1.0-preview.3`;版本不同时,以安装包的 `package.json`、`exports` 和 `.d.ts` 为准。所有附带路径相对于本 Skill,跨项目使用不需要原开发仓库。
|
|
9
|
+
|
|
10
|
+
## 工作流程
|
|
11
|
+
|
|
12
|
+
1. 确认目标前端包目录、包管理器、框架与 AuricUI 版本。运行 `python3 <Skill目录>/scripts/check_dependencies.py --project <前端目录>`,默认检查成品包;新项目先建立 package.json。
|
|
13
|
+
2. 读取 [安装与接入](references/esm-package.md)。当前包要求 React 19 + React DOM 19 与 ESM;TypeScript、Tailwind 是消费方选项。保持用户指定的技术栈,不为通过检查擅自升级框架。
|
|
14
|
+
3. 按下表阅读相关资料,确认真实导出和 props 再写 JSX。优先组合已有组件,库未提供的功能在应用侧实现。
|
|
15
|
+
4. 接入 CSS、主题与 Portal,编写需要的状态和业务回调。
|
|
16
|
+
5. 完成目标项目类型检查、构建和所用组件的交互验证。静态检查不代替浏览器验收;没有运行环境时说明未验证项。
|
|
17
|
+
|
|
18
|
+
## 按任务阅读
|
|
19
|
+
|
|
20
|
+
| 任务 | 资料 |
|
|
21
|
+
| --- | --- |
|
|
22
|
+
| 安装、入口、React/SSR、全局样式 | [esm-package.md](references/esm-package.md) |
|
|
23
|
+
| 按钮、表单、设置、弹窗、颜色和数字字段 | [core-components.md](references/core-components.md) |
|
|
24
|
+
| Agent 消息、工具执行、记忆、简报与个人助手 | [agent-components.md](references/agent-components.md) |
|
|
25
|
+
| AI 聊天、富文本、模型菜单、附件、工具和问答 | [chat-components.md](references/chat-components.md) |
|
|
26
|
+
| 项目、时间轴、媒体、专业编辑器 | [studio-components.md](references/studio-components.md) |
|
|
27
|
+
| 配色、字体、层级、Portal、动画 | [theme-motion.md](references/theme-motion.md) |
|
|
28
|
+
| 依赖分类、检查结果 | [dependencies.md](references/dependencies.md) |
|
|
29
|
+
| 安装失败、缺失导出、样式和接口问题 | [troubleshooting.md](references/troubleshooting.md) |
|
|
30
|
+
| 视觉和交互验收 | [verification.md](references/verification.md) |
|
|
31
|
+
|
|
32
|
+
## 查 API,而不是猜 API
|
|
33
|
+
|
|
34
|
+
只读工具优先读取目标项目声明,未安装时从附带 tgz 读取:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
python3 <Skill目录>/scripts/inspect_api.py --entry core --symbol CardButton --project <前端目录>
|
|
38
|
+
python3 <Skill目录>/scripts/inspect_api.py --entry chat --symbol PromptEditor --project <前端目录>
|
|
39
|
+
python3 <Skill目录>/scripts/inspect_api.py --entry agent --symbol MemoryCard --project <前端目录>
|
|
40
|
+
python3 <Skill目录>/scripts/inspect_api.py --entry studio
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
无 `--symbol` 时列出入口导出。工具基于 [API 索引](references/api-index.json),区分运行时和 type-only 导出;版本不同则沿安装包入口的 `export *` 检查当前声明,不把基线索引当成新版契约。
|
|
44
|
+
|
|
45
|
+
附带可复制并经过编译检查的示例:
|
|
46
|
+
- 主题和新增组件:`assets/examples/Theme.tsx`、`Drawer.tsx`、`Tree.tsx`、`MessageList.tsx`、`ToolCall.tsx`、`MemoryCard.tsx` 等,均使用公开导出。
|
|
47
|
+
- [BasicApp.tsx](assets/examples/BasicApp.tsx):应用根、表单、设置、确认弹窗和 Toast。
|
|
48
|
+
- [ChatPanel.tsx](assets/examples/ChatPanel.tsx):消息、输入、发送/取消与流式响应,通过 `reply` 注入业务请求。
|
|
49
|
+
- [ChatControls.tsx](assets/examples/ChatControls.tsx):模型选择、单步/多步问答、工具活动和文件差异。
|
|
50
|
+
- [examples.css](assets/examples/examples.css):示例布局,不依赖 Tailwind 编译。
|
|
51
|
+
|
|
52
|
+
## 保持组件契约
|
|
53
|
+
|
|
54
|
+
- 全局导入一次 `auricui/styles.css`;首屏 HTML 设置 `data-theme="dark"`;应用根只挂载一个 `AuricUIProvider`;Chat 内容放在 `.auricui-chat` 内。
|
|
55
|
+
- `CardButton` 用 `weight="primary"`,`SettingsButton` 用 `variant="primary"`。`Button`、`Input`、`Modal`、`AttachmentCard` 不是该版本对应的公开组件名。
|
|
56
|
+
- `PromptEditor.defaultValue` 只在挂载时读取。程序修改用 ref 的 `setText` / `clear`,不要每次 render 回写内容。
|
|
57
|
+
- `ModelPopover` 必须在 `ModelOptionsProvider` 内;宿主负责模型目录、选择和持久化。
|
|
58
|
+
- CSS 包含字体、关键帧和组件样式。应用自己新增的任意 Tailwind 类不由预编译包保证,需要自己的 CSS 或 Tailwind 构建。
|
|
59
|
+
- 组件不会自动调用模型。完整 Chat/Studio 页面的服务接口按任务接入,不把演示数据当生产后端。
|
|
60
|
+
- 保留目标业务和信息架构,复用尺寸、色彩、焦点、禁用状态和动效;不宣称未验证的 100% 像素匹配。
|
|
61
|
+
|
|
62
|
+
## 源码适配
|
|
63
|
+
|
|
64
|
+
需要修改库实现时才读取 [集成规范](references/integration.md) 和 [来源索引](references/components.md)。`assets/library/` 是独立可安装包;`assets/upstream/` 是保留来源名称的原始参考快照,包含业务耦合,并非当前成品包的等价源码。以成品包声明和行为为基准,保留 MIT 与第三方署名。源码依赖检查显式使用 `--mode source`。
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { useState } from 'react';
|
|
2
|
+
import { ApprovalCard } from 'auricui/agent';
|
|
3
|
+
import 'auricui/styles.css';
|
|
4
|
+
|
|
5
|
+
export default function Example() {
|
|
6
|
+
const [status,setStatus]=useState<'pending'|'approved'|'rejected'>('pending');
|
|
7
|
+
return <div style={{display:'grid',gap:16,width:'100%'}}><ApprovalCard title="发送这封邮件?" description="收件人:design@example.com" status={status} onApprove={()=>setStatus('approved')} onReject={()=>setStatus('rejected')}><p>主题:本周设计评审</p></ApprovalCard>{status!=='pending'&&<button type="button" onClick={()=>setStatus('pending')}>重新演示</button>}</div>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { AuricUIProvider, Card, CardActions, CardButton, ConfirmDialog,
|
|
4
|
+
SettingsDialog, SettingsPage, SettingsGroup, SettingsItem, SettingsField,
|
|
5
|
+
SettingsSwitch, SettingsSelect, Toast, useToast } from 'auricui';
|
|
6
|
+
import 'auricui/styles.css';
|
|
7
|
+
import './examples.css';
|
|
8
|
+
|
|
9
|
+
export function BasicApp() {
|
|
10
|
+
const [name, setName] = useState('我的应用');
|
|
11
|
+
const [enabled, setEnabled] = useState(true);
|
|
12
|
+
const [language, setLanguage] = useState('zh');
|
|
13
|
+
const [settings, setSettings] = useState(false);
|
|
14
|
+
const [confirm, setConfirm] = useState(false);
|
|
15
|
+
const toast = useToast();
|
|
16
|
+
return <AuricUIProvider theme="dark">
|
|
17
|
+
<main className="auricui-example-page">
|
|
18
|
+
<Card title={name} body="应用设置示例">
|
|
19
|
+
<CardActions>
|
|
20
|
+
<CardButton onClick={() => setSettings(true)}>设置</CardButton>
|
|
21
|
+
<CardButton weight="primary" onClick={() => setConfirm(true)}>重置设置</CardButton>
|
|
22
|
+
</CardActions>
|
|
23
|
+
</Card>
|
|
24
|
+
<SettingsDialog open={settings} onClose={() => setSettings(false)} pages={[{
|
|
25
|
+
id: 'general', title: '通用', group: '应用', icon: null,
|
|
26
|
+
content: <SettingsPage><SettingsGroup title="偏好设置">
|
|
27
|
+
<SettingsItem title="名称" control={<SettingsField aria-label="应用名称" value={name} onChange={e => setName(e.target.value)} />} />
|
|
28
|
+
<SettingsItem title="通知" control={<SettingsSwitch label="启用通知" checked={enabled} onChange={setEnabled} />} />
|
|
29
|
+
<SettingsItem title="语言" control={<SettingsSelect label="语言" value={language} onChange={setLanguage} options={[{value:'zh',label:'中文'},{value:'en',label:'English'}]} />} />
|
|
30
|
+
</SettingsGroup></SettingsPage>,
|
|
31
|
+
}]} />
|
|
32
|
+
<ConfirmDialog open={confirm} title="重置设置?" description="恢复此示例的默认设置。"
|
|
33
|
+
confirmLabel="重置" cancelLabel="取消" danger onCancel={() => setConfirm(false)}
|
|
34
|
+
onConfirm={() => { setName('我的应用'); setEnabled(true); setLanguage('zh'); setConfirm(false); toast.show('已恢复默认设置'); }} />
|
|
35
|
+
<Toast toast={toast.current} />
|
|
36
|
+
</main>
|
|
37
|
+
</AuricUIProvider>;
|
|
38
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { useState } from 'react';
|
|
2
|
+
import { BriefingCard } from 'auricui/agent';
|
|
3
|
+
import 'auricui/styles.css';
|
|
4
|
+
|
|
5
|
+
export default function Example() {
|
|
6
|
+
const [selected,setSelected]=useState('');
|
|
7
|
+
return <div style={{width:'100%'}}><BriefingCard title="早上好,hehuan" subtitle="今天有一些值得关注的小事。" items={[{id:'1',title:'产品设计评审',detail:'准备好你的三个关键问题',meta:'10:30',onSelect:()=>setSelected('产品设计评审')},{id:'2',title:'阅读计划',detail:'本周已经完成 2 天',meta:'20 分钟'}]} footer="根据你提供的日程与目标整理"/>{selected&&<p role="status" style={{fontSize:12,marginTop:12}}>已选择:{selected}</p>}</div>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useEffect, useState, type ComponentProps } from 'react';
|
|
3
|
+
import { ModelOptionsProvider, ModelPopover, TurnQuestionCard, LocalAgentQuestionCard,
|
|
4
|
+
AgentActivityList, FileChangesList, DeveloperContext, type ModelSelection } from 'auricui/chat';
|
|
5
|
+
import './examples.css';
|
|
6
|
+
|
|
7
|
+
// Replace these example model IDs with the catalogue returned by your own backend.
|
|
8
|
+
const options: ComponentProps<typeof ModelOptionsProvider>['options'] = {
|
|
9
|
+
byok: [{id:'model', name:'模型', category:'model', options:[
|
|
10
|
+
{value:'model-a',name:'示例模型 A'}, {value:'model-b',name:'示例模型 B'},
|
|
11
|
+
]}],
|
|
12
|
+
};
|
|
13
|
+
const questions: ComponentProps<typeof LocalAgentQuestionCard>['questions'] = [{
|
|
14
|
+
id:'layout', header:'布局', question:'选择页面布局', multi:false, customId:'custom-layout',
|
|
15
|
+
options:[{label:'双栏',description:'导航与内容分栏'},{label:'单栏',description:'聚焦主要内容'}],
|
|
16
|
+
}];
|
|
17
|
+
const changes: ComponentProps<typeof FileChangesList>['changes'] = [{
|
|
18
|
+
path:'src/App.tsx', change:'changed', added:1, removed:1,
|
|
19
|
+
hunks:[{oldStart:1,oldLines:1,newStart:1,newLines:1,lines:['-const title = "旧标题";','+const title = "新标题";']}],
|
|
20
|
+
}];
|
|
21
|
+
|
|
22
|
+
/** UI-only examples; connect answers and model selection to your application. */
|
|
23
|
+
export function ChatControls() {
|
|
24
|
+
const [mounted, setMounted] = useState(false);
|
|
25
|
+
useEffect(() => setMounted(true), []);
|
|
26
|
+
// ModelPopover reads window during render in this baseline. A client directive alone does not disable SSR.
|
|
27
|
+
return mounted ? <ChatControlsClient /> : <section aria-busy="true">正在加载交互控件…</section>;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function ChatControlsClient() {
|
|
31
|
+
const [selection, setSelection] = useState<ModelSelection>({agent:'byok',prefs:{byok:{model:'model-a'}}});
|
|
32
|
+
const [answer, setAnswer] = useState('');
|
|
33
|
+
const [questionOpen, setQuestionOpen] = useState(true);
|
|
34
|
+
const [multiOpen, setMultiOpen] = useState(false);
|
|
35
|
+
return <section className="auricui-chat auricui-example-controls">
|
|
36
|
+
<ModelOptionsProvider agents={[{id:'byok',name:'自定义服务',status:'ready'}]}
|
|
37
|
+
options={options} value={selection} onChange={setSelection}>
|
|
38
|
+
<ModelPopover />
|
|
39
|
+
</ModelOptionsProvider>
|
|
40
|
+
{questionOpen && <TurnQuestionCard ask={{question:'是否继续?',options:[{label:'继续'},{label:'稍后'}]}}
|
|
41
|
+
onAnswer={text => {setAnswer(text);setQuestionOpen(false);setMultiOpen(true);}} onSkip={() => {setQuestionOpen(false);setMultiOpen(true);}} />}
|
|
42
|
+
{multiOpen && <LocalAgentQuestionCard questions={questions} onDone={answers => {
|
|
43
|
+
setAnswer(answers ? JSON.stringify(answers) : '已跳过'); setMultiOpen(false);
|
|
44
|
+
}} />}
|
|
45
|
+
<p role="status">{answer}</p>
|
|
46
|
+
<AgentActivityList items={[{id:'step-1',kind:'act',label:'act.read',detail:'src/App.tsx',pending:false}]} />
|
|
47
|
+
<DeveloperContext.Provider value={{logs:false,changes:true}}><FileChangesList changes={changes} /></DeveloperContext.Provider>
|
|
48
|
+
</section>;
|
|
49
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useEffect, useRef, useState } from 'react';
|
|
3
|
+
import { CardButton, Markdown, PromptEditor, type PromptEditorHandle,
|
|
4
|
+
type PromptEditorState } from 'auricui/chat';
|
|
5
|
+
import './examples.css';
|
|
6
|
+
|
|
7
|
+
export type Reply = (draft: PromptEditorState, signal: AbortSignal) => AsyncIterable<string>;
|
|
8
|
+
type Message = { id: string; role: 'user' | 'assistant'; text: string };
|
|
9
|
+
const emptyDraft: PromptEditorState = { text: '', references: [] };
|
|
10
|
+
|
|
11
|
+
/** Mount under one AuricUIProvider with auricui/styles.css imported at the app root.
|
|
12
|
+
* reply is supplied by your backend adapter; it yields text deltas, not cumulative text.
|
|
13
|
+
* This simple example displays user text as plain text. Add PromptWithPills when enabling references.
|
|
14
|
+
*/
|
|
15
|
+
export function ChatPanel({ reply }: { reply: Reply }) {
|
|
16
|
+
const editor = useRef<PromptEditorHandle>(null);
|
|
17
|
+
const latest = useRef<PromptEditorState>(emptyDraft);
|
|
18
|
+
const request = useRef<AbortController | null>(null);
|
|
19
|
+
const [draft, setDraft] = useState(emptyDraft);
|
|
20
|
+
const [messages, setMessages] = useState<Message[]>([]);
|
|
21
|
+
const [busy, setBusy] = useState(false);
|
|
22
|
+
const [error, setError] = useState('');
|
|
23
|
+
useEffect(() => () => { request.current?.abort(); request.current = null; }, []);
|
|
24
|
+
|
|
25
|
+
const send = async () => {
|
|
26
|
+
const input = latest.current;
|
|
27
|
+
if (request.current || !input.text.trim()) return;
|
|
28
|
+
const controller = new AbortController();
|
|
29
|
+
request.current = controller;
|
|
30
|
+
const answerId = crypto.randomUUID();
|
|
31
|
+
setError(''); setBusy(true);
|
|
32
|
+
setMessages(items => [...items,
|
|
33
|
+
{ id: crypto.randomUUID(), role: 'user', text: input.text },
|
|
34
|
+
{ id: answerId, role: 'assistant', text: '' },
|
|
35
|
+
]);
|
|
36
|
+
editor.current?.clear(); latest.current = emptyDraft; setDraft(emptyDraft);
|
|
37
|
+
try {
|
|
38
|
+
for await (const delta of reply(input, controller.signal)) {
|
|
39
|
+
if (controller.signal.aborted || request.current !== controller) break;
|
|
40
|
+
setMessages(items => items.map(item => item.id === answerId ? {...item, text:item.text + delta} : item));
|
|
41
|
+
}
|
|
42
|
+
} catch (cause) {
|
|
43
|
+
if (!controller.signal.aborted && request.current === controller) {
|
|
44
|
+
setError(cause instanceof Error ? cause.message : '回复失败,请重试');
|
|
45
|
+
}
|
|
46
|
+
} finally {
|
|
47
|
+
if (request.current === controller) { request.current = null; setBusy(false); }
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
const stop = () => {
|
|
51
|
+
request.current?.abort(); request.current = null; setBusy(false);
|
|
52
|
+
};
|
|
53
|
+
return <section className="auricui-chat auricui-example-chat" aria-label="AI 对话">
|
|
54
|
+
<div className="auricui-example-messages" aria-busy={busy}>
|
|
55
|
+
{messages.length === 0 && <p>输入内容开始对话。</p>}
|
|
56
|
+
{messages.map(item => <article key={item.id} className="auricui-example-message">
|
|
57
|
+
<small>{item.role === 'user' ? '你' : '助手'}</small>
|
|
58
|
+
{item.role === 'assistant' ? <Markdown text={item.text || (busy ? '正在回复…' : '回复已停止')} /> : <p>{item.text}</p>}
|
|
59
|
+
</article>)}
|
|
60
|
+
</div>
|
|
61
|
+
{error && <p className="auricui-example-error" role="alert">{error}</p>}
|
|
62
|
+
<div className="auricui-example-composer">
|
|
63
|
+
<PromptEditor ref={editor} defaultValue="" references={emptyDraft.references}
|
|
64
|
+
onChange={value => { latest.current = value; setDraft(value); }} onSubmit={() => { void send(); }}
|
|
65
|
+
placeholder="发送消息…" removeLabel="删除引用" ariaLabel="消息输入"
|
|
66
|
+
minHeight={72} maxHeight={240} contentClassName="auricui-example-editor" disabled={busy} />
|
|
67
|
+
<div className="auricui-example-actions">
|
|
68
|
+
<CardButton weight="primary" disabled={!busy && !draft.text.trim()}
|
|
69
|
+
onClick={busy ? stop : () => { void send(); }}>{busy ? '停止' : '发送'}</CardButton>
|
|
70
|
+
</div>
|
|
71
|
+
</div>
|
|
72
|
+
</section>;
|
|
73
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { useState } from 'react';
|
|
2
|
+
import { Checkbox } from 'auricui';
|
|
3
|
+
import 'auricui/styles.css';
|
|
4
|
+
|
|
5
|
+
export default function Example() {
|
|
6
|
+
const [selected, setSelected] = useState(['notes']);
|
|
7
|
+
const items = [{ id: 'notes', label: '笔记' }, { id: 'files', label: '文件' }, { id: 'tasks', label: '任务' }];
|
|
8
|
+
return <div style={{ display: 'grid', gap: 14 }}>
|
|
9
|
+
<Checkbox label="选择全部资料" checked={selected.length === items.length} indeterminate={selected.length > 0 && selected.length < items.length} onCheckedChange={checked => setSelected(checked ? items.map(item => item.id) : [])} />
|
|
10
|
+
{items.map(item => <Checkbox key={item.id} label={item.label} checked={selected.includes(item.id)} onCheckedChange={checked => setSelected(checked ? [...selected, item.id] : selected.filter(id => id !== item.id))} />)}
|
|
11
|
+
<Checkbox label="受保护的内容" description="禁用的选项不能被修改。" disabled />
|
|
12
|
+
</div>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { useState } from 'react';
|
|
2
|
+
import { Combobox } from 'auricui';
|
|
3
|
+
import 'auricui/styles.css';
|
|
4
|
+
|
|
5
|
+
export default function Example() {
|
|
6
|
+
const [value, setValue] = useState('shanghai');
|
|
7
|
+
return <div style={{ display: 'grid', gap: 14 }}><Combobox label="简报使用的时区" value={value} onValueChange={setValue} placeholder="搜索城市或时区…" options={[
|
|
8
|
+
{ value: 'shanghai', label: '上海 · Asia/Shanghai' },
|
|
9
|
+
{ value: 'tokyo', label: '东京 · Asia/Tokyo' },
|
|
10
|
+
{ value: 'london', label: '伦敦 · Europe/London' },
|
|
11
|
+
{ value: 'new-york', label: '纽约 · America/New_York' },
|
|
12
|
+
{ value: 'custom', label: '自定义时区(未开通)', disabled: true },
|
|
13
|
+
]} /><p role="status">已选择:{value}</p></div>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { useState } from 'react';
|
|
2
|
+
import { Checkbox, RadioGroup, Textarea, Drawer, CardButton } from 'auricui';
|
|
3
|
+
import 'auricui/styles.css';
|
|
4
|
+
|
|
5
|
+
export default function Example() {
|
|
6
|
+
const [open, setOpen] = useState(false);
|
|
7
|
+
const [side, setSide] = useState<'left' | 'right' | 'top' | 'bottom'>('right');
|
|
8
|
+
const [enabled, setEnabled] = useState(true);
|
|
9
|
+
return <div style={{ display: 'grid', gap: 18 }}><RadioGroup label="打开方向" value={side} onValueChange={value => setSide(value as typeof side)} orientation="horizontal" options={[{ value: 'left', label: '左侧' }, { value: 'right', label: '右侧' }, { value: 'top', label: '顶部' }, { value: 'bottom', label: '底部' }]} /><CardButton onClick={() => setOpen(true)}>打开抽屉</CardButton><Drawer open={open} onOpenChange={setOpen} title="助手偏好" description="设置这个工作空间中的个人偏好。" side={side} footer={<CardButton weight="primary" onClick={() => setOpen(false)}>完成</CardButton>}><div style={{ display: 'grid', gap: 24 }}><Checkbox label="接收每日简报" checked={enabled} onCheckedChange={setEnabled} /><Textarea label="补充说明" placeholder="例如:早上 9 点前保持安静" /></div></Drawer></div>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { useState } from 'react';
|
|
2
|
+
import { MemoryCard } from 'auricui/agent';
|
|
3
|
+
import 'auricui/styles.css';
|
|
4
|
+
|
|
5
|
+
export default function Example() {
|
|
6
|
+
const [content,setContent]=useState('我偏好简洁的回答,重要事项使用列表。');
|
|
7
|
+
const [forgotten,setForgotten]=useState(false);
|
|
8
|
+
return forgotten?<button type="button" onClick={()=>setForgotten(false)}>重新演示记忆</button>:<MemoryCard content={content} source="你的明确偏好" updatedAt="今天 09:00" onEdit={()=>setContent('我喜欢先看到结论,再阅读详细说明。')} onForget={()=>setForgotten(true)}/>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { useState } from 'react';
|
|
2
|
+
import { MessageBubble, MessageList } from 'auricui/agent';
|
|
3
|
+
import 'auricui/styles.css';
|
|
4
|
+
|
|
5
|
+
export default function Example() {
|
|
6
|
+
const [count,setCount]=useState(8);
|
|
7
|
+
return <div style={{width:'100%'}}><MessageList>{Array.from({length:count},(_,i)=><MessageBubble key={i} role={i%2?'assistant':'user'}>第 {i+1} 条消息。向上滚动查看历史时,新增消息会保留你的阅读位置。</MessageBubble>)}</MessageList><button type="button" onClick={()=>setCount(count+1)}>追加消息</button></div>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { useState } from 'react';
|
|
2
|
+
import { AuricUIProvider, CardButton } from 'auricui';
|
|
3
|
+
import 'auricui/styles.css';
|
|
4
|
+
|
|
5
|
+
export default function Example() {
|
|
6
|
+
const [theme, setTheme] = useState<'dark' | 'light'>('dark');
|
|
7
|
+
return <AuricUIProvider theme={theme}>
|
|
8
|
+
<main style={{ background: 'var(--bg)', color: 'var(--text)', minHeight: '100vh', padding: 24 }}>
|
|
9
|
+
<CardButton onClick={() => setTheme(theme === 'dark' ? 'light' : 'dark')}>
|
|
10
|
+
切换到{theme === 'dark' ? '浅色' : '深色'}
|
|
11
|
+
</CardButton>
|
|
12
|
+
</main>
|
|
13
|
+
</AuricUIProvider>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { useState } from 'react';
|
|
2
|
+
import { ToolCall } from 'auricui/agent';
|
|
3
|
+
import 'auricui/styles.css';
|
|
4
|
+
|
|
5
|
+
export default function Example() {
|
|
6
|
+
const [done,setDone]=useState(false);
|
|
7
|
+
return <div style={{display:'grid',gap:16,width:'100%'}}><ToolCall name="search_documents" status={done?'success':'running'} defaultOpen input={'{"query": "设计规范"}'} output={done?'找到 3 份相关文档。':'正在检索…'}/><button type="button" onClick={()=>setDone(!done)}>{done?'重新演示':'模拟完成'}</button></div>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { useState } from 'react';
|
|
2
|
+
import { Tree } from 'auricui';
|
|
3
|
+
import 'auricui/styles.css';
|
|
4
|
+
|
|
5
|
+
export default function Example() {
|
|
6
|
+
const [selected, setSelected] = useState('guide');
|
|
7
|
+
return <div style={{ display: 'grid', gap: 16 }}><Tree label="知识库目录" value={selected} onValueChange={setSelected} defaultExpanded={['workspace']} nodes={[
|
|
8
|
+
{ id: 'workspace', label: '工作空间', children: [
|
|
9
|
+
{ id: 'guide', label: '使用指南.md' },
|
|
10
|
+
{ id: 'projects', label: '项目', children: [{ id: 'auric', label: 'AuricUI.md' }, { id: 'ideas', label: 'Ideas.md' }] },
|
|
11
|
+
{ id: 'locked', label: '已锁定资料', disabled: true },
|
|
12
|
+
] },
|
|
13
|
+
{ id: 'personal', label: '个人笔记', children: [{ id: 'reading', label: '阅读清单.md' }] },
|
|
14
|
+
]} /><p role="status">已选择:{selected}</p></div>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
.auricui-example-page { max-width: 760px; margin: 40px auto; padding: 24px; color: var(--text); }
|
|
2
|
+
.auricui-example-chat { display: flex; flex-direction: column; width: min(100%, 760px); height: 600px; max-height: 90dvh; margin: auto; border: 1px solid var(--border); border-radius: 12px; overflow: hidden; }
|
|
3
|
+
.auricui-example-messages { flex: 1; min-height: 0; overflow-y: auto; padding: 20px; }
|
|
4
|
+
.auricui-example-message { margin-bottom: 20px; }
|
|
5
|
+
.auricui-example-message > small { display: block; color: var(--text-muted); margin-bottom: 6px; }
|
|
6
|
+
.auricui-example-message > p { white-space: pre-wrap; overflow-wrap: anywhere; }
|
|
7
|
+
.auricui-example-composer { margin: 12px; border: 1px solid var(--border); border-radius: 12px; }
|
|
8
|
+
.auricui-example-editor { padding: 12px; font-size: 14px; line-height: 1.6; outline: none; }
|
|
9
|
+
.auricui-example-actions { display: flex; justify-content: flex-end; padding: 8px; }
|
|
10
|
+
.auricui-example-error { color: var(--err); padding: 0 12px; }
|
|
11
|
+
.auricui-example-controls { display: grid; gap: 16px; padding: 24px; max-width: 760px; }
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 OpenFilm contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|