bynana-ui 1.6.1 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/dist/action-search-bar/index.js +17 -0
  2. package/dist/action-search-bar/index.js.map +1 -0
  3. package/dist/action-search-bar/index.mjs +17 -0
  4. package/dist/action-search-bar/index.mjs.map +1 -0
  5. package/dist/ai-bar/index.js +19 -0
  6. package/dist/ai-bar/index.js.map +1 -0
  7. package/dist/ai-bar/index.mjs +19 -0
  8. package/dist/ai-bar/index.mjs.map +1 -0
  9. package/dist/ai-loading/index.js +2 -0
  10. package/dist/ai-loading/index.js.map +1 -0
  11. package/dist/ai-loading/index.mjs +2 -0
  12. package/dist/ai-loading/index.mjs.map +1 -0
  13. package/dist/ai-prompt/index.js +17 -0
  14. package/dist/ai-prompt/index.js.map +1 -0
  15. package/dist/ai-prompt/index.mjs +17 -0
  16. package/dist/ai-prompt/index.mjs.map +1 -0
  17. package/dist/aurora/index.js +2 -0
  18. package/dist/aurora/index.js.map +1 -0
  19. package/dist/aurora/index.mjs +2 -0
  20. package/dist/aurora/index.mjs.map +1 -0
  21. package/dist/elastic-search/index.js +17 -0
  22. package/dist/elastic-search/index.js.map +1 -0
  23. package/dist/elastic-search/index.mjs +17 -0
  24. package/dist/elastic-search/index.mjs.map +1 -0
  25. package/dist/faqs-accordion/index.js +16 -0
  26. package/dist/faqs-accordion/index.js.map +1 -0
  27. package/dist/faqs-accordion/index.mjs +16 -0
  28. package/dist/faqs-accordion/index.mjs.map +1 -0
  29. package/dist/faqs-grid/index.js +2 -0
  30. package/dist/faqs-grid/index.js.map +1 -0
  31. package/dist/faqs-grid/index.mjs +2 -0
  32. package/dist/faqs-grid/index.mjs.map +1 -0
  33. package/dist/footer-complex/index.js +2 -0
  34. package/dist/footer-complex/index.js.map +1 -0
  35. package/dist/footer-complex/index.mjs +2 -0
  36. package/dist/footer-complex/index.mjs.map +1 -0
  37. package/dist/footer-simple/index.js +2 -0
  38. package/dist/footer-simple/index.js.map +1 -0
  39. package/dist/footer-simple/index.mjs +2 -0
  40. package/dist/footer-simple/index.mjs.map +1 -0
  41. package/dist/hero-grid/index.js +16 -0
  42. package/dist/hero-grid/index.js.map +1 -0
  43. package/dist/hero-grid/index.mjs +16 -0
  44. package/dist/hero-grid/index.mjs.map +1 -0
  45. package/dist/hero-showcase/index.js +17 -0
  46. package/dist/hero-showcase/index.js.map +1 -0
  47. package/dist/hero-showcase/index.mjs +17 -0
  48. package/dist/hero-showcase/index.mjs.map +1 -0
  49. package/dist/index.js +55 -13
  50. package/dist/index.js.map +1 -1
  51. package/dist/index.mjs +55 -13
  52. package/dist/index.mjs.map +1 -1
  53. package/dist/job-listing/index.js +19 -0
  54. package/dist/job-listing/index.js.map +1 -0
  55. package/dist/job-listing/index.mjs +19 -0
  56. package/dist/job-listing/index.mjs.map +1 -0
  57. package/dist/logo-cloud/index.js +14 -0
  58. package/dist/logo-cloud/index.js.map +1 -0
  59. package/dist/logo-cloud/index.mjs +14 -0
  60. package/dist/logo-cloud/index.mjs.map +1 -0
  61. package/dist/pricing-modern/index.js +16 -0
  62. package/dist/pricing-modern/index.js.map +1 -0
  63. package/dist/pricing-modern/index.mjs +16 -0
  64. package/dist/pricing-modern/index.mjs.map +1 -0
  65. package/dist/scroll-float/index.js +2 -0
  66. package/dist/scroll-float/index.js.map +1 -0
  67. package/dist/scroll-float/index.mjs +2 -0
  68. package/dist/scroll-float/index.mjs.map +1 -0
  69. package/dist/scroll-reveal/index.js +2 -0
  70. package/dist/scroll-reveal/index.js.map +1 -0
  71. package/dist/scroll-reveal/index.mjs +2 -0
  72. package/dist/scroll-reveal/index.mjs.map +1 -0
  73. package/dist/scroll-stack/index.js +2 -0
  74. package/dist/scroll-stack/index.js.map +1 -0
  75. package/dist/scroll-stack/index.mjs +2 -0
  76. package/dist/scroll-stack/index.mjs.map +1 -0
  77. package/dist/squares/index.js +2 -0
  78. package/dist/squares/index.js.map +1 -0
  79. package/dist/squares/index.mjs +2 -0
  80. package/dist/squares/index.mjs.map +1 -0
  81. package/dist/team-carousel/index.js +17 -0
  82. package/dist/team-carousel/index.js.map +1 -0
  83. package/dist/team-carousel/index.mjs +17 -0
  84. package/dist/team-carousel/index.mjs.map +1 -0
  85. package/dist/testimonials-grid/index.js +17 -0
  86. package/dist/testimonials-grid/index.js.map +1 -0
  87. package/dist/testimonials-grid/index.mjs +17 -0
  88. package/dist/testimonials-grid/index.mjs.map +1 -0
  89. package/dist/testimonials-simple/index.js +3 -0
  90. package/dist/testimonials-simple/index.js.map +1 -0
  91. package/dist/testimonials-simple/index.mjs +3 -0
  92. package/dist/testimonials-simple/index.mjs.map +1 -0
  93. package/dist/threads/index.js +2 -0
  94. package/dist/threads/index.js.map +1 -0
  95. package/dist/threads/index.mjs +2 -0
  96. package/dist/threads/index.mjs.map +1 -0
  97. package/dist/waves/index.js +2 -0
  98. package/dist/waves/index.js.map +1 -0
  99. package/dist/waves/index.mjs +2 -0
  100. package/dist/waves/index.mjs.map +1 -0
  101. package/package.json +26 -2
