uikit-react-public 0.49.6 → 0.50.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/components/Button/Button.d.ts +8 -4
  2. package/dist/components/Button/Button.stories.d.ts +11 -2
  3. package/dist/components/Button/style/buttonPrimarySubtleStyle.d.ts +1 -1
  4. package/dist/components/Button/style/buttonSecondaryStyle.d.ts +1 -1
  5. package/dist/components/Button/style/buttonSecondarySubtleStyle.d.ts +1 -1
  6. package/dist/components/Button/style/buttonTertiaryDestructiveNoPaddingStyle.d.ts +4 -0
  7. package/dist/components/Button/style/buttonTertiaryDestructiveStyle.d.ts +1 -1
  8. package/dist/components/Button/style/buttonTertiaryNoPaddingStyle.d.ts +1 -1
  9. package/dist/components/Button/style/buttonTertiaryStyle.d.ts +1 -1
  10. package/dist/components/Filters/Filter.d.ts +20 -0
  11. package/dist/components/Filters/FilterPanel.d.ts +16 -0
  12. package/dist/components/Filters/Filters.context.d.ts +8 -0
  13. package/dist/components/Filters/Filters.d.ts +30 -0
  14. package/dist/components/Filters/Filters.stories.d.ts +17 -0
  15. package/dist/components/Filters/QuickFilter.d.ts +8 -0
  16. package/dist/components/Filters/__tests__/Filters.test.d.ts +1 -0
  17. package/dist/components/Filters/index.d.ts +6 -0
  18. package/dist/components/Overlay/Overlay.d.ts +1 -0
  19. package/dist/components/Overlay/Overlay.stories.d.ts +1 -0
  20. package/dist/components/index.d.ts +2 -0
  21. package/dist/index.js +8807 -8141
  22. package/lib/components/Button/Button.mdx +12 -0
  23. package/lib/components/Button/Button.stories.tsx +46 -0
  24. package/lib/components/Button/Button.tsx +48 -25
  25. package/lib/components/Button/__tests__/Button.test.tsx +120 -1
  26. package/lib/components/Button/__tests__/__snapshots__/Button.test.tsx.snap +11 -11
  27. package/lib/components/Button/style/buttonAccentStyle.ts +2 -0
  28. package/lib/components/Button/style/buttonPrimaryDestructiveStyle.ts +2 -0
  29. package/lib/components/Button/style/buttonPrimaryStyle.ts +2 -0
  30. package/lib/components/Button/style/buttonPrimarySubtleStyle.ts +10 -11
  31. package/lib/components/Button/style/buttonPrimaryWarningStyle.ts +2 -0
  32. package/lib/components/Button/style/buttonSecondaryDestructiveStyle.ts +13 -7
  33. package/lib/components/Button/style/buttonSecondaryStyle.ts +49 -16
  34. package/lib/components/Button/style/buttonSecondarySubtleStyle.ts +15 -13
  35. package/lib/components/Button/style/buttonTertiaryDestructiveNoPaddingStyle.ts +34 -0
  36. package/lib/components/Button/style/buttonTertiaryDestructiveStyle.ts +9 -8
  37. package/lib/components/Button/style/buttonTertiaryNoPaddingStyle.ts +13 -15
  38. package/lib/components/Button/style/buttonTertiaryStyle.ts +10 -9
  39. package/lib/components/Filters/Filter.tsx +327 -0
  40. package/lib/components/Filters/FilterPanel.tsx +152 -0
  41. package/lib/components/Filters/Filters.context.ts +12 -0
  42. package/lib/components/Filters/Filters.mdx +75 -0
  43. package/lib/components/Filters/Filters.stories.tsx +354 -0
  44. package/lib/components/Filters/Filters.tsx +316 -0
  45. package/lib/components/Filters/QuickFilter.tsx +89 -0
  46. package/lib/components/Filters/__tests__/Filters.test.tsx +230 -0
  47. package/lib/components/Filters/index.ts +6 -0
  48. package/lib/components/Overlay/Overlay.tsx +9 -4
  49. package/lib/components/Overlay/__tests__/Overlay.test.tsx +39 -0
  50. package/lib/components/Table/subcomponents/Cell/__tests__/__snapshots__/Cell.test.tsx.snap +1 -1
  51. package/lib/components/index.ts +8 -0
  52. package/package.json +1 -1
@@ -2,16 +2,20 @@ import { ReactElement, ElementType, ComponentPropsWithRef } from 'react';
2
2
  import { MarginProps } from '../common/marginsStyle';
