bynana-ui 1.6.2 → 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.
- 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/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/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/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/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 +55 -13
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +55 -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/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/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/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/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 +26 -2
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),jsxRuntime=require('react/jsx-runtime');var I=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),A=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,t,d)=>d?d.toUpperCase():t.toLowerCase()),L=e=>{let a=A(e);return a.charAt(0).toUpperCase()+a.slice(1)},p=(...e)=>e.filter((a,t,d)=>!!a&&a.trim()!==""&&d.indexOf(a)===t).join(" ").trim(),x=e=>{for(let a in e)if(a.startsWith("aria-")||a==="role"||a==="title")return true};var C={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 h=react.forwardRef(({color:e="currentColor",size:a=24,strokeWidth:t=2,absoluteStrokeWidth:d,className:u="",children:f,iconNode:g,...m},k)=>react.createElement("svg",{ref:k,...C,width:a,height:a,stroke:e,strokeWidth:d?Number(t)*24/Number(a):t,className:p("lucide",u),...!f&&!x(m)&&{"aria-hidden":"true"},...m},[...g.map(([w,P])=>react.createElement(w,P)),...Array.isArray(f)?f:[f]]));var r=(e,a)=>{let t=react.forwardRef(({className:d,...u},f)=>react.createElement(h,{ref:f,iconNode:a,className:p(`lucide-${I(L(e))}`,`lucide-${e}`,d),...u}));return t.displayName=L(e),t};var M=[["path",{d:"M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16",key:"jecpp"}],["rect",{width:"20",height:"14",x:"2",y:"6",rx:"2",key:"i6l2r4"}]],s=r("briefcase",M);var R=[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],i=r("clock",R);var T=[["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}],["path",{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",key:"1b0p4s"}]],c=r("dollar-sign",T);var q=[["path",{d:"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0",key:"1r0f0z"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}]],n=r("map-pin",q);function y({title:e="Open Positions",description:a="Join our team and help build the future of UI development.",jobs:t=[{title:"Senior Frontend Engineer",department:"Engineering",location:"Remote",type:"Full-time",salary:"$120k - $180k",url:"#"},{title:"Product Designer",department:"Design",location:"San Francisco, CA",type:"Full-time",salary:"$100k - $150k",url:"#"},{title:"Developer Advocate",department:"Marketing",location:"Remote",type:"Full-time",salary:"$90k - $130k",url:"#"}],className:d=""}){return jsxRuntime.jsx("section",{className:`py-20 ${d}`,children:jsxRuntime.jsxs("div",{className:"mx-auto max-w-4xl px-6",children:[jsxRuntime.jsxs("div",{className:"text-center mb-12",children:[jsxRuntime.jsx("h2",{className:"mb-4 text-3xl font-bold lg:text-4xl",children:e}),jsxRuntime.jsx("p",{className:"text-muted-foreground text-lg max-w-2xl mx-auto",children:a})]}),jsxRuntime.jsx("div",{className:"space-y-4",children:t.map((u,f)=>jsxRuntime.jsx("a",{href:u.url,className:"block rounded-xl border p-6 transition-all hover:border-primary/50 hover:shadow-md",children:jsxRuntime.jsxs("div",{className:"flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",children:[jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("h3",{className:"text-xl font-semibold",children:u.title}),jsxRuntime.jsxs("div",{className:"mt-2 flex flex-wrap items-center gap-4 text-sm text-muted-foreground",children:[jsxRuntime.jsxs("span",{className:"flex items-center gap-1",children:[jsxRuntime.jsx(s,{className:"h-4 w-4"}),u.department]}),jsxRuntime.jsxs("span",{className:"flex items-center gap-1",children:[jsxRuntime.jsx(n,{className:"h-4 w-4"}),u.location]}),jsxRuntime.jsxs("span",{className:"flex items-center gap-1",children:[jsxRuntime.jsx(i,{className:"h-4 w-4"}),u.type]}),u.salary&&jsxRuntime.jsxs("span",{className:"flex items-center gap-1",children:[jsxRuntime.jsx(c,{className:"h-4 w-4"}),u.salary]})]})]}),jsxRuntime.jsx("button",{className:"bg-primary text-primary-foreground hover:bg-primary/90 rounded-md px-4 py-2 text-sm font-medium",children:"Apply Now"})]})},f))})]})})}var oa=y;/*! 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/briefcase.js:
|
|
8
|
+
lucide-react/dist/esm/icons/clock.js:
|
|
9
|
+
lucide-react/dist/esm/icons/dollar-sign.js:
|
|
10
|
+
lucide-react/dist/esm/icons/map-pin.js:
|
|
11
|
+
lucide-react/dist/esm/lucide-react.js:
|
|
12
|
+
(**
|
|
13
|
+
* @license lucide-react v0.545.0 - ISC
|
|
14
|
+
*
|
|
15
|
+
* This source code is licensed under the ISC license.
|
|
16
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
17
|
+
*)
|
|
18
|
+
*/exports.JobListing=y;exports.default=oa;//# sourceMappingURL=index.js.map
|
|
19
|
+
//# 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/briefcase.ts","../../../../node_modules/lucide-react/src/icons/clock.ts","../../../../node_modules/lucide-react/src/icons/dollar-sign.ts","../../../../node_modules/lucide-react/src/icons/map-pin.ts","../../src/job-listing/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","Briefcase","Clock","DollarSign","MapPin","JobListing","title","description","jobs","jsx","jsxs","job","job_listing_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: 'M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16', key: 'jecpp' }],\n ['rect', { width: '20', height: '14', x: '2', y: '6', rx: '2', key: 'i6l2r4' }],\n];\n\n/**\n * @component @name Briefcase\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/briefcase\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 Briefcase = createLucideIcon('briefcase', __iconNode);\n\nexport default Briefcase;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 6v6l4 2', key: 'mmk7yg' }],\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n];\n\n/**\n * @component @name Clock\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/clock\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 Clock = createLucideIcon('clock', __iconNode);\n\nexport default Clock;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['line', { x1: '12', x2: '12', y1: '2', y2: '22', key: '7eqyqh' }],\n ['path', { d: 'M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6', key: '1b0p4s' }],\n];\n\n/**\n * @component @name DollarSign\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/dollar-sign\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 DollarSign = createLucideIcon('dollar-sign', __iconNode);\n\nexport default DollarSign;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0',\n key: '1r0f0z',\n },\n ],\n ['circle', { cx: '12', cy: '10', r: '3', key: 'ilqhr7' }],\n];\n\n/**\n * @component @name MapPin\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/map-pin\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 MapPin = createLucideIcon('map-pin', __iconNode);\n\nexport default MapPin;\n","\"use client\";\r\n\r\nimport { MapPin, Clock, DollarSign, Briefcase } from \"lucide-react\";\r\n\r\ninterface Job {\r\n title: string;\r\n department: string;\r\n location: string;\r\n type: string;\r\n salary?: string;\r\n url?: string;\r\n}\r\n\r\ninterface JobListingProps {\r\n title?: string;\r\n description?: string;\r\n jobs?: Job[];\r\n className?: string;\r\n}\r\n\r\nexport function JobListing({\r\n title = \"Open Positions\",\r\n description = \"Join our team and help build the future of UI development.\",\r\n jobs = [\r\n {\r\n title: \"Senior Frontend Engineer\",\r\n department: \"Engineering\",\r\n location: \"Remote\",\r\n type: \"Full-time\",\r\n salary: \"$120k - $180k\",\r\n url: \"#\",\r\n },\r\n {\r\n title: \"Product Designer\",\r\n department: \"Design\",\r\n location: \"San Francisco, CA\",\r\n type: \"Full-time\",\r\n salary: \"$100k - $150k\",\r\n url: \"#\",\r\n },\r\n {\r\n title: \"Developer Advocate\",\r\n department: \"Marketing\",\r\n location: \"Remote\",\r\n type: \"Full-time\",\r\n salary: \"$90k - $130k\",\r\n url: \"#\",\r\n },\r\n ],\r\n className = \"\",\r\n}: JobListingProps) {\r\n return (\r\n <section className={`py-20 ${className}`}>\r\n <div className=\"mx-auto max-w-4xl px-6\">\r\n <div className=\"text-center mb-12\">\r\n <h2 className=\"mb-4 text-3xl font-bold lg:text-4xl\">{title}</h2>\r\n <p className=\"text-muted-foreground text-lg max-w-2xl mx-auto\">{description}</p>\r\n </div>\r\n\r\n <div className=\"space-y-4\">\r\n {jobs.map((job, index) => (\r\n <a\r\n key={index}\r\n href={job.url}\r\n className=\"block rounded-xl border p-6 transition-all hover:border-primary/50 hover:shadow-md\"\r\n >\r\n <div className=\"flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between\">\r\n <div>\r\n <h3 className=\"text-xl font-semibold\">{job.title}</h3>\r\n <div className=\"mt-2 flex flex-wrap items-center gap-4 text-sm text-muted-foreground\">\r\n <span className=\"flex items-center gap-1\">\r\n <Briefcase className=\"h-4 w-4\" />\r\n {job.department}\r\n </span>\r\n <span className=\"flex items-center gap-1\">\r\n <MapPin className=\"h-4 w-4\" />\r\n {job.location}\r\n </span>\r\n <span className=\"flex items-center gap-1\">\r\n <Clock className=\"h-4 w-4\" />\r\n {job.type}\r\n </span>\r\n {job.salary && (\r\n <span className=\"flex items-center gap-1\">\r\n <DollarSign className=\"h-4 w-4\" />\r\n {job.salary}\r\n </span>\r\n )}\r\n </div>\r\n </div>\r\n <button className=\"bg-primary text-primary-foreground hover:bg-primary/90 rounded-md px-4 py-2 text-sm font-medium\">\r\n Apply Now\r\n </button>\r\n </div>\r\n </a>\r\n ))}\r\n </div>\r\n </div>\r\n </section>\r\n );\r\n}\r\n\r\nexport default JobListing;\r\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import {forwardRef,createElement}from'react';import {jsx,jsxs}from'react/jsx-runtime';var I=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),A=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,t,d)=>d?d.toUpperCase():t.toLowerCase()),L=e=>{let a=A(e);return a.charAt(0).toUpperCase()+a.slice(1)},p=(...e)=>e.filter((a,t,d)=>!!a&&a.trim()!==""&&d.indexOf(a)===t).join(" ").trim(),x=e=>{for(let a in e)if(a.startsWith("aria-")||a==="role"||a==="title")return true};var C={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 h=forwardRef(({color:e="currentColor",size:a=24,strokeWidth:t=2,absoluteStrokeWidth:d,className:u="",children:f,iconNode:g,...m},k)=>createElement("svg",{ref:k,...C,width:a,height:a,stroke:e,strokeWidth:d?Number(t)*24/Number(a):t,className:p("lucide",u),...!f&&!x(m)&&{"aria-hidden":"true"},...m},[...g.map(([w,P])=>createElement(w,P)),...Array.isArray(f)?f:[f]]));var r=(e,a)=>{let t=forwardRef(({className:d,...u},f)=>createElement(h,{ref:f,iconNode:a,className:p(`lucide-${I(L(e))}`,`lucide-${e}`,d),...u}));return t.displayName=L(e),t};var M=[["path",{d:"M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16",key:"jecpp"}],["rect",{width:"20",height:"14",x:"2",y:"6",rx:"2",key:"i6l2r4"}]],s=r("briefcase",M);var R=[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],i=r("clock",R);var T=[["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}],["path",{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",key:"1b0p4s"}]],c=r("dollar-sign",T);var q=[["path",{d:"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0",key:"1r0f0z"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}]],n=r("map-pin",q);function y({title:e="Open Positions",description:a="Join our team and help build the future of UI development.",jobs:t=[{title:"Senior Frontend Engineer",department:"Engineering",location:"Remote",type:"Full-time",salary:"$120k - $180k",url:"#"},{title:"Product Designer",department:"Design",location:"San Francisco, CA",type:"Full-time",salary:"$100k - $150k",url:"#"},{title:"Developer Advocate",department:"Marketing",location:"Remote",type:"Full-time",salary:"$90k - $130k",url:"#"}],className:d=""}){return jsx("section",{className:`py-20 ${d}`,children:jsxs("div",{className:"mx-auto max-w-4xl px-6",children:[jsxs("div",{className:"text-center mb-12",children:[jsx("h2",{className:"mb-4 text-3xl font-bold lg:text-4xl",children:e}),jsx("p",{className:"text-muted-foreground text-lg max-w-2xl mx-auto",children:a})]}),jsx("div",{className:"space-y-4",children:t.map((u,f)=>jsx("a",{href:u.url,className:"block rounded-xl border p-6 transition-all hover:border-primary/50 hover:shadow-md",children:jsxs("div",{className:"flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",children:[jsxs("div",{children:[jsx("h3",{className:"text-xl font-semibold",children:u.title}),jsxs("div",{className:"mt-2 flex flex-wrap items-center gap-4 text-sm text-muted-foreground",children:[jsxs("span",{className:"flex items-center gap-1",children:[jsx(s,{className:"h-4 w-4"}),u.department]}),jsxs("span",{className:"flex items-center gap-1",children:[jsx(n,{className:"h-4 w-4"}),u.location]}),jsxs("span",{className:"flex items-center gap-1",children:[jsx(i,{className:"h-4 w-4"}),u.type]}),u.salary&&jsxs("span",{className:"flex items-center gap-1",children:[jsx(c,{className:"h-4 w-4"}),u.salary]})]})]}),jsx("button",{className:"bg-primary text-primary-foreground hover:bg-primary/90 rounded-md px-4 py-2 text-sm font-medium",children:"Apply Now"})]})},f))})]})})}var oa=y;/*! 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/briefcase.js:
|
|
8
|
+
lucide-react/dist/esm/icons/clock.js:
|
|
9
|
+
lucide-react/dist/esm/icons/dollar-sign.js:
|
|
10
|
+
lucide-react/dist/esm/icons/map-pin.js:
|
|
11
|
+
lucide-react/dist/esm/lucide-react.js:
|
|
12
|
+
(**
|
|
13
|
+
* @license lucide-react v0.545.0 - ISC
|
|
14
|
+
*
|
|
15
|
+
* This source code is licensed under the ISC license.
|
|
16
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
17
|
+
*)
|
|
18
|
+
*/export{y as JobListing,oa as default};//# sourceMappingURL=index.mjs.map
|
|
19
|
+
//# 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/briefcase.ts","../../../../node_modules/lucide-react/src/icons/clock.ts","../../../../node_modules/lucide-react/src/icons/dollar-sign.ts","../../../../node_modules/lucide-react/src/icons/map-pin.ts","../../src/job-listing/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","Briefcase","Clock","DollarSign","MapPin","JobListing","title","description","jobs","jsx","jsxs","job","job_listing_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: 'M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16', key: 'jecpp' }],\n ['rect', { width: '20', height: '14', x: '2', y: '6', rx: '2', key: 'i6l2r4' }],\n];\n\n/**\n * @component @name Briefcase\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/briefcase\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 Briefcase = createLucideIcon('briefcase', __iconNode);\n\nexport default Briefcase;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 6v6l4 2', key: 'mmk7yg' }],\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n];\n\n/**\n * @component @name Clock\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/clock\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 Clock = createLucideIcon('clock', __iconNode);\n\nexport default Clock;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['line', { x1: '12', x2: '12', y1: '2', y2: '22', key: '7eqyqh' }],\n ['path', { d: 'M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6', key: '1b0p4s' }],\n];\n\n/**\n * @component @name DollarSign\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/dollar-sign\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 DollarSign = createLucideIcon('dollar-sign', __iconNode);\n\nexport default DollarSign;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0',\n key: '1r0f0z',\n },\n ],\n ['circle', { cx: '12', cy: '10', r: '3', key: 'ilqhr7' }],\n];\n\n/**\n * @component @name MapPin\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/map-pin\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 MapPin = createLucideIcon('map-pin', __iconNode);\n\nexport default MapPin;\n","\"use client\";\r\n\r\nimport { MapPin, Clock, DollarSign, Briefcase } from \"lucide-react\";\r\n\r\ninterface Job {\r\n title: string;\r\n department: string;\r\n location: string;\r\n type: string;\r\n salary?: string;\r\n url?: string;\r\n}\r\n\r\ninterface JobListingProps {\r\n title?: string;\r\n description?: string;\r\n jobs?: Job[];\r\n className?: string;\r\n}\r\n\r\nexport function JobListing({\r\n title = \"Open Positions\",\r\n description = \"Join our team and help build the future of UI development.\",\r\n jobs = [\r\n {\r\n title: \"Senior Frontend Engineer\",\r\n department: \"Engineering\",\r\n location: \"Remote\",\r\n type: \"Full-time\",\r\n salary: \"$120k - $180k\",\r\n url: \"#\",\r\n },\r\n {\r\n title: \"Product Designer\",\r\n department: \"Design\",\r\n location: \"San Francisco, CA\",\r\n type: \"Full-time\",\r\n salary: \"$100k - $150k\",\r\n url: \"#\",\r\n },\r\n {\r\n title: \"Developer Advocate\",\r\n department: \"Marketing\",\r\n location: \"Remote\",\r\n type: \"Full-time\",\r\n salary: \"$90k - $130k\",\r\n url: \"#\",\r\n },\r\n ],\r\n className = \"\",\r\n}: JobListingProps) {\r\n return (\r\n <section className={`py-20 ${className}`}>\r\n <div className=\"mx-auto max-w-4xl px-6\">\r\n <div className=\"text-center mb-12\">\r\n <h2 className=\"mb-4 text-3xl font-bold lg:text-4xl\">{title}</h2>\r\n <p className=\"text-muted-foreground text-lg max-w-2xl mx-auto\">{description}</p>\r\n </div>\r\n\r\n <div className=\"space-y-4\">\r\n {jobs.map((job, index) => (\r\n <a\r\n key={index}\r\n href={job.url}\r\n className=\"block rounded-xl border p-6 transition-all hover:border-primary/50 hover:shadow-md\"\r\n >\r\n <div className=\"flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between\">\r\n <div>\r\n <h3 className=\"text-xl font-semibold\">{job.title}</h3>\r\n <div className=\"mt-2 flex flex-wrap items-center gap-4 text-sm text-muted-foreground\">\r\n <span className=\"flex items-center gap-1\">\r\n <Briefcase className=\"h-4 w-4\" />\r\n {job.department}\r\n </span>\r\n <span className=\"flex items-center gap-1\">\r\n <MapPin className=\"h-4 w-4\" />\r\n {job.location}\r\n </span>\r\n <span className=\"flex items-center gap-1\">\r\n <Clock className=\"h-4 w-4\" />\r\n {job.type}\r\n </span>\r\n {job.salary && (\r\n <span className=\"flex items-center gap-1\">\r\n <DollarSign className=\"h-4 w-4\" />\r\n {job.salary}\r\n </span>\r\n )}\r\n </div>\r\n </div>\r\n <button className=\"bg-primary text-primary-foreground hover:bg-primary/90 rounded-md px-4 py-2 text-sm font-medium\">\r\n Apply Now\r\n </button>\r\n </div>\r\n </a>\r\n ))}\r\n </div>\r\n </div>\r\n </section>\r\n );\r\n}\r\n\r\nexport default JobListing;\r\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var jsxRuntime=require('react/jsx-runtime');function o({title:s="Trusted by the world's most innovative teams",description:l="Join thousands of developers building with us",logos:t=[],className:n=""}){return jsxRuntime.jsxs("div",{className:`overflow-hidden py-20 ${n}`,children:[jsxRuntime.jsxs("div",{className:"mx-auto max-w-7xl px-6",children:[jsxRuntime.jsxs("div",{className:"mb-16 text-center",children:[jsxRuntime.jsx("h2",{className:"mb-4 text-2xl font-bold lg:text-3xl",children:s}),jsxRuntime.jsx("p",{className:"text-muted-foreground text-lg",children:l})]}),jsxRuntime.jsx("div",{className:"relative overflow-hidden",style:{maskImage:"linear-gradient(to right, transparent, black 20%, black 80%, transparent)",WebkitMaskImage:"linear-gradient(to right, transparent, black 20%, black 80%, transparent)"},children:jsxRuntime.jsx("div",{className:"flex animate-scroll gap-8",children:[...t,...t,...t].map((a,i)=>jsxRuntime.jsx("a",{href:a.url,target:"_blank",rel:"noopener noreferrer",className:"flex flex-shrink-0 items-center justify-center p-6 transition-all hover:scale-105",children:jsxRuntime.jsx("div",{className:"text-4xl hover:scale-110 transition-transform",children:a.logo})},`${a.name}-${i}`))})})]}),jsxRuntime.jsx("style",{jsx:true,children:`
|
|
2
|
+
@keyframes scroll {
|
|
3
|
+
0% {
|
|
4
|
+
transform: translateX(0);
|
|
5
|
+
}
|
|
6
|
+
100% {
|
|
7
|
+
transform: translateX(-33.333%);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
.animate-scroll {
|
|
11
|
+
animation: scroll 25s linear infinite;
|
|
12
|
+
}
|
|
13
|
+
`})]})}var d=o;exports.LogoCloud=o;exports.default=d;//# sourceMappingURL=index.js.map
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/logo-cloud/index.tsx"],"names":["LogoCloud","title","description","logos","className","jsxs","jsx","logo","index","logo_cloud_default"],"mappings":"kHAeO,SAASA,CAAAA,CAAU,CACxB,KAAA,CAAAC,CAAAA,CAAQ,8CAAA,CACR,WAAA,CAAAC,CAAAA,CAAc,gDACd,KAAA,CAAAC,CAAAA,CAAQ,EAAC,CACT,SAAA,CAAAC,CAAAA,CAAY,EACd,CAAA,CAAmB,CACjB,OACEC,eAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAW,CAAA,sBAAA,EAAyBD,CAAS,CAAA,CAAA,CAChD,QAAA,CAAA,CAAAC,eAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wBAAA,CACb,QAAA,CAAA,CAAAA,eAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,mBAAA,CACb,QAAA,CAAA,CAAAC,cAAAA,CAAC,IAAA,CAAA,CAAG,SAAA,CAAU,qCAAA,CAAuC,QAAA,CAAAL,CAAAA,CAAM,CAAA,CAC3DK,cAAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAU,+BAAA,CAAiC,QAAA,CAAAJ,CAAAA,CAAY,CAAA,CAAA,CAC5D,CAAA,CAEAI,cAAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAU,2BACV,KAAA,CAAO,CACL,SAAA,CACE,2EAAA,CACF,eAAA,CACE,2EACJ,CAAA,CAEA,QAAA,CAAAA,cAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,2BAAA,CACZ,QAAA,CAAA,CAAC,GAAGH,EAAO,GAAGA,CAAAA,CAAO,GAAGA,CAAK,CAAA,CAAE,GAAA,CAAI,CAACI,CAAAA,CAAMC,CAAAA,GACzCF,cAAAA,CAAC,GAAA,CAAA,CAEC,IAAA,CAAMC,CAAAA,CAAK,GAAA,CACX,OAAO,QAAA,CACP,GAAA,CAAI,qBAAA,CACJ,SAAA,CAAU,mFAAA,CAEV,QAAA,CAAAD,cAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,+CAAA,CAAiD,QAAA,CAAAC,CAAAA,CAAK,IAAA,CAAK,CAAA,CAAA,CANrE,CAAA,EAAGA,CAAAA,CAAK,IAAI,CAAA,CAAA,EAAIC,CAAK,CAAA,CAO5B,CACD,CAAA,CACH,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAEAF,cAAAA,CAAC,OAAA,CAAA,CAAM,GAAA,CAAG,IAAA,CAAE,QAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAA,CAAA,CAYV,CAAA,CAAA,CACJ,CAEJ,CAEA,IAAOG,CAAAA,CAAQT","file":"index.js","sourcesContent":["\"use client\";\r\n\r\nimport { ReactNode } from \"react\";\r\n\r\ninterface LogoCloudProps {\r\n title?: string;\r\n description?: string;\r\n logos?: Array<{\r\n name: string;\r\n logo: ReactNode;\r\n url?: string;\r\n }>;\r\n className?: string;\r\n}\r\n\r\nexport function LogoCloud({\r\n title = \"Trusted by the world's most innovative teams\",\r\n description = \"Join thousands of developers building with us\",\r\n logos = [],\r\n className = \"\",\r\n}: LogoCloudProps) {\r\n return (\r\n <div className={`overflow-hidden py-20 ${className}`}>\r\n <div className=\"mx-auto max-w-7xl px-6\">\r\n <div className=\"mb-16 text-center\">\r\n <h2 className=\"mb-4 text-2xl font-bold lg:text-3xl\">{title}</h2>\r\n <p className=\"text-muted-foreground text-lg\">{description}</p>\r\n </div>\r\n\r\n <div\r\n className=\"relative overflow-hidden\"\r\n style={{\r\n maskImage:\r\n \"linear-gradient(to right, transparent, black 20%, black 80%, transparent)\",\r\n WebkitMaskImage:\r\n \"linear-gradient(to right, transparent, black 20%, black 80%, transparent)\",\r\n }}\r\n >\r\n <div className=\"flex animate-scroll gap-8\">\r\n {[...logos, ...logos, ...logos].map((logo, index) => (\r\n <a\r\n key={`${logo.name}-${index}`}\r\n href={logo.url}\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n className=\"flex flex-shrink-0 items-center justify-center p-6 transition-all hover:scale-105\"\r\n >\r\n <div className=\"text-4xl hover:scale-110 transition-transform\">{logo.logo}</div>\r\n </a>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <style jsx>{`\r\n @keyframes scroll {\r\n 0% {\r\n transform: translateX(0);\r\n }\r\n 100% {\r\n transform: translateX(-33.333%);\r\n }\r\n }\r\n .animate-scroll {\r\n animation: scroll 25s linear infinite;\r\n }\r\n `}</style>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LogoCloud;\r\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import {jsxs,jsx}from'react/jsx-runtime';function o({title:s="Trusted by the world's most innovative teams",description:l="Join thousands of developers building with us",logos:t=[],className:n=""}){return jsxs("div",{className:`overflow-hidden py-20 ${n}`,children:[jsxs("div",{className:"mx-auto max-w-7xl px-6",children:[jsxs("div",{className:"mb-16 text-center",children:[jsx("h2",{className:"mb-4 text-2xl font-bold lg:text-3xl",children:s}),jsx("p",{className:"text-muted-foreground text-lg",children:l})]}),jsx("div",{className:"relative overflow-hidden",style:{maskImage:"linear-gradient(to right, transparent, black 20%, black 80%, transparent)",WebkitMaskImage:"linear-gradient(to right, transparent, black 20%, black 80%, transparent)"},children:jsx("div",{className:"flex animate-scroll gap-8",children:[...t,...t,...t].map((a,i)=>jsx("a",{href:a.url,target:"_blank",rel:"noopener noreferrer",className:"flex flex-shrink-0 items-center justify-center p-6 transition-all hover:scale-105",children:jsx("div",{className:"text-4xl hover:scale-110 transition-transform",children:a.logo})},`${a.name}-${i}`))})})]}),jsx("style",{jsx:true,children:`
|
|
2
|
+
@keyframes scroll {
|
|
3
|
+
0% {
|
|
4
|
+
transform: translateX(0);
|
|
5
|
+
}
|
|
6
|
+
100% {
|
|
7
|
+
transform: translateX(-33.333%);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
.animate-scroll {
|
|
11
|
+
animation: scroll 25s linear infinite;
|
|
12
|
+
}
|
|
13
|
+
`})]})}var d=o;export{o as LogoCloud,d as default};//# sourceMappingURL=index.mjs.map
|
|
14
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/logo-cloud/index.tsx"],"names":["LogoCloud","title","description","logos","className","jsxs","jsx","logo","index","logo_cloud_default"],"mappings":"yCAeO,SAASA,CAAAA,CAAU,CACxB,KAAA,CAAAC,CAAAA,CAAQ,8CAAA,CACR,WAAA,CAAAC,CAAAA,CAAc,gDACd,KAAA,CAAAC,CAAAA,CAAQ,EAAC,CACT,SAAA,CAAAC,CAAAA,CAAY,EACd,CAAA,CAAmB,CACjB,OACEC,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAW,CAAA,sBAAA,EAAyBD,CAAS,CAAA,CAAA,CAChD,QAAA,CAAA,CAAAC,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wBAAA,CACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,mBAAA,CACb,QAAA,CAAA,CAAAC,GAAAA,CAAC,IAAA,CAAA,CAAG,SAAA,CAAU,qCAAA,CAAuC,QAAA,CAAAL,CAAAA,CAAM,CAAA,CAC3DK,GAAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAU,+BAAA,CAAiC,QAAA,CAAAJ,CAAAA,CAAY,CAAA,CAAA,CAC5D,CAAA,CAEAI,GAAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAU,2BACV,KAAA,CAAO,CACL,SAAA,CACE,2EAAA,CACF,eAAA,CACE,2EACJ,CAAA,CAEA,QAAA,CAAAA,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,2BAAA,CACZ,QAAA,CAAA,CAAC,GAAGH,EAAO,GAAGA,CAAAA,CAAO,GAAGA,CAAK,CAAA,CAAE,GAAA,CAAI,CAACI,CAAAA,CAAMC,CAAAA,GACzCF,GAAAA,CAAC,GAAA,CAAA,CAEC,IAAA,CAAMC,CAAAA,CAAK,GAAA,CACX,OAAO,QAAA,CACP,GAAA,CAAI,qBAAA,CACJ,SAAA,CAAU,mFAAA,CAEV,QAAA,CAAAD,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,+CAAA,CAAiD,QAAA,CAAAC,CAAAA,CAAK,IAAA,CAAK,CAAA,CAAA,CANrE,CAAA,EAAGA,CAAAA,CAAK,IAAI,CAAA,CAAA,EAAIC,CAAK,CAAA,CAO5B,CACD,CAAA,CACH,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAEAF,GAAAA,CAAC,OAAA,CAAA,CAAM,GAAA,CAAG,IAAA,CAAE,QAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAA,CAAA,CAYV,CAAA,CAAA,CACJ,CAEJ,CAEA,IAAOG,CAAAA,CAAQT","file":"index.mjs","sourcesContent":["\"use client\";\r\n\r\nimport { ReactNode } from \"react\";\r\n\r\ninterface LogoCloudProps {\r\n title?: string;\r\n description?: string;\r\n logos?: Array<{\r\n name: string;\r\n logo: ReactNode;\r\n url?: string;\r\n }>;\r\n className?: string;\r\n}\r\n\r\nexport function LogoCloud({\r\n title = \"Trusted by the world's most innovative teams\",\r\n description = \"Join thousands of developers building with us\",\r\n logos = [],\r\n className = \"\",\r\n}: LogoCloudProps) {\r\n return (\r\n <div className={`overflow-hidden py-20 ${className}`}>\r\n <div className=\"mx-auto max-w-7xl px-6\">\r\n <div className=\"mb-16 text-center\">\r\n <h2 className=\"mb-4 text-2xl font-bold lg:text-3xl\">{title}</h2>\r\n <p className=\"text-muted-foreground text-lg\">{description}</p>\r\n </div>\r\n\r\n <div\r\n className=\"relative overflow-hidden\"\r\n style={{\r\n maskImage:\r\n \"linear-gradient(to right, transparent, black 20%, black 80%, transparent)\",\r\n WebkitMaskImage:\r\n \"linear-gradient(to right, transparent, black 20%, black 80%, transparent)\",\r\n }}\r\n >\r\n <div className=\"flex animate-scroll gap-8\">\r\n {[...logos, ...logos, ...logos].map((logo, index) => (\r\n <a\r\n key={`${logo.name}-${index}`}\r\n href={logo.url}\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n className=\"flex flex-shrink-0 items-center justify-center p-6 transition-all hover:scale-105\"\r\n >\r\n <div className=\"text-4xl hover:scale-110 transition-transform\">{logo.logo}</div>\r\n </a>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <style jsx>{`\r\n @keyframes scroll {\r\n 0% {\r\n transform: translateX(0);\r\n }\r\n 100% {\r\n transform: translateX(-33.333%);\r\n }\r\n }\r\n .animate-scroll {\r\n animation: scroll 25s linear infinite;\r\n }\r\n `}</style>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LogoCloud;\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 p=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),P=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,o,d)=>d?d.toUpperCase():o.toLowerCase()),n=e=>{let a=P(e);return a.charAt(0).toUpperCase()+a.slice(1)},c=(...e)=>e.filter((a,o,d)=>!!a&&a.trim()!==""&&d.indexOf(a)===o).join(" ").trim(),m=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 x=react.forwardRef(({color:e="currentColor",size:a=24,strokeWidth:o=2,absoluteStrokeWidth:d,className:f="",children:l,iconNode:u,...s},S)=>react.createElement("svg",{ref:S,...L,width:a,height:a,stroke:e,strokeWidth:d?Number(o)*24/Number(a):o,className:c("lucide",f),...!l&&!m(s)&&{"aria-hidden":"true"},...s},[...u.map(([g,h])=>react.createElement(g,h)),...Array.isArray(l)?l:[l]]));var C=(e,a)=>{let o=react.forwardRef(({className:d,...f},l)=>react.createElement(x,{ref:l,iconNode:a,className:c(`lucide-${p(n(e))}`,`lucide-${e}`,d),...f}));return o.displayName=n(e),o};var B=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],i=C("check",B);function M({title:e="Choose your perfect plan",description:a="Modern pricing plans designed for teams of all sizes.",plans:o=[{name:"Basic",price:{monthly:15,annually:10},description:"Perfect for startups",features:["1 Project","Email Support","Core Features","Basic Analytics"]},{name:"Pro",price:{monthly:35,annually:25},description:"Best for teams",features:["Unlimited Projects","Priority Support","Team Collaboration","Advanced Analytics"],featured:true},{name:"Enterprise",price:"custom",description:"Tailored solutions",features:["Everything in Pro","Dedicated Manager","Custom Integrations","SLA & Support"],buttonText:"Contact Sales"}],className:d=""}){let[f,l]=react.useState(true);return jsxRuntime.jsx("section",{className:`py-16 md:py-32 ${d}`,children:jsxRuntime.jsxs("div",{className:"mx-auto max-w-5xl px-6",children:[jsxRuntime.jsxs("div",{className:"mx-auto max-w-2xl text-center",children:[jsxRuntime.jsx("h2",{className:"text-3xl font-bold md:text-4xl lg:text-5xl",children:e}),jsxRuntime.jsx("p",{className:"text-muted-foreground mx-auto mt-4 max-w-xl text-lg",children:a}),jsxRuntime.jsx("div",{className:"my-12",children:jsxRuntime.jsxs("div",{className:"relative mx-auto grid w-fit grid-cols-2 rounded-full border p-1",children:[jsxRuntime.jsx("div",{className:`pointer-events-none absolute inset-1 w-1/2 rounded-full bg-primary transition-transform duration-500 ${f?"translate-x-full":"translate-x-0"}`}),jsxRuntime.jsx("button",{onClick:()=>l(false),className:`relative h-8 w-24 rounded-full text-sm ${f?"":"text-primary-foreground font-medium"}`,children:"Monthly"}),jsxRuntime.jsx("button",{onClick:()=>l(true),className:`relative h-8 w-24 rounded-full text-sm ${f?"text-primary-foreground font-medium":""}`,children:"Annually"})]})})]}),jsxRuntime.jsx("div",{className:"grid grid-cols-1 gap-6 md:grid-cols-3",children:o.map(u=>jsxRuntime.jsxs("div",{className:`relative flex flex-col rounded-2xl border p-8 ${u.featured?"border-2 border-primary":""}`,children:[u.featured&&jsxRuntime.jsx("div",{className:"absolute top-0 right-0 bg-primary text-primary-foreground rounded-full px-2 py-1 text-xs font-bold m-4",children:"Most Popular"}),jsxRuntime.jsx("h3",{className:"mb-4 text-2xl font-bold",children:u.name}),jsxRuntime.jsxs("div",{className:"mb-6",children:[jsxRuntime.jsx("span",{className:"text-3xl font-semibold",children:u.price==="custom"?"Custom":`${f?u.price.annually:u.price.monthly}\u20AC`}),jsxRuntime.jsx("span",{className:"text-muted-foreground mx-2",children:"\u2022"}),jsxRuntime.jsx("span",{className:"text-muted-foreground",children:u.description})]}),jsxRuntime.jsx("button",{className:"bg-primary text-primary-foreground hover:bg-primary/90 mb-6 h-10 w-full rounded-md px-4 py-2 text-sm font-medium",children:u.buttonText||"Get Started"}),jsxRuntime.jsx("ul",{className:"space-y-3",children:u.features.map(s=>jsxRuntime.jsxs("li",{className:"flex items-center gap-3 text-sm",children:[jsxRuntime.jsx("div",{className:"flex h-4 w-4 items-center justify-center rounded-full bg-primary",children:jsxRuntime.jsx(i,{className:"h-2 w-2 text-primary-foreground"})}),s]},s))})]},u.name))})]})})}var N=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/check.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.PricingModern=M;exports.default=N;//# sourceMappingURL=index.js.map
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../node_modules/shared/src/utils.ts","../../../../node_modules/lucide-react/src/defaultAttributes.ts","../../../../node_modules/lucide-react/src/Icon.ts","../../../../node_modules/lucide-react/src/createLucideIcon.ts","../../../../node_modules/lucide-react/src/icons/check.ts","../../src/pricing-modern/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","Check","PricingModern","title","description","plans","isAnnual","setIsAnnual","useState","jsx","jsxs","plan","feature","pricing_modern_default"],"mappings":"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","file":"index.js","sourcesContent":["import { CamelToPascal } from './utility-types';\n\n/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n\n/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = <T extends string>(string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = <T extends string>(string: T): CamelToPascal<T> => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal<T>;\n};\n\n/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = <ClassType = string | undefined | null>(...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n\n/**\n * Is empty string\n *\n * @param {unknown} value\n * @returns {boolean} Whether the value is an empty string\n */\nexport const isEmptyString = (value: unknown): boolean => value === '';\n\n/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: Record<string, any>) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n};\n","export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n","import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, hasA11yProp } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef<SVGSVGElement, IconComponentProps>(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) =>\n createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('lucide', className),\n ...(!children && !hasA11yProp(rest) && { 'aria-hidden': 'true' }),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n ),\n);\n\nexport default Icon;\n","import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef<SVGSVGElement, LucideProps>(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createLucideIcon;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'M20 6 9 17l-5-5', key: '1gmf2c' }]];\n\n/**\n * @component @name Check\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/check\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 Check = createLucideIcon('check', __iconNode);\n\nexport default Check;\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { Check } from \"lucide-react\";\r\n\r\ninterface PricingPlan {\r\n name: string;\r\n price: { monthly: number; annually: number } | \"custom\";\r\n description: string;\r\n features: string[];\r\n featured?: boolean;\r\n buttonText?: string;\r\n}\r\n\r\ninterface PricingModernProps {\r\n title?: string;\r\n description?: string;\r\n plans?: PricingPlan[];\r\n className?: string;\r\n}\r\n\r\nexport function PricingModern({\r\n title = \"Choose your perfect plan\",\r\n description = \"Modern pricing plans designed for teams of all sizes.\",\r\n plans = [\r\n {\r\n name: \"Basic\",\r\n price: { monthly: 15, annually: 10 },\r\n description: \"Perfect for startups\",\r\n features: [\"1 Project\", \"Email Support\", \"Core Features\", \"Basic Analytics\"],\r\n },\r\n {\r\n name: \"Pro\",\r\n price: { monthly: 35, annually: 25 },\r\n description: \"Best for teams\",\r\n features: [\"Unlimited Projects\", \"Priority Support\", \"Team Collaboration\", \"Advanced Analytics\"],\r\n featured: true,\r\n },\r\n {\r\n name: \"Enterprise\",\r\n price: \"custom\",\r\n description: \"Tailored solutions\",\r\n features: [\"Everything in Pro\", \"Dedicated Manager\", \"Custom Integrations\", \"SLA & Support\"],\r\n buttonText: \"Contact Sales\",\r\n },\r\n ],\r\n className = \"\",\r\n}: PricingModernProps) {\r\n const [isAnnual, setIsAnnual] = useState(true);\r\n\r\n return (\r\n <section className={`py-16 md:py-32 ${className}`}>\r\n <div className=\"mx-auto max-w-5xl px-6\">\r\n <div className=\"mx-auto max-w-2xl text-center\">\r\n <h2 className=\"text-3xl font-bold md:text-4xl lg:text-5xl\">{title}</h2>\r\n <p className=\"text-muted-foreground mx-auto mt-4 max-w-xl text-lg\">{description}</p>\r\n\r\n <div className=\"my-12\">\r\n <div className=\"relative mx-auto grid w-fit grid-cols-2 rounded-full border p-1\">\r\n <div\r\n className={`pointer-events-none absolute inset-1 w-1/2 rounded-full bg-primary transition-transform duration-500 ${\r\n isAnnual ? \"translate-x-full\" : \"translate-x-0\"\r\n }`}\r\n />\r\n <button\r\n onClick={() => setIsAnnual(false)}\r\n className={`relative h-8 w-24 rounded-full text-sm ${!isAnnual ? \"text-primary-foreground font-medium\" : \"\"}`}\r\n >\r\n Monthly\r\n </button>\r\n <button\r\n onClick={() => setIsAnnual(true)}\r\n className={`relative h-8 w-24 rounded-full text-sm ${isAnnual ? \"text-primary-foreground font-medium\" : \"\"}`}\r\n >\r\n Annually\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div className=\"grid grid-cols-1 gap-6 md:grid-cols-3\">\r\n {plans.map((plan) => (\r\n <div\r\n key={plan.name}\r\n className={`relative flex flex-col rounded-2xl border p-8 ${\r\n plan.featured ? \"border-2 border-primary\" : \"\"\r\n }`}\r\n >\r\n {plan.featured && (\r\n <div className=\"absolute top-0 right-0 bg-primary text-primary-foreground rounded-full px-2 py-1 text-xs font-bold m-4\">\r\n Most Popular\r\n </div>\r\n )}\r\n\r\n <h3 className=\"mb-4 text-2xl font-bold\">{plan.name}</h3>\r\n\r\n <div className=\"mb-6\">\r\n <span className=\"text-3xl font-semibold\">\r\n {plan.price === \"custom\"\r\n ? \"Custom\"\r\n : `${isAnnual ? plan.price.annually : plan.price.monthly}€`}\r\n </span>\r\n <span className=\"text-muted-foreground mx-2\">•</span>\r\n <span className=\"text-muted-foreground\">{plan.description}</span>\r\n </div>\r\n\r\n <button className=\"bg-primary text-primary-foreground hover:bg-primary/90 mb-6 h-10 w-full rounded-md px-4 py-2 text-sm font-medium\">\r\n {plan.buttonText || \"Get Started\"}\r\n </button>\r\n\r\n <ul className=\"space-y-3\">\r\n {plan.features.map((feature) => (\r\n <li key={feature} className=\"flex items-center gap-3 text-sm\">\r\n <div className=\"flex h-4 w-4 items-center justify-center rounded-full bg-primary\">\r\n <Check className=\"h-2 w-2 text-primary-foreground\" />\r\n </div>\r\n {feature}\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </section>\r\n );\r\n}\r\n\r\nexport default PricingModern;\r\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import {forwardRef,createElement,useState}from'react';import {jsx,jsxs}from'react/jsx-runtime';var p=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),P=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,o,d)=>d?d.toUpperCase():o.toLowerCase()),n=e=>{let a=P(e);return a.charAt(0).toUpperCase()+a.slice(1)},c=(...e)=>e.filter((a,o,d)=>!!a&&a.trim()!==""&&d.indexOf(a)===o).join(" ").trim(),m=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 x=forwardRef(({color:e="currentColor",size:a=24,strokeWidth:o=2,absoluteStrokeWidth:d,className:f="",children:l,iconNode:u,...s},S)=>createElement("svg",{ref:S,...L,width:a,height:a,stroke:e,strokeWidth:d?Number(o)*24/Number(a):o,className:c("lucide",f),...!l&&!m(s)&&{"aria-hidden":"true"},...s},[...u.map(([g,h])=>createElement(g,h)),...Array.isArray(l)?l:[l]]));var C=(e,a)=>{let o=forwardRef(({className:d,...f},l)=>createElement(x,{ref:l,iconNode:a,className:c(`lucide-${p(n(e))}`,`lucide-${e}`,d),...f}));return o.displayName=n(e),o};var B=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],i=C("check",B);function M({title:e="Choose your perfect plan",description:a="Modern pricing plans designed for teams of all sizes.",plans:o=[{name:"Basic",price:{monthly:15,annually:10},description:"Perfect for startups",features:["1 Project","Email Support","Core Features","Basic Analytics"]},{name:"Pro",price:{monthly:35,annually:25},description:"Best for teams",features:["Unlimited Projects","Priority Support","Team Collaboration","Advanced Analytics"],featured:true},{name:"Enterprise",price:"custom",description:"Tailored solutions",features:["Everything in Pro","Dedicated Manager","Custom Integrations","SLA & Support"],buttonText:"Contact Sales"}],className:d=""}){let[f,l]=useState(true);return jsx("section",{className:`py-16 md:py-32 ${d}`,children:jsxs("div",{className:"mx-auto max-w-5xl px-6",children:[jsxs("div",{className:"mx-auto max-w-2xl text-center",children:[jsx("h2",{className:"text-3xl font-bold md:text-4xl lg:text-5xl",children:e}),jsx("p",{className:"text-muted-foreground mx-auto mt-4 max-w-xl text-lg",children:a}),jsx("div",{className:"my-12",children:jsxs("div",{className:"relative mx-auto grid w-fit grid-cols-2 rounded-full border p-1",children:[jsx("div",{className:`pointer-events-none absolute inset-1 w-1/2 rounded-full bg-primary transition-transform duration-500 ${f?"translate-x-full":"translate-x-0"}`}),jsx("button",{onClick:()=>l(false),className:`relative h-8 w-24 rounded-full text-sm ${f?"":"text-primary-foreground font-medium"}`,children:"Monthly"}),jsx("button",{onClick:()=>l(true),className:`relative h-8 w-24 rounded-full text-sm ${f?"text-primary-foreground font-medium":""}`,children:"Annually"})]})})]}),jsx("div",{className:"grid grid-cols-1 gap-6 md:grid-cols-3",children:o.map(u=>jsxs("div",{className:`relative flex flex-col rounded-2xl border p-8 ${u.featured?"border-2 border-primary":""}`,children:[u.featured&&jsx("div",{className:"absolute top-0 right-0 bg-primary text-primary-foreground rounded-full px-2 py-1 text-xs font-bold m-4",children:"Most Popular"}),jsx("h3",{className:"mb-4 text-2xl font-bold",children:u.name}),jsxs("div",{className:"mb-6",children:[jsx("span",{className:"text-3xl font-semibold",children:u.price==="custom"?"Custom":`${f?u.price.annually:u.price.monthly}\u20AC`}),jsx("span",{className:"text-muted-foreground mx-2",children:"\u2022"}),jsx("span",{className:"text-muted-foreground",children:u.description})]}),jsx("button",{className:"bg-primary text-primary-foreground hover:bg-primary/90 mb-6 h-10 w-full rounded-md px-4 py-2 text-sm font-medium",children:u.buttonText||"Get Started"}),jsx("ul",{className:"space-y-3",children:u.features.map(s=>jsxs("li",{className:"flex items-center gap-3 text-sm",children:[jsx("div",{className:"flex h-4 w-4 items-center justify-center rounded-full bg-primary",children:jsx(i,{className:"h-2 w-2 text-primary-foreground"})}),s]},s))})]},u.name))})]})})}var N=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/check.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{M as PricingModern,N as default};//# sourceMappingURL=index.mjs.map
|
|
16
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../node_modules/shared/src/utils.ts","../../../../node_modules/lucide-react/src/defaultAttributes.ts","../../../../node_modules/lucide-react/src/Icon.ts","../../../../node_modules/lucide-react/src/createLucideIcon.ts","../../../../node_modules/lucide-react/src/icons/check.ts","../../src/pricing-modern/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","Check","PricingModern","title","description","plans","isAnnual","setIsAnnual","useState","jsx","jsxs","plan","feature","pricing_modern_default"],"mappings":"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","file":"index.mjs","sourcesContent":["import { CamelToPascal } from './utility-types';\n\n/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n\n/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = <T extends string>(string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = <T extends string>(string: T): CamelToPascal<T> => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal<T>;\n};\n\n/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = <ClassType = string | undefined | null>(...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n\n/**\n * Is empty string\n *\n * @param {unknown} value\n * @returns {boolean} Whether the value is an empty string\n */\nexport const isEmptyString = (value: unknown): boolean => value === '';\n\n/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: Record<string, any>) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n};\n","export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n","import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, hasA11yProp } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef<SVGSVGElement, IconComponentProps>(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) =>\n createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('lucide', className),\n ...(!children && !hasA11yProp(rest) && { 'aria-hidden': 'true' }),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n ),\n);\n\nexport default Icon;\n","import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef<SVGSVGElement, LucideProps>(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createLucideIcon;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'M20 6 9 17l-5-5', key: '1gmf2c' }]];\n\n/**\n * @component @name Check\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/check\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 Check = createLucideIcon('check', __iconNode);\n\nexport default Check;\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { Check } from \"lucide-react\";\r\n\r\ninterface PricingPlan {\r\n name: string;\r\n price: { monthly: number; annually: number } | \"custom\";\r\n description: string;\r\n features: string[];\r\n featured?: boolean;\r\n buttonText?: string;\r\n}\r\n\r\ninterface PricingModernProps {\r\n title?: string;\r\n description?: string;\r\n plans?: PricingPlan[];\r\n className?: string;\r\n}\r\n\r\nexport function PricingModern({\r\n title = \"Choose your perfect plan\",\r\n description = \"Modern pricing plans designed for teams of all sizes.\",\r\n plans = [\r\n {\r\n name: \"Basic\",\r\n price: { monthly: 15, annually: 10 },\r\n description: \"Perfect for startups\",\r\n features: [\"1 Project\", \"Email Support\", \"Core Features\", \"Basic Analytics\"],\r\n },\r\n {\r\n name: \"Pro\",\r\n price: { monthly: 35, annually: 25 },\r\n description: \"Best for teams\",\r\n features: [\"Unlimited Projects\", \"Priority Support\", \"Team Collaboration\", \"Advanced Analytics\"],\r\n featured: true,\r\n },\r\n {\r\n name: \"Enterprise\",\r\n price: \"custom\",\r\n description: \"Tailored solutions\",\r\n features: [\"Everything in Pro\", \"Dedicated Manager\", \"Custom Integrations\", \"SLA & Support\"],\r\n buttonText: \"Contact Sales\",\r\n },\r\n ],\r\n className = \"\",\r\n}: PricingModernProps) {\r\n const [isAnnual, setIsAnnual] = useState(true);\r\n\r\n return (\r\n <section className={`py-16 md:py-32 ${className}`}>\r\n <div className=\"mx-auto max-w-5xl px-6\">\r\n <div className=\"mx-auto max-w-2xl text-center\">\r\n <h2 className=\"text-3xl font-bold md:text-4xl lg:text-5xl\">{title}</h2>\r\n <p className=\"text-muted-foreground mx-auto mt-4 max-w-xl text-lg\">{description}</p>\r\n\r\n <div className=\"my-12\">\r\n <div className=\"relative mx-auto grid w-fit grid-cols-2 rounded-full border p-1\">\r\n <div\r\n className={`pointer-events-none absolute inset-1 w-1/2 rounded-full bg-primary transition-transform duration-500 ${\r\n isAnnual ? \"translate-x-full\" : \"translate-x-0\"\r\n }`}\r\n />\r\n <button\r\n onClick={() => setIsAnnual(false)}\r\n className={`relative h-8 w-24 rounded-full text-sm ${!isAnnual ? \"text-primary-foreground font-medium\" : \"\"}`}\r\n >\r\n Monthly\r\n </button>\r\n <button\r\n onClick={() => setIsAnnual(true)}\r\n className={`relative h-8 w-24 rounded-full text-sm ${isAnnual ? \"text-primary-foreground font-medium\" : \"\"}`}\r\n >\r\n Annually\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div className=\"grid grid-cols-1 gap-6 md:grid-cols-3\">\r\n {plans.map((plan) => (\r\n <div\r\n key={plan.name}\r\n className={`relative flex flex-col rounded-2xl border p-8 ${\r\n plan.featured ? \"border-2 border-primary\" : \"\"\r\n }`}\r\n >\r\n {plan.featured && (\r\n <div className=\"absolute top-0 right-0 bg-primary text-primary-foreground rounded-full px-2 py-1 text-xs font-bold m-4\">\r\n Most Popular\r\n </div>\r\n )}\r\n\r\n <h3 className=\"mb-4 text-2xl font-bold\">{plan.name}</h3>\r\n\r\n <div className=\"mb-6\">\r\n <span className=\"text-3xl font-semibold\">\r\n {plan.price === \"custom\"\r\n ? \"Custom\"\r\n : `${isAnnual ? plan.price.annually : plan.price.monthly}€`}\r\n </span>\r\n <span className=\"text-muted-foreground mx-2\">•</span>\r\n <span className=\"text-muted-foreground\">{plan.description}</span>\r\n </div>\r\n\r\n <button className=\"bg-primary text-primary-foreground hover:bg-primary/90 mb-6 h-10 w-full rounded-md px-4 py-2 text-sm font-medium\">\r\n {plan.buttonText || \"Get Started\"}\r\n </button>\r\n\r\n <ul className=\"space-y-3\">\r\n {plan.features.map((feature) => (\r\n <li key={feature} className=\"flex items-center gap-3 text-sm\">\r\n <div className=\"flex h-4 w-4 items-center justify-center rounded-full bg-primary\">\r\n <Check className=\"h-2 w-2 text-primary-foreground\" />\r\n </div>\r\n {feature}\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </section>\r\n );\r\n}\r\n\r\nexport default PricingModern;\r\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),jsxRuntime=require('react/jsx-runtime');function d({children:o,offset:n=50,duration:s=.6,className:c=""}){let e=react.useRef(null),[r,i]=react.useState(false);return react.useEffect(()=>{let t=new IntersectionObserver(([l])=>{l.isIntersecting&&(i(true),t.disconnect());},{threshold:.1});return e.current&&t.observe(e.current),()=>t.disconnect()},[]),jsxRuntime.jsx("div",{ref:e,className:c,style:{transform:r?"translateY(0)":`translateY(${n}px)`,opacity:r?1:0,transition:`transform ${s}s ease-out, opacity ${s}s ease-out`},children:o})}var v=d;exports.ScrollFloat=d;exports.default=v;//# sourceMappingURL=index.js.map
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/scroll-float/index.tsx"],"names":["ScrollFloat","children","offset","duration","className","ref","useRef","isVisible","setIsVisible","useState","useEffect","observer","entry","jsx","scroll_float_default"],"mappings":"yIAWO,SAASA,CAAAA,CAAY,CAC1B,QAAA,CAAAC,CAAAA,CACA,MAAA,CAAAC,CAAAA,CAAS,EAAA,CACT,QAAA,CAAAC,EAAW,EAAA,CACX,SAAA,CAAAC,CAAAA,CAAY,EACd,CAAA,CAAqB,CACnB,IAAMC,CAAAA,CAAMC,YAAAA,CAAuB,IAAI,CAAA,CACjC,CAACC,CAAAA,CAAWC,CAAY,CAAA,CAAIC,cAAAA,CAAS,KAAK,CAAA,CAEhD,OAAAC,eAAAA,CAAU,IAAM,CACd,IAAMC,CAAAA,CAAW,IAAI,oBAAA,CACnB,CAAC,CAACC,CAAK,CAAA,GAAM,CACPA,CAAAA,CAAM,cAAA,GACRJ,CAAAA,CAAa,IAAI,EACjBG,CAAAA,CAAS,UAAA,EAAW,EAExB,CAAA,CACA,CAAE,SAAA,CAAW,EAAI,CACnB,CAAA,CAEA,OAAIN,CAAAA,CAAI,OAAA,EACNM,CAAAA,CAAS,QAAQN,CAAAA,CAAI,OAAO,CAAA,CAGvB,IAAMM,CAAAA,CAAS,UAAA,EACxB,CAAA,CAAG,EAAE,CAAA,CAGHE,cAAAA,CAAC,KAAA,CAAA,CACC,GAAA,CAAKR,EACL,SAAA,CAAWD,CAAAA,CACX,KAAA,CAAO,CACL,SAAA,CAAWG,CAAAA,CAAY,gBAAkB,CAAA,WAAA,EAAcL,CAAM,CAAA,GAAA,CAAA,CAC7D,OAAA,CAASK,CAAAA,CAAY,CAAA,CAAI,EACzB,UAAA,CAAY,CAAA,UAAA,EAAaJ,CAAQ,CAAA,oBAAA,EAAuBA,CAAQ,CAAA,UAAA,CAClE,CAAA,CAEC,QAAA,CAAAF,CAAAA,CACH,CAEJ,CAEA,IAAOa,CAAAA,CAAQd","file":"index.js","sourcesContent":["\"use client\";\r\n\r\nimport { useEffect, useRef, useState, ReactNode } from \"react\";\r\n\r\ninterface ScrollFloatProps {\r\n children: ReactNode;\r\n offset?: number;\r\n duration?: number;\r\n className?: string;\r\n}\r\n\r\nexport function ScrollFloat({\r\n children,\r\n offset = 50,\r\n duration = 0.6,\r\n className = \"\",\r\n}: ScrollFloatProps) {\r\n const ref = useRef<HTMLDivElement>(null);\r\n const [isVisible, setIsVisible] = useState(false);\r\n\r\n useEffect(() => {\r\n const observer = new IntersectionObserver(\r\n ([entry]) => {\r\n if (entry.isIntersecting) {\r\n setIsVisible(true);\r\n observer.disconnect();\r\n }\r\n },\r\n { threshold: 0.1 }\r\n );\r\n\r\n if (ref.current) {\r\n observer.observe(ref.current);\r\n }\r\n\r\n return () => observer.disconnect();\r\n }, []);\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={className}\r\n style={{\r\n transform: isVisible ? \"translateY(0)\" : `translateY(${offset}px)`,\r\n opacity: isVisible ? 1 : 0,\r\n transition: `transform ${duration}s ease-out, opacity ${duration}s ease-out`,\r\n }}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport default ScrollFloat;\r\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {useRef,useState,useEffect}from'react';import {jsx}from'react/jsx-runtime';function d({children:o,offset:n=50,duration:s=.6,className:c=""}){let e=useRef(null),[r,i]=useState(false);return useEffect(()=>{let t=new IntersectionObserver(([l])=>{l.isIntersecting&&(i(true),t.disconnect());},{threshold:.1});return e.current&&t.observe(e.current),()=>t.disconnect()},[]),jsx("div",{ref:e,className:c,style:{transform:r?"translateY(0)":`translateY(${n}px)`,opacity:r?1:0,transition:`transform ${s}s ease-out, opacity ${s}s ease-out`},children:o})}var v=d;export{d as ScrollFloat,v as default};//# sourceMappingURL=index.mjs.map
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/scroll-float/index.tsx"],"names":["ScrollFloat","children","offset","duration","className","ref","useRef","isVisible","setIsVisible","useState","useEffect","observer","entry","jsx","scroll_float_default"],"mappings":"kFAWO,SAASA,CAAAA,CAAY,CAC1B,QAAA,CAAAC,CAAAA,CACA,MAAA,CAAAC,CAAAA,CAAS,EAAA,CACT,QAAA,CAAAC,EAAW,EAAA,CACX,SAAA,CAAAC,CAAAA,CAAY,EACd,CAAA,CAAqB,CACnB,IAAMC,CAAAA,CAAMC,MAAAA,CAAuB,IAAI,CAAA,CACjC,CAACC,CAAAA,CAAWC,CAAY,CAAA,CAAIC,QAAAA,CAAS,KAAK,CAAA,CAEhD,OAAAC,SAAAA,CAAU,IAAM,CACd,IAAMC,CAAAA,CAAW,IAAI,oBAAA,CACnB,CAAC,CAACC,CAAK,CAAA,GAAM,CACPA,CAAAA,CAAM,cAAA,GACRJ,CAAAA,CAAa,IAAI,EACjBG,CAAAA,CAAS,UAAA,EAAW,EAExB,CAAA,CACA,CAAE,SAAA,CAAW,EAAI,CACnB,CAAA,CAEA,OAAIN,CAAAA,CAAI,OAAA,EACNM,CAAAA,CAAS,QAAQN,CAAAA,CAAI,OAAO,CAAA,CAGvB,IAAMM,CAAAA,CAAS,UAAA,EACxB,CAAA,CAAG,EAAE,CAAA,CAGHE,GAAAA,CAAC,KAAA,CAAA,CACC,GAAA,CAAKR,EACL,SAAA,CAAWD,CAAAA,CACX,KAAA,CAAO,CACL,SAAA,CAAWG,CAAAA,CAAY,gBAAkB,CAAA,WAAA,EAAcL,CAAM,CAAA,GAAA,CAAA,CAC7D,OAAA,CAASK,CAAAA,CAAY,CAAA,CAAI,EACzB,UAAA,CAAY,CAAA,UAAA,EAAaJ,CAAQ,CAAA,oBAAA,EAAuBA,CAAQ,CAAA,UAAA,CAClE,CAAA,CAEC,QAAA,CAAAF,CAAAA,CACH,CAEJ,CAEA,IAAOa,CAAAA,CAAQd","file":"index.mjs","sourcesContent":["\"use client\";\r\n\r\nimport { useEffect, useRef, useState, ReactNode } from \"react\";\r\n\r\ninterface ScrollFloatProps {\r\n children: ReactNode;\r\n offset?: number;\r\n duration?: number;\r\n className?: string;\r\n}\r\n\r\nexport function ScrollFloat({\r\n children,\r\n offset = 50,\r\n duration = 0.6,\r\n className = \"\",\r\n}: ScrollFloatProps) {\r\n const ref = useRef<HTMLDivElement>(null);\r\n const [isVisible, setIsVisible] = useState(false);\r\n\r\n useEffect(() => {\r\n const observer = new IntersectionObserver(\r\n ([entry]) => {\r\n if (entry.isIntersecting) {\r\n setIsVisible(true);\r\n observer.disconnect();\r\n }\r\n },\r\n { threshold: 0.1 }\r\n );\r\n\r\n if (ref.current) {\r\n observer.observe(ref.current);\r\n }\r\n\r\n return () => observer.disconnect();\r\n }, []);\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={className}\r\n style={{\r\n transform: isVisible ? \"translateY(0)\" : `translateY(${offset}px)`,\r\n opacity: isVisible ? 1 : 0,\r\n transition: `transform ${duration}s ease-out, opacity ${duration}s ease-out`,\r\n }}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport default ScrollFloat;\r\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),jsxRuntime=require('react/jsx-runtime');function d({children:o,direction:l="up",distance:e=30,duration:s=.6,delay:n=0,className:c=""}){let r=react.useRef(null),[a,i]=react.useState(false);return react.useEffect(()=>{let t=new IntersectionObserver(([u])=>{u.isIntersecting&&(i(true),t.disconnect());},{threshold:.1});return r.current&&t.observe(r.current),()=>t.disconnect()},[]),jsxRuntime.jsx("div",{ref:r,className:c,style:{transform:(()=>{if(a)return "translate(0, 0)";switch(l){case "up":return `translateY(${e}px)`;case "down":return `translateY(-${e}px)`;case "left":return `translateX(${e}px)`;case "right":return `translateX(-${e}px)`;default:return `translateY(${e}px)`}})(),opacity:a?1:0,transition:`transform ${s}s ease-out ${n}s, opacity ${s}s ease-out ${n}s`},children:o})}var h=d;exports.ScrollReveal=d;exports.default=h;//# sourceMappingURL=index.js.map
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/scroll-reveal/index.tsx"],"names":["ScrollReveal","children","direction","distance","duration","delay","className","ref","useRef","isVisible","setIsVisible","useState","useEffect","observer","entry","jsx","scroll_reveal_default"],"mappings":"yIAaO,SAASA,CAAAA,CAAa,CAC3B,QAAA,CAAAC,CAAAA,CACA,UAAAC,CAAAA,CAAY,IAAA,CACZ,QAAA,CAAAC,CAAAA,CAAW,GACX,QAAA,CAAAC,CAAAA,CAAW,EAAA,CACX,KAAA,CAAAC,EAAQ,CAAA,CACR,SAAA,CAAAC,CAAAA,CAAY,EACd,EAAsB,CACpB,IAAMC,CAAAA,CAAMC,YAAAA,CAAuB,IAAI,CAAA,CACjC,CAACC,CAAAA,CAAWC,CAAY,EAAIC,cAAAA,CAAS,KAAK,CAAA,CAEhD,OAAAC,gBAAU,IAAM,CACd,IAAMC,CAAAA,CAAW,IAAI,oBAAA,CACnB,CAAC,CAACC,CAAK,IAAM,CACPA,CAAAA,CAAM,cAAA,GACRJ,CAAAA,CAAa,IAAI,CAAA,CACjBG,CAAAA,CAAS,UAAA,EAAW,EAExB,EACA,CAAE,SAAA,CAAW,EAAI,CACnB,EAEA,OAAIN,CAAAA,CAAI,OAAA,EACNM,CAAAA,CAAS,QAAQN,CAAAA,CAAI,OAAO,CAAA,CAGvB,IAAMM,EAAS,UAAA,EACxB,CAAA,CAAG,EAAE,CAAA,CAmBHE,cAAAA,CAAC,KAAA,CAAA,CACC,GAAA,CAAKR,EACL,SAAA,CAAWD,CAAAA,CACX,KAAA,CAAO,CACL,WArBe,IAAM,CACzB,GAAIG,CAAAA,CAAW,OAAO,iBAAA,CACtB,OAAQP,CAAAA,EACN,KAAK,IAAA,CACH,OAAO,CAAA,WAAA,EAAcC,CAAQ,MAC/B,KAAK,MAAA,CACH,OAAO,CAAA,YAAA,EAAeA,CAAQ,CAAA,GAAA,CAAA,CAChC,KAAK,MAAA,CACH,OAAO,cAAcA,CAAQ,CAAA,GAAA,CAAA,CAC/B,KAAK,OAAA,CACH,OAAO,CAAA,YAAA,EAAeA,CAAQ,CAAA,GAAA,CAAA,CAChC,QACE,OAAO,CAAA,WAAA,EAAcA,CAAQ,CAAA,GAAA,CACjC,CACF,IAO8B,CACxB,OAAA,CAASM,CAAAA,CAAY,CAAA,CAAI,EACzB,UAAA,CAAY,CAAA,UAAA,EAAaL,CAAQ,CAAA,WAAA,EAAcC,CAAK,CAAA,WAAA,EAAcD,CAAQ,CAAA,WAAA,EAAcC,CAAK,GAC/F,CAAA,CAEC,QAAA,CAAAJ,EACH,CAEJ,KAEOe,CAAAA,CAAQhB","file":"index.js","sourcesContent":["\"use client\";\r\n\r\nimport { useEffect, useRef, useState, ReactNode } from \"react\";\r\n\r\ninterface ScrollRevealProps {\r\n children: ReactNode;\r\n direction?: \"up\" | \"down\" | \"left\" | \"right\";\r\n distance?: number;\r\n duration?: number;\r\n delay?: number;\r\n className?: string;\r\n}\r\n\r\nexport function ScrollReveal({\r\n children,\r\n direction = \"up\",\r\n distance = 30,\r\n duration = 0.6,\r\n delay = 0,\r\n className = \"\",\r\n}: ScrollRevealProps) {\r\n const ref = useRef<HTMLDivElement>(null);\r\n const [isVisible, setIsVisible] = useState(false);\r\n\r\n useEffect(() => {\r\n const observer = new IntersectionObserver(\r\n ([entry]) => {\r\n if (entry.isIntersecting) {\r\n setIsVisible(true);\r\n observer.disconnect();\r\n }\r\n },\r\n { threshold: 0.1 }\r\n );\r\n\r\n if (ref.current) {\r\n observer.observe(ref.current);\r\n }\r\n\r\n return () => observer.disconnect();\r\n }, []);\r\n\r\n const getTransform = () => {\r\n if (isVisible) return \"translate(0, 0)\";\r\n switch (direction) {\r\n case \"up\":\r\n return `translateY(${distance}px)`;\r\n case \"down\":\r\n return `translateY(-${distance}px)`;\r\n case \"left\":\r\n return `translateX(${distance}px)`;\r\n case \"right\":\r\n return `translateX(-${distance}px)`;\r\n default:\r\n return `translateY(${distance}px)`;\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={className}\r\n style={{\r\n transform: getTransform(),\r\n opacity: isVisible ? 1 : 0,\r\n transition: `transform ${duration}s ease-out ${delay}s, opacity ${duration}s ease-out ${delay}s`,\r\n }}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport default ScrollReveal;\r\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {useRef,useState,useEffect}from'react';import {jsx}from'react/jsx-runtime';function d({children:o,direction:l="up",distance:e=30,duration:s=.6,delay:n=0,className:c=""}){let r=useRef(null),[a,i]=useState(false);return useEffect(()=>{let t=new IntersectionObserver(([u])=>{u.isIntersecting&&(i(true),t.disconnect());},{threshold:.1});return r.current&&t.observe(r.current),()=>t.disconnect()},[]),jsx("div",{ref:r,className:c,style:{transform:(()=>{if(a)return "translate(0, 0)";switch(l){case "up":return `translateY(${e}px)`;case "down":return `translateY(-${e}px)`;case "left":return `translateX(${e}px)`;case "right":return `translateX(-${e}px)`;default:return `translateY(${e}px)`}})(),opacity:a?1:0,transition:`transform ${s}s ease-out ${n}s, opacity ${s}s ease-out ${n}s`},children:o})}var h=d;export{d as ScrollReveal,h as default};//# sourceMappingURL=index.mjs.map
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/scroll-reveal/index.tsx"],"names":["ScrollReveal","children","direction","distance","duration","delay","className","ref","useRef","isVisible","setIsVisible","useState","useEffect","observer","entry","jsx","scroll_reveal_default"],"mappings":"kFAaO,SAASA,CAAAA,CAAa,CAC3B,QAAA,CAAAC,CAAAA,CACA,UAAAC,CAAAA,CAAY,IAAA,CACZ,QAAA,CAAAC,CAAAA,CAAW,GACX,QAAA,CAAAC,CAAAA,CAAW,EAAA,CACX,KAAA,CAAAC,EAAQ,CAAA,CACR,SAAA,CAAAC,CAAAA,CAAY,EACd,EAAsB,CACpB,IAAMC,CAAAA,CAAMC,MAAAA,CAAuB,IAAI,CAAA,CACjC,CAACC,CAAAA,CAAWC,CAAY,EAAIC,QAAAA,CAAS,KAAK,CAAA,CAEhD,OAAAC,UAAU,IAAM,CACd,IAAMC,CAAAA,CAAW,IAAI,oBAAA,CACnB,CAAC,CAACC,CAAK,IAAM,CACPA,CAAAA,CAAM,cAAA,GACRJ,CAAAA,CAAa,IAAI,CAAA,CACjBG,CAAAA,CAAS,UAAA,EAAW,EAExB,EACA,CAAE,SAAA,CAAW,EAAI,CACnB,EAEA,OAAIN,CAAAA,CAAI,OAAA,EACNM,CAAAA,CAAS,QAAQN,CAAAA,CAAI,OAAO,CAAA,CAGvB,IAAMM,EAAS,UAAA,EACxB,CAAA,CAAG,EAAE,CAAA,CAmBHE,GAAAA,CAAC,KAAA,CAAA,CACC,GAAA,CAAKR,EACL,SAAA,CAAWD,CAAAA,CACX,KAAA,CAAO,CACL,WArBe,IAAM,CACzB,GAAIG,CAAAA,CAAW,OAAO,iBAAA,CACtB,OAAQP,CAAAA,EACN,KAAK,IAAA,CACH,OAAO,CAAA,WAAA,EAAcC,CAAQ,MAC/B,KAAK,MAAA,CACH,OAAO,CAAA,YAAA,EAAeA,CAAQ,CAAA,GAAA,CAAA,CAChC,KAAK,MAAA,CACH,OAAO,cAAcA,CAAQ,CAAA,GAAA,CAAA,CAC/B,KAAK,OAAA,CACH,OAAO,CAAA,YAAA,EAAeA,CAAQ,CAAA,GAAA,CAAA,CAChC,QACE,OAAO,CAAA,WAAA,EAAcA,CAAQ,CAAA,GAAA,CACjC,CACF,IAO8B,CACxB,OAAA,CAASM,CAAAA,CAAY,CAAA,CAAI,EACzB,UAAA,CAAY,CAAA,UAAA,EAAaL,CAAQ,CAAA,WAAA,EAAcC,CAAK,CAAA,WAAA,EAAcD,CAAQ,CAAA,WAAA,EAAcC,CAAK,GAC/F,CAAA,CAEC,QAAA,CAAAJ,EACH,CAEJ,KAEOe,CAAAA,CAAQhB","file":"index.mjs","sourcesContent":["\"use client\";\r\n\r\nimport { useEffect, useRef, useState, ReactNode } from \"react\";\r\n\r\ninterface ScrollRevealProps {\r\n children: ReactNode;\r\n direction?: \"up\" | \"down\" | \"left\" | \"right\";\r\n distance?: number;\r\n duration?: number;\r\n delay?: number;\r\n className?: string;\r\n}\r\n\r\nexport function ScrollReveal({\r\n children,\r\n direction = \"up\",\r\n distance = 30,\r\n duration = 0.6,\r\n delay = 0,\r\n className = \"\",\r\n}: ScrollRevealProps) {\r\n const ref = useRef<HTMLDivElement>(null);\r\n const [isVisible, setIsVisible] = useState(false);\r\n\r\n useEffect(() => {\r\n const observer = new IntersectionObserver(\r\n ([entry]) => {\r\n if (entry.isIntersecting) {\r\n setIsVisible(true);\r\n observer.disconnect();\r\n }\r\n },\r\n { threshold: 0.1 }\r\n );\r\n\r\n if (ref.current) {\r\n observer.observe(ref.current);\r\n }\r\n\r\n return () => observer.disconnect();\r\n }, []);\r\n\r\n const getTransform = () => {\r\n if (isVisible) return \"translate(0, 0)\";\r\n switch (direction) {\r\n case \"up\":\r\n return `translateY(${distance}px)`;\r\n case \"down\":\r\n return `translateY(-${distance}px)`;\r\n case \"left\":\r\n return `translateX(${distance}px)`;\r\n case \"right\":\r\n return `translateX(-${distance}px)`;\r\n default:\r\n return `translateY(${distance}px)`;\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={className}\r\n style={{\r\n transform: getTransform(),\r\n opacity: isVisible ? 1 : 0,\r\n transition: `transform ${duration}s ease-out ${delay}s, opacity ${duration}s ease-out ${delay}s`,\r\n }}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport default ScrollReveal;\r\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),jsxRuntime=require('react/jsx-runtime');function d({children:c,stagger:r=.1,className:a=""}){let s=react.useRef(null),[n,i]=react.useState(false);return react.useEffect(()=>{let e=new IntersectionObserver(([t])=>{t.isIntersecting&&(i(true),e.disconnect());},{threshold:.1});return s.current&&e.observe(s.current),()=>e.disconnect()},[]),jsxRuntime.jsx("div",{ref:s,className:a,children:c.map((e,t)=>jsxRuntime.jsx("div",{style:{transform:n?"translateY(0)":"translateY(30px)",opacity:n?1:0,transition:`transform 0.6s ease-out ${t*r}s, opacity 0.6s ease-out ${t*r}s`},children:e},t))})}var v=d;exports.ScrollStack=d;exports.default=v;//# sourceMappingURL=index.js.map
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/scroll-stack/index.tsx"],"names":["ScrollStack","children","stagger","className","ref","useRef","isVisible","setIsVisible","useState","useEffect","observer","entry","jsx","child","index","scroll_stack_default"],"mappings":"yIAUO,SAASA,CAAAA,CAAY,CAAE,SAAAC,CAAAA,CAAU,OAAA,CAAAC,CAAAA,CAAU,EAAA,CAAK,SAAA,CAAAC,CAAAA,CAAY,EAAG,CAAA,CAAqB,CACzF,IAAMC,CAAAA,CAAMC,YAAAA,CAAuB,IAAI,CAAA,CACjC,CAACC,CAAAA,CAAWC,CAAY,CAAA,CAAIC,cAAAA,CAAS,KAAK,CAAA,CAEhD,OAAAC,eAAAA,CAAU,IAAM,CACd,IAAMC,CAAAA,CAAW,IAAI,oBAAA,CACnB,CAAC,CAACC,CAAK,CAAA,GAAM,CACPA,CAAAA,CAAM,cAAA,GACRJ,CAAAA,CAAa,IAAI,CAAA,CACjBG,CAAAA,CAAS,UAAA,EAAW,EAExB,CAAA,CACA,CAAE,SAAA,CAAW,EAAI,CACnB,CAAA,CAEA,OAAIN,CAAAA,CAAI,OAAA,EACNM,CAAAA,CAAS,OAAA,CAAQN,CAAAA,CAAI,OAAO,CAAA,CAGvB,IAAMM,CAAAA,CAAS,UAAA,EACxB,CAAA,CAAG,EAAE,CAAA,CAGHE,cAAAA,CAAC,KAAA,CAAA,CAAI,GAAA,CAAKR,CAAAA,CAAK,SAAA,CAAWD,CAAAA,CACvB,QAAA,CAAAF,CAAAA,CAAS,GAAA,CAAI,CAACY,CAAAA,CAAOC,CAAAA,GACpBF,eAAC,KAAA,CAAA,CAEC,KAAA,CAAO,CACL,SAAA,CAAWN,CAAAA,CAAY,eAAA,CAAkB,kBAAA,CACzC,OAAA,CAASA,CAAAA,CAAY,CAAA,CAAI,CAAA,CACzB,UAAA,CAAY,CAAA,wBAAA,EAA2BQ,CAAAA,CAAQZ,CAAO,CAAA,yBAAA,EAA4BY,CAAAA,CAAQZ,CAAO,CAAA,CAAA,CACnG,CAAA,CAEC,QAAA,CAAAW,CAAAA,CAAAA,CAPIC,CAQP,CACD,CAAA,CACH,CAEJ,CAEA,IAAOC,CAAAA,CAAQf","file":"index.js","sourcesContent":["\"use client\";\r\n\r\nimport { useEffect, useRef, useState, ReactNode } from \"react\";\r\n\r\ninterface ScrollStackProps {\r\n children: ReactNode[];\r\n stagger?: number;\r\n className?: string;\r\n}\r\n\r\nexport function ScrollStack({ children, stagger = 0.1, className = \"\" }: ScrollStackProps) {\r\n const ref = useRef<HTMLDivElement>(null);\r\n const [isVisible, setIsVisible] = useState(false);\r\n\r\n useEffect(() => {\r\n const observer = new IntersectionObserver(\r\n ([entry]) => {\r\n if (entry.isIntersecting) {\r\n setIsVisible(true);\r\n observer.disconnect();\r\n }\r\n },\r\n { threshold: 0.1 }\r\n );\r\n\r\n if (ref.current) {\r\n observer.observe(ref.current);\r\n }\r\n\r\n return () => observer.disconnect();\r\n }, []);\r\n\r\n return (\r\n <div ref={ref} className={className}>\r\n {children.map((child, index) => (\r\n <div\r\n key={index}\r\n style={{\r\n transform: isVisible ? \"translateY(0)\" : \"translateY(30px)\",\r\n opacity: isVisible ? 1 : 0,\r\n transition: `transform 0.6s ease-out ${index * stagger}s, opacity 0.6s ease-out ${index * stagger}s`,\r\n }}\r\n >\r\n {child}\r\n </div>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default ScrollStack;\r\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {useRef,useState,useEffect}from'react';import {jsx}from'react/jsx-runtime';function d({children:c,stagger:r=.1,className:a=""}){let s=useRef(null),[n,i]=useState(false);return useEffect(()=>{let e=new IntersectionObserver(([t])=>{t.isIntersecting&&(i(true),e.disconnect());},{threshold:.1});return s.current&&e.observe(s.current),()=>e.disconnect()},[]),jsx("div",{ref:s,className:a,children:c.map((e,t)=>jsx("div",{style:{transform:n?"translateY(0)":"translateY(30px)",opacity:n?1:0,transition:`transform 0.6s ease-out ${t*r}s, opacity 0.6s ease-out ${t*r}s`},children:e},t))})}var v=d;export{d as ScrollStack,v as default};//# sourceMappingURL=index.mjs.map
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/scroll-stack/index.tsx"],"names":["ScrollStack","children","stagger","className","ref","useRef","isVisible","setIsVisible","useState","useEffect","observer","entry","jsx","child","index","scroll_stack_default"],"mappings":"kFAUO,SAASA,CAAAA,CAAY,CAAE,SAAAC,CAAAA,CAAU,OAAA,CAAAC,CAAAA,CAAU,EAAA,CAAK,SAAA,CAAAC,CAAAA,CAAY,EAAG,CAAA,CAAqB,CACzF,IAAMC,CAAAA,CAAMC,MAAAA,CAAuB,IAAI,CAAA,CACjC,CAACC,CAAAA,CAAWC,CAAY,CAAA,CAAIC,QAAAA,CAAS,KAAK,CAAA,CAEhD,OAAAC,SAAAA,CAAU,IAAM,CACd,IAAMC,CAAAA,CAAW,IAAI,oBAAA,CACnB,CAAC,CAACC,CAAK,CAAA,GAAM,CACPA,CAAAA,CAAM,cAAA,GACRJ,CAAAA,CAAa,IAAI,CAAA,CACjBG,CAAAA,CAAS,UAAA,EAAW,EAExB,CAAA,CACA,CAAE,SAAA,CAAW,EAAI,CACnB,CAAA,CAEA,OAAIN,CAAAA,CAAI,OAAA,EACNM,CAAAA,CAAS,OAAA,CAAQN,CAAAA,CAAI,OAAO,CAAA,CAGvB,IAAMM,CAAAA,CAAS,UAAA,EACxB,CAAA,CAAG,EAAE,CAAA,CAGHE,GAAAA,CAAC,KAAA,CAAA,CAAI,GAAA,CAAKR,CAAAA,CAAK,SAAA,CAAWD,CAAAA,CACvB,QAAA,CAAAF,CAAAA,CAAS,GAAA,CAAI,CAACY,CAAAA,CAAOC,CAAAA,GACpBF,IAAC,KAAA,CAAA,CAEC,KAAA,CAAO,CACL,SAAA,CAAWN,CAAAA,CAAY,eAAA,CAAkB,kBAAA,CACzC,OAAA,CAASA,CAAAA,CAAY,CAAA,CAAI,CAAA,CACzB,UAAA,CAAY,CAAA,wBAAA,EAA2BQ,CAAAA,CAAQZ,CAAO,CAAA,yBAAA,EAA4BY,CAAAA,CAAQZ,CAAO,CAAA,CAAA,CACnG,CAAA,CAEC,QAAA,CAAAW,CAAAA,CAAAA,CAPIC,CAQP,CACD,CAAA,CACH,CAEJ,CAEA,IAAOC,CAAAA,CAAQf","file":"index.mjs","sourcesContent":["\"use client\";\r\n\r\nimport { useEffect, useRef, useState, ReactNode } from \"react\";\r\n\r\ninterface ScrollStackProps {\r\n children: ReactNode[];\r\n stagger?: number;\r\n className?: string;\r\n}\r\n\r\nexport function ScrollStack({ children, stagger = 0.1, className = \"\" }: ScrollStackProps) {\r\n const ref = useRef<HTMLDivElement>(null);\r\n const [isVisible, setIsVisible] = useState(false);\r\n\r\n useEffect(() => {\r\n const observer = new IntersectionObserver(\r\n ([entry]) => {\r\n if (entry.isIntersecting) {\r\n setIsVisible(true);\r\n observer.disconnect();\r\n }\r\n },\r\n { threshold: 0.1 }\r\n );\r\n\r\n if (ref.current) {\r\n observer.observe(ref.current);\r\n }\r\n\r\n return () => observer.disconnect();\r\n }, []);\r\n\r\n return (\r\n <div ref={ref} className={className}>\r\n {children.map((child, index) => (\r\n <div\r\n key={index}\r\n style={{\r\n transform: isVisible ? \"translateY(0)\" : \"translateY(30px)\",\r\n opacity: isVisible ? 1 : 0,\r\n transition: `transform 0.6s ease-out ${index * stagger}s, opacity 0.6s ease-out ${index * stagger}s`,\r\n }}\r\n >\r\n {child}\r\n </div>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default ScrollStack;\r\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),jsxRuntime=require('react/jsx-runtime');function k({direction:v="right",speed:i=1,borderColor:x="#999",squareSize:t=40,hoverFillColor:y="#222",className:p=""}){let g=react.useRef(null),f=react.useRef(null),n=react.useRef({x:0,y:0}),s=react.useRef(null);return react.useEffect(()=>{let r=g.current;if(!r)return;let o=r.getContext("2d"),d=()=>{r.width=r.offsetWidth,r.height=r.offsetHeight;};window.addEventListener("resize",d),d();let E=()=>{if(!o)return;o.clearRect(0,0,r.width,r.height);let e=Math.floor(n.current.x/t)*t,u=Math.floor(n.current.y/t)*t;for(let c=e;c<r.width+t;c+=t)for(let l=u;l<r.height+t;l+=t){let a=c-n.current.x%t,h=l-n.current.y%t;s.current&&Math.floor((c-e)/t)===s.current.x&&Math.floor((l-u)/t)===s.current.y&&(o.fillStyle=y,o.fillRect(a,h,t,t)),o.strokeStyle=x,o.strokeRect(a,h,t,t);}},M=()=>{let e=Math.max(i,.1);switch(v){case "right":n.current.x=(n.current.x-e+t)%t;break;case "left":n.current.x=(n.current.x+e+t)%t;break;case "up":n.current.y=(n.current.y+e+t)%t;break;case "down":n.current.y=(n.current.y-e+t)%t;break;case "diagonal":n.current.x=(n.current.x-e+t)%t,n.current.y=(n.current.y-e+t)%t;break}E(),f.current=requestAnimationFrame(M);},w=e=>{let u=r.getBoundingClientRect(),c=e.clientX-u.left,l=e.clientY-u.top,a=Math.floor(n.current.x/t)*t,h=Math.floor(n.current.y/t)*t;s.current={x:Math.floor((c+n.current.x-a)/t),y:Math.floor((l+n.current.y-h)/t)};},b=()=>{s.current=null;};return r.addEventListener("mousemove",w),r.addEventListener("mouseleave",b),f.current=requestAnimationFrame(M),()=>{window.removeEventListener("resize",d),f.current&&cancelAnimationFrame(f.current),r.removeEventListener("mousemove",w),r.removeEventListener("mouseleave",b);}},[v,i,x,y,t]),jsxRuntime.jsx("canvas",{ref:g,className:`w-full h-full ${p}`})}var Y=k;exports.Squares=k;exports.default=Y;//# sourceMappingURL=index.js.map
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/squares/index.tsx"],"names":["Squares","direction","speed","borderColor","squareSize","hoverFillColor","className","canvasRef","useRef","requestRef","gridOffset","hoveredSquare","useEffect","canvas","ctx","resizeCanvas","drawGrid","startX","startY","x","y","squareX","squareY","updateAnimation","effectiveSpeed","handleMouseMove","event","rect","mouseX","mouseY","handleMouseLeave","jsx","squares_default"],"mappings":"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","file":"index.js","sourcesContent":["\"use client\";\r\n\r\nimport { useRef, useEffect } from \"react\";\r\n\r\ninterface SquaresProps {\r\n direction?: \"diagonal\" | \"up\" | \"right\" | \"down\" | \"left\";\r\n speed?: number;\r\n borderColor?: string;\r\n squareSize?: number;\r\n hoverFillColor?: string;\r\n className?: string;\r\n}\r\n\r\nexport function Squares({\r\n direction = \"right\",\r\n speed = 1,\r\n borderColor = \"#999\",\r\n squareSize = 40,\r\n hoverFillColor = \"#222\",\r\n className = \"\",\r\n}: SquaresProps) {\r\n const canvasRef = useRef<HTMLCanvasElement>(null);\r\n const requestRef = useRef<number | null>(null);\r\n const gridOffset = useRef({ x: 0, y: 0 });\r\n const hoveredSquare = useRef<{ x: number; y: number } | null>(null);\r\n\r\n useEffect(() => {\r\n const canvas = canvasRef.current;\r\n if (!canvas) return;\r\n const ctx = canvas.getContext(\"2d\");\r\n\r\n const resizeCanvas = () => {\r\n canvas.width = canvas.offsetWidth;\r\n canvas.height = canvas.offsetHeight;\r\n };\r\n\r\n window.addEventListener(\"resize\", resizeCanvas);\r\n resizeCanvas();\r\n\r\n const drawGrid = () => {\r\n if (!ctx) return;\r\n ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n\r\n const startX = Math.floor(gridOffset.current.x / squareSize) * squareSize;\r\n const startY = Math.floor(gridOffset.current.y / squareSize) * squareSize;\r\n\r\n for (let x = startX; x < canvas.width + squareSize; x += squareSize) {\r\n for (let y = startY; y < canvas.height + squareSize; y += squareSize) {\r\n const squareX = x - (gridOffset.current.x % squareSize);\r\n const squareY = y - (gridOffset.current.y % squareSize);\r\n\r\n if (\r\n hoveredSquare.current &&\r\n Math.floor((x - startX) / squareSize) === hoveredSquare.current.x &&\r\n Math.floor((y - startY) / squareSize) === hoveredSquare.current.y\r\n ) {\r\n ctx.fillStyle = hoverFillColor;\r\n ctx.fillRect(squareX, squareY, squareSize, squareSize);\r\n }\r\n\r\n ctx.strokeStyle = borderColor;\r\n ctx.strokeRect(squareX, squareY, squareSize, squareSize);\r\n }\r\n }\r\n };\r\n\r\n const updateAnimation = () => {\r\n const effectiveSpeed = Math.max(speed, 0.1);\r\n switch (direction) {\r\n case \"right\":\r\n gridOffset.current.x = (gridOffset.current.x - effectiveSpeed + squareSize) % squareSize;\r\n break;\r\n case \"left\":\r\n gridOffset.current.x = (gridOffset.current.x + effectiveSpeed + squareSize) % squareSize;\r\n break;\r\n case \"up\":\r\n gridOffset.current.y = (gridOffset.current.y + effectiveSpeed + squareSize) % squareSize;\r\n break;\r\n case \"down\":\r\n gridOffset.current.y = (gridOffset.current.y - effectiveSpeed + squareSize) % squareSize;\r\n break;\r\n case \"diagonal\":\r\n gridOffset.current.x = (gridOffset.current.x - effectiveSpeed + squareSize) % squareSize;\r\n gridOffset.current.y = (gridOffset.current.y - effectiveSpeed + squareSize) % squareSize;\r\n break;\r\n }\r\n\r\n drawGrid();\r\n requestRef.current = requestAnimationFrame(updateAnimation);\r\n };\r\n\r\n const handleMouseMove = (event: MouseEvent) => {\r\n const rect = canvas.getBoundingClientRect();\r\n const mouseX = event.clientX - rect.left;\r\n const mouseY = event.clientY - rect.top;\r\n\r\n const startX = Math.floor(gridOffset.current.x / squareSize) * squareSize;\r\n const startY = Math.floor(gridOffset.current.y / squareSize) * squareSize;\r\n\r\n hoveredSquare.current = {\r\n x: Math.floor((mouseX + gridOffset.current.x - startX) / squareSize),\r\n y: Math.floor((mouseY + gridOffset.current.y - startY) / squareSize),\r\n };\r\n };\r\n\r\n const handleMouseLeave = () => {\r\n hoveredSquare.current = null;\r\n };\r\n\r\n canvas.addEventListener(\"mousemove\", handleMouseMove);\r\n canvas.addEventListener(\"mouseleave\", handleMouseLeave);\r\n requestRef.current = requestAnimationFrame(updateAnimation);\r\n\r\n return () => {\r\n window.removeEventListener(\"resize\", resizeCanvas);\r\n if (requestRef.current) cancelAnimationFrame(requestRef.current);\r\n canvas.removeEventListener(\"mousemove\", handleMouseMove);\r\n canvas.removeEventListener(\"mouseleave\", handleMouseLeave);\r\n };\r\n }, [direction, speed, borderColor, hoverFillColor, squareSize]);\r\n\r\n return <canvas ref={canvasRef} className={`w-full h-full ${className}`} />;\r\n}\r\n\r\nexport default Squares;\r\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {useRef,useEffect}from'react';import {jsx}from'react/jsx-runtime';function k({direction:v="right",speed:i=1,borderColor:x="#999",squareSize:t=40,hoverFillColor:y="#222",className:p=""}){let g=useRef(null),f=useRef(null),n=useRef({x:0,y:0}),s=useRef(null);return useEffect(()=>{let r=g.current;if(!r)return;let o=r.getContext("2d"),d=()=>{r.width=r.offsetWidth,r.height=r.offsetHeight;};window.addEventListener("resize",d),d();let E=()=>{if(!o)return;o.clearRect(0,0,r.width,r.height);let e=Math.floor(n.current.x/t)*t,u=Math.floor(n.current.y/t)*t;for(let c=e;c<r.width+t;c+=t)for(let l=u;l<r.height+t;l+=t){let a=c-n.current.x%t,h=l-n.current.y%t;s.current&&Math.floor((c-e)/t)===s.current.x&&Math.floor((l-u)/t)===s.current.y&&(o.fillStyle=y,o.fillRect(a,h,t,t)),o.strokeStyle=x,o.strokeRect(a,h,t,t);}},M=()=>{let e=Math.max(i,.1);switch(v){case "right":n.current.x=(n.current.x-e+t)%t;break;case "left":n.current.x=(n.current.x+e+t)%t;break;case "up":n.current.y=(n.current.y+e+t)%t;break;case "down":n.current.y=(n.current.y-e+t)%t;break;case "diagonal":n.current.x=(n.current.x-e+t)%t,n.current.y=(n.current.y-e+t)%t;break}E(),f.current=requestAnimationFrame(M);},w=e=>{let u=r.getBoundingClientRect(),c=e.clientX-u.left,l=e.clientY-u.top,a=Math.floor(n.current.x/t)*t,h=Math.floor(n.current.y/t)*t;s.current={x:Math.floor((c+n.current.x-a)/t),y:Math.floor((l+n.current.y-h)/t)};},b=()=>{s.current=null;};return r.addEventListener("mousemove",w),r.addEventListener("mouseleave",b),f.current=requestAnimationFrame(M),()=>{window.removeEventListener("resize",d),f.current&&cancelAnimationFrame(f.current),r.removeEventListener("mousemove",w),r.removeEventListener("mouseleave",b);}},[v,i,x,y,t]),jsx("canvas",{ref:g,className:`w-full h-full ${p}`})}var Y=k;export{k as Squares,Y as default};//# sourceMappingURL=index.mjs.map
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/squares/index.tsx"],"names":["Squares","direction","speed","borderColor","squareSize","hoverFillColor","className","canvasRef","useRef","requestRef","gridOffset","hoveredSquare","useEffect","canvas","ctx","resizeCanvas","drawGrid","startX","startY","x","y","squareX","squareY","updateAnimation","effectiveSpeed","handleMouseMove","event","rect","mouseX","mouseY","handleMouseLeave","jsx","squares_default"],"mappings":"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","file":"index.mjs","sourcesContent":["\"use client\";\r\n\r\nimport { useRef, useEffect } from \"react\";\r\n\r\ninterface SquaresProps {\r\n direction?: \"diagonal\" | \"up\" | \"right\" | \"down\" | \"left\";\r\n speed?: number;\r\n borderColor?: string;\r\n squareSize?: number;\r\n hoverFillColor?: string;\r\n className?: string;\r\n}\r\n\r\nexport function Squares({\r\n direction = \"right\",\r\n speed = 1,\r\n borderColor = \"#999\",\r\n squareSize = 40,\r\n hoverFillColor = \"#222\",\r\n className = \"\",\r\n}: SquaresProps) {\r\n const canvasRef = useRef<HTMLCanvasElement>(null);\r\n const requestRef = useRef<number | null>(null);\r\n const gridOffset = useRef({ x: 0, y: 0 });\r\n const hoveredSquare = useRef<{ x: number; y: number } | null>(null);\r\n\r\n useEffect(() => {\r\n const canvas = canvasRef.current;\r\n if (!canvas) return;\r\n const ctx = canvas.getContext(\"2d\");\r\n\r\n const resizeCanvas = () => {\r\n canvas.width = canvas.offsetWidth;\r\n canvas.height = canvas.offsetHeight;\r\n };\r\n\r\n window.addEventListener(\"resize\", resizeCanvas);\r\n resizeCanvas();\r\n\r\n const drawGrid = () => {\r\n if (!ctx) return;\r\n ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n\r\n const startX = Math.floor(gridOffset.current.x / squareSize) * squareSize;\r\n const startY = Math.floor(gridOffset.current.y / squareSize) * squareSize;\r\n\r\n for (let x = startX; x < canvas.width + squareSize; x += squareSize) {\r\n for (let y = startY; y < canvas.height + squareSize; y += squareSize) {\r\n const squareX = x - (gridOffset.current.x % squareSize);\r\n const squareY = y - (gridOffset.current.y % squareSize);\r\n\r\n if (\r\n hoveredSquare.current &&\r\n Math.floor((x - startX) / squareSize) === hoveredSquare.current.x &&\r\n Math.floor((y - startY) / squareSize) === hoveredSquare.current.y\r\n ) {\r\n ctx.fillStyle = hoverFillColor;\r\n ctx.fillRect(squareX, squareY, squareSize, squareSize);\r\n }\r\n\r\n ctx.strokeStyle = borderColor;\r\n ctx.strokeRect(squareX, squareY, squareSize, squareSize);\r\n }\r\n }\r\n };\r\n\r\n const updateAnimation = () => {\r\n const effectiveSpeed = Math.max(speed, 0.1);\r\n switch (direction) {\r\n case \"right\":\r\n gridOffset.current.x = (gridOffset.current.x - effectiveSpeed + squareSize) % squareSize;\r\n break;\r\n case \"left\":\r\n gridOffset.current.x = (gridOffset.current.x + effectiveSpeed + squareSize) % squareSize;\r\n break;\r\n case \"up\":\r\n gridOffset.current.y = (gridOffset.current.y + effectiveSpeed + squareSize) % squareSize;\r\n break;\r\n case \"down\":\r\n gridOffset.current.y = (gridOffset.current.y - effectiveSpeed + squareSize) % squareSize;\r\n break;\r\n case \"diagonal\":\r\n gridOffset.current.x = (gridOffset.current.x - effectiveSpeed + squareSize) % squareSize;\r\n gridOffset.current.y = (gridOffset.current.y - effectiveSpeed + squareSize) % squareSize;\r\n break;\r\n }\r\n\r\n drawGrid();\r\n requestRef.current = requestAnimationFrame(updateAnimation);\r\n };\r\n\r\n const handleMouseMove = (event: MouseEvent) => {\r\n const rect = canvas.getBoundingClientRect();\r\n const mouseX = event.clientX - rect.left;\r\n const mouseY = event.clientY - rect.top;\r\n\r\n const startX = Math.floor(gridOffset.current.x / squareSize) * squareSize;\r\n const startY = Math.floor(gridOffset.current.y / squareSize) * squareSize;\r\n\r\n hoveredSquare.current = {\r\n x: Math.floor((mouseX + gridOffset.current.x - startX) / squareSize),\r\n y: Math.floor((mouseY + gridOffset.current.y - startY) / squareSize),\r\n };\r\n };\r\n\r\n const handleMouseLeave = () => {\r\n hoveredSquare.current = null;\r\n };\r\n\r\n canvas.addEventListener(\"mousemove\", handleMouseMove);\r\n canvas.addEventListener(\"mouseleave\", handleMouseLeave);\r\n requestRef.current = requestAnimationFrame(updateAnimation);\r\n\r\n return () => {\r\n window.removeEventListener(\"resize\", resizeCanvas);\r\n if (requestRef.current) cancelAnimationFrame(requestRef.current);\r\n canvas.removeEventListener(\"mousemove\", handleMouseMove);\r\n canvas.removeEventListener(\"mouseleave\", handleMouseLeave);\r\n };\r\n }, [direction, speed, borderColor, hoverFillColor, squareSize]);\r\n\r\n return <canvas ref={canvasRef} className={`w-full h-full ${className}`} />;\r\n}\r\n\r\nexport default Squares;\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 h=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),D=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,l,u)=>u?u.toUpperCase():l.toLowerCase()),S=e=>{let a=D(e);return a.charAt(0).toUpperCase()+a.slice(1)},m=(...e)=>e.filter((a,l,u)=>!!a&&a.trim()!==""&&u.indexOf(a)===l).join(" ").trim(),g=e=>{for(let a in e)if(a.startsWith("aria-")||a==="role"||a==="title")return true};var w={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 P=react.forwardRef(({color:e="currentColor",size:a=24,strokeWidth:l=2,absoluteStrokeWidth:u,className:s="",children:d,iconNode:i,...c},r)=>react.createElement("svg",{ref:r,...w,width:a,height:a,stroke:e,strokeWidth:u?Number(l)*24/Number(a):l,className:m("lucide",s),...!d&&!g(c)&&{"aria-hidden":"true"},...c},[...i.map(([n,x])=>react.createElement(n,x)),...Array.isArray(d)?d:[d]]));var I=(e,a)=>{let l=react.forwardRef(({className:u,...s},d)=>react.createElement(P,{ref:d,iconNode:a,className:m(`lucide-${h(S(e))}`,`lucide-${e}`,u),...s}));return l.displayName=S(e),l};var T=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],p=I("chevron-left",T);var q=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],L=I("chevron-right",q);function b({title:e="Tech Pioneers",subtitle:a="building the future",description:l="We bring together brilliant developers and innovators.",members:u=[{name:"Emily Rodriguez",role:"Product Manager",experience:"6+ years",avatar:"https://i.pravatar.cc/160?img=1"},{name:"Mollie Hall",role:"CTO",experience:"12+ years",avatar:"https://i.pravatar.cc/160?img=2"},{name:"Alec Whitten",role:"UX Researcher",experience:"5+ years",avatar:"https://i.pravatar.cc/160?img=3"}],className:s=""}){let[d,i]=react.useState(0),[c,r]=react.useState(true),n=3;react.useEffect(()=>{if(!c)return;let o=setInterval(()=>{i(C=>(C+1)%Math.max(1,u.length-n+1));},5e3);return ()=>clearInterval(o)},[u.length,c]);let x=()=>{let o=Math.max(0,u.length-n);d>=o||(i(C=>Math.min(C+1,o)),r(false),setTimeout(()=>r(true),1500));},B=()=>{d<=0||(i(o=>Math.max(o-1,0)),r(false),setTimeout(()=>r(true),1500));};return jsxRuntime.jsx("section",{className:`overflow-hidden py-32 ${s}`,children:jsxRuntime.jsxs("div",{className:"mx-auto max-w-5xl px-8 lg:px-0",children:[jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("h2",{className:"text-5xl font-medium md:text-6xl",children:[e," ",jsxRuntime.jsx("br",{}),jsxRuntime.jsx("span",{className:"text-muted-foreground",children:a})]}),jsxRuntime.jsx("p",{className:"text-muted-foreground mt-6 max-w-md",children:l})]}),jsxRuntime.jsxs("div",{className:"relative",children:[jsxRuntime.jsxs("div",{className:"mt-4 hidden items-center justify-end gap-4 md:flex",children:[jsxRuntime.jsx("button",{onClick:B,disabled:d===0,className:"flex h-11 w-11 items-center justify-center rounded-full border hover:bg-accent disabled:opacity-50",children:jsxRuntime.jsx(p,{className:"h-5 w-5"})}),jsxRuntime.jsx("button",{onClick:x,disabled:d>=u.length-n,className:"flex h-11 w-11 items-center justify-center rounded-full border hover:bg-accent disabled:opacity-50",children:jsxRuntime.jsx(L,{className:"h-5 w-5"})})]}),jsxRuntime.jsx("div",{className:"mt-16 overflow-hidden",children:jsxRuntime.jsx("div",{className:"flex gap-4 transition-transform duration-500",style:{transform:`translateX(-${d*304}px)`},children:u.map(o=>jsxRuntime.jsxs("div",{className:"w-72 flex-shrink-0 rounded-2xl border p-7 text-center",children:[jsxRuntime.jsx("img",{src:o.avatar,alt:o.name,className:"mx-auto h-20 w-20 rounded-full border"}),jsxRuntime.jsxs("div",{className:"mt-6",children:[jsxRuntime.jsx("p",{className:"text-lg font-medium",children:o.name}),jsxRuntime.jsx("p",{className:"text-muted-foreground text-sm",children:o.role})]}),jsxRuntime.jsx("div",{className:"my-6 h-px bg-border"}),jsxRuntime.jsx("p",{className:"text-muted-foreground text-sm",children:o.experience})]},o.name))})})]})]})})}var aa=b;/*! Bundled license information:
|
|
2
|
+
|
|
3
|
+
lucide-react/dist/esm/shared/src/utils.js:
|
|
4
|
+
lucide-react/dist/esm/defaultAttributes.js:
|
|
5
|
+
lucide-react/dist/esm/Icon.js:
|
|
6
|
+
lucide-react/dist/esm/createLucideIcon.js:
|
|
7
|
+
lucide-react/dist/esm/icons/chevron-left.js:
|
|
8
|
+
lucide-react/dist/esm/icons/chevron-right.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.TeamCarousel=b;exports.default=aa;//# sourceMappingURL=index.js.map
|
|
17
|
+
//# sourceMappingURL=index.js.map
|