@wallarm-org/design-system 0.85.1 → 0.87.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/dist/components/DropdownMenu/DropdownMenu.d.ts +8 -0
- package/dist/components/DropdownMenu/DropdownMenu.js +2 -1
- package/dist/components/Popover/Popover.d.ts +9 -0
- package/dist/components/Popover/Popover.js +2 -1
- package/dist/components/Select/SelectEmptyState.d.ts +5 -2
- package/dist/components/Select/SelectEmptyState.js +2 -2
- package/dist/components/Select/index.d.ts +2 -0
- package/dist/components/Select/index.js +2 -0
- package/dist/components/Select/useSelectSearch.d.ts +16 -0
- package/dist/components/Select/useSelectSearch.js +20 -0
- package/dist/components/Table/TableColumnMenu/TableColumnMenu.js +8 -1
- package/dist/components/Tooltip/Tooltip.d.ts +8 -0
- package/dist/components/Tooltip/Tooltip.js +2 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/metadata/components.json +30 -3
- package/package.json +1 -1
|
@@ -20,6 +20,14 @@ interface DropdownMenuProps extends TestableProps {
|
|
|
20
20
|
onHighlightChange?: (details: Menu.HighlightChangeDetails) => void;
|
|
21
21
|
/** Whether selecting an item closes the menu (default true) */
|
|
22
22
|
closeOnSelect?: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Override the trigger element's id. Pass the same id to another
|
|
25
|
+
* compound component's `ids.trigger` (e.g. `Tooltip`, `Popover`) to
|
|
26
|
+
* compose their triggers on one element via nested `asChild` without an
|
|
27
|
+
* extra wrapper node — otherwise the outer trigger's id wins and the
|
|
28
|
+
* other component can't find its own anchor.
|
|
29
|
+
*/
|
|
30
|
+
ids?: Menu.RootProps['ids'];
|
|
23
31
|
}
|
|
24
32
|
export declare const DropdownMenu: FC<DropdownMenuProps>;
|
|
25
33
|
export {};
|
|
@@ -15,7 +15,7 @@ const SUB_POSITIONING = {
|
|
|
15
15
|
crossAxis: -9
|
|
16
16
|
}
|
|
17
17
|
};
|
|
18
|
-
const DropdownMenu = ({ children, open, defaultOpen, onOpenChange, anchorPoint, positioning, highlightedValue, onHighlightChange, closeOnSelect, 'data-testid': testIdProp, ...props })=>{
|
|
18
|
+
const DropdownMenu = ({ children, open, defaultOpen, onOpenChange, anchorPoint, positioning, highlightedValue, onHighlightChange, closeOnSelect, ids, 'data-testid': testIdProp, ...props })=>{
|
|
19
19
|
const inheritedTestId = useTestId();
|
|
20
20
|
const testId = testIdProp ?? inheritedTestId;
|
|
21
21
|
const parent = useDropdownMenuContext();
|
|
@@ -45,6 +45,7 @@ const DropdownMenu = ({ children, open, defaultOpen, onOpenChange, anchorPoint,
|
|
|
45
45
|
open: open,
|
|
46
46
|
defaultOpen: defaultOpen,
|
|
47
47
|
onOpenChange: handleOpenChange,
|
|
48
|
+
ids: ids,
|
|
48
49
|
lazyMount: true,
|
|
49
50
|
unmountOnExit: true,
|
|
50
51
|
children: children
|
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
import type { FC, ReactNode } from 'react';
|
|
2
|
+
import { Popover as ArkUiPopover } from '@ark-ui/react';
|
|
2
3
|
import { type TestableProps } from '../../utils/testId';
|
|
3
4
|
export interface PopoverProps extends TestableProps {
|
|
4
5
|
children: ReactNode;
|
|
5
6
|
open?: boolean;
|
|
6
7
|
onOpenChange?: (open: boolean) => void;
|
|
8
|
+
/**
|
|
9
|
+
* Override the trigger element's id. Pass the same id to another
|
|
10
|
+
* compound component's `ids.trigger` (e.g. `Tooltip`, `DropdownMenu`) to
|
|
11
|
+
* compose their triggers on one element via nested `asChild` without an
|
|
12
|
+
* extra wrapper node — otherwise the outer trigger's id wins and the
|
|
13
|
+
* other component can't find its own anchor.
|
|
14
|
+
*/
|
|
15
|
+
ids?: ArkUiPopover.RootProps['ids'];
|
|
7
16
|
}
|
|
8
17
|
export declare const Popover: FC<PopoverProps>;
|
|
@@ -7,7 +7,7 @@ const POPOVER_POSITIONING_DEFAULT = {
|
|
|
7
7
|
mainAxis: 12
|
|
8
8
|
}
|
|
9
9
|
};
|
|
10
|
-
const Popover_Popover = ({ children, open, onOpenChange, 'data-testid': testIdProp })=>{
|
|
10
|
+
const Popover_Popover = ({ children, open, onOpenChange, ids, 'data-testid': testIdProp })=>{
|
|
11
11
|
const inheritedTestId = useTestId();
|
|
12
12
|
const testId = testIdProp ?? inheritedTestId;
|
|
13
13
|
const handleOpenChange = ({ open })=>{
|
|
@@ -19,6 +19,7 @@ const Popover_Popover = ({ children, open, onOpenChange, 'data-testid': testIdPr
|
|
|
19
19
|
positioning: POPOVER_POSITIONING_DEFAULT,
|
|
20
20
|
open: open,
|
|
21
21
|
onOpenChange: handleOpenChange,
|
|
22
|
+
ids: ids,
|
|
22
23
|
lazyMount: true,
|
|
23
24
|
unmountOnExit: true,
|
|
24
25
|
children: children
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
2
|
import { EmptyState, EmptyStateDescription, EmptyStateMessage } from "../EmptyState/index.js";
|
|
3
|
-
const SelectEmptyState = ()=>/*#__PURE__*/ jsx(EmptyState, {
|
|
3
|
+
const SelectEmptyState = ({ description = 'No results' })=>/*#__PURE__*/ jsx(EmptyState, {
|
|
4
4
|
type: "no-results",
|
|
5
5
|
children: /*#__PURE__*/ jsx(EmptyStateMessage, {
|
|
6
6
|
children: /*#__PURE__*/ jsx(EmptyStateDescription, {
|
|
7
|
-
children:
|
|
7
|
+
children: description
|
|
8
8
|
})
|
|
9
9
|
})
|
|
10
10
|
});
|
|
@@ -4,6 +4,7 @@ export { SelectButton } from './SelectButton';
|
|
|
4
4
|
export { SelectButtonTag, SelectButtonTagValue } from './SelectButtonTag';
|
|
5
5
|
export { SelectClearTrigger } from './SelectClearTrigger';
|
|
6
6
|
export { SelectContent } from './SelectContent';
|
|
7
|
+
export { SelectEmptyState, type SelectEmptyStateProps } from './SelectEmptyState';
|
|
7
8
|
export { SelectFooter } from './SelectFooter';
|
|
8
9
|
export { SelectGroup } from './SelectGroup';
|
|
9
10
|
export { SelectGroupLabel } from './SelectGroupLabel';
|
|
@@ -17,3 +18,4 @@ export { SelectPositioner } from './SelectPositioner';
|
|
|
17
18
|
export { SelectSearchInput, type SelectSearchInputProps } from './SelectSearchInput';
|
|
18
19
|
export { SelectSeparator, type SelectSeparatorProps } from './SelectSeparator';
|
|
19
20
|
export type { SelectDataItem } from './types';
|
|
21
|
+
export { type UseSelectSearchOptions, type UseSelectSearchResult, useSelectSearch, } from './useSelectSearch';
|
|
@@ -4,6 +4,7 @@ export { SelectButton } from "./SelectButton.js";
|
|
|
4
4
|
export { SelectButtonTag, SelectButtonTagValue } from "./SelectButtonTag/index.js";
|
|
5
5
|
export { SelectClearTrigger } from "./SelectClearTrigger.js";
|
|
6
6
|
export { SelectContent } from "./SelectContent.js";
|
|
7
|
+
export { SelectEmptyState } from "./SelectEmptyState.js";
|
|
7
8
|
export { SelectFooter } from "./SelectFooter.js";
|
|
8
9
|
export { SelectGroup } from "./SelectGroup.js";
|
|
9
10
|
export { SelectGroupLabel } from "./SelectGroupLabel.js";
|
|
@@ -16,3 +17,4 @@ export { SelectOptionText } from "./SelectOptionText.js";
|
|
|
16
17
|
export { SelectPositioner } from "./SelectPositioner.js";
|
|
17
18
|
export { SelectSearchInput } from "./SelectSearchInput.js";
|
|
18
19
|
export { SelectSeparator } from "./SelectSeparator.js";
|
|
20
|
+
export { useSelectSearch } from "./useSelectSearch.js";
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { CollectionItem, ListCollection } from '@ark-ui/react/collection';
|
|
2
|
+
export interface UseSelectSearchOptions<T extends CollectionItem> {
|
|
3
|
+
/**
|
|
4
|
+
* Overrides the default case-insensitive substring match against the
|
|
5
|
+
* item's stringified label. Receives the same `itemString` `collection`
|
|
6
|
+
* already computes via `itemToString`, plus the raw item for matching on
|
|
7
|
+
* other fields (e.g. `description`).
|
|
8
|
+
*/
|
|
9
|
+
filterFn?: (itemString: string, item: T, query: string) => boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface UseSelectSearchResult<T extends CollectionItem> {
|
|
12
|
+
searchValue: string;
|
|
13
|
+
onSearchChange: (value: string) => void;
|
|
14
|
+
filteredCollection: ListCollection<T>;
|
|
15
|
+
}
|
|
16
|
+
export declare const useSelectSearch: <T extends CollectionItem>(collection: ListCollection<T>, options?: UseSelectSearchOptions<T>) => UseSelectSearchResult<T>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { useMemo, useState } from "react";
|
|
2
|
+
const defaultFilterFn = (itemString, query)=>itemString.toLowerCase().includes(query.toLowerCase());
|
|
3
|
+
const useSelectSearch = (collection, options)=>{
|
|
4
|
+
const [searchValue, setSearchValue] = useState('');
|
|
5
|
+
const filterFn = options?.filterFn;
|
|
6
|
+
const filteredCollection = useMemo(()=>{
|
|
7
|
+
if (!searchValue) return collection;
|
|
8
|
+
return collection.filter((itemString, _index, item)=>filterFn ? filterFn(itemString, item, searchValue) : defaultFilterFn(itemString, searchValue));
|
|
9
|
+
}, [
|
|
10
|
+
collection,
|
|
11
|
+
searchValue,
|
|
12
|
+
filterFn
|
|
13
|
+
]);
|
|
14
|
+
return {
|
|
15
|
+
searchValue,
|
|
16
|
+
onSearchChange: setSearchValue,
|
|
17
|
+
filteredCollection
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
export { useSelectSearch };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { createContext, useContext, useState } from "react";
|
|
2
|
+
import { createContext, useContext, useId, useState } from "react";
|
|
3
3
|
import { Check, ChevronsDown, Ellipsis } from "../../../icons/index.js";
|
|
4
4
|
import { cn } from "../../../utils/cn.js";
|
|
5
5
|
import { useTestId } from "../../../utils/testId.js";
|
|
@@ -22,6 +22,7 @@ const TableColumnMenu = ({ column, children, className, 'data-testid': testIdPro
|
|
|
22
22
|
const ctx = useTableContext();
|
|
23
23
|
const testId = useTestId('column-menu', testIdProp);
|
|
24
24
|
const [menuOpen, setMenuOpen] = useState(false);
|
|
25
|
+
const triggerId = useId();
|
|
25
26
|
const isAlwaysPinned = ctx.alwaysPinnedLeft.includes(column.id);
|
|
26
27
|
const canSort = ctx.sortingEnabled && column.getCanSort();
|
|
27
28
|
const canPin = ctx.pinningEnabled && column.getCanPin() && !isAlwaysPinned;
|
|
@@ -36,9 +37,15 @@ const TableColumnMenu = ({ column, children, className, 'data-testid': testIdPro
|
|
|
36
37
|
className: "shrink-0 inline-flex opacity-0 group-hover:opacity-100 has-[>_[data-state=open]]:opacity-100 transition-opacity",
|
|
37
38
|
children: /*#__PURE__*/ jsxs(Tooltip, {
|
|
38
39
|
disabled: menuOpen,
|
|
40
|
+
ids: {
|
|
41
|
+
trigger: triggerId
|
|
42
|
+
},
|
|
39
43
|
children: [
|
|
40
44
|
/*#__PURE__*/ jsxs(DropdownMenu, {
|
|
41
45
|
onOpenChange: setMenuOpen,
|
|
46
|
+
ids: {
|
|
47
|
+
trigger: triggerId
|
|
48
|
+
},
|
|
42
49
|
children: [
|
|
43
50
|
/*#__PURE__*/ jsx(DropdownMenuTrigger, {
|
|
44
51
|
asChild: true,
|
|
@@ -14,5 +14,13 @@ export interface TooltipProps extends TestableProps {
|
|
|
14
14
|
interactive?: boolean;
|
|
15
15
|
disabled?: boolean;
|
|
16
16
|
positioning?: ArkUiTooltip.RootProps['positioning'];
|
|
17
|
+
/**
|
|
18
|
+
* Override the trigger element's id. Pass the same id to another
|
|
19
|
+
* compound component's `ids.trigger` (e.g. `Popover`, `DropdownMenu`) to
|
|
20
|
+
* compose their triggers on one element via nested `asChild` without an
|
|
21
|
+
* extra wrapper node — otherwise the outer trigger's id wins and this
|
|
22
|
+
* tooltip can't find its anchor, mispositioning at the viewport origin.
|
|
23
|
+
*/
|
|
24
|
+
ids?: ArkUiTooltip.RootProps['ids'];
|
|
17
25
|
}
|
|
18
26
|
export declare const Tooltip: FC<TooltipProps>;
|
|
@@ -7,7 +7,7 @@ const TOOLTIP_POSITIONING_DEFAULT = {
|
|
|
7
7
|
},
|
|
8
8
|
overflowPadding: 8
|
|
9
9
|
};
|
|
10
|
-
const Tooltip_Tooltip = ({ children, open, defaultOpen, onOpenChange, openDelay, closeDelay, closeOnPointerDown, closeOnEscape, closeOnScroll, interactive, disabled, positioning, 'data-testid': testIdProp })=>{
|
|
10
|
+
const Tooltip_Tooltip = ({ children, open, defaultOpen, onOpenChange, openDelay, closeDelay, closeOnPointerDown, closeOnEscape, closeOnScroll, interactive, disabled, positioning, ids, 'data-testid': testIdProp })=>{
|
|
11
11
|
const inheritedTestId = useTestId();
|
|
12
12
|
const testId = testIdProp ?? inheritedTestId;
|
|
13
13
|
const handleOpenChange = (details)=>{
|
|
@@ -27,6 +27,7 @@ const Tooltip_Tooltip = ({ children, open, defaultOpen, onOpenChange, openDelay,
|
|
|
27
27
|
interactive: interactive,
|
|
28
28
|
disabled: disabled,
|
|
29
29
|
positioning: positioning ?? TOOLTIP_POSITIONING_DEFAULT,
|
|
30
|
+
ids: ids,
|
|
30
31
|
lazyMount: true,
|
|
31
32
|
unmountOnExit: true,
|
|
32
33
|
children: children
|
package/dist/index.d.ts
CHANGED
|
@@ -62,7 +62,7 @@ export { getResponseCodeCategory, RESPONSE_CODE_COLOR, ResponseCode, type Respon
|
|
|
62
62
|
export { ScrollArea, ScrollAreaContent, type ScrollAreaContentProps, ScrollAreaCorner, type ScrollAreaProps, ScrollAreaScrollbar, type ScrollAreaScrollbarProps, ScrollAreaViewport, type ScrollAreaViewportProps, } from './components/ScrollArea';
|
|
63
63
|
export { SegmentedControl, SegmentedControlButton, type SegmentedControlButtonProps, SegmentedControlItem, type SegmentedControlItemProps, type SegmentedControlProps, SegmentedControlSeparator, type SegmentedControlSeparatorProps, } from './components/SegmentedControl';
|
|
64
64
|
export { SegmentedTabs, SegmentedTabsButton, SegmentedTabsContent, SegmentedTabsList, SegmentedTabsSeparator, SegmentedTabsTrigger, SegmentedTabsTriggerButton, } from './components/SegmentedTabs';
|
|
65
|
-
export { createListCollection, Select, SelectButton, SelectClearTrigger, SelectContent, type SelectDataItem, SelectFooter, SelectGroup, SelectGroupLabel, SelectHeader, SelectInput, SelectOption, SelectOptionDescription, SelectOptionIndicator, SelectOptionText, SelectPositioner, SelectSearchInput, SelectSeparator, } from './components/Select';
|
|
65
|
+
export { createListCollection, Select, SelectButton, SelectClearTrigger, SelectContent, type SelectDataItem, SelectEmptyState, type SelectEmptyStateProps, SelectFooter, SelectGroup, SelectGroupLabel, SelectHeader, SelectInput, SelectOption, SelectOptionDescription, SelectOptionIndicator, SelectOptionText, SelectPositioner, SelectSearchInput, SelectSeparator, type UseSelectSearchOptions, type UseSelectSearchResult, useSelectSearch, } from './components/Select';
|
|
66
66
|
export { Selection, SelectionAll, type SelectionAllProps, SelectionBulkBar, type SelectionBulkBarPlacement, type SelectionBulkBarProps, type SelectionContextValue, SelectionItem, type SelectionItemProps, type SelectionProps, useSelectionContext, } from './components/Selection';
|
|
67
67
|
export { Separator, type SeparatorProps } from './components/Separator';
|
|
68
68
|
export { Skeleton, type SkeletonProps } from './components/Skeleton';
|
package/dist/index.js
CHANGED
|
@@ -51,7 +51,7 @@ export { RESPONSE_CODE_COLOR, ResponseCode, getResponseCodeCategory } from "./co
|
|
|
51
51
|
export { ScrollArea, ScrollAreaContent, ScrollAreaCorner, ScrollAreaScrollbar, ScrollAreaViewport } from "./components/ScrollArea/index.js";
|
|
52
52
|
export { SegmentedControl, SegmentedControlButton, SegmentedControlItem, SegmentedControlSeparator } from "./components/SegmentedControl/index.js";
|
|
53
53
|
export { SegmentedTabs, SegmentedTabsButton, SegmentedTabsContent, SegmentedTabsList, SegmentedTabsSeparator, SegmentedTabsTrigger, SegmentedTabsTriggerButton } from "./components/SegmentedTabs/index.js";
|
|
54
|
-
export { Select, SelectButton, SelectClearTrigger, SelectContent, SelectFooter, SelectGroup, SelectGroupLabel, SelectHeader, SelectInput, SelectOption, SelectOptionDescription, SelectOptionIndicator, SelectOptionText, SelectPositioner, SelectSearchInput, SelectSeparator, createListCollection } from "./components/Select/index.js";
|
|
54
|
+
export { Select, SelectButton, SelectClearTrigger, SelectContent, SelectEmptyState, SelectFooter, SelectGroup, SelectGroupLabel, SelectHeader, SelectInput, SelectOption, SelectOptionDescription, SelectOptionIndicator, SelectOptionText, SelectPositioner, SelectSearchInput, SelectSeparator, createListCollection, useSelectSearch } from "./components/Select/index.js";
|
|
55
55
|
export { Selection, SelectionAll, SelectionBulkBar, SelectionItem, useSelectionContext } from "./components/Selection/index.js";
|
|
56
56
|
export { Separator } from "./components/Separator/index.js";
|
|
57
57
|
export { Skeleton } from "./components/Skeleton/index.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.
|
|
3
|
-
"generatedAt": "2026-08-
|
|
2
|
+
"version": "0.86.0",
|
|
3
|
+
"generatedAt": "2026-08-07T08:01:47.254Z",
|
|
4
4
|
"components": [
|
|
5
5
|
{
|
|
6
6
|
"name": "Accordion",
|
|
@@ -5665,6 +5665,12 @@
|
|
|
5665
5665
|
"type": "boolean | undefined",
|
|
5666
5666
|
"required": false,
|
|
5667
5667
|
"description": "Whether selecting an item closes the menu (default true)"
|
|
5668
|
+
},
|
|
5669
|
+
{
|
|
5670
|
+
"name": "ids",
|
|
5671
|
+
"type": "complex",
|
|
5672
|
+
"required": false,
|
|
5673
|
+
"description": "Override the trigger element's id. Pass the same id to another\ncompound component's `ids.trigger` (e.g. `Tooltip`, `Popover`) to\ncompose their triggers on one element via nested `asChild` without an\nextra wrapper node — otherwise the outer trigger's id wins and the\nother component can't find its own anchor."
|
|
5668
5674
|
}
|
|
5669
5675
|
]
|
|
5670
5676
|
},
|
|
@@ -48333,6 +48339,10 @@
|
|
|
48333
48339
|
"name": "Basic",
|
|
48334
48340
|
"code": "() => (\n <Popover data-testid='popover'>\n <PopoverTrigger asChild>\n <Button variant='outline' color='neutral'>\n Click me\n </Button>\n </PopoverTrigger>\n <PopoverContent>\n <VStack gap={12}>\n <Text size='sm'>This action will remove all and every bit!</Text>\n\n <Alert color='warning'>\n <AlertIcon />\n <AlertContent>\n <AlertTitle>Message goes here</AlertTitle>\n <AlertDescription>\n {'Description goes here \\nDescription goes here \\nDescription goes here'}\n </AlertDescription>\n <AlertControls>\n <Button variant='secondary' color='neutral' size='small'>\n Button\n </Button>\n <Button variant='secondary' color='neutral' size='small'>\n Button\n </Button>\n </AlertControls>\n </AlertContent>\n </Alert>\n </VStack>\n </PopoverContent>\n </Popover>\n)"
|
|
48335
48341
|
},
|
|
48342
|
+
{
|
|
48343
|
+
"name": "WithTooltip",
|
|
48344
|
+
"code": "() => {\n const triggerId = useId();\n const [open, setOpen] = useState(false);\n\n return (\n <Popover\n data-testid='with-tooltip-popover'\n open={open}\n onOpenChange={setOpen}\n ids={{ trigger: triggerId }}\n >\n {/* Sharing `ids.trigger` lets both machines resolve the same DOM node as\n their own anchor, so the tooltip positions correctly with no wrapper. */}\n <Tooltip data-testid='with-tooltip-tooltip' disabled={open} ids={{ trigger: triggerId }}>\n <PopoverTrigger asChild>\n <TooltipTrigger asChild>\n <Button data-testid='popover-tooltip-trigger' variant='outline' color='neutral'>\n Actions\n </Button>\n </TooltipTrigger>\n </PopoverTrigger>\n <TooltipContent>More actions</TooltipContent>\n </Tooltip>\n <PopoverContent>\n <Text size='sm'>Popover content</Text>\n </PopoverContent>\n </Popover>\n );\n}"
|
|
48345
|
+
},
|
|
48336
48346
|
{
|
|
48337
48347
|
"name": "MinMaxWidth",
|
|
48338
48348
|
"code": "() => (\n <VStack gap={32}>\n <Popover>\n <PopoverTrigger asChild>\n <Button variant='outline' color='neutral'>\n Min Width\n </Button>\n </PopoverTrigger>\n <PopoverContent>\n <Text size='xs' weight='medium'>\n Lorem Ipsum\n </Text>\n </PopoverContent>\n </Popover>\n\n <Popover>\n <PopoverTrigger asChild>\n <Button variant='outline' color='neutral'>\n Max Width\n </Button>\n </PopoverTrigger>\n <PopoverContent>\n <Text size='xs' weight='medium'>\n Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has\n been the industry's standard dummy text ever since the 1500s, when an unknown printer took\n a galley of type and scrambled it to make a type specimen book. It has survived not only\n five centuries, but also the leap into electronic typesetting, remaining essentially\n unchanged. It was popularised in the 1960s with the release of Letraset sheets containing\n Lorem Ipsum passages, and more recently with desktop publishing software like Aldus\n PageMaker including versions of Lorem Ipsum. Why do we use it? It is a long established\n fact that a reader will be distracted by the readable content of a page when looking at\n its layout.\n </Text>\n </PopoverContent>\n </Popover>\n </VStack>\n)"
|
|
@@ -53942,6 +53952,17 @@
|
|
|
53942
53952
|
"props": [],
|
|
53943
53953
|
"variants": [],
|
|
53944
53954
|
"subComponents": [
|
|
53955
|
+
{
|
|
53956
|
+
"name": "SelectEmptyState",
|
|
53957
|
+
"props": [
|
|
53958
|
+
{
|
|
53959
|
+
"name": "description",
|
|
53960
|
+
"type": "ReactNode",
|
|
53961
|
+
"required": false,
|
|
53962
|
+
"defaultValue": "No results"
|
|
53963
|
+
}
|
|
53964
|
+
]
|
|
53965
|
+
},
|
|
53945
53966
|
{
|
|
53946
53967
|
"name": "SelectSearchInput",
|
|
53947
53968
|
"props": [
|
|
@@ -54544,7 +54565,7 @@
|
|
|
54544
54565
|
},
|
|
54545
54566
|
{
|
|
54546
54567
|
"name": "WithSearch",
|
|
54547
|
-
"code": "() => {\n const
|
|
54568
|
+
"code": "() => {\n const collection = createListCollection({\n items: skillsWithoutIcons,\n groupBy: item => item.category ?? '',\n itemToString: item => item.label,\n });\n\n const { searchValue, onSearchChange, filteredCollection } = useSelectSearch(collection);\n\n return (\n <div className='w-300'>\n <Select collection={collection}>\n <SelectButton />\n\n <SelectPositioner>\n <SelectHeader>\n <SelectSearchInput value={searchValue} onChange={onSearchChange} />\n </SelectHeader>\n\n <SelectContent>\n {filteredCollection.size === 0 ? (\n <SelectEmptyState description={`No results for \"${searchValue}\"`} />\n ) : (\n filteredCollection.group().map(([category, group], index) => (\n <SelectGroup key={category}>\n <SelectGroupLabel>\n {category}\n {index === 0 && <SelectClearTrigger>Clear all</SelectClearTrigger>}\n </SelectGroupLabel>\n {group.map(skill => (\n <SelectOption key={skill.value} item={skill}>\n <SelectOptionText>{skill.label}</SelectOptionText>\n {skill.description && (\n <SelectOptionDescription>{skill.description}</SelectOptionDescription>\n )}\n <SelectOptionIndicator />\n </SelectOption>\n ))}\n </SelectGroup>\n ))\n )}\n </SelectContent>\n\n <SelectFooter>\n <HStack justify='between'>\n <Button variant='ghost' color='neutral' size='small'>\n <SquareArrowOutUpRight />\n See all\n </Button>\n\n <HStack justify='end'>\n <Button variant='ghost' color='neutral' size='small'>\n Cancel\n </Button>\n\n <Button variant='primary' color='brand' size='small'>\n Apply\n </Button>\n </HStack>\n </HStack>\n </SelectFooter>\n </SelectPositioner>\n </Select>\n </div>\n );\n}"
|
|
54548
54569
|
},
|
|
54549
54570
|
{
|
|
54550
54571
|
"name": "WithFormField",
|
|
@@ -82150,6 +82171,12 @@
|
|
|
82150
82171
|
"name": "positioning",
|
|
82151
82172
|
"type": "PositioningOptions | undefined",
|
|
82152
82173
|
"required": false
|
|
82174
|
+
},
|
|
82175
|
+
{
|
|
82176
|
+
"name": "ids",
|
|
82177
|
+
"type": "Partial<{ trigger: string | ((value?: string | undefined) => string); content: string; arrow: string; positioner: string; }> | undefined",
|
|
82178
|
+
"required": false,
|
|
82179
|
+
"description": "Override the trigger element's id. Pass the same id to another\ncompound component's `ids.trigger` (e.g. `Popover`, `DropdownMenu`) to\ncompose their triggers on one element via nested `asChild` without an\nextra wrapper node — otherwise the outer trigger's id wins and this\ntooltip can't find its anchor, mispositioning at the viewport origin."
|
|
82153
82180
|
}
|
|
82154
82181
|
],
|
|
82155
82182
|
"variants": [],
|