@frontify/fondue 13.4.4 → 13.4.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/dist/components/ActionMenu/Aria/AriaMenuItem.es.js.map +1 -1
  2. package/dist/components/Breadcrumbs/BreadcrumbItem.es.js +1 -2
  3. package/dist/components/Breadcrumbs/BreadcrumbItem.es.js.map +1 -1
  4. package/dist/components/Breadcrumbs/CurrentBreadcrumbItem.es.js +9 -9
  5. package/dist/components/Breadcrumbs/CurrentBreadcrumbItem.es.js.map +1 -1
  6. package/dist/components/Checkbox/Checkbox.es.js +81 -82
  7. package/dist/components/Checkbox/Checkbox.es.js.map +1 -1
  8. package/dist/components/Checklist/Checklist.es.js.map +1 -1
  9. package/dist/components/EditableText/EditableText.es.js +1 -1
  10. package/dist/components/EditableText/EditableText.es.js.map +1 -1
  11. package/dist/components/FilterableMultiSelect/FilterableMultiSelect.es.js.map +1 -1
  12. package/dist/components/LegacyTooltip/LegacyTooltip.es.js.map +1 -1
  13. package/dist/components/Menu/Menu.es.js.map +1 -1
  14. package/dist/components/Menu/useMenuKeyboardNavigation.es.js.map +1 -1
  15. package/dist/components/MultiSelect/MultiSelect.es.js.map +1 -1
  16. package/dist/components/OrderableList/OrderableList.es.js.map +1 -1
  17. package/dist/components/TextInput/TextInput.es.js.map +1 -1
  18. package/dist/components/Tree/Tree.es.js.map +1 -1
  19. package/dist/components/Tree/TreeItem/TreeItem.es.js +93 -93
  20. package/dist/components/Tree/TreeItem/TreeItem.es.js.map +1 -1
  21. package/dist/components/Tree/TreeItem/TreeItemMultiselect.es.js.map +1 -1
  22. package/dist/components/Tree/utils/useDeepCompareEffect.es.js.map +1 -1
  23. package/dist/hooks/useDropdownAutoHeight.es.js.map +1 -1
  24. package/dist/index.cjs.js +2 -2
  25. package/dist/index.cjs.js.map +1 -1
  26. package/dist/index.umd.js +2 -2
  27. package/dist/index.umd.js.map +1 -1
  28. package/dist/packages/components/style.css +1 -1
  29. package/dist/packages/locales/de-CH.d.ts +2 -0
  30. package/dist/packages/locales/de-CH.js +36 -0
  31. package/dist/packages/locales/de-CH.js.map +1 -0
  32. package/dist/packages/locales/de-DE.d.ts +2 -0
  33. package/dist/packages/locales/de-DE.js +36 -0
  34. package/dist/packages/locales/de-DE.js.map +1 -0
  35. package/dist/packages/locales/en-US.d.ts +31 -0
  36. package/dist/packages/locales/en-US.js +36 -0
  37. package/dist/packages/locales/en-US.js.map +1 -0
  38. package/dist/packages/locales/es-ES.d.ts +2 -0
  39. package/dist/packages/locales/es-ES.js +36 -0
  40. package/dist/packages/locales/es-ES.js.map +1 -0
  41. package/dist/packages/locales/fr-CH.d.ts +2 -0
  42. package/dist/packages/locales/fr-CH.js +36 -0
  43. package/dist/packages/locales/fr-CH.js.map +1 -0
  44. package/dist/packages/locales/fr-FR.d.ts +2 -0
  45. package/dist/packages/locales/fr-FR.js +36 -0
  46. package/dist/packages/locales/fr-FR.js.map +1 -0
  47. package/dist/packages/locales/index.d.ts +12 -0
  48. package/dist/packages/locales/index.js +25 -0
  49. package/dist/packages/locales/index.js.map +1 -0
  50. package/dist/packages/locales/it-CH.d.ts +2 -0
  51. package/dist/packages/locales/it-CH.js +36 -0
  52. package/dist/packages/locales/it-CH.js.map +1 -0
  53. package/dist/packages/locales/it-IT.d.ts +2 -0
  54. package/dist/packages/locales/it-IT.js +36 -0
  55. package/dist/packages/locales/it-IT.js.map +1 -0
  56. package/dist/packages/locales/nl-NL.d.ts +2 -0
  57. package/dist/packages/locales/nl-NL.js +36 -0
  58. package/dist/packages/locales/nl-NL.js.map +1 -0
  59. package/dist/packages/locales/pl-PL.d.ts +2 -0
  60. package/dist/packages/locales/pl-PL.js +36 -0
  61. package/dist/packages/locales/pl-PL.js.map +1 -0
  62. package/dist/packages/locales/pt-PT.d.ts +2 -0
  63. package/dist/packages/locales/pt-PT.js +36 -0
  64. package/dist/packages/locales/pt-PT.js.map +1 -0
  65. package/dist/packages/locales/types.d.ts +9 -0
  66. package/dist/packages/rte/style.css +1 -1
  67. package/dist/utilities/useForwardedRef.es.js.map +1 -1
  68. package/package.json +15 -6
