@c-rex/components 0.0.9 → 0.0.10

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.
Files changed (134) hide show
  1. package/package.json +28 -46
  2. package/src/autocomplete.tsx +113 -0
  3. package/src/blog-card.tsx +87 -0
  4. package/src/blur-image.tsx +23 -0
  5. package/src/breadcrumb.tsx +81 -0
  6. package/src/empty.tsx +13 -0
  7. package/src/navbar.tsx +66 -0
  8. package/src/providers/search-state-wrapper.tsx +21 -0
  9. package/src/result-list.tsx +16 -0
  10. package/src/result-view/blog-view.stories.tsx +58 -0
  11. package/src/result-view/blog.tsx +38 -0
  12. package/src/result-view/table-view.stories.tsx +55 -0
  13. package/src/result-view/table.tsx +65 -0
  14. package/src/sidebar.tsx +76 -0
  15. package/src/stories/blog-card.stories.tsx +46 -0
  16. package/src/stories/blur-image.stories.tsx +51 -0
  17. package/src/stories/breadcrumb.stories.tsx +52 -0
  18. package/src/stories/empty.stories.tsx +14 -0
  19. package/src/stories/navbar.stories.tsx +16 -0
  20. package/src/stories/sidebar.stories.tsx +94 -0
  21. package/dist/autocomplete.cjs.js +0 -215
  22. package/dist/autocomplete.cjs.js.map +0 -1
  23. package/dist/autocomplete.d.cts +0 -10
  24. package/dist/autocomplete.d.ts +0 -10
  25. package/dist/autocomplete.esm.js +0 -154
  26. package/dist/autocomplete.esm.js.map +0 -1
  27. package/dist/blog-card.cjs.js +0 -265
  28. package/dist/blog-card.cjs.js.map +0 -1
  29. package/dist/blog-card.d.cts +0 -19
  30. package/dist/blog-card.d.ts +0 -19
  31. package/dist/blog-card.esm.js +0 -192
  32. package/dist/blog-card.esm.js.map +0 -1
  33. package/dist/blur-image.cjs.js +0 -198
  34. package/dist/blur-image.cjs.js.map +0 -1
  35. package/dist/blur-image.d.cts +0 -7
  36. package/dist/blur-image.d.ts +0 -7
  37. package/dist/blur-image.esm.js +0 -125
  38. package/dist/blur-image.esm.js.map +0 -1
  39. package/dist/breadcrumb.cjs.js +0 -159
  40. package/dist/breadcrumb.cjs.js.map +0 -1
  41. package/dist/breadcrumb.d.cts +0 -10
  42. package/dist/breadcrumb.d.ts +0 -10
  43. package/dist/breadcrumb.esm.js +0 -98
  44. package/dist/breadcrumb.esm.js.map +0 -1
  45. package/dist/empty.cjs.js +0 -79
  46. package/dist/empty.cjs.js.map +0 -1
  47. package/dist/empty.d.cts +0 -5
  48. package/dist/empty.d.ts +0 -5
  49. package/dist/empty.esm.js +0 -18
  50. package/dist/empty.esm.js.map +0 -1
  51. package/dist/navbar.cjs.js +0 -134
  52. package/dist/navbar.cjs.js.map +0 -1
  53. package/dist/navbar.d.cts +0 -9
  54. package/dist/navbar.d.ts +0 -9
  55. package/dist/navbar.esm.js +0 -61
  56. package/dist/navbar.esm.js.map +0 -1
  57. package/dist/providers/search-state-wrapper.cjs.js +0 -113
  58. package/dist/providers/search-state-wrapper.cjs.js.map +0 -1
  59. package/dist/providers/search-state-wrapper.d.cts +0 -14
  60. package/dist/providers/search-state-wrapper.d.ts +0 -14
  61. package/dist/providers/search-state-wrapper.esm.js +0 -51
  62. package/dist/providers/search-state-wrapper.esm.js.map +0 -1
  63. package/dist/result-list.cjs.js +0 -321
  64. package/dist/result-list.cjs.js.map +0 -1
  65. package/dist/result-list.d.cts +0 -9
  66. package/dist/result-list.d.ts +0 -9
  67. package/dist/result-list.esm.js +0 -247
  68. package/dist/result-list.esm.js.map +0 -1
  69. package/dist/result-view/blog-view.stories.cjs.js +0 -372
  70. package/dist/result-view/blog-view.stories.cjs.js.map +0 -1
  71. package/dist/result-view/blog-view.stories.d.cts +0 -11
  72. package/dist/result-view/blog-view.stories.d.ts +0 -11
  73. package/dist/result-view/blog-view.stories.esm.js +0 -295
  74. package/dist/result-view/blog-view.stories.esm.js.map +0 -1
  75. package/dist/result-view/blog.cjs.js +0 -290
  76. package/dist/result-view/blog.cjs.js.map +0 -1
  77. package/dist/result-view/blog.d.cts +0 -9
  78. package/dist/result-view/blog.d.ts +0 -9
  79. package/dist/result-view/blog.esm.js +0 -220
  80. package/dist/result-view/blog.esm.js.map +0 -1
  81. package/dist/result-view/table-view.stories.cjs.js +0 -196
  82. package/dist/result-view/table-view.stories.cjs.js.map +0 -1
  83. package/dist/result-view/table-view.stories.d.cts +0 -11
  84. package/dist/result-view/table-view.stories.d.ts +0 -11
  85. package/dist/result-view/table-view.stories.esm.js +0 -131
  86. package/dist/result-view/table-view.stories.esm.js.map +0 -1
  87. package/dist/result-view/table.cjs.js +0 -116
  88. package/dist/result-view/table.cjs.js.map +0 -1
  89. package/dist/result-view/table.d.cts +0 -9
  90. package/dist/result-view/table.d.ts +0 -9
  91. package/dist/result-view/table.esm.js +0 -59
  92. package/dist/result-view/table.esm.js.map +0 -1
  93. package/dist/sidebar.cjs.js +0 -225
  94. package/dist/sidebar.cjs.js.map +0 -1
  95. package/dist/sidebar.d.cts +0 -12
  96. package/dist/sidebar.d.ts +0 -12
  97. package/dist/sidebar.esm.js +0 -164
  98. package/dist/sidebar.esm.js.map +0 -1
  99. package/dist/stories/blog-card.stories.cjs.js +0 -323
  100. package/dist/stories/blog-card.stories.cjs.js.map +0 -1
  101. package/dist/stories/blog-card.stories.d.cts +0 -9
  102. package/dist/stories/blog-card.stories.d.ts +0 -9
  103. package/dist/stories/blog-card.stories.esm.js +0 -242
  104. package/dist/stories/blog-card.stories.esm.js.map +0 -1
  105. package/dist/stories/blur-image.stories.cjs.js +0 -265
  106. package/dist/stories/blur-image.stories.cjs.js.map +0 -1
  107. package/dist/stories/blur-image.stories.d.cts +0 -37
  108. package/dist/stories/blur-image.stories.d.ts +0 -37
  109. package/dist/stories/blur-image.stories.esm.js +0 -180
  110. package/dist/stories/blur-image.stories.esm.js.map +0 -1
  111. package/dist/stories/breadcrumb.stories.cjs.js +0 -214
  112. package/dist/stories/breadcrumb.stories.cjs.js.map +0 -1
  113. package/dist/stories/breadcrumb.stories.d.cts +0 -9
  114. package/dist/stories/breadcrumb.stories.d.ts +0 -9
  115. package/dist/stories/breadcrumb.stories.esm.js +0 -145
  116. package/dist/stories/breadcrumb.stories.esm.js.map +0 -1
  117. package/dist/stories/empty.stories.cjs.js +0 -93
  118. package/dist/stories/empty.stories.cjs.js.map +0 -1
  119. package/dist/stories/empty.stories.d.cts +0 -13
  120. package/dist/stories/empty.stories.d.ts +0 -13
  121. package/dist/stories/empty.stories.esm.js +0 -28
  122. package/dist/stories/empty.stories.esm.js.map +0 -1
  123. package/dist/stories/navbar.stories.cjs.js +0 -151
  124. package/dist/stories/navbar.stories.cjs.js.map +0 -1
  125. package/dist/stories/navbar.stories.d.cts +0 -8
  126. package/dist/stories/navbar.stories.d.ts +0 -8
  127. package/dist/stories/navbar.stories.esm.js +0 -74
  128. package/dist/stories/navbar.stories.esm.js.map +0 -1
  129. package/dist/stories/sidebar.stories.cjs.js +0 -327
  130. package/dist/stories/sidebar.stories.cjs.js.map +0 -1
  131. package/dist/stories/sidebar.stories.d.cts +0 -30
  132. package/dist/stories/sidebar.stories.d.ts +0 -30
  133. package/dist/stories/sidebar.stories.esm.js +0 -258
  134. package/dist/stories/sidebar.stories.esm.js.map +0 -1
