@usevyre/react 0.1.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.
Files changed (36) hide show
  1. package/LICENSE +21 -0
  2. package/dist/components/Accordion/Accordion.d.ts +38 -0
  3. package/dist/components/Alert/Alert.d.ts +73 -0
  4. package/dist/components/Avatar/Avatar.d.ts +21 -0
  5. package/dist/components/Badge/Badge.d.ts +27 -0
  6. package/dist/components/Breadcrumb/Breadcrumb.d.ts +38 -0
  7. package/dist/components/Button/Button.d.ts +53 -0
  8. package/dist/components/Calendar/Calendar.d.ts +64 -0
  9. package/dist/components/Card/Card.d.ts +51 -0
  10. package/dist/components/Checkbox/Checkbox.d.ts +22 -0
  11. package/dist/components/Command/Command.d.ts +96 -0
  12. package/dist/components/DropdownMenu/DropdownMenu.d.ts +122 -0
  13. package/dist/components/Input/Input.d.ts +53 -0
  14. package/dist/components/Label/Label.d.ts +16 -0
  15. package/dist/components/Modal/Modal.d.ts +59 -0
  16. package/dist/components/Pagination/Pagination.d.ts +45 -0
  17. package/dist/components/Popover/Popover.d.ts +46 -0
  18. package/dist/components/Progress/Progress.d.ts +21 -0
  19. package/dist/components/Select/Select.d.ts +55 -0
  20. package/dist/components/Separator/Separator.d.ts +16 -0
  21. package/dist/components/Sheet/Sheet.d.ts +54 -0
  22. package/dist/components/Sidebar/Sidebar.d.ts +140 -0
  23. package/dist/components/Skeleton/Skeleton.d.ts +17 -0
  24. package/dist/components/Slider/Slider.d.ts +26 -0
  25. package/dist/components/Switch/Switch.d.ts +21 -0
  26. package/dist/components/Table/Table.d.ts +75 -0
  27. package/dist/components/Tabs/Tabs.d.ts +64 -0
  28. package/dist/components/Toast/Toast.d.ts +54 -0
  29. package/dist/components/Tooltip/Tooltip.d.ts +40 -0
  30. package/dist/components/Typography/Typography.d.ts +67 -0
  31. package/dist/index.cjs +1 -0
  32. package/dist/index.d.ts +101 -0
  33. package/dist/index.js +2864 -0
  34. package/dist/types.d.ts +58 -0
  35. package/dist/utils/cn.d.ts +7 -0
  36. package/package.json +54 -0
