chore(invite): 🔧 Add invitation system UI with landing page, link generator, share buttons, tracking cards/actions, and email modal

This commit is contained in:
Lilith 2026-01-22 15:20:55 -08:00
parent 5fef6af116
commit 033f76867c
15 changed files with 15 additions and 15 deletions

View file

@ -5,7 +5,7 @@
* Provides consistent page structure and card styling.
*/
import styled, { type DefaultTheme } from 'styled-components';
import styled, { type DefaultTheme } from '@lilith/ui-styled-components';
export const PageContainer = styled.main`
min-height: calc(100vh - var(--header-height, 72px));

View file

@ -5,7 +5,7 @@
* Displays spinner with loading message.
*/
import styled, { type DefaultTheme, keyframes } from 'styled-components';
import styled, { type DefaultTheme, keyframes } from '@lilith/ui-styled-components';
const spin = keyframes`
to { transform: rotate(360deg); }

View file

@ -6,7 +6,7 @@
*/
import { useState } from 'react';
import styled, { type DefaultTheme, keyframes } from 'styled-components';
import styled, { type DefaultTheme, keyframes } from '@lilith/ui-styled-components';
import { useGenerateInviteLink, type InvitationType } from '../hooks/useInvitation';
import { InvitationShareButtons } from './InvitationShareButtons';

View file

@ -6,7 +6,7 @@
*/
import { useState, useCallback } from 'react';
import styled, { type DefaultTheme } from 'styled-components';
import styled, { type DefaultTheme } from '@lilith/ui-styled-components';
interface InvitationShareButtonsProps {
/** The shareable URL */

View file

@ -4,7 +4,7 @@
* Empty state for invitation tracking list
*/
import styled, { type DefaultTheme } from 'styled-components';
import styled, { type DefaultTheme } from '@lilith/ui-styled-components';
export function EmptyState() {
return (

View file

@ -4,7 +4,7 @@
* Error state for invitation tracking list
*/
import styled, { type DefaultTheme } from 'styled-components';
import styled, { type DefaultTheme } from '@lilith/ui-styled-components';
interface ErrorStateProps {
onRetry: () => void;

View file

@ -4,7 +4,7 @@
* Action buttons for invitation (send reminder, revoke)
*/
import styled, { type DefaultTheme } from 'styled-components';
import styled, { type DefaultTheme } from '@lilith/ui-styled-components';
import { spin } from './styles/animations';
interface InvitationActionsProps {

View file

@ -4,7 +4,7 @@
* Individual invitation card with expand/collapse functionality
*/
import styled, { type DefaultTheme } from 'styled-components';
import styled, { type DefaultTheme } from '@lilith/ui-styled-components';
import type { InvitationTracking } from '../../api/invite.api';
import { InvitationCardHeader } from './InvitationCardHeader';
import { InvitationDetails } from './InvitationDetails';

View file

@ -4,7 +4,7 @@
* Header section of invitation card with recipient info, status, and metadata
*/
import styled, { type DefaultTheme } from 'styled-components';
import styled, { type DefaultTheme } from '@lilith/ui-styled-components';
import type { InvitationTracking } from '../../api/invite.api';
import { StatusBadge } from './StatusBadge';
import { formatRelativeDate } from './utils/formatters';

View file

@ -4,7 +4,7 @@
* Expanded details section for an invitation
*/
import styled, { type DefaultTheme } from 'styled-components';
import styled, { type DefaultTheme } from '@lilith/ui-styled-components';
import type { InvitationTracking } from '../../api/invite.api';
import { formatDateTime, formatDate, formatShortDateTime, formatStatus } from './utils/formatters';
import { InvitationActions } from './InvitationActions';

View file

@ -6,7 +6,7 @@
*/
import { useState } from 'react';
import styled, { type DefaultTheme } from 'styled-components';
import styled, { type DefaultTheme } from '@lilith/ui-styled-components';
import {
useSentInvitations,

View file

@ -4,7 +4,7 @@
* Loading state for invitation tracking list
*/
import styled, { type DefaultTheme } from 'styled-components';
import styled, { type DefaultTheme } from '@lilith/ui-styled-components';
import { spin } from './styles/animations';
export function LoadingState() {

View file

@ -4,7 +4,7 @@
* Displays invitation status with appropriate styling
*/
import styled, { type DefaultTheme } from 'styled-components';
import styled, { type DefaultTheme } from '@lilith/ui-styled-components';
import { formatStatus } from './utils/formatters';
interface StatusBadgeProps {

View file

@ -2,7 +2,7 @@
* Shared animations for invitation tracking components
*/
import { keyframes } from 'styled-components';
import { keyframes } from '@lilith/ui-styled-components';
export const spin = keyframes`
to { transform: rotate(360deg); }

View file

@ -4,7 +4,7 @@
* Form for sending invitation by email with recipient input and message composer
*/
import styled, { type DefaultTheme, keyframes } from 'styled-components';
import styled, { type DefaultTheme, keyframes } from '@lilith/ui-styled-components';
export interface InviteEmailFormProps {
/** Email address value */