@lctafrica/ui 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ui/Label/Label.d.ts +4 -0
- package/dist/components/ui/ModalFooter.d.ts +7 -0
- package/dist/components/ui/autosuggest-input/AutoSuggestInput.d.ts +10 -0
- package/dist/components/ui/autosuggest-input/AutoSuggestInput.stories.d.ts +25 -0
- package/dist/components/ui/badge/Badge.d.ts +19 -0
- package/dist/components/ui/badge/Badge.stories.d.ts +10 -0
- package/dist/components/ui/badge/Badge.test.d.ts +1 -0
- package/dist/components/ui/button/Button.d.ts +11 -0
- package/dist/components/ui/button/Button.stories.d.ts +18 -0
- package/dist/components/ui/button/Button.test.d.ts +1 -0
- package/dist/components/ui/button-group/ButtonGroup.d.ts +24 -0
- package/dist/components/ui/button-group/ButtonGroup.stories.d.ts +10 -0
- package/dist/components/ui/button-group/ButtonGroup.test.d.ts +1 -0
- package/dist/components/ui/calendar.d.ts +10 -0
- package/dist/components/ui/checkbox/Checkbox.d.ts +15 -0
- package/dist/components/ui/checkbox/Checkbox.stories.d.ts +333 -0
- package/dist/components/ui/checkbox/Checkbox.test.d.ts +1 -0
- package/dist/components/ui/confirm-modal/ConfirmModal.d.ts +4 -0
- package/dist/components/ui/confirm-modal/ConfirmModal.stories.d.ts +25 -0
- package/dist/components/ui/data-state-renderer/DataStateRendere.stories.d.ts +102 -0
- package/dist/components/ui/data-state-renderer/DataStateRenderer.d.ts +19 -0
- package/dist/components/ui/date-picker/DatePicker.d.ts +7 -0
- package/dist/components/ui/date-picker/DatePicker.stories.d.ts +30 -0
- package/dist/components/ui/dialog.d.ts +17 -0
- package/dist/components/ui/field/Field.d.ts +24 -0
- package/dist/components/ui/field/Field.stories.d.ts +10 -0
- package/dist/components/ui/field/Filed.test.d.ts +1 -0
- package/dist/components/ui/input/Input.d.ts +6 -0
- package/dist/components/ui/input/Input.stories.d.ts +13 -0
- package/dist/components/ui/input/Input.test.d.ts +1 -0
- package/dist/components/ui/input-group.d.ts +16 -0
- package/dist/components/ui/loading-indicator/LoadingIndicator.d.ts +6 -0
- package/dist/components/ui/loading-indicator/LoadingIndicator.stories.d.ts +6 -0
- package/dist/components/ui/loading-indicator/loading-animation/LoadingAnimation.d.ts +16 -0
- package/dist/components/ui/main-wrapper/MainWrapper.d.ts +2 -0
- package/dist/components/ui/main-wrapper/MainWrapper.stories.d.ts +19 -0
- package/dist/components/ui/modal/Modal.d.ts +11 -0
- package/dist/components/ui/modal/Modal.stories.d.ts +29 -0
- package/dist/components/ui/pagination/Pagination.d.ts +10 -0
- package/dist/components/ui/pagination/Pagination.stories.d.ts +43 -0
- package/dist/components/ui/popover.d.ts +10 -0
- package/dist/components/ui/prompt-modal/PromptModal.d.ts +8 -0
- package/dist/components/ui/prompt-modal/PromptModal.stories.d.ts +29 -0
- package/dist/components/ui/radio-group/RadioGroup.d.ts +7 -0
- package/dist/components/ui/radio-group/RadioGroup.stories.d.ts +13 -0
- package/dist/components/ui/radio-group/RadioGroup.test.d.ts +1 -0
- package/dist/components/ui/search-input/SearchInput.d.ts +9 -0
- package/dist/components/ui/search-input/SearchInput.stories.d.ts +6 -0
- package/dist/components/ui/searchable-select/SearchableSelect.d.ts +16 -0
- package/dist/components/ui/searchable-select/SearchableSelect.stories.d.ts +25 -0
- package/dist/components/ui/select/Select.d.ts +17 -0
- package/dist/components/ui/select/Select.stories.d.ts +6 -0
- package/dist/components/ui/select/select-components.d.ts +18 -0
- package/dist/components/ui/separator/separator.d.ts +4 -0
- package/dist/components/ui/state-indicator/StateIndicator.d.ts +22 -0
- package/dist/components/ui/state-indicator/StateIndicator.stories.d.ts +33 -0
- package/dist/components/ui/success-modal/SuccessAnimation.d.ts +1 -0
- package/dist/components/ui/success-modal/SuccessModal.d.ts +12 -0
- package/dist/components/ui/success-modal/SuccessModal.stories.d.ts +37 -0
- package/dist/components/ui/success-modal/SuccessTickIcon.d.ts +6 -0
- package/dist/components/ui/switch/Switch.d.ts +6 -0
- package/dist/components/ui/switch/Switch.stories.d.ts +37 -0
- package/dist/components/ui/table/Table.d.ts +13 -0
- package/dist/components/ui/table/Table.stories.d.ts +37 -0
- package/dist/components/ui/text/Text.d.ts +11 -0
- package/dist/components/ui/text/Text.stories.d.ts +9 -0
- package/dist/components/ui/text/Text.test.d.ts +1 -0
- package/dist/components/ui/textarea/Textarea.d.ts +3 -0
- package/dist/components/ui/textarea/Textarea.stories.d.ts +29 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.js +25746 -0
- package/dist/lct-logo.svg +3 -0
- package/dist/lib/utils.d.ts +2 -0
- package/package.json +4 -2
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { default as DataStateRenderer } from './DataStateRenderer';
|
|
3
|
+
/**
|
|
4
|
+
* DataStateRenderer is a utility component that conditionally renders UI
|
|
5
|
+
* based on common data-fetching states:
|
|
6
|
+
*
|
|
7
|
+
* - Loading → displays a loading indicator
|
|
8
|
+
* - Error → displays an error state
|
|
9
|
+
* - Empty → displays an empty state
|
|
10
|
+
* - Success → renders children
|
|
11
|
+
*
|
|
12
|
+
* This helps standardize how async states are handled across the application.
|
|
13
|
+
*
|
|
14
|
+
* ---
|
|
15
|
+
*
|
|
16
|
+
* State Priority
|
|
17
|
+
*
|
|
18
|
+
* When multiple states are true, the following priority is applied:
|
|
19
|
+
*
|
|
20
|
+
* 1. `isLoading`
|
|
21
|
+
* 2. `hasError`
|
|
22
|
+
* 3. `isEmpty`
|
|
23
|
+
* 4. `children` (default/content)
|
|
24
|
+
*
|
|
25
|
+
* Example:
|
|
26
|
+
* If `isLoading` and `hasError` are both true → loading state is shown.
|
|
27
|
+
*
|
|
28
|
+
* ---
|
|
29
|
+
*
|
|
30
|
+
* Customization
|
|
31
|
+
*
|
|
32
|
+
* Each state can be customized via props:
|
|
33
|
+
*
|
|
34
|
+
* - `loadingState` → controls loading container styling
|
|
35
|
+
* - `errorState` → controls error title, description, and styling
|
|
36
|
+
* - `emptyState` → controls empty state title, description, and styling
|
|
37
|
+
*
|
|
38
|
+
* ---
|
|
39
|
+
*
|
|
40
|
+
* Usage
|
|
41
|
+
*
|
|
42
|
+
* ```tsx
|
|
43
|
+
* <DataStateRenderer
|
|
44
|
+
* isLoading={isLoading}
|
|
45
|
+
* hasError={error}
|
|
46
|
+
* isEmpty={!data.length}
|
|
47
|
+
* errorState={{
|
|
48
|
+
* title: "Failed to load data",
|
|
49
|
+
* description: "Please try again later",
|
|
50
|
+
* }}
|
|
51
|
+
* >
|
|
52
|
+
* <DataList data={data} />
|
|
53
|
+
* </DataStateRenderer>
|
|
54
|
+
* ```
|
|
55
|
+
*
|
|
56
|
+
* ---
|
|
57
|
+
*
|
|
58
|
+
* Notes
|
|
59
|
+
*
|
|
60
|
+
* - Designed to reduce repetitive conditional rendering in components
|
|
61
|
+
* - Encourages consistent UX for async states
|
|
62
|
+
* - Works well with data-fetching libraries (e.g. React Query, SWR)
|
|
63
|
+
*/
|
|
64
|
+
declare const meta: Meta<typeof DataStateRenderer>;
|
|
65
|
+
export default meta;
|
|
66
|
+
type Story = StoryObj<typeof DataStateRenderer>;
|
|
67
|
+
/**
|
|
68
|
+
* Default (data available)
|
|
69
|
+
*/
|
|
70
|
+
export declare const Default: Story;
|
|
71
|
+
/**
|
|
72
|
+
* Loading state
|
|
73
|
+
*/
|
|
74
|
+
export declare const Loading: Story;
|
|
75
|
+
/**
|
|
76
|
+
* Error state
|
|
77
|
+
*/
|
|
78
|
+
export declare const Error: Story;
|
|
79
|
+
/**
|
|
80
|
+
* Empty state
|
|
81
|
+
*/
|
|
82
|
+
export declare const Empty: Story;
|
|
83
|
+
/**
|
|
84
|
+
* Priority: Loading overrides everything
|
|
85
|
+
*/
|
|
86
|
+
export declare const LoadingTakesPriority: Story;
|
|
87
|
+
/**
|
|
88
|
+
* Error overrides empty
|
|
89
|
+
*/
|
|
90
|
+
export declare const ErrorOverridesEmpty: Story;
|
|
91
|
+
/**
|
|
92
|
+
* Custom empty state with action
|
|
93
|
+
*/
|
|
94
|
+
export declare const EmptyWithAction: Story;
|
|
95
|
+
/**
|
|
96
|
+
* Custom error styling
|
|
97
|
+
*/
|
|
98
|
+
export declare const CustomErrorStyling: Story;
|
|
99
|
+
/**
|
|
100
|
+
* With real content
|
|
101
|
+
*/
|
|
102
|
+
export declare const WithContent: Story;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { ActionButton } from '../state-indicator/StateIndicator';
|
|
3
|
+
type StateProps = {
|
|
4
|
+
className?: string;
|
|
5
|
+
title?: string;
|
|
6
|
+
description?: string;
|
|
7
|
+
actionButton?: ActionButton;
|
|
8
|
+
};
|
|
9
|
+
type DataStateRendererProps = {
|
|
10
|
+
children?: ReactNode;
|
|
11
|
+
isLoading?: boolean;
|
|
12
|
+
isEmpty?: boolean;
|
|
13
|
+
hasError?: boolean;
|
|
14
|
+
loadingState?: Omit<StateProps, "title" | "description" | "actionButton">;
|
|
15
|
+
emptyState?: StateProps;
|
|
16
|
+
errorState?: StateProps;
|
|
17
|
+
};
|
|
18
|
+
export default function DataStateRenderer({ isLoading, isEmpty, children, emptyState, errorState, hasError, loadingState, }: DataStateRendererProps): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
type DatePickerProps = {
|
|
2
|
+
value?: Date | undefined;
|
|
3
|
+
onChange?(date: Date | undefined): void;
|
|
4
|
+
placeholder?: string;
|
|
5
|
+
};
|
|
6
|
+
export declare function DatePicker({ value, onChange, placeholder, }: DatePickerProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { DatePicker } from './DatePicker';
|
|
3
|
+
declare const meta: Meta<typeof DatePicker>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof DatePicker>;
|
|
6
|
+
/**
|
|
7
|
+
* Empty state (placeholder visible)
|
|
8
|
+
*/
|
|
9
|
+
export declare const Default: Story;
|
|
10
|
+
/**
|
|
11
|
+
* Pre-selected date (tests formatting + value state styling)
|
|
12
|
+
*/
|
|
13
|
+
export declare const WithValue: Story;
|
|
14
|
+
/**
|
|
15
|
+
* External reset control
|
|
16
|
+
*/
|
|
17
|
+
export declare const WithExternalReset: Story;
|
|
18
|
+
/**
|
|
19
|
+
* Disabled state (ensures popover + input are not interactive)
|
|
20
|
+
*/
|
|
21
|
+
export declare const Disabled: Story;
|
|
22
|
+
/**
|
|
23
|
+
* Accessibility / keyboard focus test
|
|
24
|
+
* (useful for Tab navigation + focus ring checks)
|
|
25
|
+
*/
|
|
26
|
+
export declare const FocusTest: Story;
|
|
27
|
+
/**
|
|
28
|
+
* Edge case: long formatted content / layout stress test
|
|
29
|
+
*/
|
|
30
|
+
export declare const LongDateFormat: Story;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Dialog as DialogPrimitive } from 'radix-ui';
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
declare function Dialog({ ...props }: React.ComponentProps<typeof DialogPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
declare function DialogTrigger({ ...props }: React.ComponentProps<typeof DialogPrimitive.Trigger>): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
declare function DialogPortal({ ...props }: React.ComponentProps<typeof DialogPrimitive.Portal>): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
declare function DialogClose({ ...props }: React.ComponentProps<typeof DialogPrimitive.Close>): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
declare function DialogOverlay({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Overlay>): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
declare function DialogContent({ className, children, showCloseButton, ...props }: React.ComponentProps<typeof DialogPrimitive.Content> & {
|
|
9
|
+
showCloseButton?: boolean;
|
|
10
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
declare function DialogHeader({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
declare function DialogFooter({ className, showCloseButton, children, ...props }: React.ComponentProps<"div"> & {
|
|
13
|
+
showCloseButton?: boolean;
|
|
14
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
declare function DialogTitle({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Title>): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
declare function DialogDescription({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Description>): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { VariantProps } from 'class-variance-authority';
|
|
2
|
+
import { Label } from '../Label/Label';
|
|
3
|
+
declare function FieldSet({ className, ...props }: React.ComponentProps<"fieldset">): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
declare function FieldLegend({ className, variant, ...props }: React.ComponentProps<"legend"> & {
|
|
5
|
+
variant?: "legend" | "label";
|
|
6
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
declare function FieldGroup({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
declare const fieldVariants: (props?: ({
|
|
9
|
+
orientation?: "horizontal" | "vertical" | "responsive" | null | undefined;
|
|
10
|
+
} & import('class-variance-authority/types').ClassProp) | undefined) => string;
|
|
11
|
+
declare function Field({ className, orientation, ...props }: React.ComponentProps<"div"> & VariantProps<typeof fieldVariants>): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
declare function FieldContent({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
declare function FieldLabel({ className, ...props }: React.ComponentProps<typeof Label>): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
declare function FieldTitle({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
declare function FieldDescription({ className, ...props }: React.ComponentProps<"p">): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
declare function FieldSeparator({ children, className, ...props }: React.ComponentProps<"div"> & {
|
|
17
|
+
children?: React.ReactNode;
|
|
18
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
declare function FieldError({ className, children, errors, ...props }: React.ComponentProps<"div"> & {
|
|
20
|
+
errors?: Array<{
|
|
21
|
+
message?: string;
|
|
22
|
+
} | undefined>;
|
|
23
|
+
}): import("react/jsx-runtime").JSX.Element | null;
|
|
24
|
+
export { Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
declare const meta: Meta;
|
|
3
|
+
export default meta;
|
|
4
|
+
type Story = StoryObj;
|
|
5
|
+
export declare const Default: Story;
|
|
6
|
+
export declare const Horizontal: Story;
|
|
7
|
+
export declare const WithError: Story;
|
|
8
|
+
export declare const MultipleErrors: Story;
|
|
9
|
+
export declare const WithSeparator: Story;
|
|
10
|
+
export declare const CompleteFormExample: Story;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { VariantProps } from 'class-variance-authority';
|
|
2
|
+
import { ComponentProps } from 'react';
|
|
3
|
+
export declare const inputVariants: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
|
|
4
|
+
type InputProps = ComponentProps<"input"> & VariantProps<typeof inputVariants>;
|
|
5
|
+
export declare function Input({ className, type, ...props }: InputProps): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { Input } from '../input/Input';
|
|
3
|
+
declare const meta: Meta<typeof Input>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof Input>;
|
|
6
|
+
export declare const Default: Story;
|
|
7
|
+
export declare const WithValue: Story;
|
|
8
|
+
export declare const Disabled: Story;
|
|
9
|
+
export declare const Error: Story;
|
|
10
|
+
export declare const Password: Story;
|
|
11
|
+
export declare const Email: Story;
|
|
12
|
+
export declare const Number: Story;
|
|
13
|
+
export declare const CustomWidth: Story;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { VariantProps } from 'class-variance-authority';
|
|
2
|
+
import { Button } from './button/Button';
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
declare function InputGroup({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
declare const inputGroupAddonVariants: (props?: ({
|
|
6
|
+
align?: "inline-start" | "inline-end" | "block-start" | "block-end" | null | undefined;
|
|
7
|
+
} & import('class-variance-authority/types').ClassProp) | undefined) => string;
|
|
8
|
+
declare function InputGroupAddon({ className, align, ...props }: React.ComponentProps<"div"> & VariantProps<typeof inputGroupAddonVariants>): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
declare const inputGroupButtonVariants: (props?: ({
|
|
10
|
+
size?: "sm" | "icon-sm" | "xs" | "icon-xs" | null | undefined;
|
|
11
|
+
} & import('class-variance-authority/types').ClassProp) | undefined) => string;
|
|
12
|
+
declare function InputGroupButton({ className, type, variant, size, ...props }: Omit<React.ComponentProps<typeof Button>, "size"> & VariantProps<typeof inputGroupButtonVariants>): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
declare function InputGroupText({ className, ...props }: React.ComponentProps<"span">): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
declare function InputGroupInput({ className, ...props }: React.ComponentProps<"input">): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
declare function InputGroupTextarea({ className, ...props }: React.ComponentProps<"textarea">): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, };
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { default as LoadingIndicator } from './LoadingIndicator';
|
|
3
|
+
declare const meta: Meta<typeof LoadingIndicator>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof LoadingIndicator>;
|
|
6
|
+
export declare const Default: Story;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { JSX } from 'react';
|
|
2
|
+
type Props = {
|
|
3
|
+
/**
|
|
4
|
+
* The size (width and height) of the loading animation in pixels.
|
|
5
|
+
* @default 200
|
|
6
|
+
*/
|
|
7
|
+
size?: number;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* LoadingAnimation is a functional component that renders a rotating SVG loading animation.
|
|
11
|
+
*
|
|
12
|
+
* @param {number} props.size - The size (width and height) of the loading animation in pixels.
|
|
13
|
+
* @returns {JSX.Element} A rotating loading animation SVG.
|
|
14
|
+
*/
|
|
15
|
+
export default function LoadingAnimation({ size }: Props): JSX.Element;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { default as MainWrapper } from './MainWrapper';
|
|
3
|
+
/**
|
|
4
|
+
* MainWrapper is a layout container used to wrap page content.
|
|
5
|
+
* It provides consistent padding, border, shadow, and layout structure.
|
|
6
|
+
*
|
|
7
|
+
* Typically used as the main content area inside a page.
|
|
8
|
+
*/
|
|
9
|
+
declare const meta: Meta<typeof MainWrapper>;
|
|
10
|
+
export default meta;
|
|
11
|
+
type Story = StoryObj<typeof MainWrapper>;
|
|
12
|
+
/**
|
|
13
|
+
* Default layout wrapper
|
|
14
|
+
*/
|
|
15
|
+
export declare const Default: Story;
|
|
16
|
+
/**
|
|
17
|
+
* With custom content
|
|
18
|
+
*/
|
|
19
|
+
export declare const WithContent: Story;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export type ModalProps = {
|
|
3
|
+
isOpen?: boolean;
|
|
4
|
+
onClose?(open: boolean): void;
|
|
5
|
+
title?: string;
|
|
6
|
+
description?: string;
|
|
7
|
+
children?: ReactNode;
|
|
8
|
+
className?: string;
|
|
9
|
+
shouldShowCloseButton?: boolean;
|
|
10
|
+
};
|
|
11
|
+
export declare function Modal({ isOpen, onClose, description, title, children, className, shouldShowCloseButton, }: ModalProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { Modal } from './Modal';
|
|
3
|
+
declare const meta: Meta<typeof Modal>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof Modal>;
|
|
6
|
+
/**
|
|
7
|
+
* Default modal with title + description
|
|
8
|
+
*/
|
|
9
|
+
export declare const Default: Story;
|
|
10
|
+
/**
|
|
11
|
+
* Modal with only title
|
|
12
|
+
*/
|
|
13
|
+
export declare const WithTitleOnly: Story;
|
|
14
|
+
/**
|
|
15
|
+
* Modal with only description (no title)
|
|
16
|
+
*/
|
|
17
|
+
export declare const WithDescriptionOnly: Story;
|
|
18
|
+
/**
|
|
19
|
+
* Modal without header
|
|
20
|
+
*/
|
|
21
|
+
export declare const NoHeader: Story;
|
|
22
|
+
/**
|
|
23
|
+
* Long content / scrollable modal
|
|
24
|
+
*/
|
|
25
|
+
export declare const LongContent: Story;
|
|
26
|
+
/**
|
|
27
|
+
* Custom width via className
|
|
28
|
+
*/
|
|
29
|
+
export declare const CustomWidth: Story;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type PaginationProps = {
|
|
2
|
+
totalElements: number;
|
|
3
|
+
totalPages: number;
|
|
4
|
+
pageNumber: number;
|
|
5
|
+
onPageNumberClick: (page: number) => void;
|
|
6
|
+
onSizeChange: (size: number) => void;
|
|
7
|
+
pageSize: number;
|
|
8
|
+
className?: string;
|
|
9
|
+
};
|
|
10
|
+
export default function Pagination({ totalElements, totalPages, pageNumber, onPageNumberClick, onSizeChange, pageSize, className, }: PaginationProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { default as Pagination } from './Pagination';
|
|
3
|
+
/**
|
|
4
|
+
* Pagination component for navigating paginated data.
|
|
5
|
+
*
|
|
6
|
+
* Features:
|
|
7
|
+
* - Page navigation with ellipsis
|
|
8
|
+
* - Page size selection via Select component
|
|
9
|
+
* - Previous / Next controls
|
|
10
|
+
*
|
|
11
|
+
* Controlled component: parent manages page and page size state.
|
|
12
|
+
*/
|
|
13
|
+
declare const meta: Meta<typeof Pagination>;
|
|
14
|
+
export default meta;
|
|
15
|
+
type Story = StoryObj<typeof Pagination>;
|
|
16
|
+
/**
|
|
17
|
+
* Default
|
|
18
|
+
*/
|
|
19
|
+
export declare const Default: Story;
|
|
20
|
+
/**
|
|
21
|
+
* Few pages (no ellipsis)
|
|
22
|
+
*/
|
|
23
|
+
export declare const FewPages: Story;
|
|
24
|
+
/**
|
|
25
|
+
* Many pages (ellipsis behavior)
|
|
26
|
+
*/
|
|
27
|
+
export declare const ManyPages: Story;
|
|
28
|
+
/**
|
|
29
|
+
* At first page
|
|
30
|
+
*/
|
|
31
|
+
export declare const AtStart: Story;
|
|
32
|
+
/**
|
|
33
|
+
* At last page
|
|
34
|
+
*/
|
|
35
|
+
export declare const AtEnd: Story;
|
|
36
|
+
/**
|
|
37
|
+
* Custom styling
|
|
38
|
+
*/
|
|
39
|
+
export declare const CustomStyling: Story;
|
|
40
|
+
/**
|
|
41
|
+
* Large dataset simulation
|
|
42
|
+
*/
|
|
43
|
+
export declare const LargeDataset: Story;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Popover as PopoverPrimitive } from 'radix-ui';
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
declare function Popover({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
declare function PopoverTrigger({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Trigger>): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
declare function PopoverContent({ className, align, sideOffset, ...props }: React.ComponentProps<typeof PopoverPrimitive.Content>): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
declare function PopoverAnchor({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Anchor>): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
declare function PopoverHeader({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
declare function PopoverTitle({ className, ...props }: React.ComponentProps<"h2">): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
declare function PopoverDescription({ className, ...props }: React.ComponentProps<"p">): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export { Popover, PopoverAnchor, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ModalProps } from '../modal/Modal';
|
|
2
|
+
import { ModalFooter } from '../ModalFooter';
|
|
3
|
+
export type PromptModalProps = Omit<ModalProps, "children"> & Omit<ModalFooter, "onConfirm"> & {
|
|
4
|
+
promptLabel?: string;
|
|
5
|
+
promptPlaceHolder?: string;
|
|
6
|
+
onConfirm(promptInput: string): void;
|
|
7
|
+
};
|
|
8
|
+
export default function PromptModal({ onCancel, onConfirm, confirmButtonLabel, cancelButtonLabel, promptLabel, promptPlaceHolder, ...rest }: PromptModalProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { default as PromptModal } from './PromptModal';
|
|
3
|
+
declare const meta: Meta<typeof PromptModal>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof PromptModal>;
|
|
6
|
+
/**
|
|
7
|
+
* Default prompt modal
|
|
8
|
+
*/
|
|
9
|
+
export declare const Default: Story;
|
|
10
|
+
/**
|
|
11
|
+
* Custom labels and placeholder
|
|
12
|
+
*/
|
|
13
|
+
export declare const CustomLabels: Story;
|
|
14
|
+
/**
|
|
15
|
+
* Without field label
|
|
16
|
+
*/
|
|
17
|
+
export declare const NoLabel: Story;
|
|
18
|
+
/**
|
|
19
|
+
* Long input scenario
|
|
20
|
+
*/
|
|
21
|
+
export declare const LongInput: Story;
|
|
22
|
+
/**
|
|
23
|
+
* Minimal modal (no title/description)
|
|
24
|
+
*/
|
|
25
|
+
export declare const Minimal: Story;
|
|
26
|
+
/**
|
|
27
|
+
* Destructive / confirmation-style input
|
|
28
|
+
*/
|
|
29
|
+
export declare const DestructiveAction: Story;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { RadioGroup as RadioGroupPrimitive } from 'radix-ui';
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
declare function RadioGroup({ className, ...props }: React.ComponentProps<typeof RadioGroupPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
declare function RadioGroupItem({ className, size, ...props }: React.ComponentProps<typeof RadioGroupPrimitive.Item> & {
|
|
5
|
+
size?: "sm" | "md";
|
|
6
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export { RadioGroup, RadioGroupItem };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { RadioGroup } from './RadioGroup';
|
|
3
|
+
type RadioGroupStoryProps = React.ComponentProps<typeof RadioGroup> & {
|
|
4
|
+
size?: "sm" | "md";
|
|
5
|
+
};
|
|
6
|
+
declare const meta: Meta<RadioGroupStoryProps>;
|
|
7
|
+
export default meta;
|
|
8
|
+
type Story = StoryObj<typeof meta>;
|
|
9
|
+
export declare const Default: Story;
|
|
10
|
+
export declare const Small: Story;
|
|
11
|
+
export declare const WithDisabledOption: Story;
|
|
12
|
+
export declare const DisabledAll: Story;
|
|
13
|
+
export declare const ChoiceCard: Story;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
type SearchInputProps = {
|
|
2
|
+
containerClassName?: string;
|
|
3
|
+
inputClassName?: string;
|
|
4
|
+
placeholder?: string;
|
|
5
|
+
value?: string;
|
|
6
|
+
onChange?(value: string): void;
|
|
7
|
+
};
|
|
8
|
+
export declare function SearchInput({ containerClassName, placeholder, value, onChange, inputClassName, }: SearchInputProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
type SearchableSelectOption = {
|
|
2
|
+
label: string;
|
|
3
|
+
value: string;
|
|
4
|
+
};
|
|
5
|
+
type SearchableSelectProps = {
|
|
6
|
+
options?: SearchableSelectOption[];
|
|
7
|
+
value?: string | null;
|
|
8
|
+
placeholder?: string;
|
|
9
|
+
onChange?(value: string | null): void;
|
|
10
|
+
disabled?: boolean;
|
|
11
|
+
name?: string;
|
|
12
|
+
query?: string;
|
|
13
|
+
onQueryChange?(value: string): void;
|
|
14
|
+
};
|
|
15
|
+
export declare function SearchableSelect({ options, placeholder, value, disabled, name, onChange, onQueryChange, query, }: SearchableSelectProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { SearchableSelect } from './SearchableSelect';
|
|
3
|
+
declare const meta: Meta<typeof SearchableSelect>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof SearchableSelect>;
|
|
6
|
+
/**
|
|
7
|
+
* Base controlled example
|
|
8
|
+
*/
|
|
9
|
+
export declare const Default: Story;
|
|
10
|
+
/**
|
|
11
|
+
* Shows label rendering from value (displayValue logic)
|
|
12
|
+
*/
|
|
13
|
+
export declare const WithDefaultValue: Story;
|
|
14
|
+
/**
|
|
15
|
+
* Demonstrates filtering via query
|
|
16
|
+
*/
|
|
17
|
+
export declare const TypingAndFiltering: Story;
|
|
18
|
+
/**
|
|
19
|
+
* Shows clear button behavior (value + query reset)
|
|
20
|
+
*/
|
|
21
|
+
export declare const WithValueAndQuery: Story;
|
|
22
|
+
/**
|
|
23
|
+
* Disabled state
|
|
24
|
+
*/
|
|
25
|
+
export declare const Disabled: Story;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type SelectOption = {
|
|
2
|
+
label: string;
|
|
3
|
+
value: string;
|
|
4
|
+
};
|
|
5
|
+
export type SelectProps = {
|
|
6
|
+
value?: string;
|
|
7
|
+
options?: SelectOption[];
|
|
8
|
+
onChange?(value: string): void;
|
|
9
|
+
placeholder?: string;
|
|
10
|
+
name?: string;
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
required?: boolean;
|
|
13
|
+
className?: string;
|
|
14
|
+
showClearButton?: boolean | undefined;
|
|
15
|
+
};
|
|
16
|
+
declare function SelectComposite({ value, onChange, options, placeholder, name, disabled, required, className, showClearButton, }: SelectProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export { SelectComposite as Select };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Select as SelectPrimitive } from 'radix-ui';
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
declare function Select({ ...props }: React.ComponentProps<typeof SelectPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
declare function SelectGroup({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.Group>): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
declare function SelectValue({ ...props }: React.ComponentProps<typeof SelectPrimitive.Value>): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
declare function SelectTrigger({ className, size, children, hasValue, onClear, showClearButton, ...props }: React.ComponentProps<typeof SelectPrimitive.Trigger> & {
|
|
7
|
+
size?: "sm" | "default";
|
|
8
|
+
hasValue?: boolean;
|
|
9
|
+
onClear?(): void;
|
|
10
|
+
showClearButton?: boolean;
|
|
11
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
declare function SelectContent({ className, children, position, align, ...props }: React.ComponentProps<typeof SelectPrimitive.Content>): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
declare function SelectLabel({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.Label>): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
declare function SelectItem({ className, children, ...props }: React.ComponentProps<typeof SelectPrimitive.Item>): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
declare function SelectSeparator({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.Separator>): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
declare function SelectScrollUpButton({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
declare function SelectScrollDownButton({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, };
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Separator as SeparatorPrimitive } from 'radix-ui';
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
declare function Separator({ className, orientation, decorative, ...props }: React.ComponentProps<typeof SeparatorPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
export { Separator };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export type ActionButton = {
|
|
2
|
+
label: string;
|
|
3
|
+
onClick(): void;
|
|
4
|
+
};
|
|
5
|
+
type BaseStateIndicatorProps = {
|
|
6
|
+
title: string;
|
|
7
|
+
description: string;
|
|
8
|
+
actionButton?: ActionButton;
|
|
9
|
+
containerClassName?: string;
|
|
10
|
+
};
|
|
11
|
+
type DefaultStateIndicatorProps = {
|
|
12
|
+
variant?: "default";
|
|
13
|
+
} & BaseStateIndicatorProps;
|
|
14
|
+
type EmptyStateIndicatorProps = {
|
|
15
|
+
variant: "empty";
|
|
16
|
+
} & Partial<BaseStateIndicatorProps>;
|
|
17
|
+
type ErrorStateIndicatorProps = {
|
|
18
|
+
variant: "error";
|
|
19
|
+
} & Partial<BaseStateIndicatorProps>;
|
|
20
|
+
export type StateIndicatorProps = DefaultStateIndicatorProps | EmptyStateIndicatorProps | ErrorStateIndicatorProps;
|
|
21
|
+
export default function StateIndicator({ title, description, variant, actionButton, containerClassName, }: StateIndicatorProps): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
export {};
|