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,17 @@
'use client';
import * as React from 'react';
import { useBreadcrumb_unstable } from './useBreadcrumb';
import { renderBreadcrumb_unstable } from './renderBreadcrumb';
import { useBreadcrumbStyles_unstable } from './useBreadcrumbStyles.styles';
import { useBreadcrumbContextValues_unstable } from './useBreadcrumbContextValue';
import { useCustomStyleHook_unstable } from '@fluentui/react-shared-contexts';
/**
* Breadcrumb component - TODO: add more docs
*/ export const Breadcrumb = /*#__PURE__*/ React.forwardRef((props, ref)=>{
const state = useBreadcrumb_unstable(props, ref);
const contextValues = useBreadcrumbContextValues_unstable(state);
useBreadcrumbStyles_unstable(state);
useCustomStyleHook_unstable('useBreadcrumbStyles_unstable')(state);
return renderBreadcrumb_unstable(state, contextValues);
});
Breadcrumb.displayName = 'Breadcrumb';

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../src/components/Breadcrumb/Breadcrumb.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useBreadcrumb_unstable } from './useBreadcrumb';\nimport { renderBreadcrumb_unstable } from './renderBreadcrumb';\nimport { useBreadcrumbStyles_unstable } from './useBreadcrumbStyles.styles';\nimport type { BreadcrumbProps } from './Breadcrumb.types';\nimport type { ForwardRefComponent } from '@fluentui/react-utilities';\nimport { useBreadcrumbContextValues_unstable } from './useBreadcrumbContextValue';\nimport { useCustomStyleHook_unstable } from '@fluentui/react-shared-contexts';\n\n/**\n * Breadcrumb component - TODO: add more docs\n */\nexport const Breadcrumb: ForwardRefComponent<BreadcrumbProps> = React.forwardRef((props, ref) => {\n const state = useBreadcrumb_unstable(props, ref);\n const contextValues = useBreadcrumbContextValues_unstable(state);\n\n useBreadcrumbStyles_unstable(state);\n useCustomStyleHook_unstable('useBreadcrumbStyles_unstable')(state);\n\n return renderBreadcrumb_unstable(state, contextValues);\n});\n\nBreadcrumb.displayName = 'Breadcrumb';\n"],"names":["React","useBreadcrumb_unstable","renderBreadcrumb_unstable","useBreadcrumbStyles_unstable","useBreadcrumbContextValues_unstable","useCustomStyleHook_unstable","Breadcrumb","forwardRef","props","ref","state","contextValues","displayName"],"mappings":"AAAA;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,sBAAsB,QAAQ,kBAAkB;AACzD,SAASC,yBAAyB,QAAQ,qBAAqB;AAC/D,SAASC,4BAA4B,QAAQ,+BAA+B;AAG5E,SAASC,mCAAmC,QAAQ,8BAA8B;AAClF,SAASC,2BAA2B,QAAQ,kCAAkC;AAE9E;;CAEC,GACD,OAAO,MAAMC,2BAAmDN,MAAMO,UAAU,CAAC,CAACC,OAAOC;IACvF,MAAMC,QAAQT,uBAAuBO,OAAOC;IAC5C,MAAME,gBAAgBP,oCAAoCM;IAE1DP,6BAA6BO;IAC7BL,4BAA4B,gCAAgCK;IAE5D,OAAOR,0BAA0BQ,OAAOC;AAC1C,GAAG;AAEHL,WAAWM,WAAW,GAAG"}

View File

@@ -0,0 +1 @@
export { };

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../src/components/Breadcrumb/Breadcrumb.types.ts"],"sourcesContent":["import type { ComponentProps, ComponentState, Slot } from '@fluentui/react-utilities';\n\n/**\n * Data shared between breadcrumb components\n */\nexport type BreadcrumbContextValues = Required<Pick<BreadcrumbProps, 'size'>>;\n\nexport type BreadcrumbSlots = {\n /**\n * Root element of the component.\n */\n root: Slot<'nav'>;\n /**\n * Ordered list which contains items.\n */\n list?: Slot<'ol'>;\n};\n\n/**\n * Breadcrumb Props\n */\nexport type BreadcrumbProps = ComponentProps<BreadcrumbSlots> & {\n /**\n * Sets the focus behavior for the Breadcrumb.\n *\n * `tab`\n * This behaviour will cycle through all elements inside of the Breadcrumb when pressing the Tab key and then release focus\n * after the last inner element.\n *\n * `arrow`\n * This behaviour will cycle through all elements inside of the Breadcrumb when pressing the Arrow key.\n *\n * @default 'tab'\n */\n focusMode?: 'arrow' | 'tab';\n\n /**\n * Controls size of Breadcrumb items and dividers.\n *\n * @default 'medium'\n */\n size?: 'small' | 'medium' | 'large';\n};\n\n/**\n * State used in rendering Breadcrumb\n */\nexport type BreadcrumbState = ComponentState<BreadcrumbSlots> & Required<Pick<BreadcrumbProps, 'size'>>;\n\nexport type BreadcrumbBaseProps = Omit<BreadcrumbProps, 'size'>;\n\nexport type BreadcrumbBaseState = Omit<BreadcrumbState, 'size'>;\n"],"names":[],"mappings":"AAmDA,WAAgE"}

View File

@@ -0,0 +1,17 @@
'use client';
import * as React from 'react';
const BreadcrumbContext = React.createContext(undefined);
/**
* @internal
*/ export const breadcrumbDefaultValue = {
size: 'medium'
};
/**
* @internal
*/ export const BreadcrumbProvider = BreadcrumbContext.Provider;
/**
* @internal
*/ export const useBreadcrumbContext_unstable = ()=>{
var _React_useContext;
return (_React_useContext = React.useContext(BreadcrumbContext)) !== null && _React_useContext !== void 0 ? _React_useContext : breadcrumbDefaultValue;
};

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../src/components/Breadcrumb/BreadcrumbContext.ts"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { BreadcrumbContextValues } from './Breadcrumb.types';\n\nconst BreadcrumbContext = React.createContext<BreadcrumbContextValues | undefined>(undefined);\n\n/**\n * @internal\n */\nexport const breadcrumbDefaultValue: BreadcrumbContextValues = {\n size: 'medium',\n};\n\n/**\n * @internal\n */\nexport const BreadcrumbProvider = BreadcrumbContext.Provider;\n\n/**\n * @internal\n */\nexport const useBreadcrumbContext_unstable = (): BreadcrumbContextValues =>\n React.useContext(BreadcrumbContext) ?? breadcrumbDefaultValue;\n"],"names":["React","BreadcrumbContext","createContext","undefined","breadcrumbDefaultValue","size","BreadcrumbProvider","Provider","useBreadcrumbContext_unstable","useContext"],"mappings":"AAAA;AAEA,YAAYA,WAAW,QAAQ;AAG/B,MAAMC,oBAAoBD,MAAME,aAAa,CAAsCC;AAEnF;;CAEC,GACD,OAAO,MAAMC,yBAAkD;IAC7DC,MAAM;AACR,EAAE;AAEF;;CAEC,GACD,OAAO,MAAMC,qBAAqBL,kBAAkBM,QAAQ,CAAC;AAE7D;;CAEC,GACD,OAAO,MAAMC,gCAAgC;QAC3CR;WAAAA,CAAAA,oBAAAA,MAAMS,UAAU,CAACR,gCAAjBD,+BAAAA,oBAAuCI;EAAuB"}

View File

@@ -0,0 +1,5 @@
export { Breadcrumb } from './Breadcrumb';
export { BreadcrumbProvider, breadcrumbDefaultValue, useBreadcrumbContext_unstable } from './BreadcrumbContext';
export { renderBreadcrumb_unstable } from './renderBreadcrumb';
export { useBreadcrumb_unstable, useBreadcrumbBase_unstable, useBreadcrumbA11yBehavior_unstable } from './useBreadcrumb';
export { breadcrumbClassNames, useBreadcrumbStyles_unstable } from './useBreadcrumbStyles.styles';

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../src/components/Breadcrumb/index.ts"],"sourcesContent":["export { Breadcrumb } from './Breadcrumb';\nexport type {\n BreadcrumbBaseProps,\n BreadcrumbBaseState,\n BreadcrumbContextValues,\n BreadcrumbProps,\n BreadcrumbSlots,\n BreadcrumbState,\n} from './Breadcrumb.types';\nexport { BreadcrumbProvider, breadcrumbDefaultValue, useBreadcrumbContext_unstable } from './BreadcrumbContext';\nexport { renderBreadcrumb_unstable } from './renderBreadcrumb';\nexport {\n useBreadcrumb_unstable,\n useBreadcrumbBase_unstable,\n useBreadcrumbA11yBehavior_unstable,\n} from './useBreadcrumb';\nexport { breadcrumbClassNames, useBreadcrumbStyles_unstable } from './useBreadcrumbStyles.styles';\n"],"names":["Breadcrumb","BreadcrumbProvider","breadcrumbDefaultValue","useBreadcrumbContext_unstable","renderBreadcrumb_unstable","useBreadcrumb_unstable","useBreadcrumbBase_unstable","useBreadcrumbA11yBehavior_unstable","breadcrumbClassNames","useBreadcrumbStyles_unstable"],"mappings":"AAAA,SAASA,UAAU,QAAQ,eAAe;AAS1C,SAASC,kBAAkB,EAAEC,sBAAsB,EAAEC,6BAA6B,QAAQ,sBAAsB;AAChH,SAASC,yBAAyB,QAAQ,qBAAqB;AAC/D,SACEC,sBAAsB,EACtBC,0BAA0B,EAC1BC,kCAAkC,QAC7B,kBAAkB;AACzB,SAASC,oBAAoB,EAAEC,4BAA4B,QAAQ,+BAA+B"}

View File

