haze-ui 1.25.0 → 1.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +98 -0
- package/dist/components/Accordion/Accordion.js +1 -0
- package/dist/components/Accordion/AccordionItem.js +1 -0
- package/dist/components/Accordion/index.js +1 -0
- package/dist/components/Affix/Affix.js +1 -0
- package/dist/components/Affix/index.js +1 -0
- package/dist/components/Alert/Alert.js +1 -0
- package/dist/components/Alert/index.js +1 -0
- package/dist/components/ApprovalCard/ApprovalCard.js +1 -0
- package/dist/components/ApprovalCard/index.js +1 -0
- package/dist/components/AspectRatio/AspectRatio.js +1 -0
- package/dist/components/AspectRatio/index.js +1 -0
- package/dist/components/AsyncSection/AsyncSection.js +1 -0
- package/dist/components/AsyncSection/index.js +1 -0
- package/dist/components/Avatar/Avatar.js +1 -0
- package/dist/components/Avatar/index.js +1 -0
- package/dist/components/AvatarGroup/AvatarGroup.js +1 -0
- package/dist/components/AvatarGroup/index.js +1 -0
- package/dist/components/BackToTop/BackToTop.js +1 -0
- package/dist/components/BackToTop/index.js +1 -0
- package/dist/components/Badge/Badge.js +1 -0
- package/dist/components/Badge/index.js +1 -0
- package/dist/components/Banner/Banner.js +1 -0
- package/dist/components/Banner/index.js +1 -0
- package/dist/components/BottomSheet/BottomSheet.js +1 -0
- package/dist/components/BottomSheet/index.js +1 -0
- package/dist/components/Breadcrumb/Breadcrumb.js +1 -0
- package/dist/components/Breadcrumb/BreadcrumbItem.js +1 -0
- package/dist/components/Breadcrumb/index.js +1 -0
- package/dist/components/Button/Button.js +1 -0
- package/dist/components/Button/ButtonLink.js +1 -0
- package/dist/components/Button/index.js +1 -0
- package/dist/components/Button/styles.js +1 -0
- package/dist/components/Calendar/Calendar.js +65 -93
- package/dist/components/Calendar/date.js +54 -0
- package/dist/components/Calendar/index.js +1 -0
- package/dist/components/Card/Card.js +1 -0
- package/dist/components/Card/index.js +1 -0
- package/dist/components/Carousel/Carousel.js +1 -0
- package/dist/components/Carousel/CarouselSlide.js +1 -0
- package/dist/components/Carousel/index.js +1 -0
- package/dist/components/Cascader/Cascader.js +1 -0
- package/dist/components/Cascader/index.js +1 -0
- package/dist/components/ChatContainer/ChatContainer.js +1 -0
- package/dist/components/ChatContainer/index.js +1 -0
- package/dist/components/ChatInput/ChatInput.js +1 -0
- package/dist/components/ChatInput/index.js +1 -0
- package/dist/components/ChatMessage/ChatMessage.js +1 -0
- package/dist/components/ChatMessage/index.js +1 -0
- package/dist/components/Checkbox/Checkbox.js +1 -0
- package/dist/components/Checkbox/CheckboxCore.js +1 -0
- package/dist/components/Checkbox/index.js +1 -0
- package/dist/components/Chip/Chip.js +1 -0
- package/dist/components/Chip/index.js +1 -0
- package/dist/components/CodeBlock/CodeBlock.js +1 -0
- package/dist/components/CodeBlock/index.js +1 -0
- package/dist/components/Collapsible/Collapsible.js +1 -0
- package/dist/components/Collapsible/index.js +1 -0
- package/dist/components/ColorPicker/ColorPicker.js +1 -0
- package/dist/components/ColorPicker/ColorPickerCore.js +1 -0
- package/dist/components/ColorPicker/index.js +1 -0
- package/dist/components/Combobox/Combobox.js +15 -7
- package/dist/components/Combobox/ComboboxOption.js +9 -5
- package/dist/components/Combobox/index.js +1 -0
- package/dist/components/Command/Command.js +1 -0
- package/dist/components/Command/index.js +1 -0
- package/dist/components/ConfirmDialog/ConfirmDialog.js +1 -0
- package/dist/components/ConfirmDialog/index.js +1 -0
- package/dist/components/Container/Container.js +1 -0
- package/dist/components/Container/index.js +1 -0
- package/dist/components/ContextMenu/ContextMenu.js +1 -0
- package/dist/components/ContextMenu/ContextMenuContent.js +1 -0
- package/dist/components/ContextMenu/ContextMenuContext.js +1 -0
- package/dist/components/ContextMenu/ContextMenuItem.js +1 -0
- package/dist/components/ContextMenu/ContextMenuSeparator.js +1 -0
- package/dist/components/ContextMenu/ContextMenuTrigger.js +1 -0
- package/dist/components/ContextMenu/index.js +1 -0
- package/dist/components/ConversationList/ConversationItem.js +1 -0
- package/dist/components/ConversationList/ConversationList.js +1 -0
- package/dist/components/ConversationList/index.js +1 -0
- package/dist/components/DataTable/DataTable.js +155 -113
- package/dist/components/DataTable/index.js +1 -0
- package/dist/components/DateRangePicker/DateRangePicker.js +1 -0
- package/dist/components/DateRangePicker/DateRangePickerCore.js +1 -0
- package/dist/components/DateRangePicker/index.js +1 -0
- package/dist/components/Datepicker/Datepicker.js +1 -0
- package/dist/components/Datepicker/DatepickerCore.js +1 -0
- package/dist/components/Datepicker/index.js +1 -0
- package/dist/components/Dialog/Dialog.js +1 -0
- package/dist/components/Dialog/index.js +1 -0
- package/dist/components/DiffViewer/DiffViewer.js +1 -0
- package/dist/components/DiffViewer/index.js +1 -0
- package/dist/components/Disclosure/Disclosure.js +1 -0
- package/dist/components/Disclosure/index.js +1 -0
- package/dist/components/Divider/Divider.js +1 -0
- package/dist/components/Divider/index.js +1 -0
- package/dist/components/Drawer/Drawer.js +1 -0
- package/dist/components/Drawer/index.js +1 -0
- package/dist/components/DropdownMenu/DropdownMenu.js +1 -0
- package/dist/components/DropdownMenu/DropdownMenuContent.js +1 -0
- package/dist/components/DropdownMenu/DropdownMenuContext.js +1 -0
- package/dist/components/DropdownMenu/DropdownMenuItem.js +1 -0
- package/dist/components/DropdownMenu/DropdownMenuSeparator.js +1 -0
- package/dist/components/DropdownMenu/DropdownMenuTrigger.js +1 -0
- package/dist/components/DropdownMenu/index.js +1 -0
- package/dist/components/Empty/Empty.js +1 -0
- package/dist/components/Empty/index.js +1 -0
- package/dist/components/FileInput/FileInput.js +1 -0
- package/dist/components/FileInput/index.js +1 -0
- package/dist/components/Flex/Flex.js +1 -0
- package/dist/components/Flex/index.js +1 -0
- package/dist/components/Grid/Grid.js +1 -0
- package/dist/components/Grid/GridItem.js +1 -0
- package/dist/components/Grid/index.js +1 -0
- package/dist/components/HoverCard/HoverCard.js +1 -0
- package/dist/components/HoverCard/index.js +1 -0
- package/dist/components/Icon/Icon.js +1 -0
- package/dist/components/Icon/index.js +1 -0
- package/dist/components/Image/Image.js +1 -0
- package/dist/components/Image/index.js +1 -0
- package/dist/components/InlineEdit/InlineEdit.js +1 -0
- package/dist/components/InlineEdit/index.js +1 -0
- package/dist/components/Input/Input.js +1 -0
- package/dist/components/Input/InputCore.js +1 -0
- package/dist/components/Input/index.js +1 -0
- package/dist/components/Kbd/Kbd.js +1 -0
- package/dist/components/Kbd/index.js +1 -0
- package/dist/components/List/List.js +1 -0
- package/dist/components/List/ListItem.js +1 -0
- package/dist/components/List/index.js +1 -0
- package/dist/components/LocaleProvider/LocaleContext.js +1 -0
- package/dist/components/LocaleProvider/LocaleProvider.js +1 -0
- package/dist/components/LocaleProvider/index.js +5 -3
- package/dist/components/LocaleProvider/locale.js +7 -1
- package/dist/components/LocaleProvider/useStrings.js +18 -8
- package/dist/components/LocaleProvider/zh-cn.js +128 -0
- package/dist/components/LogViewer/LogViewer.js +1 -0
- package/dist/components/LogViewer/index.js +1 -0
- package/dist/components/MarkdownRenderer/MarkdownRenderer.js +1 -0
- package/dist/components/MarkdownRenderer/index.js +1 -0
- package/dist/components/MarkdownRenderer/markdown-blocks.js +1 -0
- package/dist/components/Mentions/Mentions.js +17 -0
- package/dist/components/Mentions/MentionsCore.js +116 -0
- package/dist/components/Mentions/index.js +4 -0
- package/dist/components/Menu/Menu.js +1 -0
- package/dist/components/Menu/MenuDivider.js +1 -0
- package/dist/components/Menu/MenuItem.js +1 -0
- package/dist/components/Menu/index.js +1 -0
- package/dist/components/ModelPicker/ModelPicker.js +1 -0
- package/dist/components/ModelPicker/index.js +1 -0
- package/dist/components/NavigationBar/NavLink.js +1 -0
- package/dist/components/NavigationBar/NavigationBar.js +1 -0
- package/dist/components/NavigationBar/index.js +1 -0
- package/dist/components/NumberInput/NumberInput.js +1 -0
- package/dist/components/NumberInput/NumberInputCore.js +1 -0
- package/dist/components/NumberInput/index.js +1 -0
- package/dist/components/OTPInput/OTPInput.js +1 -0
- package/dist/components/OTPInput/OTPInputCore.js +1 -0
- package/dist/components/OTPInput/index.js +1 -0
- package/dist/components/Pagination/Pagination.js +1 -0
- package/dist/components/Pagination/index.js +1 -0
- package/dist/components/PasswordInput/PasswordInput.js +1 -0
- package/dist/components/PasswordInput/PasswordInputCore.js +1 -0
- package/dist/components/PasswordInput/index.js +1 -0
- package/dist/components/Popover/Popover.js +1 -0
- package/dist/components/Popover/index.js +1 -0
- package/dist/components/Progress/Progress.js +1 -0
- package/dist/components/Progress/index.js +1 -0
- package/dist/components/Radio/Radio.js +1 -0
- package/dist/components/Radio/RadioContext.js +1 -0
- package/dist/components/Radio/RadioGroup.js +1 -0
- package/dist/components/Radio/RadioGroupCore.js +1 -0
- package/dist/components/Radio/index.js +1 -0
- package/dist/components/Rating/Rating.js +1 -0
- package/dist/components/Rating/RatingCore.js +1 -0
- package/dist/components/Rating/index.js +1 -0
- package/dist/components/Resizable/Resizable.js +1 -0
- package/dist/components/Resizable/index.js +1 -0
- package/dist/components/ScrollArea/ScrollArea.js +1 -0
- package/dist/components/ScrollArea/index.js +1 -0
- package/dist/components/Segmented/Segmented.js +1 -0
- package/dist/components/Segmented/SegmentedCore.js +1 -0
- package/dist/components/Segmented/index.js +1 -0
- package/dist/components/Select/Option.js +1 -0
- package/dist/components/Select/Select.js +1 -0
- package/dist/components/Select/SelectCore.js +1 -0
- package/dist/components/Select/index.js +1 -0
- package/dist/components/Sidebar/Sidebar.js +1 -0
- package/dist/components/Sidebar/index.js +1 -0
- package/dist/components/Skeleton/Skeleton.js +1 -0
- package/dist/components/Skeleton/index.js +1 -0
- package/dist/components/Slider/Slider.js +1 -0
- package/dist/components/Slider/SliderCore.js +1 -0
- package/dist/components/Slider/index.js +1 -0
- package/dist/components/Spinner/Spinner.js +1 -0
- package/dist/components/Spinner/index.js +1 -0
- package/dist/components/Stat/Stat.js +1 -0
- package/dist/components/Stat/index.js +1 -0
- package/dist/components/StepTimeline/StepTimeline.js +1 -0
- package/dist/components/StepTimeline/index.js +1 -0
- package/dist/components/Stepper/Step.js +1 -0
- package/dist/components/Stepper/Stepper.js +1 -0
- package/dist/components/Stepper/StepperContext.js +1 -0
- package/dist/components/Stepper/index.js +1 -0
- package/dist/components/StreamingText/StreamingText.js +1 -0
- package/dist/components/StreamingText/index.js +1 -0
- package/dist/components/SwipeAction/SwipeAction.js +1 -0
- package/dist/components/SwipeAction/index.js +1 -0
- package/dist/components/Switch/Switch.js +1 -0
- package/dist/components/Switch/SwitchCore.js +1 -0
- package/dist/components/Switch/index.js +1 -0
- package/dist/components/Table/Table.js +1 -0
- package/dist/components/Table/TableBody.js +1 -0
- package/dist/components/Table/TableCell.js +1 -0
- package/dist/components/Table/TableHead.js +1 -0
- package/dist/components/Table/TableRow.js +1 -0
- package/dist/components/Table/index.js +1 -0
- package/dist/components/Tabs/Tab.js +1 -0
- package/dist/components/Tabs/TabList.js +1 -0
- package/dist/components/Tabs/TabPanel.js +1 -0
- package/dist/components/Tabs/Tabs.js +1 -0
- package/dist/components/Tabs/TabsContext.js +1 -0
- package/dist/components/Tabs/index.js +1 -0
- package/dist/components/Tag/Tag.js +1 -0
- package/dist/components/Tag/index.js +1 -0
- package/dist/components/TagGroup/TagGroup.js +1 -0
- package/dist/components/TagGroup/TagGroupItem.js +1 -0
- package/dist/components/TagGroup/index.js +1 -0
- package/dist/components/TagInput/TagInput.js +1 -0
- package/dist/components/TagInput/TagInputCore.js +1 -0
- package/dist/components/TagInput/index.js +1 -0
- package/dist/components/Textarea/Textarea.js +1 -0
- package/dist/components/Textarea/TextareaCore.js +1 -0
- package/dist/components/Textarea/index.js +1 -0
- package/dist/components/ThinkingIndicator/ThinkingIndicator.js +1 -0
- package/dist/components/ThinkingIndicator/index.js +1 -0
- package/dist/components/TimePicker/TimePicker.js +1 -0
- package/dist/components/TimePicker/TimePickerCore.js +1 -0
- package/dist/components/TimePicker/index.js +1 -0
- package/dist/components/Timeline/Timeline.js +1 -0
- package/dist/components/Timeline/index.js +1 -0
- package/dist/components/Toast/Toast.js +36 -30
- package/dist/components/Toast/ToastContainer.js +1 -0
- package/dist/components/Toast/ToastContext.js +1 -0
- package/dist/components/Toast/index.js +1 -0
- package/dist/components/Toast/toast2.js +1 -0
- package/dist/components/Toast/useToast.js +1 -0
- package/dist/components/TokenCounter/TokenCounter.js +1 -0
- package/dist/components/TokenCounter/index.js +1 -0
- package/dist/components/ToolCallCard/ToolCallCard.js +1 -0
- package/dist/components/ToolCallCard/index.js +1 -0
- package/dist/components/Toolbar/Toolbar.js +1 -0
- package/dist/components/Toolbar/ToolbarButton.js +1 -0
- package/dist/components/Toolbar/ToolbarContext.js +1 -0
- package/dist/components/Toolbar/ToolbarSeparator.js +1 -0
- package/dist/components/Toolbar/index.js +1 -0
- package/dist/components/Tooltip/Tooltip.js +1 -0
- package/dist/components/Tooltip/index.js +1 -0
- package/dist/components/Tour/Tour.js +1 -0
- package/dist/components/Tour/index.js +1 -0
- package/dist/components/Transfer/Transfer.js +1 -0
- package/dist/components/Transfer/TransferCore.js +1 -0
- package/dist/components/Transfer/index.js +1 -0
- package/dist/components/Tree/Tree.js +1 -0
- package/dist/components/Tree/TreeItem.js +1 -0
- package/dist/components/Tree/index.js +1 -0
- package/dist/components/Tree/utils.js +1 -0
- package/dist/components/Typography/Typography.js +1 -0
- package/dist/components/Typography/index.js +1 -0
- package/dist/components/Upload/Upload.js +1 -0
- package/dist/components/Upload/UploadCore.js +1 -0
- package/dist/components/Upload/index.js +1 -0
- package/dist/components/VirtualList/VirtualList.js +1 -0
- package/dist/components/VirtualList/index.js +1 -0
- package/dist/css/accordion.css +1 -1
- package/dist/css/alert.css +1 -1
- package/dist/css/approval-card.css +1 -1
- package/dist/css/async-section.css +1 -1
- package/dist/css/back-to-top.css +1 -1
- package/dist/css/breadcrumb.css +1 -1
- package/dist/css/button.css +1 -1
- package/dist/css/carousel.css +1 -1
- package/dist/css/cascader.css +1 -1
- package/dist/css/chat-input.css +1 -1
- package/dist/css/checkbox.css +1 -1
- package/dist/css/chip.css +1 -1
- package/dist/css/color-picker.css +1 -1
- package/dist/css/combobox.css +1 -1
- package/dist/css/command.css +1 -1
- package/dist/css/context-menu.css +1 -1
- package/dist/css/conversation-list.css +1 -1
- package/dist/css/data-table.css +1 -1
- package/dist/css/date-range-picker.css +1 -1
- package/dist/css/datepicker.css +1 -1
- package/dist/css/disclosure.css +1 -1
- package/dist/css/dropdown-menu.css +1 -1
- package/dist/css/file-input.css +1 -1
- package/dist/css/inline-edit.css +1 -1
- package/dist/css/input.css +1 -1
- package/dist/css/log-viewer.css +1 -1
- package/dist/css/mentions.css +2 -0
- package/dist/css/menu.css +1 -1
- package/dist/css/model-picker.css +1 -1
- package/dist/css/navigation-bar.css +1 -1
- package/dist/css/number-input.css +1 -1
- package/dist/css/otp-input.css +1 -1
- package/dist/css/pagination.css +1 -1
- package/dist/css/password-input.css +1 -1
- package/dist/css/progress.css +1 -1
- package/dist/css/radio.css +1 -1
- package/dist/css/rating.css +1 -1
- package/dist/css/resizable.css +1 -1
- package/dist/css/segmented.css +1 -1
- package/dist/css/select.css +1 -1
- package/dist/css/slider.css +1 -1
- package/dist/css/stepper.css +1 -1
- package/dist/css/swipe-action.css +1 -1
- package/dist/css/switch.css +1 -1
- package/dist/css/tabs.css +1 -1
- package/dist/css/tag-input.css +1 -1
- package/dist/css/tag.css +1 -1
- package/dist/css/textarea.css +1 -1
- package/dist/css/time-picker.css +1 -1
- package/dist/css/token-counter.css +1 -1
- package/dist/css/tokens.css +1 -1
- package/dist/css/tree.css +1 -1
- package/dist/css/upload.css +1 -1
- package/dist/css-manifest.json +10 -1
- package/dist/form/FormItem.js +1 -0
- package/dist/form/index.js +1 -0
- package/dist/haze-ui.css +53 -52
- package/dist/hooks/useClipboard.js +30 -0
- package/dist/hooks/useDebouncedCallback.js +17 -0
- package/dist/hooks/useDebouncedValue.js +12 -0
- package/dist/hooks/useMediaQuery.js +13 -0
- package/dist/hooks/usePrefersReducedMotion.js +9 -0
- package/dist/hooks/useTitle.js +1 -0
- package/dist/index.js +138 -129
- package/dist/registry.json +15 -15
- package/dist/tokens/colors.js +1 -0
- package/dist/tokens/index.js +1 -0
- package/dist/tokens/motion.js +1 -0
- package/dist/tokens/oklch.js +1 -0
- package/dist/tokens/palette.js +1 -0
- package/dist/tokens/registry.js +1 -0
- package/dist/tokens/spacing.js +1 -0
- package/dist/tokens/typography.js +1 -0
- package/dist/types/components/Calendar/date.d.ts +79 -0
- package/dist/types/components/Combobox/ComboboxOption.d.ts +13 -1
- package/dist/types/components/DataTable/DataTable.d.ts +43 -2
- package/dist/types/components/DataTable/index.d.ts +1 -1
- package/dist/types/components/LocaleProvider/LocaleContext.d.ts +1 -1
- package/dist/types/components/LocaleProvider/LocaleProvider.d.ts +5 -2
- package/dist/types/components/LocaleProvider/index.d.ts +2 -1
- package/dist/types/components/LocaleProvider/locale.d.ts +7 -1
- package/dist/types/components/LocaleProvider/useStrings.d.ts +5 -4
- package/dist/types/components/LocaleProvider/zh-cn.d.ts +13 -0
- package/dist/types/components/Mentions/Mentions.d.ts +17 -0
- package/dist/types/components/Mentions/MentionsCore.d.ts +21 -0
- package/dist/types/components/Mentions/index.d.ts +4 -0
- package/dist/types/hooks/index.d.ts +6 -0
- package/dist/types/hooks/useClipboard.d.ts +31 -0
- package/dist/types/hooks/useDebouncedCallback.d.ts +21 -0
- package/dist/types/hooks/useDebouncedValue.d.ts +20 -0
- package/dist/types/hooks/useMediaQuery.d.ts +17 -0
- package/dist/types/hooks/usePrefersReducedMotion.d.ts +14 -0
- package/dist/types/index.d.ts +6 -3
- package/dist/utils/classnames.js +1 -0
- package/dist/utils/collision.js +1 -0
- package/dist/utils/floating.js +1 -0
- package/dist/utils/focus-scope.js +1 -0
- package/dist/utils/focus.js +1 -0
- package/dist/utils/menuKeyboard.js +1 -0
- package/dist/utils/presence.js +1 -0
- package/package.json +15 -13
package/dist/registry.json
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"files": [
|
|
15
15
|
{
|
|
16
16
|
"path": "components/haze/chat-message.tsx",
|
|
17
|
-
"content": "// haze-ui agent component wrapper — generated by scripts/generate-registry.mjs.\n//\n// This file deliberately contains no component source: haze-ui is compiled\n// CSS-in-JS (linaria) styled against --haze-* design tokens, so vendoring\n// the source would neither build nor style. It re-exports the published\n// component and imports its stylesheet instead — treat this file as your\n// customization layer (wrap, restyle, compose) while haze-ui stays an npm\n// dependency and keeps updating underneath.\n//\n// Theming (once per app): apply the token classes to a root element, e.g.\n// import { lightTheme, spacing, typography } from 'haze-ui';\n// <div className={`${lightTheme} ${spacing} ${typography}`}>…</div>\n// (darkTheme is a drop-in swap).
|
|
17
|
+
"content": "// haze-ui agent component wrapper — generated by scripts/generate-registry.mjs.\n//\n// This file deliberately contains no component source: haze-ui is compiled\n// CSS-in-JS (linaria) styled against --haze-* design tokens, so vendoring\n// the source would neither build nor style. It re-exports the published\n// component and imports its stylesheet instead — treat this file as your\n// customization layer (wrap, restyle, compose) while haze-ui stays an npm\n// dependency and keeps updating underneath.\n//\n// Theming (once per app): apply the token classes to a root element, e.g.\n// import { lightTheme, spacing, typography } from 'haze-ui';\n// <div className={`${lightTheme} ${spacing} ${typography}`}>…</div>\n// (darkTheme is a drop-in swap). haze-ui dist modules ship their own\n// 'use client' directive, so imports resolve cleanly from RSC; the\n// wrapper inherits client semantics either way.\n\nimport { ChatMessage } from 'haze-ui';\n\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/chat-message.css';\n\nexport { ChatMessage };\nexport type { ChatMessageProps, ChatMessageRole } from 'haze-ui';\n",
|
|
18
18
|
"type": "registry:component"
|
|
19
19
|
}
|
|
20
20
|
]
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"files": [
|
|
31
31
|
{
|
|
32
32
|
"path": "components/haze/chat-container.tsx",
|
|
33
|
-
"content": "// haze-ui agent component wrapper — generated by scripts/generate-registry.mjs.\n//\n// This file deliberately contains no component source: haze-ui is compiled\n// CSS-in-JS (linaria) styled against --haze-* design tokens, so vendoring\n// the source would neither build nor style. It re-exports the published\n// component and imports its stylesheet instead — treat this file as your\n// customization layer (wrap, restyle, compose) while haze-ui stays an npm\n// dependency and keeps updating underneath.\n//\n// Theming (once per app): apply the token classes to a root element, e.g.\n// import { lightTheme, spacing, typography } from 'haze-ui';\n// <div className={`${lightTheme} ${spacing} ${typography}`}>…</div>\n// (darkTheme is a drop-in swap).
|
|
33
|
+
"content": "// haze-ui agent component wrapper — generated by scripts/generate-registry.mjs.\n//\n// This file deliberately contains no component source: haze-ui is compiled\n// CSS-in-JS (linaria) styled against --haze-* design tokens, so vendoring\n// the source would neither build nor style. It re-exports the published\n// component and imports its stylesheet instead — treat this file as your\n// customization layer (wrap, restyle, compose) while haze-ui stays an npm\n// dependency and keeps updating underneath.\n//\n// Theming (once per app): apply the token classes to a root element, e.g.\n// import { lightTheme, spacing, typography } from 'haze-ui';\n// <div className={`${lightTheme} ${spacing} ${typography}`}>…</div>\n// (darkTheme is a drop-in swap). haze-ui dist modules ship their own\n// 'use client' directive, so imports resolve cleanly from RSC; the\n// wrapper inherits client semantics either way.\n\nimport { ChatContainer } from 'haze-ui';\n\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/chat-container.css';\n\nexport { ChatContainer };\nexport type { ChatContainerProps } from 'haze-ui';\n",
|
|
34
34
|
"type": "registry:component"
|
|
35
35
|
}
|
|
36
36
|
]
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"files": [
|
|
47
47
|
{
|
|
48
48
|
"path": "components/haze/chat-input.tsx",
|
|
49
|
-
"content": "// haze-ui agent component wrapper — generated by scripts/generate-registry.mjs.\n//\n// This file deliberately contains no component source: haze-ui is compiled\n// CSS-in-JS (linaria) styled against --haze-* design tokens, so vendoring\n// the source would neither build nor style. It re-exports the published\n// component and imports its stylesheet instead — treat this file as your\n// customization layer (wrap, restyle, compose) while haze-ui stays an npm\n// dependency and keeps updating underneath.\n//\n// Theming (once per app): apply the token classes to a root element, e.g.\n// import { lightTheme, spacing, typography } from 'haze-ui';\n// <div className={`${lightTheme} ${spacing} ${typography}`}>…</div>\n// (darkTheme is a drop-in swap).
|
|
49
|
+
"content": "// haze-ui agent component wrapper — generated by scripts/generate-registry.mjs.\n//\n// This file deliberately contains no component source: haze-ui is compiled\n// CSS-in-JS (linaria) styled against --haze-* design tokens, so vendoring\n// the source would neither build nor style. It re-exports the published\n// component and imports its stylesheet instead — treat this file as your\n// customization layer (wrap, restyle, compose) while haze-ui stays an npm\n// dependency and keeps updating underneath.\n//\n// Theming (once per app): apply the token classes to a root element, e.g.\n// import { lightTheme, spacing, typography } from 'haze-ui';\n// <div className={`${lightTheme} ${spacing} ${typography}`}>…</div>\n// (darkTheme is a drop-in swap). haze-ui dist modules ship their own\n// 'use client' directive, so imports resolve cleanly from RSC; the\n// wrapper inherits client semantics either way.\n\nimport { ChatInput } from 'haze-ui';\n\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/chat-input.css';\n\nexport { ChatInput };\nexport type { ChatInputProps } from 'haze-ui';\n",
|
|
50
50
|
"type": "registry:component"
|
|
51
51
|
}
|
|
52
52
|
]
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"files": [
|
|
63
63
|
{
|
|
64
64
|
"path": "components/haze/streaming-text.tsx",
|
|
65
|
-
"content": "// haze-ui agent component wrapper — generated by scripts/generate-registry.mjs.\n//\n// This file deliberately contains no component source: haze-ui is compiled\n// CSS-in-JS (linaria) styled against --haze-* design tokens, so vendoring\n// the source would neither build nor style. It re-exports the published\n// component and imports its stylesheet instead — treat this file as your\n// customization layer (wrap, restyle, compose) while haze-ui stays an npm\n// dependency and keeps updating underneath.\n//\n// Theming (once per app): apply the token classes to a root element, e.g.\n// import { lightTheme, spacing, typography } from 'haze-ui';\n// <div className={`${lightTheme} ${spacing} ${typography}`}>…</div>\n// (darkTheme is a drop-in swap).
|
|
65
|
+
"content": "// haze-ui agent component wrapper — generated by scripts/generate-registry.mjs.\n//\n// This file deliberately contains no component source: haze-ui is compiled\n// CSS-in-JS (linaria) styled against --haze-* design tokens, so vendoring\n// the source would neither build nor style. It re-exports the published\n// component and imports its stylesheet instead — treat this file as your\n// customization layer (wrap, restyle, compose) while haze-ui stays an npm\n// dependency and keeps updating underneath.\n//\n// Theming (once per app): apply the token classes to a root element, e.g.\n// import { lightTheme, spacing, typography } from 'haze-ui';\n// <div className={`${lightTheme} ${spacing} ${typography}`}>…</div>\n// (darkTheme is a drop-in swap). haze-ui dist modules ship their own\n// 'use client' directive, so imports resolve cleanly from RSC; the\n// wrapper inherits client semantics either way.\n\nimport { StreamingText } from 'haze-ui';\n\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/streaming-text.css';\n\nexport { StreamingText };\nexport type { StreamingTextProps } from 'haze-ui';\n",
|
|
66
66
|
"type": "registry:component"
|
|
67
67
|
}
|
|
68
68
|
]
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
"files": [
|
|
79
79
|
{
|
|
80
80
|
"path": "components/haze/markdown-renderer.tsx",
|
|
81
|
-
"content": "// haze-ui agent component wrapper — generated by scripts/generate-registry.mjs.\n//\n// This file deliberately contains no component source: haze-ui is compiled\n// CSS-in-JS (linaria) styled against --haze-* design tokens, so vendoring\n// the source would neither build nor style. It re-exports the published\n// component and imports its stylesheet instead — treat this file as your\n// customization layer (wrap, restyle, compose) while haze-ui stays an npm\n// dependency and keeps updating underneath.\n//\n// Theming (once per app): apply the token classes to a root element, e.g.\n// import { lightTheme, spacing, typography } from 'haze-ui';\n// <div className={`${lightTheme} ${spacing} ${typography}`}>…</div>\n// (darkTheme is a drop-in swap).
|
|
81
|
+
"content": "// haze-ui agent component wrapper — generated by scripts/generate-registry.mjs.\n//\n// This file deliberately contains no component source: haze-ui is compiled\n// CSS-in-JS (linaria) styled against --haze-* design tokens, so vendoring\n// the source would neither build nor style. It re-exports the published\n// component and imports its stylesheet instead — treat this file as your\n// customization layer (wrap, restyle, compose) while haze-ui stays an npm\n// dependency and keeps updating underneath.\n//\n// Theming (once per app): apply the token classes to a root element, e.g.\n// import { lightTheme, spacing, typography } from 'haze-ui';\n// <div className={`${lightTheme} ${spacing} ${typography}`}>…</div>\n// (darkTheme is a drop-in swap). haze-ui dist modules ship their own\n// 'use client' directive, so imports resolve cleanly from RSC; the\n// wrapper inherits client semantics either way.\n\nimport { MarkdownRenderer } from 'haze-ui';\n\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/markdown-renderer.css';\n\nexport { MarkdownRenderer };\nexport type { MarkdownRendererProps } from 'haze-ui';\n",
|
|
82
82
|
"type": "registry:component"
|
|
83
83
|
}
|
|
84
84
|
]
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
"files": [
|
|
95
95
|
{
|
|
96
96
|
"path": "components/haze/tool-call-card.tsx",
|
|
97
|
-
"content": "// haze-ui agent component wrapper — generated by scripts/generate-registry.mjs.\n//\n// This file deliberately contains no component source: haze-ui is compiled\n// CSS-in-JS (linaria) styled against --haze-* design tokens, so vendoring\n// the source would neither build nor style. It re-exports the published\n// component and imports its stylesheet instead — treat this file as your\n// customization layer (wrap, restyle, compose) while haze-ui stays an npm\n// dependency and keeps updating underneath.\n//\n// Theming (once per app): apply the token classes to a root element, e.g.\n// import { lightTheme, spacing, typography } from 'haze-ui';\n// <div className={`${lightTheme} ${spacing} ${typography}`}>…</div>\n// (darkTheme is a drop-in swap).
|
|
97
|
+
"content": "// haze-ui agent component wrapper — generated by scripts/generate-registry.mjs.\n//\n// This file deliberately contains no component source: haze-ui is compiled\n// CSS-in-JS (linaria) styled against --haze-* design tokens, so vendoring\n// the source would neither build nor style. It re-exports the published\n// component and imports its stylesheet instead — treat this file as your\n// customization layer (wrap, restyle, compose) while haze-ui stays an npm\n// dependency and keeps updating underneath.\n//\n// Theming (once per app): apply the token classes to a root element, e.g.\n// import { lightTheme, spacing, typography } from 'haze-ui';\n// <div className={`${lightTheme} ${spacing} ${typography}`}>…</div>\n// (darkTheme is a drop-in swap). haze-ui dist modules ship their own\n// 'use client' directive, so imports resolve cleanly from RSC; the\n// wrapper inherits client semantics either way.\n\nimport { ToolCallCard } from 'haze-ui';\n\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/tool-call-card.css';\n\nexport { ToolCallCard };\nexport type { ToolCallCardProps, ToolCallStatus } from 'haze-ui';\n",
|
|
98
98
|
"type": "registry:component"
|
|
99
99
|
}
|
|
100
100
|
]
|
|
@@ -110,7 +110,7 @@
|
|
|
110
110
|
"files": [
|
|
111
111
|
{
|
|
112
112
|
"path": "components/haze/thinking-indicator.tsx",
|
|
113
|
-
"content": "// haze-ui agent component wrapper — generated by scripts/generate-registry.mjs.\n//\n// This file deliberately contains no component source: haze-ui is compiled\n// CSS-in-JS (linaria) styled against --haze-* design tokens, so vendoring\n// the source would neither build nor style. It re-exports the published\n// component and imports its stylesheet instead — treat this file as your\n// customization layer (wrap, restyle, compose) while haze-ui stays an npm\n// dependency and keeps updating underneath.\n//\n// Theming (once per app): apply the token classes to a root element, e.g.\n// import { lightTheme, spacing, typography } from 'haze-ui';\n// <div className={`${lightTheme} ${spacing} ${typography}`}>…</div>\n// (darkTheme is a drop-in swap).
|
|
113
|
+
"content": "// haze-ui agent component wrapper — generated by scripts/generate-registry.mjs.\n//\n// This file deliberately contains no component source: haze-ui is compiled\n// CSS-in-JS (linaria) styled against --haze-* design tokens, so vendoring\n// the source would neither build nor style. It re-exports the published\n// component and imports its stylesheet instead — treat this file as your\n// customization layer (wrap, restyle, compose) while haze-ui stays an npm\n// dependency and keeps updating underneath.\n//\n// Theming (once per app): apply the token classes to a root element, e.g.\n// import { lightTheme, spacing, typography } from 'haze-ui';\n// <div className={`${lightTheme} ${spacing} ${typography}`}>…</div>\n// (darkTheme is a drop-in swap). haze-ui dist modules ship their own\n// 'use client' directive, so imports resolve cleanly from RSC; the\n// wrapper inherits client semantics either way.\n\nimport { ThinkingIndicator } from 'haze-ui';\n\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/thinking-indicator.css';\n\nexport { ThinkingIndicator };\nexport type { ThinkingIndicatorProps } from 'haze-ui';\n",
|
|
114
114
|
"type": "registry:component"
|
|
115
115
|
}
|
|
116
116
|
]
|
|
@@ -126,7 +126,7 @@
|
|
|
126
126
|
"files": [
|
|
127
127
|
{
|
|
128
128
|
"path": "components/haze/step-timeline.tsx",
|
|
129
|
-
"content": "// haze-ui agent component wrapper — generated by scripts/generate-registry.mjs.\n//\n// This file deliberately contains no component source: haze-ui is compiled\n// CSS-in-JS (linaria) styled against --haze-* design tokens, so vendoring\n// the source would neither build nor style. It re-exports the published\n// component and imports its stylesheet instead — treat this file as your\n// customization layer (wrap, restyle, compose) while haze-ui stays an npm\n// dependency and keeps updating underneath.\n//\n// Theming (once per app): apply the token classes to a root element, e.g.\n// import { lightTheme, spacing, typography } from 'haze-ui';\n// <div className={`${lightTheme} ${spacing} ${typography}`}>…</div>\n// (darkTheme is a drop-in swap).
|
|
129
|
+
"content": "// haze-ui agent component wrapper — generated by scripts/generate-registry.mjs.\n//\n// This file deliberately contains no component source: haze-ui is compiled\n// CSS-in-JS (linaria) styled against --haze-* design tokens, so vendoring\n// the source would neither build nor style. It re-exports the published\n// component and imports its stylesheet instead — treat this file as your\n// customization layer (wrap, restyle, compose) while haze-ui stays an npm\n// dependency and keeps updating underneath.\n//\n// Theming (once per app): apply the token classes to a root element, e.g.\n// import { lightTheme, spacing, typography } from 'haze-ui';\n// <div className={`${lightTheme} ${spacing} ${typography}`}>…</div>\n// (darkTheme is a drop-in swap). haze-ui dist modules ship their own\n// 'use client' directive, so imports resolve cleanly from RSC; the\n// wrapper inherits client semantics either way.\n\nimport { StepTimeline, StepTimelineItem } from 'haze-ui';\n\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/step-timeline.css';\n\nexport { StepTimeline, StepTimelineItem };\nexport type { StepTimelineProps, StepTimelineItemProps, StepStatus } from 'haze-ui';\n",
|
|
130
130
|
"type": "registry:component"
|
|
131
131
|
}
|
|
132
132
|
]
|
|
@@ -142,7 +142,7 @@
|
|
|
142
142
|
"files": [
|
|
143
143
|
{
|
|
144
144
|
"path": "components/haze/approval-card.tsx",
|
|
145
|
-
"content": "// haze-ui agent component wrapper — generated by scripts/generate-registry.mjs.\n//\n// This file deliberately contains no component source: haze-ui is compiled\n// CSS-in-JS (linaria) styled against --haze-* design tokens, so vendoring\n// the source would neither build nor style. It re-exports the published\n// component and imports its stylesheet instead — treat this file as your\n// customization layer (wrap, restyle, compose) while haze-ui stays an npm\n// dependency and keeps updating underneath.\n//\n// Theming (once per app): apply the token classes to a root element, e.g.\n// import { lightTheme, spacing, typography } from 'haze-ui';\n// <div className={`${lightTheme} ${spacing} ${typography}`}>…</div>\n// (darkTheme is a drop-in swap).
|
|
145
|
+
"content": "// haze-ui agent component wrapper — generated by scripts/generate-registry.mjs.\n//\n// This file deliberately contains no component source: haze-ui is compiled\n// CSS-in-JS (linaria) styled against --haze-* design tokens, so vendoring\n// the source would neither build nor style. It re-exports the published\n// component and imports its stylesheet instead — treat this file as your\n// customization layer (wrap, restyle, compose) while haze-ui stays an npm\n// dependency and keeps updating underneath.\n//\n// Theming (once per app): apply the token classes to a root element, e.g.\n// import { lightTheme, spacing, typography } from 'haze-ui';\n// <div className={`${lightTheme} ${spacing} ${typography}`}>…</div>\n// (darkTheme is a drop-in swap). haze-ui dist modules ship their own\n// 'use client' directive, so imports resolve cleanly from RSC; the\n// wrapper inherits client semantics either way.\n\nimport { ApprovalCard } from 'haze-ui';\n\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/approval-card.css';\n\nexport { ApprovalCard };\nexport type { ApprovalCardProps } from 'haze-ui';\n",
|
|
146
146
|
"type": "registry:component"
|
|
147
147
|
}
|
|
148
148
|
]
|
|
@@ -158,7 +158,7 @@
|
|
|
158
158
|
"files": [
|
|
159
159
|
{
|
|
160
160
|
"path": "components/haze/token-counter.tsx",
|
|
161
|
-
"content": "// haze-ui agent component wrapper — generated by scripts/generate-registry.mjs.\n//\n// This file deliberately contains no component source: haze-ui is compiled\n// CSS-in-JS (linaria) styled against --haze-* design tokens, so vendoring\n// the source would neither build nor style. It re-exports the published\n// component and imports its stylesheet instead — treat this file as your\n// customization layer (wrap, restyle, compose) while haze-ui stays an npm\n// dependency and keeps updating underneath.\n//\n// Theming (once per app): apply the token classes to a root element, e.g.\n// import { lightTheme, spacing, typography } from 'haze-ui';\n// <div className={`${lightTheme} ${spacing} ${typography}`}>…</div>\n// (darkTheme is a drop-in swap).
|
|
161
|
+
"content": "// haze-ui agent component wrapper — generated by scripts/generate-registry.mjs.\n//\n// This file deliberately contains no component source: haze-ui is compiled\n// CSS-in-JS (linaria) styled against --haze-* design tokens, so vendoring\n// the source would neither build nor style. It re-exports the published\n// component and imports its stylesheet instead — treat this file as your\n// customization layer (wrap, restyle, compose) while haze-ui stays an npm\n// dependency and keeps updating underneath.\n//\n// Theming (once per app): apply the token classes to a root element, e.g.\n// import { lightTheme, spacing, typography } from 'haze-ui';\n// <div className={`${lightTheme} ${spacing} ${typography}`}>…</div>\n// (darkTheme is a drop-in swap). haze-ui dist modules ship their own\n// 'use client' directive, so imports resolve cleanly from RSC; the\n// wrapper inherits client semantics either way.\n\nimport { TokenCounter } from 'haze-ui';\n\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/token-counter.css';\n\nexport { TokenCounter };\nexport type { TokenCounterProps } from 'haze-ui';\n",
|
|
162
162
|
"type": "registry:component"
|
|
163
163
|
}
|
|
164
164
|
]
|
|
@@ -174,7 +174,7 @@
|
|
|
174
174
|
"files": [
|
|
175
175
|
{
|
|
176
176
|
"path": "components/haze/model-picker.tsx",
|
|
177
|
-
"content": "// haze-ui agent component wrapper — generated by scripts/generate-registry.mjs.\n//\n// This file deliberately contains no component source: haze-ui is compiled\n// CSS-in-JS (linaria) styled against --haze-* design tokens, so vendoring\n// the source would neither build nor style. It re-exports the published\n// component and imports its stylesheet instead — treat this file as your\n// customization layer (wrap, restyle, compose) while haze-ui stays an npm\n// dependency and keeps updating underneath.\n//\n// Theming (once per app): apply the token classes to a root element, e.g.\n// import { lightTheme, spacing, typography } from 'haze-ui';\n// <div className={`${lightTheme} ${spacing} ${typography}`}>…</div>\n// (darkTheme is a drop-in swap).
|
|
177
|
+
"content": "// haze-ui agent component wrapper — generated by scripts/generate-registry.mjs.\n//\n// This file deliberately contains no component source: haze-ui is compiled\n// CSS-in-JS (linaria) styled against --haze-* design tokens, so vendoring\n// the source would neither build nor style. It re-exports the published\n// component and imports its stylesheet instead — treat this file as your\n// customization layer (wrap, restyle, compose) while haze-ui stays an npm\n// dependency and keeps updating underneath.\n//\n// Theming (once per app): apply the token classes to a root element, e.g.\n// import { lightTheme, spacing, typography } from 'haze-ui';\n// <div className={`${lightTheme} ${spacing} ${typography}`}>…</div>\n// (darkTheme is a drop-in swap). haze-ui dist modules ship their own\n// 'use client' directive, so imports resolve cleanly from RSC; the\n// wrapper inherits client semantics either way.\n\nimport { ModelPicker } from 'haze-ui';\n\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/model-picker.css';\n\nexport { ModelPicker };\nexport type { ModelPickerProps, ModelOption } from 'haze-ui';\n",
|
|
178
178
|
"type": "registry:component"
|
|
179
179
|
}
|
|
180
180
|
]
|
|
@@ -190,7 +190,7 @@
|
|
|
190
190
|
"files": [
|
|
191
191
|
{
|
|
192
192
|
"path": "components/haze/conversation-list.tsx",
|
|
193
|
-
"content": "// haze-ui agent component wrapper — generated by scripts/generate-registry.mjs.\n//\n// This file deliberately contains no component source: haze-ui is compiled\n// CSS-in-JS (linaria) styled against --haze-* design tokens, so vendoring\n// the source would neither build nor style. It re-exports the published\n// component and imports its stylesheet instead — treat this file as your\n// customization layer (wrap, restyle, compose) while haze-ui stays an npm\n// dependency and keeps updating underneath.\n//\n// Theming (once per app): apply the token classes to a root element, e.g.\n// import { lightTheme, spacing, typography } from 'haze-ui';\n// <div className={`${lightTheme} ${spacing} ${typography}`}>…</div>\n// (darkTheme is a drop-in swap).
|
|
193
|
+
"content": "// haze-ui agent component wrapper — generated by scripts/generate-registry.mjs.\n//\n// This file deliberately contains no component source: haze-ui is compiled\n// CSS-in-JS (linaria) styled against --haze-* design tokens, so vendoring\n// the source would neither build nor style. It re-exports the published\n// component and imports its stylesheet instead — treat this file as your\n// customization layer (wrap, restyle, compose) while haze-ui stays an npm\n// dependency and keeps updating underneath.\n//\n// Theming (once per app): apply the token classes to a root element, e.g.\n// import { lightTheme, spacing, typography } from 'haze-ui';\n// <div className={`${lightTheme} ${spacing} ${typography}`}>…</div>\n// (darkTheme is a drop-in swap). haze-ui dist modules ship their own\n// 'use client' directive, so imports resolve cleanly from RSC; the\n// wrapper inherits client semantics either way.\n\nimport { ConversationList, ConversationItem } from 'haze-ui';\n\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/conversation-list.css';\n\nexport { ConversationList, ConversationItem };\nexport type { ConversationListProps, ConversationItemProps } from 'haze-ui';\n",
|
|
194
194
|
"type": "registry:component"
|
|
195
195
|
}
|
|
196
196
|
]
|
|
@@ -206,7 +206,7 @@
|
|
|
206
206
|
"files": [
|
|
207
207
|
{
|
|
208
208
|
"path": "components/haze/diff-viewer.tsx",
|
|
209
|
-
"content": "// haze-ui agent component wrapper — generated by scripts/generate-registry.mjs.\n//\n// This file deliberately contains no component source: haze-ui is compiled\n// CSS-in-JS (linaria) styled against --haze-* design tokens, so vendoring\n// the source would neither build nor style. It re-exports the published\n// component and imports its stylesheet instead — treat this file as your\n// customization layer (wrap, restyle, compose) while haze-ui stays an npm\n// dependency and keeps updating underneath.\n//\n// Theming (once per app): apply the token classes to a root element, e.g.\n// import { lightTheme, spacing, typography } from 'haze-ui';\n// <div className={`${lightTheme} ${spacing} ${typography}`}>…</div>\n// (darkTheme is a drop-in swap).
|
|
209
|
+
"content": "// haze-ui agent component wrapper — generated by scripts/generate-registry.mjs.\n//\n// This file deliberately contains no component source: haze-ui is compiled\n// CSS-in-JS (linaria) styled against --haze-* design tokens, so vendoring\n// the source would neither build nor style. It re-exports the published\n// component and imports its stylesheet instead — treat this file as your\n// customization layer (wrap, restyle, compose) while haze-ui stays an npm\n// dependency and keeps updating underneath.\n//\n// Theming (once per app): apply the token classes to a root element, e.g.\n// import { lightTheme, spacing, typography } from 'haze-ui';\n// <div className={`${lightTheme} ${spacing} ${typography}`}>…</div>\n// (darkTheme is a drop-in swap). haze-ui dist modules ship their own\n// 'use client' directive, so imports resolve cleanly from RSC; the\n// wrapper inherits client semantics either way.\n\nimport { DiffViewer } from 'haze-ui';\n\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/diff-viewer.css';\n\nexport { DiffViewer };\nexport type { DiffViewerProps, DiffLine } from 'haze-ui';\n",
|
|
210
210
|
"type": "registry:component"
|
|
211
211
|
}
|
|
212
212
|
]
|
|
@@ -222,7 +222,7 @@
|
|
|
222
222
|
"files": [
|
|
223
223
|
{
|
|
224
224
|
"path": "components/haze/log-viewer.tsx",
|
|
225
|
-
"content": "// haze-ui agent component wrapper — generated by scripts/generate-registry.mjs.\n//\n// This file deliberately contains no component source: haze-ui is compiled\n// CSS-in-JS (linaria) styled against --haze-* design tokens, so vendoring\n// the source would neither build nor style. It re-exports the published\n// component and imports its stylesheet instead — treat this file as your\n// customization layer (wrap, restyle, compose) while haze-ui stays an npm\n// dependency and keeps updating underneath.\n//\n// Theming (once per app): apply the token classes to a root element, e.g.\n// import { lightTheme, spacing, typography } from 'haze-ui';\n// <div className={`${lightTheme} ${spacing} ${typography}`}>…</div>\n// (darkTheme is a drop-in swap).
|
|
225
|
+
"content": "// haze-ui agent component wrapper — generated by scripts/generate-registry.mjs.\n//\n// This file deliberately contains no component source: haze-ui is compiled\n// CSS-in-JS (linaria) styled against --haze-* design tokens, so vendoring\n// the source would neither build nor style. It re-exports the published\n// component and imports its stylesheet instead — treat this file as your\n// customization layer (wrap, restyle, compose) while haze-ui stays an npm\n// dependency and keeps updating underneath.\n//\n// Theming (once per app): apply the token classes to a root element, e.g.\n// import { lightTheme, spacing, typography } from 'haze-ui';\n// <div className={`${lightTheme} ${spacing} ${typography}`}>…</div>\n// (darkTheme is a drop-in swap). haze-ui dist modules ship their own\n// 'use client' directive, so imports resolve cleanly from RSC; the\n// wrapper inherits client semantics either way.\n\nimport { LogViewer } from 'haze-ui';\n\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/log-viewer.css';\n\nexport { LogViewer };\nexport type { LogViewerProps, LogEntry, LogLevel } from 'haze-ui';\n",
|
|
226
226
|
"type": "registry:component"
|
|
227
227
|
}
|
|
228
228
|
]
|
|
@@ -238,7 +238,7 @@
|
|
|
238
238
|
"files": [
|
|
239
239
|
{
|
|
240
240
|
"path": "components/haze/async-section.tsx",
|
|
241
|
-
"content": "// haze-ui agent component wrapper — generated by scripts/generate-registry.mjs.\n//\n// This file deliberately contains no component source: haze-ui is compiled\n// CSS-in-JS (linaria) styled against --haze-* design tokens, so vendoring\n// the source would neither build nor style. It re-exports the published\n// component and imports its stylesheet instead — treat this file as your\n// customization layer (wrap, restyle, compose) while haze-ui stays an npm\n// dependency and keeps updating underneath.\n//\n// Theming (once per app): apply the token classes to a root element, e.g.\n// import { lightTheme, spacing, typography } from 'haze-ui';\n// <div className={`${lightTheme} ${spacing} ${typography}`}>…</div>\n// (darkTheme is a drop-in swap).
|
|
241
|
+
"content": "// haze-ui agent component wrapper — generated by scripts/generate-registry.mjs.\n//\n// This file deliberately contains no component source: haze-ui is compiled\n// CSS-in-JS (linaria) styled against --haze-* design tokens, so vendoring\n// the source would neither build nor style. It re-exports the published\n// component and imports its stylesheet instead — treat this file as your\n// customization layer (wrap, restyle, compose) while haze-ui stays an npm\n// dependency and keeps updating underneath.\n//\n// Theming (once per app): apply the token classes to a root element, e.g.\n// import { lightTheme, spacing, typography } from 'haze-ui';\n// <div className={`${lightTheme} ${spacing} ${typography}`}>…</div>\n// (darkTheme is a drop-in swap). haze-ui dist modules ship their own\n// 'use client' directive, so imports resolve cleanly from RSC; the\n// wrapper inherits client semantics either way.\n\nimport { AsyncSection } from 'haze-ui';\n\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/async-section.css';\n\nexport { AsyncSection };\nexport type { AsyncSectionProps } from 'haze-ui';\n",
|
|
242
242
|
"type": "registry:component"
|
|
243
243
|
}
|
|
244
244
|
]
|
package/dist/tokens/colors.js
CHANGED
package/dist/tokens/index.js
CHANGED
package/dist/tokens/motion.js
CHANGED
package/dist/tokens/oklch.js
CHANGED
package/dist/tokens/palette.js
CHANGED
package/dist/tokens/registry.js
CHANGED
package/dist/tokens/spacing.js
CHANGED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure calendar-date math for the Calendar grid, extracted from Calendar.tsx.
|
|
3
|
+
*
|
|
4
|
+
* Semantics — naive local civil time:
|
|
5
|
+
*
|
|
6
|
+
* - Every `(year, month, day)` triple denotes a civil calendar date realized
|
|
7
|
+
* as a *local* Date at midnight via `new Date(year, month, day)`. The UTC
|
|
8
|
+
* constructor (`new Date(Date.UTC(…))`) is deliberately never used, and
|
|
9
|
+
* `new Date('YYYY-MM-DD')` — which parses as UTC midnight and therefore
|
|
10
|
+
* shifts a day in zones behind UTC — is never a source of truth here.
|
|
11
|
+
* - DST transitions move wall-clock hours (typically 02:00/03:00), never
|
|
12
|
+
* midnight, so constructing a local midnight and reading back
|
|
13
|
+
* `getFullYear`/`getMonth`/`getDate` round-trips exactly even on
|
|
14
|
+
* spring-forward and fall-back days.
|
|
15
|
+
* - Months are 0-based (`Date#getMonth` semantics: 0 = January, 11 =
|
|
16
|
+
* December). All functions are pure: they only read the local zone to
|
|
17
|
+
* query weekdays of civil dates they constructed themselves, and never
|
|
18
|
+
* normalize dates through out-of-range days (the classic
|
|
19
|
+
* `new Date(y, m + 1, 31)` rollover hazard).
|
|
20
|
+
*/
|
|
21
|
+
/** One cell of the Calendar grid; `outside` marks days of adjacent months. */
|
|
22
|
+
export type CalendarCell = {
|
|
23
|
+
day: number;
|
|
24
|
+
month: number;
|
|
25
|
+
year: number;
|
|
26
|
+
outside: boolean;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Number of days in a month, via day 0 of the following month
|
|
30
|
+
* (`new Date(year, month + 1, 0).getDate()`). Out-of-range months
|
|
31
|
+
* normalize through the Date constructor, so `month` may be `-1` or `12`
|
|
32
|
+
* and still yields the true length of the adjacent month.
|
|
33
|
+
*/
|
|
34
|
+
export declare function getDaysInMonth(year: number, month: number): number;
|
|
35
|
+
/**
|
|
36
|
+
* Shift a `(year, month)` view by `delta` months with year carry, e.g.
|
|
37
|
+
* `(2026, 11) + 1 → { year: 2027, month: 0 }`. Pure integer arithmetic on
|
|
38
|
+
* the month index — no Date is constructed, so navigating from a long month
|
|
39
|
+
* into a short one (Jan 31 → February) can never roll a phantom day 29–31
|
|
40
|
+
* over into the next month the way `new Date(y, m + 1, 31)` would.
|
|
41
|
+
*/
|
|
42
|
+
export declare function addMonths(year: number, month: number, delta: number): {
|
|
43
|
+
year: number;
|
|
44
|
+
month: number;
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Number of leading cells (previous-month days) before day 1 of the month,
|
|
48
|
+
* for a grid whose first column is `weekStart` (`Date#getDay` semantics:
|
|
49
|
+
* 0 = Sunday, 1 = Monday). The weekday of day 1 is read from the
|
|
50
|
+
* local-midnight Date of that civil date; DST never moves midnight, so the
|
|
51
|
+
* offset is stable across transitions.
|
|
52
|
+
*/
|
|
53
|
+
export declare function getLeadingDays(year: number, month: number, weekStart: number): number;
|
|
54
|
+
/**
|
|
55
|
+
* Flat list of grid cells for one month view: `getLeadingDays` previous-month
|
|
56
|
+
* days, then every day of the month itself, then just enough next-month days
|
|
57
|
+
* to complete the final week row. When the month already fills its rows
|
|
58
|
+
* exactly (e.g. a Sunday-first February with 28 days), no padding row is
|
|
59
|
+
* added. The result length is always a multiple of 7.
|
|
60
|
+
*/
|
|
61
|
+
export declare function buildMonthCells(year: number, month: number, weekStart: number): CalendarCell[];
|
|
62
|
+
/**
|
|
63
|
+
* Format a civil date as the `"YYYY-MM-DD"` string Calendar uses as its
|
|
64
|
+
* value. Value semantics: the string denotes the **local** civil date — it
|
|
65
|
+
* is a plain calendar date, not a UTC timestamp (parsing it with
|
|
66
|
+
* `new Date('YYYY-MM-DD')` yields UTC midnight and shifts a day in zones
|
|
67
|
+
* behind UTC). Pure string math; no Date construction.
|
|
68
|
+
*/
|
|
69
|
+
export declare function formatDate(year: number, month: number, day: number): string;
|
|
70
|
+
/**
|
|
71
|
+
* Parse a `"YYYY-MM-DD"` value string into a local-midnight Date — the
|
|
72
|
+
* inverse of {@link formatDate} and the only safe way to turn a value into
|
|
73
|
+
* a Date (`new Date('YYYY-MM-DD')` parses as UTC midnight and shifts a
|
|
74
|
+
* day in zones behind UTC, e.g. `'2026-03-01'` lands on local Feb 28 in
|
|
75
|
+
* America/New_York). Returns `null` for anything that is not a real
|
|
76
|
+
* calendar date (`'2026-02-30'`, `'2026-13-01'`, malformed input),
|
|
77
|
+
* leaving the caller free to fall back to today.
|
|
78
|
+
*/
|
|
79
|
+
export declare function parseCivilDate(value: string): Date | null;
|
|
@@ -3,9 +3,21 @@ type ComboboxOptionProps = {
|
|
|
3
3
|
value: string;
|
|
4
4
|
highlighted?: boolean;
|
|
5
5
|
selected?: boolean;
|
|
6
|
+
/**
|
|
7
|
+
* DOM id of this option — what the combobox input points at via
|
|
8
|
+
* aria-activedescendant while the row holds the keyboard highlight.
|
|
9
|
+
*/
|
|
10
|
+
id?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Size of the whole option set, per aria-setsize. Must count every
|
|
13
|
+
* option, not just the rows a windowed (virtualized) list mounted.
|
|
14
|
+
*/
|
|
15
|
+
setSize?: number;
|
|
16
|
+
/** 1-based position of this option in the set, per aria-posinset. */
|
|
17
|
+
posInSet?: number;
|
|
6
18
|
onSelect?: (value: string) => void;
|
|
7
19
|
className?: string;
|
|
8
20
|
children: ReactNode;
|
|
9
21
|
};
|
|
10
|
-
export default function ComboboxOption({ value, highlighted, selected, onSelect, className, children, }: ComboboxOptionProps): import("react").JSX.Element;
|
|
22
|
+
export default function ComboboxOption({ value, highlighted, selected, id, setSize, posInSet, onSelect, className, children, }: ComboboxOptionProps): import("react").JSX.Element;
|
|
11
23
|
export type { ComboboxOptionProps };
|
|
@@ -6,6 +6,15 @@ type DataTableColumnMeta = {
|
|
|
6
6
|
/** Column-level sorting switch — overrides the table-level `sortable` default. */
|
|
7
7
|
sortable?: boolean;
|
|
8
8
|
};
|
|
9
|
+
/** Windowing configuration for the table body, reusing `VirtualList`. */
|
|
10
|
+
type DataTableVirtualized = boolean | {
|
|
11
|
+
/** Fixed row height in px — must match the rendered row (custom cell
|
|
12
|
+
* padding or multi-line content need this form). */
|
|
13
|
+
rowHeight: number;
|
|
14
|
+
/** Extra rows kept mounted above/below the visible window.
|
|
15
|
+
* Defaults to `VirtualList`'s `5`. */
|
|
16
|
+
overscan?: number;
|
|
17
|
+
};
|
|
9
18
|
/** The feature set stitched into every DataTable instance — TanStack v9's
|
|
10
19
|
* tree-shaking contract: only the row models and registries the component
|
|
11
20
|
* actually drives are registered. `columnMeta` is a type-only slot that
|
|
@@ -47,6 +56,38 @@ type DataTableProps<TData extends RowData> = {
|
|
|
47
56
|
loading?: boolean;
|
|
48
57
|
/** Keep the header visible while the table body scrolls. */
|
|
49
58
|
stickyHeader?: boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Window the table body so only rows near the viewport stay mounted,
|
|
61
|
+
* reusing the library's `VirtualList`. `true` uses the default row
|
|
62
|
+
* height; an object pins it explicitly (plus an optional `overscan`,
|
|
63
|
+
* default 5).
|
|
64
|
+
*
|
|
65
|
+
* The default height is `34px` — the natural single-line row of the
|
|
66
|
+
* default cell styles: 2 × `--haze-space-2` padding (16px) + a 14px
|
|
67
|
+
* (`--haze-text-sm`) line box + the 1px row border.
|
|
68
|
+
*
|
|
69
|
+
* Limitations and tradeoffs (evaluated against keeping `<tr>`s in one
|
|
70
|
+
* shared table): `VirtualList` positions rows through absolutely
|
|
71
|
+
* positioned `div` wrappers, and `position: absolute` blockifies
|
|
72
|
+
* `display: table-row` — so rows cannot stay in the header's table.
|
|
73
|
+
* Instead each row renders as a complete sibling `<table><tbody><tr>`
|
|
74
|
+
* inside the wrapper. Rows remain legal, axe-clean table structures
|
|
75
|
+
* with row/cell roles, and `table-layout: fixed` on header and rows
|
|
76
|
+
* distributes columns equally in both, keeping them aligned without a
|
|
77
|
+
* column-width measurement pass. Consequences:
|
|
78
|
+
* - Fixed row height only — dynamic or wrapping row heights are not
|
|
79
|
+
* supported; content taller than `rowHeight` overlaps the next row.
|
|
80
|
+
* - Columns distribute equally instead of auto-sizing to content;
|
|
81
|
+
* per-column widths are not supported in this mode.
|
|
82
|
+
* - The header sits outside the scroll window (always visible) — the
|
|
83
|
+
* `stickyHeader` behavior is implied.
|
|
84
|
+
* - The root must be height-bounded by the consumer (e.g. a
|
|
85
|
+
* `className` setting `height`/`max-height`, or a sized flex
|
|
86
|
+
* parent); unbounded, the viewport degenerates to a single row.
|
|
87
|
+
* - Sorting, selection, pagination and `getRowId` semantics are
|
|
88
|
+
* unchanged — the window always shows the post-sort, post-page slice.
|
|
89
|
+
*/
|
|
90
|
+
virtualized?: DataTableVirtualized;
|
|
50
91
|
/** Stable row identity; also keys the `rowSelection` state. Defaults to
|
|
51
92
|
* the row's index. */
|
|
52
93
|
getRowId?: (row: TData, index: number) => string;
|
|
@@ -57,5 +98,5 @@ type DataTableProps<TData extends RowData> = {
|
|
|
57
98
|
empty?: ReactNode;
|
|
58
99
|
className?: string;
|
|
59
100
|
} & Omit<ComponentPropsWithoutRef<'table'>, 'children'>;
|
|
60
|
-
export default function DataTable<TData extends RowData>({ columns, data, sortable, selectable, rowSelection: rowSelectionControl, sorting: sortingControl, pageSize, page: pageControl, loading, stickyHeader, getRowId, onRowClick, empty, className, ...rest }: DataTableProps<TData>): import("react").JSX.Element;
|
|
61
|
-
export type { DataTableProps, DataTableColumnDef, DataTableColumnMeta };
|
|
101
|
+
export default function DataTable<TData extends RowData>({ columns, data, sortable, selectable, rowSelection: rowSelectionControl, sorting: sortingControl, pageSize, page: pageControl, loading, stickyHeader, virtualized, getRowId, onRowClick, empty, className, ...rest }: DataTableProps<TData>): import("react").JSX.Element;
|
|
102
|
+
export type { DataTableProps, DataTableColumnDef, DataTableColumnMeta, DataTableVirtualized, };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { default as DataTable } from './DataTable';
|
|
2
|
-
export type { DataTableProps, DataTableColumnDef, DataTableColumnMeta, } from './DataTable';
|
|
2
|
+
export type { DataTableProps, DataTableColumnDef, DataTableColumnMeta, DataTableVirtualized, } from './DataTable';
|
|
@@ -9,7 +9,7 @@ type HazeStringsOverrides = {
|
|
|
9
9
|
* defaults → outermost → innermost per section key.
|
|
10
10
|
*/
|
|
11
11
|
type LocaleContextValue = {
|
|
12
|
-
/**
|
|
12
|
+
/** BCP 47 tag; `useStrings` resolves it to a built-in string pack. */
|
|
13
13
|
locale?: string;
|
|
14
14
|
strings?: HazeStringsOverrides;
|
|
15
15
|
parent?: LocaleContextValue;
|
|
@@ -2,8 +2,11 @@ import type { ReactNode } from 'react';
|
|
|
2
2
|
import type { HazeStringsOverrides } from './LocaleContext';
|
|
3
3
|
type LocaleProviderProps = {
|
|
4
4
|
/**
|
|
5
|
-
* BCP 47 language tag
|
|
6
|
-
*
|
|
5
|
+
* BCP 47 language tag selecting the built-in string pack: Chinese
|
|
6
|
+
* variants ('zh', 'zh-CN', 'zh_TW', …) serve the bundled zh-CN
|
|
7
|
+
* copy, any other value falls back to English. Unset inherits the
|
|
8
|
+
* tag from the enclosing provider; `strings` still layers on top
|
|
9
|
+
* of the selected pack.
|
|
7
10
|
*/
|
|
8
11
|
locale?: string;
|
|
9
12
|
strings?: HazeStringsOverrides;
|
|
@@ -2,5 +2,6 @@ export { default } from './LocaleProvider';
|
|
|
2
2
|
export type { LocaleProviderProps } from './LocaleProvider';
|
|
3
3
|
export { useStrings } from './useStrings';
|
|
4
4
|
export type { HazeStringsOverrides } from './LocaleContext';
|
|
5
|
-
export { defaultStrings } from './locale';
|
|
5
|
+
export { defaultStrings, enUS } from './locale';
|
|
6
6
|
export type { HazeStrings } from './locale';
|
|
7
|
+
export { zhCN } from './zh-cn';
|
|
@@ -97,6 +97,10 @@ declare const defaultStrings: {
|
|
|
97
97
|
all: string;
|
|
98
98
|
noLogs: string;
|
|
99
99
|
};
|
|
100
|
+
mentions: {
|
|
101
|
+
label: string;
|
|
102
|
+
noMatch: string;
|
|
103
|
+
};
|
|
100
104
|
modelPicker: {
|
|
101
105
|
label: string;
|
|
102
106
|
};
|
|
@@ -173,4 +177,6 @@ export type HazeStrings = typeof defaultStrings;
|
|
|
173
177
|
* can never blank out a label.
|
|
174
178
|
*/
|
|
175
179
|
declare function formatString(template: string, params: Record<string, string | number>): string;
|
|
176
|
-
|
|
180
|
+
/** English copy — the default pack, aliased for symmetry with `zhCN`. */
|
|
181
|
+
declare const enUS: HazeStrings;
|
|
182
|
+
export { defaultStrings, enUS, formatString };
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { HazeStrings } from './locale';
|
|
2
2
|
/**
|
|
3
|
-
* Resolved copy for one component: the section of
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
3
|
+
* Resolved copy for one component: the section of the built-in pack
|
|
4
|
+
* selected by the provider chain's effective `locale`, layered with
|
|
5
|
+
* every enclosing provider's override, key by key, so the innermost
|
|
6
|
+
* provider wins conflicts and silent keys keep outer (or pack)
|
|
7
|
+
* values. Falls back to the English defaults when no provider is
|
|
7
8
|
* mounted.
|
|
8
9
|
*/
|
|
9
10
|
export declare function useStrings<K extends keyof HazeStrings>(componentKey: K): Readonly<HazeStrings[K]>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { HazeStrings } from './locale';
|
|
2
|
+
/**
|
|
3
|
+
* Simplified Chinese (zh-CN) copy for every user-visible literal in
|
|
4
|
+
* the library. `LocaleProvider` selects this pack automatically for
|
|
5
|
+
* Chinese BCP 47 tags ('zh', 'zh-CN', 'zh_TW', …).
|
|
6
|
+
*
|
|
7
|
+
* Keys mirror `defaultStrings` 1:1 — the `HazeStrings` annotation
|
|
8
|
+
* fails the build when either pack drifts out of sync. `{name}`
|
|
9
|
+
* placeholders must survive translation verbatim; they are expanded
|
|
10
|
+
* by `formatString` at runtime.
|
|
11
|
+
*/
|
|
12
|
+
declare const zhCN: HazeStrings;
|
|
13
|
+
export { zhCN };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ComponentPropsWithoutRef } from 'react';
|
|
2
|
+
import type { ControlOrValue } from 'react-use-control';
|
|
3
|
+
import type { MentionsOption } from './MentionsCore';
|
|
4
|
+
type MentionsProps = {
|
|
5
|
+
value?: ControlOrValue<string>;
|
|
6
|
+
onChange?: (value: string) => void;
|
|
7
|
+
options: MentionsOption[];
|
|
8
|
+
/**
|
|
9
|
+
* Single character that opens the suggestion panel while typing.
|
|
10
|
+
* Defaults to '@'.
|
|
11
|
+
*/
|
|
12
|
+
trigger?: string;
|
|
13
|
+
placeholder?: string;
|
|
14
|
+
className?: string;
|
|
15
|
+
} & Omit<ComponentPropsWithoutRef<'textarea'>, 'value' | 'onChange' | 'placeholder' | 'className' | 'style'>;
|
|
16
|
+
export default function Mentions({ value: valueControl, onChange, ...rest }: MentionsProps): import("react").JSX.Element;
|
|
17
|
+
export type { MentionsProps };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ComponentPropsWithoutRef } from 'react';
|
|
2
|
+
export type MentionsOption = {
|
|
3
|
+
/** Text inserted after the trigger character when picked. */
|
|
4
|
+
value: string;
|
|
5
|
+
/** Display text; falls back to `value` when omitted. */
|
|
6
|
+
label?: string;
|
|
7
|
+
};
|
|
8
|
+
type MentionsCoreProps = {
|
|
9
|
+
value: string;
|
|
10
|
+
onChange: (value: string) => void;
|
|
11
|
+
options: MentionsOption[];
|
|
12
|
+
/**
|
|
13
|
+
* Single character that opens the suggestion panel while typing.
|
|
14
|
+
* Defaults to '@'.
|
|
15
|
+
*/
|
|
16
|
+
trigger?: string;
|
|
17
|
+
placeholder?: string;
|
|
18
|
+
className?: string;
|
|
19
|
+
} & Omit<ComponentPropsWithoutRef<'textarea'>, 'value' | 'onChange' | 'placeholder' | 'className' | 'style'>;
|
|
20
|
+
export default function MentionsCore({ value, onChange, options, trigger, placeholder, className, 'aria-label': ariaLabel, ...rest }: MentionsCoreProps): import("react").JSX.Element;
|
|
21
|
+
export type { MentionsCoreProps };
|
|
@@ -1 +1,7 @@
|
|
|
1
|
+
export { useClipboard } from './useClipboard';
|
|
2
|
+
export type { UseClipboardResult } from './useClipboard';
|
|
3
|
+
export { useDebouncedCallback } from './useDebouncedCallback';
|
|
4
|
+
export { useDebouncedValue } from './useDebouncedValue';
|
|
5
|
+
export { useMediaQuery } from './useMediaQuery';
|
|
6
|
+
export { usePrefersReducedMotion } from './usePrefersReducedMotion';
|
|
1
7
|
export { useTitle } from './useTitle';
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
type UseClipboardResult = {
|
|
2
|
+
/** 最近一次成功复制后的反馈窗口内为 `true`,`resetMs` 后回落 `false`。 */
|
|
3
|
+
copied: boolean;
|
|
4
|
+
/**
|
|
5
|
+
* 复制文本到剪贴板,成功返回 `true`。优先异步剪贴板 API,失败退化
|
|
6
|
+
* `document.execCommand('copy')`;两条路径都失败返回 `false` 且
|
|
7
|
+
* `copied` 不置位。
|
|
8
|
+
*/
|
|
9
|
+
copy: (text: string) => Promise<boolean>;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* 复制文本到剪贴板并跟踪「已复制」反馈状态。
|
|
13
|
+
*
|
|
14
|
+
* ```tsx
|
|
15
|
+
* const { copied, copy } = useClipboard();
|
|
16
|
+
* <Button onClick={() => copy(shareLink)}>{copied ? '已复制' : '复制链接'}</Button>
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* - 优先 `navigator.clipboard.writeText`;不可用(undefined 时访问属性
|
|
20
|
+
* 即抛 TypeError)或被权限拒绝时,退化到隐藏 textarea +
|
|
21
|
+
* `document.execCommand('copy')`。两条路径都失败返回 `false`。
|
|
22
|
+
* - 复制成功后 `copied` 置 `true`,`resetMs`(默认 2000)后自动回落;
|
|
23
|
+
* 窗口内再次成功复制会重置计时。
|
|
24
|
+
* - SSR:`navigator` / `document` 只在 `copy` 事件回调里触碰,服务端
|
|
25
|
+
* 渲染安全(`copied` 初始 `false`,无 hydration 差异);reset 计时器
|
|
26
|
+
* 随卸载清理。
|
|
27
|
+
*
|
|
28
|
+
* @param resetMs `copied` 从 `true` 回落的延迟(毫秒),默认 2000。
|
|
29
|
+
*/
|
|
30
|
+
export declare function useClipboard(resetMs?: number): UseClipboardResult;
|
|
31
|
+
export type { UseClipboardResult };
|