luna-components-library 1.1.11 → 1.1.12

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.
@@ -1,4 +1,4 @@
1
- import "react";
1
+ import { useState } from "react";
2
2
  //#region \0rolldown/runtime.js
3
3
  var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);
4
4
  //#endregion
@@ -117,16 +117,112 @@ var Anchor = ({ children = "Pablo Andrey Chacon Luna", variant = "primary", size
117
117
  //#endregion
118
118
  //#region src/components/Accordion.tsx
119
119
  var Accordion = ({ key, active, onClick, header, content }) => {
120
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", { children: header }), content] });
120
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
121
+ className: "border border-gray-200 rounded-lg overflow-hidden",
122
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("button", {
123
+ onClick,
124
+ className: "w-full px-4 py-3 text-left bg-gray-50 hover:bg-gray-100 focus:bg-gray-100 focus:outline-none transition-colors duration-200 flex justify-between items-center",
125
+ "aria-expanded": active,
126
+ children: [header, /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", {
127
+ className: `w-5 h-5 text-gray-500 transition-transform duration-200 ${active ? "transform rotate-180" : ""}`,
128
+ fill: "none",
129
+ stroke: "currentColor",
130
+ viewBox: "0 0 24 24",
131
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", {
132
+ strokeLinecap: "round",
133
+ strokeLinejoin: "round",
134
+ strokeWidth: 2,
135
+ d: "M19 9l-7 7-7-7"
136
+ })
137
+ })]
138
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
139
+ className: `transition-all duration-300 ease-in-out ${active ? "max-h-96 opacity-100" : "max-h-0 opacity-0"} overflow-hidden`,
140
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
141
+ className: "p-4 bg-white border-t border-gray-200",
142
+ children: content
143
+ })
144
+ })]
145
+ });
121
146
  };
122
147
  //#endregion
123
148
  //#region src/components/Spinner.tsx
124
- var Spinner = ({ className }) => {
149
+ var Spinner = ({ className, size = "md", type = "circle" }) => {
150
+ const sizeClasses = {
151
+ sm: "w-4 h-4",
152
+ md: "w-6 h-6",
153
+ lg: "w-8 h-8"
154
+ };
155
+ const dotSizeClasses = {
156
+ sm: "w-1 h-1",
157
+ md: "w-2 h-2",
158
+ lg: "w-3 h-3"
159
+ };
160
+ const barSizeClasses = {
161
+ sm: "w-1 h-4",
162
+ md: "w-1 h-6",
163
+ lg: "w-1 h-8"
164
+ };
165
+ if (type === "dots") return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
166
+ role: "status",
167
+ className: `flex gap-1 ${className || ""}`,
168
+ children: [
169
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
170
+ className: "sr-only",
171
+ children: "Loading..."
172
+ }),
173
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
174
+ className: `${dotSizeClasses[size]} bg-blue-600 rounded-full animate-bounce`,
175
+ style: { animationDelay: "0ms" }
176
+ }),
177
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
178
+ className: `${dotSizeClasses[size]} bg-blue-600 rounded-full animate-bounce`,
179
+ style: { animationDelay: "150ms" }
180
+ }),
181
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
182
+ className: `${dotSizeClasses[size]} bg-blue-600 rounded-full animate-bounce`,
183
+ style: { animationDelay: "300ms" }
184
+ })
185
+ ]
186
+ });
187
+ if (type === "pulse") return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
188
+ role: "status",
189
+ className: `${sizeClasses[size]} ${className || ""}`,
190
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
191
+ className: "sr-only",
192
+ children: "Loading..."
193
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: `${sizeClasses[size]} bg-blue-600 rounded-full animate-pulse` })]
194
+ });
195
+ if (type === "bars") return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
196
+ role: "status",
197
+ className: `flex gap-1 items-center ${className || ""}`,
198
+ children: [
199
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
200
+ className: "sr-only",
201
+ children: "Loading..."
202
+ }),
203
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
204
+ className: `${barSizeClasses[size]} bg-blue-600 animate-pulse`,
205
+ style: { animationDelay: "0ms" }
206
+ }),
207
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
208
+ className: `${barSizeClasses[size]} bg-blue-600 animate-pulse`,
209
+ style: { animationDelay: "200ms" }
210
+ }),
211
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
212
+ className: `${barSizeClasses[size]} bg-blue-600 animate-pulse`,
213
+ style: { animationDelay: "400ms" }
214
+ }),
215
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
216
+ className: `${barSizeClasses[size]} bg-blue-600 animate-pulse`,
217
+ style: { animationDelay: "600ms" }
218
+ })
219
+ ]
220
+ });
125
221
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
126
222
  role: "status",
127
- className: className || "spinner-border",
223
+ className: `inline-block animate-spin rounded-full border-2 border-gray-300 border-t-blue-600 ${sizeClasses[size]} ${className || ""}`,
128
224
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
129
- className: "visually-hidden",
225
+ className: "sr-only",
130
226
  children: "Loading..."
131
227
  })
132
228
  });
