npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

fansunited-widget-client-configuration

v1.8.0

Published

Welcome to Fans United Configuration Management Widget. The widget allows staff members with sufficient permissions to update their different configurations. You can use this widget as it is and embed it in your platform, or you can use the Management Pan

Downloads

162

Readme

Configuration Management Widget

Welcome to Fans United Configuration Management Widget. The widget allows staff members with sufficient permissions to update their different configurations. You can use this widget as it is and embed it in your platform, or you can use the Management Panel to manage your configuration. With successful installation, you can manage your language, cache TTL and football assets configurations.

Installation and usage

The easiest way to use fansunited-widget-client-configuration is to install it from npm as follows:

npm  install  fansunited-widget-client-configuration

or:

yarn  add  fansunited-widget-client-configuration

Here is an example how you can integrate Fans United Classic Quiz Management Widget:

import { ConfigurationManager } from  'fansunited-widget-client-configuration';

const  App = () => {
return (
<ConfigurationManager
	fansUnitedApiKey={'your-api-key'}
	fansUnitedClientId={'your-client-id'} />
);
}

Notes

  • The widget is bundled as a React component and its usage is as simple as the above example

  • Don't worry about your project's CSS. The widget's styling is done with Joy UI which is based on headless unstyle react components. This means that the widget's CSS will NOT affect yours.

  • Easy translation in every language. For more information check our Translation heading.

Props

type ConfigurationManagerProps = {
	fansUnitedApiKey: string;
	fansUnitedClientId: string;
	fansUnitedLanguage?: string;
	fansUnitedEnvironment?: string;
	labels?: LabelsModel;
	hideSignOutButton?: boolean;
	sportal365Project?: string;
	sportal365Infrastructure?: 'shared' | 'betway';
};

Fans United Classic Quiz Management Widget depends on Fans United JS SDK and Fans United Client API. Thats why fansUnitedApiKey and fansUnitedClientId are required. They will be provided to you from Fans United team. For other optional props here is some information:

  • fansUnitedLanguage - for our sports APIs FansUnited platform supports different languages. For now they are Bulgarian (bg), English (en), Romanian (ro), Greek (el), Slovak (sk), Serbian (sr) and Hungarian (hu). If no value given it will be set to English (en).

  • fansUnitedEnvironment - You can run the widget in the following environments: staging, production, watg and yolo. If no value given it will be set to production (prod).

  • labels - you can easily translate all labels, UI messages, descriptions, placeholders and etc. with this prop. By default, Fans United Match Quiz Management Widget is available in English so if no value is given, the widget will be translated in English.

  • hideSignOutButton - By default on the top right corner of the widget will be displayed a sign out button. To hide that button set this prop to true.

  • sportal365Project - The Sportal365 project. Used as a request header when communicating with Sportal365 APIs.

  • sportal365Infrastructure - The Sportal365 infrastructure. Used to determine what authorization should be used when communicating with Sportal365 APIs. If no value given (when sportal365Project props is provided) it will be set to shared .

Translation

You can easily translate Fans United Configuration Management Widget in your language! You just need to pass an object to labels prop with concrete keys and values and that's it! Here's an example how you can do it:

import { ConfigurationManager } from  'fansunited-widget-client-configuration';

