azeriand-library 1.2.3 → 1.3.4

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.
@@ -0,0 +1,14 @@
1
+ button{
2
+ background: none;
3
+ color: inherit;
4
+ border: none;
5
+ padding: 0;
6
+ font: inherit;
7
+ cursor: pointer;
8
+ outline: inherit;
9
+ font-weight: bold;
10
+ }
11
+
12
+ button:focus {
13
+ outline: revert;
14
+ }
@@ -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
@@ -1,3 +1,4 @@
1
1
  export { Avatar } from './components/avatar';
2
2
  export { Card } from './components/card/card';
3
+ export { Button } from './components/button/button';
3
4
  export * from './styles/index';
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
@@ -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
  });
@@ -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;
@@ -3,6 +3,7 @@
3
3
  @tailwind utilities;
4
4
 
5
5
  @import '../components/card/card.css';
6
+ @import '../components/button/button.css';
6
7
 
7
8
  :root {
8
9
  font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "azeriand-library",
3
- "version": "1.2.3",
3
+ "version": "1.3.4",
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
  }
@@ -3,6 +3,7 @@
3
3
  @tailwind utilities;
4
4
 
5
5
  @import '../components/card/card.css';
6
+ @import '../components/button/button.css';
6
7
 
7
8
  :root {
8
9
  font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;