@bccampus/ui-components 0.4.2 → 0.5.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/_chunks/CompositeDataItem.js +204 -0
- package/dist/_chunks/createLucideIcon.js +103 -0
- package/dist/_chunks/index.js +125 -0
- package/dist/_chunks/index2.js +44 -0
- package/dist/_chunks/index3.js +533 -0
- package/dist/{utils-CRiPKpXj.js → _chunks/utils.js} +754 -526
- package/dist/components/index.d.ts +16 -0
- package/dist/components/index.js +84 -0
- package/dist/components/ui/banner.d.ts +10 -0
- package/dist/components/ui/banner.js +45 -0
- package/dist/components/ui/button.d.ts +11 -0
- package/dist/{button.js → components/ui/button.js} +11 -10
- package/dist/components/ui/card.d.ts +27 -0
- package/dist/components/ui/card.js +109 -0
- package/dist/components/ui/composite/CompositeData.d.ts +20 -0
- package/dist/components/ui/composite/CompositeData.js +89 -0
- package/dist/components/ui/composite/CompositeDataItem.d.ts +28 -0
- package/dist/components/ui/composite/CompositeDataItem.js +5 -0
- package/dist/components/ui/composite/FocusProvider/AbstractFocusProvider.d.ts +41 -0
- package/dist/components/ui/composite/FocusProvider/AbstractFocusProvider.js +35 -0
- package/dist/components/ui/composite/FocusProvider/ListboxFocusProvider.d.ts +16 -0
- package/dist/components/ui/composite/FocusProvider/ListboxFocusProvider.js +67 -0
- package/dist/components/ui/composite/FocusProvider/index.d.ts +2 -0
- package/dist/components/ui/composite/FocusProvider/index.js +6 -0
- package/dist/components/ui/composite/SelectionProvider/AbstractSelectionProvider.d.ts +23 -0
- package/dist/components/ui/composite/SelectionProvider/AbstractSelectionProvider.js +20 -0
- package/dist/components/ui/composite/SelectionProvider/MultipleSelectionProvider.d.ts +9 -0
- package/dist/components/ui/composite/SelectionProvider/MultipleSelectionProvider.js +20 -0
- package/dist/components/ui/composite/SelectionProvider/SingleSelectionProvider.d.ts +9 -0
- package/dist/components/ui/composite/SelectionProvider/SingleSelectionProvider.js +25 -0
- package/dist/components/ui/composite/SelectionProvider/index.d.ts +3 -0
- package/dist/components/ui/composite/SelectionProvider/index.js +8 -0
- package/dist/components/ui/composite/composite-component-item.d.ts +2 -0
- package/dist/components/ui/composite/composite-component-item.js +74 -0
- package/dist/components/ui/composite/composite-component.d.ts +2 -0
- package/dist/components/ui/composite/composite-component.js +66 -0
- package/dist/components/ui/composite/index.d.ts +7 -0
- package/dist/components/ui/composite/index.js +22 -0
- package/dist/components/ui/composite/listbox.d.ts +2 -0
- package/dist/components/ui/composite/listbox.js +58 -0
- package/dist/components/ui/composite/types.d.ts +82 -0
- package/dist/components/ui/composite/types.js +1 -0
- package/dist/components/ui/horizontal-list.d.ts +10 -0
- package/dist/components/ui/horizontal-list.js +82 -0
- package/dist/components/ui/icon-generator/generate-tiles.d.ts +4 -0
- package/dist/components/ui/icon-generator/generate-tiles.js +223 -0
- package/dist/components/ui/icon-generator/icon-generator.d.ts +3 -0
- package/dist/components/ui/icon-generator/icon-generator.js +82 -0
- package/dist/components/ui/icon-generator/index.d.ts +4 -0
- package/dist/components/ui/icon-generator/index.js +11 -0
- package/dist/components/ui/icon-generator/masked-image-generator.d.ts +3 -0
- package/dist/components/ui/icon-generator/masked-image-generator.js +31 -0
- package/dist/{masked-image-generator.d.ts → components/ui/icon-generator/types.d.ts} +48 -58
- package/dist/components/ui/icon-generator/types.js +30 -0
- package/dist/components/ui/input.d.ts +3 -0
- package/dist/{input.js → components/ui/input.js} +8 -8
- package/dist/components/ui/navigation-menu.d.ts +16 -0
- package/dist/components/ui/navigation-menu.js +1041 -0
- package/dist/components/ui/overlay.d.ts +7 -0
- package/dist/{overlay.js → components/ui/overlay.js} +7 -7
- package/dist/components/ui/page-header.d.ts +5 -0
- package/dist/{page-header.js → components/ui/page-header.js} +189 -181
- package/dist/components/ui/page-section.d.ts +8 -0
- package/dist/{page-section.js → components/ui/page-section.js} +7 -7
- package/dist/components/ui/page.d.ts +3 -0
- package/dist/components/ui/page.js +8 -0
- package/dist/components/ui/popover.d.ts +7 -0
- package/dist/components/ui/popover.js +3532 -0
- package/dist/components/ui/search-input.d.ts +3 -0
- package/dist/components/ui/search-input.js +24 -0
- package/dist/components/ui/tag.d.ts +10 -0
- package/dist/{tag.js → components/ui/tag.js} +10 -9
- package/dist/components/ui/typography/caption.d.ts +8 -0
- package/dist/components/ui/typography/caption.js +28 -0
- package/dist/components/ui/typography/index.d.ts +1 -0
- package/dist/components/ui/typography/index.js +5 -0
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.js +9 -0
- package/dist/hooks/use-effect-after-mount.d.ts +2 -0
- package/dist/hooks/use-effect-after-mount.js +24 -0
- package/dist/hooks/use-id.d.ts +1 -0
- package/dist/hooks/use-id.js +7 -0
- package/dist/hooks/use-keyboard-event.d.ts +59 -0
- package/dist/hooks/use-keyboard-event.js +52 -0
- package/dist/lib/index.d.ts +3 -0
- package/dist/lib/index.js +16 -0
- package/dist/lib/object.d.ts +5 -0
- package/dist/lib/object.js +38 -0
- package/dist/lib/set-operations.d.ts +5 -0
- package/dist/lib/set-operations.js +51 -0
- package/dist/{utils.d.ts → lib/utils.d.ts} +2 -5
- package/dist/lib/utils.js +4 -0
- package/package.json +9 -76
- package/src/components/index.ts +17 -0
- package/src/components/ui/composite/FocusProvider/index.ts +2 -0
- package/src/components/ui/composite/SelectionProvider/MultipleSelectionProvider.ts +1 -1
- package/src/components/ui/composite/SelectionProvider/index.ts +3 -0
- package/src/components/ui/composite/index.ts +5 -5
- package/src/components/ui/icon-generator/index.ts +2 -0
- package/src/components/ui/typography/index.ts +1 -0
- package/src/hooks/index.ts +3 -0
- package/src/index.ts +3 -0
- package/src/lib/index.ts +3 -0
- package/tsconfig.lib.json +44 -0
- package/vite.config.ts +28 -31
- package/dist/AbstractFocusProvider-CxvlcEki.js +0 -29
- package/dist/AbstractSelectionProvider-BtaROstC.js +0 -30
- package/dist/CompositeDataItem-DuHOHCWy.js +0 -158
- package/dist/ListboxFocusProvider.d.ts +0 -149
- package/dist/ListboxFocusProvider.js +0 -53
- package/dist/MultipleSelectionProvider.d.ts +0 -141
- package/dist/MultipleSelectionProvider.js +0 -19
- package/dist/SingleSelectionProvider.d.ts +0 -141
- package/dist/SingleSelectionProvider.js +0 -23
- package/dist/banner.d.ts +0 -16
- package/dist/banner.js +0 -42
- package/dist/button.d.ts +0 -17
- package/dist/caption.d.ts +0 -13
- package/dist/caption.js +0 -27
- package/dist/card.d.ts +0 -46
- package/dist/card.js +0 -108
- package/dist/composite-component-DSUbd1XS.js +0 -122
- package/dist/composite.d.ts +0 -208
- package/dist/composite.js +0 -82
- package/dist/createLucideIcon-CzehbSja.js +0 -94
- package/dist/generate-tiles-DuagGD1d.js +0 -244
- package/dist/generate-tiles.d.ts +0 -43
- package/dist/generate-tiles.js +0 -7
- package/dist/horizontal-list.d.ts +0 -16
- package/dist/horizontal-list.js +0 -77
- package/dist/icon-generator-tuhuqdpL.js +0 -76
- package/dist/icon-generator.d.ts +0 -58
- package/dist/icon-generator.js +0 -6
- package/dist/index-CQhYMnjT.js +0 -34
- package/dist/index-U7DVCmS_.js +0 -76
- package/dist/input.d.ts +0 -7
- package/dist/listbox.d.ts +0 -171
- package/dist/listbox.js +0 -76
- package/dist/masked-image-generator.js +0 -29
- package/dist/navigation-menu.d.ts +0 -27
- package/dist/navigation-menu.js +0 -1139
- package/dist/overlay.d.ts +0 -13
- package/dist/page-header.d.ts +0 -9
- package/dist/page-section.d.ts +0 -14
- package/dist/page.d.ts +0 -7
- package/dist/page.js +0 -8
- package/dist/search-input.d.ts +0 -7
- package/dist/search-input.js +0 -23
- package/dist/tag.d.ts +0 -16
- package/dist/ui-components.d.ts +0 -215
- package/dist/ui-components.js +0 -54
- package/dist/utils.js +0 -4
- package/src/assets/icons/icon_01.svg +0 -6
- package/src/assets/icons/icon_02.svg +0 -6
- package/src/assets/icons/icon_03.svg +0 -6
- package/src/assets/icons/icon_04.svg +0 -6
- package/src/assets/icons/icon_05.svg +0 -4
- package/src/assets/icons/icon_06.svg +0 -4
- package/src/assets/images/image_01.jpg +0 -0
- package/src/assets/images/image_02.jpg +0 -0
- package/src/assets/images/image_03.webp +0 -0
- package/src/assets/images/image_04.png +0 -0
- package/src/assets/images/image_05.jpg +0 -0
- package/src/assets/images/image_06.jpg +0 -0
- package/src/components/ui/index.ts +0 -15
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export * from './ui/composite';
|
|
2
|
+
export * from './ui/icon-generator';
|
|
3
|
+
export * from './ui/typography';
|
|
4
|
+
export * from './ui/banner.tsx';
|
|
5
|
+
export * from './ui/button.tsx';
|
|
6
|
+
export * from './ui/card.tsx';
|
|
7
|
+
export * from './ui/horizontal-list.tsx';
|
|
8
|
+
export * from './ui/input.tsx';
|
|
9
|
+
export * from './ui/navigation-menu.tsx';
|
|
10
|
+
export * from './ui/overlay.tsx';
|
|
11
|
+
export * from './ui/page-header.tsx';
|
|
12
|
+
export * from './ui/page-section.tsx';
|
|
13
|
+
export * from './ui/page.tsx';
|
|
14
|
+
export * from './ui/popover.tsx';
|
|
15
|
+
export * from './ui/search-input.tsx';
|
|
16
|
+
export * from './ui/tag.tsx';
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { CompositeData } from "./ui/composite/CompositeData.js";
|
|
2
|
+
import { C } from "../_chunks/CompositeDataItem.js";
|
|
3
|
+
import { AbstractFocusProvider } from "./ui/composite/FocusProvider/AbstractFocusProvider.js";
|
|
4
|
+
import { ListboxFocusProvider } from "./ui/composite/FocusProvider/ListboxFocusProvider.js";
|
|
5
|
+
import { AbstractSelectionProvider } from "./ui/composite/SelectionProvider/AbstractSelectionProvider.js";
|
|
6
|
+
import { SingleSelectionProvider } from "./ui/composite/SelectionProvider/SingleSelectionProvider.js";
|
|
7
|
+
import { MultipleSelectionProvider } from "./ui/composite/SelectionProvider/MultipleSelectionProvider.js";
|
|
8
|
+
import { CompositeComponent } from "./ui/composite/composite-component.js";
|
|
9
|
+
import { CompositeComponentItem } from "./ui/composite/composite-component-item.js";
|
|
10
|
+
import { Listbox } from "./ui/composite/listbox.js";
|
|
11
|
+
import { IconGenerator } from "./ui/icon-generator/icon-generator.js";
|
|
12
|
+
import { generateIconPattern, generateTiles } from "./ui/icon-generator/generate-tiles.js";
|
|
13
|
+
import { MaskedImageGenerator } from "./ui/icon-generator/masked-image-generator.js";
|
|
14
|
+
import { TileShape } from "./ui/icon-generator/types.js";
|
|
15
|
+
import { Caption, captionVariants } from "./ui/typography/caption.js";
|
|
16
|
+
import { Banner } from "./ui/banner.js";
|
|
17
|
+
import { Button, buttonVariants } from "./ui/button.js";
|
|
18
|
+
import { Card, CardArea, CardCaption, CardContent, CardImage, CardItemGroup, CardMedia, CardMeta, CardSubcaption, CardSubtitle, CardTitle, CardToolbar } from "./ui/card.js";
|
|
19
|
+
import { HorizontalList } from "./ui/horizontal-list.js";
|
|
20
|
+
import { Input } from "./ui/input.js";
|
|
21
|
+
import { NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, navigationMenuTriggerStyle } from "./ui/navigation-menu.js";
|
|
22
|
+
import { Overlay } from "./ui/overlay.js";
|
|
23
|
+
import { PageHeader } from "./ui/page-header.js";
|
|
24
|
+
import { PageSection } from "./ui/page-section.js";
|
|
25
|
+
import { Page } from "./ui/page.js";
|
|
26
|
+
import { Popover, PopoverAnchor, PopoverContent, PopoverTrigger } from "./ui/popover.js";
|
|
27
|
+
import { SearchInput } from "./ui/search-input.js";
|
|
28
|
+
import { Tag, tagVariants } from "./ui/tag.js";
|
|
29
|
+
export {
|
|
30
|
+
AbstractFocusProvider,
|
|
31
|
+
AbstractSelectionProvider,
|
|
32
|
+
Banner,
|
|
33
|
+
Button,
|
|
34
|
+
Caption,
|
|
35
|
+
Card,
|
|
36
|
+
CardArea,
|
|
37
|
+
CardCaption,
|
|
38
|
+
CardContent,
|
|
39
|
+
CardImage,
|
|
40
|
+
CardItemGroup,
|
|
41
|
+
CardMedia,
|
|
42
|
+
CardMeta,
|
|
43
|
+
CardSubcaption,
|
|
44
|
+
CardSubtitle,
|
|
45
|
+
CardTitle,
|
|
46
|
+
CardToolbar,
|
|
47
|
+
CompositeComponent,
|
|
48
|
+
CompositeComponentItem,
|
|
49
|
+
CompositeData,
|
|
50
|
+
C as CompositeDataItem,
|
|
51
|
+
HorizontalList,
|
|
52
|
+
IconGenerator,
|
|
53
|
+
Input,
|
|
54
|
+
Listbox,
|
|
55
|
+
ListboxFocusProvider,
|
|
56
|
+
MaskedImageGenerator,
|
|
57
|
+
MultipleSelectionProvider,
|
|
58
|
+
NavigationMenu,
|
|
59
|
+
NavigationMenuContent,
|
|
60
|
+
NavigationMenuIndicator,
|
|
61
|
+
NavigationMenuItem,
|
|
62
|
+
NavigationMenuLink,
|
|
63
|
+
NavigationMenuList,
|
|
64
|
+
NavigationMenuTrigger,
|
|
65
|
+
NavigationMenuViewport,
|
|
66
|
+
Overlay,
|
|
67
|
+
Page,
|
|
68
|
+
PageHeader,
|
|
69
|
+
PageSection,
|
|
70
|
+
Popover,
|
|
71
|
+
PopoverAnchor,
|
|
72
|
+
PopoverContent,
|
|
73
|
+
PopoverTrigger,
|
|
74
|
+
SearchInput,
|
|
75
|
+
SingleSelectionProvider,
|
|
76
|
+
Tag,
|
|
77
|
+
TileShape,
|
|
78
|
+
buttonVariants,
|
|
79
|
+
captionVariants,
|
|
80
|
+
generateIconPattern,
|
|
81
|
+
generateTiles,
|
|
82
|
+
navigationMenuTriggerStyle,
|
|
83
|
+
tagVariants
|
|
84
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { VariantProps } from 'class-variance-authority';
|
|
2
|
+
declare const bannerVariants: (props?: ({
|
|
3
|
+
variant?: "alert" | "default" | null | undefined;
|
|
4
|
+
size?: "default" | "sm" | "lg" | null | undefined;
|
|
5
|
+
} & import('class-variance-authority/dist/types').ClassProp) | undefined) => string;
|
|
6
|
+
export interface BannerProps extends VariantProps<typeof bannerVariants>, React.ComponentProps<"div"> {
|
|
7
|
+
dismissible?: boolean;
|
|
8
|
+
}
|
|
9
|
+
declare function Banner({ className, size, variant, dismissible, children, ...props }: BannerProps): import("react").JSX.Element | null;
|
|
10
|
+
export { Banner };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { c as cva } from "../../_chunks/index2.js";
|
|
3
|
+
import { c as cn } from "../../_chunks/utils.js";
|
|
4
|
+
import { useState } from "react";
|
|
5
|
+
import { Button } from "./button.js";
|
|
6
|
+
import { c as createLucideIcon } from "../../_chunks/createLucideIcon.js";
|
|
7
|
+
/**
|
|
8
|
+
* @license lucide-react v0.544.0 - ISC
|
|
9
|
+
*
|
|
10
|
+
* This source code is licensed under the ISC license.
|
|
11
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
12
|
+
*/
|
|
13
|
+
const __iconNode = [
|
|
14
|
+
["path", { d: "M18 6 6 18", key: "1bl5f8" }],
|
|
15
|
+
["path", { d: "m6 6 12 12", key: "d8bk6v" }]
|
|
16
|
+
];
|
|
17
|
+
const X = createLucideIcon("x", __iconNode);
|
|
18
|
+
const bannerVariants = cva("flex flex-row items-center justify-between px-(--spacing-section) text-sm", {
|
|
19
|
+
variants: {
|
|
20
|
+
variant: {
|
|
21
|
+
default: "bg-complement-3 text-white",
|
|
22
|
+
alert: "bg-complement-2-200 text-black"
|
|
23
|
+
},
|
|
24
|
+
size: {
|
|
25
|
+
default: "py-2",
|
|
26
|
+
sm: "py-1",
|
|
27
|
+
lg: "py-3 text-md font-semibold"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
defaultVariants: {
|
|
31
|
+
variant: "default",
|
|
32
|
+
size: "default"
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
function Banner({ className, size, variant, dismissible, children, ...props }) {
|
|
36
|
+
const [dismissed, setDismissed] = useState(false);
|
|
37
|
+
if (dismissed) return null;
|
|
38
|
+
return /* @__PURE__ */ jsxs("div", { "data-slot": "banner", className: cn(bannerVariants({ variant, size }), className), ...props, children: [
|
|
39
|
+
/* @__PURE__ */ jsx("div", { className: "flex-auto text-center", children }),
|
|
40
|
+
dismissible && /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "icon", className: "size-6 text-white", onClick: () => setDismissed(true), children: /* @__PURE__ */ jsx(X, {}) }) })
|
|
41
|
+
] });
|
|
42
|
+
}
|
|
43
|
+
export {
|
|
44
|
+
Banner
|
|
45
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { VariantProps } from 'class-variance-authority';
|
|
2
|
+
declare const buttonVariants: (props?: ({
|
|
3
|
+
variant?: "item" | "default" | "secondary" | "outline" | "ghost" | "destructive" | null | undefined;
|
|
4
|
+
block?: boolean | null | undefined;
|
|
5
|
+
size?: "text" | "default" | "sm" | "lg" | "icon" | null | undefined;
|
|
6
|
+
} & import('class-variance-authority/dist/types').ClassProp) | undefined) => string;
|
|
7
|
+
export type ButtonProps = React.ComponentProps<"button"> & VariantProps<typeof buttonVariants> & {
|
|
8
|
+
asChild?: boolean;
|
|
9
|
+
};
|
|
10
|
+
declare function Button({ className, variant, size, block, asChild, ...props }: ButtonProps): import("react").JSX.Element;
|
|
11
|
+
export { Button, buttonVariants };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { jsx
|
|
2
|
-
import { S as
|
|
3
|
-
import { c as
|
|
4
|
-
import { c } from "
|
|
5
|
-
const
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { S as Slot } from "../../_chunks/index.js";
|
|
3
|
+
import { c as cva } from "../../_chunks/index2.js";
|
|
4
|
+
import { c as cn } from "../../_chunks/utils.js";
|
|
5
|
+
const buttonVariants = cva(
|
|
6
6
|
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-sm text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 px-6 has-[>svg]:px-4 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring focus-visible:ring-2 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
|
|
7
7
|
{
|
|
8
8
|
variants: {
|
|
@@ -28,15 +28,16 @@ const u = d(
|
|
|
28
28
|
},
|
|
29
29
|
defaultVariants: {
|
|
30
30
|
size: "default",
|
|
31
|
-
block:
|
|
31
|
+
block: false,
|
|
32
32
|
variant: "default"
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
);
|
|
36
|
-
function
|
|
37
|
-
|
|
36
|
+
function Button({ className, variant, size, block, asChild = false, ...props }) {
|
|
37
|
+
const Comp = asChild ? Slot : "button";
|
|
38
|
+
return /* @__PURE__ */ jsx(Comp, { "data-slot": "button", className: cn(buttonVariants({ size, block, variant }), className), ...props });
|
|
38
39
|
}
|
|
39
40
|
export {
|
|
40
|
-
|
|
41
|
-
|
|
41
|
+
Button,
|
|
42
|
+
buttonVariants
|
|
42
43
|
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { VariantProps } from 'class-variance-authority';
|
|
2
|
+
declare const cardVariants: (props?: ({
|
|
3
|
+
bordered?: boolean | null | undefined;
|
|
4
|
+
rounded?: boolean | null | undefined;
|
|
5
|
+
} & import('class-variance-authority/dist/types').ClassProp) | undefined) => string;
|
|
6
|
+
export type CardProps<T extends boolean> = (T extends true ? React.ComponentProps<"a"> : React.ComponentProps<"div">) & VariantProps<typeof cardVariants> & {
|
|
7
|
+
asLink?: T;
|
|
8
|
+
};
|
|
9
|
+
declare function Card<T extends boolean = false>({ className, asLink, bordered, rounded, ...props }: CardProps<T>): import("react").JSX.Element;
|
|
10
|
+
type CardAreaProps = React.ComponentProps<"div"> & {
|
|
11
|
+
name: string;
|
|
12
|
+
};
|
|
13
|
+
declare function CardArea({ name, className, ...props }: CardAreaProps): import("react").JSX.Element;
|
|
14
|
+
declare function CardItemGroup({ className, ...props }: React.ComponentProps<"div">): import("react").JSX.Element;
|
|
15
|
+
type CardTitleProps = React.ComponentProps<"div"> & {
|
|
16
|
+
size?: "sm" | "md" | "lg";
|
|
17
|
+
};
|
|
18
|
+
declare function CardTitle({ size, className, ...props }: CardTitleProps): import("react").JSX.Element;
|
|
19
|
+
declare function CardSubtitle({ size, className, ...props }: CardTitleProps): import("react").JSX.Element;
|
|
20
|
+
declare function CardCaption(props: React.ComponentProps<"div">): import("react").JSX.Element;
|
|
21
|
+
declare function CardSubcaption(props: React.ComponentProps<"div">): import("react").JSX.Element;
|
|
22
|
+
declare function CardMeta(props: React.ComponentProps<"div">): import("react").JSX.Element;
|
|
23
|
+
declare function CardContent(props: React.ComponentProps<"div">): import("react").JSX.Element;
|
|
24
|
+
declare function CardToolbar({ className, ...props }: React.ComponentProps<"div">): import("react").JSX.Element;
|
|
25
|
+
declare function CardMedia({ className, ...props }: React.ComponentProps<"div">): import("react").JSX.Element;
|
|
26
|
+
declare function CardImage({ className, ...props }: React.ComponentProps<"img">): import("react").JSX.Element;
|
|
27
|
+
export { Card, CardArea, CardItemGroup, CardToolbar, CardTitle, CardSubtitle, CardCaption, CardSubcaption, CardMeta, CardContent, CardMedia, CardImage, };
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { c as cn } from "../../_chunks/utils.js";
|
|
3
|
+
import { Caption } from "./typography/caption.js";
|
|
4
|
+
import { c as cva } from "../../_chunks/index2.js";
|
|
5
|
+
const cardVariants = cva("group @container/card w-full max-w-full bg-card text-card-foreground grid gap-(--gap-card)", {
|
|
6
|
+
variants: {
|
|
7
|
+
bordered: {
|
|
8
|
+
true: "p-(--spacing-card) border border-complement-1-100 dark:border-brand-1-900 ",
|
|
9
|
+
false: ""
|
|
10
|
+
},
|
|
11
|
+
rounded: {
|
|
12
|
+
true: "rounded-2xl",
|
|
13
|
+
false: ""
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
defaultVariants: {
|
|
17
|
+
bordered: false,
|
|
18
|
+
rounded: false
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
function Card({ className, asLink, bordered, rounded, ...props }) {
|
|
22
|
+
const Comp = asLink ? "a" : "div";
|
|
23
|
+
const linkClassName = asLink ? "transition-all hover:bg-complement-1-50 dark:hover:bg-gray-900" : "";
|
|
24
|
+
return (
|
|
25
|
+
//@ts-expect-error: props type will be correct
|
|
26
|
+
/* @__PURE__ */ jsx(Comp, { "data-slot": "card", className: cn(cardVariants({ bordered, rounded }), linkClassName, className), ...props })
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
function CardArea({ name, className, ...props }) {
|
|
30
|
+
return /* @__PURE__ */ jsx(
|
|
31
|
+
"div",
|
|
32
|
+
{
|
|
33
|
+
style: { gridArea: name },
|
|
34
|
+
className: cn("@container/card-area relative flex flex-col gap-(--gap-card-area)", className),
|
|
35
|
+
...props
|
|
36
|
+
}
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
function CardItemGroup({ className, ...props }) {
|
|
40
|
+
return /* @__PURE__ */ jsx("div", { className: cn("flex flex-col gap-(--gap-card-item-group)", className), ...props });
|
|
41
|
+
}
|
|
42
|
+
function CardTitle({ size = "md", className, ...props }) {
|
|
43
|
+
return /* @__PURE__ */ jsx(
|
|
44
|
+
"div",
|
|
45
|
+
{
|
|
46
|
+
className: cn(
|
|
47
|
+
{
|
|
48
|
+
"heading-1": size === "lg",
|
|
49
|
+
"heading-2": size === "md",
|
|
50
|
+
"heading-3": size === "sm"
|
|
51
|
+
},
|
|
52
|
+
className
|
|
53
|
+
),
|
|
54
|
+
...props
|
|
55
|
+
}
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
function CardSubtitle({ size = "md", className, ...props }) {
|
|
59
|
+
return /* @__PURE__ */ jsx(
|
|
60
|
+
"div",
|
|
61
|
+
{
|
|
62
|
+
className: cn(
|
|
63
|
+
"text-secondary",
|
|
64
|
+
{
|
|
65
|
+
"heading-1": size === "lg",
|
|
66
|
+
"heading-2": size === "md",
|
|
67
|
+
"heading-3": size === "sm"
|
|
68
|
+
},
|
|
69
|
+
className
|
|
70
|
+
),
|
|
71
|
+
...props
|
|
72
|
+
}
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
function CardCaption(props) {
|
|
76
|
+
return /* @__PURE__ */ jsx(Caption, { ...props });
|
|
77
|
+
}
|
|
78
|
+
function CardSubcaption(props) {
|
|
79
|
+
return /* @__PURE__ */ jsx(Caption, { variant: "light", ...props });
|
|
80
|
+
}
|
|
81
|
+
function CardMeta(props) {
|
|
82
|
+
return /* @__PURE__ */ jsx(Caption, { variant: "light", ...props });
|
|
83
|
+
}
|
|
84
|
+
function CardContent(props) {
|
|
85
|
+
return /* @__PURE__ */ jsx("div", { ...props });
|
|
86
|
+
}
|
|
87
|
+
function CardToolbar({ className, ...props }) {
|
|
88
|
+
return /* @__PURE__ */ jsx("div", { className: cn("flex flex-wrap items-center gap-(--gap-card-item-group)", className), ...props });
|
|
89
|
+
}
|
|
90
|
+
function CardMedia({ className, ...props }) {
|
|
91
|
+
return /* @__PURE__ */ jsx("div", { className: cn("relative w-full h-full", className), ...props });
|
|
92
|
+
}
|
|
93
|
+
function CardImage({ className, ...props }) {
|
|
94
|
+
return /* @__PURE__ */ jsx(CardMedia, { children: /* @__PURE__ */ jsx("img", { className: cn("w-full h-full rounded-lg aspect-9/5 object-cover object-top", className), ...props }) });
|
|
95
|
+
}
|
|
96
|
+
export {
|
|
97
|
+
Card,
|
|
98
|
+
CardArea,
|
|
99
|
+
CardCaption,
|
|
100
|
+
CardContent,
|
|
101
|
+
CardImage,
|
|
102
|
+
CardItemGroup,
|
|
103
|
+
CardMedia,
|
|
104
|
+
CardMeta,
|
|
105
|
+
CardSubcaption,
|
|
106
|
+
CardSubtitle,
|
|
107
|
+
CardTitle,
|
|
108
|
+
CardToolbar
|
|
109
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { CompositeItemKey, CompositeOptions, CompositeProviderOptions } from './types';
|
|
2
|
+
import { CompositeDataItem } from './CompositeDataItem';
|
|
3
|
+
import { AbstractFocusProvider } from './FocusProvider/AbstractFocusProvider';
|
|
4
|
+
import { AbstractSelectionProvider } from './SelectionProvider/AbstractSelectionProvider';
|
|
5
|
+
export declare class CompositeData<T extends object> implements Iterable<CompositeDataItem<T>> {
|
|
6
|
+
#private;
|
|
7
|
+
lookup: Map<CompositeItemKey, CompositeDataItem<T>>;
|
|
8
|
+
focusProvider: AbstractFocusProvider<T>;
|
|
9
|
+
selectionProvider?: AbstractSelectionProvider<T>;
|
|
10
|
+
disabledKeys: Set<CompositeItemKey>;
|
|
11
|
+
root: CompositeDataItem<T>;
|
|
12
|
+
constructor(items: T[], providerOptions: CompositeProviderOptions<T>, options?: CompositeOptions);
|
|
13
|
+
[Symbol.iterator](): Iterator<CompositeDataItem<T>>;
|
|
14
|
+
toJSON(): T[];
|
|
15
|
+
init(items: T[]): void;
|
|
16
|
+
item(key: CompositeItemKey): CompositeDataItem<T> | undefined;
|
|
17
|
+
descendants(itemKey: CompositeItemKey): CompositeDataItem<T>[] | undefined;
|
|
18
|
+
ancestors(itemKey: CompositeItemKey): CompositeDataItem<T>[] | undefined;
|
|
19
|
+
updateItem(key: CompositeItemKey, data: Partial<T> | ((item: T) => Partial<T>)): void;
|
|
20
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { C as CompositeDataItem } from "../../../_chunks/CompositeDataItem.js";
|
|
2
|
+
import { union } from "../../../lib/set-operations.js";
|
|
3
|
+
class CompositeData {
|
|
4
|
+
#options;
|
|
5
|
+
lookup = /* @__PURE__ */ new Map();
|
|
6
|
+
focusProvider;
|
|
7
|
+
selectionProvider;
|
|
8
|
+
disabledKeys = /* @__PURE__ */ new Set();
|
|
9
|
+
root;
|
|
10
|
+
constructor(items, providerOptions, options) {
|
|
11
|
+
this.#options = {
|
|
12
|
+
itemKeyProp: "key",
|
|
13
|
+
itemChildrenProp: "children",
|
|
14
|
+
disabledKeys: [],
|
|
15
|
+
selectedKeys: [],
|
|
16
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
17
|
+
getItemKey: (item) => item[this.#options.itemKeyProp],
|
|
18
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
19
|
+
getItemChildren: (item) => item[this.#options.itemChildrenProp] ? item[this.#options.itemChildrenProp] : void 0,
|
|
20
|
+
...options
|
|
21
|
+
};
|
|
22
|
+
this.focusProvider = providerOptions.focusProvider;
|
|
23
|
+
this.selectionProvider = providerOptions.selectionProvider;
|
|
24
|
+
this.init(items);
|
|
25
|
+
}
|
|
26
|
+
*[Symbol.iterator]() {
|
|
27
|
+
if (this.root.children) {
|
|
28
|
+
for (const node of this.root.children) {
|
|
29
|
+
yield node;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
toJSON() {
|
|
34
|
+
const json = this.root.toJSON();
|
|
35
|
+
return json[this.#options.itemChildrenProp];
|
|
36
|
+
}
|
|
37
|
+
init(items) {
|
|
38
|
+
this.root = new CompositeDataItem(
|
|
39
|
+
{ [this.#options.itemKeyProp]: "ALL", [this.#options.itemChildrenProp]: items },
|
|
40
|
+
this.#options,
|
|
41
|
+
null
|
|
42
|
+
);
|
|
43
|
+
this.lookup = new Map([...this.root].map((item) => [item.key, item]));
|
|
44
|
+
this.#options.disabledKeys.forEach((disabledKey) => this.#disable(disabledKey));
|
|
45
|
+
if (this.selectionProvider)
|
|
46
|
+
this.selectionProvider.init(this, this.#options);
|
|
47
|
+
this.focusProvider.init(this, this.#options);
|
|
48
|
+
}
|
|
49
|
+
item(key) {
|
|
50
|
+
return this.lookup.get(key);
|
|
51
|
+
}
|
|
52
|
+
descendants(itemKey) {
|
|
53
|
+
const item = this.lookup.get(itemKey);
|
|
54
|
+
if (!item) return void 0;
|
|
55
|
+
return item.descendants();
|
|
56
|
+
}
|
|
57
|
+
ancestors(itemKey) {
|
|
58
|
+
const item = this.lookup.get(itemKey);
|
|
59
|
+
if (!item) return void 0;
|
|
60
|
+
return item.ancestors();
|
|
61
|
+
}
|
|
62
|
+
#disable(item, recursive = false) {
|
|
63
|
+
const _item = item instanceof CompositeDataItem ? item : this.lookup.get(item);
|
|
64
|
+
if (!_item) return;
|
|
65
|
+
const disabledKeys = _item.disable(recursive);
|
|
66
|
+
this.disabledKeys = union(this.disabledKeys, disabledKeys);
|
|
67
|
+
}
|
|
68
|
+
updateItem(key, data) {
|
|
69
|
+
const item = this.lookup.get(key);
|
|
70
|
+
if (item) {
|
|
71
|
+
const newData = {
|
|
72
|
+
...item.data.get(),
|
|
73
|
+
...typeof data === "function" ? data(item.data.get()) : data
|
|
74
|
+
};
|
|
75
|
+
const newKey = this.#options.getItemKey(newData);
|
|
76
|
+
if (item.key !== newKey) throw "Item key cannot be updated!";
|
|
77
|
+
this.#updateIfSelectedItem(key);
|
|
78
|
+
item.data.set(newData);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
#updateIfSelectedItem(key) {
|
|
82
|
+
if (this.selectionProvider && this.selectionProvider.selectedKeys.get().has(key)) {
|
|
83
|
+
this.selectionProvider.selectedKeys.set(/* @__PURE__ */ new Set([...this.selectionProvider.selectedKeys.get()]));
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
export {
|
|
88
|
+
CompositeData
|
|
89
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { PreinitializedMapStore } from 'nanostores';
|
|
2
|
+
import { CompositeDataItemState, CompositeItemKey, CompositeDataItemOptions } from './types';
|
|
3
|
+
export declare class CompositeDataItem<T extends object> implements Iterable<CompositeDataItem<T>> {
|
|
4
|
+
#private;
|
|
5
|
+
parent: CompositeDataItem<T> | null;
|
|
6
|
+
children?: CompositeDataItem<T>[];
|
|
7
|
+
level: number;
|
|
8
|
+
data: PreinitializedMapStore<T>;
|
|
9
|
+
state: PreinitializedMapStore<CompositeDataItemState>;
|
|
10
|
+
pointers: {
|
|
11
|
+
left?: CompositeItemKey;
|
|
12
|
+
right?: CompositeItemKey;
|
|
13
|
+
up?: CompositeItemKey;
|
|
14
|
+
down?: CompositeItemKey;
|
|
15
|
+
};
|
|
16
|
+
childrenProp: string;
|
|
17
|
+
constructor(item: T, options: CompositeDataItemOptions<T>, parent: CompositeDataItem<T> | null);
|
|
18
|
+
get key(): CompositeItemKey;
|
|
19
|
+
[Symbol.iterator](): Iterator<CompositeDataItem<T>>;
|
|
20
|
+
toJSON(): T;
|
|
21
|
+
descendants(): CompositeDataItem<T>[];
|
|
22
|
+
ancestors(): CompositeDataItem<T>[];
|
|
23
|
+
toggleSelect(recursive?: boolean): void;
|
|
24
|
+
select(recursive?: boolean): CompositeItemKey[];
|
|
25
|
+
deselect(recursive?: boolean): CompositeItemKey[];
|
|
26
|
+
disable(recursive?: boolean): CompositeItemKey[];
|
|
27
|
+
enable(recursive?: boolean): CompositeItemKey[];
|
|
28
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { PreinitializedWritableAtom } from 'nanostores';
|
|
2
|
+
import { CompositeData } from '../CompositeData';
|
|
3
|
+
import { CompositeDataItem } from '../CompositeDataItem';
|
|
4
|
+
import { CompositeDataOptions, CompositeItemKey } from '../types';
|
|
5
|
+
export interface FocusProvider {
|
|
6
|
+
focus(itemKey: CompositeItemKey): void;
|
|
7
|
+
focusUp(): void;
|
|
8
|
+
focusDown(): void;
|
|
9
|
+
focusLeft(): void;
|
|
10
|
+
focusRight(): void;
|
|
11
|
+
focusPageUp(): void;
|
|
12
|
+
focesPageDown(): void;
|
|
13
|
+
focusToFirst(): void;
|
|
14
|
+
focusToLast(): void;
|
|
15
|
+
focusToFirstInRow(): void;
|
|
16
|
+
focusToLastInRow(): void;
|
|
17
|
+
focusToTypeAheadMatch(): void;
|
|
18
|
+
}
|
|
19
|
+
export declare abstract class AbstractFocusProvider<T extends object> implements FocusProvider {
|
|
20
|
+
protected data: CompositeData<T>;
|
|
21
|
+
protected dataOptions: CompositeDataOptions<T>;
|
|
22
|
+
firstFocusableItem: CompositeDataItem<T> | null;
|
|
23
|
+
lastFocusableItem: CompositeDataItem<T> | null;
|
|
24
|
+
focusedItem: PreinitializedWritableAtom<CompositeDataItem<T> | null>;
|
|
25
|
+
init(data: CompositeData<T>, dataOptions: CompositeDataOptions<T>): void;
|
|
26
|
+
isFocusable(itemAtom: CompositeDataItem<T>): boolean;
|
|
27
|
+
focus(itemKey: CompositeItemKey): void;
|
|
28
|
+
focus(item: CompositeDataItem<T>): void;
|
|
29
|
+
abstract setFocusPointers(): readonly [first: CompositeDataItem<T> | null, last: CompositeDataItem<T> | null];
|
|
30
|
+
abstract focusUp(): void;
|
|
31
|
+
abstract focusDown(): void;
|
|
32
|
+
abstract focusLeft(): void;
|
|
33
|
+
abstract focusRight(): void;
|
|
34
|
+
abstract focusPageUp(): void;
|
|
35
|
+
abstract focesPageDown(): void;
|
|
36
|
+
abstract focusToFirst(): void;
|
|
37
|
+
abstract focusToLast(): void;
|
|
38
|
+
abstract focusToFirstInRow(): void;
|
|
39
|
+
abstract focusToLastInRow(): void;
|
|
40
|
+
abstract focusToTypeAheadMatch(): void;
|
|
41
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { a as atom, C as CompositeDataItem } from "../../../../_chunks/CompositeDataItem.js";
|
|
2
|
+
class AbstractFocusProvider {
|
|
3
|
+
data;
|
|
4
|
+
dataOptions;
|
|
5
|
+
firstFocusableItem;
|
|
6
|
+
lastFocusableItem;
|
|
7
|
+
focusedItem = atom(null);
|
|
8
|
+
init(data, dataOptions) {
|
|
9
|
+
this.data = data;
|
|
10
|
+
this.dataOptions = dataOptions;
|
|
11
|
+
const [first, last] = this.setFocusPointers();
|
|
12
|
+
this.firstFocusableItem = first;
|
|
13
|
+
if (this.firstFocusableItem) {
|
|
14
|
+
this.firstFocusableItem.state.setKey("focused", true);
|
|
15
|
+
this.focusedItem.set(this.firstFocusableItem);
|
|
16
|
+
}
|
|
17
|
+
this.lastFocusableItem = last;
|
|
18
|
+
}
|
|
19
|
+
isFocusable(itemAtom) {
|
|
20
|
+
return !itemAtom.state.get().disabled;
|
|
21
|
+
}
|
|
22
|
+
focus(item) {
|
|
23
|
+
const _item = item instanceof CompositeDataItem ? item : this.data.lookup.get(item);
|
|
24
|
+
if (!_item) return;
|
|
25
|
+
if (this.focusedItem.get()) {
|
|
26
|
+
if (_item.key === this.focusedItem.get()?.key) return;
|
|
27
|
+
this.focusedItem.get().state.setKey("focused", false);
|
|
28
|
+
}
|
|
29
|
+
_item.state.setKey("focused", true);
|
|
30
|
+
this.focusedItem.set(_item);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export {
|
|
34
|
+
AbstractFocusProvider
|
|
35
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { CompositeDataItem } from '../CompositeDataItem';
|
|
2
|
+
import { AbstractFocusProvider } from './AbstractFocusProvider';
|
|
3
|
+
export declare class ListboxFocusProvider<T extends object> extends AbstractFocusProvider<T> {
|
|
4
|
+
setFocusPointers(): readonly [CompositeDataItem<T> | null, CompositeDataItem<T> | null];
|
|
5
|
+
focusUp(): void;
|
|
6
|
+
focusDown(): void;
|
|
7
|
+
focusLeft(): void;
|
|
8
|
+
focusRight(): void;
|
|
9
|
+
focusPageUp(): void;
|
|
10
|
+
focesPageDown(): void;
|
|
11
|
+
focusToFirst(): void;
|
|
12
|
+
focusToLast(): void;
|
|
13
|
+
focusToFirstInRow(): void;
|
|
14
|
+
focusToLastInRow(): void;
|
|
15
|
+
focusToTypeAheadMatch(): void;
|
|
16
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { AbstractFocusProvider } from "./AbstractFocusProvider.js";
|
|
2
|
+
class ListboxFocusProvider extends AbstractFocusProvider {
|
|
3
|
+
setFocusPointers() {
|
|
4
|
+
let first = null;
|
|
5
|
+
let last = null;
|
|
6
|
+
const lookupData = [...this.data.lookup];
|
|
7
|
+
for (let index = 0; index < lookupData.length; index++) {
|
|
8
|
+
const [key, item] = lookupData[index];
|
|
9
|
+
if (!this.isFocusable(item)) continue;
|
|
10
|
+
if (!first) first = item;
|
|
11
|
+
last = item;
|
|
12
|
+
if (index < lookupData.length - 1) {
|
|
13
|
+
let newIndex = index === lookupData.length - 1 ? 0 : index + 1;
|
|
14
|
+
while (newIndex < lookupData.length && !this.isFocusable(lookupData[newIndex][1])) {
|
|
15
|
+
newIndex = (newIndex + 1) % lookupData.length;
|
|
16
|
+
}
|
|
17
|
+
item.pointers.down = lookupData[newIndex][0];
|
|
18
|
+
lookupData[newIndex][1].pointers.up = key;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return [first, last];
|
|
22
|
+
}
|
|
23
|
+
focusUp() {
|
|
24
|
+
if (this.focusedItem.get()?.pointers.up) {
|
|
25
|
+
this.focus(this.focusedItem.get().pointers.up);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
focusDown() {
|
|
29
|
+
if (this.focusedItem.get()?.pointers.down) {
|
|
30
|
+
this.focus(this.focusedItem.get().pointers.down);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
focusLeft() {
|
|
34
|
+
throw new Error("Method not implemented.");
|
|
35
|
+
}
|
|
36
|
+
focusRight() {
|
|
37
|
+
throw new Error("Method not implemented.");
|
|
38
|
+
}
|
|
39
|
+
focusPageUp() {
|
|
40
|
+
throw new Error("Method not implemented.");
|
|
41
|
+
}
|
|
42
|
+
focesPageDown() {
|
|
43
|
+
throw new Error("Method not implemented.");
|
|
44
|
+
}
|
|
45
|
+
focusToFirst() {
|
|
46
|
+
if (this.firstFocusableItem) {
|
|
47
|
+
this.focus(this.firstFocusableItem);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
focusToLast() {
|
|
51
|
+
if (this.lastFocusableItem) {
|
|
52
|
+
this.focus(this.lastFocusableItem);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
focusToFirstInRow() {
|
|
56
|
+
throw new Error("Method not implemented.");
|
|
57
|
+
}
|
|
58
|
+
focusToLastInRow() {
|
|
59
|
+
throw new Error("Method not implemented.");
|
|
60
|
+
}
|
|
61
|
+
focusToTypeAheadMatch() {
|
|
62
|
+
throw new Error("Method not implemented.");
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
export {
|
|
66
|
+
ListboxFocusProvider
|
|
67
|
+
};
|