@bitrise/bitkit-v2 0.3.481-beta.3099 → 0.3.481-beta.3103

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 (140) hide show
  1. package/dist/components/BitkitCalendar/BitkitCalendar.d.ts +0 -12
  2. package/dist/components/BitkitCalendar/BitkitCalendar.js +1 -7
  3. package/dist/components/BitkitCalendar/BitkitCalendar.js.map +1 -1
  4. package/dist/components/BitkitCalendar/components/CalendarContent.d.ts +1 -5
  5. package/dist/components/BitkitCalendar/components/CalendarContent.js +43 -60
  6. package/dist/components/BitkitCalendar/components/CalendarContent.js.map +1 -1
  7. package/dist/components/BitkitCalendar/components/CalendarMonth.d.ts +2 -4
  8. package/dist/components/BitkitCalendar/components/CalendarMonth.js +5 -15
  9. package/dist/components/BitkitCalendar/components/CalendarMonth.js.map +1 -1
  10. package/dist/components/BitkitCalendar/components/CalendarMonthSelect.d.ts +1 -2
  11. package/dist/components/BitkitCalendar/components/CalendarMonthSelect.js +2 -3
  12. package/dist/components/BitkitCalendar/components/CalendarMonthSelect.js.map +1 -1
  13. package/dist/components/BitkitCalendar/components/CalendarNextTrigger.d.ts +1 -3
  14. package/dist/components/BitkitCalendar/components/CalendarNextTrigger.js +3 -3
  15. package/dist/components/BitkitCalendar/components/CalendarNextTrigger.js.map +1 -1
  16. package/dist/components/BitkitCalendar/components/CalendarPrevTrigger.d.ts +1 -3
  17. package/dist/components/BitkitCalendar/components/CalendarPrevTrigger.js +3 -3
  18. package/dist/components/BitkitCalendar/components/CalendarPrevTrigger.js.map +1 -1
  19. package/dist/components/BitkitCalendar/components/CalendarSelect.d.ts +0 -1
  20. package/dist/components/BitkitCalendar/components/CalendarSelect.js +3 -5
  21. package/dist/components/BitkitCalendar/components/CalendarSelect.js.map +1 -1
  22. package/dist/components/BitkitCalendar/components/CalendarTrigger.js +0 -1
  23. package/dist/components/BitkitCalendar/components/CalendarTrigger.js.map +1 -1
  24. package/dist/components/BitkitCalendar/components/CalendarYearSelect.d.ts +1 -2
  25. package/dist/components/BitkitCalendar/components/CalendarYearSelect.js +2 -3
  26. package/dist/components/BitkitCalendar/components/CalendarYearSelect.js.map +1 -1
  27. package/dist/components/BitkitDatePicker/BitkitDatePicker.d.ts +0 -2
  28. package/dist/components/BitkitDatePicker/BitkitDatePicker.js +1 -2
  29. package/dist/components/BitkitDatePicker/BitkitDatePicker.js.map +1 -1
  30. package/dist/components/BitkitLabelTooltip/BitkitLabelTooltip.d.ts +3 -4
  31. package/dist/components/BitkitLabelTooltip/BitkitLabelTooltip.js +2 -3
  32. package/dist/components/BitkitLabelTooltip/BitkitLabelTooltip.js.map +1 -1
  33. package/dist/components/BitkitMarkdown/BitkitMarkdown.js +1 -1
  34. package/dist/components/BitkitNoteCard/BitkitNoteCard.js +1 -1
  35. package/dist/components/BitkitPageSidebar/BitkitPageSidebar.js +1 -1
  36. package/dist/components/BitkitUIHeader/BitkitUIHeader.d.ts +41 -0
  37. package/dist/components/BitkitUIHeader/BitkitUIHeader.js +101 -0
  38. package/dist/components/BitkitUIHeader/BitkitUIHeader.js.map +1 -0
  39. package/dist/components/BitkitUIHeader/BitriseLogo.d.ts +10 -0
  40. package/dist/components/BitkitUIHeader/BitriseLogo.js +86 -0
  41. package/dist/components/BitkitUIHeader/BitriseLogo.js.map +1 -0
  42. package/dist/components/BitkitUIHeader/UIHeaderAccount.d.ts +26 -0
  43. package/dist/components/BitkitUIHeader/UIHeaderAccount.js +38 -0
  44. package/dist/components/BitkitUIHeader/UIHeaderAccount.js.map +1 -0
  45. package/dist/components/BitkitUIHeader/UIHeaderButton.d.ts +34 -0
  46. package/dist/components/BitkitUIHeader/UIHeaderButton.js +43 -0
  47. package/dist/components/BitkitUIHeader/UIHeaderButton.js.map +1 -0
  48. package/dist/components/BitkitUIHeader/UIHeaderContext.d.ts +13 -0
  49. package/dist/components/BitkitUIHeader/UIHeaderContext.js +11 -0
  50. package/dist/components/BitkitUIHeader/UIHeaderContext.js.map +1 -0
  51. package/dist/components/BitkitUIHeader/UIHeaderControl.d.ts +65 -0
  52. package/dist/components/BitkitUIHeader/UIHeaderControl.js +69 -0
  53. package/dist/components/BitkitUIHeader/UIHeaderControl.js.map +1 -0
  54. package/dist/components/BitkitUIHeader/UIHeaderNavButton.d.ts +20 -0
  55. package/dist/components/BitkitUIHeader/UIHeaderNavButton.js +46 -0
  56. package/dist/components/BitkitUIHeader/UIHeaderNavButton.js.map +1 -0
  57. package/dist/components/BitkitUIHeader/UIHeaderSearch.d.ts +32 -0
  58. package/dist/components/BitkitUIHeader/UIHeaderSearch.js +115 -0
  59. package/dist/components/BitkitUIHeader/UIHeaderSearch.js.map +1 -0
  60. package/dist/components/index.d.ts +1 -6
  61. package/dist/main.js +9 -8
  62. package/dist/theme/recipes/UIHeaderButton.recipe.js +103 -0
  63. package/dist/theme/recipes/UIHeaderButton.recipe.js.map +1 -0
  64. package/dist/theme/recipes/index.js +3 -1
  65. package/dist/theme/recipes/index.js.map +1 -1
  66. package/dist/theme/semantic-tokens/index.d.ts +5 -0
  67. package/dist/theme/semantic-tokens/semanticColors.d.ts +5 -0
  68. package/dist/theme/semantic-tokens/semanticColors.js +1 -0
  69. package/dist/theme/semantic-tokens/semanticColors.js.map +1 -1
  70. package/dist/theme/slot-recipes/DatePicker.recipe.d.ts +0 -15
  71. package/dist/theme/slot-recipes/DatePicker.recipe.js +22 -72
  72. package/dist/theme/slot-recipes/DatePicker.recipe.js.map +1 -1
  73. package/dist/theme/slot-recipes/DatePickerSelect.recipe.d.ts +0 -85
  74. package/dist/theme/slot-recipes/DatePickerSelect.recipe.js +10 -35
  75. package/dist/theme/slot-recipes/DatePickerSelect.recipe.js.map +1 -1
  76. package/dist/theme/slot-recipes/Menu.recipe.js +1 -6
  77. package/dist/theme/slot-recipes/Menu.recipe.js.map +1 -1
  78. package/dist/theme/slot-recipes/Tag.recipe.d.ts +1 -1
  79. package/dist/theme/slot-recipes/UIHeader.recipe.d.ts +14 -0
  80. package/dist/theme/slot-recipes/UIHeader.recipe.js +253 -0
  81. package/dist/theme/slot-recipes/UIHeader.recipe.js.map +1 -0
  82. package/dist/theme/slot-recipes/UISideNav.recipe.d.ts +1 -2
  83. package/dist/theme/slot-recipes/UISideNav.recipe.js +2 -3
  84. package/dist/theme/slot-recipes/UISideNav.recipe.js.map +1 -1
  85. package/dist/theme/slot-recipes/index.d.ts +3 -158
  86. package/dist/theme/slot-recipes/index.js +2 -4
  87. package/dist/theme/slot-recipes/index.js.map +1 -1
  88. package/dist/theme/themeUtils.d.ts +6 -0
  89. package/dist/theme/themeUtils.js +7 -1
  90. package/dist/theme/themeUtils.js.map +1 -1
  91. package/dist/utilities/BitkitPortalContext.js +2 -3
  92. package/dist/utilities/BitkitPortalContext.js.map +1 -1
  93. package/docs/v1-to-v2-migration-guide.md +1 -48
  94. package/package.json +1 -1
  95. package/dist/components/BitkitFilter/BitkitFilter.context.d.ts +0 -65
  96. package/dist/components/BitkitFilter/BitkitFilter.context.js +0 -82
  97. package/dist/components/BitkitFilter/BitkitFilter.context.js.map +0 -1
  98. package/dist/components/BitkitFilter/BitkitFilter.d.ts +0 -54
  99. package/dist/components/BitkitFilter/BitkitFilter.js +0 -243
  100. package/dist/components/BitkitFilter/BitkitFilter.js.map +0 -1
  101. package/dist/components/BitkitFilter/BitkitFilter.utils.d.ts +0 -18
  102. package/dist/components/BitkitFilter/BitkitFilter.utils.js +0 -42
  103. package/dist/components/BitkitFilter/BitkitFilter.utils.js.map +0 -1
  104. package/dist/components/BitkitFilter/BitkitFilterAdd.d.ts +0 -18
  105. package/dist/components/BitkitFilter/BitkitFilterAdd.js +0 -200
  106. package/dist/components/BitkitFilter/BitkitFilterAdd.js.map +0 -1
  107. package/dist/components/BitkitFilter/BitkitFilterDateRange.d.ts +0 -26
  108. package/dist/components/BitkitFilter/BitkitFilterDateRange.js +0 -118
  109. package/dist/components/BitkitFilter/BitkitFilterDateRange.js.map +0 -1
  110. package/dist/components/BitkitFilter/BitkitFilterSearch.d.ts +0 -23
  111. package/dist/components/BitkitFilter/BitkitFilterSearch.js +0 -72
  112. package/dist/components/BitkitFilter/BitkitFilterSearch.js.map +0 -1
  113. package/dist/components/BitkitFilter/BitkitFilterSelect.d.ts +0 -61
  114. package/dist/components/BitkitFilter/BitkitFilterSelect.js +0 -149
  115. package/dist/components/BitkitFilter/BitkitFilterSelect.js.map +0 -1
  116. package/dist/components/BitkitFilter/BitkitFilterSwitch.d.ts +0 -28
  117. package/dist/components/BitkitFilter/BitkitFilterSwitch.js +0 -87
  118. package/dist/components/BitkitFilter/BitkitFilterSwitch.js.map +0 -1
  119. package/dist/components/BitkitFilter/components/FilterChip.d.ts +0 -23
  120. package/dist/components/BitkitFilter/components/FilterChip.js +0 -66
  121. package/dist/components/BitkitFilter/components/FilterChip.js.map +0 -1
  122. package/dist/components/BitkitFilter/components/FilterField.d.ts +0 -15
  123. package/dist/components/BitkitFilter/components/FilterField.js +0 -60
  124. package/dist/components/BitkitFilter/components/FilterField.js.map +0 -1
  125. package/dist/components/BitkitFilter/components/FilterPanel.d.ts +0 -42
  126. package/dist/components/BitkitFilter/components/FilterPanel.js +0 -126
  127. package/dist/components/BitkitFilter/components/FilterPanel.js.map +0 -1
  128. package/dist/components/BitkitFilter/components/FilterSearchInput.d.ts +0 -15
  129. package/dist/components/BitkitFilter/components/FilterSearchInput.js +0 -41
  130. package/dist/components/BitkitFilter/components/FilterSearchInput.js.map +0 -1
  131. package/dist/components/BitkitFilter/components/FilterSelectForm.d.ts +0 -45
  132. package/dist/components/BitkitFilter/components/FilterSelectForm.js +0 -342
  133. package/dist/components/BitkitFilter/components/FilterSelectForm.js.map +0 -1
  134. package/dist/theme/recipes/index.d.ts +0 -525
  135. package/dist/theme/slot-recipes/Filter.recipe.d.ts +0 -35
  136. package/dist/theme/slot-recipes/Filter.recipe.js +0 -652
  137. package/dist/theme/slot-recipes/Filter.recipe.js.map +0 -1
  138. package/dist/theme/slot-recipes/Listbox.recipe.d.ts +0 -22
  139. package/dist/theme/slot-recipes/Listbox.recipe.js +0 -108
  140. package/dist/theme/slot-recipes/Listbox.recipe.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UIHeaderContext.js","names":[],"sources":["../../../lib/components/BitkitUIHeader/UIHeaderContext.tsx"],"sourcesContent":["// eslint-disable-next-line no-restricted-imports\nimport { createContext } from '@chakra-ui/react';\nimport { type SystemStyleObject } from '@chakra-ui/react/styled-system';\nimport { type RefObject } from 'react';\n\nexport interface UIHeaderContextValue {\n /**\n * The bar itself, without the banner below it. The search reads it to tell a press on another\n * control — which dismisses the open field — from one on anything the consumer rendered, whether\n * that is elsewhere on the page or in the header's own banner.\n */\n barRef: RefObject<HTMLDivElement | null>;\n styles: Record<string, SystemStyleObject>;\n}\n\nconst [UIHeaderContextProvider, useUIHeaderContext] = createContext<UIHeaderContextValue>({\n hookName: 'useUIHeaderContext',\n name: 'UIHeaderContext',\n providerName: '<BitkitUIHeader />',\n});\n\nexport { UIHeaderContextProvider, useUIHeaderContext };\n"],"mappings":";;AAeA,IAAM,CAAC,yBAAyB,sBAAsB,cAAoC;CACxF,UAAU;CACV,MAAM;CACN,cAAc;AAChB,CAAC"}
