@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.
Files changed (188) hide show
  1. package/dist/charts/components/useChartData.cjs +2 -2
  2. package/dist/charts/components/useChartData.cjs.map +1 -1
  3. package/dist/charts/components/useChartData.js +2 -2
  4. package/dist/charts/components/useChartData.js.map +1 -1
  5. package/dist/components/Backdrop/Backdrop.cjs +1 -1
  6. package/dist/components/Backdrop/Backdrop.cjs.map +1 -1
  7. package/dist/components/Backdrop/Backdrop.js +1 -1
  8. package/dist/components/Backdrop/Backdrop.js.map +1 -1
  9. package/dist/components/Button/util.cjs +3 -3
  10. package/dist/components/Button/util.cjs.map +1 -1
  11. package/dist/components/Button/util.js +3 -3
  12. package/dist/components/Button/util.js.map +1 -1
  13. package/dist/components/Card/Card.cjs +1 -1
  14. package/dist/components/Card/Card.cjs.map +1 -1
  15. package/dist/components/Card/Card.js +1 -1
  16. package/dist/components/Card/Card.js.map +1 -1
  17. package/dist/components/Checkbox/Checkbox.cjs +2 -2
  18. package/dist/components/Checkbox/Checkbox.cjs.map +1 -1
  19. package/dist/components/Checkbox/Checkbox.js +2 -2
  20. package/dist/components/Checkbox/Checkbox.js.map +1 -1
  21. package/dist/components/Datepicker/Datepicker.cjs +2 -2
  22. package/dist/components/Datepicker/Datepicker.cjs.map +1 -1
  23. package/dist/components/Datepicker/Datepicker.js +2 -2
  24. package/dist/components/Datepicker/Datepicker.js.map +1 -1
  25. package/dist/components/Drawer/components/Content.cjs +3 -3
  26. package/dist/components/Drawer/components/Content.cjs.map +1 -1
  27. package/dist/components/Drawer/components/Content.js +3 -3
  28. package/dist/components/Drawer/components/Content.js.map +1 -1
  29. package/dist/components/Drawer/util.cjs +1 -1
  30. package/dist/components/Drawer/util.cjs.map +1 -1
  31. package/dist/components/Drawer/util.js +1 -1
  32. package/dist/components/Drawer/util.js.map +1 -1
  33. package/dist/components/Field/Field.cjs +1 -1
  34. package/dist/components/Field/Field.cjs.map +1 -1
  35. package/dist/components/Field/Field.js +1 -1
  36. package/dist/components/Field/Field.js.map +1 -1
  37. package/dist/components/Hanger/Arrow.cjs +4 -3
  38. package/dist/components/Hanger/Arrow.cjs.map +1 -1
  39. package/dist/components/Hanger/Arrow.js +3 -3
  40. package/dist/components/Hanger/Arrow.js.map +1 -1
  41. package/dist/components/Hanger/Hanger.cjs +36 -33
  42. package/dist/components/Hanger/Hanger.cjs.map +1 -1
  43. package/dist/components/Hanger/Hanger.d.ts +1 -1
  44. package/dist/components/Hanger/Hanger.js +35 -33
  45. package/dist/components/Hanger/Hanger.js.map +1 -1
  46. package/dist/components/Header/Header.cjs +1 -1
  47. package/dist/components/Header/Header.cjs.map +1 -1
  48. package/dist/components/Header/Header.js +1 -1
  49. package/dist/components/Header/Header.js.map +1 -1
  50. package/dist/components/Header/components/AgreementSelector.cjs +5 -5
  51. package/dist/components/Header/components/AgreementSelector.cjs.map +1 -1
  52. package/dist/components/Header/components/AgreementSelector.js +5 -5
  53. package/dist/components/Header/components/AgreementSelector.js.map +1 -1
  54. package/dist/components/Header/components/Button.cjs +1 -1
  55. package/dist/components/Header/components/Button.cjs.map +1 -1
  56. package/dist/components/Header/components/Button.js +1 -1
  57. package/dist/components/Header/components/Button.js.map +1 -1
  58. package/dist/components/Header/components/Link.cjs +1 -1
  59. package/dist/components/Header/components/Link.cjs.map +1 -1
  60. package/dist/components/Header/components/Link.js +1 -1
  61. package/dist/components/Header/components/Link.js.map +1 -1
  62. package/dist/components/Header/components/Logo.cjs +1 -1
  63. package/dist/components/Header/components/Logo.cjs.map +1 -1
  64. package/dist/components/Header/components/Logo.js +1 -1
  65. package/dist/components/Header/components/Logo.js.map +1 -1
  66. package/dist/components/Header/components/MenuButton.cjs +1 -1
  67. package/dist/components/Header/components/MenuButton.cjs.map +1 -1
  68. package/dist/components/Header/components/MenuButton.js +1 -1
  69. package/dist/components/Header/components/MenuButton.js.map +1 -1
  70. package/dist/components/Header/components/PrimaryNavigation.cjs +1 -1
  71. package/dist/components/Header/components/PrimaryNavigation.cjs.map +1 -1
  72. package/dist/components/Header/components/PrimaryNavigation.js +1 -1
  73. package/dist/components/Header/components/PrimaryNavigation.js.map +1 -1
  74. package/dist/components/HoverCard/HoverCard.cjs +2 -2
  75. package/dist/components/HoverCard/HoverCard.cjs.map +1 -1
  76. package/dist/components/HoverCard/HoverCard.js +2 -2
  77. package/dist/components/HoverCard/HoverCard.js.map +1 -1
  78. package/dist/components/Input/util.cjs +7 -7
  79. package/dist/components/Input/util.cjs.map +1 -1
  80. package/dist/components/Input/util.js +7 -7
  81. package/dist/components/Input/util.js.map +1 -1
  82. package/dist/components/Layout/components/Sidebar.cjs +2 -2
  83. package/dist/components/Layout/components/Sidebar.cjs.map +1 -1
  84. package/dist/components/Layout/components/Sidebar.js +2 -2
  85. package/dist/components/Layout/components/Sidebar.js.map +1 -1
  86. package/dist/components/Menu/components/Item.cjs +1 -1
  87. package/dist/components/Menu/components/Item.cjs.map +1 -1
  88. package/dist/components/Menu/components/Item.js +1 -1
  89. package/dist/components/Menu/components/Item.js.map +1 -1
  90. package/dist/components/Navigation2/Navigation2.cjs +1 -1
  91. package/dist/components/Navigation2/Navigation2.cjs.map +1 -1
  92. package/dist/components/Navigation2/Navigation2.js +1 -1
  93. package/dist/components/Navigation2/Navigation2.js.map +1 -1
  94. package/dist/components/Navigation2/components/Content.cjs +1 -1
  95. package/dist/components/Navigation2/components/Content.cjs.map +1 -1
  96. package/dist/components/Navigation2/components/Content.js +1 -1
  97. package/dist/components/Navigation2/components/Content.js.map +1 -1
  98. package/dist/components/Navigation2/components/Group.cjs +1 -1
  99. package/dist/components/Navigation2/components/Group.cjs.map +1 -1
  100. package/dist/components/Navigation2/components/Group.js +1 -1
  101. package/dist/components/Navigation2/components/Group.js.map +1 -1
  102. package/dist/components/Navigation2/components/Link.cjs +1 -1
  103. package/dist/components/Navigation2/components/Link.cjs.map +1 -1
  104. package/dist/components/Navigation2/components/Link.js +1 -1
  105. package/dist/components/Navigation2/components/Link.js.map +1 -1
  106. package/dist/components/Navigation2/components/Section.cjs +1 -1
  107. package/dist/components/Navigation2/components/Section.cjs.map +1 -1
  108. package/dist/components/Navigation2/components/Section.js +1 -1
  109. package/dist/components/Navigation2/components/Section.js.map +1 -1
  110. package/dist/components/SearchInput2/SearchInput2.cjs +4 -4
  111. package/dist/components/SearchInput2/SearchInput2.cjs.map +1 -1
  112. package/dist/components/SearchInput2/SearchInput2.js +4 -4
  113. package/dist/components/SearchInput2/SearchInput2.js.map +1 -1
  114. package/dist/components/Select/useSelect.cjs.map +1 -1
  115. package/dist/components/Select/useSelect.d.ts +2 -2
  116. package/dist/components/Select/useSelect.js.map +1 -1
  117. package/dist/components/Select2/Select2.cjs +1 -1
  118. package/dist/components/Select2/Select2.cjs.map +1 -1
  119. package/dist/components/Select2/Select2.js +1 -1
  120. package/dist/components/Select2/Select2.js.map +1 -1
  121. package/dist/components/Select2/components/Option.cjs +1 -1
  122. package/dist/components/Select2/components/Option.cjs.map +1 -1
  123. package/dist/components/Select2/components/Option.js +1 -1
  124. package/dist/components/Select2/components/Option.js.map +1 -1
  125. package/dist/components/Select2/utilities.cjs +2 -2
  126. package/dist/components/Select2/utilities.cjs.map +1 -1
  127. package/dist/components/Select2/utilities.js +2 -2
  128. package/dist/components/Select2/utilities.js.map +1 -1
  129. package/dist/components/Shortcut/Shortcut.cjs +1 -1
  130. package/dist/components/Shortcut/Shortcut.cjs.map +1 -1
  131. package/dist/components/Shortcut/Shortcut.js +1 -1
  132. package/dist/components/Shortcut/Shortcut.js.map +1 -1
  133. package/dist/components/Switch/Switch.cjs +2 -2
  134. package/dist/components/Switch/Switch.cjs.map +1 -1
  135. package/dist/components/Switch/Switch.js +2 -2
  136. package/dist/components/Switch/Switch.js.map +1 -1
  137. package/dist/components/Table/components/BaseTable.cjs +1 -1
  138. package/dist/components/Table/components/BaseTable.cjs.map +1 -1
  139. package/dist/components/Table/components/BaseTable.js +1 -1
  140. package/dist/components/Table/components/BaseTable.js.map +1 -1
  141. package/dist/components/Table/util/renderRow.cjs +2 -2
  142. package/dist/components/Table/util/renderRow.cjs.map +1 -1
  143. package/dist/components/Table/util/renderRow.js +2 -2
  144. package/dist/components/Table/util/renderRow.js.map +1 -1
  145. package/dist/components/Table3/components/Row/Editing/CreateNewRow.cjs +1 -1
  146. package/dist/components/Table3/components/Row/Editing/CreateNewRow.cjs.map +1 -1
  147. package/dist/components/Table3/components/Row/Editing/CreateNewRow.js +1 -1
  148. package/dist/components/Table3/components/Row/Editing/CreateNewRow.js.map +1 -1
  149. package/dist/components/Table3/components/Row/Editing/TemporaryRow.cjs +1 -1
  150. package/dist/components/Table3/components/Row/Editing/TemporaryRow.cjs.map +1 -1
  151. package/dist/components/Table3/components/Row/Editing/TemporaryRow.js +1 -1
  152. package/dist/components/Table3/components/Row/Editing/TemporaryRow.js.map +1 -1
  153. package/dist/components/Table3/components/Toolbar/Editing/Editing.cjs +1 -1
  154. package/dist/components/Table3/components/Toolbar/Editing/Editing.cjs.map +1 -1
  155. package/dist/components/Table3/components/Toolbar/Editing/Editing.js +1 -1
  156. package/dist/components/Table3/components/Toolbar/Editing/Editing.js.map +1 -1
  157. package/dist/components/Tabs/components/TabList.cjs +1 -1
  158. package/dist/components/Tabs/components/TabList.cjs.map +1 -1
  159. package/dist/components/Tabs/components/TabList.js +1 -1
  160. package/dist/components/Tabs/components/TabList.js.map +1 -1
  161. package/dist/components/Tabs/components/Trigger.cjs +1 -1
  162. package/dist/components/Tabs/components/Trigger.cjs.map +1 -1
  163. package/dist/components/Tabs/components/Trigger.js +1 -1
  164. package/dist/components/Tabs/components/Trigger.js.map +1 -1
  165. package/dist/components/Tag/Tag.cjs +1 -1
  166. package/dist/components/Tag/Tag.cjs.map +1 -1
  167. package/dist/components/Tag/Tag.js +1 -1
  168. package/dist/components/Tag/Tag.js.map +1 -1
  169. package/dist/components/Toast/Toast.cjs +4 -4
  170. package/dist/components/Toast/Toast.cjs.map +1 -1
  171. package/dist/components/Toast/Toast.js +4 -4
  172. package/dist/components/Toast/Toast.js.map +1 -1
  173. package/dist/components/Tooltip/Tooltip.cjs +4 -4
  174. package/dist/components/Tooltip/Tooltip.cjs.map +1 -1
  175. package/dist/components/Tooltip/Tooltip.js +4 -4
  176. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  177. package/dist/taco.css +63 -79
  178. package/dist/tailwind.colors.cjs +156 -95
  179. package/dist/tailwind.colors.cjs.map +1 -1
  180. package/dist/tailwind.colors.js +156 -95
  181. package/dist/tailwind.colors.js.map +1 -1
  182. package/dist/utils/tailwind.cjs +26 -26
  183. package/dist/utils/tailwind.cjs.map +1 -1
  184. package/dist/utils/tailwind.js +26 -26
  185. package/dist/utils/tailwind.js.map +1 -1
  186. package/package.json +6 -5
  187. package/tailwind.colors.js +206 -95
  188. 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 { Popover } from "@base-ui/react/popover";
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
- const { anchorRef, ref: parentRef, props: parentProps } = React.useContext(HangerContext);
17
- const refCallback = mergeRefs([anchorRef, parentRef, externalRef]);
18
- return /* @__PURE__ */ React.createElement("span", { ...parentProps, ...props, ref: refCallback });
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, ...popoverContentProps } = props;
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
- return /* @__PURE__ */ React.createElement(Popover.Portal, { container }, /* @__PURE__ */ React.createElement(
33
- Popover.Positioner,
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
- anchor: context.anchorRef,
36
- className: hideWhenDetached ? "data-[anchor-hidden]:hidden" : void 0,
45
+ className,
46
+ "data-taco": "hanger",
47
+ onInteractOutside: handleInteractOutside,
37
48
  side,
38
- sideOffset: 11
49
+ sideOffset: 1,
50
+ ref,
51
+ hideWhenDetached
39
52
  },
40
- /* @__PURE__ */ React.createElement(Popover.Popup, { ...popoverContentProps, className, "data-taco": "hanger", ref }, props.children, /* @__PURE__ */ React.createElement(UnstyledArrow, { className: "text-blue-500" }), /* @__PURE__ */ React.createElement(
41
- Popover.Close,
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
- render: /* @__PURE__ */ React.createElement(
44
- IconButton,
45
- {
46
- appearance: "primary",
47
- "aria-label": texts.hanger.close,
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 anchorRef = React.useRef(null);
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
- const handleOpenChange = (nextOpen, eventDetails) => {
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 { Popover as PopoverPrimitive } from '@base-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, unknown>;\n ref: React.Ref<HTMLElement>;\n anchorRef: React.RefObject<HTMLElement>;\n};\nconst HangerContext = React.createContext<HangerContextValue>({\n anchorRef: { current: null },\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<HTMLElement>;\nconst Anchor = React.forwardRef(function HangerAnchor(props: HangerAnchorProps, externalRef: React.Ref<HTMLSpanElement>) {\n const { anchorRef, ref: parentRef, props: parentProps } = React.useContext(HangerContext);\n const refCallback = mergeRefs([anchorRef, parentRef, externalRef]);\n\n // Plain inline <span> wrapper: gives us a measurable DOM node for `anchorRef` regardless of\n // what the child is (host element, forwardRef that drops refs, etc.), while still\n // participating in flex layout so OverflowGroup's IntersectionObserver and `order` work.\n return <span {...parentProps} {...props} ref={refCallback} />;\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, ...popoverContentProps } = 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\n return (\n <PopoverPrimitive.Portal container={container}>\n <PopoverPrimitive.Positioner\n anchor={context.anchorRef}\n className={hideWhenDetached ? 'data-[anchor-hidden]:hidden' : undefined}\n side={side}\n sideOffset={11}>\n <PopoverPrimitive.Popup {...popoverContentProps} className={className} data-taco=\"hanger\" ref={ref}>\n {props.children}\n <UnstyledArrow className=\"text-blue-500\" />\n <PopoverPrimitive.Close\n render={\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 }\n />\n </PopoverPrimitive.Popup>\n </PopoverPrimitive.Positioner>\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 anchorRef = React.useRef<HTMLElement>(null);\n const context = React.useMemo(() => ({ anchorRef, onClose, props: otherProps, ref }), [onClose, otherProps, ref]);\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 // Hanger should only close from its close button, matching the previous Radix onInteractOutside behavior.\n const handleOpenChange = (nextOpen: boolean, eventDetails: PopoverPrimitive.Root.ChangeEventDetails) => {\n if (!nextOpen && (eventDetails.reason === 'outside-press' || eventDetails.reason === 'focus-out')) {\n eventDetails.cancel();\n return;\n }\n\n setOpen(nextOpen);\n };\n\n return (\n <HangerContext.Provider value={context}>\n <PopoverPrimitive.Root open={open} onOpenChange={handleOpenChange}>\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":["PopoverPrimitive","Hanger"],"mappings":";;;;;;;;AAkBA,MAAM,gBAAgB,MAAM,cAAkC;AAAA,EAC1D,WAAW,EAAE,SAAS,KAAK;AAAA,EAC3B,SAAS;AAAA,EACT,OAAO,CAAC;AAAA,EACR,KAAK;AACT,CAAC;AAQD,MAAM,SAAS,MAAM,WAAW,SAAS,aAAa,OAA0B,aAAyC;AAC/G,QAAA,EAAE,WAAW,KAAK,WAAW,OAAO,gBAAgB,MAAM,WAAW,aAAa;AACxF,QAAM,cAAc,UAAU,CAAC,WAAW,WAAW,WAAW,CAAC;AAKjE,6CAAQ,QAAM,EAAA,GAAG,aAAc,GAAG,OAAO,KAAK,aAAa;AAC/D,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;AACzG,QAAA,EAAE,WAAW,MAAM,mBAAmB,OAAO,WAAW,GAAG,wBAAwB;AACnF,QAAA,UAAU,MAAM,WAAW,aAAa;AACxC,QAAA,EAAE,MAAM,IAAI,gBAAgB;AAClC,QAAM,YAAY;AAAA,IACd;AAAA,IACA,MAAM;AAAA,EACV;AAEA,SACK,sBAAA,cAAAA,QAAiB,QAAjB,EAAwB,UACrB,GAAA,sBAAA;AAAA,IAACA,QAAiB;AAAA,IAAjB;AAAA,MACG,QAAQ,QAAQ;AAAA,MAChB,WAAW,mBAAmB,gCAAgC;AAAA,MAC9D;AAAA,MACA,YAAY;AAAA,IAAA;AAAA,wCACXA,QAAiB,OAAjB,EAAwB,GAAG,qBAAqB,WAAsB,aAAU,UAAS,IAAA,GACrF,MAAM,UACP,sBAAA,cAAC,eAAc,EAAA,WAAU,iBAAgB,GACzC,sBAAA;AAAA,MAACA,QAAiB;AAAA,MAAjB;AAAA,QACG,QACI,sBAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACG,YAAW;AAAA,YACX,cAAY,MAAM,OAAO;AAAA,YACzB,WAAU;AAAA,YACV,MAAK;AAAA,YACL,SAAS,QAAQ;AAAA,UAAA;AAAA,QAAA;AAAA,MACrB;AAAA,IAGZ,CAAA;AAAA,EAAA,CAER;AAER,CAAC;AAoBM,MAAM,SAAS,MAAM,WAAqC,SAASC,QAAO,OAAO,KAAK;AACnF,QAAA,EAAE,QAAQ,UAAU,cAAc,MAAM,SAAS,GAAG,eAAe;AACnE,QAAA,YAAY,MAAM,OAAoB,IAAI;AAChD,QAAM,UAAU,MAAM,QAAQ,OAAO,EAAE,WAAW,SAAS,OAAO,YAAY,IAAQ,IAAA,CAAC,SAAS,YAAY,GAAG,CAAC;AAGhH,QAAM,CAAC,MAAM,OAAO,IAAI,MAAM,SAAS,KAAK;AAC5C,QAAM,UAAU,MAAM;AAClB,QAAI,aAAa;AACb,cAAQ,WAAW;AAAA,IAAA;AAAA,EAE3B,GAAG,EAAE;AAGC,QAAA,mBAAmB,CAAC,UAAmB,iBAA2D;AACpG,QAAI,CAAC,aAAa,aAAa,WAAW,mBAAmB,aAAa,WAAW,cAAc;AAC/F,mBAAa,OAAO;AACpB;AAAA,IAAA;AAGJ,YAAQ,QAAQ;AAAA,EACpB;AAEA,6CACK,cAAc,UAAd,EAAuB,OAAO,+CAC1BD,QAAiB,MAAjB,EAAsB,MAAY,cAAc,oBAC5C,UAAU,sBAAA,cAAC,cAAQ,MAAO,GAC1B,QACL,CACJ;AAER,CAAC;AACD,OAAO,SAAS;AAChB,OAAO,UAAU;AACjB,OAAO,QAAQ;"}
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-blue-900 flex h-16 w-full shrink-0 items-center gap-2 pl-4",
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-blue-900 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;;"}
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-blue-900 flex h-16 w-full shrink-0 items-center gap-2 pl-4",
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-blue-900 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;"}
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 bg-blue-900" }, /* @__PURE__ */ React.createElement(
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 !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",
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 !bg-white/[0.08] !text-white hover:!bg-white/[0.16]",
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 bg-white/[0.08]" }), /* @__PURE__ */ React.createElement(
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 bg-white/[0.08] xl:hover:bg-white/[0.16] [[aria-current='true']>&]:bg-white/[0.16]",
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 bg-blue-900" }, /* @__PURE__ */ React__default.createElement(
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 !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",
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 !bg-white/[0.08] !text-white hover:!bg-white/[0.16]",
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 bg-white/[0.08]" }), /* @__PURE__ */ React__default.createElement(
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 bg-white/[0.08] xl:hover:bg-white/[0.16] [[aria-current='true']>&]:bg-white/[0.16]",
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/[.08] focus:bg-white/[.08] aria-current-page:bg-white/[.08]",
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/[.08] focus:bg-white/[.08] aria-current-page:bg-white/[.08]',\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;;;"}
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/[.08] focus:bg-white/[.08] aria-current-page:bg-white/[.08]",
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/[.08] focus:bg-white/[.08] aria-current-page:bg-white/[.08]',\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;"}
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/[.08] focus:bg-white/[.08] aria-current-page:bg-white/[.08]",
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/[.08] focus:bg-white/[.08] aria-current-page:bg-white/[.08]',\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;;;"}
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/[.08] focus:bg-white/[.08] aria-current-page:bg-white/[.08]",
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/[.08] focus:bg-white/[.08] aria-current-page:bg-white/[.08]',\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;"}
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-sunsetOrange" }, /* @__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" })));
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);