bynana-ui 1.6.1 → 1.7.0

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.
Files changed (101) hide show
  1. package/dist/action-search-bar/index.js +17 -0
  2. package/dist/action-search-bar/index.js.map +1 -0
  3. package/dist/action-search-bar/index.mjs +17 -0
  4. package/dist/action-search-bar/index.mjs.map +1 -0
  5. package/dist/ai-bar/index.js +19 -0
  6. package/dist/ai-bar/index.js.map +1 -0
  7. package/dist/ai-bar/index.mjs +19 -0
  8. package/dist/ai-bar/index.mjs.map +1 -0
  9. package/dist/ai-loading/index.js +2 -0
  10. package/dist/ai-loading/index.js.map +1 -0
  11. package/dist/ai-loading/index.mjs +2 -0
  12. package/dist/ai-loading/index.mjs.map +1 -0
  13. package/dist/ai-prompt/index.js +17 -0
  14. package/dist/ai-prompt/index.js.map +1 -0
  15. package/dist/ai-prompt/index.mjs +17 -0
  16. package/dist/ai-prompt/index.mjs.map +1 -0
  17. package/dist/aurora/index.js +2 -0
  18. package/dist/aurora/index.js.map +1 -0
  19. package/dist/aurora/index.mjs +2 -0
  20. package/dist/aurora/index.mjs.map +1 -0
  21. package/dist/elastic-search/index.js +17 -0
  22. package/dist/elastic-search/index.js.map +1 -0
  23. package/dist/elastic-search/index.mjs +17 -0
  24. package/dist/elastic-search/index.mjs.map +1 -0
  25. package/dist/faqs-accordion/index.js +16 -0
  26. package/dist/faqs-accordion/index.js.map +1 -0
  27. package/dist/faqs-accordion/index.mjs +16 -0
  28. package/dist/faqs-accordion/index.mjs.map +1 -0
  29. package/dist/faqs-grid/index.js +2 -0
  30. package/dist/faqs-grid/index.js.map +1 -0
  31. package/dist/faqs-grid/index.mjs +2 -0
  32. package/dist/faqs-grid/index.mjs.map +1 -0
  33. package/dist/footer-complex/index.js +2 -0
  34. package/dist/footer-complex/index.js.map +1 -0
  35. package/dist/footer-complex/index.mjs +2 -0
  36. package/dist/footer-complex/index.mjs.map +1 -0
  37. package/dist/footer-simple/index.js +2 -0
  38. package/dist/footer-simple/index.js.map +1 -0
  39. package/dist/footer-simple/index.mjs +2 -0
  40. package/dist/footer-simple/index.mjs.map +1 -0
  41. package/dist/hero-grid/index.js +16 -0
  42. package/dist/hero-grid/index.js.map +1 -0
  43. package/dist/hero-grid/index.mjs +16 -0
  44. package/dist/hero-grid/index.mjs.map +1 -0
  45. package/dist/hero-showcase/index.js +17 -0
  46. package/dist/hero-showcase/index.js.map +1 -0
  47. package/dist/hero-showcase/index.mjs +17 -0
  48. package/dist/hero-showcase/index.mjs.map +1 -0
  49. package/dist/index.js +55 -13
  50. package/dist/index.js.map +1 -1
  51. package/dist/index.mjs +55 -13
  52. package/dist/index.mjs.map +1 -1
  53. package/dist/job-listing/index.js +19 -0
  54. package/dist/job-listing/index.js.map +1 -0
  55. package/dist/job-listing/index.mjs +19 -0
  56. package/dist/job-listing/index.mjs.map +1 -0
  57. package/dist/logo-cloud/index.js +14 -0
  58. package/dist/logo-cloud/index.js.map +1 -0
  59. package/dist/logo-cloud/index.mjs +14 -0
  60. package/dist/logo-cloud/index.mjs.map +1 -0
  61. package/dist/pricing-modern/index.js +16 -0
  62. package/dist/pricing-modern/index.js.map +1 -0
  63. package/dist/pricing-modern/index.mjs +16 -0
  64. package/dist/pricing-modern/index.mjs.map +1 -0
  65. package/dist/scroll-float/index.js +2 -0
  66. package/dist/scroll-float/index.js.map +1 -0
  67. package/dist/scroll-float/index.mjs +2 -0
  68. package/dist/scroll-float/index.mjs.map +1 -0
  69. package/dist/scroll-reveal/index.js +2 -0
  70. package/dist/scroll-reveal/index.js.map +1 -0
  71. package/dist/scroll-reveal/index.mjs +2 -0
  72. package/dist/scroll-reveal/index.mjs.map +1 -0
  73. package/dist/scroll-stack/index.js +2 -0
  74. package/dist/scroll-stack/index.js.map +1 -0
  75. package/dist/scroll-stack/index.mjs +2 -0
  76. package/dist/scroll-stack/index.mjs.map +1 -0
  77. package/dist/squares/index.js +2 -0
  78. package/dist/squares/index.js.map +1 -0
  79. package/dist/squares/index.mjs +2 -0
  80. package/dist/squares/index.mjs.map +1 -0
  81. package/dist/team-carousel/index.js +17 -0
  82. package/dist/team-carousel/index.js.map +1 -0
  83. package/dist/team-carousel/index.mjs +17 -0
  84. package/dist/team-carousel/index.mjs.map +1 -0
  85. package/dist/testimonials-grid/index.js +17 -0
  86. package/dist/testimonials-grid/index.js.map +1 -0
  87. package/dist/testimonials-grid/index.mjs +17 -0
  88. package/dist/testimonials-grid/index.mjs.map +1 -0
  89. package/dist/testimonials-simple/index.js +3 -0
  90. package/dist/testimonials-simple/index.js.map +1 -0
  91. package/dist/testimonials-simple/index.mjs +3 -0
  92. package/dist/testimonials-simple/index.mjs.map +1 -0
  93. package/dist/threads/index.js +2 -0
  94. package/dist/threads/index.js.map +1 -0
  95. package/dist/threads/index.mjs +2 -0
  96. package/dist/threads/index.mjs.map +1 -0
  97. package/dist/waves/index.js +2 -0
  98. package/dist/waves/index.js.map +1 -0
  99. package/dist/waves/index.mjs +2 -0
  100. package/dist/waves/index.mjs.map +1 -0
  101. package/package.json +26 -2
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../node_modules/shared/src/utils.ts","../../../../node_modules/lucide-react/src/defaultAttributes.ts","../../../../node_modules/lucide-react/src/Icon.ts","../../../../node_modules/lucide-react/src/createLucideIcon.ts","../../../../node_modules/lucide-react/src/icons/search.ts","../../../../node_modules/lucide-react/src/icons/x.ts","../../src/elastic-search/index.tsx"],"names":["toKebabCase","string","toCamelCase","match","p1","p2","toPascalCase","camelCase","mergeClasses","classes","className","index","array","hasA11yProp","props","prop","defaultAttributes","Icon","forwardRef","color","size","strokeWidth","absoluteStrokeWidth","children","iconNode","rest","ref","createElement","tag","attrs","createLucideIcon","iconName","Component","__iconNode","Search","X","ElasticSearch","placeholder","results","onSearch","onSelect","query","setQuery","useState","isOpen","setIsOpen","selectedIndex","setSelectedIndex","inputRef","useRef","useEffect","handleKeyDown","e","prev","jsxs","jsx","result","elastic_search_default"],"mappings":"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","file":"index.js","sourcesContent":["import { CamelToPascal } from './utility-types';\n\n/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n\n/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = <T extends string>(string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = <T extends string>(string: T): CamelToPascal<T> => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal<T>;\n};\n\n/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = <ClassType = string | undefined | null>(...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n\n/**\n * Is empty string\n *\n * @param {unknown} value\n * @returns {boolean} Whether the value is an empty string\n */\nexport const isEmptyString = (value: unknown): boolean => value === '';\n\n/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: Record<string, any>) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n};\n","export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n","import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, hasA11yProp } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef<SVGSVGElement, IconComponentProps>(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) =>\n createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('lucide', className),\n ...(!children && !hasA11yProp(rest) && { 'aria-hidden': 'true' }),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n ),\n);\n\nexport default Icon;\n","import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef<SVGSVGElement, LucideProps>(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createLucideIcon;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'm21 21-4.34-4.34', key: '14j7rj' }],\n ['circle', { cx: '11', cy: '11', r: '8', key: '4ej97u' }],\n];\n\n/**\n * @component @name Search\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMjEgMjEtNC4zNC00LjM0IiAvPgogIDxjaXJjbGUgY3g9IjExIiBjeT0iMTEiIHI9IjgiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/search\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Search = createLucideIcon('search', __iconNode);\n\nexport default Search;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M18 6 6 18', key: '1bl5f8' }],\n ['path', { d: 'm6 6 12 12', key: 'd8bk6v' }],\n];\n\n/**\n * @component @name X\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTggNiA2IDE4IiAvPgogIDxwYXRoIGQ9Im02IDYgMTIgMTIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/x\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst X = createLucideIcon('x', __iconNode);\n\nexport default X;\n","\"use client\";\r\n\r\nimport { useState, useRef, useEffect } from \"react\";\r\nimport { Search, X, Command } from \"lucide-react\";\r\n\r\ninterface SearchResult {\r\n id: string;\r\n title: string;\r\n description?: string;\r\n category?: string;\r\n}\r\n\r\ninterface ElasticSearchProps {\r\n placeholder?: string;\r\n results?: SearchResult[];\r\n onSearch?: (query: string) => void;\r\n onSelect?: (result: SearchResult) => void;\r\n className?: string;\r\n}\r\n\r\nexport function ElasticSearch({\r\n placeholder = \"Search...\",\r\n results = [],\r\n onSearch,\r\n onSelect,\r\n className = \"\",\r\n}: ElasticSearchProps) {\r\n const [query, setQuery] = useState(\"\");\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [selectedIndex, setSelectedIndex] = useState(0);\r\n const inputRef = useRef<HTMLInputElement>(null);\r\n\r\n useEffect(() => {\r\n if (query && onSearch) {\r\n onSearch(query);\r\n }\r\n }, [query, onSearch]);\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent) => {\r\n if (e.key === \"ArrowDown\") {\r\n e.preventDefault();\r\n setSelectedIndex((prev) => Math.min(prev + 1, results.length - 1));\r\n } else if (e.key === \"ArrowUp\") {\r\n e.preventDefault();\r\n setSelectedIndex((prev) => Math.max(prev - 1, 0));\r\n } else if (e.key === \"Enter\" && results[selectedIndex]) {\r\n e.preventDefault();\r\n onSelect?.(results[selectedIndex]);\r\n setIsOpen(false);\r\n } else if (e.key === \"Escape\") {\r\n setIsOpen(false);\r\n }\r\n };\r\n\r\n return (\r\n <div className={`relative w-full max-w-lg ${className}`}>\r\n <div className=\"relative\">\r\n <Search className=\"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground\" />\r\n <input\r\n ref={inputRef}\r\n type=\"text\"\r\n value={query}\r\n onChange={(e) => {\r\n setQuery(e.target.value);\r\n setIsOpen(true);\r\n setSelectedIndex(0);\r\n }}\r\n onFocus={() => setIsOpen(true)}\r\n onKeyDown={handleKeyDown}\r\n placeholder={placeholder}\r\n className=\"w-full rounded-lg border bg-background py-2 pl-10 pr-10 text-sm outline-none focus:border-primary focus:ring-2 focus:ring-primary/20\"\r\n />\r\n {query && (\r\n <button\r\n onClick={() => {\r\n setQuery(\"\");\r\n inputRef.current?.focus();\r\n }}\r\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground\"\r\n >\r\n <X className=\"h-4 w-4\" />\r\n </button>\r\n )}\r\n </div>\r\n\r\n {isOpen && results.length > 0 && (\r\n <div className=\"absolute top-full left-0 right-0 mt-2 rounded-lg border bg-background shadow-lg z-50\">\r\n {results.map((result, index) => (\r\n <button\r\n key={result.id}\r\n onClick={() => {\r\n onSelect?.(result);\r\n setIsOpen(false);\r\n }}\r\n className={`w-full px-4 py-3 text-left hover:bg-accent ${\r\n index === selectedIndex ? \"bg-accent\" : \"\"\r\n }`}\r\n >\r\n <div className=\"font-medium\">{result.title}</div>\r\n {result.description && (\r\n <div className=\"text-sm text-muted-foreground\">{result.description}</div>\r\n )}\r\n </button>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default ElasticSearch;\r\n"]}
@@ -0,0 +1,17 @@
1
+ import {forwardRef,createElement,useState,useRef,useEffect}from'react';import {jsxs,jsx}from'react/jsx-runtime';var k=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),F=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,u,d)=>d?d.toUpperCase():u.toLowerCase()),C=e=>{let a=F(e);return a.charAt(0).toUpperCase()+a.slice(1)},I=(...e)=>e.filter((a,u,d)=>!!a&&a.trim()!==""&&d.indexOf(a)===u).join(" ").trim(),w=e=>{for(let a in e)if(a.startsWith("aria-")||a==="role"||a==="title")return true};var P={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var B=forwardRef(({color:e="currentColor",size:a=24,strokeWidth:u=2,absoluteStrokeWidth:d,className:r="",children:o,iconNode:L,...m},l)=>createElement("svg",{ref:l,...P,width:a,height:a,stroke:e,strokeWidth:d?Number(u)*24/Number(a):u,className:I("lucide",r),...!o&&!w(m)&&{"aria-hidden":"true"},...m},[...L.map(([s,i])=>createElement(s,i)),...Array.isArray(o)?o:[o]]));var x=(e,a)=>{let u=forwardRef(({className:d,...r},o)=>createElement(B,{ref:o,iconNode:a,className:I(`lucide-${k(C(e))}`,`lucide-${e}`,d),...r}));return u.displayName=C(e),u};var q=[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]],n=x("search",q);var y=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],p=x("x",y);function O({placeholder:e="Search...",results:a=[],onSearch:u,onSelect:d,className:r=""}){let[o,L]=useState(""),[m,l]=useState(false),[s,i]=useState(0),g=useRef(null);useEffect(()=>{o&&u&&u(o);},[o,u]);let D=t=>{t.key==="ArrowDown"?(t.preventDefault(),i(c=>Math.min(c+1,a.length-1))):t.key==="ArrowUp"?(t.preventDefault(),i(c=>Math.max(c-1,0))):t.key==="Enter"&&a[s]?(t.preventDefault(),d?.(a[s]),l(false)):t.key==="Escape"&&l(false);};return jsxs("div",{className:`relative w-full max-w-lg ${r}`,children:[jsxs("div",{className:"relative",children:[jsx(n,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),jsx("input",{ref:g,type:"text",value:o,onChange:t=>{L(t.target.value),l(true),i(0);},onFocus:()=>l(true),onKeyDown:D,placeholder:e,className:"w-full rounded-lg border bg-background py-2 pl-10 pr-10 text-sm outline-none focus:border-primary focus:ring-2 focus:ring-primary/20"}),o&&jsx("button",{onClick:()=>{L(""),g.current?.focus();},className:"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground",children:jsx(p,{className:"h-4 w-4"})})]}),m&&a.length>0&&jsx("div",{className:"absolute top-full left-0 right-0 mt-2 rounded-lg border bg-background shadow-lg z-50",children:a.map((t,c)=>jsxs("button",{onClick:()=>{d?.(t),l(false);},className:`w-full px-4 py-3 text-left hover:bg-accent ${c===s?"bg-accent":""}`,children:[jsx("div",{className:"font-medium",children:t.title}),t.description&&jsx("div",{className:"text-sm text-muted-foreground",children:t.description})]},t.id))})]})}var ua=O;/*! Bundled license information:
2
+
3
+ lucide-react/dist/esm/shared/src/utils.js:
4
+ lucide-react/dist/esm/defaultAttributes.js:
5
+ lucide-react/dist/esm/Icon.js:
6
+ lucide-react/dist/esm/createLucideIcon.js:
7
+ lucide-react/dist/esm/icons/search.js:
8
+ lucide-react/dist/esm/icons/x.js:
9
+ lucide-react/dist/esm/lucide-react.js:
10
+ (**
11
+ * @license lucide-react v0.545.0 - ISC
12
+ *
13
+ * This source code is licensed under the ISC license.
14
+ * See the LICENSE file in the root directory of this source tree.
15
+ *)
16
+ */export{O as ElasticSearch,ua as default};//# sourceMappingURL=index.mjs.map
17
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../node_modules/shared/src/utils.ts","../../../../node_modules/lucide-react/src/defaultAttributes.ts","../../../../node_modules/lucide-react/src/Icon.ts","../../../../node_modules/lucide-react/src/createLucideIcon.ts","../../../../node_modules/lucide-react/src/icons/search.ts","../../../../node_modules/lucide-react/src/icons/x.ts","../../src/elastic-search/index.tsx"],"names":["toKebabCase","string","toCamelCase","match","p1","p2","toPascalCase","camelCase","mergeClasses","classes","className","index","array","hasA11yProp","props","prop","defaultAttributes","Icon","forwardRef","color","size","strokeWidth","absoluteStrokeWidth","children","iconNode","rest","ref","createElement","tag","attrs","createLucideIcon","iconName","Component","__iconNode","Search","X","ElasticSearch","placeholder","results","onSearch","onSelect","query","setQuery","useState","isOpen","setIsOpen","selectedIndex","setSelectedIndex","inputRef","useRef","useEffect","handleKeyDown","e","prev","jsxs","jsx","result","elastic_search_default"],"mappings":"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","file":"index.mjs","sourcesContent":["import { CamelToPascal } from './utility-types';\n\n/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n\n/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = <T extends string>(string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = <T extends string>(string: T): CamelToPascal<T> => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal<T>;\n};\n\n/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = <ClassType = string | undefined | null>(...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n\n/**\n * Is empty string\n *\n * @param {unknown} value\n * @returns {boolean} Whether the value is an empty string\n */\nexport const isEmptyString = (value: unknown): boolean => value === '';\n\n/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: Record<string, any>) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n};\n","export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n","import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, hasA11yProp } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef<SVGSVGElement, IconComponentProps>(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) =>\n createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('lucide', className),\n ...(!children && !hasA11yProp(rest) && { 'aria-hidden': 'true' }),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n ),\n);\n\nexport default Icon;\n","import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef<SVGSVGElement, LucideProps>(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createLucideIcon;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'm21 21-4.34-4.34', key: '14j7rj' }],\n ['circle', { cx: '11', cy: '11', r: '8', key: '4ej97u' }],\n];\n\n/**\n * @component @name Search\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMjEgMjEtNC4zNC00LjM0IiAvPgogIDxjaXJjbGUgY3g9IjExIiBjeT0iMTEiIHI9IjgiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/search\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Search = createLucideIcon('search', __iconNode);\n\nexport default Search;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M18 6 6 18', key: '1bl5f8' }],\n ['path', { d: 'm6 6 12 12', key: 'd8bk6v' }],\n];\n\n/**\n * @component @name X\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTggNiA2IDE4IiAvPgogIDxwYXRoIGQ9Im02IDYgMTIgMTIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/x\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst X = createLucideIcon('x', __iconNode);\n\nexport default X;\n","\"use client\";\r\n\r\nimport { useState, useRef, useEffect } from \"react\";\r\nimport { Search, X, Command } from \"lucide-react\";\r\n\r\ninterface SearchResult {\r\n id: string;\r\n title: string;\r\n description?: string;\r\n category?: string;\r\n}\r\n\r\ninterface ElasticSearchProps {\r\n placeholder?: string;\r\n results?: SearchResult[];\r\n onSearch?: (query: string) => void;\r\n onSelect?: (result: SearchResult) => void;\r\n className?: string;\r\n}\r\n\r\nexport function ElasticSearch({\r\n placeholder = \"Search...\",\r\n results = [],\r\n onSearch,\r\n onSelect,\r\n className = \"\",\r\n}: ElasticSearchProps) {\r\n const [query, setQuery] = useState(\"\");\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [selectedIndex, setSelectedIndex] = useState(0);\r\n const inputRef = useRef<HTMLInputElement>(null);\r\n\r\n useEffect(() => {\r\n if (query && onSearch) {\r\n onSearch(query);\r\n }\r\n }, [query, onSearch]);\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent) => {\r\n if (e.key === \"ArrowDown\") {\r\n e.preventDefault();\r\n setSelectedIndex((prev) => Math.min(prev + 1, results.length - 1));\r\n } else if (e.key === \"ArrowUp\") {\r\n e.preventDefault();\r\n setSelectedIndex((prev) => Math.max(prev - 1, 0));\r\n } else if (e.key === \"Enter\" && results[selectedIndex]) {\r\n e.preventDefault();\r\n onSelect?.(results[selectedIndex]);\r\n setIsOpen(false);\r\n } else if (e.key === \"Escape\") {\r\n setIsOpen(false);\r\n }\r\n };\r\n\r\n return (\r\n <div className={`relative w-full max-w-lg ${className}`}>\r\n <div className=\"relative\">\r\n <Search className=\"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground\" />\r\n <input\r\n ref={inputRef}\r\n type=\"text\"\r\n value={query}\r\n onChange={(e) => {\r\n setQuery(e.target.value);\r\n setIsOpen(true);\r\n setSelectedIndex(0);\r\n }}\r\n onFocus={() => setIsOpen(true)}\r\n onKeyDown={handleKeyDown}\r\n placeholder={placeholder}\r\n className=\"w-full rounded-lg border bg-background py-2 pl-10 pr-10 text-sm outline-none focus:border-primary focus:ring-2 focus:ring-primary/20\"\r\n />\r\n {query && (\r\n <button\r\n onClick={() => {\r\n setQuery(\"\");\r\n inputRef.current?.focus();\r\n }}\r\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground\"\r\n >\r\n <X className=\"h-4 w-4\" />\r\n </button>\r\n )}\r\n </div>\r\n\r\n {isOpen && results.length > 0 && (\r\n <div className=\"absolute top-full left-0 right-0 mt-2 rounded-lg border bg-background shadow-lg z-50\">\r\n {results.map((result, index) => (\r\n <button\r\n key={result.id}\r\n onClick={() => {\r\n onSelect?.(result);\r\n setIsOpen(false);\r\n }}\r\n className={`w-full px-4 py-3 text-left hover:bg-accent ${\r\n index === selectedIndex ? \"bg-accent\" : \"\"\r\n }`}\r\n >\r\n <div className=\"font-medium\">{result.title}</div>\r\n {result.description && (\r\n <div className=\"text-sm text-muted-foreground\">{result.description}</div>\r\n )}\r\n </button>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default ElasticSearch;\r\n"]}
@@ -0,0 +1,16 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),jsxRuntime=require('react/jsx-runtime');var L=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),w=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,t,u)=>u?u.toUpperCase():t.toLowerCase()),p=e=>{let a=w(e);return a.charAt(0).toUpperCase()+a.slice(1)},i=(...e)=>e.filter((a,t,u)=>!!a&&a.trim()!==""&&u.indexOf(a)===t).join(" ").trim(),m=e=>{for(let a in e)if(a.startsWith("aria-")||a==="role"||a==="title")return true};var I={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var C=react.forwardRef(({color:e="currentColor",size:a=24,strokeWidth:t=2,absoluteStrokeWidth:u,className:f="",children:d,iconNode:n,...l},r)=>react.createElement("svg",{ref:r,...I,width:a,height:a,stroke:e,strokeWidth:u?Number(t)*24/Number(a):t,className:i("lucide",f),...!d&&!m(l)&&{"aria-hidden":"true"},...l},[...n.map(([h,g])=>react.createElement(h,g)),...Array.isArray(d)?d:[d]]));var S=(e,a)=>{let t=react.forwardRef(({className:u,...f},d)=>react.createElement(C,{ref:d,iconNode:a,className:i(`lucide-${L(p(e))}`,`lucide-${e}`,u),...f}));return t.displayName=p(e),t};var B=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],s=S("chevron-down",B);function F({title:e="Frequently Asked Questions",description:a="Find answers to common questions about our product and services",faqs:t=[{question:"What is Bynana UI?",answer:"Bynana UI is a modern UI component library that provides beautiful, animated components for building stunning user interfaces."},{question:"How do I get started?",answer:"Getting started is easy! Simply install the package via npm or yarn, import the components you need, and start building."},{question:"Is it free to use?",answer:"Yes! Bynana UI is completely free. You can use it in both personal and commercial projects without any restrictions."}],className:u=""}){let[f,d]=react.useState(0),n=l=>{d(f===l?null:l);};return jsxRuntime.jsx("section",{className:`py-20 ${u}`,children:jsxRuntime.jsxs("div",{className:"mx-auto max-w-4xl px-6",children:[jsxRuntime.jsxs("div",{className:"text-center mb-16",children:[jsxRuntime.jsx("h2",{className:"mb-4 text-3xl font-bold lg:text-4xl",children:e}),jsxRuntime.jsx("p",{className:"text-muted-foreground text-lg max-w-2xl mx-auto",children:a})]}),jsxRuntime.jsx("div",{className:"space-y-4",children:t.map((l,r)=>jsxRuntime.jsxs("div",{className:"overflow-hidden rounded-2xl border transition-all hover:border-primary/50",children:[jsxRuntime.jsxs("button",{onClick:()=>n(r),className:"flex w-full items-center justify-between p-6 text-left hover:bg-accent/50",children:[jsxRuntime.jsx("h3",{className:"text-lg font-semibold pr-4",children:l.question}),jsxRuntime.jsx(s,{className:`h-5 w-5 text-muted-foreground transition-transform duration-300 ${f===r?"rotate-180":""}`})]}),jsxRuntime.jsx("div",{className:`overflow-hidden transition-all duration-300 ${f===r?"max-h-96":"max-h-0"}`,children:jsxRuntime.jsx("div",{className:"px-6 pb-6",children:jsxRuntime.jsx("p",{className:"text-muted-foreground leading-relaxed",children:l.answer})})})]},r))})]})})}var N=F;/*! Bundled license information:
2
+
3
+ lucide-react/dist/esm/shared/src/utils.js:
4
+ lucide-react/dist/esm/defaultAttributes.js:
5
+ lucide-react/dist/esm/Icon.js:
6
+ lucide-react/dist/esm/createLucideIcon.js:
7
+ lucide-react/dist/esm/icons/chevron-down.js:
8
+ lucide-react/dist/esm/lucide-react.js:
9
+ (**
10
+ * @license lucide-react v0.545.0 - ISC
11
+ *
12
+ * This source code is licensed under the ISC license.
13
+ * See the LICENSE file in the root directory of this source tree.
14
+ *)
15
+ */exports.FaqsAccordion=F;exports.default=N;//# sourceMappingURL=index.js.map
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../node_modules/shared/src/utils.ts","../../../../node_modules/lucide-react/src/defaultAttributes.ts","../../../../node_modules/lucide-react/src/Icon.ts","../../../../node_modules/lucide-react/src/createLucideIcon.ts","../../../../node_modules/lucide-react/src/icons/chevron-down.ts","../../src/faqs-accordion/index.tsx"],"names":["toKebabCase","string","toCamelCase","match","p1","p2","toPascalCase","camelCase","mergeClasses","classes","className","index","array","hasA11yProp","props","prop","defaultAttributes","Icon","forwardRef","color","size","strokeWidth","absoluteStrokeWidth","children","iconNode","rest","ref","createElement","tag","attrs","createLucideIcon","iconName","Component","__iconNode","ChevronDown","FaqsAccordion","title","description","faqs","openIndex","setOpenIndex","useState","toggleAccordion","jsx","jsxs","faq","faqs_accordion_default"],"mappings":"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","file":"index.js","sourcesContent":["import { CamelToPascal } from './utility-types';\n\n/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n\n/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = <T extends string>(string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = <T extends string>(string: T): CamelToPascal<T> => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal<T>;\n};\n\n/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = <ClassType = string | undefined | null>(...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n\n/**\n * Is empty string\n *\n * @param {unknown} value\n * @returns {boolean} Whether the value is an empty string\n */\nexport const isEmptyString = (value: unknown): boolean => value === '';\n\n/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: Record<string, any>) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n};\n","export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n","import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, hasA11yProp } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef<SVGSVGElement, IconComponentProps>(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) =>\n createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('lucide', className),\n ...(!children && !hasA11yProp(rest) && { 'aria-hidden': 'true' }),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n ),\n);\n\nexport default Icon;\n","import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef<SVGSVGElement, LucideProps>(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createLucideIcon;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm6 9 6 6 6-6', key: 'qrunsl' }]];\n\n/**\n * @component @name ChevronDown\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtNiA5IDYgNiA2LTYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/chevron-down\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronDown = createLucideIcon('chevron-down', __iconNode);\n\nexport default ChevronDown;\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { ChevronDown } from \"lucide-react\";\r\n\r\ninterface FAQ {\r\n question: string;\r\n answer: string;\r\n}\r\n\r\ninterface FaqsAccordionProps {\r\n title?: string;\r\n description?: string;\r\n faqs?: FAQ[];\r\n className?: string;\r\n}\r\n\r\nexport function FaqsAccordion({\r\n title = \"Frequently Asked Questions\",\r\n description = \"Find answers to common questions about our product and services\",\r\n faqs = [\r\n {\r\n question: \"What is Bynana UI?\",\r\n answer:\r\n \"Bynana UI is a modern UI component library that provides beautiful, animated components for building stunning user interfaces.\",\r\n },\r\n {\r\n question: \"How do I get started?\",\r\n answer:\r\n \"Getting started is easy! Simply install the package via npm or yarn, import the components you need, and start building.\",\r\n },\r\n {\r\n question: \"Is it free to use?\",\r\n answer:\r\n \"Yes! Bynana UI is completely free. You can use it in both personal and commercial projects without any restrictions.\",\r\n },\r\n ],\r\n className = \"\",\r\n}: FaqsAccordionProps) {\r\n const [openIndex, setOpenIndex] = useState<number | null>(0);\r\n\r\n const toggleAccordion = (index: number) => {\r\n setOpenIndex(openIndex === index ? null : index);\r\n };\r\n\r\n return (\r\n <section className={`py-20 ${className}`}>\r\n <div className=\"mx-auto max-w-4xl px-6\">\r\n <div className=\"text-center mb-16\">\r\n <h2 className=\"mb-4 text-3xl font-bold lg:text-4xl\">{title}</h2>\r\n <p className=\"text-muted-foreground text-lg max-w-2xl mx-auto\">{description}</p>\r\n </div>\r\n\r\n <div className=\"space-y-4\">\r\n {faqs.map((faq, index) => (\r\n <div\r\n key={index}\r\n className=\"overflow-hidden rounded-2xl border transition-all hover:border-primary/50\"\r\n >\r\n <button\r\n onClick={() => toggleAccordion(index)}\r\n className=\"flex w-full items-center justify-between p-6 text-left hover:bg-accent/50\"\r\n >\r\n <h3 className=\"text-lg font-semibold pr-4\">{faq.question}</h3>\r\n <ChevronDown\r\n className={`h-5 w-5 text-muted-foreground transition-transform duration-300 ${\r\n openIndex === index ? \"rotate-180\" : \"\"\r\n }`}\r\n />\r\n </button>\r\n\r\n <div\r\n className={`overflow-hidden transition-all duration-300 ${\r\n openIndex === index ? \"max-h-96\" : \"max-h-0\"\r\n }`}\r\n >\r\n <div className=\"px-6 pb-6\">\r\n <p className=\"text-muted-foreground leading-relaxed\">{faq.answer}</p>\r\n </div>\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </section>\r\n );\r\n}\r\n\r\nexport default FaqsAccordion;\r\n"]}
@@ -0,0 +1,16 @@
1
+ import {forwardRef,createElement,useState}from'react';import {jsx,jsxs}from'react/jsx-runtime';var L=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),w=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,t,u)=>u?u.toUpperCase():t.toLowerCase()),p=e=>{let a=w(e);return a.charAt(0).toUpperCase()+a.slice(1)},i=(...e)=>e.filter((a,t,u)=>!!a&&a.trim()!==""&&u.indexOf(a)===t).join(" ").trim(),m=e=>{for(let a in e)if(a.startsWith("aria-")||a==="role"||a==="title")return true};var I={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var C=forwardRef(({color:e="currentColor",size:a=24,strokeWidth:t=2,absoluteStrokeWidth:u,className:f="",children:d,iconNode:n,...l},r)=>createElement("svg",{ref:r,...I,width:a,height:a,stroke:e,strokeWidth:u?Number(t)*24/Number(a):t,className:i("lucide",f),...!d&&!m(l)&&{"aria-hidden":"true"},...l},[...n.map(([h,g])=>createElement(h,g)),...Array.isArray(d)?d:[d]]));var S=(e,a)=>{let t=forwardRef(({className:u,...f},d)=>createElement(C,{ref:d,iconNode:a,className:i(`lucide-${L(p(e))}`,`lucide-${e}`,u),...f}));return t.displayName=p(e),t};var B=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],s=S("chevron-down",B);function F({title:e="Frequently Asked Questions",description:a="Find answers to common questions about our product and services",faqs:t=[{question:"What is Bynana UI?",answer:"Bynana UI is a modern UI component library that provides beautiful, animated components for building stunning user interfaces."},{question:"How do I get started?",answer:"Getting started is easy! Simply install the package via npm or yarn, import the components you need, and start building."},{question:"Is it free to use?",answer:"Yes! Bynana UI is completely free. You can use it in both personal and commercial projects without any restrictions."}],className:u=""}){let[f,d]=useState(0),n=l=>{d(f===l?null:l);};return jsx("section",{className:`py-20 ${u}`,children:jsxs("div",{className:"mx-auto max-w-4xl px-6",children:[jsxs("div",{className:"text-center mb-16",children:[jsx("h2",{className:"mb-4 text-3xl font-bold lg:text-4xl",children:e}),jsx("p",{className:"text-muted-foreground text-lg max-w-2xl mx-auto",children:a})]}),jsx("div",{className:"space-y-4",children:t.map((l,r)=>jsxs("div",{className:"overflow-hidden rounded-2xl border transition-all hover:border-primary/50",children:[jsxs("button",{onClick:()=>n(r),className:"flex w-full items-center justify-between p-6 text-left hover:bg-accent/50",children:[jsx("h3",{className:"text-lg font-semibold pr-4",children:l.question}),jsx(s,{className:`h-5 w-5 text-muted-foreground transition-transform duration-300 ${f===r?"rotate-180":""}`})]}),jsx("div",{className:`overflow-hidden transition-all duration-300 ${f===r?"max-h-96":"max-h-0"}`,children:jsx("div",{className:"px-6 pb-6",children:jsx("p",{className:"text-muted-foreground leading-relaxed",children:l.answer})})})]},r))})]})})}var N=F;/*! Bundled license information:
2
+
3
+ lucide-react/dist/esm/shared/src/utils.js:
4
+ lucide-react/dist/esm/defaultAttributes.js:
5
+ lucide-react/dist/esm/Icon.js:
6
+ lucide-react/dist/esm/createLucideIcon.js:
7
+ lucide-react/dist/esm/icons/chevron-down.js:
8
+ lucide-react/dist/esm/lucide-react.js:
9
+ (**
10
+ * @license lucide-react v0.545.0 - ISC
11
+ *
12
+ * This source code is licensed under the ISC license.
13
+ * See the LICENSE file in the root directory of this source tree.
14
+ *)
15
+ */export{F as FaqsAccordion,N as default};//# sourceMappingURL=index.mjs.map
16
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../node_modules/shared/src/utils.ts","../../../../node_modules/lucide-react/src/defaultAttributes.ts","../../../../node_modules/lucide-react/src/Icon.ts","../../../../node_modules/lucide-react/src/createLucideIcon.ts","../../../../node_modules/lucide-react/src/icons/chevron-down.ts","../../src/faqs-accordion/index.tsx"],"names":["toKebabCase","string","toCamelCase","match","p1","p2","toPascalCase","camelCase","mergeClasses","classes","className","index","array","hasA11yProp","props","prop","defaultAttributes","Icon","forwardRef","color","size","strokeWidth","absoluteStrokeWidth","children","iconNode","rest","ref","createElement","tag","attrs","createLucideIcon","iconName","Component","__iconNode","ChevronDown","FaqsAccordion","title","description","faqs","openIndex","setOpenIndex","useState","toggleAccordion","jsx","jsxs","faq","faqs_accordion_default"],"mappings":"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","file":"index.mjs","sourcesContent":["import { CamelToPascal } from './utility-types';\n\n/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n\n/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = <T extends string>(string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = <T extends string>(string: T): CamelToPascal<T> => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal<T>;\n};\n\n/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = <ClassType = string | undefined | null>(...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n\n/**\n * Is empty string\n *\n * @param {unknown} value\n * @returns {boolean} Whether the value is an empty string\n */\nexport const isEmptyString = (value: unknown): boolean => value === '';\n\n/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: Record<string, any>) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n};\n","export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n","import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, hasA11yProp } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef<SVGSVGElement, IconComponentProps>(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) =>\n createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('lucide', className),\n ...(!children && !hasA11yProp(rest) && { 'aria-hidden': 'true' }),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n ),\n);\n\nexport default Icon;\n","import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef<SVGSVGElement, LucideProps>(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createLucideIcon;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm6 9 6 6 6-6', key: 'qrunsl' }]];\n\n/**\n * @component @name ChevronDown\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtNiA5IDYgNiA2LTYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/chevron-down\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronDown = createLucideIcon('chevron-down', __iconNode);\n\nexport default ChevronDown;\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { ChevronDown } from \"lucide-react\";\r\n\r\ninterface FAQ {\r\n question: string;\r\n answer: string;\r\n}\r\n\r\ninterface FaqsAccordionProps {\r\n title?: string;\r\n description?: string;\r\n faqs?: FAQ[];\r\n className?: string;\r\n}\r\n\r\nexport function FaqsAccordion({\r\n title = \"Frequently Asked Questions\",\r\n description = \"Find answers to common questions about our product and services\",\r\n faqs = [\r\n {\r\n question: \"What is Bynana UI?\",\r\n answer:\r\n \"Bynana UI is a modern UI component library that provides beautiful, animated components for building stunning user interfaces.\",\r\n },\r\n {\r\n question: \"How do I get started?\",\r\n answer:\r\n \"Getting started is easy! Simply install the package via npm or yarn, import the components you need, and start building.\",\r\n },\r\n {\r\n question: \"Is it free to use?\",\r\n answer:\r\n \"Yes! Bynana UI is completely free. You can use it in both personal and commercial projects without any restrictions.\",\r\n },\r\n ],\r\n className = \"\",\r\n}: FaqsAccordionProps) {\r\n const [openIndex, setOpenIndex] = useState<number | null>(0);\r\n\r\n const toggleAccordion = (index: number) => {\r\n setOpenIndex(openIndex === index ? null : index);\r\n };\r\n\r\n return (\r\n <section className={`py-20 ${className}`}>\r\n <div className=\"mx-auto max-w-4xl px-6\">\r\n <div className=\"text-center mb-16\">\r\n <h2 className=\"mb-4 text-3xl font-bold lg:text-4xl\">{title}</h2>\r\n <p className=\"text-muted-foreground text-lg max-w-2xl mx-auto\">{description}</p>\r\n </div>\r\n\r\n <div className=\"space-y-4\">\r\n {faqs.map((faq, index) => (\r\n <div\r\n key={index}\r\n className=\"overflow-hidden rounded-2xl border transition-all hover:border-primary/50\"\r\n >\r\n <button\r\n onClick={() => toggleAccordion(index)}\r\n className=\"flex w-full items-center justify-between p-6 text-left hover:bg-accent/50\"\r\n >\r\n <h3 className=\"text-lg font-semibold pr-4\">{faq.question}</h3>\r\n <ChevronDown\r\n className={`h-5 w-5 text-muted-foreground transition-transform duration-300 ${\r\n openIndex === index ? \"rotate-180\" : \"\"\r\n }`}\r\n />\r\n </button>\r\n\r\n <div\r\n className={`overflow-hidden transition-all duration-300 ${\r\n openIndex === index ? \"max-h-96\" : \"max-h-0\"\r\n }`}\r\n >\r\n <div className=\"px-6 pb-6\">\r\n <p className=\"text-muted-foreground leading-relaxed\">{faq.answer}</p>\r\n </div>\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </section>\r\n );\r\n}\r\n\r\nexport default FaqsAccordion;\r\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),jsxRuntime=require('react/jsx-runtime');function c({title:i="FAQs",description:r="Discover quick and comprehensive answers to common questions.",categories:o=[{name:"General",id:"general",faqs:[{question:"How do I install?",answer:"You can install using npm or yarn. Run `npm install bynana-ui` in your project."},{question:"What are the requirements?",answer:"Works with React 16.8+ and supports all modern browsers."},{question:"Is it free to use?",answer:"Yes! Completely free for personal and commercial projects."}]},{name:"Components",id:"components",faqs:[{question:"How many components?",answer:"Over 150+ pre-built components including buttons, forms, navigation, and more."},{question:"Can I customize styling?",answer:"Absolutely! All components are fully customizable using CSS variables or Tailwind."},{question:"Are they accessible?",answer:"Yes, all components follow WCAG guidelines with proper ARIA attributes."}]}],className:l=""}){let[n,m]=react.useState(0);return jsxRuntime.jsx("section",{className:`py-16 md:py-24 ${l}`,children:jsxRuntime.jsxs("div",{className:"mx-auto max-w-5xl px-6",children:[jsxRuntime.jsxs("div",{className:"max-w-lg",children:[jsxRuntime.jsx("h2",{className:"text-4xl font-semibold",children:i}),jsxRuntime.jsx("p",{className:"text-muted-foreground mt-4 text-lg",children:r})]}),jsxRuntime.jsx("div",{className:"mt-8 md:mt-12",children:jsxRuntime.jsx("div",{className:"flex flex-wrap gap-2 border-b",children:o.map((s,t)=>jsxRuntime.jsxs("button",{onClick:()=>m(t),className:`relative rounded-t-lg px-4 py-2 text-sm font-medium transition-all ${n===t?"text-foreground":"text-muted-foreground hover:text-foreground"}`,children:[s.name,n===t&&jsxRuntime.jsx("div",{className:"absolute right-0 bottom-0 left-0 h-0.5 rounded-t-full bg-primary"})]},s.id))})}),jsxRuntime.jsx("div",{className:"mt-8",children:jsxRuntime.jsx("dl",{className:"grid gap-12 sm:grid-cols-2 lg:grid-cols-3",children:o[n].faqs.map((s,t)=>jsxRuntime.jsxs("div",{className:"space-y-3",children:[jsxRuntime.jsx("dt",{className:"font-semibold",children:s.question}),jsxRuntime.jsx("dd",{className:"text-muted-foreground",children:s.answer})]},t))})})]})})}var g=c;exports.FaqsGrid=c;exports.default=g;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/faqs-grid/index.tsx"],"names":["FaqsGrid","title","description","categories","className","activeTab","setActiveTab","useState","jsx","jsxs","category","index","faq","faqIndex","faqs_grid_default"],"mappings":"yIAuBO,SAASA,CAAAA,CAAS,CACvB,KAAA,CAAAC,CAAAA,CAAQ,MAAA,CACR,WAAA,CAAAC,CAAAA,CAAc,+DAAA,CACd,WAAAC,CAAAA,CAAa,CACX,CACE,IAAA,CAAM,SAAA,CACN,EAAA,CAAI,UACJ,IAAA,CAAM,CACJ,CACE,QAAA,CAAU,mBAAA,CACV,OAAQ,iFACV,CAAA,CACA,CACE,QAAA,CAAU,4BAAA,CACV,MAAA,CAAQ,0DACV,CAAA,CACA,CACE,QAAA,CAAU,oBAAA,CACV,MAAA,CAAQ,4DACV,CACF,CACF,CAAA,CACA,CACE,IAAA,CAAM,YAAA,CACN,EAAA,CAAI,aACJ,IAAA,CAAM,CACJ,CACE,QAAA,CAAU,sBAAA,CACV,OAAQ,gFACV,CAAA,CACA,CACE,QAAA,CAAU,0BAAA,CACV,MAAA,CAAQ,oFACV,CAAA,CACA,CACE,QAAA,CAAU,sBAAA,CACV,MAAA,CAAQ,yEACV,CACF,CACF,CACF,CAAA,CACA,SAAA,CAAAC,CAAAA,CAAY,EACd,EAAkB,CAChB,GAAM,CAACC,CAAAA,CAAWC,CAAY,CAAA,CAAIC,eAAS,CAAC,CAAA,CAE5C,OACEC,cAAAA,CAAC,SAAA,CAAA,CAAQ,SAAA,CAAW,kBAAkBJ,CAAS,CAAA,CAAA,CAC7C,QAAA,CAAAK,eAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yBACb,QAAA,CAAA,CAAAA,eAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,UAAA,CACb,QAAA,CAAA,CAAAD,eAAC,IAAA,CAAA,CAAG,SAAA,CAAU,yBAA0B,QAAA,CAAAP,CAAAA,CAAM,EAC9CO,cAAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAU,oCAAA,CAAsC,QAAA,CAAAN,CAAAA,CAAY,GACjE,CAAA,CAEAM,cAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,eAAA,CACb,QAAA,CAAAA,eAAC,KAAA,CAAA,CAAI,SAAA,CAAU,+BAAA,CACZ,QAAA,CAAAL,CAAAA,CAAW,GAAA,CAAI,CAACO,CAAAA,CAAUC,CAAAA,GACzBF,eAAAA,CAAC,QAAA,CAAA,CAEC,OAAA,CAAS,IAAMH,EAAaK,CAAK,CAAA,CACjC,SAAA,CAAW,CAAA,mEAAA,EACTN,CAAAA,GAAcM,CAAAA,CAAQ,kBAAoB,6CAC5C,CAAA,CAAA,CAEC,QAAA,CAAA,CAAAD,CAAAA,CAAS,IAAA,CACTL,CAAAA,GAAcM,GACbH,cAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,kEAAA,CAAmE,CAAA,CAAA,CAAA,CAR/EE,CAAAA,CAAS,EAUhB,CACD,CAAA,CACH,EACF,CAAA,CAEAF,cAAAA,CAAC,OAAI,SAAA,CAAU,MAAA,CACb,QAAA,CAAAA,cAAAA,CAAC,IAAA,CAAA,CAAG,SAAA,CAAU,4CACX,QAAA,CAAAL,CAAAA,CAAWE,CAAS,CAAA,CAAE,IAAA,CAAK,GAAA,CAAI,CAACO,CAAAA,CAAKC,CAAAA,GACpCJ,eAAAA,CAAC,KAAA,CAAA,CAAmB,SAAA,CAAU,WAAA,CAC5B,UAAAD,cAAAA,CAAC,IAAA,CAAA,CAAG,SAAA,CAAU,eAAA,CAAiB,QAAA,CAAAI,CAAAA,CAAI,SAAS,CAAA,CAC5CJ,cAAAA,CAAC,IAAA,CAAA,CAAG,SAAA,CAAU,uBAAA,CAAyB,QAAA,CAAAI,EAAI,MAAA,CAAO,CAAA,CAAA,CAAA,CAF1CC,CAGV,CACD,CAAA,CACH,CAAA,CACF,GACF,CAAA,CACF,CAEJ,CAEA,IAAOC,CAAAA,CAAQd","file":"index.js","sourcesContent":["\"use client\";\r\n\r\nimport { useState, ReactNode } from \"react\";\r\n\r\ninterface FAQ {\r\n question: string;\r\n answer: string;\r\n icon?: ReactNode;\r\n}\r\n\r\ninterface FaqCategory {\r\n name: string;\r\n id: string;\r\n faqs: FAQ[];\r\n}\r\n\r\ninterface FaqsGridProps {\r\n title?: string;\r\n description?: string;\r\n categories?: FaqCategory[];\r\n className?: string;\r\n}\r\n\r\nexport function FaqsGrid({\r\n title = \"FAQs\",\r\n description = \"Discover quick and comprehensive answers to common questions.\",\r\n categories = [\r\n {\r\n name: \"General\",\r\n id: \"general\",\r\n faqs: [\r\n {\r\n question: \"How do I install?\",\r\n answer: \"You can install using npm or yarn. Run `npm install bynana-ui` in your project.\",\r\n },\r\n {\r\n question: \"What are the requirements?\",\r\n answer: \"Works with React 16.8+ and supports all modern browsers.\",\r\n },\r\n {\r\n question: \"Is it free to use?\",\r\n answer: \"Yes! Completely free for personal and commercial projects.\",\r\n },\r\n ],\r\n },\r\n {\r\n name: \"Components\",\r\n id: \"components\",\r\n faqs: [\r\n {\r\n question: \"How many components?\",\r\n answer: \"Over 150+ pre-built components including buttons, forms, navigation, and more.\",\r\n },\r\n {\r\n question: \"Can I customize styling?\",\r\n answer: \"Absolutely! All components are fully customizable using CSS variables or Tailwind.\",\r\n },\r\n {\r\n question: \"Are they accessible?\",\r\n answer: \"Yes, all components follow WCAG guidelines with proper ARIA attributes.\",\r\n },\r\n ],\r\n },\r\n ],\r\n className = \"\",\r\n}: FaqsGridProps) {\r\n const [activeTab, setActiveTab] = useState(0);\r\n\r\n return (\r\n <section className={`py-16 md:py-24 ${className}`}>\r\n <div className=\"mx-auto max-w-5xl px-6\">\r\n <div className=\"max-w-lg\">\r\n <h2 className=\"text-4xl font-semibold\">{title}</h2>\r\n <p className=\"text-muted-foreground mt-4 text-lg\">{description}</p>\r\n </div>\r\n\r\n <div className=\"mt-8 md:mt-12\">\r\n <div className=\"flex flex-wrap gap-2 border-b\">\r\n {categories.map((category, index) => (\r\n <button\r\n key={category.id}\r\n onClick={() => setActiveTab(index)}\r\n className={`relative rounded-t-lg px-4 py-2 text-sm font-medium transition-all ${\r\n activeTab === index ? \"text-foreground\" : \"text-muted-foreground hover:text-foreground\"\r\n }`}\r\n >\r\n {category.name}\r\n {activeTab === index && (\r\n <div className=\"absolute right-0 bottom-0 left-0 h-0.5 rounded-t-full bg-primary\" />\r\n )}\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n\r\n <div className=\"mt-8\">\r\n <dl className=\"grid gap-12 sm:grid-cols-2 lg:grid-cols-3\">\r\n {categories[activeTab].faqs.map((faq, faqIndex) => (\r\n <div key={faqIndex} className=\"space-y-3\">\r\n <dt className=\"font-semibold\">{faq.question}</dt>\r\n <dd className=\"text-muted-foreground\">{faq.answer}</dd>\r\n </div>\r\n ))}\r\n </dl>\r\n </div>\r\n </div>\r\n </section>\r\n );\r\n}\r\n\r\nexport default FaqsGrid;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {useState}from'react';import {jsx,jsxs}from'react/jsx-runtime';function c({title:i="FAQs",description:r="Discover quick and comprehensive answers to common questions.",categories:o=[{name:"General",id:"general",faqs:[{question:"How do I install?",answer:"You can install using npm or yarn. Run `npm install bynana-ui` in your project."},{question:"What are the requirements?",answer:"Works with React 16.8+ and supports all modern browsers."},{question:"Is it free to use?",answer:"Yes! Completely free for personal and commercial projects."}]},{name:"Components",id:"components",faqs:[{question:"How many components?",answer:"Over 150+ pre-built components including buttons, forms, navigation, and more."},{question:"Can I customize styling?",answer:"Absolutely! All components are fully customizable using CSS variables or Tailwind."},{question:"Are they accessible?",answer:"Yes, all components follow WCAG guidelines with proper ARIA attributes."}]}],className:l=""}){let[n,m]=useState(0);return jsx("section",{className:`py-16 md:py-24 ${l}`,children:jsxs("div",{className:"mx-auto max-w-5xl px-6",children:[jsxs("div",{className:"max-w-lg",children:[jsx("h2",{className:"text-4xl font-semibold",children:i}),jsx("p",{className:"text-muted-foreground mt-4 text-lg",children:r})]}),jsx("div",{className:"mt-8 md:mt-12",children:jsx("div",{className:"flex flex-wrap gap-2 border-b",children:o.map((s,t)=>jsxs("button",{onClick:()=>m(t),className:`relative rounded-t-lg px-4 py-2 text-sm font-medium transition-all ${n===t?"text-foreground":"text-muted-foreground hover:text-foreground"}`,children:[s.name,n===t&&jsx("div",{className:"absolute right-0 bottom-0 left-0 h-0.5 rounded-t-full bg-primary"})]},s.id))})}),jsx("div",{className:"mt-8",children:jsx("dl",{className:"grid gap-12 sm:grid-cols-2 lg:grid-cols-3",children:o[n].faqs.map((s,t)=>jsxs("div",{className:"space-y-3",children:[jsx("dt",{className:"font-semibold",children:s.question}),jsx("dd",{className:"text-muted-foreground",children:s.answer})]},t))})})]})})}var g=c;export{c as FaqsGrid,g as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/faqs-grid/index.tsx"],"names":["FaqsGrid","title","description","categories","className","activeTab","setActiveTab","useState","jsx","jsxs","category","index","faq","faqIndex","faqs_grid_default"],"mappings":"sEAuBO,SAASA,CAAAA,CAAS,CACvB,KAAA,CAAAC,CAAAA,CAAQ,MAAA,CACR,WAAA,CAAAC,CAAAA,CAAc,+DAAA,CACd,WAAAC,CAAAA,CAAa,CACX,CACE,IAAA,CAAM,SAAA,CACN,EAAA,CAAI,UACJ,IAAA,CAAM,CACJ,CACE,QAAA,CAAU,mBAAA,CACV,OAAQ,iFACV,CAAA,CACA,CACE,QAAA,CAAU,4BAAA,CACV,MAAA,CAAQ,0DACV,CAAA,CACA,CACE,QAAA,CAAU,oBAAA,CACV,MAAA,CAAQ,4DACV,CACF,CACF,CAAA,CACA,CACE,IAAA,CAAM,YAAA,CACN,EAAA,CAAI,aACJ,IAAA,CAAM,CACJ,CACE,QAAA,CAAU,sBAAA,CACV,OAAQ,gFACV,CAAA,CACA,CACE,QAAA,CAAU,0BAAA,CACV,MAAA,CAAQ,oFACV,CAAA,CACA,CACE,QAAA,CAAU,sBAAA,CACV,MAAA,CAAQ,yEACV,CACF,CACF,CACF,CAAA,CACA,SAAA,CAAAC,CAAAA,CAAY,EACd,EAAkB,CAChB,GAAM,CAACC,CAAAA,CAAWC,CAAY,CAAA,CAAIC,SAAS,CAAC,CAAA,CAE5C,OACEC,GAAAA,CAAC,SAAA,CAAA,CAAQ,SAAA,CAAW,kBAAkBJ,CAAS,CAAA,CAAA,CAC7C,QAAA,CAAAK,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yBACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,UAAA,CACb,QAAA,CAAA,CAAAD,IAAC,IAAA,CAAA,CAAG,SAAA,CAAU,yBAA0B,QAAA,CAAAP,CAAAA,CAAM,EAC9CO,GAAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAU,oCAAA,CAAsC,QAAA,CAAAN,CAAAA,CAAY,GACjE,CAAA,CAEAM,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,eAAA,CACb,QAAA,CAAAA,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,+BAAA,CACZ,QAAA,CAAAL,CAAAA,CAAW,GAAA,CAAI,CAACO,CAAAA,CAAUC,CAAAA,GACzBF,IAAAA,CAAC,QAAA,CAAA,CAEC,OAAA,CAAS,IAAMH,EAAaK,CAAK,CAAA,CACjC,SAAA,CAAW,CAAA,mEAAA,EACTN,CAAAA,GAAcM,CAAAA,CAAQ,kBAAoB,6CAC5C,CAAA,CAAA,CAEC,QAAA,CAAA,CAAAD,CAAAA,CAAS,IAAA,CACTL,CAAAA,GAAcM,GACbH,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,kEAAA,CAAmE,CAAA,CAAA,CAAA,CAR/EE,CAAAA,CAAS,EAUhB,CACD,CAAA,CACH,EACF,CAAA,CAEAF,GAAAA,CAAC,OAAI,SAAA,CAAU,MAAA,CACb,QAAA,CAAAA,GAAAA,CAAC,IAAA,CAAA,CAAG,SAAA,CAAU,4CACX,QAAA,CAAAL,CAAAA,CAAWE,CAAS,CAAA,CAAE,IAAA,CAAK,GAAA,CAAI,CAACO,CAAAA,CAAKC,CAAAA,GACpCJ,IAAAA,CAAC,KAAA,CAAA,CAAmB,SAAA,CAAU,WAAA,CAC5B,UAAAD,GAAAA,CAAC,IAAA,CAAA,CAAG,SAAA,CAAU,eAAA,CAAiB,QAAA,CAAAI,CAAAA,CAAI,SAAS,CAAA,CAC5CJ,GAAAA,CAAC,IAAA,CAAA,CAAG,SAAA,CAAU,uBAAA,CAAyB,QAAA,CAAAI,EAAI,MAAA,CAAO,CAAA,CAAA,CAAA,CAF1CC,CAGV,CACD,CAAA,CACH,CAAA,CACF,GACF,CAAA,CACF,CAEJ,CAEA,IAAOC,CAAAA,CAAQd","file":"index.mjs","sourcesContent":["\"use client\";\r\n\r\nimport { useState, ReactNode } from \"react\";\r\n\r\ninterface FAQ {\r\n question: string;\r\n answer: string;\r\n icon?: ReactNode;\r\n}\r\n\r\ninterface FaqCategory {\r\n name: string;\r\n id: string;\r\n faqs: FAQ[];\r\n}\r\n\r\ninterface FaqsGridProps {\r\n title?: string;\r\n description?: string;\r\n categories?: FaqCategory[];\r\n className?: string;\r\n}\r\n\r\nexport function FaqsGrid({\r\n title = \"FAQs\",\r\n description = \"Discover quick and comprehensive answers to common questions.\",\r\n categories = [\r\n {\r\n name: \"General\",\r\n id: \"general\",\r\n faqs: [\r\n {\r\n question: \"How do I install?\",\r\n answer: \"You can install using npm or yarn. Run `npm install bynana-ui` in your project.\",\r\n },\r\n {\r\n question: \"What are the requirements?\",\r\n answer: \"Works with React 16.8+ and supports all modern browsers.\",\r\n },\r\n {\r\n question: \"Is it free to use?\",\r\n answer: \"Yes! Completely free for personal and commercial projects.\",\r\n },\r\n ],\r\n },\r\n {\r\n name: \"Components\",\r\n id: \"components\",\r\n faqs: [\r\n {\r\n question: \"How many components?\",\r\n answer: \"Over 150+ pre-built components including buttons, forms, navigation, and more.\",\r\n },\r\n {\r\n question: \"Can I customize styling?\",\r\n answer: \"Absolutely! All components are fully customizable using CSS variables or Tailwind.\",\r\n },\r\n {\r\n question: \"Are they accessible?\",\r\n answer: \"Yes, all components follow WCAG guidelines with proper ARIA attributes.\",\r\n },\r\n ],\r\n },\r\n ],\r\n className = \"\",\r\n}: FaqsGridProps) {\r\n const [activeTab, setActiveTab] = useState(0);\r\n\r\n return (\r\n <section className={`py-16 md:py-24 ${className}`}>\r\n <div className=\"mx-auto max-w-5xl px-6\">\r\n <div className=\"max-w-lg\">\r\n <h2 className=\"text-4xl font-semibold\">{title}</h2>\r\n <p className=\"text-muted-foreground mt-4 text-lg\">{description}</p>\r\n </div>\r\n\r\n <div className=\"mt-8 md:mt-12\">\r\n <div className=\"flex flex-wrap gap-2 border-b\">\r\n {categories.map((category, index) => (\r\n <button\r\n key={category.id}\r\n onClick={() => setActiveTab(index)}\r\n className={`relative rounded-t-lg px-4 py-2 text-sm font-medium transition-all ${\r\n activeTab === index ? \"text-foreground\" : \"text-muted-foreground hover:text-foreground\"\r\n }`}\r\n >\r\n {category.name}\r\n {activeTab === index && (\r\n <div className=\"absolute right-0 bottom-0 left-0 h-0.5 rounded-t-full bg-primary\" />\r\n )}\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n\r\n <div className=\"mt-8\">\r\n <dl className=\"grid gap-12 sm:grid-cols-2 lg:grid-cols-3\">\r\n {categories[activeTab].faqs.map((faq, faqIndex) => (\r\n <div key={faqIndex} className=\"space-y-3\">\r\n <dt className=\"font-semibold\">{faq.question}</dt>\r\n <dd className=\"text-muted-foreground\">{faq.answer}</dd>\r\n </div>\r\n ))}\r\n </dl>\r\n </div>\r\n </div>\r\n </section>\r\n );\r\n}\r\n\r\nexport default FaqsGrid;\r\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var jsxRuntime=require('react/jsx-runtime');function n({companyName:s="Bynana UI",description:m="Build beautiful UIs, effortlessly. The modern way to create stunning interfaces.",newsletter:o={title:"Stay updated",description:"Get the latest news delivered to your inbox.",placeholder:"Enter your email",buttonText:"Subscribe"},links:r={product:[{name:"Features",url:"#"},{name:"Pricing",url:"#"},{name:"Documentation",url:"#"}],company:[{name:"About Us",url:"#"},{name:"Blog",url:"#"},{name:"Careers",url:"#"}],support:[{name:"Help Center",url:"#"},{name:"Community",url:"#"},{name:"Status Page",url:"#"}],legal:[{name:"Privacy Policy",url:"#"},{name:"Terms of Service",url:"#"},{name:"Cookie Policy",url:"#"}]},copyright:l="\xA9 2024 Bynana UI. All rights reserved.",className:i=""}){return jsxRuntime.jsx("footer",{className:`border-t ${i}`,children:jsxRuntime.jsxs("div",{className:"mx-auto max-w-7xl px-6 py-16",children:[jsxRuntime.jsxs("div",{className:"grid grid-cols-1 gap-12 lg:grid-cols-12",children:[jsxRuntime.jsxs("div",{className:"lg:col-span-5",children:[jsxRuntime.jsx("h3",{className:"mb-4 text-2xl font-bold",children:s}),jsxRuntime.jsx("p",{className:"text-muted-foreground mb-8 max-w-md text-sm leading-relaxed",children:m}),jsxRuntime.jsxs("div",{className:"mb-8",children:[jsxRuntime.jsx("h4",{className:"mb-2 text-lg font-semibold",children:o.title}),jsxRuntime.jsx("p",{className:"text-muted-foreground mb-4 text-sm",children:o.description}),jsxRuntime.jsxs("div",{className:"flex gap-2",children:[jsxRuntime.jsx("input",{type:"email",placeholder:o.placeholder,className:"flex-1 rounded-lg border bg-background px-4 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-ring"}),jsxRuntime.jsx("button",{className:"bg-primary text-primary-foreground hover:bg-primary/90 rounded-lg px-6 py-2 text-sm font-medium",children:o.buttonText})]})]})]}),jsxRuntime.jsxs("div",{className:"grid grid-cols-2 gap-8 lg:col-span-7 lg:grid-cols-4",children:[r.product&&jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("h4",{className:"mb-4 text-sm font-semibold uppercase tracking-wide",children:"Product"}),jsxRuntime.jsx("ul",{className:"space-y-3",children:r.product.map(t=>jsxRuntime.jsx("li",{children:jsxRuntime.jsx("a",{href:t.url,className:"text-muted-foreground hover:text-foreground text-sm",children:t.name})},t.name))})]}),r.company&&jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("h4",{className:"mb-4 text-sm font-semibold uppercase tracking-wide",children:"Company"}),jsxRuntime.jsx("ul",{className:"space-y-3",children:r.company.map(t=>jsxRuntime.jsx("li",{children:jsxRuntime.jsx("a",{href:t.url,className:"text-muted-foreground hover:text-foreground text-sm",children:t.name})},t.name))})]}),r.support&&jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("h4",{className:"mb-4 text-sm font-semibold uppercase tracking-wide",children:"Support"}),jsxRuntime.jsx("ul",{className:"space-y-3",children:r.support.map(t=>jsxRuntime.jsx("li",{children:jsxRuntime.jsx("a",{href:t.url,className:"text-muted-foreground hover:text-foreground text-sm",children:t.name})},t.name))})]}),r.legal&&jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("h4",{className:"mb-4 text-sm font-semibold uppercase tracking-wide",children:"Legal"}),jsxRuntime.jsx("ul",{className:"space-y-3",children:r.legal.map(t=>jsxRuntime.jsx("li",{children:jsxRuntime.jsx("a",{href:t.url,className:"text-muted-foreground hover:text-foreground text-sm",children:t.name})},t.name))})]})]})]}),jsxRuntime.jsx("div",{className:"mt-12 border-t pt-8 text-center",children:jsxRuntime.jsx("p",{className:"text-muted-foreground text-sm",children:l})})]})})}var d=n;exports.FooterComplex=n;exports.default=d;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/footer-complex/index.tsx"],"names":["FooterComplex","companyName","description","newsletter","links","copyright","className","jsx","jsxs","link","footer_complex_default"],"mappings":"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","file":"index.js","sourcesContent":["\"use client\";\r\n\r\ninterface FooterLink {\r\n name: string;\r\n url: string;\r\n}\r\n\r\ninterface FooterComplexProps {\r\n companyName?: string;\r\n description?: string;\r\n newsletter?: {\r\n title: string;\r\n description: string;\r\n placeholder: string;\r\n buttonText: string;\r\n };\r\n links?: {\r\n product?: FooterLink[];\r\n company?: FooterLink[];\r\n support?: FooterLink[];\r\n legal?: FooterLink[];\r\n };\r\n copyright?: string;\r\n className?: string;\r\n}\r\n\r\nexport function FooterComplex({\r\n companyName = \"Bynana UI\",\r\n description = \"Build beautiful UIs, effortlessly. The modern way to create stunning interfaces.\",\r\n newsletter = {\r\n title: \"Stay updated\",\r\n description: \"Get the latest news delivered to your inbox.\",\r\n placeholder: \"Enter your email\",\r\n buttonText: \"Subscribe\",\r\n },\r\n links = {\r\n product: [\r\n { name: \"Features\", url: \"#\" },\r\n { name: \"Pricing\", url: \"#\" },\r\n { name: \"Documentation\", url: \"#\" },\r\n ],\r\n company: [\r\n { name: \"About Us\", url: \"#\" },\r\n { name: \"Blog\", url: \"#\" },\r\n { name: \"Careers\", url: \"#\" },\r\n ],\r\n support: [\r\n { name: \"Help Center\", url: \"#\" },\r\n { name: \"Community\", url: \"#\" },\r\n { name: \"Status Page\", url: \"#\" },\r\n ],\r\n legal: [\r\n { name: \"Privacy Policy\", url: \"#\" },\r\n { name: \"Terms of Service\", url: \"#\" },\r\n { name: \"Cookie Policy\", url: \"#\" },\r\n ],\r\n },\r\n copyright = \"© 2024 Bynana UI. All rights reserved.\",\r\n className = \"\",\r\n}: FooterComplexProps) {\r\n return (\r\n <footer className={`border-t ${className}`}>\r\n <div className=\"mx-auto max-w-7xl px-6 py-16\">\r\n <div className=\"grid grid-cols-1 gap-12 lg:grid-cols-12\">\r\n <div className=\"lg:col-span-5\">\r\n <h3 className=\"mb-4 text-2xl font-bold\">{companyName}</h3>\r\n <p className=\"text-muted-foreground mb-8 max-w-md text-sm leading-relaxed\">{description}</p>\r\n\r\n <div className=\"mb-8\">\r\n <h4 className=\"mb-2 text-lg font-semibold\">{newsletter.title}</h4>\r\n <p className=\"text-muted-foreground mb-4 text-sm\">{newsletter.description}</p>\r\n <div className=\"flex gap-2\">\r\n <input\r\n type=\"email\"\r\n placeholder={newsletter.placeholder}\r\n className=\"flex-1 rounded-lg border bg-background px-4 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-ring\"\r\n />\r\n <button className=\"bg-primary text-primary-foreground hover:bg-primary/90 rounded-lg px-6 py-2 text-sm font-medium\">\r\n {newsletter.buttonText}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div className=\"grid grid-cols-2 gap-8 lg:col-span-7 lg:grid-cols-4\">\r\n {links.product && (\r\n <div>\r\n <h4 className=\"mb-4 text-sm font-semibold uppercase tracking-wide\">Product</h4>\r\n <ul className=\"space-y-3\">\r\n {links.product.map((link) => (\r\n <li key={link.name}>\r\n <a href={link.url} className=\"text-muted-foreground hover:text-foreground text-sm\">\r\n {link.name}\r\n </a>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {links.company && (\r\n <div>\r\n <h4 className=\"mb-4 text-sm font-semibold uppercase tracking-wide\">Company</h4>\r\n <ul className=\"space-y-3\">\r\n {links.company.map((link) => (\r\n <li key={link.name}>\r\n <a href={link.url} className=\"text-muted-foreground hover:text-foreground text-sm\">\r\n {link.name}\r\n </a>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {links.support && (\r\n <div>\r\n <h4 className=\"mb-4 text-sm font-semibold uppercase tracking-wide\">Support</h4>\r\n <ul className=\"space-y-3\">\r\n {links.support.map((link) => (\r\n <li key={link.name}>\r\n <a href={link.url} className=\"text-muted-foreground hover:text-foreground text-sm\">\r\n {link.name}\r\n </a>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {links.legal && (\r\n <div>\r\n <h4 className=\"mb-4 text-sm font-semibold uppercase tracking-wide\">Legal</h4>\r\n <ul className=\"space-y-3\">\r\n {links.legal.map((link) => (\r\n <li key={link.name}>\r\n <a href={link.url} className=\"text-muted-foreground hover:text-foreground text-sm\">\r\n {link.name}\r\n </a>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n\r\n <div className=\"mt-12 border-t pt-8 text-center\">\r\n <p className=\"text-muted-foreground text-sm\">{copyright}</p>\r\n </div>\r\n </div>\r\n </footer>\r\n );\r\n}\r\n\r\nexport default FooterComplex;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {jsx,jsxs}from'react/jsx-runtime';function n({companyName:s="Bynana UI",description:m="Build beautiful UIs, effortlessly. The modern way to create stunning interfaces.",newsletter:o={title:"Stay updated",description:"Get the latest news delivered to your inbox.",placeholder:"Enter your email",buttonText:"Subscribe"},links:r={product:[{name:"Features",url:"#"},{name:"Pricing",url:"#"},{name:"Documentation",url:"#"}],company:[{name:"About Us",url:"#"},{name:"Blog",url:"#"},{name:"Careers",url:"#"}],support:[{name:"Help Center",url:"#"},{name:"Community",url:"#"},{name:"Status Page",url:"#"}],legal:[{name:"Privacy Policy",url:"#"},{name:"Terms of Service",url:"#"},{name:"Cookie Policy",url:"#"}]},copyright:l="\xA9 2024 Bynana UI. All rights reserved.",className:i=""}){return jsx("footer",{className:`border-t ${i}`,children:jsxs("div",{className:"mx-auto max-w-7xl px-6 py-16",children:[jsxs("div",{className:"grid grid-cols-1 gap-12 lg:grid-cols-12",children:[jsxs("div",{className:"lg:col-span-5",children:[jsx("h3",{className:"mb-4 text-2xl font-bold",children:s}),jsx("p",{className:"text-muted-foreground mb-8 max-w-md text-sm leading-relaxed",children:m}),jsxs("div",{className:"mb-8",children:[jsx("h4",{className:"mb-2 text-lg font-semibold",children:o.title}),jsx("p",{className:"text-muted-foreground mb-4 text-sm",children:o.description}),jsxs("div",{className:"flex gap-2",children:[jsx("input",{type:"email",placeholder:o.placeholder,className:"flex-1 rounded-lg border bg-background px-4 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-ring"}),jsx("button",{className:"bg-primary text-primary-foreground hover:bg-primary/90 rounded-lg px-6 py-2 text-sm font-medium",children:o.buttonText})]})]})]}),jsxs("div",{className:"grid grid-cols-2 gap-8 lg:col-span-7 lg:grid-cols-4",children:[r.product&&jsxs("div",{children:[jsx("h4",{className:"mb-4 text-sm font-semibold uppercase tracking-wide",children:"Product"}),jsx("ul",{className:"space-y-3",children:r.product.map(t=>jsx("li",{children:jsx("a",{href:t.url,className:"text-muted-foreground hover:text-foreground text-sm",children:t.name})},t.name))})]}),r.company&&jsxs("div",{children:[jsx("h4",{className:"mb-4 text-sm font-semibold uppercase tracking-wide",children:"Company"}),jsx("ul",{className:"space-y-3",children:r.company.map(t=>jsx("li",{children:jsx("a",{href:t.url,className:"text-muted-foreground hover:text-foreground text-sm",children:t.name})},t.name))})]}),r.support&&jsxs("div",{children:[jsx("h4",{className:"mb-4 text-sm font-semibold uppercase tracking-wide",children:"Support"}),jsx("ul",{className:"space-y-3",children:r.support.map(t=>jsx("li",{children:jsx("a",{href:t.url,className:"text-muted-foreground hover:text-foreground text-sm",children:t.name})},t.name))})]}),r.legal&&jsxs("div",{children:[jsx("h4",{className:"mb-4 text-sm font-semibold uppercase tracking-wide",children:"Legal"}),jsx("ul",{className:"space-y-3",children:r.legal.map(t=>jsx("li",{children:jsx("a",{href:t.url,className:"text-muted-foreground hover:text-foreground text-sm",children:t.name})},t.name))})]})]})]}),jsx("div",{className:"mt-12 border-t pt-8 text-center",children:jsx("p",{className:"text-muted-foreground text-sm",children:l})})]})})}var d=n;export{n as FooterComplex,d as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/footer-complex/index.tsx"],"names":["FooterComplex","companyName","description","newsletter","links","copyright","className","jsx","jsxs","link","footer_complex_default"],"mappings":"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","file":"index.mjs","sourcesContent":["\"use client\";\r\n\r\ninterface FooterLink {\r\n name: string;\r\n url: string;\r\n}\r\n\r\ninterface FooterComplexProps {\r\n companyName?: string;\r\n description?: string;\r\n newsletter?: {\r\n title: string;\r\n description: string;\r\n placeholder: string;\r\n buttonText: string;\r\n };\r\n links?: {\r\n product?: FooterLink[];\r\n company?: FooterLink[];\r\n support?: FooterLink[];\r\n legal?: FooterLink[];\r\n };\r\n copyright?: string;\r\n className?: string;\r\n}\r\n\r\nexport function FooterComplex({\r\n companyName = \"Bynana UI\",\r\n description = \"Build beautiful UIs, effortlessly. The modern way to create stunning interfaces.\",\r\n newsletter = {\r\n title: \"Stay updated\",\r\n description: \"Get the latest news delivered to your inbox.\",\r\n placeholder: \"Enter your email\",\r\n buttonText: \"Subscribe\",\r\n },\r\n links = {\r\n product: [\r\n { name: \"Features\", url: \"#\" },\r\n { name: \"Pricing\", url: \"#\" },\r\n { name: \"Documentation\", url: \"#\" },\r\n ],\r\n company: [\r\n { name: \"About Us\", url: \"#\" },\r\n { name: \"Blog\", url: \"#\" },\r\n { name: \"Careers\", url: \"#\" },\r\n ],\r\n support: [\r\n { name: \"Help Center\", url: \"#\" },\r\n { name: \"Community\", url: \"#\" },\r\n { name: \"Status Page\", url: \"#\" },\r\n ],\r\n legal: [\r\n { name: \"Privacy Policy\", url: \"#\" },\r\n { name: \"Terms of Service\", url: \"#\" },\r\n { name: \"Cookie Policy\", url: \"#\" },\r\n ],\r\n },\r\n copyright = \"© 2024 Bynana UI. All rights reserved.\",\r\n className = \"\",\r\n}: FooterComplexProps) {\r\n return (\r\n <footer className={`border-t ${className}`}>\r\n <div className=\"mx-auto max-w-7xl px-6 py-16\">\r\n <div className=\"grid grid-cols-1 gap-12 lg:grid-cols-12\">\r\n <div className=\"lg:col-span-5\">\r\n <h3 className=\"mb-4 text-2xl font-bold\">{companyName}</h3>\r\n <p className=\"text-muted-foreground mb-8 max-w-md text-sm leading-relaxed\">{description}</p>\r\n\r\n <div className=\"mb-8\">\r\n <h4 className=\"mb-2 text-lg font-semibold\">{newsletter.title}</h4>\r\n <p className=\"text-muted-foreground mb-4 text-sm\">{newsletter.description}</p>\r\n <div className=\"flex gap-2\">\r\n <input\r\n type=\"email\"\r\n placeholder={newsletter.placeholder}\r\n className=\"flex-1 rounded-lg border bg-background px-4 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-ring\"\r\n />\r\n <button className=\"bg-primary text-primary-foreground hover:bg-primary/90 rounded-lg px-6 py-2 text-sm font-medium\">\r\n {newsletter.buttonText}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div className=\"grid grid-cols-2 gap-8 lg:col-span-7 lg:grid-cols-4\">\r\n {links.product && (\r\n <div>\r\n <h4 className=\"mb-4 text-sm font-semibold uppercase tracking-wide\">Product</h4>\r\n <ul className=\"space-y-3\">\r\n {links.product.map((link) => (\r\n <li key={link.name}>\r\n <a href={link.url} className=\"text-muted-foreground hover:text-foreground text-sm\">\r\n {link.name}\r\n </a>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {links.company && (\r\n <div>\r\n <h4 className=\"mb-4 text-sm font-semibold uppercase tracking-wide\">Company</h4>\r\n <ul className=\"space-y-3\">\r\n {links.company.map((link) => (\r\n <li key={link.name}>\r\n <a href={link.url} className=\"text-muted-foreground hover:text-foreground text-sm\">\r\n {link.name}\r\n </a>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {links.support && (\r\n <div>\r\n <h4 className=\"mb-4 text-sm font-semibold uppercase tracking-wide\">Support</h4>\r\n <ul className=\"space-y-3\">\r\n {links.support.map((link) => (\r\n <li key={link.name}>\r\n <a href={link.url} className=\"text-muted-foreground hover:text-foreground text-sm\">\r\n {link.name}\r\n </a>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {links.legal && (\r\n <div>\r\n <h4 className=\"mb-4 text-sm font-semibold uppercase tracking-wide\">Legal</h4>\r\n <ul className=\"space-y-3\">\r\n {links.legal.map((link) => (\r\n <li key={link.name}>\r\n <a href={link.url} className=\"text-muted-foreground hover:text-foreground text-sm\">\r\n {link.name}\r\n </a>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n\r\n <div className=\"mt-12 border-t pt-8 text-center\">\r\n <p className=\"text-muted-foreground text-sm\">{copyright}</p>\r\n </div>\r\n </div>\r\n </footer>\r\n );\r\n}\r\n\r\nexport default FooterComplex;\r\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var jsxRuntime=require('react/jsx-runtime');function i({companyName:o="Bynana UI",description:s="Build beautiful UIs, effortlessly.",links:a={product:[{name:"Features",url:"#"},{name:"Pricing",url:"#"},{name:"Documentation",url:"#"}],company:[{name:"About",url:"#"},{name:"Blog",url:"#"},{name:"Careers",url:"#"}],support:[{name:"Help Center",url:"#"},{name:"Community",url:"#"},{name:"Status",url:"#"}]},copyright:m="\xA9 2024 Bynana UI. All rights reserved.",className:l=""}){return jsxRuntime.jsx("footer",{className:`border-t ${l}`,children:jsxRuntime.jsxs("div",{className:"mx-auto max-w-7xl px-6 py-12",children:[jsxRuntime.jsxs("div",{className:"grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-5",children:[jsxRuntime.jsxs("div",{className:"lg:col-span-2",children:[jsxRuntime.jsx("h3",{className:"mb-4 text-2xl font-bold",children:o}),jsxRuntime.jsx("p",{className:"text-muted-foreground mb-6 max-w-md text-sm",children:s})]}),jsxRuntime.jsxs("div",{className:"grid grid-cols-1 gap-8 sm:grid-cols-3 lg:col-span-3",children:[a.product&&jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("h4",{className:"mb-4 text-sm font-semibold uppercase tracking-wide",children:"Product"}),jsxRuntime.jsx("ul",{className:"space-y-3",children:a.product.map(t=>jsxRuntime.jsx("li",{children:jsxRuntime.jsx("a",{href:t.url,className:"text-muted-foreground hover:text-foreground text-sm",children:t.name})},t.name))})]}),a.company&&jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("h4",{className:"mb-4 text-sm font-semibold uppercase tracking-wide",children:"Company"}),jsxRuntime.jsx("ul",{className:"space-y-3",children:a.company.map(t=>jsxRuntime.jsx("li",{children:jsxRuntime.jsx("a",{href:t.url,className:"text-muted-foreground hover:text-foreground text-sm",children:t.name})},t.name))})]}),a.support&&jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("h4",{className:"mb-4 text-sm font-semibold uppercase tracking-wide",children:"Support"}),jsxRuntime.jsx("ul",{className:"space-y-3",children:a.support.map(t=>jsxRuntime.jsx("li",{children:jsxRuntime.jsx("a",{href:t.url,className:"text-muted-foreground hover:text-foreground text-sm",children:t.name})},t.name))})]})]})]}),jsxRuntime.jsx("div",{className:"mt-12 border-t pt-8 text-center",children:jsxRuntime.jsx("p",{className:"text-muted-foreground text-sm",children:m})})]})})}var n=i;exports.FooterSimple=i;exports.default=n;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/footer-simple/index.tsx"],"names":["FooterSimple","companyName","description","links","copyright","className","jsx","jsxs","link","footer_simple_default"],"mappings":"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","file":"index.js","sourcesContent":["\"use client\";\r\n\r\ninterface FooterLink {\r\n name: string;\r\n url: string;\r\n}\r\n\r\ninterface FooterSimpleProps {\r\n companyName?: string;\r\n description?: string;\r\n links?: {\r\n product?: FooterLink[];\r\n company?: FooterLink[];\r\n support?: FooterLink[];\r\n };\r\n social?: {\r\n twitter?: string;\r\n linkedin?: string;\r\n github?: string;\r\n discord?: string;\r\n };\r\n copyright?: string;\r\n className?: string;\r\n}\r\n\r\nexport function FooterSimple({\r\n companyName = \"Bynana UI\",\r\n description = \"Build beautiful UIs, effortlessly.\",\r\n links = {\r\n product: [\r\n { name: \"Features\", url: \"#\" },\r\n { name: \"Pricing\", url: \"#\" },\r\n { name: \"Documentation\", url: \"#\" },\r\n ],\r\n company: [\r\n { name: \"About\", url: \"#\" },\r\n { name: \"Blog\", url: \"#\" },\r\n { name: \"Careers\", url: \"#\" },\r\n ],\r\n support: [\r\n { name: \"Help Center\", url: \"#\" },\r\n { name: \"Community\", url: \"#\" },\r\n { name: \"Status\", url: \"#\" },\r\n ],\r\n },\r\n copyright = \"© 2024 Bynana UI. All rights reserved.\",\r\n className = \"\",\r\n}: FooterSimpleProps) {\r\n return (\r\n <footer className={`border-t ${className}`}>\r\n <div className=\"mx-auto max-w-7xl px-6 py-12\">\r\n <div className=\"grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-5\">\r\n <div className=\"lg:col-span-2\">\r\n <h3 className=\"mb-4 text-2xl font-bold\">{companyName}</h3>\r\n <p className=\"text-muted-foreground mb-6 max-w-md text-sm\">{description}</p>\r\n </div>\r\n\r\n <div className=\"grid grid-cols-1 gap-8 sm:grid-cols-3 lg:col-span-3\">\r\n {links.product && (\r\n <div>\r\n <h4 className=\"mb-4 text-sm font-semibold uppercase tracking-wide\">Product</h4>\r\n <ul className=\"space-y-3\">\r\n {links.product.map((link) => (\r\n <li key={link.name}>\r\n <a href={link.url} className=\"text-muted-foreground hover:text-foreground text-sm\">\r\n {link.name}\r\n </a>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {links.company && (\r\n <div>\r\n <h4 className=\"mb-4 text-sm font-semibold uppercase tracking-wide\">Company</h4>\r\n <ul className=\"space-y-3\">\r\n {links.company.map((link) => (\r\n <li key={link.name}>\r\n <a href={link.url} className=\"text-muted-foreground hover:text-foreground text-sm\">\r\n {link.name}\r\n </a>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {links.support && (\r\n <div>\r\n <h4 className=\"mb-4 text-sm font-semibold uppercase tracking-wide\">Support</h4>\r\n <ul className=\"space-y-3\">\r\n {links.support.map((link) => (\r\n <li key={link.name}>\r\n <a href={link.url} className=\"text-muted-foreground hover:text-foreground text-sm\">\r\n {link.name}\r\n </a>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n\r\n <div className=\"mt-12 border-t pt-8 text-center\">\r\n <p className=\"text-muted-foreground text-sm\">{copyright}</p>\r\n </div>\r\n </div>\r\n </footer>\r\n );\r\n}\r\n\r\nexport default FooterSimple;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {jsx,jsxs}from'react/jsx-runtime';function i({companyName:o="Bynana UI",description:s="Build beautiful UIs, effortlessly.",links:a={product:[{name:"Features",url:"#"},{name:"Pricing",url:"#"},{name:"Documentation",url:"#"}],company:[{name:"About",url:"#"},{name:"Blog",url:"#"},{name:"Careers",url:"#"}],support:[{name:"Help Center",url:"#"},{name:"Community",url:"#"},{name:"Status",url:"#"}]},copyright:m="\xA9 2024 Bynana UI. All rights reserved.",className:l=""}){return jsx("footer",{className:`border-t ${l}`,children:jsxs("div",{className:"mx-auto max-w-7xl px-6 py-12",children:[jsxs("div",{className:"grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-5",children:[jsxs("div",{className:"lg:col-span-2",children:[jsx("h3",{className:"mb-4 text-2xl font-bold",children:o}),jsx("p",{className:"text-muted-foreground mb-6 max-w-md text-sm",children:s})]}),jsxs("div",{className:"grid grid-cols-1 gap-8 sm:grid-cols-3 lg:col-span-3",children:[a.product&&jsxs("div",{children:[jsx("h4",{className:"mb-4 text-sm font-semibold uppercase tracking-wide",children:"Product"}),jsx("ul",{className:"space-y-3",children:a.product.map(t=>jsx("li",{children:jsx("a",{href:t.url,className:"text-muted-foreground hover:text-foreground text-sm",children:t.name})},t.name))})]}),a.company&&jsxs("div",{children:[jsx("h4",{className:"mb-4 text-sm font-semibold uppercase tracking-wide",children:"Company"}),jsx("ul",{className:"space-y-3",children:a.company.map(t=>jsx("li",{children:jsx("a",{href:t.url,className:"text-muted-foreground hover:text-foreground text-sm",children:t.name})},t.name))})]}),a.support&&jsxs("div",{children:[jsx("h4",{className:"mb-4 text-sm font-semibold uppercase tracking-wide",children:"Support"}),jsx("ul",{className:"space-y-3",children:a.support.map(t=>jsx("li",{children:jsx("a",{href:t.url,className:"text-muted-foreground hover:text-foreground text-sm",children:t.name})},t.name))})]})]})]}),jsx("div",{className:"mt-12 border-t pt-8 text-center",children:jsx("p",{className:"text-muted-foreground text-sm",children:m})})]})})}var n=i;export{i as FooterSimple,n as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/footer-simple/index.tsx"],"names":["FooterSimple","companyName","description","links","copyright","className","jsx","jsxs","link","footer_simple_default"],"mappings":"yCAyBO,SAASA,CAAAA,CAAa,CAC3B,WAAA,CAAAC,CAAAA,CAAc,WAAA,CACd,WAAA,CAAAC,EAAc,oCAAA,CACd,KAAA,CAAAC,CAAAA,CAAQ,CACN,OAAA,CAAS,CACP,CAAE,IAAA,CAAM,UAAA,CAAY,GAAA,CAAK,GAAI,CAAA,CAC7B,CAAE,IAAA,CAAM,SAAA,CAAW,GAAA,CAAK,GAAI,CAAA,CAC5B,CAAE,IAAA,CAAM,eAAA,CAAiB,GAAA,CAAK,GAAI,CACpC,CAAA,CACA,OAAA,CAAS,CACP,CAAE,IAAA,CAAM,OAAA,CAAS,GAAA,CAAK,GAAI,CAAA,CAC1B,CAAE,IAAA,CAAM,MAAA,CAAQ,GAAA,CAAK,GAAI,CAAA,CACzB,CAAE,IAAA,CAAM,SAAA,CAAW,GAAA,CAAK,GAAI,CAC9B,CAAA,CACA,OAAA,CAAS,CACP,CAAE,IAAA,CAAM,cAAe,GAAA,CAAK,GAAI,CAAA,CAChC,CAAE,IAAA,CAAM,WAAA,CAAa,GAAA,CAAK,GAAI,CAAA,CAC9B,CAAE,IAAA,CAAM,QAAA,CAAU,GAAA,CAAK,GAAI,CAC7B,CACF,EACA,SAAA,CAAAC,CAAAA,CAAY,2CAAA,CACZ,SAAA,CAAAC,CAAAA,CAAY,EACd,CAAA,CAAsB,CACpB,OACEC,GAAAA,CAAC,QAAA,CAAA,CAAO,SAAA,CAAW,CAAA,SAAA,EAAYD,CAAS,CAAA,CAAA,CACtC,QAAA,CAAAE,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,8BAAA,CACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,sDAAA,CACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,eAAA,CACb,QAAA,CAAA,CAAAD,GAAAA,CAAC,IAAA,CAAA,CAAG,UAAU,yBAAA,CAA2B,QAAA,CAAAL,CAAAA,CAAY,CAAA,CACrDK,GAAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAU,6CAAA,CAA+C,SAAAJ,CAAAA,CAAY,CAAA,CAAA,CAC1E,CAAA,CAEAK,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,qDAAA,CACZ,QAAA,CAAA,CAAAJ,EAAM,OAAA,EACLI,IAAAA,CAAC,KAAA,CAAA,CACC,QAAA,CAAA,CAAAD,GAAAA,CAAC,IAAA,CAAA,CAAG,SAAA,CAAU,oDAAA,CAAqD,QAAA,CAAA,SAAA,CAAO,CAAA,CAC1EA,GAAAA,CAAC,IAAA,CAAA,CAAG,SAAA,CAAU,WAAA,CACX,QAAA,CAAAH,CAAAA,CAAM,QAAQ,GAAA,CAAKK,CAAAA,EAClBF,GAAAA,CAAC,IAAA,CAAA,CACC,QAAA,CAAAA,GAAAA,CAAC,GAAA,CAAA,CAAE,IAAA,CAAME,CAAAA,CAAK,GAAA,CAAK,SAAA,CAAU,qDAAA,CAC1B,QAAA,CAAAA,CAAAA,CAAK,IAAA,CACR,CAAA,CAAA,CAHOA,EAAK,IAId,CACD,CAAA,CACH,CAAA,CAAA,CACF,CAAA,CAGDL,CAAAA,CAAM,OAAA,EACLI,IAAAA,CAAC,KAAA,CAAA,CACC,QAAA,CAAA,CAAAD,GAAAA,CAAC,IAAA,CAAA,CAAG,SAAA,CAAU,oDAAA,CAAqD,QAAA,CAAA,SAAA,CAAO,CAAA,CAC1EA,IAAC,IAAA,CAAA,CAAG,SAAA,CAAU,WAAA,CACX,QAAA,CAAAH,CAAAA,CAAM,OAAA,CAAQ,GAAA,CAAKK,CAAAA,EAClBF,IAAC,IAAA,CAAA,CACC,QAAA,CAAAA,GAAAA,CAAC,GAAA,CAAA,CAAE,IAAA,CAAME,CAAAA,CAAK,GAAA,CAAK,SAAA,CAAU,sDAC1B,QAAA,CAAAA,CAAAA,CAAK,IAAA,CACR,CAAA,CAAA,CAHOA,CAAAA,CAAK,IAId,CACD,CAAA,CACH,CAAA,CAAA,CACF,CAAA,CAGDL,CAAAA,CAAM,OAAA,EACLI,IAAAA,CAAC,KAAA,CAAA,CACC,QAAA,CAAA,CAAAD,GAAAA,CAAC,MAAG,SAAA,CAAU,oDAAA,CAAqD,QAAA,CAAA,SAAA,CAAO,CAAA,CAC1EA,GAAAA,CAAC,IAAA,CAAA,CAAG,SAAA,CAAU,WAAA,CACX,QAAA,CAAAH,CAAAA,CAAM,OAAA,CAAQ,GAAA,CAAKK,CAAAA,EAClBF,GAAAA,CAAC,IAAA,CAAA,CACC,QAAA,CAAAA,IAAC,GAAA,CAAA,CAAE,IAAA,CAAME,CAAAA,CAAK,GAAA,CAAK,SAAA,CAAU,qDAAA,CAC1B,QAAA,CAAAA,CAAAA,CAAK,IAAA,CACR,CAAA,CAAA,CAHOA,CAAAA,CAAK,IAId,CACD,CAAA,CACH,CAAA,CAAA,CACF,CAAA,CAAA,CAEJ,GACF,CAAA,CAEAF,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,iCAAA,CACb,QAAA,CAAAA,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,+BAAA,CAAiC,QAAA,CAAAF,CAAAA,CAAU,CAAA,CAC1D,CAAA,CAAA,CACF,CAAA,CACF,CAEJ,KAEOK,CAAAA,CAAQT","file":"index.mjs","sourcesContent":["\"use client\";\r\n\r\ninterface FooterLink {\r\n name: string;\r\n url: string;\r\n}\r\n\r\ninterface FooterSimpleProps {\r\n companyName?: string;\r\n description?: string;\r\n links?: {\r\n product?: FooterLink[];\r\n company?: FooterLink[];\r\n support?: FooterLink[];\r\n };\r\n social?: {\r\n twitter?: string;\r\n linkedin?: string;\r\n github?: string;\r\n discord?: string;\r\n };\r\n copyright?: string;\r\n className?: string;\r\n}\r\n\r\nexport function FooterSimple({\r\n companyName = \"Bynana UI\",\r\n description = \"Build beautiful UIs, effortlessly.\",\r\n links = {\r\n product: [\r\n { name: \"Features\", url: \"#\" },\r\n { name: \"Pricing\", url: \"#\" },\r\n { name: \"Documentation\", url: \"#\" },\r\n ],\r\n company: [\r\n { name: \"About\", url: \"#\" },\r\n { name: \"Blog\", url: \"#\" },\r\n { name: \"Careers\", url: \"#\" },\r\n ],\r\n support: [\r\n { name: \"Help Center\", url: \"#\" },\r\n { name: \"Community\", url: \"#\" },\r\n { name: \"Status\", url: \"#\" },\r\n ],\r\n },\r\n copyright = \"© 2024 Bynana UI. All rights reserved.\",\r\n className = \"\",\r\n}: FooterSimpleProps) {\r\n return (\r\n <footer className={`border-t ${className}`}>\r\n <div className=\"mx-auto max-w-7xl px-6 py-12\">\r\n <div className=\"grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-5\">\r\n <div className=\"lg:col-span-2\">\r\n <h3 className=\"mb-4 text-2xl font-bold\">{companyName}</h3>\r\n <p className=\"text-muted-foreground mb-6 max-w-md text-sm\">{description}</p>\r\n </div>\r\n\r\n <div className=\"grid grid-cols-1 gap-8 sm:grid-cols-3 lg:col-span-3\">\r\n {links.product && (\r\n <div>\r\n <h4 className=\"mb-4 text-sm font-semibold uppercase tracking-wide\">Product</h4>\r\n <ul className=\"space-y-3\">\r\n {links.product.map((link) => (\r\n <li key={link.name}>\r\n <a href={link.url} className=\"text-muted-foreground hover:text-foreground text-sm\">\r\n {link.name}\r\n </a>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {links.company && (\r\n <div>\r\n <h4 className=\"mb-4 text-sm font-semibold uppercase tracking-wide\">Company</h4>\r\n <ul className=\"space-y-3\">\r\n {links.company.map((link) => (\r\n <li key={link.name}>\r\n <a href={link.url} className=\"text-muted-foreground hover:text-foreground text-sm\">\r\n {link.name}\r\n </a>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {links.support && (\r\n <div>\r\n <h4 className=\"mb-4 text-sm font-semibold uppercase tracking-wide\">Support</h4>\r\n <ul className=\"space-y-3\">\r\n {links.support.map((link) => (\r\n <li key={link.name}>\r\n <a href={link.url} className=\"text-muted-foreground hover:text-foreground text-sm\">\r\n {link.name}\r\n </a>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n\r\n <div className=\"mt-12 border-t pt-8 text-center\">\r\n <p className=\"text-muted-foreground text-sm\">{copyright}</p>\r\n </div>\r\n </div>\r\n </footer>\r\n );\r\n}\r\n\r\nexport default FooterSimple;\r\n"]}
@@ -0,0 +1,16 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),jsxRuntime=require('react/jsx-runtime');var n=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),k=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,t,u)=>u?u.toUpperCase():t.toLowerCase()),i=e=>{let a=k(e);return a.charAt(0).toUpperCase()+a.slice(1)},s=(...e)=>e.filter((a,t,u)=>!!a&&a.trim()!==""&&u.indexOf(a)===t).join(" ").trim(),p=e=>{for(let a in e)if(a.startsWith("aria-")||a==="role"||a==="title")return true};var L={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var I=react.forwardRef(({color:e="currentColor",size:a=24,strokeWidth:t=2,absoluteStrokeWidth:u,className:d="",children:o,iconNode:C,...c},S)=>react.createElement("svg",{ref:S,...L,width:a,height:a,stroke:e,strokeWidth:u?Number(t)*24/Number(a):t,className:s("lucide",d),...!o&&!p(c)&&{"aria-hidden":"true"},...c},[...C.map(([h,g])=>react.createElement(h,g)),...Array.isArray(o)?o:[o]]));var x=(e,a)=>{let t=react.forwardRef(({className:u,...d},o)=>react.createElement(I,{ref:o,iconNode:a,className:s(`lucide-${n(i(e))}`,`lucide-${e}`,u),...d}));return t.displayName=i(e),t};var B=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],l=x("external-link",B);function D({heading:e="Build your next project with",highlightedText:a="Bynana UI",description:t="Create stunning, animated interfaces in minutes.",primaryButton:u={text:"Get Started",url:"#"},secondaryButton:d={text:"Learn more",url:"#"},className:o=""}){return jsxRuntime.jsx("section",{className:`relative overflow-hidden py-36 ${o}`,children:jsxRuntime.jsxs("div",{className:"relative z-10 flex flex-col items-center gap-6 text-center px-6",children:[jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("h1",{className:"mb-6 text-2xl font-bold tracking-tight lg:text-5xl",children:[e," ",jsxRuntime.jsx("span",{className:"text-transparent bg-gradient-to-r from-pink-400 to-purple-400 bg-clip-text",children:a})]}),jsxRuntime.jsx("p",{className:"text-muted-foreground mx-auto max-w-3xl lg:text-xl",children:t})]}),jsxRuntime.jsxs("div",{className:"mt-6 flex justify-center gap-3",children:[jsxRuntime.jsx("a",{href:u.url,className:"border border-input hover:bg-accent px-6 py-3 rounded-md font-medium",children:u.text}),jsxRuntime.jsxs("a",{href:d.url,className:"bg-primary text-primary-foreground hover:bg-primary/90 px-6 py-3 rounded-md font-medium inline-flex items-center gap-2",children:[d.text,jsxRuntime.jsx(l,{className:"w-4 h-4"})]})]})]})})}var z=D;/*! Bundled license information:
2
+
3
+ lucide-react/dist/esm/shared/src/utils.js:
4
+ lucide-react/dist/esm/defaultAttributes.js:
5
+ lucide-react/dist/esm/Icon.js:
6
+ lucide-react/dist/esm/createLucideIcon.js:
7
+ lucide-react/dist/esm/icons/external-link.js:
8
+ lucide-react/dist/esm/lucide-react.js:
9
+ (**
10
+ * @license lucide-react v0.545.0 - ISC
11
+ *
12
+ * This source code is licensed under the ISC license.
13
+ * See the LICENSE file in the root directory of this source tree.
14
+ *)
15
+ */exports.HeroGrid=D;exports.default=z;//# sourceMappingURL=index.js.map
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../node_modules/shared/src/utils.ts","../../../../node_modules/lucide-react/src/defaultAttributes.ts","../../../../node_modules/lucide-react/src/Icon.ts","../../../../node_modules/lucide-react/src/createLucideIcon.ts","../../../../node_modules/lucide-react/src/icons/external-link.ts","../../src/hero-grid/index.tsx"],"names":["toKebabCase","string","toCamelCase","match","p1","p2","toPascalCase","camelCase","mergeClasses","classes","className","index","array","hasA11yProp","props","prop","defaultAttributes","Icon","forwardRef","color","size","strokeWidth","absoluteStrokeWidth","children","iconNode","rest","ref","createElement","tag","attrs","createLucideIcon","iconName","Component","__iconNode","ExternalLink","HeroGrid","heading","highlightedText","description","primaryButton","secondaryButton","jsx","jsxs","hero_grid_default"],"mappings":"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","file":"index.js","sourcesContent":["import { CamelToPascal } from './utility-types';\n\n/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n\n/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = <T extends string>(string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = <T extends string>(string: T): CamelToPascal<T> => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal<T>;\n};\n\n/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = <ClassType = string | undefined | null>(...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n\n/**\n * Is empty string\n *\n * @param {unknown} value\n * @returns {boolean} Whether the value is an empty string\n */\nexport const isEmptyString = (value: unknown): boolean => value === '';\n\n/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: Record<string, any>) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n};\n","export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n","import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, hasA11yProp } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef<SVGSVGElement, IconComponentProps>(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) =>\n createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('lucide', className),\n ...(!children && !hasA11yProp(rest) && { 'aria-hidden': 'true' }),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n ),\n);\n\nexport default Icon;\n","import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef<SVGSVGElement, LucideProps>(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createLucideIcon;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M15 3h6v6', key: '1q9fwt' }],\n ['path', { d: 'M10 14 21 3', key: 'gplh6r' }],\n ['path', { d: 'M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6', key: 'a6xqqp' }],\n];\n\n/**\n * @component @name ExternalLink\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTUgM2g2djYiIC8+CiAgPHBhdGggZD0iTTEwIDE0IDIxIDMiIC8+CiAgPHBhdGggZD0iTTE4IDEzdjZhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJWOGEyIDIgMCAwIDEgMi0yaDYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/external-link\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ExternalLink = createLucideIcon('external-link', __iconNode);\n\nexport default ExternalLink;\n","\"use client\";\r\n\r\nimport { ExternalLink } from \"lucide-react\";\r\n\r\ninterface HeroGridProps {\r\n heading?: string;\r\n highlightedText?: string;\r\n description?: string;\r\n primaryButton?: { text: string; url: string };\r\n secondaryButton?: { text: string; url: string };\r\n className?: string;\r\n}\r\n\r\nexport function HeroGrid({\r\n heading = \"Build your next project with\",\r\n highlightedText = \"Bynana UI\",\r\n description = \"Create stunning, animated interfaces in minutes.\",\r\n primaryButton = { text: \"Get Started\", url: \"#\" },\r\n secondaryButton = { text: \"Learn more\", url: \"#\" },\r\n className = \"\",\r\n}: HeroGridProps) {\r\n return (\r\n <section className={`relative overflow-hidden py-36 ${className}`}>\r\n <div className=\"relative z-10 flex flex-col items-center gap-6 text-center px-6\">\r\n <div>\r\n <h1 className=\"mb-6 text-2xl font-bold tracking-tight lg:text-5xl\">\r\n {heading}{\" \"}\r\n <span className=\"text-transparent bg-gradient-to-r from-pink-400 to-purple-400 bg-clip-text\">\r\n {highlightedText}\r\n </span>\r\n </h1>\r\n <p className=\"text-muted-foreground mx-auto max-w-3xl lg:text-xl\">{description}</p>\r\n </div>\r\n\r\n <div className=\"mt-6 flex justify-center gap-3\">\r\n <a\r\n href={primaryButton.url}\r\n className=\"border border-input hover:bg-accent px-6 py-3 rounded-md font-medium\"\r\n >\r\n {primaryButton.text}\r\n </a>\r\n <a\r\n href={secondaryButton.url}\r\n className=\"bg-primary text-primary-foreground hover:bg-primary/90 px-6 py-3 rounded-md font-medium inline-flex items-center gap-2\"\r\n >\r\n {secondaryButton.text}\r\n <ExternalLink className=\"w-4 h-4\" />\r\n </a>\r\n </div>\r\n </div>\r\n </section>\r\n );\r\n}\r\n\r\nexport default HeroGrid;\r\n"]}
@@ -0,0 +1,16 @@
1
+ import {forwardRef,createElement}from'react';import {jsx,jsxs}from'react/jsx-runtime';var n=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),k=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,t,u)=>u?u.toUpperCase():t.toLowerCase()),i=e=>{let a=k(e);return a.charAt(0).toUpperCase()+a.slice(1)},s=(...e)=>e.filter((a,t,u)=>!!a&&a.trim()!==""&&u.indexOf(a)===t).join(" ").trim(),p=e=>{for(let a in e)if(a.startsWith("aria-")||a==="role"||a==="title")return true};var L={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var I=forwardRef(({color:e="currentColor",size:a=24,strokeWidth:t=2,absoluteStrokeWidth:u,className:d="",children:o,iconNode:C,...c},S)=>createElement("svg",{ref:S,...L,width:a,height:a,stroke:e,strokeWidth:u?Number(t)*24/Number(a):t,className:s("lucide",d),...!o&&!p(c)&&{"aria-hidden":"true"},...c},[...C.map(([h,g])=>createElement(h,g)),...Array.isArray(o)?o:[o]]));var x=(e,a)=>{let t=forwardRef(({className:u,...d},o)=>createElement(I,{ref:o,iconNode:a,className:s(`lucide-${n(i(e))}`,`lucide-${e}`,u),...d}));return t.displayName=i(e),t};var B=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],l=x("external-link",B);function D({heading:e="Build your next project with",highlightedText:a="Bynana UI",description:t="Create stunning, animated interfaces in minutes.",primaryButton:u={text:"Get Started",url:"#"},secondaryButton:d={text:"Learn more",url:"#"},className:o=""}){return jsx("section",{className:`relative overflow-hidden py-36 ${o}`,children:jsxs("div",{className:"relative z-10 flex flex-col items-center gap-6 text-center px-6",children:[jsxs("div",{children:[jsxs("h1",{className:"mb-6 text-2xl font-bold tracking-tight lg:text-5xl",children:[e," ",jsx("span",{className:"text-transparent bg-gradient-to-r from-pink-400 to-purple-400 bg-clip-text",children:a})]}),jsx("p",{className:"text-muted-foreground mx-auto max-w-3xl lg:text-xl",children:t})]}),jsxs("div",{className:"mt-6 flex justify-center gap-3",children:[jsx("a",{href:u.url,className:"border border-input hover:bg-accent px-6 py-3 rounded-md font-medium",children:u.text}),jsxs("a",{href:d.url,className:"bg-primary text-primary-foreground hover:bg-primary/90 px-6 py-3 rounded-md font-medium inline-flex items-center gap-2",children:[d.text,jsx(l,{className:"w-4 h-4"})]})]})]})})}var z=D;/*! Bundled license information:
2
+
3
+ lucide-react/dist/esm/shared/src/utils.js:
4
+ lucide-react/dist/esm/defaultAttributes.js:
5
+ lucide-react/dist/esm/Icon.js:
6
+ lucide-react/dist/esm/createLucideIcon.js:
7
+ lucide-react/dist/esm/icons/external-link.js:
8
+ lucide-react/dist/esm/lucide-react.js:
9
+ (**
10
+ * @license lucide-react v0.545.0 - ISC
11
+ *
12
+ * This source code is licensed under the ISC license.
13
+ * See the LICENSE file in the root directory of this source tree.
14
+ *)
15
+ */export{D as HeroGrid,z as default};//# sourceMappingURL=index.mjs.map
16
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../node_modules/shared/src/utils.ts","../../../../node_modules/lucide-react/src/defaultAttributes.ts","../../../../node_modules/lucide-react/src/Icon.ts","../../../../node_modules/lucide-react/src/createLucideIcon.ts","../../../../node_modules/lucide-react/src/icons/external-link.ts","../../src/hero-grid/index.tsx"],"names":["toKebabCase","string","toCamelCase","match","p1","p2","toPascalCase","camelCase","mergeClasses","classes","className","index","array","hasA11yProp","props","prop","defaultAttributes","Icon","forwardRef","color","size","strokeWidth","absoluteStrokeWidth","children","iconNode","rest","ref","createElement","tag","attrs","createLucideIcon","iconName","Component","__iconNode","ExternalLink","HeroGrid","heading","highlightedText","description","primaryButton","secondaryButton","jsx","jsxs","hero_grid_default"],"mappings":"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","file":"index.mjs","sourcesContent":["import { CamelToPascal } from './utility-types';\n\n/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n\n/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = <T extends string>(string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = <T extends string>(string: T): CamelToPascal<T> => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal<T>;\n};\n\n/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = <ClassType = string | undefined | null>(...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n\n/**\n * Is empty string\n *\n * @param {unknown} value\n * @returns {boolean} Whether the value is an empty string\n */\nexport const isEmptyString = (value: unknown): boolean => value === '';\n\n/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: Record<string, any>) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n};\n","export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n","import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, hasA11yProp } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef<SVGSVGElement, IconComponentProps>(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) =>\n createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('lucide', className),\n ...(!children && !hasA11yProp(rest) && { 'aria-hidden': 'true' }),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n ),\n);\n\nexport default Icon;\n","import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef<SVGSVGElement, LucideProps>(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createLucideIcon;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M15 3h6v6', key: '1q9fwt' }],\n ['path', { d: 'M10 14 21 3', key: 'gplh6r' }],\n ['path', { d: 'M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6', key: 'a6xqqp' }],\n];\n\n/**\n * @component @name ExternalLink\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTUgM2g2djYiIC8+CiAgPHBhdGggZD0iTTEwIDE0IDIxIDMiIC8+CiAgPHBhdGggZD0iTTE4IDEzdjZhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJWOGEyIDIgMCAwIDEgMi0yaDYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/external-link\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ExternalLink = createLucideIcon('external-link', __iconNode);\n\nexport default ExternalLink;\n","\"use client\";\r\n\r\nimport { ExternalLink } from \"lucide-react\";\r\n\r\ninterface HeroGridProps {\r\n heading?: string;\r\n highlightedText?: string;\r\n description?: string;\r\n primaryButton?: { text: string; url: string };\r\n secondaryButton?: { text: string; url: string };\r\n className?: string;\r\n}\r\n\r\nexport function HeroGrid({\r\n heading = \"Build your next project with\",\r\n highlightedText = \"Bynana UI\",\r\n description = \"Create stunning, animated interfaces in minutes.\",\r\n primaryButton = { text: \"Get Started\", url: \"#\" },\r\n secondaryButton = { text: \"Learn more\", url: \"#\" },\r\n className = \"\",\r\n}: HeroGridProps) {\r\n return (\r\n <section className={`relative overflow-hidden py-36 ${className}`}>\r\n <div className=\"relative z-10 flex flex-col items-center gap-6 text-center px-6\">\r\n <div>\r\n <h1 className=\"mb-6 text-2xl font-bold tracking-tight lg:text-5xl\">\r\n {heading}{\" \"}\r\n <span className=\"text-transparent bg-gradient-to-r from-pink-400 to-purple-400 bg-clip-text\">\r\n {highlightedText}\r\n </span>\r\n </h1>\r\n <p className=\"text-muted-foreground mx-auto max-w-3xl lg:text-xl\">{description}</p>\r\n </div>\r\n\r\n <div className=\"mt-6 flex justify-center gap-3\">\r\n <a\r\n href={primaryButton.url}\r\n className=\"border border-input hover:bg-accent px-6 py-3 rounded-md font-medium\"\r\n >\r\n {primaryButton.text}\r\n </a>\r\n <a\r\n href={secondaryButton.url}\r\n className=\"bg-primary text-primary-foreground hover:bg-primary/90 px-6 py-3 rounded-md font-medium inline-flex items-center gap-2\"\r\n >\r\n {secondaryButton.text}\r\n <ExternalLink className=\"w-4 h-4\" />\r\n </a>\r\n </div>\r\n </div>\r\n </section>\r\n );\r\n}\r\n\r\nexport default HeroGrid;\r\n"]}