@alto-avios/alto-ui 5.1.2 → 5.3.0
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/CalendarDate-uEuHKGse.js +2 -0
- package/dist/CalendarDate-uEuHKGse.js.map +1 -0
- package/dist/{DateField-oLDKE7Lh.js → DateField-rBq9QuR6.js} +4 -4
- package/dist/DateField-rBq9QuR6.js.map +1 -0
- package/dist/DatePicker.module-DlLCFGCM.js +2 -0
- package/dist/DatePicker.module-DlLCFGCM.js.map +1 -0
- package/dist/assets/Accordion.css +1 -1
- package/dist/assets/AviosCurrency.css +1 -1
- package/dist/assets/AviosCurrencyBadge.css +1 -1
- package/dist/assets/AviosCurrencySymbol.css +1 -1
- package/dist/assets/Badge.css +1 -1
- package/dist/assets/BannerSectionContent.css +1 -0
- package/dist/assets/BannerSectionPlectrum.css +1 -0
- package/dist/assets/BoxLink.css +1 -0
- package/dist/assets/Button.css +1 -1
- package/dist/assets/CalloutBanner.css +1 -1
- package/dist/assets/Checkbox.css +1 -1
- package/dist/assets/ClearFieldButton.css +1 -1
- package/dist/assets/Dialog.css +1 -1
- package/dist/assets/ErrorSummary.css +1 -1
- package/dist/assets/IntroSection.css +1 -0
- package/dist/assets/Link.css +1 -1
- package/dist/assets/ProductTile.css +1 -0
- package/dist/assets/Radio.css +1 -1
- package/dist/assets/SelectCard.css +1 -1
- package/dist/assets/Tag.css +1 -1
- package/dist/components/Accordion/Accordion.js +12 -12
- package/dist/components/Accordion/Accordion.js.map +1 -1
- package/dist/components/AviosBadge/AviosBadge.js.map +1 -1
- package/dist/components/AviosCurrency/AviosCurrency.js +4 -4
- package/dist/components/AviosCurrency/AviosCurrency.js.map +1 -1
- package/dist/components/AviosCurrencyBadge/AviosCurrencyBadge.js +2 -2
- package/dist/components/AviosCurrencyBadge/AviosCurrencyBadge.js.map +1 -1
- package/dist/components/AviosCurrencySymbol/AviosCurrencySymbol.js +6 -6
- package/dist/components/AviosCurrencySymbol/AviosCurrencySymbol.js.map +1 -1
- package/dist/components/Badge/Badge.js +2 -2
- package/dist/components/Badge/Badge.js.map +1 -1
- package/dist/components/BannerSectionContent/BannerSectionContent.d.ts +31 -0
- package/dist/components/BannerSectionContent/BannerSectionContent.js +5 -0
- package/dist/components/BannerSectionContent/BannerSectionContent.js.map +1 -0
- package/dist/components/BannerSectionContent/index.d.ts +2 -0
- package/dist/components/BannerSectionContent/index.js +2 -0
- package/dist/components/BannerSectionContent/index.js.map +1 -0
- package/dist/components/BannerSectionPlectrum/BannerSectionPlectrum.d.ts +39 -0
- package/dist/components/BannerSectionPlectrum/BannerSectionPlectrum.js +9 -0
- package/dist/components/BannerSectionPlectrum/BannerSectionPlectrum.js.map +1 -0
- package/dist/components/BannerSectionPlectrum/index.d.ts +2 -0
- package/dist/components/BannerSectionPlectrum/index.js +2 -0
- package/dist/components/BannerSectionPlectrum/index.js.map +1 -0
- package/dist/components/Box/Box.js +2 -2
- package/dist/components/BoxLink/BoxLink.d.ts +52 -0
- package/dist/components/BoxLink/BoxLink.js +3 -0
- package/dist/components/BoxLink/BoxLink.js.map +1 -0
- package/dist/components/BoxLink/BoxLinkContext.d.ts +24 -0
- package/dist/components/BoxLink/BoxLinkContext.js +2 -0
- package/dist/components/BoxLink/BoxLinkContext.js.map +1 -0
- package/dist/components/BoxLink/index.d.ts +4 -0
- package/dist/components/BoxLink/index.js +2 -0
- package/dist/components/BoxLink/index.js.map +1 -0
- package/dist/components/Button/Button.d.ts +12 -83
- package/dist/components/Button/Button.js +3 -3
- package/dist/components/Button/Button.js.map +1 -1
- package/dist/components/ButtonGroup/ButtonGroup.js +1 -1
- package/dist/components/Calendar/Calendar.js +1 -1
- package/dist/components/CalendarRange/CalendarRange.js +1 -1
- package/dist/components/CalendarRange/CalendarRange.js.map +1 -1
- package/dist/components/CalloutBanner/CalloutBanner.js +9 -9
- package/dist/components/CardSection/CardSection.js +1 -1
- package/dist/components/Carousel/Carousel.d.ts +8 -1
- package/dist/components/Carousel/Carousel.js +7 -7
- package/dist/components/Carousel/Carousel.js.map +1 -1
- package/dist/components/Checkbox/Checkbox.d.ts +1 -1
- package/dist/components/Checkbox/Checkbox.js +5 -5
- package/dist/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/ClearFieldButton/ClearFieldButton.js +2 -1
- package/dist/components/ClearFieldButton/ClearFieldButton.js.map +1 -1
- package/dist/components/CreditCardNumberField/CreditCardNumberField.js +1 -1
- package/dist/components/CreditCardSecurityCodeField/CreditCardSecurityCodeField.js +1 -1
- package/dist/components/Currency/Currency.js +1 -1
- package/dist/components/DateField/DateField.d.ts +5 -1
- package/dist/components/DateField/DateField.js +1 -1
- package/dist/components/DateField/index.js +1 -1
- package/dist/components/DatePicker/DatePicker.js +3 -3
- package/dist/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/components/DateRangePicker/DateRangePicker.js +3 -3
- package/dist/components/DateRangePicker/DateRangePicker.js.map +1 -1
- package/dist/components/Dialog/Dialog.js +5 -5
- package/dist/components/ErrorSummary/ErrorSummary.js +2 -2
- package/dist/components/Eyebrow/Eyebrow.js +1 -1
- package/dist/components/Form/Form.js +1 -1
- package/dist/components/Grid/Grid.d.ts +3 -3
- package/dist/components/Grid/Grid.js.map +1 -1
- package/dist/components/Heading/Heading.js +2 -2
- package/dist/components/Icon/Icon.js +1 -1
- package/dist/components/IconBackdrop/IconBackdrop.js +1 -1
- package/dist/components/IconButton/IconButton.js +1 -1
- package/dist/components/IconButton/IconButton.js.map +1 -1
- package/dist/components/Image/Image.js +1 -1
- package/dist/components/IntroSection/IntroSection.d.ts +42 -0
- package/dist/components/IntroSection/IntroSection.js +4 -0
- package/dist/components/IntroSection/IntroSection.js.map +1 -0
- package/dist/components/IntroSection/index.d.ts +2 -0
- package/dist/components/IntroSection/index.js +2 -0
- package/dist/components/IntroSection/index.js.map +1 -0
- package/dist/components/Label/Label.js +1 -1
- package/dist/components/Link/Link.d.ts +7 -2
- package/dist/components/Link/Link.js +3 -3
- package/dist/components/Link/Link.js.map +1 -1
- package/dist/components/LoadingSpinner/LoadingSpinner.js +1 -1
- package/dist/components/Menu/Menu.d.ts +8 -36
- package/dist/components/Menu/Menu.js +1 -1
- package/dist/components/Menu/Menu.js.map +1 -1
- package/dist/components/NumberField/NumberField.js +2 -2
- package/dist/components/NumberField/NumberField.js.map +1 -1
- package/dist/components/Paragraph/Paragraph.js +1 -1
- package/dist/components/PasswordField/PasswordField.js +1 -1
- package/dist/components/PhoneNumberField/PhoneNumberField.js +1 -1
- package/dist/components/ProductTile/ProductTile.d.ts +51 -0
- package/dist/components/ProductTile/ProductTile.js +7 -0
- package/dist/components/ProductTile/ProductTile.js.map +1 -0
- package/dist/components/ProductTile/index.d.ts +2 -0
- package/dist/components/ProductTile/index.js +2 -0
- package/dist/components/ProductTile/index.js.map +1 -0
- package/dist/components/Radio/Radio.js +1 -1
- package/dist/components/Section/Section.js +1 -1
- package/dist/components/SelectCard/SelectCard.js +5 -5
- package/dist/components/Spacer/Spacer.js +1 -1
- package/dist/components/SubHeading/SubHeading.js +1 -1
- package/dist/components/Tabs/TabList.js +1 -1
- package/dist/components/Tabs/Tabs.js +1 -1
- package/dist/components/Tag/Tag.js +2 -2
- package/dist/components/ToggleButton/ToggleButton.js +1 -1
- package/dist/components/ToggleIconButton/ToggleIconButton.js +1 -1
- package/dist/components/_base/Calendar/Calendar.js +1 -1
- package/dist/components/_base/Input/Input.js +1 -1
- package/dist/components/index.d.ts +12 -2
- package/dist/components/index.js +1 -1
- package/dist/{flex-D0sfBoFP.js → flex-BJOhaXnU.js} +2 -2
- package/dist/{flex-D0sfBoFP.js.map → flex-BJOhaXnU.js.map} +1 -1
- package/dist/index-CCUt_dAN.js +2 -0
- package/dist/{index-DiYWUa65.js.map → index-CCUt_dAN.js.map} +1 -1
- package/dist/index.js +1 -1
- package/dist/{input-DoPyN5PO.js → input-Ct1NB1lu.js} +2 -2
- package/dist/{input-DoPyN5PO.js.map → input-Ct1NB1lu.js.map} +1 -1
- package/dist/{padding-BPweMQaC.js → padding-nClUzhWp.js} +2 -2
- package/dist/{padding-BPweMQaC.js.map → padding-nClUzhWp.js.map} +1 -1
- package/dist/react-number-format.es-kdABQClE.js +2 -0
- package/dist/react-number-format.es-kdABQClE.js.map +1 -0
- package/dist/useCalendarState-BKam8aTi.js +2 -0
- package/dist/useCalendarState-BKam8aTi.js.map +1 -0
- package/dist/useControlledState-CLJIwghQ.js +2 -0
- package/dist/useControlledState-CLJIwghQ.js.map +1 -0
- package/dist/useGlobalListeners-CGYK0FZ8.js +2 -0
- package/dist/useGlobalListeners-CGYK0FZ8.js.map +1 -0
- package/dist/utils/backgroundColor/backgroundColor.js +1 -1
- package/dist/utils/border/border.js +1 -1
- package/dist/utils/date/date.js +1 -1
- package/dist/utils/flex/flex.js +1 -1
- package/dist/utils/focus/focusStyles.js +1 -1
- package/dist/utils/foregroundColour/foregroundColor.js +1 -1
- package/dist/utils/forms/field.js +1 -1
- package/dist/utils/forms/input/input.js +1 -1
- package/dist/utils/padding/padding.js +1 -1
- package/dist/utils/position/position.js +1 -1
- package/dist/utils/stories/DraggableContainer.js +7 -7
- package/dist/utils/stories/DraggableContainer.js.map +1 -1
- package/package.json +11 -5
- package/dist/CalendarDate-B7n_TjYa.js +0 -2
- package/dist/CalendarDate-B7n_TjYa.js.map +0 -1
- package/dist/DateField-oLDKE7Lh.js.map +0 -1
- package/dist/DatePicker.module-CGXPuf59.js +0 -2
- package/dist/DatePicker.module-CGXPuf59.js.map +0 -1
- package/dist/index-DiYWUa65.js +0 -2
- package/dist/react-number-format.es-7RDg5nwN.js +0 -2
- package/dist/react-number-format.es-7RDg5nwN.js.map +0 -1
- package/dist/useCalendarState-C9LlCwg-.js +0 -2
- package/dist/useCalendarState-C9LlCwg-.js.map +0 -1
- package/dist/useControlledState-DCczKDCM.js +0 -2
- package/dist/useControlledState-DCczKDCM.js.map +0 -1
- package/dist/useFormValidationState-CqKt4CQY.js +0 -2
- package/dist/useFormValidationState-CqKt4CQY.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{jsxs as r,jsx as
|
|
2
|
-
return r("span",{className:
|
|
3
|
-
/* @__PURE__ */
|
|
4
|
-
/* @__PURE__ */
|
|
1
|
+
import{jsxs as r,jsx as c}from"react/jsx-runtime";import{useMemo as s}from"react";import{c as e}from"../../index-CCUt_dAN.js";import{AviosCurrencySymbol as n}from"../AviosCurrencySymbol/AviosCurrencySymbol.js";import{Icon as a}from"../Icon/Icon.js";import '../../assets/AviosCurrency.css';const i={"avios-currency":"_avios-currency_wwfm9_1","avios-currency__name":"_avios-currency__name_wwfm9_15","avios-currency--strikethrough":"_avios-currency--strikethrough_wwfm9_19","avios-currency--primary":"_avios-currency--primary_wwfm9_31","avios-currency--secondary":"_avios-currency--secondary_wwfm9_35","avios-currency--white":"_avios-currency--white_wwfm9_39","avios-currency--on-spend":"_avios-currency--on-spend_wwfm9_43","avios-currency--on-collect":"_avios-currency--on-collect_wwfm9_47","avios-currency--accent-primary":"_avios-currency--accent-primary_wwfm9_51","avios-currency--accent-secondary":"_avios-currency--accent-secondary_wwfm9_55","avios-currency--xl":"_avios-currency--xl_wwfm9_59","avios-currency--lg":"_avios-currency--lg_wwfm9_71","avios-currency--md":"_avios-currency--md_wwfm9_78","avios-currency--sm":"_avios-currency--sm_wwfm9_85","avios-currency--xs":"_avios-currency--xs_wwfm9_92","avios-currency--2xs":"_avios-currency--2xs_wwfm9_99","avios-currency--3xs":"_avios-currency--3xs_wwfm9_106","avios-currency--4xs":"_avios-currency--4xs_wwfm9_113","avios-currency--5xs":"_avios-currency--5xs_wwfm9_120"},o=e(i["avios-currency"],{variants:{styleVariant:{primary:i["avios-currency--primary"],secondary:i["avios-currency--secondary"],white:i["avios-currency--white"],onSpend:i["avios-currency--on-spend"],onCollect:i["avios-currency--on-collect"],accentPrimary:i["avios-currency--accent-primary"],accentSecondary:i["avios-currency--accent-secondary"]},size:{xl:i["avios-currency--xl"],lg:i["avios-currency--lg"],md:i["avios-currency--md"],sm:i["avios-currency--sm"],xs:i["avios-currency--xs"],"2xs":i["avios-currency--2xs"],"3xs":i["avios-currency--3xs"],"4xs":i["avios-currency--4xs"],"5xs":i["avios-currency--5xs"]},isStrikethrough:{true:i["avios-currency--strikethrough"],false:""}},defaultVariants:{styleVariant:"accentSecondary"}});function y(r){switch(r){case"sm":return"0.75x";case"2xs":case"3xs":case"4xs":case"5xs":return"0.5x";default:return"1x"}}const u=({children:e=0,styleVariant:u="accentSecondary",kind:t="balance",size:m="xl",hasCurrencyName:_=!1,decorator:v,isStrikethrough:w=!1,...d})=>{const l=new Intl.NumberFormat("en-GB",{style:"decimal",maximumFractionDigits:0}).format(e),{isLink:x,isDropdown:f}=s(()=>"link"===v?{isLink:!0,isDropdown:!1}:"dropdown"===v?{isLink:!1,isDropdown:!0}:{isLink:!1,isDropdown:!1},[v]),p=s(()=>y(m),[m]);/* @__PURE__ */
|
|
2
|
+
return r("span",{className:o({styleVariant:u,size:m,isStrikethrough:w}),children:[
|
|
3
|
+
/* @__PURE__ */c(n,{...d,styleVariant:u,kind:t}),
|
|
4
|
+
/* @__PURE__ */c("span",{className:i.aviosCurrency__points,children:l}),x&&/* @__PURE__ */c(a,{iconName:"chevron-right",iconSize:p,"data-testid":"icon"}),f&&/* @__PURE__ */c(a,{iconName:"angles-up-down",iconSize:p,"data-testid":"icon"}),_&&/* @__PURE__ */c("span",{className:i["avios-currency__name"],children:"Avios"})]})};export{u as AviosCurrency,u as default,y as getIconSize};
|
|
5
5
|
//# sourceMappingURL=AviosCurrency.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AviosCurrency.js","sources":["../../../src/components/AviosCurrency/AviosCurrency.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport styles from './AviosCurrency.module.css';\nimport { cva } from 'class-variance-authority';\nimport AviosCurrencySymbol, {\n type AviosCurrencySymbolProps,\n} from '../AviosCurrencySymbol';\nimport Icon, { IconSize } from '../Icon/Icon';\n\nconst aviosCurrency = cva(styles
|
|
1
|
+
{"version":3,"file":"AviosCurrency.js","sources":["../../../src/components/AviosCurrency/AviosCurrency.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport styles from './AviosCurrency.module.css';\nimport { cva } from 'class-variance-authority';\nimport AviosCurrencySymbol, {\n type AviosCurrencySymbolProps,\n} from '../AviosCurrencySymbol';\nimport Icon, { IconSize } from '../Icon/Icon';\n\nconst aviosCurrency = cva(styles['avios-currency'], {\n variants: {\n styleVariant: {\n primary: styles['avios-currency--primary'],\n secondary: styles['avios-currency--secondary'],\n white: styles['avios-currency--white'],\n onSpend: styles['avios-currency--on-spend'],\n onCollect: styles['avios-currency--on-collect'],\n accentPrimary: styles['avios-currency--accent-primary'],\n accentSecondary: styles['avios-currency--accent-secondary'],\n },\n size: {\n xl: styles['avios-currency--xl'],\n lg: styles['avios-currency--lg'],\n md: styles['avios-currency--md'],\n sm: styles['avios-currency--sm'],\n xs: styles['avios-currency--xs'],\n '2xs': styles['avios-currency--2xs'],\n '3xs': styles['avios-currency--3xs'],\n '4xs': styles['avios-currency--4xs'],\n '5xs': styles['avios-currency--5xs'],\n },\n isStrikethrough: {\n true: styles['avios-currency--strikethrough'],\n false: '',\n },\n },\n defaultVariants: {\n styleVariant: 'accentSecondary',\n },\n});\n\nexport interface AviosCurrencyProps\n extends Omit<AviosCurrencySymbolProps, 'styleVariant'> {\n children?: number;\n /**\n * The style variant of the Avios currency\n */\n styleVariant?: AviosCurrencySymbolProps['styleVariant'];\n /**\n * The size of the Avios currency\n */\n size?: 'xl' | 'lg' | 'md' | 'sm' | 'xs' | '2xs' | '3xs' | '4xs' | '5xs';\n /**\n * Whether to display the currency name \" Avios\"\n */\n hasCurrencyName?: boolean;\n /**\n * The decorator to display\n */\n decorator?: 'link' | 'dropdown';\n /**\n * Whether to display the Avios currency as a strikethrough\n */\n isStrikethrough?: boolean;\n}\n\nexport function getIconSize(size: AviosCurrencyProps['size']): IconSize {\n switch (size) {\n case 'sm':\n return '0.75x';\n case '2xs':\n case '3xs':\n case '4xs':\n case '5xs':\n return '0.5x';\n default:\n return '1x';\n }\n}\n\nexport const AviosCurrency = ({\n children = 0,\n styleVariant = 'accentSecondary',\n kind = 'balance',\n size = 'xl',\n hasCurrencyName = false,\n decorator,\n isStrikethrough = false,\n ...props\n}: AviosCurrencyProps) => {\n const formattedChildren = new Intl.NumberFormat('en-GB', {\n style: 'decimal',\n maximumFractionDigits: 0,\n }).format(children);\n\n const { isLink, isDropdown } = useMemo(() => {\n if (decorator === 'link') {\n return { isLink: true, isDropdown: false };\n }\n if (decorator === 'dropdown') {\n return { isLink: false, isDropdown: true };\n }\n return { isLink: false, isDropdown: false };\n }, [decorator]);\n\n const iconSize = useMemo(() => getIconSize(size), [size]);\n\n return (\n <span className={aviosCurrency({ styleVariant, size, isStrikethrough })}>\n <AviosCurrencySymbol {...props} styleVariant={styleVariant} kind={kind} />\n <span className={styles.aviosCurrency__points}>{formattedChildren}</span>\n {isLink && (\n <Icon iconName=\"chevron-right\" iconSize={iconSize} data-testid=\"icon\" />\n )}\n {isDropdown && (\n <Icon\n iconName=\"angles-up-down\"\n iconSize={iconSize}\n data-testid=\"icon\"\n />\n )}\n {hasCurrencyName && (\n <span className={styles['avios-currency__name']}>Avios</span>\n )}\n </span>\n );\n};\n\nexport default AviosCurrency;\n"],"names":["aviosCurrency","cva","styles","variants","styleVariant","primary","secondary","white","onSpend","onCollect","accentPrimary","accentSecondary","size","xl","lg","md","sm","xs","isStrikethrough","true","false","defaultVariants","getIconSize","AviosCurrency","children","kind","hasCurrencyName","decorator","props","formattedChildren","Intl","NumberFormat","style","maximumFractionDigits","format","isLink","isDropdown","useMemo","iconSize","jsxs","className","AviosCurrencySymbol","jsx","aviosCurrency__points","Icon","iconName"],"mappings":"y2CAQMA,EAAgBC,EAAIC,EAAO,kBAAmB,CAClDC,SAAU,CACRC,aAAc,CACZC,QAASH,EAAO,2BAChBI,UAAWJ,EAAO,6BAClBK,MAAOL,EAAO,yBACdM,QAASN,EAAO,4BAChBO,UAAWP,EAAO,8BAClBQ,cAAeR,EAAO,kCACtBS,gBAAiBT,EAAO,qCAE1BU,KAAM,CACJC,GAAIX,EAAO,sBACXY,GAAIZ,EAAO,sBACXa,GAAIb,EAAO,sBACXc,GAAId,EAAO,sBACXe,GAAIf,EAAO,sBACX,MAAOA,EAAO,uBACd,MAAOA,EAAO,uBACd,MAAOA,EAAO,uBACd,MAAOA,EAAO,wBAEhBgB,gBAAiB,CACfC,KAAMjB,EAAO,iCACbkB,MAAO,KAGXC,gBAAiB,CACfjB,aAAc,qBA6BX,SAASkB,EAAYV,GAC1B,OAAQA,GACN,IAAK,KACH,MAAO,QACT,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACH,MAAO,OACT,QACE,MAAO,KAEb,CAEO,MAAMW,EAAgB,EAC3BC,WAAW,EACXpB,eAAe,kBACfqB,OAAO,UACPb,OAAO,KACPc,mBAAkB,EAClBC,YACAT,mBAAkB,KACfU,MAEH,MAAMC,EAAoB,IAAIC,KAAKC,aAAa,QAAS,CACvDC,MAAO,UACPC,sBAAuB,IACtBC,OAAOV,IAEJW,OAAEA,EAAAC,WAAQA,GAAeC,EAAQ,IACnB,SAAdV,EACK,CAAEQ,QAAQ,EAAMC,YAAY,GAEnB,aAAdT,EACK,CAAEQ,QAAQ,EAAOC,YAAY,GAE/B,CAAED,QAAQ,EAAOC,YAAY,GACnC,CAACT,IAEEW,EAAWD,EAAQ,IAAMf,EAAYV,GAAO,CAACA;AAEnD,OACE2B,EAAC,QAAKC,UAAWxC,EAAc,CAAEI,eAAcQ,OAAMM,oBACnDM,SAAA;iBAACiB,EAAA,IAAwBb,EAAOxB,eAA4BqB;eAC5DiB,EAAC,OAAA,CAAKF,UAAWtC,EAAOyC,sBAAwBnB,SAAAK,IAC/CM,oBACES,EAAA,CAAKC,SAAS,gBAAgBP,WAAoB,cAAY,SAEhEF,kBACCM,EAACE,EAAA,CACCC,SAAS,iBACTP,WACA,cAAY,SAGfZ,kBACCgB,EAAC,OAAA,CAAKF,UAAWtC,EAAO,wBAAyBsB,SAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{jsxs as e,jsx as
|
|
2
|
-
return e("span",{"data-testid":"avios-currency-badge","aria-label":
|
|
1
|
+
import{jsxs as e,jsx as s}from"react/jsx-runtime";import{AviosCurrency as d}from"../AviosCurrency/AviosCurrency.js";import{c as r}from"../../index-CCUt_dAN.js";import{useMemo as a,isValidElement as i}from"react";import '../../assets/AviosCurrencyBadge.css';const o="_avios-currency-badge__text--xs-bold_1d5jx_78",t="_avios-currency-badge__text--sm-bold_1d5jx_79",c="_avios-currency-badge__text--md-bold_1d5jx_80",l="_avios-currency-badge__text--lg-bold_1d5jx_81",n="_avios-currency-badge__text--xl-bold_1d5jx_85",_="_avios-currency-badge__text_1d5jx_78",x=r("_avios-currency-badge_1d5jx_1",{variants:{size:{xs:"_avios-currency-badge--xs_1d5jx_28",sm:"_avios-currency-badge--sm_1d5jx_35",md:"_avios-currency-badge--md_1d5jx_47",lg:"_avios-currency-badge--lg_1d5jx_59",xl:"_avios-currency-badge--xl_1d5jx_71"},kind:{collect:"_avios-currency-badge--collect_1d5jx_16",spend:"_avios-currency-badge--spend_1d5jx_21"}},defaultVariants:{size:"md",kind:"collect"}}),m=r(_,{variants:{size:{xs:void 0,sm:void 0,md:void 0,lg:void 0,xl:void 0},bold:{true:void 0,false:void 0}},defaultVariants:{size:"md",bold:!1},compoundVariants:[{size:"xs",bold:!0,className:o},{size:"sm",bold:!0,className:t},{size:"md",bold:!0,className:c},{size:"lg",bold:!0,className:l},{size:"xl",bold:!0,className:n}]}),b=["xs","sm","md","lg","xl"],u={xs:"5xs",sm:"4xs",md:"3xs",lg:"2xs",xl:"xs"};function v(e){return"string"==typeof e||"number"==typeof e?String(e):Array.isArray(e)?e.map(v).join(" "):i(e)&&e.props&&e.props.children?v(e.props.children):""}const g=({kind:r="collect",size:i="md",textStart:o,textEnd:t,textStartBold:c=!1,textEndBold:l=!1,ariaLabel:n,role:_,children:b=0,...g})=>{const y=b.toLocaleString(),p=a(()=>{if(n)return n;const e=y??"";return`${v(o)||""} ${e} Avios ${v(t)||""}`.trim()},[n,o,t,y]),j=u[i]??"3xs";/* @__PURE__ */
|
|
2
|
+
return e("span",{"data-testid":"avios-currency-badge","aria-label":p,role:_||void 0,className:x({size:i,kind:r}),children:[o&&/* @__PURE__ */s("span",{className:m({size:i,bold:c}),children:o}),"number"==typeof b&&/* @__PURE__ */s(d,{"aria-hidden":!0,styleVariant:"collect"===r?"onCollect":"onSpend",size:j,kind:r,...g,children:b}),t&&/* @__PURE__ */s("span",{className:m({size:i,bold:l}),children:t})]})};export{g as AviosCurrencyBadge,b as BADGE_SIZES,g as default,m as textCva};
|
|
3
3
|
//# sourceMappingURL=AviosCurrencyBadge.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AviosCurrencyBadge.js","sources":["../../../src/components/AviosCurrencyBadge/AviosCurrencyBadge.tsx"],"sourcesContent":["import styles from './AviosCurrencyBadge.module.css';\nimport AviosCurrency, {\n AviosCurrencyProps,\n} from '../AviosCurrency/AviosCurrency';\nimport { cva } from 'class-variance-authority';\nimport { useMemo, type ReactNode, isValidElement } from 'react';\n\nconst aviosCurrencyBadge = cva(styles
|
|
1
|
+
{"version":3,"file":"AviosCurrencyBadge.js","sources":["../../../src/components/AviosCurrencyBadge/AviosCurrencyBadge.tsx"],"sourcesContent":["import styles from './AviosCurrencyBadge.module.css';\nimport AviosCurrency, {\n AviosCurrencyProps,\n} from '../AviosCurrency/AviosCurrency';\nimport { cva } from 'class-variance-authority';\nimport { useMemo, type ReactNode, isValidElement } from 'react';\n\nconst aviosCurrencyBadge = cva(styles['avios-currency-badge'], {\n variants: {\n size: {\n xs: styles['avios-currency-badge--xs'],\n sm: styles['avios-currency-badge--sm'],\n md: styles['avios-currency-badge--md'],\n lg: styles['avios-currency-badge--lg'],\n xl: styles['avios-currency-badge--xl'],\n },\n kind: {\n collect: styles['avios-currency-badge--collect'],\n spend: styles['avios-currency-badge--spend'],\n },\n },\n defaultVariants: {\n size: 'md',\n kind: 'collect',\n },\n});\n\nexport const textCva = cva(styles['avios-currency-badge__text'], {\n variants: {\n // we pull in size so we can fire off the .xs-bold/.sm-bold/etc macros\n size: {\n xs: undefined,\n sm: undefined,\n md: undefined,\n lg: undefined,\n xl: undefined,\n },\n bold: {\n true: undefined,\n false: undefined,\n },\n },\n defaultVariants: {\n size: 'md',\n bold: false,\n },\n compoundVariants: [\n {\n size: 'xs',\n bold: true,\n className: styles['avios-currency-badge__text--xs-bold'],\n },\n {\n size: 'sm',\n bold: true,\n className: styles['avios-currency-badge__text--sm-bold'],\n },\n {\n size: 'md',\n bold: true,\n className: styles['avios-currency-badge__text--md-bold'],\n },\n {\n size: 'lg',\n bold: true,\n className: styles['avios-currency-badge__text--lg-bold'],\n },\n {\n size: 'xl',\n bold: true,\n className: styles['avios-currency-badge__text--xl-bold'],\n },\n ],\n});\n\nexport const BADGE_SIZES = ['xs', 'sm', 'md', 'lg', 'xl'] as const;\nexport type BadgeSize = (typeof BADGE_SIZES)[number];\n\nexport interface AviosCurrencyBadgeProps\n extends Omit<\n AviosCurrencyProps,\n 'isStrikethrough' | 'decorator' | 'styleVariant'\n > {\n /**\n * The kind of Avios badge (collect or spend)\n * @default 'collect'\n */\n kind?: 'collect' | 'spend';\n /**\n * Additional content to be displayed at the start of the badge\n */\n textStart?: ReactNode;\n /**\n * Additional content to be displayed at the end of the badge\n */\n textEnd?: ReactNode;\n /**\n * Whether the text at the start of the badge should be bold\n * @default false\n */\n textStartBold?: boolean;\n /**\n * Whether the text at the end of the badge should be bold\n * @default false\n */\n textEndBold?: boolean;\n /**\n * Size of the badge\n * @default 'md'\n */\n size?: BadgeSize;\n /**\n * A string representation of the badge's contents, used for accessibility\n * Example: \"Collect 50,000 Avios points\"\n */\n ariaLabel?: string;\n /**\n * ARIA role for the badge container. This should only be used when changes to the currency badge need to be announced.\n */\n role?: string;\n /**\n * Number of Avios points\n */\n children?: number;\n}\n\nconst sizeMap: Record<BadgeSize, AviosCurrencyProps['size']> = {\n xs: '5xs',\n sm: '4xs',\n md: '3xs',\n lg: '2xs',\n xl: 'xs',\n};\n\nfunction extractText(node: ReactNode): string {\n if (typeof node === 'string' || typeof node === 'number') return String(node);\n if (Array.isArray(node)) return node.map(extractText).join(' ');\n if (isValidElement(node) && node.props && node.props.children) {\n return extractText(node.props.children);\n }\n return '';\n}\n\nexport const AviosCurrencyBadge = ({\n kind = 'collect',\n size = 'md',\n textStart,\n textEnd,\n textStartBold = false,\n textEndBold = false,\n ariaLabel,\n role,\n children = 0,\n ...props\n}: AviosCurrencyBadgeProps) => {\n const formattedPoints = children.toLocaleString();\n\n const computedAriaLabel = useMemo(() => {\n if (ariaLabel) return ariaLabel;\n\n const formatted = formattedPoints ?? '';\n const startText = extractText(textStart);\n const endText = extractText(textEnd);\n return `${startText || ''} ${formatted} Avios ${endText || ''}`.trim();\n }, [ariaLabel, textStart, textEnd, formattedPoints]);\n\n const aviosCurrencySize = sizeMap[size] ?? '3xs';\n\n return (\n <span\n data-testid=\"avios-currency-badge\"\n aria-label={computedAriaLabel}\n role={role || undefined}\n className={aviosCurrencyBadge({\n size,\n kind,\n })}\n >\n {textStart && (\n <span className={textCva({ size, bold: textStartBold })}>\n {textStart}\n </span>\n )}\n {typeof children === 'number' && (\n <AviosCurrency\n aria-hidden\n styleVariant={kind === 'collect' ? 'onCollect' : 'onSpend'}\n size={aviosCurrencySize}\n kind={kind}\n {...props}\n >\n {children}\n </AviosCurrency>\n )}\n {textEnd && (\n <span className={textCva({ size, bold: textEndBold })}>{textEnd}</span>\n )}\n </span>\n );\n};\n\nexport default AviosCurrencyBadge;\n"],"names":["aviosCurrencyBadge","cva","variants","size","xs","sm","md","lg","xl","kind","collect","spend","defaultVariants","textCva","styles","bold","true","false","compoundVariants","className","BADGE_SIZES","sizeMap","extractText","node","String","Array","isArray","map","join","isValidElement","props","children","AviosCurrencyBadge","textStart","textEnd","textStartBold","textEndBold","ariaLabel","role","formattedPoints","toLocaleString","computedAriaLabel","useMemo","formatted","trim","aviosCurrencySize","jsxs","jsx","AviosCurrency","styleVariant"],"mappings":"6fAOMA,EAAqBC,kCAAoC,CAC7DC,SAAU,CACRC,KAAM,CACJC,wCACAC,wCACAC,wCACAC,wCACAC,yCAEFC,KAAM,CACJC,kDACAC,gDAGJC,gBAAiB,CACfT,KAAM,KACNM,KAAM,aAIGI,EAAUZ,EAAIa,EAAsC,CAC/DZ,SAAU,CAERC,KAAM,CACJC,QAAI,EACJC,QAAI,EACJC,QAAI,EACJC,QAAI,EACJC,QAAI,GAENO,KAAM,CACJC,UAAM,EACNC,WAAO,IAGXL,gBAAiB,CACfT,KAAM,KACNY,MAAM,GAERG,iBAAkB,CAChB,CACEf,KAAM,KACNY,MAAM,EACNI,UAAWL,GAEb,CACEX,KAAM,KACNY,MAAM,EACNI,UAAWL,GAEb,CACEX,KAAM,KACNY,MAAM,EACNI,UAAWL,GAEb,CACEX,KAAM,KACNY,MAAM,EACNI,UAAWL,GAEb,CACEX,KAAM,KACNY,MAAM,EACNI,UAAWL,MAKJM,EAAc,CAAC,KAAM,KAAM,KAAM,KAAM,MAmD9CC,EAAyD,CAC7DjB,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MAGN,SAASc,EAAYC,GACnB,MAAoB,iBAATA,GAAqC,iBAATA,EAA0BC,OAAOD,GACpEE,MAAMC,QAAQH,GAAcA,EAAKI,IAAIL,GAAaM,KAAK,KACvDC,EAAeN,IAASA,EAAKO,OAASP,EAAKO,MAAMC,SAC5CT,EAAYC,EAAKO,MAAMC,UAEzB,EACT,CAEO,MAAMC,EAAqB,EAChCvB,OAAO,UACPN,OAAO,KACP8B,YACAC,UACAC,iBAAgB,EAChBC,eAAc,EACdC,YACAC,OACAP,WAAW,KACRD,MAEH,MAAMS,EAAkBR,EAASS,iBAE3BC,EAAoBC,EAAQ,KAChC,GAAIL,EAAW,OAAOA,EAEtB,MAAMM,EAAYJ,GAAmB,GAGrC,MAAO,GAFWjB,EAAYW,IAEP,MAAMU,WADbrB,EAAYY,IAC+B,KAAKU,QAC/D,CAACP,EAAWJ,EAAWC,EAASK,IAE7BM,EAAoBxB,EAAQlB,IAAS;AAE3C,OACE2C,EAAC,OAAA,CACC,cAAY,uBACZ,aAAYL,EACZH,KAAMA,QAAQ,EACdnB,UAAWnB,EAAmB,CAC5BG,OACAM,SAGDsB,SAAA,CAAAE,kBACCc,EAAC,OAAA,CAAK5B,UAAWN,EAAQ,CAAEV,OAAMY,KAAMoB,IACpCJ,SAAAE,IAGgB,iBAAbF,kBACNgB,EAACC,EAAA,CACC,eAAW,EACXC,aAAuB,YAATxC,EAAqB,YAAc,UACjDN,KAAM0C,EACNpC,UACIqB,EAEHC,aAGJG,kBACCa,EAAC,OAAA,CAAK5B,UAAWN,EAAQ,CAAEV,OAAMY,KAAMqB,IAAiBL,SAAAG"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{jsxs as
|
|
2
|
-
return
|
|
3
|
-
return
|
|
4
|
-
return
|
|
5
|
-
/* @__PURE__ */
|
|
6
|
-
/* @__PURE__ */
|
|
1
|
+
import{jsxs as a,jsx as r}from"react/jsx-runtime";import e from"react";import{c as i}from"../../index-CCUt_dAN.js";import '../../assets/AviosCurrencySymbol.css';const c=i("_avios-currency-symbol_dvvi8_1",{variants:{styleVariant:{primary:"_avios-currency-symbol--primary_dvvi8_4",secondary:"_avios-currency-symbol--secondary_dvvi8_14",white:"_avios-currency-symbol--white_dvvi8_24",onSpend:"_avios-currency-symbol--on-spend_dvvi8_34",onCollect:"_avios-currency-symbol--on-collect_dvvi8_44",accentPrimary:"_avios-currency-symbol--accent-primary_dvvi8_54",accentSecondary:"_avios-currency-symbol--accent-secondary_dvvi8_64"}},defaultVariants:{styleVariant:"primary"}}),t=({kind:a="collect"})=>{switch(a){case"collect":/* @__PURE__ */
|
|
2
|
+
return r("path",{fill:"currentColor",d:"M7.562 11.188a.317.317 0 0 0 .317-.318V8.648h2.222a.317.317 0 0 0 .317-.317V7.06a.317.317 0 0 0-.317-.317H7.879V4.522a.317.317 0 0 0-.317-.318h-1.27a.317.317 0 0 0-.317.318v2.222H3.752a.317.317 0 0 0-.317.317v1.27c0 .175.142.317.317.317h2.223v2.222c0 .175.142.318.317.318z"});case"spend":/* @__PURE__ */
|
|
3
|
+
return r("path",{fill:"currentColor",d:"M9.288 4.914a.3.3 0 0 1 .056.005.27.27 0 0 1 .217.268v4.371a.273.273 0 0 1-.273.273H8.195a.273.273 0 0 1-.273-.273V7.712l-3.265 3.265a.273.273 0 0 1-.386 0l-.773-.773a.273.273 0 0 1 0-.386l3.265-3.265H4.917a.273.273 0 0 1-.274-.273V5.187c0-.151.123-.273.274-.273z"});case"balance":return null}},n={width:"24px",height:"24px"},l=({kind:i="collect",styleVariant:l="accentPrimary",width:o,height:s,label:d,...v})=>{const y=e.useMemo(()=>o&&s?{width:o,height:s}:o?{width:o,height:o}:s?{width:s,height:s}:n,[o,s]),h=d||v["aria-label"];/* @__PURE__ */
|
|
4
|
+
return a("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0.82 0.52 14.00 14.02",className:c({styleVariant:l}),"aria-label":h,"aria-hidden":v["aria-hidden"]??!0,role:v["aria-hidden"]?void 0:"img",...y,...v,children:[
|
|
5
|
+
/* @__PURE__ */r("path",{fill:"#0032A0",d:"M14.512 5.968C14.025 5.127 9.659.865 4.364.526c-.923-.06-1.797.448-2.18 1.262-1.01 2.17-2.246 7.022-.459 11.442a2.06 2.06 0 0 0 1.94 1.312c.098 0 .191-.005.29-.016 6.043-.744 9.923-4.946 10.579-6.306.246-.514.508-1.3-.033-2.24z"}),
|
|
6
|
+
/* @__PURE__ */r(t,{kind:i})]})};l.displayName="AviosCurrencySymbol";export{l as AviosCurrencySymbol,l as default};
|
|
7
7
|
//# sourceMappingURL=AviosCurrencySymbol.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AviosCurrencySymbol.js","sources":["../../../src/components/AviosCurrencySymbol/AviosCurrencySymbol.tsx"],"sourcesContent":["import React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport styles from './AviosCurrencySymbol.module.css';\n\nconst aviosCurrencySymbol = cva(styles
|
|
1
|
+
{"version":3,"file":"AviosCurrencySymbol.js","sources":["../../../src/components/AviosCurrencySymbol/AviosCurrencySymbol.tsx"],"sourcesContent":["import React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport styles from './AviosCurrencySymbol.module.css';\n\nconst aviosCurrencySymbol = cva(styles['avios-currency-symbol'], {\n variants: {\n styleVariant: {\n primary: styles['avios-currency-symbol--primary'],\n secondary: styles['avios-currency-symbol--secondary'],\n white: styles['avios-currency-symbol--white'],\n onSpend: styles['avios-currency-symbol--on-spend'],\n onCollect: styles['avios-currency-symbol--on-collect'],\n accentPrimary: styles['avios-currency-symbol--accent-primary'],\n accentSecondary: styles['avios-currency-symbol--accent-secondary'],\n },\n },\n defaultVariants: {\n styleVariant: 'primary',\n },\n});\n\nexport type AviosCurrencySymbolVariants = VariantProps<\n typeof aviosCurrencySymbol\n>;\n\nexport type AviosCurrencySymbolKind = 'collect' | 'spend' | 'balance';\nexport type AviosCurrencySymbolStyleVariant =\n | 'primary'\n | 'secondary'\n | 'white'\n | 'onSpend'\n | 'onCollect'\n | 'accentPrimary'\n | 'accentSecondary';\n\nexport interface AviosCurrencySymbolProps\n extends Omit<React.SVGProps<SVGSVGElement>, 'fill' | 'className' | 'style'> {\n /**\n * The style variant to use for the Avios currency symbol\n * @default 'primary'\n */\n styleVariant?: AviosCurrencySymbolStyleVariant;\n /**\n * The kind of Avios currency to display \"collect\", \"spend\", or \"balance\"\n * @default 'collect'\n */\n kind?: AviosCurrencySymbolKind;\n /**\n * The screen reader label to use for the SVG element\n * @default \"Avios ${kind} currency symbol\"\n * @deprecated Use `aria-label` instead\n */\n label?: string;\n}\n\nconst AviosCurrencyKindPath = ({\n kind = 'collect',\n}: Pick<AviosCurrencySymbolProps, 'kind'>) => {\n switch (kind) {\n case 'collect':\n return (\n <path\n fill=\"currentColor\"\n d=\"M7.562 11.188a.317.317 0 0 0 .317-.318V8.648h2.222a.317.317 0 0 0 .317-.317V7.06a.317.317 0 0 0-.317-.317H7.879V4.522a.317.317 0 0 0-.317-.318h-1.27a.317.317 0 0 0-.317.318v2.222H3.752a.317.317 0 0 0-.317.317v1.27c0 .175.142.317.317.317h2.223v2.222c0 .175.142.318.317.318z\"\n />\n );\n case 'spend':\n return (\n <path\n fill=\"currentColor\"\n d=\"M9.288 4.914a.3.3 0 0 1 .056.005.27.27 0 0 1 .217.268v4.371a.273.273 0 0 1-.273.273H8.195a.273.273 0 0 1-.273-.273V7.712l-3.265 3.265a.273.273 0 0 1-.386 0l-.773-.773a.273.273 0 0 1 0-.386l3.265-3.265H4.917a.273.273 0 0 1-.274-.273V5.187c0-.151.123-.273.274-.273z\"\n />\n );\n case 'balance':\n return null;\n }\n};\n\nconst DEFAULT_DIMENSIONS = {\n width: '24px',\n height: '24px',\n};\n\nexport const AviosCurrencySymbol = ({\n kind = 'collect',\n styleVariant = 'accentPrimary',\n width,\n height,\n label,\n ...props\n}: AviosCurrencySymbolProps) => {\n // Handle custom dimensions from props\n const dimensions = React.useMemo(() => {\n if (width && height) {\n return {\n width,\n height,\n };\n }\n\n if (width) {\n return {\n width,\n height: width,\n };\n }\n\n if (height) {\n return {\n width: height,\n height: height,\n };\n }\n\n return DEFAULT_DIMENSIONS;\n }, [width, height]);\n\n // TODO: Remove deprecated `label` prop in future major release\n const screenReaderLabel = label || props['aria-label'];\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0.82 0.52 14.00 14.02\"\n className={aviosCurrencySymbol({ styleVariant })}\n aria-label={screenReaderLabel}\n aria-hidden={props['aria-hidden'] ?? true}\n role={props['aria-hidden'] ? undefined : 'img'}\n {...dimensions}\n {...props}\n >\n <path\n fill=\"#0032A0\"\n d=\"M14.512 5.968C14.025 5.127 9.659.865 4.364.526c-.923-.06-1.797.448-2.18 1.262-1.01 2.17-2.246 7.022-.459 11.442a2.06 2.06 0 0 0 1.94 1.312c.098 0 .191-.005.29-.016 6.043-.744 9.923-4.946 10.579-6.306.246-.514.508-1.3-.033-2.24z\"\n ></path>\n <AviosCurrencyKindPath kind={kind} />\n </svg>\n );\n};\n\nAviosCurrencySymbol.displayName = 'AviosCurrencySymbol';\nexport default AviosCurrencySymbol;\n"],"names":["aviosCurrencySymbol","cva","variants","styleVariant","primary","secondary","white","onSpend","onCollect","accentPrimary","accentSecondary","defaultVariants","AviosCurrencyKindPath","kind","jsx","fill","d","DEFAULT_DIMENSIONS","width","height","AviosCurrencySymbol","label","props","dimensions","React","useMemo","screenReaderLabel","jsxs","xmlns","viewBox","className","role","children","displayName"],"mappings":"yHAIMA,EAAsBC,mCAAqC,CAC/DC,SAAU,CACRC,aAAc,CACZC,kDACAC,uDACAC,+CACAC,oDACAC,wDACAC,gEACAC,sEAGJC,gBAAiB,CACfR,aAAc,aAsCZS,EAAwB,EAC5BC,OAAO,cAEP,OAAQA,GACN,IAAK;AACH,OACEC,EAAC,OAAA,CACCC,KAAK,eACLC,EAAE,qRAGR,IAAK;AACH,OACEF,EAAC,OAAA,CACCC,KAAK,eACLC,EAAE,4QAGR,IAAK,UACH,OAAO,OAIPC,EAAqB,CACzBC,MAAO,OACPC,OAAQ,QAGGC,EAAsB,EACjCP,OAAO,UACPV,eAAe,gBACfe,QACAC,SACAE,WACGC,MAGH,MAAMC,EAAaC,EAAMC,QAAQ,IAC3BP,GAASC,EACJ,CACLD,QACAC,UAIAD,EACK,CACLA,QACAC,OAAQD,GAIRC,EACK,CACLD,MAAOC,EACPA,UAIGF,EACN,CAACC,EAAOC,IAGLO,EAAoBL,GAASC,EAAM;AAEzC,OACEK,EAAC,MAAA,CACCC,MAAM,6BACNb,KAAK,OACLc,QAAQ,wBACRC,UAAW9B,EAAoB,CAAEG,iBACjC,aAAYuB,EACZ,cAAaJ,EAAM,iBAAkB,EACrCS,KAAMT,EAAM,oBAAiB,EAAY,SACrCC,KACAD,EAEJU,SAAA;eAAAlB,EAAC,OAAA,CACCC,KAAK,UACLC,EAAE;eAEJF,EAACF,GAAsBC,aAK7BO,EAAoBa,YAAc"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{jsxs as
|
|
2
|
-
return
|
|
1
|
+
import{jsxs as a,jsx as e}from"react/jsx-runtime";import{c as s}from"../../index-CCUt_dAN.js";import{Icon as t}from"../Icon/Icon.js";import{focusStyleVariants as i}from"../../utils/focus/focusStyles.js";import '../../assets/Badge.css';const r=s("_badge_1xfg2_1",{variants:{size:{sm:"_badge--sm_1xfg2_24",md:"_badge--md_1xfg2_15"},styleVariant:{neutral:"_badge--neutral_1xfg2_33",critical:"_badge--critical_1xfg2_38",warning:"_badge--warning_1xfg2_43",caution:"_badge--caution_1xfg2_48",success:"_badge--success_1xfg2_53",info:"_badge--info_1xfg2_58",brand:"_badge--brand_1xfg2_63",sale:"_badge--sale_1xfg2_68",white:"_badge--white_1xfg2_73"}},defaultVariants:{size:"md",styleVariant:"neutral"}}),_=({children:s,size:_="md",styleVariant:n,ariaLabel:d,iconStartProps:c,iconEndProps:g,focusStyle:o="default",className:f,...l})=>{const u={iconSize:"md"===_?"0.75x":"0.5x",iconPrefix:"fas",padding:"square"};/* @__PURE__ */
|
|
2
|
+
return a("span",{"data-testid":"badge",className:`${r({size:_,styleVariant:n})} ${i({focusStyle:o})} ${f||""}`,role:"status","aria-label":d,...l,children:[c&&/* @__PURE__ */e(t,{...{...u,...c}}),s,g&&/* @__PURE__ */e(t,{...{...u,...g}})]})};export{_ as Badge,_ as default};
|
|
3
3
|
//# sourceMappingURL=Badge.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Badge.js","sources":["../../../src/components/Badge/Badge.tsx"],"sourcesContent":["import React from 'react';\nimport { cva } from 'class-variance-authority';\nimport { Icon, IconProps } from '../Icon/Icon';\nimport styles from './Badge.module.css';\nimport { focusStyleVariants } from '../../utils/focus/focusStyles';\n\nconst badge = cva(styles.badge, {\n variants: {\n size: {\n sm: styles
|
|
1
|
+
{"version":3,"file":"Badge.js","sources":["../../../src/components/Badge/Badge.tsx"],"sourcesContent":["import React from 'react';\nimport { cva } from 'class-variance-authority';\nimport { Icon, IconProps } from '../Icon/Icon';\nimport styles from './Badge.module.css';\nimport { focusStyleVariants } from '../../utils/focus/focusStyles';\n\nconst badge = cva(styles.badge, {\n variants: {\n size: {\n sm: styles['badge--sm'],\n md: styles['badge--md'],\n },\n styleVariant: {\n neutral: styles['badge--neutral'],\n critical: styles['badge--critical'],\n warning: styles['badge--warning'],\n caution: styles['badge--caution'],\n success: styles['badge--success'],\n info: styles['badge--info'],\n brand: styles['badge--brand'],\n sale: styles['badge--sale'],\n white: styles['badge--white'],\n },\n },\n defaultVariants: {\n size: 'md',\n styleVariant: 'neutral',\n },\n});\n\nexport interface BadgeProps {\n /**\n * The children of the component\n */\n children?: React.ReactNode;\n /**\n * A string representation of the tag's contents, used for accessibility.\n */\n ariaLabel?: string;\n /**\n * The size of the tag\n */\n size?: 'sm' | 'md';\n /**\n * The style variant of the tag\n */\n styleVariant?:\n | 'neutral'\n | 'critical'\n | 'warning'\n | 'caution'\n | 'success'\n | 'info'\n | 'brand'\n | 'sale'\n | 'white';\n /**\n * Whether an icon should display at the start of the Button and icon properties\n */\n iconStartProps?: IconProps;\n /**\n * Whether an icon should display at the end of Button and icon properties\n */\n iconEndProps?: IconProps;\n /**\n * The focus style of the button\n */\n focusStyle?: 'default' | 'white';\n /**\n * @internal\n * Internal className prop for design system use only\n */\n className?: string;\n}\n\nexport const Badge = ({\n children,\n size = 'md',\n styleVariant,\n ariaLabel,\n iconStartProps,\n iconEndProps,\n focusStyle = 'default',\n className,\n ...props\n}: BadgeProps) => {\n // Set default icon props which are overwritten if passed explicity\n const defaultIconProps: Partial<IconProps> = {\n iconSize: size === 'md' ? '0.75x' : '0.5x',\n iconPrefix: 'fas',\n padding: 'square',\n };\n\n return (\n <span\n data-testid=\"badge\"\n className={`${badge({ size, styleVariant })} ${focusStyleVariants({ focusStyle })} ${className || ''}`}\n role=\"status\"\n aria-label={ariaLabel}\n {...props}\n >\n {iconStartProps && (\n <Icon {...{ ...defaultIconProps, ...iconStartProps }} />\n )}\n {children}\n {iconEndProps && <Icon {...{ ...defaultIconProps, ...iconEndProps }} />}\n </span>\n );\n};\n\nexport default Badge;\n"],"names":["badge","cva","variants","size","sm","md","styleVariant","neutral","critical","warning","caution","success","info","brand","sale","white","defaultVariants","Badge","children","ariaLabel","iconStartProps","iconEndProps","focusStyle","className","props","defaultIconProps","iconSize","iconPrefix","padding","jsxs","focusStyleVariants","role","jsx","Icon"],"mappings":"iNAMMA,EAAQC,mBAAkB,CAC9BC,SAAU,CACRC,KAAM,CACJC,yBACAC,0BAEFC,aAAc,CACZC,mCACAC,qCACAC,mCACAC,mCACAC,mCACAC,6BACAC,+BACAC,6BACAC,iCAGJC,gBAAiB,CACfb,KAAM,KACNG,aAAc,aAiDLW,EAAQ,EACnBC,WACAf,OAAO,KACPG,eACAa,YACAC,iBACAC,eACAC,aAAa,UACbC,eACGC,MAGH,MAAMC,EAAuC,CAC3CC,SAAmB,OAATvB,EAAgB,QAAU,OACpCwB,WAAY,MACZC,QAAS;AAGX,OACEC,EAAC,OAAA,CACC,cAAY,QACZN,UAAW,GAAGvB,EAAM,CAAEG,OAAMG,oBAAmBwB,EAAmB,CAAER,kBAAiBC,GAAa,KAClGQ,KAAK,SACL,aAAYZ,KACRK,EAEHN,SAAA,CAAAE,kBACCY,EAACC,MAAS,IAAKR,KAAqBL,KAErCF,EACAG,oBAAiBY,EAAA,IAAS,IAAKR,KAAqBJ"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { default as React, HTMLAttributes } from 'react';
|
|
2
|
+
export interface BannerSectionContentProps extends Omit<HTMLAttributes<HTMLDivElement>, 'className' | 'style'> {
|
|
3
|
+
/**
|
|
4
|
+
* Text displayed in heading. Renders as an `h2`
|
|
5
|
+
*/
|
|
6
|
+
title: string;
|
|
7
|
+
/**
|
|
8
|
+
* Text displayed in subheading. Renders as an `h3`
|
|
9
|
+
*/
|
|
10
|
+
subtitle?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Content displayed below the title
|
|
13
|
+
*/
|
|
14
|
+
description?: React.ReactNode;
|
|
15
|
+
/**
|
|
16
|
+
* Changes the colour of the `title` and `description` for placement on light or dark backgrounds
|
|
17
|
+
*
|
|
18
|
+
* @default 'onLight'
|
|
19
|
+
*/
|
|
20
|
+
styleVariant?: 'onLight' | 'onDark';
|
|
21
|
+
/**
|
|
22
|
+
* Content displayed above the title
|
|
23
|
+
*/
|
|
24
|
+
startSlot?: React.ReactNode;
|
|
25
|
+
/**
|
|
26
|
+
* Content displayed below the description
|
|
27
|
+
*/
|
|
28
|
+
endSlot?: React.ReactNode;
|
|
29
|
+
}
|
|
30
|
+
export declare const BannerSectionContent: React.ForwardRefExoticComponent<BannerSectionContentProps & React.RefAttributes<HTMLDivElement>>;
|
|
31
|
+
export default BannerSectionContent;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{jsxs as e,jsx as r}from"react/jsx-runtime";import{forwardRef as n}from"react";import{Heading as t}from"../Heading/Heading.js";import{Paragraph as o}from"../Paragraph/Paragraph.js";import{SubHeading as a}from"../SubHeading/SubHeading.js";import '../../assets/BannerSectionContent.css';const i="_bannerSectionContent_1196e_1",d="_bannerSectionContent__content_1196e_7",c="_bannerSectionContent__end-slot_1196e_14",s=n(({title:n,subtitle:s,description:l,styleVariant:m="onLight",startSlot:h,endSlot:g,..._},f)=>{const p="onLight"===m;/* @__PURE__ */
|
|
2
|
+
return e("div",{..._,className:i,"data-on-light":p||void 0,"data-on-dark":!p||void 0,ref:f,children:[
|
|
3
|
+
/* @__PURE__ */e("div",{className:d,children:[h,
|
|
4
|
+
/* @__PURE__ */r(t,{as:"h2",size:"lg",foregroundColor:p?"accentSecondary":"whitePrimary",children:n}),s&&/* @__PURE__ */r(a,{as:"h3",size:"xs",foregroundColor:p?"accentSecondary":"whitePrimary",children:s}),l&&/* @__PURE__ */r(o,{size:"lg",foregroundColor:p?"secondary":"whitePrimary",children:l})]}),g&&/* @__PURE__ */r("div",{className:c,children:g})]})});s.displayName="BannerSectionContent";export{s as BannerSectionContent,s as default};
|
|
5
|
+
//# sourceMappingURL=BannerSectionContent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BannerSectionContent.js","sources":["../../../src/components/BannerSectionContent/BannerSectionContent.tsx"],"sourcesContent":["import React, { forwardRef, HTMLAttributes } from 'react';\nimport Heading from '../Heading';\nimport Paragraph from '../Paragraph';\n\nimport styles from './BannerSectionContent.module.css';\nimport SubHeading from '../SubHeading';\n\nexport interface BannerSectionContentProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'className' | 'style'> {\n /**\n * Text displayed in heading. Renders as an `h2`\n */\n title: string;\n /**\n * Text displayed in subheading. Renders as an `h3`\n */\n subtitle?: string;\n /**\n * Content displayed below the title\n */\n description?: React.ReactNode;\n /**\n * Changes the colour of the `title` and `description` for placement on light or dark backgrounds\n *\n * @default 'onLight'\n */\n styleVariant?: 'onLight' | 'onDark';\n /**\n * Content displayed above the title\n */\n startSlot?: React.ReactNode;\n /**\n * Content displayed below the description\n */\n endSlot?: React.ReactNode;\n}\n\nexport const BannerSectionContent = forwardRef<\n HTMLDivElement,\n BannerSectionContentProps\n>(\n (\n {\n title,\n subtitle,\n description,\n styleVariant = 'onLight',\n startSlot,\n endSlot,\n ...props\n },\n forwardedRef,\n ) => {\n const isOnLight = styleVariant === 'onLight';\n\n return (\n <div\n {...props}\n className={styles['bannerSectionContent']}\n data-on-light={isOnLight || undefined}\n data-on-dark={!isOnLight || undefined}\n ref={forwardedRef}\n >\n <div className={styles['bannerSectionContent__content']}>\n {startSlot}\n <Heading\n as=\"h2\"\n size=\"lg\"\n foregroundColor={isOnLight ? 'accentSecondary' : 'whitePrimary'}\n >\n {title}\n </Heading>\n {subtitle && (\n <SubHeading\n as=\"h3\"\n size=\"xs\"\n foregroundColor={isOnLight ? 'accentSecondary' : 'whitePrimary'}\n >\n {subtitle}\n </SubHeading>\n )}\n {description && (\n <Paragraph\n size=\"lg\"\n foregroundColor={isOnLight ? 'secondary' : 'whitePrimary'}\n >\n {description}\n </Paragraph>\n )}\n </div>\n {endSlot && (\n <div className={styles['bannerSectionContent__end-slot']}>\n {endSlot}\n </div>\n )}\n </div>\n );\n },\n);\nBannerSectionContent.displayName = 'BannerSectionContent';\n\nexport default BannerSectionContent;\n"],"names":["BannerSectionContent","forwardRef","title","subtitle","description","styleVariant","startSlot","endSlot","props","forwardedRef","isOnLight","jsxs","className","styles","ref","children","jsx","Heading","as","size","foregroundColor","SubHeading","Paragraph","displayName"],"mappings":"oXAqCaA,EAAuBC,EAIlC,EAEIC,QACAC,WACAC,cACAC,eAAe,UACfC,YACAC,aACGC,GAELC,KAEA,MAAMC,EAA6B,YAAjBL;AAElB,OACEM,EAAC,MAAA,IACKH,EACJI,UAAWC,EACX,gBAAeH,QAAa,EAC5B,gBAAeA,QAAa,EAC5BI,IAAKL,EAELM,SAAA;iBAAC,MAAA,CAAIH,UAAWC,EACbE,SAAA,CAAAT;eACDU,EAACC,EAAA,CACCC,GAAG,KACHC,KAAK,KACLC,gBAAiBV,EAAY,kBAAoB,eAEhDK,SAAAb,IAEFC,kBACCa,EAACK,EAAA,CACCH,GAAG,KACHC,KAAK,KACLC,gBAAiBV,EAAY,kBAAoB,eAEhDK,SAAAZ,IAGJC,kBACCY,EAACM,EAAA,CACCH,KAAK,KACLC,gBAAiBV,EAAY,YAAc,eAE1CK,SAAAX,OAING,kBACCS,EAAC,MAAA,CAAIJ,UAAWC,EACbE,SAAAR,SAObP,EAAqBuB,YAAc"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { default as React, HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
import { default as BannerSectionContent } from '../BannerSectionContent';
|
|
3
|
+
import { ResponsiveValue } from '../../utils/breakpoint/responsiveSSR';
|
|
4
|
+
export interface BannerSectionPlectrumMediaProps extends Omit<HTMLAttributes<HTMLDivElement>, 'classname' | 'styles'> {
|
|
5
|
+
/**
|
|
6
|
+
* Element positioned on top on the media in the bottom right corner
|
|
7
|
+
*/
|
|
8
|
+
children?: ReactNode;
|
|
9
|
+
/**
|
|
10
|
+
* Style of the plectrum overlay
|
|
11
|
+
* @default 'sharktooth'
|
|
12
|
+
*/
|
|
13
|
+
plectrumVariant?: 'sharktooth' | 'sharkfin';
|
|
14
|
+
/**
|
|
15
|
+
* **[Responsive]** Media source, recommended aspect ratio: 3:2.
|
|
16
|
+
* Responsive image sources are useful when art directing.
|
|
17
|
+
*/
|
|
18
|
+
src: string | ResponsiveValue<string>;
|
|
19
|
+
}
|
|
20
|
+
export declare const BannerSectionPlectrumMedia: {
|
|
21
|
+
({ children, plectrumVariant, src, ...rest }: BannerSectionPlectrumMediaProps): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
displayName: string;
|
|
23
|
+
};
|
|
24
|
+
export interface BannerSectionPlectrumProps extends Omit<HTMLAttributes<HTMLDivElement>, 'className' | 'style'> {
|
|
25
|
+
/**
|
|
26
|
+
* Content displayed in the banner section. Expects `BannerSectionPlectrum.Content`, `BannerSectionPlectrum.Media`
|
|
27
|
+
*/
|
|
28
|
+
children?: React.ReactNode;
|
|
29
|
+
/**
|
|
30
|
+
* Reverses layout order of Media and Content on screens below lg breakpoint (1024px)
|
|
31
|
+
*/
|
|
32
|
+
isMobileReversed?: boolean;
|
|
33
|
+
}
|
|
34
|
+
interface BannerSectionPlectrumComponent extends React.ForwardRefExoticComponent<BannerSectionPlectrumProps & React.RefAttributes<HTMLElement>> {
|
|
35
|
+
Content: typeof BannerSectionContent;
|
|
36
|
+
Media: typeof BannerSectionPlectrumMedia;
|
|
37
|
+
}
|
|
38
|
+
export declare const BannerSectionPlectrum: BannerSectionPlectrumComponent;
|
|
39
|
+
export default BannerSectionPlectrum;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import{jsx as e,jsxs as r}from"react/jsx-runtime";import t,{forwardRef as n,useMemo as a}from"react";import{BannerSectionContent as i}from"../BannerSectionContent/BannerSectionContent.js";import{c}from"../../index-CCUt_dAN.js";import{getBaseValueOrUndefined as s}from"../../utils/breakpoint/responsiveSSR.js";import{BREAKPOINTS as m}from"../../utils/breakpoint/theme/breakpoints.js";import '../../assets/BannerSectionPlectrum.css';const o="_banner-section-plectrum_148yy_1",l="_banner-section-plectrum__inner_148yy_22",d="_banner-section-plectrum__inner--is-mobile-reversed_148yy_33",p="_banner-section-plectrum__content-wrapper_148yy_59",_="_banner-section-plectrum__media-wrapper_148yy_78",u="_banner-section-plectrum-media_148yy_93",y="_banner-section-plectrum-media__image_148yy_111",b="_banner-section-plectrum-media__pictocard-wrapper_148yy_178",h=c("_banner-section-plectrum-media__plectrum-overlay_148yy_145",{variants:{plectrumVariant:{sharkfin:"_banner-section-plectrum-media__plectrum-overlay--plectrum-variant-sharkfin_148yy_168",sharktooth:"_banner-section-plectrum-media__plectrum-overlay--plectrum-variant-sharktooth_148yy_172"}}}),v=({children:t,plectrumVariant:n="sharkfin",src:a,...i})=>{const c=s(a);/* @__PURE__ */
|
|
2
|
+
return r("div",{className:u,...i,children:[
|
|
3
|
+
/* @__PURE__ */r("picture",{className:y,children:["object"==typeof a&&Object.entries(m).toSorted((e,r)=>r[1]-e[1]).map(r=>{const[t,n]=r;return"base"!==t&&a[t]?/* @__PURE__ */e("source",{"data-testid":`banner-section-plectrum-media-source-${t}`,media:`(min-width: ${n}px)`,srcSet:a[t]},t):null}),
|
|
4
|
+
/* @__PURE__ */e("img",{src:c,"data-testid":"banner-section-plectrum-media-image",alt:""})]}),
|
|
5
|
+
/* @__PURE__ */e("svg",{role:"img","aria-hidden":!0,"data-testid":"banner-section-plectrum-media-plectrum-overlay",viewBox:"0 0 1677 1677",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:h({plectrumVariant:n}),children:/* @__PURE__ */e("path",{d:"M1676.67 1676.67H0V0L1676.67 0V1676.67ZM353.326 1.11555C283.916 -3.42414 215.25 35.7074 187.301 95.9813C56.3545 378.22 -103.769 1008.64 126.585 1581.16C150.857 1641.51 202.026 1675.72 266.001 1675.72C273.616 1675.72 281.408 1675.24 289.351 1674.25C1078.71 1576.78 1578.79 1020.94 1649.94 872.37C1678.62 812.449 1689.71 758.544 1650.58 690.268C1597.01 596.788 1031.47 43.8853 353.326 1.11555Z"})}),t&&/* @__PURE__ */e("div",{className:b,children:t})]})},f=c(l,{variants:{isMobileReversed:{true:d,false:null}}}),C=n(({isMobileReversed:n,children:c,...s},m)=>{const l=t.Children.toArray(c),d=a(()=>l.find(e=>e.type===i),l),u=a(()=>l.find(e=>e.type===v),l);/* @__PURE__ */
|
|
6
|
+
return e("section",{className:o,ref:m,...s,children:/* @__PURE__ */r("div",{className:f({isMobileReversed:n}),children:[
|
|
7
|
+
/* @__PURE__ */e("div",{className:p,children:d}),
|
|
8
|
+
/* @__PURE__ */e("div",{className:_,children:u})]})})});C.displayName="BannerSectionPlectrum",i.displayName="BannerSectionPlectrum.Content",C.Content=i,v.displayName="BannerSectionPlectrum.Media",C.Media=v;export{C as BannerSectionPlectrum,v as BannerSectionPlectrumMedia,C as default};
|
|
9
|
+
//# sourceMappingURL=BannerSectionPlectrum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BannerSectionPlectrum.js","sources":["../../../src/components/BannerSectionPlectrum/BannerSectionPlectrum.tsx"],"sourcesContent":["import React, {\n HTMLAttributes,\n ReactElement,\n ReactNode,\n forwardRef,\n useMemo,\n} from 'react';\nimport styles from './BannerSectionPlectrum.module.css';\nimport BannerSectionContent, {\n BannerSectionContentProps,\n} from '../BannerSectionContent';\nimport { cva } from 'class-variance-authority';\nimport {\n getBaseValueOrUndefined,\n ResponsiveValue,\n} from '../../utils/breakpoint/responsiveSSR';\nimport { Breakpoint, BREAKPOINTS } from '../../utils';\n\n// Define `src` explicity with `ResponsiveValue` instead of using `WithResponsiveKeys` to fix the prop disappearing in Storybook sub-components section\nexport interface BannerSectionPlectrumMediaProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'classname' | 'styles'> {\n /**\n * Element positioned on top on the media in the bottom right corner\n */\n children?: ReactNode;\n /**\n * Style of the plectrum overlay\n * @default 'sharktooth'\n */\n plectrumVariant?: 'sharktooth' | 'sharkfin';\n /**\n * **[Responsive]** Media source, recommended aspect ratio: 3:2.\n * Responsive image sources are useful when art directing.\n */\n src: string | ResponsiveValue<string>;\n}\n\nconst plectrumOverlay = cva(\n styles['banner-section-plectrum-media__plectrum-overlay'],\n {\n variants: {\n plectrumVariant: {\n sharkfin:\n styles[\n 'banner-section-plectrum-media__plectrum-overlay--plectrum-variant-sharkfin'\n ],\n sharktooth:\n styles[\n 'banner-section-plectrum-media__plectrum-overlay--plectrum-variant-sharktooth'\n ],\n },\n },\n },\n);\n\nexport const BannerSectionPlectrumMedia = ({\n children,\n plectrumVariant = 'sharkfin',\n src,\n ...rest\n}: BannerSectionPlectrumMediaProps) => {\n const baseSrc = getBaseValueOrUndefined(src);\n\n return (\n <div className={styles['banner-section-plectrum-media']} {...rest}>\n {/* Media element */}\n <picture className={styles['banner-section-plectrum-media__image']}>\n {typeof src === 'object' &&\n Object.entries(BREAKPOINTS)\n .toSorted((a, b) => b[1] - a[1]) // `source` breakpoints need to be rendered in the correct order, largest to smallest\n .map((bp) => {\n const [breakpoint, minWidth] = bp;\n if (breakpoint === 'base' || !src[breakpoint as Breakpoint])\n return null;\n\n return (\n <source\n key={breakpoint}\n data-testid={`banner-section-plectrum-media-source-${breakpoint}`}\n media={`(min-width: ${minWidth}px)`}\n srcSet={src[breakpoint as Breakpoint]}\n />\n );\n })}\n <img\n src={baseSrc}\n data-testid=\"banner-section-plectrum-media-image\"\n alt=\"\"\n />\n </picture>\n {/* Plectrum cutout overlay element */}\n <svg\n role=\"img\" // Role for purely visual svg elements\n aria-hidden\n data-testid=\"banner-section-plectrum-media-plectrum-overlay\"\n viewBox=\"0 0 1677 1677\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={plectrumOverlay({ plectrumVariant })}\n >\n <path d=\"M1676.67 1676.67H0V0L1676.67 0V1676.67ZM353.326 1.11555C283.916 -3.42414 215.25 35.7074 187.301 95.9813C56.3545 378.22 -103.769 1008.64 126.585 1581.16C150.857 1641.51 202.026 1675.72 266.001 1675.72C273.616 1675.72 281.408 1675.24 289.351 1674.25C1078.71 1576.78 1578.79 1020.94 1649.94 872.37C1678.62 812.449 1689.71 758.544 1650.58 690.268C1597.01 596.788 1031.47 43.8853 353.326 1.11555Z\" />\n </svg>\n {children && (\n <div\n className={styles['banner-section-plectrum-media__pictocard-wrapper']}\n >\n {children}\n </div>\n )}\n </div>\n );\n};\n\nexport interface BannerSectionPlectrumProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'className' | 'style'> {\n /**\n * Content displayed in the banner section. Expects `BannerSectionPlectrum.Content`, `BannerSectionPlectrum.Media`\n */\n children?: React.ReactNode;\n /**\n * Reverses layout order of Media and Content on screens below lg breakpoint (1024px)\n */\n isMobileReversed?: boolean;\n}\n\ninterface BannerSectionPlectrumComponent\n extends React.ForwardRefExoticComponent<\n BannerSectionPlectrumProps & React.RefAttributes<HTMLElement>\n > {\n Content: typeof BannerSectionContent;\n Media: typeof BannerSectionPlectrumMedia;\n}\n\nconst bannerSectionPlectrumInner = cva(\n styles['banner-section-plectrum__inner'],\n {\n variants: {\n isMobileReversed: {\n true: styles['banner-section-plectrum__inner--is-mobile-reversed'],\n false: null,\n },\n },\n },\n);\n\nexport const BannerSectionPlectrum = forwardRef<\n HTMLDivElement,\n BannerSectionPlectrumProps\n>(({ isMobileReversed, children, ...rest }, forwardedRef) => {\n /**\n * Media\n */\n const childComponents = React.Children.toArray(children);\n\n const content = useMemo(() => {\n return childComponents.find(\n (child) =>\n (child as ReactElement<BannerSectionContentProps>).type ===\n BannerSectionContent,\n );\n }, childComponents);\n\n const media = useMemo(() => {\n return childComponents.find(\n (child) =>\n (child as ReactElement<BannerSectionPlectrumMediaProps>).type ===\n BannerSectionPlectrumMedia,\n );\n }, childComponents);\n\n return (\n <section\n className={styles['banner-section-plectrum']}\n ref={forwardedRef}\n {...rest}\n >\n <div className={bannerSectionPlectrumInner({ isMobileReversed })}>\n <div className={styles['banner-section-plectrum__content-wrapper']}>\n {content}\n </div>\n <div className={styles['banner-section-plectrum__media-wrapper']}>\n {media}\n </div>\n </div>\n </section>\n );\n}) as BannerSectionPlectrumComponent;\nBannerSectionPlectrum.displayName = 'BannerSectionPlectrum';\n\nBannerSectionContent.displayName = 'BannerSectionPlectrum.Content';\nBannerSectionPlectrum.Content = BannerSectionContent;\n\nBannerSectionPlectrumMedia.displayName = 'BannerSectionPlectrum.Media';\nBannerSectionPlectrum.Media = BannerSectionPlectrumMedia;\n\nexport default BannerSectionPlectrum;\n"],"names":["plectrumOverlay","cva","variants","plectrumVariant","sharkfin","sharktooth","BannerSectionPlectrumMedia","children","src","rest","baseSrc","getBaseValueOrUndefined","className","styles","Object","entries","BREAKPOINTS","toSorted","a","b","map","bp","breakpoint","minWidth","jsx","media","srcSet","alt","role","viewBox","fill","xmlns","d","bannerSectionPlectrumInner","isMobileReversed","true","false","BannerSectionPlectrum","forwardRef","forwardedRef","childComponents","React","Children","toArray","content","useMemo","find","child","type","BannerSectionContent","ref","displayName","Content","Media"],"mappings":"oyBAqCMA,EAAkBC,+DAEtB,CACEC,SAAU,CACRC,gBAAiB,CACfC,iGAIAC,yGASKC,EAA6B,EACxCC,WACAJ,kBAAkB,WAClBK,SACGC,MAEH,MAAMC,EAAUC,EAAwBH;AAExC,SACG,MAAA,CAAII,UAAWC,KAA6CJ,EAE3DF,SAAA;iBAAC,UAAA,CAAQK,UAAWC,EACjBN,SAAA,CAAe,iBAARC,GACNM,OAAOC,QAAQC,GACZC,SAAS,CAACC,EAAGC,IAAMA,EAAE,GAAKD,EAAE,IAC5BE,IAAKC,IACJ,MAAOC,EAAYC,GAAYF,EAC/B,MAAmB,SAAfC,GAA0Bd,EAAIc,kBAIhCE,EAAC,SAAA,CAEC,cAAa,wCAAwCF,IACrDG,MAAO,eAAeF,OACtBG,OAAQlB,EAAIc,IAHPA,GAJA;eAWfE,EAAC,MAAA,CACChB,IAAKE,EACL,cAAY,sCACZiB,IAAI;eAIRH,EAAC,MAAA,CACCI,KAAK,MACL,eAAW,EACX,cAAY,iDACZC,QAAQ,gBACRC,KAAK,OACLC,MAAM,6BACNnB,UAAWZ,EAAgB,CAAEG,oBAE7BI,wBAAAiB,EAAC,OAAA,CAAKQ,EAAE,8YAETzB,kBACCiB,EAAC,MAAA,CACCZ,UAAWC,EAEVN,iBA2BL0B,EAA6BhC,EACjCY,EACA,CACEX,SAAU,CACRgC,iBAAkB,CAChBC,KAAMtB,EACNuB,MAAO,SAMFC,EAAwBC,EAGnC,EAAGJ,mBAAkB3B,cAAaE,GAAQ8B,KAI1C,MAAMC,EAAkBC,EAAMC,SAASC,QAAQpC,GAEzCqC,EAAUC,EAAQ,IACfL,EAAgBM,KACpBC,GACEA,EAAkDC,OACnDC,GAEHT,GAEGf,EAAQoB,EAAQ,IACbL,EAAgBM,KACpBC,GACEA,EAAwDC,OACzD1C,GAEHkC;AAEH,OACEhB,EAAC,UAAA,CACCZ,UAAWC,EACXqC,IAAKX,KACD9B,EAEJF,0BAAC,MAAA,CAAIK,UAAWqB,EAA2B,CAAEC,qBAC3C3B,SAAA;eAAAiB,EAAC,MAAA,CAAIZ,UAAWC,EACbN,SAAAqC;iBAEF,MAAA,CAAIhC,UAAWC,EACbN,SAAAkB,WAMXY,EAAsBc,YAAc,wBAEpCF,EAAqBE,YAAc,gCACnCd,EAAsBe,QAAUH,EAEhC3C,EAA2B6C,YAAc,8BACzCd,EAAsBgB,MAAQ/C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{jsx as o}from"react/jsx-runtime";import{backgroundColorVariants as i}from"../../utils/backgroundColor/backgroundColor.js";import{f as r,a as
|
|
2
|
-
return o(e,{className:[m.box,a({...k,borderWidth:po,borderTopWidth:lo,borderRightWidth:go,borderBottomWidth:mo,borderLeftWidth:so}),J,K,i({backgroundColor:k.backgroundColor,...k}),n({position:v}),...M,...O,...Q,...U,...Z,...$,...oo,...io,...ro,...to,...eo,...ao,...no].filter(Boolean).join(" "),style:fo,"data-testid":w,children:
|
|
1
|
+
import{jsx as o}from"react/jsx-runtime";import{backgroundColorVariants as i}from"../../utils/backgroundColor/backgroundColor.js";import{f as r,a as t}from"../../flex-BJOhaXnU.js";import{p as d,a as e}from"../../padding-nClUzhWp.js";import{borderVariants as a}from"../../utils/border/border.js";import{positionVariants as n}from"../../utils/position/position.js";import{getBaseValueOrUndefined as p,generateResponsiveClasses as l}from"../../utils/breakpoint/responsiveSSR.js";import{responsiveToCssVars as g}from"../../utils/breakpoint/responsiveToCssVars.js";import '../../assets/Box.css';const m={box:"_box_n638f_1"},s=l(t),f=l(e),h=({children:t,as:e="div",width:l,height:h,minHeight:b,zIndex:x,top:u,right:W,bottom:c,left:C,position:v,dataTestId:w="box",overflowWrap:j,wordBreak:B,...k})=>{const T=p(k.justifyContent),R=p(k.flexDirection),y=p(k.gap),G=p(k.rowGap),L=p(k.columnGap),I=p(k.alignItems),H=p(k.display),S=p(k.flexWrap),D=p(k.flexGrow),P=p(k.flexShrink),X=p(k.paddingTop),Y=p(k.paddingRight),_=p(k.paddingBottom),z=p(k.paddingLeft),N=p(k.padding),V=p(k.paddingX),q=p(k.paddingY),A=g(k.maxWidth,{varPrefix:"--box-max-width",normalise:o=>"pageWidth"===o?"var(--alto-section-container-max-width)":o}),E=g(k.maxHeight,{varPrefix:"--box-max-height",normalise:o=>o}),F=g(k.minWidth,{varPrefix:"--box-min-width",normalise:o=>o}),J=r({display:H,justifyContent:T,flexDirection:R,gap:y,rowGap:G,columnGap:L,alignItems:I,flexWrap:S,flexGrow:D,flexShrink:P}),K=d({paddingTop:X,paddingRight:Y,paddingBottom:_,paddingLeft:z,padding:N,paddingX:V,paddingY:q}),M=s(k.justifyContent,"flex-justify-content"),O=s(k.flexDirection,"flex-direction"),Q=s(k.gap,"flex-gap"),U=s(k.rowGap,"flex-row-gap"),Z=s(k.columnGap,"flex-column-gap"),$=s(k.alignItems,"flex-align-items"),oo=f(k.paddingTop,"padding-top"),io=f(k.paddingRight,"padding-right"),ro=f(k.paddingBottom,"padding-bottom"),to=f(k.paddingLeft,"padding-left"),eo=f(k.padding,"padding"),ao=f(k.paddingX,"padding-x"),no=f(k.paddingY,"padding-y"),po=k?.borderWidth||void 0===k.borderColour||"none"===k.borderColour?k.borderWidth:"sm",lo=k?.borderTopWidth||void 0===k.borderTopColour||"none"===k.borderTopColour?k.borderTopWidth:"sm",go=k?.borderRightWidth||void 0===k.borderRightColour||"none"===k.borderRightColour?k.borderRightWidth:"sm",mo=k?.borderBottomWidth||void 0===k.borderBottomColour||"none"===k.borderBottomColour?k.borderBottomWidth:"sm",so=k?.borderLeftWidth||void 0===k.borderLeftColour||"none"===k.borderLeftColour?k.borderLeftWidth:"sm",fo={width:"full"===l?"100%":l,height:"full"===h?"100%":h,minHeight:b,zIndex:x,top:u,right:W,bottom:c,left:C,...A,...F,...E,overflow:k.maxHeight||k.maxWidth?"auto":void 0,overflowWrap:j,wordBreak:B};/* @__PURE__ */
|
|
2
|
+
return o(e,{className:[m.box,a({...k,borderWidth:po,borderTopWidth:lo,borderRightWidth:go,borderBottomWidth:mo,borderLeftWidth:so}),J,K,i({backgroundColor:k.backgroundColor,...k}),n({position:v}),...M,...O,...Q,...U,...Z,...$,...oo,...io,...ro,...to,...eo,...ao,...no].filter(Boolean).join(" "),style:fo,"data-testid":w,children:t})};export{h as Box,h as default};
|
|
3
3
|
//# sourceMappingURL=Box.js.map
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
type OmittedAnchorProps = 'className' | 'style';
|
|
3
|
+
export interface BoxLinkProps extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, OmittedAnchorProps> {
|
|
4
|
+
/**
|
|
5
|
+
* The content to render inside the BoxLink.
|
|
6
|
+
*/
|
|
7
|
+
children: React.ReactNode;
|
|
8
|
+
/**
|
|
9
|
+
* Whether the BoxLink is in a selected state.
|
|
10
|
+
* @default false
|
|
11
|
+
*/
|
|
12
|
+
isSelected?: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Whether the BoxLink is disabled.
|
|
15
|
+
* Prevents navigation, removes href, and reflects aria-disabled.
|
|
16
|
+
* @default false
|
|
17
|
+
*/
|
|
18
|
+
isDisabled?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* The focus ring style.
|
|
21
|
+
* Use 'white' when BoxLink is placed on a dark or coloured background.
|
|
22
|
+
* @default 'default'
|
|
23
|
+
*/
|
|
24
|
+
focusStyle?: 'default' | 'white';
|
|
25
|
+
/**
|
|
26
|
+
* Whether headings (h2–h6) inside the BoxLink should be underlined on hover.
|
|
27
|
+
* @default false
|
|
28
|
+
*/
|
|
29
|
+
underlineHeadingOnHover?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Controls which layer handles CSS styling for interactive states.
|
|
32
|
+
*
|
|
33
|
+
* - 'default' — BoxLink applies all styles including hover, focus, pressed and selected
|
|
34
|
+
* - 'custom' — BoxLink strips back to inline-block only, children own
|
|
35
|
+
* their own styles via the `useBoxLink` hook
|
|
36
|
+
*
|
|
37
|
+
* @default 'default'
|
|
38
|
+
*/
|
|
39
|
+
styleVariant?: 'default' | 'custom';
|
|
40
|
+
/**
|
|
41
|
+
* The target attribute for the link.
|
|
42
|
+
* @default '_self'
|
|
43
|
+
*/
|
|
44
|
+
target?: '_self' | '_blank' | '_parent' | '_top';
|
|
45
|
+
/**
|
|
46
|
+
* Specify custom screen reader text for external links.
|
|
47
|
+
* @default 'opens in a new tab'
|
|
48
|
+
*/
|
|
49
|
+
externalLinkScreenReaderText?: string;
|
|
50
|
+
}
|
|
51
|
+
export declare const BoxLink: React.ForwardRefExoticComponent<BoxLinkProps & React.RefAttributes<HTMLAnchorElement>>;
|
|
52
|
+
export default BoxLink;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{jsx as e,jsxs as i}from"react/jsx-runtime";import{forwardRef as s}from"react";import{useLink as r}from"@react-aria/link";import{useHover as o}from"@react-aria/interactions";import{useFocusRing as d}from"@react-aria/focus";import{useObjectRef as a,mergeProps as t}from"@react-aria/utils";import{focusStyleVariants as l}from"../../utils/focus/focusStyles.js";import{BoxLinkContext as n}from"./BoxLinkContext.js";import{VisuallyHidden as u}from"../VisuallyHidden/VisuallyHidden.js";import '../../assets/BoxLink.css';const c="_box-link_jbtzi_1",f="_box-link--default_jbtzi_8",v="_box-link--underline-heading-on-hover_jbtzi_53",p="_box-link--disabled_jbtzi_61",b="noopener noreferrer",m=s(function({children:s,isSelected:m=!1,isDisabled:h=!1,focusStyle:_="default",underlineHeadingOnHover:k=!1,styleVariant:H="default",target:x="_self",externalLinkScreenReaderText:S="opens in a new tab",href:j,onClick:D,rel:y,...P},g){const F=a(g),V=!!h,z="_blank"===x,C=((e,i)=>e?i?`${b} ${i}`:b:i)(z,y),O={isDisabled:V,href:j},{linkProps:B,isPressed:L}=r(O,F),{hoverProps:$,isHovered:w}=o({isDisabled:V}),{focusProps:N,isFocusVisible:R,isFocused:T}=d(),q="default"===H,A=(({isDefault:e,focusStyle:i,underlineHeadingOnHover:s,disabled:r})=>{const o=[c];return e&&(o.push(f),o.push(l({focusStyle:i})),s&&o.push(v)),r&&o.push(p),o.filter(Boolean).join(" ")})({isDefault:q,focusStyle:_,underlineHeadingOnHover:k,disabled:V}),E=(({isDefault:e,isHovered:i,isFocused:s,isPressed:r,isSelected:o})=>e?{"data-hovered":!!i||void 0,"data-focused":!!s||void 0,"data-pressed":!!r||void 0,"data-selected":!!o||void 0}:{"data-hovered":void 0,"data-focused":void 0,"data-pressed":void 0,"data-selected":void 0})({isDefault:q,isHovered:w,isFocused:T,isPressed:L,isSelected:m});/* @__PURE__ */
|
|
2
|
+
return e(n.Provider,{value:{isHovered:w,isPressed:L,isFocusVisible:R,isDisabled:V,isSelected:m},children:/* @__PURE__ */i("a",{...t(B,$,N,P),ref:F,href:V?void 0:j,target:x,rel:C,"aria-disabled":!!V||void 0,className:A,onClick:e=>{V?e.preventDefault():(B.onClick?.(e),D?.(e))},"data-alto-box-link":"",...E,children:[s,z&&/* @__PURE__ */e(u,{children:S})]})})});export{m as BoxLink,m as default};
|
|
3
|
+
//# sourceMappingURL=BoxLink.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BoxLink.js","sources":["../../../src/components/BoxLink/BoxLink.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { useLink } from '@react-aria/link';\nimport { useHover } from '@react-aria/interactions';\nimport { useFocusRing } from '@react-aria/focus';\nimport { mergeProps, useObjectRef } from '@react-aria/utils';\nimport { focusStyleVariants } from '../../utils/focus/focusStyles';\nimport { BoxLinkContext } from './BoxLinkContext';\nimport VisuallyHidden from '../VisuallyHidden/VisuallyHidden';\nimport styles from './BoxLink.module.css';\nimport type React from 'react';\n\ntype OmittedAnchorProps = 'className' | 'style';\n\nconst EXTERNAL_LINK_REL_TOKENS = 'noopener noreferrer';\n\nconst getMergedRel = (\n isExternalLink: boolean,\n rel: string | undefined,\n): string | undefined => {\n if (!isExternalLink) {\n return rel;\n }\n\n return rel ? `${EXTERNAL_LINK_REL_TOKENS} ${rel}` : EXTERNAL_LINK_REL_TOKENS;\n};\n\ninterface GetClassNameParams {\n isDefault: boolean;\n focusStyle: 'default' | 'white';\n underlineHeadingOnHover: boolean;\n disabled: boolean;\n}\n\nconst getClassName = ({\n isDefault,\n focusStyle,\n underlineHeadingOnHover,\n disabled,\n}: GetClassNameParams): string => {\n const classNames = [styles['box-link']];\n\n if (isDefault) {\n classNames.push(styles['box-link--default']);\n classNames.push(focusStyleVariants({ focusStyle }));\n\n if (underlineHeadingOnHover) {\n classNames.push(styles['box-link--underline-heading-on-hover']);\n }\n }\n\n if (disabled) {\n classNames.push(styles['box-link--disabled']);\n }\n\n return classNames.filter(Boolean).join(' ');\n};\n\ninterface GetInteractionDataAttributesParams {\n isDefault: boolean;\n isHovered: boolean;\n isFocused: boolean;\n isPressed: boolean;\n isSelected: boolean;\n}\n\nconst getInteractionDataAttributes = ({\n isDefault,\n isHovered,\n isFocused,\n isPressed,\n isSelected,\n}: GetInteractionDataAttributesParams) => {\n if (!isDefault) {\n return {\n 'data-hovered': undefined,\n 'data-focused': undefined,\n 'data-pressed': undefined,\n 'data-selected': undefined,\n };\n }\n\n return {\n 'data-hovered': isHovered ? true : undefined,\n 'data-focused': isFocused ? true : undefined,\n 'data-pressed': isPressed ? true : undefined,\n 'data-selected': isSelected ? true : undefined,\n };\n};\n\nexport interface BoxLinkProps\n extends Omit<\n React.AnchorHTMLAttributes<HTMLAnchorElement>,\n OmittedAnchorProps\n > {\n /**\n * The content to render inside the BoxLink.\n */\n children: React.ReactNode;\n /**\n * Whether the BoxLink is in a selected state.\n * @default false\n */\n isSelected?: boolean;\n /**\n * Whether the BoxLink is disabled.\n * Prevents navigation, removes href, and reflects aria-disabled.\n * @default false\n */\n isDisabled?: boolean;\n /**\n * The focus ring style.\n * Use 'white' when BoxLink is placed on a dark or coloured background.\n * @default 'default'\n */\n focusStyle?: 'default' | 'white';\n /**\n * Whether headings (h2–h6) inside the BoxLink should be underlined on hover.\n * @default false\n */\n underlineHeadingOnHover?: boolean;\n /**\n * Controls which layer handles CSS styling for interactive states.\n *\n * - 'default' — BoxLink applies all styles including hover, focus, pressed and selected\n * - 'custom' — BoxLink strips back to inline-block only, children own\n * their own styles via the `useBoxLink` hook\n *\n * @default 'default'\n */\n styleVariant?: 'default' | 'custom';\n /**\n * The target attribute for the link.\n * @default '_self'\n */\n target?: '_self' | '_blank' | '_parent' | '_top';\n /**\n * Specify custom screen reader text for external links.\n * @default 'opens in a new tab'\n */\n externalLinkScreenReaderText?: string;\n}\n\nexport const BoxLink = forwardRef<HTMLAnchorElement, BoxLinkProps>(\n function BoxLink(\n {\n children,\n isSelected = false,\n isDisabled = false,\n focusStyle = 'default',\n underlineHeadingOnHover = false,\n styleVariant = 'default',\n target = '_self',\n externalLinkScreenReaderText = 'opens in a new tab',\n href,\n onClick,\n rel,\n ...restProps\n },\n forwardedRef,\n ) {\n const ref = useObjectRef(forwardedRef);\n\n const disabled = !!isDisabled;\n const isExternalLink = target === '_blank';\n const mergedRel = getMergedRel(isExternalLink, rel);\n\n const ariaLinkProps = { isDisabled: disabled, href };\n const { linkProps, isPressed } = useLink(ariaLinkProps, ref);\n const { hoverProps, isHovered } = useHover({ isDisabled: disabled });\n const { focusProps, isFocusVisible, isFocused } = useFocusRing();\n\n const isDefault = styleVariant === 'default';\n\n const className = getClassName({\n isDefault,\n focusStyle,\n underlineHeadingOnHover,\n disabled,\n });\n\n const interactionDataAttributes = getInteractionDataAttributes({\n isDefault,\n isHovered,\n isFocused,\n isPressed,\n isSelected,\n });\n\n const handleClick = (e: React.MouseEvent<HTMLAnchorElement>) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n // Call React Aria's onClick handler first\n linkProps.onClick?.(e);\n // Then call consumer's onClick\n onClick?.(e);\n };\n\n return (\n <BoxLinkContext.Provider\n value={{\n isHovered,\n isPressed,\n isFocusVisible,\n isDisabled: disabled,\n isSelected,\n }}\n >\n <a\n {...mergeProps(linkProps, hoverProps, focusProps, restProps)}\n ref={ref}\n href={disabled ? undefined : href}\n target={target}\n rel={mergedRel}\n aria-disabled={disabled ? true : undefined}\n className={className}\n onClick={handleClick}\n data-alto-box-link=\"\"\n {...interactionDataAttributes}\n >\n {children}\n {isExternalLink && (\n <VisuallyHidden>{externalLinkScreenReaderText}</VisuallyHidden>\n )}\n </a>\n </BoxLinkContext.Provider>\n );\n },\n);\n\nexport default BoxLink;\n"],"names":["EXTERNAL_LINK_REL_TOKENS","BoxLink","forwardRef","children","isSelected","isDisabled","focusStyle","underlineHeadingOnHover","styleVariant","target","externalLinkScreenReaderText","href","onClick","rel","restProps","forwardedRef","ref","useObjectRef","disabled","isExternalLink","mergedRel","getMergedRel","ariaLinkProps","linkProps","isPressed","useLink","hoverProps","isHovered","useHover","focusProps","isFocusVisible","isFocused","useFocusRing","isDefault","className","classNames","styles","push","focusStyleVariants","filter","Boolean","join","getClassName","interactionDataAttributes","getInteractionDataAttributes","jsx","BoxLinkContext","Provider","value","jsxs","mergeProps","e","preventDefault","VisuallyHidden"],"mappings":"qnBAaMA,EAA2B,sBAiIpBC,EAAUC,EACrB,UACEC,SACEA,EAAAC,WACAA,GAAa,EAAAC,WACbA,GAAa,EAAAC,WACbA,EAAa,UAAAC,wBACbA,GAA0B,EAAAC,aAC1BA,EAAe,UAAAC,OACfA,EAAS,QAAAC,6BACTA,EAA+B,qBAAAC,KAC/BA,EAAAC,QACAA,EAAAC,IACAA,KACGC,GAELC,GAEA,MAAMC,EAAMC,EAAaF,GAEnBG,IAAab,EACbc,EAA4B,WAAXV,EACjBW,EArJW,EACnBD,EACAN,IAEKM,EAIEN,EAAM,GAAGb,KAA4Ba,IAAQb,EAH3Ca,EAgJWQ,CAAaF,EAAgBN,GAEzCS,EAAgB,CAAEjB,WAAYa,EAAUP,SACxCY,UAAEA,EAAAC,UAAWA,GAAcC,EAAQH,EAAeN,IAClDU,WAAEA,YAAYC,GAAcC,EAAS,CAAEvB,WAAYa,KACnDW,WAAEA,EAAAC,eAAYA,EAAAC,UAAgBA,GAAcC,IAE5CC,EAA6B,YAAjBzB,EAEZ0B,EA5IW,GACnBD,YACA3B,aACAC,0BACAW,eAEA,MAAMiB,EAAa,CAACC,GAepB,OAbIH,IACFE,EAAWE,KAAKD,GAChBD,EAAWE,KAAKC,EAAmB,CAAEhC,gBAEjCC,GACF4B,EAAWE,KAAKD,IAIhBlB,GACFiB,EAAWE,KAAKD,GAGXD,EAAWI,OAAOC,SAASC,KAAK,MAuHnBC,CAAa,CAC7BT,YACA3B,aACAC,0BACAW,aAGIyB,EAnH2B,GACnCV,YACAN,YACAI,YACAP,YACApB,gBAEK6B,EASE,CACL,iBAAgBN,QAAmB,EACnC,iBAAgBI,QAAmB,EACnC,iBAAgBP,QAAmB,EACnC,kBAAiBpB,QAAoB,GAZ9B,CACL,oBAAgB,EAChB,oBAAgB,EAChB,oBAAgB,EAChB,qBAAiB,GAuGewC,CAA6B,CAC7DX,YACAN,YACAI,YACAP,YACApB;AAcF,OACEyC,EAACC,EAAeC,SAAf,CACCC,MAAO,CACLrB,YACAH,YACAM,iBACAzB,WAAYa,EACZd,cAGFD,wBAAA8C,EAAC,IAAA,IACKC,EAAW3B,EAAWG,EAAYG,EAAYf,GAClDE,MACAL,KAAMO,OAAW,EAAYP,EAC7BF,SACAI,IAAKO,EACL,kBAAeF,QAAkB,EACjCgB,YACAtB,QA7BeuC,IACfjC,EACFiC,EAAEC,kBAIJ7B,EAAUX,UAAUuC,GAEpBvC,IAAUuC,KAsBN,qBAAmB,MACfR,EAEHxC,SAAA,CAAAA,EACAgB,kBACC0B,EAACQ,EAAA,CAAgBlD,SAAAO,QAK3B"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface BoxLinkContextValue {
|
|
2
|
+
isHovered: boolean;
|
|
3
|
+
isPressed: boolean;
|
|
4
|
+
isFocusVisible: boolean;
|
|
5
|
+
isDisabled: boolean;
|
|
6
|
+
isSelected: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare const BoxLinkContext: import('react').Context<BoxLinkContextValue>;
|
|
9
|
+
/**
|
|
10
|
+
* Consume the BoxLink interaction state within a child component.
|
|
11
|
+
*
|
|
12
|
+
* Returns `isHovered`, `isPressed`, `isFocusVisible`, `isDisabled` and
|
|
13
|
+
* `isSelected` from the nearest parent `BoxLink`. If no `BoxLink` parent
|
|
14
|
+
* exists, all values default to `false` so the component is safe standalone.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* const { isHovered, isPressed, isDisabled } = useBoxLink();
|
|
18
|
+
*
|
|
19
|
+
* @note
|
|
20
|
+
* If using Next.js, any component calling this hook requires client-side
|
|
21
|
+
* rendering. Follow the Alto UI SSR setup guide and import via your
|
|
22
|
+
* `alto-avios.ts` wrapper file.
|
|
23
|
+
*/
|
|
24
|
+
export declare const useBoxLink: () => BoxLinkContextValue;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BoxLinkContext.js","sources":["../../../src/components/BoxLink/BoxLinkContext.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nexport interface BoxLinkContextValue {\n isHovered: boolean;\n isPressed: boolean;\n isFocusVisible: boolean;\n isDisabled: boolean;\n isSelected: boolean;\n}\n\nconst defaultContextValue: BoxLinkContextValue = {\n isHovered: false,\n isPressed: false,\n isFocusVisible: false,\n isDisabled: false,\n isSelected: false,\n};\n\nexport const BoxLinkContext =\n createContext<BoxLinkContextValue>(defaultContextValue);\n\n/**\n * Consume the BoxLink interaction state within a child component.\n *\n * Returns `isHovered`, `isPressed`, `isFocusVisible`, `isDisabled` and\n * `isSelected` from the nearest parent `BoxLink`. If no `BoxLink` parent\n * exists, all values default to `false` so the component is safe standalone.\n *\n * @example\n * const { isHovered, isPressed, isDisabled } = useBoxLink();\n *\n * @note\n * If using Next.js, any component calling this hook requires client-side\n * rendering. Follow the Alto UI SSR setup guide and import via your\n * `alto-avios.ts` wrapper file.\n */\nexport const useBoxLink = (): BoxLinkContextValue => useContext(BoxLinkContext);\n"],"names":["BoxLinkContext","createContext","isHovered","isPressed","isFocusVisible","isDisabled","isSelected","useBoxLink","useContext"],"mappings":"sDAUA,MAQaA,EACXC,EAT+C,CAC/CC,WAAW,EACXC,WAAW,EACXC,gBAAgB,EAChBC,YAAY,EACZC,YAAY,IAqBDC,EAAa,IAA2BC,EAAWR"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|