@frank-auth/react
Version:
Flexible and customizable React UI components for Frank Authentication
5 lines (4 loc) • 7.96 kB
JavaScript
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("./appearance.cjs"),s=require("./localization.cjs"),o=require("./organization.cjs"),g=require("./theme.cjs"),n=require("./defaults.cjs"),t=require("./validators.cjs"),d=require("../utils/theme.cjs");var u=Object.defineProperty,C=(i,a,e)=>a in i?u(i,a,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[a]=e,c=(i,a,e)=>C(i,typeof a!="symbol"?a+"":a,e);class f{constructor(a){c(this,"config"),c(this,"themeManager"),c(this,"appearanceManager"),c(this,"localizationManager"),c(this,"organizationManager"),c(this,"listeners",new Set),this.config={...n.DEFAULT_FRANK_AUTH_CONFIG,...a},this.themeManager=new g.ThemeManager(this.config.theme),this.appearanceManager=new r.AppearanceManager(this.config.appearance),this.localizationManager=new s.LocalizationManager(this.config.localization),this.config.organization&&(this.organizationManager=new o.OrganizationConfigManager(this.config.organization,this.themeManager,this.appearanceManager)),this.setupManagerListeners(),this.applyInitialConfiguration()}getConfig(){return{...this.config}}updateConfig(a){this.config={...this.config,...a},a.theme&&this.themeManager.setTheme(a.theme),a.appearance&&this.appearanceManager.updateConfig(a.appearance),a.localization&&this.localizationManager.updateConfig(a.localization),a.organization&&this.organizationManager&&this.organizationManager.updateConfig(a.organization),this.notifyListeners()}setOrganization(a){this.config.organization=a,this.config.projectId=a.id,this.organizationManager?this.organizationManager.updateConfig(a):(this.organizationManager=new o.OrganizationConfigManager(a,this.themeManager,this.appearanceManager),this.organizationManager.subscribe(l=>{this.config.organization=l,this.notifyListeners()}));const e=this.organizationManager.generateUIConfig();this.updateConfig(e)}getThemeManager(){return this.themeManager}getAppearanceManager(){return this.appearanceManager}getLocalizationManager(){return this.localizationManager}getOrganizationManager(){return this.organizationManager}applyToDOM(){this.themeManager.applyToDOM(),this.appearanceManager.applyToDOM();const a=this.localizationManager.getCurrentLocaleMetadata().direction;typeof document<"u"&&(document.documentElement.dir=a,document.documentElement.lang=this.localizationManager.getCurrentLocale())}generateCSS(){let a="";return a+=this.themeManager.generateCSSVariables(),a+=`
`,a+=this.appearanceManager.generateCSS(),a+=`
`,a}validateConfig(){return t.validateFrankAuthConfig(this.config)}subscribe(a){return this.listeners.add(a),()=>{this.listeners.delete(a)}}reset(){this.config={...n.DEFAULT_FRANK_AUTH_CONFIG},this.themeManager.setTheme(this.config.theme||{}),this.appearanceManager.updateConfig(this.config.appearance||{}),this.localizationManager.updateConfig(this.config.localization||{}),this.notifyListeners()}destroy(){this.listeners.clear()}setupManagerListeners(){this.themeManager.subscribe(a=>{this.config.theme=a,this.notifyListeners()}),this.appearanceManager.subscribe(a=>{this.config.appearance=a,this.notifyListeners()}),this.localizationManager.subscribe(a=>{this.config.localization&&(this.config.localization.defaultLocale=a),this.notifyListeners()})}applyInitialConfiguration(){this.config.organization?.settings.branding&&this.themeManager.applyBranding({logo:{url:this.config.organization.settings.branding.logo,alt:this.config.organization.name},colors:{primary:this.config.organization.settings.branding.primaryColor||"#3b82f6",secondary:this.config.organization.settings.branding.secondaryColor||"#64748b"},fonts:{primary:"Inter, ui-sans-serif, system-ui, sans-serif"},customCSS:this.config.organization.settings.branding.customCSS}),typeof window<"u"&&this.applyToDOM()}notifyListeners(){this.listeners.forEach(a=>a(this.config))}}function h(i){const a=t.validateFrankAuthConfig,e=a(i);if(!e.isValid)throw new Error(`Invalid configuration: ${e.errors.map(l=>l.message).join(", ")}`);return{...n.DEFAULT_FRANK_AUTH_CONFIG,...i}}function m(i){return new f(i)}function M(i,a,e){const l=o.transformOrganizationSettings(e);return h({publishableKey:i,userType:a,organization:l})}function p(...i){let a={...n.DEFAULT_FRANK_AUTH_CONFIG};for(const e of i)a={...a,...e,theme:{...a.theme,...e.theme},appearance:{...a.appearance,...e.appearance,layout:{...a.appearance?.layout,...e.appearance?.layout},components:{...a.appearance?.components,...e.appearance?.components},branding:{...a.appearance?.branding,...e.appearance?.branding}},localization:{...a.localization,...e.localization},organization:{...a.organization,...e.organization},features:{...a.features,...e.features},components:{...a.components,...e.components}};return a}function T(i,a){const e=n.CONFIG_PRESETS[i];if(!e)throw new Error(`Unknown preset: ${i}`);return a?p(e,a):e}exports.AppearanceManager=r.AppearanceManager;exports.appearanceConfigToTailwind=r.appearanceConfigToTailwind;exports.breakpoints=r.BREAKPOINTS;exports.buttonVariants=r.BUTTON_VARIANTS;exports.cardVariants=r.CARD_VARIANTS;exports.createAppearanceManager=r.createAppearanceManager;exports.createResponsiveProps=r.createResponsiveProps;exports.getComponentClassNames=r.getComponentClassNames;exports.inputVariants=r.INPUT_VARIANTS;exports.modalSizes=r.MODAL_SIZES;exports.responsiveUtils=r.RESPONSIVE_UTILITIES;exports.sizeConfigs=r.SIZE_CONFIGS;exports.LocalizationManager=s.LocalizationManager;exports.createLocalizationManager=s.createLocalizationManager;exports.createTranslationNamespace=s.createTranslationNamespace;exports.detectBrowserLocale=s.detectBrowserLocale;exports.getLocaleDirection=s.getLocaleDirection;exports.isRTL=s.isRTL;exports.OrganizationConfigManager=o.OrganizationConfigManager;exports.createOrganizationConfigManager=o.createOrganizationConfigManager;exports.getFeaturesByTier=o.getFeaturesByTier;exports.transformOrganizationSettings=o.transformOrganizationSettings;exports.ThemeManager=g.ThemeManager;exports.createDarkTheme=g.createDarkTheme;exports.createThemeManager=g.createThemeManager;exports.getThemeCSS=g.getThemeCSS;exports.themePresets=g.THEME_PRESETS;exports.validateTheme=g.validateTheme;exports.configPresets=n.CONFIG_PRESETS;exports.defaultAnimations=n.DEFAULT_ANIMATIONS;exports.defaultAppearance=n.DEFAULT_APPEARANCE_CONFIG;exports.defaultBorderRadius=n.DEFAULT_BORDER_RADIUS;exports.defaultBranding=n.DEFAULT_BRANDING_CONFIG;exports.defaultColors=n.DEFAULT_COLOR_PALETTE;exports.defaultComponentAppearance=n.DEFAULT_COMPONENT_APPEARANCE;exports.defaultConfig=n.DEFAULT_FRANK_AUTH_CONFIG;exports.defaultLayout=n.DEFAULT_LAYOUT_CONFIG;exports.defaultLocalization=n.DEFAULT_LOCALIZATION_CONFIG;exports.defaultMessages=n.DEFAULT_LOCALE_MESSAGES;exports.defaultOrganization=n.DEFAULT_ORGANIZATION_CONFIG;exports.defaultShadows=n.DEFAULT_SHADOWS;exports.defaultSpacing=n.DEFAULT_SPACING;exports.defaultTheme=n.DEFAULT_THEME_CONFIG;exports.defaultTypography=n.DEFAULT_TYPOGRAPHY;exports.assertValidConfig=t.assertValidConfig;exports.getConfigErrors=t.getConfigErrors;exports.getConfigWarnings=t.getConfigWarnings;exports.isValidConfig=t.isValidConfig;exports.validateApiUrl=t.validateApiUrl;exports.validateAppearanceConfig=t.validateAppearanceConfig;exports.validateComponentOverrides=t.validateComponentOverrides;exports.validateFrankAuthConfig=t.validateFrankAuthConfig;exports.validateLocale=t.validateLocale;exports.validateLocalizationConfig=t.validateLocalizationConfig;exports.validateOrganizationConfig=t.validateOrganizationConfig;exports.validatePublishableKey=t.validatePublishableKey;exports.validateThemeConfig=t.validateThemeConfig;exports.validateUserType=t.validateUserType;exports.ThemeUtils=d.ThemeUtils;exports.ConfigManager=f;exports.createConfigFromOrganization=M;exports.createConfigManager=m;exports.createConfigPreset=T;exports.createFrankAuthConfig=h;exports.default=f;exports.mergeConfigs=p;
//# sourceMappingURL=index.cjs.map