@foxford/ui 2.74.0 → 2.75.0-beta-9c898b3-20250515
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/components/Accordion/Accordion.js +1 -1
- package/components/Accordion/Accordion.js.map +1 -1
- package/components/Accordion/Accordion.mjs +1 -1
- package/components/Accordion/Accordion.mjs.map +1 -1
- package/components/Accordion/AccordionDivider.js +2 -0
- package/components/Accordion/AccordionDivider.js.map +1 -0
- package/components/Accordion/AccordionDivider.mjs +2 -0
- package/components/Accordion/AccordionDivider.mjs.map +1 -0
- package/components/Accordion/hooks.js +2 -0
- package/components/Accordion/hooks.js.map +1 -0
- package/components/Accordion/hooks.mjs +2 -0
- package/components/Accordion/hooks.mjs.map +1 -0
- package/components/Accordion/sizes.js +2 -0
- package/components/Accordion/sizes.js.map +1 -0
- package/components/Accordion/sizes.mjs +2 -0
- package/components/Accordion/sizes.mjs.map +1 -0
- package/components/Accordion/style.js +1 -1
- package/components/Accordion/style.js.map +1 -1
- package/components/Accordion/style.mjs +1 -1
- package/components/Accordion/style.mjs.map +1 -1
- package/components/AccordionItem/AccordionItem.js +2 -0
- package/components/AccordionItem/AccordionItem.js.map +1 -0
- package/components/AccordionItem/AccordionItem.mjs +2 -0
- package/components/AccordionItem/AccordionItem.mjs.map +1 -0
- package/components/AccordionItem/hooks.js +2 -0
- package/components/AccordionItem/hooks.js.map +1 -0
- package/components/AccordionItem/hooks.mjs +2 -0
- package/components/AccordionItem/hooks.mjs.map +1 -0
- package/components/AccordionItem/sizes.js +2 -0
- package/components/AccordionItem/sizes.js.map +1 -0
- package/components/AccordionItem/sizes.mjs +2 -0
- package/components/AccordionItem/sizes.mjs.map +1 -0
- package/components/AccordionItem/style.js +2 -0
- package/components/AccordionItem/style.js.map +1 -0
- package/components/AccordionItem/style.mjs +2 -0
- package/components/AccordionItem/style.mjs.map +1 -0
- package/components/Button/Button.js +1 -1
- package/components/Button/Button.js.map +1 -1
- package/components/Button/Button.mjs +1 -1
- package/components/Button/Button.mjs.map +1 -1
- package/dts/index.d.ts +515 -129
- package/mixins/focus.js +1 -1
- package/mixins/focus.js.map +1 -1
- package/mixins/focus.mjs +1 -1
- package/mixins/focus.mjs.map +1 -1
- package/package.json +2 -1
- package/shared/constants.js +1 -1
- package/shared/constants.js.map +1 -1
- package/shared/constants.mjs +1 -1
- package/shared/constants.mjs.map +1 -1
- package/shared/context/accordion.js +2 -0
- package/shared/context/accordion.js.map +1 -0
- package/shared/context/accordion.mjs +2 -0
- package/shared/context/accordion.mjs.map +1 -0
- package/shared/utils/dom.js +1 -1
- package/shared/utils/dom.js.map +1 -1
- package/shared/utils/dom.mjs +1 -1
- package/shared/utils/dom.mjs.map +1 -1
- package/components/Accordion/constants.js +0 -2
- package/components/Accordion/constants.js.map +0 -1
- package/components/Accordion/constants.mjs +0 -2
- package/components/Accordion/constants.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style.js","sources":["../../../../src/components/AccordionItem/style.ts"],"sourcesContent":["import styled, { css } from 'styled-components'\nimport { createShouldForwardProp } from 'shared/utils/style'\nimport { responsiveSize } from 'mixins/responsive-size'\nimport { responsiveMargin } from 'mixins/responsive-margin'\nimport { focus } from 'mixins/focus'\nimport type { ResponsiveSizeProps, ResponsiveSizeInterpolationProps } from 'shared/interfaces'\nimport type { Size, AccordionItemPalette, StyledAccordionItemProps } from './types'\n\nconst shouldForwardAccordionItemProp = createShouldForwardProp(\n (propKey) => !['expanded', 'disabled', 'loading', 'borderRadius'].includes(propKey)\n)\n\nconst shouldForwardAccordionItemCommonProp = createShouldForwardProp()\n\nexport const Heading = styled.h3`\n box-sizing: border-box;\n display: flex;\n margin: 0;\n padding: ${focus.padding}px;\n border-radius: inherit;\n font: inherit;\n transition-property: color;\n transition-duration: 150ms;\n transition-timing-function: ease-in;\n`\n\nconst template = (palette: AccordionItemPalette) => `\n background-color: ${palette.backgroundColor};\n\n & ${Heading} {\n color: ${palette.headerColor};\n background-color: ${palette.headerBackgroundColor};\n }\n & ${Heading}:hover {\n color: ${palette.headerColorHover};\n }\n`\n\nconst COLOR_SCHEMA = {\n primary: {\n default: css<StyledAccordionItemProps>`\n ${(props) =>\n template({\n headerColor: props.palette.headerColor ?? props.theme.colors['content-onmain-primary'],\n headerColorHover:\n props.palette.headerColorExpanded ??\n props.palette.headerColor ??\n props.theme.colors['content-brand-primary'],\n headerBackgroundColor: props.palette.headerBackgroundColor ?? props.theme.colors.transparent,\n backgroundColor: props.palette.backgroundColor ?? props.theme.colors['bg-onmain-primary'],\n })}\n `,\n expanded: css<StyledAccordionItemProps>`\n ${(props) =>\n template({\n headerColor:\n props.palette.headerColorExpanded ??\n props.palette.headerColor ??\n props.theme.colors['content-brand-primary'],\n headerColorHover:\n props.palette.headerColorExpanded ??\n props.palette.headerColor ??\n props.theme.colors['content-brand-primary'],\n headerBackgroundColor:\n props.palette.headerBackgroundColorExpanded ??\n props.palette.headerBackgroundColor ??\n props.theme.colors.transparent,\n backgroundColor:\n props.palette.backgroundColorExpanded ??\n props.palette.backgroundColor ??\n props.theme.colors['bg-onmain-primary'],\n })}\n `,\n disabled: css<StyledAccordionItemProps>`\n ${(props) =>\n template({\n headerColor: props.palette.headerColorDisabled ?? props.theme.colors['content-disabled'],\n headerColorHover: props.palette.headerColorDisabled ?? props.theme.colors['content-disabled'],\n headerBackgroundColor: props.palette.headerBackgroundColorDisabled ?? props.theme.colors.transparent,\n backgroundColor: props.palette.backgroundColorDisabled ?? props.theme.colors['bg-onmain-primary'],\n })}\n `,\n },\n secondary: {\n default: css<StyledAccordionItemProps>`\n ${(props) =>\n template({\n headerColor: props.palette.headerColor ?? props.theme.colors['content-onmain-primary'],\n headerColorHover:\n props.palette.headerColorExpanded ??\n props.palette.headerColor ??\n props.theme.colors['content-brand-primary'],\n headerBackgroundColor: props.palette.headerBackgroundColor ?? props.theme.colors.transparent,\n backgroundColor: props.palette.backgroundColor ?? props.theme.colors['bg-onmain-secondary'],\n })}\n `,\n expanded: css<StyledAccordionItemProps>`\n ${(props) =>\n template({\n headerColor:\n props.palette.headerColorExpanded ??\n props.palette.headerColor ??\n props.theme.colors['content-brand-primary'],\n headerColorHover:\n props.palette.headerColorExpanded ??\n props.palette.headerColor ??\n props.theme.colors['content-brand-primary'],\n headerBackgroundColor:\n props.palette.headerBackgroundColorExpanded ??\n props.palette.headerBackgroundColor ??\n props.theme.colors.transparent,\n backgroundColor:\n props.palette.backgroundColorExpanded ??\n props.palette.backgroundColor ??\n props.theme.colors['bg-onmain-secondary'],\n })}\n `,\n disabled: css<StyledAccordionItemProps>`\n ${(props) =>\n template({\n headerColor: props.palette.headerColorDisabled ?? props.theme.colors['content-disabled'],\n headerColorHover: props.palette.headerColorDisabled ?? props.theme.colors['content-disabled'],\n headerBackgroundColor: props.palette.headerBackgroundColorDisabled ?? props.theme.colors.transparent,\n backgroundColor: props.palette.backgroundColorDisabled ?? props.theme.colors['bg-onmain-secondary'],\n })}\n `,\n },\n transparent: {\n default: css<StyledAccordionItemProps>`\n ${(props) =>\n template({\n headerColor: props.palette.headerColor ?? props.theme.colors['content-onmain-primary'],\n headerColorHover:\n props.palette.headerColorExpanded ??\n props.palette.headerColor ??\n props.theme.colors['content-brand-primary'],\n headerBackgroundColor: props.palette.headerBackgroundColor ?? props.theme.colors.transparent,\n backgroundColor: props.palette.backgroundColor ?? props.theme.colors.transparent,\n })}\n `,\n expanded: css<StyledAccordionItemProps>`\n ${(props) =>\n template({\n headerColor:\n props.palette.headerColorExpanded ??\n props.palette.headerColor ??\n props.theme.colors['content-brand-primary'],\n headerColorHover:\n props.palette.headerColorExpanded ??\n props.palette.headerColor ??\n props.theme.colors['content-brand-primary'],\n headerBackgroundColor:\n props.palette.headerBackgroundColorExpanded ??\n props.palette.headerBackgroundColor ??\n props.theme.colors.transparent,\n backgroundColor:\n props.palette.backgroundColorExpanded ?? props.palette.backgroundColor ?? props.theme.colors.transparent,\n })}\n `,\n disabled: css<StyledAccordionItemProps>`\n ${(props) =>\n template({\n headerColor: props.palette.headerColorDisabled ?? props.theme.colors['content-disabled'],\n headerColorHover: props.palette.headerColorDisabled ?? props.theme.colors['content-disabled'],\n headerBackgroundColor: props.palette.headerBackgroundColorDisabled ?? props.theme.colors.transparent,\n backgroundColor: props.palette.backgroundColorDisabled ?? props.theme.colors.transparent,\n })}\n `,\n },\n}\n\nexport const Panel = styled.div`\n box-sizing: border-box;\n overflow: hidden;\n transition-property: opacity;\n`\n\nexport const Button = styled.button`\n box-sizing: border-box;\n display: flex;\n flex-grow: 1;\n appearance: none;\n border: none;\n margin: 0;\n padding: 0;\n color: inherit;\n background-color: transparent;\n font: inherit;\n cursor: inherit;\n text-align: left;\n\n ${focus}\n`\n\nexport const Root = styled.section.withConfig<StyledAccordionItemProps>({\n shouldForwardProp: shouldForwardAccordionItemProp,\n})`\n box-sizing: border-box;\n display: grid;\n transition-property: grid-template-rows;\n\n &,\n & > ${Panel} {\n transition-timing-function: cubic-bezier(0.42, 0, 0.75, 1);\n transition-duration: 250ms;\n }\n @media (prefers-reduced-motion: reduce) {\n transition-duration: 0ms;\n }\n\n ${(props) =>\n props.expanded\n ? `\n grid-template-rows: 0fr 1fr;\n & > ${Panel} {\n opacity: 1;\n }\n `\n : `\n grid-template-rows: 0fr 0fr;\n & > ${Panel} {\n opacity: 0;\n }\n `}\n\n ${(props) => `\n border-radius: ${props.borderRadius}px;\n \n & ${Button} {\n border-radius: ${props.borderRadius > focus.padding ? props.borderRadius - focus.padding : 0}px;\n }\n \n & ${Heading} {\n cursor: ${props.loading ? 'wait' : props.disabled ? 'not-allowed' : 'pointer'};\n }\n `}\n\n ${(props) => {\n let schema = COLOR_SCHEMA.transparent\n\n if (props.primary) {\n schema = COLOR_SCHEMA.primary\n }\n if (props.secondary) {\n schema = COLOR_SCHEMA.secondary\n }\n\n if (props.disabled) return schema.disabled\n if (props.expanded) return schema.expanded\n\n return schema.default\n }}\n\n ${responsiveSize}\n ${responsiveMargin}\n`\n\nexport const Header = styled.span.withConfig<ResponsiveSizeInterpolationProps<Size, Size, ResponsiveSizeProps<Size>>>({\n shouldForwardProp: shouldForwardAccordionItemCommonProp,\n})`\n box-sizing: border-box;\n display: flex;\n flex-grow: 1;\n\n & > *:not(:last-child) {\n margin-right: 8px;\n }\n\n ${responsiveSize}\n`\n\nexport const Content = styled.span`\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n align-self: center;\n flex-grow: 1;\n`\n\nexport const IconAnimation = styled.span.withConfig<{ up: boolean }>({\n shouldForwardProp: (propKey) => propKey !== 'up',\n})`\n box-sizing: border-box;\n display: flex;\n align-self: flex-start;\n flex-shrink: 0;\n transition-property: transform;\n transition-duration: 250ms;\n transform-origin: center;\n @media (prefers-reduced-motion: reduce) {\n transition-duration: 0ms;\n }\n ${(props) => `\n transform: rotate(${props.up ? 180 : 0}deg);\n `}\n`\n\nexport const Details = styled.div.withConfig<ResponsiveSizeInterpolationProps<Size, Size, ResponsiveSizeProps<Size>>>({\n shouldForwardProp: shouldForwardAccordionItemCommonProp,\n})`\n box-sizing: border-box;\n\n ${responsiveSize}\n`\n"],"names":["shouldForwardAccordionItemProp","createShouldForwardProp","propKey","includes","shouldForwardAccordionItemCommonProp","Heading","styled","h3","withConfig","displayName","componentId","focus","padding","template","palette","backgroundColor","headerColor","headerBackgroundColor","headerColorHover","COLOR_SCHEMA","primary","default","css","props","theme","colors","headerColorExpanded","transparent","expanded","headerBackgroundColorExpanded","backgroundColorExpanded","disabled","headerColorDisabled","headerBackgroundColorDisabled","backgroundColorDisabled","secondary","Panel","div","Button","button","Root","section","shouldForwardProp","borderRadius","loading","schema","responsiveSize","responsiveMargin","Header","span","Content","IconAnimation","up","Details"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import styled,{css}from'styled-components';import{createShouldForwardProp}from'../../shared/utils/style.mjs';import{responsiveSize}from'../../mixins/responsive-size.mjs';import{responsiveMargin}from'../../mixins/responsive-margin.mjs';import{focus}from'../../mixins/focus.mjs';const shouldForwardAccordionItemProp=createShouldForwardProp((e=>!['expanded','disabled','loading','borderRadius'].includes(e)));const shouldForwardAccordionItemCommonProp=createShouldForwardProp();const Heading=styled.h3.withConfig({displayName:"AccordionItem__Heading",componentId:"ui__sc-7h1z5c-0"})(["box-sizing:border-box;display:flex;margin:0;padding:","px;border-radius:inherit;font:inherit;transition-property:color;transition-duration:150ms;transition-timing-function:ease-in;"],focus.padding);const template=e=>`\n background-color: ${e.backgroundColor};\n\n & ${Heading} {\n color: ${e.headerColor};\n background-color: ${e.headerBackgroundColor};\n }\n & ${Heading}:hover {\n color: ${e.headerColorHover};\n }\n`;const COLOR_SCHEMA={primary:{default:css(["",""],(e=>template({headerColor:e.palette.headerColor??e.theme.colors['content-onmain-primary'],headerColorHover:e.palette.headerColorExpanded??e.palette.headerColor??e.theme.colors['content-brand-primary'],headerBackgroundColor:e.palette.headerBackgroundColor??e.theme.colors.transparent,backgroundColor:e.palette.backgroundColor??e.theme.colors['bg-onmain-primary']}))),expanded:css(["",""],(e=>template({headerColor:e.palette.headerColorExpanded??e.palette.headerColor??e.theme.colors['content-brand-primary'],headerColorHover:e.palette.headerColorExpanded??e.palette.headerColor??e.theme.colors['content-brand-primary'],headerBackgroundColor:e.palette.headerBackgroundColorExpanded??e.palette.headerBackgroundColor??e.theme.colors.transparent,backgroundColor:e.palette.backgroundColorExpanded??e.palette.backgroundColor??e.theme.colors['bg-onmain-primary']}))),disabled:css(["",""],(e=>template({headerColor:e.palette.headerColorDisabled??e.theme.colors['content-disabled'],headerColorHover:e.palette.headerColorDisabled??e.theme.colors['content-disabled'],headerBackgroundColor:e.palette.headerBackgroundColorDisabled??e.theme.colors.transparent,backgroundColor:e.palette.backgroundColorDisabled??e.theme.colors['bg-onmain-primary']})))},secondary:{default:css(["",""],(e=>template({headerColor:e.palette.headerColor??e.theme.colors['content-onmain-primary'],headerColorHover:e.palette.headerColorExpanded??e.palette.headerColor??e.theme.colors['content-brand-primary'],headerBackgroundColor:e.palette.headerBackgroundColor??e.theme.colors.transparent,backgroundColor:e.palette.backgroundColor??e.theme.colors['bg-onmain-secondary']}))),expanded:css(["",""],(e=>template({headerColor:e.palette.headerColorExpanded??e.palette.headerColor??e.theme.colors['content-brand-primary'],headerColorHover:e.palette.headerColorExpanded??e.palette.headerColor??e.theme.colors['content-brand-primary'],headerBackgroundColor:e.palette.headerBackgroundColorExpanded??e.palette.headerBackgroundColor??e.theme.colors.transparent,backgroundColor:e.palette.backgroundColorExpanded??e.palette.backgroundColor??e.theme.colors['bg-onmain-secondary']}))),disabled:css(["",""],(e=>template({headerColor:e.palette.headerColorDisabled??e.theme.colors['content-disabled'],headerColorHover:e.palette.headerColorDisabled??e.theme.colors['content-disabled'],headerBackgroundColor:e.palette.headerBackgroundColorDisabled??e.theme.colors.transparent,backgroundColor:e.palette.backgroundColorDisabled??e.theme.colors['bg-onmain-secondary']})))},transparent:{default:css(["",""],(e=>template({headerColor:e.palette.headerColor??e.theme.colors['content-onmain-primary'],headerColorHover:e.palette.headerColorExpanded??e.palette.headerColor??e.theme.colors['content-brand-primary'],headerBackgroundColor:e.palette.headerBackgroundColor??e.theme.colors.transparent,backgroundColor:e.palette.backgroundColor??e.theme.colors.transparent}))),expanded:css(["",""],(e=>template({headerColor:e.palette.headerColorExpanded??e.palette.headerColor??e.theme.colors['content-brand-primary'],headerColorHover:e.palette.headerColorExpanded??e.palette.headerColor??e.theme.colors['content-brand-primary'],headerBackgroundColor:e.palette.headerBackgroundColorExpanded??e.palette.headerBackgroundColor??e.theme.colors.transparent,backgroundColor:e.palette.backgroundColorExpanded??e.palette.backgroundColor??e.theme.colors.transparent}))),disabled:css(["",""],(e=>template({headerColor:e.palette.headerColorDisabled??e.theme.colors['content-disabled'],headerColorHover:e.palette.headerColorDisabled??e.theme.colors['content-disabled'],headerBackgroundColor:e.palette.headerBackgroundColorDisabled??e.theme.colors.transparent,backgroundColor:e.palette.backgroundColorDisabled??e.theme.colors.transparent})))}};const Panel=styled.div.withConfig({displayName:"AccordionItem__Panel",componentId:"ui__sc-7h1z5c-1"})(["box-sizing:border-box;overflow:hidden;transition-property:opacity;"]);const Button=styled.button.withConfig({displayName:"AccordionItem__Button",componentId:"ui__sc-7h1z5c-2"})(["box-sizing:border-box;display:flex;flex-grow:1;appearance:none;border:none;margin:0;padding:0;color:inherit;background-color:transparent;font:inherit;cursor:inherit;text-align:left;",""],focus);const Root=styled.section.withConfig({shouldForwardProp:shouldForwardAccordionItemProp}).withConfig({displayName:"AccordionItem__Root",componentId:"ui__sc-7h1z5c-3"})(["box-sizing:border-box;display:grid;transition-property:grid-template-rows;&,& > ","{transition-timing-function:cubic-bezier(0.42,0,0.75,1);transition-duration:250ms;}@media (prefers-reduced-motion:reduce){transition-duration:0ms;}"," "," "," "," ",""],Panel,(e=>e.expanded?`\n grid-template-rows: 0fr 1fr;\n & > ${Panel} {\n opacity: 1;\n }\n `:`\n grid-template-rows: 0fr 0fr;\n & > ${Panel} {\n opacity: 0;\n }\n `),(e=>`\n border-radius: ${e.borderRadius}px;\n \n & ${Button} {\n border-radius: ${e.borderRadius>focus.padding?e.borderRadius-focus.padding:0}px;\n }\n \n & ${Heading} {\n cursor: ${e.loading?'wait':e.disabled?'not-allowed':'pointer'};\n }\n `),(e=>{let o=COLOR_SCHEMA.transparent;return e.primary&&(o=COLOR_SCHEMA.primary),e.secondary&&(o=COLOR_SCHEMA.secondary),e.disabled?o.disabled:e.expanded?o.expanded:o.default}),responsiveSize,responsiveMargin);const Header=styled.span.withConfig({shouldForwardProp:shouldForwardAccordionItemCommonProp}).withConfig({displayName:"AccordionItem__Header",componentId:"ui__sc-7h1z5c-4"})(["box-sizing:border-box;display:flex;flex-grow:1;& > *:not(:last-child){margin-right:8px;}",""],responsiveSize);const Content=styled.span.withConfig({displayName:"AccordionItem__Content",componentId:"ui__sc-7h1z5c-5"})(["box-sizing:border-box;display:flex;flex-direction:column;align-items:flex-start;align-self:center;flex-grow:1;"]);const IconAnimation=styled.span.withConfig({shouldForwardProp:e=>e!=='up'}).withConfig({displayName:"AccordionItem__IconAnimation",componentId:"ui__sc-7h1z5c-6"})(["box-sizing:border-box;display:flex;align-self:flex-start;flex-shrink:0;transition-property:transform;transition-duration:250ms;transform-origin:center;@media (prefers-reduced-motion:reduce){transition-duration:0ms;}",""],(e=>`\n transform: rotate(${e.up?180:0}deg);\n `));const Details=styled.div.withConfig({shouldForwardProp:shouldForwardAccordionItemCommonProp}).withConfig({displayName:"AccordionItem__Details",componentId:"ui__sc-7h1z5c-7"})(["box-sizing:border-box;",""],responsiveSize);export{Button,Content,Details,Header,Heading,IconAnimation,Panel,Root};
|
|
2
|
+
//# sourceMappingURL=style.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style.mjs","sources":["../../../../src/components/AccordionItem/style.ts"],"sourcesContent":["import styled, { css } from 'styled-components'\nimport { createShouldForwardProp } from 'shared/utils/style'\nimport { responsiveSize } from 'mixins/responsive-size'\nimport { responsiveMargin } from 'mixins/responsive-margin'\nimport { focus } from 'mixins/focus'\nimport type { ResponsiveSizeProps, ResponsiveSizeInterpolationProps } from 'shared/interfaces'\nimport type { Size, AccordionItemPalette, StyledAccordionItemProps } from './types'\n\nconst shouldForwardAccordionItemProp = createShouldForwardProp(\n (propKey) => !['expanded', 'disabled', 'loading', 'borderRadius'].includes(propKey)\n)\n\nconst shouldForwardAccordionItemCommonProp = createShouldForwardProp()\n\nexport const Heading = styled.h3`\n box-sizing: border-box;\n display: flex;\n margin: 0;\n padding: ${focus.padding}px;\n border-radius: inherit;\n font: inherit;\n transition-property: color;\n transition-duration: 150ms;\n transition-timing-function: ease-in;\n`\n\nconst template = (palette: AccordionItemPalette) => `\n background-color: ${palette.backgroundColor};\n\n & ${Heading} {\n color: ${palette.headerColor};\n background-color: ${palette.headerBackgroundColor};\n }\n & ${Heading}:hover {\n color: ${palette.headerColorHover};\n }\n`\n\nconst COLOR_SCHEMA = {\n primary: {\n default: css<StyledAccordionItemProps>`\n ${(props) =>\n template({\n headerColor: props.palette.headerColor ?? props.theme.colors['content-onmain-primary'],\n headerColorHover:\n props.palette.headerColorExpanded ??\n props.palette.headerColor ??\n props.theme.colors['content-brand-primary'],\n headerBackgroundColor: props.palette.headerBackgroundColor ?? props.theme.colors.transparent,\n backgroundColor: props.palette.backgroundColor ?? props.theme.colors['bg-onmain-primary'],\n })}\n `,\n expanded: css<StyledAccordionItemProps>`\n ${(props) =>\n template({\n headerColor:\n props.palette.headerColorExpanded ??\n props.palette.headerColor ??\n props.theme.colors['content-brand-primary'],\n headerColorHover:\n props.palette.headerColorExpanded ??\n props.palette.headerColor ??\n props.theme.colors['content-brand-primary'],\n headerBackgroundColor:\n props.palette.headerBackgroundColorExpanded ??\n props.palette.headerBackgroundColor ??\n props.theme.colors.transparent,\n backgroundColor:\n props.palette.backgroundColorExpanded ??\n props.palette.backgroundColor ??\n props.theme.colors['bg-onmain-primary'],\n })}\n `,\n disabled: css<StyledAccordionItemProps>`\n ${(props) =>\n template({\n headerColor: props.palette.headerColorDisabled ?? props.theme.colors['content-disabled'],\n headerColorHover: props.palette.headerColorDisabled ?? props.theme.colors['content-disabled'],\n headerBackgroundColor: props.palette.headerBackgroundColorDisabled ?? props.theme.colors.transparent,\n backgroundColor: props.palette.backgroundColorDisabled ?? props.theme.colors['bg-onmain-primary'],\n })}\n `,\n },\n secondary: {\n default: css<StyledAccordionItemProps>`\n ${(props) =>\n template({\n headerColor: props.palette.headerColor ?? props.theme.colors['content-onmain-primary'],\n headerColorHover:\n props.palette.headerColorExpanded ??\n props.palette.headerColor ??\n props.theme.colors['content-brand-primary'],\n headerBackgroundColor: props.palette.headerBackgroundColor ?? props.theme.colors.transparent,\n backgroundColor: props.palette.backgroundColor ?? props.theme.colors['bg-onmain-secondary'],\n })}\n `,\n expanded: css<StyledAccordionItemProps>`\n ${(props) =>\n template({\n headerColor:\n props.palette.headerColorExpanded ??\n props.palette.headerColor ??\n props.theme.colors['content-brand-primary'],\n headerColorHover:\n props.palette.headerColorExpanded ??\n props.palette.headerColor ??\n props.theme.colors['content-brand-primary'],\n headerBackgroundColor:\n props.palette.headerBackgroundColorExpanded ??\n props.palette.headerBackgroundColor ??\n props.theme.colors.transparent,\n backgroundColor:\n props.palette.backgroundColorExpanded ??\n props.palette.backgroundColor ??\n props.theme.colors['bg-onmain-secondary'],\n })}\n `,\n disabled: css<StyledAccordionItemProps>`\n ${(props) =>\n template({\n headerColor: props.palette.headerColorDisabled ?? props.theme.colors['content-disabled'],\n headerColorHover: props.palette.headerColorDisabled ?? props.theme.colors['content-disabled'],\n headerBackgroundColor: props.palette.headerBackgroundColorDisabled ?? props.theme.colors.transparent,\n backgroundColor: props.palette.backgroundColorDisabled ?? props.theme.colors['bg-onmain-secondary'],\n })}\n `,\n },\n transparent: {\n default: css<StyledAccordionItemProps>`\n ${(props) =>\n template({\n headerColor: props.palette.headerColor ?? props.theme.colors['content-onmain-primary'],\n headerColorHover:\n props.palette.headerColorExpanded ??\n props.palette.headerColor ??\n props.theme.colors['content-brand-primary'],\n headerBackgroundColor: props.palette.headerBackgroundColor ?? props.theme.colors.transparent,\n backgroundColor: props.palette.backgroundColor ?? props.theme.colors.transparent,\n })}\n `,\n expanded: css<StyledAccordionItemProps>`\n ${(props) =>\n template({\n headerColor:\n props.palette.headerColorExpanded ??\n props.palette.headerColor ??\n props.theme.colors['content-brand-primary'],\n headerColorHover:\n props.palette.headerColorExpanded ??\n props.palette.headerColor ??\n props.theme.colors['content-brand-primary'],\n headerBackgroundColor:\n props.palette.headerBackgroundColorExpanded ??\n props.palette.headerBackgroundColor ??\n props.theme.colors.transparent,\n backgroundColor:\n props.palette.backgroundColorExpanded ?? props.palette.backgroundColor ?? props.theme.colors.transparent,\n })}\n `,\n disabled: css<StyledAccordionItemProps>`\n ${(props) =>\n template({\n headerColor: props.palette.headerColorDisabled ?? props.theme.colors['content-disabled'],\n headerColorHover: props.palette.headerColorDisabled ?? props.theme.colors['content-disabled'],\n headerBackgroundColor: props.palette.headerBackgroundColorDisabled ?? props.theme.colors.transparent,\n backgroundColor: props.palette.backgroundColorDisabled ?? props.theme.colors.transparent,\n })}\n `,\n },\n}\n\nexport const Panel = styled.div`\n box-sizing: border-box;\n overflow: hidden;\n transition-property: opacity;\n`\n\nexport const Button = styled.button`\n box-sizing: border-box;\n display: flex;\n flex-grow: 1;\n appearance: none;\n border: none;\n margin: 0;\n padding: 0;\n color: inherit;\n background-color: transparent;\n font: inherit;\n cursor: inherit;\n text-align: left;\n\n ${focus}\n`\n\nexport const Root = styled.section.withConfig<StyledAccordionItemProps>({\n shouldForwardProp: shouldForwardAccordionItemProp,\n})`\n box-sizing: border-box;\n display: grid;\n transition-property: grid-template-rows;\n\n &,\n & > ${Panel} {\n transition-timing-function: cubic-bezier(0.42, 0, 0.75, 1);\n transition-duration: 250ms;\n }\n @media (prefers-reduced-motion: reduce) {\n transition-duration: 0ms;\n }\n\n ${(props) =>\n props.expanded\n ? `\n grid-template-rows: 0fr 1fr;\n & > ${Panel} {\n opacity: 1;\n }\n `\n : `\n grid-template-rows: 0fr 0fr;\n & > ${Panel} {\n opacity: 0;\n }\n `}\n\n ${(props) => `\n border-radius: ${props.borderRadius}px;\n \n & ${Button} {\n border-radius: ${props.borderRadius > focus.padding ? props.borderRadius - focus.padding : 0}px;\n }\n \n & ${Heading} {\n cursor: ${props.loading ? 'wait' : props.disabled ? 'not-allowed' : 'pointer'};\n }\n `}\n\n ${(props) => {\n let schema = COLOR_SCHEMA.transparent\n\n if (props.primary) {\n schema = COLOR_SCHEMA.primary\n }\n if (props.secondary) {\n schema = COLOR_SCHEMA.secondary\n }\n\n if (props.disabled) return schema.disabled\n if (props.expanded) return schema.expanded\n\n return schema.default\n }}\n\n ${responsiveSize}\n ${responsiveMargin}\n`\n\nexport const Header = styled.span.withConfig<ResponsiveSizeInterpolationProps<Size, Size, ResponsiveSizeProps<Size>>>({\n shouldForwardProp: shouldForwardAccordionItemCommonProp,\n})`\n box-sizing: border-box;\n display: flex;\n flex-grow: 1;\n\n & > *:not(:last-child) {\n margin-right: 8px;\n }\n\n ${responsiveSize}\n`\n\nexport const Content = styled.span`\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n align-self: center;\n flex-grow: 1;\n`\n\nexport const IconAnimation = styled.span.withConfig<{ up: boolean }>({\n shouldForwardProp: (propKey) => propKey !== 'up',\n})`\n box-sizing: border-box;\n display: flex;\n align-self: flex-start;\n flex-shrink: 0;\n transition-property: transform;\n transition-duration: 250ms;\n transform-origin: center;\n @media (prefers-reduced-motion: reduce) {\n transition-duration: 0ms;\n }\n ${(props) => `\n transform: rotate(${props.up ? 180 : 0}deg);\n `}\n`\n\nexport const Details = styled.div.withConfig<ResponsiveSizeInterpolationProps<Size, Size, ResponsiveSizeProps<Size>>>({\n shouldForwardProp: shouldForwardAccordionItemCommonProp,\n})`\n box-sizing: border-box;\n\n ${responsiveSize}\n`\n"],"names":["shouldForwardAccordionItemProp","createShouldForwardProp","propKey","includes","shouldForwardAccordionItemCommonProp","Heading","styled","h3","withConfig","displayName","componentId","focus","padding","template","palette","backgroundColor","headerColor","headerBackgroundColor","headerColorHover","COLOR_SCHEMA","primary","default","css","props","theme","colors","headerColorExpanded","transparent","expanded","headerBackgroundColorExpanded","backgroundColorExpanded","disabled","headerColorDisabled","headerBackgroundColorDisabled","backgroundColorDisabled","secondary","Panel","div","Button","button","Root","section","shouldForwardProp","borderRadius","loading","schema","responsiveSize","responsiveMargin","Header","span","Content","IconAnimation","up","Details"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var React=require('react');var styled=require('styled-components');var useClassname=require('../../hooks/useClassname.js');var withMergedProps=require('../../hocs/withMergedProps.js');var hooks=require('./hooks.js');var constants=require('./constants.js');var defaultConstants=require('./default-constants.js');var style=require('./style.js');var jsxRuntime=require('react/jsx-runtime');var Icon=require('../Icon/Icon.js');var Text=require('../Text/Text.js');const Button=withMergedProps.withMergedProps(React.forwardRef(((e,s)=>{let{size:t="m",inline:n=!0,rounded:o=!0,color:r="accent",fontColor:a="white",textProps:i={},iconProps:c={},as:u,className:l,children:d,content:m,fontWeight:p,icon:x,innerRef:h,...j}=e;const f=styled.useTheme();j.preset!=='default'||typeof t!='string'||j.round||(j={...defaultConstants.PROPS_BY_SIZE[t]??{},...j}),j.href&&(u='a'),j.to&&(u=f.link),j.primary&&(r='primary'),j.secondary&&(r='atlantis');const R=useClassname.useClassname("Button",l);const y=useClassname.useClassname("Button");const S=hooks.useComputedRel(f,j);const g=hooks.useComputedLinkProps(u,j);let[v,I]=Array.isArray(x)?x:[x];j.success&&(v='checkFill',I=null),j.preset==='brand'&&j.loading&&(v=jsxRuntime.jsx(style.LoaderIcon,{}),I=null);const C={as:'span',size:'inherit',color:'inherit',weight:p??(j.preset==='brand'?800:600),lineHeight:j.preset==='brand'?1.2:1,marginLeft:v?'0.25em':void 0,marginRight:I?'0.25em':void 0};const P={as:'span',color:'inherit'};return jsxRuntime.jsx(style.Root,{...j,...g,size:t,inline:n,color:r,fontColor:a,rounded:o,rel:S,as:u,className:R,ref:s??h,children:typeof d=='function'?d({baseTextProps:C,textProps:i,iconBaseProps:P,iconProps:c,icon:[v,I]}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[v&&jsxRuntime.jsx(Icon.Icon,{className:"icon",name:typeof v=='string'?v:void 0,icon:typeof v!='string'?v:void 0,...P,...c}),(d||m)&&jsxRuntime.jsx(Text.Text,{className:`${y}__content`,...C,...i,children:d||m}),I&&jsxRuntime.jsx(Icon.Icon,{className:"icon",name:typeof I=='string'?I:void 0,icon:typeof I!='string'?I:void 0,...P,...c})]})})})),{displayName:"Button",sizes:e=>{let s=e.preset==='brand'?constants.SIZES:defaultConstants.SIZES_DEFAULT;return e.round&&(s=e.preset==='brand'?constants.SIZES_ROUND:defaultConstants.SIZES_ROUND_DEFAULT),s}});exports.SIZES=constants.SIZES,exports.SIZES_ROUND=constants.SIZES_ROUND,exports.Button=Button,exports.COMPONENT_NAME="Button";
|
|
1
|
+
'use strict';var React=require('react');var styled=require('styled-components');var useClassname=require('../../hooks/useClassname.js');var withMergedProps=require('../../hocs/withMergedProps.js');var hooks=require('./hooks.js');var constants=require('./constants.js');var defaultConstants=require('./default-constants.js');var style=require('./style.js');var jsxRuntime=require('react/jsx-runtime');var Icon=require('../Icon/Icon.js');var Text=require('../Text/Text.js');const Button=withMergedProps.withMergedProps(React.forwardRef(((e,s)=>{let{size:t="m",inline:n=!0,rounded:o=!0,color:r="accent",fontColor:a="white",textProps:i={},iconProps:c={},as:u,className:l,children:d,content:m,fontWeight:p,icon:x,innerRef:h,...j}=e;const f=styled.useTheme();j.preset!=='default'||typeof t!='string'||j.round||(j={...defaultConstants.PROPS_BY_SIZE[t]??{},...j}),j.href&&(u='a'),j.to&&(u=f.link),j.disabled&&(u='button'),j.primary&&(r='primary'),j.secondary&&(r='atlantis');const R=useClassname.useClassname("Button",l);const y=useClassname.useClassname("Button");const S=hooks.useComputedRel(f,j);const g=hooks.useComputedLinkProps(u,j);let[v,I]=Array.isArray(x)?x:[x];j.success&&(v='checkFill',I=null),j.preset==='brand'&&j.loading&&(v=jsxRuntime.jsx(style.LoaderIcon,{}),I=null);const C={as:'span',size:'inherit',color:'inherit',weight:p??(j.preset==='brand'?800:600),lineHeight:j.preset==='brand'?1.2:1,marginLeft:v?'0.25em':void 0,marginRight:I?'0.25em':void 0};const P={as:'span',color:'inherit'};return jsxRuntime.jsx(style.Root,{...j,...g,size:t,inline:n,color:r,fontColor:a,rounded:o,rel:S,as:u,className:R,ref:s??h,children:typeof d=='function'?d({baseTextProps:C,textProps:i,iconBaseProps:P,iconProps:c,icon:[v,I]}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[v&&jsxRuntime.jsx(Icon.Icon,{className:"icon",name:typeof v=='string'?v:void 0,icon:typeof v!='string'?v:void 0,...P,...c}),(d||m)&&jsxRuntime.jsx(Text.Text,{className:`${y}__content`,...C,...i,children:d||m}),I&&jsxRuntime.jsx(Icon.Icon,{className:"icon",name:typeof I=='string'?I:void 0,icon:typeof I!='string'?I:void 0,...P,...c})]})})})),{displayName:"Button",sizes:e=>{let s=e.preset==='brand'?constants.SIZES:defaultConstants.SIZES_DEFAULT;return e.round&&(s=e.preset==='brand'?constants.SIZES_ROUND:defaultConstants.SIZES_ROUND_DEFAULT),s}});exports.SIZES=constants.SIZES,exports.SIZES_ROUND=constants.SIZES_ROUND,exports.Button=Button,exports.COMPONENT_NAME="Button";
|
|
2
2
|
//# sourceMappingURL=Button.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.js","sources":["../../../../src/components/Button/Button.tsx"],"sourcesContent":["import { forwardRef } from 'react'\nimport { useTheme } from 'styled-components'\nimport { useClassname } from 'hooks/useClassname'\nimport { withMergedProps } from 'hocs/withMergedProps'\nimport { Icon } from 'components/Icon'\nimport { Text } from 'components/Text'\nimport type { IconProps } from 'components/Icon'\nimport type { TextProps } from 'components/Text'\nimport { useComputedRel, useComputedLinkProps } from './hooks'\nimport { SIZES, SIZES_ROUND } from './constants'\nimport { SIZES_DEFAULT, SIZES_ROUND_DEFAULT, PROPS_BY_SIZE } from './default-constants'\nimport type { ButtonProps } from './types'\nimport * as Styled from './style'\n\nconst COMPONENT_NAME = 'Button'\n\n/**\n *\n * Component accepts all \\<button\\> attributes.\n *\n * Responsive \"size\" props are supported.\n *\n * Exposed \"ref\" attached to root node.\n *\n * See full [ButtonProps](https://github.com/foxford/ui/blob/master/src/components/Button/types.ts)\n */\nconst Button: React.ForwardRefExoticComponent<ButtonProps> = withMergedProps<ButtonProps, HTMLButtonElement>(\n forwardRef((props, ref) => {\n let {\n size = 'm',\n inline = true,\n rounded = true,\n color = 'accent',\n fontColor = 'white',\n textProps = {},\n iconProps = {},\n as: _as,\n className,\n children,\n content,\n fontWeight,\n icon,\n innerRef,\n ...restProps\n } = props\n\n const theme = useTheme()\n\n if (restProps.preset === 'default' && typeof size === 'string' && !restProps.round) {\n const propsBySize = PROPS_BY_SIZE[size] ?? {}\n restProps = { ...propsBySize, ...restProps }\n }\n\n if (restProps.href) _as = 'a'\n if (restProps.to) _as = theme.link\n\n if (restProps.primary) color = 'primary'\n if (restProps.secondary) color = 'atlantis'\n\n const rootClassName = useClassname(COMPONENT_NAME, className)\n const textClassName = useClassname(COMPONENT_NAME)\n const rel = useComputedRel(theme, restProps)\n const linkProps = useComputedLinkProps(_as, restProps)\n\n let [before, after] = Array.isArray(icon) ? icon : [icon]\n\n if (restProps.success) {\n before = 'checkFill'\n after = null\n }\n\n if (restProps.preset === 'brand' && restProps.loading) {\n before = <Styled.LoaderIcon />\n after = null\n }\n\n const baseTextProps: TextProps = {\n as: 'span',\n size: 'inherit',\n color: 'inherit',\n weight: fontWeight ?? (restProps.preset === 'brand' ? 800 : 600),\n lineHeight: restProps.preset === 'brand' ? 1.2 : 1,\n marginLeft: before ? '0.25em' : undefined,\n marginRight: after ? '0.25em' : undefined,\n }\n\n const iconBaseProps: IconProps = { as: 'span', color: 'inherit' }\n\n return (\n <Styled.Root\n {...restProps}\n {...linkProps}\n size={size}\n inline={inline}\n color={color}\n fontColor={fontColor}\n rounded={rounded}\n rel={rel}\n as={_as}\n className={rootClassName}\n ref={ref ?? innerRef}\n >\n {typeof children === 'function' ? (\n children({\n baseTextProps,\n textProps,\n iconBaseProps,\n iconProps,\n icon: [before, after],\n })\n ) : (\n <>\n {before && (\n <Icon\n className='icon'\n name={typeof before === 'string' ? before : undefined}\n icon={typeof before !== 'string' ? before : undefined}\n {...iconBaseProps}\n {...iconProps}\n />\n )}\n {(children || content) && (\n <Text className={`${textClassName}__content`} {...baseTextProps} {...textProps}>\n {children || content}\n </Text>\n )}\n {after && (\n <Icon\n className='icon'\n name={typeof after === 'string' ? after : undefined}\n icon={typeof after !== 'string' ? after : undefined}\n {...iconBaseProps}\n {...iconProps}\n />\n )}\n </>\n )}\n </Styled.Root>\n )\n }),\n {\n displayName: COMPONENT_NAME,\n sizes: (props) => {\n let sizes = props.preset === 'brand' ? SIZES : SIZES_DEFAULT\n if (props.round) sizes = props.preset === 'brand' ? SIZES_ROUND : SIZES_ROUND_DEFAULT\n\n return sizes\n },\n }\n)\n\nexport { Button, COMPONENT_NAME, SIZES, SIZES_ROUND }\n\nexport type { ButtonProps }\n"],"names":["Button","withMergedProps","forwardRef","props","ref","size","inline","rounded","color","fontColor","textProps","iconProps","as","_as","className","children","content","fontWeight","icon","innerRef","restProps","theme","useTheme","preset","round","PROPS_BY_SIZE","href","to","link","primary","secondary","rootClassName","useClassname","textClassName","rel","useComputedRel","linkProps","useComputedLinkProps","before","after","Array","isArray","success","loading","_jsx","jsx","Styled","baseTextProps","weight","lineHeight","marginLeft","undefined","marginRight","iconBaseProps","_jsxs","jsxs","_Fragment","Icon","name","Text","displayName","sizes","SIZES","SIZES_DEFAULT","SIZES_ROUND","SIZES_ROUND_DEFAULT"],"mappings":"wdA0BMA,MAAAA,OAAuDC,gBAAAA,gBAC3DC,MAAAA,YAAW,CAACC,EAAOC,KACjB,IAAIC,KACFA,EAAO,IAAGC,OACVA,GAAS,EAAIC,QACbA,GAAU,EAAIC,MACdA,EAAQ,SAAQC,UAChBA,EAAY,QAAOC,UACnBA,EAAY,CAAE,EAAAC,UACdA,EAAY,CAAE,EACdC,GAAIC,EAAGC,UACPA,EAASC,SACTA,EAAQC,QACRA,EAAOC,WACPA,EAAUC,KACVA,EAAIC,SACJA,KACGC,GACDjB,EAEJ,MAAMkB,EAAQC,OAAAA,WAEVF,EAAUG,SAAW,kBAAoBlB,GAAS,UAAae,EAAUI,QAE3EJ,EAAY,IADQK,iBAAAA,cAAcpB,IAAS,CAAA,KACVe,IAG/BA,EAAUM,OAAMb,EAAM,KACtBO,EAAUO,KAAId,EAAMQ,EAAMO,
|
|
1
|
+
{"version":3,"file":"Button.js","sources":["../../../../src/components/Button/Button.tsx"],"sourcesContent":["import { forwardRef } from 'react'\nimport { useTheme } from 'styled-components'\nimport { useClassname } from 'hooks/useClassname'\nimport { withMergedProps } from 'hocs/withMergedProps'\nimport { Icon } from 'components/Icon'\nimport { Text } from 'components/Text'\nimport type { IconProps } from 'components/Icon'\nimport type { TextProps } from 'components/Text'\nimport { useComputedRel, useComputedLinkProps } from './hooks'\nimport { SIZES, SIZES_ROUND } from './constants'\nimport { SIZES_DEFAULT, SIZES_ROUND_DEFAULT, PROPS_BY_SIZE } from './default-constants'\nimport type { ButtonProps } from './types'\nimport * as Styled from './style'\n\nconst COMPONENT_NAME = 'Button'\n\n/**\n *\n * Component accepts all \\<button\\> attributes.\n *\n * Responsive \"size\" props are supported.\n *\n * Exposed \"ref\" attached to root node.\n *\n * See full [ButtonProps](https://github.com/foxford/ui/blob/master/src/components/Button/types.ts)\n */\nconst Button: React.ForwardRefExoticComponent<ButtonProps> = withMergedProps<ButtonProps, HTMLButtonElement>(\n forwardRef((props, ref) => {\n let {\n size = 'm',\n inline = true,\n rounded = true,\n color = 'accent',\n fontColor = 'white',\n textProps = {},\n iconProps = {},\n as: _as,\n className,\n children,\n content,\n fontWeight,\n icon,\n innerRef,\n ...restProps\n } = props\n\n const theme = useTheme()\n\n if (restProps.preset === 'default' && typeof size === 'string' && !restProps.round) {\n const propsBySize = PROPS_BY_SIZE[size] ?? {}\n restProps = { ...propsBySize, ...restProps }\n }\n\n if (restProps.href) _as = 'a'\n if (restProps.to) _as = theme.link\n if (restProps.disabled) _as = 'button'\n\n if (restProps.primary) color = 'primary'\n if (restProps.secondary) color = 'atlantis'\n\n const rootClassName = useClassname(COMPONENT_NAME, className)\n const textClassName = useClassname(COMPONENT_NAME)\n const rel = useComputedRel(theme, restProps)\n const linkProps = useComputedLinkProps(_as, restProps)\n\n let [before, after] = Array.isArray(icon) ? icon : [icon]\n\n if (restProps.success) {\n before = 'checkFill'\n after = null\n }\n\n if (restProps.preset === 'brand' && restProps.loading) {\n before = <Styled.LoaderIcon />\n after = null\n }\n\n const baseTextProps: TextProps = {\n as: 'span',\n size: 'inherit',\n color: 'inherit',\n weight: fontWeight ?? (restProps.preset === 'brand' ? 800 : 600),\n lineHeight: restProps.preset === 'brand' ? 1.2 : 1,\n marginLeft: before ? '0.25em' : undefined,\n marginRight: after ? '0.25em' : undefined,\n }\n\n const iconBaseProps: IconProps = { as: 'span', color: 'inherit' }\n\n return (\n <Styled.Root\n {...restProps}\n {...linkProps}\n size={size}\n inline={inline}\n color={color}\n fontColor={fontColor}\n rounded={rounded}\n rel={rel}\n as={_as}\n className={rootClassName}\n ref={ref ?? innerRef}\n >\n {typeof children === 'function' ? (\n children({\n baseTextProps,\n textProps,\n iconBaseProps,\n iconProps,\n icon: [before, after],\n })\n ) : (\n <>\n {before && (\n <Icon\n className='icon'\n name={typeof before === 'string' ? before : undefined}\n icon={typeof before !== 'string' ? before : undefined}\n {...iconBaseProps}\n {...iconProps}\n />\n )}\n {(children || content) && (\n <Text className={`${textClassName}__content`} {...baseTextProps} {...textProps}>\n {children || content}\n </Text>\n )}\n {after && (\n <Icon\n className='icon'\n name={typeof after === 'string' ? after : undefined}\n icon={typeof after !== 'string' ? after : undefined}\n {...iconBaseProps}\n {...iconProps}\n />\n )}\n </>\n )}\n </Styled.Root>\n )\n }),\n {\n displayName: COMPONENT_NAME,\n sizes: (props) => {\n let sizes = props.preset === 'brand' ? SIZES : SIZES_DEFAULT\n if (props.round) sizes = props.preset === 'brand' ? SIZES_ROUND : SIZES_ROUND_DEFAULT\n\n return sizes\n },\n }\n)\n\nexport { Button, COMPONENT_NAME, SIZES, SIZES_ROUND }\n\nexport type { ButtonProps }\n"],"names":["Button","withMergedProps","forwardRef","props","ref","size","inline","rounded","color","fontColor","textProps","iconProps","as","_as","className","children","content","fontWeight","icon","innerRef","restProps","theme","useTheme","preset","round","PROPS_BY_SIZE","href","to","link","disabled","primary","secondary","rootClassName","useClassname","textClassName","rel","useComputedRel","linkProps","useComputedLinkProps","before","after","Array","isArray","success","loading","_jsx","jsx","Styled","baseTextProps","weight","lineHeight","marginLeft","undefined","marginRight","iconBaseProps","_jsxs","jsxs","_Fragment","Icon","name","Text","displayName","sizes","SIZES","SIZES_DEFAULT","SIZES_ROUND","SIZES_ROUND_DEFAULT"],"mappings":"wdA0BMA,MAAAA,OAAuDC,gBAAAA,gBAC3DC,MAAAA,YAAW,CAACC,EAAOC,KACjB,IAAIC,KACFA,EAAO,IAAGC,OACVA,GAAS,EAAIC,QACbA,GAAU,EAAIC,MACdA,EAAQ,SAAQC,UAChBA,EAAY,QAAOC,UACnBA,EAAY,CAAE,EAAAC,UACdA,EAAY,CAAE,EACdC,GAAIC,EAAGC,UACPA,EAASC,SACTA,EAAQC,QACRA,EAAOC,WACPA,EAAUC,KACVA,EAAIC,SACJA,KACGC,GACDjB,EAEJ,MAAMkB,EAAQC,OAAAA,WAEVF,EAAUG,SAAW,kBAAoBlB,GAAS,UAAae,EAAUI,QAE3EJ,EAAY,IADQK,iBAAAA,cAAcpB,IAAS,CAAA,KACVe,IAG/BA,EAAUM,OAAMb,EAAM,KACtBO,EAAUO,KAAId,EAAMQ,EAAMO,MAC1BR,EAAUS,WAAUhB,EAAM,UAE1BO,EAAUU,UAAStB,EAAQ,WAC3BY,EAAUW,YAAWvB,EAAQ,YAEjC,MAAMwB,EAAgBC,aAAAA,aA9CH,SA8CgCnB,GACnD,MAAMoB,EAAgBD,0BA/CH,UAgDnB,MAAME,EAAMC,MAAAA,eAAef,EAAOD,GAClC,MAAMiB,EAAYC,MAAAA,qBAAqBzB,EAAKO,GAE5C,IAAKmB,EAAQC,GAASC,MAAMC,QAAQxB,GAAQA,EAAO,CAACA,GAEhDE,EAAUuB,UACZJ,EAAS,YACTC,EAAQ,MAGNpB,EAAUG,SAAW,SAAWH,EAAUwB,UAC5CL,EAASM,WAAAC,IAACC,qBACVP,EAAQ,MAGV,MAAMQ,EAA2B,CAC/BpC,GAAI,OACJP,KAAM,UACNG,MAAO,UACPyC,OAAQhC,IAAeG,EAAUG,SAAW,QAAU,IAAM,KAC5D2B,WAAY9B,EAAUG,SAAW,QAAU,IAAM,EACjD4B,WAAYZ,EAAS,cAAWa,EAChCC,YAAab,EAAQ,cAAWY,GAGlC,MAAME,EAA2B,CAAE1C,GAAI,OAAQJ,MAAO,WAEtD,OACEqC,WAAAA,IAACE,MAAAA,KAAW,IACN3B,KACAiB,EACJhC,KAAMA,EACNC,OAAQA,EACRE,MAAOA,EACPC,UAAWA,EACXF,QAASA,EACT4B,IAAKA,EACLvB,GAAIC,EACJC,UAAWkB,EACX5B,IAAKA,GAAOe,EAASJ,gBAEbA,GAAa,WACnBA,EAAS,CACPiC,gBACAtC,YACA4C,gBACA3C,YACAO,KAAM,CAACqB,EAAQC,KAGjBe,WAAAC,KAAAC,oBAAA,CAAA1C,SACGwB,CAAAA,GACCM,WAAAC,IAACY,UAAI,CACH5C,UAAU,OACV6C,YAAapB,GAAW,SAAWA,OAASa,EAC5ClC,YAAaqB,GAAW,SAAWA,OAASa,KACxCE,KACA3C,KAGNI,GAAYC,IACZ6B,WAAAA,IAACe,KAAAA,KAAI,CAAC9C,UAAW,GAAGoB,gBAA8Bc,KAAmBtC,EAASK,SAC3EA,GAAYC,IAGhBwB,GACCK,WAAAC,IAACY,UAAI,CACH5C,UAAU,OACV6C,YAAanB,GAAU,SAAWA,OAAQY,EAC1ClC,YAAasB,GAAU,SAAWA,OAAQY,KACtCE,KACA3C,QAKA,IAGlB,CACEkD,YAhImB,SAiInBC,MAAQ3D,IACN,IAAI2D,EAAQ3D,EAAMoB,SAAW,QAAUwC,UAAAA,MAAQC,iBAAAA,cAG/C,OAFI7D,EAAMqB,QAAOsC,EAAQ3D,EAAMoB,SAAW,QAAU0C,UAAWA,YAAGC,sCAE3DJ,CAAK,yHArIK"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{forwardRef}from'react';import{useTheme}from'styled-components';import{useClassname}from'../../hooks/useClassname.mjs';import{withMergedProps}from'../../hocs/withMergedProps.mjs';import{useComputedRel,useComputedLinkProps}from'./hooks.mjs';import{SIZES,SIZES_ROUND}from'./constants.mjs';import{SIZES_DEFAULT,SIZES_ROUND_DEFAULT,PROPS_BY_SIZE}from'./default-constants.mjs';import{Root,LoaderIcon}from'./style.mjs';import{jsx,jsxs,Fragment}from'react/jsx-runtime';import{Icon}from'../Icon/Icon.mjs';import{Text}from'../Text/Text.mjs';const COMPONENT_NAME='Button';const Button=withMergedProps(forwardRef(((o,e)=>{let{size:
|
|
1
|
+
import{forwardRef}from'react';import{useTheme}from'styled-components';import{useClassname}from'../../hooks/useClassname.mjs';import{withMergedProps}from'../../hocs/withMergedProps.mjs';import{useComputedRel,useComputedLinkProps}from'./hooks.mjs';import{SIZES,SIZES_ROUND}from'./constants.mjs';import{SIZES_DEFAULT,SIZES_ROUND_DEFAULT,PROPS_BY_SIZE}from'./default-constants.mjs';import{Root,LoaderIcon}from'./style.mjs';import{jsx,jsxs,Fragment}from'react/jsx-runtime';import{Icon}from'../Icon/Icon.mjs';import{Text}from'../Text/Text.mjs';const COMPONENT_NAME='Button';const Button=withMergedProps(forwardRef(((o,e)=>{let{size:t="m",inline:s=!0,rounded:r=!0,color:n="accent",fontColor:i="white",textProps:a={},iconProps:m={},as:c,className:p,children:l,content:d,fontWeight:u,icon:f,innerRef:S,...h}=o;const E=useTheme();h.preset!=='default'||typeof t!='string'||h.round||(h={...PROPS_BY_SIZE[t]??{},...h}),h.href&&(c='a'),h.to&&(c=E.link),h.disabled&&(c='button'),h.primary&&(n='primary'),h.secondary&&(n='atlantis');const I=useClassname("Button",p);const g=useClassname("Button");const j=useComputedRel(E,h);const x=useComputedLinkProps(c,h);let[N,P]=Array.isArray(f)?f:[f];h.success&&(N='checkFill',P=null),h.preset==='brand'&&h.loading&&(N=jsx(LoaderIcon,{}),P=null);const _={as:'span',size:'inherit',color:'inherit',weight:u??(h.preset==='brand'?800:600),lineHeight:h.preset==='brand'?1.2:1,marginLeft:N?'0.25em':void 0,marginRight:P?'0.25em':void 0};const R={as:'span',color:'inherit'};return jsx(Root,{...h,...x,size:t,inline:s,color:n,fontColor:i,rounded:r,rel:j,as:c,className:I,ref:e??S,children:typeof l=='function'?l({baseTextProps:_,textProps:a,iconBaseProps:R,iconProps:m,icon:[N,P]}):jsxs(Fragment,{children:[N&&jsx(Icon,{className:"icon",name:typeof N=='string'?N:void 0,icon:typeof N!='string'?N:void 0,...R,...m}),(l||d)&&jsx(Text,{className:`${g}__content`,..._,...a,children:l||d}),P&&jsx(Icon,{className:"icon",name:typeof P=='string'?P:void 0,icon:typeof P!='string'?P:void 0,...R,...m})]})})})),{displayName:"Button",sizes:o=>{let e=o.preset==='brand'?SIZES:SIZES_DEFAULT;return o.round&&(e=o.preset==='brand'?SIZES_ROUND:SIZES_ROUND_DEFAULT),e}});export{Button,COMPONENT_NAME,SIZES,SIZES_ROUND};
|
|
2
2
|
//# sourceMappingURL=Button.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.mjs","sources":["../../../../src/components/Button/Button.tsx"],"sourcesContent":["import { forwardRef } from 'react'\nimport { useTheme } from 'styled-components'\nimport { useClassname } from 'hooks/useClassname'\nimport { withMergedProps } from 'hocs/withMergedProps'\nimport { Icon } from 'components/Icon'\nimport { Text } from 'components/Text'\nimport type { IconProps } from 'components/Icon'\nimport type { TextProps } from 'components/Text'\nimport { useComputedRel, useComputedLinkProps } from './hooks'\nimport { SIZES, SIZES_ROUND } from './constants'\nimport { SIZES_DEFAULT, SIZES_ROUND_DEFAULT, PROPS_BY_SIZE } from './default-constants'\nimport type { ButtonProps } from './types'\nimport * as Styled from './style'\n\nconst COMPONENT_NAME = 'Button'\n\n/**\n *\n * Component accepts all \\<button\\> attributes.\n *\n * Responsive \"size\" props are supported.\n *\n * Exposed \"ref\" attached to root node.\n *\n * See full [ButtonProps](https://github.com/foxford/ui/blob/master/src/components/Button/types.ts)\n */\nconst Button: React.ForwardRefExoticComponent<ButtonProps> = withMergedProps<ButtonProps, HTMLButtonElement>(\n forwardRef((props, ref) => {\n let {\n size = 'm',\n inline = true,\n rounded = true,\n color = 'accent',\n fontColor = 'white',\n textProps = {},\n iconProps = {},\n as: _as,\n className,\n children,\n content,\n fontWeight,\n icon,\n innerRef,\n ...restProps\n } = props\n\n const theme = useTheme()\n\n if (restProps.preset === 'default' && typeof size === 'string' && !restProps.round) {\n const propsBySize = PROPS_BY_SIZE[size] ?? {}\n restProps = { ...propsBySize, ...restProps }\n }\n\n if (restProps.href) _as = 'a'\n if (restProps.to) _as = theme.link\n\n if (restProps.primary) color = 'primary'\n if (restProps.secondary) color = 'atlantis'\n\n const rootClassName = useClassname(COMPONENT_NAME, className)\n const textClassName = useClassname(COMPONENT_NAME)\n const rel = useComputedRel(theme, restProps)\n const linkProps = useComputedLinkProps(_as, restProps)\n\n let [before, after] = Array.isArray(icon) ? icon : [icon]\n\n if (restProps.success) {\n before = 'checkFill'\n after = null\n }\n\n if (restProps.preset === 'brand' && restProps.loading) {\n before = <Styled.LoaderIcon />\n after = null\n }\n\n const baseTextProps: TextProps = {\n as: 'span',\n size: 'inherit',\n color: 'inherit',\n weight: fontWeight ?? (restProps.preset === 'brand' ? 800 : 600),\n lineHeight: restProps.preset === 'brand' ? 1.2 : 1,\n marginLeft: before ? '0.25em' : undefined,\n marginRight: after ? '0.25em' : undefined,\n }\n\n const iconBaseProps: IconProps = { as: 'span', color: 'inherit' }\n\n return (\n <Styled.Root\n {...restProps}\n {...linkProps}\n size={size}\n inline={inline}\n color={color}\n fontColor={fontColor}\n rounded={rounded}\n rel={rel}\n as={_as}\n className={rootClassName}\n ref={ref ?? innerRef}\n >\n {typeof children === 'function' ? (\n children({\n baseTextProps,\n textProps,\n iconBaseProps,\n iconProps,\n icon: [before, after],\n })\n ) : (\n <>\n {before && (\n <Icon\n className='icon'\n name={typeof before === 'string' ? before : undefined}\n icon={typeof before !== 'string' ? before : undefined}\n {...iconBaseProps}\n {...iconProps}\n />\n )}\n {(children || content) && (\n <Text className={`${textClassName}__content`} {...baseTextProps} {...textProps}>\n {children || content}\n </Text>\n )}\n {after && (\n <Icon\n className='icon'\n name={typeof after === 'string' ? after : undefined}\n icon={typeof after !== 'string' ? after : undefined}\n {...iconBaseProps}\n {...iconProps}\n />\n )}\n </>\n )}\n </Styled.Root>\n )\n }),\n {\n displayName: COMPONENT_NAME,\n sizes: (props) => {\n let sizes = props.preset === 'brand' ? SIZES : SIZES_DEFAULT\n if (props.round) sizes = props.preset === 'brand' ? SIZES_ROUND : SIZES_ROUND_DEFAULT\n\n return sizes\n },\n }\n)\n\nexport { Button, COMPONENT_NAME, SIZES, SIZES_ROUND }\n\nexport type { ButtonProps }\n"],"names":["COMPONENT_NAME","Button","withMergedProps","forwardRef","props","ref","size","inline","rounded","color","fontColor","textProps","iconProps","as","_as","className","children","content","fontWeight","icon","innerRef","restProps","theme","useTheme","preset","round","PROPS_BY_SIZE","href","to","link","primary","secondary","rootClassName","useClassname","textClassName","rel","useComputedRel","linkProps","useComputedLinkProps","before","after","Array","isArray","success","loading","_jsx","Styled","baseTextProps","weight","lineHeight","marginLeft","undefined","marginRight","iconBaseProps","_jsxs","_Fragment","Icon","name","Text","displayName","sizes","SIZES","SIZES_DEFAULT","SIZES_ROUND","SIZES_ROUND_DEFAULT"],"mappings":"0hBAcMA,MAAAA,eAAiB,SAYjBC,MAAAA,OAAuDC,gBAC3DC,YAAW,CAACC,EAAOC,KACjB,IAAIC,KACFA,EAAO,IAAGC,OACVA,GAAS,EAAIC,QACbA,GAAU,EAAIC,MACdA,EAAQ,SAAQC,UAChBA,EAAY,QAAOC,UACnBA,EAAY,CAAE,EAAAC,UACdA,EAAY,CAAE,EACdC,GAAIC,EAAGC,UACPA,EAASC,SACTA,EAAQC,QACRA,EAAOC,WACPA,EAAUC,KACVA,EAAIC,SACJA,KACGC,GACDjB,EAEJ,MAAMkB,EAAQC,WAEVF,EAAUG,SAAW,kBAAoBlB,GAAS,UAAae,EAAUI,QAE3EJ,EAAY,IADQK,cAAcpB,IAAS,CAAA,KACVe,IAG/BA,EAAUM,OAAMb,EAAM,KACtBO,EAAUO,KAAId,EAAMQ,EAAMO,
|
|
1
|
+
{"version":3,"file":"Button.mjs","sources":["../../../../src/components/Button/Button.tsx"],"sourcesContent":["import { forwardRef } from 'react'\nimport { useTheme } from 'styled-components'\nimport { useClassname } from 'hooks/useClassname'\nimport { withMergedProps } from 'hocs/withMergedProps'\nimport { Icon } from 'components/Icon'\nimport { Text } from 'components/Text'\nimport type { IconProps } from 'components/Icon'\nimport type { TextProps } from 'components/Text'\nimport { useComputedRel, useComputedLinkProps } from './hooks'\nimport { SIZES, SIZES_ROUND } from './constants'\nimport { SIZES_DEFAULT, SIZES_ROUND_DEFAULT, PROPS_BY_SIZE } from './default-constants'\nimport type { ButtonProps } from './types'\nimport * as Styled from './style'\n\nconst COMPONENT_NAME = 'Button'\n\n/**\n *\n * Component accepts all \\<button\\> attributes.\n *\n * Responsive \"size\" props are supported.\n *\n * Exposed \"ref\" attached to root node.\n *\n * See full [ButtonProps](https://github.com/foxford/ui/blob/master/src/components/Button/types.ts)\n */\nconst Button: React.ForwardRefExoticComponent<ButtonProps> = withMergedProps<ButtonProps, HTMLButtonElement>(\n forwardRef((props, ref) => {\n let {\n size = 'm',\n inline = true,\n rounded = true,\n color = 'accent',\n fontColor = 'white',\n textProps = {},\n iconProps = {},\n as: _as,\n className,\n children,\n content,\n fontWeight,\n icon,\n innerRef,\n ...restProps\n } = props\n\n const theme = useTheme()\n\n if (restProps.preset === 'default' && typeof size === 'string' && !restProps.round) {\n const propsBySize = PROPS_BY_SIZE[size] ?? {}\n restProps = { ...propsBySize, ...restProps }\n }\n\n if (restProps.href) _as = 'a'\n if (restProps.to) _as = theme.link\n if (restProps.disabled) _as = 'button'\n\n if (restProps.primary) color = 'primary'\n if (restProps.secondary) color = 'atlantis'\n\n const rootClassName = useClassname(COMPONENT_NAME, className)\n const textClassName = useClassname(COMPONENT_NAME)\n const rel = useComputedRel(theme, restProps)\n const linkProps = useComputedLinkProps(_as, restProps)\n\n let [before, after] = Array.isArray(icon) ? icon : [icon]\n\n if (restProps.success) {\n before = 'checkFill'\n after = null\n }\n\n if (restProps.preset === 'brand' && restProps.loading) {\n before = <Styled.LoaderIcon />\n after = null\n }\n\n const baseTextProps: TextProps = {\n as: 'span',\n size: 'inherit',\n color: 'inherit',\n weight: fontWeight ?? (restProps.preset === 'brand' ? 800 : 600),\n lineHeight: restProps.preset === 'brand' ? 1.2 : 1,\n marginLeft: before ? '0.25em' : undefined,\n marginRight: after ? '0.25em' : undefined,\n }\n\n const iconBaseProps: IconProps = { as: 'span', color: 'inherit' }\n\n return (\n <Styled.Root\n {...restProps}\n {...linkProps}\n size={size}\n inline={inline}\n color={color}\n fontColor={fontColor}\n rounded={rounded}\n rel={rel}\n as={_as}\n className={rootClassName}\n ref={ref ?? innerRef}\n >\n {typeof children === 'function' ? (\n children({\n baseTextProps,\n textProps,\n iconBaseProps,\n iconProps,\n icon: [before, after],\n })\n ) : (\n <>\n {before && (\n <Icon\n className='icon'\n name={typeof before === 'string' ? before : undefined}\n icon={typeof before !== 'string' ? before : undefined}\n {...iconBaseProps}\n {...iconProps}\n />\n )}\n {(children || content) && (\n <Text className={`${textClassName}__content`} {...baseTextProps} {...textProps}>\n {children || content}\n </Text>\n )}\n {after && (\n <Icon\n className='icon'\n name={typeof after === 'string' ? after : undefined}\n icon={typeof after !== 'string' ? after : undefined}\n {...iconBaseProps}\n {...iconProps}\n />\n )}\n </>\n )}\n </Styled.Root>\n )\n }),\n {\n displayName: COMPONENT_NAME,\n sizes: (props) => {\n let sizes = props.preset === 'brand' ? SIZES : SIZES_DEFAULT\n if (props.round) sizes = props.preset === 'brand' ? SIZES_ROUND : SIZES_ROUND_DEFAULT\n\n return sizes\n },\n }\n)\n\nexport { Button, COMPONENT_NAME, SIZES, SIZES_ROUND }\n\nexport type { ButtonProps }\n"],"names":["COMPONENT_NAME","Button","withMergedProps","forwardRef","props","ref","size","inline","rounded","color","fontColor","textProps","iconProps","as","_as","className","children","content","fontWeight","icon","innerRef","restProps","theme","useTheme","preset","round","PROPS_BY_SIZE","href","to","link","disabled","primary","secondary","rootClassName","useClassname","textClassName","rel","useComputedRel","linkProps","useComputedLinkProps","before","after","Array","isArray","success","loading","_jsx","Styled","baseTextProps","weight","lineHeight","marginLeft","undefined","marginRight","iconBaseProps","_jsxs","_Fragment","Icon","name","Text","displayName","sizes","SIZES","SIZES_DEFAULT","SIZES_ROUND","SIZES_ROUND_DEFAULT"],"mappings":"0hBAcMA,MAAAA,eAAiB,SAYjBC,MAAAA,OAAuDC,gBAC3DC,YAAW,CAACC,EAAOC,KACjB,IAAIC,KACFA,EAAO,IAAGC,OACVA,GAAS,EAAIC,QACbA,GAAU,EAAIC,MACdA,EAAQ,SAAQC,UAChBA,EAAY,QAAOC,UACnBA,EAAY,CAAE,EAAAC,UACdA,EAAY,CAAE,EACdC,GAAIC,EAAGC,UACPA,EAASC,SACTA,EAAQC,QACRA,EAAOC,WACPA,EAAUC,KACVA,EAAIC,SACJA,KACGC,GACDjB,EAEJ,MAAMkB,EAAQC,WAEVF,EAAUG,SAAW,kBAAoBlB,GAAS,UAAae,EAAUI,QAE3EJ,EAAY,IADQK,cAAcpB,IAAS,CAAA,KACVe,IAG/BA,EAAUM,OAAMb,EAAM,KACtBO,EAAUO,KAAId,EAAMQ,EAAMO,MAC1BR,EAAUS,WAAUhB,EAAM,UAE1BO,EAAUU,UAAStB,EAAQ,WAC3BY,EAAUW,YAAWvB,EAAQ,YAEjC,MAAMwB,EAAgBC,aA9CH,SA8CgCnB,GACnD,MAAMoB,EAAgBD,aA/CH,UAgDnB,MAAME,EAAMC,eAAef,EAAOD,GAClC,MAAMiB,EAAYC,qBAAqBzB,EAAKO,GAE5C,IAAKmB,EAAQC,GAASC,MAAMC,QAAQxB,GAAQA,EAAO,CAACA,GAEhDE,EAAUuB,UACZJ,EAAS,YACTC,EAAQ,MAGNpB,EAAUG,SAAW,SAAWH,EAAUwB,UAC5CL,EAASM,IAACC,eACVN,EAAQ,MAGV,MAAMO,EAA2B,CAC/BnC,GAAI,OACJP,KAAM,UACNG,MAAO,UACPwC,OAAQ/B,IAAeG,EAAUG,SAAW,QAAU,IAAM,KAC5D0B,WAAY7B,EAAUG,SAAW,QAAU,IAAM,EACjD2B,WAAYX,EAAS,cAAWY,EAChCC,YAAaZ,EAAQ,cAAWW,GAGlC,MAAME,EAA2B,CAAEzC,GAAI,OAAQJ,MAAO,WAEtD,OACEqC,IAACC,KAAW,IACN1B,KACAiB,EACJhC,KAAMA,EACNC,OAAQA,EACRE,MAAOA,EACPC,UAAWA,EACXF,QAASA,EACT4B,IAAKA,EACLvB,GAAIC,EACJC,UAAWkB,EACX5B,IAAKA,GAAOe,EAASJ,gBAEbA,GAAa,WACnBA,EAAS,CACPgC,gBACArC,YACA2C,gBACA1C,YACAO,KAAM,CAACqB,EAAQC,KAGjBc,KAAAC,SAAA,CAAAxC,SACGwB,CAAAA,GACCM,IAACW,KAAI,CACH1C,UAAU,OACV2C,YAAalB,GAAW,SAAWA,OAASY,EAC5CjC,YAAaqB,GAAW,SAAWA,OAASY,KACxCE,KACA1C,KAGNI,GAAYC,IACZ6B,IAACa,KAAI,CAAC5C,UAAW,GAAGoB,gBAA8Ba,KAAmBrC,EAASK,SAC3EA,GAAYC,IAGhBwB,GACCK,IAACW,KAAI,CACH1C,UAAU,OACV2C,YAAajB,GAAU,SAAWA,OAAQW,EAC1CjC,YAAasB,GAAU,SAAWA,OAAQW,KACtCE,KACA1C,QAKA,IAGlB,CACEgD,YAhImB,SAiInBC,MAAQzD,IACN,IAAIyD,EAAQzD,EAAMoB,SAAW,QAAUsC,MAAQC,cAG/C,OAFI3D,EAAMqB,QAAOoC,EAAQzD,EAAMoB,SAAW,QAAUwC,YAAcC,qBAE3DJ,CAAK"}
|