@@ -0,0 +1,65 @@
1
+ import { HTMLChakraProps } from '@chakra-ui/react/styled-system';
2
+ import { ReactNode } from 'react';
3
+ import { BitkitIconComponent } from '../../icons';
4
+ export type BitkitUIHeaderBadge = boolean | 'idle' | 'pulse';
5
+ interface ControlCommonProps {
6
+ /** Marks the control as carrying something unread. It is announced as part of the name too. */
7
+ badge?: BitkitUIHeaderBadge;
8
+ /**
9
+ * The control's accessible name. It shows no text of its own, so this is what a screen reader
10
+ * announces.
11
+ */
12
+ label: string;
13
+ /**
14
+ * Marks the control as the one whose panel is open: a lighter background and an indicator along
15
+ * the bottom edge of the bar. The consumer owns the panel, so it owns this too.
16
+ *
17
+ * It says nothing about where the user is. A control that is a link stays a link to somewhere
18
+ * else, so this paints it without claiming it is the current page.
19
+ */
20
+ selected?: boolean;
21
+ }
22
+ interface ControlBaseCommonProps extends ControlCommonProps {
23
+ children: ReactNode;
24
+ /**
25
+ * Which of the bar's control footprints to wear: the 48px square the icon controls and the
26
+ * account button share, or the wider mobile navigation button. Named around the slot it picks
27
+ * rather than `slot`, which is a native attribute every DOM element already takes.
28
+ */
29
+ footprint: 'control' | 'navButton';
30
+ }
31
+ interface ControlBaseAsButtonProps extends ControlBaseCommonProps, Omit<HTMLChakraProps<'button'>, 'children' | 'disabled'> {
32
+ href?: undefined;
33
+ isExternal?: undefined;
34
+ }
35
+ interface ControlBaseAsAnchorProps extends ControlBaseCommonProps, Omit<HTMLChakraProps<'a'>, 'children'> {
36
+ href: string;
37
+ isExternal?: boolean;
38
+ }
39
+ type ControlBaseProps = ControlBaseAsButtonProps | ControlBaseAsAnchorProps;
40
+ /**
41
+ * The chrome every control in the bar shares: the hover and selected backgrounds, the unread dot,
42
+ * the indicator, and the choice between a button and a link. What sits inside it — an icon, an
43
+ * avatar — is the caller's.
44
+ */
45
+ export declare const UIHeaderControlBase: import('react').ForwardRefExoticComponent<ControlBaseProps & import('react').RefAttributes<HTMLAnchorElement | HTMLButtonElement>>;
46
+ export interface BitkitUIHeaderControlAsButtonProps extends ControlCommonProps, Omit<HTMLChakraProps<'button'>, 'children' | 'disabled'> {
47
+ href?: undefined;
48
+ icon: BitkitIconComponent;
49
+ isExternal?: undefined;
50
+ }
51
+ export interface BitkitUIHeaderControlAsAnchorProps extends ControlCommonProps, Omit<HTMLChakraProps<'a'>, 'children'> {
52
+ href: string;
53
+ icon: BitkitIconComponent;
54
+ isExternal?: boolean;
55
+ }
56
+ export type BitkitUIHeaderControlProps = BitkitUIHeaderControlAsButtonProps | BitkitUIHeaderControlAsAnchorProps;
57
+ /**
58
+ * One icon button in the header bar — changelog, help, notifications, the mobile navigation
59
+ * opener. It is a link when given an `href` and a button otherwise.
60
+ *
61
+ * The icon carries no label of its own, so `label` is required. There is no tooltip: the design
62
+ * does not draw one.
63
+ */
64
+ declare const UIHeaderControl: import('react').ForwardRefExoticComponent<BitkitUIHeaderControlProps & import('react').RefAttributes<HTMLAnchorElement | HTMLButtonElement>>;
65
+ export default UIHeaderControl;
@@ -0,0 +1,69 @@
1
+ import { useUIHeaderContext } from "./UIHeaderContext.js";
2
+ import { Box } from "@chakra-ui/react/box";
3
+ import { chakra } from "@chakra-ui/react/styled-system";
4
+ import { forwardRef } from "react";
5
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
6
+ //#region lib/components/BitkitUIHeader/UIHeaderControl.tsx
7
+ /**
8
+ * The chrome every control in the bar shares: the hover and selected backgrounds, the unread dot,
9
+ * the indicator, and the choice between a button and a link. What sits inside it — an icon, an
10
+ * avatar — is the caller's.
11
+ */
12
+ var UIHeaderControlBase = forwardRef((props, ref) => {
13
+ const { styles } = useUIHeaderContext();
14
+ const accessibleName = props.badge ? `${props.label}, unread` : props.label;
15
+ const content = /* @__PURE__ */ jsxs(Fragment$1, { children: [
16
+ props.children,
17
+ !!props.badge && /* @__PURE__ */ jsx(Box, {
18
+ css: styles.badge,
19
+ "data-pulse": props.badge === "pulse" ? "" : void 0
20
+ }),
21
+ props.selected && /* @__PURE__ */ jsx(Box, { css: styles.indicator })
22
+ ] });
23
+ if (props.href !== void 0) {
24
+ const { badge: _badge, children: _children, css, footprint, isExternal, label: _label, rel, selected, target, ...anchorRest } = props;
25
+ return /* @__PURE__ */ jsx(chakra.a, {
26
+ ref,
27
+ "aria-label": accessibleName,
28
+ "data-selected": selected ? "" : void 0,
29
+ rel: isExternal ? rel ? `${rel} noreferrer noopener` : "noreferrer noopener" : rel,
30
+ target: isExternal ? "_blank" : target,
31
+ ...anchorRest,
32
+ css: [styles[footprint], css],
33
+ children: content
34
+ });
35
+ }
36
+ const { badge: _badge, children: _children, css, footprint, href: _href, isExternal: _isExternal, label: _label, selected, ...buttonRest } = props;
37
+ return /* @__PURE__ */ jsx(chakra.button, {
38
+ ref,
39
+ "aria-expanded": selected,
40
+ "aria-label": accessibleName,
41
+ "data-selected": selected ? "" : void 0,
42
+ type: "button",
43
+ ...buttonRest,
44
+ css: [styles[footprint], css],
45
+ children: content
46
+ });
47
+ });
48
+ UIHeaderControlBase.displayName = "UIHeaderControlBase";
49
+ /**
50
+ * One icon button in the header bar — changelog, help, notifications, the mobile navigation
51
+ * opener. It is a link when given an `href` and a button otherwise.
52
+ *
53
+ * The icon carries no label of its own, so `label` is required. There is no tooltip: the design
54
+ * does not draw one.
55
+ */
56
+ var UIHeaderControl = forwardRef((props, ref) => {
57
+ const { icon: Icon, ...rest } = props;
58
+ return /* @__PURE__ */ jsx(UIHeaderControlBase, {
59
+ ref,
60
+ footprint: "control",
61
+ ...rest,
62
+ children: /* @__PURE__ */ jsx(Icon, {})
63
+ });
64
+ });
65
+ UIHeaderControl.displayName = "BitkitUIHeader.Control";
66
+ //#endregion
67
+ export { UIHeaderControlBase, UIHeaderControl as default };
68
+
69
+ //# sourceMappingURL=UIHeaderControl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UIHeaderControl.js","names":["_Fragment"],"sources":["../../../lib/components/BitkitUIHeader/UIHeaderControl.tsx"],"sourcesContent":["import { Box } from '@chakra-ui/react/box';\nimport { chakra, type HTMLChakraProps } from '@chakra-ui/react/styled-system';\nimport { forwardRef, type ReactNode, type Ref } from 'react';\n\nimport { type BitkitIconComponent } from '../../icons';\nimport { useUIHeaderContext } from './UIHeaderContext';\n\nexport type BitkitUIHeaderBadge = boolean | 'idle' | 'pulse';\n\ninterface ControlCommonProps {\n /** Marks the control as carrying something unread. It is announced as part of the name too. */\n badge?: BitkitUIHeaderBadge;\n /**\n * The control's accessible name. It shows no text of its own, so this is what a screen reader\n * announces.\n */\n label: string;\n /**\n * Marks the control as the one whose panel is open: a lighter background and an indicator along\n * the bottom edge of the bar. The consumer owns the panel, so it owns this too.\n *\n * It says nothing about where the user is. A control that is a link stays a link to somewhere\n * else, so this paints it without claiming it is the current page.\n */\n selected?: boolean;\n}\n\ninterface ControlBaseCommonProps extends ControlCommonProps {\n children: ReactNode;\n /**\n * Which of the bar's control footprints to wear: the 48px square the icon controls and the\n * account button share, or the wider mobile navigation button. Named around the slot it picks\n * rather than `slot`, which is a native attribute every DOM element already takes.\n */\n footprint: 'control' | 'navButton';\n}\n\n// The bar draws no disabled control, so there is no `state` prop and no `disabled` either — a\n// control with nothing to do is one the consumer leaves out.\ninterface ControlBaseAsButtonProps\n extends ControlBaseCommonProps, Omit<HTMLChakraProps<'button'>, 'children' | 'disabled'> {\n href?: undefined;\n isExternal?: undefined;\n}\n\ninterface ControlBaseAsAnchorProps extends ControlBaseCommonProps, Omit<HTMLChakraProps<'a'>, 'children'> {\n href: string;\n isExternal?: boolean;\n}\n\ntype ControlBaseProps = ControlBaseAsButtonProps | ControlBaseAsAnchorProps;\n\n/**\n * The chrome every control in the bar shares: the hover and selected backgrounds, the unread dot,\n * the indicator, and the choice between a button and a link. What sits inside it — an icon, an\n * avatar — is the caller's.\n */\nexport const UIHeaderControlBase = forwardRef<HTMLButtonElement | HTMLAnchorElement, ControlBaseProps>((props, ref) => {\n const { styles } = useUIHeaderContext();\n\n const accessibleName = props.badge ? `${props.label}, unread` : props.label;\n\n const content = (\n <>\n {props.children}\n {!!props.badge && <Box css={styles.badge} data-pulse={props.badge === 'pulse' ? '' : undefined} />}\n {props.selected && <Box css={styles.indicator} />}\n </>\n );\n\n if (props.href !== undefined) {\n const {\n badge: _badge,\n children: _children,\n css,\n footprint,\n isExternal,\n label: _label,\n rel,\n selected,\n target,\n ...anchorRest\n } = props;\n\n return (\n // `chakra.a` rather than `Link`, which carries a recipe of its own: a control is styled\n // entirely by the header's own slot.\n <chakra.a\n ref={ref as Ref<HTMLAnchorElement>}\n aria-label={accessibleName}\n data-selected={selected ? '' : undefined}\n rel={isExternal ? (rel ? `${rel} noreferrer noopener` : 'noreferrer noopener') : rel}\n target={isExternal ? '_blank' : target}\n {...anchorRest}\n css={[styles[footprint], css]}\n >\n {content}\n </chakra.a>\n );\n }\n\n const {\n badge: _badge,\n children: _children,\n css,\n footprint,\n href: _href,\n isExternal: _isExternal,\n label: _label,\n selected,\n ...buttonRest\n } = props;\n\n return (\n // `chakra.button` rather than `Button`, which carries a recipe of its own: a control is styled\n // entirely by the header's own slot.\n <chakra.button\n ref={ref as Ref<HTMLButtonElement>}\n aria-expanded={selected}\n aria-label={accessibleName}\n data-selected={selected ? '' : undefined}\n // A header control is an action, not a form submit. Before the spread, so a consumer can\n // still opt into `type=\"submit\"`.\n type=\"button\"\n {...buttonRest}\n css={[styles[footprint], css]}\n >\n {content}\n </chakra.button>\n );\n});\n\nUIHeaderControlBase.displayName = 'UIHeaderControlBase';\n\nexport interface BitkitUIHeaderControlAsButtonProps\n extends ControlCommonProps, Omit<HTMLChakraProps<'button'>, 'children' | 'disabled'> {\n href?: undefined;\n icon: BitkitIconComponent;\n isExternal?: undefined;\n}\n\nexport interface BitkitUIHeaderControlAsAnchorProps extends ControlCommonProps, Omit<HTMLChakraProps<'a'>, 'children'> {\n href: string;\n icon: BitkitIconComponent;\n isExternal?: boolean;\n}\n\nexport type BitkitUIHeaderControlProps = BitkitUIHeaderControlAsButtonProps | BitkitUIHeaderControlAsAnchorProps;\n\n/**\n * One icon button in the header bar — changelog, help, notifications, the mobile navigation\n * opener. It is a link when given an `href` and a button otherwise.\n *\n * The icon carries no label of its own, so `label` is required. There is no tooltip: the design\n * does not draw one.\n */\nconst UIHeaderControl = forwardRef<HTMLButtonElement | HTMLAnchorElement, BitkitUIHeaderControlProps>((props, ref) => {\n const { icon: Icon, ...rest } = props;\n\n return (\n <UIHeaderControlBase ref={ref} footprint=\"control\" {...rest}>\n <Icon />\n </UIHeaderControlBase>\n );\n});\n\nUIHeaderControl.displayName = 'BitkitUIHeader.Control';\n\nexport default UIHeaderControl;\n"],"mappings":";;;;;;;;;;;AAyDA,IAAa,sBAAsB,YAAqE,OAAO,QAAQ;CACrH,MAAM,EAAE,WAAW,mBAAmB;CAEtC,MAAM,iBAAiB,MAAM,QAAQ,GAAG,MAAM,MAAM,YAAY,MAAM;CAEtE,MAAM,UACJ,qBAAAA,YAAA,EAAA,UAAA;EACG,MAAM;EACN,CAAC,CAAC,MAAM,SAAS,oBAAC,KAAD;GAAK,KAAK,OAAO;GAAO,cAAY,MAAM,UAAU,UAAU,KAAK,KAAA;EAAY,CAAA;EAChG,MAAM,YAAY,oBAAC,KAAD,EAAK,KAAK,OAAO,UAAY,CAAA;CAChD,EAAA,CAAA;CAGJ,IAAI,MAAM,SAAS,KAAA,GAAW;EAC5B,MAAM,EACJ,OAAO,QACP,UAAU,WACV,KACA,WACA,YACA,OAAO,QACP,KACA,UACA,QACA,GAAG,eACD;EAEJ,OAGE,oBAAC,OAAO,GAAR;GACO;GACL,cAAY;GACZ,iBAAe,WAAW,KAAK,KAAA;GAC/B,KAAK,aAAc,MAAM,GAAG,IAAI,wBAAwB,wBAAyB;GACjF,QAAQ,aAAa,WAAW;GAChC,GAAI;GACJ,KAAK,CAAC,OAAO,YAAY,GAAG;GAE3B,UAAA;EACO,CAAA;CAEd;CAEA,MAAM,EACJ,OAAO,QACP,UAAU,WACV,KACA,WACA,MAAM,OACN,YAAY,aACZ,OAAO,QACP,UACA,GAAG,eACD;CAEJ,OAGE,oBAAC,OAAO,QAAR;EACO;EACL,iBAAe;EACf,cAAY;EACZ,iBAAe,WAAW,KAAK,KAAA;EAG/B,MAAK;EACL,GAAI;EACJ,KAAK,CAAC,OAAO,YAAY,GAAG;EAE3B,UAAA;CACY,CAAA;AAEnB,CAAC;AAED,oBAAoB,cAAc;;;;;;;;AAwBlC,IAAM,kBAAkB,YAA+E,OAAO,QAAQ;CACpH,MAAM,EAAE,MAAM,MAAM,GAAG,SAAS;CAEhC,OACE,oBAAC,qBAAD;EAA0B;EAAK,WAAU;EAAU,GAAI;EACrD,UAAA,oBAAC,MAAD,CAAO,CAAA;CACY,CAAA;AAEzB,CAAC;AAED,gBAAgB,cAAc"}
@@ -0,0 +1,20 @@
1
+ import { HTMLChakraProps } from '@chakra-ui/react/styled-system';
2
+ export interface BitkitUIHeaderNavButtonProps extends Omit<HTMLChakraProps<'button'>, 'children' | 'disabled'> {
3
+ /** The accessible name. */
4
+ label?: string;
5
+ /** The current workspace. Shown as the avatar's initials when it has no logo. */
6
+ name: string;
7
+ /** The workspace's logo. Without one the avatar falls back to its initials. */
8
+ src?: string;
9
+ }
10
+ /**
11
+ * Opens `BitkitUISideNav` on mobile, where the navigation is a drawer rather than a rail. It sits
12
+ * in the header's `leading` slot, which is hidden from the `tablet` breakpoint up.
13
+ *
14
+ * The two components do not know about each other: this button's `onClick` sets the navigation's
15
+ * `open`, and the navigation asks to close through its own `onOpenChange`.
16
+ *
17
+ * It shows the current workspace, so switching workspaces is one tap away from anywhere.
18
+ */
19
+ declare const UIHeaderNavButton: import('react').ForwardRefExoticComponent<BitkitUIHeaderNavButtonProps & import('react').RefAttributes<HTMLButtonElement>>;
20
+ export default UIHeaderNavButton;
@@ -0,0 +1,46 @@
1
+ import IconMenuHamburger from "../../icons/IconMenuHamburger.js";
2
+ import BitkitAvatar from "../BitkitAvatar/BitkitAvatar.js";
3
+ import { useUIHeaderContext } from "./UIHeaderContext.js";
4
+ import { UIHeaderControlBase } from "./UIHeaderControl.js";
5
+ import { Box } from "@chakra-ui/react/box";
6
+ import { forwardRef } from "react";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ //#region lib/components/BitkitUIHeader/UIHeaderNavButton.tsx
9
+ /**
10
+ * Opens `BitkitUISideNav` on mobile, where the navigation is a drawer rather than a rail. It sits
11
+ * in the header's `leading` slot, which is hidden from the `tablet` breakpoint up.
12
+ *
13
+ * The two components do not know about each other: this button's `onClick` sets the navigation's
14
+ * `open`, and the navigation asks to close through its own `onOpenChange`.
15
+ *
16
+ * It shows the current workspace, so switching workspaces is one tap away from anywhere.
17
+ */
18
+ var UIHeaderNavButton = forwardRef((props, ref) => {
19
+ const { label = "Open navigation", name, src, ...rest } = props;
20
+ const { styles } = useUIHeaderContext();
21
+ const avatarProps = src ? {
22
+ src,
23
+ variant: "image"
24
+ } : { variant: "letters" };
25
+ return /* @__PURE__ */ jsxs(UIHeaderControlBase, {
26
+ ref,
27
+ footprint: "navButton",
28
+ label,
29
+ ...rest,
30
+ children: [/* @__PURE__ */ jsx(BitkitAvatar, {
31
+ name,
32
+ ...avatarProps
33
+ }), /* @__PURE__ */ jsx(Box, {
34
+ css: styles.navButtonBadge,
35
+ children: /* @__PURE__ */ jsx(IconMenuHamburger, {
36
+ css: styles.navButtonIcon,
37
+ size: "16"
38
+ })
39
+ })]
40
+ });
41
+ });
42
+ UIHeaderNavButton.displayName = "BitkitUIHeader.NavButton";
43
+ //#endregion
44
+ export { UIHeaderNavButton as default };
45
+
46
+ //# sourceMappingURL=UIHeaderNavButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UIHeaderNavButton.js","names":[],"sources":["../../../lib/components/BitkitUIHeader/UIHeaderNavButton.tsx"],"sourcesContent":["import { Box } from '@chakra-ui/react/box';\nimport { type HTMLChakraProps } from '@chakra-ui/react/styled-system';\nimport { forwardRef } from 'react';\n\nimport { IconMenuHamburger } from '../../icons';\nimport BitkitAvatar from '../BitkitAvatar/BitkitAvatar';\nimport { useUIHeaderContext } from './UIHeaderContext';\nimport { UIHeaderControlBase } from './UIHeaderControl';\n\nexport interface BitkitUIHeaderNavButtonProps extends Omit<HTMLChakraProps<'button'>, 'children' | 'disabled'> {\n /** The accessible name. */\n label?: string;\n /** The current workspace. Shown as the avatar's initials when it has no logo. */\n name: string;\n /** The workspace's logo. Without one the avatar falls back to its initials. */\n src?: string;\n}\n\n/**\n * Opens `BitkitUISideNav` on mobile, where the navigation is a drawer rather than a rail. It sits\n * in the header's `leading` slot, which is hidden from the `tablet` breakpoint up.\n *\n * The two components do not know about each other: this button's `onClick` sets the navigation's\n * `open`, and the navigation asks to close through its own `onOpenChange`.\n *\n * It shows the current workspace, so switching workspaces is one tap away from anywhere.\n */\nconst UIHeaderNavButton = forwardRef<HTMLButtonElement, BitkitUIHeaderNavButtonProps>((props, ref) => {\n const { label = 'Open navigation', name, src, ...rest } = props;\n\n const { styles } = useUIHeaderContext();\n\n const avatarProps = src ? ({ src, variant: 'image' } as const) : ({ variant: 'letters' } as const);\n\n return (\n <UIHeaderControlBase ref={ref} footprint=\"navButton\" label={label} {...rest}>\n <BitkitAvatar name={name} {...avatarProps} />\n <Box css={styles.navButtonBadge}>\n <IconMenuHamburger css={styles.navButtonIcon} size=\"16\" />\n </Box>\n </UIHeaderControlBase>\n );\n});\n\nUIHeaderNavButton.displayName = 'BitkitUIHeader.NavButton';\n\nexport default UIHeaderNavButton;\n"],"mappings":";;;;;;;;;;;;;;;;;AA2BA,IAAM,oBAAoB,YAA6D,OAAO,QAAQ;CACpG,MAAM,EAAE,QAAQ,mBAAmB,MAAM,KAAK,GAAG,SAAS;CAE1D,MAAM,EAAE,WAAW,mBAAmB;CAEtC,MAAM,cAAc,MAAO;EAAE;EAAK,SAAS;CAAQ,IAAe,EAAE,SAAS,UAAU;CAEvF,OACE,qBAAC,qBAAD;EAA0B;EAAK,WAAU;EAAmB;EAAO,GAAI;EAAvE,UAAA,CACE,oBAAC,cAAD;GAAoB;GAAM,GAAI;EAAc,CAAA,GAC5C,oBAAC,KAAD;GAAK,KAAK,OAAO;GACf,UAAA,oBAAC,mBAAD;IAAmB,KAAK,OAAO;IAAe,MAAK;GAAM,CAAA;EACtD,CAAA,CACc;;AAEzB,CAAC;AAED,kBAAkB,cAAc"}
@@ -0,0 +1,32 @@
1
+ import { BoxProps } from '@chakra-ui/react/box';
2
+ import { Ref } from 'react';
3
+ export interface BitkitUIHeaderSearchProps extends Omit<BoxProps, 'children' | 'onChange'> {
4
+ /**
5
+ * The search field, for anchoring the results to it. The component owns no results list: what a
6
+ * search turns up differs per product, so the consumer renders its own panel against this.
7
+ */
8
+ inputRef?: Ref<HTMLInputElement>;
9
+ /** The accessible name of both the button and the field. */
10
+ label?: string;
11
+ /**
12
+ * Called when the button is pressed, and when Escape closes the field.
13
+ *
14
+ * From `tablet` up this opens the field in place. Below it there is no inline field — the button
15
+ * is a plain trigger, and what it opens is the consumer's to render.
16
+ */
17
+ onOpenChange?: (open: boolean) => void;
18
+ onValueChange?: (value: string) => void;
19
+ open?: boolean;
20
+ placeholder?: string;
21
+ /** Marks the button as the one whose panel is open. Meant for the mobile trigger. */
22
+ selected?: boolean;
23
+ value?: string;
24
+ }
25
+ /**
26
+ * Search in the header bar: a button that opens a field lying over it, so opening the search moves
27
+ * nothing else in the bar.
28
+ *
29
+ * It is controlled. Hold `open` and `value` yourself, and render the results against `inputRef`.
30
+ */
31
+ declare const UIHeaderSearch: import('react').ForwardRefExoticComponent<BitkitUIHeaderSearchProps & import('react').RefAttributes<HTMLDivElement>>;
32
+ export default UIHeaderSearch;
@@ -0,0 +1,115 @@
1
+ import IconMagnifier from "../../icons/IconMagnifier.js";
2
+ import BitkitCloseButton from "../BitkitCloseButton/BitkitCloseButton.js";
3
+ import { useUIHeaderContext } from "./UIHeaderContext.js";
4
+ import { UIHeaderControlBase } from "./UIHeaderControl.js";
5
+ import { Box } from "@chakra-ui/react/box";
6
+ import { chakra } from "@chakra-ui/react/styled-system";
7
+ import { forwardRef, useEffect, useMemo, useRef } from "react";
8
+ import { jsx, jsxs } from "react/jsx-runtime";
9
+ import { useCallbackRef } from "@chakra-ui/react/hooks";
10
+ import { mergeRefs } from "@chakra-ui/react";
11
+ //#region lib/components/BitkitUIHeader/UIHeaderSearch.tsx
12
+ /**
13
+ * Search in the header bar: a button that opens a field lying over it, so opening the search moves
14
+ * nothing else in the bar.
15
+ *
16
+ * It is controlled. Hold `open` and `value` yourself, and render the results against `inputRef`.
17
+ */
18
+ var UIHeaderSearch = forwardRef((props, ref) => {
19
+ const { css, inputRef, label = "Search", onOpenChange, onValueChange, open = false, placeholder, selected, value = "", ...rest } = props;
20
+ const { barRef, styles } = useUIHeaderContext();
21
+ const buttonElementRef = useRef(null);
22
+ const inputElementRef = useRef(null);
23
+ const searchElementRef = useRef(null);
24
+ const restoreFocusRef = useRef(false);
25
+ const setInputRef = useMemo(() => mergeRefs(inputElementRef, inputRef), [inputRef]);
26
+ const setSearchRef = useMemo(() => mergeRefs(searchElementRef, ref), [ref]);
27
+ const handleOpenChange = useCallbackRef(onOpenChange);
28
+ useEffect(() => {
29
+ if (open) {
30
+ inputElementRef.current?.focus();
31
+ return;
32
+ }
33
+ if (!restoreFocusRef.current) return;
34
+ restoreFocusRef.current = false;
35
+ buttonElementRef.current?.focus();
36
+ }, [open]);
37
+ useEffect(() => {
38
+ if (!open) return void 0;
39
+ const bar = barRef.current;
40
+ if (!bar) return void 0;
41
+ const dismiss = (event) => {
42
+ const target = event.target instanceof Node ? event.target : null;
43
+ if (!target || searchElementRef.current?.contains(target)) return;
44
+ handleOpenChange?.(false);
45
+ };
46
+ bar.addEventListener("focusin", dismiss);
47
+ bar.addEventListener("pointerdown", dismiss);
48
+ return () => {
49
+ bar.removeEventListener("focusin", dismiss);
50
+ bar.removeEventListener("pointerdown", dismiss);
51
+ };
52
+ }, [
53
+ barRef,
54
+ handleOpenChange,
55
+ open
56
+ ]);
57
+ useEffect(() => {
58
+ if (!open) return void 0;
59
+ const close = (event) => {
60
+ if (event.key !== "Escape") return;
61
+ if (event.target === inputElementRef.current) event.preventDefault();
62
+ restoreFocusRef.current = true;
63
+ handleOpenChange?.(false);
64
+ };
65
+ document.addEventListener("keydown", close);
66
+ return () => document.removeEventListener("keydown", close);
67
+ }, [handleOpenChange, open]);
68
+ const handleClear = () => {
69
+ onValueChange?.("");
70
+ inputElementRef.current?.focus();
71
+ };
72
+ return /* @__PURE__ */ jsxs(Box, {
73
+ ref: setSearchRef,
74
+ css: [styles.search, css],
75
+ ...rest,
76
+ children: [/* @__PURE__ */ jsx(UIHeaderControlBase, {
77
+ ref: buttonElementRef,
78
+ "aria-expanded": selected ?? open,
79
+ css: styles.searchButton,
80
+ "data-open": open ? "" : void 0,
81
+ footprint: "control",
82
+ label,
83
+ onClick: () => onOpenChange?.(!open),
84
+ selected,
85
+ children: /* @__PURE__ */ jsx(IconMagnifier, {})
86
+ }), /* @__PURE__ */ jsxs(Box, {
87
+ css: styles.searchField,
88
+ "data-open": open ? "" : void 0,
89
+ children: [
90
+ /* @__PURE__ */ jsx(IconMagnifier, { css: styles.searchIcon }),
91
+ /* @__PURE__ */ jsx(chakra.input, {
92
+ ref: setInputRef,
93
+ "aria-label": label,
94
+ css: styles.searchInput,
95
+ onChange: (event) => onValueChange?.(event.target.value),
96
+ placeholder,
97
+ type: "search",
98
+ value
99
+ }),
100
+ !!value && /* @__PURE__ */ jsx(BitkitCloseButton, {
101
+ "aria-label": "Clear search",
102
+ colorVariant: "white",
103
+ css: styles.searchClear,
104
+ onClick: handleClear,
105
+ size: "sm"
106
+ })
107
+ ]
108
+ })]
109
+ });
110
+ });
111
+ UIHeaderSearch.displayName = "BitkitUIHeader.Search";
112
+ //#endregion
113
+ export { UIHeaderSearch as default };
114
+
115
+ //# sourceMappingURL=UIHeaderSearch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UIHeaderSearch.js","names":[],"sources":["../../../lib/components/BitkitUIHeader/UIHeaderSearch.tsx"],"sourcesContent":["// eslint-disable-next-line no-restricted-imports\nimport { mergeRefs } from '@chakra-ui/react';\nimport { Box, type BoxProps } from '@chakra-ui/react/box';\nimport { useCallbackRef } from '@chakra-ui/react/hooks';\nimport { chakra } from '@chakra-ui/react/styled-system';\nimport { forwardRef, type Ref, useEffect, useMemo, useRef } from 'react';\n\nimport { IconMagnifier } from '../../icons';\nimport BitkitCloseButton from '../BitkitCloseButton/BitkitCloseButton';\nimport { useUIHeaderContext } from './UIHeaderContext';\nimport { UIHeaderControlBase } from './UIHeaderControl';\n\nexport interface BitkitUIHeaderSearchProps extends Omit<BoxProps, 'children' | 'onChange'> {\n /**\n * The search field, for anchoring the results to it. The component owns no results list: what a\n * search turns up differs per product, so the consumer renders its own panel against this.\n */\n inputRef?: Ref<HTMLInputElement>;\n /** The accessible name of both the button and the field. */\n label?: string;\n /**\n * Called when the button is pressed, and when Escape closes the field.\n *\n * From `tablet` up this opens the field in place. Below it there is no inline field — the button\n * is a plain trigger, and what it opens is the consumer's to render.\n */\n onOpenChange?: (open: boolean) => void;\n onValueChange?: (value: string) => void;\n open?: boolean;\n placeholder?: string;\n /** Marks the button as the one whose panel is open. Meant for the mobile trigger. */\n selected?: boolean;\n value?: string;\n}\n\n/**\n * Search in the header bar: a button that opens a field lying over it, so opening the search moves\n * nothing else in the bar.\n *\n * It is controlled. Hold `open` and `value` yourself, and render the results against `inputRef`.\n */\nconst UIHeaderSearch = forwardRef<HTMLDivElement, BitkitUIHeaderSearchProps>((props, ref) => {\n const {\n css,\n inputRef,\n label = 'Search',\n onOpenChange,\n onValueChange,\n open = false,\n placeholder,\n selected,\n value = '',\n ...rest\n } = props;\n\n const { barRef, styles } = useUIHeaderContext();\n\n const buttonElementRef = useRef<HTMLButtonElement>(null);\n const inputElementRef = useRef<HTMLInputElement>(null);\n const searchElementRef = useRef<HTMLDivElement>(null);\n const restoreFocusRef = useRef(false);\n const setInputRef = useMemo(() => mergeRefs(inputElementRef, inputRef), [inputRef]);\n const setSearchRef = useMemo(() => mergeRefs(searchElementRef, ref), [ref]);\n\n // The field is controlled, so `onOpenChange` is usually a fresh arrow on every keystroke. Held\n // by a ref, the dismiss listener below is subscribed once per opening rather than per character.\n const handleOpenChange = useCallbackRef(onOpenChange);\n\n // Escape hands focus back to the button that opened the field, but only once the field is closed:\n // while it is open the button is `visibility: hidden`, and a hidden element cannot take focus.\n useEffect(() => {\n if (open) {\n inputElementRef.current?.focus();\n return;\n }\n\n if (!restoreFocusRef.current) return;\n restoreFocusRef.current = false;\n buttonElementRef.current?.focus();\n }, [open]);\n\n // Reaching for another control in the bar is as much a way out of the search as Escape, so the\n // open field gives way to it. Only what happens in the bar itself counts: the results are the\n // consumer's to render — in the `banner` slot as readily as anywhere else — and choosing from\n // them must not close the search.\n //\n // Focus is what settles it for the keyboard. The open field lies over the controls beside it\n // without taking them out of the tab order, so Shift+Tab out of the input lands on one of them,\n // covered — and reaching a control with the keyboard never fires a pointer event. Both end with\n // focus inside the bar and outside the search, which is the moment to close.\n //\n // The pointer still needs its own listener: Safari gives a button no focus when it is clicked.\n useEffect(() => {\n if (!open) return undefined;\n\n const bar = barRef.current;\n if (!bar) return undefined;\n\n const dismiss = (event: Event) => {\n const target = event.target instanceof Node ? event.target : null;\n if (!target || searchElementRef.current?.contains(target)) return;\n handleOpenChange?.(false);\n };\n\n bar.addEventListener('focusin', dismiss);\n bar.addEventListener('pointerdown', dismiss);\n return () => {\n bar.removeEventListener('focusin', dismiss);\n bar.removeEventListener('pointerdown', dismiss);\n };\n }, [barRef, handleOpenChange, open]);\n\n useEffect(() => {\n if (!open) return undefined;\n\n const close = (event: globalThis.KeyboardEvent) => {\n if (event.key !== 'Escape') return;\n if (event.target === inputElementRef.current) event.preventDefault();\n restoreFocusRef.current = true;\n handleOpenChange?.(false);\n };\n\n document.addEventListener('keydown', close);\n return () => document.removeEventListener('keydown', close);\n }, [handleOpenChange, open]);\n\n const handleClear = () => {\n onValueChange?.('');\n inputElementRef.current?.focus();\n };\n\n return (\n <Box ref={setSearchRef} css={[styles.search, css]} {...rest}>\n <UIHeaderControlBase\n ref={buttonElementRef}\n aria-expanded={selected ?? open}\n css={styles.searchButton}\n data-open={open ? '' : undefined}\n footprint=\"control\"\n label={label}\n onClick={() => onOpenChange?.(!open)}\n selected={selected}\n >\n <IconMagnifier />\n </UIHeaderControlBase>\n <Box css={styles.searchField} data-open={open ? '' : undefined}>\n <IconMagnifier css={styles.searchIcon} />\n {/* No named primitive fits: Chakra's `Input` carries its own recipe, and this field is\n styled entirely by the header's own slot. */}\n <chakra.input\n ref={setInputRef}\n aria-label={label}\n css={styles.searchInput}\n onChange={(event) => onValueChange?.(event.target.value)}\n placeholder={placeholder}\n type=\"search\"\n value={value}\n />\n {!!value && (\n <BitkitCloseButton\n aria-label=\"Clear search\"\n colorVariant=\"white\"\n css={styles.searchClear}\n onClick={handleClear}\n size=\"sm\"\n />\n )}\n </Box>\n </Box>\n );\n});\n\nUIHeaderSearch.displayName = 'BitkitUIHeader.Search';\n\nexport default UIHeaderSearch;\n"],"mappings":";;;;;;;;;;;;;;;;;AAyCA,IAAM,iBAAiB,YAAuD,OAAO,QAAQ;CAC3F,MAAM,EACJ,KACA,UACA,QAAQ,UACR,cACA,eACA,OAAO,OACP,aACA,UACA,QAAQ,IACR,GAAG,SACD;CAEJ,MAAM,EAAE,QAAQ,WAAW,mBAAmB;CAE9C,MAAM,mBAAmB,OAA0B,IAAI;CACvD,MAAM,kBAAkB,OAAyB,IAAI;CACrD,MAAM,mBAAmB,OAAuB,IAAI;CACpD,MAAM,kBAAkB,OAAO,KAAK;CACpC,MAAM,cAAc,cAAc,UAAU,iBAAiB,QAAQ,GAAG,CAAC,QAAQ,CAAC;CAClF,MAAM,eAAe,cAAc,UAAU,kBAAkB,GAAG,GAAG,CAAC,GAAG,CAAC;CAI1E,MAAM,mBAAmB,eAAe,YAAY;CAIpD,gBAAgB;EACd,IAAI,MAAM;GACR,gBAAgB,SAAS,MAAM;GAC/B;EACF;EAEA,IAAI,CAAC,gBAAgB,SAAS;EAC9B,gBAAgB,UAAU;EAC1B,iBAAiB,SAAS,MAAM;CAClC,GAAG,CAAC,IAAI,CAAC;CAaT,gBAAgB;EACd,IAAI,CAAC,MAAM,OAAO,KAAA;EAElB,MAAM,MAAM,OAAO;EACnB,IAAI,CAAC,KAAK,OAAO,KAAA;EAEjB,MAAM,WAAW,UAAiB;GAChC,MAAM,SAAS,MAAM,kBAAkB,OAAO,MAAM,SAAS;GAC7D,IAAI,CAAC,UAAU,iBAAiB,SAAS,SAAS,MAAM,GAAG;GAC3D,mBAAmB,KAAK;EAC1B;EAEA,IAAI,iBAAiB,WAAW,OAAO;EACvC,IAAI,iBAAiB,eAAe,OAAO;EAC3C,aAAa;GACX,IAAI,oBAAoB,WAAW,OAAO;GAC1C,IAAI,oBAAoB,eAAe,OAAO;EAChD;CACF,GAAG;EAAC;EAAQ;EAAkB;CAAI,CAAC;CAEnC,gBAAgB;EACd,IAAI,CAAC,MAAM,OAAO,KAAA;EAElB,MAAM,SAAS,UAAoC;GACjD,IAAI,MAAM,QAAQ,UAAU;GAC5B,IAAI,MAAM,WAAW,gBAAgB,SAAS,MAAM,eAAe;GACnE,gBAAgB,UAAU;GAC1B,mBAAmB,KAAK;EAC1B;EAEA,SAAS,iBAAiB,WAAW,KAAK;EAC1C,aAAa,SAAS,oBAAoB,WAAW,KAAK;CAC5D,GAAG,CAAC,kBAAkB,IAAI,CAAC;CAE3B,MAAM,oBAAoB;EACxB,gBAAgB,EAAE;EAClB,gBAAgB,SAAS,MAAM;CACjC;CAEA,OACE,qBAAC,KAAD;EAAK,KAAK;EAAc,KAAK,CAAC,OAAO,QAAQ,GAAG;EAAG,GAAI;EAAvD,UAAA,CACE,oBAAC,qBAAD;GACE,KAAK;GACL,iBAAe,YAAY;GAC3B,KAAK,OAAO;GACZ,aAAW,OAAO,KAAK,KAAA;GACvB,WAAU;GACH;GACP,eAAe,eAAe,CAAC,IAAI;GACzB;GAEV,UAAA,oBAAC,eAAD,CAAgB,CAAA;EACG,CAAA,GACrB,qBAAC,KAAD;GAAK,KAAK,OAAO;GAAa,aAAW,OAAO,KAAK,KAAA;GAArD,UAAA;IACE,oBAAC,eAAD,EAAe,KAAK,OAAO,WAAa,CAAA;IAGxC,oBAAC,OAAO,OAAR;KACE,KAAK;KACL,cAAY;KACZ,KAAK,OAAO;KACZ,WAAW,UAAU,gBAAgB,MAAM,OAAO,KAAK;KAC1C;KACb,MAAK;KACE;IACR,CAAA;IACA,CAAC,CAAC,SACD,oBAAC,mBAAD;KACE,cAAW;KACX,cAAa;KACb,KAAK,OAAO;KACZ,SAAS;KACT,MAAK;IACN,CAAA;GAEA;EACF,CAAA,CAAA;;AAET,CAAC;AAED,eAAe,cAAc"}
@@ -28,12 +28,6 @@ export { default as BitkitEmptyState, type BitkitEmptyStateProps } from './Bitki
28
28
  export { default as BitkitExpandableCard, type BitkitExpandableCardProps, } from './BitkitExpandableCard/BitkitExpandableCard';