@@ -0,0 +1,16 @@
import { jsx as _jsx } from "@fluentui/react-jsx-runtime/jsx-runtime";
import { assertSlots } from '@fluentui/react-utilities';
import { BreadcrumbProvider } from './BreadcrumbContext';
/**
* Render the final JSX of Breadcrumb
*/ export const renderBreadcrumb_unstable = (state, contextValues)=>{
assertSlots(state);
return /*#__PURE__*/ _jsx(state.root, {
children: /*#__PURE__*/ _jsx(BreadcrumbProvider, {
value: contextValues,
children: state.list && /*#__PURE__*/ _jsx(state.list, {
children: state.root.children
})
})
});
};

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../src/components/Breadcrumb/renderBreadcrumb.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 { BreadcrumbProvider } from './BreadcrumbContext';\nimport type { BreadcrumbState, BreadcrumbSlots, BreadcrumbContextValues } from './Breadcrumb.types';\n/**\n * Render the final JSX of Breadcrumb\n */\nexport const renderBreadcrumb_unstable = (\n state: BreadcrumbState,\n contextValues: BreadcrumbContextValues,\n): JSXElement => {\n assertSlots<BreadcrumbSlots>(state);\n return (\n <state.root>\n <BreadcrumbProvider value={contextValues}>\n {state.list && <state.list>{state.root.children}</state.list>}\n </BreadcrumbProvider>\n </state.root>\n );\n};\n"],"names":["assertSlots","BreadcrumbProvider","renderBreadcrumb_unstable","state","contextValues","root","value","list","children"],"mappings":"AAAA,0BAA0B,GAC1B,iDAAiD;AAEjD,SAASA,WAAW,QAAQ,4BAA4B;AAGxD,SAASC,kBAAkB,QAAQ,sBAAsB;AAEzD;;CAEC,GACD,OAAO,MAAMC,4BAA4B,CACvCC,OACAC;IAEAJ,YAA6BG;IAC7B,qBACE,KAACA,MAAME,IAAI;kBACT,cAAA,KAACJ;YAAmBK,OAAOF;sBACxBD,MAAMI,IAAI,kBAAI,KAACJ,MAAMI,IAAI;0BAAEJ,MAAME,IAAI,CAACG,QAAQ;;;;AAIvD,EAAE"}

View File

@@ -0,0 +1,72 @@
'use client';
import * as React from 'react';
import { getIntrinsicElementProps, slot } from '@fluentui/react-utilities';
import { useArrowNavigationGroup } from '@fluentui/react-tabster';
/**
* Create the state required to render Breadcrumb.
*
* The returned state can be modified with hooks such as useBreadcrumbStyles_unstable,
* before being passed to renderBreadcrumb_unstable.
*
* @param props - props from this instance of Breadcrumb
* @param ref - reference to root HTMLElement of Breadcrumb
*/ export const useBreadcrumb_unstable = (props, ref)=>{
const { focusMode = 'tab', size = 'medium', ...breadcrumbProps } = props;
const state = useBreadcrumbBase_unstable(breadcrumbProps, ref);
const focusAttributes = useBreadcrumbA11yBehavior_unstable({
focusMode
});
return {
...state,
root: {
...focusAttributes,
...state.root
},
size
};
};
/**
* Base hook for Breadcrumb component, which manages state related to slots structure and ARIA attributes.
*
* Note: keyboard navigation behavior is not handled in this hook, but in useBreadcrumbA11yBehavior_unstable.
*
* @param props - props from this instance of Breadcrumb
* @param ref - reference to root HTMLElement of Breadcrumb
*/ export const useBreadcrumbBase_unstable = (props, ref)=>{
const { focusMode = 'tab', list, ...rest } = props;
var _props_arialabel;
return {
components: {
root: 'nav',
list: 'ol'
},
root: slot.always(getIntrinsicElementProps('nav', {
ref,
'aria-label': (_props_arialabel = props['aria-label']) !== null && _props_arialabel !== void 0 ? _props_arialabel : 'breadcrumb',
...rest
}), {
elementType: 'nav'
}),
list: slot.optional(list, {
renderByDefault: true,
defaultProps: {
role: 'list'
},
elementType: 'ol'
})
};
};
/**
* Hook to get accessibility attributes for Breadcrumb component, such as roving tab index.
* Based on Tabster's useArrowNavigationGroup.
*
* @param focusMode - whether the Breadcrumb uses arrow key navigation or tab key navigation
* @returns Tabster DOM attributes
*/ export const useBreadcrumbA11yBehavior_unstable = ({ focusMode })=>{
const focusAttributes = useArrowNavigationGroup({
circular: true,
axis: 'horizontal',
memorizeCurrent: true
});
return focusMode === 'arrow' ? focusAttributes : {};
};

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../src/components/Breadcrumb/useBreadcrumb.ts"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { getIntrinsicElementProps, slot } from '@fluentui/react-utilities';\nimport type { BreadcrumbBaseProps, BreadcrumbBaseState, BreadcrumbProps, BreadcrumbState } from './Breadcrumb.types';\nimport { TabsterDOMAttribute, useArrowNavigationGroup } from '@fluentui/react-tabster';\n\n/**\n * Create the state required to render Breadcrumb.\n *\n * The returned state can be modified with hooks such as useBreadcrumbStyles_unstable,\n * before being passed to renderBreadcrumb_unstable.\n *\n * @param props - props from this instance of Breadcrumb\n * @param ref - reference to root HTMLElement of Breadcrumb\n */\nexport const useBreadcrumb_unstable = (props: BreadcrumbProps, ref: React.Ref<HTMLElement>): BreadcrumbState => {\n const { focusMode = 'tab', size = 'medium', ...breadcrumbProps } = props;\n const state = useBreadcrumbBase_unstable(breadcrumbProps, ref);\n const focusAttributes = useBreadcrumbA11yBehavior_unstable({ focusMode });\n\n return {\n ...state,\n root: {\n ...focusAttributes,\n ...state.root,\n },\n size,\n };\n};\n\n/**\n * Base hook for Breadcrumb component, which manages state related to slots structure and ARIA attributes.\n *\n * Note: keyboard navigation behavior is not handled in this hook, but in useBreadcrumbA11yBehavior_unstable.\n *\n * @param props - props from this instance of Breadcrumb\n * @param ref - reference to root HTMLElement of Breadcrumb\n */\nexport const useBreadcrumbBase_unstable = (\n props: BreadcrumbBaseProps,\n ref: React.Ref<HTMLElement>,\n): BreadcrumbBaseState => {\n const { focusMode = 'tab', list, ...rest } = props;\n\n return {\n components: {\n root: 'nav',\n list: 'ol',\n },\n root: slot.always(\n getIntrinsicElementProps('nav', {\n ref,\n 'aria-label': props['aria-label'] ?? 'breadcrumb',\n ...rest,\n }),\n { elementType: 'nav' },\n ),\n list: slot.optional(list, { renderByDefault: true, defaultProps: { role: 'list' }, elementType: 'ol' }),\n };\n};\n\n/**\n * Hook to get accessibility attributes for Breadcrumb component, such as roving tab index.\n * Based on Tabster's useArrowNavigationGroup.\n *\n * @param focusMode - whether the Breadcrumb uses arrow key navigation or tab key navigation\n * @returns Tabster DOM attributes\n */\nexport const useBreadcrumbA11yBehavior_unstable = ({\n focusMode,\n}: Pick<BreadcrumbBaseProps, 'focusMode'>): Partial<TabsterDOMAttribute> => {\n const focusAttributes = useArrowNavigationGroup({\n circular: true,\n axis: 'horizontal',\n memorizeCurrent: true,\n });\n\n return focusMode === 'arrow' ? focusAttributes : {};\n};\n"],"names":["React","getIntrinsicElementProps","slot","useArrowNavigationGroup","useBreadcrumb_unstable","props","ref","focusMode","size","breadcrumbProps","state","useBreadcrumbBase_unstable","focusAttributes","useBreadcrumbA11yBehavior_unstable","root","list","rest","components","always","elementType","optional","renderByDefault","defaultProps","role","circular","axis","memorizeCurrent"],"mappings":"AAAA;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,wBAAwB,EAAEC,IAAI,QAAQ,4BAA4B;AAE3E,SAA8BC,uBAAuB,QAAQ,0BAA0B;AAEvF;;;;;;;;CAQC,GACD,OAAO,MAAMC,yBAAyB,CAACC,OAAwBC;IAC7D,MAAM,EAAEC,YAAY,KAAK,EAAEC,OAAO,QAAQ,EAAE,GAAGC,iBAAiB,GAAGJ;IACnE,MAAMK,QAAQC,2BAA2BF,iBAAiBH;IAC1D,MAAMM,kBAAkBC,mCAAmC;QAAEN;IAAU;IAEvE,OAAO;QACL,GAAGG,KAAK;QACRI,MAAM;YACJ,GAAGF,eAAe;YAClB,GAAGF,MAAMI,IAAI;QACf;QACAN;IACF;AACF,EAAE;AAEF;;;;;;;CAOC,GACD,OAAO,MAAMG,6BAA6B,CACxCN,OACAC;IAEA,MAAM,EAAEC,YAAY,KAAK,EAAEQ,IAAI,EAAE,GAAGC,MAAM,GAAGX;QAUzBA;IARpB,OAAO;QACLY,YAAY;YACVH,MAAM;YACNC,MAAM;QACR;QACAD,MAAMZ,KAAKgB,MAAM,CACfjB,yBAAyB,OAAO;YAC9BK;YACA,cAAcD,CAAAA,mBAAAA,KAAK,CAAC,aAAa,cAAnBA,8BAAAA,mBAAuB;YACrC,GAAGW,IAAI;QACT,IACA;YAAEG,aAAa;QAAM;QAEvBJ,MAAMb,KAAKkB,QAAQ,CAACL,MAAM;YAAEM,iBAAiB;YAAMC,cAAc;gBAAEC,MAAM;YAAO;YAAGJ,aAAa;QAAK;IACvG;AACF,EAAE;AAEF;;;;;;CAMC,GACD,OAAO,MAAMN,qCAAqC,CAAC,EACjDN,SAAS,EAC8B;IACvC,MAAMK,kBAAkBT,wBAAwB;QAC9CqB,UAAU;QACVC,MAAM;QACNC,iBAAiB;IACnB;IAEA,OAAOnB,cAAc,UAAUK,kBAAkB,CAAC;AACpD,EAAE"}

View File

@@ -0,0 +1,10 @@
'use client';
import * as React from 'react';
export function useBreadcrumbContextValues_unstable(state) {
const { size } = state;
return React.useMemo(()=>({
size
}), [
size
]);
}

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../src/components/Breadcrumb/useBreadcrumbContextValue.ts"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport type { BreadcrumbContextValues, BreadcrumbState } from './Breadcrumb.types';\n\nexport function useBreadcrumbContextValues_unstable(state: BreadcrumbState): BreadcrumbContextValues {\n const { size } = state;\n return React.useMemo(() => ({ size }), [size]);\n}\n"],"names":["React","useBreadcrumbContextValues_unstable","state","size","useMemo"],"mappings":"AAAA;AAEA,YAAYA,WAAW,QAAQ;AAG/B,OAAO,SAASC,oCAAoCC,KAAsB;IACxE,MAAM,EAAEC,IAAI,EAAE,GAAGD;IACjB,OAAOF,MAAMI,OAAO,CAAC,IAAO,CAAA;YAAED;QAAK,CAAA,GAAI;QAACA;KAAK;AAC/C"}

