@lion-npm/ui 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/dist/index.js +2564 -0
  2. package/dist/style.css +2 -0
  3. package/package.json +20 -2
  4. package/.oxlintrc.json +0 -8
  5. package/AGENTS.md +0 -0
  6. package/Dockerfile +0 -7
  7. package/compose.yml +0 -14
  8. package/index.html +0 -15
  9. package/src/App.tsx +0 -84
  10. package/src/assets/css/buttons/buttons-android.css +0 -251
  11. package/src/assets/css/buttons/buttons-ios.css +0 -213
  12. package/src/assets/css/buttons/buttons-web.css +0 -138
  13. package/src/assets/css/custom.css +0 -8
  14. package/src/assets/css/index.css +0 -60
  15. package/src/assets/css/inputs/inputs-android.css +0 -259
  16. package/src/assets/css/inputs/inputs-bootstrap.css +0 -74
  17. package/src/assets/css/inputs/inputs-ios.css +0 -268
  18. package/src/assets/css/loadings/loading-bar.css +0 -86
  19. package/src/assets/css/modals/modals.css +0 -236
  20. package/src/components/buttons/AndroidButton.tsx +0 -43
  21. package/src/components/buttons/BootstrapButton.tsx +0 -50
  22. package/src/components/buttons/IOSButton.tsx +0 -42
  23. package/src/components/buttons/LionButton.tsx +0 -73
  24. package/src/components/inputs/AndroidInput.tsx +0 -158
  25. package/src/components/inputs/BootstrapInput.tsx +0 -106
  26. package/src/components/inputs/IOSInput.tsx +0 -163
  27. package/src/components/inputs/LionInput.tsx +0 -81
  28. package/src/components/loadings/LoadingBar.tsx +0 -21
  29. package/src/components/modals/LionModal.tsx +0 -155
  30. package/src/context/LionUIComponentsContext.tsx +0 -73
  31. package/src/features/Header.tsx +0 -83
  32. package/src/features/VariantList.tsx +0 -19
  33. package/src/features/buttons/ButtonsSection.tsx +0 -7
  34. package/src/features/buttons/components/ButtonsAndroidSection.tsx +0 -79
  35. package/src/features/buttons/components/ButtonsBootstrapSection.tsx +0 -77
  36. package/src/features/buttons/components/ButtonsCustomSection.tsx +0 -234
  37. package/src/features/buttons/components/ButtonsIOSSection.tsx +0 -78
  38. package/src/features/inputs/InputsSection.tsx +0 -7
  39. package/src/features/inputs/components/InputsAndroidSection.tsx +0 -155
  40. package/src/features/inputs/components/InputsBootstrapSection.tsx +0 -154
  41. package/src/features/inputs/components/InputsCustomSection.tsx +0 -234
  42. package/src/features/inputs/components/InputsIOSSection.tsx +0 -156
  43. package/src/features/loadings/LoadingSection.tsx +0 -5
  44. package/src/features/loadings/components/LoadingBarSection.tsx +0 -74
  45. package/src/features/modals/ModalsSection.tsx +0 -5
  46. package/src/features/modals/components/ModalsAndroidSection.tsx +0 -108
  47. package/src/features/modals/components/ModalsDefaultForm.tsx +0 -31
  48. package/src/features/modals/components/ModalsDefaultInput.tsx +0 -22
  49. package/src/features/modals/components/ModalsIOSSection.tsx +0 -106
  50. package/src/features/modals/components/ModalsWebSection.tsx +0 -104
  51. package/src/index.ts +0 -27
  52. package/src/interfaces/LionUIComponentsProviderProps.tsx +0 -7
  53. package/src/interfaces/LionUIContextProps.tsx +0 -6
  54. package/src/interfaces/LionUIState.tsx +0 -13
  55. package/src/main.tsx +0 -9
  56. package/src/types/Android/AndroidInputShapeTypes.tsx +0 -7
  57. package/src/types/Android/AndroidInputStyleTypes.tsx +0 -7
  58. package/src/types/Android/AndroidShapeTypes.tsx +0 -6
  59. package/src/types/Android/AndroidStyleTypes.tsx +0 -9
  60. package/src/types/ButtonTypes.tsx +0 -9
  61. package/src/types/IOS/IOSInputShapeTypes.tsx +0 -9
  62. package/src/types/IOS/IOSInputStyleTypes.tsx +0 -11
  63. package/src/types/IOS/IOSShapeTypes.tsx +0 -7
  64. package/src/types/IOS/IOSStyleTypes.tsx +0 -9
  65. package/src/types/InputTypes.tsx +0 -13
  66. package/src/types/PlatformTypes.tsx +0 -9
  67. package/src/types/SizeTypes.tsx +0 -11
  68. package/src/types/VariantTypes.tsx +0 -19
  69. package/src/types/Web/BootstrapInputShapeTypes.tsx +0 -9
  70. package/src/types/Web/BootstrapInputStyleTypes.tsx +0 -8
  71. package/src/types/Web/BootstrapShapeTypes.tsx +0 -8
  72. package/src/types/Web/BootstrapStyleTypes.tsx +0 -7
  73. package/tsconfig.app.json +0 -26
  74. package/tsconfig.json +0 -7
  75. package/tsconfig.node.json +0 -23
  76. package/vite.config.ts +0 -30
  77. /package/{public → dist}/favicon.svg +0 -0
  78. /package/{public → dist}/icons.svg +0 -0
