uiplex 1.3.0 → 1.4.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 CHANGED
@@ -323,6 +323,26 @@ import { Link } from 'uiplex';
323
323
  </Link>
324
324
  ```
325
325
 
326
+ ### Breadcrumb
327
+
328
+ Breadcrumb navigation component for showing the current page location.
329
+
330
+ ```tsx
331
+ import { Breadcrumb } from 'uiplex';
332
+
333
+ <Breadcrumb
334
+ items={[
335
+ { label: "Home", href: "/" },
336
+ { label: "Products", href: "/products" },
337
+ { label: "Electronics", href: "/products/electronics" },
338
+ { label: "Laptops" }
339
+ ]}
340
+ separator="/"
341
+ />
342
+ ```
343
+
344
+ **Key Props:** `items` (BreadcrumbItem[]), `separator` (string | React.ReactNode)
345
+
326
346
  ### Layout Components
327
347
 
328
348
  **Box** - Versatile container component
@@ -349,7 +369,7 @@ import { Link } from 'uiplex';
349
369
 
350
370
  **Text** - Typography component
351
371
  ```tsx
352
- <Text size="lg" weight="bold" color="primary">Heading</Text>
372
+ <Text size="lg" weight="bold" variant="primary">Heading</Text>
353
373
  ```
354
374
 
355
375
  ## Hooks
@@ -0,0 +1,15 @@
1
+ import React from "react";
2
+ import "./Breadcrumb.css";
3
+ export interface BreadcrumbItem {
4
+ label: string;
5
+ href?: string;
6
+ onClick?: () => void;
7
+ }
8
+ export interface BreadcrumbProps extends Omit<React.HTMLAttributes<HTMLElement>, "style"> {
9
+ items: BreadcrumbItem[];
10
+ separator?: string | React.ReactNode;
11
+ className?: string;
12
+ style?: React.CSSProperties;
13
+ }
14
+ export declare const Breadcrumb: React.FC<BreadcrumbProps>;
15
+ //# sourceMappingURL=Breadcrumb.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Breadcrumb.d.ts","sourceRoot":"","sources":["../../src/Breadcrumb/Breadcrumb.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,kBAAkB,CAAC;AAE1B,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,eACf,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IACxD,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA2DhD,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { Breadcrumb } from "./Breadcrumb";
2
+ export type { BreadcrumbProps, BreadcrumbItem } from "./Breadcrumb";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Breadcrumb/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
@@ -2,14 +2,15 @@ import React from "react";
2
2
  import "./Text.css";
3
3
  export type TextSize = "sm" | "md" | "lg" | "xl";
4
4
  export type TextWeight = "regular" | "medium" | "semibold" | "bold";
5
- export type TextColor = "primary" | "secondary" | "muted" | "danger" | "success" | "warning";
5
+ export type TextVariant = "primary" | "secondary" | "muted" | "danger" | "success" | "warning";
6
6
  export type TextAlign = "left" | "center" | "right";
7
7
  export interface TextProps extends Omit<React.HTMLAttributes<HTMLElement>, "style"> {
8
8
  as?: keyof JSX.IntrinsicElements;
9
9
  size?: TextSize;
10
10
  weight?: TextWeight;
11
- color?: TextColor;
11
+ variant?: TextVariant;
12
12
  align?: TextAlign;
13
+ color?: string;
13
14
  children: React.ReactNode;
14
15
  style?: React.CSSProperties;
15
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../../src/Text/Text.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,YAAY,CAAC;AAEpB,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACjD,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;AACpE,MAAM,MAAM,SAAS,GACjB,SAAS,GACT,WAAW,GACX,OAAO,GACP,QAAQ,GACR,SAAS,GACT,SAAS,CAAC;AACd,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEpD,MAAM,WAAW,SACf,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IACxD,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,iBAAiB,CAAC;IACjC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CA6BpC,CAAC"}
1
+ {"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../../src/Text/Text.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,YAAY,CAAC;AAEpB,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACjD,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;AACpE,MAAM,MAAM,WAAW,GACnB,SAAS,GACT,WAAW,GACX,OAAO,GACP,QAAQ,GACR,SAAS,GACT,SAAS,CAAC;AACd,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEpD,MAAM,WAAW,SACf,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IACxD,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,iBAAiB,CAAC;IACjC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAmCpC,CAAC"}
@@ -1,3 +1,3 @@
1
1
  export { Text } from "./Text";
2
- export type { TextProps, TextSize, TextWeight, TextColor, TextAlign } from "./Text";
2
+ export type { TextProps, TextSize, TextWeight, TextVariant, TextAlign } from "./Text";
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Text/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Text/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC"}
package/dist/index.cjs CHANGED
@@ -123,19 +123,23 @@ const CheckboxGroup = ({ name, value = [], options, disabled = false, size = "md
123
123
  return (jsxRuntime.jsx("div", { className: groupClasses, children: options.map((option, index) => (jsxRuntime.jsx(Checkbox, { name: name, value: option.value, checked: value.includes(option.value), disabled: disabled || option.disabled, label: option.label, description: option.description, size: size, colorScheme: colorScheme, onChange: handleChange }, `${name}-${option.value}-${index}`))) }));
124
124
  };
125
125
 
126
- const Text = ({ as = "p", size = "md", weight = "regular", color = "primary", align = "left", className = "", children, style, ...props }) => {
126
+ const Text = ({ as = "p", size = "md", weight = "regular", variant = "primary", align = "left", color, className = "", children, style, ...props }) => {
127
127
  const Component = as;
128
128
  const classes = [
129
129
  "ui-text",
130
130
  `ui-text--${size}`,
131
131
  `ui-text--${weight}`,
132
- `ui-text--${color}`,
132
+ `ui-text--${variant}`,
133
133
  `ui-text--align-${align}`,
134
134
  className,
135
135
  ]
136
136
  .filter(Boolean)
137
137
  .join(" ");
138
- return (jsxRuntime.jsx(Component, { className: classes, style: style, ...props, children: children }));
138
+ const mergedStyle = {
139
+ ...(color && { color }),
140
+ ...style,
141
+ };
142
+ return (jsxRuntime.jsx(Component, { className: classes, style: mergedStyle, ...props, children: children }));
139
143
  };
140
144
 
141
145
  const ModalOverlay = ({ onClick, className = "", }) => {
@@ -1347,6 +1351,19 @@ const AccordionPanel = ({ children, index = 0, className = "", style, }) => {
1347
1351
  return (jsxRuntime.jsx("div", { id: `accordion-panel-${index}`, role: "region", "aria-labelledby": `accordion-button-${index}`, hidden: !isOpen, className: panelClasses, style: style, children: jsxRuntime.jsx("div", { className: "ui-accordion-panel__content", children: children }) }));
1348
1352
  };
1349
1353
 
1354
+ const Breadcrumb = ({ items, separator = "/", className = "", style, ...props }) => {
1355
+ if (!items || items.length === 0) {
1356
+ return null;
1357
+ }
1358
+ const isLastItem = (index) => index === items.length - 1;
1359
+ return (jsxRuntime.jsx("nav", { className: `ui-breadcrumb ${className}`.trim(), style: style, "aria-label": "Breadcrumb", ...props, children: jsxRuntime.jsx("ol", { className: "ui-breadcrumb__list", children: items.map((item, index) => (jsxRuntime.jsxs("li", { className: "ui-breadcrumb__item", children: [item.href || item.onClick ? (jsxRuntime.jsx("a", { href: item.href, onClick: (e) => {
1360
+ if (item.onClick) {
1361
+ e.preventDefault();
1362
+ item.onClick();
1363
+ }
1364
+ }, className: `ui-breadcrumb__link ${isLastItem(index) ? "ui-breadcrumb__link--current" : ""}`.trim(), "aria-current": isLastItem(index) ? "page" : undefined, children: item.label })) : (jsxRuntime.jsx("span", { className: `ui-breadcrumb__text ${isLastItem(index) ? "ui-breadcrumb__text--current" : ""}`.trim(), "aria-current": isLastItem(index) ? "page" : undefined, children: item.label })), !isLastItem(index) && (jsxRuntime.jsx("span", { className: "ui-breadcrumb__separator", "aria-hidden": "true", children: separator }))] }, index))) }) }));
1365
+ };
1366
+
1350
1367
  const useDisclosure = (defaultIsOpen = false) => {
1351
1368
  const [isOpen, setIsOpen] = React.useState(defaultIsOpen);
1352
1369
  const onOpen = React.useCallback(() => {
@@ -1563,6 +1580,7 @@ exports.AccordionButton = AccordionButton;
1563
1580
  exports.AccordionItem = AccordionItem;
1564
1581
  exports.AccordionPanel = AccordionPanel;
1565
1582
  exports.Box = Box;
1583
+ exports.Breadcrumb = Breadcrumb;
1566
1584
  exports.Button = Button;
1567
1585
  exports.Checkbox = Checkbox;
1568
1586
  exports.CheckboxGroup = CheckboxGroup;
package/dist/index.css CHANGED
@@ -3611,6 +3611,74 @@
3611
3611
  }
3612
3612
 
3613
3613
 
3614
+ .ui-breadcrumb {
3615
+ display: flex;
3616
+ align-items: center;
3617
+ }
3618
+
3619
+ .ui-breadcrumb__list {
3620
+ display: flex;
3621
+ flex-wrap: wrap;
3622
+ align-items: center;
3623
+ list-style: none;
3624
+ margin: 0;
3625
+ padding: 0;
3626
+ gap: 0.5rem;
3627
+ }
3628
+
3629
+ .ui-breadcrumb__item {
3630
+ display: flex;
3631
+ align-items: center;
3632
+ gap: 0.5rem;
3633
+ }
3634
+
3635
+ .ui-breadcrumb__link {
3636
+ color: var(--text-secondary, #6b7280);
3637
+ text-decoration: none;
3638
+ transition: color 0.2s ease-in-out;
3639
+ cursor: pointer;
3640
+ }
3641
+
3642
+ .ui-breadcrumb__link:hover {
3643
+ color: var(--text-primary, #111827);
3644
+ text-decoration: underline;
3645
+ }
3646
+
3647
+ .ui-breadcrumb__link:focus {
3648
+ outline: 2px solid var(--accent-primary, #bb00ed);
3649
+ outline-offset: 2px;
3650
+ border-radius: 2px;
3651
+ }
3652
+
3653
+ .ui-breadcrumb__link--current {
3654
+ color: var(--text-primary, #111827);
3655
+ font-weight: 500;
3656
+ cursor: default;
3657
+ pointer-events: none;
3658
+ }
3659
+
3660
+ .ui-breadcrumb__link--current:hover {
3661
+ text-decoration: none;
3662
+ color: var(--text-primary, #111827);
3663
+ }
3664
+
3665
+ .ui-breadcrumb__text {
3666
+ color: var(--text-secondary, #6b7280);
3667
+ }
3668
+
3669
+ .ui-breadcrumb__text--current {
3670
+ color: var(--text-primary, #111827);
3671
+ font-weight: 500;
3672
+ }
3673
+
3674
+ .ui-breadcrumb__separator {
3675
+ color: var(--text-muted, #9ca3af);
3676
+ user-select: none;
3677
+ display: flex;
3678
+ align-items: center;
3679
+ font-size: 0.875rem;
3680
+ }
3681
+
3614
3682
  /* Uiplex Theme Variables */
3615
3683
 
3616
3684
  :root {
package/dist/index.d.ts CHANGED
@@ -19,6 +19,7 @@ import './Toast/Toast.css';
19
19
  import './Popover/Popover.css';
20
20
  import './Tabs/Tabs.css';
21
21
  import './Accordion/Accordion.css';
22
+ import './Breadcrumb/Breadcrumb.css';
22
23
  import './Theme/theme.css';
23
24
  export { Button } from './Button';
24
25
  export type { ButtonProps } from './Button';
@@ -29,7 +30,7 @@ export type { RadioProps, RadioGroupProps } from './Radio';
29
30
  export { Checkbox, CheckboxGroup } from './Checkbox';
30
31
  export type { CheckboxProps, CheckboxGroupProps } from './Checkbox';
31
32
  export { Text } from './Text';
32
- export type { TextProps, TextSize, TextWeight, TextColor, TextAlign } from './Text';
33
+ export type { TextProps, TextSize, TextWeight, TextVariant, TextAlign } from './Text';
33
34
  export { Modal, ModalOverlay, ModalContent, ModalHeader, ModalBody, ModalFooter, ModalCloseButton, } from './Modal';
34
35
  export type { ModalProps, ModalOverlayProps, ModalContentProps, ModalHeaderProps, ModalBodyProps, ModalFooterProps, ModalCloseButtonProps, } from './Modal';
35
36
  export { Box } from './Box';
@@ -62,6 +63,8 @@ export { Tabs, TabList, Tab, TabPanels, TabPanel } from './Tabs';
62
63
  export type { TabsProps, TabListProps, TabProps, TabPanelsProps, TabPanelProps } from './Tabs';
63
64
  export { Accordion, AccordionItem, AccordionButton, AccordionPanel } from './Accordion';
64
65
  export type { AccordionProps, AccordionItemProps, AccordionButtonProps, AccordionPanelProps } from './Accordion';
66
+ export { Breadcrumb } from './Breadcrumb';
67
+ export type { BreadcrumbProps, BreadcrumbItem } from './Breadcrumb';
65
68
  export { useDisclosure } from './hooks';
66
69
  export type { UseDisclosureReturn } from './hooks';
67
70
  export { useOutsideClick } from './hooks';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -122,19 +122,23 @@ const CheckboxGroup = ({ name, value = [], options, disabled = false, size = "md
122
122
  return (jsx("div", { className: groupClasses, children: options.map((option, index) => (jsx(Checkbox, { name: name, value: option.value, checked: value.includes(option.value), disabled: disabled || option.disabled, label: option.label, description: option.description, size: size, colorScheme: colorScheme, onChange: handleChange }, `${name}-${option.value}-${index}`))) }));
123
123
  };
124
124
 
125
- const Text = ({ as = "p", size = "md", weight = "regular", color = "primary", align = "left", className = "", children, style, ...props }) => {
125
+ const Text = ({ as = "p", size = "md", weight = "regular", variant = "primary", align = "left", color, className = "", children, style, ...props }) => {
126
126
  const Component = as;
127
127
  const classes = [
128
128
  "ui-text",
129
129
  `ui-text--${size}`,
130
130
  `ui-text--${weight}`,
131
- `ui-text--${color}`,
131
+ `ui-text--${variant}`,
132
132
  `ui-text--align-${align}`,
133
133
  className,
134
134
  ]
135
135
  .filter(Boolean)
136
136
  .join(" ");
137
- return (jsx(Component, { className: classes, style: style, ...props, children: children }));
137
+ const mergedStyle = {
138
+ ...(color && { color }),
139
+ ...style,
140
+ };
141
+ return (jsx(Component, { className: classes, style: mergedStyle, ...props, children: children }));
138
142
  };
139
143
 
140
144
  const ModalOverlay = ({ onClick, className = "", }) => {
@@ -1346,6 +1350,19 @@ const AccordionPanel = ({ children, index = 0, className = "", style, }) => {
1346
1350
  return (jsx("div", { id: `accordion-panel-${index}`, role: "region", "aria-labelledby": `accordion-button-${index}`, hidden: !isOpen, className: panelClasses, style: style, children: jsx("div", { className: "ui-accordion-panel__content", children: children }) }));
1347
1351
  };
1348
1352
 
1353
+ const Breadcrumb = ({ items, separator = "/", className = "", style, ...props }) => {
1354
+ if (!items || items.length === 0) {
1355
+ return null;
1356
+ }
1357
+ const isLastItem = (index) => index === items.length - 1;
1358
+ return (jsx("nav", { className: `ui-breadcrumb ${className}`.trim(), style: style, "aria-label": "Breadcrumb", ...props, children: jsx("ol", { className: "ui-breadcrumb__list", children: items.map((item, index) => (jsxs("li", { className: "ui-breadcrumb__item", children: [item.href || item.onClick ? (jsx("a", { href: item.href, onClick: (e) => {
1359
+ if (item.onClick) {
1360
+ e.preventDefault();
1361
+ item.onClick();
1362
+ }
1363
+ }, className: `ui-breadcrumb__link ${isLastItem(index) ? "ui-breadcrumb__link--current" : ""}`.trim(), "aria-current": isLastItem(index) ? "page" : undefined, children: item.label })) : (jsx("span", { className: `ui-breadcrumb__text ${isLastItem(index) ? "ui-breadcrumb__text--current" : ""}`.trim(), "aria-current": isLastItem(index) ? "page" : undefined, children: item.label })), !isLastItem(index) && (jsx("span", { className: "ui-breadcrumb__separator", "aria-hidden": "true", children: separator }))] }, index))) }) }));
1364
+ };
1365
+
1349
1366
  const useDisclosure = (defaultIsOpen = false) => {
1350
1367
  const [isOpen, setIsOpen] = useState(defaultIsOpen);
1351
1368
  const onOpen = useCallback(() => {
@@ -1557,4 +1574,4 @@ const ThemeScript = ({ storageKey = "uiplex-theme", defaultTheme = "system" }) =
1557
1574
  } }));
1558
1575
  };
1559
1576
 
1560
- export { Accordion, AccordionButton, AccordionItem, AccordionPanel, Box, Button, Checkbox, CheckboxGroup, CircularProgress, CircularProgressLabel, Flex, FormControl, FormErrorMessage, FormLabel, Grid, IconButton, Input, Link, Loader, Modal, ModalBody, ModalCloseButton, ModalContent, ModalFooter, ModalHeader, ModalOverlay, Popover, PopoverBody, PopoverCloseButton, PopoverContent, PopoverFooter, PopoverHeader, Radio, RadioGroup, Select, Tab, TabList, TabPanel, TabPanels, Tabs, Text, Textarea, ThemeProvider, ThemeScript, ThemeToggle, ToastStatic as Toast, Toast as ToastComponent, ToastContainer, ToastContainerGlobal, Tooltip, useDisclosure, useOutsideClick, useTheme };
1577
+ export { Accordion, AccordionButton, AccordionItem, AccordionPanel, Box, Breadcrumb, Button, Checkbox, CheckboxGroup, CircularProgress, CircularProgressLabel, Flex, FormControl, FormErrorMessage, FormLabel, Grid, IconButton, Input, Link, Loader, Modal, ModalBody, ModalCloseButton, ModalContent, ModalFooter, ModalHeader, ModalOverlay, Popover, PopoverBody, PopoverCloseButton, PopoverContent, PopoverFooter, PopoverHeader, Radio, RadioGroup, Select, Tab, TabList, TabPanel, TabPanels, Tabs, Text, Textarea, ThemeProvider, ThemeScript, ThemeToggle, ToastStatic as Toast, Toast as ToastComponent, ToastContainer, ToastContainerGlobal, Tooltip, useDisclosure, useOutsideClick, useTheme };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "uiplex",
3
- "version": "1.3.0",
3
+ "version": "1.4.0",
4
4
  "description": "A modern React component library with TypeScript support, featuring Button, Loader, Radio components and a comprehensive theme system",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.js",