29
29
  export { default as BitkitField, type BitkitFieldProps } from './BitkitField/BitkitField';
30
30
  export { default as BitkitFileInput, type BitkitFileInputProps } from './BitkitFileInput/BitkitFileInput';
31
- export { default as BitkitFilter, type BitkitFilterProps } from './BitkitFilter/BitkitFilter';
32
- export { type BitkitFilterAddProps } from './BitkitFilter/BitkitFilterAdd';
33
- export { type BitkitFilterDateRangeProps, type BitkitFilterDateRangeValue } from './BitkitFilter/BitkitFilterDateRange';
34
- export { type BitkitFilterSearchProps } from './BitkitFilter/BitkitFilterSearch';
35
- export { type BitkitFilterSelectItem, type BitkitFilterSelectProps } from './BitkitFilter/BitkitFilterSelect';
36
- export { type BitkitFilterSwitchItem, type BitkitFilterSwitchProps } from './BitkitFilter/BitkitFilterSwitch';
37
31
  export { default as BitkitGroupHeading, type BitkitGroupHeadingProps } from './BitkitGroupHeading/BitkitGroupHeading';
38
32
  export { default as BitkitHeading, type BitkitHeadingProps } from './BitkitHeading/BitkitHeading';
39
33
  export { default as BitkitIconButton, type BitkitIconButtonProps } from './BitkitIconButton/BitkitIconButton';