3
3
  export declare const NAME = "ucl-uikit-button";
4
4
  type PolymorphicRef<C extends ElementType> = ComponentPropsWithRef<C>['ref'];
5
- export type ButtonVariant = 'accent' | 'primary' | 'secondary' | 'tertiary' | 'primary-subtle' | 'secondary-subtle' | 'tertiary-no-padding' | 'primary-destructive' | 'secondary-destructive' | 'tertiary-destructive' | 'primary-warning';
5
+ export type ButtonVariant = 'accent' | 'primary' | 'secondary' | 'tertiary' | 'primary-subtle' | 'secondary-subtle' | 'tertiary-no-padding' | 'primary-destructive' | 'secondary-destructive' | 'tertiary-destructive' | 'tertiary-destructive-no-padding' | 'primary-warning';
6
6
  type LegacySize = 'default';
7
7
  export interface ButtonBaseProps {
8
8
  variant?: ButtonVariant;
9
- /** @deprecated Use variant="primary-destructive" / "secondary-destructive" instead */
9
+ /** @deprecated Use a destructive variant directly */
10
10
  destructive?: boolean;
11
11
  size?: 'xsmall' | 'small' | 'medium' | 'large' | LegacySize;
12
+ /** Whether the button is rendered on a light background */
13
+ onLight?: boolean;
12
14
  selected?: boolean;
13
15
  disabled?: boolean;
14
- icon?: ReactElement;
16
+ icon?: ReactElement<{
17
+ className?: string;
18
+ }>;
15
19
  iconPosition?: 'left' | 'right';
16
20
  tooltip?: string;
17
21
  loading?: boolean;
@@ -23,6 +27,6 @@ export type ButtonProps<C extends ElementType = 'button'> = {
23
27
  ref?: PolymorphicRef<C>;
24
28
  className?: string;
25
29
  } & ButtonBaseProps & MarginProps & Omit<ComponentPropsWithRef<C>, keyof ButtonBaseProps | 'as'>;
26
- declare const Button: <C extends ElementType = "button">({ as, variant, destructive, size, selected, disabled, icon, iconPosition, tooltip, loading, fullWidth, testId, ref, children, className, ...props }: ButtonProps<C>) => import("react").JSX.Element;
30
+ declare const Button: <C extends ElementType = "button">({ as, variant, destructive, size, onLight, selected, disabled, icon, iconPosition, tooltip, loading, fullWidth, testId, ref, children, className, ...props }: ButtonProps<C>) => import("react").JSX.Element;
27
31
  declare const MemoizedButton: typeof Button;
28
32
  export default MemoizedButton;
@@ -1,13 +1,13 @@
1
1
  import { StoryObj } from '@storybook/react-vite';
2
2
  declare const meta: {
3
3
  title: string;
4
- component: <C extends import('react').ElementType = "button">({ as, variant, destructive, size, selected, disabled, icon, iconPosition, tooltip, loading, fullWidth, testId, ref, children, className, ...props }: import('./Button').ButtonProps<C>) => import("react").JSX.Element;
4
+ component: <C extends import('react').ElementType = "button">({ as, variant, destructive, size, onLight, selected, disabled, icon, iconPosition, tooltip, loading, fullWidth, testId, ref, children, className, ...props }: import('./Button').ButtonProps<C>) => import("react").JSX.Element;
5
5
  parameters: {
6
6
  layout: string;
7
7
  };
8
8
  argTypes: {
9
9
  variant: {
10
- options: readonly ["accent", "primary", "secondary", "tertiary", "primary-subtle", "secondary-subtle", "tertiary-no-padding", "primary-destructive", "secondary-destructive", "tertiary-destructive", "primary-warning"];
10
+ options: readonly ["accent", "primary", "secondary", "tertiary", "primary-subtle", "secondary-subtle", "tertiary-no-padding", "primary-destructive", "secondary-destructive", "tertiary-destructive", "tertiary-destructive-no-padding", "primary-warning"];
11
11
  control: {
12
12
  type: "select";
13
13
  };
@@ -52,6 +52,13 @@ declare const meta: {
52
52
  };
53
53
  type: "boolean";
54
54
  };
55
+ onLight: {
56
+ control: {
57
+ type: "boolean";
58
+ };
59
+ type: "boolean";
60
+ description: string;
61
+ };
55
62
  disabled: {
56
63
  control: {
57
64
  type: "boolean";
@@ -237,6 +244,8 @@ export declare const Secondary: Story;
237
244
  export declare const Tertiary: Story;
238
245
  export declare const Accent: Story;
239
246
  export declare const Destructive: Story;
247
+ export declare const DestructiveTertiaryNoPadding: Story;
248
+ export declare const OnDark: Story;
240
249
  export declare const PrimarySubtle: Story;
241
250
  export declare const Small: Story;
242
251
  export declare const Large: Story;
@@ -1,4 +1,4 @@
1
1
  import { ThemeType } from '../../../theme';
2
2
  import { ButtonBaseProps } from '../Button';
3
- declare const buttonPrimarySubtleStyle: (theme: ThemeType, selected: ButtonBaseProps["selected"], disabled: ButtonBaseProps["disabled"], loading: ButtonBaseProps["loading"], paddingPx: number) => string;
3
+ declare const buttonPrimarySubtleStyle: (theme: ThemeType, selected: ButtonBaseProps["selected"], disabled: ButtonBaseProps["disabled"], loading: ButtonBaseProps["loading"]) => string;
4
4
  export default buttonPrimarySubtleStyle;
@@ -1,4 +1,4 @@
1
1
  import { ThemeType } from '../../../theme';
2
2
  import { ButtonBaseProps } from '../Button';
3
- declare const buttonSecondaryStyle: (theme: ThemeType, selected: ButtonBaseProps["selected"], disabled: ButtonBaseProps["disabled"], loading: ButtonBaseProps["loading"]) => string;
3
+ declare const buttonSecondaryStyle: (theme: ThemeType, selected: ButtonBaseProps["selected"], disabled: ButtonBaseProps["disabled"], loading: ButtonBaseProps["loading"], onLight: ButtonBaseProps["onLight"]) => string;
4
4
  export default buttonSecondaryStyle;
@@ -1,4 +1,4 @@
1
1
  import { ThemeType } from '../../../theme';
2
2
  import { ButtonBaseProps } from '../Button';
3
- declare const buttonSecondarySubtleStyle: (theme: ThemeType, selected: ButtonBaseProps["selected"], disabled: ButtonBaseProps["disabled"], loading: ButtonBaseProps["loading"], paddingPx: number) => string;
3
+ declare const buttonSecondarySubtleStyle: (theme: ThemeType, selected: ButtonBaseProps["selected"], disabled: ButtonBaseProps["disabled"], loading: ButtonBaseProps["loading"]) => string;
4
4
  export default buttonSecondarySubtleStyle;
@@ -0,0 +1,4 @@
1
+ import { ThemeType } from '../../../theme';
2
+ import { ButtonBaseProps } from '../Button';
3
+ declare const buttonTertiaryDestructiveNoPaddingStyle: (theme: ThemeType, disabled: ButtonBaseProps["disabled"], loading: ButtonBaseProps["loading"]) => string;
4
+ export default buttonTertiaryDestructiveNoPaddingStyle;
@@ -1,4 +1,4 @@
1
1
  import { ThemeType } from '../../../theme';
2
2
  import { ButtonBaseProps } from '../Button';
3
- declare const buttonTertiaryDestructiveStyle: (theme: ThemeType, selected: ButtonBaseProps["selected"], disabled: ButtonBaseProps["disabled"], loading: ButtonBaseProps["loading"], paddingPx: number) => string;
3
+ declare const buttonTertiaryDestructiveStyle: (theme: ThemeType, selected: ButtonBaseProps["selected"], disabled: ButtonBaseProps["disabled"], loading: ButtonBaseProps["loading"]) => string;
4
4
  export default buttonTertiaryDestructiveStyle;
@@ -1,4 +1,4 @@
1
1
  import { ThemeType } from '../../../theme';
2
2
  import { ButtonBaseProps } from '../Button';
3
- declare const buttonTertiaryNoPaddingStyle: (theme: ThemeType, disabled: ButtonBaseProps["disabled"], loading: ButtonBaseProps["loading"], paddingPx: number) => string;
3
+ declare const buttonTertiaryNoPaddingStyle: (theme: ThemeType, disabled: ButtonBaseProps["disabled"], loading: ButtonBaseProps["loading"], onLight: ButtonBaseProps["onLight"]) => string;
4
4
  export default buttonTertiaryNoPaddingStyle;
@@ -1,4 +1,4 @@
1
1
  import { ThemeType } from '../../../theme';
2
2
  import { ButtonBaseProps } from '../Button';
3
- declare const buttonTertiaryStyle: (theme: ThemeType, selected: ButtonBaseProps["selected"], disabled: ButtonBaseProps["disabled"], loading: ButtonBaseProps["loading"], paddingPx: number) => string;
3
+ declare const buttonTertiaryStyle: (theme: ThemeType, selected: ButtonBaseProps["selected"], disabled: ButtonBaseProps["disabled"], loading: ButtonBaseProps["loading"]) => string;
4
4
  export default buttonTertiaryStyle;
@@ -0,0 +1,20 @@
1
+ import { HTMLAttributes, ReactNode } from 'react';
2
+ export declare const NAME = "ucl-uikit-filter";
3
+ export interface FilterProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
4
+ label: string;
5
+ appliedCount?: number;
6
+ disabled?: boolean;
7
+ open?: boolean;
8
+ defaultOpen?: boolean;
9
+ quickFilters?: ReactNode;
10
+ clearLabel?: string;
11
+ applyLabel?: string;
12
+ applyDisabled?: boolean;
13
+ onClear?: React.MouseEventHandler<HTMLButtonElement>;
14
+ onApply?: React.MouseEventHandler<HTMLButtonElement>;
15
+ panelClassName?: string;
16
+ onOpenChange?: (open: boolean) => void;
17
+ testId?: string;
18
+ }
19
+ declare const _default: import('react').MemoExoticComponent<({ label, appliedCount, disabled, open, defaultOpen, quickFilters, clearLabel, applyLabel, applyDisabled, onClear, onApply, panelClassName, onOpenChange, testId, className, children, ...props }: FilterProps) => import("react").JSX.Element>;
20
+ export default _default;
@@ -0,0 +1,16 @@
1
+ import { HTMLAttributes, ReactNode } from 'react';
2
+ export declare const NAME = "ucl-uikit-filter-panel";
3
+ interface FilterPanelProps extends HTMLAttributes<HTMLDivElement> {
4
+ label: string;
5
+ isDesktop: boolean;
6
+ closeFilter: () => void;
7
+ quickFilters?: ReactNode;
8
+ clearLabel?: string;
9
+ applyLabel?: string;
10
+ applyDisabled?: boolean;
11
+ onClear?: React.MouseEventHandler<HTMLButtonElement>;
12
+ onApply?: React.MouseEventHandler<HTMLButtonElement>;
13
+ testId?: string;
14
+ }
15
+ declare const _default: import('react').MemoExoticComponent<({ label, isDesktop, closeFilter, quickFilters, clearLabel, applyLabel, applyDisabled, onClear, onApply, testId, className, children, onClick, ...props }: FilterPanelProps) => import("react").JSX.Element>;
16
+ export default _default;
@@ -0,0 +1,8 @@
1
+ export interface FiltersContextValue {
2
+ isDesktop: boolean;
3
+ closeFilters: () => void;
4
+ activeFilterId: string | null;
5
+ setActiveFilterId: (id: string | null) => void;
6
+ }
7
+ export declare const FiltersContext: import('react').Context<FiltersContextValue | null>;
8
+ export declare const useFiltersContext: () => FiltersContextValue | null;
@@ -0,0 +1,30 @@
1
+ import { HTMLAttributes } from 'react';
2
+ import { default as Filter } from './Filter';
3
+ import { default as QuickFilter } from './QuickFilter';
4
+ export declare const NAME = "ucl-uikit-filters";
5
+ export interface FiltersProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange' | 'onReset'> {
6
+ label?: string;
7
+ /** Accessible label for the icon-only mobile and tablet trigger. */
8
+ triggerLabel?: string;
9
+ appliedCount?: number;
10
+ open?: boolean;
11
+ defaultOpen?: boolean;
12
+ applyDisabled?: boolean;
13
+ applyLabel?: string;
14
+ resetLabel?: string;
15
+ onOpenChange?: (open: boolean) => void;
16
+ onApply?: React.MouseEventHandler<HTMLButtonElement>;
17
+ onReset?: React.MouseEventHandler<HTMLButtonElement>;
18
+ testId?: string;
19
+ }
20
+ export interface FiltersSubComponents {
21
+ Filter: typeof Filter;
22
+ QuickFilter: typeof QuickFilter;
23
+ }
24
+ declare const FiltersWithSubComponents: import('react').NamedExoticComponent<FiltersProps> & {
25
+ readonly type: ({ label, triggerLabel, appliedCount, open, defaultOpen, applyDisabled, applyLabel, resetLabel, onOpenChange, onApply, onReset, testId, className, children, ...props }: FiltersProps) => import("react").JSX.Element;
26
+ } & {
27
+ Filter: import('react').MemoExoticComponent<({ label, appliedCount, disabled, open, defaultOpen, quickFilters, clearLabel, applyLabel, applyDisabled, onClear, onApply, panelClassName, onOpenChange, testId, className, children, ...props }: import('./Filter').FilterProps) => import("react").JSX.Element>;
28
+ QuickFilter: import('react').MemoExoticComponent<({ selected, disabled, testId, className, children, type, ...props }: import('./QuickFilter').QuickFilterProps) => import("react").JSX.Element>;
29
+ };
30
+ export default FiltersWithSubComponents;
@@ -0,0 +1,17 @@
1
+ import { StoryObj } from '@storybook/react-vite';
2
+ declare const meta: {
3
+ title: string;
4
+ component: import('react').NamedExoticComponent<import('./Filters').FiltersProps> & {
5
+ readonly type: ({ label, triggerLabel, appliedCount, open, defaultOpen, applyDisabled, applyLabel, resetLabel, onOpenChange, onApply, onReset, testId, className, children, ...props }: import('./Filters').FiltersProps) => import("react").JSX.Element;
6
+ } & {
7
+ Filter: import('react').MemoExoticComponent<({ label, appliedCount, disabled, open, defaultOpen, quickFilters, clearLabel, applyLabel, applyDisabled, onClear, onApply, panelClassName, onOpenChange, testId, className, children, ...props }: import('./Filter').FilterProps) => import("react").JSX.Element>;
8
+ QuickFilter: import('react').MemoExoticComponent<({ selected, disabled, testId, className, children, type, ...props }: import('./QuickFilter').QuickFilterProps) => import("react").JSX.Element>;
9
+ };
10
+ parameters: {
11
+ layout: string;
12
+ };
13
+ tags: string[];
14
+ };
15
+ export default meta;
16
+ type Story = StoryObj<typeof meta>;
17
+ export declare const Default: Story;
@@ -0,0 +1,8 @@
1
+ import { ButtonHTMLAttributes } from 'react';
2
+ export declare const NAME = "ucl-uikit-quick-filter";
3
+ export interface QuickFilterProps extends ButtonHTMLAttributes<HTMLButtonElement> {
4
+ selected?: boolean;
5
+ testId?: string;
6
+ }
7
+ declare const _default: import('react').MemoExoticComponent<({ selected, disabled, testId, className, children, type, ...props }: QuickFilterProps) => import("react").JSX.Element>;
8
+ export default _default;
@@ -0,0 +1,6 @@
1
+ export { default } from './Filters';
2
+ export { default as Filter } from './Filter';
3
+ export { default as QuickFilter } from './QuickFilter';
4
+ export type { FiltersProps, FiltersSubComponents } from './Filters';
5
+ export type { FilterProps } from './Filter';
6
+ export type { QuickFilterProps } from './QuickFilter';
@@ -12,6 +12,7 @@ export type OverlaySize = {
12
12
  };
13
13
  export interface OverlayProps extends HTMLAttributes<HTMLDivElement> {
14
14
  reference: RefObject<HTMLElement | null>;
15
+ positioning?: 'reference' | 'viewport';
15
16
  placement?: Placement;
16
17
  strategy?: Strategy;
17
18
  blanket?: boolean;
@@ -41,6 +41,7 @@ declare const meta: {
41
41
  };
42
42
  decorators: ((Story: import('storybook/internal/csf').PartialStoryFn<import('@storybook/react').ReactRenderer, {
43
43
  reference: import('react').RefObject<HTMLElement | null>;
44
+ positioning?: "reference" | "viewport" | undefined;
44
45
  placement?: import('@floating-ui/utils').Placement | undefined;
45
46
  strategy?: import('@floating-ui/utils').Strategy | undefined;
46
47
  blanket?: boolean | undefined;
@@ -24,6 +24,8 @@ export { default as Blanket } from './Blanket';
24
24
  export type { BlanketProps } from './Blanket';
25
25
  export { default as Overlay } from './Overlay';
26
26
  export type { OverlayProps } from './Overlay';
27
+ export { default as Filters, Filter, QuickFilter } from './Filters';
28
+ export type { FiltersProps, FiltersSubComponents, FilterProps, QuickFilterProps, } from './Filters';
27
29
  export { default as Snackbar } from './Snackbar';
28
30
  export { Snackbars } from './Snackbar';
29
31
  export type { SnackbarProps, SnackbarsItem, SnackbarsPlacement, SnackbarsProps, } from './Snackbar';