View File

@@ -0,0 +1,21 @@
'use client';
import { __resetStyles, mergeClasses } from '@griffel/react';
export const breadcrumbClassNames = {
root: 'fui-Breadcrumb',
list: 'fui-Breadcrumb__list'
};
const useListClassName = /*#__PURE__*/__resetStyles("rc5rb6b", null, [".rc5rb6b{list-style-type:none;display:flex;align-items:center;margin:0;padding:0;}"]);
/**
* Apply styling to the Breadcrumb slots based on the state
*/
export const useBreadcrumbStyles_unstable = state => {
'use no memo';
const listBaseClassName = useListClassName();
state.root.className = mergeClasses(breadcrumbClassNames.root, state.root.className);
if (state.list) {
state.list.className = mergeClasses(listBaseClassName, breadcrumbClassNames.list, state.list.className);
}
return state;
};

View File

@@ -0,0 +1 @@
{"version":3,"names":["__resetStyles","mergeClasses","breadcrumbClassNames","root","list","useListClassName","useBreadcrumbStyles_unstable","state","listBaseClassName","className"],"sources":["useBreadcrumbStyles.styles.js"],"sourcesContent":["'use client';\nimport { makeResetStyles, mergeClasses } from '@griffel/react';\nexport const breadcrumbClassNames = {\n root: 'fui-Breadcrumb',\n list: 'fui-Breadcrumb__list'\n};\nconst useListClassName = makeResetStyles({\n listStyleType: 'none',\n display: 'flex',\n alignItems: 'center',\n margin: 0,\n padding: 0\n});\n/**\n * Apply styling to the Breadcrumb slots based on the state\n */ export const useBreadcrumbStyles_unstable = (state)=>{\n 'use no memo';\n const listBaseClassName = useListClassName();\n state.root.className = mergeClasses(breadcrumbClassNames.root, state.root.className);\n if (state.list) {\n state.list.className = mergeClasses(listBaseClassName, breadcrumbClassNames.list, state.list.className);\n }\n return state;\n};\n"],"mappings":"AAAA,YAAY;;AACZ,SAAAA,aAAA,EAA0BC,YAAY,QAAQ,gBAAgB;AAC9D,OAAO,MAAMC,oBAAoB,GAAG;EAChCC,IAAI,EAAE,gBAAgB;EACtBC,IAAI,EAAE;AACV,CAAC;AACD,MAAMC,gBAAgB,gBAAGL,aAAA,wGAMxB,CAAC;AACF;AACA;AACA;AAAI,OAAO,MAAMM,4BAA4B,GAAIC,KAAK,IAAG;EACrD,aAAa;;EACb,MAAMC,iBAAiB,GAAGH,gBAAgB,CAAC,CAAC;EAC5CE,KAAK,CAACJ,IAAI,CAACM,SAAS,GAAGR,YAAY,CAACC,oBAAoB,CAACC,IAAI,EAAEI,KAAK,CAACJ,IAAI,CAACM,SAAS,CAAC;EACpF,IAAIF,KAAK,CAACH,IAAI,EAAE;IACZG,KAAK,CAACH,IAAI,CAACK,SAAS,GAAGR,YAAY,CAACO,iBAAiB,EAAEN,oBAAoB,CAACE,IAAI,EAAEG,KAAK,CAACH,IAAI,CAACK,SAAS,CAAC;EAC3G;EACA,OAAOF,KAAK;AAChB,CAAC","ignoreList":[]}

View File

@@ -0,0 +1,24 @@
'use client';
import { makeResetStyles, mergeClasses } from '@griffel/react';
export const breadcrumbClassNames = {
root: 'fui-Breadcrumb',
list: 'fui-Breadcrumb__list'
};
const useListClassName = makeResetStyles({
listStyleType: 'none',
display: 'flex',
alignItems: 'center',
margin: 0,
padding: 0
});
/**
* Apply styling to the Breadcrumb slots based on the state
*/ export const useBreadcrumbStyles_unstable = (state)=>{
'use no memo';
const listBaseClassName = useListClassName();
state.root.className = mergeClasses(breadcrumbClassNames.root, state.root.className);
if (state.list) {
state.list.className = mergeClasses(listBaseClassName, breadcrumbClassNames.list, state.list.className);
}
return state;
};

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../src/components/Breadcrumb/useBreadcrumbStyles.styles.ts"],"sourcesContent":["'use client';\n\nimport { makeResetStyles, mergeClasses } from '@griffel/react';\nimport type { BreadcrumbSlots, BreadcrumbState } from './Breadcrumb.types';\nimport type { SlotClassNames } from '@fluentui/react-utilities';\n\nexport const breadcrumbClassNames: SlotClassNames<BreadcrumbSlots> = {\n root: 'fui-Breadcrumb',\n list: 'fui-Breadcrumb__list',\n};\n\nconst useListClassName = makeResetStyles({\n listStyleType: 'none',\n display: 'flex',\n alignItems: 'center',\n margin: 0,\n padding: 0,\n});\n\n/**\n * Apply styling to the Breadcrumb slots based on the state\n */\nexport const useBreadcrumbStyles_unstable = (state: BreadcrumbState): BreadcrumbState => {\n 'use no memo';\n\n const listBaseClassName = useListClassName();\n state.root.className = mergeClasses(breadcrumbClassNames.root, state.root.className);\n if (state.list) {\n state.list.className = mergeClasses(listBaseClassName, breadcrumbClassNames.list, state.list.className);\n }\n return state;\n};\n"],"names":["makeResetStyles","mergeClasses","breadcrumbClassNames","root","list","useListClassName","listStyleType","display","alignItems","margin","padding","useBreadcrumbStyles_unstable","state","listBaseClassName","className"],"mappings":"AAAA;AAEA,SAASA,eAAe,EAAEC,YAAY,QAAQ,iBAAiB;AAI/D,OAAO,MAAMC,uBAAwD;IACnEC,MAAM;IACNC,MAAM;AACR,EAAE;AAEF,MAAMC,mBAAmBL,gBAAgB;IACvCM,eAAe;IACfC,SAAS;IACTC,YAAY;IACZC,QAAQ;IACRC,SAAS;AACX;AAEA;;CAEC,GACD,OAAO,MAAMC,+BAA+B,CAACC;IAC3C;IAEA,MAAMC,oBAAoBR;IAC1BO,MAAMT,IAAI,CAACW,SAAS,GAAGb,aAAaC,qBAAqBC,IAAI,EAAES,MAAMT,IAAI,CAACW,SAAS;IACnF,IAAIF,MAAMR,IAAI,EAAE;QACdQ,MAAMR,IAAI,CAACU,SAAS,GAAGb,aAAaY,mBAAmBX,qBAAqBE,IAAI,EAAEQ,MAAMR,IAAI,CAACU,SAAS;IACxG;IACA,OAAOF;AACT,EAAE"}

View File

@@ -0,0 +1,15 @@
'use client';
import * as React from 'react';
import { useBreadcrumbButton_unstable } from './useBreadcrumbButton';
import { renderBreadcrumbButton_unstable } from './renderBreadcrumbButton';
import { useBreadcrumbButtonStyles_unstable } from './useBreadcrumbButtonStyles.styles';
import { useCustomStyleHook_unstable } from '@fluentui/react-shared-contexts';
/**
* A button component which is used inside the Breadcrumb.
*/ export const BreadcrumbButton = /*#__PURE__*/ React.forwardRef((props, ref)=>{
const state = useBreadcrumbButton_unstable(props, ref);
useBreadcrumbButtonStyles_unstable(state);
useCustomStyleHook_unstable('useBreadcrumbButtonStyles_unstable')(state);
return renderBreadcrumbButton_unstable(state);
});
BreadcrumbButton.displayName = 'BreadcrumbButton';

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../src/components/BreadcrumbButton/BreadcrumbButton.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useBreadcrumbButton_unstable } from './useBreadcrumbButton';\nimport { renderBreadcrumbButton_unstable } from './renderBreadcrumbButton';\nimport { useBreadcrumbButtonStyles_unstable } from './useBreadcrumbButtonStyles.styles';\nimport { useCustomStyleHook_unstable } from '@fluentui/react-shared-contexts';\nimport type { BreadcrumbButtonProps } from './BreadcrumbButton.types';\nimport type { ForwardRefComponent } from '@fluentui/react-utilities';\n\n/**\n * A button component which is used inside the Breadcrumb.\n */\nexport const BreadcrumbButton: ForwardRefComponent<BreadcrumbButtonProps> = React.forwardRef((props, ref) => {\n const state = useBreadcrumbButton_unstable(props, ref);\n\n useBreadcrumbButtonStyles_unstable(state);\n useCustomStyleHook_unstable('useBreadcrumbButtonStyles_unstable')(state);\n\n return renderBreadcrumbButton_unstable(state);\n});\n\nBreadcrumbButton.displayName = 'BreadcrumbButton';\n"],"names":["React","useBreadcrumbButton_unstable","renderBreadcrumbButton_unstable","useBreadcrumbButtonStyles_unstable","useCustomStyleHook_unstable","BreadcrumbButton","forwardRef","props","ref","state","displayName"],"mappings":"AAAA;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,4BAA4B,QAAQ,wBAAwB;AACrE,SAASC,+BAA+B,QAAQ,2BAA2B;AAC3E,SAASC,kCAAkC,QAAQ,qCAAqC;AACxF,SAASC,2BAA2B,QAAQ,kCAAkC;AAI9E;;CAEC,GACD,OAAO,MAAMC,iCAA+DL,MAAMM,UAAU,CAAC,CAACC,OAAOC;IACnG,MAAMC,QAAQR,6BAA6BM,OAAOC;IAElDL,mCAAmCM;IACnCL,4BAA4B,sCAAsCK;IAElE,OAAOP,gCAAgCO;AACzC,GAAG;AAEHJ,iBAAiBK,WAAW,GAAG"}

View File

