chore(invite): 🔧 Add invitation system UI with landing page, link generator, share buttons, tracking cards/actions, and email modal
This commit is contained in:
parent
5fef6af116
commit
033f76867c
15 changed files with 15 additions and 15 deletions
|
|
@ -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));
|
||||
|
|
|
|||
|
|
@ -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); }
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -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 (
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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() {
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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); }
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue