@povio/ui 3.0.0 → 3.1.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.
Files changed (46) hide show
  1. package/README.md +39 -0
  2. package/dist/components/Menu/Menu.d.ts +4 -0
  3. package/dist/components/Menu/MenuMobile.d.ts +1 -1
  4. package/dist/components/Menu/MenuMobile.js +4 -3
  5. package/dist/components/inputs/DateTime/DateTimePicker/DateTimePicker.js +2 -1
  6. package/dist/components/inputs/DateTime/shared/Calendar.d.ts +2 -1
  7. package/dist/components/inputs/DateTime/shared/Calendar.js +2 -1
  8. package/dist/components/inputs/DateTime/shared/CalendarHeader.d.ts +2 -1
  9. package/dist/components/inputs/DateTime/shared/CalendarHeader.js +10 -5
  10. package/dist/components/inputs/DateTime/shared/DatePickerInput.js +2 -2
  11. package/dist/components/inputs/DateTime/shared/DateTimeDialog.d.ts +4 -1
  12. package/dist/components/inputs/DateTime/shared/DateTimeDialog.js +6 -5
  13. package/dist/components/inputs/DateTime/shared/TimePickerInput.js +1 -1
  14. package/dist/components/inputs/File/FileUpload.js +1 -1
  15. package/dist/components/inputs/File/shared/ProgressBar.d.ts +2 -2
  16. package/dist/components/inputs/File/shared/ProgressBar.js +13 -7
  17. package/dist/components/inputs/File/shared/fileUpload.cva.d.ts +1 -1
  18. package/dist/components/inputs/File/shared/fileUpload.cva.js +1 -1
  19. package/dist/components/inputs/File/shared/progressBar.cva.d.ts +38 -0
  20. package/dist/components/inputs/File/shared/progressBar.cva.js +28 -0
  21. package/dist/components/inputs/Input/TextArea/TextArea.js +1 -1
  22. package/dist/components/inputs/Selection/shared/SelectBase.d.ts +2 -0
  23. package/dist/components/inputs/Selection/shared/SelectInput.js +2 -2
  24. package/dist/components/inputs/Selection/shared/SelectInputTags.js +1 -1
  25. package/dist/components/inputs/Selection/shared/SelectMobile.d.ts +1 -1
  26. package/dist/components/inputs/Selection/shared/SelectMobile.js +4 -3
  27. package/dist/components/inputs/shared/InputClear.js +1 -1
  28. package/dist/components/overlays/BottomSheet/BottomSheet.js +2 -2
  29. package/dist/components/overlays/Drawer/Drawer.js +2 -2
  30. package/dist/components/overlays/Modal/modal.cva.js +1 -1
  31. package/dist/components/overlays/ResponsivePopover/ResponsivePopover.d.ts +5 -1
  32. package/dist/components/overlays/ResponsivePopover/ResponsivePopover.js +5 -4
  33. package/dist/components/status/Toast/Toast.js +6 -3
  34. package/dist/components/status/Toast/toast.cva.d.ts +14 -3
  35. package/dist/components/status/Toast/toast.cva.js +12 -10
  36. package/dist/components/table/Table.js +3 -2
  37. package/dist/components/table/table.cva.d.ts +7 -0
  38. package/dist/components/table/table.cva.js +2 -1
  39. package/dist/components/text/Pill/Pill.d.ts +15 -0
  40. package/dist/components/text/Pill/Pill.js +44 -0
  41. package/dist/config/uiConfig.context.d.ts +4 -1
  42. package/dist/config/uiConfig.context.js +4 -1
  43. package/dist/config/uiOverrides.context.d.ts +10 -1
  44. package/dist/index.d.ts +5 -0
  45. package/dist/index.js +3 -1
  46. package/package.json +1 -1
package/README.md CHANGED
@@ -48,6 +48,45 @@ We also use a custom tailwind plugin to shorten some selectors inside the @povio
48
48
  @plugin "@povio/ui/tw-ui-plugin";
