@economic/taco 8.1.2-hanger-base-ui.2 → 8.1.2
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/charts/components/useChartData.cjs +2 -2
- package/dist/charts/components/useChartData.cjs.map +1 -1
- package/dist/charts/components/useChartData.js +2 -2
- package/dist/charts/components/useChartData.js.map +1 -1
- package/dist/components/Backdrop/Backdrop.cjs +1 -1
- package/dist/components/Backdrop/Backdrop.cjs.map +1 -1
- package/dist/components/Backdrop/Backdrop.js +1 -1
- package/dist/components/Backdrop/Backdrop.js.map +1 -1
- package/dist/components/Button/util.cjs +3 -3
- package/dist/components/Button/util.cjs.map +1 -1
- package/dist/components/Button/util.js +3 -3
- package/dist/components/Button/util.js.map +1 -1
- package/dist/components/Card/Card.cjs +1 -1
- package/dist/components/Card/Card.cjs.map +1 -1
- package/dist/components/Card/Card.js +1 -1
- package/dist/components/Card/Card.js.map +1 -1
- package/dist/components/Checkbox/Checkbox.cjs +2 -2
- package/dist/components/Checkbox/Checkbox.cjs.map +1 -1
- package/dist/components/Checkbox/Checkbox.js +2 -2
- package/dist/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/Datepicker/Datepicker.cjs +2 -2
- package/dist/components/Datepicker/Datepicker.cjs.map +1 -1
- package/dist/components/Datepicker/Datepicker.js +2 -2
- package/dist/components/Datepicker/Datepicker.js.map +1 -1
- package/dist/components/Drawer/components/Content.cjs +3 -3
- package/dist/components/Drawer/components/Content.cjs.map +1 -1
- package/dist/components/Drawer/components/Content.js +3 -3
- package/dist/components/Drawer/components/Content.js.map +1 -1
- package/dist/components/Drawer/util.cjs +1 -1
- package/dist/components/Drawer/util.cjs.map +1 -1
- package/dist/components/Drawer/util.js +1 -1
- package/dist/components/Drawer/util.js.map +1 -1
- package/dist/components/Field/Field.cjs +1 -1
- package/dist/components/Field/Field.cjs.map +1 -1
- package/dist/components/Field/Field.js +1 -1
- package/dist/components/Field/Field.js.map +1 -1
- package/dist/components/Hanger/Arrow.cjs +4 -3
- package/dist/components/Hanger/Arrow.cjs.map +1 -1
- package/dist/components/Hanger/Arrow.js +3 -3
- package/dist/components/Hanger/Arrow.js.map +1 -1
- package/dist/components/Hanger/Hanger.cjs +36 -33
- package/dist/components/Hanger/Hanger.cjs.map +1 -1
- package/dist/components/Hanger/Hanger.d.ts +1 -1
- package/dist/components/Hanger/Hanger.js +35 -33
- package/dist/components/Hanger/Hanger.js.map +1 -1
- package/dist/components/Header/Header.cjs +1 -1
- package/dist/components/Header/Header.cjs.map +1 -1
- package/dist/components/Header/Header.js +1 -1
- package/dist/components/Header/Header.js.map +1 -1
- package/dist/components/Header/components/AgreementSelector.cjs +5 -5
- package/dist/components/Header/components/AgreementSelector.cjs.map +1 -1
- package/dist/components/Header/components/AgreementSelector.js +5 -5
- package/dist/components/Header/components/AgreementSelector.js.map +1 -1
- package/dist/components/Header/components/Button.cjs +1 -1
- package/dist/components/Header/components/Button.cjs.map +1 -1
- package/dist/components/Header/components/Button.js +1 -1
- package/dist/components/Header/components/Button.js.map +1 -1
- package/dist/components/Header/components/Link.cjs +1 -1
- package/dist/components/Header/components/Link.cjs.map +1 -1
- package/dist/components/Header/components/Link.js +1 -1
- package/dist/components/Header/components/Link.js.map +1 -1
- package/dist/components/Header/components/Logo.cjs +1 -1
- package/dist/components/Header/components/Logo.cjs.map +1 -1
- package/dist/components/Header/components/Logo.js +1 -1
- package/dist/components/Header/components/Logo.js.map +1 -1
- package/dist/components/Header/components/MenuButton.cjs +1 -1
- package/dist/components/Header/components/MenuButton.cjs.map +1 -1
- package/dist/components/Header/components/MenuButton.js +1 -1
- package/dist/components/Header/components/MenuButton.js.map +1 -1
- package/dist/components/Header/components/PrimaryNavigation.cjs +1 -1
- package/dist/components/Header/components/PrimaryNavigation.cjs.map +1 -1
- package/dist/components/Header/components/PrimaryNavigation.js +1 -1
- package/dist/components/Header/components/PrimaryNavigation.js.map +1 -1
- package/dist/components/HoverCard/HoverCard.cjs +2 -2
- package/dist/components/HoverCard/HoverCard.cjs.map +1 -1
- package/dist/components/HoverCard/HoverCard.js +2 -2
- package/dist/components/HoverCard/HoverCard.js.map +1 -1
- package/dist/components/Input/util.cjs +7 -7
- package/dist/components/Input/util.cjs.map +1 -1
- package/dist/components/Input/util.js +7 -7
- package/dist/components/Input/util.js.map +1 -1
- package/dist/components/Layout/components/Sidebar.cjs +2 -2
- package/dist/components/Layout/components/Sidebar.cjs.map +1 -1
- package/dist/components/Layout/components/Sidebar.js +2 -2
- package/dist/components/Layout/components/Sidebar.js.map +1 -1
- package/dist/components/Menu/components/Item.cjs +1 -1
- package/dist/components/Menu/components/Item.cjs.map +1 -1
- package/dist/components/Menu/components/Item.js +1 -1
- package/dist/components/Menu/components/Item.js.map +1 -1
- package/dist/components/Navigation2/Navigation2.cjs +1 -1
- package/dist/components/Navigation2/Navigation2.cjs.map +1 -1
- package/dist/components/Navigation2/Navigation2.js +1 -1
- package/dist/components/Navigation2/Navigation2.js.map +1 -1
- package/dist/components/Navigation2/components/Content.cjs +1 -1
- package/dist/components/Navigation2/components/Content.cjs.map +1 -1
- package/dist/components/Navigation2/components/Content.js +1 -1
- package/dist/components/Navigation2/components/Content.js.map +1 -1
- package/dist/components/Navigation2/components/Group.cjs +1 -1
- package/dist/components/Navigation2/components/Group.cjs.map +1 -1
- package/dist/components/Navigation2/components/Group.js +1 -1
- package/dist/components/Navigation2/components/Group.js.map +1 -1
- package/dist/components/Navigation2/components/Link.cjs +1 -1
- package/dist/components/Navigation2/components/Link.cjs.map +1 -1
- package/dist/components/Navigation2/components/Link.js +1 -1
- package/dist/components/Navigation2/components/Link.js.map +1 -1
- package/dist/components/Navigation2/components/Section.cjs +1 -1
- package/dist/components/Navigation2/components/Section.cjs.map +1 -1
- package/dist/components/Navigation2/components/Section.js +1 -1
- package/dist/components/Navigation2/components/Section.js.map +1 -1
- package/dist/components/SearchInput2/SearchInput2.cjs +4 -4
- package/dist/components/SearchInput2/SearchInput2.cjs.map +1 -1
- package/dist/components/SearchInput2/SearchInput2.js +4 -4
- package/dist/components/SearchInput2/SearchInput2.js.map +1 -1
- package/dist/components/Select/useSelect.cjs.map +1 -1
- package/dist/components/Select/useSelect.d.ts +2 -2
- package/dist/components/Select/useSelect.js.map +1 -1
- package/dist/components/Select2/Select2.cjs +1 -1
- package/dist/components/Select2/Select2.cjs.map +1 -1
- package/dist/components/Select2/Select2.js +1 -1
- package/dist/components/Select2/Select2.js.map +1 -1
- package/dist/components/Select2/components/Option.cjs +1 -1
- package/dist/components/Select2/components/Option.cjs.map +1 -1
- package/dist/components/Select2/components/Option.js +1 -1
- package/dist/components/Select2/components/Option.js.map +1 -1
- package/dist/components/Select2/utilities.cjs +2 -2
- package/dist/components/Select2/utilities.cjs.map +1 -1
- package/dist/components/Select2/utilities.js +2 -2
- package/dist/components/Select2/utilities.js.map +1 -1
- package/dist/components/Shortcut/Shortcut.cjs +1 -1
- package/dist/components/Shortcut/Shortcut.cjs.map +1 -1
- package/dist/components/Shortcut/Shortcut.js +1 -1
- package/dist/components/Shortcut/Shortcut.js.map +1 -1
- package/dist/components/Switch/Switch.cjs +2 -2
- package/dist/components/Switch/Switch.cjs.map +1 -1
- package/dist/components/Switch/Switch.js +2 -2
- package/dist/components/Switch/Switch.js.map +1 -1
- package/dist/components/Table/components/BaseTable.cjs +1 -1
- package/dist/components/Table/components/BaseTable.cjs.map +1 -1
- package/dist/components/Table/components/BaseTable.js +1 -1
- package/dist/components/Table/components/BaseTable.js.map +1 -1
- package/dist/components/Table/util/renderRow.cjs +2 -2
- package/dist/components/Table/util/renderRow.cjs.map +1 -1
- package/dist/components/Table/util/renderRow.js +2 -2
- package/dist/components/Table/util/renderRow.js.map +1 -1
- package/dist/components/Table3/components/Row/Editing/CreateNewRow.cjs +1 -1
- package/dist/components/Table3/components/Row/Editing/CreateNewRow.cjs.map +1 -1
- package/dist/components/Table3/components/Row/Editing/CreateNewRow.js +1 -1
- package/dist/components/Table3/components/Row/Editing/CreateNewRow.js.map +1 -1
- package/dist/components/Table3/components/Row/Editing/TemporaryRow.cjs +1 -1
- package/dist/components/Table3/components/Row/Editing/TemporaryRow.cjs.map +1 -1
- package/dist/components/Table3/components/Row/Editing/TemporaryRow.js +1 -1
- package/dist/components/Table3/components/Row/Editing/TemporaryRow.js.map +1 -1
- package/dist/components/Table3/components/Toolbar/Editing/Editing.cjs +1 -1
- package/dist/components/Table3/components/Toolbar/Editing/Editing.cjs.map +1 -1
- package/dist/components/Table3/components/Toolbar/Editing/Editing.js +1 -1
- package/dist/components/Table3/components/Toolbar/Editing/Editing.js.map +1 -1
- package/dist/components/Tabs/components/TabList.cjs +1 -1
- package/dist/components/Tabs/components/TabList.cjs.map +1 -1
- package/dist/components/Tabs/components/TabList.js +1 -1
- package/dist/components/Tabs/components/TabList.js.map +1 -1
- package/dist/components/Tabs/components/Trigger.cjs +1 -1
- package/dist/components/Tabs/components/Trigger.cjs.map +1 -1
- package/dist/components/Tabs/components/Trigger.js +1 -1
- package/dist/components/Tabs/components/Trigger.js.map +1 -1
- package/dist/components/Tag/Tag.cjs +1 -1
- package/dist/components/Tag/Tag.cjs.map +1 -1
- package/dist/components/Tag/Tag.js +1 -1
- package/dist/components/Tag/Tag.js.map +1 -1
- package/dist/components/Toast/Toast.cjs +4 -4
- package/dist/components/Toast/Toast.cjs.map +1 -1
- package/dist/components/Toast/Toast.js +4 -4
- package/dist/components/Toast/Toast.js.map +1 -1
- package/dist/components/Tooltip/Tooltip.cjs +4 -4
- package/dist/components/Tooltip/Tooltip.cjs.map +1 -1
- package/dist/components/Tooltip/Tooltip.js +4 -4
- package/dist/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/taco.css +63 -79
- package/dist/tailwind.colors.cjs +156 -95
- package/dist/tailwind.colors.cjs.map +1 -1
- package/dist/tailwind.colors.js +156 -95
- package/dist/tailwind.colors.js.map +1 -1
- package/dist/utils/tailwind.cjs +26 -26
- package/dist/utils/tailwind.cjs.map +1 -1
- package/dist/utils/tailwind.js +26 -26
- package/dist/utils/tailwind.js.map +1 -1
- package/package.json +6 -5
- package/tailwind.colors.js +206 -95
- package/tailwind.config.js +10 -45
|
@@ -1,77 +1,79 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import cn from "clsx";
|
|
3
|
-
import
|
|
3
|
+
import * as PopoverPrimitive from "@radix-ui/react-popover";
|
|
4
4
|
import { IconButton } from "../IconButton/IconButton.js";
|
|
5
5
|
import { UnstyledArrow } from "./Arrow.js";
|
|
6
6
|
import { useLocalization } from "../Provider/Localization.js";
|
|
7
7
|
import { mergeRefs } from "../../utils/mergeRefs.js";
|
|
8
8
|
/* empty css */
|
|
9
9
|
const HangerContext = React.createContext({
|
|
10
|
-
anchorRef: { current: null },
|
|
11
10
|
onClose: void 0,
|
|
12
11
|
props: {},
|
|
13
12
|
ref: null
|
|
14
13
|
});
|
|
15
14
|
const Anchor = React.forwardRef(function HangerAnchor(props, externalRef) {
|
|
16
|
-
|
|
17
|
-
const
|
|
18
|
-
|
|
15
|
+
var _a;
|
|
16
|
+
const { ref: parentRef, props: parentProps } = React.useContext(HangerContext);
|
|
17
|
+
const refCallback = mergeRefs([parentRef, externalRef]);
|
|
18
|
+
let children = props.children;
|
|
19
|
+
if (React.isValidElement(props.children) && typeof ((_a = props.children) == null ? void 0 : _a.type) === "function") {
|
|
20
|
+
console.warn(
|
|
21
|
+
`Hanger.Anchor requires its child to forwardRef so that it can attach to the dom element. Did you mean to wrap '${props.children.type.name}' in React.forwardRef()? Taco has wrapped '${props.children.type.name}' in a 'span' to maintain functionality, but this may cause unintended behaviour`
|
|
22
|
+
);
|
|
23
|
+
children = /* @__PURE__ */ React.createElement("span", null, props.children);
|
|
24
|
+
}
|
|
25
|
+
return /* @__PURE__ */ React.createElement(PopoverPrimitive.Anchor, { ...parentProps, ...props, ref: refCallback, asChild: true }, children);
|
|
19
26
|
});
|
|
20
27
|
const Title = React.forwardRef(function DialogTitle(props, ref) {
|
|
21
28
|
const className = cn("mb-1 text-base font-bold flex w-full", props.className);
|
|
22
29
|
return /* @__PURE__ */ React.createElement("span", { ...props, className, ref });
|
|
23
30
|
});
|
|
24
31
|
const Content = React.forwardRef(function HangerContent(props, ref) {
|
|
25
|
-
const { placement: side, hideWhenDetached = false, container
|
|
32
|
+
const { placement: side, hideWhenDetached = false, container } = props;
|
|
26
33
|
const context = React.useContext(HangerContext);
|
|
27
34
|
const { texts } = useLocalization();
|
|
28
35
|
const className = cn(
|
|
29
36
|
"wcag-blue-500 border border-transparent rounded p-3 pr-12 yt-shadow focus:border-transparent max-w-sm print:hidden",
|
|
30
37
|
props.className
|
|
31
38
|
);
|
|
32
|
-
|
|
33
|
-
|
|
39
|
+
const handleInteractOutside = (event) => {
|
|
40
|
+
event.preventDefault();
|
|
41
|
+
};
|
|
42
|
+
return /* @__PURE__ */ React.createElement(PopoverPrimitive.Portal, { container }, /* @__PURE__ */ React.createElement(
|
|
43
|
+
PopoverPrimitive.Content,
|
|
34
44
|
{
|
|
35
|
-
|
|
36
|
-
|
|
45
|
+
className,
|
|
46
|
+
"data-taco": "hanger",
|
|
47
|
+
onInteractOutside: handleInteractOutside,
|
|
37
48
|
side,
|
|
38
|
-
sideOffset:
|
|
49
|
+
sideOffset: 1,
|
|
50
|
+
ref,
|
|
51
|
+
hideWhenDetached
|
|
39
52
|
},
|
|
40
|
-
|
|
41
|
-
|
|
53
|
+
props.children,
|
|
54
|
+
/* @__PURE__ */ React.createElement(UnstyledArrow, { className: "text-blue-500" }),
|
|
55
|
+
/* @__PURE__ */ React.createElement(PopoverPrimitive.Close, { asChild: true }, /* @__PURE__ */ React.createElement(
|
|
56
|
+
IconButton,
|
|
42
57
|
{
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
className: "absolute right-0 top-0 ml-2 mr-2 mt-2 text-white",
|
|
49
|
-
icon: "close",
|
|
50
|
-
onClick: context.onClose
|
|
51
|
-
}
|
|
52
|
-
)
|
|
58
|
+
appearance: "primary",
|
|
59
|
+
"aria-label": texts.hanger.close,
|
|
60
|
+
className: "absolute right-0 top-0 ml-2 mr-2 mt-2 text-white",
|
|
61
|
+
icon: "close",
|
|
62
|
+
onClick: context.onClose
|
|
53
63
|
}
|
|
54
64
|
))
|
|
55
65
|
));
|
|
56
66
|
});
|
|
57
67
|
const Hanger = React.forwardRef(function Hanger2(props, ref) {
|
|
58
68
|
const { anchor, children, defaultOpen = true, onClose, ...otherProps } = props;
|
|
59
|
-
const
|
|
60
|
-
const context = React.useMemo(() => ({ anchorRef, onClose, props: otherProps, ref }), [onClose, otherProps, ref]);
|
|
69
|
+
const context = React.useMemo(() => ({ onClose, props: otherProps, ref }), [onClose, otherProps]);
|
|
61
70
|
const [open, setOpen] = React.useState(false);
|
|
62
71
|
React.useEffect(() => {
|
|
63
72
|
if (defaultOpen) {
|
|
64
73
|
setOpen(defaultOpen);
|
|
65
74
|
}
|
|
66
75
|
}, []);
|
|
67
|
-
|
|
68
|
-
if (!nextOpen && (eventDetails.reason === "outside-press" || eventDetails.reason === "focus-out")) {
|
|
69
|
-
eventDetails.cancel();
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
setOpen(nextOpen);
|
|
73
|
-
};
|
|
74
|
-
return /* @__PURE__ */ React.createElement(HangerContext.Provider, { value: context }, /* @__PURE__ */ React.createElement(Popover.Root, { open, onOpenChange: handleOpenChange }, anchor && /* @__PURE__ */ React.createElement(Anchor, null, anchor), children));
|
|
76
|
+
return /* @__PURE__ */ React.createElement(HangerContext.Provider, { value: context }, /* @__PURE__ */ React.createElement(PopoverPrimitive.Root, { key: String(open), defaultOpen: open }, anchor && /* @__PURE__ */ React.createElement(Anchor, null, anchor), children));
|
|
75
77
|
});
|
|
76
78
|
Hanger.Anchor = Anchor;
|
|
77
79
|
Hanger.Content = Content;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Hanger.js","sources":["../../../src/components/Hanger/Hanger.tsx"],"sourcesContent":["import * as React from 'react';\nimport cn from 'clsx';\nimport
|
|
1
|
+
{"version":3,"file":"Hanger.js","sources":["../../../src/components/Hanger/Hanger.tsx"],"sourcesContent":["import * as React from 'react';\nimport cn from 'clsx';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\n\nimport { IconButton } from '../IconButton/IconButton';\nimport { Placement } from '../..';\nimport { UnstyledArrow } from './Arrow';\nimport { useLocalization } from '../Provider/Localization';\nimport { mergeRefs } from '../../utils/mergeRefs';\nimport './Hanger.css';\n\ntype HangerContextValue = {\n /** Handler called when hanger closes by user interaction */\n onClose?: () => void;\n props: Record<string, any>;\n ref: React.Ref<HTMLElement>;\n};\nconst HangerContext = React.createContext<HangerContextValue>({\n onClose: undefined,\n props: {},\n ref: null,\n});\n\nexport type HangerTexts = {\n /** Aria-label for the close icon button of hanger */\n close: string;\n};\n\nexport type HangerAnchorProps = React.HTMLAttributes<HTMLDivElement>;\nconst Anchor = React.forwardRef(function HangerAnchor(props: HangerAnchorProps, externalRef: React.Ref<HTMLDivElement>) {\n const { ref: parentRef, props: parentProps } = React.useContext(HangerContext);\n const refCallback = mergeRefs([parentRef, externalRef]);\n\n let children = props.children;\n\n if (React.isValidElement(props.children) && typeof props.children?.type === 'function') {\n // oxlint-disable-next-line no-console\n console.warn(\n `Hanger.Anchor requires its child to forwardRef so that it can attach to the dom element. Did you mean to wrap '${props.children.type.name}' in React.forwardRef()? Taco has wrapped '${props.children.type.name}' in a 'span' to maintain functionality, but this may cause unintended behaviour`\n );\n children = <span>{props.children}</span>;\n }\n\n return (\n <PopoverPrimitive.Anchor {...parentProps} {...props} ref={refCallback} asChild>\n {children}\n </PopoverPrimitive.Anchor>\n );\n});\n\nexport type HangerTitleProps = React.HTMLAttributes<HTMLHeadingElement>;\nexport const Title = React.forwardRef(function DialogTitle(props: HangerTitleProps, ref: React.Ref<HTMLHeadingElement>) {\n const className = cn('mb-1 text-base font-bold flex w-full', props.className);\n return <span {...props} className={className} ref={ref} />;\n});\n\nexport type HangerContentProps = React.HTMLAttributes<HTMLDivElement> & {\n /** Set the position of the Hanger relative to its achor. Default value is `bottom` */\n placement?: Placement;\n hideWhenDetached?: boolean;\n container?: HTMLElement | null;\n};\n\nconst Content = React.forwardRef(function HangerContent(props: HangerContentProps, ref: React.Ref<HTMLDivElement>) {\n const { placement: side, hideWhenDetached = false, container } = props;\n const context = React.useContext(HangerContext);\n const { texts } = useLocalization();\n const className = cn(\n 'wcag-blue-500 border border-transparent rounded p-3 pr-12 yt-shadow focus:border-transparent max-w-sm print:hidden',\n props.className\n );\n const handleInteractOutside = (event: CustomEvent): void => {\n event.preventDefault();\n };\n\n return (\n <PopoverPrimitive.Portal container={container}>\n <PopoverPrimitive.Content\n className={className}\n data-taco=\"hanger\"\n onInteractOutside={handleInteractOutside}\n side={side}\n sideOffset={1}\n ref={ref}\n hideWhenDetached={hideWhenDetached}>\n {props.children}\n <UnstyledArrow className=\"text-blue-500\" />\n <PopoverPrimitive.Close asChild>\n <IconButton\n appearance=\"primary\"\n aria-label={texts.hanger.close}\n className=\"absolute right-0 top-0 ml-2 mr-2 mt-2 text-white\"\n icon=\"close\"\n onClick={context.onClose}\n />\n </PopoverPrimitive.Close>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n );\n});\n\nexport type HangerProps = React.PropsWithChildren<{\n /** An anchor to be used for the hanger, should not be set if `children` already contains an anchor */\n anchor?: JSX.Element;\n /**\n * Shows or hides hanger depending on the value\n * @defaultValue true\n */\n defaultOpen?: boolean;\n /** Handler called when user closes the hanger */\n onClose?: () => void;\n}>;\n\nexport type ForwardedHangerWithStatics = React.ForwardRefExoticComponent<HangerProps & React.RefAttributes<HTMLElement>> & {\n Anchor: React.ForwardRefExoticComponent<HangerAnchorProps>;\n Content: React.ForwardRefExoticComponent<HangerContentProps>;\n Title: React.ForwardRefExoticComponent<HangerTitleProps>;\n};\n\nexport const Hanger = React.forwardRef<HTMLElement, HangerProps>(function Hanger(props, ref) {\n const { anchor, children, defaultOpen = true, onClose, ...otherProps } = props;\n const context = React.useMemo(() => ({ onClose, props: otherProps, ref }), [onClose, otherProps]);\n\n // we do this to ensure hangers are mounted after their containers, e.g. if the container is another portal\n const [open, setOpen] = React.useState(false);\n React.useEffect(() => {\n if (defaultOpen) {\n setOpen(defaultOpen);\n }\n }, []);\n\n return (\n <HangerContext.Provider value={context}>\n <PopoverPrimitive.Root key={String(open)} defaultOpen={open}>\n {anchor && <Anchor>{anchor}</Anchor>}\n {children}\n </PopoverPrimitive.Root>\n </HangerContext.Provider>\n );\n}) as ForwardedHangerWithStatics;\nHanger.Anchor = Anchor;\nHanger.Content = Content;\nHanger.Title = Title;\n"],"names":["Hanger"],"mappings":";;;;;;;;AAiBA,MAAM,gBAAgB,MAAM,cAAkC;AAAA,EAC1D,SAAS;AAAA,EACT,OAAO,CAAC;AAAA,EACR,KAAK;AACT,CAAC;AAQD,MAAM,SAAS,MAAM,WAAW,SAAS,aAAa,OAA0B,aAAwC;;AAC9G,QAAA,EAAE,KAAK,WAAW,OAAO,gBAAgB,MAAM,WAAW,aAAa;AAC7E,QAAM,cAAc,UAAU,CAAC,WAAW,WAAW,CAAC;AAEtD,MAAI,WAAW,MAAM;AAEjB,MAAA,MAAM,eAAe,MAAM,QAAQ,KAAK,SAAO,WAAM,aAAN,mBAAgB,UAAS,YAAY;AAE5E,YAAA;AAAA,MACJ,kHAAkH,MAAM,SAAS,KAAK,IAAI,8CAA8C,MAAM,SAAS,KAAK,IAAI;AAAA,IACpN;AACW,eAAA,sBAAA,cAAC,QAAM,MAAA,MAAM,QAAS;AAAA,EAAA;AAGrC,SACK,sBAAA,cAAA,iBAAiB,QAAjB,EAAyB,GAAG,aAAc,GAAG,OAAO,KAAK,aAAa,SAAO,KAAA,GACzE,QACL;AAER,CAAC;AAGM,MAAM,QAAQ,MAAM,WAAW,SAAS,YAAY,OAAyB,KAAoC;AACpH,QAAM,YAAY,GAAG,wCAAwC,MAAM,SAAS;AAC5E,SAAQ,sBAAA,cAAA,QAAA,EAAM,GAAG,OAAO,WAAsB,KAAU;AAC5D,CAAC;AASD,MAAM,UAAU,MAAM,WAAW,SAAS,cAAc,OAA2B,KAAgC;AAC/G,QAAM,EAAE,WAAW,MAAM,mBAAmB,OAAO,cAAc;AAC3D,QAAA,UAAU,MAAM,WAAW,aAAa;AACxC,QAAA,EAAE,MAAM,IAAI,gBAAgB;AAClC,QAAM,YAAY;AAAA,IACd;AAAA,IACA,MAAM;AAAA,EACV;AACM,QAAA,wBAAwB,CAAC,UAA6B;AACxD,UAAM,eAAe;AAAA,EACzB;AAEA,SACK,sBAAA,cAAA,iBAAiB,QAAjB,EAAwB,UACrB,GAAA,sBAAA;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACG;AAAA,MACA,aAAU;AAAA,MACV,mBAAmB;AAAA,MACnB;AAAA,MACA,YAAY;AAAA,MACZ;AAAA,MACA;AAAA,IAAA;AAAA,IACC,MAAM;AAAA,IACP,sBAAA,cAAC,eAAc,EAAA,WAAU,gBAAgB,CAAA;AAAA,IACxC,sBAAA,cAAA,iBAAiB,OAAjB,EAAuB,SAAO,KAC3B,GAAA,sBAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACG,YAAW;AAAA,QACX,cAAY,MAAM,OAAO;AAAA,QACzB,WAAU;AAAA,QACV,MAAK;AAAA,QACL,SAAS,QAAQ;AAAA,MAAA;AAAA,IAEzB,CAAA;AAAA,EAAA,CAER;AAER,CAAC;AAoBM,MAAM,SAAS,MAAM,WAAqC,SAASA,QAAO,OAAO,KAAK;AACnF,QAAA,EAAE,QAAQ,UAAU,cAAc,MAAM,SAAS,GAAG,eAAe;AACzE,QAAM,UAAU,MAAM,QAAQ,OAAO,EAAE,SAAS,OAAO,YAAY,IAAI,IAAI,CAAC,SAAS,UAAU,CAAC;AAGhG,QAAM,CAAC,MAAM,OAAO,IAAI,MAAM,SAAS,KAAK;AAC5C,QAAM,UAAU,MAAM;AAClB,QAAI,aAAa;AACb,cAAQ,WAAW;AAAA,IAAA;AAAA,EAE3B,GAAG,EAAE;AAGD,SAAA,sBAAA,cAAC,cAAc,UAAd,EAAuB,OAAO,QAC3B,GAAA,sBAAA,cAAC,iBAAiB,MAAjB,EAAsB,KAAK,OAAO,IAAI,GAAG,aAAa,KAClD,GAAA,8CAAW,QAAQ,MAAA,MAAO,GAC1B,QACL,CACJ;AAER,CAAC;AACD,OAAO,SAAS;AAChB,OAAO,UAAU;AACjB,OAAO,QAAQ;"}
|
|
@@ -11,7 +11,7 @@ const MenuButton = require("./components/MenuButton.cjs");
|
|
|
11
11
|
const AgreementSelector = require("./components/AgreementSelector.cjs");
|
|
12
12
|
const Header = React.forwardRef(function Header2(props, ref) {
|
|
13
13
|
const className = cn(
|
|
14
|
-
"bg-
|
|
14
|
+
"bg-brand-midnight flex h-16 w-full shrink-0 items-center gap-2 pl-4",
|
|
15
15
|
"[&>*:focus-visible]:yt-focus-dark [&>*]:rounded",
|
|
16
16
|
// styles for logo wrapped inside an anchor
|
|
17
17
|
props.className
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.cjs","sources":["../../../src/components/Header/Header.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'clsx';\nimport { Button } from './components/Button';\nimport { Link } from './components/Link';\nimport { Logo, LogoLegacy } from './components/Logo';\nimport { PrimaryNavigation } from './components/PrimaryNavigation';\nimport { SecondaryNavigation } from './components/SecondaryNavigation';\nimport { MenuButton } from './components/MenuButton';\nimport { AgreementSelector, AgreementDisplay } from './components/AgreementSelector';\n\nexport * from './components/Agreement/types';\n\nexport type HeaderTexts = {\n addAgreement: string;\n logout: string;\n more: string;\n new: string;\n search: string;\n};\n\ntype HeaderProps = React.HTMLAttributes<HTMLElement>;\n\nexport type ForwardedHeaderWithStatics = React.ForwardRefExoticComponent<HeaderProps & React.RefAttributes<HTMLDivElement>> & {\n AgreementDisplay: typeof AgreementDisplay;\n AgreementSelector: typeof AgreementSelector;\n Button: typeof Button;\n Link: typeof Link;\n Logo: typeof Logo;\n LogoLegacy: typeof LogoLegacy;\n PrimaryNavigation: typeof PrimaryNavigation;\n SecondaryNavigation: typeof SecondaryNavigation;\n MenuButton: typeof MenuButton;\n};\n\nexport const Header = React.forwardRef<HTMLDivElement, HeaderProps>(function Header(props, ref) {\n const className = cn(\n 'bg-
|
|
1
|
+
{"version":3,"file":"Header.cjs","sources":["../../../src/components/Header/Header.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'clsx';\nimport { Button } from './components/Button';\nimport { Link } from './components/Link';\nimport { Logo, LogoLegacy } from './components/Logo';\nimport { PrimaryNavigation } from './components/PrimaryNavigation';\nimport { SecondaryNavigation } from './components/SecondaryNavigation';\nimport { MenuButton } from './components/MenuButton';\nimport { AgreementSelector, AgreementDisplay } from './components/AgreementSelector';\n\nexport * from './components/Agreement/types';\n\nexport type HeaderTexts = {\n addAgreement: string;\n logout: string;\n more: string;\n new: string;\n search: string;\n};\n\ntype HeaderProps = React.HTMLAttributes<HTMLElement>;\n\nexport type ForwardedHeaderWithStatics = React.ForwardRefExoticComponent<HeaderProps & React.RefAttributes<HTMLDivElement>> & {\n AgreementDisplay: typeof AgreementDisplay;\n AgreementSelector: typeof AgreementSelector;\n Button: typeof Button;\n Link: typeof Link;\n Logo: typeof Logo;\n LogoLegacy: typeof LogoLegacy;\n PrimaryNavigation: typeof PrimaryNavigation;\n SecondaryNavigation: typeof SecondaryNavigation;\n MenuButton: typeof MenuButton;\n};\n\nexport const Header = React.forwardRef<HTMLDivElement, HeaderProps>(function Header(props, ref) {\n const className = cn(\n 'bg-brand-midnight flex h-16 w-full shrink-0 items-center gap-2 pl-4',\n '[&>*:focus-visible]:yt-focus-dark [&>*]:rounded', // styles for logo wrapped inside an anchor\n props.className\n );\n\n return <header {...props} className={className} ref={ref} />;\n}) as ForwardedHeaderWithStatics;\n\nHeader.AgreementDisplay = AgreementDisplay;\nHeader.AgreementSelector = AgreementSelector;\nHeader.Button = Button;\nHeader.Link = Link;\nHeader.Logo = Logo;\nHeader.LogoLegacy = LogoLegacy;\nHeader.PrimaryNavigation = PrimaryNavigation;\nHeader.SecondaryNavigation = SecondaryNavigation;\nHeader.MenuButton = MenuButton;\n"],"names":["Header","AgreementDisplay","AgreementSelector","Button","Link","Logo","LogoLegacy","PrimaryNavigation","SecondaryNavigation","MenuButton"],"mappings":";;;;;;;;;;;AAkCO,MAAM,SAAS,MAAM,WAAwC,SAASA,QAAO,OAAO,KAAK;AAC5F,QAAM,YAAY;AAAA,IACd;AAAA,IACA;AAAA;AAAA,IACA,MAAM;AAAA,EACV;AAEA,SAAQ,sBAAA,cAAA,UAAA,EAAQ,GAAG,OAAO,WAAsB,KAAU;AAC9D,CAAC;AAED,OAAO,mBAAmBC,kBAAA;AAC1B,OAAO,oBAAoBC,kBAAA;AAC3B,OAAO,SAASC,OAAA;AAChB,OAAO,OAAOC,KAAA;AACd,OAAO,OAAOC,KAAA;AACd,OAAO,aAAaC,KAAA;AACpB,OAAO,oBAAoBC,kBAAA;AAC3B,OAAO,sBAAsBC,oBAAA;AAC7B,OAAO,aAAaC,WAAA;;"}
|
|
@@ -9,7 +9,7 @@ import { MenuButton } from "./components/MenuButton.js";
|
|
|
9
9
|
import { AgreementDisplay, AgreementSelector } from "./components/AgreementSelector.js";
|
|
10
10
|
const Header = React__default.forwardRef(function Header2(props, ref) {
|
|
11
11
|
const className = cn(
|
|
12
|
-
"bg-
|
|
12
|
+
"bg-brand-midnight flex h-16 w-full shrink-0 items-center gap-2 pl-4",
|
|
13
13
|
"[&>*:focus-visible]:yt-focus-dark [&>*]:rounded",
|
|
14
14
|
// styles for logo wrapped inside an anchor
|
|
15
15
|
props.className
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.js","sources":["../../../src/components/Header/Header.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'clsx';\nimport { Button } from './components/Button';\nimport { Link } from './components/Link';\nimport { Logo, LogoLegacy } from './components/Logo';\nimport { PrimaryNavigation } from './components/PrimaryNavigation';\nimport { SecondaryNavigation } from './components/SecondaryNavigation';\nimport { MenuButton } from './components/MenuButton';\nimport { AgreementSelector, AgreementDisplay } from './components/AgreementSelector';\n\nexport * from './components/Agreement/types';\n\nexport type HeaderTexts = {\n addAgreement: string;\n logout: string;\n more: string;\n new: string;\n search: string;\n};\n\ntype HeaderProps = React.HTMLAttributes<HTMLElement>;\n\nexport type ForwardedHeaderWithStatics = React.ForwardRefExoticComponent<HeaderProps & React.RefAttributes<HTMLDivElement>> & {\n AgreementDisplay: typeof AgreementDisplay;\n AgreementSelector: typeof AgreementSelector;\n Button: typeof Button;\n Link: typeof Link;\n Logo: typeof Logo;\n LogoLegacy: typeof LogoLegacy;\n PrimaryNavigation: typeof PrimaryNavigation;\n SecondaryNavigation: typeof SecondaryNavigation;\n MenuButton: typeof MenuButton;\n};\n\nexport const Header = React.forwardRef<HTMLDivElement, HeaderProps>(function Header(props, ref) {\n const className = cn(\n 'bg-
|
|
1
|
+
{"version":3,"file":"Header.js","sources":["../../../src/components/Header/Header.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'clsx';\nimport { Button } from './components/Button';\nimport { Link } from './components/Link';\nimport { Logo, LogoLegacy } from './components/Logo';\nimport { PrimaryNavigation } from './components/PrimaryNavigation';\nimport { SecondaryNavigation } from './components/SecondaryNavigation';\nimport { MenuButton } from './components/MenuButton';\nimport { AgreementSelector, AgreementDisplay } from './components/AgreementSelector';\n\nexport * from './components/Agreement/types';\n\nexport type HeaderTexts = {\n addAgreement: string;\n logout: string;\n more: string;\n new: string;\n search: string;\n};\n\ntype HeaderProps = React.HTMLAttributes<HTMLElement>;\n\nexport type ForwardedHeaderWithStatics = React.ForwardRefExoticComponent<HeaderProps & React.RefAttributes<HTMLDivElement>> & {\n AgreementDisplay: typeof AgreementDisplay;\n AgreementSelector: typeof AgreementSelector;\n Button: typeof Button;\n Link: typeof Link;\n Logo: typeof Logo;\n LogoLegacy: typeof LogoLegacy;\n PrimaryNavigation: typeof PrimaryNavigation;\n SecondaryNavigation: typeof SecondaryNavigation;\n MenuButton: typeof MenuButton;\n};\n\nexport const Header = React.forwardRef<HTMLDivElement, HeaderProps>(function Header(props, ref) {\n const className = cn(\n 'bg-brand-midnight flex h-16 w-full shrink-0 items-center gap-2 pl-4',\n '[&>*:focus-visible]:yt-focus-dark [&>*]:rounded', // styles for logo wrapped inside an anchor\n props.className\n );\n\n return <header {...props} className={className} ref={ref} />;\n}) as ForwardedHeaderWithStatics;\n\nHeader.AgreementDisplay = AgreementDisplay;\nHeader.AgreementSelector = AgreementSelector;\nHeader.Button = Button;\nHeader.Link = Link;\nHeader.Logo = Logo;\nHeader.LogoLegacy = LogoLegacy;\nHeader.PrimaryNavigation = PrimaryNavigation;\nHeader.SecondaryNavigation = SecondaryNavigation;\nHeader.MenuButton = MenuButton;\n"],"names":["React","Header"],"mappings":";;;;;;;;;AAkCO,MAAM,SAASA,eAAM,WAAwC,SAASC,QAAO,OAAO,KAAK;AAC5F,QAAM,YAAY;AAAA,IACd;AAAA,IACA;AAAA;AAAA,IACA,MAAM;AAAA,EACV;AAEA,SAAQD,+BAAA,cAAA,UAAA,EAAQ,GAAG,OAAO,WAAsB,KAAU;AAC9D,CAAC;AAED,OAAO,mBAAmB;AAC1B,OAAO,oBAAoB;AAC3B,OAAO,SAAS;AAChB,OAAO,OAAO;AACd,OAAO,OAAO;AACd,OAAO,aAAa;AACpB,OAAO,oBAAoB;AAC3B,OAAO,sBAAsB;AAC7B,OAAO,aAAa;"}
|
|
@@ -73,11 +73,11 @@ function AgreementSelector(props) {
|
|
|
73
73
|
collisionPadding: 0,
|
|
74
74
|
sideOffset: 8
|
|
75
75
|
},
|
|
76
|
-
/* @__PURE__ */ React.createElement(popover.Popover.Popup, { className: "flex h-[calc(100vh_-_theme(spacing.16))] w-64 flex-col gap-1
|
|
76
|
+
/* @__PURE__ */ React.createElement(popover.Popover.Popup, { className: "bg-brand-midnight flex h-[calc(100vh_-_theme(spacing.16))] w-64 flex-col gap-1" }, /* @__PURE__ */ React.createElement(
|
|
77
77
|
SearchInput.SearchInput,
|
|
78
78
|
{
|
|
79
79
|
autoFocus: true,
|
|
80
|
-
className: "focus-visible:!yt-focus-dark mx-2 !border-transparent !
|
|
80
|
+
className: "focus-visible:!yt-focus-dark !bg-white-subtle mx-2 !border-transparent !text-white hover:!bg-white/[0.16] hover:!shadow-none focus:!bg-white/[0.16] active:!bg-white/[0.16] [&+div>button]:!text-white",
|
|
81
81
|
onChange: (event) => setSearch(event.target.value),
|
|
82
82
|
onKeyDown: handleKeyDown,
|
|
83
83
|
placeholder: texts.header.search
|
|
@@ -122,11 +122,11 @@ function AgreementSelector(props) {
|
|
|
122
122
|
), handleAddAgreement ? /* @__PURE__ */ React.createElement(
|
|
123
123
|
Button.Button,
|
|
124
124
|
{
|
|
125
|
-
className: "focus-visible:!yt-focus-dark mx-2 my-1 !h-9 shrink-0 !
|
|
125
|
+
className: "focus-visible:!yt-focus-dark !bg-white-subtle mx-2 my-1 !h-9 shrink-0 !text-white hover:!bg-white/[0.16]",
|
|
126
126
|
onClick: handleAddAgreement
|
|
127
127
|
},
|
|
128
128
|
texts.header.addAgreement
|
|
129
|
-
) : null, /* @__PURE__ */ React.createElement("hr", { className: "my-0 h-px w-full
|
|
129
|
+
) : null, /* @__PURE__ */ React.createElement("hr", { className: "bg-white-subtle my-0 h-px w-full" }), /* @__PURE__ */ React.createElement(
|
|
130
130
|
"a",
|
|
131
131
|
{
|
|
132
132
|
className: "focus-visible:yt-focus-dark mx-2 mb-2 flex h-8 shrink-0 items-center justify-center rounded text-white hover:cursor-pointer hover:text-white hover:underline focus-visible:outline-none",
|
|
@@ -169,7 +169,7 @@ const createAgreementButton = (agreement, fallbackImageSrc, onChangeAgreement, i
|
|
|
169
169
|
Item.AgreementItem,
|
|
170
170
|
{
|
|
171
171
|
...agreement,
|
|
172
|
-
className: "h-14
|
|
172
|
+
className: "bg-white-subtle h-14 xl:hover:bg-white/[0.16] [[aria-current='true']>&]:bg-white/[0.16]",
|
|
173
173
|
fallbackImageSrc
|
|
174
174
|
}
|
|
175
175
|
)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgreementSelector.cjs","sources":["../../../../src/components/Header/components/AgreementSelector.tsx"],"sourcesContent":["import React from 'react';\nimport { Popover as PopoverPrimitive } from '@base-ui/react/popover';\n\nimport * as CollectionPrimitive from '../../../primitives/Collection/Collection';\nimport { AgreementItem } from './Agreement/Item';\nimport { createCustomKeyboardEvent } from '../../../utils/input';\nimport { Icon } from '../../Icon/Icon';\nimport { SearchInput } from '../../SearchInput/SearchInput';\nimport { Button } from '../../Button/Button';\nimport { useLocalization } from '../../Provider/Localization';\nimport { Agreement } from './Agreement/types';\nimport { AgreementDisplay as Display } from './Agreement/Display';\n\nconst Container = (props: React.PropsWithChildren<unknown>) => {\n return (\n <div\n className=\"-ml-2 flex flex-shrink-0 flex-grow-0 items-center gap-2 pr-2 xl:ml-auto xl:w-64\"\n data-taco=\"header-agreements\">\n <span className=\"hidden h-8 w-px flex-shrink-0 flex-grow-0 bg-white/[0.3] xl:flex\" />\n {props.children}\n </div>\n );\n};\n\nexport type AgreementSelectorProps = {\n agreements: Agreement[];\n currentAgreement: Agreement;\n fallbackImageSrc: string;\n filterAgreement: (agreement: Agreement, filter: (agreement: Agreement) => boolean) => void;\n filterClientAgreement: (agreement: Agreement, searchValue: string, filter: (agreement: Agreement) => boolean) => void;\n onAddAgreement?: () => void;\n onChangeAgreement: (agreement: Agreement) => void;\n onLogout: () => void;\n open: boolean;\n setOpen: (open: boolean) => void;\n};\n\nexport function AgreementSelector(props: AgreementSelectorProps) {\n const {\n agreements,\n currentAgreement,\n fallbackImageSrc,\n filterAgreement = () => true,\n filterClientAgreement = () => true,\n onAddAgreement: handleAddAgreement,\n onChangeAgreement,\n onLogout: handleLogout,\n open,\n setOpen,\n } = props;\n const { texts } = useLocalization();\n const collectionRef = React.useRef<CollectionPrimitive.CollectionRef | null>(null);\n\n const [search, setSearch] = React.useState('');\n\n React.useEffect(() => {\n setSearch('');\n }, [open]);\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp' || event.key === 'Enter') {\n event.preventDefault();\n collectionRef.current?.dispatchEvent(createCustomKeyboardEvent(event as React.KeyboardEvent<HTMLInputElement>));\n }\n };\n\n const handleChangeAgreement = (agreement: Agreement) => {\n onChangeAgreement(agreement);\n setOpen(false);\n };\n\n return (\n <Container>\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n <PopoverPrimitive.Trigger\n data-testid=\"agreement-selector-trigger\"\n className=\"xl:focus-visible:yt-focus-dark [&:focus-visible_img]:yt-focus-dark w-full rounded outline-none xl:[&:focus-visible_img]:shadow-none\">\n <Display currentAgreement={currentAgreement} fallbackImageSrc={fallbackImageSrc}>\n {agreements ? (\n <Icon\n className=\"ml-auto hidden flex-shrink-0 flex-grow-0 text-white xl:flex\"\n name={open ? 'chevron-up' : 'chevron-down'}\n />\n ) : null}\n </Display>\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Positioner\n collisionAvoidance={{\n side: 'none',\n }}\n collisionPadding={0}\n sideOffset={8}>\n <PopoverPrimitive.Popup className=\"flex h-[calc(100vh_-_theme(spacing.16))] w-64 flex-col gap-1 bg-blue-900\">\n <SearchInput\n autoFocus\n className=\"focus-visible:!yt-focus-dark mx-2 !border-transparent !bg-white/[0.08] !text-white hover:!bg-white/[0.16] hover:!shadow-none focus:!bg-white/[0.16] active:!bg-white/[0.16] [&+div>button]:!text-white\"\n onChange={event => setSearch(event.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={texts.header.search}\n />\n <CollectionPrimitive.Root\n querySelector=\"button\"\n className=\"-my-1 flex w-full flex-grow flex-col gap-1 overflow-auto px-2 py-1 outline-none\"\n ref={collectionRef}\n tabIndex={-1}>\n {agreements\n ?.filter(agreement => filterAgreement(agreement, filterBySearchValue(search)))\n .map(agreement => {\n const button = createAgreementButton(\n agreement,\n fallbackImageSrc,\n handleChangeAgreement,\n isCurrentAgreement(agreement, currentAgreement)\n );\n\n if (agreement.clients) {\n return (\n <span\n className=\"flex flex-col gap-px [&>*:first-child>span]:!rounded-t [&>*:last-child>span]:!rounded-b [&>*>span]:!rounded-none\"\n key={`${agreement.number}_${agreement.userId}_clients`}>\n {filterBySearchValue(search)(agreement) ? button : null}\n {agreement.clients\n .filter(agreement =>\n filterClientAgreement(agreement, search, filterBySearchValue(search))\n )\n .map(clientAgreement =>\n createAgreementButton(\n clientAgreement,\n fallbackImageSrc,\n handleChangeAgreement,\n isCurrentAgreement(clientAgreement, currentAgreement)\n )\n )}\n </span>\n );\n }\n\n return button;\n })}\n </CollectionPrimitive.Root>\n {handleAddAgreement ? (\n <Button\n className=\"focus-visible:!yt-focus-dark mx-2 my-1 !h-9 shrink-0 !bg-white/[0.08] !text-white hover:!bg-white/[0.16]\"\n onClick={handleAddAgreement}>\n {texts.header.addAgreement}\n </Button>\n ) : null}\n <hr className=\"my-0 h-px w-full bg-white/[0.08]\" />\n <a\n className=\"focus-visible:yt-focus-dark mx-2 mb-2 flex h-8 shrink-0 items-center justify-center rounded text-white hover:cursor-pointer hover:text-white hover:underline focus-visible:outline-none\"\n onClick={handleLogout}\n tabIndex={0}>\n {texts.header.logout}\n </a>\n </PopoverPrimitive.Popup>\n </PopoverPrimitive.Positioner>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n </Container>\n );\n}\n\nconst filterBySearchValue = (search: string) => (agreement: Agreement) => {\n if (!search || !search.length) {\n return true;\n }\n\n const matchesAgreementNumber = String(agreement.number).indexOf(search) > -1;\n const matchesCompanyName = agreement.name.toLowerCase().indexOf(search.toLowerCase()) > -1;\n\n return matchesAgreementNumber || matchesCompanyName;\n};\n\nconst isCurrentAgreement = (agreement: Agreement, currentAgreement: Agreement) => {\n return agreement.number === currentAgreement.number && agreement.userId === currentAgreement.userId;\n};\n\nconst createAgreementButton = (\n agreement: Agreement,\n fallbackImageSrc: string,\n onChangeAgreement: (agreement: Agreement) => void,\n isCurrentAgreement = false\n) => {\n const handleKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n if (event.key === 'Enter') {\n onChangeAgreement(agreement);\n }\n };\n\n return (\n <button\n aria-current={isCurrentAgreement ? 'true' : undefined}\n className=\"focus:yt-focus-dark w-full rounded outline-none\"\n data-taco=\"header-agreements-agreement\"\n key={`${agreement.number}_${agreement.userId}`}\n onClick={() => onChangeAgreement(agreement)}\n onKeyDown={handleKeyDown}\n tabIndex={0}>\n <AgreementItem\n {...agreement}\n className=\"h-14 bg-white/[0.08] xl:hover:bg-white/[0.16] [[aria-current='true']>&]:bg-white/[0.16]\"\n fallbackImageSrc={fallbackImageSrc}\n />\n </button>\n );\n};\n\nexport type AgreementDisplayProps = React.HTMLAttributes<HTMLDivElement> & {\n currentAgreement: Agreement;\n fallbackImageSrc: string;\n};\n\nexport function AgreementDisplay(props: AgreementDisplayProps) {\n const { currentAgreement, fallbackImageSrc } = props;\n\n return (\n <Container>\n <Display currentAgreement={currentAgreement} fallbackImageSrc={fallbackImageSrc} />\n </Container>\n );\n}\n"],"names":["useLocalization","createCustomKeyboardEvent","PopoverPrimitive","Display","Icon","SearchInput","CollectionPrimitive.Root","agreement","Button","isCurrentAgreement","AgreementItem"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AgreementSelector.cjs","sources":["../../../../src/components/Header/components/AgreementSelector.tsx"],"sourcesContent":["import React from 'react';\nimport { Popover as PopoverPrimitive } from '@base-ui/react/popover';\n\nimport * as CollectionPrimitive from '../../../primitives/Collection/Collection';\nimport { AgreementItem } from './Agreement/Item';\nimport { createCustomKeyboardEvent } from '../../../utils/input';\nimport { Icon } from '../../Icon/Icon';\nimport { SearchInput } from '../../SearchInput/SearchInput';\nimport { Button } from '../../Button/Button';\nimport { useLocalization } from '../../Provider/Localization';\nimport { Agreement } from './Agreement/types';\nimport { AgreementDisplay as Display } from './Agreement/Display';\n\nconst Container = (props: React.PropsWithChildren<unknown>) => {\n return (\n <div\n className=\"-ml-2 flex flex-shrink-0 flex-grow-0 items-center gap-2 pr-2 xl:ml-auto xl:w-64\"\n data-taco=\"header-agreements\">\n <span className=\"hidden h-8 w-px flex-shrink-0 flex-grow-0 bg-white/[0.3] xl:flex\" />\n {props.children}\n </div>\n );\n};\n\nexport type AgreementSelectorProps = {\n agreements: Agreement[];\n currentAgreement: Agreement;\n fallbackImageSrc: string;\n filterAgreement: (agreement: Agreement, filter: (agreement: Agreement) => boolean) => void;\n filterClientAgreement: (agreement: Agreement, searchValue: string, filter: (agreement: Agreement) => boolean) => void;\n onAddAgreement?: () => void;\n onChangeAgreement: (agreement: Agreement) => void;\n onLogout: () => void;\n open: boolean;\n setOpen: (open: boolean) => void;\n};\n\nexport function AgreementSelector(props: AgreementSelectorProps) {\n const {\n agreements,\n currentAgreement,\n fallbackImageSrc,\n filterAgreement = () => true,\n filterClientAgreement = () => true,\n onAddAgreement: handleAddAgreement,\n onChangeAgreement,\n onLogout: handleLogout,\n open,\n setOpen,\n } = props;\n const { texts } = useLocalization();\n const collectionRef = React.useRef<CollectionPrimitive.CollectionRef | null>(null);\n\n const [search, setSearch] = React.useState('');\n\n React.useEffect(() => {\n setSearch('');\n }, [open]);\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp' || event.key === 'Enter') {\n event.preventDefault();\n collectionRef.current?.dispatchEvent(createCustomKeyboardEvent(event as React.KeyboardEvent<HTMLInputElement>));\n }\n };\n\n const handleChangeAgreement = (agreement: Agreement) => {\n onChangeAgreement(agreement);\n setOpen(false);\n };\n\n return (\n <Container>\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n <PopoverPrimitive.Trigger\n data-testid=\"agreement-selector-trigger\"\n className=\"xl:focus-visible:yt-focus-dark [&:focus-visible_img]:yt-focus-dark w-full rounded outline-none xl:[&:focus-visible_img]:shadow-none\">\n <Display currentAgreement={currentAgreement} fallbackImageSrc={fallbackImageSrc}>\n {agreements ? (\n <Icon\n className=\"ml-auto hidden flex-shrink-0 flex-grow-0 text-white xl:flex\"\n name={open ? 'chevron-up' : 'chevron-down'}\n />\n ) : null}\n </Display>\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Positioner\n collisionAvoidance={{\n side: 'none',\n }}\n collisionPadding={0}\n sideOffset={8}>\n <PopoverPrimitive.Popup className=\"bg-brand-midnight flex h-[calc(100vh_-_theme(spacing.16))] w-64 flex-col gap-1\">\n <SearchInput\n autoFocus\n className=\"focus-visible:!yt-focus-dark !bg-white-subtle mx-2 !border-transparent !text-white hover:!bg-white/[0.16] hover:!shadow-none focus:!bg-white/[0.16] active:!bg-white/[0.16] [&+div>button]:!text-white\"\n onChange={event => setSearch(event.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={texts.header.search}\n />\n <CollectionPrimitive.Root\n querySelector=\"button\"\n className=\"-my-1 flex w-full flex-grow flex-col gap-1 overflow-auto px-2 py-1 outline-none\"\n ref={collectionRef}\n tabIndex={-1}>\n {agreements\n ?.filter(agreement => filterAgreement(agreement, filterBySearchValue(search)))\n .map(agreement => {\n const button = createAgreementButton(\n agreement,\n fallbackImageSrc,\n handleChangeAgreement,\n isCurrentAgreement(agreement, currentAgreement)\n );\n\n if (agreement.clients) {\n return (\n <span\n className=\"flex flex-col gap-px [&>*:first-child>span]:!rounded-t [&>*:last-child>span]:!rounded-b [&>*>span]:!rounded-none\"\n key={`${agreement.number}_${agreement.userId}_clients`}>\n {filterBySearchValue(search)(agreement) ? button : null}\n {agreement.clients\n .filter(agreement =>\n filterClientAgreement(agreement, search, filterBySearchValue(search))\n )\n .map(clientAgreement =>\n createAgreementButton(\n clientAgreement,\n fallbackImageSrc,\n handleChangeAgreement,\n isCurrentAgreement(clientAgreement, currentAgreement)\n )\n )}\n </span>\n );\n }\n\n return button;\n })}\n </CollectionPrimitive.Root>\n {handleAddAgreement ? (\n <Button\n className=\"focus-visible:!yt-focus-dark !bg-white-subtle mx-2 my-1 !h-9 shrink-0 !text-white hover:!bg-white/[0.16]\"\n onClick={handleAddAgreement}>\n {texts.header.addAgreement}\n </Button>\n ) : null}\n <hr className=\"bg-white-subtle my-0 h-px w-full\" />\n <a\n className=\"focus-visible:yt-focus-dark mx-2 mb-2 flex h-8 shrink-0 items-center justify-center rounded text-white hover:cursor-pointer hover:text-white hover:underline focus-visible:outline-none\"\n onClick={handleLogout}\n tabIndex={0}>\n {texts.header.logout}\n </a>\n </PopoverPrimitive.Popup>\n </PopoverPrimitive.Positioner>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n </Container>\n );\n}\n\nconst filterBySearchValue = (search: string) => (agreement: Agreement) => {\n if (!search || !search.length) {\n return true;\n }\n\n const matchesAgreementNumber = String(agreement.number).indexOf(search) > -1;\n const matchesCompanyName = agreement.name.toLowerCase().indexOf(search.toLowerCase()) > -1;\n\n return matchesAgreementNumber || matchesCompanyName;\n};\n\nconst isCurrentAgreement = (agreement: Agreement, currentAgreement: Agreement) => {\n return agreement.number === currentAgreement.number && agreement.userId === currentAgreement.userId;\n};\n\nconst createAgreementButton = (\n agreement: Agreement,\n fallbackImageSrc: string,\n onChangeAgreement: (agreement: Agreement) => void,\n isCurrentAgreement = false\n) => {\n const handleKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n if (event.key === 'Enter') {\n onChangeAgreement(agreement);\n }\n };\n\n return (\n <button\n aria-current={isCurrentAgreement ? 'true' : undefined}\n className=\"focus:yt-focus-dark w-full rounded outline-none\"\n data-taco=\"header-agreements-agreement\"\n key={`${agreement.number}_${agreement.userId}`}\n onClick={() => onChangeAgreement(agreement)}\n onKeyDown={handleKeyDown}\n tabIndex={0}>\n <AgreementItem\n {...agreement}\n className=\"bg-white-subtle h-14 xl:hover:bg-white/[0.16] [[aria-current='true']>&]:bg-white/[0.16]\"\n fallbackImageSrc={fallbackImageSrc}\n />\n </button>\n );\n};\n\nexport type AgreementDisplayProps = React.HTMLAttributes<HTMLDivElement> & {\n currentAgreement: Agreement;\n fallbackImageSrc: string;\n};\n\nexport function AgreementDisplay(props: AgreementDisplayProps) {\n const { currentAgreement, fallbackImageSrc } = props;\n\n return (\n <Container>\n <Display currentAgreement={currentAgreement} fallbackImageSrc={fallbackImageSrc} />\n </Container>\n );\n}\n"],"names":["useLocalization","createCustomKeyboardEvent","PopoverPrimitive","Display","Icon","SearchInput","CollectionPrimitive.Root","agreement","Button","isCurrentAgreement","AgreementItem"],"mappings":"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"}
|
|
@@ -71,11 +71,11 @@ function AgreementSelector(props) {
|
|
|
71
71
|
collisionPadding: 0,
|
|
72
72
|
sideOffset: 8
|
|
73
73
|
},
|
|
74
|
-
/* @__PURE__ */ React__default.createElement(Popover.Popup, { className: "flex h-[calc(100vh_-_theme(spacing.16))] w-64 flex-col gap-1
|
|
74
|
+
/* @__PURE__ */ React__default.createElement(Popover.Popup, { className: "bg-brand-midnight flex h-[calc(100vh_-_theme(spacing.16))] w-64 flex-col gap-1" }, /* @__PURE__ */ React__default.createElement(
|
|
75
75
|
SearchInput,
|
|
76
76
|
{
|
|
77
77
|
autoFocus: true,
|
|
78
|
-
className: "focus-visible:!yt-focus-dark mx-2 !border-transparent !
|
|
78
|
+
className: "focus-visible:!yt-focus-dark !bg-white-subtle mx-2 !border-transparent !text-white hover:!bg-white/[0.16] hover:!shadow-none focus:!bg-white/[0.16] active:!bg-white/[0.16] [&+div>button]:!text-white",
|
|
79
79
|
onChange: (event) => setSearch(event.target.value),
|
|
80
80
|
onKeyDown: handleKeyDown,
|
|
81
81
|
placeholder: texts.header.search
|
|
@@ -120,11 +120,11 @@ function AgreementSelector(props) {
|
|
|
120
120
|
), handleAddAgreement ? /* @__PURE__ */ React__default.createElement(
|
|
121
121
|
Button,
|
|
122
122
|
{
|
|
123
|
-
className: "focus-visible:!yt-focus-dark mx-2 my-1 !h-9 shrink-0 !
|
|
123
|
+
className: "focus-visible:!yt-focus-dark !bg-white-subtle mx-2 my-1 !h-9 shrink-0 !text-white hover:!bg-white/[0.16]",
|
|
124
124
|
onClick: handleAddAgreement
|
|
125
125
|
},
|
|
126
126
|
texts.header.addAgreement
|
|
127
|
-
) : null, /* @__PURE__ */ React__default.createElement("hr", { className: "my-0 h-px w-full
|
|
127
|
+
) : null, /* @__PURE__ */ React__default.createElement("hr", { className: "bg-white-subtle my-0 h-px w-full" }), /* @__PURE__ */ React__default.createElement(
|
|
128
128
|
"a",
|
|
129
129
|
{
|
|
130
130
|
className: "focus-visible:yt-focus-dark mx-2 mb-2 flex h-8 shrink-0 items-center justify-center rounded text-white hover:cursor-pointer hover:text-white hover:underline focus-visible:outline-none",
|
|
@@ -167,7 +167,7 @@ const createAgreementButton = (agreement, fallbackImageSrc, onChangeAgreement, i
|
|
|
167
167
|
AgreementItem,
|
|
168
168
|
{
|
|
169
169
|
...agreement,
|
|
170
|
-
className: "h-14
|
|
170
|
+
className: "bg-white-subtle h-14 xl:hover:bg-white/[0.16] [[aria-current='true']>&]:bg-white/[0.16]",
|
|
171
171
|
fallbackImageSrc
|
|
172
172
|
}
|
|
173
173
|
)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgreementSelector.js","sources":["../../../../src/components/Header/components/AgreementSelector.tsx"],"sourcesContent":["import React from 'react';\nimport { Popover as PopoverPrimitive } from '@base-ui/react/popover';\n\nimport * as CollectionPrimitive from '../../../primitives/Collection/Collection';\nimport { AgreementItem } from './Agreement/Item';\nimport { createCustomKeyboardEvent } from '../../../utils/input';\nimport { Icon } from '../../Icon/Icon';\nimport { SearchInput } from '../../SearchInput/SearchInput';\nimport { Button } from '../../Button/Button';\nimport { useLocalization } from '../../Provider/Localization';\nimport { Agreement } from './Agreement/types';\nimport { AgreementDisplay as Display } from './Agreement/Display';\n\nconst Container = (props: React.PropsWithChildren<unknown>) => {\n return (\n <div\n className=\"-ml-2 flex flex-shrink-0 flex-grow-0 items-center gap-2 pr-2 xl:ml-auto xl:w-64\"\n data-taco=\"header-agreements\">\n <span className=\"hidden h-8 w-px flex-shrink-0 flex-grow-0 bg-white/[0.3] xl:flex\" />\n {props.children}\n </div>\n );\n};\n\nexport type AgreementSelectorProps = {\n agreements: Agreement[];\n currentAgreement: Agreement;\n fallbackImageSrc: string;\n filterAgreement: (agreement: Agreement, filter: (agreement: Agreement) => boolean) => void;\n filterClientAgreement: (agreement: Agreement, searchValue: string, filter: (agreement: Agreement) => boolean) => void;\n onAddAgreement?: () => void;\n onChangeAgreement: (agreement: Agreement) => void;\n onLogout: () => void;\n open: boolean;\n setOpen: (open: boolean) => void;\n};\n\nexport function AgreementSelector(props: AgreementSelectorProps) {\n const {\n agreements,\n currentAgreement,\n fallbackImageSrc,\n filterAgreement = () => true,\n filterClientAgreement = () => true,\n onAddAgreement: handleAddAgreement,\n onChangeAgreement,\n onLogout: handleLogout,\n open,\n setOpen,\n } = props;\n const { texts } = useLocalization();\n const collectionRef = React.useRef<CollectionPrimitive.CollectionRef | null>(null);\n\n const [search, setSearch] = React.useState('');\n\n React.useEffect(() => {\n setSearch('');\n }, [open]);\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp' || event.key === 'Enter') {\n event.preventDefault();\n collectionRef.current?.dispatchEvent(createCustomKeyboardEvent(event as React.KeyboardEvent<HTMLInputElement>));\n }\n };\n\n const handleChangeAgreement = (agreement: Agreement) => {\n onChangeAgreement(agreement);\n setOpen(false);\n };\n\n return (\n <Container>\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n <PopoverPrimitive.Trigger\n data-testid=\"agreement-selector-trigger\"\n className=\"xl:focus-visible:yt-focus-dark [&:focus-visible_img]:yt-focus-dark w-full rounded outline-none xl:[&:focus-visible_img]:shadow-none\">\n <Display currentAgreement={currentAgreement} fallbackImageSrc={fallbackImageSrc}>\n {agreements ? (\n <Icon\n className=\"ml-auto hidden flex-shrink-0 flex-grow-0 text-white xl:flex\"\n name={open ? 'chevron-up' : 'chevron-down'}\n />\n ) : null}\n </Display>\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Positioner\n collisionAvoidance={{\n side: 'none',\n }}\n collisionPadding={0}\n sideOffset={8}>\n <PopoverPrimitive.Popup className=\"flex h-[calc(100vh_-_theme(spacing.16))] w-64 flex-col gap-1 bg-blue-900\">\n <SearchInput\n autoFocus\n className=\"focus-visible:!yt-focus-dark mx-2 !border-transparent !bg-white/[0.08] !text-white hover:!bg-white/[0.16] hover:!shadow-none focus:!bg-white/[0.16] active:!bg-white/[0.16] [&+div>button]:!text-white\"\n onChange={event => setSearch(event.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={texts.header.search}\n />\n <CollectionPrimitive.Root\n querySelector=\"button\"\n className=\"-my-1 flex w-full flex-grow flex-col gap-1 overflow-auto px-2 py-1 outline-none\"\n ref={collectionRef}\n tabIndex={-1}>\n {agreements\n ?.filter(agreement => filterAgreement(agreement, filterBySearchValue(search)))\n .map(agreement => {\n const button = createAgreementButton(\n agreement,\n fallbackImageSrc,\n handleChangeAgreement,\n isCurrentAgreement(agreement, currentAgreement)\n );\n\n if (agreement.clients) {\n return (\n <span\n className=\"flex flex-col gap-px [&>*:first-child>span]:!rounded-t [&>*:last-child>span]:!rounded-b [&>*>span]:!rounded-none\"\n key={`${agreement.number}_${agreement.userId}_clients`}>\n {filterBySearchValue(search)(agreement) ? button : null}\n {agreement.clients\n .filter(agreement =>\n filterClientAgreement(agreement, search, filterBySearchValue(search))\n )\n .map(clientAgreement =>\n createAgreementButton(\n clientAgreement,\n fallbackImageSrc,\n handleChangeAgreement,\n isCurrentAgreement(clientAgreement, currentAgreement)\n )\n )}\n </span>\n );\n }\n\n return button;\n })}\n </CollectionPrimitive.Root>\n {handleAddAgreement ? (\n <Button\n className=\"focus-visible:!yt-focus-dark mx-2 my-1 !h-9 shrink-0 !bg-white/[0.08] !text-white hover:!bg-white/[0.16]\"\n onClick={handleAddAgreement}>\n {texts.header.addAgreement}\n </Button>\n ) : null}\n <hr className=\"my-0 h-px w-full bg-white/[0.08]\" />\n <a\n className=\"focus-visible:yt-focus-dark mx-2 mb-2 flex h-8 shrink-0 items-center justify-center rounded text-white hover:cursor-pointer hover:text-white hover:underline focus-visible:outline-none\"\n onClick={handleLogout}\n tabIndex={0}>\n {texts.header.logout}\n </a>\n </PopoverPrimitive.Popup>\n </PopoverPrimitive.Positioner>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n </Container>\n );\n}\n\nconst filterBySearchValue = (search: string) => (agreement: Agreement) => {\n if (!search || !search.length) {\n return true;\n }\n\n const matchesAgreementNumber = String(agreement.number).indexOf(search) > -1;\n const matchesCompanyName = agreement.name.toLowerCase().indexOf(search.toLowerCase()) > -1;\n\n return matchesAgreementNumber || matchesCompanyName;\n};\n\nconst isCurrentAgreement = (agreement: Agreement, currentAgreement: Agreement) => {\n return agreement.number === currentAgreement.number && agreement.userId === currentAgreement.userId;\n};\n\nconst createAgreementButton = (\n agreement: Agreement,\n fallbackImageSrc: string,\n onChangeAgreement: (agreement: Agreement) => void,\n isCurrentAgreement = false\n) => {\n const handleKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n if (event.key === 'Enter') {\n onChangeAgreement(agreement);\n }\n };\n\n return (\n <button\n aria-current={isCurrentAgreement ? 'true' : undefined}\n className=\"focus:yt-focus-dark w-full rounded outline-none\"\n data-taco=\"header-agreements-agreement\"\n key={`${agreement.number}_${agreement.userId}`}\n onClick={() => onChangeAgreement(agreement)}\n onKeyDown={handleKeyDown}\n tabIndex={0}>\n <AgreementItem\n {...agreement}\n className=\"h-14 bg-white/[0.08] xl:hover:bg-white/[0.16] [[aria-current='true']>&]:bg-white/[0.16]\"\n fallbackImageSrc={fallbackImageSrc}\n />\n </button>\n );\n};\n\nexport type AgreementDisplayProps = React.HTMLAttributes<HTMLDivElement> & {\n currentAgreement: Agreement;\n fallbackImageSrc: string;\n};\n\nexport function AgreementDisplay(props: AgreementDisplayProps) {\n const { currentAgreement, fallbackImageSrc } = props;\n\n return (\n <Container>\n <Display currentAgreement={currentAgreement} fallbackImageSrc={fallbackImageSrc} />\n </Container>\n );\n}\n"],"names":["React","PopoverPrimitive","Display","CollectionPrimitive.Root","agreement","isCurrentAgreement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AgreementSelector.js","sources":["../../../../src/components/Header/components/AgreementSelector.tsx"],"sourcesContent":["import React from 'react';\nimport { Popover as PopoverPrimitive } from '@base-ui/react/popover';\n\nimport * as CollectionPrimitive from '../../../primitives/Collection/Collection';\nimport { AgreementItem } from './Agreement/Item';\nimport { createCustomKeyboardEvent } from '../../../utils/input';\nimport { Icon } from '../../Icon/Icon';\nimport { SearchInput } from '../../SearchInput/SearchInput';\nimport { Button } from '../../Button/Button';\nimport { useLocalization } from '../../Provider/Localization';\nimport { Agreement } from './Agreement/types';\nimport { AgreementDisplay as Display } from './Agreement/Display';\n\nconst Container = (props: React.PropsWithChildren<unknown>) => {\n return (\n <div\n className=\"-ml-2 flex flex-shrink-0 flex-grow-0 items-center gap-2 pr-2 xl:ml-auto xl:w-64\"\n data-taco=\"header-agreements\">\n <span className=\"hidden h-8 w-px flex-shrink-0 flex-grow-0 bg-white/[0.3] xl:flex\" />\n {props.children}\n </div>\n );\n};\n\nexport type AgreementSelectorProps = {\n agreements: Agreement[];\n currentAgreement: Agreement;\n fallbackImageSrc: string;\n filterAgreement: (agreement: Agreement, filter: (agreement: Agreement) => boolean) => void;\n filterClientAgreement: (agreement: Agreement, searchValue: string, filter: (agreement: Agreement) => boolean) => void;\n onAddAgreement?: () => void;\n onChangeAgreement: (agreement: Agreement) => void;\n onLogout: () => void;\n open: boolean;\n setOpen: (open: boolean) => void;\n};\n\nexport function AgreementSelector(props: AgreementSelectorProps) {\n const {\n agreements,\n currentAgreement,\n fallbackImageSrc,\n filterAgreement = () => true,\n filterClientAgreement = () => true,\n onAddAgreement: handleAddAgreement,\n onChangeAgreement,\n onLogout: handleLogout,\n open,\n setOpen,\n } = props;\n const { texts } = useLocalization();\n const collectionRef = React.useRef<CollectionPrimitive.CollectionRef | null>(null);\n\n const [search, setSearch] = React.useState('');\n\n React.useEffect(() => {\n setSearch('');\n }, [open]);\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp' || event.key === 'Enter') {\n event.preventDefault();\n collectionRef.current?.dispatchEvent(createCustomKeyboardEvent(event as React.KeyboardEvent<HTMLInputElement>));\n }\n };\n\n const handleChangeAgreement = (agreement: Agreement) => {\n onChangeAgreement(agreement);\n setOpen(false);\n };\n\n return (\n <Container>\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n <PopoverPrimitive.Trigger\n data-testid=\"agreement-selector-trigger\"\n className=\"xl:focus-visible:yt-focus-dark [&:focus-visible_img]:yt-focus-dark w-full rounded outline-none xl:[&:focus-visible_img]:shadow-none\">\n <Display currentAgreement={currentAgreement} fallbackImageSrc={fallbackImageSrc}>\n {agreements ? (\n <Icon\n className=\"ml-auto hidden flex-shrink-0 flex-grow-0 text-white xl:flex\"\n name={open ? 'chevron-up' : 'chevron-down'}\n />\n ) : null}\n </Display>\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Positioner\n collisionAvoidance={{\n side: 'none',\n }}\n collisionPadding={0}\n sideOffset={8}>\n <PopoverPrimitive.Popup className=\"bg-brand-midnight flex h-[calc(100vh_-_theme(spacing.16))] w-64 flex-col gap-1\">\n <SearchInput\n autoFocus\n className=\"focus-visible:!yt-focus-dark !bg-white-subtle mx-2 !border-transparent !text-white hover:!bg-white/[0.16] hover:!shadow-none focus:!bg-white/[0.16] active:!bg-white/[0.16] [&+div>button]:!text-white\"\n onChange={event => setSearch(event.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={texts.header.search}\n />\n <CollectionPrimitive.Root\n querySelector=\"button\"\n className=\"-my-1 flex w-full flex-grow flex-col gap-1 overflow-auto px-2 py-1 outline-none\"\n ref={collectionRef}\n tabIndex={-1}>\n {agreements\n ?.filter(agreement => filterAgreement(agreement, filterBySearchValue(search)))\n .map(agreement => {\n const button = createAgreementButton(\n agreement,\n fallbackImageSrc,\n handleChangeAgreement,\n isCurrentAgreement(agreement, currentAgreement)\n );\n\n if (agreement.clients) {\n return (\n <span\n className=\"flex flex-col gap-px [&>*:first-child>span]:!rounded-t [&>*:last-child>span]:!rounded-b [&>*>span]:!rounded-none\"\n key={`${agreement.number}_${agreement.userId}_clients`}>\n {filterBySearchValue(search)(agreement) ? button : null}\n {agreement.clients\n .filter(agreement =>\n filterClientAgreement(agreement, search, filterBySearchValue(search))\n )\n .map(clientAgreement =>\n createAgreementButton(\n clientAgreement,\n fallbackImageSrc,\n handleChangeAgreement,\n isCurrentAgreement(clientAgreement, currentAgreement)\n )\n )}\n </span>\n );\n }\n\n return button;\n })}\n </CollectionPrimitive.Root>\n {handleAddAgreement ? (\n <Button\n className=\"focus-visible:!yt-focus-dark !bg-white-subtle mx-2 my-1 !h-9 shrink-0 !text-white hover:!bg-white/[0.16]\"\n onClick={handleAddAgreement}>\n {texts.header.addAgreement}\n </Button>\n ) : null}\n <hr className=\"bg-white-subtle my-0 h-px w-full\" />\n <a\n className=\"focus-visible:yt-focus-dark mx-2 mb-2 flex h-8 shrink-0 items-center justify-center rounded text-white hover:cursor-pointer hover:text-white hover:underline focus-visible:outline-none\"\n onClick={handleLogout}\n tabIndex={0}>\n {texts.header.logout}\n </a>\n </PopoverPrimitive.Popup>\n </PopoverPrimitive.Positioner>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n </Container>\n );\n}\n\nconst filterBySearchValue = (search: string) => (agreement: Agreement) => {\n if (!search || !search.length) {\n return true;\n }\n\n const matchesAgreementNumber = String(agreement.number).indexOf(search) > -1;\n const matchesCompanyName = agreement.name.toLowerCase().indexOf(search.toLowerCase()) > -1;\n\n return matchesAgreementNumber || matchesCompanyName;\n};\n\nconst isCurrentAgreement = (agreement: Agreement, currentAgreement: Agreement) => {\n return agreement.number === currentAgreement.number && agreement.userId === currentAgreement.userId;\n};\n\nconst createAgreementButton = (\n agreement: Agreement,\n fallbackImageSrc: string,\n onChangeAgreement: (agreement: Agreement) => void,\n isCurrentAgreement = false\n) => {\n const handleKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n if (event.key === 'Enter') {\n onChangeAgreement(agreement);\n }\n };\n\n return (\n <button\n aria-current={isCurrentAgreement ? 'true' : undefined}\n className=\"focus:yt-focus-dark w-full rounded outline-none\"\n data-taco=\"header-agreements-agreement\"\n key={`${agreement.number}_${agreement.userId}`}\n onClick={() => onChangeAgreement(agreement)}\n onKeyDown={handleKeyDown}\n tabIndex={0}>\n <AgreementItem\n {...agreement}\n className=\"bg-white-subtle h-14 xl:hover:bg-white/[0.16] [[aria-current='true']>&]:bg-white/[0.16]\"\n fallbackImageSrc={fallbackImageSrc}\n />\n </button>\n );\n};\n\nexport type AgreementDisplayProps = React.HTMLAttributes<HTMLDivElement> & {\n currentAgreement: Agreement;\n fallbackImageSrc: string;\n};\n\nexport function AgreementDisplay(props: AgreementDisplayProps) {\n const { currentAgreement, fallbackImageSrc } = props;\n\n return (\n <Container>\n <Display currentAgreement={currentAgreement} fallbackImageSrc={fallbackImageSrc} />\n </Container>\n );\n}\n"],"names":["React","PopoverPrimitive","Display","CollectionPrimitive.Root","agreement","isCurrentAgreement"],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ const Button = React.forwardRef(function Button2(props, ref) {
|
|
|
11
11
|
const getButtonClasses = (rounded = true) => cn(
|
|
12
12
|
"!h-9 !w-9 flex-shrink-0 flex-grow-0 cursor-pointer relative",
|
|
13
13
|
"focus:!outline-none focus:!shadow-none focus-visible:!yt-focus-dark ",
|
|
14
|
-
"bg-transparent enabled:hover:bg-white
|
|
14
|
+
"bg-transparent enabled:hover:bg-white-subtle focus:bg-white-subtle aria-current-page:bg-white-subtle",
|
|
15
15
|
"text-white",
|
|
16
16
|
{
|
|
17
17
|
"!rounded-full": rounded
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.cjs","sources":["../../../../src/components/Header/components/Button.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'clsx';\nimport { IconButton, IconButtonProps } from '../../IconButton/IconButton';\n\nexport type ButtonProps = Omit<IconButtonProps, 'appearance' | 'aria-label'> & {\n 'aria-label': string;\n};\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(function Button(props, ref) {\n const { ...attributes } = props;\n const className = cn(getButtonClasses(), props.className);\n\n return <IconButton {...attributes} appearance=\"discrete\" className={className} data-taco=\"header-button\" ref={ref} />;\n});\n\nexport const getButtonClasses = (rounded = true) =>\n cn(\n '!h-9 !w-9 flex-shrink-0 flex-grow-0 cursor-pointer relative',\n 'focus:!outline-none focus:!shadow-none focus-visible:!yt-focus-dark ',\n 'bg-transparent enabled:hover:bg-white
|
|
1
|
+
{"version":3,"file":"Button.cjs","sources":["../../../../src/components/Header/components/Button.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'clsx';\nimport { IconButton, IconButtonProps } from '../../IconButton/IconButton';\n\nexport type ButtonProps = Omit<IconButtonProps, 'appearance' | 'aria-label'> & {\n 'aria-label': string;\n};\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(function Button(props, ref) {\n const { ...attributes } = props;\n const className = cn(getButtonClasses(), props.className);\n\n return <IconButton {...attributes} appearance=\"discrete\" className={className} data-taco=\"header-button\" ref={ref} />;\n});\n\nexport const getButtonClasses = (rounded = true) =>\n cn(\n '!h-9 !w-9 flex-shrink-0 flex-grow-0 cursor-pointer relative',\n 'focus:!outline-none focus:!shadow-none focus-visible:!yt-focus-dark ',\n 'bg-transparent enabled:hover:bg-white-subtle focus:bg-white-subtle aria-current-page:bg-white-subtle',\n 'text-white',\n {\n '!rounded-full': rounded,\n }\n );\n"],"names":["Button","IconButton"],"mappings":";;;;;AAQO,MAAM,SAAS,MAAM,WAA2C,SAASA,QAAO,OAAO,KAAK;AACzF,QAAA,EAAE,GAAG,WAAA,IAAe;AAC1B,QAAM,YAAY,GAAG,iBAAiB,GAAG,MAAM,SAAS;AAEjD,SAAA,sBAAA,cAACC,yBAAY,GAAG,YAAY,YAAW,YAAW,WAAsB,aAAU,iBAAgB,IAAU,CAAA;AACvH,CAAC;AAEY,MAAA,mBAAmB,CAAC,UAAU,SACvC;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,IACI,iBAAiB;AAAA,EAAA;AAEzB;;;"}
|
|
@@ -9,7 +9,7 @@ const Button = React__default.forwardRef(function Button2(props, ref) {
|
|
|
9
9
|
const getButtonClasses = (rounded = true) => cn(
|
|
10
10
|
"!h-9 !w-9 flex-shrink-0 flex-grow-0 cursor-pointer relative",
|
|
11
11
|
"focus:!outline-none focus:!shadow-none focus-visible:!yt-focus-dark ",
|
|
12
|
-
"bg-transparent enabled:hover:bg-white
|
|
12
|
+
"bg-transparent enabled:hover:bg-white-subtle focus:bg-white-subtle aria-current-page:bg-white-subtle",
|
|
13
13
|
"text-white",
|
|
14
14
|
{
|
|
15
15
|
"!rounded-full": rounded
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.js","sources":["../../../../src/components/Header/components/Button.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'clsx';\nimport { IconButton, IconButtonProps } from '../../IconButton/IconButton';\n\nexport type ButtonProps = Omit<IconButtonProps, 'appearance' | 'aria-label'> & {\n 'aria-label': string;\n};\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(function Button(props, ref) {\n const { ...attributes } = props;\n const className = cn(getButtonClasses(), props.className);\n\n return <IconButton {...attributes} appearance=\"discrete\" className={className} data-taco=\"header-button\" ref={ref} />;\n});\n\nexport const getButtonClasses = (rounded = true) =>\n cn(\n '!h-9 !w-9 flex-shrink-0 flex-grow-0 cursor-pointer relative',\n 'focus:!outline-none focus:!shadow-none focus-visible:!yt-focus-dark ',\n 'bg-transparent enabled:hover:bg-white
|
|
1
|
+
{"version":3,"file":"Button.js","sources":["../../../../src/components/Header/components/Button.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'clsx';\nimport { IconButton, IconButtonProps } from '../../IconButton/IconButton';\n\nexport type ButtonProps = Omit<IconButtonProps, 'appearance' | 'aria-label'> & {\n 'aria-label': string;\n};\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(function Button(props, ref) {\n const { ...attributes } = props;\n const className = cn(getButtonClasses(), props.className);\n\n return <IconButton {...attributes} appearance=\"discrete\" className={className} data-taco=\"header-button\" ref={ref} />;\n});\n\nexport const getButtonClasses = (rounded = true) =>\n cn(\n '!h-9 !w-9 flex-shrink-0 flex-grow-0 cursor-pointer relative',\n 'focus:!outline-none focus:!shadow-none focus-visible:!yt-focus-dark ',\n 'bg-transparent enabled:hover:bg-white-subtle focus:bg-white-subtle aria-current-page:bg-white-subtle',\n 'text-white',\n {\n '!rounded-full': rounded,\n }\n );\n"],"names":["React","Button"],"mappings":";;;AAQO,MAAM,SAASA,eAAM,WAA2C,SAASC,QAAO,OAAO,KAAK;AACzF,QAAA,EAAE,GAAG,WAAA,IAAe;AAC1B,QAAM,YAAY,GAAG,iBAAiB,GAAG,MAAM,SAAS;AAEjD,SAAAD,+BAAA,cAAC,cAAY,GAAG,YAAY,YAAW,YAAW,WAAsB,aAAU,iBAAgB,IAAU,CAAA;AACvH,CAAC;AAEY,MAAA,mBAAmB,CAAC,UAAU,SACvC;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,IACI,iBAAiB;AAAA,EAAA;AAEzB;"}
|
|
@@ -27,7 +27,7 @@ const Link = React.forwardRef(function Link2(props, ref) {
|
|
|
27
27
|
const getLinkClasses = (icon = void 0) => cn(
|
|
28
28
|
"flex h-8 flex-shrink-0 flex-grow-0 cursor-pointer items-center justify-center ",
|
|
29
29
|
"focus:!shadow-none focus:!outline-none focus-visible:!yt-focus-dark",
|
|
30
|
-
"bg-transparent hover:bg-white
|
|
30
|
+
"bg-transparent hover:bg-white-subtle focus:bg-white-subtle aria-current-page:bg-white-subtle",
|
|
31
31
|
"!text-white hover:text-white focus:text-white",
|
|
32
32
|
{
|
|
33
33
|
"!rounded-full !h-9 !w-9": icon,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Link.cjs","sources":["../../../../src/components/Header/components/Link.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'clsx';\nimport { Icon, IconName } from '../../Icon/Icon';\nimport { Tooltip } from '../../Tooltip/Tooltip';\nimport { Badge } from '../../Badge/Badge';\nimport { useLocalization } from '../../Provider/Localization';\n\nexport type BaseLinkProps = React.AnchorHTMLAttributes<HTMLAnchorElement> & {\n tooltip?: string;\n};\n\ninterface LinkPropsWithoutIcon extends BaseLinkProps {\n children: JSX.Element | string;\n icon?: never;\n isNew?: never;\n}\n\ninterface LinkPropsWithIcon extends Omit<BaseLinkProps, 'aria-label'> {\n 'aria-label': string;\n children?: never;\n icon: IconName;\n isNew?: boolean;\n}\n\nexport type LinkProps = LinkPropsWithoutIcon | LinkPropsWithIcon;\n\nexport const Link = React.forwardRef<HTMLAnchorElement, LinkProps>(function Link(props, ref) {\n const { children, icon, isNew, tooltip, ...otherProps } = props;\n const { texts } = useLocalization();\n const className = cn(getLinkClasses(icon), 'relative', props.className);\n\n const link = (\n <a {...otherProps} className={className} data-taco=\"header-link\" ref={ref} tabIndex={0}>\n {icon ? <Icon name={icon} /> : null}\n {children}\n {isNew ? (\n <Badge\n color=\"blue\"\n small\n className=\"absolute right-0 top-0 -mr-2.5 -mt-1.5 !h-3 !px-0.5 text-[0.55rem] font-normal\">\n {texts.header.new}\n </Badge>\n ) : null}\n </a>\n );\n\n if (tooltip) {\n return <Tooltip title={tooltip}>{link}</Tooltip>;\n }\n\n return link;\n});\n\nexport const getLinkClasses = (icon: IconName | undefined = undefined) =>\n cn(\n 'flex h-8 flex-shrink-0 flex-grow-0 cursor-pointer items-center justify-center ',\n 'focus:!shadow-none focus:!outline-none focus-visible:!yt-focus-dark',\n 'bg-transparent hover:bg-white
|
|
1
|
+
{"version":3,"file":"Link.cjs","sources":["../../../../src/components/Header/components/Link.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'clsx';\nimport { Icon, IconName } from '../../Icon/Icon';\nimport { Tooltip } from '../../Tooltip/Tooltip';\nimport { Badge } from '../../Badge/Badge';\nimport { useLocalization } from '../../Provider/Localization';\n\nexport type BaseLinkProps = React.AnchorHTMLAttributes<HTMLAnchorElement> & {\n tooltip?: string;\n};\n\ninterface LinkPropsWithoutIcon extends BaseLinkProps {\n children: JSX.Element | string;\n icon?: never;\n isNew?: never;\n}\n\ninterface LinkPropsWithIcon extends Omit<BaseLinkProps, 'aria-label'> {\n 'aria-label': string;\n children?: never;\n icon: IconName;\n isNew?: boolean;\n}\n\nexport type LinkProps = LinkPropsWithoutIcon | LinkPropsWithIcon;\n\nexport const Link = React.forwardRef<HTMLAnchorElement, LinkProps>(function Link(props, ref) {\n const { children, icon, isNew, tooltip, ...otherProps } = props;\n const { texts } = useLocalization();\n const className = cn(getLinkClasses(icon), 'relative', props.className);\n\n const link = (\n <a {...otherProps} className={className} data-taco=\"header-link\" ref={ref} tabIndex={0}>\n {icon ? <Icon name={icon} /> : null}\n {children}\n {isNew ? (\n <Badge\n color=\"blue\"\n small\n className=\"absolute right-0 top-0 -mr-2.5 -mt-1.5 !h-3 !px-0.5 text-[0.55rem] font-normal\">\n {texts.header.new}\n </Badge>\n ) : null}\n </a>\n );\n\n if (tooltip) {\n return <Tooltip title={tooltip}>{link}</Tooltip>;\n }\n\n return link;\n});\n\nexport const getLinkClasses = (icon: IconName | undefined = undefined) =>\n cn(\n 'flex h-8 flex-shrink-0 flex-grow-0 cursor-pointer items-center justify-center ',\n 'focus:!shadow-none focus:!outline-none focus-visible:!yt-focus-dark',\n 'bg-transparent hover:bg-white-subtle focus:bg-white-subtle aria-current-page:bg-white-subtle',\n '!text-white hover:text-white focus:text-white',\n {\n '!rounded-full !h-9 !w-9': icon,\n 'whitespace-nowrap px-3 rounded text-sm hidden lg:flex': !icon,\n }\n );\n"],"names":["Link","useLocalization","Icon","Badge","Tooltip"],"mappings":";;;;;;;;AA0BO,MAAM,OAAO,MAAM,WAAyC,SAASA,MAAK,OAAO,KAAK;AACzF,QAAM,EAAE,UAAU,MAAM,OAAO,SAAS,GAAG,eAAe;AACpD,QAAA,EAAE,MAAM,IAAIC,6BAAgB;AAClC,QAAM,YAAY,GAAG,eAAe,IAAI,GAAG,YAAY,MAAM,SAAS;AAEtE,QAAM,OACD,sBAAA,cAAA,KAAA,EAAG,GAAG,YAAY,WAAsB,aAAU,eAAc,KAAU,UAAU,KAChF,2CAAQC,KAAAA,MAAK,EAAA,MAAM,KAAM,CAAA,IAAK,MAC9B,UACA,QACG,sBAAA;AAAA,IAACC,MAAA;AAAA,IAAA;AAAA,MACG,OAAM;AAAA,MACN,OAAK;AAAA,MACL,WAAU;AAAA,IAAA;AAAA,IACT,MAAM,OAAO;AAAA,MAElB,IACR;AAGJ,MAAI,SAAS;AACT,WAAQ,sBAAA,cAAAC,QAAA,SAAA,EAAQ,OAAO,QAAA,GAAU,IAAK;AAAA,EAAA;AAGnC,SAAA;AACX,CAAC;AAEY,MAAA,iBAAiB,CAAC,OAA6B,WACxD;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,IACI,2BAA2B;AAAA,IAC3B,yDAAyD,CAAC;AAAA,EAAA;AAElE;;;"}
|
|
@@ -25,7 +25,7 @@ const Link = React__default.forwardRef(function Link2(props, ref) {
|
|
|
25
25
|
const getLinkClasses = (icon = void 0) => cn(
|
|
26
26
|
"flex h-8 flex-shrink-0 flex-grow-0 cursor-pointer items-center justify-center ",
|
|
27
27
|
"focus:!shadow-none focus:!outline-none focus-visible:!yt-focus-dark",
|
|
28
|
-
"bg-transparent hover:bg-white
|
|
28
|
+
"bg-transparent hover:bg-white-subtle focus:bg-white-subtle aria-current-page:bg-white-subtle",
|
|
29
29
|
"!text-white hover:text-white focus:text-white",
|
|
30
30
|
{
|
|
31
31
|
"!rounded-full !h-9 !w-9": icon,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Link.js","sources":["../../../../src/components/Header/components/Link.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'clsx';\nimport { Icon, IconName } from '../../Icon/Icon';\nimport { Tooltip } from '../../Tooltip/Tooltip';\nimport { Badge } from '../../Badge/Badge';\nimport { useLocalization } from '../../Provider/Localization';\n\nexport type BaseLinkProps = React.AnchorHTMLAttributes<HTMLAnchorElement> & {\n tooltip?: string;\n};\n\ninterface LinkPropsWithoutIcon extends BaseLinkProps {\n children: JSX.Element | string;\n icon?: never;\n isNew?: never;\n}\n\ninterface LinkPropsWithIcon extends Omit<BaseLinkProps, 'aria-label'> {\n 'aria-label': string;\n children?: never;\n icon: IconName;\n isNew?: boolean;\n}\n\nexport type LinkProps = LinkPropsWithoutIcon | LinkPropsWithIcon;\n\nexport const Link = React.forwardRef<HTMLAnchorElement, LinkProps>(function Link(props, ref) {\n const { children, icon, isNew, tooltip, ...otherProps } = props;\n const { texts } = useLocalization();\n const className = cn(getLinkClasses(icon), 'relative', props.className);\n\n const link = (\n <a {...otherProps} className={className} data-taco=\"header-link\" ref={ref} tabIndex={0}>\n {icon ? <Icon name={icon} /> : null}\n {children}\n {isNew ? (\n <Badge\n color=\"blue\"\n small\n className=\"absolute right-0 top-0 -mr-2.5 -mt-1.5 !h-3 !px-0.5 text-[0.55rem] font-normal\">\n {texts.header.new}\n </Badge>\n ) : null}\n </a>\n );\n\n if (tooltip) {\n return <Tooltip title={tooltip}>{link}</Tooltip>;\n }\n\n return link;\n});\n\nexport const getLinkClasses = (icon: IconName | undefined = undefined) =>\n cn(\n 'flex h-8 flex-shrink-0 flex-grow-0 cursor-pointer items-center justify-center ',\n 'focus:!shadow-none focus:!outline-none focus-visible:!yt-focus-dark',\n 'bg-transparent hover:bg-white
|
|
1
|
+
{"version":3,"file":"Link.js","sources":["../../../../src/components/Header/components/Link.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'clsx';\nimport { Icon, IconName } from '../../Icon/Icon';\nimport { Tooltip } from '../../Tooltip/Tooltip';\nimport { Badge } from '../../Badge/Badge';\nimport { useLocalization } from '../../Provider/Localization';\n\nexport type BaseLinkProps = React.AnchorHTMLAttributes<HTMLAnchorElement> & {\n tooltip?: string;\n};\n\ninterface LinkPropsWithoutIcon extends BaseLinkProps {\n children: JSX.Element | string;\n icon?: never;\n isNew?: never;\n}\n\ninterface LinkPropsWithIcon extends Omit<BaseLinkProps, 'aria-label'> {\n 'aria-label': string;\n children?: never;\n icon: IconName;\n isNew?: boolean;\n}\n\nexport type LinkProps = LinkPropsWithoutIcon | LinkPropsWithIcon;\n\nexport const Link = React.forwardRef<HTMLAnchorElement, LinkProps>(function Link(props, ref) {\n const { children, icon, isNew, tooltip, ...otherProps } = props;\n const { texts } = useLocalization();\n const className = cn(getLinkClasses(icon), 'relative', props.className);\n\n const link = (\n <a {...otherProps} className={className} data-taco=\"header-link\" ref={ref} tabIndex={0}>\n {icon ? <Icon name={icon} /> : null}\n {children}\n {isNew ? (\n <Badge\n color=\"blue\"\n small\n className=\"absolute right-0 top-0 -mr-2.5 -mt-1.5 !h-3 !px-0.5 text-[0.55rem] font-normal\">\n {texts.header.new}\n </Badge>\n ) : null}\n </a>\n );\n\n if (tooltip) {\n return <Tooltip title={tooltip}>{link}</Tooltip>;\n }\n\n return link;\n});\n\nexport const getLinkClasses = (icon: IconName | undefined = undefined) =>\n cn(\n 'flex h-8 flex-shrink-0 flex-grow-0 cursor-pointer items-center justify-center ',\n 'focus:!shadow-none focus:!outline-none focus-visible:!yt-focus-dark',\n 'bg-transparent hover:bg-white-subtle focus:bg-white-subtle aria-current-page:bg-white-subtle',\n '!text-white hover:text-white focus:text-white',\n {\n '!rounded-full !h-9 !w-9': icon,\n 'whitespace-nowrap px-3 rounded text-sm hidden lg:flex': !icon,\n }\n );\n"],"names":["React","Link"],"mappings":";;;;;;AA0BO,MAAM,OAAOA,eAAM,WAAyC,SAASC,MAAK,OAAO,KAAK;AACzF,QAAM,EAAE,UAAU,MAAM,OAAO,SAAS,GAAG,eAAe;AACpD,QAAA,EAAE,MAAM,IAAI,gBAAgB;AAClC,QAAM,YAAY,GAAG,eAAe,IAAI,GAAG,YAAY,MAAM,SAAS;AAEtE,QAAM,OACDD,+BAAA,cAAA,KAAA,EAAG,GAAG,YAAY,WAAsB,aAAU,eAAc,KAAU,UAAU,KAChF,oDAAQ,MAAK,EAAA,MAAM,KAAM,CAAA,IAAK,MAC9B,UACA,QACGA,+BAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,OAAM;AAAA,MACN,OAAK;AAAA,MACL,WAAU;AAAA,IAAA;AAAA,IACT,MAAM,OAAO;AAAA,MAElB,IACR;AAGJ,MAAI,SAAS;AACT,WAAQA,+BAAA,cAAA,SAAA,EAAQ,OAAO,QAAA,GAAU,IAAK;AAAA,EAAA;AAGnC,SAAA;AACX,CAAC;AAEY,MAAA,iBAAiB,CAAC,OAA6B,WACxD;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,IACI,2BAA2B;AAAA,IAC3B,yDAAyD,CAAC;AAAA,EAAA;AAElE;"}
|
|
@@ -4,7 +4,7 @@ const React = require("react");
|
|
|
4
4
|
const cn = require("clsx");
|
|
5
5
|
const Logo = React.forwardRef(function Logo2(props, ref) {
|
|
6
6
|
const className = cn("h-7 w-7 m-1 self-center justify-self-center flex-shrink-0 flex-grow-0", props.className);
|
|
7
|
-
return /* @__PURE__ */ React.createElement("svg", { ...props, className, ref, viewBox: "0 0 28 28", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ React.createElement("g", { className: "fill-brand-
|
|
7
|
+
return /* @__PURE__ */ React.createElement("svg", { ...props, className, ref, viewBox: "0 0 28 28", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ React.createElement("g", { className: "fill-brand-sunset" }, /* @__PURE__ */ React.createElement("path", { d: "M3.2496172 16.0366c-1.44938-.2893-2.857854.6517-3.1442248 2.1011-.2863702 1.4493.6516388 2.8578 2.1010248 3.1442 1.44938.2893 2.85786-.6517 3.14423-2.101.28929-1.4465-.65164-2.855-2.10103-3.1443z" }), /* @__PURE__ */ React.createElement("path", { d: "M18.9911672 19.1692c-2.4137-.4792-4.7602 1.0871-5.2423 3.5037-.4793 2.4137 1.087 4.7602 3.5036 5.2423 2.4137.4793 4.7602-1.087 5.2424-3.5036.4792-2.4166-1.0871-4.7631-3.5037-5.2424z" }), /* @__PURE__ */ React.createElement("path", { d: "M23.6958672.105135c-2.8988-.578585-5.7157 1.303275-6.2943 4.199125l-.5172 2.62116c-.3828 1.93446-2.2647 3.19098-4.1992 2.80819l-1.7474-.35651c-1.92569-.3828-3.18221-2.25589-2.79941-4.19035l.08766-.43832c.33021-1.68608-.7656-3.33417-2.45168-3.66438-1.69776-.336043-3.33709.75976-3.67606 2.45461-.33897 1.68607.76561 3.3254 2.45168 3.66437l.43833.09058c1.93446.3828 3.19098 2.26467 2.79941 4.19039l-.16948.8737c-.3828 1.9345.87372 3.8163 2.79945 4.1991 1.9344.3828 3.8163-.8737 4.1991-2.8082l.1695-.8737c.3828-1.9257 2.2646-3.1822 4.1903-2.7994l2.63.526c2.8987.5698 5.7157-1.31206 6.2855-4.20791.5844-2.90169-1.2974-5.718636-4.1962-6.288455z" })));
|
|
8
8
|
});
|
|
9
9
|
const LogoLegacy = React.forwardRef(function Logo3(props, ref) {
|
|
10
10
|
const className = cn("-mr-[156px] xs:-mr-14 md:!mr-0 h-9 shrink-0 w-[180px] px-1", props.className);
|