@@ -0,0 +1,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 ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtNyA3IDEwIDEwIiAvPgogIDxwYXRoIGQ9Ik0xNyA3djEwSDciIC8+Cjwvc3ZnPgo=) - 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 ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTEuNTI1IDIuMjk1YS41My41MyAwIDAgMSAuOTUgMGwyLjMxIDQuNjc5YTIuMTIzIDIuMTIzIDAgMCAwIDEuNTk1IDEuMTZsNS4xNjYuNzU2YS41My41MyAwIDAgMSAuMjk0LjkwNGwtMy43MzYgMy42MzhhMi4xMjMgMi4xMjMgMCAwIDAtLjYxMSAxLjg3OGwuODgyIDUuMTRhLjUzLjUzIDAgMCAxLS43NzEuNTZsLTQuNjE4LTIuNDI4YTIuMTIyIDIuMTIyIDAgMCAwLTEuOTczIDBMNi4zOTYgMjEuMDFhLjUzLjUzIDAgMCAxLS43Ny0uNTZsLjg4MS01LjEzOWEyLjEyMiAyLjEyMiAwIDAgMC0uNjExLTEuODc5TDIuMTYgOS43OTVhLjUzLjUzIDAgMCAxIC4yOTQtLjkwNmw1LjE2NS0uNzU1YTIuMTIyIDIuMTIyIDAgMCAwIDEuNTk3LTEuMTZ6IiAvPgo8L3N2Zz4K) - 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 ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtNyA3IDEwIDEwIiAvPgogIDxwYXRoIGQ9Ik0xNyA3djEwSDciIC8+Cjwvc3ZnPgo=) - 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 ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTEuNTI1IDIuMjk1YS41My41MyAwIDAgMSAuOTUgMGwyLjMxIDQuNjc5YTIuMTIzIDIuMTIzIDAgMCAwIDEuNTk1IDEuMTZsNS4xNjYuNzU2YS41My41MyAwIDAgMSAuMjk0LjkwNGwtMy43MzYgMy42MzhhMi4xMjMgMi4xMjMgMCAwIDAtLjYxMSAxLjg3OGwuODgyIDUuMTRhLjUzLjUzIDAgMCAxLS43NzEuNTZsLTQuNjE4LTIuNDI4YTIuMTIyIDIuMTIyIDAgMCAwLTEuOTczIDBMNi4zOTYgMjEuMDFhLjUzLjUzIDAgMCAxLS43Ny0uNTZsLjg4MS01LjEzOWEyLjEyMiAyLjEyMiAwIDAgMC0uNjExLTEuODc5TDIuMTYgOS43OTVhLjUzLjUzIDAgMCAxIC4yOTQtLjkwNmw1LjE2NS0uNzU1YTIuMTIyIDIuMTIyIDAgMCAwIDEuNTk3LTEuMTZ6IiAvPgo8L3N2Zz4K) - 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"]}