@@ -100,5 +94,6 @@ export { default as BitkitToggletip, type BitkitToggletipProps } from './BitkitT
100
94
  export { default as BitkitTooltip, type BitkitTooltipProps } from './BitkitTooltip/BitkitTooltip';
101
95
  export { default as BitkitTour, type BitkitTourInstance, type BitkitTourOptions, type BitkitTourProps, type BitkitTourSecondaryAction, type BitkitTourStep, useBitkitTour, } from './BitkitTour/BitkitTour';
102
96
  export { default as BitkitTreeView, type BitkitTreeViewBranchProps, type BitkitTreeViewExpandedChangeDetails, type BitkitTreeViewLeafProps, type BitkitTreeViewNodeRenderProps, type BitkitTreeViewRootProps, type BitkitTreeViewSelectionChangeDetails, createTreeCollection, } from './BitkitTreeView/BitkitTreeView';
97
+ export { default as BitkitUIHeader, type BitkitUIHeaderAccountProps, type BitkitUIHeaderBadge, type BitkitUIHeaderButtonProps, type BitkitUIHeaderControlAsAnchorProps, type BitkitUIHeaderControlAsButtonProps, type BitkitUIHeaderControlProps, type BitkitUIHeaderNavButtonProps, type BitkitUIHeaderProps, type BitkitUIHeaderSearchProps, uiHeaderHeight, uiHeaderHeightPx, } from './BitkitUIHeader/BitkitUIHeader';
103
98
  export { default as BitkitUISideNav, type BitkitUISideNavBodyProps, type BitkitUISideNavFooterHeadingProps, type BitkitUISideNavFooterProps, type BitkitUISideNavItemProps, type BitkitUISideNavLinkAsAnchorProps, type BitkitUISideNavLinkAsButtonProps, type BitkitUISideNavLinkProps, type BitkitUISideNavProps, type BitkitUISideNavWorkspaceProps, type BitkitUISideNavWorkspaceSelectorProps, uiSideNavRailWidth, } from './BitkitUISideNav/BitkitUISideNav';
