@cronocode/react-box 3.0.11 → 3.0.13

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": "@cronocode/react-box",
3
- "version": "3.0.11",
3
+ "version": "3.0.13",
4
4
  "type": "module",
5
5
  "main": "./box.cjs",
6
6
  "module": "./box.mjs",
package/types.d.ts CHANGED
@@ -1,10 +1,13 @@
1
1
  import { breakpoints, cssStyles, pseudo1, pseudo2, pseudoClasses, pseudoGroupClasses } from './core/boxStyles';
2
2
  import { BoxStyle, BoxStylesType, ExtractKeys } from './core/coreTypes';
3
+ import { default as boxComponents } from './core/extends/boxComponents';
3
4
  export declare namespace Augmented {
4
5
  interface BoxProps {
5
6
  }
6
7
  interface BoxPropTypes {
7
8
  }
9
+ interface ComponentsTypes {
10
+ }
8
11
  }
9
12
  type ExtractBoxStylesInternal<T extends Record<string, BoxStyle[]>> = {
10
13
  [K in keyof T]?: K extends keyof Augmented.BoxPropTypes ? BoxStylesType<ArrayType<T[K]>['values']> | Augmented.BoxPropTypes[K] : BoxStylesType<ArrayType<T[K]>['values']>;
@@ -19,13 +22,50 @@ type BoxPseudoClassesStyles2Nested = ExtractKeys<typeof pseudo2, BoxStylesWithPs
19
22
  type BoxPseudoClassesStyles2TopLevel = ExtractKeys<typeof pseudo2, boolean | [boolean, BoxStylesWithPseudoClasses]>;
20
23
  export interface BoxStylesWithPseudoClasses extends BoxStyles, BoxPseudoClassesStyles1, BoxPseudoClassesStyles2Nested {
21
24
  }
22
- type BoxPseudoGroupClassesStyles = ExtractKeys<typeof pseudoGroupClasses, string | Record<string, BoxStyles>>;
25
+ type BoxPseudoGroupClassesStyles = ExtractKeys<typeof pseudoGroupClasses, Record<string, BoxStyles>>;
23
26
  type BoxBreakpointsStyles = ExtractKeys<typeof breakpoints, BoxStylesWithPseudoClasses & BoxPseudoGroupClassesStyles>;
24
- export interface ThemeProps {
27
+ type ExtractVariants<T> = T extends {
28
+ variants?: infer Variants;
29
+ } ? keyof Variants extends never ? never : Extract<keyof Variants, string> : never;
30
+ type ExtractChildrenVariants<T> = T extends {
31
+ children?: infer Children;
32
+ } ? ExtractVariants<Children[keyof Children]> : never;
33
+ type ExtractChildrenNames<T, Prefix extends string> = T extends {
34
+ children?: infer Children;
35
+ } ? `${Prefix}.${keyof Children & string}` : never;
36
+ export type ExtractComponentsAndVariants<T> = {
37
+ [K in keyof T as K extends string ? K : never]: ExtractVariants<T[K]>;
38
+ } & {
39
+ [K in keyof T as ExtractChildrenNames<T[K], `${K & string}`>]: ExtractChildrenVariants<T[K]>;
40
+ } & {
41
+ [K in keyof T as T[K] extends {
42
+ children?: infer Children;
43
+ } ? ExtractChildrenNames<Children[keyof Children], `${K & string}.${keyof Children & string}`> : never]: T[K] extends {
44
+ children?: infer Children;
45
+ } ? ExtractChildrenVariants<Children[keyof Children]> : never;
46
+ } & {
47
+ [K in keyof T as T[K] extends {
48
+ children?: infer Children;
49
+ } ? Children[keyof Children] extends {
50
+ children?: infer Children2;
51
+ } ? ExtractChildrenNames<Children2[keyof Children2], `${K & string}.${keyof Children & string}.${keyof Children2 & string}`> : never : never]: T[K] extends {
52
+ children?: infer Children;
53
+ } ? Children[keyof Children] extends {
54
+ children?: infer Children2;
55
+ } ? ExtractChildrenVariants<Children2[keyof Children2]> : never : never;
56
+ };
57
+ type MergeUnion<T, U> = {
58
+ [K in keyof T | keyof U]: K extends keyof T ? K extends keyof U ? T[K] | U[K] : T[K] : K extends keyof U ? U[K] : never;
59
+ };
60
+ type Simplify<T> = T extends infer U ? {
61
+ [K in keyof U]: U[K];
62
+ } : never;
63
+ export type ComponentsAndVariants = MergeUnion<Simplify<ExtractComponentsAndVariants<typeof boxComponents>>, Simplify<Augmented.ComponentsTypes>>;
64
+ export interface ComponentProps<TKey extends keyof ComponentsAndVariants = never> {
25
65
  clean?: boolean;
26
- component?: string;
27
- theme?: string;
66
+ component?: TKey;
67
+ variant?: ComponentsAndVariants[TKey];
28
68
  }
29
- export type BoxStyleProps = BoxStyles & BoxPseudoClassesStyles1 & BoxPseudoClassesStyles2TopLevel & BoxPseudoGroupClassesStyles & BoxBreakpointsStyles & ThemeProps;
30
- export type BoxThemeStyles = BoxStylesWithPseudoClasses & BoxBreakpointsStyles;
69
+ export type BoxStyleProps<TKey extends keyof ComponentsAndVariants = never> = Simplify<BoxStyles & BoxPseudoClassesStyles1 & BoxPseudoClassesStyles2TopLevel & BoxPseudoGroupClassesStyles & BoxBreakpointsStyles & ComponentProps<TKey>>;
70
+ export type BoxComponentStyles = Simplify<BoxStylesWithPseudoClasses & BoxBreakpointsStyles & BoxPseudoGroupClassesStyles>;
31
71
  export {};
@@ -1 +0,0 @@
1
- "use strict";const r=require("react/jsx-runtime"),n=require("react"),o=require("../box.cjs");function s(e,t){return r.jsx(o,{tag:"label",ref:t,component:"label",...e})}const c=n.forwardRef(s);module.exports=c;
@@ -1,5 +0,0 @@
1
- import { BoxProps } from '../box';
2
- interface Props extends Omit<BoxProps<'label'>, 'ref' | 'tag'> {
3
- }
4
- declare const _default: import('react').ForwardRefExoticComponent<Props & import('react').RefAttributes<HTMLLabelElement>>;
5
- export default _default;
@@ -1,10 +0,0 @@
1
- import { jsx as t } from "react/jsx-runtime";
2
- import { forwardRef as e } from "react";
3
- import a from "../box.mjs";
4
- function l(o, r) {
5
- return /* @__PURE__ */ t(a, { tag: "label", ref: r, component: "label", ...o });
6
- }
7
- const p = e(l);
8
- export {
9
- p as default
10
- };
@@ -1,3 +0,0 @@
1
- import { ThemeSetup } from './themeContract';
2
- declare const defaultTheme: ThemeSetup;
3
- export default defaultTheme;
@@ -1,25 +0,0 @@
1
- import { BoxThemeStyles } from '../../types';
2
- export interface ThemeComponentStyles {
3
- clean?: boolean;
4
- styles: BoxThemeStyles;
5
- themes?: {
6
- [name: string]: BoxThemeStyles;
7
- };
8
- children?: ThemeType;
9
- }
10
- export type ThemeType = {
11
- [componentName: string]: ThemeComponentStyles;
12
- };
13
- export interface ThemeSetup {
14
- components?: ThemeType;
15
- button?: ThemeComponentStyles;
16
- textbox?: ThemeComponentStyles;
17
- textarea?: ThemeComponentStyles;
18
- checkbox?: ThemeComponentStyles;
19
- radioButton?: ThemeComponentStyles;
20
- label?: ThemeComponentStyles;
21
- dropdown?: ThemeComponentStyles;
22
- }
23
- export interface Themes {
24
- [name: string]: ThemeSetup;
25
- }
@@ -1,2 +0,0 @@
1
- import { BoxThemeStyles, ThemeProps } from '../../types';
2
- export default function useTheme(props: ThemeProps): BoxThemeStyles | undefined;