@@ -1 +1 @@
1
- {"version":3,"file":"AriaMenuItem.es.js","sources":["../../../../src/components/ActionMenu/Aria/AriaMenuItem.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { useFocusRing } from '@react-aria/focus';\nimport { useMenuItem } from '@react-aria/menu';\nimport { mergeProps } from '@react-aria/utils';\nimport { type TreeState } from '@react-stately/tree';\nimport { type Node } from '@react-types/shared';\nimport { type ReactElement, useEffect, useRef, useState } from 'react';\n\nimport { type ActionMenuItemType, type ActionMenuSwitchItemType } from '@components/ActionMenu/ActionMenu';\nimport { type MenuItemType } from '@components/Dropdown';\nimport { MenuItem } from '@components/MenuItem/MenuItem';\nimport { Switch } from '@components/Switch/Switch';\nimport { FOCUS_STYLE_INSET } from '@utilities/focusStyle';\nimport { merge } from '@utilities/merge';\n\n/**\n * @deprecated Please use a custom component instead.\n */\nexport type AriaOptionProps = {\n menuItem: MenuItemType | ActionMenuItemType | ActionMenuSwitchItemType;\n node: Node<object>;\n isSelected?: boolean;\n state: TreeState<object>;\n /**\n * @deprecated Use `menuItem.onClick` instead\n * */\n onClick?: () => void;\n};\n\ninterface SwitchObject {\n switchComponent: ReactElement | undefined;\n switchValue: boolean | null;\n toggleSwitch: VoidFunction | null;\n}\n\nconst isActionMenuItem = (\n menuItem: MenuItemType | ActionMenuItemType | ActionMenuSwitchItemType,\n): menuItem is ActionMenuItemType =>\n typeof (menuItem as ActionMenuItemType).onClick !== 'undefined' && typeof menuItem.type === 'undefined';\nconst isActionMenuSwitchItem = (\n menuItem: MenuItemType | ActionMenuItemType | ActionMenuSwitchItemType,\n): menuItem is ActionMenuSwitchItemType =>\n typeof (menuItem as ActionMenuSwitchItemType).onClick !== 'undefined' && menuItem.type === 'switch';\n\nconst useSwitch = (isSwitch: boolean, initialValue: boolean) => {\n const [switchValue, setSwitchValue] = useState<boolean>(initialValue ?? false);\n const [switchObject, setSwitchObject] = useState<SwitchObject>({\n switchComponent: undefined,\n switchValue: null,\n toggleSwitch: null,\n });\n\n useEffect(() => {\n if (isSwitch) {\n const toggleSwitch = () => setSwitchValue(!switchValue);\n const switchComponent = <Switch size=\"small\" mode={switchValue ? 'on' : 'off'} />;\n\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setSwitchObject({\n switchComponent,\n switchValue,\n toggleSwitch,\n });\n }\n }, [isSwitch, switchValue]);\n\n return switchObject;\n};\n\n/**\n * @deprecated Please use a custom component instead.\n */\nexport const AriaMenuItem = ({ menuItem, node, state, isSelected, onClick }: AriaOptionProps): ReactElement => {\n const ref = useRef<HTMLLIElement | null>(null);\n const initialValue = isActionMenuSwitchItem(menuItem) ? menuItem.initialValue : false;\n const {\n switchComponent = undefined,\n switchValue = null,\n toggleSwitch = null,\n } = useSwitch(isActionMenuSwitchItem(menuItem), initialValue);\n\n const { menuItemProps } = useMenuItem(\n {\n ...node,\n onAction: () => {\n if (isActionMenuItem(menuItem)) {\n menuItem.onClick();\n }\n if (isActionMenuSwitchItem(menuItem)) {\n toggleSwitch?.();\n menuItem.onClick(Boolean(!switchValue));\n }\n },\n isDisabled: menuItem?.disabled || false,\n 'aria-label': typeof menuItem?.title === 'string' ? menuItem?.title : 'Menu item',\n },\n state,\n ref,\n );\n const { title, decorator, subtitle, size, style, disabled, selectionIndicator } = menuItem;\n const { isFocusVisible, focusProps } = useFocusRing();\n\n return (\n <li\n {...mergeProps(menuItemProps, focusProps, { onClick: () => onClick?.() })}\n data-test-id=\"menu-item\"\n className={merge([\n 'tw-relative hover:tw-bg-box-neutral-hover tw-list-none tw-outline-none',\n disabled && 'tw-pointer-events-none tw-top-px',\n isFocusVisible && FOCUS_STYLE_INSET,\n ])}\n ref={ref}\n >\n <MenuItem\n title={title}\n decorator={decorator}\n subtitle={subtitle}\n size={size}\n style={style}\n disabled={disabled}\n active={isSelected}\n selectionIndicator={selectionIndicator}\n switchComponent={switchComponent}\n />\n </li>\n );\n};\nAriaMenuItem.displayName = 'FondueAriaMenuItem';\n"],"names":["isActionMenuItem","menuItem","isActionMenuSwitchItem","useSwitch","isSwitch","initialValue","switchValue","setSwitchValue","useState","switchObject","setSwitchObject","useEffect","Switch","AriaMenuItem","node","state","isSelected","onClick","ref","useRef","switchComponent","toggleSwitch","menuItemProps","useMenuItem","title","decorator","subtitle","size","style","disabled","selectionIndicator","isFocusVisible","focusProps","useFocusRing","jsx","mergeProps","merge","FOCUS_STYLE_INSET","MenuItem"],"mappings":";;;;;;;;;AAoCA,MAAMA,IAAmB,CACrBC,MAEA,OAAQA,EAAgC,UAAY,OAAe,OAAOA,EAAS,OAAS,KAC1FC,IAAyB,CAC3BD,MAEA,OAAQA,EAAsC,UAAY,OAAeA,EAAS,SAAS,UAEzFE,IAAY,CAACC,GAAmBC,MAA0B;AAC5D,QAAM,CAACC,GAAaC,CAAc,IAAIC,EAAkBH,KAAgB,EAAK,GACvE,CAACI,GAAcC,CAAe,IAAIF,EAAuB;AAAA,IAC3D,iBAAiB;AAAA,IACjB,aAAa;AAAA,IACb,cAAc;AAAA,EAAA,CACjB;AAED,SAAAG,EAAU,MAAM;AACZ,IAAIP,KAKAM,EAAgB;AAAA,MACZ,mCAJqBE,GAAA,EAAO,MAAK,SAAQ,MAAMN,IAAc,OAAO,OAAO;AAAA,MAK3E,aAAAA;AAAA,MACA,cAPiB,MAAMC,EAAe,CAACD,CAAW;AAAA,IAOlD,CACH;AAAA,EAET,GAAG,CAACF,GAAUE,CAAW,CAAC,GAEnBG;AACX,GAKaI,IAAe,CAAC,EAAE,UAAAZ,GAAU,MAAAa,GAAM,OAAAC,GAAO,YAAAC,GAAY,SAAAC,QAA6C;AAC3G,QAAMC,IAAMC,EAA6B,IAAI,GACvCd,IAAeH,EAAuBD,CAAQ,IAAIA,EAAS,eAAe,IAC1E;AAAA,IACF,iBAAAmB,IAAkB;AAAA,IAClB,aAAAd,IAAc;AAAA,IACd,cAAAe,IAAe;AAAA,EAAA,IACflB,EAAUD,EAAuBD,CAAQ,GAAGI,CAAY,GAEtD,EAAE,eAAAiB,MAAkBC;AAAA,IACtB;AAAA,MACI,GAAGT;AAAA,MACH,UAAU,MAAM;AACZ,QAAId,EAAiBC,CAAQ,KACzBA,EAAS,QAAA,GAETC,EAAuBD,CAAQ,MAC/BoB,KAAA,QAAAA,KACApB,EAAS,QAAgB,CAACK,CAAY;AAAA,MAE9C;AAAA,MACA,aAAYL,KAAA,gBAAAA,EAAU,aAAY;AAAA,MAClC,cAAc,QAAOA,KAAA,gBAAAA,EAAU,UAAU,WAAWA,KAAA,gBAAAA,EAAU,QAAQ;AAAA,IAAA;AAAA,IAE1Ec;AAAA,IACAG;AAAA,EAAA,GAEE,EAAE,OAAAM,GAAO,WAAAC,GAAW,UAAAC,GAAU,MAAAC,GAAM,OAAAC,GAAO,UAAAC,GAAU,oBAAAC,MAAuB7B,GAC5E,EAAE,gBAAA8B,GAAgB,YAAAC,EAAA,IAAeC,EAAA;AAEvC,SACI,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACI,GAAGC,EAAWb,GAAeU,GAAY,EAAE,SAAS,MAAMf,KAAA,gBAAAA,KAAa;AAAA,MACxE,gBAAa;AAAA,MACb,WAAWmB,EAAM;AAAA,QACb;AAAA,QACAP,KAAY;AAAA,QACZE,KAAkBM;AAAA,MAAA,CACrB;AAAA,MACD,KAAAnB;AAAA,MAEA,UAAA,gBAAAgB;AAAA,QAACI;AAAA,QAAA;AAAA,UACG,OAAAd;AAAA,UACA,WAAAC;AAAA,UACA,UAAAC;AAAA,UACA,MAAAC;AAAA,UACA,OAAAC;AAAA,UACA,UAAAC;AAAA,UACA,QAAQb;AAAA,UACR,oBAAAc;AAAA,UACA,iBAAAV;AAAA,QAAA;AAAA,MAAA;AAAA,IACJ;AAAA,EAAA;AAGZ;AACAP,EAAa,cAAc;"}
1
+ {"version":3,"file":"AriaMenuItem.es.js","sources":["../../../../src/components/ActionMenu/Aria/AriaMenuItem.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { useFocusRing } from '@react-aria/focus';\nimport { useMenuItem } from '@react-aria/menu';\nimport { mergeProps } from '@react-aria/utils';\nimport { type TreeState } from '@react-stately/tree';\nimport { type Node } from '@react-types/shared';\nimport { type ReactElement, useEffect, useRef, useState } from 'react';\n\nimport { type ActionMenuItemType, type ActionMenuSwitchItemType } from '@components/ActionMenu/ActionMenu';\nimport { type MenuItemType } from '@components/Dropdown';\nimport { MenuItem } from '@components/MenuItem/MenuItem';\nimport { Switch } from '@components/Switch/Switch';\nimport { FOCUS_STYLE_INSET } from '@utilities/focusStyle';\nimport { merge } from '@utilities/merge';\n\n/**\n * @deprecated Please use a custom component instead.\n */\nexport type AriaOptionProps = {\n menuItem: MenuItemType | ActionMenuItemType | ActionMenuSwitchItemType;\n node: Node<object>;\n isSelected?: boolean;\n state: TreeState<object>;\n /**\n * @deprecated Use `menuItem.onClick` instead\n * */\n onClick?: () => void;\n};\n\ninterface SwitchObject {\n switchComponent: ReactElement | undefined;\n switchValue: boolean | null;\n toggleSwitch: VoidFunction | null;\n}\n\nconst isActionMenuItem = (\n menuItem: MenuItemType | ActionMenuItemType | ActionMenuSwitchItemType,\n): menuItem is ActionMenuItemType =>\n typeof (menuItem as ActionMenuItemType).onClick !== 'undefined' && typeof menuItem.type === 'undefined';\nconst isActionMenuSwitchItem = (\n menuItem: MenuItemType | ActionMenuItemType | ActionMenuSwitchItemType,\n): menuItem is ActionMenuSwitchItemType =>\n typeof (menuItem as ActionMenuSwitchItemType).onClick !== 'undefined' && menuItem.type === 'switch';\n\nconst useSwitch = (isSwitch: boolean, initialValue: boolean) => {\n const [switchValue, setSwitchValue] = useState<boolean>(initialValue ?? false);\n const [switchObject, setSwitchObject] = useState<SwitchObject>({\n switchComponent: undefined,\n switchValue: null,\n toggleSwitch: null,\n });\n\n useEffect(() => {\n if (isSwitch) {\n const toggleSwitch = () => setSwitchValue(!switchValue);\n const switchComponent = <Switch size=\"small\" mode={switchValue ? 'on' : 'off'} />;\n\n // eslint-disable-next-line @eslint-react/set-state-in-effect\n setSwitchObject({\n switchComponent,\n switchValue,\n toggleSwitch,\n });\n }\n }, [isSwitch, switchValue]);\n\n return switchObject;\n};\n\n/**\n * @deprecated Please use a custom component instead.\n */\nexport const AriaMenuItem = ({ menuItem, node, state, isSelected, onClick }: AriaOptionProps): ReactElement => {\n const ref = useRef<HTMLLIElement | null>(null);\n const initialValue = isActionMenuSwitchItem(menuItem) ? menuItem.initialValue : false;\n const {\n switchComponent = undefined,\n switchValue = null,\n toggleSwitch = null,\n } = useSwitch(isActionMenuSwitchItem(menuItem), initialValue);\n\n const { menuItemProps } = useMenuItem(\n {\n ...node,\n onAction: () => {\n if (isActionMenuItem(menuItem)) {\n menuItem.onClick();\n }\n if (isActionMenuSwitchItem(menuItem)) {\n toggleSwitch?.();\n menuItem.onClick(Boolean(!switchValue));\n }\n },\n isDisabled: menuItem?.disabled || false,\n 'aria-label': typeof menuItem?.title === 'string' ? menuItem?.title : 'Menu item',\n },\n state,\n ref,\n );\n const { title, decorator, subtitle, size, style, disabled, selectionIndicator } = menuItem;\n const { isFocusVisible, focusProps } = useFocusRing();\n\n return (\n <li\n {...mergeProps(menuItemProps, focusProps, { onClick: () => onClick?.() })}\n data-test-id=\"menu-item\"\n className={merge([\n 'tw-relative hover:tw-bg-box-neutral-hover tw-list-none tw-outline-none',\n disabled && 'tw-pointer-events-none tw-top-px',\n isFocusVisible && FOCUS_STYLE_INSET,\n ])}\n ref={ref}\n >\n <MenuItem\n title={title}\n decorator={decorator}\n subtitle={subtitle}\n size={size}\n style={style}\n disabled={disabled}\n active={isSelected}\n selectionIndicator={selectionIndicator}\n switchComponent={switchComponent}\n />\n </li>\n );\n};\nAriaMenuItem.displayName = 'FondueAriaMenuItem';\n"],"names":["isActionMenuItem","menuItem","isActionMenuSwitchItem","useSwitch","isSwitch","initialValue","switchValue","setSwitchValue","useState","switchObject","setSwitchObject","useEffect","Switch","AriaMenuItem","node","state","isSelected","onClick","ref","useRef","switchComponent","toggleSwitch","menuItemProps","useMenuItem","title","decorator","subtitle","size","style","disabled","selectionIndicator","isFocusVisible","focusProps","useFocusRing","jsx","mergeProps","merge","FOCUS_STYLE_INSET","MenuItem"],"mappings":";;;;;;;;;AAoCA,MAAMA,IAAmB,CACrBC,MAEA,OAAQA,EAAgC,UAAY,OAAe,OAAOA,EAAS,OAAS,KAC1FC,IAAyB,CAC3BD,MAEA,OAAQA,EAAsC,UAAY,OAAeA,EAAS,SAAS,UAEzFE,IAAY,CAACC,GAAmBC,MAA0B;AAC5D,QAAM,CAACC,GAAaC,CAAc,IAAIC,EAAkBH,KAAgB,EAAK,GACvE,CAACI,GAAcC,CAAe,IAAIF,EAAuB;AAAA,IAC3D,iBAAiB;AAAA,IACjB,aAAa;AAAA,IACb,cAAc;AAAA,EAAA,CACjB;AAED,SAAAG,EAAU,MAAM;AACZ,IAAIP,KAKAM,EAAgB;AAAA,MACZ,mCAJqBE,GAAA,EAAO,MAAK,SAAQ,MAAMN,IAAc,OAAO,OAAO;AAAA,MAK3E,aAAAA;AAAA,MACA,cAPiB,MAAMC,EAAe,CAACD,CAAW;AAAA,IAOlD,CACH;AAAA,EAET,GAAG,CAACF,GAAUE,CAAW,CAAC,GAEnBG;AACX,GAKaI,IAAe,CAAC,EAAE,UAAAZ,GAAU,MAAAa,GAAM,OAAAC,GAAO,YAAAC,GAAY,SAAAC,QAA6C;AAC3G,QAAMC,IAAMC,EAA6B,IAAI,GACvCd,IAAeH,EAAuBD,CAAQ,IAAIA,EAAS,eAAe,IAC1E;AAAA,IACF,iBAAAmB,IAAkB;AAAA,IAClB,aAAAd,IAAc;AAAA,IACd,cAAAe,IAAe;AAAA,EAAA,IACflB,EAAUD,EAAuBD,CAAQ,GAAGI,CAAY,GAEtD,EAAE,eAAAiB,MAAkBC;AAAA,IACtB;AAAA,MACI,GAAGT;AAAA,MACH,UAAU,MAAM;AACZ,QAAId,EAAiBC,CAAQ,KACzBA,EAAS,QAAA,GAETC,EAAuBD,CAAQ,MAC/BoB,KAAA,QAAAA,KACApB,EAAS,QAAgB,CAACK,CAAY;AAAA,MAE9C;AAAA,MACA,aAAYL,KAAA,gBAAAA,EAAU,aAAY;AAAA,MAClC,cAAc,QAAOA,KAAA,gBAAAA,EAAU,UAAU,WAAWA,KAAA,gBAAAA,EAAU,QAAQ;AAAA,IAAA;AAAA,IAE1Ec;AAAA,IACAG;AAAA,EAAA,GAEE,EAAE,OAAAM,GAAO,WAAAC,GAAW,UAAAC,GAAU,MAAAC,GAAM,OAAAC,GAAO,UAAAC,GAAU,oBAAAC,MAAuB7B,GAC5E,EAAE,gBAAA8B,GAAgB,YAAAC,EAAA,IAAeC,EAAA;AAEvC,SACI,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACI,GAAGC,EAAWb,GAAeU,GAAY,EAAE,SAAS,MAAMf,KAAA,gBAAAA,KAAa;AAAA,MACxE,gBAAa;AAAA,MACb,WAAWmB,EAAM;AAAA,QACb;AAAA,QACAP,KAAY;AAAA,QACZE,KAAkBM;AAAA,MAAA,CACrB;AAAA,MACD,KAAAnB;AAAA,MAEA,UAAA,gBAAAgB;AAAA,QAACI;AAAA,QAAA;AAAA,UACG,OAAAd;AAAA,UACA,WAAAC;AAAA,UACA,UAAAC;AAAA,UACA,MAAAC;AAAA,UACA,OAAAC;AAAA,UACA,UAAAC;AAAA,UACA,QAAQb;AAAA,UACR,oBAAAc;AAAA,UACA,iBAAAV;AAAA,QAAA;AAAA,MAAA;AAAA,IACJ;AAAA,EAAA;AAGZ;AACAP,EAAa,cAAc;"}
@@ -51,8 +51,7 @@ const T = () => /* @__PURE__ */ r(
51
51
  ]),
52
52
  "data-test-id": `${d}-item`,
