periplo-ui 4.11.2 → 4.11.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.
- package/dist/components/Accordion/Accordion.js +40 -26
- package/dist/components/Accordion/Accordion.js.map +1 -1
- package/dist/components/Accordion/index.js +2 -2
- package/dist/components/Avatar/Avatar.js +74 -55
- package/dist/components/Avatar/Avatar.js.map +1 -1
- package/dist/components/Avatar/index.js +2 -2
- package/dist/components/Badge/Badge.js +47 -32
- package/dist/components/Badge/Badge.js.map +1 -1
- package/dist/components/Badge/index.js +2 -2
- package/dist/components/Breadcrumb/Breadcrumb.d.ts +4 -4
- package/dist/components/Breadcrumb/Breadcrumb.js +177 -142
- package/dist/components/Breadcrumb/Breadcrumb.js.map +1 -1
- package/dist/components/Breadcrumb/index.js +2 -2
- package/dist/components/Button/Button.d.ts +3 -3
- package/dist/components/Button/Button.js +122 -93
- package/dist/components/Button/Button.js.map +1 -1
- package/dist/components/Button/index.js +2 -2
- package/dist/components/Calendar/Calendar.d.ts +2 -1
- package/dist/components/Calendar/Calendar.js +247 -227
- package/dist/components/Calendar/Calendar.js.map +1 -1
- package/dist/components/Calendar/index.js +2 -2
- package/dist/components/Card/Card.js +24 -27
- package/dist/components/Card/Card.js.map +1 -1
- package/dist/components/Card/index.js +2 -2
- package/dist/components/Carousel/Carousel.js +144 -146
- package/dist/components/Carousel/Carousel.js.map +1 -1
- package/dist/components/Carousel/index.js +2 -2
- package/dist/components/Checkbox/Checkbox.js +46 -28
- package/dist/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/Checkbox/index.js +2 -2
- package/dist/components/Chip/Chip.d.ts +1 -1
- package/dist/components/Chip/Chip.js +94 -79
- package/dist/components/Chip/Chip.js.map +1 -1
- package/dist/components/Chip/index.js +2 -2
- package/dist/components/Collapsible/Collapsible.js +8 -7
- package/dist/components/Collapsible/Collapsible.js.map +1 -1
- package/dist/components/Collapsible/index.js +2 -2
- package/dist/components/Combobox/Combobox.d.ts +1 -1
- package/dist/components/Combobox/Combobox.js +132 -186
- package/dist/components/Combobox/Combobox.js.map +1 -1
- package/dist/components/Combobox/ComboboxOptionWithTooltip.d.ts +1 -1
- package/dist/components/Combobox/ComboboxOptionWithTooltip.js +27 -21
- package/dist/components/Combobox/ComboboxOptionWithTooltip.js.map +1 -1
- package/dist/components/Combobox/ComboboxTrigger.js +27 -44
- package/dist/components/Combobox/ComboboxTrigger.js.map +1 -1
- package/dist/components/Combobox/StaticComboboxList.d.ts +1 -1
- package/dist/components/Combobox/StaticComboboxList.js +97 -78
- package/dist/components/Combobox/StaticComboboxList.js.map +1 -1
- package/dist/components/Combobox/VirtualizedComboboxList.d.ts +1 -1
- package/dist/components/Combobox/VirtualizedComboboxList.js +89 -98
- package/dist/components/Combobox/VirtualizedComboboxList.js.map +1 -1
- package/dist/components/Combobox/hooks/index.js +5 -5
- package/dist/components/Combobox/hooks/useComboboxOpenState.js +18 -15
- package/dist/components/Combobox/hooks/useComboboxOpenState.js.map +1 -1
- package/dist/components/Combobox/hooks/useComboboxSelection.js +48 -46
- package/dist/components/Combobox/hooks/useComboboxSelection.js.map +1 -1
- package/dist/components/Combobox/hooks/useDebouncedState.js +17 -16
- package/dist/components/Combobox/hooks/useDebouncedState.js.map +1 -1
- package/dist/components/Combobox/hooks/useDisplayValue.js +30 -23
- package/dist/components/Combobox/hooks/useDisplayValue.js.map +1 -1
- package/dist/components/Combobox/index.js +6 -6
- package/dist/components/Combobox/types.js +1 -2
- package/dist/components/Combobox/useCombobox.js +66 -55
- package/dist/components/Combobox/useCombobox.js.map +1 -1
- package/dist/components/Command/Command.d.ts +2 -2
- package/dist/components/Command/Command.js +72 -68
- package/dist/components/Command/Command.js.map +1 -1
- package/dist/components/Command/index.js +2 -2
- package/dist/components/DataTable/DataTable.d.ts +2 -1
- package/dist/components/DataTable/DataTable.js +191 -202
- package/dist/components/DataTable/DataTable.js.map +1 -1
- package/dist/components/DataTable/components/DataTableBody.d.ts +1 -1
- package/dist/components/DataTable/components/DataTableBody.js +89 -106
- package/dist/components/DataTable/components/DataTableBody.js.map +1 -1
- package/dist/components/DataTable/components/DataTableCell.d.ts +1 -1
- package/dist/components/DataTable/components/DataTableCell.js +24 -26
- package/dist/components/DataTable/components/DataTableCell.js.map +1 -1
- package/dist/components/DataTable/components/DataTableCheckbox.d.ts +1 -1
- package/dist/components/DataTable/components/DataTableCheckbox.js +56 -63
- package/dist/components/DataTable/components/DataTableCheckbox.js.map +1 -1
- package/dist/components/DataTable/components/DataTableGroupRow.d.ts +1 -1
- package/dist/components/DataTable/components/DataTableGroupRow.js +35 -31
- package/dist/components/DataTable/components/DataTableGroupRow.js.map +1 -1
- package/dist/components/DataTable/components/DataTablePagination.d.ts +1 -1
- package/dist/components/DataTable/components/DataTablePagination.js +58 -70
- package/dist/components/DataTable/components/DataTablePagination.js.map +1 -1
- package/dist/components/DataTable/components/DataTableToolbar.d.ts +1 -1
- package/dist/components/DataTable/components/DataTableToolbar.js +140 -138
- package/dist/components/DataTable/components/DataTableToolbar.js.map +1 -1
- package/dist/components/DataTable/components/dataTableCellStyles.d.ts +1 -1
- package/dist/components/DataTable/components/dataTableCellStyles.js +19 -23
- package/dist/components/DataTable/components/dataTableCellStyles.js.map +1 -1
- package/dist/components/DataTable/data.js +563 -496
- package/dist/components/DataTable/data.js.map +1 -1
- package/dist/components/DataTable/hooks/useGroupExpansion.js +31 -32
- package/dist/components/DataTable/hooks/useGroupExpansion.js.map +1 -1
- package/dist/components/DataTable/hooks/useSelectColumn.d.ts +3 -3
- package/dist/components/DataTable/hooks/useSelectColumn.js +66 -75
- package/dist/components/DataTable/hooks/useSelectColumn.js.map +1 -1
- package/dist/components/DataTable/hooks/useSelection.js +30 -33
- package/dist/components/DataTable/hooks/useSelection.js.map +1 -1
- package/dist/components/DataTable/index.js +2 -2
- package/dist/components/DataTable/types.js +1 -2
- package/dist/components/DataTable/utils.js +16 -12
- package/dist/components/DataTable/utils.js.map +1 -1
- package/dist/components/DatePicker/DatePicker.d.ts +2 -1
- package/dist/components/DatePicker/DatePicker.js +210 -258
- package/dist/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/components/DatePicker/hooks/useLocale.js +28 -30
- package/dist/components/DatePicker/hooks/useLocale.js.map +1 -1
- package/dist/components/DatePicker/index.js +2 -2
- package/dist/components/Dialog/Dialog.d.ts +2 -2
- package/dist/components/Dialog/Dialog.js +60 -67
- package/dist/components/Dialog/Dialog.js.map +1 -1
- package/dist/components/Dialog/index.js +2 -2
- package/dist/components/DropdownMenu/DropdownMenu.d.ts +1 -1
- package/dist/components/DropdownMenu/DropdownMenu.js +73 -110
- package/dist/components/DropdownMenu/DropdownMenu.js.map +1 -1
- package/dist/components/DropdownMenu/index.js +2 -2
- package/dist/components/Form/Form.d.ts +6 -4
- package/dist/components/Form/Form.js +88 -84
- package/dist/components/Form/Form.js.map +1 -1
- package/dist/components/Form/Page.d.ts +1 -1
- package/dist/components/Form/Page.js +7 -6
- package/dist/components/Form/Page.js.map +1 -1
- package/dist/components/Form/index.js +2 -2
- package/dist/components/InlineMultiSelect/InlineMultiSelect.d.ts +2 -1
- package/dist/components/InlineMultiSelect/InlineMultiSelect.js +135 -158
- package/dist/components/InlineMultiSelect/InlineMultiSelect.js.map +1 -1
- package/dist/components/InlineMultiSelect/index.js +2 -2
- package/dist/components/Input/Input.js +153 -224
- package/dist/components/Input/Input.js.map +1 -1
- package/dist/components/Input/index.js +2 -2
- package/dist/components/InputDate/InputDate.js +93 -135
- package/dist/components/InputDate/InputDate.js.map +1 -1
- package/dist/components/InputDate/index.js +2 -2
- package/dist/components/Label/Label.js +15 -10
- package/dist/components/Label/Label.js.map +1 -1
- package/dist/components/Label/index.js +2 -2
- package/dist/components/LazyDatePicker/LazyDatePicker.d.ts +1 -1
- package/dist/components/LazyDatePicker/LazyDatePicker.js +39 -35
- package/dist/components/LazyDatePicker/LazyDatePicker.js.map +1 -1
- package/dist/components/LazyDatePicker/index.js +2 -2
- package/dist/components/Marquee/Marquee.d.ts +1 -1
- package/dist/components/Marquee/Marquee.js +24 -43
- package/dist/components/Marquee/Marquee.js.map +1 -1
- package/dist/components/Marquee/index.js +2 -2
- package/dist/components/MultiSelect/MultiSelect.js +142 -129
- package/dist/components/MultiSelect/MultiSelect.js.map +1 -1
- package/dist/components/MultiSelect/Page.d.ts +1 -1
- package/dist/components/MultiSelect/Page.js +7 -6
- package/dist/components/MultiSelect/Page.js.map +1 -1
- package/dist/components/MultiSelect/index.js +2 -2
- package/dist/components/NotificationBadge/NotificationBadge.js +85 -82
- package/dist/components/NotificationBadge/NotificationBadge.js.map +1 -1
- package/dist/components/NotificationBadge/index.js +2 -2
- package/dist/components/Pagination/Pagination.d.ts +1 -1
- package/dist/components/Pagination/Pagination.js +193 -201
- package/dist/components/Pagination/Pagination.js.map +1 -1
- package/dist/components/Pagination/index.js +2 -2
- package/dist/components/PhoneInput/PhoneInput.js +171 -186
- package/dist/components/PhoneInput/PhoneInput.js.map +1 -1
- package/dist/components/PhoneInput/hooks/index.js +2 -2
- package/dist/components/PhoneInput/hooks/usePhoneField.js +134 -150
- package/dist/components/PhoneInput/hooks/usePhoneField.js.map +1 -1
- package/dist/components/PhoneInput/index.js +3 -3
- package/dist/components/PhoneInput/phone.js +103 -102
- package/dist/components/PhoneInput/phone.js.map +1 -1
- package/dist/components/PhoneInput/types.js +1 -2
- package/dist/components/Popover/Popover.d.ts +1 -1
- package/dist/components/Popover/Popover.js +78 -50
- package/dist/components/Popover/Popover.js.map +1 -1
- package/dist/components/Popover/index.js +2 -2
- package/dist/components/Progress/Progress.js +50 -76
- package/dist/components/Progress/Progress.js.map +1 -1
- package/dist/components/Progress/hooks/useFakeProgress.js +64 -73
- package/dist/components/Progress/hooks/useFakeProgress.js.map +1 -1
- package/dist/components/Progress/index.js +2 -2
- package/dist/components/RadioGroup/Page.d.ts +1 -1
- package/dist/components/RadioGroup/Page.js +7 -6
- package/dist/components/RadioGroup/Page.js.map +1 -1
- package/dist/components/RadioGroup/RadioGroup.js +70 -71
- package/dist/components/RadioGroup/RadioGroup.js.map +1 -1
- package/dist/components/RadioGroup/index.js +2 -2
- package/dist/components/Select/Select.d.ts +1 -1
- package/dist/components/Select/Select.js +136 -177
- package/dist/components/Select/Select.js.map +1 -1
- package/dist/components/Select/index.js +2 -2
- package/dist/components/Separator/Separator.js +16 -19
- package/dist/components/Separator/Separator.js.map +1 -1
- package/dist/components/Separator/index.js +2 -2
- package/dist/components/Sheet/Sheet.d.ts +3 -3
- package/dist/components/Sheet/Sheet.js +69 -68
- package/dist/components/Sheet/Sheet.js.map +1 -1
- package/dist/components/Sheet/index.js +2 -2
- package/dist/components/Sidebar/Sidebar.d.ts +2 -2
- package/dist/components/Sidebar/Sidebar.js +461 -564
- package/dist/components/Sidebar/Sidebar.js.map +1 -1
- package/dist/components/Sidebar/index.js +2 -2
- package/dist/components/Skeleton/Skeleton.d.ts +1 -1
- package/dist/components/Skeleton/Skeleton.js +11 -6
- package/dist/components/Skeleton/Skeleton.js.map +1 -1
- package/dist/components/Skeleton/index.js +2 -2
- package/dist/components/StarRating/StarRating.d.ts +1 -1
- package/dist/components/StarRating/StarRating.js +55 -56
- package/dist/components/StarRating/StarRating.js.map +1 -1
- package/dist/components/StarRating/index.js +2 -2
- package/dist/components/Table/Table.js +72 -42
- package/dist/components/Table/Table.js.map +1 -1
- package/dist/components/Table/index.js +2 -2
- package/dist/components/Tabs/Tabs.js +58 -79
- package/dist/components/Tabs/Tabs.js.map +1 -1
- package/dist/components/Tabs/index.js +2 -2
- package/dist/components/Textarea/Textarea.js +35 -40
- package/dist/components/Textarea/Textarea.js.map +1 -1
- package/dist/components/Textarea/index.js +2 -2
- package/dist/components/Toaster/Toaster.d.ts +1 -1
- package/dist/components/Toaster/Toaster.js +86 -98
- package/dist/components/Toaster/Toaster.js.map +1 -1
- package/dist/components/Toaster/index.js +2 -2
- package/dist/components/Toggle/Toggle.js +58 -44
- package/dist/components/Toggle/Toggle.js.map +1 -1
- package/dist/components/Toggle/index.js +2 -2
- package/dist/components/ToggleGroup/ToggleGroup.js +36 -42
- package/dist/components/ToggleGroup/ToggleGroup.js.map +1 -1
- package/dist/components/ToggleGroup/index.js +2 -2
- package/dist/components/Tooltip/Tooltip.d.ts +1 -1
- package/dist/components/Tooltip/Tooltip.js +87 -85
- package/dist/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/Tooltip/index.js +2 -2
- package/dist/components/TruncatedTypographyWithTooltip/TruncatedTypographyWithTooltip.d.ts +1 -1
- package/dist/components/TruncatedTypographyWithTooltip/TruncatedTypographyWithTooltip.js +48 -39
- package/dist/components/TruncatedTypographyWithTooltip/TruncatedTypographyWithTooltip.js.map +1 -1
- package/dist/components/TruncatedTypographyWithTooltip/index.js +2 -2
- package/dist/components/Typography/Typography.js +107 -120
- package/dist/components/Typography/Typography.js.map +1 -1
- package/dist/components/Typography/index.js +2 -2
- package/dist/index.js +52 -52
- package/dist/lib/dateUtils.js +54 -45
- package/dist/lib/dateUtils.js.map +1 -1
- package/dist/lib/useMobile.js +17 -16
- package/dist/lib/useMobile.js.map +1 -1
- package/dist/lib/useTouchDevice.js +16 -15
- package/dist/lib/useTouchDevice.js.map +1 -1
- package/dist/lib/utils.js +20 -11
- package/dist/lib/utils.js.map +1 -1
- package/dist/vite-env.d.js +1 -2
- package/package.json +102 -102
- package/dist/components/Accordion/index.js.map +0 -1
- package/dist/components/Avatar/index.js.map +0 -1
- package/dist/components/Badge/index.js.map +0 -1
- package/dist/components/Breadcrumb/index.js.map +0 -1
- package/dist/components/Button/index.js.map +0 -1
- package/dist/components/Calendar/index.js.map +0 -1
- package/dist/components/Card/index.js.map +0 -1
- package/dist/components/Carousel/index.js.map +0 -1
- package/dist/components/Checkbox/index.js.map +0 -1
- package/dist/components/Chip/index.js.map +0 -1
- package/dist/components/Collapsible/index.js.map +0 -1
- package/dist/components/Combobox/hooks/index.js.map +0 -1
- package/dist/components/Combobox/index.js.map +0 -1
- package/dist/components/Combobox/types.js.map +0 -1
- package/dist/components/Command/index.js.map +0 -1
- package/dist/components/DataTable/index.js.map +0 -1
- package/dist/components/DataTable/types.js.map +0 -1
- package/dist/components/DatePicker/index.js.map +0 -1
- package/dist/components/Dialog/index.js.map +0 -1
- package/dist/components/DropdownMenu/index.js.map +0 -1
- package/dist/components/Form/index.js.map +0 -1
- package/dist/components/InlineMultiSelect/index.js.map +0 -1
- package/dist/components/Input/index.js.map +0 -1
- package/dist/components/InputDate/index.js.map +0 -1
- package/dist/components/Label/index.js.map +0 -1
- package/dist/components/LazyDatePicker/index.js.map +0 -1
- package/dist/components/Marquee/index.js.map +0 -1
- package/dist/components/MultiSelect/index.js.map +0 -1
- package/dist/components/NotificationBadge/index.js.map +0 -1
- package/dist/components/Pagination/index.js.map +0 -1
- package/dist/components/PhoneInput/hooks/index.js.map +0 -1
- package/dist/components/PhoneInput/index.js.map +0 -1
- package/dist/components/PhoneInput/types.js.map +0 -1
- package/dist/components/Popover/index.js.map +0 -1
- package/dist/components/Progress/index.js.map +0 -1
- package/dist/components/RadioGroup/index.js.map +0 -1
- package/dist/components/Select/index.js.map +0 -1
- package/dist/components/Separator/index.js.map +0 -1
- package/dist/components/Sheet/index.js.map +0 -1
- package/dist/components/Sidebar/index.js.map +0 -1
- package/dist/components/Skeleton/index.js.map +0 -1
- package/dist/components/StarRating/index.js.map +0 -1
- package/dist/components/Table/index.js.map +0 -1
- package/dist/components/Tabs/index.js.map +0 -1
- package/dist/components/Textarea/index.js.map +0 -1
- package/dist/components/Toaster/index.js.map +0 -1
- package/dist/components/Toggle/index.js.map +0 -1
- package/dist/components/ToggleGroup/index.js.map +0 -1
- package/dist/components/Tooltip/index.js.map +0 -1
- package/dist/components/TruncatedTypographyWithTooltip/index.js.map +0 -1
- package/dist/components/Typography/index.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/vite-env.d.js.map +0 -1
|
@@ -1,158 +1,193 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import { cn } from "../../lib/utils.js";
|
|
2
|
+
import { Typography } from "../Typography/Typography.js";
|
|
3
|
+
import * as React$1 from "react";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
import { CaretRightIcon } from "@phosphor-icons/react/dist/ssr/CaretRight";
|
|
6
|
+
import { DotsThreeIcon } from "@phosphor-icons/react/dist/ssr/DotsThree";
|
|
7
|
+
import { Slot } from "@radix-ui/react-slot";
|
|
8
|
+
//#region src/components/Breadcrumb/Breadcrumb.tsx
|
|
9
|
+
/**
|
|
10
|
+
* Root container for the breadcrumb navigation.
|
|
11
|
+
* Provides the overall context and ARIA labeling.
|
|
12
|
+
*/
|
|
13
|
+
var BreadcrumbRoot = React$1.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx("nav", {
|
|
14
|
+
ref,
|
|
15
|
+
"aria-label": "breadcrumb",
|
|
16
|
+
...props
|
|
17
|
+
}));
|
|
10
18
|
BreadcrumbRoot.displayName = "BreadcrumbRoot";
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
...props
|
|
21
|
-
}
|
|
22
|
-
)
|
|
23
|
-
);
|
|
19
|
+
/**
|
|
20
|
+
* Container for breadcrumb items.
|
|
21
|
+
* Handles layout and spacing of the breadcrumb navigation.
|
|
22
|
+
*/
|
|
23
|
+
var BreadcrumbList = React$1.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("ol", {
|
|
24
|
+
ref,
|
|
25
|
+
className: cn("text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm wrap-break-word sm:gap-2.5", className),
|
|
26
|
+
...props
|
|
27
|
+
}));
|
|
24
28
|
BreadcrumbList.displayName = "BreadcrumbList";
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
29
|
+
/**
|
|
30
|
+
* Individual breadcrumb item container.
|
|
31
|
+
* Wraps a link or the current page indicator.
|
|
32
|
+
*/
|
|
33
|
+
var BreadcrumbItem = React$1.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("li", {
|
|
34
|
+
ref,
|
|
35
|
+
className: cn("inline-flex items-center gap-1.5", className),
|
|
36
|
+
...props
|
|
37
|
+
}));
|
|
28
38
|
BreadcrumbItem.displayName = "BreadcrumbItem";
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
default:
|
|
38
|
-
return "";
|
|
39
|
-
}
|
|
39
|
+
/** Get class names for text transform styling */
|
|
40
|
+
var getTextTransformClass = (transform) => {
|
|
41
|
+
switch (transform) {
|
|
42
|
+
case "capitalize-first": return "[&]:has-[::first-letter]:uppercase";
|
|
43
|
+
case "capitalize": return "capitalize";
|
|
44
|
+
case "uppercase": return "uppercase";
|
|
45
|
+
default: return "";
|
|
46
|
+
}
|
|
40
47
|
};
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
48
|
+
/**
|
|
49
|
+
* Interactive link element for breadcrumb navigation.
|
|
50
|
+
* Can be rendered as a custom element using asChild.
|
|
51
|
+
*/
|
|
52
|
+
var BreadcrumbLink = React$1.forwardRef(({ asChild, className, textTransform = "capitalize-first", children, ...props }, ref) => {
|
|
53
|
+
const Comp = asChild ? Slot : "a";
|
|
54
|
+
const content = textTransform === "capitalize-first" && typeof children === "string" ? children.charAt(0).toUpperCase() + children.slice(1) : children;
|
|
55
|
+
return /* @__PURE__ */ jsx(Typography, {
|
|
56
|
+
variant: "title-sm",
|
|
57
|
+
weight: "medium",
|
|
58
|
+
children: /* @__PURE__ */ jsx(Comp, {
|
|
59
|
+
ref,
|
|
60
|
+
className: cn("text-neutral-500 transition-colors hover:text-neutral-950", textTransform !== "capitalize-first" && getTextTransformClass(textTransform), className),
|
|
61
|
+
...props,
|
|
62
|
+
children: content
|
|
63
|
+
})
|
|
64
|
+
});
|
|
57
65
|
});
|
|
58
66
|
BreadcrumbLink.displayName = "BreadcrumbLink";
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
67
|
+
/**
|
|
68
|
+
* Current page indicator in the breadcrumb.
|
|
69
|
+
* Non-interactive element showing the current location.
|
|
70
|
+
*/
|
|
71
|
+
var BreadcrumbPage = React$1.forwardRef(({ className, textTransform = "capitalize-first", children, ...props }, ref) => {
|
|
72
|
+
const content = textTransform === "capitalize-first" && typeof children === "string" ? children.charAt(0).toUpperCase() + children.slice(1) : children;
|
|
73
|
+
return /* @__PURE__ */ jsx(Typography, {
|
|
74
|
+
variant: "title-sm",
|
|
75
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
76
|
+
ref,
|
|
77
|
+
"aria-disabled": "true",
|
|
78
|
+
"aria-current": "page",
|
|
79
|
+
className: cn("font-medium text-neutral-950", textTransform !== "capitalize-first" && getTextTransformClass(textTransform), className),
|
|
80
|
+
...props,
|
|
81
|
+
children: content
|
|
82
|
+
})
|
|
83
|
+
});
|
|
76
84
|
});
|
|
77
85
|
BreadcrumbPage.displayName = "BreadcrumbPage";
|
|
78
|
-
|
|
86
|
+
/**
|
|
87
|
+
* Separator element between breadcrumb items.
|
|
88
|
+
* Can be customized with different icons or characters.
|
|
89
|
+
*/
|
|
90
|
+
var BreadcrumbSeparator = ({ children, className, ...props }) => /* @__PURE__ */ jsx("span", {
|
|
91
|
+
"aria-hidden": "true",
|
|
92
|
+
className: cn("text-neutral-500 [&>svg]:size-3.5", className),
|
|
93
|
+
...props,
|
|
94
|
+
children: children ?? /* @__PURE__ */ jsx(CaretRightIcon, {})
|
|
95
|
+
});
|
|
79
96
|
BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
97
|
+
/**
|
|
98
|
+
* Ellipsis indicator for truncated breadcrumb paths.
|
|
99
|
+
* Used to show that there are hidden items in the path.
|
|
100
|
+
*/
|
|
101
|
+
var BreadcrumbEllipsis = ({ className, ...props }) => /* @__PURE__ */ jsxs("span", {
|
|
102
|
+
"aria-hidden": "true",
|
|
103
|
+
className: cn("flex h-9 w-9 items-center justify-center", className),
|
|
104
|
+
...props,
|
|
105
|
+
children: [/* @__PURE__ */ jsx(DotsThreeIcon, { className: "h-4 w-4" }), /* @__PURE__ */ jsx("span", {
|
|
106
|
+
className: "sr-only",
|
|
107
|
+
children: "More"
|
|
108
|
+
})]
|
|
109
|
+
});
|
|
84
110
|
BreadcrumbEllipsis.displayName = "BreadcrumbEllipsis";
|
|
85
|
-
|
|
86
|
-
|
|
111
|
+
/**
|
|
112
|
+
* Sanitizes a route string by replacing hyphens with spaces.
|
|
113
|
+
* @param route - The route string to sanitize.
|
|
114
|
+
* @returns The sanitized route string.
|
|
115
|
+
*/
|
|
116
|
+
var sanitizeRoute = (route) => {
|
|
117
|
+
return route.replaceAll("-", " ");
|
|
87
118
|
};
|
|
88
|
-
|
|
89
|
-
|
|
119
|
+
/**
|
|
120
|
+
* Transforms a kebab-case route to a camelCase translation key
|
|
121
|
+
* @param route - The route segment in kebab-case
|
|
122
|
+
* @returns The translation key in camelCase
|
|
123
|
+
*/
|
|
124
|
+
var routeToTranslationKey = (route) => {
|
|
125
|
+
return route.split("-").map((word, index) => index === 0 ? word : word.charAt(0).toUpperCase() + word.slice(1)).join("");
|
|
90
126
|
};
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
}
|
|
129
|
-
return routes.filter(Boolean);
|
|
127
|
+
/**
|
|
128
|
+
* Gets the routes for the breadcrumb navigation.
|
|
129
|
+
* @param pathname - The current pathname.
|
|
130
|
+
* @param pathMappings - Optional object containing custom path mappings.
|
|
131
|
+
* @param translation - Optional translation function.
|
|
132
|
+
* @param basePath - Optional base path to strip from pathname and use as home route.
|
|
133
|
+
* @returns The routes for the breadcrumb navigation.
|
|
134
|
+
*/
|
|
135
|
+
var getRoutes = (pathname, pathMappings, translation, basePath) => {
|
|
136
|
+
let processedPathname = pathname;
|
|
137
|
+
if (basePath && pathname.startsWith(basePath)) {
|
|
138
|
+
processedPathname = pathname.slice(basePath.length);
|
|
139
|
+
if (processedPathname.startsWith("/")) processedPathname = processedPathname.slice(1);
|
|
140
|
+
}
|
|
141
|
+
const baseRoutes = processedPathname.split("/").filter(Boolean);
|
|
142
|
+
const routes = baseRoutes.map((route, index) => {
|
|
143
|
+
if (pathMappings && route in pathMappings && pathMappings[route] === null) return null;
|
|
144
|
+
let displayName;
|
|
145
|
+
if (pathMappings?.[route] != null) displayName = pathMappings[route];
|
|
146
|
+
else if (translation) displayName = translation(routeToTranslationKey(route));
|
|
147
|
+
else displayName = sanitizeRoute(route);
|
|
148
|
+
const routePath = baseRoutes.slice(0, index + 1).join("/");
|
|
149
|
+
const fullHref = basePath ? `${basePath}/${routePath}` : `/${routePath}`;
|
|
150
|
+
return {
|
|
151
|
+
name: displayName,
|
|
152
|
+
href: fullHref
|
|
153
|
+
};
|
|
154
|
+
});
|
|
155
|
+
const homeKey = "home";
|
|
156
|
+
if (!(pathMappings && homeKey in pathMappings && pathMappings[homeKey] === null)) {
|
|
157
|
+
const homeHref = basePath ?? "/";
|
|
158
|
+
routes.unshift({
|
|
159
|
+
name: pathMappings?.[homeKey] ?? translation?.(homeKey) ?? "Home",
|
|
160
|
+
href: homeHref
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
return routes.filter(Boolean);
|
|
130
164
|
};
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
165
|
+
/**
|
|
166
|
+
* Navigation breadcrumb component.
|
|
167
|
+
* Displays a breadcrumb navigation for the current path.
|
|
168
|
+
* @param pathname - The current pathname
|
|
169
|
+
* @param pathMappings - Optional object containing custom path mappings
|
|
170
|
+
* @param translation - Optional translation function
|
|
171
|
+
* @param basePath - Optional base path to strip from pathname and use as home route
|
|
172
|
+
* @param textTransform - Optional text transformation to apply to breadcrumb text
|
|
173
|
+
*/
|
|
174
|
+
var NavigationBreadcrumb = ({ pathname, pathMappings, translation, basePath, textTransform, endSlash = true }) => {
|
|
175
|
+
return /* @__PURE__ */ jsx(BreadcrumbRoot, { children: /* @__PURE__ */ jsx(BreadcrumbList, { children: getRoutes(pathname, pathMappings, translation, basePath).map((route, index, array) => /* @__PURE__ */ jsxs(React$1.Fragment, { children: [/* @__PURE__ */ jsx(BreadcrumbItem, { children: index === array.length - 1 ? /* @__PURE__ */ jsx(BreadcrumbPage, {
|
|
176
|
+
textTransform,
|
|
177
|
+
children: route.name
|
|
178
|
+
}) : /* @__PURE__ */ jsx(BreadcrumbLink, {
|
|
179
|
+
href: route.href + (endSlash ? "/" : ""),
|
|
180
|
+
textTransform,
|
|
181
|
+
children: route.name
|
|
182
|
+
}) }), index < array.length - 1 && /* @__PURE__ */ jsx(BreadcrumbSeparator, {})] }, route.href)) }) });
|
|
143
183
|
};
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
pages.map((page) => /* @__PURE__ */ jsxs(BreadcrumbItem, { children: [
|
|
150
|
-
/* @__PURE__ */ jsx(BreadcrumbLink, { href: page.link, children: page.text }),
|
|
151
|
-
/* @__PURE__ */ jsx(BreadcrumbSeparator, {})
|
|
152
|
-
] }, pages.indexOf(page))),
|
|
153
|
-
/* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbPage, { children: currentPage }) })
|
|
154
|
-
] }) });
|
|
184
|
+
var PagesBreadcrumb = ({ pages, currentPage }) => {
|
|
185
|
+
return /* @__PURE__ */ jsx(BreadcrumbRoot, { children: /* @__PURE__ */ jsxs(BreadcrumbList, { children: [pages.map((page) => /* @__PURE__ */ jsxs(BreadcrumbItem, { children: [/* @__PURE__ */ jsx(BreadcrumbLink, {
|
|
186
|
+
href: page.link,
|
|
187
|
+
children: page.text
|
|
188
|
+
}), /* @__PURE__ */ jsx(BreadcrumbSeparator, {})] }, pages.indexOf(page))), /* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbPage, { children: currentPage }) })] }) });
|
|
155
189
|
};
|
|
156
|
-
|
|
190
|
+
//#endregion
|
|
157
191
|
export { BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbRoot, BreadcrumbSeparator, NavigationBreadcrumb, PagesBreadcrumb };
|
|
158
|
-
|
|
192
|
+
|
|
193
|
+
//# sourceMappingURL=Breadcrumb.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Breadcrumb.js","sources":["../../../src/components/Breadcrumb/Breadcrumb.tsx"],"sourcesContent":["import { CaretRight } from '@phosphor-icons/react/dist/ssr/CaretRight'\nimport { DotsThree } from '@phosphor-icons/react/dist/ssr/DotsThree'\nimport { Slot } from '@radix-ui/react-slot'\nimport * as React from 'react'\n\nimport { Typography } from '../Typography'\n\nimport { cn } from '@/lib/utils'\n\n/**\n * Root container for the breadcrumb navigation.\n * Provides the overall context and ARIA labeling.\n */\nconst BreadcrumbRoot = React.forwardRef<\n HTMLElement,\n React.ComponentPropsWithoutRef<'nav'> & {\n /** Custom separator element to use between breadcrumb items */\n separator?: React.ReactNode\n }\n>(({ ...props }, ref) => <nav ref={ref} aria-label=\"breadcrumb\" {...props} />)\nBreadcrumbRoot.displayName = 'BreadcrumbRoot'\n\n/**\n * Container for breadcrumb items.\n * Handles layout and spacing of the breadcrumb navigation.\n */\nconst BreadcrumbList = React.forwardRef<HTMLOListElement, React.ComponentPropsWithoutRef<'ol'>>(\n ({ className, ...props }, ref) => (\n <ol\n ref={ref}\n className={cn(\n 'text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5',\n className,\n )}\n {...props}\n />\n ),\n)\nBreadcrumbList.displayName = 'BreadcrumbList'\n\n/**\n * Individual breadcrumb item container.\n * Wraps a link or the current page indicator.\n */\nconst BreadcrumbItem = React.forwardRef<HTMLLIElement, React.ComponentPropsWithoutRef<'li'>>(\n ({ className, ...props }, ref) => (\n <li ref={ref} className={cn('inline-flex items-center gap-1.5', className)} {...props} />\n ),\n)\nBreadcrumbItem.displayName = 'BreadcrumbItem'\n\n/** Text transform options for breadcrumb links */\ntype TextTransformOption = 'capitalize' | 'capitalize-first' | 'uppercase' | 'none'\n\n/** Get class names for text transform styling */\nconst getTextTransformClass = (transform: TextTransformOption): string => {\n switch (transform) {\n case 'capitalize-first':\n return '[&]:has-[::first-letter]:uppercase'\n case 'capitalize':\n return 'capitalize'\n case 'uppercase':\n return 'uppercase'\n default:\n return ''\n }\n}\n\n/**\n * Interactive link element for breadcrumb navigation.\n * Can be rendered as a custom element using asChild.\n */\nconst BreadcrumbLink = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentPropsWithoutRef<'a'> & {\n /** When true, the component will render its children directly instead of wrapping them in an anchor tag */\n asChild?: boolean\n /** The text transformation to apply to the link text */\n textTransform?: TextTransformOption\n }\n>(({ asChild, className, textTransform = 'capitalize-first', children, ...props }, ref) => {\n const Comp = asChild ? Slot : 'a'\n\n // Simplify the capitalization logic using a direct string transformation\n const content =\n textTransform === 'capitalize-first' && typeof children === 'string'\n ? children.charAt(0).toUpperCase() + children.slice(1)\n : children\n\n return (\n <Typography variant=\"title-sm\" weight={'medium'}>\n <Comp\n ref={ref}\n className={cn(\n 'text-neutral-500 transition-colors hover:text-neutral-950',\n textTransform !== 'capitalize-first' && getTextTransformClass(textTransform),\n className,\n )}\n {...props}\n >\n {content}\n </Comp>\n </Typography>\n )\n})\nBreadcrumbLink.displayName = 'BreadcrumbLink'\n\n/**\n * Current page indicator in the breadcrumb.\n * Non-interactive element showing the current location.\n */\nconst BreadcrumbPage = React.forwardRef<\n HTMLSpanElement,\n React.ComponentPropsWithoutRef<'span'> & {\n textTransform?: TextTransformOption\n }\n>(({ className, textTransform = 'capitalize-first', children, ...props }, ref) => {\n const content =\n textTransform === 'capitalize-first' && typeof children === 'string'\n ? children.charAt(0).toUpperCase() + children.slice(1)\n : children\n\n return (\n <Typography variant=\"title-sm\">\n <span\n ref={ref}\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\n 'font-medium text-neutral-950',\n textTransform !== 'capitalize-first' && getTextTransformClass(textTransform),\n className,\n )}\n {...props}\n >\n {content}\n </span>\n </Typography>\n )\n})\nBreadcrumbPage.displayName = 'BreadcrumbPage'\n\n/**\n * Separator element between breadcrumb items.\n * Can be customized with different icons or characters.\n */\nconst BreadcrumbSeparator = ({ children, className, ...props }: React.ComponentProps<'span'>) => (\n <span aria-hidden=\"true\" className={cn('text-neutral-500 [&>svg]:size-3.5', className)} {...props}>\n {children ?? <CaretRight />}\n </span>\n)\nBreadcrumbSeparator.displayName = 'BreadcrumbSeparator'\n\n/**\n * Ellipsis indicator for truncated breadcrumb paths.\n * Used to show that there are hidden items in the path.\n */\nconst BreadcrumbEllipsis = ({ className, ...props }: React.ComponentProps<'span'>) => (\n <span aria-hidden=\"true\" className={cn('flex h-9 w-9 items-center justify-center', className)} {...props}>\n <DotsThree className=\"h-4 w-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n)\nBreadcrumbEllipsis.displayName = 'BreadcrumbEllipsis'\n\n/**\n * Sanitizes a route string by replacing hyphens with spaces.\n * @param route - The route string to sanitize.\n * @returns The sanitized route string.\n */\nconst sanitizeRoute = (route: string) => {\n return route.replace(/-/g, ' ')\n}\n\n/**\n * Transforms a kebab-case route to a camelCase translation key\n * @param route - The route segment in kebab-case\n * @returns The translation key in camelCase\n */\nconst routeToTranslationKey = (route: string): string => {\n return route\n .split('-')\n .map((word, index) => (index === 0 ? word : word.charAt(0).toUpperCase() + word.slice(1)))\n .join('')\n}\n\n/**\n * Gets the routes for the breadcrumb navigation.\n * @param pathname - The current pathname.\n * @param pathMappings - Optional object containing custom path mappings.\n * @param translation - Optional translation function.\n * @param basePath - Optional base path to strip from pathname and use as home route.\n * @returns The routes for the breadcrumb navigation.\n */\nconst getRoutes = (\n pathname: string,\n pathMappings?: Record<string, string | null>,\n translation?: (key: string) => string,\n basePath?: string,\n) => {\n // Strip the base path from pathname if it exists\n let processedPathname = pathname\n if (basePath && pathname.startsWith(basePath)) {\n processedPathname = pathname.slice(basePath.length)\n // Ensure we don't start with a slash after stripping\n if (processedPathname.startsWith('/')) {\n processedPathname = processedPathname.slice(1)\n }\n }\n\n const baseRoutes = processedPathname.split('/').filter(Boolean)\n\n const routes = baseRoutes.map((route, index) => {\n if (pathMappings && route in pathMappings && pathMappings[route] === null) {\n return null\n }\n\n let displayName = route\n\n // Check if there's a custom mapping for this route\n if (pathMappings && pathMappings[route] != null) {\n displayName = pathMappings[route]\n }\n // If there's a translation function, convert route to translation key\n else if (translation) {\n const translationKey = routeToTranslationKey(route)\n displayName = translation(translationKey)\n }\n // If no mapping or translation function, sanitize the route\n else {\n displayName = sanitizeRoute(route)\n }\n\n const routeSegments = baseRoutes.slice(0, index + 1)\n const routePath = routeSegments.join('/')\n const fullHref = basePath ? `${basePath}/${routePath}` : `/${routePath}`\n\n return {\n name: displayName,\n href: fullHref,\n }\n })\n\n // Handle home translation — hide if mapped to null\n const homeKey = 'home'\n if (!(pathMappings && homeKey in pathMappings && pathMappings[homeKey] === null)) {\n const homeHref = basePath ?? '/'\n routes.unshift({\n name: pathMappings?.[homeKey] ?? translation?.(homeKey) ?? 'Home',\n href: homeHref,\n })\n }\n\n return routes.filter(Boolean) as Array<{ name: string; href: string }>\n}\n\n/**\n * Navigation breadcrumb component.\n * Displays a breadcrumb navigation for the current path.\n * @param pathname - The current pathname\n * @param pathMappings - Optional object containing custom path mappings\n * @param translation - Optional translation function\n * @param basePath - Optional base path to strip from pathname and use as home route\n * @param textTransform - Optional text transformation to apply to breadcrumb text\n */\nconst NavigationBreadcrumb = ({\n pathname,\n pathMappings,\n translation,\n basePath,\n textTransform,\n endSlash = true,\n}: {\n pathname: string\n pathMappings?: Record<string, string | null>\n translation?: (key: string) => string\n basePath?: string\n textTransform?: TextTransformOption\n endSlash?: boolean\n}) => {\n return (\n <BreadcrumbRoot>\n <BreadcrumbList>\n {getRoutes(pathname, pathMappings, translation, basePath).map((route, index, array) => (\n <React.Fragment key={index}>\n <BreadcrumbItem>\n {index === array.length - 1 ? (\n <BreadcrumbPage textTransform={textTransform}>{route.name}</BreadcrumbPage>\n ) : (\n <BreadcrumbLink href={route.href + (endSlash ? '/' : '')} textTransform={textTransform}>\n {route.name}\n </BreadcrumbLink>\n )}\n </BreadcrumbItem>\n {index < array.length - 1 && <BreadcrumbSeparator />}\n </React.Fragment>\n ))}\n </BreadcrumbList>\n </BreadcrumbRoot>\n )\n}\n\nconst PagesBreadcrumb = ({\n pages,\n currentPage,\n}: {\n pages: Array<{ link: string; text: string }>\n currentPage: string\n}) => {\n return (\n <BreadcrumbRoot>\n <BreadcrumbList>\n {pages.map((page) => (\n <BreadcrumbItem key={pages.indexOf(page)}>\n <BreadcrumbLink href={page.link}>{page.text}</BreadcrumbLink>\n <BreadcrumbSeparator />\n </BreadcrumbItem>\n ))}\n <BreadcrumbItem>\n <BreadcrumbPage>{currentPage}</BreadcrumbPage>\n </BreadcrumbItem>\n </BreadcrumbList>\n </BreadcrumbRoot>\n )\n}\n\nexport {\n BreadcrumbRoot,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n NavigationBreadcrumb,\n PagesBreadcrumb,\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Breadcrumb.js","names":["React"],"sources":["../../../src/components/Breadcrumb/Breadcrumb.tsx"],"sourcesContent":["import { CaretRightIcon } from '@phosphor-icons/react/dist/ssr/CaretRight'\nimport { DotsThreeIcon } from '@phosphor-icons/react/dist/ssr/DotsThree'\nimport { Slot } from '@radix-ui/react-slot'\nimport * as React from 'react'\n\nimport { Typography } from '../Typography'\n\nimport { cn } from '@/lib/utils'\n\n/**\n * Root container for the breadcrumb navigation.\n * Provides the overall context and ARIA labeling.\n */\nconst BreadcrumbRoot = React.forwardRef<\n HTMLElement,\n React.ComponentPropsWithoutRef<'nav'> & {\n /** Custom separator element to use between breadcrumb items */\n separator?: React.ReactNode\n }\n>(({ ...props }, ref) => <nav ref={ref} aria-label=\"breadcrumb\" {...props} />)\nBreadcrumbRoot.displayName = 'BreadcrumbRoot'\n\n/**\n * Container for breadcrumb items.\n * Handles layout and spacing of the breadcrumb navigation.\n */\nconst BreadcrumbList = React.forwardRef<HTMLOListElement, React.ComponentPropsWithoutRef<'ol'>>(\n ({ className, ...props }, ref) => (\n <ol\n ref={ref}\n className={cn(\n 'text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm wrap-break-word sm:gap-2.5',\n className,\n )}\n {...props}\n />\n ),\n)\nBreadcrumbList.displayName = 'BreadcrumbList'\n\n/**\n * Individual breadcrumb item container.\n * Wraps a link or the current page indicator.\n */\nconst BreadcrumbItem = React.forwardRef<HTMLLIElement, React.ComponentPropsWithoutRef<'li'>>(\n ({ className, ...props }, ref) => (\n <li ref={ref} className={cn('inline-flex items-center gap-1.5', className)} {...props} />\n ),\n)\nBreadcrumbItem.displayName = 'BreadcrumbItem'\n\n/** Text transform options for breadcrumb links */\ntype TextTransformOption = 'capitalize' | 'capitalize-first' | 'uppercase' | 'none'\n\n/** Get class names for text transform styling */\nconst getTextTransformClass = (transform: TextTransformOption): string => {\n switch (transform) {\n case 'capitalize-first':\n return '[&]:has-[::first-letter]:uppercase'\n case 'capitalize':\n return 'capitalize'\n case 'uppercase':\n return 'uppercase'\n default:\n return ''\n }\n}\n\n/**\n * Interactive link element for breadcrumb navigation.\n * Can be rendered as a custom element using asChild.\n */\nconst BreadcrumbLink = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentPropsWithoutRef<'a'> & {\n /** When true, the component will render its children directly instead of wrapping them in an anchor tag */\n asChild?: boolean\n /** The text transformation to apply to the link text */\n textTransform?: TextTransformOption\n }\n>(({ asChild, className, textTransform = 'capitalize-first', children, ...props }, ref) => {\n const Comp = asChild ? Slot : 'a'\n\n // Simplify the capitalization logic using a direct string transformation\n const content =\n textTransform === 'capitalize-first' && typeof children === 'string'\n ? children.charAt(0).toUpperCase() + children.slice(1)\n : children\n\n return (\n <Typography variant=\"title-sm\" weight={'medium'}>\n <Comp\n ref={ref}\n className={cn(\n 'text-neutral-500 transition-colors hover:text-neutral-950',\n textTransform !== 'capitalize-first' && getTextTransformClass(textTransform),\n className,\n )}\n {...props}\n >\n {content}\n </Comp>\n </Typography>\n )\n})\nBreadcrumbLink.displayName = 'BreadcrumbLink'\n\n/**\n * Current page indicator in the breadcrumb.\n * Non-interactive element showing the current location.\n */\nconst BreadcrumbPage = React.forwardRef<\n HTMLSpanElement,\n React.ComponentPropsWithoutRef<'span'> & {\n textTransform?: TextTransformOption\n }\n>(({ className, textTransform = 'capitalize-first', children, ...props }, ref) => {\n const content =\n textTransform === 'capitalize-first' && typeof children === 'string'\n ? children.charAt(0).toUpperCase() + children.slice(1)\n : children\n\n return (\n <Typography variant=\"title-sm\">\n <span\n ref={ref}\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\n 'font-medium text-neutral-950',\n textTransform !== 'capitalize-first' && getTextTransformClass(textTransform),\n className,\n )}\n {...props}\n >\n {content}\n </span>\n </Typography>\n )\n})\nBreadcrumbPage.displayName = 'BreadcrumbPage'\n\n/**\n * Separator element between breadcrumb items.\n * Can be customized with different icons or characters.\n */\nconst BreadcrumbSeparator = ({ children, className, ...props }: React.ComponentProps<'span'>) => (\n <span aria-hidden=\"true\" className={cn('text-neutral-500 [&>svg]:size-3.5', className)} {...props}>\n {children ?? <CaretRightIcon />}\n </span>\n)\nBreadcrumbSeparator.displayName = 'BreadcrumbSeparator'\n\n/**\n * Ellipsis indicator for truncated breadcrumb paths.\n * Used to show that there are hidden items in the path.\n */\nconst BreadcrumbEllipsis = ({ className, ...props }: React.ComponentProps<'span'>) => (\n <span aria-hidden=\"true\" className={cn('flex h-9 w-9 items-center justify-center', className)} {...props}>\n <DotsThreeIcon className=\"h-4 w-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n)\nBreadcrumbEllipsis.displayName = 'BreadcrumbEllipsis'\n\n/**\n * Sanitizes a route string by replacing hyphens with spaces.\n * @param route - The route string to sanitize.\n * @returns The sanitized route string.\n */\nconst sanitizeRoute = (route: string) => {\n return route.replaceAll('-', ' ')\n}\n\n/**\n * Transforms a kebab-case route to a camelCase translation key\n * @param route - The route segment in kebab-case\n * @returns The translation key in camelCase\n */\nconst routeToTranslationKey = (route: string): string => {\n return route\n .split('-')\n .map((word, index) => (index === 0 ? word : word.charAt(0).toUpperCase() + word.slice(1)))\n .join('')\n}\n\n/**\n * Gets the routes for the breadcrumb navigation.\n * @param pathname - The current pathname.\n * @param pathMappings - Optional object containing custom path mappings.\n * @param translation - Optional translation function.\n * @param basePath - Optional base path to strip from pathname and use as home route.\n * @returns The routes for the breadcrumb navigation.\n */\nconst getRoutes = (\n pathname: string,\n pathMappings?: Record<string, string | null>,\n translation?: (key: string) => string,\n basePath?: string,\n) => {\n // Strip the base path from pathname if it exists\n let processedPathname = pathname\n if (basePath && pathname.startsWith(basePath)) {\n processedPathname = pathname.slice(basePath.length)\n // Ensure we don't start with a slash after stripping\n if (processedPathname.startsWith('/')) {\n processedPathname = processedPathname.slice(1)\n }\n }\n\n const baseRoutes = processedPathname.split('/').filter(Boolean)\n\n const routes = baseRoutes.map((route, index) => {\n if (pathMappings && route in pathMappings && pathMappings[route] === null) {\n return null\n }\n\n let displayName: string\n\n // Check if there's a custom mapping for this route\n if (pathMappings?.[route] != null) {\n displayName = pathMappings[route]\n }\n // If there's a translation function, convert route to translation key\n else if (translation) {\n const translationKey = routeToTranslationKey(route)\n displayName = translation(translationKey)\n }\n // If no mapping or translation function, sanitize the route\n else {\n displayName = sanitizeRoute(route)\n }\n\n const routeSegments = baseRoutes.slice(0, index + 1)\n const routePath = routeSegments.join('/')\n const fullHref = basePath ? `${basePath}/${routePath}` : `/${routePath}`\n\n return {\n name: displayName,\n href: fullHref,\n }\n })\n\n // Handle home translation — hide if mapped to null\n const homeKey = 'home'\n if (!(pathMappings && homeKey in pathMappings && pathMappings[homeKey] === null)) {\n const homeHref = basePath ?? '/'\n routes.unshift({\n name: pathMappings?.[homeKey] ?? translation?.(homeKey) ?? 'Home',\n href: homeHref,\n })\n }\n\n return routes.filter(Boolean) as Array<{ name: string; href: string }>\n}\n\n/**\n * Navigation breadcrumb component.\n * Displays a breadcrumb navigation for the current path.\n * @param pathname - The current pathname\n * @param pathMappings - Optional object containing custom path mappings\n * @param translation - Optional translation function\n * @param basePath - Optional base path to strip from pathname and use as home route\n * @param textTransform - Optional text transformation to apply to breadcrumb text\n */\nconst NavigationBreadcrumb = ({\n pathname,\n pathMappings,\n translation,\n basePath,\n textTransform,\n endSlash = true,\n}: {\n pathname: string\n pathMappings?: Record<string, string | null>\n translation?: (key: string) => string\n basePath?: string\n textTransform?: TextTransformOption\n endSlash?: boolean\n}) => {\n return (\n <BreadcrumbRoot>\n <BreadcrumbList>\n {getRoutes(pathname, pathMappings, translation, basePath).map((route, index, array) => (\n <React.Fragment key={route.href}>\n <BreadcrumbItem>\n {index === array.length - 1 ? (\n <BreadcrumbPage textTransform={textTransform}>{route.name}</BreadcrumbPage>\n ) : (\n <BreadcrumbLink href={route.href + (endSlash ? '/' : '')} textTransform={textTransform}>\n {route.name}\n </BreadcrumbLink>\n )}\n </BreadcrumbItem>\n {index < array.length - 1 && <BreadcrumbSeparator />}\n </React.Fragment>\n ))}\n </BreadcrumbList>\n </BreadcrumbRoot>\n )\n}\n\nconst PagesBreadcrumb = ({\n pages,\n currentPage,\n}: {\n pages: Array<{ link: string; text: string }>\n currentPage: string\n}) => {\n return (\n <BreadcrumbRoot>\n <BreadcrumbList>\n {pages.map((page) => (\n <BreadcrumbItem key={pages.indexOf(page)}>\n <BreadcrumbLink href={page.link}>{page.text}</BreadcrumbLink>\n <BreadcrumbSeparator />\n </BreadcrumbItem>\n ))}\n <BreadcrumbItem>\n <BreadcrumbPage>{currentPage}</BreadcrumbPage>\n </BreadcrumbItem>\n </BreadcrumbList>\n </BreadcrumbRoot>\n )\n}\n\nexport {\n BreadcrumbRoot,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n NavigationBreadcrumb,\n PagesBreadcrumb,\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbRoot, BreadcrumbSeparator, NavigationBreadcrumb, PagesBreadcrumb } from "./Breadcrumb.js";
|
|
2
|
+
export { BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbRoot, BreadcrumbSeparator, NavigationBreadcrumb, PagesBreadcrumb };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Icon, IconProps
|
|
1
|
+
import { Icon, IconProps } from '@phosphor-icons/react';
|
|
2
2
|
import { VariantProps } from 'class-variance-authority';
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
declare const buttonVariants: (props?: ({
|
|
@@ -48,7 +48,7 @@ export type ButtonProps = {
|
|
|
48
48
|
* Custom props to pass to the icons (StartIcon, EndIcon, SpinnerGap).
|
|
49
49
|
* Allows overriding size, weight, color, etc.
|
|
50
50
|
*/
|
|
51
|
-
iconProps?: Partial<
|
|
51
|
+
iconProps?: Partial<IconProps>;
|
|
52
52
|
} & React.ButtonHTMLAttributes<HTMLButtonElement> & VariantProps<typeof buttonVariants>;
|
|
53
53
|
/**
|
|
54
54
|
* A versatile button component that supports multiple variants, sizes, and icon placements.
|
|
@@ -109,7 +109,7 @@ declare const Button: React.ForwardRefExoticComponent<{
|
|
|
109
109
|
* Custom props to pass to the icons (StartIcon, EndIcon, SpinnerGap).
|
|
110
110
|
* Allows overriding size, weight, color, etc.
|
|
111
111
|
*/
|
|
112
|
-
iconProps?: Partial<
|
|
112
|
+
iconProps?: Partial<IconProps>;
|
|
113
113
|
} & React.ButtonHTMLAttributes<HTMLButtonElement> & VariantProps<(props?: ({
|
|
114
114
|
variant?: "primary" | "success" | "error" | "input" | "text" | "secondary" | "ghost" | "inverse-ghost" | null | undefined;
|
|
115
115
|
size?: "sm" | "md" | "lg" | null | undefined;
|