willa-workspace 0.0.3-alpha.2739b3e
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/.github/workflows/deploy.yml +45 -0
- package/.husky/pre-commit +1 -0
- package/AGENTS.md +128 -0
- package/CONTRIBUTING.md +138 -0
- package/README.md +27 -0
- package/docs/architecture.md +337 -0
- package/docs/component.md +333 -0
- package/docs/css.md +400 -0
- package/docs/style.md +146 -0
- package/example/index.html +12 -0
- package/example/package.json +28 -0
- package/example/src/App.tsx +613 -0
- package/example/src/UsageGuide.tsx +179 -0
- package/example/src/catalog/DocView.tsx +413 -0
- package/example/src/catalog/defineDoc.tsx +352 -0
- package/example/src/catalog/registry.ts +206 -0
- package/example/src/catalog/types.ts +38 -0
- package/example/src/docs/Alert.demo.tsx +233 -0
- package/example/src/docs/Anchor.demo.tsx +244 -0
- package/example/src/docs/AppShell.demo.tsx +192 -0
- package/example/src/docs/AttachmentList.demo.tsx +425 -0
- package/example/src/docs/AudioEmbed.demo.tsx +102 -0
- package/example/src/docs/AudioLink.demo.tsx +84 -0
- package/example/src/docs/Avatar.demo.tsx +342 -0
- package/example/src/docs/Badge.demo.tsx +196 -0
- package/example/src/docs/BorderBeam.demo.tsx +261 -0
- package/example/src/docs/Breadcrumb.demo.tsx +194 -0
- package/example/src/docs/Button.demo.tsx +304 -0
- package/example/src/docs/Calendar.demo.tsx +742 -0
- package/example/src/docs/Callout.demo.tsx +143 -0
- package/example/src/docs/Card.demo.tsx +254 -0
- package/example/src/docs/Carousel.demo.tsx +764 -0
- package/example/src/docs/ChatMessage.demo.tsx +356 -0
- package/example/src/docs/ChatThread.demo.tsx +107 -0
- package/example/src/docs/Checkbox.demo.tsx +112 -0
- package/example/src/docs/Citation.demo.tsx +297 -0
- package/example/src/docs/CodeBlock.demo.tsx +175 -0
- package/example/src/docs/CodeTabs.demo.tsx +285 -0
- package/example/src/docs/Collapse.demo.tsx +306 -0
- package/example/src/docs/ColorPicker.demo.tsx +491 -0
- package/example/src/docs/Comment.demo.tsx +333 -0
- package/example/src/docs/CommentInput.demo.tsx +894 -0
- package/example/src/docs/CommentList.demo.tsx +344 -0
- package/example/src/docs/Composer.demo.tsx +435 -0
- package/example/src/docs/Container.demo.tsx +125 -0
- package/example/src/docs/ContextPanel.demo.tsx +344 -0
- package/example/src/docs/ContextWindowMeter.demo.tsx +212 -0
- package/example/src/docs/ConversationList.demo.tsx +289 -0
- package/example/src/docs/CopyButton.demo.tsx +274 -0
- package/example/src/docs/DatePicker.demo.tsx +502 -0
- package/example/src/docs/DescriptionList.demo.tsx +265 -0
- package/example/src/docs/Dialog.demo.tsx +492 -0
- package/example/src/docs/DiffViewer.demo.tsx +307 -0
- package/example/src/docs/Download.demo.tsx +182 -0
- package/example/src/docs/Drawer.demo.tsx +300 -0
- package/example/src/docs/EmptyState.demo.tsx +406 -0
- package/example/src/docs/EnglishCards.demo.tsx +133 -0
- package/example/src/docs/FeedbackBar.demo.tsx +219 -0
- package/example/src/docs/FileCard.demo.tsx +234 -0
- package/example/src/docs/FilePreview.demo.tsx +333 -0
- package/example/src/docs/FileTree.demo.tsx +463 -0
- package/example/src/docs/FilterBar.demo.tsx +290 -0
- package/example/src/docs/FloatButton.demo.tsx +726 -0
- package/example/src/docs/Form.demo.tsx +278 -0
- package/example/src/docs/FormActions.demo.tsx +198 -0
- package/example/src/docs/FormField.demo.tsx +193 -0
- package/example/src/docs/FormGroup.demo.tsx +188 -0
- package/example/src/docs/FormMessage.demo.tsx +158 -0
- package/example/src/docs/GenerationCard.demo.tsx +393 -0
- package/example/src/docs/GitHubMention.demo.tsx +83 -0
- package/example/src/docs/GitHubRepo.demo.tsx +88 -0
- package/example/src/docs/Grid.demo.tsx +218 -0
- package/example/src/docs/Group.demo.tsx +315 -0
- package/example/src/docs/HumanApprovalCard.demo.tsx +275 -0
- package/example/src/docs/IconButton.demo.tsx +354 -0
- package/example/src/docs/Image.demo.tsx +124 -0
- package/example/src/docs/ImageGallery.demo.tsx +206 -0
- package/example/src/docs/Input.demo.tsx +238 -0
- package/example/src/docs/InputPanel.demo.tsx +255 -0
- package/example/src/docs/Kbd.demo.tsx +162 -0
- package/example/src/docs/Lightbox.demo.tsx +184 -0
- package/example/src/docs/List.demo.tsx +1009 -0
- package/example/src/docs/LogoWall.demo.tsx +178 -0
- package/example/src/docs/Masonry.demo.tsx +170 -0
- package/example/src/docs/MathExpression.demo.tsx +164 -0
- package/example/src/docs/Mdx.demo.tsx +343 -0
- package/example/src/docs/MentionInput.demo.tsx +543 -0
- package/example/src/docs/Menu.demo.tsx +430 -0
- package/example/src/docs/MessageActions.demo.tsx +355 -0
- package/example/src/docs/MessageList.demo.tsx +410 -0
- package/example/src/docs/ModelSelector.demo.tsx +297 -0
- package/example/src/docs/NumberInput.demo.tsx +816 -0
- package/example/src/docs/PageHeader.demo.tsx +198 -0
- package/example/src/docs/Pagination.demo.tsx +257 -0
- package/example/src/docs/Panel.demo.tsx +184 -0
- package/example/src/docs/Picker.demo.tsx +257 -0
- package/example/src/docs/Poem.demo.tsx +98 -0
- package/example/src/docs/Popover.demo.tsx +362 -0
- package/example/src/docs/ProfileCard.demo.tsx +161 -0
- package/example/src/docs/Progress.demo.tsx +243 -0
- package/example/src/docs/PromptInput.demo.tsx +497 -0
- package/example/src/docs/PromptTemplatePicker.demo.tsx +344 -0
- package/example/src/docs/QRCode.demo.tsx +364 -0
- package/example/src/docs/Radio.demo.tsx +120 -0
- package/example/src/docs/RangeInput.demo.tsx +405 -0
- package/example/src/docs/Rate.demo.tsx +396 -0
- package/example/src/docs/ReasoningSteps.demo.tsx +470 -0
- package/example/src/docs/Result.demo.tsx +121 -0
- package/example/src/docs/ScheduleCalendar.demo.tsx +459 -0
- package/example/src/docs/SearchInput.demo.tsx +217 -0
- package/example/src/docs/SectionHeader.demo.tsx +186 -0
- package/example/src/docs/Segmented.demo.tsx +598 -0
- package/example/src/docs/Select.demo.tsx +164 -0
- package/example/src/docs/SelectionBar.demo.tsx +315 -0
- package/example/src/docs/Separator.demo.tsx +179 -0
- package/example/src/docs/SidebarLayout.demo.tsx +183 -0
- package/example/src/docs/SiteFooter.demo.tsx +189 -0
- package/example/src/docs/SiteNav.demo.tsx +168 -0
- package/example/src/docs/Skeleton.demo.tsx +154 -0
- package/example/src/docs/SourceCard.demo.tsx +241 -0
- package/example/src/docs/Spinner.demo.tsx +166 -0
- package/example/src/docs/SplitPane.demo.tsx +544 -0
- package/example/src/docs/Stack.demo.tsx +135 -0
- package/example/src/docs/Statistic.demo.tsx +124 -0
- package/example/src/docs/Steps.demo.tsx +88 -0
- package/example/src/docs/SuggestionChips.demo.tsx +259 -0
- package/example/src/docs/Switch.demo.tsx +110 -0
- package/example/src/docs/Table.demo.tsx +2071 -0
- package/example/src/docs/Tabs.demo.tsx +285 -0
- package/example/src/docs/Tag.demo.tsx +264 -0
- package/example/src/docs/TagInput.demo.tsx +385 -0
- package/example/src/docs/TextArea.demo.tsx +185 -0
- package/example/src/docs/ThinkingIndicator.demo.tsx +248 -0
- package/example/src/docs/TimePicker.demo.tsx +464 -0
- package/example/src/docs/Timeline.demo.tsx +311 -0
- package/example/src/docs/Toast.demo.tsx +351 -0
- package/example/src/docs/ToolCallCard.demo.tsx +286 -0
- package/example/src/docs/Toolbar.demo.tsx +372 -0
- package/example/src/docs/Tooltip.demo.tsx +274 -0
- package/example/src/docs/Tour.demo.tsx +423 -0
- package/example/src/docs/TraceViewer.demo.tsx +416 -0
- package/example/src/docs/Tree.demo.tsx +507 -0
- package/example/src/docs/TreeSelect.demo.tsx +476 -0
- package/example/src/docs/Typography.demo.tsx +953 -0
- package/example/src/docs/Upload.demo.tsx +299 -0
- package/example/src/docs/VideoEmbed.demo.tsx +108 -0
- package/example/src/docs/VideoLink.demo.tsx +83 -0
- package/example/src/docs/Watermark.demo.tsx +352 -0
- package/example/src/docs/WebEmbed.demo.tsx +96 -0
- package/example/src/docs/XPostEmbed.demo.tsx +57 -0
- package/example/src/main.tsx +36 -0
- package/example/src/styles.css +919 -0
- package/example/src/vite-env.d.ts +1 -0
- package/example/vite.config.ts +11 -0
- package/package.json +40 -0
- package/packages/willa/README.md +47 -0
- package/packages/willa/auklet.config.mjs +23 -0
- package/packages/willa/package.json +83 -0
- package/packages/willa/src/Alert/index.tsx +8 -0
- package/packages/willa/src/Anchor/index.tsx +8 -0
- package/packages/willa/src/AppShell/index.tsx +2 -0
- package/packages/willa/src/AttachmentList/index.tsx +10 -0
- package/packages/willa/src/AudioEmbed/index.tsx +4 -0
- package/packages/willa/src/AudioLink/index.tsx +4 -0
- package/packages/willa/src/Avatar/index.tsx +6 -0
- package/packages/willa/src/Badge/index.tsx +7 -0
- package/packages/willa/src/BorderBeam/index.tsx +6 -0
- package/packages/willa/src/Breadcrumb/index.tsx +6 -0
- package/packages/willa/src/Button/index.tsx +6 -0
- package/packages/willa/src/Calendar/index.tsx +19 -0
- package/packages/willa/src/Callout/index.tsx +5 -0
- package/packages/willa/src/Card/index.tsx +6 -0
- package/packages/willa/src/Carousel/index.tsx +8 -0
- package/packages/willa/src/ChatMessage/index.tsx +6 -0
- package/packages/willa/src/ChatThread/index.tsx +4 -0
- package/packages/willa/src/Checkbox/index.tsx +5 -0
- package/packages/willa/src/Citation/index.tsx +6 -0
- package/packages/willa/src/CodeBlock/index.tsx +5 -0
- package/packages/willa/src/CodeTabs/index.tsx +6 -0
- package/packages/willa/src/Collapse/index.tsx +5 -0
- package/packages/willa/src/ColorPicker/index.tsx +12 -0
- package/packages/willa/src/Comment/index.tsx +6 -0
- package/packages/willa/src/CommentInput/index.tsx +8 -0
- package/packages/willa/src/CommentList/index.tsx +5 -0
- package/packages/willa/src/Composer/index.tsx +1 -0
- package/packages/willa/src/Container/index.tsx +6 -0
- package/packages/willa/src/ContextPanel/index.tsx +7 -0
- package/packages/willa/src/ContextWindowMeter/index.tsx +7 -0
- package/packages/willa/src/ConversationList/index.tsx +8 -0
- package/packages/willa/src/CopyButton/index.tsx +6 -0
- package/packages/willa/src/DatePicker/index.tsx +15 -0
- package/packages/willa/src/DescriptionList/index.tsx +8 -0
- package/packages/willa/src/Dialog/index.tsx +6 -0
- package/packages/willa/src/DiffViewer/index.tsx +5 -0
- package/packages/willa/src/Download/index.tsx +6 -0
- package/packages/willa/src/Drawer/index.tsx +6 -0
- package/packages/willa/src/EmptyState/index.tsx +7 -0
- package/packages/willa/src/EnglishCards/index.tsx +4 -0
- package/packages/willa/src/FeedbackBar/index.tsx +7 -0
- package/packages/willa/src/FileCard/index.tsx +7 -0
- package/packages/willa/src/FilePreview/index.tsx +6 -0
- package/packages/willa/src/FileTree/index.tsx +10 -0
- package/packages/willa/src/FilterBar/index.tsx +7 -0
- package/packages/willa/src/FloatButton/index.tsx +14 -0
- package/packages/willa/src/Form/index.tsx +5 -0
- package/packages/willa/src/FormActions/index.tsx +6 -0
- package/packages/willa/src/FormField/index.tsx +6 -0
- package/packages/willa/src/FormGroup/index.tsx +6 -0
- package/packages/willa/src/FormMessage/index.tsx +5 -0
- package/packages/willa/src/GenerationCard/index.tsx +6 -0
- package/packages/willa/src/GitHubMention/index.tsx +4 -0
- package/packages/willa/src/GitHubRepo/index.tsx +4 -0
- package/packages/willa/src/Grid/index.tsx +8 -0
- package/packages/willa/src/Group/index.tsx +9 -0
- package/packages/willa/src/HumanApprovalCard/index.tsx +8 -0
- package/packages/willa/src/IconButton/index.tsx +7 -0
- package/packages/willa/src/Image/index.tsx +1 -0
- package/packages/willa/src/ImageGallery/index.tsx +5 -0
- package/packages/willa/src/Input/index.tsx +6 -0
- package/packages/willa/src/InputPanel/index.tsx +8 -0
- package/packages/willa/src/Kbd/index.tsx +9 -0
- package/packages/willa/src/Lightbox/index.tsx +7 -0
- package/packages/willa/src/List/index.tsx +10 -0
- package/packages/willa/src/LogoWall/index.tsx +6 -0
- package/packages/willa/src/Masonry/index.tsx +6 -0
- package/packages/willa/src/MathExpression/index.tsx +5 -0
- package/packages/willa/src/Mdx/index.tsx +1 -0
- package/packages/willa/src/MentionInput/index.tsx +5 -0
- package/packages/willa/src/Menu/index.tsx +11 -0
- package/packages/willa/src/MessageActions/index.tsx +8 -0
- package/packages/willa/src/MessageList/index.tsx +4 -0
- package/packages/willa/src/ModelSelector/index.tsx +9 -0
- package/packages/willa/src/NumberInput/index.tsx +15 -0
- package/packages/willa/src/PageHeader/index.tsx +5 -0
- package/packages/willa/src/Pagination/index.tsx +6 -0
- package/packages/willa/src/Panel/index.tsx +6 -0
- package/packages/willa/src/Picker/index.tsx +8 -0
- package/packages/willa/src/Poem/index.tsx +1 -0
- package/packages/willa/src/Popover/index.tsx +7 -0
- package/packages/willa/src/ProfileCard/index.tsx +5 -0
- package/packages/willa/src/Progress/index.tsx +6 -0
- package/packages/willa/src/PromptInput/index.tsx +6 -0
- package/packages/willa/src/PromptTemplatePicker/index.tsx +6 -0
- package/packages/willa/src/QRCode/index.tsx +9 -0
- package/packages/willa/src/Radio/index.tsx +5 -0
- package/packages/willa/src/RangeInput/index.tsx +2 -0
- package/packages/willa/src/Rate/index.tsx +6 -0
- package/packages/willa/src/ReasoningSteps/index.tsx +8 -0
- package/packages/willa/src/ResizablePanel/index.tsx +10 -0
- package/packages/willa/src/Result/index.tsx +7 -0
- package/packages/willa/src/SearchInput/index.tsx +4 -0
- package/packages/willa/src/SectionHeader/index.tsx +6 -0
- package/packages/willa/src/Segmented/index.tsx +9 -0
- package/packages/willa/src/Select/index.tsx +7 -0
- package/packages/willa/src/SelectionBar/index.tsx +5 -0
- package/packages/willa/src/Separator/index.tsx +7 -0
- package/packages/willa/src/SidebarLayout/index.tsx +7 -0
- package/packages/willa/src/SiteFooter/index.tsx +6 -0
- package/packages/willa/src/SiteNav/index.tsx +5 -0
- package/packages/willa/src/Skeleton/index.tsx +4 -0
- package/packages/willa/src/SourceCard/index.tsx +6 -0
- package/packages/willa/src/Spinner/index.tsx +7 -0
- package/packages/willa/src/SplitPane/index.tsx +10 -0
- package/packages/willa/src/Stack/index.tsx +8 -0
- package/packages/willa/src/Statistic/index.tsx +7 -0
- package/packages/willa/src/Step/index.tsx +1 -0
- package/packages/willa/src/Steps/index.tsx +1 -0
- package/packages/willa/src/SuggestionChips/index.tsx +7 -0
- package/packages/willa/src/Switch/index.tsx +5 -0
- package/packages/willa/src/Table/index.tsx +19 -0
- package/packages/willa/src/Tabs/index.tsx +6 -0
- package/packages/willa/src/Tag/index.tsx +9 -0
- package/packages/willa/src/TagInput/index.tsx +8 -0
- package/packages/willa/src/TextArea/index.tsx +7 -0
- package/packages/willa/src/ThinkingIndicator/index.tsx +7 -0
- package/packages/willa/src/TimePicker/index.tsx +10 -0
- package/packages/willa/src/Timeline/index.tsx +8 -0
- package/packages/willa/src/Toast/index.tsx +10 -0
- package/packages/willa/src/ToolCallCard/index.tsx +5 -0
- package/packages/willa/src/Toolbar/index.tsx +6 -0
- package/packages/willa/src/Tooltip/index.tsx +7 -0
- package/packages/willa/src/Tour/index.tsx +10 -0
- package/packages/willa/src/TraceViewer/index.tsx +8 -0
- package/packages/willa/src/Tree/index.tsx +11 -0
- package/packages/willa/src/TreeSelect/index.tsx +8 -0
- package/packages/willa/src/Typography/index.tsx +20 -0
- package/packages/willa/src/Upload/index.tsx +11 -0
- package/packages/willa/src/VideoEmbed/index.tsx +4 -0
- package/packages/willa/src/VideoLink/index.tsx +4 -0
- package/packages/willa/src/Watermark/index.tsx +5 -0
- package/packages/willa/src/WebEmbed/index.tsx +4 -0
- package/packages/willa/src/XPostEmbed/index.tsx +4 -0
- package/packages/willa/src/index.ts +5 -0
- package/packages/willa/vitest.config.ts +9 -0
- package/packages/willa-ai/README.md +32 -0
- package/packages/willa-ai/auklet.config.mjs +25 -0
- package/packages/willa-ai/package.json +84 -0
- package/packages/willa-ai/src/components/AttachmentList/index.css +223 -0
- package/packages/willa-ai/src/components/AttachmentList/index.tsx +256 -0
- package/packages/willa-ai/src/components/ChatMessage/index.css +211 -0
- package/packages/willa-ai/src/components/ChatMessage/index.tsx +126 -0
- package/packages/willa-ai/src/components/Composer/index.css +137 -0
- package/packages/willa-ai/src/components/Composer/index.tsx +92 -0
- package/packages/willa-ai/src/components/ContextPanel/index.css +252 -0
- package/packages/willa-ai/src/components/ContextPanel/index.tsx +513 -0
- package/packages/willa-ai/src/components/ContextWindowMeter/index.css +237 -0
- package/packages/willa-ai/src/components/ContextWindowMeter/index.tsx +266 -0
- package/packages/willa-ai/src/components/ConversationList/index.css +260 -0
- package/packages/willa-ai/src/components/ConversationList/index.tsx +549 -0
- package/packages/willa-ai/src/components/FeedbackBar/index.css +83 -0
- package/packages/willa-ai/src/components/FeedbackBar/index.tsx +357 -0
- package/packages/willa-ai/src/components/GenerationCard/index.css +275 -0
- package/packages/willa-ai/src/components/GenerationCard/index.tsx +156 -0
- package/packages/willa-ai/src/components/HumanApprovalCard/index.css +205 -0
- package/packages/willa-ai/src/components/HumanApprovalCard/index.tsx +262 -0
- package/packages/willa-ai/src/components/MessageActions/index.css +174 -0
- package/packages/willa-ai/src/components/MessageActions/index.tsx +152 -0
- package/packages/willa-ai/src/components/MessageList/index.css +80 -0
- package/packages/willa-ai/src/components/MessageList/index.tsx +96 -0
- package/packages/willa-ai/src/components/ModelSelector/index.css +177 -0
- package/packages/willa-ai/src/components/ModelSelector/index.tsx +421 -0
- package/packages/willa-ai/src/components/PromptInput/index.css +12 -0
- package/packages/willa-ai/src/components/PromptInput/index.tsx +230 -0
- package/packages/willa-ai/src/components/PromptTemplatePicker/index.css +173 -0
- package/packages/willa-ai/src/components/PromptTemplatePicker/index.tsx +389 -0
- package/packages/willa-ai/src/components/ReasoningSteps/index.css +190 -0
- package/packages/willa-ai/src/components/ReasoningSteps/index.tsx +199 -0
- package/packages/willa-ai/src/components/SuggestionChips/index.css +164 -0
- package/packages/willa-ai/src/components/SuggestionChips/index.tsx +142 -0
- package/packages/willa-ai/src/components/ThinkingIndicator/index.css +230 -0
- package/packages/willa-ai/src/components/ThinkingIndicator/index.tsx +162 -0
- package/packages/willa-ai/src/components/ToolCallCard/index.css +244 -0
- package/packages/willa-ai/src/components/ToolCallCard/index.tsx +131 -0
- package/packages/willa-ai/src/components/TraceViewer/index.css +438 -0
- package/packages/willa-ai/src/components/TraceViewer/index.tsx +445 -0
- package/packages/willa-ai/src/index.ts +123 -0
- package/packages/willa-ai/src/internal/cardCollapse.tsx +90 -0
- package/packages/willa-ai/src/internal/searchText.ts +50 -0
- package/packages/willa-ai/src/themes/dark.css +308 -0
- package/packages/willa-ai/src/themes/light.css +303 -0
- package/packages/willa-ai/vitest.config.ts +15 -0
- package/packages/willa-content/README.md +47 -0
- package/packages/willa-content/auklet.config.mjs +25 -0
- package/packages/willa-content/package.json +86 -0
- package/packages/willa-content/src/components/Alert/index.css +158 -0
- package/packages/willa-content/src/components/Alert/index.tsx +182 -0
- package/packages/willa-content/src/components/Anchor/index.css +131 -0
- package/packages/willa-content/src/components/Anchor/index.tsx +253 -0
- package/packages/willa-content/src/components/Avatar/index.css +248 -0
- package/packages/willa-content/src/components/Avatar/index.tsx +331 -0
- package/packages/willa-content/src/components/Badge/index.css +111 -0
- package/packages/willa-content/src/components/Badge/index.tsx +56 -0
- package/packages/willa-content/src/components/Breadcrumb/index.css +92 -0
- package/packages/willa-content/src/components/Breadcrumb/index.tsx +129 -0
- package/packages/willa-content/src/components/Button/index.css +215 -0
- package/packages/willa-content/src/components/Button/index.tsx +295 -0
- package/packages/willa-content/src/components/Callout/index.css +102 -0
- package/packages/willa-content/src/components/Callout/index.tsx +61 -0
- package/packages/willa-content/src/components/Carousel/index.css +236 -0
- package/packages/willa-content/src/components/Carousel/index.tsx +488 -0
- package/packages/willa-content/src/components/ChatThread/index.css +141 -0
- package/packages/willa-content/src/components/ChatThread/index.tsx +118 -0
- package/packages/willa-content/src/components/Citation/index.css +226 -0
- package/packages/willa-content/src/components/Citation/index.tsx +135 -0
- package/packages/willa-content/src/components/CodeBlock/index.css +267 -0
- package/packages/willa-content/src/components/CodeBlock/index.tsx +173 -0
- package/packages/willa-content/src/components/CodeTabs/index.css +116 -0
- package/packages/willa-content/src/components/CodeTabs/index.tsx +88 -0
- package/packages/willa-content/src/components/Collapse/index.css +135 -0
- package/packages/willa-content/src/components/Collapse/index.tsx +108 -0
- package/packages/willa-content/src/components/Comment/index.css +184 -0
- package/packages/willa-content/src/components/Comment/index.tsx +106 -0
- package/packages/willa-content/src/components/CommentInput/index.css +96 -0
- package/packages/willa-content/src/components/CommentInput/index.tsx +84 -0
- package/packages/willa-content/src/components/CommentList/index.css +43 -0
- package/packages/willa-content/src/components/CommentList/index.tsx +79 -0
- package/packages/willa-content/src/components/CopyButton/index.css +26 -0
- package/packages/willa-content/src/components/CopyButton/index.tsx +227 -0
- package/packages/willa-content/src/components/DescriptionList/index.css +176 -0
- package/packages/willa-content/src/components/DescriptionList/index.tsx +96 -0
- package/packages/willa-content/src/components/Dialog/index.css +225 -0
- package/packages/willa-content/src/components/Dialog/index.tsx +303 -0
- package/packages/willa-content/src/components/DiffViewer/index.css +321 -0
- package/packages/willa-content/src/components/DiffViewer/index.tsx +486 -0
- package/packages/willa-content/src/components/Download/index.css +118 -0
- package/packages/willa-content/src/components/Download/index.tsx +96 -0
- package/packages/willa-content/src/components/Drawer/index.css +160 -0
- package/packages/willa-content/src/components/Drawer/index.tsx +323 -0
- package/packages/willa-content/src/components/EmptyState/index.css +220 -0
- package/packages/willa-content/src/components/EmptyState/index.tsx +78 -0
- package/packages/willa-content/src/components/FileCard/fileIcon.tsx +215 -0
- package/packages/willa-content/src/components/FileCard/index.css +242 -0
- package/packages/willa-content/src/components/FileCard/index.tsx +133 -0
- package/packages/willa-content/src/components/FilePreview/index.css +589 -0
- package/packages/willa-content/src/components/FilePreview/index.tsx +750 -0
- package/packages/willa-content/src/components/FileTree/index.css +169 -0
- package/packages/willa-content/src/components/FileTree/index.tsx +341 -0
- package/packages/willa-content/src/components/FloatButton/index.css +276 -0
- package/packages/willa-content/src/components/FloatButton/index.tsx +558 -0
- package/packages/willa-content/src/components/IconButton/index.css +196 -0
- package/packages/willa-content/src/components/IconButton/index.tsx +272 -0
- package/packages/willa-content/src/components/Image/index.css +72 -0
- package/packages/willa-content/src/components/Image/index.tsx +141 -0
- package/packages/willa-content/src/components/ImageGallery/index.css +82 -0
- package/packages/willa-content/src/components/ImageGallery/index.tsx +170 -0
- package/packages/willa-content/src/components/InputPanel/index.css +181 -0
- package/packages/willa-content/src/components/InputPanel/index.tsx +255 -0
- package/packages/willa-content/src/components/Kbd/index.css +61 -0
- package/packages/willa-content/src/components/Kbd/index.tsx +102 -0
- package/packages/willa-content/src/components/Lightbox/index.css +127 -0
- package/packages/willa-content/src/components/Lightbox/index.tsx +328 -0
- package/packages/willa-content/src/components/List/index.css +439 -0
- package/packages/willa-content/src/components/List/index.tsx +403 -0
- package/packages/willa-content/src/components/MathExpression/index.css +65 -0
- package/packages/willa-content/src/components/MathExpression/index.tsx +105 -0
- package/packages/willa-content/src/components/MentionInput/index.css +92 -0
- package/packages/willa-content/src/components/MentionInput/index.tsx +1138 -0
- package/packages/willa-content/src/components/Menu/index.css +151 -0
- package/packages/willa-content/src/components/Menu/index.tsx +356 -0
- package/packages/willa-content/src/components/Pagination/index.css +139 -0
- package/packages/willa-content/src/components/Pagination/index.tsx +373 -0
- package/packages/willa-content/src/components/Popover/index.css +128 -0
- package/packages/willa-content/src/components/Popover/index.tsx +226 -0
- package/packages/willa-content/src/components/Progress/index.css +137 -0
- package/packages/willa-content/src/components/Progress/index.tsx +117 -0
- package/packages/willa-content/src/components/Result/index.css +142 -0
- package/packages/willa-content/src/components/Result/index.tsx +85 -0
- package/packages/willa-content/src/components/Segmented/index.css +136 -0
- package/packages/willa-content/src/components/Segmented/index.tsx +283 -0
- package/packages/willa-content/src/components/SelectionBar/index.css +104 -0
- package/packages/willa-content/src/components/SelectionBar/index.tsx +120 -0
- package/packages/willa-content/src/components/Skeleton/index.css +68 -0
- package/packages/willa-content/src/components/Skeleton/index.tsx +126 -0
- package/packages/willa-content/src/components/SourceCard/index.css +177 -0
- package/packages/willa-content/src/components/SourceCard/index.tsx +108 -0
- package/packages/willa-content/src/components/Spinner/index.css +124 -0
- package/packages/willa-content/src/components/Spinner/index.tsx +55 -0
- package/packages/willa-content/src/components/Statistic/index.css +135 -0
- package/packages/willa-content/src/components/Statistic/index.tsx +90 -0
- package/packages/willa-content/src/components/Steps/index.css +167 -0
- package/packages/willa-content/src/components/Steps/index.tsx +170 -0
- package/packages/willa-content/src/components/Table/TableBody.tsx +389 -0
- package/packages/willa-content/src/components/Table/TableHeader.tsx +256 -0
- package/packages/willa-content/src/components/Table/TablePagination.tsx +46 -0
- package/packages/willa-content/src/components/Table/TableView.tsx +341 -0
- package/packages/willa-content/src/components/Table/columnState.ts +37 -0
- package/packages/willa-content/src/components/Table/columns.ts +63 -0
- package/packages/willa-content/src/components/Table/group.ts +114 -0
- package/packages/willa-content/src/components/Table/index.css +620 -0
- package/packages/willa-content/src/components/Table/index.tsx +100 -0
- package/packages/willa-content/src/components/Table/layout.ts +80 -0
- package/packages/willa-content/src/components/Table/tree.ts +28 -0
- package/packages/willa-content/src/components/Table/types.ts +177 -0
- package/packages/willa-content/src/components/Table/useTableColumnResize.ts +227 -0
- package/packages/willa-content/src/components/Table/useTableColumnState.ts +153 -0
- package/packages/willa-content/src/components/Table/useTableExpansion.ts +69 -0
- package/packages/willa-content/src/components/Table/useTableInfiniteScroll.ts +77 -0
- package/packages/willa-content/src/components/Table/useTableSelection.ts +102 -0
- package/packages/willa-content/src/components/Table/useTableState.ts +436 -0
- package/packages/willa-content/src/components/Table/useTableViewModel.ts +222 -0
- package/packages/willa-content/src/components/Table/utils.ts +251 -0
- package/packages/willa-content/src/components/Tabs/index.css +126 -0
- package/packages/willa-content/src/components/Tabs/index.tsx +154 -0
- package/packages/willa-content/src/components/Tag/index.css +171 -0
- package/packages/willa-content/src/components/Tag/index.tsx +91 -0
- package/packages/willa-content/src/components/Timeline/index.css +355 -0
- package/packages/willa-content/src/components/Timeline/index.tsx +153 -0
- package/packages/willa-content/src/components/Toast/index.css +226 -0
- package/packages/willa-content/src/components/Toast/index.tsx +280 -0
- package/packages/willa-content/src/components/Toolbar/index.css +59 -0
- package/packages/willa-content/src/components/Toolbar/index.tsx +73 -0
- package/packages/willa-content/src/components/Tooltip/index.css +83 -0
- package/packages/willa-content/src/components/Tooltip/index.tsx +265 -0
- package/packages/willa-content/src/components/Tour/index.css +312 -0
- package/packages/willa-content/src/components/Tour/index.tsx +788 -0
- package/packages/willa-content/src/components/Tree/index.css +274 -0
- package/packages/willa-content/src/components/Tree/index.tsx +564 -0
- package/packages/willa-content/src/components/Typography/TypographyActions.tsx +125 -0
- package/packages/willa-content/src/components/Typography/TypographyContent.tsx +406 -0
- package/packages/willa-content/src/components/Typography/TypographyEdit.tsx +161 -0
- package/packages/willa-content/src/components/Typography/index.css +575 -0
- package/packages/willa-content/src/components/Typography/index.tsx +145 -0
- package/packages/willa-content/src/components/Typography/types.ts +144 -0
- package/packages/willa-content/src/components/Typography/utils.tsx +192 -0
- package/packages/willa-content/src/components/Watermark/index.css +37 -0
- package/packages/willa-content/src/components/Watermark/index.tsx +294 -0
- package/packages/willa-content/src/index.ts +408 -0
- package/packages/willa-content/src/internal/buttonActionUtils.ts +46 -0
- package/packages/willa-content/src/internal/syntaxHighlight.css +82 -0
- package/packages/willa-content/src/internal/useSingleSelection.ts +80 -0
- package/packages/willa-content/src/themes/dark.css +777 -0
- package/packages/willa-content/src/themes/light.css +780 -0
- package/packages/willa-content/vitest.config.ts +15 -0
- package/packages/willa-form/README.md +33 -0
- package/packages/willa-form/auklet.config.mjs +24 -0
- package/packages/willa-form/package.json +85 -0
- package/packages/willa-form/src/components/Calendar/ScheduleCalendar.tsx +1036 -0
- package/packages/willa-form/src/components/Calendar/index.css +1081 -0
- package/packages/willa-form/src/components/Calendar/index.tsx +876 -0
- package/packages/willa-form/src/components/Calendar/utils.ts +67 -0
- package/packages/willa-form/src/components/Checkbox/index.css +133 -0
- package/packages/willa-form/src/components/Checkbox/index.tsx +104 -0
- package/packages/willa-form/src/components/ColorPicker/index.css +617 -0
- package/packages/willa-form/src/components/ColorPicker/index.tsx +724 -0
- package/packages/willa-form/src/components/ColorPicker/types.ts +21 -0
- package/packages/willa-form/src/components/DatePicker/index.css +395 -0
- package/packages/willa-form/src/components/DatePicker/index.tsx +631 -0
- package/packages/willa-form/src/components/FilterBar/index.css +122 -0
- package/packages/willa-form/src/components/FilterBar/index.tsx +98 -0
- package/packages/willa-form/src/components/Form/index.css +49 -0
- package/packages/willa-form/src/components/Form/index.tsx +50 -0
- package/packages/willa-form/src/components/FormActions/index.css +62 -0
- package/packages/willa-form/src/components/FormActions/index.tsx +44 -0
- package/packages/willa-form/src/components/FormField/index.css +71 -0
- package/packages/willa-form/src/components/FormField/index.tsx +85 -0
- package/packages/willa-form/src/components/FormGroup/index.css +62 -0
- package/packages/willa-form/src/components/FormGroup/index.tsx +64 -0
- package/packages/willa-form/src/components/FormMessage/index.css +77 -0
- package/packages/willa-form/src/components/FormMessage/index.tsx +57 -0
- package/packages/willa-form/src/components/Input/index.css +131 -0
- package/packages/willa-form/src/components/Input/index.tsx +116 -0
- package/packages/willa-form/src/components/NumberInput/index.css +315 -0
- package/packages/willa-form/src/components/NumberInput/index.tsx +567 -0
- package/packages/willa-form/src/components/Picker/index.css +323 -0
- package/packages/willa-form/src/components/Picker/index.tsx +359 -0
- package/packages/willa-form/src/components/Radio/index.css +131 -0
- package/packages/willa-form/src/components/Radio/index.tsx +70 -0
- package/packages/willa-form/src/components/RangeInput/index.css +224 -0
- package/packages/willa-form/src/components/RangeInput/index.tsx +288 -0
- package/packages/willa-form/src/components/Rate/index.css +97 -0
- package/packages/willa-form/src/components/Rate/index.tsx +378 -0
- package/packages/willa-form/src/components/SearchInput/index.css +32 -0
- package/packages/willa-form/src/components/SearchInput/index.tsx +101 -0
- package/packages/willa-form/src/components/Select/index.css +4 -0
- package/packages/willa-form/src/components/Select/index.tsx +79 -0
- package/packages/willa-form/src/components/Switch/index.css +133 -0
- package/packages/willa-form/src/components/Switch/index.tsx +75 -0
- package/packages/willa-form/src/components/TagInput/index.css +209 -0
- package/packages/willa-form/src/components/TagInput/index.tsx +497 -0
- package/packages/willa-form/src/components/TextArea/index.css +91 -0
- package/packages/willa-form/src/components/TextArea/index.tsx +87 -0
- package/packages/willa-form/src/components/TimePicker/index.css +485 -0
- package/packages/willa-form/src/components/TimePicker/index.tsx +649 -0
- package/packages/willa-form/src/components/TimePicker/types.ts +8 -0
- package/packages/willa-form/src/components/TreeSelect/index.css +331 -0
- package/packages/willa-form/src/components/TreeSelect/index.tsx +497 -0
- package/packages/willa-form/src/components/Upload/index.css +345 -0
- package/packages/willa-form/src/components/Upload/index.tsx +581 -0
- package/packages/willa-form/src/index.ts +176 -0
- package/packages/willa-form/src/internal/colorUtils.ts +206 -0
- package/packages/willa-form/src/internal/comboboxField.tsx +114 -0
- package/packages/willa-form/src/internal/floatingPanelParts.tsx +80 -0
- package/packages/willa-form/src/internal/selectablePanelKeyboard.ts +93 -0
- package/packages/willa-form/src/internal/selectablePanelParts.tsx +212 -0
- package/packages/willa-form/src/internal/timePickerParts.ts +205 -0
- package/packages/willa-form/src/internal/useComboboxState.ts +21 -0
- package/packages/willa-form/src/internal/useFloatingPanel.ts +114 -0
- package/packages/willa-form/src/internal/useSelectablePanel.ts +152 -0
- package/packages/willa-form/src/internal/useSelectionModel.ts +115 -0
- package/packages/willa-form/src/themes/dark.css +197 -0
- package/packages/willa-form/src/themes/light.css +201 -0
- package/packages/willa-form/vitest.config.ts +15 -0
- package/packages/willa-layout/README.md +33 -0
- package/packages/willa-layout/auklet.config.mjs +11 -0
- package/packages/willa-layout/package.json +83 -0
- package/packages/willa-layout/src/components/AppShell/index.css +100 -0
- package/packages/willa-layout/src/components/AppShell/index.tsx +70 -0
- package/packages/willa-layout/src/components/BorderBeam/index.css +86 -0
- package/packages/willa-layout/src/components/BorderBeam/index.tsx +161 -0
- package/packages/willa-layout/src/components/Card/index.css +179 -0
- package/packages/willa-layout/src/components/Card/index.tsx +174 -0
- package/packages/willa-layout/src/components/Container/index.css +55 -0
- package/packages/willa-layout/src/components/Container/index.tsx +43 -0
- package/packages/willa-layout/src/components/Grid/index.css +9 -0
- package/packages/willa-layout/src/components/Grid/index.tsx +100 -0
- package/packages/willa-layout/src/components/Group/index.css +21 -0
- package/packages/willa-layout/src/components/Group/index.tsx +146 -0
- package/packages/willa-layout/src/components/Masonry/index.css +12 -0
- package/packages/willa-layout/src/components/Masonry/index.tsx +71 -0
- package/packages/willa-layout/src/components/PageHeader/index.css +130 -0
- package/packages/willa-layout/src/components/PageHeader/index.tsx +76 -0
- package/packages/willa-layout/src/components/Panel/index.css +123 -0
- package/packages/willa-layout/src/components/Panel/index.tsx +63 -0
- package/packages/willa-layout/src/components/SectionHeader/index.css +104 -0
- package/packages/willa-layout/src/components/SectionHeader/index.tsx +69 -0
- package/packages/willa-layout/src/components/Separator/index.css +155 -0
- package/packages/willa-layout/src/components/Separator/index.tsx +61 -0
- package/packages/willa-layout/src/components/SidebarLayout/index.css +43 -0
- package/packages/willa-layout/src/components/SidebarLayout/index.tsx +73 -0
- package/packages/willa-layout/src/components/SplitPane/index.css +148 -0
- package/packages/willa-layout/src/components/SplitPane/index.tsx +434 -0
- package/packages/willa-layout/src/components/Stack/index.css +8 -0
- package/packages/willa-layout/src/components/Stack/index.tsx +99 -0
- package/packages/willa-layout/src/index.ts +91 -0
- package/packages/willa-layout/src/internal/headerBlock.tsx +49 -0
- package/packages/willa-layout/src/themes/dark.css +55 -0
- package/packages/willa-layout/src/themes/light.css +59 -0
- package/packages/willa-layout/vitest.config.ts +15 -0
- package/packages/willa-shared/README.md +24 -0
- package/packages/willa-shared/package.json +46 -0
- package/packages/willa-shared/src/clipboard.ts +23 -0
- package/packages/willa-shared/src/codeHighlight.ts +109 -0
- package/packages/willa-shared/src/controllableState.ts +42 -0
- package/packages/willa-shared/src/copy.ts +79 -0
- package/packages/willa-shared/src/css.ts +10 -0
- package/packages/willa-shared/src/dom.ts +12 -0
- package/packages/willa-shared/src/file.ts +214 -0
- package/packages/willa-shared/src/floating.ts +160 -0
- package/packages/willa-shared/src/floatingLayer.ts +310 -0
- package/packages/willa-shared/src/heading.ts +69 -0
- package/packages/willa-shared/src/index.ts +88 -0
- package/packages/willa-shared/src/media.ts +23 -0
- package/packages/willa-shared/src/nodes.ts +24 -0
- package/packages/willa-shared/src/number.ts +9 -0
- package/packages/willa-shared/src/refs.ts +16 -0
- package/packages/willa-shared/src/request.ts +46 -0
- package/packages/willa-shared/src/types.ts +27 -0
- package/packages/willa-shared/src/viewport.ts +12 -0
- package/packages/willa-shared/src/virtualScroll.ts +137 -0
- package/packages/willa-shared/vitest.config.ts +9 -0
- package/packages/willa-widgets/README.md +33 -0
- package/packages/willa-widgets/auklet.config.mjs +25 -0
- package/packages/willa-widgets/package.json +89 -0
- package/packages/willa-widgets/src/components/AudioEmbed/index.css +424 -0
- package/packages/willa-widgets/src/components/AudioEmbed/index.tsx +270 -0
- package/packages/willa-widgets/src/components/AudioLink/index.css +165 -0
- package/packages/willa-widgets/src/components/AudioLink/index.tsx +169 -0
- package/packages/willa-widgets/src/components/EnglishCards/Card.tsx +116 -0
- package/packages/willa-widgets/src/components/EnglishCards/Content.tsx +203 -0
- package/packages/willa-widgets/src/components/EnglishCards/Practice.tsx +91 -0
- package/packages/willa-widgets/src/components/EnglishCards/Resources.tsx +91 -0
- package/packages/willa-widgets/src/components/EnglishCards/index.css +531 -0
- package/packages/willa-widgets/src/components/EnglishCards/index.tsx +142 -0
- package/packages/willa-widgets/src/components/EnglishCards/speech.ts +29 -0
- package/packages/willa-widgets/src/components/EnglishCards/types.ts +43 -0
- package/packages/willa-widgets/src/components/GitHubMention/index.css +206 -0
- package/packages/willa-widgets/src/components/GitHubMention/index.tsx +168 -0
- package/packages/willa-widgets/src/components/GitHubRepo/index.css +194 -0
- package/packages/willa-widgets/src/components/GitHubRepo/index.tsx +172 -0
- package/packages/willa-widgets/src/components/LogoWall/index.css +122 -0
- package/packages/willa-widgets/src/components/LogoWall/index.tsx +104 -0
- package/packages/willa-widgets/src/components/Mdx/index.css +273 -0
- package/packages/willa-widgets/src/components/Mdx/index.tsx +377 -0
- package/packages/willa-widgets/src/components/Poem/index.css +101 -0
- package/packages/willa-widgets/src/components/Poem/index.tsx +74 -0
- package/packages/willa-widgets/src/components/ProfileCard/index.css +107 -0
- package/packages/willa-widgets/src/components/ProfileCard/index.tsx +116 -0
- package/packages/willa-widgets/src/components/QRCode/index.css +175 -0
- package/packages/willa-widgets/src/components/QRCode/index.tsx +257 -0
- package/packages/willa-widgets/src/components/SiteFooter/index.css +109 -0
- package/packages/willa-widgets/src/components/SiteFooter/index.tsx +104 -0
- package/packages/willa-widgets/src/components/SiteNav/index.css +93 -0
- package/packages/willa-widgets/src/components/SiteNav/index.tsx +71 -0
- package/packages/willa-widgets/src/components/VideoEmbed/index.css +230 -0
- package/packages/willa-widgets/src/components/VideoEmbed/index.tsx +134 -0
- package/packages/willa-widgets/src/components/VideoLink/index.css +118 -0
- package/packages/willa-widgets/src/components/VideoLink/index.tsx +161 -0
- package/packages/willa-widgets/src/components/WebEmbed/index.css +106 -0
- package/packages/willa-widgets/src/components/WebEmbed/index.tsx +98 -0
- package/packages/willa-widgets/src/components/XPostEmbed/index.css +52 -0
- package/packages/willa-widgets/src/components/XPostEmbed/index.tsx +88 -0
- package/packages/willa-widgets/src/index.ts +57 -0
- package/packages/willa-widgets/src/internal/media.ts +84 -0
- package/packages/willa-widgets/src/internal/mediaEmbed.tsx +52 -0
- package/packages/willa-widgets/src/internal/useGitHubHoverCardResource.ts +120 -0
- package/packages/willa-widgets/src/themes/dark.css +209 -0
- package/packages/willa-widgets/src/themes/light.css +207 -0
- package/packages/willa-widgets/vitest.config.ts +15 -0
- package/pnpm-workspace.yaml +29 -0
- package/tsconfig.json +50 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
name: Deploy
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- master
|
|
7
|
+
- main
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: write
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
build-and-deploy:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
|
|
16
|
+
steps:
|
|
17
|
+
- name: Checkout repository
|
|
18
|
+
uses: actions/checkout@v4
|
|
19
|
+
|
|
20
|
+
- name: Install pnpm
|
|
21
|
+
uses: pnpm/action-setup@v4
|
|
22
|
+
with:
|
|
23
|
+
version: 10.27.0
|
|
24
|
+
|
|
25
|
+
- name: Set up Node.js
|
|
26
|
+
uses: actions/setup-node@v4
|
|
27
|
+
with:
|
|
28
|
+
node-version: "22"
|
|
29
|
+
cache: "pnpm"
|
|
30
|
+
|
|
31
|
+
- name: Install dependencies
|
|
32
|
+
run: pnpm install --frozen-lockfile
|
|
33
|
+
|
|
34
|
+
- name: Build packages
|
|
35
|
+
run: pnpm run build:packages
|
|
36
|
+
|
|
37
|
+
- name: Build app
|
|
38
|
+
run: pnpm run build
|
|
39
|
+
|
|
40
|
+
- name: Deploy app to GitHub Pages
|
|
41
|
+
uses: peaceiris/actions-gh-pages@v3
|
|
42
|
+
with:
|
|
43
|
+
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
44
|
+
publish_dir: ./example/dist
|
|
45
|
+
keep_files: true
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
pnpm exec lint-staged
|
package/AGENTS.md
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# AGENTS.md
|
|
2
|
+
|
|
3
|
+
This file is the entry point for AI coding agents working in this repository.
|
|
4
|
+
Read it before making changes, then follow the linked project documents for
|
|
5
|
+
details.
|
|
6
|
+
|
|
7
|
+
## Project Context
|
|
8
|
+
|
|
9
|
+
Willa is a React component library for AI products, blogs, documentation sites,
|
|
10
|
+
content platforms, MDX pages, and rich interactive content rendering.
|
|
11
|
+
|
|
12
|
+
The repository is a pnpm workspace monorepo. Packages are built with `auklet`.
|
|
13
|
+
|
|
14
|
+
## Document Map
|
|
15
|
+
|
|
16
|
+
- [CONTRIBUTING.md](./CONTRIBUTING.md): contributor overview and common checks.
|
|
17
|
+
|
|
18
|
+
- [docs/architecture.md](./docs/architecture.md): repository structure, module
|
|
19
|
+
responsibilities, dependency flow, build flow, and known pitfalls.
|
|
20
|
+
|
|
21
|
+
- [docs/component.md](./docs/component.md): component creation, migration,
|
|
22
|
+
exports, example docs, and acceptance checklist.
|
|
23
|
+
|
|
24
|
+
- [docs/css.md](./docs/css.md): CSS rules, theme variable ownership, cross-package
|
|
25
|
+
style dependencies, and CSS pitfalls.
|
|
26
|
+
- [docs/style.md](./docs/style.md): TypeScript, React, naming, comments, and demo
|
|
27
|
+
code style.
|
|
28
|
+
|
|
29
|
+
## Task Routing
|
|
30
|
+
|
|
31
|
+
Read only the documents needed for the change, then follow links if the change
|
|
32
|
+
crosses boundaries.
|
|
33
|
+
|
|
34
|
+
- Architecture, package boundaries, build output, path aliases, or dependency
|
|
35
|
+
direction: read `docs/architecture.md`.
|
|
36
|
+
- Before changing package boundaries, build config, CSS dependency config, or
|
|
37
|
+
component ownership, review the pitfalls in `docs/architecture.md`.
|
|
38
|
+
- New component, component migration, exports, example docs, or public entry
|
|
39
|
+
changes: read `docs/component.md`.
|
|
40
|
+
- Component CSS, theme variables, cross-package CSS dependencies, or portal
|
|
41
|
+
styling: read `docs/css.md`.
|
|
42
|
+
- TypeScript, React implementation style, naming, comments, or demo code style:
|
|
43
|
+
read `docs/style.md`.
|
|
44
|
+
- Contribution workflow, common checks, or commit message format: read
|
|
45
|
+
`CONTRIBUTING.md`.
|
|
46
|
+
- README changes: keep README user-facing; move internal maintenance details to
|
|
47
|
+
`CONTRIBUTING.md` or `docs/`.
|
|
48
|
+
|
|
49
|
+
## Working Rules
|
|
50
|
+
|
|
51
|
+
- Keep package responsibilities clear. Do not make layout or content depend on
|
|
52
|
+
form, widgets, or AI.
|
|
53
|
+
- Do not copy layout or content theme variables into form, widgets, or AI.
|
|
54
|
+
- Do not add component theme variables to the `willa` aggregate package.
|
|
55
|
+
- Do not add per-package `tsconfig.json` files; use the root `tsconfig.json`.
|
|
56
|
+
- Use `auklet.config.mjs` with `defineConfig`; do not use
|
|
57
|
+
`auklet.config.ts`.
|
|
58
|
+
- Keep README user-facing. Internal maintenance details belong in
|
|
59
|
+
`CONTRIBUTING.md` or `docs/`.
|
|
60
|
+
- Prefer focused changes. Avoid unrelated refactors and package metadata churn
|
|
61
|
+
unless the task explicitly asks for a style or consistency pass in a defined
|
|
62
|
+
scope.
|
|
63
|
+
- Do not copy the same rule into multiple documents. Prefer linking to the
|
|
64
|
+
source-of-truth document.
|
|
65
|
+
- Do not include generated build output in commits unless explicitly requested.
|
|
66
|
+
|
|
67
|
+
## Change Checklists
|
|
68
|
+
|
|
69
|
+
For new public components:
|
|
70
|
+
|
|
71
|
+
- Confirm the package choice in `docs/architecture.md` and `docs/component.md`.
|
|
72
|
+
- Add package root exports and `willa` aggregate exports.
|
|
73
|
+
- Add component CSS and theme variables in the owning package when needed.
|
|
74
|
+
- Add or update example docs and registry entries.
|
|
75
|
+
- Verify package root import, `willa` root import, single-component import, and
|
|
76
|
+
single-component CSS import.
|
|
77
|
+
|
|
78
|
+
For component migrations:
|
|
79
|
+
|
|
80
|
+
- Remove stale exports, component files, CSS, and theme variables from the old
|
|
81
|
+
package.
|
|
82
|
+
- Move theme variables with the component's owning package.
|
|
83
|
+
- Keep `willa` as an aggregate layer; do not duplicate component theme variables
|
|
84
|
+
there.
|
|
85
|
+
- Update example docs, package names, imports, and CSS entries.
|
|
86
|
+
|
|
87
|
+
For CSS or theme changes:
|
|
88
|
+
|
|
89
|
+
- Keep structural CSS in component `index.css`.
|
|
90
|
+
- Put theme values in the owning package's theme files.
|
|
91
|
+
- Reuse upstream variables through declared CSS dependencies; do not copy them.
|
|
92
|
+
- Check portal components have variable scope where they actually render.
|
|
93
|
+
|
|
94
|
+
For documentation changes:
|
|
95
|
+
|
|
96
|
+
- Keep README focused on external users.
|
|
97
|
+
- Keep `CONTRIBUTING.md` as the overview and workflow entry point.
|
|
98
|
+
- Put detailed rules in one focused document under `docs/`.
|
|
99
|
+
- Update cross-links when renaming or moving documents.
|
|
100
|
+
|
|
101
|
+
## Verification
|
|
102
|
+
|
|
103
|
+
Use the narrowest check that covers the change, then broaden when shared
|
|
104
|
+
behavior is affected.
|
|
105
|
+
|
|
106
|
+
Common commands:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
pnpm run format
|
|
110
|
+
pnpm run typecheck
|
|
111
|
+
pnpm run build
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Run `pnpm run build:packages` for first-time public component additions,
|
|
115
|
+
package entry changes, package migration, or build config changes. For
|
|
116
|
+
example-only changes and narrow component fixes, use the smaller check that
|
|
117
|
+
covers the touched behavior.
|
|
118
|
+
|
|
119
|
+
For example-only changes:
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
pnpm dev
|
|
123
|
+
pnpm run build
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## Commits
|
|
127
|
+
|
|
128
|
+
Follow the commit message format in [CONTRIBUTING.md](./CONTRIBUTING.md).
|
package/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# Willa Contributor Guide
|
|
2
|
+
|
|
3
|
+
This document is the top-level maintenance entry point for Willa. Detailed
|
|
4
|
+
architecture, component, CSS, and code style rules live in `docs/`. Read the
|
|
5
|
+
relevant documents before making changes, then compare your work with the
|
|
6
|
+
existing implementation patterns.
|
|
7
|
+
|
|
8
|
+
## Project Scope
|
|
9
|
+
|
|
10
|
+
Willa is a React component library for AI products, blogs, documentation sites,
|
|
11
|
+
content platforms, MDX pages, and rich interactive content rendering.
|
|
12
|
+
Components should support product-style interaction and content rendering while
|
|
13
|
+
preserving single-component imports, single-component CSS imports, and
|
|
14
|
+
composable theme CSS.
|
|
15
|
+
|
|
16
|
+
The repository is a pnpm workspace monorepo. Packages are built with `auklet`.
|
|
17
|
+
Package structure, path aliases, build outputs, and module relationships are
|
|
18
|
+
documented in [Willa Architecture](./docs/architecture.md).
|
|
19
|
+
|
|
20
|
+
## Guide Map
|
|
21
|
+
|
|
22
|
+
Architecture, file organization, module relationships, build flow, and known
|
|
23
|
+
pitfalls: [Willa Architecture](./docs/architecture.md).
|
|
24
|
+
|
|
25
|
+
Component creation, migration, exports, example docs, and acceptance checks:
|
|
26
|
+
[Willa Component Guide](./docs/component.md).
|
|
27
|
+
|
|
28
|
+
CSS rules, theme variable ownership, cross-package variable reuse, and style
|
|
29
|
+
dependencies: [Willa CSS Guide](./docs/css.md).
|
|
30
|
+
|
|
31
|
+
TypeScript, React, and documentation code style:
|
|
32
|
+
[Willa Style Guide](./docs/style.md).
|
|
33
|
+
|
|
34
|
+
`CONTRIBUTING.md` should stay as a project-level overview. For architecture,
|
|
35
|
+
component, CSS, or code style changes, treat the focused documents in `docs/`
|
|
36
|
+
as the source of truth.
|
|
37
|
+
|
|
38
|
+
## Pre-Submit Checks
|
|
39
|
+
|
|
40
|
+
Common commands:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
pnpm run format
|
|
44
|
+
pnpm run typecheck
|
|
45
|
+
pnpm run build
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Run `pnpm run build:packages` when adding a first-time public component,
|
|
49
|
+
changing package entries, migrating components between packages, or changing
|
|
50
|
+
build configuration. For example-only changes and narrow component fixes, use
|
|
51
|
+
the smaller check that covers the touched behavior.
|
|
52
|
+
|
|
53
|
+
For example-only changes:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
pnpm dev
|
|
57
|
+
pnpm run build
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Commits run lint-staged formatting on staged files. When adding a dependency,
|
|
61
|
+
explain its purpose before installation.
|
|
62
|
+
|
|
63
|
+
## Publishing
|
|
64
|
+
|
|
65
|
+
Willa publishes prerelease versions to npm before stable releases. Publish from
|
|
66
|
+
the workspace root so auklet can resolve all workspace packages and sort them by
|
|
67
|
+
internal dependencies.
|
|
68
|
+
|
|
69
|
+
Run with `--dry-run` first:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
pnpm run publish:alpha -- --dry-run
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Then publish the chosen version type with an npm 2FA code when required:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
pnpm run publish:alpha -- --otp <code>
|
|
79
|
+
pnpm run publish:beta -- --otp <code>
|
|
80
|
+
pnpm run publish:patch -- --otp <code>
|
|
81
|
+
pnpm run publish:minor -- --otp <code>
|
|
82
|
+
pnpm run publish:major -- --otp <code>
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
For local token-based publishing, create `.env.local` in the workspace root:
|
|
86
|
+
|
|
87
|
+
```ini
|
|
88
|
+
NPM_TOKEN=<npm-token>
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
The publish scripts pass `--token env:NPM_TOKEN` to auklet, so the normal publish
|
|
92
|
+
commands read the token from `.env.local`. You can still override the token value
|
|
93
|
+
directly when needed:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
pnpm run publish:alpha -- --token <npm-token>
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
The root `.npmrc` only declares the npm registry auth placeholder required by
|
|
100
|
+
npm publish. Keep real npm tokens in `.env.local`, the shell, CI secrets, or a
|
|
101
|
+
local user-level npm config.
|
|
102
|
+
|
|
103
|
+
The publish scripts use auklet workspace publishing. Auklet skips private
|
|
104
|
+
workspace packages, validates internal `workspace:*` dependencies, runs package
|
|
105
|
+
builds, and publishes in dependency order.
|
|
106
|
+
|
|
107
|
+
## Commit Messages
|
|
108
|
+
|
|
109
|
+
Use conventional commit prefixes:
|
|
110
|
+
|
|
111
|
+
- `feat:` for new user-facing features.
|
|
112
|
+
- `fix:` for bug fixes.
|
|
113
|
+
- `docs:` for documentation-only changes.
|
|
114
|
+
- `chore:` for maintenance changes that do not affect runtime behavior.
|
|
115
|
+
- `refactor:` for code changes that preserve behavior.
|
|
116
|
+
- `test:` for test-only changes.
|
|
117
|
+
|
|
118
|
+
Keep the subject concise and imperative:
|
|
119
|
+
|
|
120
|
+
```text
|
|
121
|
+
docs: add architecture guide
|
|
122
|
+
fix: preserve theme variables in widgets
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## Maintenance Principles
|
|
126
|
+
|
|
127
|
+
- Keep package responsibilities clear. When migrating components, remove old
|
|
128
|
+
exports, styles, and theme variables from the previous package.
|
|
129
|
+
- Keep single-component imports working. New components must not be available
|
|
130
|
+
only from package root exports.
|
|
131
|
+
- Keep styles composable. Component CSS should not carry theme values directly.
|
|
132
|
+
- Keep example coverage for all public components, especially widgets and
|
|
133
|
+
combined scenarios such as Mdx.
|
|
134
|
+
- Keep broad component reviews focused on composition quality, API minimalism,
|
|
135
|
+
theme consistency, mobile behavior, documentation/demo alignment, and
|
|
136
|
+
self-hosting reuse.
|
|
137
|
+
- Avoid unrelated renames and package configuration churn unless they are part
|
|
138
|
+
of the current task.
|
package/README.md
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
<h2>willa</h2>
|
|
3
|
+
|
|
4
|
+
[](https://www.npmjs.com/package/willa)
|
|
5
|
+
|
|
6
|
+
</div>
|
|
7
|
+
|
|
8
|
+
Willa UI is a React component library for AI products, blogs, documentation
|
|
9
|
+
sites, content platforms, MDX pages, and rich interactive content rendering.
|
|
10
|
+
It provides layout primitives, form controls, product and content components,
|
|
11
|
+
AI-oriented interaction patterns, small widget integrations, and shared
|
|
12
|
+
utilities for building composable product and content experiences.
|
|
13
|
+
|
|
14
|
+
**Online docs**: https://imtaotao.github.io/willa/
|
|
15
|
+
|
|
16
|
+
## Development
|
|
17
|
+
|
|
18
|
+
The `example` app demonstrates the public `willa` package and individual
|
|
19
|
+
component imports.
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
# first time setup
|
|
23
|
+
$ pnpm run build:packages
|
|
24
|
+
|
|
25
|
+
# start the example dev server
|
|
26
|
+
$ pnpm dev
|
|
27
|
+
```
|
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
# Willa Architecture
|
|
2
|
+
|
|
3
|
+
This document records Willa's repository structure, module responsibilities,
|
|
4
|
+
dependency relationships, build flow, and common pitfalls. For new components,
|
|
5
|
+
see [Willa Component Guide](./component.md). For CSS and theme rules, see
|
|
6
|
+
[Willa CSS Guide](./css.md). For code style, see
|
|
7
|
+
[Willa Style Guide](./style.md).
|
|
8
|
+
|
|
9
|
+
## Project Scope
|
|
10
|
+
|
|
11
|
+
Willa is a React component library for AI products, blogs, documentation sites,
|
|
12
|
+
content platforms, MDX pages, and rich interactive content rendering. The core
|
|
13
|
+
requirements are:
|
|
14
|
+
|
|
15
|
+
- Components can be imported from package root entries.
|
|
16
|
+
- Components can be imported from single-component entries.
|
|
17
|
+
- Component CSS can be composed per component.
|
|
18
|
+
- Light and dark theme CSS can be composed across packages.
|
|
19
|
+
- Product interaction components and content rendering components can be
|
|
20
|
+
combined without crossing package ownership boundaries.
|
|
21
|
+
- The example app can consume source code directly for development and docs.
|
|
22
|
+
|
|
23
|
+
The repository is a pnpm workspace monorepo. Packages are built with `auklet`.
|
|
24
|
+
|
|
25
|
+
## File Organization
|
|
26
|
+
|
|
27
|
+
```text
|
|
28
|
+
.
|
|
29
|
+
package.json
|
|
30
|
+
pnpm-workspace.yaml
|
|
31
|
+
tsconfig.json
|
|
32
|
+
CONTRIBUTING.md
|
|
33
|
+
docs/
|
|
34
|
+
architecture.md
|
|
35
|
+
component.md
|
|
36
|
+
css.md
|
|
37
|
+
style.md
|
|
38
|
+
example/
|
|
39
|
+
src/
|
|
40
|
+
catalog/
|
|
41
|
+
docs/
|
|
42
|
+
packages/
|
|
43
|
+
willa/
|
|
44
|
+
src/
|
|
45
|
+
auklet.config.mjs
|
|
46
|
+
willa-content/
|
|
47
|
+
src/
|
|
48
|
+
components/
|
|
49
|
+
themes/
|
|
50
|
+
auklet.config.mjs
|
|
51
|
+
willa-layout/
|
|
52
|
+
src/
|
|
53
|
+
components/
|
|
54
|
+
themes/
|
|
55
|
+
auklet.config.mjs
|
|
56
|
+
willa-form/
|
|
57
|
+
src/
|
|
58
|
+
components/
|
|
59
|
+
themes/
|
|
60
|
+
auklet.config.mjs
|
|
61
|
+
willa-ai/
|
|
62
|
+
src/
|
|
63
|
+
components/
|
|
64
|
+
themes/
|
|
65
|
+
auklet.config.mjs
|
|
66
|
+
willa-widgets/
|
|
67
|
+
src/
|
|
68
|
+
components/
|
|
69
|
+
themes/
|
|
70
|
+
auklet.config.mjs
|
|
71
|
+
willa-shared/
|
|
72
|
+
src/
|
|
73
|
+
auklet.config.mjs
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
The root directory contains workspace configuration, shared TypeScript
|
|
77
|
+
configuration, repository documentation, and development commands. Packages do
|
|
78
|
+
not maintain their own `tsconfig.json`; they use the root `tsconfig.json`.
|
|
79
|
+
|
|
80
|
+
`docs` contains focused maintenance documents:
|
|
81
|
+
|
|
82
|
+
- `architecture.md`: overall structure, module relationships, build flow, and
|
|
83
|
+
pitfalls.
|
|
84
|
+
- `component.md`: component creation, migration, exports, and example rules.
|
|
85
|
+
- `css.md`: CSS, theme variables, and cross-package style dependency rules.
|
|
86
|
+
- `style.md`: TypeScript, React, and documentation code style.
|
|
87
|
+
|
|
88
|
+
## Module Responsibilities
|
|
89
|
+
|
|
90
|
+
`packages/willa` is the public aggregate package, published as `willa`. It
|
|
91
|
+
exports aggregate components and does not export `@willa-ui/shared`. It usually
|
|
92
|
+
does not own component implementations or theme variables; it combines selected
|
|
93
|
+
layout, content, form, AI, and widgets outputs. AI components are implemented
|
|
94
|
+
in `@willa-ui/ai`, then exposed through `willa` for public use.
|
|
95
|
+
|
|
96
|
+
`packages/willa-content` is the base product and content component package,
|
|
97
|
+
published as `@willa-ui/content`. It contains general product and content
|
|
98
|
+
components such as `Button`, `CodeBlock`, `Callout`, `Image`, `Tabs`,
|
|
99
|
+
`Dialog`, and `Steps`.
|
|
100
|
+
|
|
101
|
+
`packages/willa-layout` is the layout component package, published as
|
|
102
|
+
`@willa-ui/layout`. It contains layout primitives such as `Card`, `Group`,
|
|
103
|
+
`Stack`, `Grid`, `Masonry`, `Container`, `Panel`, `Separator`, `SplitPane`,
|
|
104
|
+
`ResizablePanel`, `BorderBeam`, `PageHeader`, `SectionHeader`, `AppShell`, and
|
|
105
|
+
`SidebarLayout`. Layout components own their component-specific layout
|
|
106
|
+
variables and the Willa base visual tokens such as fonts, text colors, lines,
|
|
107
|
+
surfaces, and focus rings.
|
|
108
|
+
|
|
109
|
+
`packages/willa-form` is the form component package, published as
|
|
110
|
+
`@willa-ui/form`. It contains form controls and form layout components such as
|
|
111
|
+
`Input`, `TextArea`, `Select`, `Checkbox`, `Radio`, `Switch`, `DatePicker`,
|
|
112
|
+
`Upload`, `Form`, `FormField`, and `FormActions`. It can compose layout and
|
|
113
|
+
content components and reuse their CSS through `styles.dependencies`, but
|
|
114
|
+
layout and content must not depend on form.
|
|
115
|
+
|
|
116
|
+
`packages/willa-ai` is the AI product component package, published as
|
|
117
|
+
`@willa-ui/ai`. It contains AI-oriented scene components such as prompt inputs,
|
|
118
|
+
chat messages, attachments, tool call displays, reasoning steps, generation
|
|
119
|
+
cards, context panels, trace viewers, and related interaction patterns. It can
|
|
120
|
+
compose layout and content components and reuse their CSS through
|
|
121
|
+
`styles.dependencies`, but it must not make layout or content depend on AI.
|
|
122
|
+
|
|
123
|
+
`packages/willa-widgets` is the scenario component package, published as
|
|
124
|
+
`@willa-ui/widgets`. It contains platform integrations, MDX composition,
|
|
125
|
+
external embeds, media-rich content blocks, and more domain-specific components
|
|
126
|
+
such as `Mdx`, `GitHubRepo`, `XPostEmbed`, `WebEmbed`, `AudioEmbed`,
|
|
127
|
+
`VideoEmbed`, `Poem`, and `EnglishCards`. It can compose layout, content, and
|
|
128
|
+
form components, but layout, content, and form must not depend on widgets.
|
|
129
|
+
|
|
130
|
+
`packages/willa-shared` is the shared utility package, published as
|
|
131
|
+
`@willa-ui/shared`. It contains cross-package types, text utilities, node
|
|
132
|
+
utilities, clipboard helpers, and similar logic. It does not contain React
|
|
133
|
+
components or component CSS.
|
|
134
|
+
|
|
135
|
+
`example` is the component demo and documentation app. In development, it
|
|
136
|
+
consumes package source through tsconfig aliases. The default port is `2333`.
|
|
137
|
+
|
|
138
|
+
## Dependency Relationships
|
|
139
|
+
|
|
140
|
+
Dependencies must remain one-way:
|
|
141
|
+
|
|
142
|
+
- shared does not depend on content, form, AI, or widgets.
|
|
143
|
+
- content can depend on shared and layout.
|
|
144
|
+
- layout can depend on shared.
|
|
145
|
+
- form can depend on shared, layout, and content.
|
|
146
|
+
- ai can depend on shared, layout, content, and form when it composes form
|
|
147
|
+
inputs.
|
|
148
|
+
- widgets can depend on shared, layout, content, and form.
|
|
149
|
+
- willa depends on layout, content, form, AI, and widgets as the public
|
|
150
|
+
aggregate package.
|
|
151
|
+
- example can depend on all public packages and source aliases.
|
|
152
|
+
|
|
153
|
+
Do not make layout or content depend on form, AI, or widgets. Do not move
|
|
154
|
+
layout-specific, form-specific, AI-specific, or widget-specific variables,
|
|
155
|
+
styles, or components back into content.
|
|
156
|
+
|
|
157
|
+
```mermaid
|
|
158
|
+
flowchart LR
|
|
159
|
+
shared["@willa-ui/shared"]
|
|
160
|
+
layout["@willa-ui/layout"]
|
|
161
|
+
content["@willa-ui/content"]
|
|
162
|
+
form["@willa-ui/form"]
|
|
163
|
+
ai["@willa-ui/ai"]
|
|
164
|
+
widgets["@willa-ui/widgets"]
|
|
165
|
+
willa["willa"]
|
|
166
|
+
example["example"]
|
|
167
|
+
|
|
168
|
+
content --> shared
|
|
169
|
+
content --> layout
|
|
170
|
+
layout --> shared
|
|
171
|
+
form --> shared
|
|
172
|
+
form --> layout
|
|
173
|
+
form --> content
|
|
174
|
+
ai --> shared
|
|
175
|
+
ai --> layout
|
|
176
|
+
ai --> form
|
|
177
|
+
ai --> content
|
|
178
|
+
widgets --> shared
|
|
179
|
+
widgets --> layout
|
|
180
|
+
widgets --> content
|
|
181
|
+
widgets --> form
|
|
182
|
+
willa --> layout
|
|
183
|
+
willa --> content
|
|
184
|
+
willa --> form
|
|
185
|
+
willa --> ai
|
|
186
|
+
willa --> widgets
|
|
187
|
+
example --> willa
|
|
188
|
+
example --> layout
|
|
189
|
+
example --> content
|
|
190
|
+
example --> form
|
|
191
|
+
example --> ai
|
|
192
|
+
example --> widgets
|
|
193
|
+
example --> shared
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
## Path Aliases
|
|
197
|
+
|
|
198
|
+
Prefer source aliases over deep relative paths:
|
|
199
|
+
|
|
200
|
+
- `#content/*` points to `packages/willa-content/src/*`
|
|
201
|
+
- `#layout/*` points to `packages/willa-layout/src/*`
|
|
202
|
+
- `#form/*` points to `packages/willa-form/src/*`
|
|
203
|
+
- `#ai/*` points to `packages/willa-ai/src/*`
|
|
204
|
+
- `#widgets/*` points to `packages/willa-widgets/src/*`
|
|
205
|
+
- `#shared/*` points to `packages/willa-shared/src/*`
|
|
206
|
+
- `#example/*` points to `example/src/*`
|
|
207
|
+
- `@willa-ui/*` points to package source roots
|
|
208
|
+
|
|
209
|
+
`willa/*` maps to single-component entries under `packages/willa/src/*`. When
|
|
210
|
+
adding path rules, prefer wildcard mappings instead of one-off file mappings.
|
|
211
|
+
|
|
212
|
+
## Build Relationships
|
|
213
|
+
|
|
214
|
+
Every publishable package uses `auklet.config.mjs`. `modules: true` generates
|
|
215
|
+
single-component entries. `styles.themes` declares the package's own theme CSS.
|
|
216
|
+
`styles.dependencies` declares cross-package CSS dependencies.
|
|
217
|
+
|
|
218
|
+
Core build outputs include:
|
|
219
|
+
|
|
220
|
+
- Package root entries, such as `@willa-ui/content`.
|
|
221
|
+
- Single-component entries, such as `willa/CodeBlock`.
|
|
222
|
+
- Package root CSS, such as `willa/style.css`.
|
|
223
|
+
- Single-component CSS, such as `willa/CodeBlock.css`.
|
|
224
|
+
- Theme CSS, such as `willa/themes/light.css` and `willa/themes/dark.css`.
|
|
225
|
+
|
|
226
|
+
```mermaid
|
|
227
|
+
flowchart TB
|
|
228
|
+
source["src components and themes"]
|
|
229
|
+
auklet["auklet build"]
|
|
230
|
+
js["JS entries"]
|
|
231
|
+
css["CSS entries"]
|
|
232
|
+
root["package root export"]
|
|
233
|
+
modules["single component exports"]
|
|
234
|
+
themes["theme css"]
|
|
235
|
+
|
|
236
|
+
source --> auklet
|
|
237
|
+
auklet --> js
|
|
238
|
+
auklet --> css
|
|
239
|
+
js --> root
|
|
240
|
+
js --> modules
|
|
241
|
+
css --> themes
|
|
242
|
+
css --> modules
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
## CSS Composition Flow
|
|
246
|
+
|
|
247
|
+
CSS composition is driven by `styles.dependencies` in `auklet.config.mjs`.
|
|
248
|
+
Content, form, AI, and widgets depend on layout CSS for base visual tokens and
|
|
249
|
+
layout component styles. Form, AI, and widgets also depend on content CSS when
|
|
250
|
+
they compose content components. AI and widgets can also depend on form CSS
|
|
251
|
+
when they compose form components. willa composes public package CSS.
|
|
252
|
+
|
|
253
|
+
```mermaid
|
|
254
|
+
flowchart LR
|
|
255
|
+
layoutCss["layout CSS and themes"]
|
|
256
|
+
contentOwn["content own CSS and themes"]
|
|
257
|
+
contentCss["content output CSS"]
|
|
258
|
+
formOwn["form own CSS and themes"]
|
|
259
|
+
formCss["form output CSS"]
|
|
260
|
+
aiOwn["AI own CSS and themes"]
|
|
261
|
+
aiCss["AI output CSS"]
|
|
262
|
+
widgetsOwn["widgets own CSS and themes"]
|
|
263
|
+
widgetsCss["widgets output CSS"]
|
|
264
|
+
willaCss["willa output CSS"]
|
|
265
|
+
|
|
266
|
+
layoutCss --> contentCss
|
|
267
|
+
contentOwn --> contentCss
|
|
268
|
+
layoutCss --> formCss
|
|
269
|
+
contentCss --> formCss
|
|
270
|
+
formOwn --> formCss
|
|
271
|
+
layoutCss --> aiCss
|
|
272
|
+
contentCss --> aiCss
|
|
273
|
+
aiOwn --> aiCss
|
|
274
|
+
layoutCss --> widgetsCss
|
|
275
|
+
contentCss --> widgetsCss
|
|
276
|
+
formCss --> widgetsCss
|
|
277
|
+
widgetsOwn --> widgetsCss
|
|
278
|
+
layoutCss --> willaCss
|
|
279
|
+
contentCss --> willaCss
|
|
280
|
+
formCss --> willaCss
|
|
281
|
+
aiCss --> willaCss
|
|
282
|
+
widgetsCss --> willaCss
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
This means higher-level packages can reference base visual tokens from layout
|
|
286
|
+
and component variables from their direct CSS dependencies. They must not copy
|
|
287
|
+
layout or content variable definitions. willa only composes CSS and does not
|
|
288
|
+
own component theme variables.
|
|
289
|
+
|
|
290
|
+
## Example Documentation Flow
|
|
291
|
+
|
|
292
|
+
Example documentation data lives in `example/src/docs`. The registry lives in
|
|
293
|
+
`example/src/catalog/registry.ts`. `registry.ts` keeps lightweight entries and
|
|
294
|
+
loads demos dynamically through `load`, so component code and CSS do not all
|
|
295
|
+
enter the initial page.
|
|
296
|
+
|
|
297
|
+
```mermaid
|
|
298
|
+
flowchart LR
|
|
299
|
+
registry["catalog registry"]
|
|
300
|
+
doc["ComponentName.demo.tsx"]
|
|
301
|
+
defineDoc["defineDoc"]
|
|
302
|
+
view["DocView"]
|
|
303
|
+
preview["live preview"]
|
|
304
|
+
code["generated code"]
|
|
305
|
+
|
|
306
|
+
registry --> doc
|
|
307
|
+
doc --> defineDoc
|
|
308
|
+
defineDoc --> view
|
|
309
|
+
view --> preview
|
|
310
|
+
view --> code
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
## Pitfalls
|
|
314
|
+
|
|
315
|
+
- Do not make layout or content depend on form, AI, or widgets. Do not make form
|
|
316
|
+
depend on AI or widgets. layout is the base visual layer, content is the base
|
|
317
|
+
product/content layer, form is the form layer, and AI and widgets are scenario
|
|
318
|
+
layers. Reversing this makes lower packages heavier and breaks
|
|
319
|
+
single-component CSS composition.
|
|
320
|
+
- Do not copy layout or content variables into higher-level package themes.
|
|
321
|
+
They already depend on upstream CSS and themes through
|
|
322
|
+
`styles.dependencies`; duplicate definitions make theme sources inconsistent.
|
|
323
|
+
- Do not add component theme variables to the willa aggregate package. willa
|
|
324
|
+
only combines public package CSS; component variables should follow the
|
|
325
|
+
package that owns the component source.
|
|
326
|
+
- Do not add per-package `tsconfig.json` files. Current aliases, strict checks,
|
|
327
|
+
and example source consumption depend on the root TypeScript config.
|
|
328
|
+
- Do not change `auklet.config.mjs` back to TypeScript. The current auklet
|
|
329
|
+
version does not support `auklet.config.ts`; use `.mjs` and `defineConfig`.
|
|
330
|
+
- Do not validate only package root entries. New public components must verify
|
|
331
|
+
package root imports, willa root imports, willa single-component imports, and
|
|
332
|
+
single-component CSS imports.
|
|
333
|
+
- Do not make `registry.ts` statically import demos. Example demos should load
|
|
334
|
+
only when selected.
|
|
335
|
+
- Portal component theme variables cannot live only on `.willa-shell`. For
|
|
336
|
+
example, `Lightbox` renders into `document.body`, so the variable scope must
|
|
337
|
+
also cover the component root.
|