@@ -0,0 +1 @@
export { };

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../src/components/BreadcrumbButton/BreadcrumbButton.types.ts"],"sourcesContent":["import type { ComponentProps, ComponentState } from '@fluentui/react-utilities';\nimport { ButtonProps, ButtonSlots, ButtonState } from '@fluentui/react-button';\nimport { BreadcrumbProps } from '../Breadcrumb/Breadcrumb.types';\n\nexport type BreadcrumbButtonSlots = ButtonSlots;\n\n/**\n * BreadcrumbButton Props\n */\nexport type BreadcrumbButtonProps = ComponentProps<BreadcrumbButtonSlots> &\n Pick<BreadcrumbProps, 'size'> &\n Pick<ButtonProps, 'disabled' | 'disabledFocusable'> & {\n /**\n * Defines current sate of BreadcrumbButton.\n *\n * @default false\n */\n current?: boolean;\n };\n\n/**\n * State used in rendering BreadcrumbButton\n */\nexport type BreadcrumbButtonState = ComponentState<BreadcrumbButtonSlots> &\n Omit<ButtonState, keyof ButtonSlots | 'components'> &\n Required<Pick<BreadcrumbButtonProps, 'current' | 'size'>>;\n\nexport type BreadcrumbButtonBaseProps = Omit<BreadcrumbButtonProps, 'size'>;\n\nexport type BreadcrumbButtonBaseState = Omit<BreadcrumbButtonState, 'size'>;\n"],"names":[],"mappings":"AA6BA,WAA4E"}

View File

@@ -0,0 +1,4 @@
export { BreadcrumbButton } from './BreadcrumbButton';
export { renderBreadcrumbButton_unstable } from './renderBreadcrumbButton';
export { useBreadcrumbButton_unstable, useBreadcrumbButtonBase_unstable } from './useBreadcrumbButton';
export { breadcrumbButtonClassNames, useBreadcrumbButtonStyles_unstable } from './useBreadcrumbButtonStyles.styles';

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../src/components/BreadcrumbButton/index.ts"],"sourcesContent":["export { BreadcrumbButton } from './BreadcrumbButton';\nexport type {\n BreadcrumbButtonBaseProps,\n BreadcrumbButtonBaseState,\n BreadcrumbButtonProps,\n BreadcrumbButtonSlots,\n BreadcrumbButtonState,\n} from './BreadcrumbButton.types';\nexport { renderBreadcrumbButton_unstable } from './renderBreadcrumbButton';\nexport { useBreadcrumbButton_unstable, useBreadcrumbButtonBase_unstable } from './useBreadcrumbButton';\nexport { breadcrumbButtonClassNames, useBreadcrumbButtonStyles_unstable } from './useBreadcrumbButtonStyles.styles';\n"],"names":["BreadcrumbButton","renderBreadcrumbButton_unstable","useBreadcrumbButton_unstable","useBreadcrumbButtonBase_unstable","breadcrumbButtonClassNames","useBreadcrumbButtonStyles_unstable"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,qBAAqB;AAQtD,SAASC,+BAA+B,QAAQ,2BAA2B;AAC3E,SAASC,4BAA4B,EAAEC,gCAAgC,QAAQ,wBAAwB;AACvG,SAASC,0BAA0B,EAAEC,kCAAkC,QAAQ,qCAAqC"}

View File

@@ -0,0 +1,6 @@
import { renderButton_unstable } from '@fluentui/react-button';
/**
* Render the final JSX of BreadcrumbButton
*/ export const renderBreadcrumbButton_unstable = (state)=>{
return renderButton_unstable(state);
};

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../src/components/BreadcrumbButton/renderBreadcrumbButton.tsx"],"sourcesContent":["import type { BreadcrumbButtonState } from './BreadcrumbButton.types';\nimport type { JSXElement } from '@fluentui/react-utilities';\n\nimport { renderButton_unstable } from '@fluentui/react-button';\n\n/**\n * Render the final JSX of BreadcrumbButton\n */\nexport const renderBreadcrumbButton_unstable = (state: BreadcrumbButtonState): JSXElement => {\n return renderButton_unstable(state);\n};\n"],"names":["renderButton_unstable","renderBreadcrumbButton_unstable","state"],"mappings":"AAGA,SAASA,qBAAqB,QAAQ,yBAAyB;AAE/D;;CAEC,GACD,OAAO,MAAMC,kCAAkC,CAACC;IAC9C,OAAOF,sBAAsBE;AAC/B,EAAE"}

View File

@@ -0,0 +1,44 @@
'use client';
import * as React from 'react';
import { useButton_unstable } from '@fluentui/react-button';
import { useBreadcrumbContext_unstable } from '../Breadcrumb/BreadcrumbContext';
/**
* Create the state required to render BreadcrumbButton.
*
* The returned state can be modified with hooks such as useBreadcrumbButtonStyles_unstable,
* before being passed to renderBreadcrumbButton_unstable.
*
* @param props - props from this instance of BreadcrumbButton
* @param ref - reference to root HTMLElement of BreadcrumbButton
*/ export const useBreadcrumbButton_unstable = (props, ref)=>{
const { size } = useBreadcrumbContext_unstable();
const state = useBreadcrumbButtonBase_unstable(props, ref);
return {
...state,
size
};
};
/**
* Base hook for BreadcrumbButton component, which manages state related to button behavior,
* ARIA attributes (aria-current, aria-disabled), and slot structure without design props.
*
* @param props - props from this instance of BreadcrumbButton
* @param ref - reference to root HTMLElement of BreadcrumbButton
*/ export const useBreadcrumbButtonBase_unstable = (props, ref)=>{
const { current = false, as, ...rest } = props;
const controlType = (as !== null && as !== void 0 ? as : props.href) ? 'a' : 'button';
var _props_ariacurrent, _props_ariadisabled;
const { size: _size, ...buttonState } = useButton_unstable({
role: undefined,
type: undefined,
as: controlType,
iconPosition: 'before',
'aria-current': current ? (_props_ariacurrent = props['aria-current']) !== null && _props_ariacurrent !== void 0 ? _props_ariacurrent : 'page' : undefined,
'aria-disabled': current ? (_props_ariadisabled = props['aria-disabled']) !== null && _props_ariadisabled !== void 0 ? _props_ariadisabled : true : undefined,
...rest
}, ref);
return {
...buttonState,
current
};
};

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../src/components/BreadcrumbButton/useBreadcrumbButton.ts"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport type { ARIAButtonProps } from '@fluentui/react-aria';\nimport { useButton_unstable } from '@fluentui/react-button';\nimport type { ButtonProps } from '@fluentui/react-button';\nimport { useBreadcrumbContext_unstable } from '../Breadcrumb/BreadcrumbContext';\nimport type {\n BreadcrumbButtonBaseProps,\n BreadcrumbButtonBaseState,\n BreadcrumbButtonProps,\n BreadcrumbButtonState,\n} from './BreadcrumbButton.types';\n\n/**\n * Create the state required to render BreadcrumbButton.\n *\n * The returned state can be modified with hooks such as useBreadcrumbButtonStyles_unstable,\n * before being passed to renderBreadcrumbButton_unstable.\n *\n * @param props - props from this instance of BreadcrumbButton\n * @param ref - reference to root HTMLElement of BreadcrumbButton\n */\nexport const useBreadcrumbButton_unstable = (\n props: BreadcrumbButtonProps,\n ref: React.Ref<HTMLButtonElement | HTMLAnchorElement>,\n): BreadcrumbButtonState => {\n const { size } = useBreadcrumbContext_unstable();\n const state = useBreadcrumbButtonBase_unstable(props, ref);\n\n return {\n ...state,\n size,\n };\n};\n\n/**\n * Base hook for BreadcrumbButton component, which manages state related to button behavior,\n * ARIA attributes (aria-current, aria-disabled), and slot structure without design props.\n *\n * @param props - props from this instance of BreadcrumbButton\n * @param ref - reference to root HTMLElement of BreadcrumbButton\n */\nexport const useBreadcrumbButtonBase_unstable = (\n props: BreadcrumbButtonBaseProps,\n ref: React.Ref<HTMLButtonElement | HTMLAnchorElement>,\n): BreadcrumbButtonBaseState => {\n const { current = false, as, ...rest } = props;\n\n const controlType = as ?? (props as ARIAButtonProps<'a'>).href ? 'a' : 'button';\n\n const { size: _size, ...buttonState } = useButton_unstable(\n {\n role: undefined,\n type: undefined,\n as: controlType,\n iconPosition: 'before',\n 'aria-current': current ? props['aria-current'] ?? 'page' : undefined,\n 'aria-disabled': current ? props['aria-disabled'] ?? true : undefined,\n ...rest,\n } as ButtonProps,\n ref,\n );\n\n return {\n ...buttonState,\n current,\n };\n};\n"],"names":["React","useButton_unstable","useBreadcrumbContext_unstable","useBreadcrumbButton_unstable","props","ref","size","state","useBreadcrumbButtonBase_unstable","current","as","rest","controlType","href","_size","buttonState","role","undefined","type","iconPosition"],"mappings":"AAAA;AAEA,YAAYA,WAAW,QAAQ;AAE/B,SAASC,kBAAkB,QAAQ,yBAAyB;AAE5D,SAASC,6BAA6B,QAAQ,kCAAkC;AAQhF;;;;;;;;CAQC,GACD,OAAO,MAAMC,+BAA+B,CAC1CC,OACAC;IAEA,MAAM,EAAEC,IAAI,EAAE,GAAGJ;IACjB,MAAMK,QAAQC,iCAAiCJ,OAAOC;IAEtD,OAAO;QACL,GAAGE,KAAK;QACRD;IACF;AACF,EAAE;AAEF;;;;;;CAMC,GACD,OAAO,MAAME,mCAAmC,CAC9CJ,OACAC;IAEA,MAAM,EAAEI,UAAU,KAAK,EAAEC,EAAE,EAAE,GAAGC,MAAM,GAAGP;IAEzC,MAAMQ,cAAcF,CAAAA,eAAAA,gBAAAA,KAAM,AAACN,MAA+BS,IAAI,AAAD,IAAI,MAAM;QAQzCT,oBACCA;IAP/B,MAAM,EAAEE,MAAMQ,KAAK,EAAE,GAAGC,aAAa,GAAGd,mBACtC;QACEe,MAAMC;QACNC,MAAMD;QACNP,IAAIE;QACJO,cAAc;QACd,gBAAgBV,UAAUL,CAAAA,qBAAAA,KAAK,CAAC,eAAe,cAArBA,gCAAAA,qBAAyB,SAASa;QAC5D,iBAAiBR,UAAUL,CAAAA,sBAAAA,KAAK,CAAC,gBAAgB,cAAtBA,iCAAAA,sBAA0B,OAAOa;QAC5D,GAAGN,IAAI;IACT,GACAN;IAGF,OAAO;QACL,GAAGU,WAAW;QACdN;IACF;AACF,EAAE"}

View File