104
99
  export { useUISideNav } from './BitkitUISideNav/UISideNavContext';
package/dist/main.js CHANGED
@@ -306,8 +306,8 @@ import BitkitBadge from "./components/BitkitBadge/BitkitBadge.js";
306
306
  import BitkitControlButton from "./components/BitkitControlButton/BitkitControlButton.js";
307
307
  import BitkitBreadcrumb from "./components/BitkitBreadcrumb/BitkitBreadcrumb.js";
308
308
  import BitkitButton from "./components/BitkitButton/BitkitButton.js";
309
- import BitkitTooltip from "./components/BitkitTooltip/BitkitTooltip.js";
310
309
  import BitkitGroupHeading from "./components/BitkitGroupHeading/BitkitGroupHeading.js";
310
+ import BitkitTooltip from "./components/BitkitTooltip/BitkitTooltip.js";
311
311
  import BitkitSelectMenuAction from "./components/BitkitSelectMenu/BitkitSelectMenuAction.js";
312
312
  import BitkitSelectMenu from "./components/BitkitSelectMenu/BitkitSelectMenu.js";
313
313
  import BitkitCalendar from "./components/BitkitCalendar/BitkitCalendar.js";
@@ -332,18 +332,14 @@ import BitkitDrawer from "./components/BitkitDrawer/BitkitDrawer.js";
332
332
  import BitkitEmptyState from "./components/BitkitEmptyState/BitkitEmptyState.js";
