sy-ui-lib 1.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.
- package/README.md +89 -0
- package/dist/components/AdminBetSlip/AdminBetSlip.component.d.ts +32 -0
- package/dist/components/AdminBetSlip/AdminBetSlip.stories.d.ts +8 -0
- package/dist/components/AdminBetSlip/AdminBetSlip.types.d.ts +50 -0
- package/dist/components/AdminBetSlip/index.d.ts +3 -0
- package/dist/components/Avatar/Avatar.component.d.ts +18 -0
- package/dist/components/Avatar/Avatar.stories.d.ts +6 -0
- package/dist/components/Avatar/Avatar.types.d.ts +13 -0
- package/dist/components/Avatar/index.d.ts +3 -0
- package/dist/components/BannerCard/BannerCard.component.d.ts +3 -0
- package/dist/components/BannerCard/BannerCard.stories.d.ts +6 -0
- package/dist/components/BannerCard/BannerCard.types.d.ts +12 -0
- package/dist/components/BannerCard/index.d.ts +3 -0
- package/dist/components/BetSlip/BetSlip.component.d.ts +88 -0
- package/dist/components/BetSlip/BetSlip.stories.d.ts +13 -0
- package/dist/components/BetSlip/BetSlip.types.d.ts +51 -0
- package/dist/components/BetSlip/index.d.ts +3 -0
- package/dist/components/BetSlipModal/BetSlipModal.component.d.ts +24 -0
- package/dist/components/BetSlipModal/BetSlipModal.stories.d.ts +11 -0
- package/dist/components/BetSlipModal/BetSlipModal.types.d.ts +8 -0
- package/dist/components/BetSlipModal/index.d.ts +3 -0
- package/dist/components/Button/Button.component.d.ts +33 -0
- package/dist/components/Button/Button.stories.d.ts +18 -0
- package/dist/components/Button/Button.types.d.ts +29 -0
- package/dist/components/Button/index.d.ts +3 -0
- package/dist/components/Checkbox/Checkbox.component.d.ts +27 -0
- package/dist/components/Checkbox/Checkbox.stories.d.ts +12 -0
- package/dist/components/Checkbox/Checkbox.types.d.ts +16 -0
- package/dist/components/Checkbox/index.d.ts +3 -0
- package/dist/components/Chip/Chip.component.d.ts +21 -0
- package/dist/components/Chip/Chip.stories.d.ts +51 -0
- package/dist/components/Chip/Chip.types.d.ts +22 -0
- package/dist/components/Chip/index.d.ts +3 -0
- package/dist/components/Colors/Colors.component.d.ts +2 -0
- package/dist/components/Colors/Colors.stories.d.ts +6 -0
- package/dist/components/CommonMarketHeader/CommonMarketHeader.component.d.ts +3 -0
- package/dist/components/CommonMarketHeader/CommonMarketHeader.stories.d.ts +17 -0
- package/dist/components/CommonMarketHeader/CommonMarketHeader.types.d.ts +35 -0
- package/dist/components/CommonMarketHeader/index.d.ts +3 -0
- package/dist/components/CommonMarketRow/CommonMarketRow.component.d.ts +4 -0
- package/dist/components/CommonMarketRow/CommonMarketRow.stories.d.ts +9 -0
- package/dist/components/CommonMarketRow/CommonMarketRow.types.d.ts +151 -0
- package/dist/components/CommonMarketRow/CommonOddButton.component.d.ts +132 -0
- package/dist/components/CommonMarketRow/FancyOddsRow.component.d.ts +3 -0
- package/dist/components/CommonMarketRow/LayeredOddsRow.component.d.ts +3 -0
- package/dist/components/CommonMarketRow/PairOddsRow.component.d.ts +3 -0
- package/dist/components/CommonMarketRow/index.d.ts +3 -0
- package/dist/components/DatePicker/DatePicker.component.d.ts +28 -0
- package/dist/components/DatePicker/DatePicker.stories.d.ts +10 -0
- package/dist/components/DatePicker/DatePicker.types.d.ts +33 -0
- package/dist/components/DatePicker/index.d.ts +3 -0
- package/dist/components/Dropdown/Dropdown.component.d.ts +38 -0
- package/dist/components/Dropdown/Dropdown.stories.d.ts +10 -0
- package/dist/components/Dropdown/Dropdown.types.d.ts +26 -0
- package/dist/components/Dropdown/index.d.ts +3 -0
- package/dist/components/EventCard/EventCard.component.d.ts +48 -0
- package/dist/components/EventCard/EventCard.stories.d.ts +6 -0
- package/dist/components/EventCard/EventCard.types.d.ts +44 -0
- package/dist/components/EventCard/index.d.ts +3 -0
- package/dist/components/EventDisplayCard/EventDisplayCard.component.d.ts +24 -0
- package/dist/components/EventDisplayCard/EventDisplayCard.stories.d.ts +8 -0
- package/dist/components/EventDisplayCard/EventDisplayCard.types.d.ts +10 -0
- package/dist/components/EventDisplayCard/index.d.ts +3 -0
- package/dist/components/EventInfoCard/EventInfoCard.component.d.ts +38 -0
- package/dist/components/EventInfoCard/EventInfoCard.stories.d.ts +6 -0
- package/dist/components/EventInfoCard/EventInfoCard.types.d.ts +19 -0
- package/dist/components/EventInfoCard/index.d.ts +3 -0
- package/dist/components/FileUploader/FileUploader.component.d.ts +55 -0
- package/dist/components/FileUploader/FileUploader.stories.d.ts +8 -0
- package/dist/components/FileUploader/FileUploader.types.d.ts +23 -0
- package/dist/components/FileUploader/index.d.ts +3 -0
- package/dist/components/FlashNotification/FlashNotification.component.d.ts +34 -0
- package/dist/components/FlashNotification/FlashNotification.stories.d.ts +9 -0
- package/dist/components/FlashNotification/FlashNotification.types.d.ts +13 -0
- package/dist/components/FlashNotification/index.d.ts +3 -0
- package/dist/components/Icon/Icon.component.d.ts +20 -0
- package/dist/components/Icon/Icon.types.d.ts +43 -0
- package/dist/components/Icon/SvgIcons.d.ts +80 -0
- package/dist/components/Icon/index.d.ts +3 -0
- package/dist/components/ImageCard/ImageCard.component.d.ts +22 -0
- package/dist/components/ImageCard/ImageCard.stories.d.ts +9 -0
- package/dist/components/ImageCard/ImageCard.types.d.ts +8 -0
- package/dist/components/ImageCard/index.d.ts +3 -0
- package/dist/components/InputField/InputField.component.d.ts +28 -0
- package/dist/components/InputField/InputField.stories.d.ts +10 -0
- package/dist/components/InputField/InputField.types.d.ts +33 -0
- package/dist/components/InputField/index.d.ts +3 -0
- package/dist/components/Loader/Loader.component.d.ts +18 -0
- package/dist/components/Loader/Loader.stories.d.ts +14 -0
- package/dist/components/Loader/Loader.types.d.ts +8 -0
- package/dist/components/Loader/index.d.ts +3 -0
- package/dist/components/MaintenancePage/MaintenancePage.component.d.ts +37 -0
- package/dist/components/MaintenancePage/MaintenancePage.stories.d.ts +10 -0
- package/dist/components/MaintenancePage/MaintenancePage.types.d.ts +14 -0
- package/dist/components/MaintenancePage/index.d.ts +3 -0
- package/dist/components/Menu/Menu.component.d.ts +21 -0
- package/dist/components/Menu/Menu.stories.d.ts +7 -0
- package/dist/components/Menu/Menu.types.d.ts +24 -0
- package/dist/components/Menu/index.d.ts +3 -0
- package/dist/components/Modal/Modal.component.d.ts +39 -0
- package/dist/components/Modal/Modal.stories.d.ts +11 -0
- package/dist/components/Modal/Modal.types.d.ts +20 -0
- package/dist/components/Modal/index.d.ts +3 -0
- package/dist/components/MultiSelectDropdown/MultiSelectDropdown.component.d.ts +22 -0
- package/dist/components/MultiSelectDropdown/MultiSelectDropdown.stories.d.ts +10 -0
- package/dist/components/MultiSelectDropdown/MultiSelectDropdown.types.d.ts +22 -0
- package/dist/components/MultiSelectDropdown/index.d.ts +3 -0
- package/dist/components/NotFoundPage/NotFoundPage.component.d.ts +48 -0
- package/dist/components/NotFoundPage/NotFoundPage.stories.d.ts +11 -0
- package/dist/components/NotFoundPage/NotFoundPage.types.d.ts +13 -0
- package/dist/components/NotFoundPage/index.d.ts +3 -0
- package/dist/components/NotificationBanner/NotificationBanner.component.d.ts +39 -0
- package/dist/components/NotificationBanner/NotificationBanner.stories.d.ts +6 -0
- package/dist/components/NotificationBanner/NotificationBanner.types.d.ts +44 -0
- package/dist/components/NotificationBanner/index.d.ts +3 -0
- package/dist/components/NullState/NullState.component.d.ts +25 -0
- package/dist/components/NullState/NullState.stories.d.ts +14 -0
- package/dist/components/NullState/NullState.types.d.ts +22 -0
- package/dist/components/NullState/index.d.ts +3 -0
- package/dist/components/Pagination/Pagination.component.d.ts +23 -0
- package/dist/components/Pagination/Pagination.stories.d.ts +7 -0
- package/dist/components/Pagination/Pagination.types.d.ts +14 -0
- package/dist/components/Pagination/index.d.ts +3 -0
- package/dist/components/PasswordFieldGroup/PasswordFieldGroup.component.d.ts +28 -0
- package/dist/components/PasswordFieldGroup/PasswordFieldGroup.stories.d.ts +8 -0
- package/dist/components/PasswordFieldGroup/PasswordFieldGroup.types.d.ts +21 -0
- package/dist/components/PasswordFieldGroup/index.d.ts +3 -0
- package/dist/components/PhoneNumberInput/PhoneNumberInput.component.d.ts +38 -0
- package/dist/components/PhoneNumberInput/PhoneNumberInput.stories.d.ts +8 -0
- package/dist/components/PhoneNumberInput/PhoneNumberInput.types.d.ts +6 -0
- package/dist/components/PhoneNumberInput/index.d.ts +3 -0
- package/dist/components/ProgressBar/ProgressBar.component.d.ts +22 -0
- package/dist/components/ProgressBar/ProgressBar.stories.d.ts +9 -0
- package/dist/components/ProgressBar/ProgressBar.types.d.ts +12 -0
- package/dist/components/ProgressBar/index.d.ts +3 -0
- package/dist/components/RadioButton/RadioButton.component.d.ts +15 -0
- package/dist/components/RadioButton/RadioButton.stories.d.ts +8 -0
- package/dist/components/RadioButton/RadioButton.types.d.ts +31 -0
- package/dist/components/RadioButton/index.d.ts +3 -0
- package/dist/components/SearchBar/SearchBar.component.d.ts +18 -0
- package/dist/components/SearchBar/SearchBar.stories.d.ts +8 -0
- package/dist/components/SearchBar/SearchBar.types.d.ts +11 -0
- package/dist/components/SearchBar/index.d.ts +3 -0
- package/dist/components/Skeleton/Skeleton.component.d.ts +29 -0
- package/dist/components/Skeleton/Skeleton.stories.d.ts +6 -0
- package/dist/components/Skeleton/Skeleton.types.d.ts +26 -0
- package/dist/components/Skeleton/index.d.ts +3 -0
- package/dist/components/SnackBar/SnackBar.component.d.ts +47 -0
- package/dist/components/SnackBar/SnackBar.stories.d.ts +8 -0
- package/dist/components/SnackBar/SnackBar.types.d.ts +41 -0
- package/dist/components/SnackBar/SnackBarQueue.d.ts +9 -0
- package/dist/components/SnackBar/SnackbarFetcher.d.ts +34 -0
- package/dist/components/SnackBar/SnackbarProvider.d.ts +25 -0
- package/dist/components/SnackBar/index.d.ts +4 -0
- package/dist/components/StatsList/StatsList.component.d.ts +34 -0
- package/dist/components/StatsList/StatsList.stories.d.ts +11 -0
- package/dist/components/StatsList/StatsList.types.d.ts +39 -0
- package/dist/components/StatsList/index.d.ts +3 -0
- package/dist/components/StatusDisplayCard/StatusDisplayCard.component.d.ts +20 -0
- package/dist/components/StatusDisplayCard/StatusDisplayCard.stories.d.ts +30 -0
- package/dist/components/StatusDisplayCard/StatusDisplayCard.types.d.ts +17 -0
- package/dist/components/StatusDisplayCard/index.d.ts +3 -0
- package/dist/components/Svgs/LoaderSvg.d.ts +2 -0
- package/dist/components/Svgs/NotFoundSvg.d.ts +2 -0
- package/dist/components/Svgs/NullStateAdminSvg.d.ts +2 -0
- package/dist/components/Svgs/NullStateUserSvg.d.ts +2 -0
- package/dist/components/Svgs/UnderMaintenanceSvg.d.ts +2 -0
- package/dist/components/Svgs/index.d.ts +6 -0
- package/dist/components/Swiper/Swiper.component.d.ts +37 -0
- package/dist/components/Swiper/Swiper.stories.d.ts +32 -0
- package/dist/components/Swiper/Swiper.types.d.ts +46 -0
- package/dist/components/Swiper/index.d.ts +3 -0
- package/dist/components/TabList/TabList.component.d.ts +37 -0
- package/dist/components/TabList/TabList.stories.d.ts +16 -0
- package/dist/components/TabList/TabList.types.d.ts +27 -0
- package/dist/components/TabList/index.d.ts +3 -0
- package/dist/components/Table/Table.component.d.ts +47 -0
- package/dist/components/Table/Table.stories.d.ts +25 -0
- package/dist/components/Table/Table.types.d.ts +28 -0
- package/dist/components/Table/index.d.ts +3 -0
- package/dist/components/TimePicker/TimePicker.component.d.ts +22 -0
- package/dist/components/TimePicker/TimePicker.stories.d.ts +8 -0
- package/dist/components/TimePicker/TimePicker.types.d.ts +22 -0
- package/dist/components/TimePicker/index.d.ts +3 -0
- package/dist/components/TitleBar/TitleBar.component.d.ts +22 -0
- package/dist/components/TitleBar/TitleBar.stories.d.ts +8 -0
- package/dist/components/TitleBar/TitleBar.types.d.ts +10 -0
- package/dist/components/TitleBar/index.d.ts +3 -0
- package/dist/components/Toggle/Toggle.component.d.ts +22 -0
- package/dist/components/Toggle/Toggle.stories.d.ts +8 -0
- package/dist/components/Toggle/Toggle.types.d.ts +8 -0
- package/dist/components/Toggle/index.d.ts +3 -0
- package/dist/components/Tooltip/Tooltip.component.d.ts +19 -0
- package/dist/components/Tooltip/Tooltip.stories.d.ts +10 -0
- package/dist/components/Tooltip/Tooltip.types.d.ts +11 -0
- package/dist/components/Tooltip/index.d.ts +3 -0
- package/dist/components/TooltipExt/TooltipExt.component.d.ts +23 -0
- package/dist/components/TooltipExt/TooltipExt.stories.d.ts +19 -0
- package/dist/components/TooltipExt/TooltipExt.types.d.ts +11 -0
- package/dist/components/TooltipExt/index.d.ts +3 -0
- package/dist/components/Typography/Typography.component.d.ts +24 -0
- package/dist/components/Typography/Typography.stories.d.ts +8 -0
- package/dist/components/Typography/Typography.types.d.ts +54 -0
- package/dist/components/Typography/index.d.ts +3 -0
- package/dist/components/UserBetSlip/UserBetSlip.component.d.ts +45 -0
- package/dist/components/UserBetSlip/UserBetSlip.stories.d.ts +9 -0
- package/dist/components/UserBetSlip/UserBetSlip.types.d.ts +56 -0
- package/dist/components/UserBetSlip/index.d.ts +3 -0
- package/dist/components/WalletInfo/WalletInfo.component.d.ts +59 -0
- package/dist/components/WalletInfo/WalletInfo.stories.d.ts +7 -0
- package/dist/components/WalletInfo/WalletInfo.types.d.ts +25 -0
- package/dist/components/WalletInfo/index.d.ts +3 -0
- package/dist/components/ZIndex/ZIndex.component.d.ts +2 -0
- package/dist/components/ZIndex/ZIndex.stories.d.ts +5 -0
- package/dist/components/ZIndex/index.d.ts +2 -0
- package/dist/components/index.d.ts +50 -0
- package/dist/fonts/roboto-v48-latin-100.woff2 +0 -0
- package/dist/fonts/roboto-v48-latin-200.woff2 +0 -0
- package/dist/fonts/roboto-v48-latin-300.woff2 +0 -0
- package/dist/fonts/roboto-v48-latin-500.woff2 +0 -0
- package/dist/fonts/roboto-v48-latin-600.woff2 +0 -0
- package/dist/fonts/roboto-v48-latin-700.woff2 +0 -0
- package/dist/fonts/roboto-v48-latin-800.woff2 +0 -0
- package/dist/fonts/roboto-v48-latin-900.woff2 +0 -0
- package/dist/fonts/roboto-v48-latin-regular.woff2 +0 -0
- package/dist/images/404_Error_image.png +0 -0
- package/dist/images/female_avatar.png +0 -0
- package/dist/images/image_card.png +0 -0
- package/dist/images/loader.png +0 -0
- package/dist/images/male_avatar.png +0 -0
- package/dist/images/null_state_admin.png +0 -0
- package/dist/images/null_state_user.png +0 -0
- package/dist/images/under_maintenance.png +0 -0
- package/dist/index.cjs +59 -0
- package/dist/index.css +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +15014 -0
- package/dist/utils/commonFunctionality/commonFunctionality.d.ts +13 -0
- package/dist/utils/commonFunctionality/commonFunctionality.types.d.ts +3 -0
- package/dist/utils/commonFunctionality/index.d.ts +2 -0
- package/dist/utils/constants.d.ts +44 -0
- package/dist/utils/countryCodes.d.ts +6 -0
- package/dist/utils/paginationUtils.d.ts +10 -0
- package/dist/utils/useScreenSize.d.ts +3 -0
- package/dist/vite-env.d.ts +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { StoryObj } from '@storybook/react-vite';
|
|
2
|
+
declare const meta: {
|
|
3
|
+
title: string;
|
|
4
|
+
component: import('react').FC<import('./Chip.types').ChipProps>;
|
|
5
|
+
args: {
|
|
6
|
+
onClick: import('@vitest/spy').Mock<(...args: any[]) => any>;
|
|
7
|
+
};
|
|
8
|
+
argTypes: {
|
|
9
|
+
state: {
|
|
10
|
+
control: {
|
|
11
|
+
type: "select";
|
|
12
|
+
};
|
|
13
|
+
options: string[];
|
|
14
|
+
};
|
|
15
|
+
variant: {
|
|
16
|
+
control: {
|
|
17
|
+
type: "select";
|
|
18
|
+
};
|
|
19
|
+
options: string[];
|
|
20
|
+
};
|
|
21
|
+
isEditable: {
|
|
22
|
+
control: "boolean";
|
|
23
|
+
};
|
|
24
|
+
iconName: {
|
|
25
|
+
control: {
|
|
26
|
+
type: "select";
|
|
27
|
+
};
|
|
28
|
+
options: string[];
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
export default meta;
|
|
33
|
+
type Story = StoryObj<typeof meta>;
|
|
34
|
+
/** Active with filled example of Chip */
|
|
35
|
+
export declare const ActiveWithField: Story;
|
|
36
|
+
/** Active with outlined example of Chip */
|
|
37
|
+
export declare const ActiveWithOutlined: Story;
|
|
38
|
+
/** Suspended with filled example of Chip */
|
|
39
|
+
export declare const SuspendedWithField: Story;
|
|
40
|
+
/** Suspended with outlined example of Chip */
|
|
41
|
+
export declare const SuspendedWithOutlined: Story;
|
|
42
|
+
/** Locked with filled example of Chip */
|
|
43
|
+
export declare const LockedWithField: Story;
|
|
44
|
+
/** Locked with outlined example of Chip */
|
|
45
|
+
export declare const LockedWithOutlined: Story;
|
|
46
|
+
/** Pending with filled example of Chip */
|
|
47
|
+
export declare const PendingWithField: Story;
|
|
48
|
+
/** Pending with outlined example of Chip */
|
|
49
|
+
export declare const PendingWithOutlined: Story;
|
|
50
|
+
/** Pending with outlined example of Chip */
|
|
51
|
+
export declare const InfoChip: Story;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { IconName } from '../Icon/Icon.types';
|
|
2
|
+
/** Defines the available chip statuses */
|
|
3
|
+
export type ChipType = "active" | "suspended" | "locked" | "pending" | "info";
|
|
4
|
+
/** Defines the chip variant styles */
|
|
5
|
+
export type ChipVariant = "filled" | "outlined";
|
|
6
|
+
/** Defines the available icon colors */
|
|
7
|
+
export type ChipIconColor = "white" | "success" | "error" | "slategray" | "goldenYellow" | "techBlue";
|
|
8
|
+
/** Props for the Chip component */
|
|
9
|
+
export interface ChipProps {
|
|
10
|
+
/** Text content to be displayed inside the chip */
|
|
11
|
+
text: string;
|
|
12
|
+
/** Status of the chip, which determines color and style */
|
|
13
|
+
state: ChipType;
|
|
14
|
+
/** Visual variant of the chip */
|
|
15
|
+
variant?: ChipVariant;
|
|
16
|
+
/** Enables editing mode and shows the edit icon if true */
|
|
17
|
+
isEditable?: boolean;
|
|
18
|
+
/** Click handler for the chip */
|
|
19
|
+
onClick?: () => void;
|
|
20
|
+
/** Optional icon to be displayed in future use */
|
|
21
|
+
iconName?: IconName;
|
|
22
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { CommonMarketHeaderProps } from './CommonMarketHeader.types';
|
|
3
|
+
declare const meta: Meta<CommonMarketHeaderProps>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<CommonMarketHeaderProps>;
|
|
6
|
+
/** Other Market Header */
|
|
7
|
+
export declare const OtherMarket: Story;
|
|
8
|
+
/** Fancy Market Header */
|
|
9
|
+
export declare const FancyMarket: Story;
|
|
10
|
+
/** Multi Market Header */
|
|
11
|
+
export declare const MultiMarket: Story;
|
|
12
|
+
/** Sports Header (with Sub Header)*/
|
|
13
|
+
export declare const SportsWithSubHeader: Story;
|
|
14
|
+
/** Match Odds Header */
|
|
15
|
+
export declare const MatchOdds: Story;
|
|
16
|
+
export declare const EventTitle: Story;
|
|
17
|
+
export declare const EventTitleWithInfoIcon: Story;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export interface MultiMarketButtonProps {
|
|
2
|
+
eventId: string;
|
|
3
|
+
onClick: (eventId: string) => void;
|
|
4
|
+
}
|
|
5
|
+
export type HeaderVariant = "OtherMarket" | "MatchOdds" | "FancyMarket" | "MultiMarket" | "Sports" | "EventTitle";
|
|
6
|
+
export interface CommonMarketHeaderProps {
|
|
7
|
+
/** Controls header layout & behavior */
|
|
8
|
+
variant: HeaderVariant;
|
|
9
|
+
/** Market title shown in header */
|
|
10
|
+
title: string;
|
|
11
|
+
/** Market identifier */
|
|
12
|
+
marketId?: string;
|
|
13
|
+
/** Event ID used for navigation Used in: MultiMarket */
|
|
14
|
+
eventId?: string;
|
|
15
|
+
/** Total matched amount Used in: MatchOdds*/
|
|
16
|
+
totalMatched?: number;
|
|
17
|
+
/** Number of selections Used in: MultiMarket*/
|
|
18
|
+
selectionCount?: number;
|
|
19
|
+
/** Minimum stake value Used in: OtherMarket, MatchOdds */
|
|
20
|
+
min?: number;
|
|
21
|
+
/** Maximum stake value Used in: OtherMarket, MatchOdds*/
|
|
22
|
+
max?: number;
|
|
23
|
+
/** Bet waiting time (seconds) Reserved for future use */
|
|
24
|
+
betWaitingTime?: number;
|
|
25
|
+
/** Controls number of odds columns Used in: Sports @default 3 */
|
|
26
|
+
level?: 1 | 2 | 3;
|
|
27
|
+
/**Controls whether the sub-header is rendered or not */
|
|
28
|
+
isSubHeader?: boolean;
|
|
29
|
+
/** Click handler (e.g. navigate to Match Odds) Used in: MultiMarket*/
|
|
30
|
+
onClick?: (eventId: string) => void;
|
|
31
|
+
/** Prop to show or hide inplay marker */
|
|
32
|
+
eventDetails?: string;
|
|
33
|
+
/** Info icon click handler (shows icon when provided) */
|
|
34
|
+
onInfoClick?: () => void;
|
|
35
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { default as CommonMarketRow } from './CommonMarketRow.component';
|
|
3
|
+
declare const meta: Meta<typeof CommonMarketRow>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof CommonMarketRow>;
|
|
6
|
+
export declare const PairOddsRow: Story;
|
|
7
|
+
export declare const LayeredOddsRow: Story;
|
|
8
|
+
export declare const FancyOddsRow: Story;
|
|
9
|
+
export declare const OddEvenRow: Story;
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { BetSlipVariantType } from '..';
|
|
2
|
+
export type BetSlipPairVariantType = "Back" | "Lay";
|
|
3
|
+
export interface OddClickHandlerProps {
|
|
4
|
+
/** Market identifier */
|
|
5
|
+
marketId: string;
|
|
6
|
+
/** Event identifier */
|
|
7
|
+
eventId: string;
|
|
8
|
+
/** Provider identifier */
|
|
9
|
+
providerId: string;
|
|
10
|
+
/** Runner identifier */
|
|
11
|
+
runnerId: string;
|
|
12
|
+
/** Runner display name */
|
|
13
|
+
runnerName: string;
|
|
14
|
+
/** Bet slip variant type */
|
|
15
|
+
type: BetSlipVariantType;
|
|
16
|
+
/** Selected odds value */
|
|
17
|
+
odds: number;
|
|
18
|
+
/** Available size for the odds */
|
|
19
|
+
size: number;
|
|
20
|
+
/** Maximum allowed stake (optional) */
|
|
21
|
+
max?: number;
|
|
22
|
+
/** Minimum allowed stake (optional) */
|
|
23
|
+
min?: number;
|
|
24
|
+
/** Whether the best available odds should be accepted or not */
|
|
25
|
+
acceptBestOdds: boolean;
|
|
26
|
+
}
|
|
27
|
+
/** Represents a single odds item */
|
|
28
|
+
export interface OddItem {
|
|
29
|
+
/** Odds value (e.g. 1.45, 94) */
|
|
30
|
+
odds: number;
|
|
31
|
+
/** Available size for the odds (optional) */
|
|
32
|
+
oddsSize?: number;
|
|
33
|
+
}
|
|
34
|
+
export type ButtonColor = "bg-cloudBlue" | "bg-pastelBlue" | "bg-babyBlue" | "bg-watermelonRed" | "bg-softPink" | "bg-softRosePink";
|
|
35
|
+
/** Props for the OddButton component */
|
|
36
|
+
export interface OddButtonProps {
|
|
37
|
+
/** Market identifier */
|
|
38
|
+
marketId: string;
|
|
39
|
+
/** Event identifier */
|
|
40
|
+
eventId: string;
|
|
41
|
+
/** Provider identifier */
|
|
42
|
+
providerId: string;
|
|
43
|
+
/** Runner identifier */
|
|
44
|
+
runnerId: string;
|
|
45
|
+
/** Runner display name */
|
|
46
|
+
runnerName: string;
|
|
47
|
+
/** Odds data containing value and size */
|
|
48
|
+
item: OddItem;
|
|
49
|
+
/** Position index (used for styling/color logic) */
|
|
50
|
+
index: number;
|
|
51
|
+
/** button color according to (Back | Lay | Yes | No | Even | Odd) */
|
|
52
|
+
color: ButtonColor;
|
|
53
|
+
/** Bet type (BACK | LAY | Yes | No) */
|
|
54
|
+
type: BetSlipVariantType;
|
|
55
|
+
/** Whether the button is disabled or frozen */
|
|
56
|
+
disabled: boolean;
|
|
57
|
+
/** Whether to display odds size below the odds */
|
|
58
|
+
showSize: boolean;
|
|
59
|
+
/** Minimum stake allowed (optional) */
|
|
60
|
+
min?: number;
|
|
61
|
+
/** Maximum stake allowed (optional) */
|
|
62
|
+
max?: number;
|
|
63
|
+
/** Callback when odd button is clicked */
|
|
64
|
+
onClick: (oddData: OddClickHandlerProps) => void;
|
|
65
|
+
}
|
|
66
|
+
/** Props that are shared across ALL odds row variants*/
|
|
67
|
+
interface BaseOddsRowProps {
|
|
68
|
+
/** Back odds array */
|
|
69
|
+
batb?: OddItem[];
|
|
70
|
+
/** Lay odds array */
|
|
71
|
+
batl?: OddItem[];
|
|
72
|
+
/** Market identifier */
|
|
73
|
+
marketId?: string;
|
|
74
|
+
/** Event identifier */
|
|
75
|
+
eventId?: string;
|
|
76
|
+
/** Provider identifier */
|
|
77
|
+
providerId?: string;
|
|
78
|
+
/** Whether odds are frozen */
|
|
79
|
+
isFreezed?: boolean;
|
|
80
|
+
/** Whether the row is suspended */
|
|
81
|
+
isSuspended?: boolean;
|
|
82
|
+
/** Message shown when the row is suspended */
|
|
83
|
+
suspendedMsg?: string;
|
|
84
|
+
/** Whether to show odds size values */
|
|
85
|
+
showOddsSize?: boolean;
|
|
86
|
+
/** Maximum allowed stake (optional) */
|
|
87
|
+
max?: number;
|
|
88
|
+
/** Minimum allowed stake (optional) */
|
|
89
|
+
min?: number;
|
|
90
|
+
}
|
|
91
|
+
/** Props for Fancy odds row variant */
|
|
92
|
+
export interface FancyLayeredOddsRowVariant extends BaseOddsRowProps {
|
|
93
|
+
/** Variant identifier */
|
|
94
|
+
variant: "fancy" | "layered";
|
|
95
|
+
/** Runner identifier */
|
|
96
|
+
runnerId: string;
|
|
97
|
+
/** Runner display name (optional) */
|
|
98
|
+
runnerName?: string;
|
|
99
|
+
/** Current fancy value (optional) */
|
|
100
|
+
currentValue?: number;
|
|
101
|
+
/** Projected fancy value (optional) */
|
|
102
|
+
projectedValue?: number;
|
|
103
|
+
/** Additional notes or remarks */
|
|
104
|
+
notes?: string;
|
|
105
|
+
/** Depth or level of the market */
|
|
106
|
+
level?: 1 | 2 | 3;
|
|
107
|
+
/**Whether the event is yes no or odd even */
|
|
108
|
+
isYesNO?: boolean;
|
|
109
|
+
/** Callback when book button is clicked */
|
|
110
|
+
onRowClick?: (runnerId: string) => void;
|
|
111
|
+
/** Callback when an odd is clicked */
|
|
112
|
+
onOddClick?: (oddData: OddClickHandlerProps) => void;
|
|
113
|
+
}
|
|
114
|
+
/**Props for Pair odds row variant*/
|
|
115
|
+
export interface PairOddsRowVariant extends BaseOddsRowProps {
|
|
116
|
+
/** Variant identifier */
|
|
117
|
+
variant: "pair";
|
|
118
|
+
/** Unique row identifier */
|
|
119
|
+
id: string;
|
|
120
|
+
/** Event display name (optional) */
|
|
121
|
+
eventName?: string;
|
|
122
|
+
/** Event type (optional) */
|
|
123
|
+
eventType?: string;
|
|
124
|
+
/** Whether the event is currently in play */
|
|
125
|
+
inPlay?: boolean;
|
|
126
|
+
/** Event start date/time */
|
|
127
|
+
openDate?: string;
|
|
128
|
+
/**Whether to display the bookmaker icon. @default false */
|
|
129
|
+
showBookmakerIcon?: boolean;
|
|
130
|
+
/**Whether to display the fancy icon. @default false */
|
|
131
|
+
showFancyIcon?: boolean;
|
|
132
|
+
/** Whether total matched value should be shown */
|
|
133
|
+
showTotalMatched?: boolean;
|
|
134
|
+
/** Total matched amount */
|
|
135
|
+
totalMatched?: number;
|
|
136
|
+
/** Depth or level of the market */
|
|
137
|
+
level?: 1 | 2 | 3;
|
|
138
|
+
/** Associated market identifiers */
|
|
139
|
+
marketIds?: string[];
|
|
140
|
+
/** Whether the row is pinned */
|
|
141
|
+
pinned?: boolean;
|
|
142
|
+
/** Callback when row redirect is triggered */
|
|
143
|
+
onClickRedirect?: (id: string) => void;
|
|
144
|
+
/** Callback when pin/unpin action is triggered */
|
|
145
|
+
onPinClick?: (pinned: boolean) => void;
|
|
146
|
+
/** Callback when an odd is clicked */
|
|
147
|
+
onOddClick?: (type: string, odds: number | null) => void;
|
|
148
|
+
}
|
|
149
|
+
/** Union type representing all supported market row variants*/
|
|
150
|
+
export type CommonMarketRowProps = FancyLayeredOddsRowVariant | PairOddsRowVariant;
|
|
151
|
+
export {};
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { OddButtonProps } from './CommonMarketRow.types';
|
|
2
|
+
/**
|
|
3
|
+
* CommonMarketRow Component
|
|
4
|
+
*
|
|
5
|
+
* A polymorphic UI component used to render different types of market rows
|
|
6
|
+
* in odds tables. The rendered layout and behavior depend on the `variant` prop.
|
|
7
|
+
*
|
|
8
|
+
* Supported variants:
|
|
9
|
+
* - "pair" → Event-based pair odds (Back / Lay)
|
|
10
|
+
* - "layered" → Multi-level odds depth (Back / Lay stacks)
|
|
11
|
+
* - "fancy" → Fancy market odds with min/max and notes
|
|
12
|
+
*
|
|
13
|
+
* ───────────────────────────
|
|
14
|
+
* COMMON PROPS (Shared)
|
|
15
|
+
* ───────────────────────────
|
|
16
|
+
* @param {"pair" | "layered" | "fancy"} variant – Determines which market row variant to render.
|
|
17
|
+
* @param {OddItem[]} [batb] – Back odds array.
|
|
18
|
+
* @param {OddItem[]} [batl] – Lay odds array.
|
|
19
|
+
* @param {boolean} [isFreezed] – Freezes odds interaction.
|
|
20
|
+
* @param {boolean} [isSuspended] – Suspends the row and shows overlay.
|
|
21
|
+
* @param {string} [suspendedMsg] – Message shown when row is suspended.
|
|
22
|
+
* @param {boolean} [showOddsSize] – Whether to display odds size.
|
|
23
|
+
* @param {number} [min] – Minimum allowed stake.
|
|
24
|
+
* @param {number} [max] – Maximum allowed stake.
|
|
25
|
+
*
|
|
26
|
+
* ───────────────────────────
|
|
27
|
+
* PAIR ODDS ROW (variant="pair")
|
|
28
|
+
* ───────────────────────────
|
|
29
|
+
* @param {string} id – Unique identifier for the event row.
|
|
30
|
+
* @param {string} [eventName] – Event display name.
|
|
31
|
+
* @param {boolean} [inPlay] – Whether the event is live.
|
|
32
|
+
* @param {string} [openDate] – Event start date/time.
|
|
33
|
+
* @param {string[]} [tags] – Market tags (e.g. BOOKMAKER, FANCY_MARKET).
|
|
34
|
+
* @param {boolean} [showTotalMatched] – Whether to show total matched amount.
|
|
35
|
+
* @param {number} [totalMatched] – Total matched value.
|
|
36
|
+
* @param {1 | 2 | 3} [level] – Odds depth level.
|
|
37
|
+
* @param {boolean} [pinned] – Whether the row is pinned.
|
|
38
|
+
* @param {function} onClickRedirect – Callback when event name is clicked.
|
|
39
|
+
* @param {function} [onOddClick] – Callback when an odd is selected.
|
|
40
|
+
* @param {function} [onPinClick] – Callback when pin/unpin is toggled.
|
|
41
|
+
*
|
|
42
|
+
* Example usage:
|
|
43
|
+
*
|
|
44
|
+
* <CommonMarketRow
|
|
45
|
+
* variant="pair"
|
|
46
|
+
* id="match-1"
|
|
47
|
+
* eventName="India vs Australia"
|
|
48
|
+
* inPlay
|
|
49
|
+
* openDate="Today 7:30 PM"
|
|
50
|
+
* tags={["BOOKMAKER"]}
|
|
51
|
+
* showTotalMatched
|
|
52
|
+
* totalMatched={125000}
|
|
53
|
+
* level={3}
|
|
54
|
+
* batb={[
|
|
55
|
+
* { odds: 1.85, oddsSize: 1200 },
|
|
56
|
+
* { odds: 1.84, oddsSize: 900 },
|
|
57
|
+
* { odds: 1.83, oddsSize: 600 }
|
|
58
|
+
* ]}
|
|
59
|
+
* batl={[
|
|
60
|
+
* { odds: 1.86, oddsSize: 1100 },
|
|
61
|
+
* { odds: 1.87, oddsSize: 800 },
|
|
62
|
+
* { odds: 1.88, oddsSize: 500 }
|
|
63
|
+
* ]}
|
|
64
|
+
* onClickRedirect={(id) => console.log("Redirect:", id)}
|
|
65
|
+
* onOddClick={(type, odds) => console.log(type, odds)}
|
|
66
|
+
* onPinClick={(pinned) => console.log("Pinned:", pinned)}
|
|
67
|
+
* />
|
|
68
|
+
*
|
|
69
|
+
* ───────────────────────────
|
|
70
|
+
* LAYERED ODDS ROW (variant="layered")
|
|
71
|
+
* ───────────────────────────
|
|
72
|
+
* @param {string} marketId Market identifier.
|
|
73
|
+
* @param {string} runnerId Runner identifier.
|
|
74
|
+
* @param {string} runnerName Runner display name.
|
|
75
|
+
* @param {number} currentValue Current value.
|
|
76
|
+
* @param {number} projectedValue Projected value.
|
|
77
|
+
* @param {1 | 2 | 3} level Number of odds layers.
|
|
78
|
+
* @param {function} onOddClick Callback when an odd is clicked.
|
|
79
|
+
*
|
|
80
|
+
* <CommonMarketRow
|
|
81
|
+
* variant="layered"
|
|
82
|
+
* marketId="market-1"
|
|
83
|
+
* runnerId="runner-1"
|
|
84
|
+
* runnerName="Team A"
|
|
85
|
+
* currentValue={120}
|
|
86
|
+
* projectedValue={30}
|
|
87
|
+
* level={3}
|
|
88
|
+
* showOddsSize
|
|
89
|
+
* batb={[
|
|
90
|
+
* { odds: 0, oddsSize: 0 },
|
|
91
|
+
* { odds: 85, oddsSize: 400 },
|
|
92
|
+
* { odds: 80, oddsSize: 300 }
|
|
93
|
+
* ]}
|
|
94
|
+
* batl={[
|
|
95
|
+
* { odds: 95, oddsSize: 600 },
|
|
96
|
+
* { odds: 100, oddsSize: 700 },
|
|
97
|
+
* { odds: 105, oddsSize: 800 }
|
|
98
|
+
* ]}
|
|
99
|
+
* onOddClick={(data) => console.log(data)}
|
|
100
|
+
* />
|
|
101
|
+
*
|
|
102
|
+
* ───────────────────────────
|
|
103
|
+
* FANCY ODDS ROW (variant="fancy")
|
|
104
|
+
* ───────────────────────────
|
|
105
|
+
* @param {string} runnerId Runner identifier.
|
|
106
|
+
* @param {string} runnerName Runner display name.
|
|
107
|
+
* @param {string} min_and_max Label for min/max section.
|
|
108
|
+
* @param {number} currentValue Current fancy value.
|
|
109
|
+
* @param {number} projectedValue Projected fancy value.
|
|
110
|
+
* @param {string[]} notes Notes or remarks.
|
|
111
|
+
* @param {function} onClick Callback when an odd is clicked.
|
|
112
|
+
*
|
|
113
|
+
* Example (Fancy Odds Row):
|
|
114
|
+
*
|
|
115
|
+
* <CommonMarketRow
|
|
116
|
+
* variant="fancy"
|
|
117
|
+
* runnerId="fancy-1"
|
|
118
|
+
* runnerName="Total Sixes"
|
|
119
|
+
* min_and_max="Min / Max"
|
|
120
|
+
* min={100}
|
|
121
|
+
* max={5000}
|
|
122
|
+
* currentValue={10}
|
|
123
|
+
* projectedValue={2}
|
|
124
|
+
* notes={["Session based", "Runs counted"]}
|
|
125
|
+
* showOddsSize
|
|
126
|
+
* batb={[{ odds: 1.9, oddsSize: 1000 }]}
|
|
127
|
+
* batl={[{ odds: 2.0, oddsSize: 1200 }]}
|
|
128
|
+
* onClick={(data) => console.log(data)}
|
|
129
|
+
* />
|
|
130
|
+
*/
|
|
131
|
+
declare const OddButton: React.FC<OddButtonProps>;
|
|
132
|
+
export default OddButton;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { DatePickerProps } from './DatePicker.types';
|
|
2
|
+
/**
|
|
3
|
+
* A reusable and customizable date picker component that supports both
|
|
4
|
+
* single date and date range selection using `react-day-picker`.
|
|
5
|
+
*
|
|
6
|
+
* @param {string} [title] - Optional button text placeholder. Default is "Select Date".
|
|
7
|
+
* @param {(value: HandleSelectDatePicker) => void} selectedDate - Callback function
|
|
8
|
+
* triggered when the user applies a selected date or range.
|
|
9
|
+
* @param {HandleSelectDatePicker} [value] - Controlled selected value (single date or date range).
|
|
10
|
+
* @param {boolean} [fullWidth] - If true, the date picker will stretch to full width of its container.
|
|
11
|
+
* @param {number} [maxPastDays] - Maximum number of past days selectable.
|
|
12
|
+
* @param {number} [maxRangeDays] - Maximum range in days (for range mode).
|
|
13
|
+
* @param {boolean} [currentSelected] - If true, today is pre-selected on mount.
|
|
14
|
+
*
|
|
15
|
+
* @returns {JSX.Element} The rendered DatePicker component.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* <DatePicker
|
|
19
|
+
* title="Pick a date"
|
|
20
|
+
* fullWidth
|
|
21
|
+
* maxPastDays={30}
|
|
22
|
+
* maxRangeDays={14}
|
|
23
|
+
* currentSelected
|
|
24
|
+
* selectedDate={(value) => console.log("Selected:", value)}
|
|
25
|
+
* />
|
|
26
|
+
*/
|
|
27
|
+
declare const DatePicker: React.FC<DatePickerProps>;
|
|
28
|
+
export default DatePicker;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { DatePickerProps } from './DatePicker.types';
|
|
3
|
+
declare const meta: Meta<DatePickerProps>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<DatePickerProps>;
|
|
6
|
+
export declare const Default: Story;
|
|
7
|
+
export declare const CustomTitle: Story;
|
|
8
|
+
export declare const CurrentDateSelected: Story;
|
|
9
|
+
export declare const MaxPastDays: Story;
|
|
10
|
+
export declare const MaxRangeDays: Story;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { DateRange } from 'react-day-picker';
|
|
2
|
+
/**
|
|
3
|
+
* The selection mode for the date picker.
|
|
4
|
+
* - "single": For selecting a single date
|
|
5
|
+
* - "range": For selecting a date range
|
|
6
|
+
*/
|
|
7
|
+
export type DatePickerMode = "single" | "range";
|
|
8
|
+
/**
|
|
9
|
+
* Represents the value returned from the date picker based on the selected mode.
|
|
10
|
+
* - `Date`: when mode is "single"
|
|
11
|
+
* - `DateRange`: when mode is "range" (includes `from` and optional `to`)
|
|
12
|
+
* - `undefined`: when no date is selected
|
|
13
|
+
*/
|
|
14
|
+
export type HandleSelectDatePicker = Date | DateRange | undefined;
|
|
15
|
+
/**
|
|
16
|
+
* Props for the reusable DatePicker component.
|
|
17
|
+
*/
|
|
18
|
+
export interface DatePickerProps {
|
|
19
|
+
/** Optional title/label to show above the date picker, default value "Select Date" */
|
|
20
|
+
title?: string;
|
|
21
|
+
/** Callback function that receives the selected date or date range */
|
|
22
|
+
selectedDate: (value: HandleSelectDatePicker) => void;
|
|
23
|
+
/** External selected value to control DatePicker state (single or range) */
|
|
24
|
+
value?: HandleSelectDatePicker;
|
|
25
|
+
/** Defines the size of the date picker ("sm" or "lg"). */
|
|
26
|
+
size?: "sm" | "lg" | "full";
|
|
27
|
+
/** Maximum number of past days selectable. */
|
|
28
|
+
maxPastDays?: number;
|
|
29
|
+
/** Maximum range in days (for range mode).*/
|
|
30
|
+
maxRangeDays?: number;
|
|
31
|
+
/** If true, today is pre-selected on mount.*/
|
|
32
|
+
currentSelected?: boolean;
|
|
33
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { DropdownProps } from './Dropdown.types';
|
|
2
|
+
/**
|
|
3
|
+
* Dropdown Component
|
|
4
|
+
*
|
|
5
|
+
* A reusable dropdown select component that supports custom options, size variants,
|
|
6
|
+
* optional selection state, static labels, and click-outside-to-close functionality.
|
|
7
|
+
*
|
|
8
|
+
* Props:
|
|
9
|
+
* @param {string} label - The placeholder label shown when no option is selected.
|
|
10
|
+
* @param {"sm" | "lg" | "full"} [size="sm"] - Optional size of the dropdown.
|
|
11
|
+
* Use `"sm"` for compact, `"lg"` for larger dropdowns, and `"full"` for full width.
|
|
12
|
+
* @param {DropdownOptionValues[]} options - The list of selectable options, each with a `label` and `value`.
|
|
13
|
+
* @param {DropdownOptionValues} [selected] - The currently selected option object. When omitted, the dropdown works in stateless mode.
|
|
14
|
+
* @param {(value: DropdownOptionValues) => void} onSelect - Callback function triggered when a new option is selected. Required even in stateless mode for handling user action.
|
|
15
|
+
*
|
|
16
|
+
* @returns A styled dropdown menu component with toggle button and option list.
|
|
17
|
+
*
|
|
18
|
+
* Example usage:
|
|
19
|
+
* Stateful usage: Dropdown manages selected value and label updates.
|
|
20
|
+
* <Dropdown
|
|
21
|
+
* label="Select status"
|
|
22
|
+
* size="sm"
|
|
23
|
+
* options={[{ label: "Active", value: "active" }]}
|
|
24
|
+
* selected={{ label: "Active", value: "active" }}
|
|
25
|
+
* onSelect={(val) => console.log(val)}
|
|
26
|
+
* />
|
|
27
|
+
*
|
|
28
|
+
* Stateless Dropdown: Used when no selected state tracking is needed.
|
|
29
|
+
* Useful for actions like triggering downloads or commands without showing selection.
|
|
30
|
+
* <Dropdown
|
|
31
|
+
* label="Download as"
|
|
32
|
+
* size="sm"
|
|
33
|
+
* options={[{ label: "PDF", value: "pdf" }, { label: "CSV", value: "csv" }]}
|
|
34
|
+
* onSelect={(val) => downloadFile(val)}
|
|
35
|
+
* />
|
|
36
|
+
*/
|
|
37
|
+
declare const Dropdown: React.FC<DropdownProps>;
|
|
38
|
+
export default Dropdown;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { DropdownProps } from './Dropdown.types';
|
|
3
|
+
declare const meta: Meta<DropdownProps>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<DropdownProps>;
|
|
6
|
+
export declare const SmallDropdown: Story;
|
|
7
|
+
export declare const LargeDropdown: Story;
|
|
8
|
+
export declare const SelectedOption: Story;
|
|
9
|
+
/** Stateless dropdown for downloads (doesn’t store selected)*/
|
|
10
|
+
export declare const StatelessDropdown: Story;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents an individual option in the dropdown.
|
|
3
|
+
*/
|
|
4
|
+
export interface DropdownOptionValues {
|
|
5
|
+
/** The visible label shown in the dropdown list and selected state */
|
|
6
|
+
label: string;
|
|
7
|
+
/** The underlying value associated with the option */
|
|
8
|
+
value: string;
|
|
9
|
+
}
|
|
10
|
+
/** Props associated with Dropdown component*/
|
|
11
|
+
export interface DropdownProps {
|
|
12
|
+
/** The fallback label to display when no option is selected. */
|
|
13
|
+
label: string;
|
|
14
|
+
/** Defines the size of the dropdown button and options. default value is "sm" */
|
|
15
|
+
size?: "sm" | "lg" | "full";
|
|
16
|
+
/** List of dropdown options available for selection. */
|
|
17
|
+
options: DropdownOptionValues[];
|
|
18
|
+
/** Currently selected option. Must be one of the items from `options`. */
|
|
19
|
+
/** Optional selected value — if not passed, fallback label is shown */
|
|
20
|
+
selected?: DropdownOptionValues;
|
|
21
|
+
/**
|
|
22
|
+
* Callback function that is triggered when a new option is selected.
|
|
23
|
+
* @param value - The option object selected by the user.
|
|
24
|
+
*/
|
|
25
|
+
onSelect: (value: DropdownOptionValues) => void;
|
|
26
|
+
}
|