53
53
  children: [
54
- l ?? // eslint-disable-next-line react-hooks/static-components
55
- /* @__PURE__ */ a(t, { ref: n, ...h, className: g, children: [
54
+ l ?? /* @__PURE__ */ a(t, { ref: n, ...h, className: g, children: [
56
55
  p,
57
56
  s
58
57
  ] }),
@@ -1 +1 @@
1
- {"version":3,"file":"BreadcrumbItem.es.js","sources":["../../../src/components/Breadcrumbs/BreadcrumbItem.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { useBreadcrumbItem } from '@react-aria/breadcrumbs';\nimport { useFocusRing } from '@react-aria/focus';\nimport { mergeProps } from '@react-aria/utils';\nimport { type ReactElement, useRef } from 'react';\n\nimport { getItemElementType } from '@utilities/elements';\nimport { FOCUS_STYLE_NO_OFFSET } from '@utilities/focusStyle';\nimport { merge } from '@utilities/merge';\n\nimport { type Breadcrumb } from './Breadcrumbs';\n\nconst Separator = () => (\n <svg\n aria-hidden=\"true\"\n width=\"13\"\n height=\"17\"\n viewBox=\"0 0 13 17\"\n fill=\"none\"\n className=\"tw-stroke-current tw-text-black-20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <line x1=\"3.52447\" y1=\"16.0623\" x2=\"8.46874\" y2=\"0.845385\" />\n </svg>\n);\n\n/*\n * @deprecated This type is deprecated and will be removed in the next major version.\n */\ntype BreadcrumbItemProps = Pick<Breadcrumb, 'label' | 'link' | 'onClick' | 'decorator'> & {\n showSeparator: boolean;\n children?: ReactElement;\n 'data-test-id'?: string;\n};\n\n/**\n * @deprecated This component is deprecated and will be removed in the next major version.\n */\nexport const BreadcrumbItem = ({\n decorator,\n label,\n link,\n onClick,\n showSeparator,\n children,\n 'data-test-id': dataTestId = 'breadcrumb',\n}: BreadcrumbItemProps): ReactElement => {\n const ref = useRef(null);\n\n const Element = getItemElementType(link, onClick);\n const isInteractive = Element !== 'span';\n\n const { itemProps } = useBreadcrumbItem(\n {\n isCurrent: false,\n children: label,\n elementType: Element,\n },\n ref,\n );\n\n const { isFocusVisible, focusProps } = useFocusRing();\n\n const elementTypeProps = {\n a: { href: link },\n button: { onClick, type: 'button' as const },\n span: { tabIndex: -1 },\n };\n const props = isInteractive\n ? mergeProps(itemProps, focusProps, elementTypeProps[Element])\n : elementTypeProps[Element];\n\n const classNames = merge([\n 'tw-flex tw-gap-x-1 tw-items-center tw-leading-4 tw-h-6 tw-whitespace-pre-wrap tw-rounded',\n isInteractive && isFocusVisible && FOCUS_STYLE_NO_OFFSET,\n ]);\n\n return (\n <li\n className={merge([\n 'tw-flex tw-items-center tw-text-text-weak tw-text-xs tw-transition-colors',\n isInteractive && 'hover:tw-text-text',\n ])}\n data-test-id={`${dataTestId}-item`}\n >\n {children ?? (\n // eslint-disable-next-line react-hooks/static-components\n <Element ref={ref} {...props} className={classNames}>\n {decorator}\n {label}\n </Element>\n )}\n {showSeparator && <Separator />}\n </li>\n );\n};\nBreadcrumbItem.displayName = 'FondueBreadcrumbItem';\n"],"names":["Separator","jsx","BreadcrumbItem","decorator","label","link","onClick","showSeparator","children","dataTestId","ref","useRef","Element","getItemElementType","isInteractive","itemProps","useBreadcrumbItem","isFocusVisible","focusProps","useFocusRing","elementTypeProps","props","mergeProps","classNames","merge","FOCUS_STYLE_NO_OFFSET","jsxs"],"mappings":";;;;;;;;AAaA,MAAMA,IAAY,MACd,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACG,eAAY;AAAA,IACZ,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,WAAU;AAAA,IACV,OAAM;AAAA,IAEN,UAAA,gBAAAA,EAAC,UAAK,IAAG,WAAU,IAAG,WAAU,IAAG,WAAU,IAAG,WAAA,CAAW;AAAA,EAAA;AAC/D,GAeSC,IAAiB,CAAC;AAAA,EAC3B,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,SAAAC;AAAA,EACA,eAAAC;AAAA,EACA,UAAAC;AAAA,EACA,gBAAgBC,IAAa;AACjC,MAAyC;AACrC,QAAMC,IAAMC,EAAO,IAAI,GAEjBC,IAAUC,EAAmBR,GAAMC,CAAO,GAC1CQ,IAAgBF,MAAY,QAE5B,EAAE,WAAAG,MAAcC;AAAA,IAClB;AAAA,MACI,WAAW;AAAA,MACX,UAAUZ;AAAA,MACV,aAAaQ;AAAA,IAAA;AAAA,IAEjBF;AAAA,EAAA,GAGE,EAAE,gBAAAO,GAAgB,YAAAC,EAAA,IAAeC,EAAA,GAEjCC,IAAmB;AAAA,IACrB,GAAG,EAAE,MAAMf,EAAA;AAAA,IACX,QAAQ,EAAE,SAAAC,GAAS,MAAM,SAAA;AAAA,IACzB,MAAM,EAAE,UAAU,GAAA;AAAA,EAAG,GAEnBe,IAAQP,IACRQ,EAAWP,GAAWG,GAAYE,EAAiBR,CAAO,CAAC,IAC3DQ,EAAiBR,CAAO,GAExBW,IAAaC,EAAM;AAAA,IACrB;AAAA,IACAV,KAAiBG,KAAkBQ;AAAA,EAAA,CACtC;AAED,SACI,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,WAAWF,EAAM;AAAA,QACb;AAAA,QACAV,KAAiB;AAAA,MAAA,CACpB;AAAA,MACD,gBAAc,GAAGL,CAAU;AAAA,MAE1B,UAAA;AAAA,QAAAD;AAAA,0BAEII,GAAA,EAAQ,KAAAF,GAAW,GAAGW,GAAO,WAAWE,GACpC,UAAA;AAAA,UAAApB;AAAA,UACAC;AAAA,QAAA,GACL;AAAA,QAEHG,uBAAkBP,GAAA,CAAA,CAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGzC;AACAE,EAAe,cAAc;"}
1
+ {"version":3,"file":"BreadcrumbItem.es.js","sources":["../../../src/components/Breadcrumbs/BreadcrumbItem.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { useBreadcrumbItem } from '@react-aria/breadcrumbs';\nimport { useFocusRing } from '@react-aria/focus';\nimport { mergeProps } from '@react-aria/utils';\nimport { type ReactElement, useRef } from 'react';\n\nimport { getItemElementType } from '@utilities/elements';\nimport { FOCUS_STYLE_NO_OFFSET } from '@utilities/focusStyle';\nimport { merge } from '@utilities/merge';\n\nimport { type Breadcrumb } from './Breadcrumbs';\n\nconst Separator = () => (\n <svg\n aria-hidden=\"true\"\n width=\"13\"\n height=\"17\"\n viewBox=\"0 0 13 17\"\n fill=\"none\"\n className=\"tw-stroke-current tw-text-black-20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <line x1=\"3.52447\" y1=\"16.0623\" x2=\"8.46874\" y2=\"0.845385\" />\n </svg>\n);\n\n/*\n * @deprecated This type is deprecated and will be removed in the next major version.\n */\ntype BreadcrumbItemProps = Pick<Breadcrumb, 'label' | 'link' | 'onClick' | 'decorator'> & {\n showSeparator: boolean;\n children?: ReactElement;\n 'data-test-id'?: string;\n};\n\n/**\n * @deprecated This component is deprecated and will be removed in the next major version.\n */\nexport const BreadcrumbItem = ({\n decorator,\n label,\n link,\n onClick,\n showSeparator,\n children,\n 'data-test-id': dataTestId = 'breadcrumb',\n}: BreadcrumbItemProps): ReactElement => {\n const ref = useRef(null);\n\n const Element = getItemElementType(link, onClick);\n const isInteractive = Element !== 'span';\n\n const { itemProps } = useBreadcrumbItem(\n {\n isCurrent: false,\n children: label,\n elementType: Element,\n },\n ref,\n );\n\n const { isFocusVisible, focusProps } = useFocusRing();\n\n const elementTypeProps = {\n a: { href: link },\n button: { onClick, type: 'button' as const },\n span: { tabIndex: -1 },\n };\n const props = isInteractive\n ? mergeProps(itemProps, focusProps, elementTypeProps[Element])\n : elementTypeProps[Element];\n\n const classNames = merge([\n 'tw-flex tw-gap-x-1 tw-items-center tw-leading-4 tw-h-6 tw-whitespace-pre-wrap tw-rounded',\n isInteractive && isFocusVisible && FOCUS_STYLE_NO_OFFSET,\n ]);\n\n return (\n <li\n className={merge([\n 'tw-flex tw-items-center tw-text-text-weak tw-text-xs tw-transition-colors',\n isInteractive && 'hover:tw-text-text',\n ])}\n data-test-id={`${dataTestId}-item`}\n >\n {children ?? (\n <Element ref={ref} {...props} className={classNames}>\n {decorator}\n {label}\n </Element>\n )}\n {showSeparator && <Separator />}\n </li>\n );\n};\nBreadcrumbItem.displayName = 'FondueBreadcrumbItem';\n"],"names":["Separator","jsx","BreadcrumbItem","decorator","label","link","onClick","showSeparator","children","dataTestId","ref","useRef","Element","getItemElementType","isInteractive","itemProps","useBreadcrumbItem","isFocusVisible","focusProps","useFocusRing","elementTypeProps","props","mergeProps","classNames","merge","FOCUS_STYLE_NO_OFFSET","jsxs"],"mappings":";;;;;;;;AAaA,MAAMA,IAAY,MACd,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACG,eAAY;AAAA,IACZ,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,WAAU;AAAA,IACV,OAAM;AAAA,IAEN,UAAA,gBAAAA,EAAC,UAAK,IAAG,WAAU,IAAG,WAAU,IAAG,WAAU,IAAG,WAAA,CAAW;AAAA,EAAA;AAC/D,GAeSC,IAAiB,CAAC;AAAA,EAC3B,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,SAAAC;AAAA,EACA,eAAAC;AAAA,EACA,UAAAC;AAAA,EACA,gBAAgBC,IAAa;AACjC,MAAyC;AACrC,QAAMC,IAAMC,EAAO,IAAI,GAEjBC,IAAUC,EAAmBR,GAAMC,CAAO,GAC1CQ,IAAgBF,MAAY,QAE5B,EAAE,WAAAG,MAAcC;AAAA,IAClB;AAAA,MACI,WAAW;AAAA,MACX,UAAUZ;AAAA,MACV,aAAaQ;AAAA,IAAA;AAAA,IAEjBF;AAAA,EAAA,GAGE,EAAE,gBAAAO,GAAgB,YAAAC,EAAA,IAAeC,EAAA,GAEjCC,IAAmB;AAAA,IACrB,GAAG,EAAE,MAAMf,EAAA;AAAA,IACX,QAAQ,EAAE,SAAAC,GAAS,MAAM,SAAA;AAAA,IACzB,MAAM,EAAE,UAAU,GAAA;AAAA,EAAG,GAEnBe,IAAQP,IACRQ,EAAWP,GAAWG,GAAYE,EAAiBR,CAAO,CAAC,IAC3DQ,EAAiBR,CAAO,GAExBW,IAAaC,EAAM;AAAA,IACrB;AAAA,IACAV,KAAiBG,KAAkBQ;AAAA,EAAA,CACtC;AAED,SACI,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,WAAWF,EAAM;AAAA,QACb;AAAA,QACAV,KAAiB;AAAA,MAAA,CACpB;AAAA,MACD,gBAAc,GAAGL,CAAU;AAAA,MAE1B,UAAA;AAAA,QAAAD,uBACII,GAAA,EAAQ,KAAAF,GAAW,GAAGW,GAAO,WAAWE,GACpC,UAAA;AAAA,UAAApB;AAAA,UACAC;AAAA,QAAA,GACL;AAAA,QAEHG,uBAAkBP,GAAA,CAAA,CAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGzC;AACAE,EAAe,cAAc;"}
@@ -1,8 +1,8 @@
1
- import { jsxs as c } from "react/jsx-runtime";
2
- import { useRef as E, createElement as I } from "react";
1
+ import { jsxs as c, jsx as I } from "react/jsx-runtime";
3
2
  import { useBreadcrumbItem as N } from "@react-aria/breadcrumbs";
4
3
  import { useFocusRing as T } from "@react-aria/focus";
5
4
  import { mergeProps as B } from "@react-aria/utils";
5
+ import { useRef as E } from "react";
6
6
  import { Badge as P } from "../Badge/Badge.es.js";
7
7
  import { getItemElementType as C } from "../../utilities/elements.es.js";
8
8
  import { FOCUS_STYLE_NO_OFFSET as O } from "../../utilities/focusStyle.es.js";
@@ -11,13 +11,13 @@ const S = ({
11
11
  label: r,
12
12
  badges: e,
13
13
  bold: u,
14
- decorator: l,
14
+ decorator: d,
15
15
  link: m,
16
16
  onClick: o,
17
17
  activeInline: s,
18
- "data-test-id": w = "breadcrumb"
18
+ "data-test-id": l = "breadcrumb"
19
19
  }) => {
20
- const n = E(null), t = C(m, o), i = t !== "span", { itemProps: d } = N(
20
+ const n = E(null), t = C(m, o), i = t !== "span", { itemProps: w } = N(
21
21
  {
22
22
  isCurrent: !0,
23
23
  children: r,
@@ -28,7 +28,7 @@ const S = ({
28
28
  a: { href: m },
29
29
  button: { onClick: o, type: "button" },
30
30
  span: { tabIndex: -1 }
31
- }, { isFocusVisible: f, focusProps: x } = T(), b = i ? B(d, x, p[t]) : p[t], h = a([
31
+ }, { isFocusVisible: f, focusProps: x } = T(), b = i ? B(w, x, p[t]) : p[t], h = a([
32
32
  "tw-flex tw-gap-x-1 tw-items-center tw-leading-4 tw-h-6 tw-whitespace-pre-wrap tw-font-medium tw-rounded",
33
33
  u && "tw-font-bold",
34
34
  s && "tw-text-xs",
@@ -41,13 +41,13 @@ const S = ({
41
41
  "tw-align-middle tw-gap-x-1 tw-text-m tw-text-text tw-items-center",
42
42
  s ? "tw-flex tw-items-center" : "tw-w-full tw-inline-flex"
43
43
  ]),
44
- "data-test-id": `${w}-item`,
44
+ "data-test-id": `${l}-item`,
45
45
  children: [
46
46
  /* @__PURE__ */ c(t, { ref: n, ...b, className: h, children: [
47
- l,
47
+ d,
48
48
  r
49
49
  ] }),
50
- e == null ? void 0 : e.map(({ children: g, ...y }, F) => /* @__PURE__ */ I(P, { ...y, key: `breadcrumb-badge-${F}` }, g))
50
+ e == null ? void 0 : e.map(({ children: g, ...F }, y) => /* @__PURE__ */ I(P, { ...F, children: g }, `breadcrumb-badge-${y}`))
51
51
  ]
52
52
  }
53
53
  );
@@ -1 +1 @@
1
- {"version":3,"file":"CurrentBreadcrumbItem.es.js","sources":["../../../src/components/Breadcrumbs/CurrentBreadcrumbItem.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { useBreadcrumbItem } from '@react-aria/breadcrumbs';\nimport { useFocusRing } from '@react-aria/focus';\nimport { mergeProps } from '@react-aria/utils';\nimport { type ReactElement, useRef } from 'react';\n\nimport { Badge } from '@components/Badge/Badge';\nimport { getItemElementType } from '@utilities/elements';\nimport { FOCUS_STYLE_NO_OFFSET } from '@utilities/focusStyle';\nimport { merge } from '@utilities/merge';\n\nimport { type Breadcrumb } from './Breadcrumbs';\n\ntype CurrentBreadcrumbItemProps = Breadcrumb;\n\n/**\n * @deprecated This component is deprecated and will be removed in the next major version.\n */\nexport const CurrentBreadcrumbItem = ({\n label,\n badges,\n bold,\n decorator,\n link,\n onClick,\n activeInline,\n 'data-test-id': dataTestId = 'breadcrumb',\n}: CurrentBreadcrumbItemProps): ReactElement => {\n const ref = useRef(null);\n const Element = getItemElementType(link, onClick);\n const isInteractive = Element !== 'span';\n const { itemProps } = useBreadcrumbItem(\n {\n isCurrent: true,\n children: label,\n elementType: Element,\n },\n ref,\n );\n\n const elementTypeProps = {\n a: { href: link },\n button: { onClick, type: 'button' as const },\n span: { tabIndex: -1 },\n };\n\n const { isFocusVisible, focusProps } = useFocusRing();\n const props = isInteractive\n ? mergeProps(itemProps, focusProps, elementTypeProps[Element])\n : elementTypeProps[Element];\n\n const classNames = merge([\n 'tw-flex tw-gap-x-1 tw-items-center tw-leading-4 tw-h-6 tw-whitespace-pre-wrap tw-font-medium tw-rounded',\n bold && 'tw-font-bold',\n activeInline && 'tw-text-xs',\n isInteractive && isFocusVisible && FOCUS_STYLE_NO_OFFSET,\n ]);\n\n return (\n <li\n className={merge([\n 'tw-align-middle tw-gap-x-1 tw-text-m tw-text-text tw-items-center',\n activeInline ? 'tw-flex tw-items-center' : 'tw-w-full tw-inline-flex',\n ])}\n data-test-id={`${dataTestId}-item`}\n >\n {/* eslint-disable-next-line react-hooks/static-components */}\n <Element ref={ref} {...props} className={classNames}>\n {decorator}\n {label}\n </Element>\n {badges?.map(({ children: badge, ...props }, index) => (\n <Badge {...props} key={`breadcrumb-badge-${index}`}>\n {badge}\n </Badge>\n ))}\n </li>\n );\n};\nCurrentBreadcrumbItem.displayName = 'FondueCurrentBreadcrumbItem';\n"],"names":["CurrentBreadcrumbItem","label","badges","bold","decorator","link","onClick","activeInline","dataTestId","ref","useRef","Element","getItemElementType","isInteractive","itemProps","useBreadcrumbItem","elementTypeProps","isFocusVisible","focusProps","useFocusRing","props","mergeProps","classNames","merge","FOCUS_STYLE_NO_OFFSET","jsxs","badge","index","createElement","Badge"],"mappings":";;;;;;;;;AAmBO,MAAMA,IAAwB,CAAC;AAAA,EAClC,OAAAC;AAAA,EACA,QAAAC;AAAA,EACA,MAAAC;AAAA,EACA,WAAAC;AAAA,EACA,MAAAC;AAAA,EACA,SAAAC;AAAA,EACA,cAAAC;AAAA,EACA,gBAAgBC,IAAa;AACjC,MAAgD;AAC5C,QAAMC,IAAMC,EAAO,IAAI,GACjBC,IAAUC,EAAmBP,GAAMC,CAAO,GAC1CO,IAAgBF,MAAY,QAC5B,EAAE,WAAAG,MAAcC;AAAA,IAClB;AAAA,MACI,WAAW;AAAA,MACX,UAAUd;AAAA,MACV,aAAaU;AAAA,IAAA;AAAA,IAEjBF;AAAA,EAAA,GAGEO,IAAmB;AAAA,IACrB,GAAG,EAAE,MAAMX,EAAA;AAAA,IACX,QAAQ,EAAE,SAAAC,GAAS,MAAM,SAAA;AAAA,IACzB,MAAM,EAAE,UAAU,GAAA;AAAA,EAAG,GAGnB,EAAE,gBAAAW,GAAgB,YAAAC,EAAA,IAAeC,EAAA,GACjCC,IAAQP,IACRQ,EAAWP,GAAWI,GAAYF,EAAiBL,CAAO,CAAC,IAC3DK,EAAiBL,CAAO,GAExBW,IAAaC,EAAM;AAAA,IACrB;AAAA,IACApB,KAAQ;AAAA,IACRI,KAAgB;AAAA,IAChBM,KAAiBI,KAAkBO;AAAA,EAAA,CACtC;AAED,SACI,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,WAAWF,EAAM;AAAA,QACb;AAAA,QACAhB,IAAe,4BAA4B;AAAA,MAAA,CAC9C;AAAA,MACD,gBAAc,GAAGC,CAAU;AAAA,MAG3B,UAAA;AAAA,QAAA,gBAAAiB,EAACd,GAAA,EAAQ,KAAAF,GAAW,GAAGW,GAAO,WAAWE,GACpC,UAAA;AAAA,UAAAlB;AAAA,UACAH;AAAA,QAAA,GACL;AAAA,QACCC,KAAA,gBAAAA,EAAQ,IAAI,CAAC,EAAE,UAAUwB,GAAO,GAAGN,EAAAA,GAASO,MACzC,gBAAAC,EAACC,GAAA,EAAO,GAAGT,GAAO,KAAK,oBAAoBO,CAAK,GAAA,GAC3CD,CACL;AAAA,MACH;AAAA,IAAA;AAAA,EAAA;AAGb;AACA1B,EAAsB,cAAc;"}
1
+ {"version":3,"file":"CurrentBreadcrumbItem.es.js","sources":["../../../src/components/Breadcrumbs/CurrentBreadcrumbItem.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { useBreadcrumbItem } from '@react-aria/breadcrumbs';\nimport { useFocusRing } from '@react-aria/focus';\nimport { mergeProps } from '@react-aria/utils';\nimport { type ReactElement, useRef } from 'react';\n\nimport { Badge } from '@components/Badge/Badge';\nimport { getItemElementType } from '@utilities/elements';\nimport { FOCUS_STYLE_NO_OFFSET } from '@utilities/focusStyle';\nimport { merge } from '@utilities/merge';\n\nimport { type Breadcrumb } from './Breadcrumbs';\n\ntype CurrentBreadcrumbItemProps = Breadcrumb;\n\n/**\n * @deprecated This component is deprecated and will be removed in the next major version.\n */\nexport const CurrentBreadcrumbItem = ({\n label,\n badges,\n bold,\n decorator,\n link,\n onClick,\n activeInline,\n 'data-test-id': dataTestId = 'breadcrumb',\n}: CurrentBreadcrumbItemProps): ReactElement => {\n const ref = useRef(null);\n const Element = getItemElementType(link, onClick);\n const isInteractive = Element !== 'span';\n const { itemProps } = useBreadcrumbItem(\n {\n isCurrent: true,\n children: label,\n elementType: Element,\n },\n ref,\n );\n\n const elementTypeProps = {\n a: { href: link },\n button: { onClick, type: 'button' as const },\n span: { tabIndex: -1 },\n };\n\n const { isFocusVisible, focusProps } = useFocusRing();\n const props = isInteractive\n ? mergeProps(itemProps, focusProps, elementTypeProps[Element])\n : elementTypeProps[Element];\n\n const classNames = merge([\n 'tw-flex tw-gap-x-1 tw-items-center tw-leading-4 tw-h-6 tw-whitespace-pre-wrap tw-font-medium tw-rounded',\n bold && 'tw-font-bold',\n activeInline && 'tw-text-xs',\n isInteractive && isFocusVisible && FOCUS_STYLE_NO_OFFSET,\n ]);\n\n return (\n <li\n className={merge([\n 'tw-align-middle tw-gap-x-1 tw-text-m tw-text-text tw-items-center',\n activeInline ? 'tw-flex tw-items-center' : 'tw-w-full tw-inline-flex',\n ])}\n data-test-id={`${dataTestId}-item`}\n >\n <Element ref={ref} {...props} className={classNames}>\n {decorator}\n {label}\n </Element>\n {badges?.map(({ children: badge, ...props }, index) => (\n <Badge key={`breadcrumb-badge-${index}`} {...props}>\n {badge}\n </Badge>\n ))}\n </li>\n );\n};\nCurrentBreadcrumbItem.displayName = 'FondueCurrentBreadcrumbItem';\n"],"names":["CurrentBreadcrumbItem","label","badges","bold","decorator","link","onClick","activeInline","dataTestId","ref","useRef","Element","getItemElementType","isInteractive","itemProps","useBreadcrumbItem","elementTypeProps","isFocusVisible","focusProps","useFocusRing","props","mergeProps","classNames","merge","FOCUS_STYLE_NO_OFFSET","jsxs","badge","index","jsx","Badge"],"mappings":";;;;;;;;;AAmBO,MAAMA,IAAwB,CAAC;AAAA,EAClC,OAAAC;AAAA,EACA,QAAAC;AAAA,EACA,MAAAC;AAAA,EACA,WAAAC;AAAA,EACA,MAAAC;AAAA,EACA,SAAAC;AAAA,EACA,cAAAC;AAAA,EACA,gBAAgBC,IAAa;AACjC,MAAgD;AAC5C,QAAMC,IAAMC,EAAO,IAAI,GACjBC,IAAUC,EAAmBP,GAAMC,CAAO,GAC1CO,IAAgBF,MAAY,QAC5B,EAAE,WAAAG,MAAcC;AAAA,IAClB;AAAA,MACI,WAAW;AAAA,MACX,UAAUd;AAAA,MACV,aAAaU;AAAA,IAAA;AAAA,IAEjBF;AAAA,EAAA,GAGEO,IAAmB;AAAA,IACrB,GAAG,EAAE,MAAMX,EAAA;AAAA,IACX,QAAQ,EAAE,SAAAC,GAAS,MAAM,SAAA;AAAA,IACzB,MAAM,EAAE,UAAU,GAAA;AAAA,EAAG,GAGnB,EAAE,gBAAAW,GAAgB,YAAAC,EAAA,IAAeC,EAAA,GACjCC,IAAQP,IACRQ,EAAWP,GAAWI,GAAYF,EAAiBL,CAAO,CAAC,IAC3DK,EAAiBL,CAAO,GAExBW,IAAaC,EAAM;AAAA,IACrB;AAAA,IACApB,KAAQ;AAAA,IACRI,KAAgB;AAAA,IAChBM,KAAiBI,KAAkBO;AAAA,EAAA,CACtC;AAED,SACI,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,WAAWF,EAAM;AAAA,QACb;AAAA,QACAhB,IAAe,4BAA4B;AAAA,MAAA,CAC9C;AAAA,MACD,gBAAc,GAAGC,CAAU;AAAA,MAE3B,UAAA;AAAA,QAAA,gBAAAiB,EAACd,GAAA,EAAQ,KAAAF,GAAW,GAAGW,GAAO,WAAWE,GACpC,UAAA;AAAA,UAAAlB;AAAA,UACAH;AAAA,QAAA,GACL;AAAA,QACCC,KAAA,gBAAAA,EAAQ,IAAI,CAAC,EAAE,UAAUwB,GAAO,GAAGN,EAAAA,GAASO,MACzC,gBAAAC,EAACC,KAAyC,GAAGT,GACxC,eADO,oBAAoBO,CAAK,EAErC;AAAA,MACH;AAAA,IAAA;AAAA,EAAA;AAGb;AACA3B,EAAsB,cAAc;"}
@@ -1,14 +1,14 @@
1
- import { jsx as r, jsxs as p } from "react/jsx-runtime";
2
- import { IconMinus as K, IconCheckMark as Q } from "@frontify/fondue-icons";
3
- import { useCheckbox as V } from "@react-aria/checkbox";
4
- import { useFocusRing as Z } from "@react-aria/focus";
5
- import { mergeProps as q } from "@react-aria/utils";
6
- import { useToggleState as R } from "@react-stately/toggle";
7
- import { forwardRef as T, useState as k, useRef as O, useEffect as y, useCallback as ee } from "react";
1
+ import { jsx as r, jsxs as g } from "react/jsx-runtime";
2
+ import { IconMinus as J, IconCheckMark as K } from "@frontify/fondue-icons";
3
+ import { useCheckbox as Q } from "@react-aria/checkbox";
4
+ import { useFocusRing as V } from "@react-aria/focus";
5
+ import { mergeProps as Z } from "@react-aria/utils";
6
+ import { useToggleState as q } from "@react-stately/toggle";
7
+ import { forwardRef as T, useState as b, useRef as O, useEffect as y, useCallback as ee } from "react";
8
8
  import { InputLabel as te } from "../InputLabel/InputLabel.es.js";
9
9
  import { useMemoizedId as re } from "../../hooks/useMemoizedId.es.js";
10
10
  import { FOCUS_STYLE as ne } from "../../utilities/focusStyle.es.js";
11
- import { merge as s } from "../../utilities/merge.es.js";
11
+ import { merge as o } from "../../utilities/merge.es.js";
12
12
  import { useForwardedRef as oe } from "../../utilities/useForwardedRef.es.js";
13
13
  var se = /* @__PURE__ */ ((e) => (e.Checked = "Checked", e.Unchecked = "Unchecked", e.Mixed = "Mixed", e))(se || {}), ie = /* @__PURE__ */ ((e) => (e.Default = "Default", e.Weak = "Weak", e.Strong = "Strong", e))(ie || {}), le = /* @__PURE__ */ ((e) => (e.Default = "Default", e.Large = "Large", e.XLarge = "XLarge", e))(le || {});
14
14
  const ae = (e) => e === "Checked" || e === "Mixed", E = "tw-bg-box-selected-strong tw-text-box-selected-strong-inverse hover:tw-bg-box-selected-strong-hover", ce = {
@@ -21,136 +21,135 @@ const ae = (e) => e === "Checked" || e === "Mixed", E = "tw-bg-box-selected-stro
21
21
  XLarge: "tw-h-8 tw-w-8"
22
22
  }, de = ({
23
23
  id: e,
24
- emphasis: C = "Default",
25
- size: L = "Default",
26
- disabled: i,
27
- required: b,
28
- label: o,
29
- hideLabel: v,
24
+ emphasis: v = "Default",
25
+ size: p = "Default",
26
+ disabled: s,
27
+ required: x,
28
+ label: n,
29
+ hideLabel: h,
30
30
  tooltip: S,
31
- helperText: l,
32
- "aria-label": M,
31
+ helperText: i,
32
+ "aria-label": k,
33
33
  value: W,
34
34
  groupInputProps: $,
35
35
  onChange: U,
36
- state: a = "Unchecked",
37
- "data-test-id": c = "checkbox"
38
- }, X) => {
39
- const h = re(e), t = oe(X), { focusProps: j } = Z(), z = R({
40
- onChange: i ? void 0 : U,
41
- isSelected: a === "Checked"
36
+ state: l = "Unchecked",
37
+ "data-test-id": a = "checkbox"
38
+ }, R) => {
39
+ const f = re(e), c = oe(R), { focusProps: X } = V(), j = q({
40
+ onChange: s ? void 0 : U,
41
+ isSelected: l === "Checked"
42
42
  /* Checked */
43
- }), [I, D] = k(), w = O(null), d = O(null), [P, H] = k(!1), [Y, _] = k(!1), N = (n) => {
44
- n.key === "Tab" && D(!0);
45
- }, F = () => {
46
- D(!1);
43
+ }), [z, C] = b(), w = O(null), d = O(null), [I, P] = b(!1), [H, Y] = b(!1), L = (t) => {
44
+ t.key === "Tab" && C(!0);
45
+ }, M = () => {
46
+ C(!1);
47
47
  };
48
48
  y(() => {
49
- var n, f;
50
- return (n = t == null ? void 0 : t.current) == null || n.addEventListener("keyup", N), (f = t == null ? void 0 : t.current) == null || f.addEventListener("blur", F), () => {
51
- var m, x;
52
- (m = t == null ? void 0 : t.current) == null || m.removeEventListener("keyup", N), (x = t == null ? void 0 : t.current) == null || x.removeEventListener("blur", F);
49
+ const t = c == null ? void 0 : c.current;
50
+ return t == null || t.addEventListener("keyup", L), t == null || t.addEventListener("blur", M), () => {
51
+ t == null || t.removeEventListener("keyup", L), t == null || t.removeEventListener("blur", M);
53
52
  };
54
53
  }, []);
55
- const { inputProps: A } = V(
54
+ const { inputProps: _ } = Q(
56
55
  {
57
- isDisabled: i,
58
- isRequired: b,
59
- isIndeterminate: a === "Mixed",
60
- "aria-label": M,
56
+ isDisabled: s,
57
+ isRequired: x,
58
+ isIndeterminate: l === "Mixed",
59
+ "aria-label": k,
61
60
  value: W
62
61
  },
63
- z,
64
- t
65
- ), B = {
66
- Checked: /* @__PURE__ */ r(Q, { size: L === "XLarge" ? 24 : 16 }),
67
- Mixed: /* @__PURE__ */ r(K, {}),
62
+ j,
63
+ c
64
+ ), A = {
65
+ Checked: /* @__PURE__ */ r(K, { size: p === "XLarge" ? 24 : 16 }),
66
+ Mixed: /* @__PURE__ */ r(J, {}),
68
67
  Unchecked: null
69
- }, g = ae(a), G = s([
68
+ }, m = ae(l), B = o([
70
69
  "tw-bg-box-disabled tw-pointer-events-none tw-text-box-disabled-inverse tw-border-line-strong",
71
- g && "tw-text-box-disabled-inverse tw-border-line-strong"
72
- ]), J = g ? ce[C] : s([
70
+ m && "tw-text-box-disabled-inverse tw-border-line-strong"
71
+ ]), G = m ? ce[v] : o([
73
72
  "tw-bg-base hover:tw-bg-box-neutral",
74
- C === "Strong" ? "tw-border-2 tw-border-box-selected-strong" : "tw-border tw-border-line-xx-strong"
73
+ v === "Strong" ? "tw-border-2 tw-border-box-selected-strong" : "tw-border tw-border-line-xx-strong"
75
74
  ]), u = ee(() => {
76
- var n, f, m, x;
77
- w.current && H(((n = w.current) == null ? void 0 : n.scrollWidth) > ((f = w.current) == null ? void 0 : f.clientWidth)), d.current && _(
78
- ((m = d.current) == null ? void 0 : m.scrollWidth) > ((x = d.current) == null ? void 0 : x.clientWidth)
75
+ var t, D, N, F;
76
+ w.current && P(((t = w.current) == null ? void 0 : t.scrollWidth) > ((D = w.current) == null ? void 0 : D.clientWidth)), d.current && Y(
77
+ ((N = d.current) == null ? void 0 : N.scrollWidth) > ((F = d.current) == null ? void 0 : F.clientWidth)
79
78
  );
80
79
  }, [w, d]);
81
80
  return y(() => {
82
- if (!(!o && !l || v))
81
+ if (!(!n && !i || h))
83
82
  return u(), window.removeEventListener("resize", u), window.addEventListener("resize", u), () => {
84
83
  window.removeEventListener("resize", u);
85
84
  };
86
- }, [o, l, v, u]), /* @__PURE__ */ r("div", { className: "tw-gap-1 tw-transition-colors tw-w-full", "data-test-id": c, children: /* @__PURE__ */ r("div", { className: s(["tw-inline-flex tw-flex-row tw-rounded tw-w-full", I ? ne : ""]), children: /* @__PURE__ */ r(
85
+ }, [n, i, h, u]), /* @__PURE__ */ r("div", { className: "tw-gap-1 tw-transition-colors tw-w-full", "data-test-id": a, children: /* @__PURE__ */ r("div", { className: o(["tw-inline-flex tw-flex-row tw-rounded tw-w-full", z ? ne : ""]), children: /* @__PURE__ */ r(
87
86
  te,
88
87
  {
89
- id: `${h}-label`,
90
- disabled: i,
88
+ id: `${f}-label`,
89
+ disabled: s,
91
90
  clickable: !0,
92
- htmlFor: h,
91
+ htmlFor: f,
93
92
  tooltip: S,
94
- required: b,
95
- bold: g,
96
- children: /* @__PURE__ */ p("span", { className: "tw-flex tw-items-center tw-whitespace-nowrap", children: [
97
- /* @__PURE__ */ p("span", { className: "tw-inline-flex", children: [
93
+ required: x,
94
+ bold: m,
95
+ children: /* @__PURE__ */ g("span", { className: "tw-flex tw-items-center tw-whitespace-nowrap", children: [
96
+ /* @__PURE__ */ g("span", { className: "tw-inline-flex", children: [
98
97
  /* @__PURE__ */ r(
99
98
  "input",
100
99
  {
101
- ...q($ || A, j),
102
- id: h,
103
- ref: t,
100
+ ...Z($ || _, X),
101
+ id: f,
102
+ ref: c,
104
103
  className: "tw-sr-only",
105
- "data-test-id": `${c}-input`,
104
+ "data-test-id": `${a}-input`,
106
105
  role: "checkbox",
107
- "aria-checked": a === "Checked",
108
- required: b,
109
- "aria-label": M,
110
- "aria-labelledby": o ? `${h}-label` : void 0
106
+ "aria-checked": l === "Checked",
107
+ required: x,
108
+ "aria-label": k,
109
+ "aria-labelledby": n ? `${f}-label` : void 0
111
110
  }
112
111
  ),
113
112
  /* @__PURE__ */ r(
114
113
  "span",
115
114
  {
116
- "data-test-id": `${c}-icon-box`,
115
+ "data-test-id": `${a}-icon-box`,
117
116
  "aria-hidden": "true",
118
- className: s([
117
+ className: o([
119
118
  "tw-leading-3 tw-relative tw-flex tw-items-center tw-justify-center tw-rounded tw-shrink-0 tw-flex-none",
120
- we[L],
121
- i ? G : J
119
+ we[p],
120
+ s ? B : G
122
121
  ]),
123
- children: B[a]
122
+ children: A[l]
124
123
  }
125
124
  )
126
125
  ] }),
127
- !v && /* @__PURE__ */ p("span", { className: "tw-inline-flex tw-flex-col tw-min-w-0 tw-ml-1.5", children: [
128
- o && /* @__PURE__ */ r(
126
+ !h && /* @__PURE__ */ g("span", { className: "tw-inline-flex tw-flex-col tw-min-w-0 tw-ml-1.5", children: [
127
+ n && /* @__PURE__ */ r(
129
128
  "span",
130
129
  {
131
130
  ref: w,
132
- "data-test-id": `${c}-label`,
133
- className: s([
131
+ "data-test-id": `${a}-label`,
132
+ className: o([
134
133
  "tw-text-ellipsis tw-overflow-hidden",
135
134
  "tw-text-xs tw-select-none hover:tw-cursor-pointer hover:tw-text-black dark:hover:tw-text-white group-hover:tw-text-black dark:group-hover:tw-text-white",
136
- g && "tw-font-medium"
135
+ m && "tw-font-medium"
137
136
  ]),
138
- title: P ? o : void 0,
139
- children: o
137
+ title: I ? n : void 0,
138
+ children: n
140
139
  }
141
140
  ),
142
- l && /* @__PURE__ */ r(
141
+ i && /* @__PURE__ */ r(
143
142
  "span",
144
143
  {
145
144
  ref: d,
146
- "data-test-id": `${c}-helper-text`,
147
- className: s([
145
+ "data-test-id": `${a}-helper-text`,
146
+ className: o([
148
147
  "tw-text-ellipsis tw-overflow-hidden",
149
148
  "tw-font-sans tw-text-xs tw-font-normal",
150
- i ? "text-disabled" : "tw-text-text-weak"
149
+ s ? "text-disabled" : "tw-text-text-weak"
151
150
  ]),
152
- title: Y ? l : void 0,
153
- children: l
151
+ title: H ? i : void 0,
152
+ children: i
154
153
  }
155
154
  )
156
155
  ] })
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.es.js","sources":["../../../src/components/Checkbox/Checkbox.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { IconCheckMark, IconMinus } from '@frontify/fondue-icons';\nimport { useCheckbox } from '@react-aria/checkbox';\nimport { useFocusRing } from '@react-aria/focus';\nimport { mergeProps } from '@react-aria/utils';\nimport { useToggleState } from '@react-stately/toggle';\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n useState,\n type ForwardRefRenderFunction,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\n\nimport { InputLabel, type InputLabelTooltipProps } from '@components/InputLabel/InputLabel';\nimport { useMemoizedId } from '@hooks/useMemoizedId';\nimport { FOCUS_STYLE } from '@utilities/focusStyle';\nimport { merge } from '@utilities/merge';\nimport { useForwardedRef } from '@utilities/useForwardedRef';\n\n/**\n * @deprecated Use `Checkbox` from `@frontify/fondue/components` instead. Also check {@link https://github.com/Frontify/fondue/blob/main/packages/components/MIGRATING.md#checkbox the migration guide}.\n */\nexport enum CheckboxState {\n Checked = 'Checked',\n Unchecked = 'Unchecked',\n Mixed = 'Mixed',\n}\n\n/**\n * @deprecated Use `Checkbox` from `@frontify/fondue/components` instead. Also check {@link https://github.com/Frontify/fondue/blob/main/packages/components/MIGRATING.md#checkbox the migration guide}.\n */\nexport enum CheckboxEmphasis {\n Default = 'Default',\n Weak = 'Weak',\n Strong = 'Strong',\n}\n\n/**\n * @deprecated Use `Checkbox` from `@frontify/fondue/components` instead. Also check {@link https://github.com/Frontify/fondue/blob/main/packages/components/MIGRATING.md#checkbox the migration guide}.\n */\nexport enum CheckboxSize {\n Default = 'Default',\n Large = 'Large',\n XLarge = 'XLarge',\n}\n\n/**\n * @deprecated Use `Checkbox` from `@frontify/fondue/components` instead. Also check {@link https://github.com/Frontify/fondue/blob/main/packages/components/MIGRATING.md#checkbox the migration guide}.\n */\nexport type CheckboxProps = {\n id?: string;\n state?: CheckboxState;\n emphasis?: CheckboxEmphasis;\n size?: CheckboxSize;\n disabled?: boolean;\n required?: boolean;\n value?: string;\n onChange?: (isChecked: boolean) => void;\n label?: string;\n hideLabel?: boolean;\n tooltip?: InputLabelTooltipProps;\n helperText?: string;\n 'aria-label'?: string;\n groupInputProps?: HTMLAttributes<HTMLElement>;\n 'data-test-id'?: string;\n};\n\nconst isCheckedOrMixed = (checked: CheckboxState): boolean => {\n return checked === CheckboxState.Checked || checked === CheckboxState.Mixed;\n};\n\nconst emphasisDefaultClasses =\n 'tw-bg-box-selected-strong tw-text-box-selected-strong-inverse hover:tw-bg-box-selected-strong-hover';\n\nconst emphasisCheckedClassesMap: Record<CheckboxEmphasis, string> = {\n [CheckboxEmphasis.Weak]:\n 'tw-bg-box-neutral-strong tw-text-box-neutral-strong-inverse hover:tw-bg-box-neutral-strong-hover',\n [CheckboxEmphasis.Default]: emphasisDefaultClasses,\n [CheckboxEmphasis.Strong]: emphasisDefaultClasses,\n};\n\nconst sizeClassesMap: Record<CheckboxSize, string> = {\n [CheckboxSize.Default]: 'tw-h-4 tw-w-4',\n [CheckboxSize.Large]: 'tw-h-5 tw-w-5',\n [CheckboxSize.XLarge]: 'tw-h-8 tw-w-8',\n};\n\nconst CheckboxComponent: ForwardRefRenderFunction<HTMLInputElement, CheckboxProps> = (\n {\n id: propId,\n emphasis = CheckboxEmphasis.Default,\n size = CheckboxSize.Default,\n disabled,\n required,\n label,\n hideLabel,\n tooltip,\n helperText,\n 'aria-label': ariaLabel,\n value,\n groupInputProps,\n onChange,\n state = CheckboxState.Unchecked,\n 'data-test-id': dataTestId = 'checkbox',\n },\n ref,\n) => {\n const id = useMemoizedId(propId);\n const inputRef = useForwardedRef<HTMLInputElement | null>(ref);\n const { focusProps } = useFocusRing();\n const toggleState = useToggleState({\n onChange: disabled ? undefined : onChange,\n isSelected: state === CheckboxState.Checked,\n });\n const [showFocus, setShowFocus] = useState<Nullable<boolean>>();\n const labelContainer = useRef<HTMLSpanElement>(null);\n const helperTextContainer = useRef<HTMLSpanElement>(null);\n const [isLabelOverflowing, setIsLabelOverflowing] = useState(false);\n const [isHelperTextOverflowing, setIsHelperTextOverflowing] = useState(false);\n\n const tabFocusListener = (event: KeyboardEvent) => {\n if (event.key === 'Tab') {\n setShowFocus(true);\n }\n };\n\n const blurListener = () => {\n setShowFocus(false);\n };\n\n useEffect(() => {\n inputRef?.current?.addEventListener('keyup', tabFocusListener);\n inputRef?.current?.addEventListener('blur', blurListener);\n\n return () => {\n inputRef?.current?.removeEventListener('keyup', tabFocusListener);\n inputRef?.current?.removeEventListener('blur', blurListener);\n };\n }, []);\n\n const { inputProps } = useCheckbox(\n {\n isDisabled: disabled,\n isRequired: required,\n isIndeterminate: state === CheckboxState.Mixed,\n 'aria-label': ariaLabel,\n value,\n },\n toggleState,\n inputRef,\n );\n\n const stateMap: Record<CheckboxState, ReactNode> = {\n [CheckboxState.Checked]: <IconCheckMark size={size === CheckboxSize.XLarge ? 24 : 16} />,\n [CheckboxState.Mixed]: <IconMinus />,\n [CheckboxState.Unchecked]: null,\n };\n\n const checkedOrMixed = isCheckedOrMixed(state);\n\n const disabledClasses = merge([\n 'tw-bg-box-disabled tw-pointer-events-none tw-text-box-disabled-inverse tw-border-line-strong',\n checkedOrMixed && 'tw-text-box-disabled-inverse tw-border-line-strong',\n ]);\n\n const enabledClasses = checkedOrMixed\n ? emphasisCheckedClassesMap[emphasis]\n : merge([\n 'tw-bg-base hover:tw-bg-box-neutral',\n emphasis === CheckboxEmphasis.Strong\n ? 'tw-border-2 tw-border-box-selected-strong'\n : 'tw-border tw-border-line-xx-strong',\n ]);\n\n // eslint-disable-next-line @eslint-react/no-unnecessary-use-callback\n const checkOverflowing = useCallback(() => {\n if (labelContainer.current) {\n setIsLabelOverflowing(labelContainer.current?.scrollWidth > labelContainer.current?.clientWidth);\n }\n\n if (helperTextContainer.current) {\n setIsHelperTextOverflowing(\n helperTextContainer.current?.scrollWidth > helperTextContainer.current?.clientWidth,\n );\n }\n }, [labelContainer, helperTextContainer]);\n\n useEffect(() => {\n if ((!label && !helperText) || hideLabel) {\n return;\n }\n // eslint-disable-next-line react-hooks/set-state-in-effect\n checkOverflowing();\n\n window.removeEventListener('resize', checkOverflowing);\n window.addEventListener('resize', checkOverflowing);\n\n return () => {\n window.removeEventListener('resize', checkOverflowing);\n };\n }, [label, helperText, hideLabel, checkOverflowing]);\n\n return (\n <div className=\"tw-gap-1 tw-transition-colors tw-w-full\" data-test-id={dataTestId}>\n <div className={merge(['tw-inline-flex tw-flex-row tw-rounded tw-w-full', showFocus ? FOCUS_STYLE : ''])}>\n <InputLabel\n id={`${id}-label`}\n disabled={disabled}\n clickable\n htmlFor={id}\n tooltip={tooltip}\n required={required}\n bold={checkedOrMixed}\n >\n <span className=\"tw-flex tw-items-center tw-whitespace-nowrap\">\n <span className=\"tw-inline-flex\">\n <input\n {...mergeProps(groupInputProps || inputProps, focusProps)}\n id={id}\n ref={inputRef}\n className=\"tw-sr-only\"\n data-test-id={`${dataTestId}-input`}\n role=\"checkbox\"\n aria-checked={state === CheckboxState.Checked}\n required={required}\n aria-label={ariaLabel}\n aria-labelledby={label ? `${id}-label` : undefined}\n />\n <span\n data-test-id={`${dataTestId}-icon-box`}\n aria-hidden=\"true\"\n className={merge([\n 'tw-leading-3 tw-relative tw-flex tw-items-center tw-justify-center tw-rounded tw-shrink-0 tw-flex-none',\n sizeClassesMap[size],\n disabled ? disabledClasses : enabledClasses,\n ])}\n >\n {stateMap[state]}\n </span>\n </span>\n {!hideLabel && (\n <span className=\"tw-inline-flex tw-flex-col tw-min-w-0 tw-ml-1.5\">\n {label && (\n <span\n ref={labelContainer}\n data-test-id={`${dataTestId}-label`}\n className={merge([\n 'tw-text-ellipsis tw-overflow-hidden',\n 'tw-text-xs tw-select-none hover:tw-cursor-pointer hover:tw-text-black dark:hover:tw-text-white group-hover:tw-text-black dark:group-hover:tw-text-white',\n checkedOrMixed && 'tw-font-medium',\n ])}\n title={isLabelOverflowing ? label : undefined}\n >\n {label}\n </span>\n )}\n {helperText && (\n <span\n ref={helperTextContainer}\n data-test-id={`${dataTestId}-helper-text`}\n className={merge([\n 'tw-text-ellipsis tw-overflow-hidden',\n 'tw-font-sans tw-text-xs tw-font-normal',\n disabled ? 'text-disabled' : 'tw-text-text-weak',\n ])}\n title={isHelperTextOverflowing ? helperText : undefined}\n >\n {helperText}\n </span>\n )}\n </span>\n )}\n </span>\n </InputLabel>\n </div>\n </div>\n );\n};\n\n/**\n * @deprecated Use `Checkbox` from `@frontify/fondue/components` instead. Also check {@link https://github.com/Frontify/fondue/blob/main/packages/components/MIGRATING.md#checkbox the migration guide}.\n */\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(CheckboxComponent);\nCheckbox.displayName = 'FondueCheckbox';\n"],"names":["CheckboxState","CheckboxEmphasis","CheckboxSize","isCheckedOrMixed","checked","emphasisDefaultClasses","emphasisCheckedClassesMap","sizeClassesMap","CheckboxComponent","propId","emphasis","size","disabled","required","label","hideLabel","tooltip","helperText","ariaLabel","value","groupInputProps","onChange","state","dataTestId","ref","id","useMemoizedId","inputRef","useForwardedRef","focusProps","useFocusRing","toggleState","useToggleState","showFocus","setShowFocus","useState","labelContainer","useRef","helperTextContainer","isLabelOverflowing","setIsLabelOverflowing","isHelperTextOverflowing","setIsHelperTextOverflowing","tabFocusListener","event","blurListener","useEffect","_a","_b","inputProps","useCheckbox","stateMap","jsx","IconCheckMark","IconMinus","checkedOrMixed","disabledClasses","merge","enabledClasses","checkOverflowing","useCallback","_c","_d","FOCUS_STYLE","InputLabel","jsxs","mergeProps","Checkbox","forwardRef"],"mappings":"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"}
1
+ {"version":3,"file":"Checkbox.es.js","sources":["../../../src/components/Checkbox/Checkbox.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { IconCheckMark, IconMinus } from '@frontify/fondue-icons';\nimport { useCheckbox } from '@react-aria/checkbox';\nimport { useFocusRing } from '@react-aria/focus';\nimport { mergeProps } from '@react-aria/utils';\nimport { useToggleState } from '@react-stately/toggle';\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n useState,\n type ForwardRefRenderFunction,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\n\nimport { InputLabel, type InputLabelTooltipProps } from '@components/InputLabel/InputLabel';\nimport { useMemoizedId } from '@hooks/useMemoizedId';\nimport { FOCUS_STYLE } from '@utilities/focusStyle';\nimport { merge } from '@utilities/merge';\nimport { useForwardedRef } from '@utilities/useForwardedRef';\n\n/**\n * @deprecated Use `Checkbox` from `@frontify/fondue/components` instead. Also check {@link https://github.com/Frontify/fondue/blob/main/packages/components/MIGRATING.md#checkbox the migration guide}.\n */\nexport enum CheckboxState {\n Checked = 'Checked',\n Unchecked = 'Unchecked',\n Mixed = 'Mixed',\n}\n\n/**\n * @deprecated Use `Checkbox` from `@frontify/fondue/components` instead. Also check {@link https://github.com/Frontify/fondue/blob/main/packages/components/MIGRATING.md#checkbox the migration guide}.\n */\nexport enum CheckboxEmphasis {\n Default = 'Default',\n Weak = 'Weak',\n Strong = 'Strong',\n}\n\n/**\n * @deprecated Use `Checkbox` from `@frontify/fondue/components` instead. Also check {@link https://github.com/Frontify/fondue/blob/main/packages/components/MIGRATING.md#checkbox the migration guide}.\n */\nexport enum CheckboxSize {\n Default = 'Default',\n Large = 'Large',\n XLarge = 'XLarge',\n}\n\n/**\n * @deprecated Use `Checkbox` from `@frontify/fondue/components` instead. Also check {@link https://github.com/Frontify/fondue/blob/main/packages/components/MIGRATING.md#checkbox the migration guide}.\n */\nexport type CheckboxProps = {\n id?: string;\n state?: CheckboxState;\n emphasis?: CheckboxEmphasis;\n size?: CheckboxSize;\n disabled?: boolean;\n required?: boolean;\n value?: string;\n onChange?: (isChecked: boolean) => void;\n label?: string;\n hideLabel?: boolean;\n tooltip?: InputLabelTooltipProps;\n helperText?: string;\n 'aria-label'?: string;\n groupInputProps?: HTMLAttributes<HTMLElement>;\n 'data-test-id'?: string;\n};\n\nconst isCheckedOrMixed = (checked: CheckboxState): boolean => {\n return checked === CheckboxState.Checked || checked === CheckboxState.Mixed;\n};\n\nconst emphasisDefaultClasses =\n 'tw-bg-box-selected-strong tw-text-box-selected-strong-inverse hover:tw-bg-box-selected-strong-hover';\n\nconst emphasisCheckedClassesMap: Record<CheckboxEmphasis, string> = {\n [CheckboxEmphasis.Weak]:\n 'tw-bg-box-neutral-strong tw-text-box-neutral-strong-inverse hover:tw-bg-box-neutral-strong-hover',\n [CheckboxEmphasis.Default]: emphasisDefaultClasses,\n [CheckboxEmphasis.Strong]: emphasisDefaultClasses,\n};\n\nconst sizeClassesMap: Record<CheckboxSize, string> = {\n [CheckboxSize.Default]: 'tw-h-4 tw-w-4',\n [CheckboxSize.Large]: 'tw-h-5 tw-w-5',\n [CheckboxSize.XLarge]: 'tw-h-8 tw-w-8',\n};\n\nconst CheckboxComponent: ForwardRefRenderFunction<HTMLInputElement, CheckboxProps> = (\n {\n id: propId,\n emphasis = CheckboxEmphasis.Default,\n size = CheckboxSize.Default,\n disabled,\n required,\n label,\n hideLabel,\n tooltip,\n helperText,\n 'aria-label': ariaLabel,\n value,\n groupInputProps,\n onChange,\n state = CheckboxState.Unchecked,\n 'data-test-id': dataTestId = 'checkbox',\n },\n ref,\n) => {\n const id = useMemoizedId(propId);\n const inputRef = useForwardedRef<HTMLInputElement | null>(ref);\n const { focusProps } = useFocusRing();\n const toggleState = useToggleState({\n onChange: disabled ? undefined : onChange,\n isSelected: state === CheckboxState.Checked,\n });\n const [showFocus, setShowFocus] = useState<Nullable<boolean>>();\n const labelContainer = useRef<HTMLSpanElement>(null);\n const helperTextContainer = useRef<HTMLSpanElement>(null);\n const [isLabelOverflowing, setIsLabelOverflowing] = useState(false);\n const [isHelperTextOverflowing, setIsHelperTextOverflowing] = useState(false);\n\n const tabFocusListener = (event: KeyboardEvent) => {\n if (event.key === 'Tab') {\n setShowFocus(true);\n }\n };\n\n const blurListener = () => {\n setShowFocus(false);\n };\n\n useEffect(() => {\n const node = inputRef?.current;\n node?.addEventListener('keyup', tabFocusListener);\n node?.addEventListener('blur', blurListener);\n\n return () => {\n node?.removeEventListener('keyup', tabFocusListener);\n node?.removeEventListener('blur', blurListener);\n };\n // eslint-disable-next-line @eslint-react/exhaustive-deps\n }, []);\n\n const { inputProps } = useCheckbox(\n {\n isDisabled: disabled,\n isRequired: required,\n isIndeterminate: state === CheckboxState.Mixed,\n 'aria-label': ariaLabel,\n value,\n },\n toggleState,\n inputRef,\n );\n\n const stateMap: Record<CheckboxState, ReactNode> = {\n [CheckboxState.Checked]: <IconCheckMark size={size === CheckboxSize.XLarge ? 24 : 16} />,\n [CheckboxState.Mixed]: <IconMinus />,\n [CheckboxState.Unchecked]: null,\n };\n\n const checkedOrMixed = isCheckedOrMixed(state);\n\n const disabledClasses = merge([\n 'tw-bg-box-disabled tw-pointer-events-none tw-text-box-disabled-inverse tw-border-line-strong',\n checkedOrMixed && 'tw-text-box-disabled-inverse tw-border-line-strong',\n ]);\n\n const enabledClasses = checkedOrMixed\n ? emphasisCheckedClassesMap[emphasis]\n : merge([\n 'tw-bg-base hover:tw-bg-box-neutral',\n emphasis === CheckboxEmphasis.Strong\n ? 'tw-border-2 tw-border-box-selected-strong'\n : 'tw-border tw-border-line-xx-strong',\n ]);\n\n // eslint-disable-next-line @eslint-react/no-unnecessary-use-callback\n const checkOverflowing = useCallback(() => {\n if (labelContainer.current) {\n setIsLabelOverflowing(labelContainer.current?.scrollWidth > labelContainer.current?.clientWidth);\n }\n\n if (helperTextContainer.current) {\n setIsHelperTextOverflowing(\n helperTextContainer.current?.scrollWidth > helperTextContainer.current?.clientWidth,\n );\n }\n }, [labelContainer, helperTextContainer]);\n\n useEffect(() => {\n if ((!label && !helperText) || hideLabel) {\n return;\n }\n // eslint-disable-next-line @eslint-react/set-state-in-effect\n checkOverflowing();\n\n window.removeEventListener('resize', checkOverflowing);\n window.addEventListener('resize', checkOverflowing);\n\n return () => {\n window.removeEventListener('resize', checkOverflowing);\n };\n }, [label, helperText, hideLabel, checkOverflowing]);\n\n return (\n <div className=\"tw-gap-1 tw-transition-colors tw-w-full\" data-test-id={dataTestId}>\n <div className={merge(['tw-inline-flex tw-flex-row tw-rounded tw-w-full', showFocus ? FOCUS_STYLE : ''])}>\n <InputLabel\n id={`${id}-label`}\n disabled={disabled}\n clickable\n htmlFor={id}\n tooltip={tooltip}\n required={required}\n bold={checkedOrMixed}\n >\n <span className=\"tw-flex tw-items-center tw-whitespace-nowrap\">\n <span className=\"tw-inline-flex\">\n <input\n {...mergeProps(groupInputProps || inputProps, focusProps)}\n id={id}\n ref={inputRef}\n className=\"tw-sr-only\"\n data-test-id={`${dataTestId}-input`}\n role=\"checkbox\"\n aria-checked={state === CheckboxState.Checked}\n required={required}\n aria-label={ariaLabel}\n aria-labelledby={label ? `${id}-label` : undefined}\n />\n <span\n data-test-id={`${dataTestId}-icon-box`}\n aria-hidden=\"true\"\n className={merge([\n 'tw-leading-3 tw-relative tw-flex tw-items-center tw-justify-center tw-rounded tw-shrink-0 tw-flex-none',\n sizeClassesMap[size],\n disabled ? disabledClasses : enabledClasses,\n ])}\n >\n {stateMap[state]}\n </span>\n </span>\n {!hideLabel && (\n <span className=\"tw-inline-flex tw-flex-col tw-min-w-0 tw-ml-1.5\">\n {label && (\n <span\n ref={labelContainer}\n data-test-id={`${dataTestId}-label`}\n className={merge([\n 'tw-text-ellipsis tw-overflow-hidden',\n 'tw-text-xs tw-select-none hover:tw-cursor-pointer hover:tw-text-black dark:hover:tw-text-white group-hover:tw-text-black dark:group-hover:tw-text-white',\n checkedOrMixed && 'tw-font-medium',\n ])}\n title={isLabelOverflowing ? label : undefined}\n >\n {label}\n </span>\n )}\n {helperText && (\n <span\n ref={helperTextContainer}\n data-test-id={`${dataTestId}-helper-text`}\n className={merge([\n 'tw-text-ellipsis tw-overflow-hidden',\n 'tw-font-sans tw-text-xs tw-font-normal',\n disabled ? 'text-disabled' : 'tw-text-text-weak',\n ])}\n title={isHelperTextOverflowing ? helperText : undefined}\n >\n {helperText}\n </span>\n )}\n </span>\n )}\n </span>\n </InputLabel>\n </div>\n </div>\n );\n};\n\n/**\n * @deprecated Use `Checkbox` from `@frontify/fondue/components` instead. Also check {@link https://github.com/Frontify/fondue/blob/main/packages/components/MIGRATING.md#checkbox the migration guide}.\n */\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(CheckboxComponent);\nCheckbox.displayName = 'FondueCheckbox';\n"],"names":["CheckboxState","CheckboxEmphasis","CheckboxSize","isCheckedOrMixed","checked","emphasisDefaultClasses","emphasisCheckedClassesMap","sizeClassesMap","CheckboxComponent","propId","emphasis","size","disabled","required","label","hideLabel","tooltip","helperText","ariaLabel","value","groupInputProps","onChange","state","dataTestId","ref","id","useMemoizedId","inputRef","useForwardedRef","focusProps","useFocusRing","toggleState","useToggleState","showFocus","setShowFocus","useState","labelContainer","useRef","helperTextContainer","isLabelOverflowing","setIsLabelOverflowing","isHelperTextOverflowing","setIsHelperTextOverflowing","tabFocusListener","event","blurListener","useEffect","node","inputProps","useCheckbox","stateMap","jsx","IconCheckMark","IconMinus","checkedOrMixed","disabledClasses","merge","enabledClasses","checkOverflowing","useCallback","_a","_b","_c","_d","FOCUS_STYLE","InputLabel","jsxs","mergeProps","Checkbox","forwardRef"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Checklist.es.js","sources":["../../../src/components/Checklist/Checklist.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { useCheckboxGroup, useCheckboxGroupItem } from '@react-aria/checkbox';\nimport { type CheckboxGroupState, useCheckboxGroupState } from '@react-stately/checkbox';\nimport { useEffect, useLayoutEffect, useRef, useState } from 'react';\n\nimport { Checkbox, type CheckboxProps, CheckboxState } from '@components/Checkbox/Checkbox';\nimport { merge } from '@utilities/merge';\n\n/**\n * @deprecated Use `Checkbox` from `@frontify/fondue/components` instead.\n */\nexport enum ChecklistDirection {\n Horizontal = 'Horizontal',\n Vertical = 'Vertical',\n}\n\n/**\n * @deprecated Use `Checkbox` from `@frontify/fondue/components` instead.\n */\nexport type Columns = 1 | 2 | 3 | 4;\n\nconst columnsStyle: Record<Columns, string> = {\n 1: 'tw-grid-cols-1',\n 2: 'tw-grid-cols-2',\n 3: 'tw-grid-cols-3',\n 4: 'tw-grid-cols-4',\n};\n\n/**\n * @deprecated Use `Checkbox` from `@frontify/fondue/components` instead.\n */\nexport type CheckboxValue = Omit<CheckboxProps, 'onChange' | 'groupInputProps' | 'value'> & { value: string };\n\n/**\n * @deprecated Use `Checkbox` from `@frontify/fondue/components` instead.\n */\nexport type ChecklistBase = {\n checkboxes: CheckboxValue[];\n setActiveValues: (value: string[]) => void;\n activeValues?: string[];\n ariaLabel?: string;\n 'data-test-id'?: string;\n};\n\n/**\n * @deprecated Use `Checkbox` from `@frontify/fondue/components` instead.\n */\nexport type ChecklistProps = ChecklistBase & {\n direction: ChecklistDirection.Vertical | ChecklistDirection.Horizontal;\n columns?: Columns;\n};\n\ntype ChecklistItemProps = {\n checkbox: CheckboxValue;\n state: CheckboxGroupState;\n forwardedRef?: (ref: HTMLInputElement) => void;\n};\n\nconst ChecklistItem = ({ checkbox, state, forwardedRef }: ChecklistItemProps) => {\n const ref = useRef<HTMLInputElement | null>(null);\n const { value, disabled, label, 'aria-label': checkboxAriaLabel, state: checkboxState } = checkbox;\n const [checkState, setCheckState] = useState(checkboxState);\n const isSelected = state.isSelected(value);\n const { inputProps } = useCheckboxGroupItem(\n { value, isDisabled: disabled, 'aria-label': checkboxAriaLabel || label },\n state,\n ref,\n );\n\n useEffect(() => {\n if (checkState === CheckboxState.Mixed && !isSelected) {\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setCheckState(CheckboxState.Mixed);\n } else {\n setCheckState(isSelected ? CheckboxState.Checked : CheckboxState.Unchecked);\n }\n }, [checkState, isSelected]);\n\n useEffect(() => {\n if (forwardedRef && ref.current) {\n forwardedRef(ref.current);\n }\n }, [forwardedRef, isSelected]);\n\n return <Checkbox {...checkbox} state={checkState} groupInputProps={inputProps} ref={ref} />;\n};\n\nconst getLastItemColumnSpan = (items: CheckboxValue[], columns: number) => {\n if (!columns || columns <= 1) {\n return '';\n }\n\n const gridSpan = 'auto / span';\n const spanItems = items.length % columns;\n\n if (spanItems === 0) {\n return '';\n }\n\n return `${gridSpan} ${columns - spanItems + 1}`;\n};\n\n/**\n * @deprecated Use `Checkbox` from `@frontify/fondue/components` instead.\n */\nexport const Checklist = ({\n checkboxes,\n setActiveValues,\n ariaLabel = 'Checklist',\n activeValues = [],\n direction = ChecklistDirection.Horizontal,\n 'data-test-id': dataTestId = 'checklist',\n ...props\n}: ChecklistProps) => {\n const checkboxRefs = useRef<(HTMLInputElement | null)[]>(Array.from({ length: checkboxes.length }));\n const listContainerRef = useRef<HTMLDivElement | null>(null);\n const state = useCheckboxGroupState({\n value: activeValues,\n onChange: setActiveValues,\n });\n const { groupProps } = useCheckboxGroup(\n {\n 'aria-label': ariaLabel,\n },\n state,\n );\n\n const columns = ('columns' in props && props.columns) || 1;\n\n useLayoutEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n const focusableElements = checkboxRefs.current.filter((el) => el !== null);\n const currentIndex = focusableElements.indexOf(document.activeElement as HTMLInputElement);\n let nextIndex = currentIndex;\n\n if (event.key === 'ArrowDown' || event.key === 'ArrowRight') {\n nextIndex++;\n if (nextIndex === focusableElements.length) {\n nextIndex = 0;\n }\n if (focusableElements[nextIndex].disabled) {\n nextIndex++;\n }\n } else if (event.key === 'ArrowUp' || event.key === 'ArrowLeft') {\n nextIndex--;\n if (nextIndex === -1) {\n nextIndex = focusableElements.length - 1;\n }\n\n if (focusableElements[nextIndex].disabled) {\n nextIndex--;\n }\n } else {\n return;\n }\n\n focusableElements[nextIndex].focus();\n\n const tabEvent = new KeyboardEvent('keyup', {\n key: 'Tab',\n code: 'Tab',\n keyCode: 9,\n bubbles: true,\n });\n\n focusableElements[nextIndex].dispatchEvent(tabEvent);\n };\n\n const listElem = listContainerRef.current;\n listElem?.addEventListener('keydown', handleKeyDown);\n\n return () => {\n listElem?.removeEventListener('keydown', handleKeyDown);\n };\n }, [checkboxes.length]);\n\n return (\n <div\n {...groupProps}\n data-test-id={dataTestId}\n className={merge([\n direction === ChecklistDirection.Horizontal\n ? 'tw-flex tw-flex-row tw-gap-12'\n : `tw-grid tw-gap-4 ${columnsStyle[columns]}`,\n ])}\n ref={listContainerRef}\n >\n {/* eslint-disable-next-line react-hooks/refs */}\n {checkboxes.map((checkbox, index) => (\n <div\n key={checkbox.value}\n style={{\n maxWidth: listContainerRef?.current?.getBoundingClientRect().width,\n gridColumn:\n index === checkboxes.length - 1 && direction === ChecklistDirection.Vertical\n ? getLastItemColumnSpan(checkboxes, columns)\n : undefined,\n }}\n >\n <ChecklistItem\n checkbox={checkbox}\n state={state}\n forwardedRef={(el) => (checkboxRefs.current[index] = el)}\n />\n </div>\n ))}\n </div>\n );\n};\n\n/**\n * @deprecated Use multiple `Checkbox` components from `@frontify/fondue/components` instead. Also check {@link https://github.com/Frontify/fondue/blob/main/packages/components/MIGRATING.md#checklist the migration guide}.\n */\nChecklist.displayName = 'FondueChecklist';\n"],"names":["ChecklistDirection","columnsStyle","ChecklistItem","checkbox","state","forwardedRef","ref","useRef","value","disabled","label","checkboxAriaLabel","checkboxState","checkState","setCheckState","useState","isSelected","inputProps","useCheckboxGroupItem","useEffect","CheckboxState","jsx","Checkbox","getLastItemColumnSpan","items","columns","gridSpan","spanItems","Checklist","checkboxes","setActiveValues","ariaLabel","activeValues","direction","dataTestId","props","checkboxRefs","listContainerRef","useCheckboxGroupState","groupProps","useCheckboxGroup","useLayoutEffect","handleKeyDown","event","focusableElements","el","nextIndex","tabEvent","listElem","merge","index","_a"],"mappings":"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"}
1
+ {"version":3,"file":"Checklist.es.js","sources":["../../../src/components/Checklist/Checklist.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { useCheckboxGroup, useCheckboxGroupItem } from '@react-aria/checkbox';\nimport { type CheckboxGroupState, useCheckboxGroupState } from '@react-stately/checkbox';\nimport { useEffect, useLayoutEffect, useRef, useState } from 'react';\n\nimport { Checkbox, type CheckboxProps, CheckboxState } from '@components/Checkbox/Checkbox';\nimport { merge } from '@utilities/merge';\n\n/**\n * @deprecated Use `Checkbox` from `@frontify/fondue/components` instead.\n */\nexport enum ChecklistDirection {\n Horizontal = 'Horizontal',\n Vertical = 'Vertical',\n}\n\n/**\n * @deprecated Use `Checkbox` from `@frontify/fondue/components` instead.\n */\nexport type Columns = 1 | 2 | 3 | 4;\n\nconst columnsStyle: Record<Columns, string> = {\n 1: 'tw-grid-cols-1',\n 2: 'tw-grid-cols-2',\n 3: 'tw-grid-cols-3',\n 4: 'tw-grid-cols-4',\n};\n\n/**\n * @deprecated Use `Checkbox` from `@frontify/fondue/components` instead.\n */\nexport type CheckboxValue = Omit<CheckboxProps, 'onChange' | 'groupInputProps' | 'value'> & { value: string };\n\n/**\n * @deprecated Use `Checkbox` from `@frontify/fondue/components` instead.\n */\nexport type ChecklistBase = {\n checkboxes: CheckboxValue[];\n setActiveValues: (value: string[]) => void;\n activeValues?: string[];\n ariaLabel?: string;\n 'data-test-id'?: string;\n};\n\n/**\n * @deprecated Use `Checkbox` from `@frontify/fondue/components` instead.\n */\nexport type ChecklistProps = ChecklistBase & {\n direction: ChecklistDirection.Vertical | ChecklistDirection.Horizontal;\n columns?: Columns;\n};\n\ntype ChecklistItemProps = {\n checkbox: CheckboxValue;\n state: CheckboxGroupState;\n forwardedRef?: (ref: HTMLInputElement) => void;\n};\n\nconst ChecklistItem = ({ checkbox, state, forwardedRef }: ChecklistItemProps) => {\n const ref = useRef<HTMLInputElement | null>(null);\n const { value, disabled, label, 'aria-label': checkboxAriaLabel, state: checkboxState } = checkbox;\n const [checkState, setCheckState] = useState(checkboxState);\n const isSelected = state.isSelected(value);\n const { inputProps } = useCheckboxGroupItem(\n { value, isDisabled: disabled, 'aria-label': checkboxAriaLabel || label },\n state,\n ref,\n );\n\n useEffect(() => {\n if (checkState === CheckboxState.Mixed && !isSelected) {\n // eslint-disable-next-line @eslint-react/set-state-in-effect\n setCheckState(CheckboxState.Mixed);\n } else {\n setCheckState(isSelected ? CheckboxState.Checked : CheckboxState.Unchecked);\n }\n }, [checkState, isSelected]);\n\n useEffect(() => {\n if (forwardedRef && ref.current) {\n forwardedRef(ref.current);\n }\n }, [forwardedRef, isSelected]);\n\n return <Checkbox {...checkbox} state={checkState} groupInputProps={inputProps} ref={ref} />;\n};\n\nconst getLastItemColumnSpan = (items: CheckboxValue[], columns: number) => {\n if (!columns || columns <= 1) {\n return '';\n }\n\n const gridSpan = 'auto / span';\n const spanItems = items.length % columns;\n\n if (spanItems === 0) {\n return '';\n }\n\n return `${gridSpan} ${columns - spanItems + 1}`;\n};\n\n/**\n * @deprecated Use `Checkbox` from `@frontify/fondue/components` instead.\n */\nexport const Checklist = ({\n checkboxes,\n setActiveValues,\n ariaLabel = 'Checklist',\n activeValues = [],\n direction = ChecklistDirection.Horizontal,\n 'data-test-id': dataTestId = 'checklist',\n ...props\n}: ChecklistProps) => {\n const checkboxRefs = useRef<(HTMLInputElement | null)[]>(Array.from({ length: checkboxes.length }));\n const listContainerRef = useRef<HTMLDivElement | null>(null);\n const state = useCheckboxGroupState({\n value: activeValues,\n onChange: setActiveValues,\n });\n const { groupProps } = useCheckboxGroup(\n {\n 'aria-label': ariaLabel,\n },\n state,\n );\n\n const columns = ('columns' in props && props.columns) || 1;\n\n useLayoutEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n const focusableElements = checkboxRefs.current.filter((el) => el !== null);\n const currentIndex = focusableElements.indexOf(document.activeElement as HTMLInputElement);\n let nextIndex = currentIndex;\n\n if (event.key === 'ArrowDown' || event.key === 'ArrowRight') {\n nextIndex++;\n if (nextIndex === focusableElements.length) {\n nextIndex = 0;\n }\n if (focusableElements[nextIndex].disabled) {\n nextIndex++;\n }\n } else if (event.key === 'ArrowUp' || event.key === 'ArrowLeft') {\n nextIndex--;\n if (nextIndex === -1) {\n nextIndex = focusableElements.length - 1;\n }\n\n if (focusableElements[nextIndex].disabled) {\n nextIndex--;\n }\n } else {\n return;\n }\n\n focusableElements[nextIndex].focus();\n\n const tabEvent = new KeyboardEvent('keyup', {\n key: 'Tab',\n code: 'Tab',\n keyCode: 9,\n bubbles: true,\n });\n\n focusableElements[nextIndex].dispatchEvent(tabEvent);\n };\n\n const listElem = listContainerRef.current;\n listElem?.addEventListener('keydown', handleKeyDown);\n\n return () => {\n listElem?.removeEventListener('keydown', handleKeyDown);\n };\n }, [checkboxes.length]);\n\n return (\n <div\n {...groupProps}\n data-test-id={dataTestId}\n className={merge([\n direction === ChecklistDirection.Horizontal\n ? 'tw-flex tw-flex-row tw-gap-12'\n : `tw-grid tw-gap-4 ${columnsStyle[columns]}`,\n ])}\n ref={listContainerRef}\n >\n {/* eslint-disable-next-line @eslint-react/refs */}\n {checkboxes.map((checkbox, index) => (\n <div\n key={checkbox.value}\n style={{\n maxWidth: listContainerRef?.current?.getBoundingClientRect().width,\n gridColumn:\n index === checkboxes.length - 1 && direction === ChecklistDirection.Vertical\n ? getLastItemColumnSpan(checkboxes, columns)\n : undefined,\n }}\n >\n <ChecklistItem\n checkbox={checkbox}\n state={state}\n forwardedRef={(el) => (checkboxRefs.current[index] = el)}\n />\n </div>\n ))}\n </div>\n );\n};\n\n/**\n * @deprecated Use multiple `Checkbox` components from `@frontify/fondue/components` instead. Also check {@link https://github.com/Frontify/fondue/blob/main/packages/components/MIGRATING.md#checklist the migration guide}.\n */\nChecklist.displayName = 'FondueChecklist';\n"],"names":["ChecklistDirection","columnsStyle","ChecklistItem","checkbox","state","forwardedRef","ref","useRef","value","disabled","label","checkboxAriaLabel","checkboxState","checkState","setCheckState","useState","isSelected","inputProps","useCheckboxGroupItem","useEffect","CheckboxState","jsx","Checkbox","getLastItemColumnSpan","items","columns","gridSpan","spanItems","Checklist","checkboxes","setActiveValues","ariaLabel","activeValues","direction","dataTestId","props","checkboxRefs","listContainerRef","useCheckboxGroupState","groupProps","useCheckboxGroup","useLayoutEffect","handleKeyDown","event","focusableElements","el","nextIndex","tabEvent","listElem","merge","index","_a"],"mappings":"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"}
@@ -49,7 +49,7 @@ const R = ({
49
49
  var t;
50
50
  s.current && U(T.copyStyles(s.current)), c === "INPUT" && ((t = f.current) == null || t.select());
51
51
  }, [c, f, u]);
52
- const s = N(), A = u && // eslint-disable-next-line @eslint-react/no-clone-element, react-hooks/refs
52
+ const s = N(), A = u && // eslint-disable-next-line @eslint-react/no-clone-element, @eslint-react/refs
53
53
  C(u, {
54
54
  ref: s
55
55
  });