@bitrise/bitkit-v2 0.3.347 → 0.3.348
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 +2 -1
- package/dist/components/BitkitCheckbox/BitkitCheckbox.js.map +1 -1
- package/dist/components/BitkitRadio/BitkitRadio.d.ts +2 -1
- package/dist/components/BitkitRadio/BitkitRadio.js.map +1 -1
- package/dist/components/BitkitRadioGroup/BitkitRadioGroup.d.ts +8 -0
- package/dist/components/BitkitRadioGroup/BitkitRadioGroup.js +3 -1
- package/dist/components/BitkitRadioGroup/BitkitRadioGroup.js.map +1 -1
- package/dist/components/BitkitRadioItem/BitkitRadioItem.d.ts +2 -1
- package/dist/components/BitkitRadioItem/BitkitRadioItem.js.map +1 -1
- package/dist/theme/slot-recipes/Checkbox.recipe.js +3 -1
- package/dist/theme/slot-recipes/Checkbox.recipe.js.map +1 -1
- package/dist/theme/slot-recipes/RadioGroup.recipe.js +14 -1
- package/dist/theme/slot-recipes/RadioGroup.recipe.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { Checkbox } from '@chakra-ui/react/checkbox';
|
|
2
|
+
import { DataAttr } from '@chakra-ui/react/styled-system';
|
|
2
3
|
import { InputHTMLAttributes, ReactNode } from 'react';
|
|
3
4
|
type BitkitCheckboxBaseProps = {
|
|
4
5
|
/** Props forwarded to the underlying `<input>` (e.g. `data-testid`). */
|
|
5
|
-
inputProps?: InputHTMLAttributes<HTMLInputElement
|
|
6
|
+
inputProps?: InputHTMLAttributes<HTMLInputElement> & DataAttr;
|
|
6
7
|
state?: 'disabled' | 'readOnly' | 'skeleton';
|
|
7
8
|
} & Omit<Checkbox.RootProps, 'disabled' | 'readOnly'>;
|
|
8
9
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BitkitCheckbox.js","names":[],"sources":["../../../lib/components/BitkitCheckbox/BitkitCheckbox.tsx"],"sourcesContent":["import { Checkbox } from '@chakra-ui/react/checkbox';\nimport { Skeleton } from '@chakra-ui/react/skeleton';\nimport { Text } from '@chakra-ui/react/text';\nimport { forwardRef, type InputHTMLAttributes, type ReactNode } from 'react';\n\nimport { IconCheck, IconMinus } from '../../icons';\n\ntype BitkitCheckboxBaseProps = {\n /** Props forwarded to the underlying `<input>` (e.g. `data-testid`). */\n inputProps?: InputHTMLAttributes<HTMLInputElement
|
|
1
|
+
{"version":3,"file":"BitkitCheckbox.js","names":[],"sources":["../../../lib/components/BitkitCheckbox/BitkitCheckbox.tsx"],"sourcesContent":["import { Checkbox } from '@chakra-ui/react/checkbox';\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 { IconCheck, IconMinus } from '../../icons';\n\ntype BitkitCheckboxBaseProps = {\n /** Props forwarded to the underlying `<input>` (e.g. `data-testid`). */\n inputProps?: InputHTMLAttributes<HTMLInputElement> & DataAttr;\n state?: 'disabled' | 'readOnly' | 'skeleton';\n} & Omit<Checkbox.RootProps, 'disabled' | 'readOnly'>;\n\n/**\n * A checkbox has to end up with an accessible name, and it takes that name from its label. So either\n * pass a visible `labelText`, or — for a checkbox in a layout with no room for one, like a table\n * select-all header — an `aria-label`, which is applied to the hidden input instead of being\n * rendered.\n */\nexport type BitkitCheckboxProps = BitkitCheckboxBaseProps &\n (\n | {\n helperText?: ReactNode;\n labelText: NonNullable<ReactNode>;\n }\n | { 'aria-label': string; helperText?: never; labelText?: null }\n );\n\nconst isEmptyNode = (node: ReactNode) => node == null || node === '' || typeof node === 'boolean';\n\nconst BitkitCheckbox = forwardRef<HTMLInputElement, BitkitCheckboxProps>((props, ref) => {\n const { 'aria-label': ariaLabel, helperText, inputProps, labelText, state, ...rest } = props;\n const hasHelperText = !isEmptyNode(helperText);\n const hasLabel = !isEmptyNode(labelText) || hasHelperText;\n\n return (\n <Checkbox.Root disabled={state === 'disabled'} readOnly={state === 'readOnly'} {...rest}>\n <Checkbox.HiddenInput aria-label={ariaLabel} ref={ref} {...inputProps} />\n <Skeleton loading={state === 'skeleton'}>\n <Checkbox.Control>{rest.checked === 'indeterminate' ? <IconMinus /> : <IconCheck />}</Checkbox.Control>\n </Skeleton>\n {hasLabel && (\n <Skeleton loading={state === 'skeleton'}>\n <Checkbox.Label as=\"div\">\n {labelText}\n {hasHelperText && (\n <Text color=\"text/helper\" textStyle=\"comp/input/helperText\">\n {helperText}\n </Text>\n )}\n </Checkbox.Label>\n </Skeleton>\n )}\n </Checkbox.Root>\n );\n});\n\nBitkitCheckbox.displayName = 'BitkitCheckbox';\n\nexport default BitkitCheckbox;\n"],"mappings":";;;;;;;;AA6BA,IAAM,eAAe,SAAoB,QAAQ,QAAQ,SAAS,MAAM,OAAO,SAAS;AAExF,IAAM,iBAAiB,YAAmD,OAAO,QAAQ;CACvF,MAAM,EAAE,cAAc,WAAW,YAAY,YAAY,WAAW,OAAO,GAAG,SAAS;CACvF,MAAM,gBAAgB,CAAC,YAAY,UAAU;CAC7C,MAAM,WAAW,CAAC,YAAY,SAAS,KAAK;CAE5C,OACE,qBAAC,SAAS,MAAV;EAAe,UAAU,UAAU;EAAY,UAAU,UAAU;EAAY,GAAI;EAAnF,UAAA;GACE,oBAAC,SAAS,aAAV;IAAsB,cAAY;IAAgB;IAAK,GAAI;GAAa,CAAA;GACxE,oBAAC,UAAD;IAAU,SAAS,UAAU;IAC3B,UAAA,oBAAC,SAAS,SAAV,EAAA,UAAmB,KAAK,YAAY,kBAAkB,oBAAC,WAAD,CAAY,CAAA,IAAI,oBAAC,WAAD,CAAY,CAAA,EAAoB,CAAA;GAC9F,CAAA;GACT,YACC,oBAAC,UAAD;IAAU,SAAS,UAAU;IAC3B,UAAA,qBAAC,SAAS,OAAV;KAAgB,IAAG;KAAnB,UAAA,CACG,WACA,iBACC,oBAAC,MAAD;MAAM,OAAM;MAAc,WAAU;MACjC,UAAA;KACG,CAAA,CAEM;;GACR,CAAA;EAEC;;AAEnB,CAAC;AAED,eAAe,cAAc"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { RadioGroup } from '@chakra-ui/react/radio-group';
|
|
2
|
+
import { DataAttr } from '@chakra-ui/react/styled-system';
|
|
2
3
|
import { InputHTMLAttributes, ReactNode } from 'react';
|
|
3
4
|
/**
|
|
4
5
|
* Passthrough attributes for the radio `<input>`. The RadioGroup machine owns the behavioral / state
|
|
@@ -6,7 +7,7 @@ import { InputHTMLAttributes, ReactNode } from 'react';
|
|
|
6
7
|
* setting them here would let the input drift out of sync with its `RadioGroup.Item`. Keep it to
|
|
7
8
|
* things like `data-testid`.
|
|
8
9
|
*/
|
|
9
|
-
type RadioInputProps = Omit<InputHTMLAttributes<HTMLInputElement>, 'checked' | 'defaultChecked' | 'defaultValue' | 'disabled' | 'name' | 'onChange' | 'type' | 'value'
|
|
10
|
+
type RadioInputProps = Omit<InputHTMLAttributes<HTMLInputElement>, 'checked' | 'defaultChecked' | 'defaultValue' | 'disabled' | 'name' | 'onChange' | 'type' | 'value'> & DataAttr;
|
|
10
11
|
export type BitkitRadioProps = {
|
|
11
12
|
badge?: 'off' | 'on';
|
|
12
13
|
helperText?: ReactNode;
|
|
@@ -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 { 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
|
|
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 return (\n <RadioGroup.Item disabled={state === 'disabled'} {...rest}>\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;CAEnC,OACE,qBAAC,WAAW,MAAZ;EAAiB,UAAU,UAAU;EAAY,GAAI;EAArD,UAAA;GACE,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"}
|
|
@@ -15,6 +15,14 @@ export interface BitkitRadioGroupProps extends Fieldset.RootProps {
|
|
|
15
15
|
onValueChange: RadioGroupRootProps['onValueChange'];
|
|
16
16
|
radioGroupRootProps?: RadioGroupRootProps;
|
|
17
17
|
size?: RadioGroupRootProps['size'];
|
|
18
|
+
/**
|
|
19
|
+
* Whole-group state. `'readOnly'` exists only here — Zag's item machine takes `value`, `disabled`
|
|
20
|
+
* and `invalid`, so there is no per-radio equivalent — and it blocks the selection by disabling
|
|
21
|
+
* every item's hidden input, so the group also leaves the tab order and its value is dropped from
|
|
22
|
+
* a native form submission. To disable a single radio, reach for `BitkitRadio`'s `state="disabled"`
|
|
23
|
+
* instead.
|
|
24
|
+
*/
|
|
25
|
+
state?: 'disabled' | 'readOnly';
|
|
18
26
|
value: RadioGroupRootProps['value'];
|
|
19
27
|
}
|
|
20
28
|
declare const BitkitRadioGroup: import('react').ForwardRefExoticComponent<BitkitRadioGroupProps & import('react').RefAttributes<HTMLFieldSetElement>>;
|
|
@@ -4,7 +4,7 @@ import { Fieldset } from "@chakra-ui/react/fieldset";
|
|
|
4
4
|
import { RadioGroup } from "@chakra-ui/react/radio-group";
|
|
5
5
|
//#region lib/components/BitkitRadioGroup/BitkitRadioGroup.tsx
|
|
6
6
|
var BitkitRadioGroup = forwardRef((props, ref) => {
|
|
7
|
-
const { children, errorText, helperText, groupLabel, layout, name, onValueChange, radioGroupRootProps, size, value, ...rest } = props;
|
|
7
|
+
const { children, errorText, helperText, groupLabel, layout, name, onValueChange, radioGroupRootProps, size, state, value, ...rest } = props;
|
|
8
8
|
const hasHeader = !!groupLabel || !!helperText;
|
|
9
9
|
return /* @__PURE__ */ jsxs(Fieldset.Root, {
|
|
10
10
|
ref,
|
|
@@ -21,6 +21,8 @@ var BitkitRadioGroup = forwardRef((props, ref) => {
|
|
|
21
21
|
size,
|
|
22
22
|
orientation: layout,
|
|
23
23
|
onValueChange,
|
|
24
|
+
disabled: state === "disabled",
|
|
25
|
+
readOnly: state === "readOnly",
|
|
24
26
|
value,
|
|
25
27
|
...radioGroupRootProps,
|
|
26
28
|
children
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BitkitRadioGroup.js","names":[],"sources":["../../../lib/components/BitkitRadioGroup/BitkitRadioGroup.tsx"],"sourcesContent":["import { Fieldset } from '@chakra-ui/react/fieldset';\nimport { RadioGroup, type RadioGroupRootProps } from '@chakra-ui/react/radio-group';\nimport { forwardRef, type ReactNode } from 'react';\n\nexport interface BitkitRadioGroupProps extends Fieldset.RootProps {\n children: ReactNode;\n errorText?: ReactNode;\n /**\n * Visible legend rendered above the group. Optional — if you omit it, pass `aria-label` or\n * `aria-labelledby` instead so the fieldset still has an accessible name.\n */\n groupLabel?: string;\n helperText?: ReactNode;\n layout?: RadioGroupRootProps['orientation'];\n name?: RadioGroupRootProps['name'];\n onValueChange: RadioGroupRootProps['onValueChange'];\n radioGroupRootProps?: RadioGroupRootProps;\n size?: RadioGroupRootProps['size'];\n value: RadioGroupRootProps['value'];\n}\n\nconst BitkitRadioGroup = forwardRef<HTMLFieldSetElement, BitkitRadioGroupProps>((props, ref) => {\n const {\n children,\n errorText,\n helperText,\n groupLabel,\n layout,\n name,\n onValueChange,\n radioGroupRootProps,\n size,\n value,\n ...rest\n } = props;\n const hasHeader = !!groupLabel || !!helperText;\n return (\n <Fieldset.Root ref={ref} {...rest} invalid={rest.invalid || !!errorText}>\n {groupLabel && <Fieldset.Legend>{groupLabel}</Fieldset.Legend>}\n {!!helperText && <Fieldset.HelperText>{helperText}</Fieldset.HelperText>}\n <Fieldset.Content marginBlockStart={hasHeader ? '12' : undefined} asChild>\n <RadioGroup.Root\n name={name}\n size={size}\n orientation={layout}\n onValueChange={onValueChange}\n value={value}\n {...radioGroupRootProps}\n >\n {children}\n </RadioGroup.Root>\n </Fieldset.Content>\n {!!errorText && <Fieldset.ErrorText>{errorText}</Fieldset.ErrorText>}\n </Fieldset.Root>\n );\n});\n\nBitkitRadioGroup.displayName = 'BitkitRadioGroup';\n\nexport default BitkitRadioGroup;\n"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"BitkitRadioGroup.js","names":[],"sources":["../../../lib/components/BitkitRadioGroup/BitkitRadioGroup.tsx"],"sourcesContent":["import { Fieldset } from '@chakra-ui/react/fieldset';\nimport { RadioGroup, type RadioGroupRootProps } from '@chakra-ui/react/radio-group';\nimport { forwardRef, type ReactNode } from 'react';\n\nexport interface BitkitRadioGroupProps extends Fieldset.RootProps {\n children: ReactNode;\n errorText?: ReactNode;\n /**\n * Visible legend rendered above the group. Optional — if you omit it, pass `aria-label` or\n * `aria-labelledby` instead so the fieldset still has an accessible name.\n */\n groupLabel?: string;\n helperText?: ReactNode;\n layout?: RadioGroupRootProps['orientation'];\n name?: RadioGroupRootProps['name'];\n onValueChange: RadioGroupRootProps['onValueChange'];\n radioGroupRootProps?: RadioGroupRootProps;\n size?: RadioGroupRootProps['size'];\n /**\n * Whole-group state. `'readOnly'` exists only here — Zag's item machine takes `value`, `disabled`\n * and `invalid`, so there is no per-radio equivalent — and it blocks the selection by disabling\n * every item's hidden input, so the group also leaves the tab order and its value is dropped from\n * a native form submission. To disable a single radio, reach for `BitkitRadio`'s `state=\"disabled\"`\n * instead.\n */\n state?: 'disabled' | 'readOnly';\n value: RadioGroupRootProps['value'];\n}\n\nconst BitkitRadioGroup = forwardRef<HTMLFieldSetElement, BitkitRadioGroupProps>((props, ref) => {\n const {\n children,\n errorText,\n helperText,\n groupLabel,\n layout,\n name,\n onValueChange,\n radioGroupRootProps,\n size,\n state,\n value,\n ...rest\n } = props;\n const hasHeader = !!groupLabel || !!helperText;\n return (\n <Fieldset.Root ref={ref} {...rest} invalid={rest.invalid || !!errorText}>\n {groupLabel && <Fieldset.Legend>{groupLabel}</Fieldset.Legend>}\n {!!helperText && <Fieldset.HelperText>{helperText}</Fieldset.HelperText>}\n <Fieldset.Content marginBlockStart={hasHeader ? '12' : undefined} asChild>\n <RadioGroup.Root\n name={name}\n size={size}\n orientation={layout}\n onValueChange={onValueChange}\n disabled={state === 'disabled'}\n readOnly={state === 'readOnly'}\n value={value}\n {...radioGroupRootProps}\n >\n {children}\n </RadioGroup.Root>\n </Fieldset.Content>\n {!!errorText && <Fieldset.ErrorText>{errorText}</Fieldset.ErrorText>}\n </Fieldset.Root>\n );\n});\n\nBitkitRadioGroup.displayName = 'BitkitRadioGroup';\n\nexport default BitkitRadioGroup;\n"],"mappings":";;;;;AA6BA,IAAM,mBAAmB,YAAwD,OAAO,QAAQ;CAC9F,MAAM,EACJ,UACA,WACA,YACA,YACA,QACA,MACA,eACA,qBACA,MACA,OACA,OACA,GAAG,SACD;CACJ,MAAM,YAAY,CAAC,CAAC,cAAc,CAAC,CAAC;CACpC,OACE,qBAAC,SAAS,MAAV;EAAoB;EAAK,GAAI;EAAM,SAAS,KAAK,WAAW,CAAC,CAAC;EAA9D,UAAA;GACG,cAAc,oBAAC,SAAS,QAAV,EAAA,UAAkB,WAA4B,CAAA;GAC5D,CAAC,CAAC,cAAc,oBAAC,SAAS,YAAV,EAAA,UAAsB,WAAgC,CAAA;GACvE,oBAAC,SAAS,SAAV;IAAkB,kBAAkB,YAAY,OAAO,KAAA;IAAW,SAAA;IAChE,UAAA,oBAAC,WAAW,MAAZ;KACQ;KACA;KACN,aAAa;KACE;KACf,UAAU,UAAU;KACpB,UAAU,UAAU;KACb;KACP,GAAI;KAEH;IACc,CAAA;GACD,CAAA;GACjB,CAAC,CAAC,aAAa,oBAAC,SAAS,WAAV,EAAA,UAAqB,UAA8B,CAAA;EACtD;;AAEnB,CAAC;AAED,iBAAiB,cAAc"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { RadioGroup } from '@chakra-ui/react/radio-group';
|
|
2
|
+
import { DataAttr } from '@chakra-ui/react/styled-system';
|
|
2
3
|
import { InputHTMLAttributes } from 'react';
|
|
3
4
|
/**
|
|
4
5
|
* Passthrough attributes for the radio `<input>`. The RadioGroup machine owns the behavioral / state
|
|
@@ -6,7 +7,7 @@ import { InputHTMLAttributes } from 'react';
|
|
|
6
7
|
* setting them here would let the input drift out of sync with its `RadioGroup.Item`. Keep it to
|
|
7
8
|
* things like `data-testid`.
|
|
8
9
|
*/
|
|
9
|
-
type RadioInputProps = Omit<InputHTMLAttributes<HTMLInputElement>, 'checked' | 'defaultChecked' | 'defaultValue' | 'disabled' | 'name' | 'onChange' | 'type' | 'value'
|
|
10
|
+
type RadioInputProps = Omit<InputHTMLAttributes<HTMLInputElement>, 'checked' | 'defaultChecked' | 'defaultValue' | 'disabled' | 'name' | 'onChange' | 'type' | 'value'> & DataAttr;
|
|
10
11
|
export interface BitkitRadioItemProps extends Omit<RadioGroup.ItemProps, 'children' | 'disabled'> {
|
|
11
12
|
/** Props forwarded to the underlying radio `<input>` (e.g. `data-testid`). */
|
|
12
13
|
inputProps?: RadioInputProps;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BitkitRadioItem.js","names":[],"sources":["../../../lib/components/BitkitRadioItem/BitkitRadioItem.tsx"],"sourcesContent":["import { RadioGroup } from '@chakra-ui/react/radio-group';\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
|
|
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"}
|
|
@@ -18,6 +18,7 @@ var checkboxSlotRecipe = defineSlotRecipe({
|
|
|
18
18
|
border: "1px solid",
|
|
19
19
|
borderColor: "border/regular",
|
|
20
20
|
boxShadow: "inset/field",
|
|
21
|
+
cursor: "pointer",
|
|
21
22
|
focusVisibleRing: "outside",
|
|
22
23
|
"& > svg": {
|
|
23
24
|
position: "absolute",
|
|
@@ -64,7 +65,8 @@ var checkboxSlotRecipe = defineSlotRecipe({
|
|
|
64
65
|
_readOnly: {
|
|
65
66
|
backgroundColor: "background/disabled",
|
|
66
67
|
borderColor: "border/regular !important",
|
|
67
|
-
boxShadow: "none"
|
|
68
|
+
boxShadow: "none",
|
|
69
|
+
cursor: "default"
|
|
68
70
|
}
|
|
69
71
|
},
|
|
70
72
|
label: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Checkbox.recipe.js","names":[],"sources":["../../../lib/theme/slot-recipes/Checkbox.recipe.ts"],"sourcesContent":["import { checkboxAnatomy } from '@chakra-ui/react/anatomy';\nimport { defineSlotRecipe } from '@chakra-ui/react/styled-system';\n\nconst checkboxSlotRecipe = defineSlotRecipe({\n className: 'checkbox',\n slots: checkboxAnatomy.keys(),\n base: {\n root: {\n display: 'inline-flex',\n alignItems: 'flex-start',\n gap: '8',\n width: 'fit-content',\n },\n control: {\n position: 'relative',\n borderRadius: '4',\n backgroundColor: 'background/primary',\n border: '1px solid',\n borderColor: 'border/regular',\n boxShadow: 'inset/field',\n focusVisibleRing: 'outside',\n '& > svg': {\n position: 'absolute',\n left: '-1px',\n visibility: 'hidden',\n },\n _checked: {\n backgroundColor: 'input/checkbox/selection',\n borderColor: 'input/checkbox/selection !important',\n boxShadow: 'none',\n '& > svg': {\n top: 0,\n color: 'icon/on-color',\n visibility: 'visible',\n },\n _disabled: {\n backgroundColor: 'input/checkbox/selection-disabled',\n borderColor: 'input/checkbox/selection-disabled !important',\n },\n _readOnly: {\n '& > svg': {\n color: 'icon/on-disabled',\n },\n },\n },\n _hover: {\n borderColor: 'border/hover',\n },\n _indeterminate: {\n backgroundColor: 'input/checkbox/selection',\n borderColor: 'input/checkbox/selection !important',\n boxShadow: 'none',\n '& > svg': {\n top: '-1px',\n color: 'icon/on-color',\n visibility: 'visible',\n },\n _disabled: {\n backgroundColor: 'input/checkbox/selection-disabled',\n borderColor: 'input/checkbox/selection-disabled !important',\n },\n _readOnly: {\n '& > svg': {\n color: 'icon/on-disabled',\n },\n },\n },\n _disabled: {\n backgroundColor: 'background/disabled',\n borderColor: 'border/disabled',\n boxShadow: 'none',\n cursor: 'not-allowed',\n },\n _readOnly: {\n backgroundColor: 'background/disabled',\n borderColor: 'border/regular !important',\n boxShadow: 'none',\n },\n },\n label: {\n userSelect: 'none',\n color: 'input/text/inputValue',\n _disabled: {\n color: 'text/disabled',\n },\n },\n },\n variants: {\n size: {\n md: {\n control: {\n width: '20',\n height: '20',\n '& > svg': {\n width: '20',\n height: '20',\n },\n },\n label: {\n textStyle: 'body/md/regular',\n },\n },\n lg: {\n control: {\n width: '24',\n height: '24',\n '& > svg': {\n width: '24',\n height: '24',\n },\n },\n label: {\n textStyle: 'body/lg/regular',\n },\n },\n },\n },\n defaultVariants: {\n size: 'lg',\n },\n});\n\nexport default checkboxSlotRecipe;\n"],"mappings":";;;AAGA,IAAM,qBAAqB,iBAAiB;CAC1C,WAAW;CACX,OAAO,gBAAgB,KAAK;CAC5B,MAAM;EACJ,MAAM;GACJ,SAAS;GACT,YAAY;GACZ,KAAK;GACL,OAAO;EACT;EACA,SAAS;GACP,UAAU;GACV,cAAc;GACd,iBAAiB;GACjB,QAAQ;GACR,aAAa;GACb,WAAW;GACX,kBAAkB;GAClB,WAAW;IACT,UAAU;IACV,MAAM;IACN,YAAY;GACd;GACA,UAAU;IACR,iBAAiB;IACjB,aAAa;IACb,WAAW;IACX,WAAW;KACT,KAAK;KACL,OAAO;KACP,YAAY;IACd;IACA,WAAW;KACT,iBAAiB;KACjB,aAAa;IACf;IACA,WAAW,EACT,WAAW,EACT,OAAO,mBACT,EACF;GACF;GACA,QAAQ,EACN,aAAa,eACf;GACA,gBAAgB;IACd,iBAAiB;IACjB,aAAa;IACb,WAAW;IACX,WAAW;KACT,KAAK;KACL,OAAO;KACP,YAAY;IACd;IACA,WAAW;KACT,iBAAiB;KACjB,aAAa;IACf;IACA,WAAW,EACT,WAAW,EACT,OAAO,mBACT,EACF;GACF;GACA,WAAW;IACT,iBAAiB;IACjB,aAAa;IACb,WAAW;IACX,QAAQ;GACV;GACA,WAAW;IACT,iBAAiB;IACjB,aAAa;IACb,WAAW;
|
|
1
|
+
{"version":3,"file":"Checkbox.recipe.js","names":[],"sources":["../../../lib/theme/slot-recipes/Checkbox.recipe.ts"],"sourcesContent":["import { checkboxAnatomy } from '@chakra-ui/react/anatomy';\nimport { defineSlotRecipe } from '@chakra-ui/react/styled-system';\n\nconst checkboxSlotRecipe = defineSlotRecipe({\n className: 'checkbox',\n slots: checkboxAnatomy.keys(),\n base: {\n root: {\n display: 'inline-flex',\n alignItems: 'flex-start',\n gap: '8',\n width: 'fit-content',\n },\n control: {\n position: 'relative',\n borderRadius: '4',\n backgroundColor: 'background/primary',\n border: '1px solid',\n borderColor: 'border/regular',\n boxShadow: 'inset/field',\n cursor: 'pointer',\n focusVisibleRing: 'outside',\n '& > svg': {\n position: 'absolute',\n left: '-1px',\n visibility: 'hidden',\n },\n _checked: {\n backgroundColor: 'input/checkbox/selection',\n borderColor: 'input/checkbox/selection !important',\n boxShadow: 'none',\n '& > svg': {\n top: 0,\n color: 'icon/on-color',\n visibility: 'visible',\n },\n _disabled: {\n backgroundColor: 'input/checkbox/selection-disabled',\n borderColor: 'input/checkbox/selection-disabled !important',\n },\n _readOnly: {\n '& > svg': {\n color: 'icon/on-disabled',\n },\n },\n },\n _hover: {\n borderColor: 'border/hover',\n },\n _indeterminate: {\n backgroundColor: 'input/checkbox/selection',\n borderColor: 'input/checkbox/selection !important',\n boxShadow: 'none',\n '& > svg': {\n top: '-1px',\n color: 'icon/on-color',\n visibility: 'visible',\n },\n _disabled: {\n backgroundColor: 'input/checkbox/selection-disabled',\n borderColor: 'input/checkbox/selection-disabled !important',\n },\n _readOnly: {\n '& > svg': {\n color: 'icon/on-disabled',\n },\n },\n },\n _disabled: {\n backgroundColor: 'background/disabled',\n borderColor: 'border/disabled',\n boxShadow: 'none',\n cursor: 'not-allowed',\n },\n _readOnly: {\n backgroundColor: 'background/disabled',\n borderColor: 'border/regular !important',\n boxShadow: 'none',\n cursor: 'default',\n },\n },\n label: {\n userSelect: 'none',\n color: 'input/text/inputValue',\n _disabled: {\n color: 'text/disabled',\n },\n },\n },\n variants: {\n size: {\n md: {\n control: {\n width: '20',\n height: '20',\n '& > svg': {\n width: '20',\n height: '20',\n },\n },\n label: {\n textStyle: 'body/md/regular',\n },\n },\n lg: {\n control: {\n width: '24',\n height: '24',\n '& > svg': {\n width: '24',\n height: '24',\n },\n },\n label: {\n textStyle: 'body/lg/regular',\n },\n },\n },\n },\n defaultVariants: {\n size: 'lg',\n },\n});\n\nexport default checkboxSlotRecipe;\n"],"mappings":";;;AAGA,IAAM,qBAAqB,iBAAiB;CAC1C,WAAW;CACX,OAAO,gBAAgB,KAAK;CAC5B,MAAM;EACJ,MAAM;GACJ,SAAS;GACT,YAAY;GACZ,KAAK;GACL,OAAO;EACT;EACA,SAAS;GACP,UAAU;GACV,cAAc;GACd,iBAAiB;GACjB,QAAQ;GACR,aAAa;GACb,WAAW;GACX,QAAQ;GACR,kBAAkB;GAClB,WAAW;IACT,UAAU;IACV,MAAM;IACN,YAAY;GACd;GACA,UAAU;IACR,iBAAiB;IACjB,aAAa;IACb,WAAW;IACX,WAAW;KACT,KAAK;KACL,OAAO;KACP,YAAY;IACd;IACA,WAAW;KACT,iBAAiB;KACjB,aAAa;IACf;IACA,WAAW,EACT,WAAW,EACT,OAAO,mBACT,EACF;GACF;GACA,QAAQ,EACN,aAAa,eACf;GACA,gBAAgB;IACd,iBAAiB;IACjB,aAAa;IACb,WAAW;IACX,WAAW;KACT,KAAK;KACL,OAAO;KACP,YAAY;IACd;IACA,WAAW;KACT,iBAAiB;KACjB,aAAa;IACf;IACA,WAAW,EACT,WAAW,EACT,OAAO,mBACT,EACF;GACF;GACA,WAAW;IACT,iBAAiB;IACjB,aAAa;IACb,WAAW;IACX,QAAQ;GACV;GACA,WAAW;IACT,iBAAiB;IACjB,aAAa;IACb,WAAW;IACX,QAAQ;GACV;EACF;EACA,OAAO;GACL,YAAY;GACZ,OAAO;GACP,WAAW,EACT,OAAO,gBACT;EACF;CACF;CACA,UAAU,EACR,MAAM;EACJ,IAAI;GACF,SAAS;IACP,OAAO;IACP,QAAQ;IACR,WAAW;KACT,OAAO;KACP,QAAQ;IACV;GACF;GACA,OAAO,EACL,WAAW,kBACb;EACF;EACA,IAAI;GACF,SAAS;IACP,OAAO;IACP,QAAQ;IACR,WAAW;KACT,OAAO;KACP,QAAQ;IACV;GACF;GACA,OAAO,EACL,WAAW,kBACb;EACF;CACF,EACF;CACA,iBAAiB,EACf,MAAM,KACR;AACF,CAAC"}
|
|
@@ -19,6 +19,7 @@ var radioGroupSlotRecipe = defineSlotRecipe({
|
|
|
19
19
|
backgroundColor: "background/primary",
|
|
20
20
|
borderRadius: "50%",
|
|
21
21
|
boxShadow: "inset/field",
|
|
22
|
+
cursor: "pointer",
|
|
22
23
|
display: "flex",
|
|
23
24
|
alignItems: "center",
|
|
24
25
|
justifyContent: "center",
|
|
@@ -29,12 +30,24 @@ var radioGroupSlotRecipe = defineSlotRecipe({
|
|
|
29
30
|
borderRadius: "50%",
|
|
30
31
|
backgroundColor: "icon/interactive"
|
|
31
32
|
},
|
|
32
|
-
_hover: {
|
|
33
|
+
_hover: {
|
|
34
|
+
borderColor: "border/hover",
|
|
35
|
+
_disabled: { borderColor: "border/disabled" },
|
|
36
|
+
_readOnly: { borderColor: "border/disabled" }
|
|
37
|
+
},
|
|
33
38
|
_disabled: {
|
|
34
39
|
backgroundColor: "background/disabled",
|
|
35
40
|
borderColor: "border/disabled",
|
|
36
41
|
boxShadow: "none",
|
|
42
|
+
cursor: "not-allowed",
|
|
37
43
|
"& > .dot": { backgroundColor: "icon/disabled" }
|
|
44
|
+
},
|
|
45
|
+
_readOnly: {
|
|
46
|
+
backgroundColor: "background/disabled",
|
|
47
|
+
borderColor: "border/disabled",
|
|
48
|
+
boxShadow: "none",
|
|
49
|
+
cursor: "default",
|
|
50
|
+
"& > .dot": { backgroundColor: "icon/on-disabled" }
|
|
38
51
|
}
|
|
39
52
|
},
|
|
40
53
|
itemText: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RadioGroup.recipe.js","names":[],"sources":["../../../lib/theme/slot-recipes/RadioGroup.recipe.ts"],"sourcesContent":["import { radioGroupAnatomy } from '@chakra-ui/react/anatomy';\nimport { defineSlotRecipe } from '@chakra-ui/react/styled-system';\n\nimport { rem } from '../themeUtils';\n\nconst radioGroupSlotRecipe = defineSlotRecipe({\n className: 'radio-group',\n slots: [...radioGroupAnatomy.keys(), 'badge'],\n base: {\n root: {\n display: 'flex',\n },\n item: {\n display: 'inline-flex',\n gap: '8',\n alignItems: 'flex-start',\n justifyContent: 'center',\n },\n itemControl: {\n border: '1px solid',\n borderColor: 'border/regular',\n backgroundColor: 'background/primary',\n borderRadius: '50%',\n boxShadow: 'inset/field',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n focusVisibleRing: 'outside',\n '& > .dot': {\n width: '12',\n height: '12',\n borderRadius: '50%',\n backgroundColor: 'icon/interactive',\n },\n _hover: {\n borderColor: 'border/hover',\n },\n _disabled: {\n backgroundColor: 'background/disabled',\n borderColor: 'border/disabled',\n boxShadow: 'none',\n '& > .dot': {\n backgroundColor: 'icon/disabled',\n },\n },\n },\n itemText: {\n color: 'input/text/inputValue',\n _disabled: {\n color: 'text/disabled',\n },\n },\n },\n variants: {\n orientation: {\n horizontal: {\n root: {\n flexDirection: 'row',\n gap: '24',\n },\n },\n vertical: {\n root: {\n alignItems: 'flex-start',\n flexDirection: 'column',\n gap: '12',\n },\n },\n },\n size: {\n md: {\n badge: {\n paddingBlock: '2',\n width: rem(36),\n },\n itemControl: {\n width: '20',\n height: '20',\n },\n itemText: {\n textStyle: 'body/md/regular',\n },\n },\n lg: {\n badge: {\n paddingBlock: '4',\n width: '40',\n },\n itemControl: {\n width: '24',\n height: '24',\n },\n itemText: {\n textStyle: 'body/lg/regular',\n },\n },\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n size: 'lg',\n },\n});\n\nexport default radioGroupSlotRecipe;\n"],"mappings":";;;;AAKA,IAAM,uBAAuB,iBAAiB;CAC5C,WAAW;CACX,OAAO,CAAC,GAAG,kBAAkB,KAAK,GAAG,OAAO;CAC5C,MAAM;EACJ,MAAM,EACJ,SAAS,OACX;EACA,MAAM;GACJ,SAAS;GACT,KAAK;GACL,YAAY;GACZ,gBAAgB;EAClB;EACA,aAAa;GACX,QAAQ;GACR,aAAa;GACb,iBAAiB;GACjB,cAAc;GACd,WAAW;GACX,SAAS;GACT,YAAY;GACZ,gBAAgB;GAChB,kBAAkB;GAClB,YAAY;IACV,OAAO;IACP,QAAQ;IACR,cAAc;IACd,iBAAiB;GACnB;GACA,QAAQ,
|
|
1
|
+
{"version":3,"file":"RadioGroup.recipe.js","names":[],"sources":["../../../lib/theme/slot-recipes/RadioGroup.recipe.ts"],"sourcesContent":["import { radioGroupAnatomy } from '@chakra-ui/react/anatomy';\nimport { defineSlotRecipe } from '@chakra-ui/react/styled-system';\n\nimport { rem } from '../themeUtils';\n\nconst radioGroupSlotRecipe = defineSlotRecipe({\n className: 'radio-group',\n slots: [...radioGroupAnatomy.keys(), 'badge'],\n base: {\n root: {\n display: 'flex',\n },\n item: {\n display: 'inline-flex',\n gap: '8',\n alignItems: 'flex-start',\n justifyContent: 'center',\n },\n itemControl: {\n border: '1px solid',\n borderColor: 'border/regular',\n backgroundColor: 'background/primary',\n borderRadius: '50%',\n boxShadow: 'inset/field',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n focusVisibleRing: 'outside',\n '& > .dot': {\n width: '12',\n height: '12',\n borderRadius: '50%',\n backgroundColor: 'icon/interactive',\n },\n _hover: {\n borderColor: 'border/hover',\n _disabled: {\n borderColor: 'border/disabled',\n },\n _readOnly: {\n borderColor: 'border/disabled',\n },\n },\n _disabled: {\n backgroundColor: 'background/disabled',\n borderColor: 'border/disabled',\n boxShadow: 'none',\n cursor: 'not-allowed',\n '& > .dot': {\n backgroundColor: 'icon/disabled',\n },\n },\n _readOnly: {\n backgroundColor: 'background/disabled',\n borderColor: 'border/disabled',\n boxShadow: 'none',\n cursor: 'default',\n '& > .dot': {\n backgroundColor: 'icon/on-disabled',\n },\n },\n },\n itemText: {\n color: 'input/text/inputValue',\n _disabled: {\n color: 'text/disabled',\n },\n },\n },\n variants: {\n orientation: {\n horizontal: {\n root: {\n flexDirection: 'row',\n gap: '24',\n },\n },\n vertical: {\n root: {\n alignItems: 'flex-start',\n flexDirection: 'column',\n gap: '12',\n },\n },\n },\n size: {\n md: {\n badge: {\n paddingBlock: '2',\n width: rem(36),\n },\n itemControl: {\n width: '20',\n height: '20',\n },\n itemText: {\n textStyle: 'body/md/regular',\n },\n },\n lg: {\n badge: {\n paddingBlock: '4',\n width: '40',\n },\n itemControl: {\n width: '24',\n height: '24',\n },\n itemText: {\n textStyle: 'body/lg/regular',\n },\n },\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n size: 'lg',\n },\n});\n\nexport default radioGroupSlotRecipe;\n"],"mappings":";;;;AAKA,IAAM,uBAAuB,iBAAiB;CAC5C,WAAW;CACX,OAAO,CAAC,GAAG,kBAAkB,KAAK,GAAG,OAAO;CAC5C,MAAM;EACJ,MAAM,EACJ,SAAS,OACX;EACA,MAAM;GACJ,SAAS;GACT,KAAK;GACL,YAAY;GACZ,gBAAgB;EAClB;EACA,aAAa;GACX,QAAQ;GACR,aAAa;GACb,iBAAiB;GACjB,cAAc;GACd,WAAW;GACX,QAAQ;GACR,SAAS;GACT,YAAY;GACZ,gBAAgB;GAChB,kBAAkB;GAClB,YAAY;IACV,OAAO;IACP,QAAQ;IACR,cAAc;IACd,iBAAiB;GACnB;GACA,QAAQ;IACN,aAAa;IACb,WAAW,EACT,aAAa,kBACf;IACA,WAAW,EACT,aAAa,kBACf;GACF;GACA,WAAW;IACT,iBAAiB;IACjB,aAAa;IACb,WAAW;IACX,QAAQ;IACR,YAAY,EACV,iBAAiB,gBACnB;GACF;GACA,WAAW;IACT,iBAAiB;IACjB,aAAa;IACb,WAAW;IACX,QAAQ;IACR,YAAY,EACV,iBAAiB,mBACnB;GACF;EACF;EACA,UAAU;GACR,OAAO;GACP,WAAW,EACT,OAAO,gBACT;EACF;CACF;CACA,UAAU;EACR,aAAa;GACX,YAAY,EACV,MAAM;IACJ,eAAe;IACf,KAAK;GACP,EACF;GACA,UAAU,EACR,MAAM;IACJ,YAAY;IACZ,eAAe;IACf,KAAK;GACP,EACF;EACF;EACA,MAAM;GACJ,IAAI;IACF,OAAO;KACL,cAAc;KACd,OAAO,IAAI,EAAE;IACf;IACA,aAAa;KACX,OAAO;KACP,QAAQ;IACV;IACA,UAAU,EACR,WAAW,kBACb;GACF;GACA,IAAI;IACF,OAAO;KACL,cAAc;KACd,OAAO;IACT;IACA,aAAa;KACX,OAAO;KACP,QAAQ;IACV;IACA,UAAU,EACR,WAAW,kBACb;GACF;EACF;CACF;CACA,iBAAiB;EACf,aAAa;EACb,MAAM;CACR;AACF,CAAC"}
|