haze-ui 1.30.0 → 1.32.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 +67 -1
- package/dist/components/ActivityRail/ActivityRail.js +76 -0
- package/dist/components/ActivityRail/index.js +3 -0
- package/dist/components/BottomSheet/BottomSheet.js +12 -26
- package/dist/components/Button/Button.js +33 -15
- package/dist/components/Button/ButtonLink.js +12 -21
- package/dist/components/Button/styles.js +2 -2
- package/dist/components/Cascader/Cascader.js +11 -11
- package/dist/components/ColorPicker/ColorPicker.js +4 -4
- package/dist/components/Combobox/Combobox.js +128 -119
- package/dist/components/Command/Command.js +9 -9
- package/dist/components/ConfigProvider/ConfigContext.js +16 -0
- package/dist/components/ConfirmDialog/confirm.js +41 -0
- package/dist/components/ConfirmDialog/index.js +2 -1
- package/dist/components/ConversationList/ConversationList.js +16 -7
- package/dist/components/DataTable/DataTable.js +24 -24
- package/dist/components/DateTimePicker/DateTimePicker.js +25 -0
- package/dist/components/DateTimePicker/index.js +3 -0
- package/dist/components/Datepicker/Datepicker.js +8 -7
- package/dist/components/Datepicker/DatepickerCore.js +60 -59
- package/dist/components/Drawer/Drawer.js +45 -40
- package/dist/components/Fieldset/Fieldset.js +25 -0
- package/dist/components/Fieldset/index.js +2 -0
- package/dist/components/Highlight/Highlight.js +19 -0
- package/dist/components/Highlight/index.js +2 -0
- package/dist/components/Indicator/Indicator.js +37 -0
- package/dist/components/Indicator/index.js +2 -0
- package/dist/components/InlineCompletion/InlineCompletion.js +4 -4
- package/dist/components/Input/Input.js +9 -7
- package/dist/components/Input/InputCore.js +32 -13
- package/dist/components/List/List.js +14 -10
- package/dist/components/LoadingOverlay/LoadingOverlay.js +30 -0
- package/dist/components/LoadingOverlay/index.js +3 -0
- package/dist/components/LocaleProvider/ar-sa.js +11 -0
- package/dist/components/LocaleProvider/de-de.js +11 -0
- package/dist/components/LocaleProvider/es-es.js +11 -0
- package/dist/components/LocaleProvider/fr-fr.js +11 -0
- package/dist/components/LocaleProvider/it-it.js +11 -0
- package/dist/components/LocaleProvider/ja-jp.js +11 -0
- package/dist/components/LocaleProvider/ko-kr.js +11 -0
- package/dist/components/LocaleProvider/locale.js +11 -0
- package/dist/components/LocaleProvider/pt-br.js +11 -0
- package/dist/components/LocaleProvider/ru-ru.js +11 -0
- package/dist/components/LocaleProvider/zh-cn.js +11 -0
- package/dist/components/LogViewer/LogViewer.js +45 -38
- package/dist/components/Mark/Mark.js +20 -0
- package/dist/components/Mark/index.js +2 -0
- package/dist/components/Mentions/MentionsCore.js +3 -3
- package/dist/components/Menu/MenuItem.js +6 -4
- package/dist/components/NumberFormatter/NumberFormatter.js +16 -0
- package/dist/components/NumberFormatter/index.js +2 -0
- package/dist/components/OTPInput/OTPInputCore.js +7 -6
- package/dist/components/PasswordInput/PasswordInputCore.js +27 -26
- package/dist/components/Rating/RatingCore.js +18 -18
- package/dist/components/Resizable/Resizable.js +266 -36
- package/dist/components/Select/Select.js +28 -23
- package/dist/components/Select/SelectCore.js +26 -23
- package/dist/components/Select/SelectFloating.js +157 -153
- package/dist/components/Sparkline/Sparkline.js +45 -0
- package/dist/components/Sparkline/index.js +3 -0
- package/dist/components/Sparkline/sparkline-styles.js +18 -0
- package/dist/components/Spoiler/Spoiler.js +36 -0
- package/dist/components/Spoiler/index.js +3 -0
- package/dist/components/StatusBar/StatusBar.js +47 -0
- package/dist/components/StatusBar/index.js +3 -0
- package/dist/components/TabBar/TabBar.js +60 -0
- package/dist/components/TabBar/index.js +3 -0
- package/dist/components/Tabs/SortableTabList.js +116 -0
- package/dist/components/Tabs/Tab.js +83 -16
- package/dist/components/Tabs/TabList.js +94 -38
- package/dist/components/Tabs/edge-scroll.js +6 -0
- package/dist/components/Tabs/index.js +4 -3
- package/dist/components/Tabs/tab-metas.js +24 -0
- package/dist/components/TagGroup/SortableTagGroup.js +32 -20
- package/dist/components/TagGroup/TagGroup.js +23 -9
- package/dist/components/TagGroup/TagGroupItem.js +21 -15
- package/dist/components/TagInput/SortableTagInputCore.js +11 -11
- package/dist/components/TagInput/TagInputCore.js +10 -10
- package/dist/components/TimePicker/TimePickerPanel.js +3 -3
- package/dist/components/Toast/ToastContainer.js +5 -5
- package/dist/components/Toast/index.js +1 -1
- package/dist/components/Toast/{toast2.js → toast-channel.js} +1 -1
- package/dist/components/Toast/useToast.js +1 -1
- package/dist/components/Tree/SortableTree.js +39 -39
- package/dist/components/TreeSelect/TreeSelect.js +6 -6
- package/dist/components/VirtualList/VirtualList.js +133 -121
- package/dist/components/VisuallyHidden/VisuallyHidden.js +15 -0
- package/dist/components/VisuallyHidden/index.js +2 -0
- package/dist/components/Workbench/Workbench.js +144 -0
- package/dist/components/Workbench/index.js +3 -0
- package/dist/css/accordion.css +2 -0
- package/dist/css/activity-rail.css +4 -0
- package/dist/css/affix.css +2 -0
- package/dist/css/alert.css +2 -0
- package/dist/css/anchor.css +2 -0
- package/dist/css/app-shell.css +3 -1
- package/dist/css/approval-card.css +2 -0
- package/dist/css/aspect-ratio.css +2 -0
- package/dist/css/async-section.css +2 -0
- package/dist/css/avatar-group.css +2 -0
- package/dist/css/avatar.css +2 -0
- package/dist/css/back-to-top.css +2 -0
- package/dist/css/badge.css +2 -0
- package/dist/css/banner.css +2 -0
- package/dist/css/bottom-sheet.css +2 -0
- package/dist/css/breadcrumb.css +3 -1
- package/dist/css/button.css +3 -2
- package/dist/css/calendar.css +2 -0
- package/dist/css/card.css +2 -0
- package/dist/css/carousel.css +2 -0
- package/dist/css/cascader.css +2 -0
- package/dist/css/chart.css +2 -0
- package/dist/css/chat-container.css +2 -0
- package/dist/css/chat-input.css +2 -0
- package/dist/css/chat-message.css +2 -0
- package/dist/css/checkbox.css +3 -1
- package/dist/css/chip.css +2 -0
- package/dist/css/code-block.css +2 -0
- package/dist/css/collapsible.css +2 -0
- package/dist/css/color-picker.css +2 -0
- package/dist/css/combobox.css +2 -0
- package/dist/css/command.css +3 -1
- package/dist/css/confirm-dialog.css +2 -0
- package/dist/css/container.css +2 -0
- package/dist/css/context-menu.css +3 -1
- package/dist/css/conversation-list.css +2 -0
- package/dist/css/count-up.css +2 -0
- package/dist/css/data-table.css +2 -0
- package/dist/css/date-range-picker.css +3 -1
- package/dist/css/datepicker.css +2 -0
- package/dist/css/descriptions.css +2 -0
- package/dist/css/dialog.css +2 -0
- package/dist/css/diff-viewer.css +2 -0
- package/dist/css/disclosure.css +2 -0
- package/dist/css/divider.css +2 -0
- package/dist/css/drawer.css +3 -1
- package/dist/css/dropdown-menu.css +4 -2
- package/dist/css/ellipsis.css +2 -0
- package/dist/css/empty.css +2 -0
- package/dist/css/fieldset.css +4 -0
- package/dist/css/file-input.css +2 -0
- package/dist/css/file-preview.css +2 -0
- package/dist/css/flex.css +2 -0
- package/dist/css/float-button.css +2 -0
- package/dist/css/form.css +2 -0
- package/dist/css/grid.css +2 -0
- package/dist/css/hover-card.css +3 -1
- package/dist/css/icon.css +2 -0
- package/dist/css/image.css +2 -0
- package/dist/css/indicator.css +4 -0
- package/dist/css/inline-completion.css +2 -0
- package/dist/css/inline-edit.css +2 -0
- package/dist/css/input.css +3 -1
- package/dist/css/json-view.css +2 -0
- package/dist/css/kbd.css +2 -0
- package/dist/css/list.css +3 -1
- package/dist/css/loading-overlay.css +4 -0
- package/dist/css/log-viewer.css +2 -0
- package/dist/css/mark.css +4 -0
- package/dist/css/markdown-renderer.css +2 -0
- package/dist/css/masonry.css +2 -0
- package/dist/css/mentions.css +2 -0
- package/dist/css/menu.css +5 -3
- package/dist/css/model-picker.css +2 -0
- package/dist/css/navigation-bar.css +2 -0
- package/dist/css/number-input.css +2 -0
- package/dist/css/otp-input.css +2 -0
- package/dist/css/pagination.css +2 -0
- package/dist/css/password-input.css +3 -1
- package/dist/css/popover.css +3 -1
- package/dist/css/progress.css +2 -0
- package/dist/css/prompt-input.css +2 -0
- package/dist/css/qr-code.css +2 -0
- package/dist/css/radio.css +3 -1
- package/dist/css/rating.css +2 -0
- package/dist/css/resizable.css +3 -1
- package/dist/css/result.css +2 -0
- package/dist/css/scroll-area.css +2 -0
- package/dist/css/segmented.css +3 -1
- package/dist/css/select.css +2 -0
- package/dist/css/sidebar.css +3 -1
- package/dist/css/signature.css +2 -0
- package/dist/css/skeleton.css +2 -0
- package/dist/css/slider.css +3 -1
- package/dist/css/sources.css +2 -0
- package/dist/css/sparkline.css +4 -0
- package/dist/css/spinner.css +2 -0
- package/dist/css/spoiler.css +4 -0
- package/dist/css/stat.css +2 -0
- package/dist/css/status-bar.css +4 -0
- package/dist/css/step-timeline.css +2 -0
- package/dist/css/stepper.css +2 -0
- package/dist/css/streaming-text.css +2 -0
- package/dist/css/swipe-action.css +2 -0
- package/dist/css/switch.css +3 -1
- package/dist/css/tab-bar.css +4 -0
- package/dist/css/table.css +2 -0
- package/dist/css/tabs.css +5 -2
- package/dist/css/tag-group.css +2 -0
- package/dist/css/tag-input.css +2 -0
- package/dist/css/tag.css +3 -1
- package/dist/css/textarea.css +2 -0
- package/dist/css/thinking-indicator.css +2 -0
- package/dist/css/time-picker.css +2 -0
- package/dist/css/timeline.css +2 -0
- package/dist/css/toast.css +2 -0
- package/dist/css/toggle.css +2 -0
- package/dist/css/token-counter.css +2 -0
- package/dist/css/tokens.css +2 -0
- package/dist/css/tool-call-card.css +2 -0
- package/dist/css/toolbar.css +2 -0
- package/dist/css/tooltip.css +2 -0
- package/dist/css/tour.css +2 -0
- package/dist/css/transfer.css +2 -0
- package/dist/css/tree-select.css +2 -0
- package/dist/css/tree.css +3 -1
- package/dist/css/typography.css +2 -0
- package/dist/css/upload.css +2 -0
- package/dist/css/virtual-list.css +2 -0
- package/dist/css/visually-hidden.css +4 -0
- package/dist/css/watermark.css +2 -0
- package/dist/css/workbench.css +4 -0
- package/dist/css-manifest.json +202 -1
- package/dist/dates/adapter.js +9 -1
- package/dist/dates/buddhist.js +43 -0
- package/dist/dates/ethiopic.js +67 -0
- package/dist/dates/hebrew.js +95 -0
- package/dist/dates/japanese.js +41 -0
- package/dist/dates/persian.js +121 -0
- package/dist/dates/registry.js +14 -4
- package/dist/haze-ui.css +435 -29
- package/dist/headless/index.js +18 -17
- package/dist/hooks/useBusyPressable.js +10 -0
- package/dist/index.js +263 -241
- package/dist/mcp-docs.json +1073 -33
- package/dist/registry.json +256 -14
- package/dist/types/components/ActivityRail/ActivityRail.d.ts +30 -0
- package/dist/types/components/ActivityRail/index.d.ts +4 -0
- package/dist/types/components/Button/Button.d.ts +50 -5
- package/dist/types/components/Button/ButtonLink.d.ts +27 -15
- package/dist/types/components/Button/styles.d.ts +34 -0
- package/dist/types/components/Combobox/Combobox.d.ts +20 -2
- package/dist/types/components/Combobox/index.d.ts +1 -1
- package/dist/types/components/ConfigProvider/ConfigContext.d.ts +20 -0
- package/dist/types/components/ConfirmDialog/ConfirmDialog.d.ts +1 -1
- package/dist/types/components/ConfirmDialog/confirm.d.ts +33 -0
- package/dist/types/components/ConfirmDialog/index.d.ts +2 -0
- package/dist/types/components/ConversationList/ConversationList.d.ts +10 -1
- package/dist/types/components/DateTimePicker/DateTimePicker.d.ts +36 -0
- package/dist/types/components/DateTimePicker/index.d.ts +2 -0
- package/dist/types/components/Datepicker/Datepicker.d.ts +3 -3
- package/dist/types/components/Datepicker/DatepickerCore.d.ts +3 -3
- package/dist/types/components/Drawer/Drawer.d.ts +15 -2
- package/dist/types/components/Drawer/index.d.ts +1 -1
- package/dist/types/components/Fieldset/Fieldset.d.ts +16 -0
- package/dist/types/components/Fieldset/index.d.ts +2 -0
- package/dist/types/components/Highlight/Highlight.d.ts +27 -0
- package/dist/types/components/Highlight/index.d.ts +2 -0
- package/dist/types/components/Indicator/Indicator.d.ts +24 -0
- package/dist/types/components/Indicator/index.d.ts +2 -0
- package/dist/types/components/Input/Input.d.ts +8 -2
- package/dist/types/components/Input/InputCore.d.ts +11 -2
- package/dist/types/components/List/List.d.ts +10 -1
- package/dist/types/components/LoadingOverlay/LoadingOverlay.d.ts +25 -0
- package/dist/types/components/LoadingOverlay/index.d.ts +2 -0
- package/dist/types/components/LocaleProvider/locale.d.ts +11 -0
- package/dist/types/components/LogViewer/LogViewer.d.ts +10 -1
- package/dist/types/components/Mark/Mark.d.ts +12 -0
- package/dist/types/components/Mark/index.d.ts +2 -0
- package/dist/types/components/Menu/MenuItem.d.ts +15 -4
- package/dist/types/components/NumberFormatter/NumberFormatter.d.ts +23 -0
- package/dist/types/components/NumberFormatter/index.d.ts +2 -0
- package/dist/types/components/Resizable/Resizable.d.ts +24 -7
- package/dist/types/components/Resizable/index.d.ts +1 -1
- package/dist/types/components/Select/Select.d.ts +23 -2
- package/dist/types/components/Select/SelectCore.d.ts +4 -1
- package/dist/types/components/Select/SelectFloating.d.ts +6 -1
- package/dist/types/components/Select/index.d.ts +1 -1
- package/dist/types/components/Sparkline/Sparkline.d.ts +31 -0
- package/dist/types/components/Sparkline/index.d.ts +3 -0
- package/dist/types/components/Sparkline/sparkline-styles.d.ts +26 -0
- package/dist/types/components/Spoiler/Spoiler.d.ts +20 -0
- package/dist/types/components/Spoiler/index.d.ts +2 -0
- package/dist/types/components/StatusBar/StatusBar.d.ts +18 -0
- package/dist/types/components/StatusBar/index.d.ts +3 -0
- package/dist/types/components/TabBar/TabBar.d.ts +23 -0
- package/dist/types/components/TabBar/index.d.ts +4 -0
- package/dist/types/components/Tabs/SortableTabList.d.ts +46 -0
- package/dist/types/components/Tabs/Tab.d.ts +54 -3
- package/dist/types/components/Tabs/TabList.d.ts +26 -2
- package/dist/types/components/Tabs/edge-scroll.d.ts +17 -0
- package/dist/types/components/Tabs/index.d.ts +3 -1
- package/dist/types/components/Tabs/tab-metas.d.ts +20 -0
- package/dist/types/components/TagGroup/SortableTagGroup.d.ts +5 -1
- package/dist/types/components/TagGroup/TagGroup.d.ts +24 -2
- package/dist/types/components/TagGroup/index.d.ts +1 -1
- package/dist/types/components/Toast/index.d.ts +2 -2
- package/dist/types/components/Toast/useToast.d.ts +1 -1
- package/dist/types/components/VirtualList/VirtualList.d.ts +20 -1
- package/dist/types/components/VisuallyHidden/VisuallyHidden.d.ts +4 -0
- package/dist/types/components/VisuallyHidden/index.d.ts +2 -0
- package/dist/types/components/Workbench/Workbench.d.ts +50 -0
- package/dist/types/components/Workbench/index.d.ts +2 -0
- package/dist/types/dates/adapter.d.ts +33 -6
- package/dist/types/dates/buddhist.d.ts +14 -0
- package/dist/types/dates/ethiopic.d.ts +15 -0
- package/dist/types/dates/hebrew.d.ts +19 -0
- package/dist/types/dates/index.d.ts +5 -0
- package/dist/types/dates/japanese.d.ts +16 -0
- package/dist/types/dates/persian.d.ts +18 -0
- package/dist/types/dates/registry.d.ts +1 -1
- package/dist/types/headless/index.d.ts +9 -0
- package/dist/types/hooks/index.d.ts +13 -0
- package/dist/types/hooks/useBusyPressable.d.ts +33 -0
- package/dist/types/hooks/useElementSize.d.ts +38 -0
- package/dist/types/hooks/useIdle.d.ts +45 -0
- package/dist/types/hooks/useMutationObserver.d.ts +35 -0
- package/dist/types/hooks/useNetwork.d.ts +31 -0
- package/dist/types/hooks/useOrientation.d.ts +23 -0
- package/dist/types/hooks/useResizeObserver.d.ts +48 -0
- package/dist/types/index.d.ts +37 -9
- package/dist/types/utils/sortable.d.ts +8 -1
- package/dist/types/utils/use-end-reached.d.ts +56 -0
- package/dist/types/utils/viewport.d.ts +12 -0
- package/dist/utils/sortable-shared.js +3 -3
- package/dist/utils/sortable.js +15 -14
- package/dist/utils/use-end-reached.js +46 -0
- package/dist/utils/viewport.js +20 -0
- package/package.json +13 -5
- /package/dist/types/components/Toast/{toast.d.ts → toast-channel.d.ts} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ComponentPropsWithRef, ElementType, ReactNode } from 'react';
|
|
2
2
|
/**
|
|
3
3
|
* Component-level tokens: Button can be rethemed per-component by setting
|
|
4
4
|
* `--haze-button-*` custom properties on `:root` or any ancestor —
|
|
@@ -6,10 +6,55 @@ import type { ComponentPropsWithoutRef } from 'react';
|
|
|
6
6
|
* `--haze-button-radius` (fallbacks and usage documented in ./styles).
|
|
7
7
|
* ButtonLink and Toggle wear the same skin and follow along.
|
|
8
8
|
*/
|
|
9
|
-
type
|
|
9
|
+
type ButtonOwnProps = {
|
|
10
10
|
variant?: 'solid' | 'outline' | 'ghost';
|
|
11
11
|
size?: 'sm' | 'md' | 'lg';
|
|
12
12
|
square?: boolean;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Busy state: swaps the label ink for a spinner (the button keeps its
|
|
15
|
+
* width — the label still sizes the cell, just transparent), forces
|
|
16
|
+
* `disabled` so click/Enter/submit are blocked at the platform level,
|
|
17
|
+
* and sets `aria-busy`. Pass an object to replace the default spinner
|
|
18
|
+
* (`icon`) or the announced label text (`text` — visually replaces
|
|
19
|
+
* the children while busy, e.g. "Saving…").
|
|
20
|
+
*
|
|
21
|
+
* On anchors/custom components (`as`) there is no native `disabled`:
|
|
22
|
+
* busy reports `aria-disabled`/`aria-busy` and the skin drops pointer
|
|
23
|
+
* events, but keyboard users can still focus — pass `tabIndex={-1}`
|
|
24
|
+
* yourself to fully lock a busy link.
|
|
25
|
+
*/
|
|
26
|
+
loading?: boolean | {
|
|
27
|
+
icon?: ReactNode;
|
|
28
|
+
text?: ReactNode;
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* MUI-OverridableComponent-shaped polymorphism: own props first, then
|
|
33
|
+
* the target element's props minus the colliding keys. The wiring
|
|
34
|
+
* (classes, data-slot, aria, type gating) always lands on the rendered
|
|
35
|
+
* element — the same "wiring wins" precedence as FormItem's `as`.
|
|
36
|
+
*/
|
|
37
|
+
type ButtonProps<T extends ElementType = 'button'> = ButtonOwnProps & {
|
|
38
|
+
/**
|
|
39
|
+
* Render element. `'button'` (default) renders a native button;
|
|
40
|
+
* `'a'` renders an anchor wearing the button skin — link semantics
|
|
41
|
+
* (`href`, ⌘/middle-click, crawlers) without a ButtonLink import.
|
|
42
|
+
* Any component works the same way (e.g. a router Link) as long as it
|
|
43
|
+
* forwards props and ref to a DOM element.
|
|
44
|
+
*
|
|
45
|
+
* Element-specific defaults are gated: `type='button'` is only set on
|
|
46
|
+
* the native-button shape, so anchors never carry the attribute.
|
|
47
|
+
*/
|
|
48
|
+
as?: T;
|
|
49
|
+
} & Omit<ComponentPropsWithRef<T>, keyof ButtonOwnProps | 'as' | 'type'>;
|
|
50
|
+
/**
|
|
51
|
+
* DOM contract: idle buttons render their `children` bare —
|
|
52
|
+
* byte-identical to the pre-`loading` DOM (no wrapper). Only a busy
|
|
53
|
+
* render wraps them in `<span data-slot='label'>` (transparent ink
|
|
54
|
+
* keeps sizing the control) and adds
|
|
55
|
+
* `<span data-slot='indicator' aria-hidden>` next to it; both unmount
|
|
56
|
+
* when the busy phase lifts. `button > *` selectors keep working for
|
|
57
|
+
* idle buttons; children remount across a busy toggle.
|
|
58
|
+
*/
|
|
59
|
+
export default function Button<T extends ElementType = 'button'>({ variant, size: sizeProp, square, loading: loadingProp, as, className, children, disabled: disabledProp, ...rest }: ButtonProps<T>): import("react").JSX.Element;
|
|
60
|
+
export type { ButtonOwnProps, ButtonProps };
|
|
@@ -1,34 +1,46 @@
|
|
|
1
|
-
import type { ComponentPropsWithoutRef } from 'react';
|
|
1
|
+
import type { ComponentPropsWithoutRef, ReactNode } from 'react';
|
|
2
2
|
/**
|
|
3
3
|
* A real `<a>` with the full Button appearance — for navigation that
|
|
4
|
-
* must look like a button.
|
|
5
|
-
* `<button>` (an invalid attribute: no ⌘/middle-click, no crawlable
|
|
6
|
-
* link); ButtonLink keeps the anchor semantics and wears Button's skin
|
|
7
|
-
* (same `variant`/`size`/`square` props, same focus/disabled visual
|
|
8
|
-
* states).
|
|
4
|
+
* must look like a button.
|
|
9
5
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
6
|
+
* @deprecated Use `<Button as='a'>` instead — same skin, same anchor
|
|
7
|
+
* semantics, and the wiring is shared with Button (single code path per
|
|
8
|
+
* family). ButtonLink remains as a deprecated alias and will be removed
|
|
9
|
+
* in the next major.
|
|
14
10
|
*
|
|
15
11
|
* Anchors have no `disabled` attribute: report the state with
|
|
16
12
|
* `aria-disabled` (and `tabIndex={-1}` to drop it from the focus
|
|
17
|
-
* order) —
|
|
13
|
+
* order) — the skin styles `aria-disabled` exactly like Button's
|
|
18
14
|
* `:disabled`.
|
|
19
15
|
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
16
|
+
* Migration note (1.4 minor): since Button learned `as`, ButtonLink
|
|
17
|
+
* delegates rendering to Button. Idle anchors keep the flat DOM (no
|
|
18
|
+
* wrapper); only a busy render wraps the children in
|
|
19
|
+
* `<span data-slot='label'>` and adds
|
|
20
|
+
* `<span data-slot='indicator' aria-hidden>`. Props stay
|
|
21
|
+
* contract-equal: `variant` still defaults to `'solid'` (the Button
|
|
22
|
+
* tier never read config) and `size` still reads the `ButtonLink`
|
|
23
|
+
* config section first.
|
|
22
24
|
*/
|
|
23
25
|
type ButtonLinkProps = {
|
|
24
26
|
variant?: 'solid' | 'outline' | 'ghost';
|
|
25
27
|
size?: 'sm' | 'md' | 'lg';
|
|
26
28
|
square?: boolean;
|
|
29
|
+
/** Busy state — same visual contract as Button's `loading`. */
|
|
30
|
+
loading?: boolean | {
|
|
31
|
+
icon?: ReactNode;
|
|
32
|
+
text?: ReactNode;
|
|
33
|
+
};
|
|
27
34
|
} & ComponentPropsWithoutRef<'a'>;
|
|
28
|
-
declare const
|
|
35
|
+
declare const ButtonLink: import("react").ForwardRefExoticComponent<{
|
|
29
36
|
variant?: "solid" | "outline" | "ghost";
|
|
30
37
|
size?: "sm" | "md" | "lg";
|
|
31
38
|
square?: boolean;
|
|
39
|
+
/** Busy state — same visual contract as Button's `loading`. */
|
|
40
|
+
loading?: boolean | {
|
|
41
|
+
icon?: ReactNode;
|
|
42
|
+
text?: ReactNode;
|
|
43
|
+
};
|
|
32
44
|
} & Omit<import("react").DetailedHTMLProps<import("react").AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, "ref"> & import("react").RefAttributes<HTMLAnchorElement>>;
|
|
33
|
-
export default
|
|
45
|
+
export default ButtonLink;
|
|
34
46
|
export type { ButtonLinkProps };
|
|
@@ -44,3 +44,37 @@ export declare const squareSizes: {
|
|
|
44
44
|
readonly md: import("@linaria/core").LinariaClassName;
|
|
45
45
|
readonly lg: import("@linaria/core").LinariaClassName;
|
|
46
46
|
};
|
|
47
|
+
/**
|
|
48
|
+
* Layout conduit for the button's children during a busy render. The
|
|
49
|
+
* span only mounts while busy (idle buttons spread children directly
|
|
50
|
+
* under the row, byte-identical to the pre-`loading` DOM); it exists so
|
|
51
|
+
* the children can be gridded against the indicator. This class
|
|
52
|
+
* replicates the parent flex context (same gap, same alignment) inside
|
|
53
|
+
* the shared grid cell.
|
|
54
|
+
*/
|
|
55
|
+
export declare const label: import("@linaria/core").LinariaClassName;
|
|
56
|
+
/**
|
|
57
|
+
* Anchor reset for the button skin worn by an `<a>` (Button `as='a'`
|
|
58
|
+
* and ButtonLink): anchors bring a UA underline; a button-looking link
|
|
59
|
+
* resets it (variants already own the color).
|
|
60
|
+
*
|
|
61
|
+
* Anchor-shaped disabled: Button's :disabled has no meaning on an `<a>`,
|
|
62
|
+
* so the state is driven by `aria-disabled` (callers pair it with
|
|
63
|
+
* tabIndex={-1} to drop the link from the focus order). Busy anchors
|
|
64
|
+
* skip the opacity dim — like Button's busy state they should look
|
|
65
|
+
* active, not dead — while keeping click suppression.
|
|
66
|
+
*/
|
|
67
|
+
export declare const link: import("@linaria/core").LinariaClassName;
|
|
68
|
+
/**
|
|
69
|
+
* Busy state (Button `loading`). Grid stacking keeps the busy swap
|
|
70
|
+
* width-stable: the label span and the indicator span share
|
|
71
|
+
* grid-area 1/1 (gap is inert across a shared cell), so the widest of
|
|
72
|
+
* the two drives the cell and the label box keeps sizing the control.
|
|
73
|
+
* `color: transparent` hides the label's ink without removing it from
|
|
74
|
+
* the accessibility tree — visibility: hidden would strip the button's
|
|
75
|
+
* accessible name mid-request. The indicator sits on top, centered.
|
|
76
|
+
*
|
|
77
|
+
* cursor: progress reads "working" instead of the base's not-allowed
|
|
78
|
+
* (the control is temporarily unavailable, not forbidden).
|
|
79
|
+
*/
|
|
80
|
+
export declare const loading: import("@linaria/core").LinariaClassName;
|
|
@@ -27,6 +27,16 @@ type ComboboxOptionData = {
|
|
|
27
27
|
*/
|
|
28
28
|
group?: string;
|
|
29
29
|
};
|
|
30
|
+
/**
|
|
31
|
+
* Semantic slot classes for Combobox (keys follow the data-slot names;
|
|
32
|
+
* see the `classNames` prop on {@link ComboboxProps}).
|
|
33
|
+
*/
|
|
34
|
+
type ComboboxClassNames = {
|
|
35
|
+
root?: string;
|
|
36
|
+
input?: string;
|
|
37
|
+
item?: string;
|
|
38
|
+
empty?: string;
|
|
39
|
+
};
|
|
30
40
|
type ComboboxProps = {
|
|
31
41
|
/**
|
|
32
42
|
* `string` in single mode, `string[]` when `multiple` is set. The
|
|
@@ -111,6 +121,14 @@ type ComboboxProps = {
|
|
|
111
121
|
*/
|
|
112
122
|
virtualized?: boolean | ComboboxVirtualizedConfig;
|
|
113
123
|
className?: string;
|
|
124
|
+
/**
|
|
125
|
+
* Slot classes (AntD v6 `classNames` shape), following the data-slot
|
|
126
|
+
* names: `root` (the positioning wrapper), `input` (the combobox
|
|
127
|
+
* field), `item` (each option row), `empty` (the no-match state
|
|
128
|
+
* block). A ConfigProvider `Combobox.classNames` section merges under
|
|
129
|
+
* the prop, per key.
|
|
130
|
+
*/
|
|
131
|
+
classNames?: ComboboxClassNames;
|
|
114
132
|
/**
|
|
115
133
|
* Forwarded to the combobox `<input>` — the focusable field in both
|
|
116
134
|
* single and multiple mode (multiple mode's chip box wraps it but is
|
|
@@ -119,5 +137,5 @@ type ComboboxProps = {
|
|
|
119
137
|
*/
|
|
120
138
|
ref?: Ref<HTMLInputElement>;
|
|
121
139
|
};
|
|
122
|
-
export default function Combobox({ value: valueControl, open: openControl, options, multiple, onValuesChange, creatable, onCreate, onSearch, loading, empty, highlightMatches, maxHeight, placeholder, virtualThreshold, virtualized: virtualizedProp, className, ref, }: ComboboxProps): import("react").JSX.Element;
|
|
123
|
-
export type { ComboboxProps, ComboboxVirtualizedConfig, ComboboxOptionData };
|
|
140
|
+
export default function Combobox({ value: valueControl, open: openControl, options, multiple, onValuesChange, creatable, onCreate, onSearch, loading, empty, highlightMatches, maxHeight, placeholder, virtualThreshold, virtualized: virtualizedProp, className, classNames, ref, }: ComboboxProps): import("react").JSX.Element;
|
|
141
|
+
export type { ComboboxClassNames, ComboboxProps, ComboboxVirtualizedConfig, ComboboxOptionData };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { default as Combobox } from './Combobox';
|
|
2
|
-
export type { ComboboxProps, ComboboxVirtualizedConfig, ComboboxOptionData } from './Combobox';
|
|
2
|
+
export type { ComboboxClassNames, ComboboxProps, ComboboxVirtualizedConfig, ComboboxOptionData } from './Combobox';
|
|
3
3
|
export { default as ComboboxOption } from './ComboboxOption';
|
|
4
4
|
export type { ComboboxOptionProps } from './ComboboxOption';
|
|
5
5
|
export { default as ComboboxGroup } from './ComboboxGroup';
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import type { DrawerClassNames } from '../Drawer/Drawer';
|
|
2
|
+
import type { SelectClassNames } from '../Select/Select';
|
|
3
|
+
import type { ComboboxClassNames } from '../Combobox/Combobox';
|
|
4
|
+
import type { TagGroupClassNames } from '../TagGroup/TagGroup';
|
|
1
5
|
import type { ToastPlacement } from '../Toast/ToastContainer';
|
|
2
6
|
/**
|
|
3
7
|
* Component default overrides, keyed by the exported component name —
|
|
@@ -48,6 +52,22 @@ type HazeConfig = {
|
|
|
48
52
|
*/
|
|
49
53
|
closeDelay?: number;
|
|
50
54
|
};
|
|
55
|
+
/** `Drawer` slot classes — merged under an explicit `classNames` prop. */
|
|
56
|
+
Drawer?: {
|
|
57
|
+
classNames?: DrawerClassNames;
|
|
58
|
+
};
|
|
59
|
+
/** `Select` slot classes — merged under an explicit `classNames` prop. */
|
|
60
|
+
Select?: {
|
|
61
|
+
classNames?: SelectClassNames;
|
|
62
|
+
};
|
|
63
|
+
/** `Combobox` slot classes — merged under an explicit `classNames` prop. */
|
|
64
|
+
Combobox?: {
|
|
65
|
+
classNames?: ComboboxClassNames;
|
|
66
|
+
};
|
|
67
|
+
/** `TagGroup` slot classes — merged under an explicit `classNames` prop. */
|
|
68
|
+
TagGroup?: {
|
|
69
|
+
classNames?: TagGroupClassNames;
|
|
70
|
+
};
|
|
51
71
|
};
|
|
52
72
|
/**
|
|
53
73
|
* The fully merged config visible below a `ConfigProvider`. The
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { ConfirmDialogProps } from './ConfirmDialog';
|
|
3
|
+
/**
|
|
4
|
+
* Options for the imperative confirm — {@link ConfirmDialogProps} minus
|
|
5
|
+
* the wired callbacks (the promise carries the answer, so `onClose`/
|
|
6
|
+
* `onConfirm`/`onCancel` are derived paths, not inputs).
|
|
7
|
+
*/
|
|
8
|
+
type ConfirmOptions = Omit<ConfirmDialogProps, 'onClose' | 'onConfirm' | 'onCancel' | 'open' | 'children'> & {
|
|
9
|
+
/** Dialog body copy. */
|
|
10
|
+
children: ReactNode;
|
|
11
|
+
/** Fired when the user confirms (before the promise resolves). */
|
|
12
|
+
onConfirm?: () => void;
|
|
13
|
+
/** Fired when the user cancels or dismisses (before rejection). */
|
|
14
|
+
onCancel?: () => void;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Imperative promise-based confirm dialog, the AntD `Modal.confirm`
|
|
18
|
+
* shape: mounts a fresh ConfirmDialog into `document.body`, resolves
|
|
19
|
+
* with `true` on confirm, `false` on cancel/dismiss, and unmounts on
|
|
20
|
+
* settle. Safe to call outside React render (event handlers, async
|
|
21
|
+
* flows); not safe during SSR (no-op `false`, no mount).
|
|
22
|
+
*
|
|
23
|
+
* ```ts
|
|
24
|
+
* const ok = await confirm({ title: 'Discard draft?', children: '…', variant: 'danger' });
|
|
25
|
+
* if (ok) discard();
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* Each call owns its own React root — multiple confirms stack (they
|
|
29
|
+
* open as sibling dialogs; the top layer negotiates them).
|
|
30
|
+
*/
|
|
31
|
+
declare function confirm(options: ConfirmOptions): Promise<boolean>;
|
|
32
|
+
export { confirm };
|
|
33
|
+
export type { ConfirmOptions };
|
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
import type { ReactNode } from 'react';
|
|
2
2
|
type ConversationListProps = {
|
|
3
3
|
children: ReactNode;
|
|
4
|
+
/**
|
|
5
|
+
* Infinite-scroll trigger on the list's scrollport: fired when the
|
|
6
|
+
* scroll position comes within 200px of the end. Entering the zone
|
|
7
|
+
* fires once; staying inside does not re-fire; scrolling back out
|
|
8
|
+
* re-arms, and growth of the rendered children re-arms too, so a
|
|
9
|
+
* still-short list chains straight into the next page. Typical use:
|
|
10
|
+
* append the next page of conversations. Ignored when not provided.
|
|
11
|
+
*/
|
|
12
|
+
onLoadMore?: () => void;
|
|
4
13
|
className?: string;
|
|
5
14
|
};
|
|
6
|
-
export default function ConversationList({ children, className }: ConversationListProps): import("react").JSX.Element;
|
|
15
|
+
export default function ConversationList({ children, onLoadMore, className }: ConversationListProps): import("react").JSX.Element;
|
|
7
16
|
export type { ConversationListProps };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { ControlOrValue } from 'react-use-control';
|
|
2
|
+
import type { DatepickerPreset } from '../Datepicker/DatepickerCore';
|
|
3
|
+
import type { CalendarCellRender } from '../Calendar/Calendar';
|
|
4
|
+
import type { Ref } from 'react';
|
|
5
|
+
/**
|
|
6
|
+
* Date+time picker (the Mantine DateTimePicker niche): a date calendar
|
|
7
|
+
* with a time field below it in one popover. This is a thin sugar over
|
|
8
|
+
* Datepicker — `picker` is fixed to `date` (date+time values are apples
|
|
9
|
+
* and day-granularity oranges for week/month/quarter/year modes) and
|
|
10
|
+
* `showTime` defaults to `true`; {@link showSeconds} flips it to the
|
|
11
|
+
* seconds-resolution form.
|
|
12
|
+
*
|
|
13
|
+
* Value serializes as `"YYYY-MM-DD HH:mm"` (or `"YYYY-MM-DD HH:mm:ss"`
|
|
14
|
+
* with `showSeconds`), matching Datepicker's showTime contract.
|
|
15
|
+
*/
|
|
16
|
+
type DateTimePickerProps = {
|
|
17
|
+
value?: ControlOrValue<string>;
|
|
18
|
+
open?: ControlOrValue<boolean>;
|
|
19
|
+
min?: string;
|
|
20
|
+
max?: string;
|
|
21
|
+
/** Disables individual dates on the calendar panel (day granularity). */
|
|
22
|
+
disabledDate?: (date: Date) => boolean;
|
|
23
|
+
/** Shortcut rows at the top of the panel. */
|
|
24
|
+
presets?: DatepickerPreset[];
|
|
25
|
+
/** Include seconds in the time field (value gains a `:ss` part). */
|
|
26
|
+
showSeconds?: boolean;
|
|
27
|
+
locale?: string;
|
|
28
|
+
weekStartsOn?: 0 | 1;
|
|
29
|
+
cellRender?: CalendarCellRender;
|
|
30
|
+
placeholder?: string;
|
|
31
|
+
className?: string;
|
|
32
|
+
/** Forwarded to the trigger `<input>`. */
|
|
33
|
+
ref?: Ref<HTMLInputElement>;
|
|
34
|
+
};
|
|
35
|
+
export default function DateTimePicker({ value: valueControl, open: openControl, min, max, disabledDate, presets, showSeconds, locale, weekStartsOn, cellRender, placeholder, className, ref, }: DateTimePickerProps): import("react").JSX.Element;
|
|
36
|
+
export type { DateTimePickerProps };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Ref } from 'react';
|
|
1
|
+
import type { ComponentPropsWithoutRef, Ref } from 'react';
|
|
2
2
|
import type { ControlOrValue } from 'react-use-control';
|
|
3
3
|
import type { CalendarCellRender, CalendarPickerMode } from '../Calendar/Calendar';
|
|
4
4
|
import type { DatepickerPreset } from './DatepickerCore';
|
|
@@ -41,6 +41,6 @@ type DatepickerProps = {
|
|
|
41
41
|
/** Forwarded to the trigger `<input>` (not the wrapper div) — the
|
|
42
42
|
* element form bridges and `ref.current.focus()` reach. */
|
|
43
43
|
ref?: Ref<HTMLInputElement>;
|
|
44
|
-
}
|
|
45
|
-
export default function Datepicker({ value: valueControl, open: openControl, picker, min, max, disabledDate, presets, showTime, format, parse, locale, weekStartsOn, cellRender, placeholder, className, ref, }: DatepickerProps): import("react").JSX.Element;
|
|
44
|
+
} & Omit<ComponentPropsWithoutRef<'div'>, 'onChange' | 'children'>;
|
|
45
|
+
export default function Datepicker({ value: valueControl, open: openControl, picker, min, max, disabledDate, presets, showTime, format, parse, locale, weekStartsOn, cellRender, placeholder, className, ref, ...rest }: DatepickerProps): import("react").JSX.Element;
|
|
46
46
|
export type { DatepickerProps };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Ref } from 'react';
|
|
1
|
+
import type { ComponentPropsWithoutRef, Ref } from 'react';
|
|
2
2
|
import type { CalendarCellRender, CalendarPickerMode } from '../Calendar/Calendar';
|
|
3
3
|
/** One shortcut row at the top of the dropdown panel: clicking applies
|
|
4
4
|
* `value` (serialized per `picker`) and closes the panel. */
|
|
@@ -66,6 +66,6 @@ type DatepickerCoreProps = {
|
|
|
66
66
|
cellRender?: CalendarCellRender;
|
|
67
67
|
/** Forwarded to the trigger `<input>` (not the wrapper div). */
|
|
68
68
|
ref?: Ref<HTMLInputElement>;
|
|
69
|
-
}
|
|
70
|
-
export default function DatepickerCore({ value, onChange, open, onOpenChange, picker, min, max, disabledDate, presets, showTime, format, parse, locale, weekStartsOn, cellRender, placeholder, className, ref, }: DatepickerCoreProps): import("react").JSX.Element;
|
|
69
|
+
} & Omit<ComponentPropsWithoutRef<'div'>, 'onChange' | 'children'>;
|
|
70
|
+
export default function DatepickerCore({ value, onChange, open, onOpenChange, picker, min, max, disabledDate, presets, showTime, format, parse, locale, weekStartsOn, cellRender, placeholder, className, ref, ...rest }: DatepickerCoreProps): import("react").JSX.Element;
|
|
71
71
|
export type { DatepickerCoreProps, DatepickerPreset };
|
|
@@ -18,6 +18,17 @@ type DrawerHandle = {
|
|
|
18
18
|
/** Focus the element that held focus when the drawer last opened. */
|
|
19
19
|
focusTrigger: () => void;
|
|
20
20
|
};
|
|
21
|
+
/**
|
|
22
|
+
* Semantic slot classes (AntD v6 `classNames` shape): keys land classes
|
|
23
|
+
* on Drawer's structural parts. Drawer renders a single `<dialog>` —
|
|
24
|
+
* `content` is that element's part (the placement class and any
|
|
25
|
+
* `className` land on the same node). A `classNames` prop set via
|
|
26
|
+
* ConfigProvider merges under the prop's keys.
|
|
27
|
+
*/
|
|
28
|
+
type DrawerClassNames = {
|
|
29
|
+
/** The `<dialog>` panel itself (data-slot='content'). */
|
|
30
|
+
content?: string;
|
|
31
|
+
};
|
|
21
32
|
type DrawerProps = {
|
|
22
33
|
open?: ControlOrValue<boolean>;
|
|
23
34
|
placement?: 'left' | 'right' | 'top' | 'bottom';
|
|
@@ -34,8 +45,10 @@ type DrawerProps = {
|
|
|
34
45
|
*/
|
|
35
46
|
viewTransition?: boolean;
|
|
36
47
|
className?: string;
|
|
48
|
+
/** Slot classes (see {@link DrawerClassNames}). */
|
|
49
|
+
classNames?: DrawerClassNames;
|
|
37
50
|
children: ReactNode;
|
|
38
51
|
ref?: Ref<DrawerHandle>;
|
|
39
52
|
};
|
|
40
|
-
export default function Drawer({ open: openControl, placement, onClose, viewTransition, className, children, ref, }: DrawerProps): import("react").JSX.Element;
|
|
41
|
-
export type { DrawerProps, DrawerHandle };
|
|
53
|
+
export default function Drawer({ open: openControl, placement, onClose, viewTransition, className, classNames, children, ref, }: DrawerProps): import("react").JSX.Element;
|
|
54
|
+
export type { DrawerClassNames, DrawerProps, DrawerHandle };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { default as Drawer } from './Drawer';
|
|
2
|
-
export type { DrawerProps, DrawerHandle } from './Drawer';
|
|
2
|
+
export type { DrawerClassNames, DrawerProps, DrawerHandle } from './Drawer';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ComponentPropsWithoutRef, ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* A semantic `<fieldset>` + `<legend>` grouping for form sections —
|
|
4
|
+
* the native grouping HTML was made for, skinned. Screen readers name
|
|
5
|
+
* the group from the legend on focus entry into any control inside,
|
|
6
|
+
* which is the whole point over a bare div+heading.
|
|
7
|
+
*/
|
|
8
|
+
type FieldsetProps = {
|
|
9
|
+
/** The group's legend text/content — rendered inside `<legend>` so
|
|
10
|
+
* assistive tech names the whole group from it. */
|
|
11
|
+
legend?: ReactNode;
|
|
12
|
+
/** Disables every form control inside (native fieldset semantics). */
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
} & Omit<ComponentPropsWithoutRef<'fieldset'>, 'disabled'>;
|
|
15
|
+
export default function Fieldset({ legend: legendContent, disabled, className, children, ...rest }: FieldsetProps): import("react").JSX.Element;
|
|
16
|
+
export type { FieldsetProps };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ComponentPropsWithoutRef } from 'react';
|
|
2
|
+
type HighlightProps = {
|
|
3
|
+
/** The text to scan. Rendering stays text-level: only matched
|
|
4
|
+
* substrings become `<mark>` children, everything else stays text
|
|
5
|
+
* nodes — no innerHTML, no injection surface. */
|
|
6
|
+
children: string;
|
|
7
|
+
/** One or more substrings to mark (empty strings are ignored). */
|
|
8
|
+
highlight: string | string[];
|
|
9
|
+
/**
|
|
10
|
+
* Case sensitivity of the match. Default `false` (the search-box
|
|
11
|
+
* convention: queries match regardless of letter case).
|
|
12
|
+
*/
|
|
13
|
+
caseSensitive?: boolean;
|
|
14
|
+
/** Mark tone applied to every matched run. */
|
|
15
|
+
color?: 'warning' | 'primary' | 'success' | 'danger';
|
|
16
|
+
} & Omit<ComponentPropsWithoutRef<'mark'>, 'children' | 'color'>;
|
|
17
|
+
/**
|
|
18
|
+
* Highlights matching substrings inside a text run by wrapping them in
|
|
19
|
+
* {@link Mark} elements — the search-results affordance. Pure text in,
|
|
20
|
+
* text + marks out; non-string children are rejected by the type.
|
|
21
|
+
*
|
|
22
|
+
* Renders plain text (no wrapper DOM of its own): the outer container
|
|
23
|
+
* is a fragment and each match is a `<Mark data-slot="mark">`, so the
|
|
24
|
+
* data-slot namespace stays the shared `mark` slot.
|
|
25
|
+
*/
|
|
26
|
+
export default function Highlight({ children, highlight, caseSensitive, color, ...rest }: HighlightProps): import("react").JSX.Element;
|
|
27
|
+
export type { HighlightProps };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ComponentPropsWithoutRef, ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Corner badge attached to a host element (avatar, icon button, tab) —
|
|
4
|
+
* the notification-dot affordance. Render without `label` for a plain
|
|
5
|
+
* dot; pass `label` for a count badge.
|
|
6
|
+
*/
|
|
7
|
+
type IndicatorProps = {
|
|
8
|
+
/**
|
|
9
|
+
* Badge content. Omitted (undefined / null, or render-empty values
|
|
10
|
+
* like false / '') renders a dot (a bare status marker); a value
|
|
11
|
+
* renders a count badge. Strings longer than `max`-formatted are the
|
|
12
|
+
* caller's concern (e.g. pass "99+").
|
|
13
|
+
*/
|
|
14
|
+
label?: ReactNode;
|
|
15
|
+
/** Zero/out semantics: number 0 shows by default in badge mode. */
|
|
16
|
+
showZero?: boolean;
|
|
17
|
+
/** Badge tone. */
|
|
18
|
+
color?: 'primary' | 'danger' | 'success' | 'warning';
|
|
19
|
+
/** Corner placement of the badge. */
|
|
20
|
+
position?: 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end';
|
|
21
|
+
children: ReactNode;
|
|
22
|
+
} & Omit<ComponentPropsWithoutRef<'span'>, 'color' | 'content'>;
|
|
23
|
+
export default function Indicator({ label, showZero, color, position, className, children, ...rest }: IndicatorProps): import("react").JSX.Element;
|
|
24
|
+
export type { IndicatorProps };
|
|
@@ -1,11 +1,17 @@
|
|
|
1
|
-
import type { ComponentPropsWithoutRef, Ref } from 'react';
|
|
1
|
+
import type { ComponentPropsWithoutRef, ReactNode, Ref } from 'react';
|
|
2
2
|
import type { ControlOrValue } from 'react-use-control';
|
|
3
3
|
type InputProps = {
|
|
4
4
|
value?: ControlOrValue<string>;
|
|
5
5
|
size?: 'sm' | 'md' | 'lg';
|
|
6
|
+
/** Content rendered inside the field at the leading edge (icon,
|
|
7
|
+
* currency glyph, …). See InputCore for the layout contract. */
|
|
8
|
+
leftSection?: ReactNode;
|
|
9
|
+
/** Same as `leftSection`, at the trailing edge — the conventional
|
|
10
|
+
* home of clear buttons and visibility toggles. */
|
|
11
|
+
rightSection?: ReactNode;
|
|
6
12
|
/** Forwarded to the underlying `<input>` — the element form bridges
|
|
7
13
|
* (react-f0rm `focusRef`), tests and `ref.current.focus()` reach. */
|
|
8
14
|
ref?: Ref<HTMLInputElement>;
|
|
9
15
|
} & Omit<ComponentPropsWithoutRef<'input'>, 'value' | 'size'>;
|
|
10
|
-
export default function Input({ value: valueControl, size, className, onChange, ref, ...rest }: InputProps): import("react").JSX.Element;
|
|
16
|
+
export default function Input({ value: valueControl, size, className, leftSection, rightSection, onChange, ref, ...rest }: InputProps): import("react").JSX.Element;
|
|
11
17
|
export type { InputProps };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ComponentPropsWithoutRef, Ref } from 'react';
|
|
1
|
+
import type { ComponentPropsWithoutRef, ReactNode, Ref } from 'react';
|
|
2
2
|
type InputCoreProps = {
|
|
3
3
|
value: string;
|
|
4
4
|
onChange: (value: string) => void;
|
|
@@ -8,8 +8,17 @@ type InputCoreProps = {
|
|
|
8
8
|
onNativeChange?: ComponentPropsWithoutRef<'input'>['onChange'];
|
|
9
9
|
size?: 'sm' | 'md' | 'lg';
|
|
10
10
|
className?: string;
|
|
11
|
+
/** Content rendered inside the field, before the text — an icon, a
|
|
12
|
+
* currency glyph, a search marker. Layout sits in a flex row with the
|
|
13
|
+
* input; the field keeps its border and focus ring (the box stays
|
|
14
|
+
* one visual unit). Interactive children must re-enable pointer
|
|
15
|
+
* events themselves (see PasswordInput's visibility toggle). */
|
|
16
|
+
leftSection?: ReactNode;
|
|
17
|
+
/** Same as {@link InputCoreProps.leftSection}, at the trailing edge —
|
|
18
|
+
* the conventional home of clear buttons and visibility toggles. */
|
|
19
|
+
rightSection?: ReactNode;
|
|
11
20
|
/** Forwarded to the `<input>` element. */
|
|
12
21
|
ref?: Ref<HTMLInputElement>;
|
|
13
22
|
} & Omit<ComponentPropsWithoutRef<'input'>, 'value' | 'onChange' | 'size'>;
|
|
14
|
-
export default function InputCore({ value, onChange, onNativeChange, size, className, ref, ...rest }: InputCoreProps): import("react").JSX.Element;
|
|
23
|
+
export default function InputCore({ value, onChange, onNativeChange, size, className, leftSection, rightSection, ref, ...rest }: InputCoreProps): import("react").JSX.Element;
|
|
15
24
|
export type { InputCoreProps };
|
|
@@ -3,6 +3,15 @@ type ListProps = {
|
|
|
3
3
|
variant?: 'unordered' | 'ordered' | 'none';
|
|
4
4
|
className?: string;
|
|
5
5
|
children: ReactNode;
|
|
6
|
+
/**
|
|
7
|
+
* Explicit load-more area rendered as the final list item. Zero
|
|
8
|
+
* policy: the consumer decides what appears — a "Load more" button, a
|
|
9
|
+
* skeleton, a spinner. Pair it with whatever triggers the next page:
|
|
10
|
+
* the consumer's own scroll logic (e.g. VirtualList `onEndReached`
|
|
11
|
+
* driving the data) or a plain button inside the slot; the slot itself
|
|
12
|
+
* has no behavior.
|
|
13
|
+
*/
|
|
14
|
+
loadMore?: ReactNode;
|
|
6
15
|
};
|
|
7
|
-
export default function List({ variant, className, children, }: ListProps): import("react").JSX.Element;
|
|
16
|
+
export default function List({ variant, className, children, loadMore, }: ListProps): import("react").JSX.Element;
|
|
8
17
|
export type { ListProps };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ComponentPropsWithoutRef, ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Container-level loading state: dims the wrapped content and centers a
|
|
4
|
+
* spinner above it. The content stays in the tree and keeps its place
|
|
5
|
+
* in the focus order — deliberately, so focus survives the overlay
|
|
6
|
+
* (`aria-busy` on the wrapper is the AT channel, same as the Mantine
|
|
7
|
+
* equivalent). The veil blocks pointer and selection, but nothing here
|
|
8
|
+
* is modal: keyboard users can still reach the content. Consumers that
|
|
9
|
+
* need a full lock gate their own handlers on the same `visible` prop
|
|
10
|
+
* (or host the content in an `inert` subtree).
|
|
11
|
+
*/
|
|
12
|
+
type LoadingOverlayProps = {
|
|
13
|
+
/** Whether the overlay is shown. */
|
|
14
|
+
visible?: boolean;
|
|
15
|
+
/** Optional announcement text rendered inside a visually-paired label
|
|
16
|
+
* under the spinner for sighted context. */
|
|
17
|
+
label?: ReactNode;
|
|
18
|
+
/** Swap the default Spinner. */
|
|
19
|
+
loader?: ReactNode;
|
|
20
|
+
/** Spinner size (when the default loader is used). */
|
|
21
|
+
spinnerSize?: 'sm' | 'md' | 'lg';
|
|
22
|
+
children: ReactNode;
|
|
23
|
+
} & ComponentPropsWithoutRef<'div'>;
|
|
24
|
+
export default function LoadingOverlay({ visible, label, loader, spinnerSize, className, children, ...rest }: LoadingOverlayProps): import("react").JSX.Element;
|
|
25
|
+
export type { LoadingOverlayProps };
|
|
@@ -45,6 +45,10 @@ declare const defaultStrings: {
|
|
|
45
45
|
create: string;
|
|
46
46
|
noResults: string;
|
|
47
47
|
};
|
|
48
|
+
spoiler: {
|
|
49
|
+
showMore: string;
|
|
50
|
+
showLess: string;
|
|
51
|
+
};
|
|
48
52
|
command: {
|
|
49
53
|
noResults: string;
|
|
50
54
|
};
|
|
@@ -232,6 +236,13 @@ declare const defaultStrings: {
|
|
|
232
236
|
streamingText: {
|
|
233
237
|
generating: string;
|
|
234
238
|
};
|
|
239
|
+
tabs: {
|
|
240
|
+
close: string;
|
|
241
|
+
moreTabs: string;
|
|
242
|
+
statusDirty: string;
|
|
243
|
+
statusError: string;
|
|
244
|
+
statusSyncing: string;
|
|
245
|
+
};
|
|
235
246
|
tag: {
|
|
236
247
|
remove: string;
|
|
237
248
|
};
|