const labels = {
	clientConfigErrorMessage: "There was a problem fetching client's configuration. Please try again",
	userNotFound: 'User not found. Please try again',
	signOut: 'Sign Out',
	language: 'Language',
	profilePreferences: 'Profile Preferences',
	cacheTTL: 'Cache TTL',
	footballAssets: 'Football Assets',
	soon: 'Soon',
	update: 'Update Configuration',
	configTitle: 'Configure Fans United',
	configDescription: 'Customize different features of Fans United',
	configLanguageTitle: 'Language Configuration',
	defaultLanguage: 'Default language',
	defaultLanguageHelperText: 'What is the default language of your content? This field, if different from English, would be used in our translation tools.',
	availableLanguages: 'Available languages',
	availableLanguagesHelperText: 'In case your project is multi-lingual, select the available languages for your app.',
	translationRules: 'Translation rules',
	translationRulesHelperText: 'Select the default status when a game is automatically translated.',
	gameStatus: 'Game status',
	active: 'Active',
	inactive: 'Inactive',
	updateConfigMessage: 'You have successfully updated Language configuration',
	updateConfigErrorMessage: 'There was a problem updating configuration. Please try again',
	categories: 'Categories',
	delete: 'Delete',
	id: 'ID',
	name: 'Name',
	addCategory: 'Add Category',
	preferences: 'Preferences',
	addPreference: 'Add Preference',
	selectCategories: 'Select categories for new preference',
	uniqueCategoriesIdErrorMessage: `Categories' IDs must be unique!`,
	uniquePreferencesIdErrorMessage: `Preferences' IDs must be unique!`,
	uploadImage: 'Upload Image',
	sportal365Images: 'Sportal365 Images',
	search: 'Search',
	clearImage: 'Clear image',
	copyUrl: 'Copy URL',
	viewImage: 'View image',
	cropImage: 'Crop image',
	aspectRatio: 'Aspect ratio',
	crop: 'Crop',
	reset: 'Reset',
	urlCopiedToClipboardMessage: 'URL copied to clipboard',
	imageDeletedMessage: 'Image deleted',
	imageResetMessage: 'The initial size of the image has been restored',
	fromDate: 'From Date',
	toDate: 'To Date',
	uploadingImageMessage: 'You have successfully uploaded image',
	uploadingImageErrorMessage: 'There was a problem with uploading image to bucket. Please try again',
	generateSignedInUrlErrorMessage: 'There was a problem generating signed in URL to store the image in bucket. Please try again',
	encryptingImageErrorMessage: 'There was a problem with encrypting image before uploading it to bucket. Please try again',
	searchImage: 'Search image',
	hideFilters: 'Hide filters',
	showFilters: 'Show filters',
	searchSportal365ImagesErrorMessage: 'There was a problem with searching images from Sportal 365 API. Please try again',
	previous: 'Previous',
	next: 'Next',
	add: 'Add',
	branding: 'Branding',
	noBrandingsFound: 'No brandings found',
	createFirstBrandingTemplate: 'Create your first branding template to get started',
	createBranding: 'Create Branding',
	colors: 'Colors',
	noColorsDefined: 'No colors defined',
	image: 'image',
	images: 'images',
	noImages: 'No images',
	url: 'URL',
	urls: 'URLs',
	noUrls: 'No URLs',
	newBranding: 'New Branding',
	deleteBranding: 'Delete',
	deleteBrandingConfirmation: 'branding? This action cannot be undone.',
	close: 'Close',
	brandingCreatedMessage: 'Branding created successfully',
	brandingUpdatedMessage: 'Branding updated successfully',
	brandingDeletedMessage: 'Branding deleted successfully',
	createBrandingErrorMessage: 'There was a problem creating branding. Please try again',
	updateBrandingErrorMessage: 'There was a problem updating branding. Please try again',
	deleteBrandingErrorMessage: 'There was a problem deleting branding. Please try again',
	fetchBrandingsErrorMessage: 'There was a problem fetching brandings. Please try again',
	mainLogo: 'Main Logo',
    mobileLogo: 'Mobile logo',
    backgroundImage: 'Background image',
    mobileBackgroundImage: 'Mobile background image',
    additionalImage: 'Additional image',
	primaryColor: 'Primary color',
    secondaryColor: 'Secondary color',
    contentColor: 'Content color',
    backgroundColor: 'Background color',
    borderColor: 'Border color',
    additionalColor: 'Additional color',
	primaryUrl: 'Primary URL',
    secondaryUrl: 'Secondary URL',
    privacyPolicyUrl: 'Privacy policy URL',
    termsAndConditionsUrl: 'Terms and conditions URL',
    additionalUrl: 'Additional URL',
};

const  App = () => {
return (
<ConfigurationManager
	fansUnitedApiKey={'your-api-key'}
	fansUnitedClientId={'your-client-id'}
	labels={labels}/>
);
}

Here is all information about LabelsModel:

