@fluentui/react-persona 9.4.6 → 9.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,12 +1,32 @@
1
1
  # Change Log - @fluentui/react-persona
2
2
 
3
- This log was last generated on Fri, 04 Jul 2025 10:00:11 GMT and should not be manually modified.
3
+ This log was last generated on Thu, 17 Jul 2025 13:45:43 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
+ ## [9.5.0](https://github.com/microsoft/fluentui/tree/@fluentui/react-persona_v9.5.0)
8
+
9
+ Thu, 17 Jul 2025 13:45:43 GMT
10
+ [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-persona_v9.4.7..@fluentui/react-persona_v9.5.0)
11
+
12
+ ### Minor changes
13
+
14
+ - feat: enable griffel raw styles ([PR #34853](https://github.com/microsoft/fluentui/pull/34853) by martinhochel@microsoft.com)
15
+ - Bump @fluentui/react-avatar to v9.9.0 ([PR #34862](https://github.com/microsoft/fluentui/pull/34862) by beachball)
16
+ - Bump @fluentui/react-badge to v9.4.0 ([PR #34862](https://github.com/microsoft/fluentui/pull/34862) by beachball)
17
+
18
+ ## [9.4.7](https://github.com/microsoft/fluentui/tree/@fluentui/react-persona_v9.4.7)
19
+
20
+ Fri, 11 Jul 2025 15:59:24 GMT
21
+ [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-persona_v9.4.6..@fluentui/react-persona_v9.4.7)
22
+
23
+ ### Patches
24
+
25
+ - Bump @fluentui/react-avatar to v9.8.7 ([PR #34807](https://github.com/microsoft/fluentui/pull/34807) by beachball)
26
+
7
27
  ## [9.4.6](https://github.com/microsoft/fluentui/tree/@fluentui/react-persona_v9.4.6)
8
28
 
9
- Fri, 04 Jul 2025 10:00:11 GMT
29
+ Fri, 04 Jul 2025 10:02:51 GMT
10
30
  [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-persona_v9.4.5..@fluentui/react-persona_v9.4.6)
11
31
 
12
32
  ### Patches
@@ -0,0 +1,198 @@
1
+ import { makeResetStyles, makeStyles, mergeClasses } from '@griffel/react';
2
+ import { tokens, typographyStyles } from '@fluentui/react-theme';
3
+ export const personaClassNames = {
4
+ root: 'fui-Persona',
5
+ avatar: 'fui-Persona__avatar',
6
+ presence: 'fui-Persona__presence',
7
+ primaryText: 'fui-Persona__primaryText',
8
+ secondaryText: 'fui-Persona__secondaryText',
9
+ tertiaryText: 'fui-Persona__tertiaryText',
10
+ quaternaryText: 'fui-Persona__quaternaryText'
11
+ };
12
+ const avatarSpacing = `--fui-Persona__avatar--spacing`;
13
+ const useRootClassName = makeResetStyles({
14
+ display: 'inline-grid',
15
+ gridAutoRows: 'max-content',
16
+ gridAutoFlow: 'column',
17
+ justifyItems: 'start',
18
+ gridTemplateColumns: 'max-content [middle] auto'
19
+ });
20
+ /**
21
+ * Styles for the root slot
22
+ */ const useStyles = makeStyles({
23
+ beforeAfterCenter: {
24
+ // This template is needed to make sure the Avatar is centered when it takes up more space than the text lines
25
+ gridTemplateRows: '1fr [primary] max-content [secondary] max-content [tertiary] max-content [quaternary] max-content 1fr'
26
+ },
27
+ after: {
28
+ },
29
+ before: {
30
+ justifyItems: 'end',
31
+ gridTemplateColumns: 'auto [middle] max-content'
32
+ },
33
+ below: {
34
+ gridAutoFlow: 'unset',
35
+ justifyItems: 'center',
36
+ gridTemplateColumns: 'unset'
37
+ },
38
+ media: {
39
+ gridRowStart: 'span 5'
40
+ },
41
+ mediaBeforeAfterCenter: {
42
+ gridRowStart: 'span 6'
43
+ },
44
+ start: {
45
+ alignSelf: 'start'
46
+ },
47
+ center: {
48
+ alignSelf: 'center'
49
+ },
50
+ afterAlignToPrimary: {
51
+ alignSelf: 'center',
52
+ gridRowStart: 'unset',
53
+ gridColumnEnd: 'middle'
54
+ },
55
+ beforeAlignToPrimary: {
56
+ alignSelf: 'center',
57
+ gridRowStart: 'unset',
58
+ gridColumnStart: 'middle'
59
+ },
60
+ secondLineSpacing: {
61
+ marginTop: '-2px'
62
+ },
63
+ primary: {
64
+ gridRowStart: 'primary'
65
+ },
66
+ secondary: {
67
+ gridRowStart: 'secondary'
68
+ },
69
+ tertiary: {
70
+ gridRowStart: 'tertiary'
71
+ },
72
+ quaternary: {
73
+ gridRowStart: 'quaternary'
74
+ }
75
+ });
76
+ const useAvatarSpacingStyles = makeStyles({
77
+ 'extra-small': {
78
+ [avatarSpacing]: tokens.spacingHorizontalSNudge
79
+ },
80
+ small: {
81
+ [avatarSpacing]: tokens.spacingHorizontalS
82
+ },
83
+ medium: {
84
+ [avatarSpacing]: tokens.spacingHorizontalS
85
+ },
86
+ large: {
87
+ [avatarSpacing]: tokens.spacingHorizontalMNudge
88
+ },
89
+ 'extra-large': {
90
+ [avatarSpacing]: tokens.spacingHorizontalMNudge
91
+ },
92
+ huge: {
93
+ [avatarSpacing]: tokens.spacingHorizontalM
94
+ },
95
+ after: {
96
+ marginRight: `var(${avatarSpacing})`
97
+ },
98
+ below: {
99
+ marginBottom: `var(${avatarSpacing})`
100
+ },
101
+ before: {
102
+ marginLeft: `var(${avatarSpacing})`
103
+ }
104
+ });
105
+ const usePresenceSpacingStyles = makeStyles({
106
+ small: {
107
+ [avatarSpacing]: tokens.spacingHorizontalSNudge
108
+ }
109
+ });
110
+ /**
111
+ * Apply styling to the Persona slots based on the state
112
+ */ export const usePersonaStyles_unstable = (state)=>{
113
+ 'use no memo';
114
+ const { presenceOnly, size, textAlignment, textPosition } = state;
115
+ const alignToPrimary = presenceOnly && textAlignment === 'start' && size !== 'extra-large' && size !== 'huge';
116
+ const alignBeforeAfterCenter = textPosition !== 'below' && textAlignment === 'center';
117
+ const { primaryTextClassName, optionalTextClassName } = useTextClassNames(state, alignToPrimary);
118
+ const rootClassName = useRootClassName();
119
+ const styles = useStyles();
120
+ const avatarSpacingStyles = useAvatarSpacingStyles();
121
+ const presenceSpacingStyles = {
122
+ ...avatarSpacingStyles,
123
+ ...usePresenceSpacingStyles()
124
+ };
125
+ state.root.className = mergeClasses(personaClassNames.root, rootClassName, alignBeforeAfterCenter && styles.beforeAfterCenter, styles[textPosition], state.root.className);
126
+ if (state.avatar) {
127
+ state.avatar.className = mergeClasses(personaClassNames.avatar, textPosition !== 'below' && styles.media, alignBeforeAfterCenter && styles.mediaBeforeAfterCenter, styles[textAlignment], avatarSpacingStyles[size], avatarSpacingStyles[textPosition], state.avatar.className);
128
+ }
129
+ if (state.presence) {
130
+ state.presence.className = mergeClasses(personaClassNames.presence, textPosition !== 'below' && styles.media, alignBeforeAfterCenter && styles.mediaBeforeAfterCenter, styles[textAlignment], presenceSpacingStyles[size], presenceSpacingStyles[textPosition], textPosition === 'after' && alignToPrimary && styles.afterAlignToPrimary, textPosition === 'before' && alignToPrimary && styles.beforeAlignToPrimary, state.presence.className);
131
+ }
132
+ if (state.primaryText) {
133
+ state.primaryText.className = mergeClasses(personaClassNames.primaryText, alignBeforeAfterCenter && styles.primary, primaryTextClassName, state.primaryText.className);
134
+ }
135
+ if (state.secondaryText) {
136
+ state.secondaryText.className = mergeClasses(personaClassNames.secondaryText, alignBeforeAfterCenter && styles.secondary, optionalTextClassName, styles.secondLineSpacing, state.secondaryText.className);
137
+ }
138
+ if (state.tertiaryText) {
139
+ state.tertiaryText.className = mergeClasses(personaClassNames.tertiaryText, alignBeforeAfterCenter && styles.tertiary, optionalTextClassName, state.tertiaryText.className);
140
+ }
141
+ if (state.quaternaryText) {
142
+ state.quaternaryText.className = mergeClasses(personaClassNames.quaternaryText, alignBeforeAfterCenter && styles.quaternary, optionalTextClassName, state.quaternaryText.className);
143
+ }
144
+ return state;
145
+ };
146
+ const usePrimaryTextBaseClassName = makeResetStyles({
147
+ display: 'block',
148
+ color: tokens.colorNeutralForeground1,
149
+ ...typographyStyles.body1
150
+ });
151
+ const useOptionalTextBaseClassName = makeResetStyles({
152
+ display: 'block',
153
+ color: tokens.colorNeutralForeground2,
154
+ ...typographyStyles.caption1
155
+ });
156
+ const useTextStyles = makeStyles({
157
+ beforeAlignToPrimary: {
158
+ gridColumnEnd: 'middle'
159
+ },
160
+ afterAlignToPrimary: {
161
+ gridColumnStart: 'middle'
162
+ },
163
+ body1: typographyStyles.body1,
164
+ caption1: typographyStyles.caption1,
165
+ subtitle2: typographyStyles.subtitle2
166
+ });
167
+ const useTextClassNames = (state, alignToPrimary)=>{
168
+ const { presenceOnly, size, textPosition } = state;
169
+ const primaryTextBaseClassName = usePrimaryTextBaseClassName();
170
+ const optionalTextBaseClassName = useOptionalTextBaseClassName();
171
+ const textStyles = useTextStyles();
172
+ let primaryTextSize;
173
+ let alignToPrimaryClassName;
174
+ if (presenceOnly) {
175
+ if (size === 'extra-small') {
176
+ primaryTextSize = state.numTextLines <= 1 && textStyles.caption1;
177
+ } else if (size === 'extra-large' || size === 'huge') {
178
+ primaryTextSize = textStyles.subtitle2;
179
+ }
180
+ if (alignToPrimary) {
181
+ if (textPosition === 'before') {
182
+ alignToPrimaryClassName = textStyles.beforeAlignToPrimary;
183
+ } else if (textPosition === 'after') {
184
+ alignToPrimaryClassName = textStyles.afterAlignToPrimary;
185
+ }
186
+ }
187
+ } else {
188
+ if (size === 'huge') {
189
+ primaryTextSize = textStyles.subtitle2;
190
+ } else if (size === 'extra-large') {
191
+ primaryTextSize = textStyles.subtitle2;
192
+ }
193
+ }
194
+ return {
195
+ primaryTextClassName: mergeClasses(primaryTextBaseClassName, primaryTextSize, alignToPrimaryClassName),
196
+ optionalTextClassName: mergeClasses(optionalTextBaseClassName, !presenceOnly && size === 'huge' && textStyles.body1, alignToPrimaryClassName)
197
+ };
198
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Persona/usePersonaStyles.styles.ts"],"sourcesContent":["import { makeResetStyles, makeStyles, mergeClasses } from '@griffel/react';\nimport { tokens, typographyStyles } from '@fluentui/react-theme';\nimport type { PersonaSlots, PersonaState } from './Persona.types';\nimport type { SlotClassNames } from '@fluentui/react-utilities';\n\nexport const personaClassNames: SlotClassNames<PersonaSlots> = {\n root: 'fui-Persona',\n avatar: 'fui-Persona__avatar',\n presence: 'fui-Persona__presence',\n primaryText: 'fui-Persona__primaryText',\n secondaryText: 'fui-Persona__secondaryText',\n tertiaryText: 'fui-Persona__tertiaryText',\n quaternaryText: 'fui-Persona__quaternaryText',\n};\n\nconst avatarSpacing = `--fui-Persona__avatar--spacing`;\n\nconst useRootClassName = makeResetStyles({\n display: 'inline-grid',\n gridAutoRows: 'max-content',\n gridAutoFlow: 'column',\n justifyItems: 'start',\n gridTemplateColumns: 'max-content [middle] auto',\n});\n\n/**\n * Styles for the root slot\n */\nconst useStyles = makeStyles({\n beforeAfterCenter: {\n // This template is needed to make sure the Avatar is centered when it takes up more space than the text lines\n gridTemplateRows:\n '1fr [primary] max-content [secondary] max-content [tertiary] max-content [quaternary] max-content 1fr',\n },\n\n after: {\n // Intentionally empty\n },\n before: {\n justifyItems: 'end',\n gridTemplateColumns: 'auto [middle] max-content',\n },\n below: {\n gridAutoFlow: 'unset',\n justifyItems: 'center',\n gridTemplateColumns: 'unset',\n },\n\n media: {\n gridRowStart: 'span 5',\n },\n\n mediaBeforeAfterCenter: {\n gridRowStart: 'span 6',\n },\n\n start: {\n alignSelf: 'start',\n },\n center: {\n alignSelf: 'center',\n },\n\n afterAlignToPrimary: {\n alignSelf: 'center',\n gridRowStart: 'unset',\n gridColumnEnd: 'middle',\n },\n beforeAlignToPrimary: {\n alignSelf: 'center',\n gridRowStart: 'unset',\n gridColumnStart: 'middle',\n },\n\n secondLineSpacing: {\n marginTop: '-2px',\n },\n\n primary: { gridRowStart: 'primary' },\n secondary: { gridRowStart: 'secondary' },\n tertiary: { gridRowStart: 'tertiary' },\n quaternary: { gridRowStart: 'quaternary' },\n});\n\nconst useAvatarSpacingStyles = makeStyles({\n 'extra-small': {\n [avatarSpacing]: tokens.spacingHorizontalSNudge,\n },\n small: {\n [avatarSpacing]: tokens.spacingHorizontalS,\n },\n medium: {\n [avatarSpacing]: tokens.spacingHorizontalS,\n },\n large: {\n [avatarSpacing]: tokens.spacingHorizontalMNudge,\n },\n 'extra-large': {\n [avatarSpacing]: tokens.spacingHorizontalMNudge,\n },\n huge: {\n [avatarSpacing]: tokens.spacingHorizontalM,\n },\n after: {\n marginRight: `var(${avatarSpacing})`,\n },\n below: {\n marginBottom: `var(${avatarSpacing})`,\n },\n before: {\n marginLeft: `var(${avatarSpacing})`,\n },\n});\n\nconst usePresenceSpacingStyles = makeStyles({\n small: {\n [avatarSpacing]: tokens.spacingHorizontalSNudge,\n },\n});\n\n/**\n * Apply styling to the Persona slots based on the state\n */\nexport const usePersonaStyles_unstable = (state: PersonaState): PersonaState => {\n 'use no memo';\n\n const { presenceOnly, size, textAlignment, textPosition } = state;\n\n const alignToPrimary = presenceOnly && textAlignment === 'start' && size !== 'extra-large' && size !== 'huge';\n const alignBeforeAfterCenter = textPosition !== 'below' && textAlignment === 'center';\n const { primaryTextClassName, optionalTextClassName } = useTextClassNames(state, alignToPrimary);\n\n const rootClassName = useRootClassName();\n const styles = useStyles();\n const avatarSpacingStyles = useAvatarSpacingStyles();\n const presenceSpacingStyles = { ...avatarSpacingStyles, ...usePresenceSpacingStyles() };\n\n state.root.className = mergeClasses(\n personaClassNames.root,\n rootClassName,\n alignBeforeAfterCenter && styles.beforeAfterCenter,\n styles[textPosition],\n state.root.className,\n );\n\n if (state.avatar) {\n state.avatar.className = mergeClasses(\n personaClassNames.avatar,\n textPosition !== 'below' && styles.media,\n alignBeforeAfterCenter && styles.mediaBeforeAfterCenter,\n styles[textAlignment],\n avatarSpacingStyles[size],\n avatarSpacingStyles[textPosition],\n state.avatar.className,\n );\n }\n\n if (state.presence) {\n state.presence.className = mergeClasses(\n personaClassNames.presence,\n textPosition !== 'below' && styles.media,\n alignBeforeAfterCenter && styles.mediaBeforeAfterCenter,\n styles[textAlignment],\n presenceSpacingStyles[size],\n presenceSpacingStyles[textPosition],\n textPosition === 'after' && alignToPrimary && styles.afterAlignToPrimary,\n textPosition === 'before' && alignToPrimary && styles.beforeAlignToPrimary,\n state.presence.className,\n );\n }\n\n if (state.primaryText) {\n state.primaryText.className = mergeClasses(\n personaClassNames.primaryText,\n alignBeforeAfterCenter && styles.primary,\n primaryTextClassName,\n state.primaryText.className,\n );\n }\n\n if (state.secondaryText) {\n state.secondaryText.className = mergeClasses(\n personaClassNames.secondaryText,\n alignBeforeAfterCenter && styles.secondary,\n optionalTextClassName,\n styles.secondLineSpacing,\n state.secondaryText.className,\n );\n }\n\n if (state.tertiaryText) {\n state.tertiaryText.className = mergeClasses(\n personaClassNames.tertiaryText,\n alignBeforeAfterCenter && styles.tertiary,\n optionalTextClassName,\n state.tertiaryText.className,\n );\n }\n\n if (state.quaternaryText) {\n state.quaternaryText.className = mergeClasses(\n personaClassNames.quaternaryText,\n alignBeforeAfterCenter && styles.quaternary,\n optionalTextClassName,\n state.quaternaryText.className,\n );\n }\n\n return state;\n};\n\nconst usePrimaryTextBaseClassName = makeResetStyles({\n display: 'block',\n color: tokens.colorNeutralForeground1,\n ...typographyStyles.body1,\n});\n\nconst useOptionalTextBaseClassName = makeResetStyles({\n display: 'block',\n color: tokens.colorNeutralForeground2,\n ...typographyStyles.caption1,\n});\n\nconst useTextStyles = makeStyles({\n beforeAlignToPrimary: {\n gridColumnEnd: 'middle',\n },\n afterAlignToPrimary: {\n gridColumnStart: 'middle',\n },\n\n body1: typographyStyles.body1,\n caption1: typographyStyles.caption1,\n subtitle2: typographyStyles.subtitle2,\n});\n\nconst useTextClassNames = (\n state: PersonaState,\n alignToPrimary: boolean,\n): {\n primaryTextClassName: string;\n optionalTextClassName: string;\n} => {\n const { presenceOnly, size, textPosition } = state;\n const primaryTextBaseClassName = usePrimaryTextBaseClassName();\n const optionalTextBaseClassName = useOptionalTextBaseClassName();\n const textStyles = useTextStyles();\n\n let primaryTextSize;\n let alignToPrimaryClassName;\n\n if (presenceOnly) {\n if (size === 'extra-small') {\n primaryTextSize = state.numTextLines <= 1 && textStyles.caption1;\n } else if (size === 'extra-large' || size === 'huge') {\n primaryTextSize = textStyles.subtitle2;\n }\n\n if (alignToPrimary) {\n if (textPosition === 'before') {\n alignToPrimaryClassName = textStyles.beforeAlignToPrimary;\n } else if (textPosition === 'after') {\n alignToPrimaryClassName = textStyles.afterAlignToPrimary;\n }\n }\n } else {\n if (size === 'huge') {\n primaryTextSize = textStyles.subtitle2;\n } else if (size === 'extra-large') {\n primaryTextSize = textStyles.subtitle2;\n }\n }\n\n return {\n primaryTextClassName: mergeClasses(primaryTextBaseClassName, primaryTextSize, alignToPrimaryClassName),\n optionalTextClassName: mergeClasses(\n optionalTextBaseClassName,\n !presenceOnly && size === 'huge' && textStyles.body1,\n alignToPrimaryClassName,\n ),\n };\n};\n"],"names":["makeResetStyles","makeStyles","mergeClasses","tokens","typographyStyles","personaClassNames","root","avatar","presence","primaryText","secondaryText","tertiaryText","quaternaryText","avatarSpacing","useRootClassName","display","gridAutoRows","gridAutoFlow","justifyItems","gridTemplateColumns","useStyles","beforeAfterCenter","gridTemplateRows","after","before","below","media","gridRowStart","mediaBeforeAfterCenter","start","alignSelf","center","afterAlignToPrimary","gridColumnEnd","beforeAlignToPrimary","gridColumnStart","secondLineSpacing","marginTop","primary","secondary","tertiary","quaternary","useAvatarSpacingStyles","spacingHorizontalSNudge","small","spacingHorizontalS","medium","large","spacingHorizontalMNudge","huge","spacingHorizontalM","marginRight","marginBottom","marginLeft","usePresenceSpacingStyles","usePersonaStyles_unstable","state","presenceOnly","size","textAlignment","textPosition","alignToPrimary","alignBeforeAfterCenter","primaryTextClassName","optionalTextClassName","useTextClassNames","rootClassName","styles","avatarSpacingStyles","presenceSpacingStyles","className","usePrimaryTextBaseClassName","color","colorNeutralForeground1","body1","useOptionalTextBaseClassName","colorNeutralForeground2","caption1","useTextStyles","subtitle2","primaryTextBaseClassName","optionalTextBaseClassName","textStyles","primaryTextSize","alignToPrimaryClassName","numTextLines"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -0,0 +1,213 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ personaClassNames: function() {
13
+ return personaClassNames;
14
+ },
15
+ usePersonaStyles_unstable: function() {
16
+ return usePersonaStyles_unstable;
17
+ }
18
+ });
19
+ const _react = require("@griffel/react");
20
+ const _reacttheme = require("@fluentui/react-theme");
21
+ const personaClassNames = {
22
+ root: 'fui-Persona',
23
+ avatar: 'fui-Persona__avatar',
24
+ presence: 'fui-Persona__presence',
25
+ primaryText: 'fui-Persona__primaryText',
26
+ secondaryText: 'fui-Persona__secondaryText',
27
+ tertiaryText: 'fui-Persona__tertiaryText',
28
+ quaternaryText: 'fui-Persona__quaternaryText'
29
+ };
30
+ const avatarSpacing = `--fui-Persona__avatar--spacing`;
31
+ const useRootClassName = (0, _react.makeResetStyles)({
32
+ display: 'inline-grid',
33
+ gridAutoRows: 'max-content',
34
+ gridAutoFlow: 'column',
35
+ justifyItems: 'start',
36
+ gridTemplateColumns: 'max-content [middle] auto'
37
+ });
38
+ /**
39
+ * Styles for the root slot
40
+ */ const useStyles = (0, _react.makeStyles)({
41
+ beforeAfterCenter: {
42
+ // This template is needed to make sure the Avatar is centered when it takes up more space than the text lines
43
+ gridTemplateRows: '1fr [primary] max-content [secondary] max-content [tertiary] max-content [quaternary] max-content 1fr'
44
+ },
45
+ after: {},
46
+ before: {
47
+ justifyItems: 'end',
48
+ gridTemplateColumns: 'auto [middle] max-content'
49
+ },
50
+ below: {
51
+ gridAutoFlow: 'unset',
52
+ justifyItems: 'center',
53
+ gridTemplateColumns: 'unset'
54
+ },
55
+ media: {
56
+ gridRowStart: 'span 5'
57
+ },
58
+ mediaBeforeAfterCenter: {
59
+ gridRowStart: 'span 6'
60
+ },
61
+ start: {
62
+ alignSelf: 'start'
63
+ },
64
+ center: {
65
+ alignSelf: 'center'
66
+ },
67
+ afterAlignToPrimary: {
68
+ alignSelf: 'center',
69
+ gridRowStart: 'unset',
70
+ gridColumnEnd: 'middle'
71
+ },
72
+ beforeAlignToPrimary: {
73
+ alignSelf: 'center',
74
+ gridRowStart: 'unset',
75
+ gridColumnStart: 'middle'
76
+ },
77
+ secondLineSpacing: {
78
+ marginTop: '-2px'
79
+ },
80
+ primary: {
81
+ gridRowStart: 'primary'
82
+ },
83
+ secondary: {
84
+ gridRowStart: 'secondary'
85
+ },
86
+ tertiary: {
87
+ gridRowStart: 'tertiary'
88
+ },
89
+ quaternary: {
90
+ gridRowStart: 'quaternary'
91
+ }
92
+ });
93
+ const useAvatarSpacingStyles = (0, _react.makeStyles)({
94
+ 'extra-small': {
95
+ [avatarSpacing]: _reacttheme.tokens.spacingHorizontalSNudge
96
+ },
97
+ small: {
98
+ [avatarSpacing]: _reacttheme.tokens.spacingHorizontalS
99
+ },
100
+ medium: {
101
+ [avatarSpacing]: _reacttheme.tokens.spacingHorizontalS
102
+ },
103
+ large: {
104
+ [avatarSpacing]: _reacttheme.tokens.spacingHorizontalMNudge
105
+ },
106
+ 'extra-large': {
107
+ [avatarSpacing]: _reacttheme.tokens.spacingHorizontalMNudge
108
+ },
109
+ huge: {
110
+ [avatarSpacing]: _reacttheme.tokens.spacingHorizontalM
111
+ },
112
+ after: {
113
+ marginRight: `var(${avatarSpacing})`
114
+ },
115
+ below: {
116
+ marginBottom: `var(${avatarSpacing})`
117
+ },
118
+ before: {
119
+ marginLeft: `var(${avatarSpacing})`
120
+ }
121
+ });
122
+ const usePresenceSpacingStyles = (0, _react.makeStyles)({
123
+ small: {
124
+ [avatarSpacing]: _reacttheme.tokens.spacingHorizontalSNudge
125
+ }
126
+ });
127
+ const usePersonaStyles_unstable = (state)=>{
128
+ 'use no memo';
129
+ const { presenceOnly, size, textAlignment, textPosition } = state;
130
+ const alignToPrimary = presenceOnly && textAlignment === 'start' && size !== 'extra-large' && size !== 'huge';
131
+ const alignBeforeAfterCenter = textPosition !== 'below' && textAlignment === 'center';
132
+ const { primaryTextClassName, optionalTextClassName } = useTextClassNames(state, alignToPrimary);
133
+ const rootClassName = useRootClassName();
134
+ const styles = useStyles();
135
+ const avatarSpacingStyles = useAvatarSpacingStyles();
136
+ const presenceSpacingStyles = {
137
+ ...avatarSpacingStyles,
138
+ ...usePresenceSpacingStyles()
139
+ };
140
+ state.root.className = (0, _react.mergeClasses)(personaClassNames.root, rootClassName, alignBeforeAfterCenter && styles.beforeAfterCenter, styles[textPosition], state.root.className);
141
+ if (state.avatar) {
142
+ state.avatar.className = (0, _react.mergeClasses)(personaClassNames.avatar, textPosition !== 'below' && styles.media, alignBeforeAfterCenter && styles.mediaBeforeAfterCenter, styles[textAlignment], avatarSpacingStyles[size], avatarSpacingStyles[textPosition], state.avatar.className);
143
+ }
144
+ if (state.presence) {
145
+ state.presence.className = (0, _react.mergeClasses)(personaClassNames.presence, textPosition !== 'below' && styles.media, alignBeforeAfterCenter && styles.mediaBeforeAfterCenter, styles[textAlignment], presenceSpacingStyles[size], presenceSpacingStyles[textPosition], textPosition === 'after' && alignToPrimary && styles.afterAlignToPrimary, textPosition === 'before' && alignToPrimary && styles.beforeAlignToPrimary, state.presence.className);
146
+ }
147
+ if (state.primaryText) {
148
+ state.primaryText.className = (0, _react.mergeClasses)(personaClassNames.primaryText, alignBeforeAfterCenter && styles.primary, primaryTextClassName, state.primaryText.className);
149
+ }
150
+ if (state.secondaryText) {
151
+ state.secondaryText.className = (0, _react.mergeClasses)(personaClassNames.secondaryText, alignBeforeAfterCenter && styles.secondary, optionalTextClassName, styles.secondLineSpacing, state.secondaryText.className);
152
+ }
153
+ if (state.tertiaryText) {
154
+ state.tertiaryText.className = (0, _react.mergeClasses)(personaClassNames.tertiaryText, alignBeforeAfterCenter && styles.tertiary, optionalTextClassName, state.tertiaryText.className);
155
+ }
156
+ if (state.quaternaryText) {
157
+ state.quaternaryText.className = (0, _react.mergeClasses)(personaClassNames.quaternaryText, alignBeforeAfterCenter && styles.quaternary, optionalTextClassName, state.quaternaryText.className);
158
+ }
159
+ return state;
160
+ };
161
+ const usePrimaryTextBaseClassName = (0, _react.makeResetStyles)({
162
+ display: 'block',
163
+ color: _reacttheme.tokens.colorNeutralForeground1,
164
+ ..._reacttheme.typographyStyles.body1
165
+ });
166
+ const useOptionalTextBaseClassName = (0, _react.makeResetStyles)({
167
+ display: 'block',
168
+ color: _reacttheme.tokens.colorNeutralForeground2,
169
+ ..._reacttheme.typographyStyles.caption1
170
+ });
171
+ const useTextStyles = (0, _react.makeStyles)({
172
+ beforeAlignToPrimary: {
173
+ gridColumnEnd: 'middle'
174
+ },
175
+ afterAlignToPrimary: {
176
+ gridColumnStart: 'middle'
177
+ },
178
+ body1: _reacttheme.typographyStyles.body1,
179
+ caption1: _reacttheme.typographyStyles.caption1,
180
+ subtitle2: _reacttheme.typographyStyles.subtitle2
181
+ });
182
+ const useTextClassNames = (state, alignToPrimary)=>{
183
+ const { presenceOnly, size, textPosition } = state;
184
+ const primaryTextBaseClassName = usePrimaryTextBaseClassName();
185
+ const optionalTextBaseClassName = useOptionalTextBaseClassName();
186
+ const textStyles = useTextStyles();
187
+ let primaryTextSize;
188
+ let alignToPrimaryClassName;
189
+ if (presenceOnly) {
190
+ if (size === 'extra-small') {
191
+ primaryTextSize = state.numTextLines <= 1 && textStyles.caption1;
192
+ } else if (size === 'extra-large' || size === 'huge') {
193
+ primaryTextSize = textStyles.subtitle2;
194
+ }
195
+ if (alignToPrimary) {
196
+ if (textPosition === 'before') {
197
+ alignToPrimaryClassName = textStyles.beforeAlignToPrimary;
198
+ } else if (textPosition === 'after') {
199
+ alignToPrimaryClassName = textStyles.afterAlignToPrimary;
200
+ }
201
+ }
202
+ } else {
203
+ if (size === 'huge') {
204
+ primaryTextSize = textStyles.subtitle2;
205
+ } else if (size === 'extra-large') {
206
+ primaryTextSize = textStyles.subtitle2;
207
+ }
208
+ }
209
+ return {
210
+ primaryTextClassName: (0, _react.mergeClasses)(primaryTextBaseClassName, primaryTextSize, alignToPrimaryClassName),
211
+ optionalTextClassName: (0, _react.mergeClasses)(optionalTextBaseClassName, !presenceOnly && size === 'huge' && textStyles.body1, alignToPrimaryClassName)
212
+ };
213
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Persona/usePersonaStyles.styles.ts"],"sourcesContent":["import { makeResetStyles, makeStyles, mergeClasses } from '@griffel/react';\nimport { tokens, typographyStyles } from '@fluentui/react-theme';\nimport type { PersonaSlots, PersonaState } from './Persona.types';\nimport type { SlotClassNames } from '@fluentui/react-utilities';\n\nexport const personaClassNames: SlotClassNames<PersonaSlots> = {\n root: 'fui-Persona',\n avatar: 'fui-Persona__avatar',\n presence: 'fui-Persona__presence',\n primaryText: 'fui-Persona__primaryText',\n secondaryText: 'fui-Persona__secondaryText',\n tertiaryText: 'fui-Persona__tertiaryText',\n quaternaryText: 'fui-Persona__quaternaryText',\n};\n\nconst avatarSpacing = `--fui-Persona__avatar--spacing`;\n\nconst useRootClassName = makeResetStyles({\n display: 'inline-grid',\n gridAutoRows: 'max-content',\n gridAutoFlow: 'column',\n justifyItems: 'start',\n gridTemplateColumns: 'max-content [middle] auto',\n});\n\n/**\n * Styles for the root slot\n */\nconst useStyles = makeStyles({\n beforeAfterCenter: {\n // This template is needed to make sure the Avatar is centered when it takes up more space than the text lines\n gridTemplateRows:\n '1fr [primary] max-content [secondary] max-content [tertiary] max-content [quaternary] max-content 1fr',\n },\n\n after: {\n // Intentionally empty\n },\n before: {\n justifyItems: 'end',\n gridTemplateColumns: 'auto [middle] max-content',\n },\n below: {\n gridAutoFlow: 'unset',\n justifyItems: 'center',\n gridTemplateColumns: 'unset',\n },\n\n media: {\n gridRowStart: 'span 5',\n },\n\n mediaBeforeAfterCenter: {\n gridRowStart: 'span 6',\n },\n\n start: {\n alignSelf: 'start',\n },\n center: {\n alignSelf: 'center',\n },\n\n afterAlignToPrimary: {\n alignSelf: 'center',\n gridRowStart: 'unset',\n gridColumnEnd: 'middle',\n },\n beforeAlignToPrimary: {\n alignSelf: 'center',\n gridRowStart: 'unset',\n gridColumnStart: 'middle',\n },\n\n secondLineSpacing: {\n marginTop: '-2px',\n },\n\n primary: { gridRowStart: 'primary' },\n secondary: { gridRowStart: 'secondary' },\n tertiary: { gridRowStart: 'tertiary' },\n quaternary: { gridRowStart: 'quaternary' },\n});\n\nconst useAvatarSpacingStyles = makeStyles({\n 'extra-small': {\n [avatarSpacing]: tokens.spacingHorizontalSNudge,\n },\n small: {\n [avatarSpacing]: tokens.spacingHorizontalS,\n },\n medium: {\n [avatarSpacing]: tokens.spacingHorizontalS,\n },\n large: {\n [avatarSpacing]: tokens.spacingHorizontalMNudge,\n },\n 'extra-large': {\n [avatarSpacing]: tokens.spacingHorizontalMNudge,\n },\n huge: {\n [avatarSpacing]: tokens.spacingHorizontalM,\n },\n after: {\n marginRight: `var(${avatarSpacing})`,\n },\n below: {\n marginBottom: `var(${avatarSpacing})`,\n },\n before: {\n marginLeft: `var(${avatarSpacing})`,\n },\n});\n\nconst usePresenceSpacingStyles = makeStyles({\n small: {\n [avatarSpacing]: tokens.spacingHorizontalSNudge,\n },\n});\n\n/**\n * Apply styling to the Persona slots based on the state\n */\nexport const usePersonaStyles_unstable = (state: PersonaState): PersonaState => {\n 'use no memo';\n\n const { presenceOnly, size, textAlignment, textPosition } = state;\n\n const alignToPrimary = presenceOnly && textAlignment === 'start' && size !== 'extra-large' && size !== 'huge';\n const alignBeforeAfterCenter = textPosition !== 'below' && textAlignment === 'center';\n const { primaryTextClassName, optionalTextClassName } = useTextClassNames(state, alignToPrimary);\n\n const rootClassName = useRootClassName();\n const styles = useStyles();\n const avatarSpacingStyles = useAvatarSpacingStyles();\n const presenceSpacingStyles = { ...avatarSpacingStyles, ...usePresenceSpacingStyles() };\n\n state.root.className = mergeClasses(\n personaClassNames.root,\n rootClassName,\n alignBeforeAfterCenter && styles.beforeAfterCenter,\n styles[textPosition],\n state.root.className,\n );\n\n if (state.avatar) {\n state.avatar.className = mergeClasses(\n personaClassNames.avatar,\n textPosition !== 'below' && styles.media,\n alignBeforeAfterCenter && styles.mediaBeforeAfterCenter,\n styles[textAlignment],\n avatarSpacingStyles[size],\n avatarSpacingStyles[textPosition],\n state.avatar.className,\n );\n }\n\n if (state.presence) {\n state.presence.className = mergeClasses(\n personaClassNames.presence,\n textPosition !== 'below' && styles.media,\n alignBeforeAfterCenter && styles.mediaBeforeAfterCenter,\n styles[textAlignment],\n presenceSpacingStyles[size],\n presenceSpacingStyles[textPosition],\n textPosition === 'after' && alignToPrimary && styles.afterAlignToPrimary,\n textPosition === 'before' && alignToPrimary && styles.beforeAlignToPrimary,\n state.presence.className,\n );\n }\n\n if (state.primaryText) {\n state.primaryText.className = mergeClasses(\n personaClassNames.primaryText,\n alignBeforeAfterCenter && styles.primary,\n primaryTextClassName,\n state.primaryText.className,\n );\n }\n\n if (state.secondaryText) {\n state.secondaryText.className = mergeClasses(\n personaClassNames.secondaryText,\n alignBeforeAfterCenter && styles.secondary,\n optionalTextClassName,\n styles.secondLineSpacing,\n state.secondaryText.className,\n );\n }\n\n if (state.tertiaryText) {\n state.tertiaryText.className = mergeClasses(\n personaClassNames.tertiaryText,\n alignBeforeAfterCenter && styles.tertiary,\n optionalTextClassName,\n state.tertiaryText.className,\n );\n }\n\n if (state.quaternaryText) {\n state.quaternaryText.className = mergeClasses(\n personaClassNames.quaternaryText,\n alignBeforeAfterCenter && styles.quaternary,\n optionalTextClassName,\n state.quaternaryText.className,\n );\n }\n\n return state;\n};\n\nconst usePrimaryTextBaseClassName = makeResetStyles({\n display: 'block',\n color: tokens.colorNeutralForeground1,\n ...typographyStyles.body1,\n});\n\nconst useOptionalTextBaseClassName = makeResetStyles({\n display: 'block',\n color: tokens.colorNeutralForeground2,\n ...typographyStyles.caption1,\n});\n\nconst useTextStyles = makeStyles({\n beforeAlignToPrimary: {\n gridColumnEnd: 'middle',\n },\n afterAlignToPrimary: {\n gridColumnStart: 'middle',\n },\n\n body1: typographyStyles.body1,\n caption1: typographyStyles.caption1,\n subtitle2: typographyStyles.subtitle2,\n});\n\nconst useTextClassNames = (\n state: PersonaState,\n alignToPrimary: boolean,\n): {\n primaryTextClassName: string;\n optionalTextClassName: string;\n} => {\n const { presenceOnly, size, textPosition } = state;\n const primaryTextBaseClassName = usePrimaryTextBaseClassName();\n const optionalTextBaseClassName = useOptionalTextBaseClassName();\n const textStyles = useTextStyles();\n\n let primaryTextSize;\n let alignToPrimaryClassName;\n\n if (presenceOnly) {\n if (size === 'extra-small') {\n primaryTextSize = state.numTextLines <= 1 && textStyles.caption1;\n } else if (size === 'extra-large' || size === 'huge') {\n primaryTextSize = textStyles.subtitle2;\n }\n\n if (alignToPrimary) {\n if (textPosition === 'before') {\n alignToPrimaryClassName = textStyles.beforeAlignToPrimary;\n } else if (textPosition === 'after') {\n alignToPrimaryClassName = textStyles.afterAlignToPrimary;\n }\n }\n } else {\n if (size === 'huge') {\n primaryTextSize = textStyles.subtitle2;\n } else if (size === 'extra-large') {\n primaryTextSize = textStyles.subtitle2;\n }\n }\n\n return {\n primaryTextClassName: mergeClasses(primaryTextBaseClassName, primaryTextSize, alignToPrimaryClassName),\n optionalTextClassName: mergeClasses(\n optionalTextBaseClassName,\n !presenceOnly && size === 'huge' && textStyles.body1,\n alignToPrimaryClassName,\n ),\n };\n};\n"],"names":["personaClassNames","usePersonaStyles_unstable","root","avatar","presence","primaryText","secondaryText","tertiaryText","quaternaryText","avatarSpacing","useRootClassName","makeResetStyles","display","gridAutoRows","gridAutoFlow","justifyItems","gridTemplateColumns","useStyles","makeStyles","beforeAfterCenter","gridTemplateRows","after","before","below","media","gridRowStart","mediaBeforeAfterCenter","start","alignSelf","center","afterAlignToPrimary","gridColumnEnd","beforeAlignToPrimary","gridColumnStart","secondLineSpacing","marginTop","primary","secondary","tertiary","quaternary","useAvatarSpacingStyles","tokens","spacingHorizontalSNudge","small","spacingHorizontalS","medium","large","spacingHorizontalMNudge","huge","spacingHorizontalM","marginRight","marginBottom","marginLeft","usePresenceSpacingStyles","state","presenceOnly","size","textAlignment","textPosition","alignToPrimary","alignBeforeAfterCenter","primaryTextClassName","optionalTextClassName","useTextClassNames","rootClassName","styles","avatarSpacingStyles","presenceSpacingStyles","className","mergeClasses","usePrimaryTextBaseClassName","color","colorNeutralForeground1","typographyStyles","body1","useOptionalTextBaseClassName","colorNeutralForeground2","caption1","useTextStyles","subtitle2","primaryTextBaseClassName","optionalTextBaseClassName","textStyles","primaryTextSize","alignToPrimaryClassName","numTextLines"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluentui/react-persona",
3
- "version": "9.4.6",
3
+ "version": "9.5.0",
4
4
  "description": "React components for building web experiences",
5
5
  "main": "lib-commonjs/index.js",
6
6
  "module": "lib/index.js",
@@ -18,8 +18,8 @@
18
18
  "@fluentui/scripts-api-extractor": "*"
19
19
  },
20
20
  "dependencies": {
21
- "@fluentui/react-avatar": "^9.8.6",
22
- "@fluentui/react-badge": "^9.3.2",
21
+ "@fluentui/react-avatar": "^9.9.0",
22
+ "@fluentui/react-badge": "^9.4.0",
23
23
  "@fluentui/react-shared-contexts": "^9.24.0",
24
24
  "@fluentui/react-theme": "^9.1.24",
25
25
  "@fluentui/react-utilities": "^9.22.0",