@sqlrooms/ui 0.0.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 (164) hide show
  1. package/.turbo/turbo-build.log +8 -0
  2. package/.turbo/turbo-lint.log +10 -0
  3. package/CHANGELOG.md +8 -0
  4. package/LICENSE.md +9 -0
  5. package/components.json +21 -0
  6. package/dist/components/DefaultErrorBoundary.d.ts +2 -0
  7. package/dist/components/DefaultErrorBoundary.d.ts.map +1 -0
  8. package/dist/components/DefaultErrorBoundary.js +1 -0
  9. package/dist/components/ProgressModal.d.ts +10 -0
  10. package/dist/components/ProgressModal.d.ts.map +1 -0
  11. package/dist/components/ProgressModal.js +7 -0
  12. package/dist/components/accordion.d.ts +8 -0
  13. package/dist/components/accordion.d.ts.map +1 -0
  14. package/dist/components/accordion.js +13 -0
  15. package/dist/components/alert.d.ts +9 -0
  16. package/dist/components/alert.d.ts.map +1 -0
  17. package/dist/components/alert.js +22 -0
  18. package/dist/components/badge.d.ts +10 -0
  19. package/dist/components/badge.d.ts.map +1 -0
  20. package/dist/components/badge.js +20 -0
  21. package/dist/components/breadcrumb.d.ts +20 -0
  22. package/dist/components/breadcrumb.d.ts.map +1 -0
  23. package/dist/components/breadcrumb.js +23 -0
  24. package/dist/components/button.d.ts +12 -0
  25. package/dist/components/button.d.ts.map +1 -0
  26. package/dist/components/button.js +33 -0
  27. package/dist/components/card.d.ts +9 -0
  28. package/dist/components/card.d.ts.map +1 -0
  29. package/dist/components/card.js +16 -0
  30. package/dist/components/checkbox.d.ts +5 -0
  31. package/dist/components/checkbox.d.ts.map +1 -0
  32. package/dist/components/checkbox.js +8 -0
  33. package/dist/components/dialog.d.ts +20 -0
  34. package/dist/components/dialog.d.ts.map +1 -0
  35. package/dist/components/dialog.js +22 -0
  36. package/dist/components/dropdown-menu.d.ts +28 -0
  37. package/dist/components/dropdown-menu.d.ts.map +1 -0
  38. package/dist/components/dropdown-menu.js +35 -0
  39. package/dist/components/editable-text.d.ts +53 -0
  40. package/dist/components/editable-text.d.ts.map +1 -0
  41. package/dist/components/editable-text.js +87 -0
  42. package/dist/components/error-boundary.d.ts +19 -0
  43. package/dist/components/error-boundary.d.ts.map +1 -0
  44. package/dist/components/error-boundary.js +26 -0
  45. package/dist/components/error-pane.d.ts +13 -0
  46. package/dist/components/error-pane.d.ts.map +1 -0
  47. package/dist/components/error-pane.js +12 -0
  48. package/dist/components/form.d.ts +24 -0
  49. package/dist/components/form.d.ts.map +1 -0
  50. package/dist/components/form.js +62 -0
  51. package/dist/components/index.d.ts +2 -0
  52. package/dist/components/index.d.ts.map +1 -0
  53. package/dist/components/index.js +1 -0
  54. package/dist/components/input.d.ts +4 -0
  55. package/dist/components/input.d.ts.map +1 -0
  56. package/dist/components/input.js +8 -0
  57. package/dist/components/label.d.ts +6 -0
  58. package/dist/components/label.d.ts.map +1 -0
  59. package/dist/components/label.js +9 -0
  60. package/dist/components/popover.d.ts +8 -0
  61. package/dist/components/popover.d.ts.map +1 -0
  62. package/dist/components/popover.js +10 -0
  63. package/dist/components/progress-modal.d.ts +10 -0
  64. package/dist/components/progress-modal.d.ts.map +1 -0
  65. package/dist/components/progress-modal.js +8 -0
  66. package/dist/components/progress.d.ts +5 -0
  67. package/dist/components/progress.d.ts.map +1 -0
  68. package/dist/components/progress.js +7 -0
  69. package/dist/components/resizable.d.ts +24 -0
  70. package/dist/components/resizable.d.ts.map +1 -0
  71. package/dist/components/resizable.js +8 -0
  72. package/dist/components/select.d.ts +14 -0
  73. package/dist/components/select.d.ts.map +1 -0
  74. package/dist/components/select.js +26 -0
  75. package/dist/components/skeleton-pane.d.ts +10 -0
  76. package/dist/components/skeleton-pane.d.ts.map +1 -0
  77. package/dist/components/skeleton-pane.js +17 -0
  78. package/dist/components/skeleton.d.ts +3 -0
  79. package/dist/components/skeleton.d.ts.map +1 -0
  80. package/dist/components/skeleton.js +6 -0
  81. package/dist/components/spinner-pane.d.ts +10 -0
  82. package/dist/components/spinner-pane.d.ts.map +1 -0
  83. package/dist/components/spinner-pane.js +17 -0
  84. package/dist/components/spinner.d.ts +8 -0
  85. package/dist/components/spinner.d.ts.map +1 -0
  86. package/dist/components/spinner.js +9 -0
  87. package/dist/components/switch.d.ts +5 -0
  88. package/dist/components/switch.d.ts.map +1 -0
  89. package/dist/components/switch.js +7 -0
  90. package/dist/components/table.d.ts +20 -0
  91. package/dist/components/table.d.ts.map +1 -0
  92. package/dist/components/table.js +20 -0
  93. package/dist/components/tabs.d.ts +8 -0
  94. package/dist/components/tabs.d.ts.map +1 -0
  95. package/dist/components/tabs.js +12 -0
  96. package/dist/components/textarea.d.ts +4 -0
  97. package/dist/components/textarea.d.ts.map +1 -0
  98. package/dist/components/textarea.js +8 -0
  99. package/dist/components/toast.d.ts +16 -0
  100. package/dist/components/toast.d.ts.map +1 -0
  101. package/dist/components/toast.js +33 -0
  102. package/dist/components/toaster.d.ts +2 -0
  103. package/dist/components/toaster.d.ts.map +1 -0
  104. package/dist/components/toaster.js +9 -0
  105. package/dist/components/tooltip.d.ts +8 -0
  106. package/dist/components/tooltip.d.ts.map +1 -0
  107. package/dist/components/tooltip.js +10 -0
  108. package/dist/hooks/use-toast.d.ts +45 -0
  109. package/dist/hooks/use-toast.d.ts.map +1 -0
  110. package/dist/hooks/use-toast.js +128 -0
  111. package/dist/hooks/useDisclosure.d.ts +9 -0
  112. package/dist/hooks/useDisclosure.d.ts.map +1 -0
  113. package/dist/hooks/useDisclosure.js +14 -0
  114. package/dist/index.d.ts +36 -0
  115. package/dist/index.d.ts.map +1 -0
  116. package/dist/index.js +35 -0
  117. package/dist/lib/utils.d.ts +3 -0
  118. package/dist/lib/utils.d.ts.map +1 -0
  119. package/dist/lib/utils.js +5 -0
  120. package/dist/tailwind-preset.css +68 -0
  121. package/dist/tailwind-preset.d.ts +5 -0
  122. package/dist/tailwind-preset.d.ts.map +1 -0
  123. package/dist/tailwind-preset.js +50 -0
  124. package/dist/tsconfig.tsbuildinfo +1 -0
  125. package/eslint.config.js +4 -0
  126. package/package.json +59 -0
  127. package/src/components/accordion.tsx +55 -0
  128. package/src/components/alert.tsx +59 -0
  129. package/src/components/badge.tsx +34 -0
  130. package/src/components/breadcrumb.tsx +115 -0
  131. package/src/components/button.tsx +55 -0
  132. package/src/components/card.tsx +76 -0
  133. package/src/components/checkbox.tsx +28 -0
  134. package/src/components/dialog.tsx +120 -0
  135. package/src/components/dropdown-menu.tsx +199 -0
  136. package/src/components/editable-text.tsx +199 -0
  137. package/src/components/error-boundary.tsx +48 -0
  138. package/src/components/error-pane.tsx +81 -0
  139. package/src/components/form.tsx +176 -0
  140. package/src/components/input.tsx +22 -0
  141. package/src/components/label.tsx +24 -0
  142. package/src/components/popover.tsx +31 -0
  143. package/src/components/progress-modal.tsx +33 -0
  144. package/src/components/progress.tsx +26 -0
  145. package/src/components/resizable.tsx +43 -0
  146. package/src/components/select.tsx +157 -0
  147. package/src/components/skeleton-pane.tsx +45 -0
  148. package/src/components/skeleton.tsx +12 -0
  149. package/src/components/spinner-pane.tsx +44 -0
  150. package/src/components/spinner.tsx +16 -0
  151. package/src/components/switch.tsx +27 -0
  152. package/src/components/table.tsx +136 -0
  153. package/src/components/tabs.tsx +53 -0
  154. package/src/components/textarea.tsx +21 -0
  155. package/src/components/toast.tsx +127 -0
  156. package/src/components/toaster.tsx +33 -0
  157. package/src/components/tooltip.tsx +29 -0
  158. package/src/hooks/use-toast.ts +191 -0
  159. package/src/hooks/useDisclosure.ts +26 -0
  160. package/src/index.ts +35 -0
  161. package/src/lib/utils.ts +6 -0
  162. package/src/tailwind-preset.css +68 -0
  163. package/src/tailwind-preset.ts +55 -0
  164. package/tsconfig.json +12 -0
