@sudobility/email-components 1.0.7

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/README.md ADDED
@@ -0,0 +1,48 @@
1
+ # @sudobility/email-components
2
+
3
+ Email marketing and management UI components for React applications.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @sudobility/email-components @sudobility/components @sudobility/design
9
+ ```
10
+
11
+ ## Components
12
+
13
+ - **EmailAccountsList** - Email account management list
14
+ - **EmailInputGroup** - Email input with validation
15
+ - **EmailTemplate** - Email template builder
16
+ - **EmailCampaign** - Campaign creation and management
17
+ - **EmailAnalytics** - Email campaign analytics dashboard
18
+ - **ABTestEmail** - A/B testing for email campaigns
19
+ - **SubscriberList** - Subscriber management interface
20
+ - **ContactCard** - Contact information card
21
+ - **FreeEmailBanner** - Banner for free email providers
22
+
23
+ ## Usage
24
+
25
+ ```tsx
26
+ import { EmailAccountsList, EmailCampaign, EmailAnalytics } from '@sudobility/email-components';
27
+
28
+ function App() {
29
+ return (
30
+ <>
31
+ <EmailAccountsList accounts={accounts} />
32
+ <EmailCampaign onSave={handleSave} />
33
+ <EmailAnalytics campaignId="123" />
34
+ </>
35
+ );
36
+ }
37
+ ```
38
+
39
+ ## Dependencies
40
+
41
+ This package requires:
42
+ - `@sudobility/components` - Core component library
43
+ - `@sudobility/design` - Design system tokens
44
+ - `react` ^18.0.0 or ^19.0.0
45
+
46
+ ## License
47
+
48
+ MIT
@@ -0,0 +1,19 @@
1
+ /**
2
+ * AbTestEmail Component
3
+ *
4
+ * Email marketing component with full dark mode support.
5
+ *
6
+ * @component
7
+ * @example
8
+ * ```tsx
9
+ * <AbTestEmail className="custom-class" />
10
+ * ```
11
+ */
12
+ export interface AbTestEmailProps {
13
+ className?: string;
14
+ children?: React.ReactNode;
15
+ disabled?: boolean;
16
+ }
17
+ export declare const AbTestEmail: ({ className, children, disabled, }: AbTestEmailProps) => import("react/jsx-runtime").JSX.Element;
18
+ export default AbTestEmail;
19
+ //# sourceMappingURL=ab-test-email.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ab-test-email.d.ts","sourceRoot":"","sources":["../src/ab-test-email.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,WAAW,GAAI,oCAIzB,gBAAgB,4CAiBlB,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { default as React } from 'react';
2
+ type ChainType = 'evm' | 'solana' | 'bitcoin' | 'other';
3
+ interface ChainBadgeProps {
4
+ chainType: ChainType;
5
+ size?: 'sm' | 'md' | 'lg';
6
+ }
7
+ export declare const ChainBadge: React.FC<ChainBadgeProps>;
8
+ export {};
9
+ //# sourceMappingURL=chain-badge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain-badge.d.ts","sourceRoot":"","sources":["../src/chain-badge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,KAAK,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AAExD,UAAU,eAAe;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;CAC3B;AAiBD,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAehD,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * ContactCard Component
3
+ *
4
+ * CRM component with full dark mode support.
5
+ *
6
+ * @component
7
+ * @example
8
+ * ```tsx
9
+ * <ContactCard className="custom-class" />
10
+ * ```
11
+ */
12
+ export interface ContactCardProps {
13
+ className?: string;
14
+ children?: React.ReactNode;
15
+ disabled?: boolean;
16
+ }
17
+ export declare const ContactCard: ({ className, children, disabled, }: ContactCardProps) => import("react/jsx-runtime").JSX.Element;
18
+ export default ContactCard;
19
+ //# sourceMappingURL=contact-card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contact-card.d.ts","sourceRoot":"","sources":["../src/contact-card.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,WAAW,GAAI,oCAIzB,gBAAgB,4CAiBlB,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { default as React } from 'react';
2
+ interface EmailAccount {
3
+ address: string;
4
+ name: string;
5
+ type: 'primary' | 'ens' | 'sns';
6
+ walletAddress: string;
7
+ addressType: 'evm' | 'solana';
8
+ }
9
+ interface WalletEmailGroup {
10
+ walletAddress: string;
11
+ addressType: 'evm' | 'solana';
12
+ primaryEmail: EmailAccount;
13
+ domainEmails: EmailAccount[];
14
+ customColor?: string;
15
+ }
16
+ interface EmailAccountsListProps {
17
+ walletGroups: WalletEmailGroup[];
18
+ selectedAccount?: string;
19
+ expandedWallets: string[];
20
+ onAccountSelect: (address: string) => void;
21
+ onToggleWallet: (walletAddress: string) => void;
22
+ onAccountSettings?: (address: string) => void;
23
+ className?: string;
24
+ }
25
+ declare const EmailAccountsList: React.FC<EmailAccountsListProps>;
26
+ export { EmailAccountsList, type EmailAccount, type WalletEmailGroup };
27
+ //# sourceMappingURL=email-accounts-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-accounts-list.d.ts","sourceRoot":"","sources":["../src/email-accounts-list.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAM3D,UAAU,YAAY;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,KAAK,GAAG,QAAQ,CAAC;CAC/B;AAED,UAAU,gBAAgB;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC9B,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,YAAY,EAAE,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,sBAAsB;IAC9B,YAAY,EAAE,gBAAgB,EAAE,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,cAAc,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAmGD,QAAA,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAgFvD,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,KAAK,YAAY,EAAE,KAAK,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * EmailAnalytics Component
3
+ *
4
+ * Email marketing component with full dark mode support.
5
+ *
6
+ * @component
7
+ * @example
8
+ * ```tsx
9
+ * <EmailAnalytics className="custom-class" />
10
+ * ```
11
+ */
12
+ export interface EmailAnalyticsProps {
13
+ className?: string;
14
+ children?: React.ReactNode;
15
+ disabled?: boolean;
16
+ }
17
+ export declare const EmailAnalytics: ({ className, children, disabled, }: EmailAnalyticsProps) => import("react/jsx-runtime").JSX.Element;
18
+ export default EmailAnalytics;
19
+ //# sourceMappingURL=email-analytics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-analytics.d.ts","sourceRoot":"","sources":["../src/email-analytics.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,cAAc,GAAI,oCAI5B,mBAAmB,4CAiBrB,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * EmailCampaign Component
3
+ *
4
+ * Email marketing component with full dark mode support.
5
+ *
6
+ * @component
7
+ * @example
8
+ * ```tsx
9
+ * <EmailCampaign className="custom-class" />
10
+ * ```
11
+ */
12
+ export interface EmailCampaignProps {
13
+ className?: string;
14
+ children?: React.ReactNode;
15
+ disabled?: boolean;
16
+ }
17
+ export declare const EmailCampaign: ({ className, children, disabled, }: EmailCampaignProps) => import("react/jsx-runtime").JSX.Element;
18
+ export default EmailCampaign;
19
+ //# sourceMappingURL=email-campaign.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-campaign.d.ts","sourceRoot":"","sources":["../src/email-campaign.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,aAAa,GAAI,oCAI3B,kBAAkB,4CAiBpB,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,53 @@
1
+ import { default as React } from 'react';
2
+ interface EmailInputFieldProps {
3
+ label: string;
4
+ value: string;
5
+ onChange: (value: string) => void;
6
+ placeholder?: string;
7
+ required?: boolean;
8
+ error?: string;
9
+ className?: string;
10
+ }
11
+ export declare const EmailInputField: React.FC<EmailInputFieldProps>;
12
+ interface CollapsibleEmailFieldProps extends EmailInputFieldProps {
13
+ isVisible: boolean;
14
+ onToggle: () => void;
15
+ showLabel?: string;
16
+ hideLabel?: string;
17
+ }
18
+ export declare const CollapsibleEmailField: React.FC<CollapsibleEmailFieldProps>;
19
+ interface EmailInputGroupProps {
20
+ to: string;
21
+ onToChange: (value: string) => void;
22
+ cc?: string;
23
+ onCcChange?: (value: string) => void;
24
+ bcc?: string;
25
+ onBccChange?: (value: string) => void;
26
+ showCc?: boolean;
27
+ showBcc?: boolean;
28
+ onToggleCc?: () => void;
29
+ onToggleBcc?: () => void;
30
+ errors?: {
31
+ to?: string;
32
+ cc?: string;
33
+ bcc?: string;
34
+ };
35
+ className?: string;
36
+ labels?: {
37
+ to?: string;
38
+ cc?: string;
39
+ bcc?: string;
40
+ addCc?: string;
41
+ removeCc?: string;
42
+ addBcc?: string;
43
+ removeBcc?: string;
44
+ };
45
+ placeholders?: {
46
+ to?: string;
47
+ cc?: string;
48
+ bcc?: string;
49
+ };
50
+ }
51
+ export declare const EmailInputGroup: React.FC<EmailInputGroupProps>;
52
+ export default EmailInputGroup;
53
+ //# sourceMappingURL=email-input-group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-input-group.d.ts","sourceRoot":"","sources":["../src/email-input-group.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,UAAU,oBAAoB;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAuC1D,CAAC;AAEF,UAAU,0BAA2B,SAAQ,oBAAoB;IAC/D,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CA2BtE,CAAC;AAEF,UAAU,oBAAoB;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,MAAM,CAAC,EAAE;QACP,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE;QACP,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,YAAY,CAAC,EAAE;QACb,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA6E1D,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * UemailUtemplate Component
3
+ *
4
+ * A reusable UemailUtemplate component with full dark mode support.
5
+ * Optimized for accessibility and AI-assisted development.
6
+ *
7
+ * @component
8
+ * @example
9
+ * ```tsx
10
+ * <UemailUtemplate className="custom-class" />
11
+ * ```
12
+ *
13
+ * @remarks
14
+ * This component supports:
15
+ * - Light and dark themes automatically
16
+ * - Responsive design
17
+ * - Accessibility features
18
+ * - TypeScript type safety
19
+ *
20
+ * @see {@link https://docs.example.com/components/email-template}
21
+ */
22
+ export interface UemailUtemplateProps {
23
+ /** Additional CSS classes */
24
+ className?: string;
25
+ /** Component children */
26
+ children?: React.ReactNode;
27
+ /** Disabled state */
28
+ disabled?: boolean;
29
+ /** Callback when component is interacted with */
30
+ onClick?: () => void;
31
+ }
32
+ export declare const UemailUtemplate: ({ className, children, disabled, onClick, }: UemailUtemplateProps) => import("react/jsx-runtime").JSX.Element;
33
+ export default UemailUtemplate;
34
+ //# sourceMappingURL=email-template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-template.d.ts","sourceRoot":"","sources":["../src/email-template.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,WAAW,oBAAoB;IACnC,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,eAAO,MAAM,eAAe,GAAI,6CAK7B,oBAAoB,4CAmBtB,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { default as React } from 'react';
2
+ import { VariantProps } from 'class-variance-authority';
3
+ declare const bannerVariants: (props?: ({
4
+ variant?: "default" | "compact" | "minimal" | "vibrant" | null | undefined;
5
+ size?: "default" | "compact" | "large" | null | undefined;
6
+ } & import('class-variance-authority/types').ClassProp) | undefined) => string;
7
+ interface FreeEmailBannerProps extends VariantProps<typeof bannerVariants> {
8
+ className?: string;
9
+ message?: string;
10
+ ctaText?: string;
11
+ ctaLink?: string;
12
+ showBadge?: boolean;
13
+ badgeText?: string;
14
+ onDismiss?: () => void;
15
+ isDismissible?: boolean;
16
+ dismissAriaLabel?: string;
17
+ }
18
+ export declare const FreeEmailBanner: React.FC<FreeEmailBannerProps>;
19
+ export default FreeEmailBanner;
20
+ //# sourceMappingURL=free-email-banner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"free-email-banner.d.ts","sourceRoot":"","sources":["../src/free-email-banner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGlE,QAAA,MAAM,cAAc;;;8EAqBlB,CAAC;AAoCH,UAAU,oBAAqB,SAAQ,YAAY,CAAC,OAAO,cAAc,CAAC;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA8D1D,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Email Components
3
+ *
4
+ * Specialized components for email domain
5
+ */
6
+ export * from './ab-test-email';
7
+ export * from './chain-badge';
8
+ export * from './contact-card';
9
+ export * from './email-accounts-list';
10
+ export * from './email-analytics';
11
+ export * from './email-campaign';
12
+ export * from './email-input-group';
13
+ export * from './email-template';
14
+ export * from './free-email-banner';
15
+ export * from './label';
16
+ export * from './subscriber-list';
17
+ export * from './subscription-plan';
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC"}