333
333
  import BitkitExpandableCard from "./components/BitkitExpandableCard/BitkitExpandableCard.js";
334
334
  import BitkitFileInput from "./components/BitkitFileInput/BitkitFileInput.js";
335
- import useResponsive, { ResponsiveProvider } from "./hooks/useResponsive.js";
336
- import BitkitInlineLoading from "./components/BitkitInlineLoading/BitkitInlineLoading.js";
337
- import BitkitList_default from "./components/BitkitList/BitkitList.js";
338
- import BitkitTextInput from "./components/BitkitTextInput/BitkitTextInput.js";
339
- import BitkitSearchInput from "./components/BitkitSearchInput/BitkitSearchInput.js";
340
- import BitkitFilter_default from "./components/BitkitFilter/BitkitFilter.js";
341
335
  import BitkitHeading from "./components/BitkitHeading/BitkitHeading.js";
342
336
  import BitkitIconButton from "./components/BitkitIconButton/BitkitIconButton.js";
337
+ import BitkitInlineLoading from "./components/BitkitInlineLoading/BitkitInlineLoading.js";
343
338
  import BitkitLabeledData from "./components/BitkitLabeledData/BitkitLabeledData.js";
344
339
  import BitkitLightbox from "./components/BitkitLightbox/BitkitLightbox.js";
345
340
  import BitkitLink from "./components/BitkitLink/BitkitLink.js";
346
341
  import BitkitLinkButton from "./components/BitkitLinkButton/BitkitLinkButton.js";
342
+ import BitkitList_default from "./components/BitkitList/BitkitList.js";
347
343
  import BitkitMarkdown from "./components/BitkitMarkdown/BitkitMarkdown.js";
348
344
  import BitkitMarkdownCard from "./components/BitkitMarkdownCard/BitkitMarkdownCard.js";
349
345
  import BitkitMultiselectMenu from "./components/BitkitMultiselectMenu/BitkitMultiselectMenu.js";
@@ -356,6 +352,7 @@ import BitkitOverflowContent from "./components/BitkitOverflowContent/BitkitOver
356
352
  import BitkitOverflowTooltip from "./components/BitkitOverflowTooltip/BitkitOverflowTooltip.js";
357
353
  import BitkitPageFooter_default from "./components/BitkitPageFooter/BitkitPageFooter.js";
358
354
  import BitkitPageHeader from "./components/BitkitPageHeader/BitkitPageHeader.js";
355
+ import useResponsive, { ResponsiveProvider } from "./hooks/useResponsive.js";
359
356
  import BitkitPageSidebar_default from "./components/BitkitPageSidebar/BitkitPageSidebar.js";
360
357
  import BitkitPagination from "./components/BitkitPagination/BitkitPagination.js";
361
358
  import BitkitPaginationLoadMore from "./components/BitkitPaginationLoadMore/BitkitPaginationLoadMore.js";
@@ -365,6 +362,8 @@ import BitkitPromoBanner from "./components/BitkitPromoBanner/BitkitPromoBanner.
365
362
  import BitkitRadio from "./components/BitkitRadio/BitkitRadio.js";
366
363
  import BitkitRadioGroup from "./components/BitkitRadioGroup/BitkitRadioGroup.js";
367
364
  import BitkitRibbon from "./components/BitkitRibbon/BitkitRibbon.js";
365
+ import BitkitTextInput from "./components/BitkitTextInput/BitkitTextInput.js";
366
+ import BitkitSearchInput from "./components/BitkitSearchInput/BitkitSearchInput.js";
368
367
  import BitkitSectionHeading from "./components/BitkitSectionHeading/BitkitSectionHeading.js";
369
368
  import BitkitSegmentedControl_default from "./components/BitkitSegmentedControl/BitkitSegmentedControl.js";
370
369
  import BitkitSelect_default from "./components/BitkitSelect/BitkitSelect.js";
@@ -385,9 +384,11 @@ import createBitkitToast, { dismissBitkitToast } from "./components/BitkitToast/
385
384
  import BitkitToggleButton from "./components/BitkitToggleButton/BitkitToggleButton.js";
386
385
  import BitkitTour, { useBitkitTour } from "./components/BitkitTour/BitkitTour.js";
387
386
  import BitkitTreeView, { createTreeCollection } from "./components/BitkitTreeView/BitkitTreeView.js";
387
+ import { uiHeaderHeight, uiHeaderHeightPx } from "./theme/slot-recipes/UIHeader.recipe.js";
388
+ import BitkitUIHeader_default from "./components/BitkitUIHeader/BitkitUIHeader.js";
388
389
  import { useUISideNav } from "./components/BitkitUISideNav/UISideNavContext.js";
389
390
  import { uiSideNavRailWidth } from "./theme/slot-recipes/UISideNav.recipe.js";
390
391
  import BitkitUISideNav_default from "./components/BitkitUISideNav/BitkitUISideNav.js";
391
392
  import bitkitTheme from "./theme/index.js";
392
393
  import Provider from "./providers/BitkitProvider.js";
