fansunited-management-components 1.50.8 → 1.50.9

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fansunited-management-components",
3
- "version": "1.50.8",
3
+ "version": "1.50.9",
4
4
  "main": "index.es.js",
5
5
  "module": "index.es.js",
6
6
  "types": "index.d.ts",
@@ -0,0 +1,25 @@
1
+ import { default as React, PropsWithChildren, ReactNode } from 'react';
2
+ import { ComponentsMap } from '../constants/components';
3
+
4
+ /**
5
+ * Provides a registry of public Fans United components by name.
6
+ * Use `useComponentContext()` to resolve components dynamically with preserved types.
7
+ */
8
+ type ComponentProviderProps = {
9
+ config?: any;
10
+ children?: ReactNode;
11
+ };
12
+ /**
13
+ * React context mapping component names to their React function components.
14
+ * Uses explicit ComponentsMap interface to preserve individual component types.
15
+ */
16
+ declare const ComponentContext: React.Context<ComponentsMap | null>;
17
+ /**
18
+ * Provider that exposes the components registry to descendants with preserved types.
19
+ * Each component maintains its original prop types and JSDoc documentation.
20
+ *
21
+ * @param {{ config?: any; children?: React.ReactNode }} props
22
+ * @returns {JSX.Element}
23
+ */
24
+ declare const ComponentProvider: React.FC<ComponentProviderProps & PropsWithChildren>;
25
+ export { ComponentContext, ComponentProvider };
@@ -2,14 +2,29 @@ import { ComponentsMap } from '../constants/components';
2
2
 
3
3
  /**
4
4
  * Hook to access the registry of public components provided by ComponentProvider.
5
- * Preserves individual component types and JSDoc documentation.
5
+ * Each component maintains its original type information, props, and JSDoc documentation.
6
6
  *
7
- * @returns {ComponentsMap} Registry of components with preserved types and JSDoc
7
+ * @returns {ComponentsMap} Registry of components with preserved individual types and JSDoc
8
8
  * @throws {Error} If used outside of a ComponentProvider.
9
9
  *
10
10
  * @example
11
11
  * ```tsx
12
12
  * const { Spinner, Login } = useComponentContext();
13
+ * // TypeScript will now show:
14
+ * // - Spinner with proper props (my: number) and JSDoc
15
+ * // - Login with its specific props and JSDoc
13
16
  * ```
14
17
  */
15
18
  export declare const useComponentContext: () => ComponentsMap;
19
+ /**
20
+ * Get a specific component with full type safety and JSDoc preservation.
21
+ *
22
+ * @example
23
+ * ```tsx
24
+ * const components = useComponentContext();
25
+ * const SpinnerComponent = getTypedComponent(components, 'Spinner');
26
+ * // SpinnerComponent now has full type info: React.FC<{my: number}>
27
+ * ```
28
+ */
29
+ export declare function getTypedComponent<K extends keyof ComponentsMap>(components: ComponentsMap, componentName: K): ComponentsMap[K];
30
+ export declare const useTypedComponentGetter: () => <K extends keyof ComponentsMap>(componentName: K) => ComponentsMap[K];
package/src/index.d.ts CHANGED
@@ -1,49 +1,5 @@
1
- export { default as Accordion } from './components/Accordion/Accordion';
2
- export { default as AdContent } from './components/AdContent/AdContent';
3
- export { default as BasicSelect } from './components/Select/BasicSelect/BasicSelect';
4
- export { default as Branding } from './components/Branding/Branding';
5
- export { default as HeaderButtons } from './components/Buttons/HeaderButtons';
6
- export { default as CustomFlatpickrCalendar } from './components/Calendars/CustomFlatpickrCalendar';
7
- export { default as DatePickerComponent } from './components/Calendars/DatePicker';
8
- export { default as Duration } from './components/Calendars/Duration';
9
- export { default as RangeCalendar } from './components/Calendars/RangeCalendar';
10
- export { default as NoPermissionCard } from './components/Cards/NoPermissionCard';
11
- export { default as Toast } from './components/Common/Toast';
12
- export { default as DynamicFields } from './components/DynamicFields/DynamicFields';
13
- export { default as Flags } from './components/Flags/Flags';
14
- export { default as Images } from './components/Images/Images';
15
- export { default as InformationInput } from './components/Inputs/InformationInput/InformationInput';
16
- export { default as Login } from './components/Login/Login';
17
- export { default as MarketSelection } from './components/MarketSelection/MarketSelection';
18
- export { default as Match } from './components/Match/Match';
19
- export { default as Related } from './components/Related/Related';
20
- export { default as RichText } from './components/RichText/RichText';
21
- export { default as Schedule } from './components/Schedule/Schedule';
22
- export { default as CustomSelect } from './components/Select/CustomSelect';
23
- export { default as CompetitionSearchSelect } from './components/Select/SearchSelect/CompetitionSearchSelect';
24
- export { default as CompetitionsSearchSelect } from './components/Select/SearchSelect/CompetitionsSearchSelect';
25
- export { default as ProfileSearchSelect } from './components/Select/SearchSelect/ProfileSearchSelect';
26
- export { default as TeamsSearchSelect } from './components/Select/SearchSelect/TeamsSearchSelect';
27
- export { default as Spinner } from './components/Spinner/Spinner';
28
- export { default as BooleanSwitch } from './components/Switch/BooleanSwitch';
29
- export { default as Tags } from './components/Winners/Tags/Tags';
30
- export { default as Winners } from './components/Winners/Winners';
31
- export { default as ContextSelectFilter } from './components/Select/SearchSelect/ContextSelectFilter';
32
- export { default as NumberInput } from './components/Inputs/NumberInput/NumberInput';
33
- export { default as EntityContext } from './components/Context/EntityContext';
34
- export { default as MiniGamesImages } from './components/Images/MiniGamesImages';
35
- export { default as AuthRequirement } from './components/AuthRequirement/AuthRequirement';
36
- export { default as SortableList } from './components/DragAndDrop/SortableList/SortableList';
37
- export { default as ItemsPerPageFilter } from './components/ItemsPerPageFilter/ItemsPerPageFilter';
38
- export { default as ImageCard } from './components/Images/ImageCard';
39
- export { default as RelatedRelationship } from './components/Related/RelatedRelationship/RelatedRelationship';
40
- export { default as ExportUsersLeads } from './components/Exports/ExportUsersLeads';
41
- export { default as SignOutButton } from './components/Buttons/SignoutButtton';
42
- export { default as BasicSortableList } from './components/DragAndDrop/BasicSortableList/BasicSortableList';
43
- export { default as WidgetEmbedCode } from './components/WidgetEmbedCode/WidgetEmbedCode';
44
- export { default as WidgetListEmbedCode } from './components/WidgetListEmbedCode/WidgetListEmbedCode';
45
- export { default as AdvancedProfileSearchSelect } from './components/Select/SearchSelect/AdvancedProfileSearchSelect';
46
- export { default as FormatNumber } from './components/Utils/FormatNumber';
1
+ import { getTypedComponent } from './hooks/useComponentContext';
2
+
47
3
  declare const _default: {
48
4
  APIProvider: import('react').FC<{
49
5
  config: any;
@@ -71,6 +27,7 @@ declare const _default: {
71
27
  isMobile: boolean;
72
28
  isPhone: boolean;
73
29
  };
30
+ getTypedComponent: typeof getTypedComponent;
31
+ useTypedComponentGetter: () => <K extends keyof import('./constants/components').ComponentsMap>(componentName: K) => import('./constants/components').ComponentsMap[K];
74
32
  };
75
33
  export default _default;
76
- export { components, type ComponentsMap } from './constants/components';