@@ -134,49 +230,50 @@ var Spinner = ({ className }) => {
134
230
  //#endregion
135
231
  //#region src/components/DropDown.tsx
136
232
  var DropDown = ({ toggle, options, selected, onChange }) => {
233
+ const [isOpen, setIsOpen] = useState(false);
234
+ const handleToggle = () => {
235
+ setIsOpen(!isOpen);
236
+ };
237
+ const handleOptionClick = (option) => {
238
+ onChange(option);
239
+ setIsOpen(false);
240
+ };
137
241
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
138
- className: "show dropdown",
139
- children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", {
140
- type: "button",
141
- id: "dropdown-basic",
142
- "aria-expanded": "true",
143
- className: "dropdown-toggle show btn btn-success",
144
- children: selected
145
- }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
146
- "x-placement": "bottom-start",
147
- "aria-labelledby": "dropdown-basic",
148
- className: "dropdown-menu show",
149
- "data-popper-reference-hidden": "false",
150
- "data-popper-escaped": "false",
151
- "data-popper-placement": "bottom-start",
152
- style: {
153
- position: "absolute",
154
- inset: "0px auto auto 0px",
155
- transform: "translate3d(0px, 39.3333px, 0px)"
156
- },
157
- children: options.map((option, index) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("a", {
158
- href: "#/action-1",
159
- "data-rr-ui-dropdown-item": "",
160
- className: "dropdown-item",
161
- onClick: () => onChange(option),
162
- children: option
163
- }, index))
242
+ className: "relative inline-block text-left",
243
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
244
+ onClick: handleToggle,
245
+ className: "cursor-pointer",
246
+ children: toggle
247
+ }), isOpen && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
248
+ className: "absolute z-10 mt-2 w-48 rounded-md bg-white shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none",
249
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
250
+ className: "py-1",
251
+ children: options.map((option, index) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", {
252
+ onClick: () => handleOptionClick(option),
253
+ className: "block w-full px-4 py-2 text-left text-sm text-gray-700 hover:bg-gray-100 hover:text-gray-900 focus:bg-gray-100 focus:text-gray-900",
254
+ children: option
255
+ }, index))
256
+ })
164
257
  })]
165
258
  });
166
259
  };
167
260
  //#endregion
168
261
  //#region src/components/ProgressBar.tsx
169
- var ProgressBar = ({ progress, max, min, "aria-label": ariaLabel }) => {
262
+ var ProgressBar = ({ progress, max, min, "aria-label": ariaLabel, className, style }) => {
170
263
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
171
- className: "progress",
172
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
264
+ className: "w-full bg-gray-200 rounded-full h-4 overflow-hidden",
265
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
173
266
  role: "progressbar",
174
- className: "progress-bar",
267
+ className: "bg-blue-600 h-full rounded-full transition-all duration-300 flex items-center justify-center text-white text-xs font-medium",
175
268
  "aria-valuenow": progress,
176
269
  "aria-valuemin": min,
177
270
  "aria-valuemax": max,
178
- style: { width: `${progress}%` },
179
- children: [progress, "%"]
271
+ style: {
272
+ width: `${progress}%`,
273
+ ...className,
274
+ ...style
275
+ },
276
+ children: progress > 10 && `${progress}%`
180
277
  })
181
278
  });
182
279
  };
