@bitrise/bitkit-v2 0.3.359-beta.2314 → 0.3.359
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/BitkitCheckbox/BitkitCheckbox.d.ts +5 -12
- package/dist/components/BitkitCheckbox/BitkitCheckbox.js +1 -1
- package/dist/components/BitkitCheckbox/BitkitCheckbox.js.map +1 -1
- package/dist/components/BitkitControlButton/BitkitControlButton.js +1 -0
- package/dist/components/BitkitControlButton/BitkitControlButton.js.map +1 -1
- package/dist/components/BitkitGroupHeading/BitkitGroupHeading.d.ts +2 -0
- package/dist/components/BitkitGroupHeading/BitkitGroupHeading.js +15 -11
- package/dist/components/BitkitGroupHeading/BitkitGroupHeading.js.map +1 -1
- package/dist/components/BitkitPageSidebar/BitkitPageSidebar.d.ts +74 -0
- package/dist/components/BitkitPageSidebar/BitkitPageSidebar.js +244 -0
- package/dist/components/BitkitPageSidebar/BitkitPageSidebar.js.map +1 -0
- package/dist/components/BitkitRadio/BitkitRadio.d.ts +11 -23
- package/dist/components/BitkitRadio/BitkitRadio.js +3 -7
- package/dist/components/BitkitRadio/BitkitRadio.js.map +1 -1
- package/dist/components/BitkitRadioItem/BitkitRadioItem.d.ts +30 -0
- package/dist/components/BitkitRadioItem/BitkitRadioItem.js +29 -0
- package/dist/components/BitkitRadioItem/BitkitRadioItem.js.map +1 -0
- package/dist/components/index.d.ts +2 -1
- package/dist/main.js +3 -2
- package/dist/theme/slot-recipes/GroupHeading.recipe.js +4 -1
- package/dist/theme/slot-recipes/GroupHeading.recipe.js.map +1 -1
- package/dist/theme/slot-recipes/PageSidebar.recipe.d.ts +82 -0
- package/dist/theme/slot-recipes/PageSidebar.recipe.js +230 -0
- package/dist/theme/slot-recipes/PageSidebar.recipe.js.map +1 -0
- package/dist/theme/slot-recipes/index.d.ts +81 -21
- package/dist/theme/slot-recipes/index.js +2 -2
- package/dist/theme/slot-recipes/index.js.map +1 -1
- package/dist/utilities/useIsTruncated.d.ts +27 -0
- package/dist/utilities/useIsTruncated.js +51 -0
- package/dist/utilities/useIsTruncated.js.map +1 -0
- package/docs/v1-to-v2-migration-guide.md +9 -6
- package/package.json +1 -1
- package/dist/components/BitkitSidebar/BitkitSidebar.d.ts +0 -45
- package/dist/components/BitkitSidebar/BitkitSidebar.js +0 -147
- package/dist/components/BitkitSidebar/BitkitSidebar.js.map +0 -1
- package/dist/theme/slot-recipes/Sidebar.recipe.d.ts +0 -22
- package/dist/theme/slot-recipes/Sidebar.recipe.js +0 -143
- package/dist/theme/slot-recipes/Sidebar.recipe.js.map +0 -1
- package/dist/utilities/isEmptyNode.d.ts +0 -6
- package/dist/utilities/isEmptyNode.js +0 -10
- package/dist/utilities/isEmptyNode.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BitkitRadio.js","names":[],"sources":["../../../lib/components/BitkitRadio/BitkitRadio.tsx"],"sourcesContent":["import { RadioGroup, useRadioGroupStyles } from '@chakra-ui/react/radio-group';\nimport { Skeleton } from '@chakra-ui/react/skeleton';\nimport { type DataAttr } from '@chakra-ui/react/styled-system';\nimport { Text } from '@chakra-ui/react/text';\nimport { forwardRef, type InputHTMLAttributes, type
|
|
1
|
+
{"version":3,"file":"BitkitRadio.js","names":[],"sources":["../../../lib/components/BitkitRadio/BitkitRadio.tsx"],"sourcesContent":["import { RadioGroup, useRadioGroupStyles } from '@chakra-ui/react/radio-group';\nimport { Skeleton } from '@chakra-ui/react/skeleton';\nimport { type DataAttr } from '@chakra-ui/react/styled-system';\nimport { Text } from '@chakra-ui/react/text';\nimport { forwardRef, type InputHTMLAttributes, type ReactNode } from 'react';\n\nimport BitkitBadge from '../BitkitBadge/BitkitBadge';\n\n/**\n * Passthrough attributes for the radio `<input>`. The RadioGroup machine owns the behavioral / state\n * attributes (`checked`, `value`, `name`, `type`, `disabled`, `onChange`, …), so they're excluded —\n * setting them here would let the input drift out of sync with its `RadioGroup.Item`. Keep it to\n * things like `data-testid`.\n */\ntype RadioInputProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'checked' | 'defaultChecked' | 'defaultValue' | 'disabled' | 'name' | 'onChange' | 'type' | 'value'\n> &\n DataAttr;\n\nexport type BitkitRadioProps = {\n badge?: 'off' | 'on';\n helperText?: ReactNode;\n inputProps?: RadioInputProps;\n labelText: ReactNode;\n state?: 'disabled' | 'skeleton';\n} & Omit<RadioGroup.ItemProps, 'disabled'>;\n\nconst BitkitRadio = forwardRef<HTMLInputElement, BitkitRadioProps>((props, ref) => {\n const { badge, helperText, inputProps, labelText, state, ...rest } = props;\n const styles = useRadioGroupStyles();\n\n // Skeleton has to set disabled to be inert: the Skeleton wrapper's own pointer-events: none never\n // stopped a click, it only moved the target to the <label>, which activates the control. The cursor\n // style prop then keeps the arrow plain — style props land outside @layer recipes, where the\n // recipe's _disabled: { cursor: 'not-allowed' } sits.\n return (\n <RadioGroup.Item\n cursor={state === 'skeleton' ? 'default' : undefined}\n disabled={state === 'disabled' || state === 'skeleton'}\n {...rest}\n >\n <RadioGroup.ItemHiddenInput ref={ref} {...inputProps} />\n <Skeleton borderRadius=\"50%\" loading={state === 'skeleton'}>\n <RadioGroup.ItemIndicator />\n </Skeleton>\n {!!badge && (\n <Skeleton loading={state === 'skeleton'}>\n <BitkitBadge colorVariant={badge === 'on' ? 'green' : 'neutral'} css={styles.badge}>\n {badge}\n </BitkitBadge>\n </Skeleton>\n )}\n <Skeleton loading={state === 'skeleton'}>\n <RadioGroup.ItemText as=\"div\">\n {labelText}\n {!!helperText && (\n <Text color={state === 'disabled' ? 'text/disabled' : 'text/helper'} textStyle=\"comp/input/helperText\">\n {helperText}\n </Text>\n )}\n </RadioGroup.ItemText>\n </Skeleton>\n </RadioGroup.Item>\n );\n});\n\nBitkitRadio.displayName = 'BitkitRadio';\n\nexport default BitkitRadio;\n"],"mappings":";;;;;;;AA4BA,IAAM,cAAc,YAAgD,OAAO,QAAQ;CACjF,MAAM,EAAE,OAAO,YAAY,YAAY,WAAW,OAAO,GAAG,SAAS;CACrE,MAAM,SAAS,oBAAoB;CAMnC,OACE,qBAAC,WAAW,MAAZ;EACE,QAAQ,UAAU,aAAa,YAAY,KAAA;EAC3C,UAAU,UAAU,cAAc,UAAU;EAC5C,GAAI;EAHN,UAAA;GAKE,oBAAC,WAAW,iBAAZ;IAAiC;IAAK,GAAI;GAAa,CAAA;GACvD,oBAAC,UAAD;IAAU,cAAa;IAAM,SAAS,UAAU;IAC9C,UAAA,oBAAC,WAAW,eAAZ,CAA2B,CAAA;GACnB,CAAA;GACT,CAAC,CAAC,SACD,oBAAC,UAAD;IAAU,SAAS,UAAU;IAC3B,UAAA,oBAAC,aAAD;KAAa,cAAc,UAAU,OAAO,UAAU;KAAW,KAAK,OAAO;KAC1E,UAAA;IACU,CAAA;GACL,CAAA;GAEZ,oBAAC,UAAD;IAAU,SAAS,UAAU;IAC3B,UAAA,qBAAC,WAAW,UAAZ;KAAqB,IAAG;KAAxB,UAAA,CACG,WACA,CAAC,CAAC,cACD,oBAAC,MAAD;MAAM,OAAO,UAAU,aAAa,kBAAkB;MAAe,WAAU;MAC5E,UAAA;KACG,CAAA,CAEW;;GACb,CAAA;EACK;;AAErB,CAAC;AAED,YAAY,cAAc"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { RadioGroup } from '@chakra-ui/react/radio-group';
|
|
2
|
+
import { DataAttr } from '@chakra-ui/react/styled-system';
|
|
3
|
+
import { InputHTMLAttributes } from 'react';
|
|
4
|
+
/**
|
|
5
|
+
* Passthrough attributes for the radio `<input>`. The RadioGroup machine owns the behavioral / state
|
|
6
|
+
* attributes (`checked`, `value`, `name`, `type`, `disabled`, `onChange`, …), so they're excluded —
|
|
7
|
+
* setting them here would let the input drift out of sync with its `RadioGroup.Item`. Keep it to
|
|
8
|
+
* things like `data-testid`.
|
|
9
|
+
*/
|
|
10
|
+
type RadioInputProps = Omit<InputHTMLAttributes<HTMLInputElement>, 'checked' | 'defaultChecked' | 'defaultValue' | 'disabled' | 'name' | 'onChange' | 'type' | 'value'> & DataAttr;
|
|
11
|
+
export interface BitkitRadioItemProps extends Omit<RadioGroup.ItemProps, 'children' | 'disabled'> {
|
|
12
|
+
/** Props forwarded to the underlying radio `<input>` (e.g. `data-testid`). */
|
|
13
|
+
inputProps?: RadioInputProps;
|
|
14
|
+
/**
|
|
15
|
+
* Accessible name for the radio. Not rendered — this is an icon-only control — so it's required to
|
|
16
|
+
* keep the radio from ending up with an empty accessible name.
|
|
17
|
+
*/
|
|
18
|
+
label: string;
|
|
19
|
+
state?: 'disabled';
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* An icon-only radio: the styled indicator without any label chrome. Use it to place radios inside a
|
|
23
|
+
* custom layout — table cells, a shared CSS grid, a virtualized list — where BitkitRadioGroup's
|
|
24
|
+
* fieldset wrapper doesn't fit. Compose it under a Chakra `RadioGroup.Root` (kept layout-neutral with
|
|
25
|
+
* `css` / `asChild`): the grouping semantics come from that root and the Bitkit visual from the
|
|
26
|
+
* theme, while `label` supplies the required accessible name. Reach for BitkitRadio instead whenever
|
|
27
|
+
* a visible label fits.
|
|
28
|
+
*/
|
|
29
|
+
declare const BitkitRadioItem: import('react').ForwardRefExoticComponent<BitkitRadioItemProps & import('react').RefAttributes<HTMLInputElement>>;
|
|
30
|
+
export default BitkitRadioItem;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { forwardRef } from "react";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { RadioGroup } from "@chakra-ui/react/radio-group";
|
|
4
|
+
//#region lib/components/BitkitRadioItem/BitkitRadioItem.tsx
|
|
5
|
+
/**
|
|
6
|
+
* An icon-only radio: the styled indicator without any label chrome. Use it to place radios inside a
|
|
7
|
+
* custom layout — table cells, a shared CSS grid, a virtualized list — where BitkitRadioGroup's
|
|
8
|
+
* fieldset wrapper doesn't fit. Compose it under a Chakra `RadioGroup.Root` (kept layout-neutral with
|
|
9
|
+
* `css` / `asChild`): the grouping semantics come from that root and the Bitkit visual from the
|
|
10
|
+
* theme, while `label` supplies the required accessible name. Reach for BitkitRadio instead whenever
|
|
11
|
+
* a visible label fits.
|
|
12
|
+
*/
|
|
13
|
+
var BitkitRadioItem = forwardRef((props, ref) => {
|
|
14
|
+
const { inputProps, label, state, ...rest } = props;
|
|
15
|
+
return /* @__PURE__ */ jsxs(RadioGroup.Item, {
|
|
16
|
+
disabled: state === "disabled",
|
|
17
|
+
...rest,
|
|
18
|
+
children: [/* @__PURE__ */ jsx(RadioGroup.ItemHiddenInput, {
|
|
19
|
+
ref,
|
|
20
|
+
...inputProps,
|
|
21
|
+
"aria-label": label
|
|
22
|
+
}), /* @__PURE__ */ jsx(RadioGroup.ItemIndicator, {})]
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
BitkitRadioItem.displayName = "BitkitRadioItem";
|
|
26
|
+
//#endregion
|
|
27
|
+
export { BitkitRadioItem as default };
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=BitkitRadioItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BitkitRadioItem.js","names":[],"sources":["../../../lib/components/BitkitRadioItem/BitkitRadioItem.tsx"],"sourcesContent":["import { RadioGroup } from '@chakra-ui/react/radio-group';\nimport { type DataAttr } from '@chakra-ui/react/styled-system';\nimport { forwardRef, type InputHTMLAttributes } from 'react';\n\n/**\n * Passthrough attributes for the radio `<input>`. The RadioGroup machine owns the behavioral / state\n * attributes (`checked`, `value`, `name`, `type`, `disabled`, `onChange`, …), so they're excluded —\n * setting them here would let the input drift out of sync with its `RadioGroup.Item`. Keep it to\n * things like `data-testid`.\n */\ntype RadioInputProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'checked' | 'defaultChecked' | 'defaultValue' | 'disabled' | 'name' | 'onChange' | 'type' | 'value'\n> &\n DataAttr;\n\nexport interface BitkitRadioItemProps extends Omit<RadioGroup.ItemProps, 'children' | 'disabled'> {\n /** Props forwarded to the underlying radio `<input>` (e.g. `data-testid`). */\n inputProps?: RadioInputProps;\n /**\n * Accessible name for the radio. Not rendered — this is an icon-only control — so it's required to\n * keep the radio from ending up with an empty accessible name.\n */\n label: string;\n state?: 'disabled';\n}\n\n/**\n * An icon-only radio: the styled indicator without any label chrome. Use it to place radios inside a\n * custom layout — table cells, a shared CSS grid, a virtualized list — where BitkitRadioGroup's\n * fieldset wrapper doesn't fit. Compose it under a Chakra `RadioGroup.Root` (kept layout-neutral with\n * `css` / `asChild`): the grouping semantics come from that root and the Bitkit visual from the\n * theme, while `label` supplies the required accessible name. Reach for BitkitRadio instead whenever\n * a visible label fits.\n */\nconst BitkitRadioItem = forwardRef<HTMLInputElement, BitkitRadioItemProps>((props, ref) => {\n const { inputProps, label, state, ...rest } = props;\n\n return (\n <RadioGroup.Item disabled={state === 'disabled'} {...rest}>\n <RadioGroup.ItemHiddenInput ref={ref} {...inputProps} aria-label={label} />\n <RadioGroup.ItemIndicator />\n </RadioGroup.Item>\n );\n});\n\nBitkitRadioItem.displayName = 'BitkitRadioItem';\n\nexport default BitkitRadioItem;\n"],"mappings":";;;;;;;;;;;;AAmCA,IAAM,kBAAkB,YAAoD,OAAO,QAAQ;CACzF,MAAM,EAAE,YAAY,OAAO,OAAO,GAAG,SAAS;CAE9C,OACE,qBAAC,WAAW,MAAZ;EAAiB,UAAU,UAAU;EAAY,GAAI;EAArD,UAAA,CACE,oBAAC,WAAW,iBAAZ;GAAiC;GAAK,GAAI;GAAY,cAAY;EAAQ,CAAA,GAC1E,oBAAC,WAAW,eAAZ,CAA2B,CAAA,CACZ;;AAErB,CAAC;AAED,gBAAgB,cAAc"}
|
|
@@ -49,6 +49,7 @@ export { default as BitkitNumberInput, type BitkitNumberInputProps } from './Bit
|
|
|
49
49
|
export { default as BitkitOverflowContent, type BitkitOverflowContentProps, } from './BitkitOverflowContent/BitkitOverflowContent';
|
|
50
50
|
export { default as BitkitOverflowTooltip, type BitkitOverflowTooltipProps, } from './BitkitOverflowTooltip/BitkitOverflowTooltip';
|
|
51
51
|
export { default as BitkitPageFooter, type BitkitPageFooterItemProps, type BitkitPageFooterProps, } from './BitkitPageFooter/BitkitPageFooter';
|
|
52
|
+
export { default as BitkitPageSidebar, type BitkitPageSidebarBodyProps, type BitkitPageSidebarDividerProps, type BitkitPageSidebarFooterProps, type BitkitPageSidebarGroupHeadingProps, type BitkitPageSidebarItemProps, type BitkitPageSidebarProjectProps, type BitkitPageSidebarProps, type BitkitPageSidebarTitleProps, } from './BitkitPageSidebar/BitkitPageSidebar';
|
|
52
53
|
export { default as BitkitPagination, type BitkitPaginationLabels, type BitkitPaginationProps, } from './BitkitPagination/BitkitPagination';
|
|
53
54
|
export { default as BitkitPaginationLoadMore, type BitkitPaginationLoadMoreProps, } from './BitkitPaginationLoadMore/BitkitPaginationLoadMore';
|
|
54
55
|
export { default as BitkitPopover, type BitkitPopoverProps } from './BitkitPopover/BitkitPopover';
|
|
@@ -56,6 +57,7 @@ export { default as BitkitProgressBar, type BitkitProgressBarProps, type BitkitP
|
|
|
56
57
|
export { default as BitkitPromoBanner, type BitkitPromoBannerProps } from './BitkitPromoBanner/BitkitPromoBanner';
|
|
57
58
|
export { default as BitkitRadio, type BitkitRadioProps } from './BitkitRadio/BitkitRadio';
|
|
58
59
|
export { default as BitkitRadioGroup, type BitkitRadioGroupProps } from './BitkitRadioGroup/BitkitRadioGroup';
|
|
60
|
+
export { default as BitkitRadioItem, type BitkitRadioItemProps } from './BitkitRadioItem/BitkitRadioItem';
|
|
59
61
|
export { default as BitkitRibbon, type BitkitRibbonProps } from './BitkitRibbon/BitkitRibbon';
|
|
60
62
|
export { default as BitkitSearchInput, type BitkitSearchInputProps } from './BitkitSearchInput/BitkitSearchInput';
|
|
61
63
|
export { default as BitkitSectionHeading, type BitkitSectionHeadingProps, } from './BitkitSectionHeading/BitkitSectionHeading';
|
|
@@ -65,7 +67,6 @@ export { default as BitkitSelectableTag, type BitkitSelectableTagItemProps, type
|
|
|
65
67
|
export { default as BitkitSelectMenu, type BitkitSelectMenuProps } from './BitkitSelectMenu/BitkitSelectMenu';
|
|
66
68
|
export { default as BitkitSelectMenuAction, type BitkitSelectMenuActionProps, } from './BitkitSelectMenu/BitkitSelectMenuAction';
|
|
67
69
|
export { default as BitkitSettingsCard, type BitkitSettingsCardContentProps, type BitkitSettingsCardProps, type BitkitSettingsCardStatusProps, } from './BitkitSettingsCard/BitkitSettingsCard';
|
|
68
|
-
export { default as BitkitSidebar, type BitkitSidebarFooterProps, type BitkitSidebarGroupHeadingProps, type BitkitSidebarItemProps, type BitkitSidebarProjectProps, type BitkitSidebarProps, type BitkitSidebarTitleProps, } from './BitkitSidebar/BitkitSidebar';
|
|
69
70
|
export { default as BitkitSkeletonGroup, type BitkitSkeletonGroupProps, } from './BitkitSkeletonGroup/BitkitSkeletonGroup';
|
|
70
71
|
export { default as BitkitSpinner, type BitkitSpinnerProps } from './BitkitSpinner/BitkitSpinner';
|
|
71
72
|
export { default as BitkitSplitButton, type BitkitSplitButtonProps } from './BitkitSplitButton/BitkitSplitButton';
|
package/dist/main.js
CHANGED
|
@@ -339,6 +339,7 @@ import BitkitNumberInput from "./components/BitkitNumberInput/BitkitNumberInput.
|
|
|
339
339
|
import BitkitOverflowContent from "./components/BitkitOverflowContent/BitkitOverflowContent.js";
|
|
340
340
|
import BitkitOverflowTooltip from "./components/BitkitOverflowTooltip/BitkitOverflowTooltip.js";
|
|
341
341
|
import BitkitPageFooter_default from "./components/BitkitPageFooter/BitkitPageFooter.js";
|
|
342
|
+
import BitkitPageSidebar_default from "./components/BitkitPageSidebar/BitkitPageSidebar.js";
|
|
342
343
|
import BitkitPagination from "./components/BitkitPagination/BitkitPagination.js";
|
|
343
344
|
import BitkitPaginationLoadMore from "./components/BitkitPaginationLoadMore/BitkitPaginationLoadMore.js";
|
|
344
345
|
import BitkitPopover from "./components/BitkitPopover/BitkitPopover.js";
|
|
@@ -346,6 +347,7 @@ import BitkitProgressBar from "./components/BitkitProgressBar/BitkitProgressBar.
|
|
|
346
347
|
import BitkitPromoBanner from "./components/BitkitPromoBanner/BitkitPromoBanner.js";
|
|
347
348
|
import BitkitRadio from "./components/BitkitRadio/BitkitRadio.js";
|
|
348
349
|
import BitkitRadioGroup from "./components/BitkitRadioGroup/BitkitRadioGroup.js";
|
|
350
|
+
import BitkitRadioItem from "./components/BitkitRadioItem/BitkitRadioItem.js";
|
|
349
351
|
import BitkitRibbon from "./components/BitkitRibbon/BitkitRibbon.js";
|
|
350
352
|
import BitkitTextInput from "./components/BitkitTextInput/BitkitTextInput.js";
|
|
351
353
|
import BitkitSearchInput from "./components/BitkitSearchInput/BitkitSearchInput.js";
|
|
@@ -354,7 +356,6 @@ import BitkitSegmentedControl_default from "./components/BitkitSegmentedControl/
|
|
|
354
356
|
import BitkitSelect_default from "./components/BitkitSelect/BitkitSelect.js";
|
|
355
357
|
import BitkitSelectableTag_default from "./components/BitkitSelectableTag/BitkitSelectableTag.js";
|
|
356
358
|
import BitkitSettingsCard_default from "./components/BitkitSettingsCard/BitkitSettingsCard.js";
|
|
357
|
-
import BitkitSidebar_default from "./components/BitkitSidebar/BitkitSidebar.js";
|
|
358
359
|
import BitkitSkeletonGroup from "./components/BitkitSkeletonGroup/BitkitSkeletonGroup.js";
|
|
359
360
|
import BitkitSpinner from "./components/BitkitSpinner/BitkitSpinner.js";
|
|
360
361
|
import BitkitSplitButton_default from "./components/BitkitSplitButton/BitkitSplitButton.js";
|
|
@@ -373,4 +374,4 @@ import BitkitTreeView, { createTreeCollection } from "./components/BitkitTreeVie
|
|
|
373
374
|
import useResponsive, { ResponsiveProvider } from "./hooks/useResponsive.js";
|
|
374
375
|
import bitkitTheme from "./theme/index.js";
|
|
375
376
|
import Provider from "./providers/BitkitProvider.js";
|
|
376
|
-
export { BitkitAccordion, BitkitActionBar, 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, BitkitExpandableRow, 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, 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,
|
|
377
|
+
export { BitkitAccordion, BitkitActionBar, 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, BitkitExpandableRow, 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, BitkitPageSidebar_default as BitkitPageSidebar, BitkitPagination, BitkitPaginationLoadMore, BitkitPopover, BitkitProgressBar, BitkitPromoBanner, Provider as BitkitProvider, BitkitRadio, BitkitRadioGroup, BitkitRadioItem, BitkitRibbon, BitkitSearchInput, BitkitSectionHeading, BitkitSegmentedControl_default as BitkitSegmentedControl, BitkitSelect_default as BitkitSelect, BitkitSelectMenu, BitkitSelectMenuAction, BitkitSelectableTag_default as BitkitSelectableTag, BitkitSettingsCard_default as BitkitSettingsCard, BitkitSkeletonGroup, BitkitSortableColumnHeader, BitkitSpinner, BitkitSplitButton_default as BitkitSplitButton, BitkitStat, BitkitStepperDialog_default as BitkitStepperDialog, BitkitSteps_default as BitkitSteps, BitkitStepsCard_default as BitkitStepsCard, BitkitSwitch, BitkitTabs, BitkitTag, BitkitTagsInput, BitkitTextArea, BitkitTextInput, BitkitToggleButton, BitkitTooltip, BitkitTour, BitkitTreeView, 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, IconCopy, IconCordova, IconCpu, IconCreditcard, IconCredits, IconCross, IconCrossCircle, IconCrossCircleFilled, IconCrown, IconCycle, IconDashboard, IconDashboardFilled, IconDeployment, IconDetails, IconDoc, IconDollar, IconDot, IconDotnet, IconDotnetColor, IconDotnetText, IconDotnetTextColor, IconDoubleCircle, IconDownload, IconDragHandle, IconEc2Ami, IconEnterprise, IconErrorCircle, IconErrorCircleFilled, IconExpand, IconExtraBuildCapacity, IconEye, IconEyeSlash, IconFastlane, 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, IconKotlin, IconKotlinColor, IconKotlinWhite, IconLaptop, IconLaunchdarkly, IconLegacyApp, IconLightbulb, IconLink, IconLinux, IconLock, IconLockOpen, IconLogin, IconLogout, IconMacos, IconMagicWand, IconMagnifier, IconMail, 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, 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, IconTag, IconTasks, IconTeams, IconTeamsColor, IconTemplateCode, IconTerminal, IconTestQuarantine, IconThemeDarkToggle, IconThumbDown, IconThumbUp, IconTools, IconTrash, IconTrigger, IconUbuntu, IconUbuntuColor, IconUnity3D, IconUpload, IconValidateShield, IconVideo, IconWarning, IconWarningYellow, IconWebUi, IconWebhooks, IconWorkflow, IconWorkflowFlow, IconXTwitter, IconXamarin, IconXcode, ResponsiveProvider, bitkitIcon, bitkitTheme as bitriseTheme, createBitkitToast, createTreeCollection, dismissBitkitToast, rem, useBitkitTour, useResponsive, useStepperDialog };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupHeading.recipe.js","names":[],"sources":["../../../lib/theme/slot-recipes/GroupHeading.recipe.ts"],"sourcesContent":["import { defineSlotRecipe } from '@chakra-ui/react/styled-system';\n\nconst groupHeadingRecipe = defineSlotRecipe({\n className: 'group-heading',\n slots: ['root', 'titleBlock', 'icon', 'label', 'separator'],\n base: {\n root: {\n alignItems: 'center',\n display: 'flex',\n gap: '16',\n overflow: 'clip',\n paddingBlockEnd: '4',\n paddingBlockStart: '8',\n paddingInlineEnd: '8',\n },\n titleBlock: {\n alignItems: 'center',\n display: 'flex',\n flexShrink: 0,\n gap: '4',\n },\n icon: {\n color: 'icon/tertiary',\n flexShrink: 0,\n },\n label: {\n color: 'text/tertiary',\n flexShrink: 0,\n textStyle: 'heading/h6',\n },\n separator: {\n flex: 1,\n },\n },\n});\n\nexport default groupHeadingRecipe;\n"],"mappings":";;AAEA,IAAM,qBAAqB,iBAAiB;CAC1C,WAAW;CACX,OAAO;EAAC;EAAQ;EAAc;EAAQ;EAAS;CAAW;CAC1D,MAAM;EACJ,MAAM;GACJ,YAAY;GACZ,SAAS;GACT,KAAK;GACL,UAAU;GACV,iBAAiB;GACjB,mBAAmB;GACnB,kBAAkB;EACpB;EACA,YAAY;GACV,YAAY;GACZ,SAAS;GACT,YAAY;GACZ,KAAK;EACP;EACA,MAAM;GACJ,OAAO;GACP,YAAY;EACd;EACA,OAAO;GACL,OAAO;GACP,YAAY;GACZ,WAAW;EACb;EACA,WAAW,
|
|
1
|
+
{"version":3,"file":"GroupHeading.recipe.js","names":[],"sources":["../../../lib/theme/slot-recipes/GroupHeading.recipe.ts"],"sourcesContent":["import { defineSlotRecipe } from '@chakra-ui/react/styled-system';\n\nconst groupHeadingRecipe = defineSlotRecipe({\n className: 'group-heading',\n slots: ['root', 'titleBlock', 'icon', 'label', 'separator'],\n base: {\n root: {\n alignItems: 'center',\n display: 'flex',\n gap: '16',\n overflow: 'clip',\n paddingBlockEnd: '4',\n paddingBlockStart: '8',\n paddingInlineEnd: '8',\n },\n titleBlock: {\n alignItems: 'center',\n display: 'flex',\n flexShrink: 0,\n gap: '4',\n },\n icon: {\n color: 'icon/tertiary',\n flexShrink: 0,\n },\n label: {\n color: 'text/tertiary',\n flexShrink: 0,\n textStyle: 'heading/h6',\n },\n separator: {\n // Lighter than the shared `Separator` recipe's `border/regular`, and that difference is in the\n // design: Figma's general Separator component (`62:701`) is `border/regular` #dfdae1, while the\n // Page sidebar's group header (`20014:6508`) draws its rule in `border/minimal` #efebef. A rule\n // that trails a label is quieter than one that stands alone.\n //\n // It sits here rather than in the sidebar so every group heading matches — the select menu's\n // group labels included. They render this same component, so a heading looks the same wherever\n // it appears instead of the sidebar owning a private variant.\n borderColor: 'border/minimal',\n flex: 1,\n },\n },\n});\n\nexport default groupHeadingRecipe;\n"],"mappings":";;AAEA,IAAM,qBAAqB,iBAAiB;CAC1C,WAAW;CACX,OAAO;EAAC;EAAQ;EAAc;EAAQ;EAAS;CAAW;CAC1D,MAAM;EACJ,MAAM;GACJ,YAAY;GACZ,SAAS;GACT,KAAK;GACL,UAAU;GACV,iBAAiB;GACjB,mBAAmB;GACnB,kBAAkB;EACpB;EACA,YAAY;GACV,YAAY;GACZ,SAAS;GACT,YAAY;GACZ,KAAK;EACP;EACA,MAAM;GACJ,OAAO;GACP,YAAY;EACd;EACA,OAAO;GACL,OAAO;GACP,YAAY;GACZ,WAAW;EACb;EACA,WAAW;GAST,aAAa;GACb,MAAM;EACR;CACF;AACF,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
declare const pageSidebarSlotRecipe: import('@chakra-ui/react').SlotRecipeDefinition<"body" | "footer" | "title" | "root" | "item" | "titleText" | "suffixIcon" | "titleBlock" | "itemLabel" | "itemIcon" | "contentBlock" | "divider" | "project" | "projectLabel" | "projectValue" | "projectValueWrapper" | "selectionMarker", {
|
|
2
|
+
hasBack: {
|
|
3
|
+
true: {
|
|
4
|
+
title: {
|
|
5
|
+
paddingBlockEnd: "8";
|
|
6
|
+
paddingInlineStart: "16";
|
|
7
|
+
};
|
|
8
|
+
titleBlock: {
|
|
9
|
+
gap: "4";
|
|
10
|
+
paddingBlock: "4";
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
false: {
|
|
14
|
+
title: {
|
|
15
|
+
paddingBlockEnd: "16";
|
|
16
|
+
paddingInlineStart: "24";
|
|
17
|
+
};
|
|
18
|
+
titleBlock: {
|
|
19
|
+
paddingBlock: "6";
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
isDisabled: {
|
|
24
|
+
true: {
|
|
25
|
+
item: {
|
|
26
|
+
cursor: "not-allowed";
|
|
27
|
+
_hover: {
|
|
28
|
+
background: "transparent";
|
|
29
|
+
_active: {
|
|
30
|
+
background: "transparent";
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
_active: {
|
|
34
|
+
background: "transparent";
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
itemIcon: {
|
|
38
|
+
color: "icon/disabled";
|
|
39
|
+
_groupHover: {
|
|
40
|
+
color: "icon/disabled";
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
itemLabel: {
|
|
44
|
+
color: "text/disabled";
|
|
45
|
+
};
|
|
46
|
+
suffixIcon: {
|
|
47
|
+
display: "none";
|
|
48
|
+
_groupHover: {
|
|
49
|
+
display: "none";
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
false: {};
|
|
54
|
+
};
|
|
55
|
+
selected: {
|
|
56
|
+
true: {
|
|
57
|
+
item: {
|
|
58
|
+
background: "background/selected";
|
|
59
|
+
_hover: {
|
|
60
|
+
background: "background/selected-hover";
|
|
61
|
+
_active: {
|
|
62
|
+
background: "background/selected-active";
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
_active: {
|
|
66
|
+
background: "background/selected-active";
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
itemIcon: {
|
|
70
|
+
color: "icon/interactive";
|
|
71
|
+
_groupHover: {
|
|
72
|
+
color: "icon/interactive-hover";
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
itemLabel: {
|
|
76
|
+
textStyle: "body/md/semibold";
|
|
77
|
+
};
|
|
78
|
+
};
|
|
79
|
+
false: {};
|
|
80
|
+
};
|
|
81
|
+
}>;
|
|
82
|
+
export default pageSidebarSlotRecipe;
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
import { rem } from "../themeUtils.js";
|
|
2
|
+
import { defineSlotRecipe } from "@chakra-ui/react/styled-system";
|
|
3
|
+
//#region lib/theme/slot-recipes/PageSidebar.recipe.ts
|
|
4
|
+
var pageSidebarSlotRecipe = defineSlotRecipe({
|
|
5
|
+
className: "page-sidebar",
|
|
6
|
+
slots: [
|
|
7
|
+
"body",
|
|
8
|
+
"contentBlock",
|
|
9
|
+
"divider",
|
|
10
|
+
"footer",
|
|
11
|
+
"item",
|
|
12
|
+
"itemIcon",
|
|
13
|
+
"itemLabel",
|
|
14
|
+
"project",
|
|
15
|
+
"projectLabel",
|
|
16
|
+
"projectValue",
|
|
17
|
+
"projectValueWrapper",
|
|
18
|
+
"root",
|
|
19
|
+
"selectionMarker",
|
|
20
|
+
"suffixIcon",
|
|
21
|
+
"title",
|
|
22
|
+
"titleBlock",
|
|
23
|
+
"titleText"
|
|
24
|
+
],
|
|
25
|
+
base: {
|
|
26
|
+
root: {
|
|
27
|
+
background: "background/primary",
|
|
28
|
+
borderInlineEndColor: "border/regular",
|
|
29
|
+
borderInlineEndStyle: "solid",
|
|
30
|
+
borderInlineEndWidth: "1",
|
|
31
|
+
display: "flex",
|
|
32
|
+
flexDirection: "column",
|
|
33
|
+
minHeight: "100dvh",
|
|
34
|
+
maxWidth: rem(320),
|
|
35
|
+
minWidth: rem(240),
|
|
36
|
+
paddingBlockStart: "16",
|
|
37
|
+
width: rem(240)
|
|
38
|
+
},
|
|
39
|
+
body: {
|
|
40
|
+
display: "flex",
|
|
41
|
+
flex: 1,
|
|
42
|
+
flexDirection: "column",
|
|
43
|
+
marginBlockEnd: "16",
|
|
44
|
+
width: "full"
|
|
45
|
+
},
|
|
46
|
+
title: {
|
|
47
|
+
alignItems: "center",
|
|
48
|
+
color: "text/primary",
|
|
49
|
+
display: "flex",
|
|
50
|
+
flexShrink: 0,
|
|
51
|
+
overflow: "clip",
|
|
52
|
+
paddingInlineEnd: "32"
|
|
53
|
+
},
|
|
54
|
+
titleBlock: {
|
|
55
|
+
alignItems: "center",
|
|
56
|
+
display: "flex",
|
|
57
|
+
minWidth: 0
|
|
58
|
+
},
|
|
59
|
+
titleText: {
|
|
60
|
+
textStyle: "heading/h3",
|
|
61
|
+
whiteSpace: "nowrap"
|
|
62
|
+
},
|
|
63
|
+
item: {
|
|
64
|
+
alignItems: "center",
|
|
65
|
+
cursor: "pointer",
|
|
66
|
+
display: "flex",
|
|
67
|
+
focusVisibleRing: "inside",
|
|
68
|
+
gap: "12",
|
|
69
|
+
overflow: "clip",
|
|
70
|
+
paddingBlock: "8",
|
|
71
|
+
paddingInline: "24",
|
|
72
|
+
position: "relative",
|
|
73
|
+
width: "full",
|
|
74
|
+
_hover: {
|
|
75
|
+
background: "background/secondary",
|
|
76
|
+
_active: { background: "background/tertiary" }
|
|
77
|
+
},
|
|
78
|
+
_active: { background: "background/tertiary" },
|
|
79
|
+
_focusVisible: { outlineOffset: "calc(var(--focus-ring-width) * -1)" }
|
|
80
|
+
},
|
|
81
|
+
contentBlock: {
|
|
82
|
+
alignItems: "center",
|
|
83
|
+
display: "flex",
|
|
84
|
+
flex: 1,
|
|
85
|
+
gap: "12",
|
|
86
|
+
minWidth: 0,
|
|
87
|
+
paddingBlock: "2"
|
|
88
|
+
},
|
|
89
|
+
itemIcon: {
|
|
90
|
+
color: "icon/secondary",
|
|
91
|
+
flexShrink: 0,
|
|
92
|
+
_groupHover: { color: "icon/primary" }
|
|
93
|
+
},
|
|
94
|
+
itemLabel: {
|
|
95
|
+
color: "text/primary",
|
|
96
|
+
flex: 1,
|
|
97
|
+
minWidth: 0,
|
|
98
|
+
overflow: "hidden",
|
|
99
|
+
textAlign: "start",
|
|
100
|
+
textOverflow: "ellipsis",
|
|
101
|
+
textStyle: "body/md/regular",
|
|
102
|
+
whiteSpace: "nowrap"
|
|
103
|
+
},
|
|
104
|
+
suffixIcon: {
|
|
105
|
+
color: "icon/tertiary",
|
|
106
|
+
display: "none",
|
|
107
|
+
flexShrink: 0,
|
|
108
|
+
_groupHover: { display: "block" }
|
|
109
|
+
},
|
|
110
|
+
selectionMarker: {
|
|
111
|
+
background: "border/selected",
|
|
112
|
+
borderEndStartRadius: "2",
|
|
113
|
+
borderStartStartRadius: "2",
|
|
114
|
+
height: "full",
|
|
115
|
+
insetBlockStart: 0,
|
|
116
|
+
insetInlineEnd: 0,
|
|
117
|
+
position: "absolute",
|
|
118
|
+
width: "2"
|
|
119
|
+
},
|
|
120
|
+
footer: {
|
|
121
|
+
borderBlockStart: "1px solid",
|
|
122
|
+
borderColor: "border/minimal",
|
|
123
|
+
display: "flex",
|
|
124
|
+
flexDirection: "column",
|
|
125
|
+
flexShrink: 0,
|
|
126
|
+
paddingBlock: "8"
|
|
127
|
+
},
|
|
128
|
+
project: {
|
|
129
|
+
display: "flex",
|
|
130
|
+
flexDirection: "column",
|
|
131
|
+
gap: "4",
|
|
132
|
+
justifyContent: "center",
|
|
133
|
+
overflow: "clip",
|
|
134
|
+
paddingBlock: "8",
|
|
135
|
+
paddingInlineEnd: "32",
|
|
136
|
+
paddingInlineStart: "24",
|
|
137
|
+
whiteSpace: "nowrap"
|
|
138
|
+
},
|
|
139
|
+
projectLabel: {
|
|
140
|
+
color: "text/tertiary",
|
|
141
|
+
textStyle: "heading/h6"
|
|
142
|
+
},
|
|
143
|
+
projectValue: {
|
|
144
|
+
color: "text/body",
|
|
145
|
+
overflow: "hidden",
|
|
146
|
+
textOverflow: "ellipsis",
|
|
147
|
+
textStyle: "body/lg/semibold"
|
|
148
|
+
},
|
|
149
|
+
projectValueWrapper: {
|
|
150
|
+
display: "flex",
|
|
151
|
+
minWidth: 0
|
|
152
|
+
},
|
|
153
|
+
divider: {
|
|
154
|
+
borderColor: "border/minimal",
|
|
155
|
+
marginBlock: "16",
|
|
156
|
+
marginInline: "24",
|
|
157
|
+
width: "auto"
|
|
158
|
+
}
|
|
159
|
+
},
|
|
160
|
+
variants: {
|
|
161
|
+
hasBack: {
|
|
162
|
+
true: {
|
|
163
|
+
title: {
|
|
164
|
+
paddingBlockEnd: "8",
|
|
165
|
+
paddingInlineStart: "16"
|
|
166
|
+
},
|
|
167
|
+
titleBlock: {
|
|
168
|
+
gap: "4",
|
|
169
|
+
paddingBlock: "4"
|
|
170
|
+
}
|
|
171
|
+
},
|
|
172
|
+
false: {
|
|
173
|
+
title: {
|
|
174
|
+
paddingBlockEnd: "16",
|
|
175
|
+
paddingInlineStart: "24"
|
|
176
|
+
},
|
|
177
|
+
titleBlock: { paddingBlock: "6" }
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
isDisabled: {
|
|
181
|
+
true: {
|
|
182
|
+
item: {
|
|
183
|
+
cursor: "not-allowed",
|
|
184
|
+
_hover: {
|
|
185
|
+
background: "transparent",
|
|
186
|
+
_active: { background: "transparent" }
|
|
187
|
+
},
|
|
188
|
+
_active: { background: "transparent" }
|
|
189
|
+
},
|
|
190
|
+
itemIcon: {
|
|
191
|
+
color: "icon/disabled",
|
|
192
|
+
_groupHover: { color: "icon/disabled" }
|
|
193
|
+
},
|
|
194
|
+
itemLabel: { color: "text/disabled" },
|
|
195
|
+
suffixIcon: {
|
|
196
|
+
display: "none",
|
|
197
|
+
_groupHover: { display: "none" }
|
|
198
|
+
}
|
|
199
|
+
},
|
|
200
|
+
false: {}
|
|
201
|
+
},
|
|
202
|
+
selected: {
|
|
203
|
+
true: {
|
|
204
|
+
item: {
|
|
205
|
+
background: "background/selected",
|
|
206
|
+
_hover: {
|
|
207
|
+
background: "background/selected-hover",
|
|
208
|
+
_active: { background: "background/selected-active" }
|
|
209
|
+
},
|
|
210
|
+
_active: { background: "background/selected-active" }
|
|
211
|
+
},
|
|
212
|
+
itemIcon: {
|
|
213
|
+
color: "icon/interactive",
|
|
214
|
+
_groupHover: { color: "icon/interactive-hover" }
|
|
215
|
+
},
|
|
216
|
+
itemLabel: { textStyle: "body/md/semibold" }
|
|
217
|
+
},
|
|
218
|
+
false: {}
|
|
219
|
+
}
|
|
220
|
+
},
|
|
221
|
+
defaultVariants: {
|
|
222
|
+
hasBack: false,
|
|
223
|
+
isDisabled: false,
|
|
224
|
+
selected: false
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
//#endregion
|
|
228
|
+
export { pageSidebarSlotRecipe as default };
|
|
229
|
+
|
|
230
|
+
//# sourceMappingURL=PageSidebar.recipe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PageSidebar.recipe.js","names":[],"sources":["../../../lib/theme/slot-recipes/PageSidebar.recipe.ts"],"sourcesContent":["import { defineSlotRecipe } from '@chakra-ui/react/styled-system';\n\nimport { rem } from '../themeUtils';\n\nconst pageSidebarSlotRecipe = defineSlotRecipe({\n className: 'page-sidebar',\n slots: [\n 'body',\n 'contentBlock',\n 'divider',\n 'footer',\n 'item',\n 'itemIcon',\n 'itemLabel',\n 'project',\n 'projectLabel',\n 'projectValue',\n 'projectValueWrapper',\n 'root',\n 'selectionMarker',\n 'suffixIcon',\n 'title',\n 'titleBlock',\n 'titleText',\n ],\n base: {\n root: {\n background: 'background/primary',\n // Longhands, not the `borderInlineEnd: '1px solid'` shorthand: that shorthand carries no\n // colour, so it resets it to `currentColor` if it lands after `borderColor` — which is what\n // sorting these keys alphabetically did, turning the rule dark.\n borderInlineEndColor: 'border/regular',\n borderInlineEndStyle: 'solid',\n borderInlineEndWidth: '1',\n display: 'flex',\n flexDirection: 'column',\n // `minHeight` rather than `height`: on a short navigation the sidebar still reaches the\n // bottom of the viewport, but a long one grows past it and scrolls with the page as one\n // block — the footer is part of that scroll, not pinned to the bottom.\n minHeight: '100dvh',\n maxWidth: rem(320),\n minWidth: rem(240),\n paddingBlockStart: '16',\n width: rem(240),\n },\n body: {\n display: 'flex',\n // Absorbs the slack so the footer sits at the bottom when the navigation is short, and\n // simply grows when it is long.\n flex: 1,\n flexDirection: 'column',\n // The minimum gap between the navigation and the footer block. It is a margin so it stays\n // outside the items' own box, and `flex: 1` above means any extra space lands in the body\n // rather than widening this gap.\n marginBlockEnd: '16',\n width: 'full',\n },\n title: {\n alignItems: 'center',\n color: 'text/primary',\n display: 'flex',\n flexShrink: 0,\n overflow: 'clip',\n paddingInlineEnd: '32',\n },\n titleBlock: {\n alignItems: 'center',\n display: 'flex',\n minWidth: 0,\n },\n titleText: {\n textStyle: 'heading/h3',\n whiteSpace: 'nowrap',\n },\n item: {\n alignItems: 'center',\n cursor: 'pointer',\n display: 'flex',\n focusVisibleRing: 'inside',\n gap: '12',\n overflow: 'clip',\n paddingBlock: '8',\n paddingInline: '24',\n position: 'relative',\n width: 'full',\n _hover: {\n background: 'background/secondary',\n _active: {\n background: 'background/tertiary',\n },\n },\n _active: {\n background: 'background/tertiary',\n },\n // `focusVisibleRing: 'inside'` still resolves to `outline-offset: 0`, which draws the ring\n // just outside the border box. The item spans the sidebar's full width, so that would bleed\n // past the sidebar's edges — pull the whole ring inside the item instead.\n _focusVisible: {\n outlineOffset: 'calc(var(--focus-ring-width) * -1)',\n },\n },\n contentBlock: {\n alignItems: 'center',\n display: 'flex',\n flex: 1,\n gap: '12',\n minWidth: 0,\n paddingBlock: '2',\n },\n itemIcon: {\n color: 'icon/secondary',\n flexShrink: 0,\n _groupHover: {\n color: 'icon/primary',\n },\n },\n itemLabel: {\n color: 'text/primary',\n flex: 1,\n minWidth: 0,\n overflow: 'hidden',\n textAlign: 'start',\n textOverflow: 'ellipsis',\n textStyle: 'body/md/regular',\n whiteSpace: 'nowrap',\n },\n suffixIcon: {\n color: 'icon/tertiary',\n display: 'none',\n flexShrink: 0,\n _groupHover: {\n display: 'block',\n },\n },\n selectionMarker: {\n background: 'border/selected',\n borderEndStartRadius: '2',\n borderStartStartRadius: '2',\n height: 'full',\n insetBlockStart: 0,\n insetInlineEnd: 0,\n position: 'absolute',\n width: '2',\n },\n footer: {\n borderBlockStart: '1px solid',\n borderColor: 'border/minimal',\n display: 'flex',\n flexDirection: 'column',\n // The body above absorbs the free space, so the footer needs no positioning of its own —\n // it just must not be squashed by a long list.\n flexShrink: 0,\n paddingBlock: '8',\n },\n project: {\n display: 'flex',\n flexDirection: 'column',\n gap: '4',\n justifyContent: 'center',\n overflow: 'clip',\n paddingBlock: '8',\n paddingInlineEnd: '32',\n paddingInlineStart: '24',\n whiteSpace: 'nowrap',\n },\n projectLabel: {\n color: 'text/tertiary',\n textStyle: 'heading/h6',\n },\n projectValue: {\n color: 'text/body',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n textStyle: 'body/lg/semibold',\n },\n projectValueWrapper: {\n display: 'flex',\n minWidth: 0,\n },\n divider: {\n // Both of the sidebar's separator roles are `border/minimal` in Figma — the group header\n // (`20014:6508`) and this plain rule (`20014:6511`) — against `border/regular` for the general\n // Separator component. The override is per-slot for that reason, not to limit blast radius.\n borderColor: 'border/minimal',\n marginBlock: '16',\n marginInline: '24',\n width: 'auto',\n },\n },\n variants: {\n hasBack: {\n // Redlines on the sub view (Figma `- page sidebar - interactions`): the title block sits at\n // x/y 16, is 40 tall, and the 32px back button sits at y 20 — i.e. the 4px padding belongs to\n // the block wrapping button + text, not to the text. Header totals 16 + 40 + 8 = 64.\n true: {\n title: {\n paddingBlockEnd: '8',\n paddingInlineStart: '16',\n },\n titleBlock: {\n gap: '4',\n paddingBlock: '4',\n },\n },\n // Main view: no button, so the text alone is the block — 6 + 28 + 6 = 40, header 16+40+16 = 72.\n false: {\n title: {\n paddingBlockEnd: '16',\n paddingInlineStart: '24',\n },\n titleBlock: {\n paddingBlock: '6',\n },\n },\n },\n isDisabled: {\n true: {\n item: {\n cursor: 'not-allowed',\n _hover: {\n background: 'transparent',\n _active: {\n background: 'transparent',\n },\n },\n _active: {\n background: 'transparent',\n },\n },\n itemIcon: {\n color: 'icon/disabled',\n _groupHover: {\n color: 'icon/disabled',\n },\n },\n itemLabel: {\n color: 'text/disabled',\n },\n suffixIcon: {\n display: 'none',\n _groupHover: {\n display: 'none',\n },\n },\n },\n false: {},\n },\n selected: {\n true: {\n item: {\n background: 'background/selected',\n _hover: {\n background: 'background/selected-hover',\n _active: {\n background: 'background/selected-active',\n },\n },\n _active: {\n background: 'background/selected-active',\n },\n },\n itemIcon: {\n color: 'icon/interactive',\n _groupHover: {\n color: 'icon/interactive-hover',\n },\n },\n itemLabel: {\n textStyle: 'body/md/semibold',\n },\n },\n false: {},\n },\n },\n defaultVariants: {\n hasBack: false,\n isDisabled: false,\n selected: false,\n },\n});\n\nexport default pageSidebarSlotRecipe;\n"],"mappings":";;;AAIA,IAAM,wBAAwB,iBAAiB;CAC7C,WAAW;CACX,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,MAAM;EACJ,MAAM;GACJ,YAAY;GAIZ,sBAAsB;GACtB,sBAAsB;GACtB,sBAAsB;GACtB,SAAS;GACT,eAAe;GAIf,WAAW;GACX,UAAU,IAAI,GAAG;GACjB,UAAU,IAAI,GAAG;GACjB,mBAAmB;GACnB,OAAO,IAAI,GAAG;EAChB;EACA,MAAM;GACJ,SAAS;GAGT,MAAM;GACN,eAAe;GAIf,gBAAgB;GAChB,OAAO;EACT;EACA,OAAO;GACL,YAAY;GACZ,OAAO;GACP,SAAS;GACT,YAAY;GACZ,UAAU;GACV,kBAAkB;EACpB;EACA,YAAY;GACV,YAAY;GACZ,SAAS;GACT,UAAU;EACZ;EACA,WAAW;GACT,WAAW;GACX,YAAY;EACd;EACA,MAAM;GACJ,YAAY;GACZ,QAAQ;GACR,SAAS;GACT,kBAAkB;GAClB,KAAK;GACL,UAAU;GACV,cAAc;GACd,eAAe;GACf,UAAU;GACV,OAAO;GACP,QAAQ;IACN,YAAY;IACZ,SAAS,EACP,YAAY,sBACd;GACF;GACA,SAAS,EACP,YAAY,sBACd;GAIA,eAAe,EACb,eAAe,qCACjB;EACF;EACA,cAAc;GACZ,YAAY;GACZ,SAAS;GACT,MAAM;GACN,KAAK;GACL,UAAU;GACV,cAAc;EAChB;EACA,UAAU;GACR,OAAO;GACP,YAAY;GACZ,aAAa,EACX,OAAO,eACT;EACF;EACA,WAAW;GACT,OAAO;GACP,MAAM;GACN,UAAU;GACV,UAAU;GACV,WAAW;GACX,cAAc;GACd,WAAW;GACX,YAAY;EACd;EACA,YAAY;GACV,OAAO;GACP,SAAS;GACT,YAAY;GACZ,aAAa,EACX,SAAS,QACX;EACF;EACA,iBAAiB;GACf,YAAY;GACZ,sBAAsB;GACtB,wBAAwB;GACxB,QAAQ;GACR,iBAAiB;GACjB,gBAAgB;GAChB,UAAU;GACV,OAAO;EACT;EACA,QAAQ;GACN,kBAAkB;GAClB,aAAa;GACb,SAAS;GACT,eAAe;GAGf,YAAY;GACZ,cAAc;EAChB;EACA,SAAS;GACP,SAAS;GACT,eAAe;GACf,KAAK;GACL,gBAAgB;GAChB,UAAU;GACV,cAAc;GACd,kBAAkB;GAClB,oBAAoB;GACpB,YAAY;EACd;EACA,cAAc;GACZ,OAAO;GACP,WAAW;EACb;EACA,cAAc;GACZ,OAAO;GACP,UAAU;GACV,cAAc;GACd,WAAW;EACb;EACA,qBAAqB;GACnB,SAAS;GACT,UAAU;EACZ;EACA,SAAS;GAIP,aAAa;GACb,aAAa;GACb,cAAc;GACd,OAAO;EACT;CACF;CACA,UAAU;EACR,SAAS;GAIP,MAAM;IACJ,OAAO;KACL,iBAAiB;KACjB,oBAAoB;IACtB;IACA,YAAY;KACV,KAAK;KACL,cAAc;IAChB;GACF;GAEA,OAAO;IACL,OAAO;KACL,iBAAiB;KACjB,oBAAoB;IACtB;IACA,YAAY,EACV,cAAc,IAChB;GACF;EACF;EACA,YAAY;GACV,MAAM;IACJ,MAAM;KACJ,QAAQ;KACR,QAAQ;MACN,YAAY;MACZ,SAAS,EACP,YAAY,cACd;KACF;KACA,SAAS,EACP,YAAY,cACd;IACF;IACA,UAAU;KACR,OAAO;KACP,aAAa,EACX,OAAO,gBACT;IACF;IACA,WAAW,EACT,OAAO,gBACT;IACA,YAAY;KACV,SAAS;KACT,aAAa,EACX,SAAS,OACX;IACF;GACF;GACA,OAAO,CAAC;EACV;EACA,UAAU;GACR,MAAM;IACJ,MAAM;KACJ,YAAY;KACZ,QAAQ;MACN,YAAY;MACZ,SAAS,EACP,YAAY,6BACd;KACF;KACA,SAAS,EACP,YAAY,6BACd;IACF;IACA,UAAU;KACR,OAAO;KACP,aAAa,EACX,OAAO,yBACT;IACF;IACA,WAAW,EACT,WAAW,mBACb;GACF;GACA,OAAO,CAAC;EACV;CACF;CACA,iBAAiB;EACf,SAAS;EACT,YAAY;EACZ,UAAU;CACZ;AACF,CAAC"}
|