@devsym/graph-toolkit-react 1.0.0-next.8 → 1.1.0-beta.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/AGENTS.md +10 -0
- package/CONTRIBUTING.md +64 -0
- package/README.md +257 -0
- package/dist/components/People/People.d.ts +16 -0
- package/dist/components/People/People.d.ts.map +1 -0
- package/dist/components/People/People.types.d.ts +103 -0
- package/dist/components/People/People.types.d.ts.map +1 -0
- package/dist/components/People/index.d.ts +6 -0
- package/dist/components/People/index.d.ts.map +1 -0
- package/dist/components/PeoplePicker/PeoplePicker.d.ts +24 -0
- package/dist/components/PeoplePicker/PeoplePicker.d.ts.map +1 -0
- package/dist/components/PeoplePicker/PeoplePicker.types.d.ts +92 -0
- package/dist/components/PeoplePicker/PeoplePicker.types.d.ts.map +1 -0
- package/dist/components/PeoplePicker/index.d.ts +6 -0
- package/dist/components/PeoplePicker/index.d.ts.map +1 -0
- package/dist/components/Person/Person.d.ts.map +1 -1
- package/dist/components/Person/Person.types.d.ts +48 -0
- package/dist/components/Person/Person.types.d.ts.map +1 -1
- package/dist/components/Person/index.d.ts +1 -1
- package/dist/components/Person/index.d.ts.map +1 -1
- package/dist/hooks/usePeopleList.d.ts +74 -0
- package/dist/hooks/usePeopleList.d.ts.map +1 -0
- package/dist/hooks/usePeopleSearch.d.ts +42 -0
- package/dist/hooks/usePeopleSearch.d.ts.map +1 -0
- package/dist/hooks/usePersonData.d.ts.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.mjs +1618 -631
- package/dist/providers/IPersonDataProvider.d.ts +62 -1
- package/dist/providers/IPersonDataProvider.d.ts.map +1 -1
- package/dist/providers/MockProvider.d.ts +3 -2
- package/dist/providers/MockProvider.d.ts.map +1 -1
- package/dist/providers/MsalBrowserProvider.d.ts +12 -0
- package/dist/providers/MsalBrowserProvider.d.ts.map +1 -1
- package/dist/utils/graph.d.ts +17 -0
- package/dist/utils/graph.d.ts.map +1 -1
- package/docs/assets/readme/banner.jpg +0 -0
- package/docs/assets/readme/banner.png +0 -0
- package/docs/assets/readme/provider-flow.svg +76 -0
- package/package.json +17 -15
- package/readme.md +0 -417
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Person data provider interface for fetching user information, presence, and photos
|
|
2
|
+
* Person data provider interface for fetching user information, presence, and photos,
|
|
3
|
+
* and optionally searching for people.
|
|
3
4
|
*/
|
|
4
5
|
import { Presence, User } from '@microsoft/microsoft-graph-types';
|
|
5
6
|
import { IProvider } from './IProvider';
|
|
@@ -60,4 +61,64 @@ export interface IPersonDataProvider {
|
|
|
60
61
|
* @returns True if the provider implements IPersonDataProvider
|
|
61
62
|
*/
|
|
62
63
|
export declare const isPersonDataProvider: (provider: IProvider | null) => provider is IProvider & IPersonDataProvider;
|
|
64
|
+
/**
|
|
65
|
+
* Result item returned by a people search operation
|
|
66
|
+
*/
|
|
67
|
+
export interface PeopleSearchResult {
|
|
68
|
+
/**
|
|
69
|
+
* The unique identifier for the person
|
|
70
|
+
*/
|
|
71
|
+
id: string;
|
|
72
|
+
/**
|
|
73
|
+
* The person's first name.
|
|
74
|
+
*/
|
|
75
|
+
givenName?: string | null;
|
|
76
|
+
/**
|
|
77
|
+
* The person's last name.
|
|
78
|
+
*/
|
|
79
|
+
surname?: string | null;
|
|
80
|
+
/**
|
|
81
|
+
* The person's display name
|
|
82
|
+
*/
|
|
83
|
+
displayName?: string | null;
|
|
84
|
+
/**
|
|
85
|
+
* The person's primary mail address
|
|
86
|
+
*/
|
|
87
|
+
mail?: string | null;
|
|
88
|
+
/**
|
|
89
|
+
* The person's user principal name
|
|
90
|
+
*/
|
|
91
|
+
userPrincipalName?: string | null;
|
|
92
|
+
/**
|
|
93
|
+
* The person's job title
|
|
94
|
+
*/
|
|
95
|
+
jobTitle?: string | null;
|
|
96
|
+
/**
|
|
97
|
+
* The department the person belongs to
|
|
98
|
+
*/
|
|
99
|
+
department?: string | null;
|
|
100
|
+
/**
|
|
101
|
+
* Optional profile photo URL for the person.
|
|
102
|
+
* When provided, UI components can render the avatar image without fetching it separately.
|
|
103
|
+
*/
|
|
104
|
+
photoUrl?: string | null;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Optional interface that providers can implement to support people search
|
|
108
|
+
*/
|
|
109
|
+
export interface IPeopleSearchProvider {
|
|
110
|
+
/**
|
|
111
|
+
* Search for people matching the given query string
|
|
112
|
+
* @param query - The search query (display name, email, or UPN fragment). An empty query may return initial suggestions.
|
|
113
|
+
* @param maxResults - Maximum number of results to return (default: 10)
|
|
114
|
+
* @returns Promise resolving to an array of matching people
|
|
115
|
+
*/
|
|
116
|
+
searchPeople(query: string, maxResults?: number): Promise<PeopleSearchResult[]>;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Type guard to check if a provider implements the IPeopleSearchProvider interface
|
|
120
|
+
* @param provider - The provider to check
|
|
121
|
+
* @returns True if the provider implements IPeopleSearchProvider
|
|
122
|
+
*/
|
|
123
|
+
export declare const isPeopleSearchProvider: (provider: IProvider | null) => provider is IProvider & IPeopleSearchProvider;
|
|
63
124
|
//# sourceMappingURL=IPersonDataProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IPersonDataProvider.d.ts","sourceRoot":"","sources":["../../src/providers/IPersonDataProvider.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"IPersonDataProvider.d.ts","sourceRoot":"","sources":["../../src/providers/IPersonDataProvider.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,aAAa,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC;;OAEG;IACH,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB;;OAEG;IACH,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC1B;;OAEG;IACH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,aAAa,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;CACxF;AAED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAC/B,UAAU,SAAS,GAAG,IAAI,KACzB,QAAQ,IAAI,SAAS,GAAG,mBAM1B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;;OAKG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;CACjF;AAED;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GACjC,UAAU,SAAS,GAAG,IAAI,KACzB,QAAQ,IAAI,SAAS,GAAG,qBAM1B,CAAC"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* MockProvider - simple in-memory provider for development and tests
|
|
3
3
|
*/
|
|
4
4
|
import { IProvider, ProviderState } from './IProvider';
|
|
5
|
-
import { IPersonDataProvider, ProviderPersonDataRequest, ProviderPersonDataResponse } from './IPersonDataProvider';
|
|
6
|
-
export declare class MockProvider implements IProvider, IPersonDataProvider {
|
|
5
|
+
import { IPersonDataProvider, IPeopleSearchProvider, PeopleSearchResult, ProviderPersonDataRequest, ProviderPersonDataResponse } from './IPersonDataProvider';
|
|
6
|
+
export declare class MockProvider implements IProvider, IPersonDataProvider, IPeopleSearchProvider {
|
|
7
7
|
private state;
|
|
8
8
|
private listeners;
|
|
9
9
|
constructor(options?: {
|
|
@@ -12,6 +12,7 @@ export declare class MockProvider implements IProvider, IPersonDataProvider {
|
|
|
12
12
|
});
|
|
13
13
|
getAccessToken(): Promise<string>;
|
|
14
14
|
getPersonData(request: ProviderPersonDataRequest): Promise<ProviderPersonDataResponse>;
|
|
15
|
+
searchPeople(query: string, maxResults?: number): Promise<PeopleSearchResult[]>;
|
|
15
16
|
login(): Promise<void>;
|
|
16
17
|
logout(): Promise<void>;
|
|
17
18
|
getState(): ProviderState;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MockProvider.d.ts","sourceRoot":"","sources":["../../src/providers/MockProvider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EACzB,0BAA0B,EAC3B,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"MockProvider.d.ts","sourceRoot":"","sources":["../../src/providers/MockProvider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,EAC3B,MAAM,uBAAuB,CAAC;AAgH/B,qBAAa,YAAa,YAAW,SAAS,EAAE,mBAAmB,EAAE,qBAAqB;IACxF,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,SAAS,CAAuB;gBAC5B,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAMnE,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAQ3B,aAAa,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IA2CtF,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,SAAK,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAe3E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAK7B,QAAQ,IAAI,aAAa;IAIzB,cAAc,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAIzC,yBAAyB,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAIpD,OAAO,CAAC,IAAI;CASb;AAED,eAAO,MAAM,0BAA0B,oBAA+C,CAAC"}
|
|
@@ -3,6 +3,18 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import type { IPublicClientApplication } from '@azure/msal-browser';
|
|
5
5
|
import { IProvider, ProviderState } from './IProvider';
|
|
6
|
+
/**
|
|
7
|
+
* Error indicating that an interactive redirect has been initiated and token acquisition
|
|
8
|
+
* will continue after navigation completes.
|
|
9
|
+
*/
|
|
10
|
+
export declare class RedirectInProgressError extends Error {
|
|
11
|
+
/**
|
|
12
|
+
* Creates a new instance of RedirectInProgressError.
|
|
13
|
+
*
|
|
14
|
+
* @param message - A human-readable description of the redirect state.
|
|
15
|
+
*/
|
|
16
|
+
constructor(message: string);
|
|
17
|
+
}
|
|
6
18
|
export declare class MsalBrowserProvider implements IProvider {
|
|
7
19
|
private readonly msalInstance;
|
|
8
20
|
private readonly defaultScopes;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MsalBrowserProvider.d.ts","sourceRoot":"","sources":["../../src/providers/MsalBrowserProvider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAe,wBAAwB,
|
|
1
|
+
{"version":3,"file":"MsalBrowserProvider.d.ts","sourceRoot":"","sources":["../../src/providers/MsalBrowserProvider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAe,wBAAwB,EAAkC,MAAM,qBAAqB,CAAC;AACjH,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEvD;;;GAGG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;IAChD;;;;OAIG;gBACS,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,mBAAoB,YAAW,SAAS;IACnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA2B;IACxD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAW;IACzC,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,SAAS,CAAyB;gBAE9B,YAAY,EAAE,wBAAwB,EAAE,aAAa,EAAE,MAAM,EAAE;IAKrE,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAWvB,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IA8BxD,QAAQ,IAAI,aAAa;IAIzB,cAAc,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAIzC,yBAAyB,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAIpD,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,IAAI;CASb"}
|
package/dist/utils/graph.d.ts
CHANGED
|
@@ -11,4 +11,21 @@ export declare const createGraphClient: (provider: IProvider) => Client;
|
|
|
11
11
|
* Extract initials from a display name
|
|
12
12
|
*/
|
|
13
13
|
export declare const getInitials: (displayName?: string) => string;
|
|
14
|
+
/**
|
|
15
|
+
* Convert a Microsoft Graph photo response into a data URL string when possible.
|
|
16
|
+
*
|
|
17
|
+
* The Graph SDK may return a string, `Blob`, or `ArrayBuffer` depending on the
|
|
18
|
+
* environment and request adapter. Unsupported response shapes resolve to `null`.
|
|
19
|
+
*
|
|
20
|
+
* @param photoResponse - Raw response returned from the Graph photo endpoint
|
|
21
|
+
* @returns A data URL string or `null` when the response cannot be converted
|
|
22
|
+
*/
|
|
23
|
+
export declare const photoResponseToDataUrl: (photoResponse: unknown) => Promise<string | null>;
|
|
24
|
+
/**
|
|
25
|
+
* Encode a dynamic Microsoft Graph path segment for safe interpolation into request URLs.
|
|
26
|
+
*
|
|
27
|
+
* @param value - Raw path segment value such as a user identifier or group ID
|
|
28
|
+
* @returns The trimmed and URL-encoded path segment
|
|
29
|
+
*/
|
|
30
|
+
export declare const encodeGraphPathSegment: (value: string) => string;
|
|
14
31
|
//# sourceMappingURL=graph.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/utils/graph.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,UAAU,SAAS,KAAG,MAWvD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,cAAc,MAAM,KAAG,MASlD,CAAC"}
|
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/utils/graph.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,UAAU,SAAS,KAAG,MAWvD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,cAAc,MAAM,KAAG,MASlD,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,GAAU,eAAe,OAAO,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CA0B1F,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,GAAI,OAAO,MAAM,KAAG,MAA0C,CAAC"}
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1100" height="430" viewBox="0 0 1100 430" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">Graph Toolkit React provider flow</title>
|
|
3
|
+
<desc id="desc">A diagram showing React components inside GraphProvider using MockProvider, MsalBrowserProvider, TeamsHostedProvider, or a custom provider to access Microsoft Graph.</desc>
|
|
4
|
+
<defs>
|
|
5
|
+
<marker id="arrow" markerWidth="10" markerHeight="10" refX="9" refY="5" orient="auto" markerUnits="strokeWidth">
|
|
6
|
+
<path d="M 0 0 L 10 5 L 0 10 z" fill="#64748b"/>
|
|
7
|
+
</marker>
|
|
8
|
+
<filter id="shadow" x="-20%" y="-20%" width="140%" height="140%">
|
|
9
|
+
<feDropShadow dx="0" dy="8" stdDeviation="12" flood-color="#111827" flood-opacity="0.12"/>
|
|
10
|
+
</filter>
|
|
11
|
+
</defs>
|
|
12
|
+
|
|
13
|
+
<rect width="1100" height="430" fill="#f7f9fb"/>
|
|
14
|
+
|
|
15
|
+
<g transform="translate(58 54)">
|
|
16
|
+
<rect width="238" height="300" rx="8" fill="#ffffff" stroke="#d1d5db" filter="url(#shadow)"/>
|
|
17
|
+
<text x="26" y="42" font-family="Segoe UI, Arial, sans-serif" font-size="18" font-weight="600" fill="#111827">React application</text>
|
|
18
|
+
<text x="26" y="70" font-family="Segoe UI, Arial, sans-serif" font-size="13" fill="#4b5563">Components render normal React UI</text>
|
|
19
|
+
|
|
20
|
+
<rect x="26" y="104" width="186" height="44" rx="6" fill="#eef6ff" stroke="#b3d6f2"/>
|
|
21
|
+
<text x="48" y="132" font-family="Segoe UI, Arial, sans-serif" font-size="14" font-weight="600" fill="#0f4c81">Person</text>
|
|
22
|
+
|
|
23
|
+
<rect x="26" y="164" width="186" height="44" rx="6" fill="#eefcf7" stroke="#b7ead7"/>
|
|
24
|
+
<text x="48" y="192" font-family="Segoe UI, Arial, sans-serif" font-size="14" font-weight="600" fill="#0f6b50">People</text>
|
|
25
|
+
|
|
26
|
+
<rect x="26" y="224" width="186" height="44" rx="6" fill="#fff7ed" stroke="#fed7aa"/>
|
|
27
|
+
<text x="48" y="252" font-family="Segoe UI, Arial, sans-serif" font-size="14" font-weight="600" fill="#9a3412">PeoplePicker</text>
|
|
28
|
+
</g>
|
|
29
|
+
|
|
30
|
+
<g transform="translate(378 86)">
|
|
31
|
+
<rect width="344" height="236" rx="8" fill="#111827" filter="url(#shadow)"/>
|
|
32
|
+
<text x="28" y="44" font-family="Segoe UI, Arial, sans-serif" font-size="20" font-weight="600" fill="#ffffff">GraphProvider</text>
|
|
33
|
+
<text x="28" y="74" font-family="Segoe UI, Arial, sans-serif" font-size="13" fill="#d1d5db">One provider instance for token and state</text>
|
|
34
|
+
|
|
35
|
+
<rect x="28" y="104" width="132" height="38" rx="6" fill="#ffffff" fill-opacity="0.08" stroke="#374151"/>
|
|
36
|
+
<text x="48" y="128" font-family="Segoe UI, Arial, sans-serif" font-size="13" fill="#e5e7eb">MockProvider</text>
|
|
37
|
+
|
|
38
|
+
<rect x="184" y="104" width="132" height="38" rx="6" fill="#ffffff" fill-opacity="0.08" stroke="#374151"/>
|
|
39
|
+
<text x="202" y="128" font-family="Segoe UI, Arial, sans-serif" font-size="13" fill="#e5e7eb">MSAL browser</text>
|
|
40
|
+
|
|
41
|
+
<rect x="28" y="160" width="132" height="38" rx="6" fill="#ffffff" fill-opacity="0.08" stroke="#374151"/>
|
|
42
|
+
<text x="47" y="184" font-family="Segoe UI, Arial, sans-serif" font-size="13" fill="#e5e7eb">Teams hosted</text>
|
|
43
|
+
|
|
44
|
+
<rect x="184" y="160" width="132" height="38" rx="6" fill="#ffffff" fill-opacity="0.08" stroke="#374151"/>
|
|
45
|
+
<text x="203" y="184" font-family="Segoe UI, Arial, sans-serif" font-size="13" fill="#e5e7eb">Custom auth</text>
|
|
46
|
+
</g>
|
|
47
|
+
|
|
48
|
+
<g transform="translate(804 54)">
|
|
49
|
+
<rect width="238" height="300" rx="8" fill="#ffffff" stroke="#d1d5db" filter="url(#shadow)"/>
|
|
50
|
+
<text x="26" y="42" font-family="Segoe UI, Arial, sans-serif" font-size="18" font-weight="600" fill="#111827">Microsoft Graph</text>
|
|
51
|
+
<text x="26" y="70" font-family="Segoe UI, Arial, sans-serif" font-size="13" fill="#4b5563">Scoped user and directory data</text>
|
|
52
|
+
|
|
53
|
+
<circle cx="72" cy="128" r="28" fill="#0f6cbd"/>
|
|
54
|
+
<text x="72" y="138" text-anchor="middle" font-family="Segoe UI, Arial, sans-serif" font-size="22" font-weight="600" fill="#ffffff">U</text>
|
|
55
|
+
<text x="118" y="124" font-family="Segoe UI, Arial, sans-serif" font-size="14" font-weight="600" fill="#111827">Users</text>
|
|
56
|
+
<text x="118" y="146" font-family="Segoe UI, Arial, sans-serif" font-size="12" fill="#6b7280">profile and photo</text>
|
|
57
|
+
|
|
58
|
+
<circle cx="72" cy="200" r="28" fill="#13a10e"/>
|
|
59
|
+
<text x="72" y="210" text-anchor="middle" font-family="Segoe UI, Arial, sans-serif" font-size="22" font-weight="600" fill="#ffffff">P</text>
|
|
60
|
+
<text x="118" y="196" font-family="Segoe UI, Arial, sans-serif" font-size="14" font-weight="600" fill="#111827">Presence</text>
|
|
61
|
+
<text x="118" y="218" font-family="Segoe UI, Arial, sans-serif" font-size="12" fill="#6b7280">availability state</text>
|
|
62
|
+
|
|
63
|
+
<circle cx="72" cy="272" r="28" fill="#8764b8"/>
|
|
64
|
+
<text x="72" y="282" text-anchor="middle" font-family="Segoe UI, Arial, sans-serif" font-size="22" font-weight="600" fill="#ffffff">G</text>
|
|
65
|
+
<text x="118" y="268" font-family="Segoe UI, Arial, sans-serif" font-size="14" font-weight="600" fill="#111827">Groups</text>
|
|
66
|
+
<text x="118" y="290" font-family="Segoe UI, Arial, sans-serif" font-size="12" fill="#6b7280">members and lists</text>
|
|
67
|
+
</g>
|
|
68
|
+
|
|
69
|
+
<line x1="318" y1="204" x2="356" y2="204" stroke="#64748b" stroke-width="3" marker-end="url(#arrow)"/>
|
|
70
|
+
<line x1="724" y1="204" x2="780" y2="204" stroke="#64748b" stroke-width="3" marker-end="url(#arrow)"/>
|
|
71
|
+
|
|
72
|
+
<g transform="translate(396 358)">
|
|
73
|
+
<rect width="308" height="42" rx="8" fill="#e8f2ff" stroke="#b3d6f2"/>
|
|
74
|
+
<text x="24" y="27" font-family="Segoe UI, Arial, sans-serif" font-size="14" fill="#0f4c81">Keep auth outside UI components</text>
|
|
75
|
+
</g>
|
|
76
|
+
</svg>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@devsym/graph-toolkit-react",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0-beta.0",
|
|
4
4
|
"description": "React components for Microsoft Graph powered by Fluent UI",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -16,7 +16,8 @@
|
|
|
16
16
|
"dist",
|
|
17
17
|
"README.md",
|
|
18
18
|
"AGENTS.md",
|
|
19
|
-
"
|
|
19
|
+
"CONTRIBUTING.md",
|
|
20
|
+
"docs/assets/readme",
|
|
20
21
|
"LICENSE"
|
|
21
22
|
],
|
|
22
23
|
"scripts": {
|
|
@@ -51,7 +52,7 @@
|
|
|
51
52
|
},
|
|
52
53
|
"publishConfig": {
|
|
53
54
|
"access": "public",
|
|
54
|
-
"tag": "
|
|
55
|
+
"tag": "beta"
|
|
55
56
|
},
|
|
56
57
|
"peerDependencies": {
|
|
57
58
|
"@azure/msal-browser": "^4.0.0 || ^5.0.0",
|
|
@@ -69,33 +70,34 @@
|
|
|
69
70
|
"@microsoft/microsoft-graph-types": "^2.40.0"
|
|
70
71
|
},
|
|
71
72
|
"devDependencies": {
|
|
72
|
-
"@changesets/cli": "^2.29.7",
|
|
73
73
|
"@azure/msal-browser": "^5.2.0",
|
|
74
|
+
"@changesets/cli": "^2.29.7",
|
|
74
75
|
"@fluentui/react-components": "^9.72.6",
|
|
75
|
-
"@storybook/addon-a11y": "^10.
|
|
76
|
-
"@storybook/addon-docs": "^10.
|
|
77
|
-
"@storybook/addon-links": "^10.
|
|
78
|
-
"@storybook/react-vite": "^10.
|
|
76
|
+
"@storybook/addon-a11y": "^10.3.4",
|
|
77
|
+
"@storybook/addon-docs": "^10.3.4",
|
|
78
|
+
"@storybook/addon-links": "^10.3.4",
|
|
79
|
+
"@storybook/react-vite": "^10.3.4",
|
|
80
|
+
"@testing-library/dom": "^10.4.1",
|
|
79
81
|
"@testing-library/react": "^16.3.0",
|
|
80
82
|
"@types/react": "^18.2.0",
|
|
81
83
|
"@types/react-dom": "^18.2.0",
|
|
82
84
|
"@typescript-eslint/eslint-plugin": "^8.46.3",
|
|
83
85
|
"@typescript-eslint/parser": "^8.46.3",
|
|
84
|
-
"@vitejs/plugin-react": "^
|
|
86
|
+
"@vitejs/plugin-react": "^6.0.0",
|
|
85
87
|
"eslint": "^9.39.1",
|
|
86
88
|
"eslint-config-prettier": "^10.1.8",
|
|
87
89
|
"eslint-plugin-react": "^7.33.2",
|
|
88
90
|
"eslint-plugin-react-hooks": "^7.0.1",
|
|
89
|
-
"eslint-plugin-storybook": "^10.
|
|
91
|
+
"eslint-plugin-storybook": "^10.3.4",
|
|
90
92
|
"globals": "^17.3.0",
|
|
91
|
-
"jsdom": "^
|
|
93
|
+
"jsdom": "^29.0.2",
|
|
92
94
|
"prettier": "^3.2.5",
|
|
93
95
|
"react": "^18.2.0",
|
|
94
96
|
"react-dom": "^18.2.0",
|
|
95
|
-
"storybook": "^10.
|
|
97
|
+
"storybook": "^10.3.4",
|
|
96
98
|
"typescript": "^5.9.3",
|
|
97
|
-
"vite": "^
|
|
99
|
+
"vite": "^8.0.5",
|
|
98
100
|
"vite-plugin-dts": "^4.5.4",
|
|
99
|
-
"vitest": "^4.
|
|
101
|
+
"vitest": "^4.1.2"
|
|
100
102
|
}
|
|
101
|
-
}
|
|
103
|
+
}
|