@@ -0,0 +1,55 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import TableView from '../result-view/table';
3
+
4
+ const meta: Meta<typeof TableView> = {
5
+ title: 'Components/ResultView/Table',
6
+ component: TableView,
7
+ parameters: {
8
+ layout: 'centered',
9
+ },
10
+ tags: ['autodocs'],
11
+ };
12
+
13
+ export default meta;
14
+ type Story = StoryObj<typeof TableView>;
15
+
16
+ const mockItems = [
17
+ {
18
+ id: '1',
19
+ labels: [
20
+ { value: 'Installation Guide', language: 'en-US' },
21
+ { value: 'Guide d\'installation', language: 'fr-FR' }
22
+ ],
23
+ languages: ['fr-FR'],
24
+ type: 'document',
25
+ renditions: [],
26
+ directoryNodes: []
27
+ },
28
+ {
29
+ id: '2',
30
+ labels: [
31
+ { value: 'User Manual', language: 'en-US' },
32
+ { value: 'Manual del Usuario', language: 'es-ES' }
33
+ ],
34
+ languages: ['es-ES'],
35
+ type: 'document',
36
+ renditions: [],
37
+ directoryNodes: []
38
+ },
39
+ {
40
+ id: '3',
41
+ labels: [
42
+ { value: 'Technical Specifications', language: 'en-US' }
43
+ ],
44
+ languages: ['en-US'],
45
+ type: 'document',
46
+ renditions: [],
47
+ directoryNodes: []
48
+ }
49
+ ];
50
+
51
+ export const Default: Story = {
52
+ args: {
53
+ items: mockItems as any
54
+ }
55
+ };
@@ -0,0 +1,65 @@
1
+ import { FC, ReactNode } from "react";
2
+
3
+ import {
4
+ Table,
5
+ TableBody,
6
+ TableCell,
7
+ TableHeader,
8
+ TableRow,
9
+ } from "@c-rex/ui/table";
10
+ import { informationUnitsItems, Labels } from "@c-rex/interfaces";
11
+ //import { getFlagIcon } from '@c-rex/utils/index';
12
+
13
+ interface TableViewProps {
14
+ items: informationUnitsItems[];
15
+ }
16
+
17
+ const TableView: FC<TableViewProps> = ({ items }) => {
18
+ const getTitle = (labels: Labels[]): string => {
19
+ return labels.map((item) => item.value).join();
20
+ };
21
+ const getIcons = (languages: string[]): ReactNode[] => {
22
+ return languages.map((lang, index) => {
23
+ const aux = lang.split("-")[1];
24
+
25
+ /*
26
+ const FlagIcon = getFlagIcon(aux);
27
+
28
+ return FlagIcon && (
29
+ <div key={index} style={{ width: 36 }} className="border me-3">
30
+ <FlagIcon />
31
+ </div>
32
+ )
33
+ */
34
+
35
+ return (
36
+ <div key={index} style={{ width: 36 }} className="border me-3">
37
+ {aux}
38
+ </div>
39
+ );
40
+ });
41
+ };
42
+
43
+ return (
44
+ <div className="rounded-md border">
45
+ <Table>
46
+ <TableHeader>
47
+ <TableRow>
48
+ <TableCell>Title</TableCell>
49
+ <TableCell>Country</TableCell>
50
+ </TableRow>
51
+ </TableHeader>
52
+ <TableBody>
53
+ {items.map((item: informationUnitsItems, index: number) => (
54
+ <TableRow key={index}>
55
+ <TableCell>{getTitle(item.labels)}</TableCell>
56
+ <TableCell>{getIcons(item.languages)}</TableCell>
57
+ </TableRow>
58
+ ))}
59
+ </TableBody>
60
+ </Table>
61
+ </div>
62
+ );
63
+ };
64
+
65
+ export default TableView;
@@ -0,0 +1,76 @@
1
+ "use client";
2
+
3
+ import { ComponentProps } from "react";
4
+ import {
5
+ Sidebar,
6
+ SidebarContent,
7
+ SidebarGroup,
8
+ SidebarMenu,
9
+ SidebarMenuButton,
10
+ SidebarMenuItem,
11
+ SidebarMenuSub,
12
+ SidebarMenuSubButton,
13
+ SidebarMenuSubItem,
14
+ SidebarRail
15
+ } from "@c-rex/ui/sidebar";
16
+ import { Skeleton } from "@c-rex/ui/skeleton";
17
+ import { TreeOfContent } from "@c-rex/interfaces";
18
+
19
+ interface SidebarProps extends ComponentProps<typeof Sidebar> {
20
+ data: TreeOfContent[];
21
+ loading?: boolean;
22
+ }
23
+
24
+ export function AppSidebar({ data, loading, ...props }: SidebarProps) {
25
+ return (
26
+ <Sidebar collapsible="icon" {...props} className="top-20">
27
+ <SidebarContent>
28
+ <SidebarGroup>
29
+ <SidebarMenu className="pt-4">
30
+ {loading ? (
31
+ <>
32
+ <Skeleton className="w-auto h-10 mb-2" />
33
+ <Skeleton className="w-auto h-10 mb-2" />
34
+ <Skeleton className="w-auto h-10 mb-2 ml-8" />
35
+ <Skeleton className="w-auto h-10 mb-2 ml-8" />
36
+ <Skeleton className="w-auto h-10 mb-2 ml-8" />
37
+ <Skeleton className="w-auto h-10 mb-2 ml-8" />
38
+ <Skeleton className="w-auto h-10 mb-2" />
39
+ </>
40
+ ) : (
41
+ <>
42
+ {data.map((item) => (
43
+ <SidebarMenuItem key={item.id}>
44
+ <SidebarMenuButton asChild isActive={item.active}>
45
+ <a href={item.link} title={item.label}>
46
+ {item.label}
47
+ </a>
48
+ </SidebarMenuButton>
49
+
50
+ {item.children?.length ? (
51
+ <SidebarMenuSub>
52
+ {item.children.map((item) => (
53
+ <SidebarMenuSubItem key={item.label}>
54
+ <SidebarMenuSubButton
55
+ asChild
56
+ isActive={item.active}
57
+ >
58
+ <a href={item.link} title={item.label}>
59
+ {item.label}
60
+ </a>
61
+ </SidebarMenuSubButton>
62
+ </SidebarMenuSubItem>
63
+ ))}
64
+ </SidebarMenuSub>
65
+ ) : null}
66
+ </SidebarMenuItem>
67
+ ))}
68
+ </>
69
+ )}
70
+ </SidebarMenu>
71
+ </SidebarGroup>
72
+ </SidebarContent>
73
+ <SidebarRail />
74
+ </Sidebar>
75
+ );
76
+ }
@@ -0,0 +1,46 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { BlogCard } from '../blog-card';
3
+
4
+ const meta: Meta = {
5
+ title: 'Components/BlogCard',
6
+ component: BlogCard,
7
+ tags: ['autodocs',],
8
+ parameters: {
9
+ layout: 'centered',
10
+ },
11
+ argTypes: {
12
+ data: { control: 'object', description: 'The data to be displayed in the card' },
13
+ priority: { control: 'boolean', description: 'Whether the image should be prioritized', type: 'boolean' },
14
+ horizontal: { control: 'boolean' },
15
+ },
16
+ } satisfies Meta<typeof BlogCard>;
17
+
18
+ export default meta;
19
+ type Story = StoryObj<typeof meta>;
20
+
21
+ const mockBlogData = {
22
+ title: 'Getting Started with C-Rex Components',
23
+ blurDataURL: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg==',
24
+ image: 'https://images.pexels.com/photos/31712301/pexels-photo-31712301/free-photo-of-scenic-cycling-tour-in-andernach-fields.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1',
25
+ description: 'Learn how to use C-Rex components to build modern web applications with React and Next.js.',
26
+ authors: 'John Doe',
27
+ _id: '1',
28
+ date: '2023-05-15',
29
+ slug: 'getting-started-with-c-rex-components',
30
+ };
31
+
32
+ export const Horizontal: Story = {
33
+ args: {
34
+ data: mockBlogData,
35
+ priority: false,
36
+ horizontal: true,
37
+ },
38
+ };
39
+
40
+ export const WithPriority: Story = {
41
+ args: {
42
+ data: mockBlogData,
43
+ priority: true,
44
+ horizontal: false,
45
+ },
46
+ };
@@ -0,0 +1,51 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { BlurImage } from '../blur-image';
3
+
4
+ const meta = {
5
+ title: 'Components/BlurImage',
6
+ component: BlurImage,
7
+ tags: ['autodocs'],
8
+ parameters: {
9
+ layout: 'centered',
10
+ },
11
+ argTypes: {
12
+ src: { control: 'text' },
13
+ alt: { control: 'text' },
14
+ width: { control: 'number' },
15
+ height: { control: 'number' },
16
+ className: { control: 'text' },
17
+ },
18
+ } satisfies Meta<typeof BlurImage>;
19
+
20
+ export default meta;
21
+ type Story = StoryObj<typeof meta>;
22
+
23
+ export const Default: Story = {
24
+ args: {
25
+ src: 'https://images.pexels.com/photos/31712301/pexels-photo-31712301/free-photo-of-scenic-cycling-tour-in-andernach-fields.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1',
26
+ alt: 'Sample image with blur effect',
27
+ width: 400,
28
+ height: 300,
29
+ className: 'rounded-lg',
30
+ },
31
+ };
32
+
33
+ export const SmallImage: Story = {
34
+ args: {
35
+ src: 'https://images.pexels.com/photos/31712301/pexels-photo-31712301/free-photo-of-scenic-cycling-tour-in-andernach-fields.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1',
36
+ alt: 'Small sample image with blur effect',
37
+ width: 200,
38
+ height: 150,
39
+ className: 'rounded-lg',
40
+ },
41
+ };
42
+
43
+ export const RoundedImage: Story = {
44
+ args: {
45
+ src: 'https://images.pexels.com/photos/31712301/pexels-photo-31712301/free-photo-of-scenic-cycling-tour-in-andernach-fields.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1',
46
+ alt: 'Rounded sample image with blur effect',
47
+ width: 300,
48
+ height: 300,
49
+ className: 'rounded-full',
50
+ },
51
+ };
@@ -0,0 +1,52 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { Breadcrumb } from '../breadcrumb';
3
+
4
+ const meta: Meta = {
5
+ title: 'Components/Breadcrumb',
6
+ component: Breadcrumb,
7
+ tags: ['autodocs'],
8
+ parameters: {
9
+ layout: 'centered',
10
+ }
11
+ } satisfies Meta;
12
+
13
+ export default meta;
14
+ type Story = StoryObj<typeof meta>;
15
+
16
+ const mockItems = [
17
+ {
18
+ id: 'docs',
19
+ label: 'Documentation',
20
+ link: '/docs',
21
+ active: false,
22
+ children: [],
23
+ },
24
+ {
25
+ id: 'components',
26
+ label: 'Components',
27
+ link: '/docs/components',
28
+ active: false,
29
+ children: [],
30
+ },
31
+ {
32
+ id: 'breadcrumb',
33
+ label: 'Breadcrumb',
34
+ link: '/docs/components/breadcrumb',
35
+ active: true,
36
+ children: [],
37
+ },
38
+ ];
39
+
40
+ export const Default: Story = {
41
+ args: {
42
+ items: mockItems,
43
+ loading: false,
44
+ },
45
+ };
46
+
47
+ export const Loading: Story = {
48
+ args: {
49
+ items: [],
50
+ loading: true,
51
+ },
52
+ };
@@ -0,0 +1,14 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { Empty } from '../empty';
3
+
4
+ const meta = {
5
+ title: 'Components/Empty',
6
+ component: Empty,
7
+ tags: ['autodocs'],
8
+ } satisfies Meta<typeof Empty>;
9
+
10
+ export default meta;
11
+ type Story = StoryObj<typeof meta>;
12
+
13
+ export const Default: Story = {
14
+ };
@@ -0,0 +1,16 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { NavBar } from '../navbar';
3
+
4
+ const meta: Meta = {
5
+ title: 'Components/NavBar',
6
+ component: NavBar,
7
+ tags: ['autodocs'],
8
+ parameters: {
9
+ layout: 'padded',
10
+ },
11
+ } satisfies Meta<typeof NavBar>;
12
+
13
+ export default meta;
14
+ type Story = StoryObj<typeof meta>;
15
+
16
+ export const Default: Story = {}
@@ -0,0 +1,94 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { AppSidebar } from '../sidebar';
3
+ import { SidebarInset, SidebarProvider, SidebarTrigger } from "@c-rex/ui/sidebar";
4
+
5
+ const meta = {
6
+ title: 'Components/Sidebar',
7
+ component: AppSidebar,
8
+ tags: ['autodocs'],
9
+ parameters: {
10
+ layout: 'centered',
11
+ },
12
+ argTypes: {
13
+ data: { control: 'object' },
14
+ loading: { control: 'boolean' },
15
+ },
16
+ decorators: [
17
+ (Story: any) => (
18
+ <SidebarProvider>
19
+ <SidebarTrigger />
20
+
21
+ <div className="flex">
22
+ <SidebarInset>
23
+ <Story />
24
+ </SidebarInset>
25
+ </div>
26
+ </SidebarProvider>
27
+
28
+ ),
29
+ ]
30
+ } satisfies Meta<typeof AppSidebar>;
31
+
32
+ export default meta;
33
+ type Story = StoryObj<typeof meta>;
34
+
35
+ const mockData = [
36
+ {
37
+ id: '1',
38
+ label: 'Getting Started',
39
+ link: '/docs/getting-started',
40
+ active: true,
41
+ children: [
42
+ {
43
+ id: '1-1',
44
+ label: 'Installation',
45
+ link: '/docs/getting-started/installation',
46
+ active: false,
47
+ children: [],
48
+ },
49
+ {
50
+ id: '1-2',
51
+ label: 'Configuration',
52
+ link: '/docs/getting-started/configuration',
53
+ active: false,
54
+ children: [],
55
+ },
56
+ ],
57
+ },
58
+ {
59
+ id: '2',
60
+ label: 'Components',
61
+ link: '/docs/components',
62
+ active: false,
63
+ children: [
64
+ {
65
+ id: '2-1',
66
+ label: 'Sidebar',
67
+ link: '/docs/components/sidebar',
68
+ active: false,
69
+ children: [],
70
+ },
71
+ {
72
+ id: '2-2',
73
+ label: 'Navbar',
74
+ link: '/docs/components/navbar',
75
+ active: false,
76
+ children: [],
77
+ },
78
+ ],
79
+ },
80
+ ];
81
+
82
+ export const Default: Story = {
83
+ args: {
84
+ data: mockData,
85
+ loading: false,
86
+ },
87
+ };
88
+
89
+ export const Loading: Story = {
90
+ args: {
91
+ data: [],
92
+ loading: true,
93
+ },
94
+ };
@@ -1,215 +0,0 @@
1
- "use strict";
2
- function _array_like_to_array(arr, len) {
3
- if (len == null || len > arr.length) len = arr.length;
4
- for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
5
- return arr2;
6
- }
7
- function _array_with_holes(arr) {
8
- if (Array.isArray(arr)) return arr;
9
- }
10
- function _instanceof(left, right) {
11
- if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
12
- return !!right[Symbol.hasInstance](left);
13
- } else {
14
- return left instanceof right;
15
- }
16
- }
17
- function _iterable_to_array_limit(arr, i) {
18
- var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
19
- if (_i == null) return;
20
- var _arr = [];
21
- var _n = true;
22
- var _d = false;
23
- var _s, _e;
24
- try {
25
- for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
26
- _arr.push(_s.value);
27
- if (i && _arr.length === i) break;
28
- }
29
- } catch (err) {
30
- _d = true;
31
- _e = err;
32
- } finally{
33
- try {
34
- if (!_n && _i["return"] != null) _i["return"]();
35
- } finally{
36
- if (_d) throw _e;
37
- }
38
- }
39
- return _arr;
40
- }
41
- function _non_iterable_rest() {
42
- throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
43
- }
44
- function _sliced_to_array(arr, i) {
45
- return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
46
- }
47
- function _type_of(obj) {
48
- "@swc/helpers - typeof";
49
- return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
50
- }
51
- function _unsupported_iterable_to_array(o, minLen) {
52
- if (!o) return;
53
- if (typeof o === "string") return _array_like_to_array(o, minLen);
54
- var n = Object.prototype.toString.call(o).slice(8, -1);
55
- if (n === "Object" && o.constructor) n = o.constructor.name;
56
- if (n === "Map" || n === "Set") return Array.from(n);
57
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
58
- }
59
- var __defProp = Object.defineProperty;
60
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
61
- var __getOwnPropNames = Object.getOwnPropertyNames;
62
- var __hasOwnProp = Object.prototype.hasOwnProperty;
63
- var __export = function(target, all) {
64
- for(var name in all)__defProp(target, name, {
65
- get: all[name],
66
- enumerable: true
67
- });
68
- };
69
- var __copyProps = function(to, from, except, desc) {
70
- if (from && (typeof from === "undefined" ? "undefined" : _type_of(from)) === "object" || typeof from === "function") {
71
- var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
72
- try {
73
- var _loop = function() {
74
- var key = _step.value;
75
- if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
76
- get: function() {
77
- return from[key];
78
- },
79
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
80
- });
81
- };
82
- for(var _iterator = __getOwnPropNames(from)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true)_loop();
83
- } catch (err) {
84
- _didIteratorError = true;
85
- _iteratorError = err;
86
- } finally{
87
- try {
88
- if (!_iteratorNormalCompletion && _iterator.return != null) {
89
- _iterator.return();
90
- }
91
- } finally{
92
- if (_didIteratorError) {
93
- throw _iteratorError;
94
- }
95
- }
96
- }
97
- }
98
- return to;
99
- };
100
- var __toCommonJS = function(mod) {
101
- return __copyProps(__defProp({}, "__esModule", {
102
- value: true
103
- }), mod);
104
- };
105
- // src/autocomplete.tsx
106
- var autocomplete_exports = {};
107
- __export(autocomplete_exports, {
108
- AutoComplete: function() {
109
- return AutoComplete;
110
- }
111
- });
112
- module.exports = __toCommonJS(autocomplete_exports);
113
- var import_cmdk = require("cmdk");
114
- var import_lucide_react = require("lucide-react");
115
- var import_react = require("react");
116
- var import_input = require("@c-rex/ui/input");
117
- var import_command = require("@c-rex/ui/command");
118
- var import_popover = require("@c-rex/ui/popover");
119
- var import_jsx_runtime = require("react/jsx-runtime");
120
- var AutoComplete = function(param) {
121
- var initialValue = param.initialValue, onSearch = param.onSearch, onSelect = param.onSelect;
122
- var _ref = _sliced_to_array((0, import_react.useState)(initialValue), 2), query = _ref[0], setQuery = _ref[1];
123
- var _ref1 = _sliced_to_array((0, import_react.useState)([]), 2), suggestions = _ref1[0], setSuggestions = _ref1[1];
124
- var _ref2 = _sliced_to_array((0, import_react.useState)(false), 2), open = _ref2[0], setOpen = _ref2[1];
125
- (0, import_react.useEffect)(function() {
126
- var debounceFetch = setTimeout(function() {
127
- if (query) {
128
- onSearch(query).then(setSuggestions);
129
- } else {
130
- setSuggestions([]);
131
- }
132
- }, 300);
133
- return function() {
134
- return clearTimeout(debounceFetch);
135
- };
136
- }, [
137
- onSearch,
138
- query
139
- ]);
140
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
141
- className: "flex items-center",
142
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_popover.Popover, {
143
- open: open,
144
- onOpenChange: setOpen,
145
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_command.Command, {
146
- shouldFilter: false,
147
- children: [
148
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_popover.PopoverAnchor, {
149
- asChild: true,
150
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_cmdk.Command.Input, {
151
- asChild: true,
152
- value: query,
153
- onValueChange: setQuery,
154
- onKeyDown: function(e) {
155
- return setOpen(e.key !== "Escape");
156
- },
157
- onMouseDown: function() {
158
- return setOpen(false);
159
- },
160
- onFocus: function() {
161
- return setOpen(true);
162
- },
163
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_input.Input, {})
164
- })
165
- }),
166
- !open && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_command.CommandList, {
167
- "aria-hidden": "true",
168
- className: "hidden"
169
- }),
170
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_popover.PopoverContent, {
171
- asChild: true,
172
- onOpenAutoFocus: function(e) {
173
- return e.preventDefault();
174
- },
175
- onInteractOutside: function(e) {
176
- if (_instanceof(e.target, Element) && e.target.hasAttribute("cmdk-input")) {
177
- e.preventDefault();
178
- }
179
- },
180
- className: "w-[--radix-popover-trigger-width] p-0",
181
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_command.CommandList, {
182
- children: suggestions.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_command.CommandGroup, {
183
- children: suggestions.map(function(option) {
184
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_command.CommandItem, {
185
- value: option,
186
- onMouseDown: function(e) {
187
- return e.preventDefault();
188
- },
189
- onSelect: function(inputValue) {
190
- setOpen(false);
191
- onSelect(inputValue !== null && inputValue !== void 0 ? inputValue : "");
192
- },
193
- children: [
194
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Check, {
195
- className: "mr-2 h-4 w-4 opacity-0"
196
- }),
197
- option
198
- ]
199
- }, option);
200
- })
201
- }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_command.CommandEmpty, {
202
- children: "No suggestions."
203
- })
204
- })
205
- })
206
- ]
207
- })
208
- })
209
- });
210
- };
211
- // Annotate the CommonJS export names for ESM import in node:
212
- 0 && (module.exports = {
213
- AutoComplete: AutoComplete
214
- });
215
- //# sourceMappingURL=autocomplete.cjs.js.map