393
- export { BitkitAccordion_default as BitkitAccordion, BitkitActionBar, BitkitActionMenu_default as BitkitActionMenu, BitkitAlert, BitkitAvatar, BitkitBadge, BitkitBreadcrumb, BitkitButton, BitkitCalendar, BitkitCheckbox, BitkitCheckboxGroup, BitkitCloseButton, BitkitCodeSnippet, BitkitCollapsible, BitkitColorButton, BitkitCombobox_default as BitkitCombobox, BitkitControlButton, BitkitDataWidget, BitkitDatePicker, BitkitDefinitionTooltip, BitkitDialog_default as BitkitDialog, BitkitDraggableCard, BitkitDrawer, BitkitEmptyState, BitkitExpandableCard, BitkitField, BitkitFileInput, BitkitFilter_default as BitkitFilter, BitkitFormDialog_default as BitkitFormDialog, BitkitGroupHeading, BitkitHeading, BitkitIconButton, BitkitInlineLoading, BitkitLabel, BitkitLabelTooltip, BitkitLabeledData, BitkitLightbox, BitkitLink, BitkitLinkButton, BitkitList_default as BitkitList, BitkitMarkdown, BitkitMarkdownCard, BitkitMultiselect_default as BitkitMultiselect, BitkitMultiselectMenu, BitkitNativeSelect, BitkitNoteCard, BitkitNumberInput, BitkitOverflowContent, BitkitOverflowTooltip, BitkitPageFooter_default as BitkitPageFooter, BitkitPageHeader, BitkitPageSidebar_default as BitkitPageSidebar, BitkitPagination, BitkitPaginationLoadMore, BitkitPopover, BitkitProgressBar, BitkitPromoBanner, Provider as BitkitProvider, BitkitRadio, BitkitRadioGroup, BitkitRibbon, BitkitSearchInput, BitkitSectionHeading, BitkitSegmentedControl_default as BitkitSegmentedControl, BitkitSelect_default as BitkitSelect, BitkitSelectMenu, BitkitSelectMenuAction, BitkitSelectableTag_default as BitkitSelectableTag, BitkitSettingsCard_default as BitkitSettingsCard, BitkitSkeletonGroup, BitkitSpinner, BitkitSplitButton_default as BitkitSplitButton, BitkitStat, BitkitSteps_default as BitkitSteps, BitkitStepsCard_default as BitkitStepsCard, BitkitStepsDialog_default as BitkitStepsDialog, BitkitSwitch, BitkitTable, BitkitTableCard, BitkitTabs, BitkitTag, BitkitTagsInput, BitkitTextArea, BitkitTextInput, BitkitToggleButton, BitkitToggletip, BitkitTooltip, BitkitTour, BitkitTreeView, BitkitUISideNav_default as BitkitUISideNav, IconAbortCircle, IconAbortCircleFilled, IconAddons, IconAgent, IconAnchor, IconAndroid, IconApp, IconAppSettings, IconAppStore, IconAppStoreColor, IconApple, IconArchive, IconArchiveDelete, IconArchiveRestore, IconArrowBackAndDown, IconArrowBackAndUp, IconArrowDown, IconArrowForwardAndDown, IconArrowForwardAndUp, IconArrowLeft, IconArrowNortheast, IconArrowNorthwest, IconArrowRight, IconArrowUp, IconArrowsHorizontal, IconArrowsVertical, IconAutomation, IconAws, IconAwsColor, IconBadge3RdParty, IconBadgeBitrise, IconBadgeUpgrade, IconBadgeVersionOk, IconBazel, IconBell, IconBitbot, IconBitbotError, IconBitbucket, IconBitbucketColor, IconBitbucketNeutral, IconBitbucketWhite, IconBlockCircle, IconBook, IconBoxArrowDown, IconBoxDot, IconBoxLinesOverflow, IconBoxLinesWrap, IconBranch, IconBrowserstackColor, IconBug, IconBuild, IconBuildCache, IconBuildCacheFilled, IconBuildEnvSetup, IconBuildHub, IconBuildHubFilled, IconCalendar, IconChangePlan, IconChat, IconCheck, IconCheckCircle, IconCheckCircleFilled, IconChevronDown, IconChevronLeft, IconChevronRight, IconChevronUp, IconCi, IconCiFilled, IconCircle, IconCircleDashed, IconCircleHalfFilled, IconClaude, IconClaudeColor, IconClock, IconCode, IconCodePush, IconCodeSigning, IconCoffee, IconCommit, IconConfigure, IconConnectedAccounts, IconContainer, IconCopilot, IconCopy, IconCordova, IconCpu, IconCreditcard, IconCredits, IconCross, IconCrossCircle, IconCrossCircleFilled, IconCrown, IconCursor, IconCycle, IconDashboard, IconDashboardFilled, IconDeployment, IconDetails, IconDoc, IconDollar, IconDot, IconDotnet, IconDotnetColor, IconDotnetText, IconDotnetTextColor, IconDoubleCircle, IconDownload, IconDragHandle, IconEc2Ami, IconEnterprise, IconErrorCircle, IconErrorCircleFilled, IconExpand, IconExtraBuildCapacity, IconEye, IconEyeSlash, IconFastlane, IconFile, IconFileDoc, IconFilePdf, IconFilePlist, IconFileYml, IconFileZip, IconFilter, IconFlag, IconFlutter, IconFolder, IconFullscreen, IconFullscreenExit, IconGauge, IconGit, IconGithub, IconGitlab, IconGitlabColor, IconGitlabWhite, IconGlobe, IconGo, IconGoogleColor, IconGooglePlay, IconGooglePlayColor, IconGradle, IconGroup, IconHashtag, IconHeadset, IconHeart, IconHistory, IconHourglass, IconImage, IconInfoCircle, IconInfoCircleFilled, IconInsights, IconInsightsFilled, IconInstall, IconInteraction, IconInvoice, IconIonic, IconJapanese, IconJava, IconJavaColor, IconJavaDuke, IconJavaDukeColor, IconKey, IconKiroColor, IconKotlin, IconKotlinColor, IconKotlinWhite, IconLaptop, IconLaunchdarkly, IconLegacyApp, IconLightbulb, IconLink, IconLinux, IconLock, IconLockOpen, IconLogin, IconLogout, IconMacos, IconMagicWand, IconMagnifier, IconMail, IconMcp, IconMedal, IconMemory, IconMenuGrid, IconMenuHamburger, IconMessage, IconMessageAlert, IconMessageQuestion, IconMicrophone, IconMinus, IconMinusCircle, IconMinusCircleFilled, IconMobile, IconMobileLandscape, IconMonitorChart, IconMoreHorizontal, IconMoreVertical, IconNews, IconNextjs, IconNodejs, IconOpenInNew, IconOther, IconOutsideContributor, IconOverview, IconPause, IconPencil, IconPeople, IconPercent, IconPerson, IconPersonWithDesk, IconPin, IconPlay, IconPlus, IconPlusCircle, IconPlusCircleFilled, IconPower, IconProject, IconProjectSettings, IconPull, IconPush, IconPuzzle, IconPython, IconPythonColor, IconQuestionCircle, IconQuestionCircleFilled, IconReact, IconRefresh, IconRegex, IconRelease, IconReleaseFilled, IconRemoteAccess, IconReplace, IconResponsiveness, IconReviewerApproved, IconReviewerAssigned, IconReviewerRejected, IconRuby, IconRubyColor, IconSave, IconSecurityShield, IconSettings, IconSettingsFilled, IconShuffle, IconSiren, IconSkip, IconSkipCircle, IconSkipCircleFilled, IconSlack, IconSlackColor, IconSparkle, IconSparkleFilled, IconSpinnerOnDisabled, IconSpinnerPurple, IconSpinnerPurpleDouble, IconSpinnerWhite, IconStability, IconStack, IconStar, IconStep, IconStop, IconStopwatch, IconTabPlus, IconTag, IconTasks, IconTeams, IconTeamsColor, IconTemplateCode, IconTerminal, IconTerminalFilled, IconTestQuarantine, IconThemeDarkToggle, IconThumbDown, IconThumbUp, IconTools, IconTrash, IconTrigger, IconUbuntu, IconUbuntuColor, IconUnity3D, IconUnpin, IconUpload, IconValidateShield, IconVideo, IconVsCode, IconWarning, IconWarningYellow, IconWebUi, IconWebhooks, IconWindsurf, IconWorkflow, IconWorkflowFlow, IconXTwitter, IconXamarin, IconXcode, ResponsiveProvider, bitkitIcon, bitkitTheme as bitriseTheme, createBitkitToast, createTreeCollection, dismissBitkitToast, rem, uiSideNavRailWidth, useBitkitTour, useResponsive, useStepsDialog, useUISideNav };
394
+ export { BitkitAccordion_default as BitkitAccordion, BitkitActionBar, BitkitActionMenu_default as BitkitActionMenu, BitkitAlert, BitkitAvatar, BitkitBadge, BitkitBreadcrumb, BitkitButton, BitkitCalendar, BitkitCheckbox, BitkitCheckboxGroup, BitkitCloseButton, BitkitCodeSnippet, BitkitCollapsible, BitkitColorButton, BitkitCombobox_default as BitkitCombobox, BitkitControlButton, BitkitDataWidget, BitkitDatePicker, BitkitDefinitionTooltip, BitkitDialog_default as BitkitDialog, BitkitDraggableCard, BitkitDrawer, BitkitEmptyState, BitkitExpandableCard, BitkitField, BitkitFileInput, BitkitFormDialog_default as BitkitFormDialog, BitkitGroupHeading, BitkitHeading, BitkitIconButton, BitkitInlineLoading, BitkitLabel, BitkitLabelTooltip, BitkitLabeledData, BitkitLightbox, BitkitLink, BitkitLinkButton, BitkitList_default as BitkitList, BitkitMarkdown, BitkitMarkdownCard, BitkitMultiselect_default as BitkitMultiselect, BitkitMultiselectMenu, BitkitNativeSelect, BitkitNoteCard, BitkitNumberInput, BitkitOverflowContent, BitkitOverflowTooltip, BitkitPageFooter_default as BitkitPageFooter, BitkitPageHeader, BitkitPageSidebar_default as BitkitPageSidebar, BitkitPagination, BitkitPaginationLoadMore, BitkitPopover, BitkitProgressBar, BitkitPromoBanner, Provider as BitkitProvider, BitkitRadio, BitkitRadioGroup, BitkitRibbon, BitkitSearchInput, BitkitSectionHeading, BitkitSegmentedControl_default as BitkitSegmentedControl, BitkitSelect_default as BitkitSelect, BitkitSelectMenu, BitkitSelectMenuAction, BitkitSelectableTag_default as BitkitSelectableTag, BitkitSettingsCard_default as BitkitSettingsCard, BitkitSkeletonGroup, BitkitSpinner, BitkitSplitButton_default as BitkitSplitButton, BitkitStat, BitkitSteps_default as BitkitSteps, BitkitStepsCard_default as BitkitStepsCard, BitkitStepsDialog_default as BitkitStepsDialog, BitkitSwitch, BitkitTable, BitkitTableCard, BitkitTabs, BitkitTag, BitkitTagsInput, BitkitTextArea, BitkitTextInput, BitkitToggleButton, BitkitToggletip, BitkitTooltip, BitkitTour, BitkitTreeView, BitkitUIHeader_default as BitkitUIHeader, BitkitUISideNav_default as BitkitUISideNav, IconAbortCircle, IconAbortCircleFilled, IconAddons, IconAgent, IconAnchor, IconAndroid, IconApp, IconAppSettings, IconAppStore, IconAppStoreColor, IconApple, IconArchive, IconArchiveDelete, IconArchiveRestore, IconArrowBackAndDown, IconArrowBackAndUp, IconArrowDown, IconArrowForwardAndDown, IconArrowForwardAndUp, IconArrowLeft, IconArrowNortheast, IconArrowNorthwest, IconArrowRight, IconArrowUp, IconArrowsHorizontal, IconArrowsVertical, IconAutomation, IconAws, IconAwsColor, IconBadge3RdParty, IconBadgeBitrise, IconBadgeUpgrade, IconBadgeVersionOk, IconBazel, IconBell, IconBitbot, IconBitbotError, IconBitbucket, IconBitbucketColor, IconBitbucketNeutral, IconBitbucketWhite, IconBlockCircle, IconBook, IconBoxArrowDown, IconBoxDot, IconBoxLinesOverflow, IconBoxLinesWrap, IconBranch, IconBrowserstackColor, IconBug, IconBuild, IconBuildCache, IconBuildCacheFilled, IconBuildEnvSetup, IconBuildHub, IconBuildHubFilled, IconCalendar, IconChangePlan, IconChat, IconCheck, IconCheckCircle, IconCheckCircleFilled, IconChevronDown, IconChevronLeft, IconChevronRight, IconChevronUp, IconCi, IconCiFilled, IconCircle, IconCircleDashed, IconCircleHalfFilled, IconClaude, IconClaudeColor, IconClock, IconCode, IconCodePush, IconCodeSigning, IconCoffee, IconCommit, IconConfigure, IconConnectedAccounts, IconContainer, IconCopilot, IconCopy, IconCordova, IconCpu, IconCreditcard, IconCredits, IconCross, IconCrossCircle, IconCrossCircleFilled, IconCrown, IconCursor, IconCycle, IconDashboard, IconDashboardFilled, IconDeployment, IconDetails, IconDoc, IconDollar, IconDot, IconDotnet, IconDotnetColor, IconDotnetText, IconDotnetTextColor, IconDoubleCircle, IconDownload, IconDragHandle, IconEc2Ami, IconEnterprise, IconErrorCircle, IconErrorCircleFilled, IconExpand, IconExtraBuildCapacity, IconEye, IconEyeSlash, IconFastlane, IconFile, IconFileDoc, IconFilePdf, IconFilePlist, IconFileYml, IconFileZip, IconFilter, IconFlag, IconFlutter, IconFolder, IconFullscreen, IconFullscreenExit, IconGauge, IconGit, IconGithub, IconGitlab, IconGitlabColor, IconGitlabWhite, IconGlobe, IconGo, IconGoogleColor, IconGooglePlay, IconGooglePlayColor, IconGradle, IconGroup, IconHashtag, IconHeadset, IconHeart, IconHistory, IconHourglass, IconImage, IconInfoCircle, IconInfoCircleFilled, IconInsights, IconInsightsFilled, IconInstall, IconInteraction, IconInvoice, IconIonic, IconJapanese, IconJava, IconJavaColor, IconJavaDuke, IconJavaDukeColor, IconKey, IconKiroColor, IconKotlin, IconKotlinColor, IconKotlinWhite, IconLaptop, IconLaunchdarkly, IconLegacyApp, IconLightbulb, IconLink, IconLinux, IconLock, IconLockOpen, IconLogin, IconLogout, IconMacos, IconMagicWand, IconMagnifier, IconMail, IconMcp, IconMedal, IconMemory, IconMenuGrid, IconMenuHamburger, IconMessage, IconMessageAlert, IconMessageQuestion, IconMicrophone, IconMinus, IconMinusCircle, IconMinusCircleFilled, IconMobile, IconMobileLandscape, IconMonitorChart, IconMoreHorizontal, IconMoreVertical, IconNews, IconNextjs, IconNodejs, IconOpenInNew, IconOther, IconOutsideContributor, IconOverview, IconPause, IconPencil, IconPeople, IconPercent, IconPerson, IconPersonWithDesk, IconPin, IconPlay, IconPlus, IconPlusCircle, IconPlusCircleFilled, IconPower, IconProject, IconProjectSettings, IconPull, IconPush, IconPuzzle, IconPython, IconPythonColor, IconQuestionCircle, IconQuestionCircleFilled, IconReact, IconRefresh, IconRegex, IconRelease, IconReleaseFilled, IconRemoteAccess, IconReplace, IconResponsiveness, IconReviewerApproved, IconReviewerAssigned, IconReviewerRejected, IconRuby, IconRubyColor, IconSave, IconSecurityShield, IconSettings, IconSettingsFilled, IconShuffle, IconSiren, IconSkip, IconSkipCircle, IconSkipCircleFilled, IconSlack, IconSlackColor, IconSparkle, IconSparkleFilled, IconSpinnerOnDisabled, IconSpinnerPurple, IconSpinnerPurpleDouble, IconSpinnerWhite, IconStability, IconStack, IconStar, IconStep, IconStop, IconStopwatch, IconTabPlus, IconTag, IconTasks, IconTeams, IconTeamsColor, IconTemplateCode, IconTerminal, IconTerminalFilled, IconTestQuarantine, IconThemeDarkToggle, IconThumbDown, IconThumbUp, IconTools, IconTrash, IconTrigger, IconUbuntu, IconUbuntuColor, IconUnity3D, IconUnpin, IconUpload, IconValidateShield, IconVideo, IconVsCode, IconWarning, IconWarningYellow, IconWebUi, IconWebhooks, IconWindsurf, IconWorkflow, IconWorkflowFlow, IconXTwitter, IconXamarin, IconXcode, ResponsiveProvider, bitkitIcon, bitkitTheme as bitriseTheme, createBitkitToast, createTreeCollection, dismissBitkitToast, rem, uiHeaderHeight, uiHeaderHeightPx, uiSideNavRailWidth, useBitkitTour, useResponsive, useStepsDialog, useUISideNav };
@@ -0,0 +1,103 @@
1
+ import { rem } from "../themeUtils.js";
2
+ import { defineRecipe } from "@chakra-ui/react/styled-system";
3
+ //#region lib/theme/recipes/UIHeaderButton.recipe.ts
4
+ var borderColors = (variant) => variant === "secondary" ? {
5
+ base: "sys/ui/header/button/secondary/border",
6
+ disabled: "sys/ui/header/button/secondary/border-disabled"
7
+ } : {
8
+ base: "transparent",
9
+ disabled: "transparent"
10
+ };
11
+ var variantStyles = (variant) => {
12
+ const border = borderColors(variant);
13
+ return {
14
+ background: `sys/ui/header/button/${variant}/bg`,
15
+ borderColor: border.base,
16
+ color: `sys/ui/header/button/${variant}/fg`,
17
+ _hover: {
18
+ background: `sys/ui/header/button/${variant}/bg-hover`,
19
+ _active: { background: `sys/ui/header/button/${variant}/bg-active` }
20
+ },
21
+ _active: { background: `sys/ui/header/button/${variant}/bg-active` },
22
+ _selected: {
23
+ background: `sys/ui/header/button/${variant}/bg-active`,
24
+ _hover: { background: `sys/ui/header/button/${variant}/bg-active` }
25
+ },
26
+ _disabled: {
27
+ background: `sys/ui/header/button/${variant}/bg-disabled`,
28
+ borderColor: border.disabled,
29
+ color: `sys/ui/header/button/${variant}/fg-disabled`,
30
+ cursor: "not-allowed"
31
+ }
32
+ };
33
+ };
34
+ var badgeDot = {
35
+ background: "sys/ui/header/badge/indigo",
36
+ borderRadius: "full",
37
+ content: "\"\"",
38
+ pointerEvents: "none",
39
+ position: "absolute"
40
+ };
41
+ var badgeStyles = {
42
+ _before: {
43
+ ...badgeDot,
44
+ height: "8",
45
+ insetBlockStart: "-4",
46
+ insetInlineEnd: "-4",
47
+ width: "8"
48
+ },
49
+ _after: {
50
+ ...badgeDot,
51
+ height: rem(10),
52
+ insetBlockStart: rem(-5),
53
+ insetInlineEnd: rem(-5),
54
+ opacity: .5,
55
+ width: rem(10)
56
+ }
57
+ };
58
+ var uiHeaderButtonRecipe = defineRecipe({
59
+ className: "ui-header-button",
60
+ base: {
61
+ alignItems: "center",
62
+ borderRadius: "4",
63
+ borderStyle: "solid",
64
+ borderWidth: "1",
65
+ cursor: "pointer",
66
+ display: "inline-flex",
67
+ flexShrink: 0,
68
+ gap: "4",
69
+ height: "32",
70
+ justifyContent: "center",
71
+ minWidth: "48",
72
+ paddingInline: "8",
73
+ position: "relative",
74
+ textDecoration: "none",
75
+ textStyle: "comp/button/sm",
76
+ whiteSpace: "nowrap",
77
+ "&:not(:last-child)": { marginInlineEnd: "8" },
78
+ _disabled: { cursor: "not-allowed" }
79
+ },
80
+ variants: {
81
+ variant: {
82
+ primary: variantStyles("primary"),
83
+ secondary: variantStyles("secondary"),
84
+ tertiary: variantStyles("tertiary")
85
+ },
86
+ badge: {
87
+ idle: badgeStyles,
88
+ pulse: {
89
+ ...badgeStyles,
90
+ _after: {
91
+ ...badgeStyles._after,
92
+ animation: "ping",
93
+ _motionReduce: { animation: "none" }
94
+ }
95
+ }
96
+ }
97
+ },
98
+ defaultVariants: { variant: "primary" }
99
+ });
100
+ //#endregion
101
+ export { uiHeaderButtonRecipe as default };
102
+
103
+ //# sourceMappingURL=UIHeaderButton.recipe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UIHeaderButton.recipe.js","names":[],"sources":["../../../lib/theme/recipes/UIHeaderButton.recipe.ts"],"sourcesContent":["import { defineRecipe, type SystemStyleObject } from '@chakra-ui/react/styled-system';\n\nimport { rem } from '../themeUtils';\n\ntype Variant = 'primary' | 'secondary' | 'tertiary';\n\nconst borderColors = (variant: Variant) =>\n variant === 'secondary'\n ? { base: 'sys/ui/header/button/secondary/border', disabled: 'sys/ui/header/button/secondary/border-disabled' }\n : { base: 'transparent', disabled: 'transparent' };\n\nconst variantStyles = (variant: Variant): SystemStyleObject => {\n const border = borderColors(variant);\n\n return {\n background: `sys/ui/header/button/${variant}/bg`,\n borderColor: border.base,\n color: `sys/ui/header/button/${variant}/fg`,\n // `_hover`/`_active` compile to `:not(:disabled, [data-disabled])`, so they never match a\n // disabled button and `_disabled` wins without `!important`.\n _hover: {\n background: `sys/ui/header/button/${variant}/bg-hover`,\n // Repeat active under hover so clicking while hovering keeps the active styles.\n _active: {\n background: `sys/ui/header/button/${variant}/bg-active`,\n },\n },\n _active: {\n background: `sys/ui/header/button/${variant}/bg-active`,\n },\n // A button that holds a panel open stays pressed while the panel is, hover included — letting\n // hover lighten it would read as the panel having closed.\n _selected: {\n background: `sys/ui/header/button/${variant}/bg-active`,\n _hover: {\n background: `sys/ui/header/button/${variant}/bg-active`,\n },\n },\n _disabled: {\n background: `sys/ui/header/button/${variant}/bg-disabled`,\n borderColor: border.disabled,\n color: `sys/ui/header/button/${variant}/fg-disabled`,\n cursor: 'not-allowed',\n },\n };\n};\n\nconst badgeDot: SystemStyleObject = {\n background: 'sys/ui/header/badge/indigo',\n borderRadius: 'full',\n content: '\"\"',\n pointerEvents: 'none',\n position: 'absolute',\n};\n\nconst badgeStyles: SystemStyleObject = {\n _before: {\n ...badgeDot,\n height: '8',\n insetBlockStart: '-4',\n insetInlineEnd: '-4',\n width: '8',\n },\n _after: {\n ...badgeDot,\n height: rem(10),\n insetBlockStart: rem(-5),\n insetInlineEnd: rem(-5),\n opacity: 0.5,\n width: rem(10),\n },\n};\n\nconst uiHeaderButtonRecipe = defineRecipe({\n className: 'ui-header-button',\n base: {\n alignItems: 'center',\n borderRadius: '4',\n borderStyle: 'solid',\n borderWidth: '1',\n cursor: 'pointer',\n display: 'inline-flex',\n flexShrink: 0,\n gap: '4',\n height: '32',\n justifyContent: 'center',\n minWidth: '48',\n paddingInline: '8',\n position: 'relative',\n textDecoration: 'none',\n textStyle: 'comp/button/sm',\n whiteSpace: 'nowrap',\n '&:not(:last-child)': {\n marginInlineEnd: '8',\n },\n _disabled: {\n cursor: 'not-allowed',\n },\n },\n variants: {\n variant: {\n primary: variantStyles('primary'),\n secondary: variantStyles('secondary'),\n tertiary: variantStyles('tertiary'),\n },\n badge: {\n idle: badgeStyles,\n pulse: {\n ...badgeStyles,\n _after: {\n ...badgeStyles._after,\n // The system's own ping: the ring expands past the dot and fades out.\n animation: 'ping',\n _motionReduce: {\n animation: 'none',\n },\n },\n },\n },\n },\n defaultVariants: {\n variant: 'primary',\n },\n});\n\nexport default uiHeaderButtonRecipe;\n"],"mappings":";;;AAMA,IAAM,gBAAgB,YACpB,YAAY,cACR;CAAE,MAAM;CAAyC,UAAU;AAAiD,IAC5G;CAAE,MAAM;CAAe,UAAU;AAAc;AAErD,IAAM,iBAAiB,YAAwC;CAC7D,MAAM,SAAS,aAAa,OAAO;CAEnC,OAAO;EACL,YAAY,wBAAwB,QAAQ;EAC5C,aAAa,OAAO;EACpB,OAAO,wBAAwB,QAAQ;EAGvC,QAAQ;GACN,YAAY,wBAAwB,QAAQ;GAE5C,SAAS,EACP,YAAY,wBAAwB,QAAQ,YAC9C;EACF;EACA,SAAS,EACP,YAAY,wBAAwB,QAAQ,YAC9C;EAGA,WAAW;GACT,YAAY,wBAAwB,QAAQ;GAC5C,QAAQ,EACN,YAAY,wBAAwB,QAAQ,YAC9C;EACF;EACA,WAAW;GACT,YAAY,wBAAwB,QAAQ;GAC5C,aAAa,OAAO;GACpB,OAAO,wBAAwB,QAAQ;GACvC,QAAQ;EACV;CACF;AACF;AAEA,IAAM,WAA8B;CAClC,YAAY;CACZ,cAAc;CACd,SAAS;CACT,eAAe;CACf,UAAU;AACZ;AAEA,IAAM,cAAiC;CACrC,SAAS;EACP,GAAG;EACH,QAAQ;EACR,iBAAiB;EACjB,gBAAgB;EAChB,OAAO;CACT;CACA,QAAQ;EACN,GAAG;EACH,QAAQ,IAAI,EAAE;EACd,iBAAiB,IAAI,EAAE;EACvB,gBAAgB,IAAI,EAAE;EACtB,SAAS;EACT,OAAO,IAAI,EAAE;CACf;AACF;AAEA,IAAM,uBAAuB,aAAa;CACxC,WAAW;CACX,MAAM;EACJ,YAAY;EACZ,cAAc;EACd,aAAa;EACb,aAAa;EACb,QAAQ;EACR,SAAS;EACT,YAAY;EACZ,KAAK;EACL,QAAQ;EACR,gBAAgB;EAChB,UAAU;EACV,eAAe;EACf,UAAU;EACV,gBAAgB;EAChB,WAAW;EACX,YAAY;EACZ,sBAAsB,EACpB,iBAAiB,IACnB;EACA,WAAW,EACT,QAAQ,cACV;CACF;CACA,UAAU;EACR,SAAS;GACP,SAAS,cAAc,SAAS;GAChC,WAAW,cAAc,WAAW;GACpC,UAAU,cAAc,UAAU;EACpC;EACA,OAAO;GACL,MAAM;GACN,OAAO;IACL,GAAG;IACH,QAAQ;KACN,GAAG,YAAY;KAEf,WAAW;KACX,eAAe,EACb,WAAW,OACb;IACF;GACF;EACF;CACF;CACA,iBAAiB,EACf,SAAS,UACX;AACF,CAAC"}