Private
Public Access
1
0

feat: Fluent UI Outlook Lite + connections mockup

This commit is contained in:
2026-04-14 18:52:25 +00:00
parent 1199eff6c3
commit dfa4010406
34820 changed files with 1003813 additions and 205 deletions

View File

@@ -0,0 +1,24 @@
'use client';
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "BreadcrumbDivider", {
enumerable: true,
get: function() {
return BreadcrumbDivider;
}
});
const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
const _useBreadcrumbDivider = require("./useBreadcrumbDivider");
const _renderBreadcrumbDivider = require("./renderBreadcrumbDivider");
const _useBreadcrumbDividerStylesstyles = require("./useBreadcrumbDividerStyles.styles");
const _reactsharedcontexts = require("@fluentui/react-shared-contexts");
const BreadcrumbDivider = /*#__PURE__*/ _react.forwardRef((props, ref)=>{
const state = (0, _useBreadcrumbDivider.useBreadcrumbDivider_unstable)(props, ref);
(0, _useBreadcrumbDividerStylesstyles.useBreadcrumbDividerStyles_unstable)(state);
(0, _reactsharedcontexts.useCustomStyleHook_unstable)('useBreadcrumbDividerStyles_unstable')(state);
return (0, _renderBreadcrumbDivider.renderBreadcrumbDivider_unstable)(state);
});
BreadcrumbDivider.displayName = 'BreadcrumbDivider';

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../src/components/BreadcrumbDivider/BreadcrumbDivider.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useBreadcrumbDivider_unstable } from './useBreadcrumbDivider';\nimport { renderBreadcrumbDivider_unstable } from './renderBreadcrumbDivider';\nimport { useBreadcrumbDividerStyles_unstable } from './useBreadcrumbDividerStyles.styles';\nimport type { BreadcrumbDividerProps } from './BreadcrumbDivider.types';\nimport type { ForwardRefComponent } from '@fluentui/react-utilities';\nimport { useCustomStyleHook_unstable } from '@fluentui/react-shared-contexts';\n\n/**\n * A divider component which is used inside the Breadcrumb\n */\nexport const BreadcrumbDivider: ForwardRefComponent<BreadcrumbDividerProps> = React.forwardRef((props, ref) => {\n const state = useBreadcrumbDivider_unstable(props, ref);\n\n useBreadcrumbDividerStyles_unstable(state);\n useCustomStyleHook_unstable('useBreadcrumbDividerStyles_unstable')(state);\n\n return renderBreadcrumbDivider_unstable(state);\n});\n\nBreadcrumbDivider.displayName = 'BreadcrumbDivider';\n"],"names":["React","useBreadcrumbDivider_unstable","renderBreadcrumbDivider_unstable","useBreadcrumbDividerStyles_unstable","useCustomStyleHook_unstable","BreadcrumbDivider","forwardRef","props","ref","state","displayName"],"mappings":"AAAA;;;;;;;;;;;;iEAEuB,QAAQ;sCACe,yBAAyB;yCACtB,4BAA4B;kDACzB,sCAAsC;qCAG9C,kCAAkC;AAKvE,MAAMK,oBAAAA,WAAAA,GAAiEL,OAAMM,UAAU,CAAC,CAACC,OAAOC;IACrG,MAAMC,YAAQR,mDAAAA,EAA8BM,OAAOC;QAEnDL,qEAAAA,EAAoCM;QACpCL,gDAAAA,EAA4B,uCAAuCK;IAEnE,WAAOP,yDAAAA,EAAiCO;AAC1C,GAAG;AAEHJ,kBAAkBK,WAAW,GAAG"}

View File

