haze-ui 1.24.1 → 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 +237 -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 +20 -18
- package/dist/components/Alert/index.js +1 -0
- package/dist/components/ApprovalCard/ApprovalCard.js +28 -25
- 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 +33 -30
- 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 +30 -0
- package/dist/components/AvatarGroup/index.js +3 -0
- package/dist/components/BackToTop/BackToTop.js +16 -14
- 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 +20 -18
- 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 +19 -17
- 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 +124 -0
- package/dist/components/Calendar/date.js +54 -0
- package/dist/components/Calendar/index.js +3 -0
- package/dist/components/Card/Card.js +1 -0
- package/dist/components/Card/index.js +1 -0
- package/dist/components/Carousel/Carousel.js +43 -40
- package/dist/components/Carousel/CarouselSlide.js +1 -0
- package/dist/components/Carousel/index.js +1 -0
- package/dist/components/Cascader/Cascader.js +228 -0
- package/dist/components/Cascader/index.js +3 -0
- package/dist/components/ChatContainer/ChatContainer.js +1 -0
- package/dist/components/ChatContainer/index.js +1 -0
- package/dist/components/ChatInput/ChatInput.js +31 -29
- package/dist/components/ChatInput/index.js +1 -0
- package/dist/components/ChatMessage/ChatMessage.js +29 -27
- 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 +21 -19
- 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 +29 -26
- package/dist/components/ColorPicker/index.js +1 -0
- package/dist/components/Combobox/Combobox.js +70 -41
- 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 +41 -39
- 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 +193 -0
- package/dist/components/DataTable/index.js +3 -0
- package/dist/components/DateRangePicker/DateRangePicker.js +1 -0
- package/dist/components/DateRangePicker/DateRangePickerCore.js +22 -19
- package/dist/components/DateRangePicker/index.js +1 -0
- package/dist/components/Datepicker/Datepicker.js +11 -8
- package/dist/components/Datepicker/DatepickerCore.js +19 -16
- 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 +22 -19
- package/dist/components/Empty/index.js +1 -0
- package/dist/components/FileInput/FileInput.js +15 -13
- 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 +54 -0
- package/dist/components/HoverCard/index.js +3 -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 +33 -31
- 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 +22 -0
- package/dist/components/Kbd/index.js +3 -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 +6 -0
- package/dist/components/LocaleProvider/LocaleProvider.js +22 -0
- package/dist/components/LocaleProvider/index.js +6 -0
- package/dist/components/LocaleProvider/locale.js +132 -0
- package/dist/components/LocaleProvider/useStrings.js +27 -0
- package/dist/components/LocaleProvider/zh-cn.js +128 -0
- package/dist/components/LogViewer/LogViewer.js +45 -43
- package/dist/components/LogViewer/index.js +1 -0
- package/dist/components/MarkdownRenderer/MarkdownRenderer.js +20 -19
- package/dist/components/MarkdownRenderer/index.js +1 -0
- package/dist/components/MarkdownRenderer/markdown-blocks.js +42 -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 +17 -15
- 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 +35 -33
- package/dist/components/NumberInput/index.js +1 -0
- package/dist/components/OTPInput/OTPInput.js +1 -0
- package/dist/components/OTPInput/OTPInputCore.js +36 -30
- package/dist/components/OTPInput/index.js +1 -0
- package/dist/components/Pagination/Pagination.js +32 -30
- package/dist/components/Pagination/index.js +1 -0
- package/dist/components/PasswordInput/PasswordInput.js +1 -0
- package/dist/components/PasswordInput/PasswordInputCore.js +23 -21
- 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 +41 -39
- 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 +29 -26
- 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 +113 -0
- package/dist/components/Sidebar/index.js +3 -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 +15 -12
- 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 +39 -18
- 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 +17 -14
- package/dist/components/Tag/index.js +1 -0
- package/dist/components/TagGroup/TagGroup.js +1 -0
- package/dist/components/TagGroup/TagGroupItem.js +13 -10
- package/dist/components/TagGroup/index.js +1 -0
- package/dist/components/TagInput/TagInput.js +1 -0
- package/dist/components/TagInput/TagInputCore.js +53 -50
- 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 +14 -11
- 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 +45 -28
- package/dist/components/Toast/ToastContext.js +1 -0
- package/dist/components/Toast/index.js +5 -3
- package/dist/components/Toast/toast2.js +45 -0
- package/dist/components/Toast/useToast.js +1 -0
- package/dist/components/TokenCounter/TokenCounter.js +20 -18
- package/dist/components/TokenCounter/index.js +1 -0
- package/dist/components/ToolCallCard/ToolCallCard.js +40 -37
- package/dist/components/ToolCallCard/index.js +1 -0
- package/dist/components/Toolbar/Toolbar.js +60 -0
- package/dist/components/Toolbar/ToolbarButton.js +26 -0
- package/dist/components/Toolbar/ToolbarContext.js +9 -0
- package/dist/components/Toolbar/ToolbarSeparator.js +23 -0
- package/dist/components/Toolbar/index.js +5 -0
- package/dist/components/Tooltip/Tooltip.js +1 -0
- package/dist/components/Tooltip/index.js +1 -0
- package/dist/components/Tour/Tour.js +198 -0
- package/dist/components/Tour/index.js +3 -0
- package/dist/components/Transfer/Transfer.js +1 -0
- package/dist/components/Transfer/TransferCore.js +62 -67
- package/dist/components/Transfer/index.js +1 -0
- package/dist/components/Tree/Tree.js +1 -0
- package/dist/components/Tree/TreeItem.js +57 -55
- 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 +37 -35
- package/dist/components/Upload/index.js +1 -0
- package/dist/components/VirtualList/VirtualList.js +141 -26
- package/dist/components/VirtualList/index.js +1 -0
- package/dist/css/accordion.css +1 -1
- package/dist/css/affix.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/avatar-group.css +2 -0
- 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/calendar.css +2 -0
- package/dist/css/carousel.css +1 -1
- package/dist/css/cascader.css +2 -0
- package/dist/css/chat-input.css +1 -1
- package/dist/css/chat-message.css +1 -1
- package/dist/css/checkbox.css +1 -1
- package/dist/css/chip.css +1 -1
- package/dist/css/code-block.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/container.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 +2 -0
- package/dist/css/date-range-picker.css +1 -1
- package/dist/css/datepicker.css +1 -2
- package/dist/css/diff-viewer.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/hover-card.css +2 -0
- package/dist/css/inline-edit.css +1 -1
- package/dist/css/input.css +1 -1
- package/dist/css/kbd.css +2 -0
- package/dist/css/list.css +1 -1
- package/dist/css/log-viewer.css +1 -1
- package/dist/css/markdown-renderer.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 +2 -2
- 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/sidebar.css +2 -0
- package/dist/css/slider.css +1 -1
- package/dist/css/step-timeline.css +1 -1
- package/dist/css/stepper.css +1 -1
- package/dist/css/streaming-text.css +1 -1
- package/dist/css/swipe-action.css +1 -1
- package/dist/css/switch.css +1 -1
- package/dist/css/table.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/toolbar.css +4 -0
- package/dist/css/tour.css +2 -0
- package/dist/css/tree.css +1 -1
- package/dist/css/upload.css +1 -1
- package/dist/css/virtual-list.css +1 -1
- package/dist/css-manifest.json +29 -1
- package/dist/form/FormItem.js +1 -0
- package/dist/form/index.js +1 -0
- package/dist/haze-ui.css +74 -63
- 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 +139 -115
- package/dist/registry.json +247 -0
- 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/AvatarGroup/AvatarGroup.d.ts +9 -0
- package/dist/types/components/AvatarGroup/index.d.ts +2 -0
- package/dist/types/components/Calendar/Calendar.d.ts +21 -0
- package/dist/types/components/Calendar/date.d.ts +79 -0
- package/dist/types/components/Calendar/index.d.ts +2 -0
- package/dist/types/components/Cascader/Cascader.d.ts +26 -0
- package/dist/types/components/Cascader/index.d.ts +2 -0
- package/dist/types/components/Combobox/Combobox.d.ts +7 -1
- package/dist/types/components/Combobox/ComboboxOption.d.ts +13 -1
- package/dist/types/components/DataTable/DataTable.d.ts +102 -0
- package/dist/types/components/DataTable/index.d.ts +2 -0
- package/dist/types/components/Datepicker/Datepicker.d.ts +3 -1
- package/dist/types/components/Datepicker/DatepickerCore.d.ts +3 -1
- package/dist/types/components/HoverCard/HoverCard.d.ts +49 -0
- package/dist/types/components/HoverCard/index.d.ts +2 -0
- package/dist/types/components/Kbd/Kbd.d.ts +6 -0
- package/dist/types/components/Kbd/index.d.ts +2 -0
- package/dist/types/components/LocaleProvider/LocaleContext.d.ts +19 -0
- package/dist/types/components/LocaleProvider/LocaleProvider.d.ts +16 -0
- package/dist/types/components/LocaleProvider/index.d.ts +7 -0
- package/dist/types/components/LocaleProvider/locale.d.ts +182 -0
- package/dist/types/components/LocaleProvider/useStrings.d.ts +10 -0
- package/dist/types/components/LocaleProvider/zh-cn.d.ts +13 -0
- package/dist/types/components/MarkdownRenderer/markdown-blocks.d.ts +6 -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/components/Sidebar/Sidebar.d.ts +64 -0
- package/dist/types/components/Sidebar/index.d.ts +4 -0
- package/dist/types/components/Toast/index.d.ts +2 -0
- package/dist/types/components/Toast/toast.d.ts +46 -0
- package/dist/types/components/Toolbar/Toolbar.d.ts +16 -0
- package/dist/types/components/Toolbar/ToolbarButton.d.ts +20 -0
- package/dist/types/components/Toolbar/ToolbarContext.d.ts +5 -0
- package/dist/types/components/Toolbar/ToolbarSeparator.d.ts +14 -0
- package/dist/types/components/Toolbar/index.d.ts +6 -0
- package/dist/types/components/Tour/Tour.d.ts +46 -0
- package/dist/types/components/Tour/index.d.ts +2 -0
- package/dist/types/components/VirtualList/VirtualList.d.ts +58 -4
- package/dist/types/components/VirtualList/index.d.ts +1 -1
- 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 +28 -4
- 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 +34 -18
- package/dist/components/Datepicker/Calendar.js +0 -120
- package/dist/types/components/Datepicker/Calendar.d.ts +0 -8
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema.json",
|
|
3
|
+
"name": "haze-ui",
|
|
4
|
+
"homepage": "https://github.com/wmzy/haze-ui",
|
|
5
|
+
"items": [
|
|
6
|
+
{
|
|
7
|
+
"name": "chat-message",
|
|
8
|
+
"type": "registry:component",
|
|
9
|
+
"title": "ChatMessage",
|
|
10
|
+
"description": "Chat bubble with role-based layout (user / assistant / system), avatar, name, timestamp and delivery status.",
|
|
11
|
+
"dependencies": [
|
|
12
|
+
"haze-ui"
|
|
13
|
+
],
|
|
14
|
+
"files": [
|
|
15
|
+
{
|
|
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). 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
|
+
"type": "registry:component"
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"name": "chat-container",
|
|
24
|
+
"type": "registry:component",
|
|
25
|
+
"title": "ChatContainer",
|
|
26
|
+
"description": "Chat transcript scroll container with stick-to-bottom auto-scroll.",
|
|
27
|
+
"dependencies": [
|
|
28
|
+
"haze-ui"
|
|
29
|
+
],
|
|
30
|
+
"files": [
|
|
31
|
+
{
|
|
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). 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
|
+
"type": "registry:component"
|
|
35
|
+
}
|
|
36
|
+
]
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"name": "chat-input",
|
|
40
|
+
"type": "registry:component",
|
|
41
|
+
"title": "ChatInput",
|
|
42
|
+
"description": "Message composer with a controllable value and onSend callback.",
|
|
43
|
+
"dependencies": [
|
|
44
|
+
"haze-ui"
|
|
45
|
+
],
|
|
46
|
+
"files": [
|
|
47
|
+
{
|
|
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). 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
|
+
"type": "registry:component"
|
|
51
|
+
}
|
|
52
|
+
]
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"name": "streaming-text",
|
|
56
|
+
"type": "registry:component",
|
|
57
|
+
"title": "StreamingText",
|
|
58
|
+
"description": "Typewriter effect that reveals streaming text character by character, with an optional cursor.",
|
|
59
|
+
"dependencies": [
|
|
60
|
+
"haze-ui"
|
|
61
|
+
],
|
|
62
|
+
"files": [
|
|
63
|
+
{
|
|
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). 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
|
+
"type": "registry:component"
|
|
67
|
+
}
|
|
68
|
+
]
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"name": "markdown-renderer",
|
|
72
|
+
"type": "registry:component",
|
|
73
|
+
"title": "MarkdownRenderer",
|
|
74
|
+
"description": "Renders markdown content (including code blocks) for assistant responses.",
|
|
75
|
+
"dependencies": [
|
|
76
|
+
"haze-ui"
|
|
77
|
+
],
|
|
78
|
+
"files": [
|
|
79
|
+
{
|
|
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). 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
|
+
"type": "registry:component"
|
|
83
|
+
}
|
|
84
|
+
]
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"name": "tool-call-card",
|
|
88
|
+
"type": "registry:component",
|
|
89
|
+
"title": "ToolCallCard",
|
|
90
|
+
"description": "Card presenting an agent tool call — name, input, output and running state.",
|
|
91
|
+
"dependencies": [
|
|
92
|
+
"haze-ui"
|
|
93
|
+
],
|
|
94
|
+
"files": [
|
|
95
|
+
{
|
|
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). 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
|
+
"type": "registry:component"
|
|
99
|
+
}
|
|
100
|
+
]
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"name": "thinking-indicator",
|
|
104
|
+
"type": "registry:component",
|
|
105
|
+
"title": "ThinkingIndicator",
|
|
106
|
+
"description": "Animated bouncing-dots indicator that the agent is processing.",
|
|
107
|
+
"dependencies": [
|
|
108
|
+
"haze-ui"
|
|
109
|
+
],
|
|
110
|
+
"files": [
|
|
111
|
+
{
|
|
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). 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
|
+
"type": "registry:component"
|
|
115
|
+
}
|
|
116
|
+
]
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"name": "step-timeline",
|
|
120
|
+
"type": "registry:component",
|
|
121
|
+
"title": "StepTimeline / StepTimelineItem",
|
|
122
|
+
"description": "Vertical timeline of agent execution steps with per-step status.",
|
|
123
|
+
"dependencies": [
|
|
124
|
+
"haze-ui"
|
|
125
|
+
],
|
|
126
|
+
"files": [
|
|
127
|
+
{
|
|
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). 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
|
+
"type": "registry:component"
|
|
131
|
+
}
|
|
132
|
+
]
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"name": "approval-card",
|
|
136
|
+
"type": "registry:component",
|
|
137
|
+
"title": "ApprovalCard",
|
|
138
|
+
"description": "Approval gate with approve / deny actions for agent-initiated operations.",
|
|
139
|
+
"dependencies": [
|
|
140
|
+
"haze-ui"
|
|
141
|
+
],
|
|
142
|
+
"files": [
|
|
143
|
+
{
|
|
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). 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
|
+
"type": "registry:component"
|
|
147
|
+
}
|
|
148
|
+
]
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"name": "token-counter",
|
|
152
|
+
"type": "registry:component",
|
|
153
|
+
"title": "TokenCounter",
|
|
154
|
+
"description": "Context-window token usage counter with budget progress.",
|
|
155
|
+
"dependencies": [
|
|
156
|
+
"haze-ui"
|
|
157
|
+
],
|
|
158
|
+
"files": [
|
|
159
|
+
{
|
|
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). 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
|
+
"type": "registry:component"
|
|
163
|
+
}
|
|
164
|
+
]
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"name": "model-picker",
|
|
168
|
+
"type": "registry:component",
|
|
169
|
+
"title": "ModelPicker",
|
|
170
|
+
"description": "Controllable dropdown for selecting the active model.",
|
|
171
|
+
"dependencies": [
|
|
172
|
+
"haze-ui"
|
|
173
|
+
],
|
|
174
|
+
"files": [
|
|
175
|
+
{
|
|
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). 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
|
+
"type": "registry:component"
|
|
179
|
+
}
|
|
180
|
+
]
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"name": "conversation-list",
|
|
184
|
+
"type": "registry:component",
|
|
185
|
+
"title": "ConversationList / ConversationItem",
|
|
186
|
+
"description": "Selectable list of conversations for a chat-history sidebar.",
|
|
187
|
+
"dependencies": [
|
|
188
|
+
"haze-ui"
|
|
189
|
+
],
|
|
190
|
+
"files": [
|
|
191
|
+
{
|
|
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). 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
|
+
"type": "registry:component"
|
|
195
|
+
}
|
|
196
|
+
]
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
"name": "diff-viewer",
|
|
200
|
+
"type": "registry:component",
|
|
201
|
+
"title": "DiffViewer",
|
|
202
|
+
"description": "Renders the line diff between old and new content for agent-proposed edits.",
|
|
203
|
+
"dependencies": [
|
|
204
|
+
"haze-ui"
|
|
205
|
+
],
|
|
206
|
+
"files": [
|
|
207
|
+
{
|
|
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). 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
|
+
"type": "registry:component"
|
|
211
|
+
}
|
|
212
|
+
]
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
"name": "log-viewer",
|
|
216
|
+
"type": "registry:component",
|
|
217
|
+
"title": "LogViewer",
|
|
218
|
+
"description": "Scrollable log stream with severity-level filtering.",
|
|
219
|
+
"dependencies": [
|
|
220
|
+
"haze-ui"
|
|
221
|
+
],
|
|
222
|
+
"files": [
|
|
223
|
+
{
|
|
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). 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
|
+
"type": "registry:component"
|
|
227
|
+
}
|
|
228
|
+
]
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
"name": "async-section",
|
|
232
|
+
"type": "registry:component",
|
|
233
|
+
"title": "AsyncSection",
|
|
234
|
+
"description": "Declarative loading / error / content states for async data.",
|
|
235
|
+
"dependencies": [
|
|
236
|
+
"haze-ui"
|
|
237
|
+
],
|
|
238
|
+
"files": [
|
|
239
|
+
{
|
|
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). 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
|
+
"type": "registry:component"
|
|
243
|
+
}
|
|
244
|
+
]
|
|
245
|
+
}
|
|
246
|
+
]
|
|
247
|
+
}
|
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,9 @@
|
|
|
1
|
+
import type { ComponentPropsWithoutRef } from 'react';
|
|
2
|
+
type AvatarGroupProps = {
|
|
3
|
+
/** Maximum number of avatars rendered before the "+N" overflow chip. */
|
|
4
|
+
max?: number;
|
|
5
|
+
/** Overflow count to display instead of children count - max when truncating. */
|
|
6
|
+
total?: number;
|
|
7
|
+
} & ComponentPropsWithoutRef<'div'>;
|
|
8
|
+
export default function AvatarGroup({ max, total, className, children, ...rest }: AvatarGroupProps): import("react").JSX.Element;
|
|
9
|
+
export type { AvatarGroupProps };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ComponentPropsWithoutRef } from 'react';
|
|
2
|
+
import type { ControlOrValue } from 'react-use-control';
|
|
3
|
+
type CalendarProps = {
|
|
4
|
+
/** Selected date as "YYYY-MM-DD"; empty string means nothing selected. */
|
|
5
|
+
value?: ControlOrValue<string>;
|
|
6
|
+
/** Earliest selectable date ("YYYY-MM-DD"). */
|
|
7
|
+
min?: string;
|
|
8
|
+
/** Latest selectable date ("YYYY-MM-DD"). */
|
|
9
|
+
max?: string;
|
|
10
|
+
/** BCP 47 locale used for month and weekday formatting. */
|
|
11
|
+
locale?: string;
|
|
12
|
+
/** Explicit first day of the week: 0 = Sunday, 1 = Monday. */
|
|
13
|
+
weekStartsOn?: 0 | 1;
|
|
14
|
+
/**
|
|
15
|
+
* Called with the picked "YYYY-MM-DD" date. Still fires alongside the
|
|
16
|
+
* controllable `value` for callers that prefer event-style wiring.
|
|
17
|
+
*/
|
|
18
|
+
onSelect?: (date: string) => void;
|
|
19
|
+
} & Omit<ComponentPropsWithoutRef<'div'>, 'onSelect'>;
|
|
20
|
+
export default function Calendar({ value: valueControl, min, max, locale, weekStartsOn, onSelect, className, ...rest }: CalendarProps): import("react").JSX.Element;
|
|
21
|
+
export type { CalendarProps };
|
|
@@ -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;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { ComponentPropsWithoutRef, ReactNode } from 'react';
|
|
2
|
+
import type { ControlOrValue } from 'react-use-control';
|
|
3
|
+
export type CascaderOption = {
|
|
4
|
+
label: ReactNode;
|
|
5
|
+
value: string;
|
|
6
|
+
children?: CascaderOption[];
|
|
7
|
+
};
|
|
8
|
+
type CascaderProps = {
|
|
9
|
+
/** Full option tree; each level becomes one column in the drill-down panel. */
|
|
10
|
+
options: CascaderOption[];
|
|
11
|
+
/** Selected path as an array of option values, one per level. */
|
|
12
|
+
value?: ControlOrValue<string[]>;
|
|
13
|
+
/** Fired with the committed path whenever a selection is made. */
|
|
14
|
+
onChange?: (value: string[]) => void;
|
|
15
|
+
placeholder?: string;
|
|
16
|
+
/**
|
|
17
|
+
* `false` (default): only leaf options commit a value. `true`: every level
|
|
18
|
+
* commits its partial path the moment it is chosen (Ant Design semantics).
|
|
19
|
+
*/
|
|
20
|
+
changeOnSelect?: boolean;
|
|
21
|
+
/** Whether hovering a parent option expands its column; defaults to click. */
|
|
22
|
+
expandTrigger?: 'click' | 'hover';
|
|
23
|
+
className?: string;
|
|
24
|
+
} & Omit<ComponentPropsWithoutRef<'div'>, 'onChange' | 'className'>;
|
|
25
|
+
export default function Cascader({ options, value: valueControl, onChange, placeholder, changeOnSelect, expandTrigger, className, ...rest }: CascaderProps): import("react").JSX.Element;
|
|
26
|
+
export type { CascaderProps };
|
|
@@ -7,7 +7,13 @@ type ComboboxProps = {
|
|
|
7
7
|
label: string;
|
|
8
8
|
}[];
|
|
9
9
|
placeholder?: string;
|
|
10
|
+
/**
|
|
11
|
+
* Render the dropdown through VirtualList once the filtered list is
|
|
12
|
+
* longer than this many options. Defaults to 100; 0 disables
|
|
13
|
+
* virtualization entirely (plain DOM rendering at any length).
|
|
14
|
+
*/
|
|
15
|
+
virtualThreshold?: number;
|
|
10
16
|
className?: string;
|
|
11
17
|
};
|
|
12
|
-
export default function Combobox({ value: valueControl, open: openControl, options, placeholder, className, }: ComboboxProps): import("react").JSX.Element;
|
|
18
|
+
export default function Combobox({ value: valueControl, open: openControl, options, placeholder, virtualThreshold, className, }: ComboboxProps): import("react").JSX.Element;
|
|
13
19
|
export type { ComboboxProps };
|
|
@@ -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 };
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import type { ComponentPropsWithoutRef, MouseEvent, ReactNode } from 'react';
|
|
2
|
+
import type { ControlOrValue } from 'react-use-control';
|
|
3
|
+
import type { ColumnDef, RowData, RowSelectionState, SortingState } from '@tanstack/react-table';
|
|
4
|
+
/** Per-column metadata understood by DataTable. */
|
|
5
|
+
type DataTableColumnMeta = {
|
|
6
|
+
/** Column-level sorting switch — overrides the table-level `sortable` default. */
|
|
7
|
+
sortable?: boolean;
|
|
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
|
+
};
|
|
18
|
+
/** The feature set stitched into every DataTable instance — TanStack v9's
|
|
19
|
+
* tree-shaking contract: only the row models and registries the component
|
|
20
|
+
* actually drives are registered. `columnMeta` is a type-only slot that
|
|
21
|
+
* types `meta` on column definitions. */
|
|
22
|
+
declare const dataTableFeatures: {
|
|
23
|
+
rowPaginationFeature: import("@tanstack/react-table").TableFeature;
|
|
24
|
+
paginatedRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
|
|
25
|
+
rowSelectionFeature: import("@tanstack/react-table").TableFeature;
|
|
26
|
+
rowSortingFeature: import("@tanstack/react-table").TableFeature;
|
|
27
|
+
sortedRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
|
|
28
|
+
sortFns: {
|
|
29
|
+
alphanumeric: import("@tanstack/react-table").CreatedSortFn<any, any>;
|
|
30
|
+
text: import("@tanstack/react-table").CreatedSortFn<any, any>;
|
|
31
|
+
};
|
|
32
|
+
columnMeta: DataTableColumnMeta;
|
|
33
|
+
};
|
|
34
|
+
/** Column definition accepted by DataTable — a TanStack Table column def
|
|
35
|
+
* bound to DataTable's feature set and column meta. */
|
|
36
|
+
type DataTableColumnDef<TData extends RowData> = ColumnDef<typeof dataTableFeatures, TData>;
|
|
37
|
+
type DataTableProps<TData extends RowData> = {
|
|
38
|
+
/** Column definitions: accessors, headers and cell templates. */
|
|
39
|
+
columns: DataTableColumnDef<TData>[];
|
|
40
|
+
/** Row data — one item per row. */
|
|
41
|
+
data: TData[];
|
|
42
|
+
/** Enable click-to-sort headers. Defaults to `false`; per-column
|
|
43
|
+
* `meta.sortable` (or native `enableSorting`) overrides per column. */
|
|
44
|
+
sortable?: boolean;
|
|
45
|
+
/** Render a leading checkbox column bound to `rowSelection`. */
|
|
46
|
+
selectable?: boolean;
|
|
47
|
+
/** Selection state keyed by row id (TanStack `RowSelectionState`). */
|
|
48
|
+
rowSelection?: ControlOrValue<RowSelectionState>;
|
|
49
|
+
/** Sort state (TanStack `SortingState`). */
|
|
50
|
+
sorting?: ControlOrValue<SortingState>;
|
|
51
|
+
/** Rows per page. Setting this enables the pagination footer. */
|
|
52
|
+
pageSize?: number;
|
|
53
|
+
/** Current page, 1-based, when paginating. */
|
|
54
|
+
page?: ControlOrValue<number>;
|
|
55
|
+
/** Render skeleton rows instead of data. */
|
|
56
|
+
loading?: boolean;
|
|
57
|
+
/** Keep the header visible while the table body scrolls. */
|
|
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;
|
|
91
|
+
/** Stable row identity; also keys the `rowSelection` state. Defaults to
|
|
92
|
+
* the row's index. */
|
|
93
|
+
getRowId?: (row: TData, index: number) => string;
|
|
94
|
+
/** Row click handler. Clicks originating in interactive cell content
|
|
95
|
+
* (checkboxes, buttons, links) are ignored. */
|
|
96
|
+
onRowClick?: (row: TData, event: MouseEvent<HTMLTableRowElement>) => void;
|
|
97
|
+
/** Custom empty-state node; defaults to the `Empty` component. */
|
|
98
|
+
empty?: ReactNode;
|
|
99
|
+
className?: string;
|
|
100
|
+
} & Omit<ComponentPropsWithoutRef<'table'>, 'children'>;
|
|
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, };
|
|
@@ -4,8 +4,10 @@ type DatepickerProps = {
|
|
|
4
4
|
open?: ControlOrValue<boolean>;
|
|
5
5
|
min?: string;
|
|
6
6
|
max?: string;
|
|
7
|
+
locale?: string;
|
|
8
|
+
weekStartsOn?: 0 | 1;
|
|
7
9
|
placeholder?: string;
|
|
8
10
|
className?: string;
|
|
9
11
|
};
|
|
10
|
-
export default function Datepicker({ value: valueControl, open: openControl, min, max, placeholder, className, }: DatepickerProps): import("react").JSX.Element;
|
|
12
|
+
export default function Datepicker({ value: valueControl, open: openControl, min, max, locale, weekStartsOn, placeholder, className, }: DatepickerProps): import("react").JSX.Element;
|
|
11
13
|
export type { DatepickerProps };
|