@@ -0,0 +1,87 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useRef, useState } from 'react';
3
+ import { Input } from './input';
4
+ import { cn } from '../lib/utils';
5
+ const EDITING_PAD = 12;
6
+ export const EditableText = ({ className, isReadOnly = false, defaultEditing = false, minWidth = 100, maxWidth = 500, isEditing, placeholder, value, onChange, onEditingChange, }) => {
7
+ const [isInternalEditing, setInternalIsEditing] = useState(defaultEditing);
8
+ const inputRef = useRef(null);
9
+ const [internalValue, setInternalValue] = useState(value);
10
+ const internalValueRef = useRef(internalValue);
11
+ internalValueRef.current = internalValue;
12
+ const [inputWidth, setInputWidth] = useState(minWidth);
13
+ const spanRef = useRef(null);
14
+ useEffect(() => {
15
+ // Update input width based on the invisible span width
16
+ setInputWidth(spanRef.current?.offsetWidth ?? 0);
17
+ }, [internalValue]);
18
+ const handleSetValue = useCallback((e) => {
19
+ if (isReadOnly || !isInternalEditing) {
20
+ return;
21
+ }
22
+ return setInternalValue(e.target.value);
23
+ }, [isInternalEditing, isReadOnly]);
24
+ const handleSetEditing = useCallback((nextIsEditing) => {
25
+ if (isReadOnly) {
26
+ return;
27
+ }
28
+ setInternalIsEditing(nextIsEditing);
29
+ onEditingChange?.(nextIsEditing);
30
+ }, [isReadOnly, onEditingChange]);
31
+ const handleBlur = useCallback(() => {
32
+ handleSetEditing(false);
33
+ onChange(internalValueRef.current?.trim());
34
+ }, [handleSetEditing, onChange]);
35
+ const handleClick = useCallback(() => {
36
+ if (!isInternalEditing) {
37
+ handleSetEditing(true);
38
+ }
39
+ }, [isInternalEditing, handleSetEditing]);
40
+ useEffect(() => {
41
+ if (value !== internalValueRef.current) {
42
+ setInternalValue(value);
43
+ }
44
+ }, [value]);
45
+ useEffect(() => {
46
+ if (isEditing !== undefined && isEditing !== isInternalEditing) {
47
+ setInternalIsEditing(Boolean(isEditing));
48
+ if (isEditing) {
49
+ setTimeout(() => {
50
+ // When enabling editing from a dropdown menu, there will be a blur event when the dropdown closes,
51
+ // so we need to wait a bit before making sure the input is focused and selected
52
+ inputRef.current?.select();
53
+ inputRef.current?.focus();
54
+ }, 200);
55
+ }
56
+ }
57
+ }, [isInternalEditing, handleSetEditing, isEditing]);
58
+ // Add keydown event listener to handle enter key
59
+ useEffect(() => {
60
+ const handleKeyDown = (e) => {
61
+ switch (e.key) {
62
+ case 'Escape':
63
+ // Reset the internal value to the original value
64
+ setInternalValue(value);
65
+ internalValueRef.current = value;
66
+ handleSetEditing(false);
67
+ inputRef.current?.blur();
68
+ break;
69
+ case 'Enter':
70
+ handleSetEditing(false);
71
+ onChange(internalValueRef.current.trim());
72
+ inputRef.current?.blur();
73
+ break;
74
+ }
75
+ };
76
+ if (isInternalEditing) {
77
+ document.addEventListener('keydown', handleKeyDown);
78
+ }
79
+ return () => {
80
+ document.removeEventListener('keydown', handleKeyDown);
81
+ };
82
+ }, [isInternalEditing, onChange, handleSetEditing, value]);
83
+ return (_jsxs(_Fragment, { children: [_jsx("span", { ref: spanRef, className: cn(className, 'white-space-pre pointer-events-none invisible absolute left-0 top-0 px-1'), style: { minWidth, maxWidth }, children: internalValue }), _jsx(Input, { ref: inputRef, className: cn('disabled:opacity-1 rounded-sm border-transparent px-1 py-0 focus:border-blue-500 focus:outline-none focus:ring-blue-500 disabled:cursor-text', { 'select-none bg-transparent': !isInternalEditing }, className), style: {
84
+ width: inputWidth + EDITING_PAD, // add padding to avoid jittering when editing
85
+ caretColor: isInternalEditing ? undefined : 'transparent',
86
+ }, value: internalValue, onChange: handleSetValue, onBlur: handleBlur, disabled: isReadOnly, onClick: handleClick, placeholder: !isInternalEditing ? (placeholder ?? 'Click to edit') : undefined })] }));
87
+ };
@@ -0,0 +1,19 @@
1
+ import { Component, ErrorInfo, ReactNode } from 'react';
2
+ interface Props {
3
+ children?: ReactNode;
4
+ onRetry?: () => void;
5
+ fallback?: ReactNode;
6
+ }
7
+ interface State {
8
+ hasError: boolean;
9
+ error: Error | null;
10
+ }
11
+ export declare class ErrorBoundary extends Component<Props, State> {
12
+ state: State;
13
+ static getDerivedStateFromError(error: Error): State;
14
+ componentDidCatch(error: Error, errorInfo: ErrorInfo): void;
15
+ private handleRetry;
16
+ render(): string | number | boolean | Iterable<ReactNode> | import("react/jsx-runtime").JSX.Element | null | undefined;
17
+ }
18
+ export {};
19
+ //# sourceMappingURL=error-boundary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-boundary.d.ts","sourceRoot":"","sources":["../../src/components/error-boundary.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAC,MAAM,OAAO,CAAC;AAGtD,UAAU,KAAK;IACb,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,UAAU,KAAK;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED,qBAAa,aAAc,SAAQ,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;IACjD,KAAK,EAAE,KAAK,CAGjB;WAEY,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK;IAIpD,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS;IAI3D,OAAO,CAAC,WAAW,CAIjB;IAEK,MAAM;CAad"}
@@ -0,0 +1,26 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Component } from 'react';
3
+ import { ErrorPane } from './error-pane';
4
+ export class ErrorBoundary extends Component {
5
+ state = {
6
+ hasError: false,
7
+ error: null,
8
+ };
9
+ static getDerivedStateFromError(error) {
10
+ return { hasError: true, error };
11
+ }
12
+ componentDidCatch(error, errorInfo) {
13
+ console.error('Uncaught error:', error, errorInfo);
14
+ }
15
+ handleRetry = () => {
16
+ if (this.props.onRetry) {
17
+ this.props.onRetry();
18
+ }
19
+ };
20
+ render() {
21
+ if (this.state.hasError) {
22
+ return (_jsx(ErrorPane, { error: this.state.error, onRetry: this.props.onRetry ? this.handleRetry : undefined, actions: !!this.props.onRetry }));
23
+ }
24
+ return this.props.children;
25
+ }
26
+ }
@@ -0,0 +1,13 @@
1
+ import * as React from 'react';
2
+ interface ErrorPaneProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ embed?: boolean;
4
+ error?: string | Error | unknown;
5
+ title?: string;
6
+ text?: string;
7
+ onRetry?: () => void;
8
+ onGoToStart?: () => void;
9
+ actions?: boolean;
10
+ }
11
+ declare const ErrorPane: React.ForwardRefExoticComponent<ErrorPaneProps & React.RefAttributes<HTMLDivElement>>;
12
+ export { ErrorPane };
13
+ //# sourceMappingURL=error-pane.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-pane.d.ts","sourceRoot":"","sources":["../../src/components/error-pane.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,UAAU,cAAe,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACnE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,QAAA,MAAM,SAAS,uFA4Dd,CAAC;AAIF,OAAO,EAAC,SAAS,EAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Alert, AlertDescription, AlertTitle } from './alert';
3
+ import { RotateCcwIcon, TriangleAlertIcon } from 'lucide-react';
4
+ import * as React from 'react';
5
+ import { cn } from '../lib/utils';
6
+ import { Button } from './button';
7
+ const ErrorPane = React.forwardRef(({ className, embed, title = 'Something went wrong', text = `We are sorry, but something unexpected happened. We were notified
8
+ and will be working on resolving the issue as soon as possible.`, onRetry, actions = false, onGoToStart, ...props }, ref) => {
9
+ return (_jsx("div", { ref: ref, className: cn('flex justify-center', className), ...props, children: _jsxs(Alert, { variant: "destructive", className: cn('flex min-h-[200px] max-w-[450px] flex-col items-center justify-center rounded-lg bg-gray-700 px-6 py-6 text-center', !embed && 'min-w-[350px]'), children: [_jsx("div", { className: "mb-4", children: _jsx(TriangleAlertIcon, { className: "h-8 w-8 text-destructive" }) }), _jsx(AlertTitle, { className: "mb-1 text-xl", children: title }), _jsxs(AlertDescription, { className: "mt-3 max-w-sm px-2", children: [_jsx("p", { className: "mb-5 text-left", children: text }), actions && (_jsx("div", { className: "mt-6 mb-3", children: _jsxs("div", { className: "flex justify-center gap-2", children: [onRetry && (_jsxs(Button, { size: "sm", onClick: onRetry, className: "inline-flex items-center", children: [_jsx(RotateCcwIcon, { className: "mr-2 h-4 w-4" }), "Retry"] })), !embed && onGoToStart && (_jsx(Button, { size: "sm", onClick: onGoToStart, children: "Go to start page" }))] }) }))] })] }) }));
10
+ });
11
+ ErrorPane.displayName = 'ErrorPane';
12
+ export { ErrorPane };
@@ -0,0 +1,24 @@
1
+ import * as React from 'react';
2
+ import * as LabelPrimitive from '@radix-ui/react-label';
3
+ import { ControllerProps, FieldPath, FieldValues } from 'react-hook-form';
4
+ declare const Form: <TFieldValues extends FieldValues, TContext = any, TTransformedValues extends FieldValues | undefined = undefined>(props: import("react-hook-form").FormProviderProps<TFieldValues, TContext, TTransformedValues>) => React.JSX.Element;
5
+ declare const FormField: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ ...props }: ControllerProps<TFieldValues, TName>) => import("react/jsx-runtime").JSX.Element;
6
+ declare const useFormField: () => {
7
+ invalid: boolean;
8
+ isDirty: boolean;
9
+ isTouched: boolean;
10
+ isValidating: boolean;
11
+ error?: import("react-hook-form").FieldError;
12
+ id: string;
13
+ name: string;
14
+ formItemId: string;
15
+ formDescriptionId: string;
16
+ formMessageId: string;
17
+ };
18
+ declare const FormItem: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
19
+ declare const FormLabel: React.ForwardRefExoticComponent<Omit<LabelPrimitive.LabelProps & React.RefAttributes<HTMLLabelElement>, "ref"> & React.RefAttributes<HTMLLabelElement>>;
20
+ declare const FormControl: React.ForwardRefExoticComponent<Omit<import("@radix-ui/react-slot").SlotProps & React.RefAttributes<HTMLElement>, "ref"> & React.RefAttributes<HTMLElement>>;
21
+ declare const FormDescription: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLParagraphElement> & React.RefAttributes<HTMLParagraphElement>>;
22
+ declare const FormMessage: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLParagraphElement> & React.RefAttributes<HTMLParagraphElement>>;
23
+ export { useFormField, Form, FormItem, FormLabel, FormControl, FormDescription, FormMessage, FormField, };
24
+ //# sourceMappingURL=form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../src/components/form.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,cAAc,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAEL,eAAe,EACf,SAAS,EACT,WAAW,EAGZ,MAAM,iBAAiB,CAAC;AAKzB,QAAA,MAAM,IAAI,yOAAe,CAAC;AAa1B,QAAA,MAAM,SAAS,GACb,YAAY,SAAS,WAAW,gBAChC,KAAK,SAAS,SAAS,CAAC,YAAY,CAAC,0CAGpC,eAAe,CAAC,YAAY,EAAE,KAAK,CAAC,4CAMtC,CAAC;AAEF,QAAA,MAAM,YAAY;;;;;;;;;;;CAqBjB,CAAC;AAUF,QAAA,MAAM,QAAQ,6GAWZ,CAAC;AAGH,QAAA,MAAM,SAAS,yJAcb,CAAC;AAGH,QAAA,MAAM,WAAW,8JAmBf,CAAC;AAGH,QAAA,MAAM,eAAe,yHAcnB,CAAC;AAGH,QAAA,MAAM,WAAW,yHAqBf,CAAC;AAGH,OAAO,EACL,YAAY,EACZ,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,WAAW,EACX,eAAe,EACf,WAAW,EACX,SAAS,GACV,CAAC"}
@@ -0,0 +1,62 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { Slot } from '@radix-ui/react-slot';
4
+ import { Controller, FormProvider, useFormContext, } from 'react-hook-form';
5
+ import { cn } from '../lib/utils';
6
+ import { Label } from './label';
7
+ const Form = FormProvider;
8
+ const FormFieldContext = React.createContext({});
9
+ const FormField = ({ ...props }) => {
10
+ return (_jsx(FormFieldContext.Provider, { value: { name: props.name }, children: _jsx(Controller, { ...props }) }));
11
+ };
12
+ const useFormField = () => {
13
+ const fieldContext = React.useContext(FormFieldContext);
14
+ const itemContext = React.useContext(FormItemContext);
15
+ const { getFieldState, formState } = useFormContext();
16
+ const fieldState = getFieldState(fieldContext.name, formState);
17
+ if (!fieldContext) {
18
+ throw new Error('useFormField should be used within <FormField>');
19
+ }
20
+ const { id } = itemContext;
21
+ return {
22
+ id,
23
+ name: fieldContext.name,
24
+ formItemId: `${id}-form-item`,
25
+ formDescriptionId: `${id}-form-item-description`,
26
+ formMessageId: `${id}-form-item-message`,
27
+ ...fieldState,
28
+ };
29
+ };
30
+ const FormItemContext = React.createContext({});
31
+ const FormItem = React.forwardRef(({ className, ...props }, ref) => {
32
+ const id = React.useId();
33
+ return (_jsx(FormItemContext.Provider, { value: { id }, children: _jsx("div", { ref: ref, className: cn('space-y-2', className), ...props }) }));
34
+ });
35
+ FormItem.displayName = 'FormItem';
36
+ const FormLabel = React.forwardRef(({ className, ...props }, ref) => {
37
+ const { error, formItemId } = useFormField();
38
+ return (_jsx(Label, { ref: ref, className: cn(error && 'text-destructive', className), htmlFor: formItemId, ...props }));
39
+ });
40
+ FormLabel.displayName = 'FormLabel';
41
+ const FormControl = React.forwardRef(({ ...props }, ref) => {
42
+ const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
43
+ return (_jsx(Slot, { ref: ref, id: formItemId, "aria-describedby": !error
44
+ ? `${formDescriptionId}`
45
+ : `${formDescriptionId} ${formMessageId}`, "aria-invalid": !!error, ...props }));
46
+ });
47
+ FormControl.displayName = 'FormControl';
48
+ const FormDescription = React.forwardRef(({ className, ...props }, ref) => {
49
+ const { formDescriptionId } = useFormField();
50
+ return (_jsx("p", { ref: ref, id: formDescriptionId, className: cn('text-[0.8rem] text-muted-foreground', className), ...props }));
51
+ });
52
+ FormDescription.displayName = 'FormDescription';
53
+ const FormMessage = React.forwardRef(({ className, children, ...props }, ref) => {
54
+ const { error, formMessageId } = useFormField();
55
+ const body = error ? String(error?.message) : children;
56
+ if (!body) {
57
+ return null;
58
+ }
59
+ return (_jsx("p", { ref: ref, id: formMessageId, className: cn('text-[0.8rem] font-medium text-destructive', className), ...props, children: body }));
60
+ });
61
+ FormMessage.displayName = 'FormMessage';
62
+ export { useFormField, Form, FormItem, FormLabel, FormControl, FormDescription, FormMessage, FormField, };
@@ -0,0 +1,2 @@
1
+ export * from './button';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC"}
@@ -0,0 +1 @@
1
+ export * from './button';
@@ -0,0 +1,4 @@
1
+ import * as React from 'react';
2
+ declare const Input: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "ref"> & React.RefAttributes<HTMLInputElement>>;
3
+ export { Input };
4
+ //# sourceMappingURL=input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/components/input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,QAAA,MAAM,KAAK,8KAcV,CAAC;AAGF,OAAO,EAAC,KAAK,EAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { cn } from '../lib/utils';
4
+ const Input = React.forwardRef(({ className, type, ...props }, ref) => {
5
+ return (_jsx("input", { type: type, className: cn('flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm', className), ref: ref, ...props }));
6
+ });
7
+ Input.displayName = 'Input';
8
+ export { Input };
@@ -0,0 +1,6 @@
1
+ import * as React from 'react';
2
+ import * as LabelPrimitive from '@radix-ui/react-label';
3
+ import { type VariantProps } from 'class-variance-authority';
4
+ declare const Label: React.ForwardRefExoticComponent<Omit<LabelPrimitive.LabelProps & React.RefAttributes<HTMLLabelElement>, "ref"> & VariantProps<(props?: import("class-variance-authority/types").ClassProp | undefined) => string> & React.RefAttributes<HTMLLabelElement>>;
5
+ export { Label };
6
+ //# sourceMappingURL=label.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label.d.ts","sourceRoot":"","sources":["../../src/components/label.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,cAAc,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAM,KAAK,YAAY,EAAC,MAAM,0BAA0B,CAAC;AAQhE,QAAA,MAAM,KAAK,4PAUT,CAAC;AAGH,OAAO,EAAC,KAAK,EAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import * as LabelPrimitive from '@radix-ui/react-label';
4
+ import { cva } from 'class-variance-authority';
5
+ import { cn } from '../lib/utils';
6
+ const labelVariants = cva('text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70');
7
+ const Label = React.forwardRef(({ className, ...props }, ref) => (_jsx(LabelPrimitive.Root, { ref: ref, className: cn(labelVariants(), className), ...props })));
8
+ Label.displayName = LabelPrimitive.Root.displayName;
9
+ export { Label };
@@ -0,0 +1,8 @@
1
+ import * as React from 'react';
2
+ import * as PopoverPrimitive from '@radix-ui/react-popover';
3
+ declare const Popover: React.FC<PopoverPrimitive.PopoverProps>;
4
+ declare const PopoverTrigger: React.ForwardRefExoticComponent<PopoverPrimitive.PopoverTriggerProps & React.RefAttributes<HTMLButtonElement>>;
5
+ declare const PopoverAnchor: React.ForwardRefExoticComponent<PopoverPrimitive.PopoverAnchorProps & React.RefAttributes<HTMLDivElement>>;
6
+ declare const PopoverContent: React.ForwardRefExoticComponent<Omit<PopoverPrimitive.PopoverContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
7
+ export { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };
8
+ //# sourceMappingURL=popover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popover.d.ts","sourceRoot":"","sources":["../../src/components/popover.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAC;AAI5D,QAAA,MAAM,OAAO,yCAAwB,CAAC;AAEtC,QAAA,MAAM,cAAc,gHAA2B,CAAC;AAEhD,QAAA,MAAM,aAAa,4GAA0B,CAAC;AAE9C,QAAA,MAAM,cAAc,gKAgBlB,CAAC;AAGH,OAAO,EAAC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import * as PopoverPrimitive from '@radix-ui/react-popover';
4
+ import { cn } from '../lib/utils';
5
+ const Popover = PopoverPrimitive.Root;
6
+ const PopoverTrigger = PopoverPrimitive.Trigger;
7
+ const PopoverAnchor = PopoverPrimitive.Anchor;
8
+ const PopoverContent = React.forwardRef(({ className, align = 'center', sideOffset = 4, ...props }, ref) => (_jsx(PopoverPrimitive.Portal, { children: _jsx(PopoverPrimitive.Content, { ref: ref, align: align, sideOffset: sideOffset, className: cn('z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2', className), ...props }) })));
9
+ PopoverContent.displayName = PopoverPrimitive.Content.displayName;
10
+ export { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };
@@ -0,0 +1,10 @@
1
+ import { FC } from 'react';
2
+ type Props = {
3
+ isOpen: boolean;
4
+ title?: string;
5
+ loadingStage?: string;
6
+ progress?: number;
7
+ };
8
+ declare const ProgressModal: FC<Props>;
9
+ export { ProgressModal };
10
+ //# sourceMappingURL=progress-modal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress-modal.d.ts","sourceRoot":"","sources":["../../src/components/progress-modal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,EAAE,EAAC,MAAM,OAAO,CAAC;AAIzB,KAAK,KAAK,GAAG;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,QAAA,MAAM,aAAa,EAAE,EAAE,CAAC,KAAK,CAmB5B,CAAC;AAEF,OAAO,EAAC,aAAa,EAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Dialog, DialogContent, DialogHeader, DialogTitle } from './dialog';
3
+ import { Progress } from './progress';
4
+ const ProgressModal = (props) => {
5
+ const { isOpen, title, loadingStage, progress } = props;
6
+ return (_jsx(Dialog, { open: isOpen, onOpenChange: () => { }, children: _jsxs(DialogContent, { className: "sm:max-w-[425px]", children: [_jsx(DialogHeader, { children: _jsx(DialogTitle, { children: title ?? '' }) }), _jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(Progress, { value: progress, className: "w-full" }), _jsxs("div", { className: "flex justify-between text-sm text-muted-foreground", children: [_jsx("span", { children: loadingStage ?? '' }), progress ? _jsxs("span", { children: [progress, "%"] }) : null] })] })] }) }));
7
+ };
8
+ export { ProgressModal };
@@ -0,0 +1,5 @@
1
+ import * as React from 'react';
2
+ import * as ProgressPrimitive from '@radix-ui/react-progress';
3
+ declare const Progress: React.ForwardRefExoticComponent<Omit<ProgressPrimitive.ProgressProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
4
+ export { Progress };
5
+ //# sourceMappingURL=progress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/components/progress.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,iBAAiB,MAAM,0BAA0B,CAAC;AAI9D,QAAA,MAAM,QAAQ,2JAiBZ,CAAC;AAGH,OAAO,EAAC,QAAQ,EAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import * as ProgressPrimitive from '@radix-ui/react-progress';
4
+ import { cn } from '../lib/utils';
5
+ const Progress = React.forwardRef(({ className, value, ...props }, ref) => (_jsx(ProgressPrimitive.Root, { ref: ref, className: cn('relative h-2 w-full overflow-hidden rounded-full bg-primary/20', className), ...props, children: _jsx(ProgressPrimitive.Indicator, { className: "h-full w-full flex-1 bg-primary transition-all", style: { transform: `translateX(-${100 - (value || 0)}%)` } }) })));
6
+ Progress.displayName = ProgressPrimitive.Root.displayName;
7
+ export { Progress };
@@ -0,0 +1,24 @@
1
+ import * as ResizablePrimitive from 'react-resizable-panels';
2
+ declare const ResizablePanelGroup: ({ className, ...props }: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) => import("react/jsx-runtime").JSX.Element;
3
+ declare const ResizablePanel: import("react").ForwardRefExoticComponent<Omit<import("react").HTMLAttributes<HTMLDivElement | HTMLElement | HTMLObjectElement | HTMLAnchorElement | HTMLButtonElement | HTMLFormElement | HTMLHeadingElement | HTMLImageElement | HTMLInputElement | HTMLLabelElement | HTMLLIElement | HTMLOListElement | HTMLParagraphElement | HTMLSpanElement | HTMLUListElement | HTMLAreaElement | HTMLAudioElement | HTMLBaseElement | HTMLQuoteElement | HTMLBodyElement | HTMLBRElement | HTMLCanvasElement | HTMLTableColElement | HTMLDataElement | HTMLDataListElement | HTMLModElement | HTMLDetailsElement | HTMLDialogElement | HTMLDListElement | HTMLEmbedElement | HTMLFieldSetElement | HTMLHeadElement | HTMLHRElement | HTMLHtmlElement | HTMLIFrameElement | HTMLLegendElement | HTMLLinkElement | HTMLMapElement | HTMLMetaElement | HTMLMeterElement | HTMLOptGroupElement | HTMLOptionElement | HTMLOutputElement | HTMLPreElement | HTMLProgressElement | HTMLSlotElement | HTMLScriptElement | HTMLSelectElement | HTMLSourceElement | HTMLStyleElement | HTMLTableElement | HTMLTemplateElement | HTMLTableSectionElement | HTMLTableCellElement | HTMLTextAreaElement | HTMLTimeElement | HTMLTitleElement | HTMLTableRowElement | HTMLTrackElement | HTMLVideoElement | HTMLTableCaptionElement | HTMLMenuElement | HTMLPictureElement>, "id" | "onResize"> & {
4
+ className?: string | undefined;
5
+ collapsedSize?: number | undefined;
6
+ collapsible?: boolean | undefined;
7
+ defaultSize?: number | undefined;
8
+ id?: string | undefined;
9
+ maxSize?: number | undefined;
10
+ minSize?: number | undefined;
11
+ onCollapse?: ResizablePrimitive.PanelOnCollapse | undefined;
12
+ onExpand?: ResizablePrimitive.PanelOnExpand | undefined;
13
+ onResize?: ResizablePrimitive.PanelOnResize | undefined;
14
+ order?: number | undefined;
15
+ style?: object | undefined;
16
+ tagName?: keyof HTMLElementTagNameMap | undefined;
17
+ } & {
18
+ children?: import("react").ReactNode;
19
+ } & import("react").RefAttributes<ResizablePrimitive.ImperativePanelHandle>>;
20
+ declare const ResizableHandle: ({ withHandle, className, ...props }: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {
21
+ withHandle?: boolean;
22
+ }) => import("react/jsx-runtime").JSX.Element;
23
+ export { ResizablePanelGroup, ResizablePanel, ResizableHandle };
24
+ //# sourceMappingURL=resizable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resizable.d.ts","sourceRoot":"","sources":["../../src/components/resizable.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,kBAAkB,MAAM,wBAAwB,CAAC;AAI7D,QAAA,MAAM,mBAAmB,4BAGtB,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,UAAU,CAAC,4CAQ5D,CAAC;AAEF,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;sBAyBknE,OAAO;4EAzB9lE,CAAC;AAEhD,QAAA,MAAM,eAAe,wCAIlB,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,iBAAiB,CAAC,GAAG;IACrE,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,4CAcA,CAAC;AAEF,OAAO,EAAC,mBAAmB,EAAE,cAAc,EAAE,eAAe,EAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { GripVertical } from 'lucide-react';
3
+ import * as ResizablePrimitive from 'react-resizable-panels';
4
+ import { cn } from '../lib/utils';
5
+ const ResizablePanelGroup = ({ className, ...props }) => (_jsx(ResizablePrimitive.PanelGroup, { className: cn('flex h-full w-full data-[panel-group-direction=vertical]:flex-col', className), ...props }));
6
+ const ResizablePanel = ResizablePrimitive.Panel;
7
+ const ResizableHandle = ({ withHandle, className, ...props }) => (_jsx(ResizablePrimitive.PanelResizeHandle, { className: cn('relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90', className), ...props, children: withHandle && (_jsx("div", { className: "z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border", children: _jsx(GripVertical, { className: "h-2.5 w-2.5" }) })) }));
8
+ export { ResizablePanelGroup, ResizablePanel, ResizableHandle };
@@ -0,0 +1,14 @@
1
+ import * as React from 'react';
2
+ import * as SelectPrimitive from '@radix-ui/react-select';
3
+ declare const Select: React.FC<SelectPrimitive.SelectProps>;
4
+ declare const SelectGroup: React.ForwardRefExoticComponent<SelectPrimitive.SelectGroupProps & React.RefAttributes<HTMLDivElement>>;
5
+ declare const SelectValue: React.ForwardRefExoticComponent<SelectPrimitive.SelectValueProps & React.RefAttributes<HTMLSpanElement>>;
6
+ declare const SelectTrigger: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectTriggerProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
7
+ declare const SelectScrollUpButton: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectScrollUpButtonProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
8
+ declare const SelectScrollDownButton: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectScrollDownButtonProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
9
+ declare const SelectContent: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
10
+ declare const SelectLabel: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectLabelProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
11
+ declare const SelectItem: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
12
+ declare const SelectSeparator: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectSeparatorProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
13
+ export { Select, SelectGroup, SelectValue, SelectTrigger, SelectContent, SelectLabel, SelectItem, SelectSeparator, SelectScrollUpButton, SelectScrollDownButton, };
14
+ //# sourceMappingURL=select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/components/select.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAK1D,QAAA,MAAM,MAAM,uCAAuB,CAAC;AAEpC,QAAA,MAAM,WAAW,yGAAwB,CAAC;AAE1C,QAAA,MAAM,WAAW,0GAAwB,CAAC;AAE1C,QAAA,MAAM,aAAa,oKAiBjB,CAAC;AAGH,QAAA,MAAM,oBAAoB,qKAcxB,CAAC;AAGH,QAAA,MAAM,sBAAsB,uKAc1B,CAAC;AAIH,QAAA,MAAM,aAAa,8JA6BjB,CAAC;AAGH,QAAA,MAAM,WAAW,4JASf,CAAC;AAGH,QAAA,MAAM,UAAU,2JAmBd,CAAC;AAGH,QAAA,MAAM,eAAe,gKASnB,CAAC;AAGH,OAAO,EACL,MAAM,EACN,WAAW,EACX,WAAW,EACX,aAAa,EACb,aAAa,EACb,WAAW,EACX,UAAU,EACV,eAAe,EACf,oBAAoB,EACpB,sBAAsB,GACvB,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import * as SelectPrimitive from '@radix-ui/react-select';
4
+ import { Check, ChevronDown, ChevronUp } from 'lucide-react';
5
+ import { cn } from '../lib/utils';
6
+ const Select = SelectPrimitive.Root;
7
+ const SelectGroup = SelectPrimitive.Group;
8
+ const SelectValue = SelectPrimitive.Value;
9
+ const SelectTrigger = React.forwardRef(({ className, children, ...props }, ref) => (_jsxs(SelectPrimitive.Trigger, { ref: ref, className: cn('flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1', className), ...props, children: [children, _jsx(SelectPrimitive.Icon, { asChild: true, children: _jsx(ChevronDown, { className: "h-4 w-4 opacity-50" }) })] })));
10
+ SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
11
+ const SelectScrollUpButton = React.forwardRef(({ className, ...props }, ref) => (_jsx(SelectPrimitive.ScrollUpButton, { ref: ref, className: cn('flex cursor-default items-center justify-center py-1', className), ...props, children: _jsx(ChevronUp, { className: "h-4 w-4" }) })));
12
+ SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
13
+ const SelectScrollDownButton = React.forwardRef(({ className, ...props }, ref) => (_jsx(SelectPrimitive.ScrollDownButton, { ref: ref, className: cn('flex cursor-default items-center justify-center py-1', className), ...props, children: _jsx(ChevronDown, { className: "h-4 w-4" }) })));
14
+ SelectScrollDownButton.displayName =
15
+ SelectPrimitive.ScrollDownButton.displayName;
16
+ const SelectContent = React.forwardRef(({ className, children, position = 'popper', ...props }, ref) => (_jsx(SelectPrimitive.Portal, { children: _jsxs(SelectPrimitive.Content, { ref: ref, className: cn('relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2', position === 'popper' &&
17
+ 'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1', className), position: position, ...props, children: [_jsx(SelectScrollUpButton, {}), _jsx(SelectPrimitive.Viewport, { className: cn('p-1', position === 'popper' &&
18
+ 'h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]'), children: children }), _jsx(SelectScrollDownButton, {})] }) })));
19
+ SelectContent.displayName = SelectPrimitive.Content.displayName;
20
+ const SelectLabel = React.forwardRef(({ className, ...props }, ref) => (_jsx(SelectPrimitive.Label, { ref: ref, className: cn('px-2 py-1.5 text-sm font-semibold', className), ...props })));
21
+ SelectLabel.displayName = SelectPrimitive.Label.displayName;
22
+ const SelectItem = React.forwardRef(({ className, children, ...props }, ref) => (_jsxs(SelectPrimitive.Item, { ref: ref, className: cn('relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50', className), ...props, children: [_jsx("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: _jsx(SelectPrimitive.ItemIndicator, { children: _jsx(Check, { className: "h-4 w-4" }) }) }), _jsx(SelectPrimitive.ItemText, { children: children })] })));
23
+ SelectItem.displayName = SelectPrimitive.Item.displayName;
24
+ const SelectSeparator = React.forwardRef(({ className, ...props }, ref) => (_jsx(SelectPrimitive.Separator, { ref: ref, className: cn('-mx-1 my-1 h-px bg-muted', className), ...props })));
25
+ SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
26
+ export { Select, SelectGroup, SelectValue, SelectTrigger, SelectContent, SelectLabel, SelectItem, SelectSeparator, SelectScrollUpButton, SelectScrollDownButton, };
@@ -0,0 +1,10 @@
1
+ import * as React from 'react';
2
+ export type Props = {
3
+ n?: number;
4
+ staggeringDelay?: number;
5
+ rowHeight?: number | string;
6
+ className?: string;
7
+ };
8
+ declare const SkeletonPane: React.FC<Props>;
9
+ export { SkeletonPane };
10
+ //# sourceMappingURL=skeleton-pane.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skeleton-pane.d.ts","sourceRoot":"","sources":["../../src/components/skeleton-pane.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,MAAM,KAAK,GAAG;IAClB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA+BjC,CAAC;AAEF,OAAO,EAAC,YAAY,EAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { cn } from '../lib/utils';
4
+ import { Skeleton } from './skeleton';
5
+ const SkeletonPane = ({ n = 3, staggeringDelay = 200, rowHeight = '20px', className, }) => {
6
+ const [count, setCount] = React.useState(0);
7
+ React.useEffect(() => {
8
+ if (count >= n)
9
+ return;
10
+ const timer = setTimeout(() => {
11
+ setCount(count + 1);
12
+ }, staggeringDelay);
13
+ return () => clearTimeout(timer);
14
+ }, [count, n, staggeringDelay]);
15
+ return (_jsx("div", { className: cn('flex w-full flex-col justify-center', className), children: _jsx("div", { className: "flex flex-col gap-2", children: Array.from({ length: n }).map((_, i) => i < count ? (_jsx(Skeleton, { className: "w-full", style: { height: rowHeight } }, i)) : (_jsx("div", { style: { height: rowHeight } }, i))) }) }));
16
+ };
17
+ export { SkeletonPane };
@@ -0,0 +1,3 @@
1
+ declare function Skeleton({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
2
+ export { Skeleton };
3
+ //# sourceMappingURL=skeleton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skeleton.d.ts","sourceRoot":"","sources":["../../src/components/skeleton.tsx"],"names":[],"mappings":"AAEA,iBAAS,QAAQ,CAAC,EAAC,SAAS,EAAE,GAAG,KAAK,EAAC,EAAE,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,2CAO5E;AAED,OAAO,EAAC,QAAQ,EAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cn } from '../lib/utils';
3
+ function Skeleton({ className, ...props }) {
4
+ return (_jsx("div", { className: cn('animate-pulse rounded-md bg-primary/10', className), ...props }));
5
+ }
6
+ export { Skeleton };
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ export type SpinnerPaneProps = {
3
+ h?: number | string;
4
+ delayed?: boolean;
5
+ className?: string;
6
+ children?: React.ReactNode;
7
+ };
8
+ declare const SpinnerPane: React.FC<SpinnerPaneProps>;
9
+ export { SpinnerPane };
10
+ //# sourceMappingURL=spinner-pane.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner-pane.d.ts","sourceRoot":"","sources":["../../src/components/spinner-pane.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,MAAM,gBAAgB,GAAG;IAC7B,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAIF,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA4B3C,CAAC;AAEF,OAAO,EAAC,WAAW,EAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ import { cn } from '../lib/utils';
4
+ import { Spinner } from './spinner';
5
+ const DELAY = 500;
6
+ const SpinnerPane = (props) => {
7
+ const { h, delayed, children, className, ...rest } = props;
8
+ const [isPlaying, setPlaying] = React.useState(!delayed);
9
+ React.useEffect(() => {
10
+ if (!isPlaying && delayed) {
11
+ const timer = setTimeout(() => setPlaying(true), DELAY);
12
+ return () => clearTimeout(timer);
13
+ }
14
+ }, [isPlaying, delayed]);
15
+ return (_jsx("div", { className: cn('mx-auto flex min-h-[inherit] items-center justify-center', className), style: { minHeight: h }, ...rest, children: isPlaying ? (_jsxs("div", { className: "flex flex-col items-center gap-2", children: [children, _jsx(Spinner, { className: "text-muted-foreground" })] })) : null }));
16
+ };
17
+ export { SpinnerPane };
@@ -0,0 +1,8 @@
1
+ import { FC } from 'react';
2
+ /**
3
+ * Loading spinner component
4
+ */
5
+ export declare const Spinner: FC<{
6
+ className?: string;
7
+ }>;
8
+ //# sourceMappingURL=spinner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../src/components/spinner.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,EAAE,EAAC,MAAM,OAAO,CAAC;AAKzB;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,EAAE,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAC,CAO5C,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { LoaderCircleIcon } from 'lucide-react';
3
+ import { cn } from '../lib/utils';
4
+ /**
5
+ * Loading spinner component
6
+ */
7
+ export const Spinner = ({ className }) => {
8
+ return (_jsx(LoaderCircleIcon, { className: cn('animate-spin text-brand-primary', className), size: 17 }));
9
+ };
@@ -0,0 +1,5 @@
1
+ import * as React from 'react';
2
+ import * as SwitchPrimitives from '@radix-ui/react-switch';
3
+ declare const Switch: React.ForwardRefExoticComponent<Omit<SwitchPrimitives.SwitchProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
4
+ export { Switch };
5
+ //# sourceMappingURL=switch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch.d.ts","sourceRoot":"","sources":["../../src/components/switch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,gBAAgB,MAAM,wBAAwB,CAAC;AAI3D,QAAA,MAAM,MAAM,8JAkBV,CAAC;AAGH,OAAO,EAAC,MAAM,EAAC,CAAC"}