@@ -1,21 +0,0 @@
1
- import {useLionUI} from "../../context/LionUIComponentsContext.tsx";
2
- import {VariantTypes} from "../../types/VariantTypes.tsx";
3
-
4
- export interface LoadingBarProps {
5
- variant?: VariantTypes | string;
6
- }
7
-
8
- export default function LoadingBar({ variant = VariantTypes.PRIMARY }: LoadingBarProps) {
9
- const { state } = useLionUI();
10
-
11
- const normalizedVariant = String(variant).toLowerCase().replace(/_/g, "-");
12
- const variantClass = variant ? `loading-variant-${normalizedVariant}` : "";
13
-
14
- return state.loading ? (
15
- <div className="sticky-top">
16
- <div className={`custom-progress-bar ${variantClass}`}>
17
- <div className="indeterminate"></div>
18
- </div>
19
- </div>
20
- ) : null;
21
- }
@@ -1,155 +0,0 @@
1
- import type { FC, ReactNode } from "react";
2
- import { Button, Modal } from "react-bootstrap";
3
- import { VariantTypes } from "../../types/VariantTypes.tsx";
4
- import { PlatformTypes } from "../../types/PlatformTypes.tsx";
5
- import { ButtonTypes } from "../../types/ButtonTypes.tsx";
6
- import { SizeTypes } from "../../types/SizeTypes.tsx";
7
- import { useLionUI } from "../../context/LionUIComponentsContext.tsx";
8
-
9
- export interface LionModalProps {
10
- modalId: string;
11
- title: string;
12
- body: ReactNode;
13
- buttons?: ReactNode;
14
- backdrop?: string;
15
- fullscreen?: true | "sm" | "md" | "lg" | "xl" | "xxl" | "sm-down" | "md-down" | "lg-down" | "xl-down" | "xxl-down";
16
- // @ts-ignore
17
- size?: SizeTypes.SM | SizeTypes.LG | SizeTypes.XL;
18
- variant?: VariantTypes | string;
19
- platform?: PlatformTypes | string;
20
- cancelButtonIcon?: ReactNode;
21
- cancelButtonText?: string;
22
- }
23
-
24
- export default function LionModal({
25
- modalId,
26
- title,
27
- body,
28
- buttons,
29
- backdrop = "static",
30
- fullscreen = "sm-down",
31
- size = SizeTypes.LG,
32
- variant = VariantTypes.LIGHT,
33
- platform = undefined,
34
- cancelButtonIcon = null,
35
- cancelButtonText = "Cancel",
36
- }: LionModalProps) {
37
- const { state, updateState } = useLionUI();
38
- const platformDefined = platform || state.platform;
39
- const isIOS = platformDefined === PlatformTypes.IOS;
40
- const isAndroid = platformDefined === PlatformTypes.ANDROID;
41
-
42
- const modalPlatformClass = isIOS
43
- ? "ios-modal"
44
- : isAndroid
45
- ? "android-modal"
46
- : "web-modal";
47
-
48
- const getHeaderTextColor = (variantType: VariantTypes | string | undefined): string => {
49
- switch (variantType) {
50
- case VariantTypes.LIGHT:
51
- case VariantTypes.LINK:
52
- case VariantTypes.WARNING:
53
- case VariantTypes.INFO:
54
- return "text-dark";
55
- case VariantTypes.PRIMARY:
56
- case VariantTypes.SECONDARY:
57
- case VariantTypes.SUCCESS:
58
- case VariantTypes.DANGER:
59
- case VariantTypes.DARK:
60
- case VariantTypes.LION_GLAM:
61
- case VariantTypes.LION_TECH:
62
- case VariantTypes.LION_PACKAGES:
63
- case VariantTypes.LION_PARKING:
64
- default:
65
- return "text-white";
66
- }
67
- };
68
-
69
- const getCancelButtonTextColor = (variantType: VariantTypes | string | undefined): string => {
70
- switch (variantType) {
71
- case VariantTypes.LIGHT:
72
- case VariantTypes.LINK:
73
- case VariantTypes.DARK:
74
- case VariantTypes.MODAL:
75
- return "text-dark";
76
- case VariantTypes.WARNING:
77
- return "text-warning";
78
- case VariantTypes.PRIMARY:
79
- return "text-primary";
80
- case VariantTypes.INFO:
81
- return "text-info";
82
- case VariantTypes.SECONDARY:
83
- return "text-secondary";
84
- case VariantTypes.DANGER:
85
- return "text-danger";
86
- case VariantTypes.SUCCESS:
87
- return "text-success";
88
- case VariantTypes.LION_PARKING:
89
- case VariantTypes.LION_PACKAGES:
90
- return "text-lion-packages";
91
- case VariantTypes.LION_TECH:
92
- return "text-lion-tech";
93
- case VariantTypes.LION_GLAM:
94
- return "text-lion-glam";
95
- default:
96
- return "text-white";
97
- }
98
- };
99
-
100
- const textColorClass = getHeaderTextColor(variant);
101
- const cancelTextColorClass = getCancelButtonTextColor(variant);
102
-
103
- const CancelButton: FC = () => (
104
- <Button
105
- // @ts-ignore
106
- type={ButtonTypes.BUTTON}
107
- variant={VariantTypes.MODAL}
108
- id={"modal-cancel-button"}
109
- className={`btn-modal btn-modal-cancel ${cancelTextColorClass}`}
110
- onClick={() => updateState({ modal: null })}
111
- disabled={state.reload || state.loading}
112
- >
113
- {cancelButtonIcon ?? cancelButtonText}
114
- </Button>
115
- );
116
-
117
- return (
118
- <Modal
119
- // @ts-ignore
120
- backdrop={backdrop}
121
- id={modalId}
122
- show={modalId === state.modal}
123
- fullscreen={fullscreen}
124
- onHide={() => updateState({ modal: null })}
125
- size={size}
126
- scrollable
127
- centered
128
- className={modalPlatformClass}
129
- >
130
- <Modal.Header
131
- closeButton={!state.reload || !state.loading}
132
- className={`custom-modal-header py-3 px-4 bg-${variant} ${textColorClass}`}
133
- >
134
- <Modal.Title
135
- className={`custom-modal-title w-100 ${textColorClass} ${
136
- isIOS ? "text-center fw-semibold" : "text-start fw-bold"
137
- }`}
138
- >
139
- {title}
140
- </Modal.Title>
141
- </Modal.Header>
142
-
143
- <Modal.Body className="custom-modal-body px-4 py-3">
144
- {modalId === state.modal ? body : null}
145
- </Modal.Body>
146
-
147
- <Modal.Footer className="custom-modal-footer p-0">
148
- <div className="custom-btn-group w-100 d-flex align-items-stretch">
149
- <CancelButton />
150
- {buttons}
151
- </div>
152
- </Modal.Footer>
153
- </Modal>
154
- );
155
- }
@@ -1,73 +0,0 @@
1
- import { createContext, type FC, useContext, useEffect, useState } from 'react';
2
- import { Capacitor } from '@capacitor/core';
3
- import { PlatformTypes } from "../types/PlatformTypes.tsx";
4
- import type { LionUIContextProps } from "../interfaces/LionUIContextProps.tsx";
5
- import type { LionUIComponentsProviderProps } from "../interfaces/LionUIComponentsProviderProps.tsx";
6
- import type { LionUIState } from "../interfaces/LionUIState.tsx";
7
-
8
- const LionUIComponentsContext = createContext<LionUIContextProps | undefined>(undefined);
9
-
10
- export const LionUIComponentsProvider: FC<LionUIComponentsProviderProps> = ({
11
- children,
12
- defaultPlatform,
13
- }) => {
14
- const [state, setState] = useState<LionUIState>(() => {
15
- let initialPlatform: PlatformTypes = PlatformTypes.WEB;
16
-
17
- if (defaultPlatform) {
18
- initialPlatform = defaultPlatform;
19
- } else {
20
- const capPlatform = Capacitor.getPlatform();
21
- if (capPlatform === PlatformTypes.IOS || capPlatform === PlatformTypes.ANDROID) {
22
- initialPlatform = capPlatform as PlatformTypes;
23
- }
24
- }
25
-
26
- return {
27
- platform: initialPlatform,
28
- loading: false,
29
- reload: false,
30
- booting: false,
31
- sidebar: false,
32
- version: null,
33
- modal: null,
34
- logo: null,
35
- background: null,
36
- };
37
- });
38
-
39
- const updateState = (partial: Partial<LionUIState>) => {
40
- setState((prev) => ({ ...prev, ...partial }));
41
- };
42
-
43
- useEffect(() => {
44
- if (!defaultPlatform) {
45
- const capPlatform = Capacitor.getPlatform();
46
-
47
- const detected: PlatformTypes =
48
- capPlatform === PlatformTypes.IOS || capPlatform === PlatformTypes.ANDROID
49
- ? (capPlatform as PlatformTypes)
50
- : PlatformTypes.WEB;
51
-
52
- if (detected !== state.platform) {
53
- setState((prev) => ({ ...prev, platform: detected }));
54
- }
55
- }
56
- }, [defaultPlatform, state.platform]);
57
-
58
- return (
59
- <LionUIComponentsContext.Provider value={{ state, updateState }}>
60
- {children}
61
- </LionUIComponentsContext.Provider>
62
- );
63
- };
64
-
65
- export const useLionUI = (): LionUIContextProps => {
66
- const context = useContext(LionUIComponentsContext);
67
-
68
- if (!context) {
69
- throw new Error('useLionUI debe ser utilizado dentro de un LionUIComponentsProvider');
70
- }
71
-
72
- return context;
73
- };
@@ -1,83 +0,0 @@
1
- import Container from 'react-bootstrap/Container';
2
- import Nav from 'react-bootstrap/Nav';
3
- import Navbar from 'react-bootstrap/Navbar';
4
- import NavDropdown from 'react-bootstrap/NavDropdown';
5
- import {Link} from "react-router-dom";
6
-
7
- export default function Header() {
8
- return (
9
- <Navbar expand="lg" className="bg-body-tertiary">
10
- <Container>
11
- <Navbar.Brand as={Link} to={"/"} href={"#"}>
12
- Lion-UI
13
- </Navbar.Brand>
14
-
15
- <Navbar.Toggle aria-controls="lion-ui-navbar-nav" />
16
-
17
- <Navbar.Collapse id="lion-ui-navbar-nav">
18
- <Nav className="ms-auto">
19
- <NavDropdown title="Buttons" id="buttons-nav-dropdown">
20
- <NavDropdown.Item as={Link} to={"/buttons/custom"} href={"#"}>
21
- Custom
22
- </NavDropdown.Item>
23
-
24
- <NavDropdown.Divider />
25
-
26
- <NavDropdown.Item as={Link} to={"/buttons/android"} href={"#"}>
27
- Android
28
- </NavDropdown.Item>
29
-
30
- <NavDropdown.Item as={Link} to={"/buttons/ios"} href={"#"}>
31
- IOS
32
- </NavDropdown.Item>
33
-
34
- <NavDropdown.Item as={Link} to={"/buttons/web"} href={"#"}>
35
- Web
36
- </NavDropdown.Item>
37
- </NavDropdown>
38
-
39
- <NavDropdown title="Inputs" id="inputs-nav-dropdown">
40
- <NavDropdown.Item as={Link} to={"/inputs/custom"} href={"#"}>
41
- Custom
42
- </NavDropdown.Item>
43
-
44
- <NavDropdown.Divider />
45
-
46
- <NavDropdown.Item as={Link} to={"/inputs/android"} href={"#"}>
47
- Android
48
- </NavDropdown.Item>
49
-
50
- <NavDropdown.Item as={Link} to={"/inputs/ios"} href={"#"}>
51
- IOS
52
- </NavDropdown.Item>
53
-
54
- <NavDropdown.Item as={Link} to={"/inputs/web"} href={"#"}>
55
- Web
56
- </NavDropdown.Item>
57
- </NavDropdown>
58
-
59
- <NavDropdown title="Modals" id="modals-nav-dropdown">
60
- <NavDropdown.Item as={Link} to={"/modals/android"} href={"#"}>
61
- Android
62
- </NavDropdown.Item>
63
-
64
- <NavDropdown.Item as={Link} to={"/modals/ios"} href={"#"}>
65
- IOS
66
- </NavDropdown.Item>
67
-
68
- <NavDropdown.Item as={Link} to={"/modals/web"} href={"#"}>
69
- Web
70
- </NavDropdown.Item>
71
- </NavDropdown>
72
-
73
- <NavDropdown title="Loadings" id="loadings-nav-dropdown">
74
- <NavDropdown.Item as={Link} to={"/loadings/bar"} href={"#"}>
75
- Bar
76
- </NavDropdown.Item>
77
- </NavDropdown>
78
- </Nav>
79
- </Navbar.Collapse>
80
- </Container>
81
- </Navbar>
82
- );
83
- }
@@ -1,19 +0,0 @@
1
- import {VariantTypes} from "../types/VariantTypes.tsx";
2
-
3
- const VariantList: Array<VariantTypes> = [
4
- VariantTypes.SECONDARY,
5
- VariantTypes.PRIMARY,
6
- VariantTypes.SUCCESS,
7
- VariantTypes.DANGER,
8
- VariantTypes.WARNING,
9
- VariantTypes.INFO,
10
- VariantTypes.LIGHT,
11
- VariantTypes.LINK,
12
- VariantTypes.DARK,
13
- VariantTypes.LION_PACKAGES,
14
- VariantTypes.LION_PARKING,
15
- VariantTypes.LION_TECH,
16
- VariantTypes.LION_GLAM,
17
- ];
18
-
19
- export default VariantList;
@@ -1,7 +0,0 @@
1
- import {Outlet} from "react-router-dom";
2
-
3
- export default function ButtonsSection() {
4
- return (
5
- <Outlet />
6
- );
7
- }
@@ -1,79 +0,0 @@
1
- import { AndroidStyleTypes } from "../../../types/Android/AndroidStyleTypes.tsx";
2
- import { AndroidShapeTypes } from "../../../types/Android/AndroidShapeTypes.tsx";
3
- import { ButtonTypes } from "../../../types/ButtonTypes.tsx";
4
- import VariantList from "../../VariantList.tsx";
5
-
6
- import { Fragment } from "react";
7
- import AndroidButton from "../../../components/buttons/AndroidButton.tsx";
8
-
9
- // List of Material Design 3 styles
10
- const StyleTypeList: Array<{ label: string; styleType: AndroidStyleTypes }> = [
11
- { label: "Filled", styleType: AndroidStyleTypes.FILLED },
12
- { label: "Elevated", styleType: AndroidStyleTypes.ELEVATED },
13
- { label: "Tonal", styleType: AndroidStyleTypes.TONAL },
14
- { label: "Outlined", styleType: AndroidStyleTypes.OUTLINED },
15
- { label: "Text", styleType: AndroidStyleTypes.TEXT },
16
- ];
17
-
18
- // List of supported button shapes
19
- const ShapeList: Array<{ label: string; shape: AndroidShapeTypes }> = [
20
- { label: "Pill Shape", shape: AndroidShapeTypes.PILL },
21
- { label: "Rounded Shape", shape: AndroidShapeTypes.ROUNDED },
22
- ];
23
-
24
- export default function ButtonsAndroidSection() {
25
- return (
26
- <Fragment>
27
- <h2>Buttons (Android MD3)</h2>
28
-
29
- {StyleTypeList.map(({ label: styleLabel, styleType }) => (
30
- <div key={styleType} className="my-4">
31
- <h4 className="text-primary mb-3">{styleLabel} Buttons</h4>
32
-
33
- {ShapeList.map(({ label: shapeLabel, shape }) => (
34
- <div key={`${styleType}-${shape}`} className="ms-3 mb-4">
35
- <h6 className="text-secondary mb-2">{shapeLabel}</h6>
36
-
37
- {/* Enabled State */}
38
- <div className="mb-3">
39
- <span className="text-muted d-block mb-1 small">Enabled</span>
40
- <div className="d-flex flex-wrap gap-2 py-1">
41
- {VariantList.map((variant) => (
42
- <AndroidButton
43
- key={`${styleType}-${shape}-${variant}-enabled`}
44
- type={ButtonTypes.BUTTON}
45
- styleType={styleType}
46
- shape={shape}
47
- variant={variant}
48
- >
49
- {variant}
50
- </AndroidButton>
51
- ))}
52
- </div>
53
- </div>
54
-
55
- {/* Disabled State */}
56
- <div>
57
- <span className="text-muted d-block mb-1 small">Disabled</span>
58
- <div className="d-flex flex-wrap gap-2 py-1">
59
- {VariantList.map((variant) => (
60
- <AndroidButton
61
- key={`${styleType}-${shape}-${variant}-disabled`}
62
- type={ButtonTypes.BUTTON}
63
- styleType={styleType}
64
- shape={shape}
65
- variant={variant}
66
- disabled={true}
67
- >
68
- {variant}
69
- </AndroidButton>
70
- ))}
71
- </div>
72
- </div>
73
- </div>
74
- ))}
75
- </div>
76
- ))}
77
- </Fragment>
78
- );
79
- }
@@ -1,77 +0,0 @@
1
- import { ButtonTypes } from "../../../types/ButtonTypes.tsx";
2
- import VariantList from "../../VariantList.tsx";
3
- import { BootstrapStyleTypes } from "../../../types/Web/BootstrapStyleTypes.tsx";
4
- import { BootstrapShapeTypes } from "../../../types/Web/BootstrapShapeTypes.tsx";
5
-
6
- import { Fragment } from "react";
7
- import BootstrapButton from "../../../components/buttons/BootstrapButton.tsx";
8
-
9
- // List of Bootstrap styles
10
- const StyleTypeList: Array<{ label: string; styleType: BootstrapStyleTypes }> = [
11
- { label: "Filled", styleType: BootstrapStyleTypes.FILLED },
12
- { label: "Outlined", styleType: BootstrapStyleTypes.OUTLINED },
13
- ];
14
-
15
- // List of supported Bootstrap shapes
16
- const ShapeList: Array<{ label: string; shape: BootstrapShapeTypes }> = [
17
- { label: "Default Shape", shape: BootstrapShapeTypes.STANDARD },
18
- { label: "Pill Shape", shape: BootstrapShapeTypes.PILL },
19
- { label: "Square Shape", shape: BootstrapShapeTypes.SQUARE },
20
- ];
21
-
22
- export default function ButtonsBootstrapSection() {
23
- return (
24
- <Fragment>
25
- <h2>Buttons (Bootstrap Web / Desktop)</h2>
26
-
27
- {StyleTypeList.map(({ label: styleLabel, styleType }) => (
28
- <div key={styleType} className="my-4">
29
- <h4 className="text-primary mb-3">{styleLabel} Buttons</h4>
30
-
31
- {ShapeList.map(({ label: shapeLabel, shape }) => (
32
- <div key={`${styleType}-${shape}`} className="ms-3 mb-4">
33
- <h6 className="text-secondary mb-2">{shapeLabel}</h6>
34
-
35
- {/* Enabled State */}
36
- <div className="mb-3">
37
- <span className="text-muted d-block mb-1 small">Enabled</span>
38
- <div className="d-flex flex-wrap gap-2 py-1">
39
- {VariantList.map((variant) => (
40
- <BootstrapButton
41
- key={`${styleType}-${shape}-${variant}-enabled`}
42
- type={ButtonTypes.BUTTON}
43
- styleType={styleType}
44
- shape={shape}
45
- variant={variant}
46
- >
47
- {variant}
48
- </BootstrapButton>
49
- ))}
50
- </div>
51
- </div>
52
-
53
- {/* Disabled State */}
54
- <div>
55
- <span className="text-muted d-block mb-1 small">Disabled</span>
56
- <div className="d-flex flex-wrap gap-2 py-1">
57
- {VariantList.map((variant) => (
58
- <BootstrapButton
59
- key={`${styleType}-${shape}-${variant}-disabled`}
60
- type={ButtonTypes.BUTTON}
61
- styleType={styleType}
62
- shape={shape}
63
- variant={variant}
64
- disabled={true}
65
- >
66
- {variant}
67
- </BootstrapButton>
68
- ))}
69
- </div>
70
- </div>
71
- </div>
72
- ))}
73
- </div>
74
- ))}
75
- </Fragment>
76
- );
77
- }