bynana-ui 1.6.2 → 1.9.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.
- package/dist/action-search-bar/index.js +17 -0
- package/dist/action-search-bar/index.js.map +1 -0
- package/dist/action-search-bar/index.mjs +17 -0
- package/dist/action-search-bar/index.mjs.map +1 -0
- package/dist/ai-bar/index.js +19 -0
- package/dist/ai-bar/index.js.map +1 -0
- package/dist/ai-bar/index.mjs +19 -0
- package/dist/ai-bar/index.mjs.map +1 -0
- package/dist/ai-loading/index.js +2 -0
- package/dist/ai-loading/index.js.map +1 -0
- package/dist/ai-loading/index.mjs +2 -0
- package/dist/ai-loading/index.mjs.map +1 -0
- package/dist/ai-prompt/index.js +17 -0
- package/dist/ai-prompt/index.js.map +1 -0
- package/dist/ai-prompt/index.mjs +17 -0
- package/dist/ai-prompt/index.mjs.map +1 -0
- package/dist/ai-text-loading/index.js +2 -0
- package/dist/ai-text-loading/index.js.map +1 -0
- package/dist/ai-text-loading/index.mjs +2 -0
- package/dist/ai-text-loading/index.mjs.map +1 -0
- package/dist/ai-voice/index.js +3 -0
- package/dist/ai-voice/index.js.map +1 -0
- package/dist/ai-voice/index.mjs +3 -0
- package/dist/ai-voice/index.mjs.map +1 -0
- package/dist/aurora/index.js +2 -0
- package/dist/aurora/index.js.map +1 -0
- package/dist/aurora/index.mjs +2 -0
- package/dist/aurora/index.mjs.map +1 -0
- package/dist/background-paths/index.js +2 -0
- package/dist/background-paths/index.js.map +1 -0
- package/dist/background-paths/index.mjs +2 -0
- package/dist/background-paths/index.mjs.map +1 -0
- package/dist/elastic-search/index.js +17 -0
- package/dist/elastic-search/index.js.map +1 -0
- package/dist/elastic-search/index.mjs +17 -0
- package/dist/elastic-search/index.mjs.map +1 -0
- package/dist/faqs-accordion/index.js +16 -0
- package/dist/faqs-accordion/index.js.map +1 -0
- package/dist/faqs-accordion/index.mjs +16 -0
- package/dist/faqs-accordion/index.mjs.map +1 -0
- package/dist/faqs-grid/index.js +2 -0
- package/dist/faqs-grid/index.js.map +1 -0
- package/dist/faqs-grid/index.mjs +2 -0
- package/dist/faqs-grid/index.mjs.map +1 -0
- package/dist/floating-paths/index.js +2 -0
- package/dist/floating-paths/index.js.map +1 -0
- package/dist/floating-paths/index.mjs +2 -0
- package/dist/floating-paths/index.mjs.map +1 -0
- package/dist/folder/index.js +2 -0
- package/dist/folder/index.js.map +1 -0
- package/dist/folder/index.mjs +2 -0
- package/dist/folder/index.mjs.map +1 -0
- package/dist/footer-complex/index.js +2 -0
- package/dist/footer-complex/index.js.map +1 -0
- package/dist/footer-complex/index.mjs +2 -0
- package/dist/footer-complex/index.mjs.map +1 -0
- package/dist/footer-simple/index.js +2 -0
- package/dist/footer-simple/index.js.map +1 -0
- package/dist/footer-simple/index.mjs +2 -0
- package/dist/footer-simple/index.mjs.map +1 -0
- package/dist/glare-hover/index.js +32 -0
- package/dist/glare-hover/index.js.map +1 -0
- package/dist/glare-hover/index.mjs +32 -0
- package/dist/glare-hover/index.mjs.map +1 -0
- package/dist/hero-grid/index.js +16 -0
- package/dist/hero-grid/index.js.map +1 -0
- package/dist/hero-grid/index.mjs +16 -0
- package/dist/hero-grid/index.mjs.map +1 -0
- package/dist/hero-showcase/index.js +17 -0
- package/dist/hero-showcase/index.js.map +1 -0
- package/dist/hero-showcase/index.mjs +17 -0
- package/dist/hero-showcase/index.mjs.map +1 -0
- package/dist/index.js +85 -13
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +85 -13
- package/dist/index.mjs.map +1 -1
- package/dist/job-listing/index.js +19 -0
- package/dist/job-listing/index.js.map +1 -0
- package/dist/job-listing/index.mjs +19 -0
- package/dist/job-listing/index.mjs.map +1 -0
- package/dist/logo-cloud/index.js +14 -0
- package/dist/logo-cloud/index.js.map +1 -0
- package/dist/logo-cloud/index.mjs +14 -0
- package/dist/logo-cloud/index.mjs.map +1 -0
- package/dist/logo-loop/index.js +2 -0
- package/dist/logo-loop/index.js.map +1 -0
- package/dist/logo-loop/index.mjs +2 -0
- package/dist/logo-loop/index.mjs.map +1 -0
- package/dist/magnet/index.js +2 -0
- package/dist/magnet/index.js.map +1 -0
- package/dist/magnet/index.mjs +2 -0
- package/dist/magnet/index.mjs.map +1 -0
- package/dist/magnet-lines/index.js +2 -0
- package/dist/magnet-lines/index.js.map +1 -0
- package/dist/magnet-lines/index.mjs +2 -0
- package/dist/magnet-lines/index.mjs.map +1 -0
- package/dist/pricing-modern/index.js +16 -0
- package/dist/pricing-modern/index.js.map +1 -0
- package/dist/pricing-modern/index.mjs +16 -0
- package/dist/pricing-modern/index.mjs.map +1 -0
- package/dist/scroll-float/index.js +2 -0
- package/dist/scroll-float/index.js.map +1 -0
- package/dist/scroll-float/index.mjs +2 -0
- package/dist/scroll-float/index.mjs.map +1 -0
- package/dist/scroll-reveal/index.js +2 -0
- package/dist/scroll-reveal/index.js.map +1 -0
- package/dist/scroll-reveal/index.mjs +2 -0
- package/dist/scroll-reveal/index.mjs.map +1 -0
- package/dist/scroll-stack/index.js +2 -0
- package/dist/scroll-stack/index.js.map +1 -0
- package/dist/scroll-stack/index.mjs +2 -0
- package/dist/scroll-stack/index.mjs.map +1 -0
- package/dist/squares/index.js +2 -0
- package/dist/squares/index.js.map +1 -0
- package/dist/squares/index.mjs +2 -0
- package/dist/squares/index.mjs.map +1 -0
- package/dist/team-carousel/index.js +17 -0
- package/dist/team-carousel/index.js.map +1 -0
- package/dist/team-carousel/index.mjs +17 -0
- package/dist/team-carousel/index.mjs.map +1 -0
- package/dist/team-selector/index.js +3 -0
- package/dist/team-selector/index.js.map +1 -0
- package/dist/team-selector/index.mjs +3 -0
- package/dist/team-selector/index.mjs.map +1 -0
- package/dist/testimonials-grid/index.js +17 -0
- package/dist/testimonials-grid/index.js.map +1 -0
- package/dist/testimonials-grid/index.mjs +17 -0
- package/dist/testimonials-grid/index.mjs.map +1 -0
- package/dist/testimonials-simple/index.js +3 -0
- package/dist/testimonials-simple/index.js.map +1 -0
- package/dist/testimonials-simple/index.mjs +3 -0
- package/dist/testimonials-simple/index.mjs.map +1 -0
- package/dist/testimonials-stars/index.js +3 -0
- package/dist/testimonials-stars/index.js.map +1 -0
- package/dist/testimonials-stars/index.mjs +3 -0
- package/dist/testimonials-stars/index.mjs.map +1 -0
- package/dist/text-type/index.js +2 -0
- package/dist/text-type/index.js.map +1 -0
- package/dist/text-type/index.mjs +2 -0
- package/dist/text-type/index.mjs.map +1 -0
- package/dist/threads/index.js +2 -0
- package/dist/threads/index.js.map +1 -0
- package/dist/threads/index.mjs +2 -0
- package/dist/threads/index.mjs.map +1 -0
- package/dist/tooltip-interactive/index.js +2 -0
- package/dist/tooltip-interactive/index.js.map +1 -0
- package/dist/tooltip-interactive/index.mjs +2 -0
- package/dist/tooltip-interactive/index.mjs.map +1 -0
- package/dist/tooltip-magnetic/index.js +2 -0
- package/dist/tooltip-magnetic/index.js.map +1 -0
- package/dist/tooltip-magnetic/index.mjs +2 -0
- package/dist/tooltip-magnetic/index.mjs.map +1 -0
- package/dist/tooltip-rich/index.js +2 -0
- package/dist/tooltip-rich/index.js.map +1 -0
- package/dist/tooltip-rich/index.mjs +2 -0
- package/dist/tooltip-rich/index.mjs.map +1 -0
- package/dist/waves/index.js +2 -0
- package/dist/waves/index.js.map +1 -0
- package/dist/waves/index.mjs +2 -0
- package/dist/waves/index.mjs.map +1 -0
- package/package.json +41 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/folder/index.tsx"],"names":["cn","inputs","twMerge","clsx","darkenColor","hex","percent","color","c","num","r","g","b","Folder","size","items","className","papers","open","setOpen","useState","paperOffsets","setPaperOffsets","folderBackColor","handleClick","prev","handlePaperMouseMove","e","index","rect","offsetX","offsetY","newOffsets","handlePaperMouseLeave","jsx","jsxs","item","i","folder_default"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport React, { useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface FolderProps {\r\n color?: string;\r\n size?: number;\r\n items?: React.ReactNode[];\r\n className?: string;\r\n}\r\n\r\nconst darkenColor = (hex: string, percent: number): string => {\r\n let color = hex.startsWith(\"#\") ? hex.slice(1) : hex;\r\n if (color.length === 3) {\r\n color = color\r\n .split(\"\")\r\n .map((c) => c + c)\r\n .join(\"\");\r\n }\r\n const num = parseInt(color, 16);\r\n let r = (num >> 16) & 0xff;\r\n let g = (num >> 8) & 0xff;\r\n let b = num & 0xff;\r\n r = Math.max(0, Math.min(255, Math.floor(r * (1 - percent))));\r\n g = Math.max(0, Math.min(255, Math.floor(g * (1 - percent))));\r\n b = Math.max(0, Math.min(255, Math.floor(b * (1 - percent))));\r\n return (\r\n \"#\" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1).toUpperCase()\r\n );\r\n};\r\n\r\nexport function Folder({\r\n color = \"#18181b\",\r\n size = 1,\r\n items = [],\r\n className = \"\",\r\n}: FolderProps) {\r\n const maxItems = 3;\r\n const papers = items.slice(0, maxItems);\r\n while (papers.length < maxItems) {\r\n papers.push(null);\r\n }\r\n\r\n const [open, setOpen] = useState(false);\r\n const [paperOffsets, setPaperOffsets] = useState<{ x: number; y: number }[]>(\r\n Array.from({ length: maxItems }, () => ({ x: 0, y: 0 }))\r\n );\r\n\r\n const folderBackColor = darkenColor(color, 0.08);\r\n\r\n const handleClick = () => {\r\n setOpen((prev) => !prev);\r\n if (open) {\r\n setPaperOffsets(\r\n Array.from({ length: maxItems }, () => ({ x: 0, y: 0 }))\r\n );\r\n }\r\n };\r\n\r\n const handlePaperMouseMove = (\r\n e: React.MouseEvent<HTMLDivElement>,\r\n index: number\r\n ) => {\r\n if (!open) return;\r\n const rect = e.currentTarget.getBoundingClientRect();\r\n const offsetX = (e.clientX - (rect.left + rect.width / 2)) * 0.15;\r\n const offsetY = (e.clientY - (rect.top + rect.height / 2)) * 0.15;\r\n setPaperOffsets((prev) => {\r\n const newOffsets = [...prev];\r\n newOffsets[index] = { x: offsetX, y: offsetY };\r\n return newOffsets;\r\n });\r\n };\r\n\r\n const handlePaperMouseLeave = (index: number) => {\r\n setPaperOffsets((prev) => {\r\n const newOffsets = [...prev];\r\n newOffsets[index] = { x: 0, y: 0 };\r\n return newOffsets;\r\n });\r\n };\r\n\r\n return (\r\n <div\r\n className={cn(\"relative cursor-pointer\", className)}\r\n style={{ transform: `scale(${size})` }}\r\n >\r\n <div\r\n className={cn(\r\n \"relative w-32 h-24 transition-all duration-300\",\r\n open && \"transform -translate-y-2\"\r\n )}\r\n onClick={handleClick}\r\n >\r\n {/* Folder back */}\r\n <div\r\n className=\"absolute inset-0 rounded-lg\"\r\n style={{ backgroundColor: folderBackColor }}\r\n >\r\n {/* Papers */}\r\n {papers.map((item, i) => (\r\n <div\r\n key={i}\r\n className={cn(\r\n \"absolute left-1/2 -translate-x-1/2 w-[85%] h-[70%] rounded-md transition-all duration-300\",\r\n open ? \"opacity-100\" : \"opacity-0\"\r\n )}\r\n onMouseMove={(e) => handlePaperMouseMove(e, i)}\r\n onMouseLeave={() => handlePaperMouseLeave(i)}\r\n style={{\r\n backgroundColor: i === 0 ? \"#f4f4f5\" : i === 1 ? \"#fafafa\" : \"#ffffff\",\r\n bottom: open ? `${60 + i * 20}%` : \"50%\",\r\n transform: open\r\n ? `translateX(calc(-50% + ${paperOffsets[i]?.x || 0}px)) translateY(${paperOffsets[i]?.y || 0}px) rotate(${(i - 1) * 3}deg)`\r\n : \"translateX(-50%)\",\r\n zIndex: 3 - i,\r\n }}\r\n >\r\n {item}\r\n </div>\r\n ))}\r\n </div>\r\n\r\n {/* Folder front */}\r\n <div\r\n className={cn(\r\n \"absolute bottom-0 left-0 right-0 h-[75%] rounded-lg transition-all duration-300\",\r\n open && \"transform translate-y-1\"\r\n )}\r\n style={{ backgroundColor: color }}\r\n >\r\n {/* Folder tab */}\r\n <div\r\n className=\"absolute -top-3 left-2 w-8 h-4 rounded-t-md\"\r\n style={{ backgroundColor: color }}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Folder;\r\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {useState}from'react';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx,jsxs}from'react/jsx-runtime';function i(...a){return twMerge(clsx(a))}var I=(a,l)=>{let n=a.startsWith("#")?a.slice(1):a;n.length===3&&(n=n.split("").map(u=>u+u).join(""));let f=parseInt(n,16),c=f>>16&255,s=f>>8&255,e=f&255;return c=Math.max(0,Math.min(255,Math.floor(c*(1-l)))),s=Math.max(0,Math.min(255,Math.floor(s*(1-l)))),e=Math.max(0,Math.min(255,Math.floor(e*(1-l)))),"#"+((1<<24)+(c<<16)+(s<<8)+e).toString(16).slice(1).toUpperCase()};function O({color:a="#18181b",size:l=1,items:n=[],className:f=""}){let s=n.slice(0,3);for(;s.length<3;)s.push(null);let[e,u]=useState(false),[p,d]=useState(Array.from({length:3},()=>({x:0,y:0}))),x=I(a,.08),v=()=>{u(o=>!o),e&&d(Array.from({length:3},()=>({x:0,y:0})));},y=(o,t)=>{if(!e)return;let r=o.currentTarget.getBoundingClientRect(),M=(o.clientX-(r.left+r.width/2))*.15,C=(o.clientY-(r.top+r.height/2))*.15;d(k=>{let h=[...k];return h[t]={x:M,y:C},h});},b=o=>{d(t=>{let r=[...t];return r[o]={x:0,y:0},r});};return jsx("div",{className:i("relative cursor-pointer",f),style:{transform:`scale(${l})`},children:jsxs("div",{className:i("relative w-32 h-24 transition-all duration-300",e&&"transform -translate-y-2"),onClick:v,children:[jsx("div",{className:"absolute inset-0 rounded-lg",style:{backgroundColor:x},children:s.map((o,t)=>jsx("div",{className:i("absolute left-1/2 -translate-x-1/2 w-[85%] h-[70%] rounded-md transition-all duration-300",e?"opacity-100":"opacity-0"),onMouseMove:r=>y(r,t),onMouseLeave:()=>b(t),style:{backgroundColor:t===0?"#f4f4f5":t===1?"#fafafa":"#ffffff",bottom:e?`${60+t*20}%`:"50%",transform:e?`translateX(calc(-50% + ${p[t]?.x||0}px)) translateY(${p[t]?.y||0}px) rotate(${(t-1)*3}deg)`:"translateX(-50%)",zIndex:3-t},children:o},t))}),jsx("div",{className:i("absolute bottom-0 left-0 right-0 h-[75%] rounded-lg transition-all duration-300",e&&"transform translate-y-1"),style:{backgroundColor:a},children:jsx("div",{className:"absolute -top-3 left-2 w-8 h-4 rounded-t-md",style:{backgroundColor:a}})})]})})}var z=O;export{O as Folder,z as default};//# sourceMappingURL=index.mjs.map
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/folder/index.tsx"],"names":["cn","inputs","twMerge","clsx","darkenColor","hex","percent","color","c","num","r","g","b","Folder","size","items","className","papers","open","setOpen","useState","paperOffsets","setPaperOffsets","folderBackColor","handleClick","prev","handlePaperMouseMove","e","index","rect","offsetX","offsetY","newOffsets","handlePaperMouseLeave","jsx","jsxs","item","i","folder_default"],"mappings":"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","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport React, { useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface FolderProps {\r\n color?: string;\r\n size?: number;\r\n items?: React.ReactNode[];\r\n className?: string;\r\n}\r\n\r\nconst darkenColor = (hex: string, percent: number): string => {\r\n let color = hex.startsWith(\"#\") ? hex.slice(1) : hex;\r\n if (color.length === 3) {\r\n color = color\r\n .split(\"\")\r\n .map((c) => c + c)\r\n .join(\"\");\r\n }\r\n const num = parseInt(color, 16);\r\n let r = (num >> 16) & 0xff;\r\n let g = (num >> 8) & 0xff;\r\n let b = num & 0xff;\r\n r = Math.max(0, Math.min(255, Math.floor(r * (1 - percent))));\r\n g = Math.max(0, Math.min(255, Math.floor(g * (1 - percent))));\r\n b = Math.max(0, Math.min(255, Math.floor(b * (1 - percent))));\r\n return (\r\n \"#\" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1).toUpperCase()\r\n );\r\n};\r\n\r\nexport function Folder({\r\n color = \"#18181b\",\r\n size = 1,\r\n items = [],\r\n className = \"\",\r\n}: FolderProps) {\r\n const maxItems = 3;\r\n const papers = items.slice(0, maxItems);\r\n while (papers.length < maxItems) {\r\n papers.push(null);\r\n }\r\n\r\n const [open, setOpen] = useState(false);\r\n const [paperOffsets, setPaperOffsets] = useState<{ x: number; y: number }[]>(\r\n Array.from({ length: maxItems }, () => ({ x: 0, y: 0 }))\r\n );\r\n\r\n const folderBackColor = darkenColor(color, 0.08);\r\n\r\n const handleClick = () => {\r\n setOpen((prev) => !prev);\r\n if (open) {\r\n setPaperOffsets(\r\n Array.from({ length: maxItems }, () => ({ x: 0, y: 0 }))\r\n );\r\n }\r\n };\r\n\r\n const handlePaperMouseMove = (\r\n e: React.MouseEvent<HTMLDivElement>,\r\n index: number\r\n ) => {\r\n if (!open) return;\r\n const rect = e.currentTarget.getBoundingClientRect();\r\n const offsetX = (e.clientX - (rect.left + rect.width / 2)) * 0.15;\r\n const offsetY = (e.clientY - (rect.top + rect.height / 2)) * 0.15;\r\n setPaperOffsets((prev) => {\r\n const newOffsets = [...prev];\r\n newOffsets[index] = { x: offsetX, y: offsetY };\r\n return newOffsets;\r\n });\r\n };\r\n\r\n const handlePaperMouseLeave = (index: number) => {\r\n setPaperOffsets((prev) => {\r\n const newOffsets = [...prev];\r\n newOffsets[index] = { x: 0, y: 0 };\r\n return newOffsets;\r\n });\r\n };\r\n\r\n return (\r\n <div\r\n className={cn(\"relative cursor-pointer\", className)}\r\n style={{ transform: `scale(${size})` }}\r\n >\r\n <div\r\n className={cn(\r\n \"relative w-32 h-24 transition-all duration-300\",\r\n open && \"transform -translate-y-2\"\r\n )}\r\n onClick={handleClick}\r\n >\r\n {/* Folder back */}\r\n <div\r\n className=\"absolute inset-0 rounded-lg\"\r\n style={{ backgroundColor: folderBackColor }}\r\n >\r\n {/* Papers */}\r\n {papers.map((item, i) => (\r\n <div\r\n key={i}\r\n className={cn(\r\n \"absolute left-1/2 -translate-x-1/2 w-[85%] h-[70%] rounded-md transition-all duration-300\",\r\n open ? \"opacity-100\" : \"opacity-0\"\r\n )}\r\n onMouseMove={(e) => handlePaperMouseMove(e, i)}\r\n onMouseLeave={() => handlePaperMouseLeave(i)}\r\n style={{\r\n backgroundColor: i === 0 ? \"#f4f4f5\" : i === 1 ? \"#fafafa\" : \"#ffffff\",\r\n bottom: open ? `${60 + i * 20}%` : \"50%\",\r\n transform: open\r\n ? `translateX(calc(-50% + ${paperOffsets[i]?.x || 0}px)) translateY(${paperOffsets[i]?.y || 0}px) rotate(${(i - 1) * 3}deg)`\r\n : \"translateX(-50%)\",\r\n zIndex: 3 - i,\r\n }}\r\n >\r\n {item}\r\n </div>\r\n ))}\r\n </div>\r\n\r\n {/* Folder front */}\r\n <div\r\n className={cn(\r\n \"absolute bottom-0 left-0 right-0 h-[75%] rounded-lg transition-all duration-300\",\r\n open && \"transform translate-y-1\"\r\n )}\r\n style={{ backgroundColor: color }}\r\n >\r\n {/* Folder tab */}\r\n <div\r\n className=\"absolute -top-3 left-2 w-8 h-4 rounded-t-md\"\r\n style={{ backgroundColor: color }}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Folder;\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":"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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 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,32 @@
|
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function i(...r){return tailwindMerge.twMerge(clsx.clsx(r))}function S({width:r="500px",height:h="500px",background:c="#ffffff",borderRadius:p="12px",borderColor:d="#e5e5e5",children:f,glareColor:s="#000000",glareOpacity:g=.15,glareAngle:b=-45,glareSize:v=250,transitionDuration:u=650,playOnce:m=false,className:$="",style:y={}}){let e=s.replace("#",""),t=s;if(/^[0-9A-Fa-f]{6}$/.test(e)){let a=parseInt(e.slice(0,2),16),o=parseInt(e.slice(2,4),16),n=parseInt(e.slice(4,6),16);t=`rgba(${a}, ${o}, ${n}, ${g})`;}else if(/^[0-9A-Fa-f]{3}$/.test(e)){let a=parseInt(e[0]+e[0],16),o=parseInt(e[1]+e[1],16),n=parseInt(e[2]+e[2],16);t=`rgba(${a}, ${o}, ${n}, ${g})`;}let x=`
|
|
2
|
+
.glare-hover {
|
|
3
|
+
position: relative;
|
|
4
|
+
overflow: hidden;
|
|
5
|
+
width: var(--gh-width);
|
|
6
|
+
height: var(--gh-height);
|
|
7
|
+
background: var(--gh-bg);
|
|
8
|
+
border-radius: var(--gh-br);
|
|
9
|
+
border: 1px solid var(--gh-border);
|
|
10
|
+
}
|
|
11
|
+
.glare-hover::before {
|
|
12
|
+
content: "";
|
|
13
|
+
position: absolute;
|
|
14
|
+
top: 0;
|
|
15
|
+
left: -100%;
|
|
16
|
+
width: var(--gh-size);
|
|
17
|
+
height: 100%;
|
|
18
|
+
background: linear-gradient(var(--gh-angle), transparent, var(--gh-rgba), transparent);
|
|
19
|
+
transition: left var(--gh-duration) ease;
|
|
20
|
+
}
|
|
21
|
+
.glare-hover:hover::before {
|
|
22
|
+
left: 100%;
|
|
23
|
+
}
|
|
24
|
+
.glare-hover--play-once::before {
|
|
25
|
+
animation: glare-once var(--gh-duration) ease forwards;
|
|
26
|
+
}
|
|
27
|
+
@keyframes glare-once {
|
|
28
|
+
0% { left: -100%; }
|
|
29
|
+
100% { left: 100%; }
|
|
30
|
+
}
|
|
31
|
+
`,w={"--gh-width":r,"--gh-height":h,"--gh-bg":c,"--gh-br":p,"--gh-angle":`${b}deg`,"--gh-duration":`${u}ms`,"--gh-size":`${v}%`,"--gh-rgba":t,"--gh-border":d};return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("style",{children:x}),jsxRuntime.jsx("div",{className:i("glare-hover",m&&"glare-hover--play-once",$),style:{...w,...y},children:f})]})}var H=S;exports.GlareHover=S;exports.default=H;//# sourceMappingURL=index.js.map
|
|
32
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/glare-hover/index.tsx"],"names":["cn","inputs","twMerge","clsx","GlareHover","width","height","background","borderRadius","borderColor","children","glareColor","glareOpacity","glareAngle","glareSize","transitionDuration","playOnce","className","style","hex","rgba","r","g","b","glareStyles","vars","jsxs","Fragment","jsx","glare_hover_default"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\nexport interface GlareHoverProps {\r\n width?: string;\r\n height?: string;\r\n background?: string;\r\n borderRadius?: string;\r\n borderColor?: string;\r\n children: React.ReactNode;\r\n glareColor?: string;\r\n glareOpacity?: number;\r\n glareAngle?: number;\r\n glareSize?: number;\r\n transitionDuration?: number;\r\n playOnce?: boolean;\r\n className?: string;\r\n style?: React.CSSProperties;\r\n}\r\n\r\nexport function GlareHover({\r\n width = \"500px\",\r\n height = \"500px\",\r\n background = \"#ffffff\",\r\n borderRadius = \"12px\",\r\n borderColor = \"#e5e5e5\",\r\n children,\r\n glareColor = \"#000000\",\r\n glareOpacity = 0.15,\r\n glareAngle = -45,\r\n glareSize = 250,\r\n transitionDuration = 650,\r\n playOnce = false,\r\n className = \"\",\r\n style = {},\r\n}: GlareHoverProps) {\r\n const hex = glareColor.replace(\"#\", \"\");\r\n let rgba = glareColor;\r\n if (/^[0-9A-Fa-f]{6}$/.test(hex)) {\r\n const r = parseInt(hex.slice(0, 2), 16);\r\n const g = parseInt(hex.slice(2, 4), 16);\r\n const b = parseInt(hex.slice(4, 6), 16);\r\n rgba = `rgba(${r}, ${g}, ${b}, ${glareOpacity})`;\r\n } else if (/^[0-9A-Fa-f]{3}$/.test(hex)) {\r\n const r = parseInt(hex[0] + hex[0], 16);\r\n const g = parseInt(hex[1] + hex[1], 16);\r\n const b = parseInt(hex[2] + hex[2], 16);\r\n rgba = `rgba(${r}, ${g}, ${b}, ${glareOpacity})`;\r\n }\r\n\r\n const glareStyles = `\r\n .glare-hover {\r\n position: relative;\r\n overflow: hidden;\r\n width: var(--gh-width);\r\n height: var(--gh-height);\r\n background: var(--gh-bg);\r\n border-radius: var(--gh-br);\r\n border: 1px solid var(--gh-border);\r\n }\r\n .glare-hover::before {\r\n content: \"\";\r\n position: absolute;\r\n top: 0;\r\n left: -100%;\r\n width: var(--gh-size);\r\n height: 100%;\r\n background: linear-gradient(var(--gh-angle), transparent, var(--gh-rgba), transparent);\r\n transition: left var(--gh-duration) ease;\r\n }\r\n .glare-hover:hover::before {\r\n left: 100%;\r\n }\r\n .glare-hover--play-once::before {\r\n animation: glare-once var(--gh-duration) ease forwards;\r\n }\r\n @keyframes glare-once {\r\n 0% { left: -100%; }\r\n 100% { left: 100%; }\r\n }\r\n `;\r\n\r\n const vars = {\r\n \"--gh-width\": width,\r\n \"--gh-height\": height,\r\n \"--gh-bg\": background,\r\n \"--gh-br\": borderRadius,\r\n \"--gh-angle\": `${glareAngle}deg`,\r\n \"--gh-duration\": `${transitionDuration}ms`,\r\n \"--gh-size\": `${glareSize}%`,\r\n \"--gh-rgba\": rgba,\r\n \"--gh-border\": borderColor,\r\n } as React.CSSProperties;\r\n\r\n return (\r\n <>\r\n <style>{glareStyles}</style>\r\n <div\r\n className={cn(\"glare-hover\", playOnce && \"glare-hover--play-once\", className)}\r\n style={{ ...vars, ...style }}\r\n >\r\n {children}\r\n </div>\r\n </>\r\n );\r\n}\r\n\r\nexport default GlareHover;\r\n"]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsxs,Fragment,jsx}from'react/jsx-runtime';function i(...r){return twMerge(clsx(r))}function S({width:r="500px",height:h="500px",background:c="#ffffff",borderRadius:p="12px",borderColor:d="#e5e5e5",children:f,glareColor:s="#000000",glareOpacity:g=.15,glareAngle:b=-45,glareSize:v=250,transitionDuration:u=650,playOnce:m=false,className:$="",style:y={}}){let e=s.replace("#",""),t=s;if(/^[0-9A-Fa-f]{6}$/.test(e)){let a=parseInt(e.slice(0,2),16),o=parseInt(e.slice(2,4),16),n=parseInt(e.slice(4,6),16);t=`rgba(${a}, ${o}, ${n}, ${g})`;}else if(/^[0-9A-Fa-f]{3}$/.test(e)){let a=parseInt(e[0]+e[0],16),o=parseInt(e[1]+e[1],16),n=parseInt(e[2]+e[2],16);t=`rgba(${a}, ${o}, ${n}, ${g})`;}let x=`
|
|
2
|
+
.glare-hover {
|
|
3
|
+
position: relative;
|
|
4
|
+
overflow: hidden;
|
|
5
|
+
width: var(--gh-width);
|
|
6
|
+
height: var(--gh-height);
|
|
7
|
+
background: var(--gh-bg);
|
|
8
|
+
border-radius: var(--gh-br);
|
|
9
|
+
border: 1px solid var(--gh-border);
|
|
10
|
+
}
|
|
11
|
+
.glare-hover::before {
|
|
12
|
+
content: "";
|
|
13
|
+
position: absolute;
|
|
14
|
+
top: 0;
|
|
15
|
+
left: -100%;
|
|
16
|
+
width: var(--gh-size);
|
|
17
|
+
height: 100%;
|
|
18
|
+
background: linear-gradient(var(--gh-angle), transparent, var(--gh-rgba), transparent);
|
|
19
|
+
transition: left var(--gh-duration) ease;
|
|
20
|
+
}
|
|
21
|
+
.glare-hover:hover::before {
|
|
22
|
+
left: 100%;
|
|
23
|
+
}
|
|
24
|
+
.glare-hover--play-once::before {
|
|
25
|
+
animation: glare-once var(--gh-duration) ease forwards;
|
|
26
|
+
}
|
|
27
|
+
@keyframes glare-once {
|
|
28
|
+
0% { left: -100%; }
|
|
29
|
+
100% { left: 100%; }
|
|
30
|
+
}
|
|
31
|
+
`,w={"--gh-width":r,"--gh-height":h,"--gh-bg":c,"--gh-br":p,"--gh-angle":`${b}deg`,"--gh-duration":`${u}ms`,"--gh-size":`${v}%`,"--gh-rgba":t,"--gh-border":d};return jsxs(Fragment,{children:[jsx("style",{children:x}),jsx("div",{className:i("glare-hover",m&&"glare-hover--play-once",$),style:{...w,...y},children:f})]})}var H=S;export{S as GlareHover,H as default};//# sourceMappingURL=index.mjs.map
|
|
32
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/glare-hover/index.tsx"],"names":["cn","inputs","twMerge","clsx","GlareHover","width","height","background","borderRadius","borderColor","children","glareColor","glareOpacity","glareAngle","glareSize","transitionDuration","playOnce","className","style","hex","rgba","r","g","b","glareStyles","vars","jsxs","Fragment","jsx","glare_hover_default"],"mappings":"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","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\nexport interface GlareHoverProps {\r\n width?: string;\r\n height?: string;\r\n background?: string;\r\n borderRadius?: string;\r\n borderColor?: string;\r\n children: React.ReactNode;\r\n glareColor?: string;\r\n glareOpacity?: number;\r\n glareAngle?: number;\r\n glareSize?: number;\r\n transitionDuration?: number;\r\n playOnce?: boolean;\r\n className?: string;\r\n style?: React.CSSProperties;\r\n}\r\n\r\nexport function GlareHover({\r\n width = \"500px\",\r\n height = \"500px\",\r\n background = \"#ffffff\",\r\n borderRadius = \"12px\",\r\n borderColor = \"#e5e5e5\",\r\n children,\r\n glareColor = \"#000000\",\r\n glareOpacity = 0.15,\r\n glareAngle = -45,\r\n glareSize = 250,\r\n transitionDuration = 650,\r\n playOnce = false,\r\n className = \"\",\r\n style = {},\r\n}: GlareHoverProps) {\r\n const hex = glareColor.replace(\"#\", \"\");\r\n let rgba = glareColor;\r\n if (/^[0-9A-Fa-f]{6}$/.test(hex)) {\r\n const r = parseInt(hex.slice(0, 2), 16);\r\n const g = parseInt(hex.slice(2, 4), 16);\r\n const b = parseInt(hex.slice(4, 6), 16);\r\n rgba = `rgba(${r}, ${g}, ${b}, ${glareOpacity})`;\r\n } else if (/^[0-9A-Fa-f]{3}$/.test(hex)) {\r\n const r = parseInt(hex[0] + hex[0], 16);\r\n const g = parseInt(hex[1] + hex[1], 16);\r\n const b = parseInt(hex[2] + hex[2], 16);\r\n rgba = `rgba(${r}, ${g}, ${b}, ${glareOpacity})`;\r\n }\r\n\r\n const glareStyles = `\r\n .glare-hover {\r\n position: relative;\r\n overflow: hidden;\r\n width: var(--gh-width);\r\n height: var(--gh-height);\r\n background: var(--gh-bg);\r\n border-radius: var(--gh-br);\r\n border: 1px solid var(--gh-border);\r\n }\r\n .glare-hover::before {\r\n content: \"\";\r\n position: absolute;\r\n top: 0;\r\n left: -100%;\r\n width: var(--gh-size);\r\n height: 100%;\r\n background: linear-gradient(var(--gh-angle), transparent, var(--gh-rgba), transparent);\r\n transition: left var(--gh-duration) ease;\r\n }\r\n .glare-hover:hover::before {\r\n left: 100%;\r\n }\r\n .glare-hover--play-once::before {\r\n animation: glare-once var(--gh-duration) ease forwards;\r\n }\r\n @keyframes glare-once {\r\n 0% { left: -100%; }\r\n 100% { left: 100%; }\r\n }\r\n `;\r\n\r\n const vars = {\r\n \"--gh-width\": width,\r\n \"--gh-height\": height,\r\n \"--gh-bg\": background,\r\n \"--gh-br\": borderRadius,\r\n \"--gh-angle\": `${glareAngle}deg`,\r\n \"--gh-duration\": `${transitionDuration}ms`,\r\n \"--gh-size\": `${glareSize}%`,\r\n \"--gh-rgba\": rgba,\r\n \"--gh-border\": borderColor,\r\n } as React.CSSProperties;\r\n\r\n return (\r\n <>\r\n <style>{glareStyles}</style>\r\n <div\r\n className={cn(\"glare-hover\", playOnce && \"glare-hover--play-once\", className)}\r\n style={{ ...vars, ...style }}\r\n >\r\n {children}\r\n </div>\r\n </>\r\n );\r\n}\r\n\r\nexport default GlareHover;\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  - 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  - 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,17 @@
|
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),jsxRuntime=require('react/jsx-runtime');var m=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()),p=e=>{let a=k(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(),I=e=>{for(let a in e)if(a.startsWith("aria-")||a==="role"||a==="title")return true};var x={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 S=react.forwardRef(({color:e="currentColor",size:a=24,strokeWidth:t=2,absoluteStrokeWidth:u,className:f="",children:o,iconNode:n,...L},g)=>react.createElement("svg",{ref:g,...x,width:a,height:a,stroke:e,strokeWidth:u?Number(t)*24/Number(a):t,className:i("lucide",f),...!o&&!I(L)&&{"aria-hidden":"true"},...L},[...n.map(([h,w])=>react.createElement(h,w)),...Array.isArray(o)?o:[o]]));var c=(e,a)=>{let t=react.forwardRef(({className:u,...f},o)=>react.createElement(S,{ref:o,iconNode:a,className:i(`lucide-${m(p(e))}`,`lucide-${e}`,u),...f}));return t.displayName=p(e),t};var D=[["path",{d:"m7 7 10 10",key:"1fmybs"}],["path",{d:"M17 7v10H7",key:"6fjiku"}]],r=c("arrow-down-right",D);var F=[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]],s=c("star",F);function M({heading:e="Build beautiful UIs, effortlessly.",description:a="Create stunning, animated interfaces in minutes.",buttons:t={primary:{text:"Get Started",url:"#"},secondary:{text:"Watch demo",url:"#"}},reviews:u={count:200,rating:5,avatars:[{src:"https://i.pravatar.cc/150?img=1",alt:"User 1"},{src:"https://i.pravatar.cc/150?img=2",alt:"User 2"},{src:"https://i.pravatar.cc/150?img=3",alt:"User 3"}]},className:f=""}){return jsxRuntime.jsx("section",{className:`py-24 ${f}`,children:jsxRuntime.jsx("div",{className:"mx-auto max-w-5xl px-6",children:jsxRuntime.jsxs("div",{className:"flex flex-col items-center text-center",children:[jsxRuntime.jsx("h1",{className:"my-6 text-4xl font-bold lg:text-6xl",children:e}),jsxRuntime.jsx("p",{className:"text-muted-foreground mb-8 max-w-xl lg:text-xl",children:a}),jsxRuntime.jsxs("div",{className:"mb-12 flex items-center gap-4",children:[jsxRuntime.jsx("span",{className:"inline-flex -space-x-4",children:u.avatars.map((o,n)=>jsxRuntime.jsx("img",{src:o.src,alt:o.alt,className:"size-12 rounded-full border-2 border-background"},n))}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-1",children:[[1,2,3,4,5].map(o=>jsxRuntime.jsx(s,{className:"size-5 fill-yellow-400 text-yellow-400"},o)),jsxRuntime.jsx("span",{className:"ml-1 font-semibold",children:u.rating?.toFixed(1)})]}),jsxRuntime.jsxs("p",{className:"text-muted-foreground text-sm",children:["from ",u.count,"+ reviews"]})]})]}),jsxRuntime.jsxs("div",{className:"flex gap-4",children:[t.primary&&jsxRuntime.jsx("a",{href:t.primary.url,className:"bg-primary text-primary-foreground hover:bg-primary/90 px-6 py-3 rounded-md font-medium",children:t.primary.text}),t.secondary&&jsxRuntime.jsxs("a",{href:t.secondary.url,className:"border border-input hover:bg-accent px-6 py-3 rounded-md font-medium inline-flex items-center gap-2",children:[t.secondary.text,jsxRuntime.jsx(r,{className:"size-4"})]})]})]})})})}var Q=M;/*! 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/arrow-down-right.js:
|
|
8
|
+
lucide-react/dist/esm/icons/star.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
|
+
*/exports.HeroShowcase=M;exports.default=Q;//# sourceMappingURL=index.js.map
|
|
17
|
+
//# 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/arrow-down-right.ts","../../../../node_modules/lucide-react/src/icons/star.ts","../../src/hero-showcase/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","ArrowDownRight","Star","HeroShowcase","heading","description","buttons","reviews","jsx","jsxs","avatar","star","hero_showcase_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: 'm7 7 10 10', key: '1fmybs' }],\n ['path', { d: 'M17 7v10H7', key: '6fjiku' }],\n];\n\n/**\n * @component @name ArrowDownRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/arrow-down-right\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 ArrowDownRight = createLucideIcon('arrow-down-right', __iconNode);\n\nexport default ArrowDownRight;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z',\n key: 'r04s7s',\n },\n ],\n];\n\n/**\n * @component @name Star\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/star\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 Star = createLucideIcon('star', __iconNode);\n\nexport default Star;\n","\"use client\";\r\n\r\nimport { Star, ArrowDownRight } from \"lucide-react\";\r\n\r\ninterface HeroShowcaseProps {\r\n heading?: string;\r\n description?: string;\r\n buttons?: {\r\n primary?: { text: string; url: string };\r\n secondary?: { text: string; url: string };\r\n };\r\n reviews?: {\r\n count: number;\r\n avatars: { src: string; alt: string }[];\r\n rating?: number;\r\n };\r\n className?: string;\r\n}\r\n\r\nexport function HeroShowcase({\r\n heading = \"Build beautiful UIs, effortlessly.\",\r\n description = \"Create stunning, animated interfaces in minutes.\",\r\n buttons = {\r\n primary: { text: \"Get Started\", url: \"#\" },\r\n secondary: { text: \"Watch demo\", url: \"#\" },\r\n },\r\n reviews = {\r\n count: 200,\r\n rating: 5.0,\r\n avatars: [\r\n { src: \"https://i.pravatar.cc/150?img=1\", alt: \"User 1\" },\r\n { src: \"https://i.pravatar.cc/150?img=2\", alt: \"User 2\" },\r\n { src: \"https://i.pravatar.cc/150?img=3\", alt: \"User 3\" },\r\n ],\r\n },\r\n className = \"\",\r\n}: HeroShowcaseProps) {\r\n return (\r\n <section className={`py-24 ${className}`}>\r\n <div className=\"mx-auto max-w-5xl px-6\">\r\n <div className=\"flex flex-col items-center text-center\">\r\n <h1 className=\"my-6 text-4xl font-bold lg:text-6xl\">{heading}</h1>\r\n <p className=\"text-muted-foreground mb-8 max-w-xl lg:text-xl\">{description}</p>\r\n\r\n <div className=\"mb-12 flex items-center gap-4\">\r\n <span className=\"inline-flex -space-x-4\">\r\n {reviews.avatars.map((avatar, index) => (\r\n <img\r\n key={index}\r\n src={avatar.src}\r\n alt={avatar.alt}\r\n className=\"size-12 rounded-full border-2 border-background\"\r\n />\r\n ))}\r\n </span>\r\n <div>\r\n <div className=\"flex items-center gap-1\">\r\n {[1, 2, 3, 4, 5].map((star) => (\r\n <Star key={star} className=\"size-5 fill-yellow-400 text-yellow-400\" />\r\n ))}\r\n <span className=\"ml-1 font-semibold\">{reviews.rating?.toFixed(1)}</span>\r\n </div>\r\n <p className=\"text-muted-foreground text-sm\">from {reviews.count}+ reviews</p>\r\n </div>\r\n </div>\r\n\r\n <div className=\"flex gap-4\">\r\n {buttons.primary && (\r\n <a\r\n href={buttons.primary.url}\r\n className=\"bg-primary text-primary-foreground hover:bg-primary/90 px-6 py-3 rounded-md font-medium\"\r\n >\r\n {buttons.primary.text}\r\n </a>\r\n )}\r\n {buttons.secondary && (\r\n <a\r\n href={buttons.secondary.url}\r\n className=\"border border-input hover:bg-accent px-6 py-3 rounded-md font-medium inline-flex items-center gap-2\"\r\n >\r\n {buttons.secondary.text}\r\n <ArrowDownRight className=\"size-4\" />\r\n </a>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n );\r\n}\r\n\r\nexport default HeroShowcase;\r\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import {forwardRef,createElement}from'react';import {jsx,jsxs}from'react/jsx-runtime';var m=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()),p=e=>{let a=k(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(),I=e=>{for(let a in e)if(a.startsWith("aria-")||a==="role"||a==="title")return true};var x={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 S=forwardRef(({color:e="currentColor",size:a=24,strokeWidth:t=2,absoluteStrokeWidth:u,className:f="",children:o,iconNode:n,...L},g)=>createElement("svg",{ref:g,...x,width:a,height:a,stroke:e,strokeWidth:u?Number(t)*24/Number(a):t,className:i("lucide",f),...!o&&!I(L)&&{"aria-hidden":"true"},...L},[...n.map(([h,w])=>createElement(h,w)),...Array.isArray(o)?o:[o]]));var c=(e,a)=>{let t=forwardRef(({className:u,...f},o)=>createElement(S,{ref:o,iconNode:a,className:i(`lucide-${m(p(e))}`,`lucide-${e}`,u),...f}));return t.displayName=p(e),t};var D=[["path",{d:"m7 7 10 10",key:"1fmybs"}],["path",{d:"M17 7v10H7",key:"6fjiku"}]],r=c("arrow-down-right",D);var F=[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]],s=c("star",F);function M({heading:e="Build beautiful UIs, effortlessly.",description:a="Create stunning, animated interfaces in minutes.",buttons:t={primary:{text:"Get Started",url:"#"},secondary:{text:"Watch demo",url:"#"}},reviews:u={count:200,rating:5,avatars:[{src:"https://i.pravatar.cc/150?img=1",alt:"User 1"},{src:"https://i.pravatar.cc/150?img=2",alt:"User 2"},{src:"https://i.pravatar.cc/150?img=3",alt:"User 3"}]},className:f=""}){return jsx("section",{className:`py-24 ${f}`,children:jsx("div",{className:"mx-auto max-w-5xl px-6",children:jsxs("div",{className:"flex flex-col items-center text-center",children:[jsx("h1",{className:"my-6 text-4xl font-bold lg:text-6xl",children:e}),jsx("p",{className:"text-muted-foreground mb-8 max-w-xl lg:text-xl",children:a}),jsxs("div",{className:"mb-12 flex items-center gap-4",children:[jsx("span",{className:"inline-flex -space-x-4",children:u.avatars.map((o,n)=>jsx("img",{src:o.src,alt:o.alt,className:"size-12 rounded-full border-2 border-background"},n))}),jsxs("div",{children:[jsxs("div",{className:"flex items-center gap-1",children:[[1,2,3,4,5].map(o=>jsx(s,{className:"size-5 fill-yellow-400 text-yellow-400"},o)),jsx("span",{className:"ml-1 font-semibold",children:u.rating?.toFixed(1)})]}),jsxs("p",{className:"text-muted-foreground text-sm",children:["from ",u.count,"+ reviews"]})]})]}),jsxs("div",{className:"flex gap-4",children:[t.primary&&jsx("a",{href:t.primary.url,className:"bg-primary text-primary-foreground hover:bg-primary/90 px-6 py-3 rounded-md font-medium",children:t.primary.text}),t.secondary&&jsxs("a",{href:t.secondary.url,className:"border border-input hover:bg-accent px-6 py-3 rounded-md font-medium inline-flex items-center gap-2",children:[t.secondary.text,jsx(r,{className:"size-4"})]})]})]})})})}var Q=M;/*! 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/arrow-down-right.js:
|
|
8
|
+
lucide-react/dist/esm/icons/star.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{M as HeroShowcase,Q 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/arrow-down-right.ts","../../../../node_modules/lucide-react/src/icons/star.ts","../../src/hero-showcase/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","ArrowDownRight","Star","HeroShowcase","heading","description","buttons","reviews","jsx","jsxs","avatar","star","hero_showcase_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: 'm7 7 10 10', key: '1fmybs' }],\n ['path', { d: 'M17 7v10H7', key: '6fjiku' }],\n];\n\n/**\n * @component @name ArrowDownRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/arrow-down-right\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 ArrowDownRight = createLucideIcon('arrow-down-right', __iconNode);\n\nexport default ArrowDownRight;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z',\n key: 'r04s7s',\n },\n ],\n];\n\n/**\n * @component @name Star\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/star\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 Star = createLucideIcon('star', __iconNode);\n\nexport default Star;\n","\"use client\";\r\n\r\nimport { Star, ArrowDownRight } from \"lucide-react\";\r\n\r\ninterface HeroShowcaseProps {\r\n heading?: string;\r\n description?: string;\r\n buttons?: {\r\n primary?: { text: string; url: string };\r\n secondary?: { text: string; url: string };\r\n };\r\n reviews?: {\r\n count: number;\r\n avatars: { src: string; alt: string }[];\r\n rating?: number;\r\n };\r\n className?: string;\r\n}\r\n\r\nexport function HeroShowcase({\r\n heading = \"Build beautiful UIs, effortlessly.\",\r\n description = \"Create stunning, animated interfaces in minutes.\",\r\n buttons = {\r\n primary: { text: \"Get Started\", url: \"#\" },\r\n secondary: { text: \"Watch demo\", url: \"#\" },\r\n },\r\n reviews = {\r\n count: 200,\r\n rating: 5.0,\r\n avatars: [\r\n { src: \"https://i.pravatar.cc/150?img=1\", alt: \"User 1\" },\r\n { src: \"https://i.pravatar.cc/150?img=2\", alt: \"User 2\" },\r\n { src: \"https://i.pravatar.cc/150?img=3\", alt: \"User 3\" },\r\n ],\r\n },\r\n className = \"\",\r\n}: HeroShowcaseProps) {\r\n return (\r\n <section className={`py-24 ${className}`}>\r\n <div className=\"mx-auto max-w-5xl px-6\">\r\n <div className=\"flex flex-col items-center text-center\">\r\n <h1 className=\"my-6 text-4xl font-bold lg:text-6xl\">{heading}</h1>\r\n <p className=\"text-muted-foreground mb-8 max-w-xl lg:text-xl\">{description}</p>\r\n\r\n <div className=\"mb-12 flex items-center gap-4\">\r\n <span className=\"inline-flex -space-x-4\">\r\n {reviews.avatars.map((avatar, index) => (\r\n <img\r\n key={index}\r\n src={avatar.src}\r\n alt={avatar.alt}\r\n className=\"size-12 rounded-full border-2 border-background\"\r\n />\r\n ))}\r\n </span>\r\n <div>\r\n <div className=\"flex items-center gap-1\">\r\n {[1, 2, 3, 4, 5].map((star) => (\r\n <Star key={star} className=\"size-5 fill-yellow-400 text-yellow-400\" />\r\n ))}\r\n <span className=\"ml-1 font-semibold\">{reviews.rating?.toFixed(1)}</span>\r\n </div>\r\n <p className=\"text-muted-foreground text-sm\">from {reviews.count}+ reviews</p>\r\n </div>\r\n </div>\r\n\r\n <div className=\"flex gap-4\">\r\n {buttons.primary && (\r\n <a\r\n href={buttons.primary.url}\r\n className=\"bg-primary text-primary-foreground hover:bg-primary/90 px-6 py-3 rounded-md font-medium\"\r\n >\r\n {buttons.primary.text}\r\n </a>\r\n )}\r\n {buttons.secondary && (\r\n <a\r\n href={buttons.secondary.url}\r\n className=\"border border-input hover:bg-accent px-6 py-3 rounded-md font-medium inline-flex items-center gap-2\"\r\n >\r\n {buttons.secondary.text}\r\n <ArrowDownRight className=\"size-4\" />\r\n </a>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n );\r\n}\r\n\r\nexport default HeroShowcase;\r\n"]}
|