uiplex 1.3.1 → 1.4.1

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
@@ -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"}
package/dist/index.cjs CHANGED
@@ -1351,6 +1351,19 @@ const AccordionPanel = ({ children, index = 0, className = "", style, }) => {
1351
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 }) }));
1352
1352
  };
1353
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
+
1354
1367
  const useDisclosure = (defaultIsOpen = false) => {
1355
1368
  const [isOpen, setIsOpen] = React.useState(defaultIsOpen);
1356
1369
  const onOpen = React.useCallback(() => {
@@ -1567,6 +1580,7 @@ exports.AccordionButton = AccordionButton;
1567
1580
  exports.AccordionItem = AccordionItem;
1568
1581
  exports.AccordionPanel = AccordionPanel;
1569
1582
  exports.Box = Box;
1583
+ exports.Breadcrumb = Breadcrumb;
1570
1584
  exports.Button = Button;
1571
1585
  exports.Checkbox = Checkbox;
1572
1586
  exports.CheckboxGroup = CheckboxGroup;
package/dist/index.css CHANGED
@@ -2091,6 +2091,7 @@
2091
2091
 
2092
2092
 
2093
2093
  .ui-tooltip-wrapper {
2094
+ width: fit-content;
2094
2095
  position: relative;
2095
2096
  display: inline-block;
2096
2097
  }
@@ -2449,6 +2450,7 @@
2449
2450
 
2450
2451
 
2451
2452
  .ui-popover-wrapper {
2453
+ width: fit-content;
2452
2454
  position: relative;
2453
2455
  display: inline-block;
2454
2456
  }
@@ -3611,6 +3613,74 @@
3611
3613
  }
3612
3614
 
3613
3615
 
3616
+ .ui-breadcrumb {
3617
+ display: flex;
3618
+ align-items: center;
3619
+ }
3620
+
3621
+ .ui-breadcrumb__list {
3622
+ display: flex;
3623
+ flex-wrap: wrap;
3624
+ align-items: center;
3625
+ list-style: none;
3626
+ margin: 0;
3627
+ padding: 0;
3628
+ gap: 0.5rem;
3629
+ }
3630
+
3631
+ .ui-breadcrumb__item {
3632
+ display: flex;
3633
+ align-items: center;
3634
+ gap: 0.5rem;
3635
+ }
3636
+
3637
+ .ui-breadcrumb__link {
3638
+ color: var(--text-secondary, #6b7280);
3639
+ text-decoration: none;
3640
+ transition: color 0.2s ease-in-out;
3641
+ cursor: pointer;
3642
+ }
3643
+
3644
+ .ui-breadcrumb__link:hover {
3645
+ color: var(--text-primary, #111827);
3646
+ text-decoration: underline;
3647
+ }
3648
+
3649
+ .ui-breadcrumb__link:focus {
3650
+ outline: 2px solid var(--accent-primary, #bb00ed);
3651
+ outline-offset: 2px;
3652
+ border-radius: 2px;
3653
+ }
3654
+
3655
+ .ui-breadcrumb__link--current {
3656
+ color: var(--text-primary, #111827);
3657
+ font-weight: 500;
3658
+ cursor: default;
3659
+ pointer-events: none;
3660
+ }
3661
+
3662
+ .ui-breadcrumb__link--current:hover {
3663
+ text-decoration: none;
3664
+ color: var(--text-primary, #111827);
3665
+ }
3666
+
3667
+ .ui-breadcrumb__text {
3668
+ color: var(--text-secondary, #6b7280);
3669
+ }
3670
+
3671
+ .ui-breadcrumb__text--current {
3672
+ color: var(--text-primary, #111827);
3673
+ font-weight: 500;
3674
+ }
3675
+
3676
+ .ui-breadcrumb__separator {
3677
+ color: var(--text-muted, #9ca3af);
3678
+ user-select: none;
3679
+ display: flex;
3680
+ align-items: center;
3681
+ font-size: 0.875rem;
3682
+ }
3683
+
3614
3684
  /* Uiplex Theme Variables */
3615
3685
 
3616
3686
  :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
@@ -1350,6 +1350,19 @@ const AccordionPanel = ({ children, index = 0, className = "", style, }) => {
1350
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 }) }));
1351
1351
  };
1352
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
+
1353
1366
  const useDisclosure = (defaultIsOpen = false) => {
1354
1367
  const [isOpen, setIsOpen] = useState(defaultIsOpen);
1355
1368
  const onOpen = useCallback(() => {
@@ -1561,4 +1574,4 @@ const ThemeScript = ({ storageKey = "uiplex-theme", defaultTheme = "system" }) =
1561
1574
  } }));
1562
1575
  };
1563
1576
 
1564
- 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.1",
3
+ "version": "1.4.1",
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",