@geenius/teams
v0.16.1
Published
Geenius Teams — Multi-tenant team management for Geenius apps
Maintainers
Readme
@geenius/teams
Team membership, invites, RBAC, and multi-tenant collaboration surfaces for Geenius apps.
Install
pnpm add @geenius/teamsAdd the peers you actually use:
reactandreact-domfor@geenius/teams/reactor@geenius/teams/react-csssolid-jsfor@geenius/teams/solidjsor@geenius/teams/solidjs-cssconvexfor@geenius/teams/convex
Available Exports
import { asUserId, canPerformAction, formatMemberCount } from '@geenius/teams'
import { TeamInviteError, TeamPermissionError } from '@geenius/teams/shared'
import { TeamProvider, TeamPage, TeamsListPage } from '@geenius/teams/react'
import { TeamProvider as CssTeamProvider, TeamCard as CssTeamCard } from '@geenius/teams/react-css'
import '@geenius/teams/react-css/styles.css'
import { TeamProvider as SolidTeamProvider, createTeam, TeamPage as SolidTeamPage } from '@geenius/teams/solidjs'
import { TeamProvider as SolidCssTeamProvider } from '@geenius/teams/solidjs-css'
import '@geenius/teams/solidjs-css/styles.css'
import { schema, teamTables } from '@geenius/teams/convex'What This Package Owns
@geenius/teams is the package-level contract for multi-tenant collaboration inside the Geenius ecosystem. It ships:
- shared branded ids, role helpers, configuration, and typed errors
- React hooks/providers plus Tailwind-based UI components and pages
- SolidJS primitives/providers plus Tailwind-based UI components and pages
- React and SolidJS vanilla CSS variants that mirror the Tailwind surface
- Convex schema, tables, validators, queries, and mutations for team data
The package is intended for products that need team switching, role-aware admin surfaces, invitations, and multi-workspace collaboration without reinventing the underlying RBAC contract.
Basic Usage
import { asUserId } from '@geenius/teams'
import { TeamProvider, TeamsListPage } from '@geenius/teams/react'
const userId = asUserId('user_1')
export function TeamsRoute(): React.JSX.Element {
return (
<TeamProvider
currentUserId={userId}
teams={[
{
id: 'team_1',
name: 'Geenius',
slug: 'geenius',
createdAt: new Date().toISOString(),
updatedAt: new Date().toISOString(),
},
]}
members={[
{
id: 'member_1',
teamId: 'team_1',
userId,
email: '[email protected]',
name: 'Mehdi Nabhani',
role: 'owner',
joinedAt: new Date().toISOString(),
},
]}
>
<TeamsListPage userId={userId} onTeamSelect={() => undefined} />
</TeamProvider>
)
}Convex Usage
The Convex variant exports named tables for consumer schema composition:
import { defineSchema } from 'convex/server'
import { teamTables } from '@geenius/teams/convex'
export default defineSchema({
...teamTables,
})Storybook Review Apps
The repository includes React and SolidJS review apps that compare Tailwind and vanilla CSS variants side by side:
pnpm --filter ./apps/storybook-react build
pnpm --filter ./apps/storybook-solidjs buildPackage Contract
- Root imports map to the shared teams contract.
- Framework variants are consumed through stable subpath exports.
- CSS variants expose standalone stylesheet subpaths at
@geenius/teams/react-css/styles.cssand@geenius/teams/solidjs-css/styles.css. - Storybook review apps are isolated from the package build, lint, test, and publish flows.
- CSS variants remain standalone vanilla CSS implementations and do not re-export Tailwind components.
License
FSL-1.1-Apache-2.0 (free-tier) / Proprietary (commercial)