@@ -1 +1 @@
1
- {"version":3,"file":"luna-components-library.js","names":[],"sources":["../node_modules/react/cjs/react-jsx-runtime.production.js","../node_modules/react/jsx-runtime.js","../src/components/Button.tsx","../src/components/Card.tsx","../src/components/Anchor.tsx","../src/components/Accordion.tsx","../src/components/Spinner.tsx","../src/components/DropDown.tsx","../src/components/ProgressBar.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","import React from 'react';\n\nexport interface ButtonProps {\n children: React.ReactNode;\n variant?: 'primary' | 'secondary' | 'outline';\n size?: 'sm' | 'md' | 'lg';\n onClick?: () => void;\n disabled?: boolean;\n className?: string;\n}\n\n{/* onCLick default should open window.open('https://andreychaconresumereact.netlify.app/', '_blank') */ }\n\nconst Button = ({\n children,\n variant = 'primary',\n size = 'sm',\n onClick = () =>\n void 0,\n disabled = false,\n className = '',\n}: ButtonProps) => {\n const baseClasses = 'font-medium rounded-lg transition-colors focus:outline-none focus:ring-2';\n\n const variantClasses = {\n primary: 'bg-blue-600 text-white hover:bg-blue-700 focus:ring-blue-500',\n secondary: 'bg-gray-600 text-white hover:bg-gray-700 focus:ring-gray-500',\n outline: 'border border-gray-300 text-gray-700 hover:bg-gray-50 focus:ring-gray-500',\n };\n\n const sizeClasses = {\n sm: 'px-3 py-1.5 text-sm',\n md: 'px-4 py-2 text-base',\n lg: 'px-6 py-3 text-lg',\n };\n\n const classes = `\n ${baseClasses}\n ${variantClasses[variant]}\n ${sizeClasses[size]}\n ${disabled ? 'opacity-50 cursor-not-allowed' : ''}\n ${className}\n `.trim();\n\n return (\n <button\n className={classes}\n onClick={onClick}\n disabled={disabled}\n >\n {children}\n </button>\n );\n};\n\nexport default Button;\n","import React from 'react';\n\nexport interface CardProps {\n children: React.ReactNode;\n title?: string;\n className?: string;\n padding?: 'none' | 'sm' | 'md' | 'lg';\n shadow?: 'none' | 'sm' | 'md' | 'lg';\n}\n\nconst Card = ({\n children,\n title,\n className = '',\n padding = 'md',\n shadow = 'md',\n}: CardProps) => {\n const baseClasses = 'bg-white rounded-lg border border-gray-200';\n\n const paddingClasses = {\n none: '',\n sm: 'p-3',\n md: 'p-4',\n lg: 'p-6',\n };\n\n const shadowClasses = {\n none: '',\n sm: 'shadow-sm',\n md: 'shadow-md',\n lg: 'shadow-lg',\n };\n\n const classes = `\n ${baseClasses}\n ${paddingClasses[padding]}\n ${shadowClasses[shadow]}\n ${className}\n `.trim();\n\n return (\n <div className={classes}>\n {title && (\n <div className=\"mb-4\">\n <h3 className=\"text-lg font-semibold text-gray-900\">{title}</h3>\n </div>\n )}\n {children}\n </div>\n );\n};\n\nexport default Card;\n","type AnchorProps = {\r\n children?: React.ReactNode;\r\n variant?: 'primary' | 'secondary' | 'outline';\r\n size?: 'sm' | 'md' | 'lg';\r\n href?: string;\r\n className?: string;\r\n}\r\n\r\nconst Anchor = ({\r\n children = \"Pablo Andrey Chacon Luna\",\r\n variant = 'primary',\r\n size = 'sm',\r\n href = 'https://andreychaconresumereact.netlify.app/',\r\n className,\r\n}: AnchorProps) => {\r\n\r\n const baseClasses = 'font-medium rounded-lg transition-colors focus:outline-none focus:ring-2';\r\n\r\n const variantClasses = {\r\n primary: 'bg-blue-600 text-white hover:bg-blue-700',\r\n secondary: 'bg-gray-600 text-white hover:bg-gray-700',\r\n outline: 'border border-gray-300 text-gray-700 hover:bg-gray-50',\r\n };\r\n\r\n const sizeClasses = {\r\n sm: 'px-3 py-1.5 text-sm',\r\n md: 'px-4 py-2 text-base',\r\n lg: 'px-6 py-3 text-lg',\r\n };\r\n\r\n const classes = `\r\n ${baseClasses}\r\n ${variantClasses[variant]}\r\n ${sizeClasses[size]}\r\n ${className}\r\n `.trim();\r\n\r\n return (\r\n <a href={href} target=\"_blank\" rel=\"noopener noreferrer\" className={classes}>\r\n {children}\r\n </a>\r\n );\r\n};\r\n\r\nexport default Anchor;","\r\nimport React from 'react';\r\n\r\n/**\r\n * must have key, active, onClick, header, content body\r\n */\r\ninterface AccordionProps {\r\n key: string;\r\n active: boolean;\r\n onClick: () => void;\r\n header: React.ReactNode;\r\n content: React.ReactNode;\r\n}\r\n\r\nconst Accordion = ({ key, active, onClick, header, content }: AccordionProps) => {\r\n return (\r\n <div>\r\n <h2>{header}</h2>\r\n {content}\r\n </div>\r\n );\r\n};\r\n\r\nexport default Accordion;","import React from 'react';\r\n\r\n{/* must have animation,role, className */ }\r\ntype SpinnerProps = {\r\n className?: string;\r\n};\r\n\r\nconst Spinner = ({ className }: SpinnerProps) => {\r\n const spinnerClass = className || \"spinner-border\";\r\n return (\r\n <div role=\"status\" className={spinnerClass}>\r\n <span className=\"visually-hidden\">Loading...</span>\r\n </div>\r\n );\r\n};\r\n\r\nexport default Spinner;","{/* must have toggle, options, selected, onChange */ }\r\nimport React from 'react';\r\n\r\ntype DropDownProps = {\r\n toggle: React.ReactNode;\r\n options: React.ReactNode[];\r\n selected: React.ReactNode;\r\n onChange: (value: React.ReactNode) => void;\r\n};\r\n\r\nconst DropDown = ({ toggle, options, selected, onChange }: DropDownProps) => {\r\n return (\r\n <div className=\"show dropdown\">\r\n <button type=\"button\" id=\"dropdown-basic\" aria-expanded=\"true\" className=\"dropdown-toggle show btn btn-success\">\r\n {selected}\r\n </button>\r\n <div\r\n x-placement=\"bottom-start\"\r\n aria-labelledby=\"dropdown-basic\"\r\n className=\"dropdown-menu show\"\r\n data-popper-reference-hidden=\"false\"\r\n data-popper-escaped=\"false\"\r\n data-popper-placement=\"bottom-start\"\r\n style={{ position: 'absolute', inset: '0px auto auto 0px', transform: 'translate3d(0px, 39.3333px, 0px)' }}\r\n >\r\n {options.map((option, index) => (\r\n <a key={index} href=\"#/action-1\" data-rr-ui-dropdown-item=\"\" className=\"dropdown-item\" onClick={() => onChange(option)}>\r\n {option}\r\n </a>\r\n ))}\r\n\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default DropDown;","{/* must have progress, max, min, aria-label */ }\r\nimport React from 'react';\r\n\r\ntype ProgressBarProps = {\r\n progress: number;\r\n max: number;\r\n min: number;\r\n 'aria-label': string;\r\n};\r\n\r\nconst ProgressBar = ({ progress, max, min, 'aria-label': ariaLabel }: ProgressBarProps) => {\r\n return <div className=\"progress\">\r\n <div role=\"progressbar\" className=\"progress-bar\" aria-valuenow={progress} aria-valuemin={min} aria-valuemax={max} style={{ width: `${progress}%` }}>{progress}%</div>\r\n </div>;\r\n};\r\n\r\nexport default ProgressBar;"],"x_google_ignoreList":[0,1],"mappings":"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"}
1
+ {"version":3,"file":"luna-components-library.js","names":[],"sources":["../node_modules/react/cjs/react-jsx-runtime.production.js","../node_modules/react/jsx-runtime.js","../src/components/Button.tsx","../src/components/Card.tsx","../src/components/Anchor.tsx","../src/components/Accordion.tsx","../src/components/Spinner.tsx","../src/components/DropDown.tsx","../src/components/ProgressBar.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","import React from 'react';\n\nexport interface ButtonProps {\n children: React.ReactNode;\n variant?: 'primary' | 'secondary' | 'outline';\n size?: 'sm' | 'md' | 'lg';\n onClick?: () => void;\n disabled?: boolean;\n className?: string;\n}\n\n{/* onCLick default should open window.open('https://andreychaconresumereact.netlify.app/', '_blank') */ }\n\nconst Button = ({\n children,\n variant = 'primary',\n size = 'sm',\n onClick = () =>\n void 0,\n disabled = false,\n className = '',\n}: ButtonProps) => {\n const baseClasses = 'font-medium rounded-lg transition-colors focus:outline-none focus:ring-2';\n\n const variantClasses = {\n primary: 'bg-blue-600 text-white hover:bg-blue-700 focus:ring-blue-500',\n secondary: 'bg-gray-600 text-white hover:bg-gray-700 focus:ring-gray-500',\n outline: 'border border-gray-300 text-gray-700 hover:bg-gray-50 focus:ring-gray-500',\n };\n\n const sizeClasses = {\n sm: 'px-3 py-1.5 text-sm',\n md: 'px-4 py-2 text-base',\n lg: 'px-6 py-3 text-lg',\n };\n\n const classes = `\n ${baseClasses}\n ${variantClasses[variant]}\n ${sizeClasses[size]}\n ${disabled ? 'opacity-50 cursor-not-allowed' : ''}\n ${className}\n `.trim();\n\n return (\n <button\n className={classes}\n onClick={onClick}\n disabled={disabled}\n >\n {children}\n </button>\n );\n};\n\nexport default Button;\n","import React from 'react';\n\nexport interface CardProps {\n children: React.ReactNode;\n title?: string;\n className?: string;\n padding?: 'none' | 'sm' | 'md' | 'lg';\n shadow?: 'none' | 'sm' | 'md' | 'lg';\n}\n\nconst Card = ({\n children,\n title,\n className = '',\n padding = 'md',\n shadow = 'md',\n}: CardProps) => {\n const baseClasses = 'bg-white rounded-lg border border-gray-200';\n\n const paddingClasses = {\n none: '',\n sm: 'p-3',\n md: 'p-4',\n lg: 'p-6',\n };\n\n const shadowClasses = {\n none: '',\n sm: 'shadow-sm',\n md: 'shadow-md',\n lg: 'shadow-lg',\n };\n\n const classes = `\n ${baseClasses}\n ${paddingClasses[padding]}\n ${shadowClasses[shadow]}\n ${className}\n `.trim();\n\n return (\n <div className={classes}>\n {title && (\n <div className=\"mb-4\">\n <h3 className=\"text-lg font-semibold text-gray-900\">{title}</h3>\n </div>\n )}\n {children}\n </div>\n );\n};\n\nexport default Card;\n","type AnchorProps = {\r\n children?: React.ReactNode;\r\n variant?: 'primary' | 'secondary' | 'outline';\r\n size?: 'sm' | 'md' | 'lg';\r\n href?: string;\r\n className?: string;\r\n}\r\n\r\nconst Anchor = ({\r\n children = \"Pablo Andrey Chacon Luna\",\r\n variant = 'primary',\r\n size = 'sm',\r\n href = 'https://andreychaconresumereact.netlify.app/',\r\n className,\r\n}: AnchorProps) => {\r\n\r\n const baseClasses = 'font-medium rounded-lg transition-colors focus:outline-none focus:ring-2';\r\n\r\n const variantClasses = {\r\n primary: 'bg-blue-600 text-white hover:bg-blue-700',\r\n secondary: 'bg-gray-600 text-white hover:bg-gray-700',\r\n outline: 'border border-gray-300 text-gray-700 hover:bg-gray-50',\r\n };\r\n\r\n const sizeClasses = {\r\n sm: 'px-3 py-1.5 text-sm',\r\n md: 'px-4 py-2 text-base',\r\n lg: 'px-6 py-3 text-lg',\r\n };\r\n\r\n const classes = `\r\n ${baseClasses}\r\n ${variantClasses[variant]}\r\n ${sizeClasses[size]}\r\n ${className}\r\n `.trim();\r\n\r\n return (\r\n <a href={href} target=\"_blank\" rel=\"noopener noreferrer\" className={classes}>\r\n {children}\r\n </a>\r\n );\r\n};\r\n\r\nexport default Anchor;","\r\nimport React from 'react';\r\n\r\n/**\r\n * must have key, active, onClick, header, content body\r\n */\r\ninterface AccordionProps {\r\n key: string;\r\n active: boolean;\r\n onClick: () => void;\r\n header: React.ReactNode;\r\n content: React.ReactNode;\r\n}\r\n\r\nconst Accordion = ({ key, active, onClick, header, content }: AccordionProps) => {\r\n return (\r\n <div className=\"border border-gray-200 rounded-lg overflow-hidden\">\r\n <button\r\n onClick={onClick}\r\n className=\"w-full px-4 py-3 text-left bg-gray-50 hover:bg-gray-100 focus:bg-gray-100 focus:outline-none transition-colors duration-200 flex justify-between items-center\"\r\n aria-expanded={active}\r\n >\r\n {header}\r\n <svg\r\n className={`w-5 h-5 text-gray-500 transition-transform duration-200 ${active ? 'transform rotate-180' : ''\r\n }`}\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n viewBox=\"0 0 24 24\"\r\n >\r\n <path\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n strokeWidth={2}\r\n d=\"M19 9l-7 7-7-7\"\r\n />\r\n </svg>\r\n </button>\r\n\r\n <div\r\n className={`transition-all duration-300 ease-in-out ${active ? 'max-h-96 opacity-100' : 'max-h-0 opacity-0'\r\n } overflow-hidden`}\r\n >\r\n <div className=\"p-4 bg-white border-t border-gray-200\">\r\n {content}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default Accordion;","import React from 'react';\r\n\r\n{/* must have animation,role, className */ }\r\ntype SpinnerProps = {\r\n className?: string;\r\n size?: 'sm' | 'md' | 'lg';\r\n type?: 'circle' | 'dots' | 'pulse' | 'bars';\r\n};\r\n\r\nconst Spinner = ({ className, size = 'md', type = 'circle' }: SpinnerProps) => {\r\n const sizeClasses = {\r\n sm: 'w-4 h-4',\r\n md: 'w-6 h-6',\r\n lg: 'w-8 h-8'\r\n };\r\n\r\n const dotSizeClasses = {\r\n sm: 'w-1 h-1',\r\n md: 'w-2 h-2',\r\n lg: 'w-3 h-3'\r\n };\r\n\r\n const barSizeClasses = {\r\n sm: 'w-1 h-4',\r\n md: 'w-1 h-6',\r\n lg: 'w-1 h-8'\r\n };\r\n\r\n if (type === 'dots') {\r\n return (\r\n <div role=\"status\" className={`flex gap-1 ${className || ''}`}>\r\n <span className=\"sr-only\">Loading...</span>\r\n <div className={`${dotSizeClasses[size]} bg-blue-600 rounded-full animate-bounce`} style={{ animationDelay: '0ms' }}></div>\r\n <div className={`${dotSizeClasses[size]} bg-blue-600 rounded-full animate-bounce`} style={{ animationDelay: '150ms' }}></div>\r\n <div className={`${dotSizeClasses[size]} bg-blue-600 rounded-full animate-bounce`} style={{ animationDelay: '300ms' }}></div>\r\n </div>\r\n );\r\n }\r\n\r\n if (type === 'pulse') {\r\n return (\r\n <div role=\"status\" className={`${sizeClasses[size]} ${className || ''}`}>\r\n <span className=\"sr-only\">Loading...</span>\r\n <div className={`${sizeClasses[size]} bg-blue-600 rounded-full animate-pulse`}></div>\r\n </div>\r\n );\r\n }\r\n\r\n if (type === 'bars') {\r\n return (\r\n <div role=\"status\" className={`flex gap-1 items-center ${className || ''}`}>\r\n <span className=\"sr-only\">Loading...</span>\r\n <div className={`${barSizeClasses[size]} bg-blue-600 animate-pulse`} style={{ animationDelay: '0ms' }}></div>\r\n <div className={`${barSizeClasses[size]} bg-blue-600 animate-pulse`} style={{ animationDelay: '200ms' }}></div>\r\n <div className={`${barSizeClasses[size]} bg-blue-600 animate-pulse`} style={{ animationDelay: '400ms' }}></div>\r\n <div className={`${barSizeClasses[size]} bg-blue-600 animate-pulse`} style={{ animationDelay: '600ms' }}></div>\r\n </div>\r\n );\r\n }\r\n\r\n // Default circle spinner\r\n return (\r\n <div\r\n role=\"status\"\r\n className={`inline-block animate-spin rounded-full border-2 border-gray-300 border-t-blue-600 ${sizeClasses[size]} ${className || ''}`}\r\n >\r\n <span className=\"sr-only\">Loading...</span>\r\n </div>\r\n );\r\n};\r\n\r\nexport default Spinner;","{/* must have toggle, options, selected, onChange */ }\r\nimport React, { useState } from 'react';\r\n\r\ntype DropDownProps = {\r\n toggle: React.ReactNode;\r\n options: React.ReactNode[];\r\n selected: React.ReactNode;\r\n onChange: (value: React.ReactNode) => void;\r\n};\r\n\r\nconst DropDown = ({ toggle, options, selected, onChange }: DropDownProps) => {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const handleToggle = () => {\r\n setIsOpen(!isOpen);\r\n };\r\n\r\n const handleOptionClick = (option: React.ReactNode) => {\r\n onChange(option);\r\n setIsOpen(false);\r\n };\r\n\r\n return (\r\n <div className=\"relative inline-block text-left\">\r\n <div onClick={handleToggle} className=\"cursor-pointer\">\r\n {toggle}\r\n </div>\r\n\r\n {isOpen && (\r\n <div className=\"absolute z-10 mt-2 w-48 rounded-md bg-white shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none\">\r\n <div className=\"py-1\">\r\n {options.map((option, index) => (\r\n <button\r\n key={index}\r\n onClick={() => handleOptionClick(option)}\r\n className=\"block w-full px-4 py-2 text-left text-sm text-gray-700 hover:bg-gray-100 hover:text-gray-900 focus:bg-gray-100 focus:text-gray-900\"\r\n >\r\n {option}\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default DropDown;","{/* must have progress, max, min, aria-label */ }\r\nimport React from 'react';\r\nimport { CSSProperties } from 'react';\r\n\r\ntype ProgressBarProps = {\r\n progress: number;\r\n max: number;\r\n min: number;\r\n 'aria-label': string;\r\n};\r\n\r\n{/* need a class for the progress bar class name: progress-bar */ }\r\ntype ProgressBarPropsWithClassName = ProgressBarProps & {\r\n className?: CSSProperties;\r\n style?: CSSProperties;\r\n};\r\n\r\nconst ProgressBar = ({ progress, max, min, 'aria-label': ariaLabel, className, style }: ProgressBarPropsWithClassName) => {\r\n return (\r\n <div className=\"w-full bg-gray-200 rounded-full h-4 overflow-hidden\">\r\n <div\r\n role=\"progressbar\"\r\n className=\"bg-blue-600 h-full rounded-full transition-all duration-300 flex items-center justify-center text-white text-xs font-medium\"\r\n aria-valuenow={progress}\r\n aria-valuemin={min}\r\n aria-valuemax={max}\r\n style={{ width: `${progress}%`, ...className, ...style }}\r\n >\r\n {progress > 10 && `${progress}%`}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default ProgressBar;"],"x_google_ignoreList":[0,1],"mappings":";;;;;;;;;;;;;;;CAWA,IAAI,qBAAqB,OAAO,IAAI,6BAA6B;CAEjE,SAAS,QAAQ,MAAM,QAAQ,UAAU;EACvC,IAAI,MAAM;EACV,KAAK,MAAM,aAAa,MAAM,KAAK;EACnC,KAAK,MAAM,OAAO,QAAQ,MAAM,KAAK,OAAO;EAC5C,IAAI,SAAS,QAAQ;GACnB,WAAW,EAAE;GACb,KAAK,IAAI,YAAY,QACnB,UAAU,aAAa,SAAS,YAAY,OAAO;SAChD,WAAW;EAClB,SAAS,SAAS;EAClB,OAAO;GACL,UAAU;GACJ;GACD;GACL,KAAK,KAAK,MAAM,SAAS,SAAS;GAClC,OAAO;GACR;;CAGH,QAAQ,MAAM;CACd,QAAQ,OAAO;;;;;CC9Bb,OAAO,UAAA,sCAAA;;ACUT,IAAM,UAAU,EACd,UACA,UAAU,WACV,OAAO,MACP,gBACE,KAAK,GACP,WAAW,OACX,YAAY,SACK;CAuBjB,OACE,iBAAA,GAAA,mBAAA,KAAC,UAAD;EACE,WAVY;;MAEZ;GAbF,SAAS;GACT,WAAW;GACX,SAAS;GAWP,CAAe,SAAS;MACxB;GARF,IAAI;GACJ,IAAI;GACJ,IAAI;GAMF,CAAY,MAAM;MAClB,WAAW,kCAAkC,GAAG;MAChD,UAAU;IACZ,MAIa;EACF;EACC;EAET;EACM,CAAA;;;;ACzCb,IAAM,QAAQ,EACZ,UACA,OACA,YAAY,IACZ,UAAU,MACV,SAAS,WACM;CAwBf,OACE,iBAAA,GAAA,mBAAA,MAAC,OAAD;EAAK,WARS;;MAEZ;GAfF,MAAM;GACN,IAAI;GACJ,IAAI;GACJ,IAAI;GAYF,CAAe,SAAS;MACxB;GATF,MAAM;GACN,IAAI;GACJ,IAAI;GACJ,IAAI;GAMF,CAAc,QAAQ;MACtB,UAAU;IACZ,MAGgB;YAAhB,CACG,SACC,iBAAA,GAAA,mBAAA,KAAC,OAAD;GAAK,WAAU;aACb,iBAAA,GAAA,mBAAA,KAAC,MAAD;IAAI,WAAU;cAAuC;IAAW,CAAA;GAC5D,CAAA,EAEP,SACG;;;;;ACxCV,IAAM,UAAU,EACd,WAAW,4BACX,UAAU,WACV,OAAO,MACP,OAAO,gDACP,gBACiB;CAuBjB,OACE,iBAAA,GAAA,mBAAA,KAAC,KAAD;EAAS;EAAM,QAAO;EAAS,KAAI;EAAsB,WAR3C;;MAEZ;GAbF,SAAS;GACT,WAAW;GACX,SAAS;GAWP,CAAe,SAAS;MACxB;GARF,IAAI;GACJ,IAAI;GACJ,IAAI;GAMF,CAAY,MAAM;MAClB,UAAU;IACZ,MAGoE;EACjE;EACC,CAAA;;;;AC1BR,IAAM,aAAa,EAAE,KAAK,QAAQ,SAAS,QAAQ,cAA8B;CAC/E,OACE,iBAAA,GAAA,mBAAA,MAAC,OAAD;EAAK,WAAU;YAAf,CACE,iBAAA,GAAA,mBAAA,MAAC,UAAD;GACW;GACT,WAAU;GACV,iBAAe;aAHjB,CAKG,QACD,iBAAA,GAAA,mBAAA,KAAC,OAAD;IACE,WAAW,2DAA2D,SAAS,yBAAyB;IAExG,MAAK;IACL,QAAO;IACP,SAAQ;cAER,iBAAA,GAAA,mBAAA,KAAC,QAAD;KACE,eAAc;KACd,gBAAe;KACf,aAAa;KACb,GAAE;KACF,CAAA;IACE,CAAA,CACC;MAET,iBAAA,GAAA,mBAAA,KAAC,OAAD;GACE,WAAW,2CAA2C,SAAS,yBAAyB,oBACrF;aAEH,iBAAA,GAAA,mBAAA,KAAC,OAAD;IAAK,WAAU;cACZ;IACG,CAAA;GACF,CAAA,CACF;;;;;ACtCV,IAAM,WAAW,EAAE,WAAW,OAAO,MAAM,OAAO,eAA6B;CAC7E,MAAM,cAAc;EAClB,IAAI;EACJ,IAAI;EACJ,IAAI;EACL;CAED,MAAM,iBAAiB;EACrB,IAAI;EACJ,IAAI;EACJ,IAAI;EACL;CAED,MAAM,iBAAiB;EACrB,IAAI;EACJ,IAAI;EACJ,IAAI;EACL;CAED,IAAI,SAAS,QACX,OACE,iBAAA,GAAA,mBAAA,MAAC,OAAD;EAAK,MAAK;EAAS,WAAW,cAAc,aAAa;YAAzD;GACE,iBAAA,GAAA,mBAAA,KAAC,QAAD;IAAM,WAAU;cAAU;IAAiB,CAAA;GAC3C,iBAAA,GAAA,mBAAA,KAAC,OAAD;IAAK,WAAW,GAAG,eAAe,MAAM;IAA2C,OAAO,EAAE,gBAAgB,OAAO;IAAQ,CAAA;GAC3H,iBAAA,GAAA,mBAAA,KAAC,OAAD;IAAK,WAAW,GAAG,eAAe,MAAM;IAA2C,OAAO,EAAE,gBAAgB,SAAS;IAAQ,CAAA;GAC7H,iBAAA,GAAA,mBAAA,KAAC,OAAD;IAAK,WAAW,GAAG,eAAe,MAAM;IAA2C,OAAO,EAAE,gBAAgB,SAAS;IAAQ,CAAA;GACzH;;CAIV,IAAI,SAAS,SACX,OACE,iBAAA,GAAA,mBAAA,MAAC,OAAD;EAAK,MAAK;EAAS,WAAW,GAAG,YAAY,MAAM,GAAG,aAAa;YAAnE,CACE,iBAAA,GAAA,mBAAA,KAAC,QAAD;GAAM,WAAU;aAAU;GAAiB,CAAA,EAC3C,iBAAA,GAAA,mBAAA,KAAC,OAAD,EAAK,WAAW,GAAG,YAAY,MAAM,0CAAgD,CAAA,CACjF;;CAIV,IAAI,SAAS,QACX,OACE,iBAAA,GAAA,mBAAA,MAAC,OAAD;EAAK,MAAK;EAAS,WAAW,2BAA2B,aAAa;YAAtE;GACE,iBAAA,GAAA,mBAAA,KAAC,QAAD;IAAM,WAAU;cAAU;IAAiB,CAAA;GAC3C,iBAAA,GAAA,mBAAA,KAAC,OAAD;IAAK,WAAW,GAAG,eAAe,MAAM;IAA6B,OAAO,EAAE,gBAAgB,OAAO;IAAQ,CAAA;GAC7G,iBAAA,GAAA,mBAAA,KAAC,OAAD;IAAK,WAAW,GAAG,eAAe,MAAM;IAA6B,OAAO,EAAE,gBAAgB,SAAS;IAAQ,CAAA;GAC/G,iBAAA,GAAA,mBAAA,KAAC,OAAD;IAAK,WAAW,GAAG,eAAe,MAAM;IAA6B,OAAO,EAAE,gBAAgB,SAAS;IAAQ,CAAA;GAC/G,iBAAA,GAAA,mBAAA,KAAC,OAAD;IAAK,WAAW,GAAG,eAAe,MAAM;IAA6B,OAAO,EAAE,gBAAgB,SAAS;IAAQ,CAAA;GAC3G;;CAKV,OACE,iBAAA,GAAA,mBAAA,KAAC,OAAD;EACE,MAAK;EACL,WAAW,qFAAqF,YAAY,MAAM,GAAG,aAAa;YAElI,iBAAA,GAAA,mBAAA,KAAC,QAAD;GAAM,WAAU;aAAU;GAAiB,CAAA;EACvC,CAAA;;;;ACzDV,IAAM,YAAY,EAAE,QAAQ,SAAS,UAAU,eAA8B;CAC3E,MAAM,CAAC,QAAQ,aAAa,SAAS,MAAM;CAE3C,MAAM,qBAAqB;EACzB,UAAU,CAAC,OAAO;;CAGpB,MAAM,qBAAqB,WAA4B;EACrD,SAAS,OAAO;EAChB,UAAU,MAAM;;CAGlB,OACE,iBAAA,GAAA,mBAAA,MAAC,OAAD;EAAK,WAAU;YAAf,CACE,iBAAA,GAAA,mBAAA,KAAC,OAAD;GAAK,SAAS;GAAc,WAAU;aACnC;GACG,CAAA,EAEL,UACC,iBAAA,GAAA,mBAAA,KAAC,OAAD;GAAK,WAAU;aACb,iBAAA,GAAA,mBAAA,KAAC,OAAD;IAAK,WAAU;cACZ,QAAQ,KAAK,QAAQ,UACpB,iBAAA,GAAA,mBAAA,KAAC,UAAD;KAEE,eAAe,kBAAkB,OAAO;KACxC,WAAU;eAET;KACM,EALF,MAKE,CACT;IACE,CAAA;GACF,CAAA,CAEJ;;;;;AC1BV,IAAM,eAAe,EAAE,UAAU,KAAK,KAAK,cAAc,WAAW,WAAW,YAA2C;CACxH,OACE,iBAAA,GAAA,mBAAA,KAAC,OAAD;EAAK,WAAU;YACb,iBAAA,GAAA,mBAAA,KAAC,OAAD;GACE,MAAK;GACL,WAAU;GACV,iBAAe;GACf,iBAAe;GACf,iBAAe;GACf,OAAO;IAAE,OAAO,GAAG,SAAS;IAAI,GAAG;IAAW,GAAG;IAAO;aAEvD,WAAW,MAAM,GAAG,SAAS;GAC1B,CAAA;EACF,CAAA"}
@@ -1,8 +1,13 @@
1
+ import { CSSProperties } from 'react';
1
2
  type ProgressBarProps = {
2
3
  progress: number;
3
4
  max: number;
4
5
  min: number;
5
6
  'aria-label': string;
6
7
  };