@@ -0,0 +1,6 @@
/**
* BreadcrumbDivider base state (excludes size, which is a design prop injected from context)
*/ "use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../src/components/BreadcrumbDivider/BreadcrumbDivider.types.ts"],"sourcesContent":["import type { ComponentProps, ComponentState, Slot } from '@fluentui/react-utilities';\nimport type { BreadcrumbProps } from '../Breadcrumb/Breadcrumb.types';\n\nexport type BreadcrumbDividerSlots = {\n root: Slot<'li'>;\n};\n\n/**\n * BreadcrumbDivider Props\n */\nexport type BreadcrumbDividerProps = ComponentProps<BreadcrumbDividerSlots> & {};\n\n/**\n * State used in rendering BreadcrumbDivider\n */\nexport type BreadcrumbDividerState = ComponentState<BreadcrumbDividerSlots> & Pick<BreadcrumbProps, 'size'>;\n\n/**\n * BreadcrumbDivider base props (same as BreadcrumbDividerProps since BreadcrumbDivider has no design props of its own)\n */\nexport type BreadcrumbDividerBaseProps = BreadcrumbDividerProps;\n\n/**\n * BreadcrumbDivider base state (excludes size, which is a design prop injected from context)\n */\nexport type BreadcrumbDividerBaseState = Omit<BreadcrumbDividerState, 'size'>;\n"],"names":[],"mappings":"AAsBA;;CAEC,GACD,WAA8E"}

View File

@@ -0,0 +1,34 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: all[name]
});
}
_export(exports, {
BreadcrumbDivider: function() {
return _BreadcrumbDivider.BreadcrumbDivider;
},
breadcrumbDividerClassNames: function() {
return _useBreadcrumbDividerStylesstyles.breadcrumbDividerClassNames;
},
renderBreadcrumbDivider_unstable: function() {
return _renderBreadcrumbDivider.renderBreadcrumbDivider_unstable;
},
useBreadcrumbDividerBase_unstable: function() {
return _useBreadcrumbDivider.useBreadcrumbDividerBase_unstable;
},
useBreadcrumbDividerStyles_unstable: function() {
return _useBreadcrumbDividerStylesstyles.useBreadcrumbDividerStyles_unstable;
},
useBreadcrumbDivider_unstable: function() {
return _useBreadcrumbDivider.useBreadcrumbDivider_unstable;
}
});
const _BreadcrumbDivider = require("./BreadcrumbDivider");
const _renderBreadcrumbDivider = require("./renderBreadcrumbDivider");
const _useBreadcrumbDivider = require("./useBreadcrumbDivider");
const _useBreadcrumbDividerStylesstyles = require("./useBreadcrumbDividerStyles.styles");

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../src/components/BreadcrumbDivider/index.ts"],"sourcesContent":["export { BreadcrumbDivider } from './BreadcrumbDivider';\nexport type {\n BreadcrumbDividerBaseProps,\n BreadcrumbDividerBaseState,\n BreadcrumbDividerProps,\n BreadcrumbDividerSlots,\n BreadcrumbDividerState,\n} from './BreadcrumbDivider.types';\nexport { renderBreadcrumbDivider_unstable } from './renderBreadcrumbDivider';\nexport { useBreadcrumbDivider_unstable, useBreadcrumbDividerBase_unstable } from './useBreadcrumbDivider';\nexport { breadcrumbDividerClassNames, useBreadcrumbDividerStyles_unstable } from './useBreadcrumbDividerStyles.styles';\n"],"names":["BreadcrumbDivider","renderBreadcrumbDivider_unstable","useBreadcrumbDivider_unstable","useBreadcrumbDividerBase_unstable","breadcrumbDividerClassNames","useBreadcrumbDividerStyles_unstable"],"mappings":";;;;;;;;;;;;eAASA,oCAAiB;;;eAUjBI,6DAA2B;;;eAF3BH,yDAAgC;;;eACDE,uDAAiC;;;eACnCE,qEAAmC;;;eADhEH,mDAA6B;;;mCATJ,sBAAsB;yCAQP,4BAA4B;sCACI,yBAAyB;kDACzB,sCAAsC"}

View File