@@ -0,0 +1,53 @@
1
+ /**
2
+ * @usevyre/react — Input + Field
3
+ *
4
+ * AI CONTEXT:
5
+ * ┌─────────────────────────────────────────────────────────┐
6
+ * │ Components: Field + Input + Textarea │
7
+ * │ Import: import { Field, Input, Textarea } from "@usevyre/react" │
8
+ * │ │
9
+ * │ Field props: │
10
+ * │ label = string │
11
+ * │ hint = string (helper text below input) │
12
+ * │ state = "idle"|"error"|"success"|"warning" │
13
+ * │ required = boolean │
14
+ * │ │
15
+ * │ Input props: │
16
+ * │ size = "sm"|"md"(default)|"lg" │
17
+ * │ leftElement = ReactNode (icon inside input, left) │
18
+ * │ rightElement = ReactNode (icon inside input, right) │
19
+ * │ + all native <input> props │
20
+ * └─────────────────────────────────────────────────────────┘
21
+ *
22
+ * @example
23
+ * // Basic field with validation
24
+ * <Field label="Email" state="error" hint="Invalid email format">
25
+ * <Input type="email" placeholder="you@example.com" />
26
+ * </Field>
27
+ *
28
+ * // Input with icon
29
+ * <Field label="Search">
30
+ * <Input leftElement={<SearchIcon />} placeholder="Search..." />
31
+ * </Field>
32
+ */
33
+ import React from "react";
34
+ import type { FieldState, Size, BaseProps } from "../../types";
35
+ export interface FieldProps extends React.HTMLAttributes<HTMLDivElement>, BaseProps {
36
+ label?: string;
37
+ hint?: string;
38
+ state?: FieldState;
39
+ required?: boolean;
40
+ htmlFor?: string;
41
+ }
42
+ export declare const Field: React.ForwardRefExoticComponent<FieldProps & React.RefAttributes<HTMLDivElement>>;
43
+ export interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "size">, BaseProps {
44
+ size?: Exclude<Size, "icon">;
45
+ leftElement?: React.ReactNode;
46
+ rightElement?: React.ReactNode;
47
+ }
48
+ export declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
49
+ export interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement>, BaseProps {
50
+ size?: Exclude<Size, "icon">;
51
+ resize?: "none" | "vertical" | "horizontal" | "both";
52
+ }
53
+ export declare const Textarea: React.ForwardRefExoticComponent<TextareaProps & React.RefAttributes<HTMLTextAreaElement>>;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * AI CONTEXT:
3
+ * ┌─────────────────────────────────────────────┐
4
+ * │ Component: Label │
5
+ * │ htmlFor = string (links to input id) │
6
+ * │ required = boolean │
7
+ * │ disabled = boolean │
8
+ * │ CSS class: .vyre-label │
9
+ * └─────────────────────────────────────────────┘
10
+ */
11
+ import React from "react";
12
+ export interface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {
13
+ required?: boolean;
14
+ disabled?: boolean;
15
+ }
16
+ export declare const Label: React.ForwardRefExoticComponent<LabelProps & React.RefAttributes<HTMLLabelElement>>;
@@ -0,0 +1,59 @@
1
+ /**
2
+ * @usevyre/react — Modal / Dialog
3
+ *
4
+ * AI CONTEXT:
5
+ * ┌─────────────────────────────────────────────────────────┐
6
+ * │ Components: Modal + ModalHeader + ModalBody + ModalFooter│
7
+ * │ Import: import { Modal, ModalHeader, ModalBody, │
8
+ * │ ModalFooter } from "@usevyre/react" │
9
+ * │ │
10
+ * │ Modal props: │
11
+ * │ open = boolean (controlled) │
12
+ * │ onClose = () => void │
13
+ * │ size = "sm"|"md"(default)|"lg"|"full" │
14
+ * │ closeOnBackdrop = boolean (default: true) │
15
+ * │ closeOnEsc = boolean (default: true) │
16
+ * │ initialFocus = RefObject<HTMLElement> │
17
+ * └─────────────────────────────────────────────────────────┘
18
+ *
19
+ * @example
20
+ * // Confirmation dialog
21
+ * <Modal open={isOpen} onClose={() => setIsOpen(false)} size="sm">
22
+ * <ModalHeader>
23
+ * <h2>Confirm deletion</h2>
24
+ * </ModalHeader>
25
+ * <ModalBody>
26
+ * <p>This action cannot be undone.</p>
27
+ * </ModalBody>
28
+ * <ModalFooter>
29
+ * <Button variant="ghost" onClick={() => setIsOpen(false)}>Cancel</Button>
30
+ * <Button variant="danger" onClick={handleDelete}>Delete</Button>
31
+ * </ModalFooter>
32
+ * </Modal>
33
+ */
34
+ import React from "react";
35
+ import type { BaseProps } from "../../types";
36
+ export type ModalSize = "sm" | "md" | "lg" | "full";
37
+ export interface ModalProps extends BaseProps {
38
+ open: boolean;
39
+ onClose: () => void;
40
+ size?: ModalSize;
41
+ /** Close modal when clicking the backdrop. Default: true */
42
+ closeOnBackdrop?: boolean;
43
+ /** Close modal when pressing Escape. Default: true */
44
+ closeOnEsc?: boolean;
45
+ /** Element to focus on open. Defaults to the modal container. */
46
+ initialFocus?: React.RefObject<HTMLElement>;
47
+ children?: React.ReactNode;
48
+ /** Accessible label for the dialog (if no visible title) */
49
+ "aria-label"?: string;
50
+ /** ID of the element that labels the dialog */
51
+ "aria-labelledby"?: string;
52
+ }
53
+ export declare const Modal: React.ForwardRefExoticComponent<ModalProps & React.RefAttributes<HTMLDivElement>>;
54
+ export interface ModalSectionProps extends BaseProps {
55
+ children?: React.ReactNode;
56
+ }
57
+ export declare const ModalHeader: React.ForwardRefExoticComponent<ModalSectionProps & React.RefAttributes<HTMLDivElement>>;
58
+ export declare const ModalBody: React.ForwardRefExoticComponent<ModalSectionProps & React.RefAttributes<HTMLDivElement>>;
59
+ export declare const ModalFooter: React.ForwardRefExoticComponent<ModalSectionProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,45 @@
1
+ /**
2
+ * @usevyre/react — Pagination
3
+ *
4
+ * AI CONTEXT:
5
+ * ┌─────────────────────────────────────────────────────────┐
6
+ * │ Component: Pagination │
7
+ * │ Import: import { Pagination } from "@usevyre/react" │
8
+ * │ │
9
+ * │ Props: │
10
+ * │ page = number (current page, 1-indexed) │
11
+ * │ totalPages = number │
12
+ * │ onPageChange = (page: number) => void │
13
+ * │ siblings = number (pages shown each side, default 1)│
14
+ * │ showEdges = boolean (show first/last, default true) │
15
+ * │ totalItems = number (total records, enables info) │
16
+ * │ pageSize = number (records per page, enables info)│
17
+ * │ showInfo = boolean (show "Showing x–y of z") │
18
+ * └─────────────────────────────────────────────────────────┘
19
+ *
20
+ * @example
21
+ * <Pagination
22
+ * page={currentPage}
23
+ * totalPages={20}
24
+ * onPageChange={setCurrentPage}
25
+ * />
26
+ *
27
+ * // With info label
28
+ * <Pagination
29
+ * page={2} totalPages={10} onPageChange={setPage}
30
+ * showInfo totalItems={98} pageSize={10}
31
+ * />
32
+ */
33
+ import React from "react";
34
+ export interface PaginationProps {
35
+ page: number;
36
+ totalPages: number;
37
+ onPageChange: (page: number) => void;
38
+ siblings?: number;
39
+ showEdges?: boolean;
40
+ showInfo?: boolean;
41
+ totalItems?: number;
42
+ pageSize?: number;
43
+ className?: string;
44
+ }
45
+ export declare const Pagination: React.FC<PaginationProps>;
@@ -0,0 +1,46 @@
1
+ /**
2
+ * @usevyre/react — Popover
3
+ *
4
+ * AI CONTEXT:
5
+ * ┌─────────────────────────────────────────────────────────┐
6
+ * │ Component: Popover │
7
+ * │ Import: import { Popover } from "@usevyre/react" │
8
+ * │ │
9
+ * │ Props: │
10
+ * │ open = boolean (controlled) │
11
+ * │ onOpenChange = (open: boolean) => void │
12
+ * │ placement = "bottom"(default) │
13
+ * │ side: "top"|"bottom"|"left"|"right" │
14
+ * │ align: "-start"?|""?|"-end"? │
15
+ * │ e.g. "top-start", "bottom-end", │
16
+ * │ "left", "right-start" │
17
+ * │ trigger = ReactElement (the anchor element) │
18
+ * │ children = ReactNode (popover content) │
19
+ * │ closeOnOutside = boolean (default: true) │
20
+ * └─────────────────────────────────────────────────────────┘
21
+ *
22
+ * @example
23
+ * // Controlled
24
+ * <Popover open={open} onOpenChange={setOpen} trigger={<Button>Open</Button>}>
25
+ * <p>Content here.</p>
26
+ * </Popover>
27
+ *
28
+ * // Uncontrolled
29
+ * <Popover placement="bottom-start" trigger={<Button>Open</Button>}>
30
+ * <p>Content here.</p>
31
+ * </Popover>
32
+ */
33
+ import React from "react";
34
+ export type PopoverSide = "top" | "bottom" | "left" | "right";
35
+ export type PopoverAlign = "start" | "center" | "end";
36
+ export type PopoverPlacement = "top" | "top-start" | "top-end" | "bottom" | "bottom-start" | "bottom-end" | "left" | "left-start" | "left-end" | "right" | "right-start" | "right-end";
37
+ export interface PopoverProps {
38
+ trigger: React.ReactElement;
39
+ children: React.ReactNode;
40
+ open?: boolean;
41
+ onOpenChange?: (open: boolean) => void;
42
+ placement?: PopoverPlacement;
43
+ closeOnOutside?: boolean;
44
+ className?: string;
45
+ }
46
+ export declare const Popover: React.FC<PopoverProps>;
@@ -0,0 +1,21 @@
1
+ /**
2
+ * AI CONTEXT:
3
+ * ┌─────────────────────────────────────────────┐
4
+ * │ Component: Progress │
5
+ * │ value = number (0-100) │
6
+ * │ max = number (default: 100) │
7
+ * │ indeterminate = boolean │
8
+ * │ size = "sm"|"md"(default)|"lg" │
9
+ * │ variant = "default"|"accent"|"teal"|"success"|"danger" │
10
+ * │ CSS class: .vyre-progress │
11
+ * └─────────────────────────────────────────────┘
12
+ */
13
+ import React from "react";
14
+ export interface ProgressProps extends React.HTMLAttributes<HTMLDivElement> {
15
+ value?: number;
16
+ max?: number;
17
+ indeterminate?: boolean;
18
+ size?: "sm" | "md" | "lg";
19
+ variant?: "default" | "accent" | "teal" | "success" | "danger";
20
+ }
21
+ export declare const Progress: React.ForwardRefExoticComponent<ProgressProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,55 @@
1
+ /**
2
+ * @usevyre/react — Select / Dropdown
3
+ *
4
+ * AI CONTEXT:
5
+ * ┌─────────────────────────────────────────────────────────┐
6
+ * │ Component: Select │
7
+ * │ Import: import { Select } from "@usevyre/react" │
8
+ * │ │
9
+ * │ Props: │
10
+ * │ options = { value: string; label: string; │
11
+ * │ disabled?: boolean }[] │
12
+ * │ value = string (controlled) │
13
+ * │ defaultValue = string (uncontrolled) │
14
+ * │ onChange = (value: string) => void │
15
+ * │ placeholder = string │
16
+ * │ disabled = boolean │
17
+ * │ size = "sm"|"md"(default)|"lg" │
18
+ * │ + all native <div> props │
19
+ * └─────────────────────────────────────────────────────────┘
20
+ *
21
+ * @example
22
+ * // Controlled
23
+ * <Select
24
+ * options={[
25
+ * { value: "react", label: "React" },
26
+ * { value: "vue", label: "Vue" },
27
+ * ]}
28
+ * value={framework}
29
+ * onChange={setFramework}
30
+ * placeholder="Select framework"
31
+ * />
32
+ *
33
+ * // Inside a Field
34
+ * <Field label="Framework" state="error" hint="Required">
35
+ * <Select options={options} value={val} onChange={setVal} />
36
+ * </Field>
37
+ */
38
+ import React from "react";
39
+ import type { BaseProps } from "../../types";
40
+ export interface SelectOption {
41
+ value: string;
42
+ label: string;
43
+ disabled?: boolean;
44
+ }
45
+ export type SelectSize = "sm" | "md" | "lg";
46
+ export interface SelectProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange">, BaseProps {
47
+ options: SelectOption[];
48
+ value?: string;
49
+ defaultValue?: string;
50
+ onChange?: (value: string) => void;
51
+ placeholder?: string;
52
+ disabled?: boolean;
53
+ size?: SelectSize;
54
+ }
55
+ export declare const Select: React.ForwardRefExoticComponent<SelectProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * AI CONTEXT:
3
+ * ┌─────────────────────────────────────────────┐
4
+ * │ Component: Separator │
5
+ * │ orientation = "horizontal"(default)|"vertical" │
6
+ * │ decorative = boolean (default: true) │
7
+ * │ CSS class: .vyre-separator │
8
+ * └─────────────────────────────────────────────┘
9
+ */
10
+ import React from "react";
11
+ export interface SeparatorProps {
12
+ orientation?: "horizontal" | "vertical";
13
+ decorative?: boolean;
14
+ className?: string;
15
+ }
16
+ export declare const Separator: React.ForwardRefExoticComponent<SeparatorProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,54 @@
1
+ /**
2
+ * @usevyre/react — Sheet
3
+ *
4
+ * AI CONTEXT:
5
+ * ┌─────────────────────────────────────────────────────────┐
6
+ * │ Components: Sheet + SheetHeader + SheetBody + SheetFooter│
7
+ * │ Import: import { Sheet, SheetHeader, SheetBody, │
8
+ * │ SheetFooter } from "@usevyre/react" │
9
+ * │ │
10
+ * │ Sheet props: │
11
+ * │ open = boolean (controlled) │
12
+ * │ onClose = () => void │
13
+ * │ side = "right"(default)|"left"|"top"|"bottom"│
14
+ * │ size = "sm"|"md"(default)|"lg"|"full" │
15
+ * │ closeOnBackdrop = boolean (default: true) │
16
+ * │ closeOnEsc = boolean (default: true) │
17
+ * └─────────────────────────────────────────────────────────┘
18
+ *
19
+ * @example
20
+ * <Sheet open={open} onClose={() => setOpen(false)} side="right">
21
+ * <SheetHeader>
22
+ * <h2>Settings</h2>
23
+ * </SheetHeader>
24
+ * <SheetBody>
25
+ * <p>Sheet content goes here.</p>
26
+ * </SheetBody>
27
+ * <SheetFooter>
28
+ * <Button variant="ghost" onClick={() => setOpen(false)}>Cancel</Button>
29
+ * <Button variant="accent" onClick={handleSave}>Save</Button>
30
+ * </SheetFooter>
31
+ * </Sheet>
32
+ */
33
+ import React from "react";
34
+ import type { BaseProps } from "../../types";
35
+ export type SheetSide = "top" | "right" | "bottom" | "left";
36
+ export type SheetSize = "sm" | "md" | "lg" | "full";
37
+ export interface SheetProps extends BaseProps {
38
+ open: boolean;
39
+ onClose: () => void;
40
+ side?: SheetSide;
41
+ size?: SheetSize;
42
+ closeOnBackdrop?: boolean;
43
+ closeOnEsc?: boolean;
44
+ children?: React.ReactNode;
45
+ "aria-label"?: string;
46
+ "aria-labelledby"?: string;
47
+ }
48
+ export declare const Sheet: React.ForwardRefExoticComponent<SheetProps & React.RefAttributes<HTMLDivElement>>;
49
+ export interface SheetSectionProps extends BaseProps {
50
+ children?: React.ReactNode;
51
+ }
52
+ export declare const SheetHeader: React.ForwardRefExoticComponent<SheetSectionProps & React.RefAttributes<HTMLDivElement>>;
53
+ export declare const SheetBody: React.ForwardRefExoticComponent<SheetSectionProps & React.RefAttributes<HTMLDivElement>>;
54
+ export declare const SheetFooter: React.ForwardRefExoticComponent<SheetSectionProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,140 @@
1
+ /**
2
+ * @usevyre/react — Sidebar & App Layout
3
+ *
4
+ * AI CONTEXT:
5
+ * ┌──────────────────────────────────────────────────────────────┐
6
+ * │ Layout hierarchy: │
7
+ * │ │
8
+ * │ AppLayout — root, manages collapsed state │
9
+ * │ ├── Sidebar — left column │
10
+ * │ │ ├── SidebarHeader — logo + app name │
11
+ * │ │ ├── SidebarContent — scrollable nav area │
12
+ * │ │ │ └── SidebarSection → SidebarItem │
13
+ * │ │ └── SidebarFooter — pinned bottom area │
14
+ * │ └── AppShell — right column (flex: 1) │
15
+ * │ ├── AppBar — optional top bar │
16
+ * │ │ └── SidebarTrigger — collapse toggle button │
17
+ * │ └── PageContent — scrollable page content │
18
+ * │ │
19
+ * │ Import: import { AppLayout, AppShell, AppBar, │
20
+ * │ PageContent, SidebarTrigger, │
21
+ * │ Sidebar, SidebarHeader, SidebarContent, │
22
+ * │ SidebarSection, SidebarItem, SidebarFooter } │
23
+ * │ from "@usevyre/react" │
24
+ * │ │
25
+ * │ AppLayout props: │
26
+ * │ defaultCollapsed = boolean (uncontrolled default) │
27
+ * │ collapsed = boolean (controlled) │
28
+ * │ onCollapsedChange = (v: boolean) => void │
29
+ * │ className = string │
30
+ * │ │
31
+ * │ Sidebar props: │
32
+ * │ variant = "default" | "floating" │
33
+ * │ className = string │
34
+ * │ │
35
+ * │ SidebarItem props: │
36
+ * │ active = boolean │
37
+ * │ icon = ReactNode │
38
+ * │ badge = string | number │
39
+ * │ href = string │
40
+ * │ onClick = () => void │
41
+ * └──────────────────────────────────────────────────────────────┘
42
+ *
43
+ * @example
44
+ * <AppLayout>
45
+ * <Sidebar>
46
+ * <SidebarHeader title="Workspace" logo={<AppLogo />} />
47
+ * <SidebarContent>
48
+ * <SidebarSection label="Main">
49
+ * <SidebarItem icon={<HomeIcon />} active href="/">Dashboard</SidebarItem>
50
+ * <SidebarItem icon={<UsersIcon />} href="/users">Users</SidebarItem>
51
+ * </SidebarSection>
52
+ * </SidebarContent>
53
+ * <SidebarFooter>
54
+ * <SidebarItem icon={<SettingsIcon />} href="/settings">Settings</SidebarItem>
55
+ * </SidebarFooter>
56
+ * </Sidebar>
57
+ * <AppShell>
58
+ * <AppBar>
59
+ * <SidebarTrigger />
60
+ * <Breadcrumb>...</Breadcrumb>
61
+ * </AppBar>
62
+ * <PageContent>
63
+ * <h1>Dashboard</h1>
64
+ * </PageContent>
65
+ * </AppShell>
66
+ * </AppLayout>
67
+ */
68
+ import React from "react";
69
+ interface AppLayoutCtx {
70
+ collapsed: boolean;
71
+ toggleCollapsed: () => void;
72
+ }
73
+ export declare const useAppLayout: () => AppLayoutCtx;
74
+ export interface AppLayoutProps {
75
+ defaultCollapsed?: boolean;
76
+ collapsed?: boolean;
77
+ onCollapsedChange?: (v: boolean) => void;
78
+ className?: string;
79
+ children?: React.ReactNode;
80
+ }
81
+ export declare const AppLayout: React.ForwardRefExoticComponent<AppLayoutProps & React.RefAttributes<HTMLDivElement>>;
82
+ export interface SidebarProps {
83
+ variant?: "default" | "floating";
84
+ className?: string;
85
+ children?: React.ReactNode;
86
+ }
87
+ export declare const Sidebar: React.ForwardRefExoticComponent<SidebarProps & React.RefAttributes<HTMLElement>>;
88
+ export interface SidebarHeaderProps {
89
+ logo?: React.ReactNode;
90
+ title?: string;
91
+ className?: string;
92
+ children?: React.ReactNode;
93
+ }
94
+ export declare const SidebarHeader: React.ForwardRefExoticComponent<SidebarHeaderProps & React.RefAttributes<HTMLDivElement>>;
95
+ export interface SidebarContentProps {
96
+ className?: string;
97
+ children?: React.ReactNode;
98
+ }
99
+ export declare const SidebarContent: React.ForwardRefExoticComponent<SidebarContentProps & React.RefAttributes<HTMLDivElement>>;
100
+ export interface SidebarSectionProps {
101
+ label?: string;
102
+ className?: string;
103
+ children?: React.ReactNode;
104
+ }
105
+ export declare const SidebarSection: React.ForwardRefExoticComponent<SidebarSectionProps & React.RefAttributes<HTMLDivElement>>;
106
+ export interface SidebarItemProps {
107
+ active?: boolean;
108
+ icon?: React.ReactNode;
109
+ badge?: string | number;
110
+ href?: string;
111
+ onClick?: () => void;
112
+ className?: string;
113
+ children?: React.ReactNode;
114
+ }
115
+ export declare const SidebarItem: React.FC<SidebarItemProps>;
116
+ export interface SidebarFooterProps {
117
+ className?: string;
118
+ children?: React.ReactNode;
119
+ }
120
+ export declare const SidebarFooter: React.ForwardRefExoticComponent<SidebarFooterProps & React.RefAttributes<HTMLDivElement>>;
121
+ export interface AppShellProps {
122
+ className?: string;
123
+ children?: React.ReactNode;
124
+ }
125
+ export declare const AppShell: React.ForwardRefExoticComponent<AppShellProps & React.RefAttributes<HTMLDivElement>>;
126
+ export interface AppBarProps {
127
+ className?: string;
128
+ children?: React.ReactNode;
129
+ }
130
+ export declare const AppBar: React.ForwardRefExoticComponent<AppBarProps & React.RefAttributes<HTMLElement>>;
131
+ export interface SidebarTriggerProps {
132
+ className?: string;
133
+ }
134
+ export declare const SidebarTrigger: React.FC<SidebarTriggerProps>;
135
+ export interface PageContentProps {
136
+ className?: string;
137
+ children?: React.ReactNode;
138
+ }
139
+ export declare const PageContent: React.ForwardRefExoticComponent<PageContentProps & React.RefAttributes<HTMLDivElement>>;
140
+ export {};
@@ -0,0 +1,17 @@
1
+ /**
2
+ * AI CONTEXT:
3
+ * ┌─────────────────────────────────────────────┐
4
+ * │ Component: Skeleton │
5
+ * │ variant = "text"|"circle"|"rect"(default) │
6
+ * │ width = string | number │
7
+ * │ height = string | number │
8
+ * │ CSS class: .vyre-skeleton │
9
+ * └─────────────────────────────────────────────┘
10
+ */
11
+ import React from "react";
12
+ export interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {
13
+ variant?: "rect" | "circle" | "text";
14
+ width?: string | number;
15
+ height?: string | number;
16
+ }
17
+ export declare const Skeleton: React.ForwardRefExoticComponent<SkeletonProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,26 @@
1
+ /**
2
+ * AI CONTEXT:
3
+ * ┌─────────────────────────────────────────────┐
4
+ * │ Component: Slider │
5
+ * │ value = number │
6
+ * │ defaultValue = number (default: 0) │
7
+ * │ min = number (default: 0) │
8
+ * │ max = number (default: 100) │
9
+ * │ step = number (default: 1) │
10
+ * │ onValueChange = (value: number) => void │
11
+ * │ disabled = boolean │
12
+ * │ size = "sm"|"md"(default) │
13
+ * │ CSS class: .vyre-slider │
14
+ * └─────────────────────────────────────────────┘
15
+ */
16
+ import React from "react";
17
+ export interface SliderProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "onChange" | "value" | "defaultValue" | "size"> {
18
+ value?: number;
19
+ defaultValue?: number;
20
+ min?: number;
21
+ max?: number;
22
+ step?: number;
23
+ onValueChange?: (value: number) => void;
24
+ size?: "sm" | "md";
25
+ }
26
+ export declare const Slider: React.ForwardRefExoticComponent<SliderProps & React.RefAttributes<HTMLInputElement>>;
@@ -0,0 +1,21 @@
1
+ /**
2
+ * AI CONTEXT:
3
+ * ┌─────────────────────────────────────────────┐
4
+ * │ Component: Switch │
5
+ * │ checked = boolean │
6
+ * │ defaultChecked = boolean │
7
+ * │ onCheckedChange = (checked: boolean) => void│
8
+ * │ disabled = boolean │
9
+ * │ size = "sm"|"md"(default) │
10
+ * │ CSS class: .vyre-switch │
11
+ * └─────────────────────────────────────────────┘
12
+ */
13
+ import React from "react";
14
+ export interface SwitchProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "onChange"> {
15
+ checked?: boolean;
16
+ defaultChecked?: boolean;
17
+ onCheckedChange?: (checked: boolean) => void;
18
+ disabled?: boolean;
19
+ size?: "sm" | "md";
20
+ }
21
+ export declare const Switch: React.ForwardRefExoticComponent<SwitchProps & React.RefAttributes<HTMLButtonElement>>;
@@ -0,0 +1,75 @@
1
+ /**
2
+ * @usevyre/react — Table
3
+ *
4
+ * AI CONTEXT:
5
+ * ┌─────────────────────────────────────────────────────────┐
6
+ * │ Components: Table + TableHead + TableBody + TableRow + │
7
+ * │ TableHeader + TableCell + TableCaption │
8
+ * │ Import: import { Table, TableHead, TableBody, │
9
+ * │ TableRow, TableHeader, TableCell, │
10
+ * │ TableCaption } from "@usevyre/react" │
11
+ * │ │
12
+ * │ Table props: │
13
+ * │ striped = boolean (default: false) │
14
+ * │ bordered = boolean (default: false) │
15
+ * │ compact = boolean (default: false) │
16
+ * │ hoverable = boolean (default: true) │
17
+ * │ │
18
+ * │ TableHeader props (th): │
19
+ * │ sortable = boolean │
20
+ * │ sortDir = "asc"|"desc"|null │
21
+ * │ onSort = () => void │
22
+ * │ align = "left"(default)|"center"|"right" │
23
+ * │ │
24
+ * │ TableCell props (td): │
25
+ * │ align = "left"(default)|"center"|"right" │
26
+ * └─────────────────────────────────────────────────────────┘
27
+ *
28
+ * @example
29
+ * <Table>
30
+ * <TableHead>
31
+ * <TableRow>
32
+ * <TableHeader sortable sortDir="asc" onSort={() => handleSort("name")}>Name</TableHeader>
33
+ * <TableHeader>Email</TableHeader>
34
+ * <TableHeader align="right">Status</TableHeader>
35
+ * </TableRow>
36
+ * </TableHead>
37
+ * <TableBody>
38
+ * {rows.map((row) => (
39
+ * <TableRow key={row.id}>
40
+ * <TableCell>{row.name}</TableCell>
41
+ * <TableCell>{row.email}</TableCell>
42
+ * <TableCell align="right"><Badge variant="success">{row.status}</Badge></TableCell>
43
+ * </TableRow>
44
+ * ))}
45
+ * </TableBody>
46
+ * </Table>
47
+ */
48
+ import React from "react";
49
+ export interface TableProps {
50
+ children: React.ReactNode;
51
+ striped?: boolean;
52
+ bordered?: boolean;
53
+ compact?: boolean;
54
+ hoverable?: boolean;
55
+ className?: string;
56
+ }
57
+ export declare const Table: React.FC<TableProps>;
58
+ export declare const TableHead: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLTableSectionElement> & React.RefAttributes<HTMLTableSectionElement>>;
59
+ export declare const TableBody: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLTableSectionElement> & React.RefAttributes<HTMLTableSectionElement>>;
60
+ export interface TableRowProps extends React.HTMLAttributes<HTMLTableRowElement> {
61
+ selected?: boolean;
62
+ }
63
+ export declare const TableRow: React.ForwardRefExoticComponent<TableRowProps & React.RefAttributes<HTMLTableRowElement>>;
64
+ export interface TableHeaderProps extends React.ThHTMLAttributes<HTMLTableCellElement> {
65
+ sortable?: boolean;
66
+ sortDir?: "asc" | "desc" | null;
67
+ onSort?: () => void;
68
+ align?: "left" | "center" | "right";
69
+ }
70
+ export declare const TableHeader: React.ForwardRefExoticComponent<TableHeaderProps & React.RefAttributes<HTMLTableCellElement>>;
71
+ export interface TableCellProps extends React.TdHTMLAttributes<HTMLTableCellElement> {
72
+ align?: "left" | "center" | "right";
73
+ }
74
+ export declare const TableCell: React.ForwardRefExoticComponent<TableCellProps & React.RefAttributes<HTMLTableCellElement>>;
75
+ export declare const TableCaption: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLTableCaptionElement> & React.RefAttributes<HTMLTableCaptionElement>>;