@litelens/design-system 1.0.3

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.
@@ -0,0 +1,12 @@
1
+ import { clsx } from 'clsx';
2
+ import { twMerge } from 'tailwind-merge';
3
+
4
+ // src/utils/common.ts
5
+ function cn(...inputs) {
6
+ return twMerge(clsx(inputs));
7
+ }
8
+ function clamp(v, min, max) {
9
+ return Math.max(min, Math.min(max, v));
10
+ }
11
+
12
+ export { clamp, cn };
@@ -0,0 +1 @@
1
+
@@ -0,0 +1,254 @@
1
+ import * as React$1 from 'react';
2
+ import { FC, ReactNode, Component, ErrorInfo, MouseEvent, PropsWithChildren, InputHTMLAttributes, CSSProperties } from 'react';
3
+
4
+ interface Props$1 {
5
+ label: string;
6
+ }
7
+ declare const AnnotationBadge: FC<Props$1>;
8
+
9
+ interface DividerProps {
10
+ className?: string;
11
+ }
12
+ declare const Divider: FC<DividerProps>;
13
+
14
+ interface LegendItem {
15
+ label: string;
16
+ color: "green" | "amber" | "red";
17
+ count: number;
18
+ }
19
+ interface DonutChartProps {
20
+ label: string;
21
+ total: number;
22
+ running: number;
23
+ pending?: number;
24
+ failed?: number;
25
+ items: LegendItem[];
26
+ onNavigate?: () => void;
27
+ }
28
+ declare const DonutChart: FC<DonutChartProps>;
29
+
30
+ interface EmptyStateProps {
31
+ icon: ReactNode;
32
+ title: string;
33
+ description?: string;
34
+ action?: ReactNode;
35
+ }
36
+ declare const EmptyState: FC<EmptyStateProps>;
37
+
38
+ interface Props {
39
+ children: ReactNode;
40
+ fallback?: (error: Error, reset: () => void) => ReactNode;
41
+ }
42
+ interface State {
43
+ error: Error | null;
44
+ copied: boolean;
45
+ }
46
+ declare class ErrorBoundary extends Component<Props, State> {
47
+ state: State;
48
+ static getDerivedStateFromError(error: Error): Partial<State>;
49
+ componentDidCatch(error: Error, info: ErrorInfo): void;
50
+ reset: () => void;
51
+ copyError: () => void;
52
+ render(): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | React$1.ReactPortal | React$1.ReactElement<unknown, string | React$1.JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | React$1.JSX.Element | null | undefined;
53
+ }
54
+
55
+ interface LoadingSpinnerProps {
56
+ className?: string;
57
+ }
58
+ declare const LoadingSpinner: FC<LoadingSpinnerProps>;
59
+
60
+ interface ResourceCellProps {
61
+ label: string;
62
+ percent: number;
63
+ }
64
+ declare const ResourceCell: FC<ResourceCellProps>;
65
+
66
+ interface ResourceLinkProps {
67
+ children: ReactNode;
68
+ className?: string;
69
+ truncate?: boolean;
70
+ truncateTextClassName?: string;
71
+ onClick?: (e: MouseEvent) => void;
72
+ }
73
+ declare const ResourceLink: FC<ResourceLinkProps>;
74
+
75
+ interface ButtonGroupProps {
76
+ children: ReactNode;
77
+ className?: string;
78
+ }
79
+ declare const ButtonGroup: FC<ButtonGroupProps>;
80
+
81
+ interface ResourceBulkDeletionButtonProps {
82
+ count: number;
83
+ ariaLabel: string;
84
+ tooltip: string;
85
+ onClick: () => void;
86
+ }
87
+ declare const ResourceBulkDeletionButton: FC<ResourceBulkDeletionButtonProps>;
88
+
89
+ interface ResourceCreationButtonProps {
90
+ ariaLabel: string;
91
+ tooltip: string;
92
+ onClick: () => void;
93
+ }
94
+ declare const ResourceCreationButton: FC<ResourceCreationButtonProps>;
95
+
96
+ interface ResourceDeletionButtonProps {
97
+ onClick: () => void;
98
+ mode?: "menu-item" | "icon-button";
99
+ ariaLabel?: string;
100
+ disabled?: boolean;
101
+ isPending?: boolean;
102
+ label?: string;
103
+ className?: string;
104
+ }
105
+ declare const ResourceDeletionButton: FC<ResourceDeletionButtonProps>;
106
+
107
+ interface ResourceModificationButtonProps {
108
+ onClick: () => void;
109
+ mode?: "menu-item" | "icon-button";
110
+ ariaLabel?: string;
111
+ disabled?: boolean;
112
+ }
113
+ declare const ResourceModificationButton: FC<ResourceModificationButtonProps>;
114
+
115
+ interface ResourceRestartButtonProps {
116
+ onClick: () => void;
117
+ mode?: "menu-item" | "icon-button";
118
+ ariaLabel?: string;
119
+ disabled?: boolean;
120
+ }
121
+ declare const ResourceRestartButton: FC<ResourceRestartButtonProps>;
122
+
123
+ interface ResourceScaleButtonProps {
124
+ onClick: () => void;
125
+ mode?: "menu-item" | "icon-button";
126
+ ariaLabel?: string;
127
+ disabled?: boolean;
128
+ isNotAllowed?: boolean;
129
+ notAllowedReason?: string;
130
+ }
131
+ declare const ResourceScaleButton: FC<ResourceScaleButtonProps>;
132
+
133
+ interface ResourceDetailEmptyBodyProps {
134
+ resourceKind: string;
135
+ }
136
+ declare const ResourceDetailEmptyBody: FC<ResourceDetailEmptyBodyProps>;
137
+ interface ResourceDetailDrawerProps extends PropsWithChildren {
138
+ open: boolean;
139
+ onClose: () => void;
140
+ className?: string;
141
+ }
142
+ declare const ResourceDetailDrawer: FC<ResourceDetailDrawerProps>;
143
+ /** Wraps SheetHeader with standard drawer styling: flex row, centered items, bottom border, and consistent padding. */
144
+ declare const ResourceDetailDrawerHeader: FC<PropsWithChildren<{
145
+ className?: string;
146
+ }>>;
147
+ interface ResourceDetailDrawerBodyProps extends PropsWithChildren {
148
+ /** Optional className for the inner content wrapper; use for p-0 or custom grid layouts. */
149
+ className?: string;
150
+ }
151
+ /** Wraps ScrollArea with standard drawer body scrolling; provides inner p-4 padding by default. */
152
+ declare const ResourceDetailDrawerBody: FC<ResourceDetailDrawerBodyProps>;
153
+
154
+ declare const LineIcon: FC<{
155
+ isError: boolean;
156
+ isSpinning: boolean;
157
+ }>;
158
+
159
+ interface SearchInputProps extends InputHTMLAttributes<HTMLInputElement> {
160
+ /** Width class for the wrapper (e.g., "w-68"). Defaults to "w-68" if not provided. */
161
+ wrapperClassName?: string;
162
+ }
163
+ declare const SearchInput: FC<SearchInputProps>;
164
+
165
+ interface TimezoneSelectProps {
166
+ value: string;
167
+ onChange: (tz: string) => void;
168
+ "aria-labelledby"?: string;
169
+ }
170
+ declare const TimezoneSelect: FC<TimezoneSelectProps>;
171
+
172
+ interface ConfirmationModalProps {
173
+ open: boolean;
174
+ title: ReactNode;
175
+ description: ReactNode;
176
+ confirmLabel?: string;
177
+ confirmVariant?: "default" | "destructive";
178
+ isPending: boolean;
179
+ onClose: () => void;
180
+ onConfirm: () => void;
181
+ }
182
+ declare const ConfirmationModal: FC<ConfirmationModalProps>;
183
+
184
+ type DialogSize = "sm" | "md" | "lg" | "xl" | "2xl";
185
+ interface FormModalProps {
186
+ open: boolean;
187
+ onOpenChange?: (open: boolean) => void;
188
+ onClose: () => void;
189
+ title: string | ReactNode;
190
+ children: ReactNode;
191
+ onSubmit: () => void | Promise<void>;
192
+ isLoading?: boolean;
193
+ submitDisabled?: boolean;
194
+ submitLabel?: string;
195
+ cancelLabel?: string;
196
+ size?: DialogSize;
197
+ }
198
+ declare const FormModal: FC<FormModalProps>;
199
+
200
+ interface TableSkeletonLoaderProps {
201
+ rows?: number;
202
+ columns: number;
203
+ includeCheckbox?: boolean;
204
+ columnWidths?: string[];
205
+ }
206
+ declare const TableSkeletonLoader: FC<TableSkeletonLoaderProps>;
207
+
208
+ interface TableSkeletonRowProps {
209
+ columns: number;
210
+ includeCheckbox?: boolean;
211
+ columnWidths?: string[];
212
+ }
213
+ declare const TableSkeletonRow: FC<TableSkeletonRowProps>;
214
+
215
+ interface MarkdownProps {
216
+ children: string;
217
+ className?: string;
218
+ }
219
+ declare const Markdown: FC<MarkdownProps>;
220
+
221
+ declare const TruncatedText: FC<{
222
+ text: string;
223
+ className?: string;
224
+ tooltipClassName?: string;
225
+ positionerClassName?: string;
226
+ }>;
227
+
228
+ interface SuccessToastProps {
229
+ title: string;
230
+ description: string;
231
+ action?: {
232
+ label: string;
233
+ onClick: () => void;
234
+ };
235
+ }
236
+ declare const SuccessToast: React.FC<SuccessToastProps>;
237
+
238
+ declare function renderSuccessToast(props: SuccessToastProps): void;
239
+
240
+ interface ErrorToastProps {
241
+ title: string;
242
+ description?: string;
243
+ action?: {
244
+ label: string;
245
+ onClick: () => void;
246
+ };
247
+ }
248
+ declare const ErrorToast: React.FC<ErrorToastProps>;
249
+
250
+ declare function renderErrorToast(props: ErrorToastProps): void;
251
+
252
+ declare const TOAST_STYLE: CSSProperties;
253
+
254
+ export { AnnotationBadge, ButtonGroup, type ButtonGroupProps, ConfirmationModal, Divider, DonutChart, EmptyState, type EmptyStateProps, ErrorBoundary, ErrorToast, type ErrorToastProps, FormModal, LineIcon, LoadingSpinner, type LoadingSpinnerProps, Markdown, ResourceBulkDeletionButton, ResourceCell, ResourceCreationButton, ResourceDeletionButton, ResourceDetailDrawer, ResourceDetailDrawerBody, ResourceDetailDrawerHeader, type ResourceDetailDrawerProps, ResourceDetailEmptyBody, type ResourceDetailEmptyBodyProps, ResourceLink, ResourceModificationButton, ResourceRestartButton, ResourceScaleButton, SearchInput, SuccessToast, type SuccessToastProps, TOAST_STYLE, TableSkeletonLoader, type TableSkeletonLoaderProps, TableSkeletonRow, type TableSkeletonRowProps, TimezoneSelect, TruncatedText, renderErrorToast, renderSuccessToast };
@@ -0,0 +1,4 @@
1
+ export { AnnotationBadge, ButtonGroup, ConfirmationModal, Divider, DonutChart, EmptyState, ErrorBoundary, ErrorToast, FormModal, LineIcon, LoadingSpinner, Markdown, ResourceBulkDeletionButton, ResourceCell, ResourceCreationButton, ResourceDeletionButton, ResourceDetailDrawer, ResourceDetailDrawerBody, ResourceDetailDrawerHeader, ResourceDetailEmptyBody, ResourceLink, ResourceModificationButton, ResourceRestartButton, ResourceScaleButton, SearchInput, SuccessToast, TOAST_STYLE, TableSkeletonLoader, TableSkeletonRow, TimezoneSelect, TruncatedText, renderErrorToast, renderSuccessToast } from '../chunk-OI5436K4.js';
2
+ import '../chunk-NPDXDIXD.js';
3
+ import '../chunk-7YPL4ZPM.js';
4
+ import '../chunk-QUNCRUSO.js';
@@ -0,0 +1,6 @@
1
+ declare function useCopyToClipboard<T = true>(timeout?: number): {
2
+ copiedValue: T | null;
3
+ copy: (text: string, marker?: T) => void;
4
+ };
5
+
6
+ export { useCopyToClipboard };
@@ -0,0 +1,2 @@
1
+ import '../chunk-7M2VOCYN.js';
2
+ export { useCopyToClipboard } from '../chunk-3ZL7QROP.js';
@@ -0,0 +1,27 @@
1
+ export { Badge, Button, Checkbox, Collapsible, CollapsiblePanel, CollapsibleTrigger, ContextMenu, ContextMenuContent, ContextMenuItem, ContextMenuPortal, ContextMenuSeparator, ContextMenuTrigger, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerContent, DrawerPopup, DrawerPortal, DrawerViewport, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Input, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Slider, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsIndicator, TabsList, TabsTrigger, Textarea, TextareaProps, Toaster, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, buttonVariants, textareaVariants } from './atoms/index.js';
2
+ export { AppWindowIcon, ArrowLeftRightIcon, ArrowUpCircleIcon, ArrowUpIcon, BellIcon, BoxesIcon, CheckCircle2Icon, CheckIcon, ChevronDownIcon, ChevronRightIcon, ChevronUpIcon, ChevronsLeftIcon, ChevronsRightIcon, CircleCheckIcon, CircleXIcon, ClockIcon, ContainerIcon, CopyIcon, CpuIcon, DatabaseIcon, DownloadIcon, DropletIcon, ExternalLinkIcon, EyeIcon, EyeOffIcon, FileTextIcon, FolderSyncIcon, FrownIcon, GaugeIcon, HardDriveIcon, HouseIcon, InfoIcon, KeyIcon, LayersIcon, LayoutDashboardIcon, Link2Icon, ListChecksIcon, Loader2Icon, LockIcon, LockOpenIcon, Maximize2Icon, Minimize2Icon, MinusIcon, MoreVerticalIcon, NetworkIcon, OctagonXIcon, PackageIcon, PauseIcon, PencilIcon, PlayIcon, PlugIcon, PlusIcon, RefreshCwIcon, RocketIcon, RotateCcwIcon, RouteIcon, SaveIcon, ScalingIcon, ScrollTextIcon, SearchIcon, ServerIcon, Settings2Icon, SettingsIcon, ShieldAlertIcon, ShieldCheckIcon, ShieldIcon, SlidersHorizontalIcon, SquareIcon, StarIcon, TerminalIcon, TimerIcon, Trash2Icon, TriangleAlertIcon, UserRoundIcon, WebhookIcon, XCircleIcon, XIcon } from 'lucide-react';
3
+ export { toast } from 'sonner';
4
+ export { AnnotationBadge, ButtonGroup, ButtonGroupProps, ConfirmationModal, Divider, DonutChart, EmptyState, EmptyStateProps, ErrorBoundary, ErrorToast, ErrorToastProps, FormModal, LineIcon, LoadingSpinner, LoadingSpinnerProps, Markdown, ResourceBulkDeletionButton, ResourceCell, ResourceCreationButton, ResourceDeletionButton, ResourceDetailDrawer, ResourceDetailDrawerBody, ResourceDetailDrawerHeader, ResourceDetailDrawerProps, ResourceDetailEmptyBody, ResourceDetailEmptyBodyProps, ResourceLink, ResourceModificationButton, ResourceRestartButton, ResourceScaleButton, SearchInput, SuccessToast, SuccessToastProps, TOAST_STYLE, TableSkeletonLoader, TableSkeletonLoaderProps, TableSkeletonRow, TableSkeletonRowProps, TimezoneSelect, TruncatedText, renderErrorToast, renderSuccessToast } from './components/index.js';
5
+ export { useCopyToClipboard } from './hooks/index.js';
6
+ export { NavEntry, NavGroup, NavItem, SharedNamespaceContext, SharedUnifiedTrayContentProps, SharedUnifiedTrayContext, SharedUnifiedTrayOpenParams, SharedUnifiedTrayTab, UnifiedTrayAllFamily, UnifiedTrayCoreFamily, UseQueryCallback } from './types/index.js';
7
+ export { clamp, cn, formatRelativeTime, formatTs } from './utils/index.js';
8
+ export { FullTextSearchInput, SplitAndHighlightText, UseFullTextSearchCustomOptions, UseFullTextSearchOptions, UseFullTextSearchReturn, UseFullTextSearchWithHandlersReturn, useFullTextSearch } from './libs/index.js';
9
+ export { VariantProps } from 'class-variance-authority';
10
+ import 'react';
11
+ import 'class-variance-authority/types';
12
+ import '@base-ui/react/use-render';
13
+ import '@base-ui/react/button';
14
+ import '@base-ui/react/checkbox';
15
+ import '@base-ui/react/collapsible';
16
+ import '@base-ui/react/context-menu';
17
+ import '@base-ui/react/dialog';
18
+ import '@base-ui/react/drawer';
19
+ import '@base-ui/react/menu';
20
+ import '@base-ui/react/scroll-area';
21
+ import '@base-ui/react/select';
22
+ import '@base-ui/react/separator';
23
+ import '@base-ui/react/slider';
24
+ import '@base-ui/react/switch';
25
+ import '@base-ui/react/tabs';
26
+ import '@base-ui/react/tooltip';
27
+ import 'clsx';
package/dist/index.js ADDED
@@ -0,0 +1,11 @@
1
+ export { Checkbox, Collapsible, CollapsiblePanel, CollapsibleTrigger, ContextMenu, ContextMenuContent, ContextMenuItem, ContextMenuPortal, ContextMenuSeparator, ContextMenuTrigger, Drawer, DrawerContent, DrawerPopup, DrawerPortal, DrawerViewport, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Slider, Switch, Tabs, TabsContent, TabsIndicator, TabsList, TabsTrigger, Textarea, Toaster, textareaVariants } from './chunk-FJE2X4E6.js';
2
+ export { AnnotationBadge, ButtonGroup, ConfirmationModal, Divider, DonutChart, EmptyState, ErrorBoundary, ErrorToast, FormModal, LineIcon, LoadingSpinner, Markdown, ResourceBulkDeletionButton, ResourceCell, ResourceCreationButton, ResourceDeletionButton, ResourceDetailDrawer, ResourceDetailDrawerBody, ResourceDetailDrawerHeader, ResourceDetailEmptyBody, ResourceLink, ResourceModificationButton, ResourceRestartButton, ResourceScaleButton, SearchInput, SuccessToast, TOAST_STYLE, TableSkeletonLoader, TableSkeletonRow, TimezoneSelect, TruncatedText, renderErrorToast, renderSuccessToast } from './chunk-OI5436K4.js';
3
+ export { Badge, Button, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, ScrollArea, ScrollBar, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, buttonVariants, toast } from './chunk-NPDXDIXD.js';
4
+ import './chunk-7M2VOCYN.js';
5
+ export { useCopyToClipboard } from './chunk-3ZL7QROP.js';
6
+ import './chunk-TLJXC46A.js';
7
+ export { formatRelativeTime, formatTs } from './chunk-CPX26L4M.js';
8
+ export { FullTextSearchInput, useFullTextSearch } from './chunk-GPI6G5NM.js';
9
+ export { SplitAndHighlightText } from './chunk-NFJMUQY6.js';
10
+ export { AppWindowIcon, ArrowLeftRightIcon, ArrowUpCircleIcon, ArrowUpIcon, BellIcon, BoxesIcon, CheckCircle2Icon, CheckIcon, ChevronDownIcon, ChevronRightIcon, ChevronUpIcon, ChevronsLeftIcon, ChevronsRightIcon, CircleCheckIcon, CircleXIcon, ClockIcon, ContainerIcon, CopyIcon, CpuIcon, DatabaseIcon, DownloadIcon, DropletIcon, ExternalLinkIcon, EyeIcon, EyeOffIcon, FileTextIcon, FolderSyncIcon, FrownIcon, GaugeIcon, HardDriveIcon, HouseIcon, InfoIcon, Input, KeyIcon, LayersIcon, LayoutDashboardIcon, Link2Icon, ListChecksIcon, Loader2Icon, LockIcon, LockOpenIcon, Maximize2Icon, Minimize2Icon, MinusIcon, MoreVerticalIcon, NetworkIcon, OctagonXIcon, PackageIcon, PauseIcon, PencilIcon, PlayIcon, PlugIcon, PlusIcon, RefreshCwIcon, RocketIcon, RotateCcwIcon, RouteIcon, SaveIcon, ScalingIcon, ScrollTextIcon, SearchIcon, ServerIcon, Settings2Icon, SettingsIcon, ShieldAlertIcon, ShieldCheckIcon, ShieldIcon, SlidersHorizontalIcon, SquareIcon, StarIcon, TerminalIcon, TimerIcon, Trash2Icon, TriangleAlertIcon, UserRoundIcon, WebhookIcon, XCircleIcon, XIcon } from './chunk-7YPL4ZPM.js';
11
+ export { clamp, cn } from './chunk-QUNCRUSO.js';
@@ -0,0 +1,48 @@
1
+ import React__default, { FC } from 'react';
2
+
3
+ interface FullTextSearchInputProps {
4
+ searchTerm: string;
5
+ matchCount: number;
6
+ currentMatchIdx: number;
7
+ onSearch: (term: string) => void;
8
+ onSearchNext: () => void;
9
+ ariaLabel?: string;
10
+ }
11
+ declare const FullTextSearchInput: FC<FullTextSearchInputProps>;
12
+
13
+ interface SplitAndHighlightTextProps {
14
+ text: string;
15
+ term: string;
16
+ absoluteStart?: number;
17
+ activeMatchCharIdx?: number;
18
+ }
19
+ declare const SplitAndHighlightText: FC<SplitAndHighlightTextProps>;
20
+
21
+ interface UseFullTextSearchReturn {
22
+ searchTerm: string;
23
+ matchCount: number;
24
+ currentMatchIdx: number;
25
+ setSearchTerm: (term: string) => void;
26
+ setMatchCount: (count: number) => void;
27
+ setCurrentMatchIdx: (idx: number) => void;
28
+ resetMatches: () => void;
29
+ }
30
+ interface UseFullTextSearchWithHandlersReturn extends UseFullTextSearchReturn {
31
+ matches: number[];
32
+ activeMatchCharIdx: number;
33
+ contentRef: React__default.RefObject<HTMLDivElement | null>;
34
+ handleSearch: (term: string) => void;
35
+ handleSearchNext: () => void;
36
+ }
37
+ interface UseFullTextSearchOptions {
38
+ text: string;
39
+ }
40
+ interface UseFullTextSearchCustomOptions {
41
+ onSearch: (term: string) => void;
42
+ onSearchNext: () => void;
43
+ }
44
+ declare function useFullTextSearch(options: UseFullTextSearchOptions): UseFullTextSearchWithHandlersReturn;
45
+ declare function useFullTextSearch(options?: undefined): UseFullTextSearchReturn;
46
+ declare function useFullTextSearch(options: UseFullTextSearchCustomOptions): UseFullTextSearchWithHandlersReturn;
47
+
48
+ export { FullTextSearchInput, SplitAndHighlightText, type UseFullTextSearchCustomOptions, type UseFullTextSearchOptions, type UseFullTextSearchReturn, type UseFullTextSearchWithHandlersReturn, useFullTextSearch };
@@ -0,0 +1,4 @@
1
+ export { FullTextSearchInput, useFullTextSearch } from '../chunk-GPI6G5NM.js';
2
+ export { SplitAndHighlightText } from '../chunk-NFJMUQY6.js';
3
+ import '../chunk-7YPL4ZPM.js';
4
+ import '../chunk-QUNCRUSO.js';
package/dist/style.css ADDED
@@ -0,0 +1,65 @@
1
+ @import "tailwindcss";
2
+ @import "tw-animate-css";
3
+ @import "shadcn/tailwind.css";
4
+
5
+ @import "./styles.typography.css";
6
+ @import "./styles.animation.css";
7
+ @import "./styles.palette.css";
8
+
9
+ @source "../src";
10
+
11
+ @custom-variant dark (&:is(.dark *));
12
+
13
+ @theme inline {
14
+ --radius-sm: calc(var(--radius) * 0.6);
15
+ --radius-md: calc(var(--radius) * 0.8);
16
+ --radius-lg: calc(var(--radius) * 1.2);
17
+ --radius-xl: calc(var(--radius) * 1.4);
18
+ --radius-2xl: calc(var(--radius) * 1.8);
19
+ --radius-3xl: calc(var(--radius) * 2.2);
20
+ --radius-4xl: calc(var(--radius) * 2.6);
21
+ }
22
+
23
+ :root {
24
+ --radius: 0.625rem;
25
+ }
26
+
27
+ @layer base {
28
+ * {
29
+ @apply border-border outline-ring/75;
30
+ }
31
+ body {
32
+ @apply bg-background text-foreground;
33
+ }
34
+ html {
35
+ @apply font-sans;
36
+ }
37
+ }
38
+
39
+ @layer utilities {
40
+ /* Focus Ring */
41
+ .focus-ring {
42
+ @apply focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/75;
43
+ }
44
+
45
+ .shadow-subtle {
46
+ box-shadow: 0 1px 3px color-mix(in oklch, var(--foreground) 5%, transparent);
47
+ }
48
+ .shadow-depth-1 {
49
+ box-shadow: 0 2px 8px color-mix(in oklch, var(--foreground) 8%, transparent);
50
+ }
51
+ .shadow-depth-2 {
52
+ box-shadow: 0 4px 16px color-mix(in oklch, var(--foreground) 12%, transparent);
53
+ }
54
+
55
+ /* Z-Index Scale */
56
+ .z-sticky {
57
+ @apply z-10;
58
+ }
59
+ .z-overlay {
60
+ @apply z-50;
61
+ }
62
+ .z-popover-nested {
63
+ @apply z-70;
64
+ }
65
+ }
@@ -0,0 +1,18 @@
1
+ @layer utilities {
2
+ /* Transitions (150ms — Tailwind's default, declared explicitly) */
3
+ .transition-interactive {
4
+ @apply transition-all duration-150;
5
+ }
6
+ .transition-theme {
7
+ @apply transition-colors duration-150;
8
+ }
9
+ .transition-fade {
10
+ @apply transition-opacity duration-150;
11
+ }
12
+ .transition-focus {
13
+ @apply transition-[color,box-shadow] duration-150;
14
+ }
15
+ .transition-height {
16
+ @apply transition-[height] duration-150;
17
+ }
18
+ }
package/dist/styles.js ADDED
@@ -0,0 +1 @@
1
+ import "./style.css";
@@ -0,0 +1,140 @@
1
+ @theme inline {
2
+ --color-sidebar-ring: var(--sidebar-ring);
3
+ --color-sidebar-border: var(--sidebar-border);
4
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
5
+ --color-sidebar-accent: var(--sidebar-accent);
6
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
7
+ --color-sidebar-primary: var(--sidebar-primary);
8
+ --color-sidebar-foreground: var(--sidebar-foreground);
9
+ --color-sidebar: var(--sidebar);
10
+ --color-chart-5: var(--chart-5);
11
+ --color-chart-4: var(--chart-4);
12
+ --color-chart-3: var(--chart-3);
13
+ --color-chart-2: var(--chart-2);
14
+ --color-chart-1: var(--chart-1);
15
+ --color-ring: var(--ring);
16
+ --color-input: var(--input);
17
+ --color-border: var(--border);
18
+ --color-destructive: var(--destructive);
19
+ --color-destructive-soft: var(--destructive-soft);
20
+ --color-info: var(--info);
21
+ --color-info-soft: var(--info-soft);
22
+ --color-danger: var(--danger);
23
+ --color-danger-soft: var(--danger-soft);
24
+ --color-success: var(--success);
25
+ --color-success-foreground: var(--success-foreground);
26
+ --color-success-soft: var(--success-soft);
27
+ --color-warning: var(--warning);
28
+ --color-warning-foreground: var(--warning-foreground);
29
+ --color-warning-soft: var(--warning-soft);
30
+ --color-accent-foreground: var(--accent-foreground);
31
+ --color-accent: var(--accent);
32
+ --color-muted-foreground: var(--muted-foreground);
33
+ --color-muted: var(--muted);
34
+ --color-secondary-foreground: var(--secondary-foreground);
35
+ --color-secondary: var(--secondary);
36
+ --color-primary-foreground: var(--primary-foreground);
37
+ --color-primary: var(--primary);
38
+ --color-popover-foreground: var(--popover-foreground);
39
+ --color-popover: var(--popover);
40
+ --color-tertiary-surface: var(--tertiary-surface);
41
+ --color-secondary-surface: var(--secondary-surface);
42
+ --color-card-foreground: var(--card-foreground);
43
+ --color-card: var(--card);
44
+ --color-foreground: var(--foreground);
45
+ --color-background: var(--background);
46
+ }
47
+
48
+ :root {
49
+ --background: oklch(1 0 0);
50
+ --foreground: oklch(0.145 0 0);
51
+ --card: oklch(1 0 0);
52
+ --card-foreground: oklch(0.145 0 0);
53
+ --popover: oklch(1 0 0);
54
+ --popover-foreground: oklch(0.145 0 0);
55
+ --secondary-surface: oklch(0.96 0 0);
56
+ --tertiary-surface: oklch(0.93 0 0);
57
+ --primary: oklch(0.205 0 0);
58
+ --primary-foreground: oklch(0.985 0 0);
59
+ --secondary: oklch(0.97 0 0);
60
+ --secondary-foreground: oklch(0.205 0 0);
61
+ --muted: oklch(0.97 0 0);
62
+ --muted-foreground: oklch(0.556 0 0);
63
+ --accent: oklch(0.97 0 0);
64
+ --accent-foreground: oklch(0.205 0 0);
65
+ --destructive: oklch(0.637 0.237 25.331);
66
+ --destructive-soft: color-mix(in oklch, var(--destructive) 15%, var(--background));
67
+ --info: oklch(0.623 0.214 259.815);
68
+ --info-soft: color-mix(in oklch, var(--info) 15%, var(--background));
69
+ --danger: oklch(70.5% 0.213 47.604);
70
+ --danger-soft: color-mix(in oklch, var(--danger) 15%, var(--background));
71
+ --success: oklch(0.723 0.219 149.579);
72
+ --success-foreground: oklch(0.145 0 0);
73
+ --success-soft: color-mix(in oklch, var(--success) 15%, var(--background));
74
+ --warning: oklch(0.769 0.188 70.08);
75
+ --warning-foreground: oklch(0.145 0 0);
76
+ --warning-soft: color-mix(in oklch, var(--warning) 15%, var(--background));
77
+ --border: oklch(0.922 0 0);
78
+ --input: oklch(0.922 0 0);
79
+ --ring: oklch(0.708 0 0);
80
+ --chart-1: oklch(0.87 0 0);
81
+ --chart-2: oklch(0.556 0 0);
82
+ --chart-3: oklch(0.439 0 0);
83
+ --chart-4: oklch(0.371 0 0);
84
+ --chart-5: oklch(0.269 0 0);
85
+ --sidebar: oklch(0.985 0 0);
86
+ --sidebar-foreground: oklch(0.145 0 0);
87
+ --sidebar-primary: oklch(0.205 0 0);
88
+ --sidebar-primary-foreground: oklch(0.985 0 0);
89
+ --sidebar-accent: oklch(0.97 0 0);
90
+ --sidebar-accent-foreground: oklch(0.205 0 0);
91
+ --sidebar-border: oklch(0.922 0 0);
92
+ --sidebar-ring: oklch(0.708 0 0);
93
+ }
94
+
95
+ .dark {
96
+ --background: oklch(0 0 0);
97
+ --foreground: oklch(0.985 0 0);
98
+ --card: oklch(0.205 0 0);
99
+ --card-foreground: oklch(0.985 0 0);
100
+ --popover: oklch(0.205 0 0);
101
+ --popover-foreground: oklch(0.985 0 0);
102
+ --secondary-surface: oklch(0.25 0 0);
103
+ --tertiary-surface: oklch(0.3 0 0);
104
+ --primary: oklch(0.922 0 0);
105
+ --primary-foreground: oklch(0.205 0 0);
106
+ --secondary: oklch(0.269 0 0);
107
+ --secondary-foreground: oklch(0.985 0 0);
108
+ --muted: oklch(0.269 0 0);
109
+ --muted-foreground: oklch(0.708 0 0);
110
+ --accent: oklch(0.269 0 0);
111
+ --accent-foreground: oklch(0.985 0 0);
112
+ --destructive: oklch(0.637 0.237 25.331);
113
+ --destructive-soft: color-mix(in oklch, var(--destructive) 15%, var(--background));
114
+ --info: oklch(0.623 0.214 259.815);
115
+ --info-soft: color-mix(in oklch, var(--info) 15%, var(--background));
116
+ --danger: oklch(70.5% 0.213 47.604);
117
+ --danger-soft: color-mix(in oklch, var(--danger) 15%, var(--background));
118
+ --success: oklch(0.723 0.219 149.579);
119
+ --success-foreground: oklch(0.145 0 0);
120
+ --success-soft: color-mix(in oklch, var(--success) 15%, var(--background));
121
+ --warning: oklch(0.769 0.188 70.08);
122
+ --warning-foreground: oklch(0.145 0 0);
123
+ --warning-soft: color-mix(in oklch, var(--warning) 15%, var(--background));
124
+ --border: oklch(1 0 0 / 10%);
125
+ --input: oklch(1 0 0 / 15%);
126
+ --ring: oklch(0.556 0 0);
127
+ --chart-1: oklch(0.87 0 0);
128
+ --chart-2: oklch(0.556 0 0);
129
+ --chart-3: oklch(0.439 0 0);
130
+ --chart-4: oklch(0.371 0 0);
131
+ --chart-5: oklch(0.269 0 0);
132
+ --sidebar: oklch(0.205 0 0);
133
+ --sidebar-foreground: oklch(0.985 0 0);
134
+ --sidebar-primary: oklch(0.488 0.243 264.376);
135
+ --sidebar-primary-foreground: oklch(0.985 0 0);
136
+ --sidebar-accent: oklch(0.269 0 0);
137
+ --sidebar-accent-foreground: oklch(0.985 0 0);
138
+ --sidebar-border: oklch(1 0 0 / 10%);
139
+ --sidebar-ring: oklch(0.556 0 0);
140
+ }
@@ -0,0 +1,57 @@
1
+ @import "@fontsource-variable/geist";
2
+
3
+ @theme inline {
4
+ --font-heading: var(--font-sans);
5
+ --font-sans: "Geist Variable", sans-serif;
6
+ }
7
+
8
+ @layer utilities {
9
+ /* Typography Scale
10
+ * Semantic wrappers over Tailwind v4's built-in --font-weight-* tokens (light 300, normal 400, medium 500, semibold 600, bold 700).
11
+ * Use these utilities (.text-h1, .text-h2, .text-body, etc.) instead of raw font-* classes to preserve semantic hierarchy.
12
+ */
13
+ .text-display {
14
+ @apply text-2xl font-bold;
15
+ }
16
+ .text-h1 {
17
+ @apply text-lg font-bold;
18
+ }
19
+ .text-h2 {
20
+ @apply text-base font-semibold;
21
+ }
22
+ .text-h3 {
23
+ @apply text-sm font-semibold;
24
+ }
25
+ .text-body {
26
+ @apply text-sm font-normal;
27
+ }
28
+ .text-caption {
29
+ @apply text-xs font-normal;
30
+ }
31
+ .text-label {
32
+ @apply text-xs font-medium;
33
+ }
34
+
35
+ /* Semantic Aliases (optional, for intent-based naming) */
36
+ .headline-display {
37
+ @apply text-2xl font-bold;
38
+ }
39
+ .headline-1 {
40
+ @apply text-lg font-bold;
41
+ }
42
+ .headline-2 {
43
+ @apply text-base font-semibold;
44
+ }
45
+ .headline-3 {
46
+ @apply text-sm font-semibold;
47
+ }
48
+ .body-text {
49
+ @apply text-sm font-normal;
50
+ }
51
+ .caption-text {
52
+ @apply text-xs font-normal;
53
+ }
54
+ .label-text {
55
+ @apply text-xs font-medium;
56
+ }
57
+ }