@@ -0,0 +1,16 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "renderBreadcrumbDivider_unstable", {
enumerable: true,
get: function() {
return renderBreadcrumbDivider_unstable;
}
});
const _jsxruntime = require("@fluentui/react-jsx-runtime/jsx-runtime");
const _reactutilities = require("@fluentui/react-utilities");
const renderBreadcrumbDivider_unstable = (state)=>{
(0, _reactutilities.assertSlots)(state);
return /*#__PURE__*/ (0, _jsxruntime.jsx)(state.root, {});
};

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../src/components/BreadcrumbDivider/renderBreadcrumbDivider.tsx"],"sourcesContent":["/** @jsxRuntime automatic */\n/** @jsxImportSource @fluentui/react-jsx-runtime */\n\nimport { assertSlots } from '@fluentui/react-utilities';\nimport type { JSXElement } from '@fluentui/react-utilities';\n\nimport type { BreadcrumbDividerState, BreadcrumbDividerSlots } from './BreadcrumbDivider.types';\n\n/**\n * Render the final JSX of BreadcrumbDivider\n */\nexport const renderBreadcrumbDivider_unstable = (state: BreadcrumbDividerState): JSXElement => {\n assertSlots<BreadcrumbDividerSlots>(state);\n\n return <state.root />;\n};\n"],"names":["assertSlots","renderBreadcrumbDivider_unstable","state","root"],"mappings":";;;;;;;;;;4BACA,gDAAiD;gCAErB,4BAA4B;AAQjD,MAAMC,mCAAmC,CAACC;QAC/CF,2BAAAA,EAAoCE;IAEpC,OAAA,WAAA,OAAO,eAAA,EAACA,MAAMC,IAAI,EAAA,CAAA;AACpB,EAAE"}

View File