49
49
  ```
50
50
 
51
+ ### Z-Index
52
+
53
+ `@povio/ui` uses named z-index theme tokens instead of hardcoded Tailwind values. These must be defined in your `base.css` inside the `@theme static` block so components stack correctly and can be overridden per app.
54
+
55
+ ```css
56
+ @theme static {
57
+ --z-index-base: 0;
58
+ --z-index-raised: 1;
59
+ --z-index-sticky: 10;
60
+ --z-index-drawer: 20;
61
+ --z-index-modal: 30;
62
+ --z-index-bottom-sheet: 40;
63
+ --z-index-drop-target: 50;
64
+ --z-index-overlay-above: 100;
65
+ }
66
+ ```
67
+
68
+ | Token | Default | Utility class | Used for |
69
+ | ------------------------- | ------- | ----------------- | --------------------------------------------------------------------------------------- |
70
+ | `--z-index-base` | `0` | `z-base` | Local stacking within a component (e.g. input trigger) |
71
+ | `--z-index-raised` | `1` | `z-raised` | Elements raised above siblings within a component (e.g. clear button, tags) |
72
+ | `--z-index-sticky` | `10` | `z-sticky` | Sticky elements like table headers |
73
+ | `--z-index-drawer` | `20` | `z-drawer` | Drawer overlay and panel |
74
+ | `--z-index-modal` | `30` | `z-modal` | Modal overlay |
75
+ | `--z-index-bottom-sheet` | `40` | `z-bottom-sheet` | Bottom sheet overlay |
76
+ | `--z-index-drop-target` | `50` | `z-drop-target` | File upload drop-target pseudo-elements |
77
+ | `--z-index-overlay-above` | `100` | `z-overlay-above` | Content that floats above its own overlay (e.g. bottom sheet footer, drop-zone content) |
78
+
79
+ Tailwind 4 registers these as utility classes automatically — the `index` segment is dropped from the class name (e.g. `--z-index-drawer` becomes `z-drawer`). Each overlay type has its own token so they can stack independently — for example, a bottom sheet opened from within a drawer will render above the drawer by default.
80
+
81
+ To adjust stacking for your app, override the values in your `@theme static` block:
82
+
83
+ ```css
84
+ @theme static {
85
+ --z-index-drawer: 50;
86
+ --z-index-bottom-sheet: 60;
87
+ }
88
+ ```
89
+
51
90
  ### Translations
52
91
 
53
92
  We're using `i18next` for translations. Make sure the package versions match in your project. Out of sync major version might cause issues.
@@ -1,17 +1,21 @@
1
1
  import { ReactElement } from 'react';
2
2
  import { Placement } from 'react-aria';
3
3
  import { Key, MenuItemProps } from 'react-aria-components';
4
+ import { BottomSheetProps } from '../overlays/BottomSheet/BottomSheet';
4
5
  import { MenuCvaVariantProps, MenuItemVariantProps, MenuPopoverVariantProps, MenuPopoverWrapperVariantProps } from './menu.cva';
5
6
  export interface MenuItem extends Omit<MenuItemProps, "aria-label" | "textValue" | "children">, MenuItemVariantProps, MenuCvaVariantProps, MenuPopoverVariantProps, MenuPopoverWrapperVariantProps {
6
7
  label: string;
7
8
  content?: string | ReactElement;
8
9
  children?: MenuItem[];
9
10
  }
11
+ type MenuBottomSheetProps = Partial<Omit<BottomSheetProps, "children" | "isOpen" | "onOpenChange" | "trigger">>;
10
12
  export interface MenuProps {
11
13
  trigger: ReactElement;
12
14
  items: MenuItem[];
13
15
  closeDelay?: number;
14
16
  placement?: Placement;
15
17
  onAction?: (key: Key, e: any) => void;
18
+ bottomSheetProps?: MenuBottomSheetProps;
16
19
  }
17
20
  export declare const Menu: (props: MenuProps) => import("react/jsx-runtime").JSX.Element;
21
+ export {};
@@ -1,2 +1,2 @@
1
1
  import { MenuProps } from './Menu';
2
- export declare const MenuMobile: ({ trigger, items, onAction, ...props }: MenuProps) => import("react/jsx-runtime").JSX.Element;
2
+ export declare const MenuMobile: ({ trigger, items, onAction, bottomSheetProps, ...props }: MenuProps) => import("react/jsx-runtime").JSX.Element;
@@ -8,7 +8,7 @@ import { clsx } from "clsx";
8
8
  import { useRef, useState } from "react";
9
9
  import { Button, Menu } from "react-aria-components";
10
10
  //#region src/components/Menu/MenuMobile.tsx
11
- var MenuMobile = ({ trigger, items, onAction, ...props }) => {
11
+ var MenuMobile = ({ trigger, items, onAction, bottomSheetProps, ...props }) => {
12
12
  const menuItemCva = UIOverrides.useCva("menu.itemCva", menuItemDefinition);
13
13
  const menuCva = UIOverrides.useCva("menu.cva", menuDefinition);
14
14
  const activeItemRef = useRef(null);
@@ -40,11 +40,12 @@ var MenuMobile = ({ trigger, items, onAction, ...props }) => {
40
40
  setActiveItem(activeItemRef.current);
41
41
  };
42
42
  return /* @__PURE__ */ jsx(BottomSheet, {
43
+ isDismissable: true,
44
+ hideHeader: true,
45
+ ...bottomSheetProps,
43
46
  isOpen,
44
47
  onOpenChange: setIsOpen,
45
48
  trigger,
46
- isDismissable: true,
47
- hideHeader: true,
48
49
  children: () => /* @__PURE__ */ jsxs(Fragment, { children: [activeItem && /* @__PURE__ */ jsxs(Button, {
49
50
  className: clsx(menuItemCva({
50
51
  ...props,
@@ -194,7 +194,8 @@ var DateTimePickerBase = (props) => {
194
194
  datePickerState: dialogState,
195
195
  onApply,
196
196
  onMonthYearChange,
197
- granularity: "day"
197
+ granularity: "day",
198
+ isTimeOptional
198
199
  })
199
200
  })]
200
201
  })
@@ -19,7 +19,8 @@ type CalendarProps = DateTimeCalendarProps & {
19
19
  onMonthYearCommit?: () => void;
20
20
  selectedDate?: CalendarDate | null;
21
21
  granularity?: "day" | "month" | "year";
22
+ isTimeOptional?: boolean;
22
23
  };
23
24
  export type ToggleState = "month" | "year" | "time";
24
- export declare const Calendar: ({ className, includesTime, datePickerState, hourCycle, onApply, onMonthYearChange, onMonthYearCommit, selectedDate, granularity, ...props }: CalendarProps) => import("react/jsx-runtime").JSX.Element;
25
+ export declare const Calendar: ({ className, includesTime, datePickerState, hourCycle, isTimeOptional, onApply, onMonthYearChange, onMonthYearCommit, selectedDate, granularity, ...props }: CalendarProps) => import("react/jsx-runtime").JSX.Element;
25
26
  export {};
@@ -8,7 +8,7 @@ import { clsx } from "clsx";
8
8
  import { useEffect, useState } from "react";
9
9
  import { useCalendar } from "@react-aria/calendar";
10
10
  //#region src/components/inputs/DateTime/shared/Calendar.tsx
11
- var Calendar = ({ className, includesTime, datePickerState, hourCycle, onApply, onMonthYearChange, onMonthYearCommit, selectedDate, granularity = "day", ...props }) => {
11
+ var Calendar = ({ className, includesTime, datePickerState, hourCycle, isTimeOptional, onApply, onMonthYearChange, onMonthYearCommit, selectedDate, granularity = "day", ...props }) => {
12
12
  const [toggleState, setToggleState] = useState(() => {
13
13
  if (granularity === "year") return "year";
14
14
  if (granularity === "month") return "month";
@@ -139,6 +139,7 @@ var Calendar = ({ className, includesTime, datePickerState, hourCycle, onApply,
139
139
  prevButtonProps: headerPrevButtonProps,
140
140
  nextButtonProps: headerNextButtonProps,
141
141
  includesTime,
142
+ isTimeOptional,
142
143
  hourCycle,
143
144
  granularity,
144
145
  toggleState,
@@ -8,10 +8,11 @@ interface CalendarProps {
8
8
  prevButtonProps: AriaButtonProps;
9
9
  nextButtonProps: AriaButtonProps;
10
10
  includesTime?: boolean;
11
+ isTimeOptional?: boolean;
11
12
  hourCycle?: 12 | 24;
12
13
  granularity?: "day" | "month" | "year";
13
14
  toggleState: ToggleState | null;
14
15
  setToggleState: (state: ToggleState | null) => void;
15
16
  }
16
- export declare const CalendarHeader: ({ calendarState, datePickerState, prevButtonProps, nextButtonProps, includesTime, hourCycle, granularity, toggleState, setToggleState, }: CalendarProps) => import("react/jsx-runtime").JSX.Element;
17
+ export declare const CalendarHeader: ({ calendarState, datePickerState, prevButtonProps, nextButtonProps, includesTime, isTimeOptional, hourCycle, granularity, toggleState, setToggleState, }: CalendarProps) => import("react/jsx-runtime").JSX.Element;
17
18
  export {};
@@ -13,7 +13,7 @@ var HourCycle = {
13
13
  12: "h12",
14
14
  24: "h23"
15
15
  };
16
- var CalendarHeader = ({ calendarState, datePickerState, prevButtonProps, nextButtonProps, includesTime, hourCycle, granularity = "day", toggleState, setToggleState }) => {
16
+ var CalendarHeader = ({ calendarState, datePickerState, prevButtonProps, nextButtonProps, includesTime, isTimeOptional, hourCycle, granularity = "day", toggleState, setToggleState }) => {
17
17
  const formatter = useDateFormatter({
18
18
  month: "long",
19
19
  timeZone: calendarState.timeZone
@@ -25,9 +25,14 @@ var CalendarHeader = ({ calendarState, datePickerState, prevButtonProps, nextBut
25
25
  });
26
26
  const year = calendarState.focusedDate.year.toString();
27
27
  const month = formatter.format(calendarState.focusedDate.toDate(calendarState.timeZone));
28
- const timeValue = datePickerState?.timeValue || new Time();
29
- const date = /* @__PURE__ */ new Date();
30
- date.setHours(timeValue.hour, timeValue.minute);
28
+ const hasTimeValue = !!datePickerState?.timeValue;
29
+ let timeLabel = "--:--";
30
+ if (isTimeOptional || hasTimeValue) {
31
+ const timeValue = datePickerState?.timeValue || new Time();
32
+ const date = /* @__PURE__ */ new Date();
33
+ date.setHours(timeValue.hour, timeValue.minute);
34
+ timeLabel = timeFormatter.format(date);
35
+ }
31
36
  return /* @__PURE__ */ jsxs("div", {
32
37
  className: "inline-flex w-full items-center justify-between border-elevation-outline-default-1 border-b border-solid px-1",
33
38
  children: [
@@ -95,7 +100,7 @@ var CalendarHeader = ({ calendarState, datePickerState, prevButtonProps, nextBut
95
100
  toggle: true,
96
101
  isSelected: toggleState === "time",
97
102
  onChange: (isSelected) => setToggleState(isSelected ? "time" : null),
98
- children: timeFormatter.format(date)
103
+ children: timeLabel
99
104
  })
100
105
  ]
101
106
  }),
@@ -100,7 +100,7 @@ var DatePickerInput = ({ ref, as, groupProps, fieldProps, endFieldProps, buttonP
100
100
  children: [
101
101
  disableManualEntry && /* @__PURE__ */ jsx(Button, {
102
102
  onPress: onOpenDropdown,
103
- className: "absolute inset-0 z-0",
103
+ className: "absolute inset-0 z-base",
104
104
  isDisabled
105
105
  }),
106
106
  todayIcon && /* @__PURE__ */ jsx(IconButton, {
@@ -108,7 +108,7 @@ var DatePickerInput = ({ ref, as, groupProps, fieldProps, endFieldProps, buttonP
108
108
  icon: TodayIcon,
109
109
  size: "none",
110
110
  onPress: onToday,
111
- className: "relative z-1",
111
+ className: "relative z-raised",
112
112
  isDisabled
113
113
  }),
114
114
  disableManualEntry && placeholder && !fieldProps.value ? /* @__PURE__ */ jsx(Typography, {
@@ -1,5 +1,7 @@
1
1
  import { ReactNode, RefObject } from 'react';
2
2
  import { AriaDialogProps } from 'react-aria';
3
+ import { BottomSheetProps } from '../../../overlays/BottomSheet/BottomSheet';
4
+ type DateTimeDialogBottomSheetProps = Partial<Omit<BottomSheetProps, "children" | "isOpen" | "onOpenChange" | "label" | "footer">>;
3
5
  interface DateTimeDialogProps {
4
6
  children: ReactNode;
5
7
  footer: ReactNode;
@@ -9,7 +11,8 @@ interface DateTimeDialogProps {
9
11
  isOpen: boolean;
10
12
  triggerRef?: RefObject<HTMLElement | null>;
11
13
  dialogProps?: AriaDialogProps;
14
+ bottomSheetProps?: DateTimeDialogBottomSheetProps;
12
15
  onOpenChange: (open: boolean) => void;
13
16
  }
14
- export declare const DateTimeDialog: ({ hideSidebar, children, footer, sidebar, label, isOpen, triggerRef, dialogProps, onOpenChange, }: DateTimeDialogProps) => import("react/jsx-runtime").JSX.Element | null;
17
+ export declare const DateTimeDialog: ({ hideSidebar, children, footer, sidebar, label, isOpen, triggerRef, dialogProps, bottomSheetProps, onOpenChange, }: DateTimeDialogProps) => import("react/jsx-runtime").JSX.Element | null;
15
18
  export {};
@@ -6,7 +6,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
6
6
  import clsx$1 from "clsx";
7
7
  import { Dialog, Popover } from "react-aria-components";
8
8
  //#region src/components/inputs/DateTime/shared/DateTimeDialog.tsx
9
- var DateTimeDialog = ({ hideSidebar, children, footer, sidebar, label, isOpen, triggerRef, dialogProps, onOpenChange }) => {
9
+ var DateTimeDialog = ({ hideSidebar, children, footer, sidebar, label, isOpen, triggerRef, dialogProps, bottomSheetProps, onOpenChange }) => {
10
10
  const popoverCva = UIOverrides.useCva("popover.cva", popoverDefinition);
11
11
  if (useBreakpoint("md")) {
12
12
  if (!isOpen) return null;
@@ -30,14 +30,15 @@ var DateTimeDialog = ({ hideSidebar, children, footer, sidebar, label, isOpen, t
30
30
  });
31
31
  }
32
32
  return /* @__PURE__ */ jsxs(BottomSheet, {
33
- label,
34
- footer,
35
- isOpen,
36
- onOpenChange,
37
33
  sheetMarginBottom: 0,
38
34
  isScrollable: true,
39
35
  height: "auto",
40
36
  isDismissable: true,
37
+ ...bottomSheetProps,
38
+ label,
39
+ footer,
40
+ isOpen,
41
+ onOpenChange,
41
42
  children: [children, !hideSidebar && sidebar]
42
43
  });
43
44
  };
@@ -49,7 +49,7 @@ var TimePickerInput = ({ ref, as, fieldProps, state, isDisabled, isDirty, isInva
49
49
  children: [
50
50
  disableManualEntry && /* @__PURE__ */ jsx(Button, {
51
51
  onPress,
52
- className: "absolute inset-0 z-0"
52
+ className: "absolute inset-0 z-base"
53
53
  }),
54
54
  as && ["filter", "floating"].includes(as) && headerProps && /* @__PURE__ */ jsx(FormFieldLabel, {
55
55
  as,
@@ -151,7 +151,7 @@ var FileUploadBase = (props) => {
151
151
  title: emptyText,
152
152
  uploadText,
153
153
  browseText,
154
- className: "group-drop-target/file-upload-drop-zone:flex! absolute top-1/2 left-1/2 z-50 hidden -translate-x-1/2 -translate-y-1/2 flex-col"
154
+ className: "group-drop-target/file-upload-drop-zone:flex! absolute top-1/2 left-1/2 z-overlay-above hidden -translate-x-1/2 -translate-y-1/2 flex-col"
155
155
  })] }) : /* @__PURE__ */ jsx(FileUploadContent, {
156
156
  ...rest,
157
157
  variant,
@@ -1,6 +1,6 @@
1
- interface ProgressBarProps {
1
+ import { ProgressBarVariantProps } from './progressBar.cva';
2
+ interface ProgressBarProps extends ProgressBarVariantProps {
2
3
  progress?: number;
3
- valueLabel?: "leading" | "trailing" | "none";
4
4
  }
5
5
  export declare const ProgressBar: ({ progress, valueLabel }: ProgressBarProps) => import("react/jsx-runtime").JSX.Element;
6
6
  export {};
@@ -1,16 +1,22 @@
1
+ import { UIOverrides } from "../../../../config/uiOverrides.context.js";
1
2
  import { Typography } from "../../../text/Typography/Typography.js";
3
+ import { progressBarDefinition, progressBarFillDefinition, progressBarTrackDefinition, progressBarTrackWrapperDefinition, progressBarValueDefinition } from "./progressBar.cva.js";
2
4
  import { jsx, jsxs } from "react/jsx-runtime";
3
- import clsx$1 from "clsx";
4
5
  //#region src/components/inputs/File/shared/ProgressBar.tsx
5
6
  var ProgressBar = ({ progress = 0, valueLabel = "trailing" }) => {
7
+ const progressBarCva = UIOverrides.useCva("progressBar.cva", progressBarDefinition);
8
+ const progressBarTrackWrapperCva = UIOverrides.useCva("progressBar.trackWrapperCva", progressBarTrackWrapperDefinition);
9
+ const progressBarTrackCva = UIOverrides.useCva("progressBar.trackCva", progressBarTrackDefinition);
10
+ const progressBarFillCva = UIOverrides.useCva("progressBar.fillCva", progressBarFillDefinition);
11
+ const progressBarValueCva = UIOverrides.useCva("progressBar.valueCva", progressBarValueDefinition);
6
12
  return /* @__PURE__ */ jsxs("div", {
7
- className: clsx$1("flex w-full items-center justify-center gap-file-upload-content-gap-progress-actions", valueLabel === "leading" && "flex-row-reverse"),
13
+ className: progressBarCva({ valueLabel }),
8
14
  children: [/* @__PURE__ */ jsx("div", {
9
- className: "flex flex-fill flex-col items-start gap-2 py-progress-height-height",
15
+ className: progressBarTrackWrapperCva(),
10
16
  children: /* @__PURE__ */ jsxs("div", {
11
- className: "relative h-1 w-full",
12
- children: [/* @__PURE__ */ jsx("div", { className: "h-1 w-full shrink-0 rounded-xs bg-input-filled-idle" }), /* @__PURE__ */ jsx("div", {
13
- className: "absolute top-0 left-0 h-1 shrink-0 rounded-xs bg-interactive-contained-primary-idle transition-all duration-300",
17
+ className: progressBarTrackCva({ part: "container" }),
18
+ children: [/* @__PURE__ */ jsx("div", { className: progressBarTrackCva({ part: "background" }) }), /* @__PURE__ */ jsx("div", {
19
+ className: progressBarFillCva(),
14
20
  style: { width: `${progress}%` }
15
21
  })]
16
22
  })
@@ -18,7 +24,7 @@ var ProgressBar = ({ progress = 0, valueLabel = "trailing" }) => {
18
24
  variant: "default",
19
25
  size: "label-2",
20
26
  as: "span",
21
- className: "text-center text-text-default-3",
27
+ className: progressBarValueCva(),
22
28
  children: [progress, "%"]
23
29
  })]
24
30
  });
@@ -8,7 +8,7 @@ export declare const fileUploadDropZoneDefinition: {
8
8
  readonly horizontal: ["flex-row justify-between"];
9
9
  };
10
10
  readonly isContainer: {
11
- readonly true: ["data-[drop-target]:before:content-['']", "data-[drop-target]:before:absolute", "data-[drop-target]:before:z-40", "data-[drop-target]:before:width-full", "data-[drop-target]:before:height-full", "data-[drop-target]:before:top-0", "data-[drop-target]:before:left-0", "data-[drop-target]:border data-[drop-target]:border-dashed", "data-[drop-target]:border-elevation-outline-default-2", "data-[drop-target]:before:pointer-events-none data-[drop-target]:before:inset-0", "data-[drop-target]:before:bg-elevation-fill-default-2"];
11
+ readonly true: ["data-[drop-target]:before:content-['']", "data-[drop-target]:before:absolute", "data-[drop-target]:before:z-drop-target", "data-[drop-target]:before:width-full", "data-[drop-target]:before:height-full", "data-[drop-target]:before:top-0", "data-[drop-target]:before:left-0", "data-[drop-target]:border data-[drop-target]:border-dashed", "data-[drop-target]:border-elevation-outline-default-2", "data-[drop-target]:before:pointer-events-none data-[drop-target]:before:inset-0", "data-[drop-target]:before:bg-elevation-fill-default-2"];
12
12
  readonly false: ["flex items-center", "py-file-upload-container-height-top-bottom", "px-file-upload-container-side-default", "gap-gap-file-upload-content-gap-icon-to-content", "border border-input-outlined-outline-idle border-dashed bg-input-outlined-idle", "hover:border-elevation-outline-default-2 hover:bg-elevation-fill-default-2", "invalid:border invalid:border-input-outlined-outline-error", "data-[drop-target]:border-elevation-outline-default-2 data-[drop-target]:bg-elevation-fill-default-2", "data-[has-files]:border-solid"];
13
13
  };
14
14
  }>;
@@ -14,7 +14,7 @@ var fileUploadDropZoneDefinition = UIOverrides.defineConfig({
14
14
  true: [
15
15
  "data-[drop-target]:before:content-['']",
16
16
  "data-[drop-target]:before:absolute",
17
- "data-[drop-target]:before:z-40",
17
+ "data-[drop-target]:before:z-drop-target",
18
18
  "data-[drop-target]:before:width-full",
19
19
  "data-[drop-target]:before:height-full",
20
20
  "data-[drop-target]:before:top-0",
@@ -0,0 +1,38 @@
1
+ import { UIOverrides } from '../../../../config/uiOverrides.context';
2
+ export declare const progressBarDefinition: {
3
+ base: string[];
4
+ config: import("../../../../utils/style-merge.util").StyleMergeUtils.Config<{
5
+ readonly valueLabel: {
6
+ readonly leading: ["flex-row-reverse"];
7
+ readonly trailing: [];
8
+ readonly none: [];
9
+ };
10
+ }>;
11
+ };
12
+ export type ProgressBarConfig = NonNullable<typeof progressBarDefinition.config>;
13
+ export interface ProgressBarVariantProps extends UIOverrides.VariantProps<ProgressBarConfig> {
14
+ }
15
+ export declare const progressBarTrackWrapperDefinition: {
16
+ base: string[];
17
+ config?: import("../../../../utils/style-merge.util").StyleMergeUtils.Config<Record<never, never>>;
18
+ };
19
+ export declare const progressBarTrackDefinition: {
20
+ base: string[];
21
+ config: import("../../../../utils/style-merge.util").StyleMergeUtils.Config<{
22
+ readonly part: {
23
+ readonly container: ["relative h-1 w-full"];
24
+ readonly background: ["h-1 w-full shrink-0 rounded-xs bg-input-filled-idle"];
25
+ };
26
+ }>;
27
+ };
28
+ export type ProgressBarTrackConfig = NonNullable<typeof progressBarTrackDefinition.config>;
29
+ export interface ProgressBarTrackVariantProps extends UIOverrides.VariantProps<ProgressBarTrackConfig> {
30
+ }
31
+ export declare const progressBarFillDefinition: {
32
+ base: string[];
33
+ config?: import("../../../../utils/style-merge.util").StyleMergeUtils.Config<Record<never, never>>;
34
+ };
35
+ export declare const progressBarValueDefinition: {
36
+ base: string[];
37
+ config?: import("../../../../utils/style-merge.util").StyleMergeUtils.Config<Record<never, never>>;
38
+ };
@@ -0,0 +1,28 @@
1
+ import { UIOverrides } from "../../../../config/uiOverrides.context.js";
2
+ //#region src/components/inputs/File/shared/progressBar.cva.ts
3
+ var progressBarDefinition = UIOverrides.defineConfig({
4
+ base: ["flex w-full items-center justify-center gap-file-upload-content-gap-progress-actions"],
5
+ config: {
6
+ variants: { valueLabel: {
7
+ leading: ["flex-row-reverse"],
8
+ trailing: [],
9
+ none: []
10
+ } },
11
+ defaultVariants: { valueLabel: "trailing" }
12
+ }
13
+ });
14
+ var progressBarTrackWrapperDefinition = UIOverrides.defineConfig({ base: ["flex flex-fill flex-col items-start gap-2 py-progress-height-height"] });
15
+ var progressBarTrackDefinition = UIOverrides.defineConfig({
16
+ base: [],
17
+ config: {
18
+ variants: { part: {
19
+ container: ["relative h-1 w-full"],
20
+ background: ["h-1 w-full shrink-0 rounded-xs bg-input-filled-idle"]
21
+ } },
22
+ defaultVariants: { part: "container" }
23
+ }
24
+ });
25
+ var progressBarFillDefinition = UIOverrides.defineConfig({ base: ["absolute top-0 left-0 h-1 shrink-0 rounded-xs bg-interactive-contained-primary-idle transition-all duration-300"] });
26
+ var progressBarValueDefinition = UIOverrides.defineConfig({ base: ["text-center text-text-default-3"] });
27
+ //#endregion
28
+ export { progressBarDefinition, progressBarFillDefinition, progressBarTrackDefinition, progressBarTrackWrapperDefinition, progressBarValueDefinition };
@@ -63,7 +63,7 @@ var TextAreaBase = (props) => {
63
63
  ...formFieldProps,
64
64
  as,
65
65
  labelProps,
66
- className: clsx("group w-full", className),
66
+ className: clsx("group w-full flex flex-col", className),
67
67
  tabIndex: as === "inline" ? -1 : void 0,
68
68
  children: /* @__PURE__ */ jsxs("div", {
69
69
  className: "group/text-area relative h-full",
@@ -2,6 +2,7 @@ import { ReactElement, Ref } from 'react';
2
2
  import { AriaButtonProps } from 'react-aria';
3
3
  import { Key } from 'react-aria-components';
4
4
  import { FormFieldProps } from '../../FormField/FormField';
5
+ import { BottomSheetProps } from '../../../overlays/BottomSheet/BottomSheet';
5
6
  import { DefaultInitialSelectItem, GroupedSelectProps, SelectAsyncProps, SelectItem, SelectNewItemProps, SelectVirtualizationProps } from './select.types';
6
7
  import { InputVariantProps } from '../../shared/input.cva';
7
8
  export type SelectBaseProps<TKey extends Key = Key, TInitialSelectItem = DefaultInitialSelectItem<TKey>> = FormFieldProps & GroupedSelectProps<TKey, TInitialSelectItem> & SelectNewItemProps & SelectAsyncProps & SelectVirtualizationProps & InputVariantProps & Pick<AriaButtonProps, "onBlur"> & {
@@ -23,5 +24,6 @@ export type SelectBaseProps<TKey extends Key = Key, TInitialSelectItem = Default
23
24
  onInputChange?: (value: string) => void;
24
25
  onSearchChange?: (value: string) => void;
25
26
  mapInitialToSelectItem?: (item: TInitialSelectItem) => SelectItem<TKey>;
27
+ bottomSheetProps?: Partial<Omit<BottomSheetProps, "children" | "isOpen" | "onOpenChange" | "onStateChange" | "label" | "footer">>;
26
28
  };
27
29
  export declare const SelectBase: <TKey extends Key = Key, TInitialSelectItem = DefaultInitialSelectItem<TKey>>(dProps: SelectBaseProps<TKey, TInitialSelectItem>) => import("react/jsx-runtime").JSX.Element;
@@ -93,7 +93,7 @@ var SelectInput = ({ ref, placeholder, variant, as, size, isDisabled, isInvalid,
93
93
  labelProps
94
94
  }),
95
95
  (showTags || isSearchable) && /* @__PURE__ */ jsxs("div", {
96
- className: clsx("flex flex-1 flex-wrap gap-input-gap-input-text-to-elements truncate", !isSearchable && "pointer-events-none z-1"),
96
+ className: clsx("flex flex-1 flex-wrap gap-input-gap-input-text-to-elements truncate", !isSearchable && "pointer-events-none z-raised"),
97
97
  children: [showTags && /* @__PURE__ */ jsx(SelectInputTags, {
98
98
  selectedItems,
99
99
  isDisabled,
@@ -114,7 +114,7 @@ var SelectInput = ({ ref, placeholder, variant, as, size, isDisabled, isInvalid,
114
114
  onPress: () => setIsOpen(!isOpen),
115
115
  onBlur,
116
116
  "data-type": "select-trigger",
117
- className: clsx("group/select-trigger w-full truncate text-start outline-none disabled:text-text-default-3", showTags && "absolute inset-0 z-0"),
117
+ className: clsx("group/select-trigger w-full truncate text-start outline-none disabled:text-text-default-3", showTags && "absolute inset-0 z-base"),
118
118
  ...fieldProps,
119
119
  children: [(as === "floating" && isEmpty || isMultiple && !isEmpty) && /* @__PURE__ */ jsx(Fragment, { children: "\xA0" }), (isEmpty || !isMultiple) && (as !== "floating" || !isEmpty) && /* @__PURE__ */ jsxs(Typography, {
120
120
  size: "label-1",
@@ -18,7 +18,7 @@ var SelectInputTags = ({ selectedItems, isDisabled, selectedTagsType, collapseAf
18
18
  isDisabled,
19
19
  onDismiss: () => onRemove(item.id),
20
20
  excludeFromTabOrder: true,
21
- className: "z-1",
21
+ className: "z-raised",
22
22
  children: item.label
23
23
  }, item.id)), remainingCount > 0 && /* @__PURE__ */ jsx(Tag, {
24
24
  isDisabled,
@@ -1,5 +1,5 @@
1
1
  import { Key } from 'react-aria-components';
2
2
  import { SelectBaseProps } from './SelectBase';
3
3
  type SelectMobileProps<TKey extends Key = Key> = SelectBaseProps<TKey>;
4
- export declare const SelectMobile: <TKey extends Key = Key>({ ref, error, showSelectionContent, inputClassName, containerClassName, customTrigger, onBlur, ...props }: SelectMobileProps<TKey>) => import("react/jsx-runtime").JSX.Element;
4
+ export declare const SelectMobile: <TKey extends Key = Key>({ ref, error, showSelectionContent, inputClassName, containerClassName, customTrigger, onBlur, bottomSheetProps, ...props }: SelectMobileProps<TKey>) => import("react/jsx-runtime").JSX.Element;
5
5
  export {};
@@ -13,7 +13,7 @@ import { useRef } from "react";
13
13
  import { DialogTrigger } from "react-aria-components";
14
14
  import { useLabel } from "react-aria";
15
15
  //#region src/components/inputs/Selection/shared/SelectMobile.tsx
16
- var SelectMobile = ({ ref, error, showSelectionContent, inputClassName, containerClassName, customTrigger, onBlur, ...props }) => {
16
+ var SelectMobile = ({ ref, error, showSelectionContent, inputClassName, containerClassName, customTrigger, onBlur, bottomSheetProps, ...props }) => {
17
17
  const { label, tooltipText, helperText, isRequired, rightContent, isHeaderHidden, headerClassName, errorClassName, placeholder, variant, isDisabled, className, hideLabel, hideDropdownIcon, hideSearchIcon, isSearchable, isClearable, as, size, collapseAfter, selectedTagsType } = props;
18
18
  const formFieldProps = {
19
19
  error,
@@ -82,6 +82,9 @@ var SelectMobile = ({ ref, error, showSelectionContent, inputClassName, containe
82
82
  collapseAfter,
83
83
  selectedTagsType
84
84
  }), /* @__PURE__ */ jsx(BottomSheet, {
85
+ isDismissable: true,
86
+ hideHeader: isSearchable,
87
+ ...bottomSheetProps,
85
88
  isOpen,
86
89
  onOpenChange: handleOpenChange,
87
90
  onStateChange: (state) => {
@@ -89,8 +92,6 @@ var SelectMobile = ({ ref, error, showSelectionContent, inputClassName, containe
89
92
  },
90
93
  label,
91
94
  footer: isMultiple && /* @__PURE__ */ jsx(SelectListBoxSelectionBar, {}),
92
- isDismissable: true,
93
- hideHeader: isSearchable,
94
95
  children: (close) => /* @__PURE__ */ jsxs("div", {
95
96
  className: "flex max-h-full flex-col overflow-hidden",
96
97
  children: [isSearchable && /* @__PURE__ */ jsx(TextInput, {
@@ -11,7 +11,7 @@ var InputClear = ({ onClear, className, style, show }) => {
11
11
  const alwaysShowClear = UIConfig.useConfig().input.alwaysShowClear;
12
12
  return /* @__PURE__ */ jsx(InlineIconButton, {
13
13
  color: "secondary",
14
- className: clsx("relative z-1 flex items-center", !alwaysShowClear && "md:invisible group-focus-within:visible group-hover/date-picker-content:visible group-hover/select-content:visible group-hover/text-area:visible group-hover:visible", "border-0!", !show && "invisible!", className),
14
+ className: clsx("relative z-raised flex items-center", !alwaysShowClear && "md:invisible group-focus-within:visible group-hover/date-picker-content:visible group-hover/select-content:visible group-hover/text-area:visible group-hover:visible", "border-0!", !show && "invisible!", className),
15
15
  label: t(($) => $.ui.clearAlt),
16
16
  icon: CloseIcon,
17
17
  onPress: onClear,
@@ -98,7 +98,7 @@ var BottomSheetBase = ({ isOpen, onOpenChange, onStateChange, isDismissable = tr
98
98
  return /* @__PURE__ */ jsx(AnimatePresence, { children: isOpen && /* @__PURE__ */ jsxs(MotionModalOverlay, {
99
99
  isOpen: true,
100
100
  UNSTABLE_portalContainer: portalContainerRef?.current,
101
- className: clsx("fixed top-0 left-0 z-10 w-screen h-dvh", containerClassName),
101
+ className: clsx("fixed top-0 left-0 z-bottom-sheet w-screen h-dvh", containerClassName),
102
102
  style: { "--bottom-sheet-keyboard-inset": `${keyboardInset}px` },
103
103
  onOpenChange,
104
104
  isDismissable,
@@ -212,7 +212,7 @@ var BottomSheetBase = ({ isOpen, onOpenChange, onStateChange, isDismissable = tr
212
212
  initial: { opacity: 0 },
213
213
  exit: { opacity: 0 },
214
214
  ref: setFooterElement,
215
- className: clsx("pointer-events-auto absolute z-50 w-full bg-elevation-fill-default-2", "top-[calc(100dvh-var(--bottom-sheet-keyboard-inset,0))] left-0 translate-y-[calc(-100%-var(--scroll-position,0))]"),
215
+ className: clsx("pointer-events-auto absolute z-overlay-above w-full bg-elevation-fill-default-2", "top-[calc(100dvh-var(--bottom-sheet-keyboard-inset,0))] left-0 translate-y-[calc(-100%-var(--scroll-position,0))]"),
216
216
  children: footer
217
217
  })
218
218
  ] })
@@ -36,11 +36,11 @@ var DrawerOverlay = ({ label, isOpen, onOpenChange, portalContainerRef, children
36
36
  isOpen,
37
37
  onOpenChange,
38
38
  UNSTABLE_portalContainer: portalContainerRef?.current,
39
- className: clsx(modalOverlay(), overlayClassName),
39
+ className: clsx(modalOverlay(), "z-drawer", overlayClassName),
40
40
  isDismissable,
41
41
  shouldCloseOnInteractOutside,
42
42
  children: /* @__PURE__ */ jsx(Modal, {
43
- className: clsx("fixed inset-y-0 right-0 z-10 w-fit entering:animate-drawer-enter-right exiting:animate-drawer-exit-right bg-elevation-fill-default-1", className),
43
+ className: clsx("fixed inset-y-0 right-0 z-drawer w-fit entering:animate-drawer-enter-right exiting:animate-drawer-exit-right bg-elevation-fill-default-1", className),
44
44
  children: /* @__PURE__ */ jsx(Dialog, {
45
45
  "aria-label": label,
46
46
  className: clsx("outline-none", dialogClassName),
@@ -18,7 +18,7 @@ var modalContentDefinition = UIOverrides.defineConfig({
18
18
  }
19
19
  });
20
20
  var modalOverlayDefinition = UIOverrides.defineConfig({
21
- base: ["fixed inset-0 z-10 flex h-(--visual-viewport-height) w-screen overflow-y-auto bg-support-overlay"],
21
+ base: ["fixed inset-0 z-modal flex h-(--visual-viewport-height) w-screen overflow-y-auto bg-support-overlay"],
22
22
  config: {
23
23
  variants: { aside: {
24
24
  left: "p-0",
@@ -1,4 +1,6 @@
1
1
  import { ReactElement, ReactNode } from 'react';
2
+ import { BottomSheetProps } from '../BottomSheet/BottomSheet';
3
+ type ResponsivePopoverBottomSheetProps = Partial<Omit<BottomSheetProps, "children" | "isOpen" | "onOpenChange" | "trigger">>;
2
4
  export interface ResponsivePopoverProps {
3
5
  trigger: ReactElement;
4
6
  children: ReactNode;
@@ -6,5 +8,7 @@ export interface ResponsivePopoverProps {
6
8
  onOpenChange: (isOpen: boolean) => void;
7
9
  popoverClassName?: string;
8
10
  sheetLabel: string;
11
+ bottomSheetProps?: ResponsivePopoverBottomSheetProps;
9
12
  }
10
- export declare const ResponsivePopover: ({ trigger, isOpen, onOpenChange, children, popoverClassName, sheetLabel, }: ResponsivePopoverProps) => import("react/jsx-runtime").JSX.Element;
13
+ export declare const ResponsivePopover: ({ trigger, isOpen, onOpenChange, children, popoverClassName, sheetLabel, bottomSheetProps, }: ResponsivePopoverProps) => import("react/jsx-runtime").JSX.Element;
14
+ export {};
@@ -6,15 +6,16 @@ import { jsx, jsxs } from "react/jsx-runtime";
6
6
  import { clsx } from "clsx";
7
7
  import { Dialog, DialogTrigger, Popover } from "react-aria-components";
8
8
  //#region src/components/overlays/ResponsivePopover/ResponsivePopover.tsx
9
- var ResponsivePopover = ({ trigger, isOpen, onOpenChange, children, popoverClassName, sheetLabel }) => {
9
+ var ResponsivePopover = ({ trigger, isOpen, onOpenChange, children, popoverClassName, sheetLabel, bottomSheetProps }) => {
10
10
  const popoverCva = UIOverrides.useCva("popover.cva", popoverDefinition);
11
11
  if (!useBreakpoint("md")) return /* @__PURE__ */ jsx(BottomSheet, {
12
- isOpen,
13
- onOpenChange,
14
- trigger,
15
12
  height: "auto",
16
13
  isDismissable: true,
17
14
  label: sheetLabel,
15
+ ...bottomSheetProps,
16
+ isOpen,
17
+ onOpenChange,
18
+ trigger,
18
19
  children: /* @__PURE__ */ jsx("div", {
19
20
  className: "p-4",
20
21
  children
@@ -3,7 +3,7 @@ import { Typography } from "../../text/Typography/Typography.js";
3
3
  import { Loader } from "../Loader/Loader.js";
4
4
  import { UIConfig } from "../../../config/uiConfig.context.js";
5
5
  import { Button } from "../../buttons/Button/Button.js";
6
- import { buttonColorVariant, statusIconDefinition, statusSeparatorDefinition, toastContainer, toastDefinition, toastWrapper } from "./toast.cva.js";
6
+ import { buttonColorVariant, statusIconDefinition, statusSeparatorDefinition, toastContainerDefinition, toastDefinition, toastWrapper } from "./toast.cva.js";
7
7
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
8
8
  import { ToastContainer } from "react-toastify";
9
9
  //#region src/components/status/Toast/Toast.tsx
@@ -47,10 +47,13 @@ var Toast = ({ text, isLoading = false, actions = [], icon: Icon, ...props }) =>
47
47
  });
48
48
  };
49
49
  var ToastContainer$1 = () => {
50
+ const uiConfig = UIConfig.useConfig();
51
+ const containerCva = UIOverrides.useCva("toast.containerCva", toastContainerDefinition);
50
52
  return /* @__PURE__ */ jsx(ToastContainer, {
53
+ position: uiConfig.toast.position,
51
54
  className: (params) => {
52
- return toastContainer({
53
- position: params?.position,
55
+ return containerCva({
56
+ position: params?.position ?? uiConfig.toast.position,
54
57
  className: params?.defaultClassName
55
58
  });
56
59
  },
@@ -1,8 +1,19 @@
1
1
  import { ButtonVariantProps } from '../../buttons/Button/button.cva';
2
2
  import { UIOverrides } from '../../../config/uiOverrides.context';
3
- export declare const toastContainer: (props?: ({
4
- position?: "bottom-right" | "bottom-left" | "top-right" | "top-left" | "bottom-center" | "top-center" | null | undefined;
5
- } & import('class-variance-authority/types').ClassProp) | undefined) => string;
3
+ export declare const toastContainerDefinition: {
4
+ base: string[];
5
+ config: import("../../../utils/style-merge.util").StyleMergeUtils.Config<{
6
+ readonly position: {
7
+ readonly "bottom-right": "right-0 bottom-0";
8
+ readonly "bottom-left": "bottom-0 left-0";
9
+ readonly "top-right": "top-0 right-0";
10
+ readonly "top-left": "top-0 left-0";
11
+ readonly "bottom-center": "bottom-0";
12
+ readonly "top-center": "top-0";
13
+ };
14
+ }>;
15
+ };
16
+ export type ToastContainerConfig = NonNullable<typeof toastContainerDefinition.config>;
6
17
  export declare const toastWrapper: string;
7
18
  export declare const toastDefinition: {
8
19
  base: string[];
@@ -1,16 +1,18 @@
1
1
  import { UIOverrides } from "../../../config/uiOverrides.context.js";
2
2
  import { compoundMapper } from "../../../utils/compoundMapper.js";
3
3
  import { clsx } from "clsx";
4
- import { cva } from "class-variance-authority";
5
4
  //#region src/components/status/Toast/toast.cva.ts
6
- var toastContainer = cva("m-toast-gap-margin-mobile w-auto gap-toast-gap-margin-mobile p-0 md:m-toast-gap-margin-desktop md:gap-toast-gap-margin-desktop", { variants: { position: {
7
- "bottom-right": "right-0 bottom-0",
8
- "bottom-left": "bottom-0 left-0",
9
- "top-right": "top-0 right-0",
10
- "top-left": "top-0 left-0",
11
- "bottom-center": "bottom-0",
12
- "top-center": "top-0"
13
- } } });
5
+ var toastContainerDefinition = UIOverrides.defineConfig({
6
+ base: ["m-toast-gap-margin-mobile w-auto gap-toast-gap-margin-mobile p-0 md:m-toast-gap-margin-desktop md:gap-toast-gap-margin-desktop"],
7
+ config: { variants: { position: {
8
+ "bottom-right": "right-0 bottom-0",
9
+ "bottom-left": "bottom-0 left-0",
10
+ "top-right": "top-0 right-0",
11
+ "top-left": "top-0 left-0",
12
+ "bottom-center": "bottom-0",
13
+ "top-center": "top-0"
14
+ } } }
15
+ });
14
16
  var toastWrapper = clsx("m-0! min-h-0! w-auto! max-w-toast bg-transparent! p-0! shadow-none!");
15
17
  var toastDefinition = UIOverrides.defineConfig({
16
18
  base: ["m-0 inline-flex w-auto flex-col items-center overflow-hidden rounded-toast-rounding-default shadow-4 md:flex-row"],
@@ -206,4 +208,4 @@ var statusSeparatorDefinition = UIOverrides.defineConfig({
206
208
  }
207
209
  });
208
210
  //#endregion
209
- export { buttonColorVariant, statusIconDefinition, statusSeparatorDefinition, toastContainer, toastDefinition, toastWrapper };
211
+ export { buttonColorVariant, statusIconDefinition, statusSeparatorDefinition, toastContainerDefinition, toastDefinition, toastWrapper };
@@ -3,7 +3,7 @@ import { ChevronUpIcon } from "../../assets/icons/ChevronUp.js";
3
3
  import { UIOverrides } from "../../config/uiOverrides.context.js";
4
4
  import { InlineIconButton } from "../buttons/InlineIconButton/InlineIconButton.js";
5
5
  import { useIntersectionObserver } from "../../hooks/useIntersectionObserver.js";
6
- import { tableDataDefinition, tableHeadDataDefinition, tableHeadRowDefinition, tableRowDefinition } from "./table.cva.js";
6
+ import { tableDataDefinition, tableHeadDataDefinition, tableHeadRowDefinition, tableRowDefinition, theadDefinition } from "./table.cva.js";
7
7
  import { CellText } from "./CellText.js";
8
8
  import { DragIndicatorIcon } from "../../assets/icons/DragIndicator.js";
9
9
  import { HeaderText } from "./HeaderText.js";
@@ -75,6 +75,7 @@ var DraggableRow = ({ row, showCellBorder, onRowClick, onDoubleClick, tableRowCv
75
75
  };
76
76
  var Table = ({ items, showCellBorder, columns, onRowClick, onDoubleClick, className, sorting, setSorting, columnOrder, setColumnOrder, columnVisibility, setColumnVisibility, bulkSelectionActions: ActionHeader, enableDragDrop = false, onDragEnd, onReorder, getRowId, enableRowSelection, enableMultiRowSelection = false, defaultSelectedRows, onRowSelectionChange, ...props }) => {
77
77
  const tableRowCva = UIOverrides.useCva("table.rowCva", tableRowDefinition);
78
+ const theadCva = UIOverrides.useCva("table.theadCva", theadDefinition);
78
79
  const tableHeadRowCva = UIOverrides.useCva("table.headRowCva", tableHeadRowDefinition);
79
80
  const tableHeadDataCva = UIOverrides.useCva("table.headDataCva", tableHeadDataDefinition);
80
81
  const tableDataCva = UIOverrides.useCva("table.dataCva", tableDataDefinition);
@@ -175,7 +176,7 @@ var Table = ({ items, showCellBorder, columns, onRowClick, onDoubleClick, classN
175
176
  className: clsx("w-full", className),
176
177
  ...listeners,
177
178
  children: [/* @__PURE__ */ jsxs("thead", {
178
- className: "group/table-head sticky top-0 z-10 data-is-sticky:shadow-2",
179
+ className: clsx(theadCva({})),
179
180
  "data-is-sticky": isSticky || void 0,
180
181
  children: [/* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsx("th", {
181
182
  ref: stickyRef,
@@ -11,6 +11,13 @@ export declare const tableRowDefinition: {
11
11
  export type TableRowConfig = NonNullable<typeof tableRowDefinition.config>;
12
12
  export interface TableRowVariantProps extends UIOverrides.VariantProps<TableRowConfig> {
13
13
  }
14
+ export declare const theadDefinition: {
15
+ base: string[];
16
+ config?: import("../../utils/style-merge.util").StyleMergeUtils.Config<Record<never, never>>;
17
+ };
18
+ export type TheadConfig = NonNullable<typeof theadDefinition.config>;
19
+ export interface TheadVariantProps extends UIOverrides.VariantProps<TheadConfig> {
20
+ }
14
21
  export declare const tableHeadRowDefinition: {
15
22
  base: string[];
16
23
  config?: import("../../utils/style-merge.util").StyleMergeUtils.Config<Record<never, never>>;
@@ -15,6 +15,7 @@ var tableRowDefinition = UIOverrides.defineConfig({
15
15
  odd: "odd:bg-elevation-fill-inverted-4/5"
16
16
  } } }
17
17
  });
18
+ var theadDefinition = UIOverrides.defineConfig({ base: ["group/table-head sticky top-0 z-sticky data-is-sticky:shadow-2"] });
18
19
  var tableHeadRowDefinition = UIOverrides.defineConfig({ base: ["h-8 w-full"] });
19
20
  var tableHeadDataDefinition = UIOverrides.defineConfig({
20
21
  base: ["border-b border-b-elevation-outline-default-1 border-solid px-table-header-cell-container-side-default py-table-header-cell-container-height-default text-left", "group-data-[is-sticky=true]/table-head:bg-elevation-fill-default-1"],
@@ -45,4 +46,4 @@ var tableDataDefinition = UIOverrides.defineConfig({
45
46
  var tableHeaderTextDefinition = UIOverrides.defineConfig({ base: ["overflow-hidden text-ellipsis px-table-cell-content-side-m py-table-cell-content-height-m text-text-default-1"] });
46
47
  var tableCellTextDefinition = UIOverrides.defineConfig({ base: ["block overflow-hidden text-ellipsis text-text-default-2"] });
47
48
  //#endregion
48
- export { tableCellTextDefinition, tableDataDefinition, tableHeadDataDefinition, tableHeadRowDefinition, tableHeaderTextDefinition, tableRowDefinition };
49
+ export { tableCellTextDefinition, tableDataDefinition, tableHeadDataDefinition, tableHeadRowDefinition, tableHeaderTextDefinition, tableRowDefinition, theadDefinition };
@@ -0,0 +1,15 @@
1
+ import { Ref } from 'react';
2
+ import { ButtonProps as AriaButtonProps } from 'react-aria-components';
3
+ import { PillButtonVariants } from '../../buttons/PillButton/pillButton.cva';
4
+ import { TypographyProps } from '../Typography/Typography';
5
+ export interface PillProps extends PillButtonVariants, AriaButtonProps {
6
+ className?: string;
7
+ children: string;
8
+ dismissable?: boolean;
9
+ isDisabled?: boolean;
10
+ contentRef?: Ref<HTMLElement>;
11
+ textVariant?: TypographyProps["variant"];
12
+ textSize?: TypographyProps["size"];
13
+ onDismiss?: () => void;
14
+ }
15
+ export declare const Pill: ({ className, children, dismissable, isDisabled, onDismiss, contentRef, variant, ...props }: PillProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,44 @@
1
+ import { CloseIcon } from "../../../assets/icons/Close.js";
2
+ import { UIOverrides } from "../../../config/uiOverrides.context.js";
3
+ import { Typography } from "../Typography/Typography.js";
4
+ import { UIConfig } from "../../../config/uiConfig.context.js";
5
+ import { pillButtonDefinition } from "../../buttons/PillButton/pillButton.cva.js";
6
+ import "../../../config/i18n.js";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ import { clsx } from "clsx";
9
+ import { Button } from "react-aria-components";
10
+ import { useTranslation } from "react-i18next";
11
+ //#region src/components/text/Pill/Pill.tsx
12
+ var Pill = ({ className, children, dismissable, isDisabled, onDismiss, contentRef, variant = "subtle", ...props }) => {
13
+ const uiConfig = UIConfig.useConfig();
14
+ const { textVariant = uiConfig.tag.textVariant, textSize = uiConfig.tag.textSize } = props;
15
+ const pillCva = UIOverrides.useCva("pillButton.cva", pillButtonDefinition);
16
+ const { t } = useTranslation("ui");
17
+ const buttonProps = {
18
+ isDisabled,
19
+ onPress: onDismiss,
20
+ label: t(($) => $.ui.tag.dismiss),
21
+ ...props
22
+ };
23
+ return /* @__PURE__ */ jsxs("div", {
24
+ className: pillCva({
25
+ ...props,
26
+ variant,
27
+ className: clsx("pointer-events-none inline-flex gap-list-gap-icon-to-label overflow-hidden", className)
28
+ }),
29
+ children: [/* @__PURE__ */ jsx(Typography, {
30
+ ref: contentRef,
31
+ variant: textVariant,
32
+ size: textSize,
33
+ as: "span",
34
+ className: "truncate",
35
+ children
36
+ }), dismissable && /* @__PURE__ */ jsx(Button, {
37
+ ...buttonProps,
38
+ className: "pointer-events-auto shrink-0",
39
+ children: /* @__PURE__ */ jsx(CloseIcon, { className: "size-4" })
40
+ })]
41
+ });
42
+ };
43
+ //#endregion
44
+ export { Pill };
@@ -11,6 +11,7 @@ import { ToggleProps } from '../components/inputs/Toggle/Toggle';
11
11
  import { ActionModalProps } from '../components/overlays/ActionModal/ActionModal';
12
12
  import { BottomSheetProps } from '../components/overlays/BottomSheet/BottomSheet';
13
13
  import { ToastProps } from '../components/status/Toast/Toast';
14
+ import { ToastPosition } from 'react-toastify';
14
15
  import { CellTextProps } from '../components/table/CellText';
15
16
  import { HeaderTextProps } from '../components/table/HeaderText';
16
17
  import { TagProps } from '../components/text/Tag/Tag';
@@ -35,7 +36,9 @@ export declare namespace UIConfig {
35
36
  tableHeaderText: Pick<HeaderTextProps, "variant" | "size">;
36
37
  tableCellText: Pick<CellTextProps, "variant" | "size">;
37
38
  tag: Pick<TagProps, "textVariant" | "textSize">;
38
- toast: Pick<ToastProps, "variant">;
39
+ toast: Pick<ToastProps, "variant"> & {
40
+ position: ToastPosition;
41
+ };
39
42
  }
40
43
  interface ProviderProps {
41
44
  config?: Partial<Options>;
@@ -75,7 +75,10 @@ var UIConfig;
75
75
  textVariant: "default",
76
76
  textSize: "label-2"
77
77
  },
78
- toast: { variant: "outlined" }
78
+ toast: {
79
+ variant: "outlined",
80
+ position: "top-right"
81
+ }
79
82
  };
80
83
  const Context = createContext(DEFAULT_CONFIG);
81
84
  _UIConfig.Provider = ({ config = {}, children }) => {
@@ -1,7 +1,7 @@
1
1
  import { ClassProp } from 'class-variance-authority/types';
2
2
  import { PropsWithChildren } from 'react';
3
3
  import { ButtonConfig, ButtonContentConfig, ButtonIconSizeConfig, ButtonSizeConfig } from '../components/buttons/Button/button.cva';
4
- import { StatusIconConfig, StatusSeparatorConfig, ToastConfig } from '../components/status/Toast/toast.cva';
4
+ import { StatusIconConfig, StatusSeparatorConfig, ToastConfig, ToastContainerConfig } from '../components/status/Toast/toast.cva';
5
5
  import { CompoundMapper, ConfigSchema } from '../utils/compoundMapper';
6
6
  import { StyleMergeUtils } from '../utils/style-merge.util';
7
7
  export declare namespace UIOverrides {
@@ -52,6 +52,7 @@ export declare namespace UIOverrides {
52
52
  };
53
53
  toast: {
54
54
  cva?: CvaOption<ToastConfig>;
55
+ containerCva?: CvaOption<ToastContainerConfig>;
55
56
  buttonColor?: Mapper;
56
57
  };
57
58
  alert: {
@@ -80,6 +81,7 @@ export declare namespace UIOverrides {
80
81
  cva?: GenericCvaOption;
81
82
  };
82
83
  table: {
84
+ theadCva?: GenericCvaOption;
83
85
  headRowCva?: GenericCvaOption;
84
86
  headDataCva?: GenericCvaOption;
85
87
  rowCva?: GenericCvaOption;
@@ -146,6 +148,13 @@ export declare namespace UIOverrides {
146
148
  select: {
147
149
  listBoxItemCva?: GenericCvaOption;
148
150
  };
151
+ progressBar: {
152
+ cva?: GenericCvaOption;
153
+ trackWrapperCva?: GenericCvaOption;
154
+ trackCva?: GenericCvaOption;
155
+ fillCva?: GenericCvaOption;
156
+ valueCva?: GenericCvaOption;
157
+ };
149
158
  }
150
159
  export type Config = Partial<Options>;
151
160
  interface ProviderProps {
package/dist/index.d.ts CHANGED
@@ -159,6 +159,8 @@ export type { TableRowVariantProps } from './components/table/table.cva';
159
159
  export type { LinkNavigationProps, LinkProps } from './components/text/Link/Link';
160
160
  export { Link } from './components/text/Link/Link';
161
161
  export type { LinkVariantProps } from './components/text/Link/link.cva';
162
+ export type { PillProps } from './components/text/Pill/Pill';
163
+ export { Pill } from './components/text/Pill/Pill';
162
164
  export type { TagProps } from './components/text/Tag/Tag';
163
165
  export { Tag } from './components/text/Tag/Tag';
164
166
  export type { TagVariantProps } from './components/text/Tag/tag.cva';
@@ -178,9 +180,12 @@ export { pillButtonContentDefinition, pillButtonDefinition } from './components/
178
180
  export { checkboxDefinition, checkboxIconDefinition } from './components/inputs/Checkbox/checkbox.cva';
179
181
  export { fileCardListDefinition, fileUploadDropZoneDefinition } from './components/inputs/File/shared/fileUpload.cva';
180
182
  export { inputUploadButtonDefinition, inputUploadDropZoneDefinition, } from './components/inputs/File/shared/inputUploadButton.cva';
183
+ export { progressBarDefinition, progressBarFillDefinition, progressBarTrackDefinition, progressBarTrackWrapperDefinition, progressBarValueDefinition, } from './components/inputs/File/shared/progressBar.cva';
184
+ export type { ProgressBarConfig, ProgressBarTrackConfig, ProgressBarVariantProps, } from './components/inputs/File/shared/progressBar.cva';
181
185
  export { formFieldErrorDefinition } from './components/inputs/FormField/formFieldError.cva';
182
186
  export { formFieldHelperDefinition } from './components/inputs/FormField/formFieldHelper.cva';
183
187
  export { inputBaseDefinition, inputSideDefinition, inputSizeDefinition } from './components/inputs/shared/input.cva';
188
+ export type { LabelBaseProps, LabelConfig } from './components/inputs/shared/label.cva';
184
189
  export { labelDefinition } from './components/inputs/shared/label.cva';
185
190
  export { radioDefinition } from './components/inputs/RadioGroup/radio.cva';
186
191
  export { selectListBoxItemDefinition } from './components/inputs/Selection/shared/selectItem.cva';
package/dist/index.js CHANGED
@@ -95,6 +95,7 @@ import { DateTimePicker } from "./components/inputs/DateTime/DateTimePicker/Date
95
95
  import { TimePicker } from "./components/inputs/DateTime/TimePicker/TimePicker.js";
96
96
  import { RestUtils } from "./utils/rest.utils.js";
97
97
  import { FileUtils } from "./utils/file.utils.js";
98
+ import { progressBarDefinition, progressBarFillDefinition, progressBarTrackDefinition, progressBarTrackWrapperDefinition, progressBarValueDefinition } from "./components/inputs/File/shared/progressBar.cva.js";
98
99
  import { ProgressBar } from "./components/inputs/File/shared/ProgressBar.js";
99
100
  import { fileCardListDefinition, fileUploadDropZoneDefinition } from "./components/inputs/File/shared/fileUpload.cva.js";
100
101
  import { FileUpload } from "./components/inputs/File/FileUpload.js";
@@ -147,6 +148,7 @@ import { InfiniteTable } from "./components/table/InfiniteTable.js";
147
148
  import { PaginatedTable } from "./components/table/PaginatedTable.js";
148
149
  import { linkDefinition } from "./components/text/Link/link.cva.js";
149
150
  import { Link } from "./components/text/Link/Link.js";
151
+ import { Pill } from "./components/text/Pill/Pill.js";
150
152
  import { Confirmation } from "./config/confirmation.context.js";
151
153
  import { UIRouter } from "./config/router.context.js";
152
154
  import { useLocalStorage } from "./hooks/useLocalStorage.js";
@@ -163,4 +165,4 @@ import { useSorting } from "./hooks/useSorting.js";
163
165
  import { useTableColumnConfig } from "./hooks/useTableColumnConfig.js";
164
166
  import { ArrayUtils } from "./utils/array.utils.js";
165
167
  import { QueriesUtils } from "./utils/queries.utils.js";
166
- export { Accordion, ActionModal, Alert, AlignCenterIcon, AlignLeftIcon, AlignLeftRightIcon, AlignRightIcon, ArrayUtils, ArrowDropDownIcon, ArrowDropUpIcon, ArrowLeftIcon, ArrowRightIcon, Autocomplete, BoldIcon, BottomSheet, Breadcrumbs, BulletedListIcon, Button, CalendarIcon, CellText, CheckIcon, Checkbox, CheckboxCheckmarkIcon, CheckboxIndeterminateIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronsLeftIcon, ChevronsRightIcon, ClockIcon, CloseIcon, ColumnConfigModal, Confirmation, DatePicker, DateRangePicker, DateTimeIcon, DateTimePicker, DateTimeUtils, DateUtils, DomUtils, Drawer, FileUpload, FileUploadContainer, FileUtils, Form, FormField, HeaderText, HighlightIcon, HighlightOnIcon, HomeIcon, IconButton, InfiniteTable, InfoIcon, InlineIconButton, InputUpload, Inputs, ItalicIcon, Link, LinkContext, LinkIcon, Loader, Menu, MenuIcon, MenuItem, MenuPopover, Modal, NumberInput, NumberedListIcon, ObjectUtils, PaginatedTable, Pagination, PaginationList, PasswordInput, PillButton, PointerHorizontalIcon, PointerVerticalIcon, ProgressBar, QueriesUtils, QueryAutocomplete, RadioGroup, ResponsivePopover, RestUtils, RoutingUtils, Segment, Select, SendIcon, Slider, SplitButton, Stepper, StrikethroughIcon, StringUtils, Table, Tag, TextArea, TextButton, TextColorIcon, TextInput, ThemeContext, TimePicker, Toast, ToastContainer, Toggle, ToggleButton, Tooltip, TooltipEllipsis, Typography, UIConfig, UIOverrides, UIRouter, UnderlinedIcon, VisibilityIcon, VisibilityOffIcon, accordionChevronDefinition, accordionDefinition, accordionHeadingDefinition, accordionHeadingSubtitleDefinition, accordionHeadingTitleDefinition, accordionIconDefinition, accordionItemDefinition, accordionPanelContentDefinition, accordionPanelDefinition, accordionTriggerDefinition, alertDefinition, breadcrumbChevronDefinition, breadcrumbIconDefinition, breadcrumbItemDefinition, breadcrumbSegmentDefinition, breadcrumbsDefinition, buttonContentDefinition, buttonDefinition, buttonIconSizeDefinition, buttonSizeDefinition, checkboxDefinition, checkboxIconDefinition, compoundMapper, dynamicColumns, dynamicInputs, fileCardListDefinition, fileUploadDropZoneDefinition, formFieldErrorDefinition, formFieldHelperDefinition, inputBaseDefinition, inputSideDefinition, inputSizeDefinition, inputUploadButtonDefinition, inputUploadDropZoneDefinition, isEqual, labelDefinition, linkDefinition, loaderDefinition, loaderWrapperDefinition, logger, menuDefinition, menuItemDefinition, menuPopoverDefinition, menuPopoverWrapperDefinition, modalContentDefinition, modalMainDefinition, modalOverlayDefinition, ns, pillButtonContentDefinition, pillButtonDefinition, popoverDefinition, radioDefinition, resources, segmentDefinition, segmentItemDefinition, selectListBoxItemDefinition, statusIconDefinition, statusSeparatorDefinition, stepperDefinition, stepperIconDefinition, stepperItemDefinition, stepperNumberDefinition, stepperSeparatorDefinition, stepperSubtextDefinition, stepperTitleDefinition, tableCellTextDefinition, tableDataDefinition, tableHeadDataDefinition, tableHeadRowDefinition, tableHeaderTextDefinition, tableRowDefinition, tagDefinition, toastDefinition, statusIconDefinition$1 as toastStatusIconDefinition, statusSeparatorDefinition$1 as toastStatusSeparatorDefinition, toggleDefinition, tooltipDefinition, tooltipPointerHorizontalDefinition, tooltipPointerVerticalDefinition, tooltipTextDefinition, typographyDefinition, uiOutlineClass, useAutosave, useBreakpoint, useDebounceCallback, useDeepCompareEffect, useDeepCompareLayoutEffect, useDeepCompareMemo, useFilters, useForm, useFormAutosave, useIntersectionObserver, useLocalStorage, useLongPressRepeat, usePagination, useScrollableListBox, useSorting, useStateAndRef, useTableColumnConfig, useTableNav, useToast, useTranslationMemo };
168
+ export { Accordion, ActionModal, Alert, AlignCenterIcon, AlignLeftIcon, AlignLeftRightIcon, AlignRightIcon, ArrayUtils, ArrowDropDownIcon, ArrowDropUpIcon, ArrowLeftIcon, ArrowRightIcon, Autocomplete, BoldIcon, BottomSheet, Breadcrumbs, BulletedListIcon, Button, CalendarIcon, CellText, CheckIcon, Checkbox, CheckboxCheckmarkIcon, CheckboxIndeterminateIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronsLeftIcon, ChevronsRightIcon, ClockIcon, CloseIcon, ColumnConfigModal, Confirmation, DatePicker, DateRangePicker, DateTimeIcon, DateTimePicker, DateTimeUtils, DateUtils, DomUtils, Drawer, FileUpload, FileUploadContainer, FileUtils, Form, FormField, HeaderText, HighlightIcon, HighlightOnIcon, HomeIcon, IconButton, InfiniteTable, InfoIcon, InlineIconButton, InputUpload, Inputs, ItalicIcon, Link, LinkContext, LinkIcon, Loader, Menu, MenuIcon, MenuItem, MenuPopover, Modal, NumberInput, NumberedListIcon, ObjectUtils, PaginatedTable, Pagination, PaginationList, PasswordInput, Pill, PillButton, PointerHorizontalIcon, PointerVerticalIcon, ProgressBar, QueriesUtils, QueryAutocomplete, RadioGroup, ResponsivePopover, RestUtils, RoutingUtils, Segment, Select, SendIcon, Slider, SplitButton, Stepper, StrikethroughIcon, StringUtils, Table, Tag, TextArea, TextButton, TextColorIcon, TextInput, ThemeContext, TimePicker, Toast, ToastContainer, Toggle, ToggleButton, Tooltip, TooltipEllipsis, Typography, UIConfig, UIOverrides, UIRouter, UnderlinedIcon, VisibilityIcon, VisibilityOffIcon, accordionChevronDefinition, accordionDefinition, accordionHeadingDefinition, accordionHeadingSubtitleDefinition, accordionHeadingTitleDefinition, accordionIconDefinition, accordionItemDefinition, accordionPanelContentDefinition, accordionPanelDefinition, accordionTriggerDefinition, alertDefinition, breadcrumbChevronDefinition, breadcrumbIconDefinition, breadcrumbItemDefinition, breadcrumbSegmentDefinition, breadcrumbsDefinition, buttonContentDefinition, buttonDefinition, buttonIconSizeDefinition, buttonSizeDefinition, checkboxDefinition, checkboxIconDefinition, compoundMapper, dynamicColumns, dynamicInputs, fileCardListDefinition, fileUploadDropZoneDefinition, formFieldErrorDefinition, formFieldHelperDefinition, inputBaseDefinition, inputSideDefinition, inputSizeDefinition, inputUploadButtonDefinition, inputUploadDropZoneDefinition, isEqual, labelDefinition, linkDefinition, loaderDefinition, loaderWrapperDefinition, logger, menuDefinition, menuItemDefinition, menuPopoverDefinition, menuPopoverWrapperDefinition, modalContentDefinition, modalMainDefinition, modalOverlayDefinition, ns, pillButtonContentDefinition, pillButtonDefinition, popoverDefinition, progressBarDefinition, progressBarFillDefinition, progressBarTrackDefinition, progressBarTrackWrapperDefinition, progressBarValueDefinition, radioDefinition, resources, segmentDefinition, segmentItemDefinition, selectListBoxItemDefinition, statusIconDefinition, statusSeparatorDefinition, stepperDefinition, stepperIconDefinition, stepperItemDefinition, stepperNumberDefinition, stepperSeparatorDefinition, stepperSubtextDefinition, stepperTitleDefinition, tableCellTextDefinition, tableDataDefinition, tableHeadDataDefinition, tableHeadRowDefinition, tableHeaderTextDefinition, tableRowDefinition, tagDefinition, toastDefinition, statusIconDefinition$1 as toastStatusIconDefinition, statusSeparatorDefinition$1 as toastStatusSeparatorDefinition, toggleDefinition, tooltipDefinition, tooltipPointerHorizontalDefinition, tooltipPointerVerticalDefinition, tooltipTextDefinition, typographyDefinition, uiOutlineClass, useAutosave, useBreakpoint, useDebounceCallback, useDeepCompareEffect, useDeepCompareLayoutEffect, useDeepCompareMemo, useFilters, useForm, useFormAutosave, useIntersectionObserver, useLocalStorage, useLongPressRepeat, usePagination, useScrollableListBox, useSorting, useStateAndRef, useTableColumnConfig, useTableNav, useToast, useTranslationMemo };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@povio/ui",
3
- "version": "3.0.0",
3
+ "version": "3.1.0",
4
4
  "type": "module",
5
5
  "module": "dist/index.js",
6
6
  "types": "dist/index.d.ts",