| Key | Description | Default Value | | :-------------: |:-------------:| :-----:| | clientConfigErrorMessage | Toast error message when fetching client configuration fails. | There was a problem fetching client's configuration. Please try again | | userNotFound | On login screen when client gives invalid information about email or password. | User not found. Please try again | | signOut | Label for sign out button. | Sign Out | | language | Label for language tab. | Language | | profilePreferences | Label for profile preferences tab. | Profile Preferences | | cacheTTL | Label for cache TTL tab. | Cache TTL | | footballAssets | Label for football assets tab. | Football Assets | | soon | Label for soon chip on tabs. | Soon | | update | Label for management button. | Update Configuration | | configTitle | Title of the management screen. | Configure Fans United | | configDescription | Description of the management screen. | Customize different features of Fans United | | configLanguageTitle | Title for language configuration section. | Language Configuration | | defaultLanguage | Label for default language select. | Default language | | defaultLanguageHelperText | Description for default language select. | What is the default language of your content? This field, if different from English, would be used in our translation tools. | | availableLanguages | Label for available languages group container. | Available languages | | availableLanguagesHelperText | Description for available languages container. | In case your project is multi-lingual, select the available languages for your app. | | translationRules | Label for translation rules table. | Translation rules | | translationRulesHelperText | Description for translation rules table. | Select the default status when a game is automatically translated. | | gameStatus | Label for column in translation rules table. | Game status | | active | Label for status option. | Active | | inactive | Label for status option. | Inactive | | updateConfigMessage | Toast success message when updating client configuration. | You have successfully updated Language configuration | | updateConfigErrorMessage | Toast error message when updating client configuration fails. | There was a problem updating configuration. Please try again | | categories | Title for categories section in profile preferences | Categories | | delete | Tooltip for chip delete button | Delete | | id | ID input title | ID | | name | Name input title | Name | | addCategory | Add new category button title | Add Category | | preferences | Title for preferences section in profile preferences | Preferences | | addPreference | Add new preference button title | Add Preference | | selectCategories | Info text for selecting categories for new preference creation |Select categories for new preference | | uniqueCategoriesIdErrorMessage | Error validation message when new category added doesn't have unique ID | Categories' IDs must be unique! | | uniquePreferencesIdErrorMessage | Error validation message when new preference added doesn't have unique ID | Preferences' IDs must be unique! | | uploadImage | Label for upload image tab in image upload card | Upload Image | | sportal365Images | Label for Sportal365 images tab in image upload card | Sportal365 Images | | search | Label for search button | Search | | clearImage | Label for clear image button | Clear image | | copyUrl | Label for copy URL button | Copy URL | | viewImage | Label for view image button | View image | | cropImage | Label for crop image button | Crop image | | aspectRatio | Label for aspect ratio input | Aspect ratio | | crop | Label for crop button in crop modal | Crop | | reset | Label for reset button in crop modal | Reset | | urlCopiedToClipboardMessage | Toast success message when URL is copied to clipboard | URL copied to clipboard | | imageDeletedMessage | Toast success message when image is deleted | Image deleted | | imageResetMessage | Toast success message when image is reset to initial size | The initial size of the image has been restored | | fromDate | Label for from date filter in Sportal365 images | From Date | | toDate | Label for to date filter in Sportal365 images | To Date | | uploadingImageMessage | Toast success message when image is uploaded | You have successfully uploaded image | | uploadingImageErrorMessage | Toast error message when uploading image fails | There was a problem with uploading image to bucket. Please try again | | generateSignedInUrlErrorMessage | Toast error message when generating signed URL fails | There was a problem generating signed in URL to store the image in bucket. Please try again | | encryptingImageErrorMessage | Toast error message when encrypting image fails | There was a problem with encrypting image before uploading it to bucket. Please try again | | searchImage | Placeholder for search image input | Search image | | hideFilters | Label for hide filters button in Sportal365 images | Hide filters | | showFilters | Label for show filters button in Sportal365 images | Show filters | | searchSportal365ImagesErrorMessage | Toast error message when searching Sportal365 images fails | There was a problem with searching images from Sportal 365 API. Please try again | | previous | Label for previous page button in Sportal365 images pagination | Previous | | next | Label for next page button in Sportal365 images pagination | Next | | add | Label for add button | Add | | branding | Label for branding tab | Branding | | noBrandingsFound | Message when no brandings are found | No brandings found | | createFirstBrandingTemplate | Helper text for creating first branding | Create your first branding template to get started | | createBranding | Label for create branding button | Create Branding | | colors | Label for colors section | Colors | | noColorsDefined | Message when no colors are defined | No colors defined | | image | Label for single image (singular) | image | | images | Label for multiple images (plural) | images | | noImages | Message when no images are present | No images | | url | Label for single URL (singular) | URL | | urls | Label for multiple URLs (plural) | URLs | | noUrls | Message when no URLs are present | No URLs | | newBranding | Title for new branding modal | New Branding | | deleteBranding | Label for delete branding action | Delete | | deleteBrandingConfirmation | Confirmation message for deleting branding | branding? This action cannot be undone. | | close | Label for close button | Close | | brandingCreatedMessage | Toast success message when branding is created | Branding created successfully | | brandingUpdatedMessage | Toast success message when branding is updated | Branding updated successfully | | brandingDeletedMessage | Toast success message when branding is deleted | Branding deleted successfully | | createBrandingErrorMessage | Toast error message when creating branding fails | There was a problem creating branding. Please try again | | updateBrandingErrorMessage | Toast error message when updating branding fails | There was a problem updating branding. Please try again | | deleteBrandingErrorMessage | Toast error message when deleting branding fails | There was a problem deleting branding. Please try again | | fetchBrandingsErrorMessage | Toast error message when fetching brandings fails | There was a problem fetching brandings. Please try again | | primaryColor | Label for primary color input in branding accordion | Primary color | | secondaryColor | Label for secondary color input in branding accordion | Secondary color | | contentColor | Label for content color input in branding accordion | Content color | | backgroundColor | Label for background color input in branding accordion | Background color | | borderColor | Label for border color input in branding accordion | Border color | | additionalColor | Label for additional color input in branding accordion | Additional color | | primaryUrl | Label for primary url input in branding accordion | Primary URL | | secondaryUrl | Label for secondary url input in branding accordion | Secondary URL | | privacyPolicyUrl | Label for privacy policy url input in branding accordion | Privacy policy URL | | termsAndConditionsUrl | Label for terms and conditions url input in branding accordion | Terms and conditions URL | | additionalUrl | Label for additional url input in branding accordion | Additional URL | | mainLogo | Label for main logo input in branding accordion | Main Logo | | mobileLogo | Label for mobile logo input in branding accordion | Mobile logo | | backgroundImage | Label for background image input in branding accordion | Background image | | mobileBackgroundImage | Label for mobile background image input in branding accordion | Mobile background image | | additionalImage | Label for additional image input in branding accordion | Additional image |

Changelog

1.8.0 - 2026-03-04

  • Added:
    • New options available for template layout in general misc setting in User-Centric Widgets
    • New select dropdown control for chance game variant in general misc settings in User-Centric Widgets

1.6.0 - 2026-01-09

  • Added:
    • Branding management with card based list view and modal based form
    • Ability to copy the configuration ID of User-Centric Widgets to clipboard

1.5.0 - 2025-12-23

  • Added:

    • New card container in miscellaneous configuration general settings for rules display
    • Integration with Sportal365 Images API for image search and selection
  • Improved:

    • Default image configuration now supports multiple input methods (URL input or image upload)
    • Clients can choose between legacy URL input behavior or new image upload functionality

1.4.0 - 2025-11-29

  • Added:
    • User-Centric Widgets configuration management tab with full CRUD operations
    • Multi-tab configuration form with 6 sections: General, Firebase, Theme Options, Leads, Miscellaneous, and Legacy
    • Raw JSON mode toggle for advanced configuration editing
    • Integrated color pickers for theme customization
    • Support for light and dark mode color schemes
    • Customizable spacing scales, typography, border sizes, and border radius values
    • Lead form configuration with field management and country code selection
    • Firebase integration settings configuration