<!--
Make sure you've read the CONTRIBUTING.md guidelines:
https://github.com/stack-auth/stack-auth/blob/dev/CONTRIBUTING.md
-->
<!-- ELLIPSIS_HIDDEN -->
----
> [!IMPORTANT]
> Enhances OAuth error handling by adding access token validity checks
and improving token refresh logic across multiple providers.
>
> - **Behavior**:
> - Adds `checkAccessTokenValidity()` method to `OAuthBaseProvider` and
implements it in `AppleProvider`, `BitbucketProvider`,
`DiscordProvider`, `FacebookProvider`, `GithubProvider`,
`GitlabProvider`, `GoogleProvider`, `LinkedInProvider`,
`MicrosoftProvider`, `MockProvider`, `SpotifyProvider`, and `XProvider`.
> - In `crud.tsx`, checks token validity before returning it, and
refreshes if invalid.
> - **Error Handling**:
> - In `GithubProvider`, throws `StatusError` for 403 errors when
fetching user emails due to missing permissions.
> - **Misc**:
> - Imports `StatusError` in `github.tsx`.
>
> <sup>This description was created by </sup>[<img alt="Ellipsis"
src="https://img.shields.io/badge/Ellipsis-blue?color=175173">](https://www.ellipsis.dev?ref=stack-auth%2Fstack-auth&utm_source=github&utm_medium=referral)<sup>
for de143b1a92. You can
[customize](https://app.ellipsis.dev/stack-auth/settings/summaries) this
summary. It will automatically update as commits are pushed.</sup>
<!-- ELLIPSIS_HIDDEN -->
---------
Co-authored-by: Konsti Wohlwend <n2d4xc@gmail.com>
<!--
Fixes generation script, adds new oauth docs pages, fixes bottom
navigation, adds mobile support, sidebar changes.
-->
<!-- ELLIPSIS_HIDDEN -->
----
> [!IMPORTANT]
> This PR adds OAuth provider documentation, enhances mobile navigation,
and updates Python-specific documentation for Stack Auth.
>
> - **OAuth Providers**:
> - Adds documentation for GitHub, Google, Facebook, Microsoft, Spotify,
Discord, GitLab, Apple, Bitbucket, LinkedIn, and X (Twitter) in
`docs/templates/concepts/auth-providers/`.
> - Updates `docs/docs-platform.yml` to include new OAuth provider
pages.
> - **Mobile Support**:
> - Enhances bottom navigation for mobile devices in
`docs/src/app/(home)/layout.tsx` and `docs/src/app/api/layout.tsx`.
> - Introduces `AIChatDrawer` and `AuthPanel` components for
mobile-friendly interactions.
> - **Documentation Enhancements**:
> - Adds Python-specific documentation for user authentication and team
management in `docs/templates-python/concepts/`.
> - Updates `docs/templates-python/meta.json` to include new Python
documentation pages.
> - Refines search functionality and UI components for better user
experience.
>
> <sup>This description was created by </sup>[<img alt="Ellipsis"
src="https://img.shields.io/badge/Ellipsis-blue?color=175173">](https://www.ellipsis.dev?ref=stack-auth%2Fstack-auth&utm_source=github&utm_medium=referral)<sup>
for bf759151d8. You can
[customize](https://app.ellipsis.dev/stack-auth/settings/summaries) this
summary. It will automatically update as commits are pushed.</sup>
<!-- ELLIPSIS_HIDDEN -->
---------
Co-authored-by: Konsti Wohlwend <n2d4xc@gmail.com>
<!--
Make sure you've read the CONTRIBUTING.md guidelines:
https://github.com/stack-auth/stack-auth/blob/dev/CONTRIBUTING.md
-->
<!-- ELLIPSIS_HIDDEN -->
----
> [!IMPORTANT]
> Normalize email addresses in user and contact channel creation and
update processes using `normalizeEmail()` function.
>
> - **Behavior**:
> - Normalize emails in `onCreate` and `onUpdate` functions in
`contact-channels/crud.tsx` and `users/crud.tsx` using
`normalizeEmail()`.
> - Handles email normalization for 'gmail.com', 'googlemail.com', and
'live.com' by removing dots.
> - Throws error for invalid email formats in `normalizeEmail()` in
`emails.tsx`.
> - **Functions**:
> - Adds `normalizeEmail()` in `emails.tsx` to standardize email
addresses.
> - Updates `onCreate` and `onUpdate` handlers in
`contact-channels/crud.tsx` and `users/crud.tsx` to use
`normalizeEmail()`.
> - **Tests**:
> - Adds tests for `normalizeEmail()` in `emails.tsx` to verify email
normalization logic.
>
> <sup>This description was created by </sup>[<img alt="Ellipsis"
src="https://img.shields.io/badge/Ellipsis-blue?color=175173">](https://www.ellipsis.dev?ref=stack-auth%2Fstack-auth&utm_source=github&utm_medium=referral)<sup>
for 2c29c35447. You can
[customize](https://app.ellipsis.dev/stack-auth/settings/summaries) this
summary. It will automatically update as commits are pushed.</sup>
<!-- ELLIPSIS_HIDDEN -->
---------
Co-authored-by: Konsti Wohlwend <n2d4xc@gmail.com>
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
<!--
Make sure you've read the CONTRIBUTING.md guidelines:
https://github.com/stack-auth/stack-auth/blob/dev/CONTRIBUTING.md
-->
<!-- ELLIPSIS_HIDDEN -->
----
> [!IMPORTANT]
> Enhance `SelectedTeamSwitcher` to support nullable teams and add
'personal' team icon in `TeamIcon`, with updated translations.
>
> - **Behavior**:
> - `SelectedTeamSwitcher` in `selected-team-switcher.tsx` now supports
nullable teams with `allowNull` prop and `nullLabel` for display.
> - `onChange` callback added to `SelectedTeamSwitcher` to handle team
changes.
> - `TeamIcon` in `team-icon.tsx` now supports a 'personal' team type,
displaying a default icon.
> - **Translations**:
> - Added translation key for "Personal team" in
`quetzal-translations.ts`.
> - **Misc**:
> - Updated `SelectedTeamSwitcherProps` type to handle nullable teams
and added `onChange` callback.
> - Minor refactoring in `selected-team-switcher.tsx` for better
handling of team selection logic.
>
> <sup>This description was created by </sup>[<img alt="Ellipsis"
src="https://img.shields.io/badge/Ellipsis-blue?color=175173">](https://www.ellipsis.dev?ref=stack-auth%2Fstack-auth&utm_source=github&utm_medium=referral)<sup>
for ddb61e962b. You can
[customize](https://app.ellipsis.dev/stack-auth/settings/summaries) this
summary. It will automatically update as commits are pushed.</sup>
<!-- ELLIPSIS_HIDDEN -->
---------
Co-authored-by: Konsti Wohlwend <n2d4xc@gmail.com>