@@ -0,0 +1,59 @@
'use client';
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: all[name]
});
}
_export(exports, {
useBreadcrumbDividerBase_unstable: function() {
return useBreadcrumbDividerBase_unstable;
},
useBreadcrumbDivider_unstable: function() {
return useBreadcrumbDivider_unstable;
}
});
const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
const _reactutilities = require("@fluentui/react-utilities");
const _reacticons = require("@fluentui/react-icons");
const _BreadcrumbContext = require("../Breadcrumb/BreadcrumbContext");
const _reactsharedcontexts = require("@fluentui/react-shared-contexts");
const useBreadcrumbDivider_unstable = (props, ref)=>{
const { size } = (0, _BreadcrumbContext.useBreadcrumbContext_unstable)();
const state = useBreadcrumbDividerBase_unstable(props, ref);
const { dir } = (0, _reactsharedcontexts.useFluent_unstable)();
return {
...state,
root: {
...state.root,
children: getDividerIcon(dir)
},
size
};
};
const useBreadcrumbDividerBase_unstable = (props, ref)=>{
return {
components: {
root: 'li'
},
root: _reactutilities.slot.always((0, _reactutilities.getIntrinsicElementProps)('li', {
ref,
'aria-hidden': true,
...props
}), {
elementType: 'li'
})
};
};
/**
* Get icon of the divider
*
* @param dir - RTL or LTR
*/ function getDividerIcon(dir) {
return dir === 'rtl' ? /*#__PURE__*/ _react.createElement(_reacticons.ChevronLeftRegular, null) : /*#__PURE__*/ _react.createElement(_reacticons.ChevronRightRegular, null);
}

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../src/components/BreadcrumbDivider/useBreadcrumbDivider.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { getIntrinsicElementProps, slot } from '@fluentui/react-utilities';\nimport type {\n BreadcrumbDividerBaseProps,\n BreadcrumbDividerBaseState,\n BreadcrumbDividerProps,\n BreadcrumbDividerState,\n} from './BreadcrumbDivider.types';\nimport { ChevronRightRegular, ChevronLeftRegular } from '@fluentui/react-icons';\nimport { useBreadcrumbContext_unstable } from '../Breadcrumb/BreadcrumbContext';\nimport { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';\n\n/**\n * Create the state required to render BreadcrumbDivider.\n *\n * The returned state can be modified with hooks such as useBreadcrumbDividerStyles_unstable,\n * before being passed to renderBreadcrumbDivider_unstable.\n *\n * @param props - props from this instance of BreadcrumbDivider\n * @param ref - reference to root HTMLElement of BreadcrumbDivider\n */\nexport const useBreadcrumbDivider_unstable = (\n props: BreadcrumbDividerProps,\n ref: React.Ref<HTMLLIElement>,\n): BreadcrumbDividerState => {\n const { size } = useBreadcrumbContext_unstable();\n const state = useBreadcrumbDividerBase_unstable(props, ref);\n const { dir } = useFluent();\n\n return {\n ...state,\n root: {\n ...state.root,\n children: getDividerIcon(dir),\n },\n size,\n };\n};\n\n/**\n * Base hook for BreadcrumbDivider component, which manages state related to slots structure and ARIA attributes\n * without design props. Note: size is provided via BreadcrumbContext in the full hook.\n *\n * @param props - props from this instance of BreadcrumbDivider\n * @param ref - reference to root HTMLElement of BreadcrumbDivider\n */\nexport const useBreadcrumbDividerBase_unstable = (\n props: BreadcrumbDividerBaseProps,\n ref: React.Ref<HTMLLIElement>,\n): BreadcrumbDividerBaseState => {\n return {\n components: {\n root: 'li',\n },\n root: slot.always(\n getIntrinsicElementProps('li', {\n ref,\n 'aria-hidden': true,\n ...props,\n }),\n { elementType: 'li' },\n ),\n };\n};\n\n/**\n * Get icon of the divider\n *\n * @param dir - RTL or LTR\n */\nfunction getDividerIcon(dir: string) {\n return dir === 'rtl' ? <ChevronLeftRegular /> : <ChevronRightRegular />;\n}\n"],"names":["React","getIntrinsicElementProps","slot","ChevronRightRegular","ChevronLeftRegular","useBreadcrumbContext_unstable","useFluent_unstable","useFluent","useBreadcrumbDivider_unstable","props","ref","size","state","useBreadcrumbDividerBase_unstable","dir","root","children","getDividerIcon","components","always","elementType"],"mappings":"AAAA;;;;;;;;;;;;qCAgDaa;eAAAA;;iCAzBAL;;;;;iEArBU,QAAQ;gCACgB,4BAA4B;4BAOnB,wBAAwB;mCAClC,kCAAkC;qCAChC,kCAAkC;AAW3E,MAAMA,gCAAgC,CAC3CC,OACAC;IAEA,MAAM,EAAEC,IAAI,EAAE,GAAGN,oDAAAA;IACjB,MAAMO,QAAQC,kCAAkCJ,OAAOC;IACvD,MAAM,EAAEI,GAAG,EAAE,OAAGP,uCAAAA;IAEhB,OAAO;QACL,GAAGK,KAAK;QACRG,MAAM;YACJ,GAAGH,MAAMG,IAAI;YACbC,UAAUC,eAAeH;QAC3B;QACAH;IACF;AACF,EAAE;AASK,0CAA0C,CAC/CF,OACAC;IAEA,OAAO;QACLQ,YAAY;YACVH,MAAM;QACR;QACAA,MAAMb,oBAAAA,CAAKiB,MAAM,KACflB,wCAAAA,EAAyB,MAAM;YAC7BS;YACA,eAAe;YACf,GAAGD,KAAK;QACV,IACA;YAAEW,aAAa;QAAK;IAExB;AACF,EAAE;AAEF;;;;CAIC,GACD,SAASH,eAAeH,GAAW;IACjC,OAAOA,QAAQ,QAAA,WAAA,GAAQ,OAAA,aAAA,CAACV,8BAAAA,EAAAA,QAAAA,WAAAA,GAAwB,OAAA,aAAA,CAACD,+BAAAA,EAAAA;AACnD"}

View File

@@ -0,0 +1,53 @@
'use client';
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: all[name]
});
}
_export(exports, {
breadcrumbDividerClassNames: function() {
return breadcrumbDividerClassNames;
},
useBreadcrumbDividerStyles_unstable: function() {
return useBreadcrumbDividerStyles_unstable;
}
});
const _react = require("@griffel/react");
const breadcrumbDividerClassNames = {
root: 'fui-BreadcrumbDivider'
};
/**
* Styles for the root slot
*/ const useStyles = /*#__PURE__*/ (0, _react.__resetStyles)("rk008qs", null, [
".rk008qs{display:flex;}"
]);
const useIconStyles = /*#__PURE__*/ (0, _react.__styles)({
small: {
Be2twd7: "f1ugzwwg"
},
medium: {
Be2twd7: "f4ybsrx"
},
large: {
Be2twd7: "fe5j1ua"
}
}, {
d: [
".f1ugzwwg{font-size:12px;}",
".f4ybsrx{font-size:16px;}",
".fe5j1ua{font-size:20px;}"
]
});
const useBreadcrumbDividerStyles_unstable = (state)=>{
'use no memo';
const styles = useStyles();
const iconStyles = useIconStyles();
const { size = 'medium' } = state;
state.root.className = (0, _react.mergeClasses)(breadcrumbDividerClassNames.root, styles, iconStyles[size], state.root.className);
return state;
};