7
- declare const ProgressBar: ({ progress, max, min, "aria-label": ariaLabel }: ProgressBarProps) => import("react/jsx-runtime").JSX.Element;
8
+ type ProgressBarPropsWithClassName = ProgressBarProps & {
9
+ className?: CSSProperties;
10
+ style?: CSSProperties;
11
+ };
12
+ declare const ProgressBar: ({ progress, max, min, "aria-label": ariaLabel, className, style }: ProgressBarPropsWithClassName) => import("react/jsx-runtime").JSX.Element;
8
13
  export default ProgressBar;
@@ -1,5 +1,7 @@
1
1
  type SpinnerProps = {
2
2
  className?: string;
3
+ size?: 'sm' | 'md' | 'lg';
4
+ type?: 'circle' | 'dots' | 'pulse' | 'bars';
3
5
  };
4
- declare const Spinner: ({ className }: SpinnerProps) => import("react/jsx-runtime").JSX.Element;
6
+ declare const Spinner: ({ className, size, type }: SpinnerProps) => import("react/jsx-runtime").JSX.Element;
5
7
  export default Spinner;
@@ -0,0 +1 @@
1
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "luna-components-library",
3
- "version": "1.1.11",
3
+ "version": "1.1.12",
4
4
  "description": "A React component library with TypeScript support",
5
5
  "main": "dist/luna-components-library.js",
6
6
  "module": "dist/luna-components-library.js",
@@ -12,7 +12,10 @@
12
12
  "clean": "rimraf dist",
13
13
  "build": "npm run clean && vite build",
14
14
  "prepublishOnly": "npm run build",
15
- "test": "jest"
15
+ "test": "jest",
16
+ "dev": "vite --config vite.demo.config.ts",
17
+ "preview": "vite preview --config vite.demo.config.ts",
18
+ "build-demo": "vite build --config vite.demo.config.ts"
16
19
  },
17
20
  "keywords": [
18
21
  "react",