@@ -0,0 +1,169 @@
'use client';
import { __styles, mergeClasses } from '@griffel/react';
import { useButtonStyles_unstable, buttonClassNames } from '@fluentui/react-button';
import { tokens, typographyStyles } from '@fluentui/react-theme';
import { iconFilledClassName, iconRegularClassName } from '@fluentui/react-icons';
/**
* Static CSS class names used internally for the component slots.
*/
export const breadcrumbButtonClassNames = {
root: 'fui-BreadcrumbButton',
icon: 'fui-BreadcrumbButton__icon'
};
/**
* CSS variable names used internally for styling in the Breadcrumb.
*/
const breadcrumbCSSVars = {
breadcrumbIconSizeVar: '--fui-Breadcrumb--icon-size',
breadcrumbIconLineHeightVar: '--fui-Breadcrumb--icon-line-height'
};
const useIconStyles = /*#__PURE__*/__styles({
base: {
Be2twd7: "fsj74e5",
Bqenvij: "f1qfv4wv",
Bg96gwp: "f15xapk4",
a9b677: "f17j33op",
t21cq0: ["fm0x6gh", "fbyavb5"]
},
small: {
u3h8gg: "f1qfi7kw",
Biu6dll: "f1876atl"
},
medium: {
u3h8gg: "f1h9446d",
Biu6dll: "f10xfswh"
},
large: {
u3h8gg: "f5hcofs",
Biu6dll: "f1a6v6zl"
}
}, {
d: [".fsj74e5{font-size:var(--fui-Breadcrumb--icon-size);}", ".f1qfv4wv{height:var(--fui-Breadcrumb--icon-size);}", ".f15xapk4{line-height:var(--fui-Breadcrumb--icon-line-height);}", ".f17j33op{width:var(--fui-Breadcrumb--icon-size);}", ".fm0x6gh{margin-right:var(--spacingHorizontalXS);}", ".fbyavb5{margin-left:var(--spacingHorizontalXS);}", ".f1qfi7kw{--fui-Breadcrumb--icon-size:12px;}", ".f1876atl{--fui-Breadcrumb--icon-line-height:var(--lineHeightBase200);}", ".f1h9446d{--fui-Breadcrumb--icon-size:16px;}", ".f10xfswh{--fui-Breadcrumb--icon-line-height:var(--lineHeightBase400);}", ".f5hcofs{--fui-Breadcrumb--icon-size:20px;}", ".f1a6v6zl{--fui-Breadcrumb--icon-line-height:var(--lineHeightBase600);}"]
});
const defaultButtonStyles = {
backgroundColor: tokens.colorTransparentBackground,
color: tokens.colorNeutralForeground2,
cursor: 'auto'
};
const currentIconStyles = {
...defaultButtonStyles,
[`& .${buttonClassNames.icon}`]: {
color: 'unset'
},
[`& .${iconFilledClassName}`]: {
display: 'none'
},
[`& .${iconRegularClassName}`]: {
display: 'inline'
}
};
const useStyles = /*#__PURE__*/__styles({
root: {
Bf4jedk: "f18p0k4z",
j4b8c3: "fv6wr3j"
},
small: {
Bqenvij: "frvgh55",
Bahqtrf: "fk6fouc",
Be2twd7: "fy9rknc",
Bhrd7zp: "figsok6",
Bg96gwp: "fwrc4pm",
Byoj8tv: 0,
uwmqm3: 0,
z189sj: 0,
z8tnut: 0,
B0ocmuz: "f1r1wyb6"
},
medium: {
Bqenvij: "f1d2rq10",
Bahqtrf: "fk6fouc",
Be2twd7: "fkhj508",
Bhrd7zp: "figsok6",
Bg96gwp: "f1i3iumi",
Byoj8tv: 0,
uwmqm3: 0,
z189sj: 0,
z8tnut: 0,
B0ocmuz: "f1r1wyb6"
},
large: {
Bqenvij: "fbhnoac",
Bahqtrf: "fk6fouc",
Be2twd7: "fod5ikn",
Bhrd7zp: "figsok6",
Bg96gwp: "faaz57k",
Byoj8tv: 0,
uwmqm3: 0,
z189sj: 0,
z8tnut: 0,
B0ocmuz: "f1bnz8pu"
},
current: {
Jwef8y: "f9ql6rf",
Bi91k9c: "f3p8bqa",
eoavqd: "f14w7a5u",
Bbdnnc7: "f1irjp3o",
Bk3fhr4: "f19vpps7",
Bmfj8id: "fv5swzo",
iro3zm: "f3h1zc4",
B2d53fq: "f1xkgyln",
c3iz72: "f17wbbfx",
x3br3k: "fofxw0a",
em6i61: "f1ol4fw6",
vm6p8p: "f1q1lw4e",
Bszkowt: "ff24m",
Dyrjrp: "ft5r8e9",
ezr58z: "f1cbpfqp",
nhk3du: "f1motppv",
Bfrek18: "fi9vkhg",
G209fr: "f1fg3nnv"
},
currentSmall: {
Bahqtrf: "fk6fouc",
Be2twd7: "fy9rknc",
Bhrd7zp: "fl43uef",
Bg96gwp: "fwrc4pm"
},
currentMedium: {
Bahqtrf: "fk6fouc",
Be2twd7: "fkhj508",
Bhrd7zp: "fl43uef",
Bg96gwp: "f1i3iumi"
},
currentLarge: {
Bahqtrf: "fk6fouc",
Be2twd7: "fod5ikn",
Bhrd7zp: "fl43uef",
Bg96gwp: "faaz57k"
}
}, {
d: [".f18p0k4z{min-width:unset;}", ".fv6wr3j{text-wrap:nowrap;}", ".frvgh55{height:24px;}", ".fk6fouc{font-family:var(--fontFamilyBase);}", ".fy9rknc{font-size:var(--fontSizeBase200);}", ".figsok6{font-weight:var(--fontWeightRegular);}", ".fwrc4pm{line-height:var(--lineHeightBase200);}", [".f1r1wyb6{padding:var(--spacingHorizontalSNudge);}", {
p: -1
}], ".f1d2rq10{height:32px;}", ".fkhj508{font-size:var(--fontSizeBase300);}", ".f1i3iumi{line-height:var(--lineHeightBase300);}", [".f1r1wyb6{padding:var(--spacingHorizontalSNudge);}", {
p: -1
}], ".fbhnoac{height:40px;}", ".fod5ikn{font-size:var(--fontSizeBase400);}", ".faaz57k{line-height:var(--lineHeightBase400);}", [".f1bnz8pu{padding:var(--spacingHorizontalS);}", {
p: -1
}], ".ff24m:disabled{background-color:var(--colorTransparentBackground);}", ".ft5r8e9:disabled{color:var(--colorNeutralForeground2);}", ".f1cbpfqp:disabled{cursor:auto;}", ".f1motppv:disabled .fui-Button__icon{color:unset;}", ".fi9vkhg:disabled .fui-Icon-filled{display:none;}", ".f1fg3nnv:disabled .fui-Icon-regular{display:inline;}", ".fl43uef{font-weight:var(--fontWeightSemibold);}"],
h: [".f9ql6rf:hover{background-color:var(--colorTransparentBackground);}", ".f3p8bqa:hover{color:var(--colorNeutralForeground2);}", ".f14w7a5u:hover{cursor:auto;}", ".f1irjp3o:hover .fui-Button__icon{color:unset;}", ".f19vpps7:hover .fui-Icon-filled{display:none;}", ".fv5swzo:hover .fui-Icon-regular{display:inline;}", ".f3h1zc4:hover:active{background-color:var(--colorTransparentBackground);}", ".f1xkgyln:hover:active{color:var(--colorNeutralForeground2);}", ".f17wbbfx:hover:active{cursor:auto;}", ".fofxw0a:hover:active .fui-Button__icon{color:unset;}", ".f1ol4fw6:hover:active .fui-Icon-filled{display:none;}", ".f1q1lw4e:hover:active .fui-Icon-regular{display:inline;}"]
});
/**
* Apply styling to the BreadcrumbButton slots based on the state
*/
export const useBreadcrumbButtonStyles_unstable = state => {
'use no memo';
const styles = useStyles();
const iconStyles = useIconStyles();
const currentSizeMap = {
small: styles.currentSmall,
medium: styles.currentMedium,
large: styles.currentLarge
};
state.root.className = mergeClasses(breadcrumbButtonClassNames.root, styles[state.size], styles.root, state.current && currentSizeMap[state.size], state.current && styles.current, state.root.className);
if (state.icon) {
state.icon.className = mergeClasses(iconStyles.base, iconStyles[state.size], state.icon.className);
}
useButtonStyles_unstable(state);
return state;
};

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,114 @@
'use client';
import { makeStyles, mergeClasses } from '@griffel/react';
import { useButtonStyles_unstable, buttonClassNames } from '@fluentui/react-button';
import { tokens, typographyStyles } from '@fluentui/react-theme';
import { iconFilledClassName, iconRegularClassName } from '@fluentui/react-icons';
/**
* Static CSS class names used internally for the component slots.
*/ export const breadcrumbButtonClassNames = {
root: 'fui-BreadcrumbButton',
icon: 'fui-BreadcrumbButton__icon'
};
/**
* CSS variable names used internally for styling in the Breadcrumb.
*/ const breadcrumbCSSVars = {
breadcrumbIconSizeVar: '--fui-Breadcrumb--icon-size',
breadcrumbIconLineHeightVar: '--fui-Breadcrumb--icon-line-height'
};
const useIconStyles = makeStyles({
base: {
fontSize: `var(${breadcrumbCSSVars.breadcrumbIconSizeVar})`,
height: `var(${breadcrumbCSSVars.breadcrumbIconSizeVar})`,
lineHeight: `var(${breadcrumbCSSVars.breadcrumbIconLineHeightVar})`,
width: `var(${breadcrumbCSSVars.breadcrumbIconSizeVar})`,
marginRight: tokens.spacingHorizontalXS
},
small: {
[breadcrumbCSSVars.breadcrumbIconSizeVar]: '12px',
[breadcrumbCSSVars.breadcrumbIconLineHeightVar]: tokens.lineHeightBase200
},
medium: {
[breadcrumbCSSVars.breadcrumbIconSizeVar]: '16px',
[breadcrumbCSSVars.breadcrumbIconLineHeightVar]: tokens.lineHeightBase400
},
large: {
[breadcrumbCSSVars.breadcrumbIconSizeVar]: '20px',
[breadcrumbCSSVars.breadcrumbIconLineHeightVar]: tokens.lineHeightBase600
}
});
const defaultButtonStyles = {
backgroundColor: tokens.colorTransparentBackground,
color: tokens.colorNeutralForeground2,
cursor: 'auto'
};
const currentIconStyles = {
...defaultButtonStyles,
[`& .${buttonClassNames.icon}`]: {
color: 'unset'
},
[`& .${iconFilledClassName}`]: {
display: 'none'
},
[`& .${iconRegularClassName}`]: {
display: 'inline'
}
};
const useStyles = makeStyles({
root: {
minWidth: 'unset',
textWrap: 'nowrap'
},
small: {
height: '24px',
...typographyStyles.caption1,
padding: tokens.spacingHorizontalSNudge
},
medium: {
height: '32px',
...typographyStyles.body1,
padding: tokens.spacingHorizontalSNudge
},
large: {
height: '40px',
...typographyStyles.body2,
padding: tokens.spacingHorizontalS
},
current: {
':hover': {
...currentIconStyles
},
':hover:active': {
...currentIconStyles
},
':disabled': {
...currentIconStyles
}
},
currentSmall: {
...typographyStyles.caption1Strong
},
currentMedium: {
...typographyStyles.body1Strong
},
currentLarge: {
...typographyStyles.subtitle2
}
});
/**
* Apply styling to the BreadcrumbButton slots based on the state
*/ export const useBreadcrumbButtonStyles_unstable = (state)=>{
'use no memo';
const styles = useStyles();
const iconStyles = useIconStyles();
const currentSizeMap = {
small: styles.currentSmall,
medium: styles.currentMedium,
large: styles.currentLarge
};
state.root.className = mergeClasses(breadcrumbButtonClassNames.root, styles[state.size], styles.root, state.current && currentSizeMap[state.size], state.current && styles.current, state.root.className);
if (state.icon) {
state.icon.className = mergeClasses(iconStyles.base, iconStyles[state.size], state.icon.className);
}
useButtonStyles_unstable(state);
return state;
};

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,15 @@
'use client';
import * as React from 'react';
import { useBreadcrumbDivider_unstable } from './useBreadcrumbDivider';
import { renderBreadcrumbDivider_unstable } from './renderBreadcrumbDivider';
import { useBreadcrumbDividerStyles_unstable } from './useBreadcrumbDividerStyles.styles';
import { useCustomStyleHook_unstable } from '@fluentui/react-shared-contexts';
/**
* A divider component which is used inside the Breadcrumb
*/ export const BreadcrumbDivider = /*#__PURE__*/ React.forwardRef((props, ref)=>{
const state = useBreadcrumbDivider_unstable(props, ref);
useBreadcrumbDividerStyles_unstable(state);
useCustomStyleHook_unstable('useBreadcrumbDividerStyles_unstable')(state);
return 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;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,6BAA6B,QAAQ,yBAAyB;AACvE,SAASC,gCAAgC,QAAQ,4BAA4B;AAC7E,SAASC,mCAAmC,QAAQ,sCAAsC;AAG1F,SAASC,2BAA2B,QAAQ,kCAAkC;AAE9E;;CAEC,GACD,OAAO,MAAMC,kCAAiEL,MAAMM,UAAU,CAAC,CAACC,OAAOC;IACrG,MAAMC,QAAQR,8BAA8BM,OAAOC;IAEnDL,oCAAoCM;IACpCL,4BAA4B,uCAAuCK;IAEnE,OAAOP,iCAAiCO;AAC1C,GAAG;AAEHJ,kBAAkBK,WAAW,GAAG"}

View File

@@ -0,0 +1,3 @@
/**
* BreadcrumbDivider base state (excludes size, which is a design prop injected from context)
*/ export { };

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,4 @@
export { BreadcrumbDivider } from './BreadcrumbDivider';
export { renderBreadcrumbDivider_unstable } from './renderBreadcrumbDivider';
export { useBreadcrumbDivider_unstable, useBreadcrumbDividerBase_unstable } from './useBreadcrumbDivider';
export { breadcrumbDividerClassNames, useBreadcrumbDividerStyles_unstable } from './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":"AAAA,SAASA,iBAAiB,QAAQ,sBAAsB;AAQxD,SAASC,gCAAgC,QAAQ,4BAA4B;AAC7E,SAASC,6BAA6B,EAAEC,iCAAiC,QAAQ,yBAAyB;AAC1G,SAASC,2BAA2B,EAAEC,mCAAmC,QAAQ,sCAAsC"}

View File

@@ -0,0 +1,8 @@
import { jsx as _jsx } from "@fluentui/react-jsx-runtime/jsx-runtime";
import { assertSlots } from '@fluentui/react-utilities';
/**
* Render the final JSX of BreadcrumbDivider
*/ export const renderBreadcrumbDivider_unstable = (state)=>{
assertSlots(state);
return /*#__PURE__*/ _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":"AAAA,0BAA0B,GAC1B,iDAAiD;AAEjD,SAASA,WAAW,QAAQ,4BAA4B;AAKxD;;CAEC,GACD,OAAO,MAAMC,mCAAmC,CAACC;IAC/CF,YAAoCE;IAEpC,qBAAO,KAACA,MAAMC,IAAI;AACpB,EAAE"}

View File

@@ -0,0 +1,54 @@
'use client';
import * as React from 'react';
import { getIntrinsicElementProps, slot } from '@fluentui/react-utilities';
import { ChevronRightRegular, ChevronLeftRegular } from '@fluentui/react-icons';
import { useBreadcrumbContext_unstable } from '../Breadcrumb/BreadcrumbContext';
import { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';
/**
* Create the state required to render BreadcrumbDivider.
*
* The returned state can be modified with hooks such as useBreadcrumbDividerStyles_unstable,
* before being passed to renderBreadcrumbDivider_unstable.
*
* @param props - props from this instance of BreadcrumbDivider
* @param ref - reference to root HTMLElement of BreadcrumbDivider
*/ export const useBreadcrumbDivider_unstable = (props, ref)=>{
const { size } = useBreadcrumbContext_unstable();
const state = useBreadcrumbDividerBase_unstable(props, ref);
const { dir } = useFluent();
return {
...state,
root: {
...state.root,
children: getDividerIcon(dir)
},
size
};
};
/**
* Base hook for BreadcrumbDivider component, which manages state related to slots structure and ARIA attributes
* without design props. Note: size is provided via BreadcrumbContext in the full hook.
*
* @param props - props from this instance of BreadcrumbDivider
* @param ref - reference to root HTMLElement of BreadcrumbDivider
*/ export const useBreadcrumbDividerBase_unstable = (props, ref)=>{
return {
components: {
root: 'li'
},
root: slot.always(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(ChevronLeftRegular, null) : /*#__PURE__*/ React.createElement(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;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,wBAAwB,EAAEC,IAAI,QAAQ,4BAA4B;AAO3E,SAASC,mBAAmB,EAAEC,kBAAkB,QAAQ,wBAAwB;AAChF,SAASC,6BAA6B,QAAQ,kCAAkC;AAChF,SAASC,sBAAsBC,SAAS,QAAQ,kCAAkC;AAElF;;;;;;;;CAQC,GACD,OAAO,MAAMC,gCAAgC,CAC3CC,OACAC;IAEA,MAAM,EAAEC,IAAI,EAAE,GAAGN;IACjB,MAAMO,QAAQC,kCAAkCJ,OAAOC;IACvD,MAAM,EAAEI,GAAG,EAAE,GAAGP;IAEhB,OAAO;QACL,GAAGK,KAAK;QACRG,MAAM;YACJ,GAAGH,MAAMG,IAAI;YACbC,UAAUC,eAAeH;QAC3B;QACAH;IACF;AACF,EAAE;AAEF;;;;;;CAMC,GACD,OAAO,MAAME,oCAAoC,CAC/CJ,OACAC;IAEA,OAAO;QACLQ,YAAY;YACVH,MAAM;QACR;QACAA,MAAMb,KAAKiB,MAAM,CACflB,yBAAyB,MAAM;YAC7BS;YACA,eAAe;YACf,GAAGD,KAAK;QACV,IACA;YAAEW,aAAa;QAAK;IAExB;AACF,EAAE;AAEF;;;;CAIC,GACD,SAASH,eAAeH,GAAW;IACjC,OAAOA,QAAQ,sBAAQ,oBAACV,0CAAwB,oBAACD;AACnD"}

View File

@@ -0,0 +1,37 @@
'use client';
import { __styles, __resetStyles, mergeClasses } from '@griffel/react';
export const breadcrumbDividerClassNames = {
root: 'fui-BreadcrumbDivider'
};
/**
* Styles for the root slot
*/
const useStyles = /*#__PURE__*/__resetStyles("rk008qs", null, [".rk008qs{display:flex;}"]);
const useIconStyles = /*#__PURE__*/__styles({
small: {
Be2twd7: "f1ugzwwg"
},
medium: {
Be2twd7: "f4ybsrx"
},
large: {
Be2twd7: "fe5j1ua"
}
}, {
d: [".f1ugzwwg{font-size:12px;}", ".f4ybsrx{font-size:16px;}", ".fe5j1ua{font-size:20px;}"]
});
/**
* Apply styling to the BreadcrumbDivider slots based on the state
*/
export const useBreadcrumbDividerStyles_unstable = state => {
'use no memo';
const styles = useStyles();
const iconStyles = useIconStyles();
const {
size = 'medium'
} = state;
state.root.className = mergeClasses(breadcrumbDividerClassNames.root, styles, iconStyles[size], state.root.className);
return state;
};

View File

@@ -0,0 +1 @@
{"version":3,"names":["__styles","__resetStyles","mergeClasses","breadcrumbDividerClassNames","root","useStyles","useIconStyles","small","Be2twd7","medium","large","d","useBreadcrumbDividerStyles_unstable","state","styles","iconStyles","size","className"],"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"],"mappings":"AAAA,YAAY;;AACZ,SAAAA,QAAA,EAAAC,aAAA,EAAsCC,YAAY,QAAQ,gBAAgB;AAC1E,OAAO,MAAMC,2BAA2B,GAAG;EACvCC,IAAI,EAAE;AACV,CAAC;AACD;AACA;AACA;AAAI,MAAMC,SAAS,gBAAGJ,aAAA,6CAErB,CAAC;AACF,MAAMK,aAAa,gBAAGN,QAAA;EAAAO,KAAA;IAAAC,OAAA;EAAA;EAAAC,MAAA;IAAAD,OAAA;EAAA;EAAAE,KAAA;IAAAF,OAAA;EAAA;AAAA;EAAAG,CAAA;AAAA,CAUrB,CAAC;AACF;AACA;AACA;AAAI,OAAO,MAAMC,mCAAmC,GAAIC,KAAK,IAAG;EAC5D,aAAa;;EACb,MAAMC,MAAM,GAAGT,SAAS,CAAC,CAAC;EAC1B,MAAMU,UAAU,GAAGT,aAAa,CAAC,CAAC;EAClC,MAAM;IAAEU,IAAI,GAAG;EAAS,CAAC,GAAGH,KAAK;EACjCA,KAAK,CAACT,IAAI,CAACa,SAAS,GAAGf,YAAY,CAACC,2BAA2B,CAACC,IAAI,EAAEU,MAAM,EAAEC,UAAU,CAACC,IAAI,CAAC,EAAEH,KAAK,CAACT,IAAI,CAACa,SAAS,CAAC;EACrH,OAAOJ,KAAK;AAChB,CAAC","ignoreList":[]}

View File

@@ -0,0 +1,31 @@
'use client';
import { makeStyles, makeResetStyles, mergeClasses } from '@griffel/react';
export const breadcrumbDividerClassNames = {
root: 'fui-BreadcrumbDivider'
};
/**
* Styles for the root slot
*/ const useStyles = makeResetStyles({
display: 'flex'
});
const useIconStyles = makeStyles({
small: {
fontSize: '12px'
},
medium: {
fontSize: '16px'
},
large: {
fontSize: '20px'
}
});
/**
* Apply styling to the BreadcrumbDivider slots based on the state
*/ export const useBreadcrumbDividerStyles_unstable = (state)=>{
'use no memo';
const styles = useStyles();
const iconStyles = useIconStyles();
const { size = 'medium' } = state;
state.root.className = 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;AAEA,SAASA,UAAU,EAAEC,eAAe,EAAEC,YAAY,QAAQ,iBAAiB;AAI3E,OAAO,MAAMC,8BAAsE;IACjFC,MAAM;AACR,EAAE;AAEF;;CAEC,GACD,MAAMC,YAAYJ,gBAAgB;IAChCK,SAAS;AACX;AAEA,MAAMC,gBAAgBP,WAAW;IAC/BQ,OAAO;QACLC,UAAU;IACZ;IACAC,QAAQ;QACND,UAAU;IACZ;IACAE,OAAO;QACLF,UAAU;IACZ;AACF;AAEA;;CAEC,GACD,OAAO,MAAMG,sCAAsC,CAACC;IAClD;IAEA,MAAMC,SAAST;IACf,MAAMU,aAAaR;IACnB,MAAM,EAAES,OAAO,QAAQ,EAAE,GAAGH;IAE5BA,MAAMT,IAAI,CAACa,SAAS,GAAGf,aAAaC,4BAA4BC,IAAI,EAAEU,QAAQC,UAAU,CAACC,KAAK,EAAEH,MAAMT,IAAI,CAACa,SAAS;IAEpH,OAAOJ;AACT,EAAE"}

View File

@@ -0,0 +1,16 @@
'use client';
import * as React from 'react';
import { useBreadcrumbItem_unstable } from './useBreadcrumbItem';
import { renderBreadcrumbItem_unstable } from './renderBreadcrumbItem';
import { useBreadcrumbItemStyles_unstable } from './useBreadcrumbItemStyles.styles';
import { useCustomStyleHook_unstable } from '@fluentui/react-shared-contexts';
/**
* BreadcrumbItem component is a wrapper for BreadcrumbLink and BreadcrumbButton.
* It can be used as a non-interactive item.
*/ export const BreadcrumbItem = /*#__PURE__*/ React.forwardRef((props, ref)=>{
const state = useBreadcrumbItem_unstable(props, ref);
useBreadcrumbItemStyles_unstable(state);
useCustomStyleHook_unstable('useBreadcrumbItemStyles_unstable')(state);
return renderBreadcrumbItem_unstable(state);
});
BreadcrumbItem.displayName = 'BreadcrumbItem';

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../src/components/BreadcrumbItem/BreadcrumbItem.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useBreadcrumbItem_unstable } from './useBreadcrumbItem';\nimport { renderBreadcrumbItem_unstable } from './renderBreadcrumbItem';\nimport { useBreadcrumbItemStyles_unstable } from './useBreadcrumbItemStyles.styles';\nimport type { BreadcrumbItemProps } from './BreadcrumbItem.types';\nimport type { ForwardRefComponent } from '@fluentui/react-utilities';\nimport { useCustomStyleHook_unstable } from '@fluentui/react-shared-contexts';\n\n/**\n * BreadcrumbItem component is a wrapper for BreadcrumbLink and BreadcrumbButton.\n * It can be used as a non-interactive item.\n */\nexport const BreadcrumbItem: ForwardRefComponent<BreadcrumbItemProps> = React.forwardRef((props, ref) => {\n const state = useBreadcrumbItem_unstable(props, ref);\n\n useBreadcrumbItemStyles_unstable(state);\n useCustomStyleHook_unstable('useBreadcrumbItemStyles_unstable')(state);\n\n return renderBreadcrumbItem_unstable(state);\n});\n\nBreadcrumbItem.displayName = 'BreadcrumbItem';\n"],"names":["React","useBreadcrumbItem_unstable","renderBreadcrumbItem_unstable","useBreadcrumbItemStyles_unstable","useCustomStyleHook_unstable","BreadcrumbItem","forwardRef","props","ref","state","displayName"],"mappings":"AAAA;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,0BAA0B,QAAQ,sBAAsB;AACjE,SAASC,6BAA6B,QAAQ,yBAAyB;AACvE,SAASC,gCAAgC,QAAQ,mCAAmC;AAGpF,SAASC,2BAA2B,QAAQ,kCAAkC;AAE9E;;;CAGC,GACD,OAAO,MAAMC,+BAA2DL,MAAMM,UAAU,CAAC,CAACC,OAAOC;IAC/F,MAAMC,QAAQR,2BAA2BM,OAAOC;IAEhDL,iCAAiCM;IACjCL,4BAA4B,oCAAoCK;IAEhE,OAAOP,8BAA8BO;AACvC,GAAG;AAEHJ,eAAeK,WAAW,GAAG"}

View File

@@ -0,0 +1,3 @@
/**
* BreadcrumbItem base state (excludes size, which is a design prop injected from context)
*/ export { };

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../src/components/BreadcrumbItem/BreadcrumbItem.types.ts"],"sourcesContent":["import type { ComponentProps, ComponentState, Slot } from '@fluentui/react-utilities';\nimport type { BreadcrumbProps } from '../Breadcrumb';\n\nexport type BreadcrumbItemSlots = {\n root: Slot<'li'>;\n};\n\n/**\n * BreadcrumbItem Props\n */\nexport type BreadcrumbItemProps = ComponentProps<BreadcrumbItemSlots> & Pick<BreadcrumbProps, 'size'>;\n\n/**\n * State used in rendering BreadcrumbItem\n */\nexport type BreadcrumbItemState = ComponentState<BreadcrumbItemSlots> & Required<Pick<BreadcrumbItemProps, 'size'>>;\n\n/**\n * BreadcrumbItem base props (same as BreadcrumbItemProps since size is passed through context, not as a design prop)\n */\nexport type BreadcrumbItemBaseProps = Omit<BreadcrumbItemProps, 'size'>;\n\n/**\n * BreadcrumbItem base state (excludes size, which is a design prop injected from context)\n */\nexport type BreadcrumbItemBaseState = Omit<BreadcrumbItemState, 'size'>;\n"],"names":[],"mappings":"AAsBA;;CAEC,GACD,WAAwE"}

View File

@@ -0,0 +1,4 @@
export { BreadcrumbItem } from './BreadcrumbItem';
export { renderBreadcrumbItem_unstable } from './renderBreadcrumbItem';
export { useBreadcrumbItem_unstable, useBreadcrumbItemBase_unstable } from './useBreadcrumbItem';
export { breadcrumbItemClassNames, useBreadcrumbItemStyles_unstable } from './useBreadcrumbItemStyles.styles';

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../src/components/BreadcrumbItem/index.ts"],"sourcesContent":["export { BreadcrumbItem } from './BreadcrumbItem';\nexport type {\n BreadcrumbItemBaseProps,\n BreadcrumbItemBaseState,\n BreadcrumbItemProps,\n BreadcrumbItemSlots,\n BreadcrumbItemState,\n} from './BreadcrumbItem.types';\nexport { renderBreadcrumbItem_unstable } from './renderBreadcrumbItem';\nexport { useBreadcrumbItem_unstable, useBreadcrumbItemBase_unstable } from './useBreadcrumbItem';\nexport { breadcrumbItemClassNames, useBreadcrumbItemStyles_unstable } from './useBreadcrumbItemStyles.styles';\n"],"names":["BreadcrumbItem","renderBreadcrumbItem_unstable","useBreadcrumbItem_unstable","useBreadcrumbItemBase_unstable","breadcrumbItemClassNames","useBreadcrumbItemStyles_unstable"],"mappings":"AAAA,SAASA,cAAc,QAAQ,mBAAmB;AAQlD,SAASC,6BAA6B,QAAQ,yBAAyB;AACvE,SAASC,0BAA0B,EAAEC,8BAA8B,QAAQ,sBAAsB;AACjG,SAASC,wBAAwB,EAAEC,gCAAgC,QAAQ,mCAAmC"}

View File

@@ -0,0 +1,10 @@
import { jsx as _jsx } from "@fluentui/react-jsx-runtime/jsx-runtime";
import { assertSlots } from '@fluentui/react-utilities';
/**
* Render the final JSX of BreadcrumbItem
*/ export const renderBreadcrumbItem_unstable = (state)=>{
assertSlots(state);
return /*#__PURE__*/ _jsx(state.root, {
children: state.root.children
});
};

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../src/components/BreadcrumbItem/renderBreadcrumbItem.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 { BreadcrumbItemState, BreadcrumbItemSlots } from './BreadcrumbItem.types';\n\n/**\n * Render the final JSX of BreadcrumbItem\n */\nexport const renderBreadcrumbItem_unstable = (state: BreadcrumbItemState): JSXElement => {\n assertSlots<BreadcrumbItemSlots>(state);\n\n return <state.root>{state.root.children}</state.root>;\n};\n"],"names":["assertSlots","renderBreadcrumbItem_unstable","state","root","children"],"mappings":"AAAA,0BAA0B,GAC1B,iDAAiD;AAEjD,SAASA,WAAW,QAAQ,4BAA4B;AAKxD;;CAEC,GACD,OAAO,MAAMC,gCAAgC,CAACC;IAC5CF,YAAiCE;IAEjC,qBAAO,KAACA,MAAMC,IAAI;kBAAED,MAAMC,IAAI,CAACC,QAAQ;;AACzC,EAAE"}

View File

@@ -0,0 +1,39 @@
'use client';
import * as React from 'react';
import { getIntrinsicElementProps, slot } from '@fluentui/react-utilities';
import { useBreadcrumbContext_unstable } from '../Breadcrumb/BreadcrumbContext';
/**
* Create the state required to render BreadcrumbItem.
*
* The returned state can be modified with hooks such as useBreadcrumbItemStyles_unstable,
* before being passed to renderBreadcrumbItem_unstable.
*
* @param props - props from this instance of BreadcrumbItem
* @param ref - reference to root HTMLElement of BreadcrumbItem
*/ export const useBreadcrumbItem_unstable = (props, ref)=>{
const { size } = useBreadcrumbContext_unstable();
const state = useBreadcrumbItemBase_unstable(props, ref);
return {
...state,
size
};
};
/**
* Base hook for BreadcrumbItem component, which manages state related to slots structure
* without design props. Note: size is provided via BreadcrumbContext in the full hook.
*
* @param props - props from this instance of BreadcrumbItem
* @param ref - reference to root HTMLElement of BreadcrumbItem
*/ export const useBreadcrumbItemBase_unstable = (props, ref)=>{
return {
components: {
root: 'li'
},
root: slot.always(getIntrinsicElementProps('li', {
ref,
...props
}), {
elementType: 'li'
})
};
};

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../src/components/BreadcrumbItem/useBreadcrumbItem.ts"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { getIntrinsicElementProps, slot } from '@fluentui/react-utilities';\nimport type {\n BreadcrumbItemBaseProps,\n BreadcrumbItemBaseState,\n BreadcrumbItemProps,\n BreadcrumbItemState,\n} from './BreadcrumbItem.types';\nimport { useBreadcrumbContext_unstable } from '../Breadcrumb/BreadcrumbContext';\n\n/**\n * Create the state required to render BreadcrumbItem.\n *\n * The returned state can be modified with hooks such as useBreadcrumbItemStyles_unstable,\n * before being passed to renderBreadcrumbItem_unstable.\n *\n * @param props - props from this instance of BreadcrumbItem\n * @param ref - reference to root HTMLElement of BreadcrumbItem\n */\nexport const useBreadcrumbItem_unstable = (\n props: BreadcrumbItemProps,\n ref: React.Ref<HTMLLIElement>,\n): BreadcrumbItemState => {\n const { size } = useBreadcrumbContext_unstable();\n const state = useBreadcrumbItemBase_unstable(props, ref);\n\n return {\n ...state,\n size,\n };\n};\n\n/**\n * Base hook for BreadcrumbItem component, which manages state related to slots structure\n * without design props. Note: size is provided via BreadcrumbContext in the full hook.\n *\n * @param props - props from this instance of BreadcrumbItem\n * @param ref - reference to root HTMLElement of BreadcrumbItem\n */\nexport const useBreadcrumbItemBase_unstable = (\n props: BreadcrumbItemBaseProps,\n ref: React.Ref<HTMLLIElement>,\n): BreadcrumbItemBaseState => {\n return {\n components: { root: 'li' },\n root: slot.always(\n getIntrinsicElementProps('li', {\n ref,\n ...props,\n }),\n { elementType: 'li' },\n ),\n };\n};\n"],"names":["React","getIntrinsicElementProps","slot","useBreadcrumbContext_unstable","useBreadcrumbItem_unstable","props","ref","size","state","useBreadcrumbItemBase_unstable","components","root","always","elementType"],"mappings":"AAAA;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,wBAAwB,EAAEC,IAAI,QAAQ,4BAA4B;AAO3E,SAASC,6BAA6B,QAAQ,kCAAkC;AAEhF;;;;;;;;CAQC,GACD,OAAO,MAAMC,6BAA6B,CACxCC,OACAC;IAEA,MAAM,EAAEC,IAAI,EAAE,GAAGJ;IACjB,MAAMK,QAAQC,+BAA+BJ,OAAOC;IAEpD,OAAO;QACL,GAAGE,KAAK;QACRD;IACF;AACF,EAAE;AAEF;;;;;;CAMC,GACD,OAAO,MAAME,iCAAiC,CAC5CJ,OACAC;IAEA,OAAO;QACLI,YAAY;YAAEC,MAAM;QAAK;QACzBA,MAAMT,KAAKU,MAAM,CACfX,yBAAyB,MAAM;YAC7BK;YACA,GAAGD,KAAK;QACV,IACA;YAAEQ,aAAa;QAAK;IAExB;AACF,EAAE"}

View File

@@ -0,0 +1,18 @@
'use client';
import { __resetStyles, mergeClasses } from '@griffel/react';
import { tokens } from '@fluentui/react-theme';
export const breadcrumbItemClassNames = {
root: 'fui-BreadcrumbItem'
};
const useBreadcrumbItemResetStyles = /*#__PURE__*/__resetStyles("r1tl60rs", null, [".r1tl60rs{display:flex;align-items:center;color:var(--colorNeutralForeground2);box-sizing:border-box;text-wrap:nowrap;}"]);
/**
* Apply styling to the BreadcrumbItem slots based on the state
*/
export const useBreadcrumbItemStyles_unstable = state => {
'use no memo';
const resetStyles = useBreadcrumbItemResetStyles();
state.root.className = mergeClasses(breadcrumbItemClassNames.root, resetStyles, state.root.className);
return state;
};

View File

@@ -0,0 +1 @@
{"version":3,"names":["__resetStyles","mergeClasses","tokens","breadcrumbItemClassNames","root","useBreadcrumbItemResetStyles","useBreadcrumbItemStyles_unstable","state","resetStyles","className"],"sources":["useBreadcrumbItemStyles.styles.js"],"sourcesContent":["'use client';\nimport { makeResetStyles, mergeClasses } from '@griffel/react';\nimport { tokens } from '@fluentui/react-theme';\nexport const breadcrumbItemClassNames = {\n root: 'fui-BreadcrumbItem'\n};\nconst useBreadcrumbItemResetStyles = makeResetStyles({\n display: 'flex',\n alignItems: 'center',\n color: tokens.colorNeutralForeground2,\n boxSizing: 'border-box',\n textWrap: 'nowrap'\n});\n/**\n * Apply styling to the BreadcrumbItem slots based on the state\n */ export const useBreadcrumbItemStyles_unstable = (state)=>{\n 'use no memo';\n const resetStyles = useBreadcrumbItemResetStyles();\n state.root.className = mergeClasses(breadcrumbItemClassNames.root, resetStyles, state.root.className);\n return state;\n};\n"],"mappings":"AAAA,YAAY;;AACZ,SAAAA,aAAA,EAA0BC,YAAY,QAAQ,gBAAgB;AAC9D,SAASC,MAAM,QAAQ,uBAAuB;AAC9C,OAAO,MAAMC,wBAAwB,GAAG;EACpCC,IAAI,EAAE;AACV,CAAC;AACD,MAAMC,4BAA4B,gBAAGL,aAAA,8IAMpC,CAAC;AACF;AACA;AACA;AAAI,OAAO,MAAMM,gCAAgC,GAAIC,KAAK,IAAG;EACzD,aAAa;;EACb,MAAMC,WAAW,GAAGH,4BAA4B,CAAC,CAAC;EAClDE,KAAK,CAACH,IAAI,CAACK,SAAS,GAAGR,YAAY,CAACE,wBAAwB,CAACC,IAAI,EAAEI,WAAW,EAAED,KAAK,CAACH,IAAI,CAACK,SAAS,CAAC;EACrG,OAAOF,KAAK;AAChB,CAAC","ignoreList":[]}

View File

@@ -0,0 +1,21 @@
'use client';
import { makeResetStyles, mergeClasses } from '@griffel/react';
import { tokens } from '@fluentui/react-theme';
export const breadcrumbItemClassNames = {
root: 'fui-BreadcrumbItem'
};
const useBreadcrumbItemResetStyles = makeResetStyles({
display: 'flex',
alignItems: 'center',
color: tokens.colorNeutralForeground2,
boxSizing: 'border-box',
textWrap: 'nowrap'
});
/**
* Apply styling to the BreadcrumbItem slots based on the state
*/ export const useBreadcrumbItemStyles_unstable = (state)=>{
'use no memo';
const resetStyles = useBreadcrumbItemResetStyles();
state.root.className = mergeClasses(breadcrumbItemClassNames.root, resetStyles, state.root.className);
return state;
};

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../src/components/BreadcrumbItem/useBreadcrumbItemStyles.styles.ts"],"sourcesContent":["'use client';\n\nimport { makeResetStyles, mergeClasses } from '@griffel/react';\nimport type { BreadcrumbItemSlots, BreadcrumbItemState } from './BreadcrumbItem.types';\nimport type { SlotClassNames } from '@fluentui/react-utilities';\nimport { tokens } from '@fluentui/react-theme';\n\nexport const breadcrumbItemClassNames: SlotClassNames<BreadcrumbItemSlots> = {\n root: 'fui-BreadcrumbItem',\n};\n\nconst useBreadcrumbItemResetStyles = makeResetStyles({\n display: 'flex',\n alignItems: 'center',\n color: tokens.colorNeutralForeground2,\n boxSizing: 'border-box',\n textWrap: 'nowrap',\n});\n\n/**\n * Apply styling to the BreadcrumbItem slots based on the state\n */\nexport const useBreadcrumbItemStyles_unstable = (state: BreadcrumbItemState): BreadcrumbItemState => {\n 'use no memo';\n\n const resetStyles = useBreadcrumbItemResetStyles();\n\n state.root.className = mergeClasses(breadcrumbItemClassNames.root, resetStyles, state.root.className);\n\n return state;\n};\n"],"names":["makeResetStyles","mergeClasses","tokens","breadcrumbItemClassNames","root","useBreadcrumbItemResetStyles","display","alignItems","color","colorNeutralForeground2","boxSizing","textWrap","useBreadcrumbItemStyles_unstable","state","resetStyles","className"],"mappings":"AAAA;AAEA,SAASA,eAAe,EAAEC,YAAY,QAAQ,iBAAiB;AAG/D,SAASC,MAAM,QAAQ,wBAAwB;AAE/C,OAAO,MAAMC,2BAAgE;IAC3EC,MAAM;AACR,EAAE;AAEF,MAAMC,+BAA+BL,gBAAgB;IACnDM,SAAS;IACTC,YAAY;IACZC,OAAON,OAAOO,uBAAuB;IACrCC,WAAW;IACXC,UAAU;AACZ;AAEA;;CAEC,GACD,OAAO,MAAMC,mCAAmC,CAACC;IAC/C;IAEA,MAAMC,cAAcT;IAEpBQ,MAAMT,IAAI,CAACW,SAAS,GAAGd,aAAaE,yBAAyBC,IAAI,EAAEU,aAAaD,MAAMT,IAAI,CAACW,SAAS;IAEpG,OAAOF;AACT,EAAE"}