View File

@@ -0,0 +1 @@
{"version":3,"sources":["useBreadcrumbDividerStyles.styles.js"],"sourcesContent":["'use client';\nimport { makeStyles, makeResetStyles, mergeClasses } from '@griffel/react';\nexport const breadcrumbDividerClassNames = {\n root: 'fui-BreadcrumbDivider'\n};\n/**\n * Styles for the root slot\n */ const useStyles = makeResetStyles({\n display: 'flex'\n});\nconst useIconStyles = makeStyles({\n small: {\n fontSize: '12px'\n },\n medium: {\n fontSize: '16px'\n },\n large: {\n fontSize: '20px'\n }\n});\n/**\n * Apply styling to the BreadcrumbDivider slots based on the state\n */ export const useBreadcrumbDividerStyles_unstable = (state)=>{\n 'use no memo';\n const styles = useStyles();\n const iconStyles = useIconStyles();\n const { size = 'medium' } = state;\n state.root.className = mergeClasses(breadcrumbDividerClassNames.root, styles, iconStyles[size], state.root.className);\n return state;\n};\n"],"names":["__styles","__resetStyles","mergeClasses","breadcrumbDividerClassNames","root","useStyles","useIconStyles","small","Be2twd7","medium","large","d","useBreadcrumbDividerStyles_unstable","state","styles","iconStyles","size","className"],"mappings":"AAAA,YAAY;;;;;;;;;;;;IAECG,2BAA2B;;;uCAqBY;;;;uBAtBM,gBAAgB;AACnE,oCAAoC;IACvCC,IAAI,EAAE;AACV,CAAC;AACD;;CAEA,GAAI,MAAMC,SAAS,GAAA,WAAA,OAAGJ,oBAAA,EAAA,WAAA,MAAA;IAAA;CAErB,CAAC;AACF,MAAMK,aAAa,GAAA,WAAA,OAAGN,eAAA,EAAA;IAAAO,KAAA,EAAA;QAAAC,OAAA,EAAA;IAAA;IAAAC,MAAA,EAAA;QAAAD,OAAA,EAAA;IAAA;IAAAE,KAAA,EAAA;QAAAF,OAAA,EAAA;IAAA;AAAA,GAAA;IAAAG,CAAA,EAAA;QAAA;QAAA;QAAA;KAAA;AAAA,CAUrB,CAAC;AAGS,MAAMC,uCAAuCC,KAAK,IAAG;IAC5D,aAAa;IACb,MAAMC,MAAM,GAAGT,SAAS,CAAC,CAAC;IAC1B,MAAMU,UAAU,GAAGT,aAAa,CAAC,CAAC;IAClC,MAAM,EAAEU,IAAI,GAAG,QAAA,EAAU,GAAGH,KAAK;IACjCA,KAAK,CAACT,IAAI,CAACa,SAAS,OAAGf,mBAAY,EAACC,2BAA2B,CAACC,IAAI,EAAEU,MAAM,EAAEC,UAAU,CAACC,IAAI,CAAC,EAAEH,KAAK,CAACT,IAAI,CAACa,SAAS,CAAC;IACrH,OAAOJ,KAAK;AAChB,CAAC"}

