azeriand-library 1.2.3 → 1.3.3
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/dist/components/button/button.d.ts +19 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.esm.js +28 -1
- package/dist/index.esm.js.map +1 -1
- package/dist/index.umd.js +27 -0
- package/dist/index.umd.js.map +1 -1
- package/dist/style.css +56 -0
- package/dist/styles/globals.css +1 -0
- package/package.json +4 -2
- package/src/styles/globals.css +1 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { MouseEventHandler, ReactNode } from 'react';
|
|
2
|
+
type ButtonProps = {
|
|
3
|
+
children?: ReactNode;
|
|
4
|
+
label?: string;
|
|
5
|
+
icon?: ReactNode;
|
|
6
|
+
position?: string;
|
|
7
|
+
onClick?: MouseEventHandler<HTMLElement>;
|
|
8
|
+
size?: string;
|
|
9
|
+
className?: string;
|
|
10
|
+
noPadding?: boolean;
|
|
11
|
+
noBlur?: boolean;
|
|
12
|
+
appearance?: string;
|
|
13
|
+
color?: string;
|
|
14
|
+
intensity?: number;
|
|
15
|
+
dark?: boolean;
|
|
16
|
+
style?: React.CSSProperties;
|
|
17
|
+
};
|
|
18
|
+
export declare function Button({ children, label, icon, position, onClick, size, className, ...cardProps }: ButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
export {};
|
package/dist/index.d.ts
CHANGED
package/dist/index.esm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx } from "react/jsx-runtime";
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { createContext, useState, useContext, useEffect } from "react";
|
|
3
3
|
function Avatar({ src, className = "", style }) {
|
|
4
4
|
return /* @__PURE__ */ jsx(
|
|
@@ -39,8 +39,35 @@ function Card({ children, noPadding, noBlur = false, appearance = "glass", color
|
|
|
39
39
|
}, [color, intensity, dark, appearance, noBlur, className, theme]);
|
|
40
40
|
return /* @__PURE__ */ jsx("article", { className: classNames, style: cardStyle, onClick, children });
|
|
41
41
|
}
|
|
42
|
+
function Button({ children, label, icon, position = "left", onClick, size, className, ...cardProps }) {
|
|
43
|
+
let cardClassNames = "flex justify-center items-center gap-x-[0.40rem] h-[2.5rem] min-w-[2.5rem] box-border p-0";
|
|
44
|
+
if (label) {
|
|
45
|
+
cardClassNames += " px-0 py-1";
|
|
46
|
+
}
|
|
47
|
+
if (className) {
|
|
48
|
+
const roundedMatch = className.match(/rounded\-[a-z0-9]+/g);
|
|
49
|
+
if (roundedMatch) {
|
|
50
|
+
cardClassNames += " " + roundedMatch[roundedMatch.length - 1];
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (size === "sm") {
|
|
54
|
+
cardClassNames += " h-[2rem] w-[2rem] min-w-auto";
|
|
55
|
+
}
|
|
56
|
+
const buttonClick = (ev) => {
|
|
57
|
+
if (typeof onClick === "function") {
|
|
58
|
+
onClick(ev);
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
return /* @__PURE__ */ jsx("button", { className, onClick: buttonClick, children: /* @__PURE__ */ jsxs(Card, { noBlur: true, noPadding: true, className: cardClassNames, ...cardProps, children: [
|
|
62
|
+
position === "left" && icon,
|
|
63
|
+
label,
|
|
64
|
+
children,
|
|
65
|
+
position === "right" && icon
|
|
66
|
+
] }) });
|
|
67
|
+
}
|
|
42
68
|
export {
|
|
43
69
|
Avatar,
|
|
70
|
+
Button,
|
|
44
71
|
Card
|
|
45
72
|
};
|
|
46
73
|
//# sourceMappingURL=index.esm.js.map
|
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/components/avatar.tsx","../src/components/theme-context.tsx","../src/components/card/card.tsx"],"sourcesContent":["\r\ntype AvatarProps = {\r\n src: string;\r\n className?: string;\r\n style?: React.CSSProperties;\r\n}\r\n\r\nexport function Avatar({ src, className = '', style }: AvatarProps){\r\n return(\r\n <img className={`size-[3rem] rounded-2xl ${className}`} \r\n src={src} \r\n style={style}/>\r\n )\r\n}","import { useState, createContext } from 'react'\n\ntype ThemeMode = 'dark' | 'light';\nconst DEFAULT_THEME = 'dark';\n\ntype ThemeContext = {\n theme: ThemeMode,\n setTheme: (val: ThemeMode) => void\n}\n\nexport const ThemeContext = createContext<ThemeContext>({theme: DEFAULT_THEME, setTheme: () => {}}); //Creando el 'espacio compartido' al que los componentes pueden acceder??\n\nimport { ReactNode } from 'react';\n\nexport default function ThemeContextComponent({children}: {children: ReactNode}){\n\n const [theme, setTheme] = useState<ThemeMode>(DEFAULT_THEME)\n\n //Creando el componente donde todos los hijos pueden acceder al contexto (siendo children los props)\n return(\n <ThemeContext.Provider value={{theme, setTheme}}> \n {children}\n </ThemeContext.Provider>\n )\n}","import './card.css'\nimport { MouseEventHandler, ReactNode, useContext, useEffect, useState } from 'react';\nimport { ThemeContext } from '../theme-context';\n\ntype CardProps = {\n children?: ReactNode;\n noPadding?: boolean;\n noBlur?: boolean;\n appearance?: string;\n color?: string;\n intensity?: number;\n dark?: boolean;\n onClick?: MouseEventHandler<HTMLElement>;\n className?: string;\n style?: React.CSSProperties;\n}\nexport function Card({children, noPadding, noBlur = false, appearance = 'glass', color = 'neutral', intensity, dark = true, onClick, className, style}: CardProps){\n \n let [classNames, setClassNames] = useState(\"\")\n let [cardStyle, setCardStyle] = useState({})\n const {theme} = useContext(ThemeContext)\n \n useEffect(() => {\n\n let intensityValue = intensity\n \n if (intensityValue === undefined){\n intensityValue = theme === 'dark' ? 600 : 300;\n }\n \n setCardStyle({\n \"--glass-color\": `var(--color-${color}-${intensityValue})`,\n \"--card-text-color\": `var(--color-${color}-${dark ? '100' : '800'})`,\n backdropFilter: appearance === 'glass' && !noBlur ? 'blur(10px)' : undefined,\n ...style\n });\n\n let rounded = 'rounded-md'\n\n if (className){\n const roundedMatch = className.match(/rounded\\-[a-z0-9]+/g)\n if (roundedMatch){\n rounded = roundedMatch[roundedMatch.length - 1]\n }\n }\n\n setClassNames(`card ${rounded} ${appearance} ${className} ${noPadding ? '' : 'p-[2rem]'}`)\n\n \n }, [color, intensity, dark, appearance, noBlur, className, theme])\n\n return(\n <article className={classNames} style={cardStyle} onClick={onClick}>\n {children}\n </article>\n )\n\n}\n"],"names":[],"mappings":";;AAOO,SAAS,OAAO,EAAE,KAAK,YAAY,IAAI,SAAqB;AAC/D,SACI;AAAA,IAAC;AAAA,IAAA;AAAA,MAAI,WAAW,2BAA2B,SAAS;AAAA,MACpD;AAAA,MACA;AAAA,IAAA;AAAA,EAAA;AAER;ACVA,MAAM,gBAAgB;AAOf,MAAM,eAAe,cAA4B,EAAC,OAAO,eAAe,UAAU,MAAM;AAAC,GAAE;ACM3F,SAAS,KAAK,EAAC,UAAU,WAAW,SAAS,OAAO,aAAa,SAAS,QAAQ,WAAW,WAAW,OAAO,MAAM,SAAS,WAAW,SAAkB;AAE9J,MAAI,CAAC,YAAY,aAAa,IAAI,SAAS,EAAE;AAC7C,MAAI,CAAC,WAAW,YAAY,IAAI,SAAS,CAAA,CAAE;AAC3C,QAAM,EAAC,MAAA,IAAS,WAAW,YAAY;AAEvC,YAAU,MAAM;AAEZ,QAAI,iBAAiB;AAErB,QAAI,mBAAmB,QAAU;AAC7B,uBAAiB,UAAU,SAAS,MAAM;AAAA,IAC9C;AAEA,iBAAa;AAAA,MACT,iBAAiB,eAAe,KAAK,IAAI,cAAc;AAAA,MACvD,qBAAqB,eAAe,KAAK,IAAI,OAAO,QAAQ,KAAK;AAAA,MACjE,gBAAgB,eAAe,WAAW,CAAC,SAAS,eAAe;AAAA,MACnE,GAAG;AAAA,IAAA,CACN;AAED,QAAI,UAAU;AAEd,QAAI,WAAU;AACV,YAAM,eAAe,UAAU,MAAM,qBAAqB;AAC1D,UAAI,cAAa;AACb,kBAAU,aAAa,aAAa,SAAS,CAAC;AAAA,MAClD;AAAA,IACJ;AAEA,kBAAc,QAAQ,OAAO,IAAI,UAAU,IAAI,SAAS,IAAI,YAAY,KAAK,UAAU,EAAE;AAAA,EAG7F,GAAG,CAAC,OAAO,WAAW,MAAM,YAAY,QAAQ,WAAW,KAAK,CAAC;AAEjE,6BACK,WAAA,EAAQ,WAAW,YAAY,OAAO,WAAW,SAC7C,UACL;AAGR;"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/components/avatar.tsx","../src/components/theme-context.tsx","../src/components/card/card.tsx","../src/components/button/button.tsx"],"sourcesContent":["\r\ntype AvatarProps = {\r\n src: string;\r\n className?: string;\r\n style?: React.CSSProperties;\r\n}\r\n\r\nexport function Avatar({ src, className = '', style }: AvatarProps){\r\n return(\r\n <img className={`size-[3rem] rounded-2xl ${className}`} \r\n src={src} \r\n style={style}/>\r\n )\r\n}","import { useState, createContext } from 'react'\n\ntype ThemeMode = 'dark' | 'light';\nconst DEFAULT_THEME = 'dark';\n\ntype ThemeContext = {\n theme: ThemeMode,\n setTheme: (val: ThemeMode) => void\n}\n\nexport const ThemeContext = createContext<ThemeContext>({theme: DEFAULT_THEME, setTheme: () => {}}); //Creando el 'espacio compartido' al que los componentes pueden acceder??\n\nimport { ReactNode } from 'react';\n\nexport default function ThemeContextComponent({children}: {children: ReactNode}){\n\n const [theme, setTheme] = useState<ThemeMode>(DEFAULT_THEME)\n\n //Creando el componente donde todos los hijos pueden acceder al contexto (siendo children los props)\n return(\n <ThemeContext.Provider value={{theme, setTheme}}> \n {children}\n </ThemeContext.Provider>\n )\n}","import './card.css'\nimport { MouseEventHandler, ReactNode, useContext, useEffect, useState } from 'react';\nimport { ThemeContext } from '../theme-context';\n\ntype CardProps = {\n children?: ReactNode;\n noPadding?: boolean;\n noBlur?: boolean;\n appearance?: string;\n color?: string;\n intensity?: number;\n dark?: boolean;\n onClick?: MouseEventHandler<HTMLElement>;\n className?: string;\n style?: React.CSSProperties;\n}\nexport function Card({children, noPadding, noBlur = false, appearance = 'glass', color = 'neutral', intensity, dark = true, onClick, className, style}: CardProps){\n \n let [classNames, setClassNames] = useState(\"\")\n let [cardStyle, setCardStyle] = useState({})\n const {theme} = useContext(ThemeContext)\n \n useEffect(() => {\n\n let intensityValue = intensity\n \n if (intensityValue === undefined){\n intensityValue = theme === 'dark' ? 600 : 300;\n }\n \n setCardStyle({\n \"--glass-color\": `var(--color-${color}-${intensityValue})`,\n \"--card-text-color\": `var(--color-${color}-${dark ? '100' : '800'})`,\n backdropFilter: appearance === 'glass' && !noBlur ? 'blur(10px)' : undefined,\n ...style\n });\n\n let rounded = 'rounded-md'\n\n if (className){\n const roundedMatch = className.match(/rounded\\-[a-z0-9]+/g)\n if (roundedMatch){\n rounded = roundedMatch[roundedMatch.length - 1]\n }\n }\n\n setClassNames(`card ${rounded} ${appearance} ${className} ${noPadding ? '' : 'p-[2rem]'}`)\n\n \n }, [color, intensity, dark, appearance, noBlur, className, theme])\n\n return(\n <article className={classNames} style={cardStyle} onClick={onClick}>\n {children}\n </article>\n )\n\n}\n","import './button.css'\nimport { MouseEventHandler, ReactNode, useContext, useEffect, useState } from 'react';\nimport { Card } from '../card/card'\n\ntype ButtonProps = {\n children?: ReactNode;\n label?: string;\n icon?: ReactNode;\n position?: string\n onClick?: MouseEventHandler<HTMLElement>;\n size?: string;\n className?: string;\n noPadding?: boolean;\n noBlur?: boolean;\n appearance?: string;\n color?: string;\n intensity?: number;\n dark?: boolean;\n style?: React.CSSProperties;\n}\n\nexport function Button({children, label, icon, position='left', onClick, size, className, ...cardProps} : ButtonProps){\n\n let cardClassNames = 'flex justify-center items-center gap-x-[0.40rem] h-[2.5rem] min-w-[2.5rem] box-border p-0'\n\n if (label) {\n cardClassNames += ' px-0 py-1'\n }\n\n\n if (className){\n const roundedMatch = className.match(/rounded\\-[a-z0-9]+/g)\n if (roundedMatch){\n cardClassNames += ' ' + roundedMatch[roundedMatch.length-1]\n }\n }\n\n if (size === 'sm'){\n cardClassNames += ' h-[2rem] w-[2rem] min-w-auto'\n }\n\n const buttonClick: MouseEventHandler<HTMLButtonElement> = (ev) => {\n if (typeof onClick === 'function') { \n onClick(ev)\n }\n }\n \n return(\n <button className={className} onClick={buttonClick}>\n <Card noBlur noPadding className={cardClassNames} {...cardProps}>\n {position === 'left' && icon}\n {label}\n {children}\n {position === 'right' && icon}\n </Card>\n </button>\n )\n}"],"names":[],"mappings":";;AAOO,SAAS,OAAO,EAAE,KAAK,YAAY,IAAI,SAAqB;AAC/D,SACI;AAAA,IAAC;AAAA,IAAA;AAAA,MAAI,WAAW,2BAA2B,SAAS;AAAA,MACpD;AAAA,MACA;AAAA,IAAA;AAAA,EAAA;AAER;ACVA,MAAM,gBAAgB;AAOf,MAAM,eAAe,cAA4B,EAAC,OAAO,eAAe,UAAU,MAAM;AAAC,GAAE;ACM3F,SAAS,KAAK,EAAC,UAAU,WAAW,SAAS,OAAO,aAAa,SAAS,QAAQ,WAAW,WAAW,OAAO,MAAM,SAAS,WAAW,SAAkB;AAE9J,MAAI,CAAC,YAAY,aAAa,IAAI,SAAS,EAAE;AAC7C,MAAI,CAAC,WAAW,YAAY,IAAI,SAAS,CAAA,CAAE;AAC3C,QAAM,EAAC,MAAA,IAAS,WAAW,YAAY;AAEvC,YAAU,MAAM;AAEZ,QAAI,iBAAiB;AAErB,QAAI,mBAAmB,QAAU;AAC7B,uBAAiB,UAAU,SAAS,MAAM;AAAA,IAC9C;AAEA,iBAAa;AAAA,MACT,iBAAiB,eAAe,KAAK,IAAI,cAAc;AAAA,MACvD,qBAAqB,eAAe,KAAK,IAAI,OAAO,QAAQ,KAAK;AAAA,MACjE,gBAAgB,eAAe,WAAW,CAAC,SAAS,eAAe;AAAA,MACnE,GAAG;AAAA,IAAA,CACN;AAED,QAAI,UAAU;AAEd,QAAI,WAAU;AACV,YAAM,eAAe,UAAU,MAAM,qBAAqB;AAC1D,UAAI,cAAa;AACb,kBAAU,aAAa,aAAa,SAAS,CAAC;AAAA,MAClD;AAAA,IACJ;AAEA,kBAAc,QAAQ,OAAO,IAAI,UAAU,IAAI,SAAS,IAAI,YAAY,KAAK,UAAU,EAAE;AAAA,EAG7F,GAAG,CAAC,OAAO,WAAW,MAAM,YAAY,QAAQ,WAAW,KAAK,CAAC;AAEjE,6BACK,WAAA,EAAQ,WAAW,YAAY,OAAO,WAAW,SAC7C,UACL;AAGR;ACpCO,SAAS,OAAO,EAAC,UAAU,OAAO,MAAM,WAAS,QAAQ,SAAS,MAAM,WAAW,GAAG,UAAA,GAAyB;AAElH,MAAI,iBAAiB;AAErB,MAAI,OAAO;AACP,sBAAkB;AAAA,EACtB;AAGA,MAAI,WAAU;AACV,UAAM,eAAe,UAAU,MAAM,qBAAqB;AAC1D,QAAI,cAAa;AACb,wBAAkB,MAAM,aAAa,aAAa,SAAO,CAAC;AAAA,IAC9D;AAAA,EACJ;AAEA,MAAI,SAAS,MAAK;AACd,sBAAkB;AAAA,EACtB;AAEA,QAAM,cAAoD,CAAC,OAAO;AAC9D,QAAI,OAAO,YAAY,YAAY;AAC/B,cAAQ,EAAE;AAAA,IACd;AAAA,EACJ;AAEA,SACI,oBAAC,UAAA,EAAO,WAAsB,SAAS,aACnC,UAAA,qBAAC,MAAA,EAAK,QAAM,MAAC,WAAS,MAAC,WAAW,gBAAiB,GAAG,WACjD,UAAA;AAAA,IAAA,aAAa,UAAU;AAAA,IACvB;AAAA,IACA;AAAA,IACA,aAAa,WAAW;AAAA,EAAA,EAAA,CAC7B,EAAA,CACJ;AAER;"}
|
package/dist/index.umd.js
CHANGED
|
@@ -41,7 +41,34 @@
|
|
|
41
41
|
}, [color, intensity, dark, appearance, noBlur, className, theme]);
|
|
42
42
|
return /* @__PURE__ */ jsxRuntime.jsx("article", { className: classNames, style: cardStyle, onClick, children });
|
|
43
43
|
}
|
|
44
|
+
function Button({ children, label, icon, position = "left", onClick, size, className, ...cardProps }) {
|
|
45
|
+
let cardClassNames = "flex justify-center items-center gap-x-[0.40rem] h-[2.5rem] min-w-[2.5rem] box-border p-0";
|
|
46
|
+
if (label) {
|
|
47
|
+
cardClassNames += " px-0 py-1";
|
|
48
|
+
}
|
|
49
|
+
if (className) {
|
|
50
|
+
const roundedMatch = className.match(/rounded\-[a-z0-9]+/g);
|
|
51
|
+
if (roundedMatch) {
|
|
52
|
+
cardClassNames += " " + roundedMatch[roundedMatch.length - 1];
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
if (size === "sm") {
|
|
56
|
+
cardClassNames += " h-[2rem] w-[2rem] min-w-auto";
|
|
57
|
+
}
|
|
58
|
+
const buttonClick = (ev) => {
|
|
59
|
+
if (typeof onClick === "function") {
|
|
60
|
+
onClick(ev);
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
return /* @__PURE__ */ jsxRuntime.jsx("button", { className, onClick: buttonClick, children: /* @__PURE__ */ jsxRuntime.jsxs(Card, { noBlur: true, noPadding: true, className: cardClassNames, ...cardProps, children: [
|
|
64
|
+
position === "left" && icon,
|
|
65
|
+
label,
|
|
66
|
+
children,
|
|
67
|
+
position === "right" && icon
|
|
68
|
+
] }) });
|
|
69
|
+
}
|
|
44
70
|
exports2.Avatar = Avatar;
|
|
71
|
+
exports2.Button = Button;
|
|
45
72
|
exports2.Card = Card;
|
|
46
73
|
Object.defineProperty(exports2, Symbol.toStringTag, { value: "Module" });
|
|
47
74
|
});
|
package/dist/index.umd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.umd.js","sources":["../src/components/avatar.tsx","../src/components/theme-context.tsx","../src/components/card/card.tsx"],"sourcesContent":["\r\ntype AvatarProps = {\r\n src: string;\r\n className?: string;\r\n style?: React.CSSProperties;\r\n}\r\n\r\nexport function Avatar({ src, className = '', style }: AvatarProps){\r\n return(\r\n <img className={`size-[3rem] rounded-2xl ${className}`} \r\n src={src} \r\n style={style}/>\r\n )\r\n}","import { useState, createContext } from 'react'\n\ntype ThemeMode = 'dark' | 'light';\nconst DEFAULT_THEME = 'dark';\n\ntype ThemeContext = {\n theme: ThemeMode,\n setTheme: (val: ThemeMode) => void\n}\n\nexport const ThemeContext = createContext<ThemeContext>({theme: DEFAULT_THEME, setTheme: () => {}}); //Creando el 'espacio compartido' al que los componentes pueden acceder??\n\nimport { ReactNode } from 'react';\n\nexport default function ThemeContextComponent({children}: {children: ReactNode}){\n\n const [theme, setTheme] = useState<ThemeMode>(DEFAULT_THEME)\n\n //Creando el componente donde todos los hijos pueden acceder al contexto (siendo children los props)\n return(\n <ThemeContext.Provider value={{theme, setTheme}}> \n {children}\n </ThemeContext.Provider>\n )\n}","import './card.css'\nimport { MouseEventHandler, ReactNode, useContext, useEffect, useState } from 'react';\nimport { ThemeContext } from '../theme-context';\n\ntype CardProps = {\n children?: ReactNode;\n noPadding?: boolean;\n noBlur?: boolean;\n appearance?: string;\n color?: string;\n intensity?: number;\n dark?: boolean;\n onClick?: MouseEventHandler<HTMLElement>;\n className?: string;\n style?: React.CSSProperties;\n}\nexport function Card({children, noPadding, noBlur = false, appearance = 'glass', color = 'neutral', intensity, dark = true, onClick, className, style}: CardProps){\n \n let [classNames, setClassNames] = useState(\"\")\n let [cardStyle, setCardStyle] = useState({})\n const {theme} = useContext(ThemeContext)\n \n useEffect(() => {\n\n let intensityValue = intensity\n \n if (intensityValue === undefined){\n intensityValue = theme === 'dark' ? 600 : 300;\n }\n \n setCardStyle({\n \"--glass-color\": `var(--color-${color}-${intensityValue})`,\n \"--card-text-color\": `var(--color-${color}-${dark ? '100' : '800'})`,\n backdropFilter: appearance === 'glass' && !noBlur ? 'blur(10px)' : undefined,\n ...style\n });\n\n let rounded = 'rounded-md'\n\n if (className){\n const roundedMatch = className.match(/rounded\\-[a-z0-9]+/g)\n if (roundedMatch){\n rounded = roundedMatch[roundedMatch.length - 1]\n }\n }\n\n setClassNames(`card ${rounded} ${appearance} ${className} ${noPadding ? '' : 'p-[2rem]'}`)\n\n \n }, [color, intensity, dark, appearance, noBlur, className, theme])\n\n return(\n <article className={classNames} style={cardStyle} onClick={onClick}>\n {children}\n </article>\n )\n\n}\n"],"names":["jsx","createContext","useState","useContext","useEffect"],"mappings":";;;;AAOO,WAAS,OAAO,EAAE,KAAK,YAAY,IAAI,SAAqB;AAC/D,WACIA,2BAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QAAI,WAAW,2BAA2B,SAAS;AAAA,QACpD;AAAA,QACA;AAAA,MAAA;AAAA,IAAA;AAAA,EAER;ACVA,QAAM,gBAAgB;AAOf,QAAM,eAAeC,MAAAA,cAA4B,EAAC,OAAO,eAAe,UAAU,MAAM;AAAA,EAAC,GAAE;ACM3F,WAAS,KAAK,EAAC,UAAU,WAAW,SAAS,OAAO,aAAa,SAAS,QAAQ,WAAW,WAAW,OAAO,MAAM,SAAS,WAAW,SAAkB;AAE9J,QAAI,CAAC,YAAY,aAAa,IAAIC,MAAAA,SAAS,EAAE;AAC7C,QAAI,CAAC,WAAW,YAAY,IAAIA,MAAAA,SAAS,CAAA,CAAE;AAC3C,UAAM,EAAC,MAAA,IAASC,MAAAA,WAAW,YAAY;AAEvCC,UAAAA,UAAU,MAAM;AAEZ,UAAI,iBAAiB;AAErB,UAAI,mBAAmB,QAAU;AAC7B,yBAAiB,UAAU,SAAS,MAAM;AAAA,MAC9C;AAEA,mBAAa;AAAA,QACT,iBAAiB,eAAe,KAAK,IAAI,cAAc;AAAA,QACvD,qBAAqB,eAAe,KAAK,IAAI,OAAO,QAAQ,KAAK;AAAA,QACjE,gBAAgB,eAAe,WAAW,CAAC,SAAS,eAAe;AAAA,QACnE,GAAG;AAAA,MAAA,CACN;AAED,UAAI,UAAU;AAEd,UAAI,WAAU;AACV,cAAM,eAAe,UAAU,MAAM,qBAAqB;AAC1D,YAAI,cAAa;AACb,oBAAU,aAAa,aAAa,SAAS,CAAC;AAAA,QAClD;AAAA,MACJ;AAEA,oBAAc,QAAQ,OAAO,IAAI,UAAU,IAAI,SAAS,IAAI,YAAY,KAAK,UAAU,EAAE;AAAA,IAG7F,GAAG,CAAC,OAAO,WAAW,MAAM,YAAY,QAAQ,WAAW,KAAK,CAAC;AAEjE,0CACK,WAAA,EAAQ,WAAW,YAAY,OAAO,WAAW,SAC7C,UACL;AAAA,EAGR
|
|
1
|
+
{"version":3,"file":"index.umd.js","sources":["../src/components/avatar.tsx","../src/components/theme-context.tsx","../src/components/card/card.tsx","../src/components/button/button.tsx"],"sourcesContent":["\r\ntype AvatarProps = {\r\n src: string;\r\n className?: string;\r\n style?: React.CSSProperties;\r\n}\r\n\r\nexport function Avatar({ src, className = '', style }: AvatarProps){\r\n return(\r\n <img className={`size-[3rem] rounded-2xl ${className}`} \r\n src={src} \r\n style={style}/>\r\n )\r\n}","import { useState, createContext } from 'react'\n\ntype ThemeMode = 'dark' | 'light';\nconst DEFAULT_THEME = 'dark';\n\ntype ThemeContext = {\n theme: ThemeMode,\n setTheme: (val: ThemeMode) => void\n}\n\nexport const ThemeContext = createContext<ThemeContext>({theme: DEFAULT_THEME, setTheme: () => {}}); //Creando el 'espacio compartido' al que los componentes pueden acceder??\n\nimport { ReactNode } from 'react';\n\nexport default function ThemeContextComponent({children}: {children: ReactNode}){\n\n const [theme, setTheme] = useState<ThemeMode>(DEFAULT_THEME)\n\n //Creando el componente donde todos los hijos pueden acceder al contexto (siendo children los props)\n return(\n <ThemeContext.Provider value={{theme, setTheme}}> \n {children}\n </ThemeContext.Provider>\n )\n}","import './card.css'\nimport { MouseEventHandler, ReactNode, useContext, useEffect, useState } from 'react';\nimport { ThemeContext } from '../theme-context';\n\ntype CardProps = {\n children?: ReactNode;\n noPadding?: boolean;\n noBlur?: boolean;\n appearance?: string;\n color?: string;\n intensity?: number;\n dark?: boolean;\n onClick?: MouseEventHandler<HTMLElement>;\n className?: string;\n style?: React.CSSProperties;\n}\nexport function Card({children, noPadding, noBlur = false, appearance = 'glass', color = 'neutral', intensity, dark = true, onClick, className, style}: CardProps){\n \n let [classNames, setClassNames] = useState(\"\")\n let [cardStyle, setCardStyle] = useState({})\n const {theme} = useContext(ThemeContext)\n \n useEffect(() => {\n\n let intensityValue = intensity\n \n if (intensityValue === undefined){\n intensityValue = theme === 'dark' ? 600 : 300;\n }\n \n setCardStyle({\n \"--glass-color\": `var(--color-${color}-${intensityValue})`,\n \"--card-text-color\": `var(--color-${color}-${dark ? '100' : '800'})`,\n backdropFilter: appearance === 'glass' && !noBlur ? 'blur(10px)' : undefined,\n ...style\n });\n\n let rounded = 'rounded-md'\n\n if (className){\n const roundedMatch = className.match(/rounded\\-[a-z0-9]+/g)\n if (roundedMatch){\n rounded = roundedMatch[roundedMatch.length - 1]\n }\n }\n\n setClassNames(`card ${rounded} ${appearance} ${className} ${noPadding ? '' : 'p-[2rem]'}`)\n\n \n }, [color, intensity, dark, appearance, noBlur, className, theme])\n\n return(\n <article className={classNames} style={cardStyle} onClick={onClick}>\n {children}\n </article>\n )\n\n}\n","import './button.css'\nimport { MouseEventHandler, ReactNode, useContext, useEffect, useState } from 'react';\nimport { Card } from '../card/card'\n\ntype ButtonProps = {\n children?: ReactNode;\n label?: string;\n icon?: ReactNode;\n position?: string\n onClick?: MouseEventHandler<HTMLElement>;\n size?: string;\n className?: string;\n noPadding?: boolean;\n noBlur?: boolean;\n appearance?: string;\n color?: string;\n intensity?: number;\n dark?: boolean;\n style?: React.CSSProperties;\n}\n\nexport function Button({children, label, icon, position='left', onClick, size, className, ...cardProps} : ButtonProps){\n\n let cardClassNames = 'flex justify-center items-center gap-x-[0.40rem] h-[2.5rem] min-w-[2.5rem] box-border p-0'\n\n if (label) {\n cardClassNames += ' px-0 py-1'\n }\n\n\n if (className){\n const roundedMatch = className.match(/rounded\\-[a-z0-9]+/g)\n if (roundedMatch){\n cardClassNames += ' ' + roundedMatch[roundedMatch.length-1]\n }\n }\n\n if (size === 'sm'){\n cardClassNames += ' h-[2rem] w-[2rem] min-w-auto'\n }\n\n const buttonClick: MouseEventHandler<HTMLButtonElement> = (ev) => {\n if (typeof onClick === 'function') { \n onClick(ev)\n }\n }\n \n return(\n <button className={className} onClick={buttonClick}>\n <Card noBlur noPadding className={cardClassNames} {...cardProps}>\n {position === 'left' && icon}\n {label}\n {children}\n {position === 'right' && icon}\n </Card>\n </button>\n )\n}"],"names":["jsx","createContext","useState","useContext","useEffect","jsxs"],"mappings":";;;;AAOO,WAAS,OAAO,EAAE,KAAK,YAAY,IAAI,SAAqB;AAC/D,WACIA,2BAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QAAI,WAAW,2BAA2B,SAAS;AAAA,QACpD;AAAA,QACA;AAAA,MAAA;AAAA,IAAA;AAAA,EAER;ACVA,QAAM,gBAAgB;AAOf,QAAM,eAAeC,MAAAA,cAA4B,EAAC,OAAO,eAAe,UAAU,MAAM;AAAA,EAAC,GAAE;ACM3F,WAAS,KAAK,EAAC,UAAU,WAAW,SAAS,OAAO,aAAa,SAAS,QAAQ,WAAW,WAAW,OAAO,MAAM,SAAS,WAAW,SAAkB;AAE9J,QAAI,CAAC,YAAY,aAAa,IAAIC,MAAAA,SAAS,EAAE;AAC7C,QAAI,CAAC,WAAW,YAAY,IAAIA,MAAAA,SAAS,CAAA,CAAE;AAC3C,UAAM,EAAC,MAAA,IAASC,MAAAA,WAAW,YAAY;AAEvCC,UAAAA,UAAU,MAAM;AAEZ,UAAI,iBAAiB;AAErB,UAAI,mBAAmB,QAAU;AAC7B,yBAAiB,UAAU,SAAS,MAAM;AAAA,MAC9C;AAEA,mBAAa;AAAA,QACT,iBAAiB,eAAe,KAAK,IAAI,cAAc;AAAA,QACvD,qBAAqB,eAAe,KAAK,IAAI,OAAO,QAAQ,KAAK;AAAA,QACjE,gBAAgB,eAAe,WAAW,CAAC,SAAS,eAAe;AAAA,QACnE,GAAG;AAAA,MAAA,CACN;AAED,UAAI,UAAU;AAEd,UAAI,WAAU;AACV,cAAM,eAAe,UAAU,MAAM,qBAAqB;AAC1D,YAAI,cAAa;AACb,oBAAU,aAAa,aAAa,SAAS,CAAC;AAAA,QAClD;AAAA,MACJ;AAEA,oBAAc,QAAQ,OAAO,IAAI,UAAU,IAAI,SAAS,IAAI,YAAY,KAAK,UAAU,EAAE;AAAA,IAG7F,GAAG,CAAC,OAAO,WAAW,MAAM,YAAY,QAAQ,WAAW,KAAK,CAAC;AAEjE,0CACK,WAAA,EAAQ,WAAW,YAAY,OAAO,WAAW,SAC7C,UACL;AAAA,EAGR;ACpCO,WAAS,OAAO,EAAC,UAAU,OAAO,MAAM,WAAS,QAAQ,SAAS,MAAM,WAAW,GAAG,UAAA,GAAyB;AAElH,QAAI,iBAAiB;AAErB,QAAI,OAAO;AACP,wBAAkB;AAAA,IACtB;AAGA,QAAI,WAAU;AACV,YAAM,eAAe,UAAU,MAAM,qBAAqB;AAC1D,UAAI,cAAa;AACb,0BAAkB,MAAM,aAAa,aAAa,SAAO,CAAC;AAAA,MAC9D;AAAA,IACJ;AAEA,QAAI,SAAS,MAAK;AACd,wBAAkB;AAAA,IACtB;AAEA,UAAM,cAAoD,CAAC,OAAO;AAC9D,UAAI,OAAO,YAAY,YAAY;AAC/B,gBAAQ,EAAE;AAAA,MACd;AAAA,IACJ;AAEA,WACIJ,2BAAAA,IAAC,UAAA,EAAO,WAAsB,SAAS,aACnC,UAAAK,gCAAC,MAAA,EAAK,QAAM,MAAC,WAAS,MAAC,WAAW,gBAAiB,GAAG,WACjD,UAAA;AAAA,MAAA,aAAa,UAAU;AAAA,MACvB;AAAA,MACA;AAAA,MACA,aAAa,WAAW;AAAA,IAAA,EAAA,CAC7B,EAAA,CACJ;AAAA,EAER;;;;;;"}
|
package/dist/style.css
CHANGED
|
@@ -35,6 +35,20 @@ button .card.glass:hover{
|
|
|
35
35
|
button .card.mate:hover{
|
|
36
36
|
background-color: color-mix(in oklch, var(--glass-color), white 10%)
|
|
37
37
|
}
|
|
38
|
+
button{
|
|
39
|
+
background: none;
|
|
40
|
+
color: inherit;
|
|
41
|
+
border: none;
|
|
42
|
+
padding: 0;
|
|
43
|
+
font: inherit;
|
|
44
|
+
cursor: pointer;
|
|
45
|
+
outline: inherit;
|
|
46
|
+
font-weight: bold;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
button:focus {
|
|
50
|
+
outline: revert;
|
|
51
|
+
}
|
|
38
52
|
*, ::before, ::after {
|
|
39
53
|
--tw-border-spacing-x: 0;
|
|
40
54
|
--tw-border-spacing-y: 0;
|
|
@@ -539,10 +553,41 @@ video {
|
|
|
539
553
|
.mb-2 {
|
|
540
554
|
margin-bottom: 0.5rem;
|
|
541
555
|
}
|
|
556
|
+
.mr-\[1rem\] {
|
|
557
|
+
margin-right: 1rem;
|
|
558
|
+
}
|
|
559
|
+
.box-border {
|
|
560
|
+
box-sizing: border-box;
|
|
561
|
+
}
|
|
562
|
+
.flex {
|
|
563
|
+
display: flex;
|
|
564
|
+
}
|
|
542
565
|
.size-\[3rem\] {
|
|
543
566
|
width: 3rem;
|
|
544
567
|
height: 3rem;
|
|
545
568
|
}
|
|
569
|
+
.h-\[2\.5rem\] {
|
|
570
|
+
height: 2.5rem;
|
|
571
|
+
}
|
|
572
|
+
.h-\[2rem\] {
|
|
573
|
+
height: 2rem;
|
|
574
|
+
}
|
|
575
|
+
.w-\[2rem\] {
|
|
576
|
+
width: 2rem;
|
|
577
|
+
}
|
|
578
|
+
.min-w-\[2\.5rem\] {
|
|
579
|
+
min-width: 2.5rem;
|
|
580
|
+
}
|
|
581
|
+
.items-center {
|
|
582
|
+
align-items: center;
|
|
583
|
+
}
|
|
584
|
+
.justify-center {
|
|
585
|
+
justify-content: center;
|
|
586
|
+
}
|
|
587
|
+
.gap-x-\[0\.40rem\] {
|
|
588
|
+
-moz-column-gap: 0.40rem;
|
|
589
|
+
column-gap: 0.40rem;
|
|
590
|
+
}
|
|
546
591
|
.rounded {
|
|
547
592
|
border-radius: 0.25rem;
|
|
548
593
|
}
|
|
@@ -559,9 +604,20 @@ video {
|
|
|
559
604
|
--tw-border-opacity: 1;
|
|
560
605
|
border-color: rgb(59 130 246 / var(--tw-border-opacity, 1));
|
|
561
606
|
}
|
|
607
|
+
.p-0 {
|
|
608
|
+
padding: 0px;
|
|
609
|
+
}
|
|
562
610
|
.p-\[2rem\] {
|
|
563
611
|
padding: 2rem;
|
|
564
612
|
}
|
|
613
|
+
.px-0 {
|
|
614
|
+
padding-left: 0px;
|
|
615
|
+
padding-right: 0px;
|
|
616
|
+
}
|
|
617
|
+
.py-1 {
|
|
618
|
+
padding-top: 0.25rem;
|
|
619
|
+
padding-bottom: 0.25rem;
|
|
620
|
+
}
|
|
565
621
|
.text-lg {
|
|
566
622
|
font-size: 1.125rem;
|
|
567
623
|
line-height: 1.75rem;
|
package/dist/styles/globals.css
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "azeriand-library",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.3",
|
|
4
4
|
"description": "A React component library with Tailwind CSS",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.esm.js",
|
|
@@ -60,5 +60,7 @@
|
|
|
60
60
|
"vite": "^5.4.0",
|
|
61
61
|
"vite-plugin-dts": "^4.5.4"
|
|
62
62
|
},
|
|
63
|
-
"dependencies": {
|
|
63
|
+
"dependencies": {
|
|
64
|
+
"react-icons": "^5.5.0"
|
|
65
|
+
}
|
|
64
66
|
}
|