View File

@@ -0,0 +1,47 @@
'use client';
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: all[name]
});
}
_export(exports, {
breadcrumbDividerClassNames: function() {
return breadcrumbDividerClassNames;
},
useBreadcrumbDividerStyles_unstable: function() {
return useBreadcrumbDividerStyles_unstable;
}
});
const _react = require("@griffel/react");
const breadcrumbDividerClassNames = {
root: 'fui-BreadcrumbDivider'
};
/**
* Styles for the root slot
*/ const useStyles = (0, _react.makeResetStyles)({
display: 'flex'
});
const useIconStyles = (0, _react.makeStyles)({
small: {
fontSize: '12px'
},
medium: {
fontSize: '16px'
},
large: {
fontSize: '20px'
}
});
const useBreadcrumbDividerStyles_unstable = (state)=>{
'use no memo';
const styles = useStyles();
const iconStyles = useIconStyles();
const { size = 'medium' } = state;
state.root.className = (0, _react.mergeClasses)(breadcrumbDividerClassNames.root, styles, iconStyles[size], state.root.className);
return state;
};

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../src/components/BreadcrumbDivider/useBreadcrumbDividerStyles.styles.ts"],"sourcesContent":["'use client';\n\nimport { makeStyles, makeResetStyles, mergeClasses } from '@griffel/react';\nimport type { BreadcrumbDividerSlots, BreadcrumbDividerState } from './BreadcrumbDivider.types';\nimport type { SlotClassNames } from '@fluentui/react-utilities';\n\nexport const breadcrumbDividerClassNames: SlotClassNames<BreadcrumbDividerSlots> = {\n root: 'fui-BreadcrumbDivider',\n};\n\n/**\n * Styles for the root slot\n */\nconst useStyles = makeResetStyles({\n display: 'flex',\n});\n\nconst useIconStyles = makeStyles({\n small: {\n fontSize: '12px',\n },\n medium: {\n fontSize: '16px',\n },\n large: {\n fontSize: '20px',\n },\n});\n\n/**\n * Apply styling to the BreadcrumbDivider slots based on the state\n */\nexport const useBreadcrumbDividerStyles_unstable = (state: BreadcrumbDividerState): BreadcrumbDividerState => {\n 'use no memo';\n\n const styles = useStyles();\n const iconStyles = useIconStyles();\n const { size = 'medium' } = state;\n\n state.root.className = mergeClasses(breadcrumbDividerClassNames.root, styles, iconStyles[size], state.root.className);\n\n return state;\n};\n"],"names":["makeStyles","makeResetStyles","mergeClasses","breadcrumbDividerClassNames","root","useStyles","display","useIconStyles","small","fontSize","medium","large","useBreadcrumbDividerStyles_unstable","state","styles","iconStyles","size","className"],"mappings":"AAAA;;;;;;;;;;;;IAMaG,2BAAAA;;;IA0BAS,mCAAAA;;;;uBA9B6C,iBAAiB;AAIpE,oCAA4E;IACjFR,MAAM;AACR,EAAE;AAEF;;CAEC,GACD,MAAMC,gBAAYJ,sBAAAA,EAAgB;IAChCK,SAAS;AACX;AAEA,MAAMC,oBAAgBP,iBAAAA,EAAW;IAC/BQ,OAAO;QACLC,UAAU;IACZ;IACAC,QAAQ;QACND,UAAU;IACZ;IACAE,OAAO;QACLF,UAAU;IACZ;AACF;AAKO,4CAA4C,CAACI;IAClD;IAEA,MAAMC,SAAST;IACf,MAAMU,aAAaR;IACnB,MAAM,EAAES,OAAO,QAAQ,EAAE,GAAGH;IAE5BA,MAAMT,IAAI,CAACa,SAAS,OAAGf,mBAAAA,EAAaC,4BAA4BC,IAAI,EAAEU,QAAQC,UAAU,CAACC,KAAK,EAAEH,MAAMT,IAAI,CAACa,SAAS;IAEpH,OAAOJ;AACT,EAAE"}