@deckai/deck-ui 0.0.22 → 0.0.23
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/README.md +0 -1
- package/dist/components/AboutCard.cjs +3 -3
- package/dist/components/AboutCard.cjs.map +1 -1
- package/dist/components/AboutCard.d.cts +1 -1
- package/dist/components/AboutCard.d.ts +1 -1
- package/dist/components/AboutCard.js +3 -3
- package/dist/components/AboutCard.js.map +1 -1
- package/dist/components/Accordion.cjs +2 -2
- package/dist/components/Accordion.cjs.map +1 -1
- package/dist/components/Accordion.js +2 -2
- package/dist/components/Accordion.js.map +1 -1
- package/dist/components/AddWorkCard.cjs +4 -4
- package/dist/components/AddWorkCard.cjs.map +1 -1
- package/dist/components/AddWorkCard.d.cts +1 -1
- package/dist/components/AddWorkCard.d.ts +1 -1
- package/dist/components/AddWorkCard.js +4 -4
- package/dist/components/AddWorkCard.js.map +1 -1
- package/dist/components/AutocompleteInput.cjs +4 -4
- package/dist/components/AutocompleteInput.cjs.map +1 -1
- package/dist/components/AutocompleteInput.d.cts +6 -6
- package/dist/components/AutocompleteInput.d.ts +6 -6
- package/dist/components/AutocompleteInput.js +4 -4
- package/dist/components/AutocompleteInput.js.map +1 -1
- package/dist/components/Avatar.cjs +1 -1
- package/dist/components/Avatar.cjs.map +1 -1
- package/dist/components/Avatar.d.cts +2 -2
- package/dist/components/Avatar.d.ts +2 -2
- package/dist/components/Avatar.js +1 -1
- package/dist/components/Avatar.js.map +1 -1
- package/dist/components/Badge.cjs +4 -4
- package/dist/components/Badge.cjs.map +1 -1
- package/dist/components/Badge.d.cts +2 -2
- package/dist/components/Badge.d.ts +2 -2
- package/dist/components/Badge.js +4 -4
- package/dist/components/Badge.js.map +1 -1
- package/dist/components/Breadcrumbs.cjs +2 -2
- package/dist/components/Breadcrumbs.cjs.map +1 -1
- package/dist/components/Breadcrumbs.js +2 -2
- package/dist/components/Breadcrumbs.js.map +1 -1
- package/dist/components/Button.cjs +5 -5
- package/dist/components/Button.cjs.map +1 -1
- package/dist/components/Button.d.cts +5 -5
- package/dist/components/Button.d.ts +5 -5
- package/dist/components/Button.js +5 -5
- package/dist/components/Button.js.map +1 -1
- package/dist/components/Carousel.cjs +1 -1
- package/dist/components/Carousel.cjs.map +1 -1
- package/dist/components/Carousel.d.cts +1 -1
- package/dist/components/Carousel.d.ts +1 -1
- package/dist/components/Carousel.js +1 -1
- package/dist/components/Carousel.js.map +1 -1
- package/dist/components/Collapsible.cjs +2 -2
- package/dist/components/Collapsible.cjs.map +1 -1
- package/dist/components/Collapsible.d.cts +4 -4
- package/dist/components/Collapsible.d.ts +4 -4
- package/dist/components/Collapsible.js +2 -2
- package/dist/components/Collapsible.js.map +1 -1
- package/dist/components/Combobox.cjs +4 -4
- package/dist/components/Combobox.cjs.map +1 -1
- package/dist/components/Combobox.d.cts +5 -2
- package/dist/components/Combobox.d.ts +5 -2
- package/dist/components/Combobox.js +4 -4
- package/dist/components/Combobox.js.map +1 -1
- package/dist/components/ContactItem.cjs +3 -3
- package/dist/components/ContactItem.cjs.map +1 -1
- package/dist/components/ContactItem.d.cts +1 -1
- package/dist/components/ContactItem.d.ts +1 -1
- package/dist/components/ContactItem.js +3 -3
- package/dist/components/ContactItem.js.map +1 -1
- package/dist/components/Dropdown.cjs +3 -3
- package/dist/components/Dropdown.cjs.map +1 -1
- package/dist/components/Dropdown.js +3 -3
- package/dist/components/Dropdown.js.map +1 -1
- package/dist/components/EditButton.cjs +5 -5
- package/dist/components/EditButton.cjs.map +1 -1
- package/dist/components/EditButton.d.cts +4 -4
- package/dist/components/EditButton.d.ts +4 -4
- package/dist/components/EditButton.js +5 -5
- package/dist/components/EditButton.js.map +1 -1
- package/dist/components/Fallback.cjs +1 -1
- package/dist/components/Fallback.cjs.map +1 -1
- package/dist/components/Fallback.js +1 -1
- package/dist/components/Fallback.js.map +1 -1
- package/dist/components/Icon.cjs +1 -1
- package/dist/components/Icon.cjs.map +1 -1
- package/dist/components/Icon.js +1 -1
- package/dist/components/Icon.js.map +1 -1
- package/dist/components/IconRenderer.cjs +1 -1
- package/dist/components/IconRenderer.cjs.map +1 -1
- package/dist/components/IconRenderer.d.cts +4 -4
- package/dist/components/IconRenderer.d.ts +4 -4
- package/dist/components/IconRenderer.js +1 -1
- package/dist/components/IconRenderer.js.map +1 -1
- package/dist/components/Input.cjs +3 -3
- package/dist/components/Input.cjs.map +1 -1
- package/dist/components/Input.d.cts +11 -11
- package/dist/components/Input.d.ts +11 -11
- package/dist/components/Input.js +3 -3
- package/dist/components/Input.js.map +1 -1
- package/dist/components/Link.cjs +4 -4
- package/dist/components/Link.cjs.map +1 -1
- package/dist/components/Link.d.cts +1 -1
- package/dist/components/Link.d.ts +1 -1
- package/dist/components/Link.js +4 -4
- package/dist/components/Link.js.map +1 -1
- package/dist/components/Logo.cjs +1 -1
- package/dist/components/Logo.cjs.map +1 -1
- package/dist/components/Logo.d.cts +1 -1
- package/dist/components/Logo.d.ts +1 -1
- package/dist/components/Logo.js +1 -1
- package/dist/components/Logo.js.map +1 -1
- package/dist/components/Modal.cjs +1 -1
- package/dist/components/Modal.cjs.map +1 -1
- package/dist/components/Modal.d.cts +4 -4
- package/dist/components/Modal.d.ts +4 -4
- package/dist/components/Modal.js +1 -1
- package/dist/components/Modal.js.map +1 -1
- package/dist/components/MultiSelectCombobox.cjs +2 -2
- package/dist/components/MultiSelectCombobox.cjs.map +1 -1
- package/dist/components/MultiSelectCombobox.d.cts +1 -1
- package/dist/components/MultiSelectCombobox.d.ts +1 -1
- package/dist/components/MultiSelectCombobox.js +2 -2
- package/dist/components/MultiSelectCombobox.js.map +1 -1
- package/dist/components/Navbar.cjs +7 -7
- package/dist/components/Navbar.cjs.map +1 -1
- package/dist/components/Navbar.d.cts +1 -1
- package/dist/components/Navbar.d.ts +1 -1
- package/dist/components/Navbar.js +7 -7
- package/dist/components/Navbar.js.map +1 -1
- package/dist/components/NavbarItem.cjs +4 -4
- package/dist/components/NavbarItem.cjs.map +1 -1
- package/dist/components/NavbarItem.d.cts +1 -1
- package/dist/components/NavbarItem.d.ts +1 -1
- package/dist/components/NavbarItem.js +4 -4
- package/dist/components/NavbarItem.js.map +1 -1
- package/dist/components/Option.cjs +2 -2
- package/dist/components/Option.cjs.map +1 -1
- package/dist/components/Option.js +2 -2
- package/dist/components/Option.js.map +1 -1
- package/dist/components/Pressable.cjs +1 -1
- package/dist/components/Pressable.cjs.map +1 -1
- package/dist/components/Pressable.js +1 -1
- package/dist/components/Pressable.js.map +1 -1
- package/dist/components/ProfileCard.cjs +2 -2
- package/dist/components/ProfileCard.cjs.map +1 -1
- package/dist/components/ProfileCard.d.cts +1 -1
- package/dist/components/ProfileCard.d.ts +1 -1
- package/dist/components/ProfileCard.js +2 -2
- package/dist/components/ProfileCard.js.map +1 -1
- package/dist/components/ProgressBar.cjs +3 -3
- package/dist/components/ProgressBar.cjs.map +1 -1
- package/dist/components/ProgressBar.js +3 -3
- package/dist/components/ProgressBar.js.map +1 -1
- package/dist/components/RadioGroup.cjs +3 -3
- package/dist/components/RadioGroup.cjs.map +1 -1
- package/dist/components/RadioGroup.js +3 -3
- package/dist/components/RadioGroup.js.map +1 -1
- package/dist/components/SegmentedTabs.cjs +4 -4
- package/dist/components/SegmentedTabs.cjs.map +1 -1
- package/dist/components/SegmentedTabs.js +4 -4
- package/dist/components/SegmentedTabs.js.map +1 -1
- package/dist/components/Sidebar.cjs +1 -1
- package/dist/components/Sidebar.cjs.map +1 -1
- package/dist/components/Sidebar.d.cts +1 -1
- package/dist/components/Sidebar.d.ts +1 -1
- package/dist/components/Sidebar.js +1 -1
- package/dist/components/Sidebar.js.map +1 -1
- package/dist/components/SlideButton.cjs +1 -1
- package/dist/components/SlideButton.cjs.map +1 -1
- package/dist/components/SlideButton.js +1 -1
- package/dist/components/SlideButton.js.map +1 -1
- package/dist/components/Slider.cjs.map +1 -1
- package/dist/components/Slider.js.map +1 -1
- package/dist/components/SocialCard.cjs +4 -4
- package/dist/components/SocialCard.cjs.map +1 -1
- package/dist/components/SocialCard.d.cts +1 -1
- package/dist/components/SocialCard.d.ts +1 -1
- package/dist/components/SocialCard.js +4 -4
- package/dist/components/SocialCard.js.map +1 -1
- package/dist/components/Spinner.cjs +1 -1
- package/dist/components/Spinner.cjs.map +1 -1
- package/dist/components/Spinner.d.cts +2 -2
- package/dist/components/Spinner.d.ts +2 -2
- package/dist/components/Spinner.js +1 -1
- package/dist/components/Spinner.js.map +1 -1
- package/dist/components/Switch.cjs.map +1 -1
- package/dist/components/Switch.d.cts +2 -2
- package/dist/components/Switch.d.ts +2 -2
- package/dist/components/Switch.js.map +1 -1
- package/dist/components/Tabs.cjs +3 -3
- package/dist/components/Tabs.cjs.map +1 -1
- package/dist/components/Tabs.js +3 -3
- package/dist/components/Tabs.js.map +1 -1
- package/dist/components/Tag.cjs +3 -3
- package/dist/components/Tag.cjs.map +1 -1
- package/dist/components/Tag.d.cts +1 -1
- package/dist/components/Tag.d.ts +1 -1
- package/dist/components/Tag.js +3 -3
- package/dist/components/Tag.js.map +1 -1
- package/dist/components/Text.cjs +1 -1
- package/dist/components/Text.cjs.map +1 -1
- package/dist/components/Text.d.cts +1 -1
- package/dist/components/Text.d.ts +1 -1
- package/dist/components/Text.js +1 -1
- package/dist/components/Text.js.map +1 -1
- package/dist/components/TextArea.cjs +4 -4
- package/dist/components/TextArea.cjs.map +1 -1
- package/dist/components/TextArea.d.cts +1 -1
- package/dist/components/TextArea.d.ts +1 -1
- package/dist/components/TextArea.js +4 -4
- package/dist/components/TextArea.js.map +1 -1
- package/dist/components/Toast.cjs +3 -3
- package/dist/components/Toast.cjs.map +1 -1
- package/dist/components/Toast.d.cts +7 -7
- package/dist/components/Toast.d.ts +7 -7
- package/dist/components/Toast.js +3 -3
- package/dist/components/Toast.js.map +1 -1
- package/dist/components/ToastProvider.cjs +1 -1
- package/dist/components/ToastProvider.cjs.map +1 -1
- package/dist/components/ToastProvider.d.cts +1 -1
- package/dist/components/ToastProvider.d.ts +1 -1
- package/dist/components/ToastProvider.js +1 -1
- package/dist/components/ToastProvider.js.map +1 -1
- package/dist/components/Tooltip.cjs +3 -3
- package/dist/components/Tooltip.cjs.map +1 -1
- package/dist/components/Tooltip.d.cts +1 -1
- package/dist/components/Tooltip.d.ts +1 -1
- package/dist/components/Tooltip.js +3 -3
- package/dist/components/Tooltip.js.map +1 -1
- package/dist/components/VideoPlayer.cjs +2 -2
- package/dist/components/VideoPlayer.cjs.map +1 -1
- package/dist/components/VideoPlayer.d.cts +4 -4
- package/dist/components/VideoPlayer.d.ts +4 -4
- package/dist/components/VideoPlayer.js +2 -2
- package/dist/components/VideoPlayer.js.map +1 -1
- package/dist/components/WorkCard.cjs +3 -3
- package/dist/components/WorkCard.cjs.map +1 -1
- package/dist/components/WorkCard.d.cts +1 -1
- package/dist/components/WorkCard.d.ts +1 -1
- package/dist/components/WorkCard.js +3 -3
- package/dist/components/WorkCard.js.map +1 -1
- package/dist/index.cjs +8 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +39 -39
- package/dist/index.d.ts +39 -39
- package/dist/index.js +8 -8
- package/dist/index.js.map +1 -1
- package/dist/styles/styles.css +1 -1
- package/package.json +2 -2
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
'use strict';var h=require('@radix-ui/react-dropdown-menu'),
|
|
1
|
+
'use strict';var h=require('@radix-ui/react-dropdown-menu'),m=require('react'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),icons=require('@deckai/icons'),l=require('@radix-ui/react-tooltip');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var h__namespace=/*#__PURE__*/_interopNamespace(h);var m__namespace=/*#__PURE__*/_interopNamespace(m);var l__namespace=/*#__PURE__*/_interopNamespace(l);function g(...e){return tailwindMerge.twMerge(clsx.clsx(e))}var R={12:"h-[12px] w-[12px]",16:"h-[16px] w-[16px]",18:"h-[18px] w-[18px]",20:"h-[20px] w-[20px]",24:"h-[24px] w-[24px]",32:"h-[32px] w-[32px]",36:"h-[36px] w-[36px]",40:"h-[40px] w-[40px]",42:"h-[42px] w-[42px]",48:"h-[48px] w-[48px]",64:"h-[64px] w-[64px]",72:"h-[72px] w-[72px]"},$={sm:{12:"sm:h-[12px] sm:w-[12px]",16:"sm:h-[16px] sm:w-[16px]",18:"sm:h-[18px] sm:w-[18px]",20:"sm:h-[20px] sm:w-[20px]",24:"sm:h-[24px] sm:w-[24px]",32:"sm:h-[32px] sm:w-[32px]",36:"sm:h-[36px] sm:w-[36px]",40:"sm:h-[40px] sm:w-[40px]",42:"sm:h-[42px] sm:w-[42px]",48:"sm:h-[48px] sm:w-[48px]",64:"sm:h-[64px] sm:w-[64px]",72:"sm:h-[72px] sm:w-[72px]"},md:{12:"md:h-[12px] md:w-[12px]",16:"md:h-[16px] md:w-[16px]",18:"md:h-[18px] md:w-[18px]",20:"md:h-[20px] md:w-[20px]",24:"md:h-[24px] md:w-[24px]",32:"md:h-[32px] md:w-[32px]",36:"md:h-[36px] md:w-[36px]",40:"md:h-[40px] md:w-[40px]",42:"md:h-[42px] md:w-[42px]",48:"md:h-[48px] md:w-[48px]",64:"md:h-[64px] md:w-[64px]",72:"md:h-[72px] md:w-[72px]"},lg:{12:"lg:h-[12px] lg:w-[12px]",16:"lg:h-[16px] lg:w-[16px]",18:"lg:h-[18px] lg:w-[18px]",20:"lg:h-[20px] lg:w-[20px]",24:"lg:h-[24px] lg:w-[24px]",32:"lg:h-[32px] lg:w-[32px]",36:"lg:h-[36px] lg:w-[36px]",40:"lg:h-[40px] lg:w-[40px]",42:"lg:h-[42px] lg:w-[42px]",48:"lg:h-[48px] lg:w-[48px]",64:"lg:h-[64px] lg:w-[64px]",72:"lg:h-[72px] lg:w-[72px]"},xl:{12:"xl:h-[12px] xl:w-[12px]",16:"xl:h-[16px] xl:w-[16px]",18:"xl:h-[18px] xl:w-[18px]",20:"xl:h-[20px] xl:w-[20px]",24:"xl:h-[24px] xl:w-[24px]",32:"xl:h-[32px] xl:w-[32px]",36:"xl:h-[36px] xl:w-[36px]",40:"xl:h-[40px] xl:w-[40px]",42:"xl:h-[42px] xl:w-[42px]",48:"xl:h-[48px] xl:w-[48px]",64:"xl:h-[64px] xl:w-[64px]",72:"xl:h-[72px] xl:w-[72px]"},"2xl":{12:"2xl:h-[12px] 2xl:w-[12px]",16:"2xl:h-[16px] 2xl:w-[16px]",18:"2xl:h-[18px] 2xl:w-[18px]",20:"2xl:h-[20px] 2xl:w-[20px]",24:"2xl:h-[24px] 2xl:w-[24px]",32:"2xl:h-[32px] 2xl:w-[32px]",36:"2xl:h-[36px] 2xl:w-[36px]",40:"2xl:h-[40px] 2xl:w-[40px]",42:"2xl:h-[42px] 2xl:w-[42px]",48:"2xl:h-[48px] 2xl:w-[48px]",64:"2xl:h-[64px] 2xl:w-[64px]",72:"2xl:h-[72px] 2xl:w-[72px]"}},H=e=>String(e),I=(e,t=24)=>{let o=[],r={};if(e===void 0){let n=H(t);n?o.push(R[n]):(r.height=`${t}px`,r.width=`${t}px`);}if(typeof e=="number"){let n=H(e);n?o.push(R[n]):(r.height=`${e}px`,r.width=`${e}px`);}if(Array.isArray(e)){let n=H(t),s=[n&&R[n]||`h-[${t}px] w-[${t}px]`];e.forEach(i=>{if(typeof i=="string"){let[p,d]=i.split(":"),a=parseInt(d,10),c=H(a);o.push(c&&$[p]?.[c]||`${p}:h-[${a}px] ${p}:w-[${a}px]`);}}),o.push(...s);}if(typeof e=="string"){let[n,s]=e.split(":"),i=parseInt(s,10),p=H(i);o.push(p&&$[n]?.[p]||`${n}:h-[${i}px] ${n}:w-[${i}px]`);}return {responsiveSizeClasses:o.join(" "),responsiveSizeStyles:r}};var V={primary:"var(--color-primary)",secondary:"var(--color-secondary)",white:"var(--color-white)",primaryBlue:"var(--color-primary-100)",disabled:"var(--color-disabled)",danger:"var(--color-danger)"},S=m__namespace.default.forwardRef(({name:e,size:t=24,color:o="primary",title:r,className:n,style:s={},...i},p)=>{let d=icons.IconMap[e],{responsiveSizeClasses:a,responsiveSizeStyles:c}=I(t,24);return m__namespace.default.createElement("div",{className:g("flex justify-center items-center",a,n),style:{"--icon-stroke":V[o],...c,...s}},m__namespace.default.createElement(d,{ref:p,"aria-hidden":!r,"aria-label":r,stroke:e.includes("filled")?void 0:V[o],...i}))});S.displayName="Icon";var _={xl:"h1",lg:"h1",md:"h2",sm:"h3",xs:"h4"},j=e=>{let[t,o]=e.split("-");return t==="heading"?_[o]||"p":t==="label"?"label":"p"},W={light:"font-light",regular:"font-regular",semibold:"font-semibold",bold:"font-bold"},q=e=>e?(Array.isArray(e)?e:[e]).map(o=>{if(o.includes(":")){let[r,n]=o.split(":");return `${r}:text-${n}`}return `text-${o}`}).join(" "):"text-body-default",f=m__namespace.default.forwardRef(({variant:e="body-default",color:t="primary",as:o,className:r,children:n,weight:s,...i},p)=>{let d=q(e),a=t==="inherit"?"text-inherit":`text-${t}`,c=m__namespace.default.useMemo(()=>{let y=typeof e=="string"?e.split(":").pop():Array.isArray(e)?e[0].split(":").pop():"body-default";return j(y)},[e]);return m__namespace.default.createElement(o||c,{ref:p,className:`
|
|
2
2
|
font-sans antialiased
|
|
3
3
|
${d}
|
|
4
4
|
${a}
|
|
5
|
-
${
|
|
5
|
+
${s&&`!${W[s]}`}
|
|
6
6
|
${r}
|
|
7
|
-
`,...
|
|
7
|
+
`,...i},n)});f.displayName="Text";var D={pink:"bg-tertiary-5",orange:"bg-tertiary-15",green:"bg-tertiary-25",purple:"bg-secondary-300"},F=e=>{let t=Object.keys(D),o=e.split("").reduce((s,i)=>i.charCodeAt(0)+((s<<5)-s),0),r=Math.abs(o)%t.length;return t[r]},k=m__namespace.forwardRef(({className:e,variant:t,iconName:o,children:r,...n},s)=>{let i=t||(typeof r=="string"?F(r):"pink");return m__namespace.createElement("span",{ref:s,className:g("inline-flex items-center gap-2","rounded px-2 py-1.5","text-sm font-medium",D[i],e),...n},o&&m__namespace.createElement(S,{size:16,name:o}),m__namespace.createElement(f,{variant:"body-xxs-semibold",className:"mt-0.5"},r))});k.displayName="Badge";function B({content:e,children:t,side:o="bottom",align:r="center",className:n,delayDuration:s=200,defaultOpen:i,open:p,onOpenChange:d,longPressDuration:a=500}){let[c,v]=m.useState(i||false),y=null,L=p??c,T=m.useCallback(M=>{p||v(M),d?.(M);},[p,d]),E=m.useCallback(()=>{y=setTimeout(()=>{T(true);},a);},[T,a]),b=m.useCallback(()=>{y&&(clearTimeout(y),y=null),setTimeout(()=>T(false),1500);},[y,T]);return m__namespace.createElement(l__namespace.Provider,{delayDuration:s},m__namespace.createElement(l__namespace.Root,{open:L,onOpenChange:T},m__namespace.createElement(l__namespace.Trigger,{asChild:true},m__namespace.createElement("span",{tabIndex:0,onTouchStart:E,onTouchEnd:b,onTouchCancel:b},t)),m__namespace.createElement(l__namespace.Portal,null,m__namespace.createElement(l__namespace.Content,{side:o,align:r,sideOffset:4,className:g("z-50 overflow-hidden rounded-lg","bg-primary px-3 py-1.5","text-xs text-white","animate-in fade-in-0 zoom-in-95","data-[state=closed]:animate-out data-[state=closed]:fade-out-0","data-[side=bottom]:slide-in-from-top-2","data-[side=top]:slide-in-from-bottom-2","select-none","max-w-60","touch-none",n)},typeof e=="string"?m__namespace.createElement(f,{variant:"body-default-medium",color:"white"},e):e,m__namespace.createElement(l__namespace.Arrow,{className:"fill-text-primary",width:10,height:5})))))}function Z({text:e,highlight:t}){if(!t)return m__namespace.default.createElement(m__namespace.default.Fragment,null,e);let o=e.split(new RegExp(`(${t})`,"i"));return m__namespace.default.createElement(m__namespace.default.Fragment,null,o.map((r,n)=>r.toLowerCase()===t.toLowerCase()?m__namespace.default.createElement("span",{key:n,className:"font-bold"},r):r))}var K=m__namespace.default.forwardRef(({value:e,label:t,onChange:o,onKeyDown:r,onMouseEnter:n,onMouseLeave:s,selected:i,color:p,disabled:d,className:a,id:c,role:v,"aria-selected":y,searchValue:L="",tooltip:T,onClick:E,badge:b},M)=>{let N=m__namespace.default.createElement("button",{ref:M,type:"button",id:c,role:v,"aria-selected":y,disabled:d,className:g("relative w-full text-left px-2 py-1.5 text-sm rounded outline-none","cursor-pointer hover:bg-gray-100","disabled:opacity-50 disabled:cursor-not-allowed",i&&"bg-gray-100","flex items-center gap-2",a),onClick:()=>{o?.(e),E?.();},onKeyDown:r,onMouseEnter:n,onMouseLeave:s},m__namespace.default.createElement(f,{variant:"body-default-medium",color:p==="danger"?"danger":"inherit"},typeof t=="string"?m__namespace.default.createElement(Z,{text:t,highlight:L}):t),b&&m__namespace.default.createElement(k,null,b));return T?m__namespace.default.createElement(B,{content:T},N):N});var J=m__namespace.forwardRef(({trigger:e,items:t,className:o,onSelect:r,align:n="end"},s)=>{let i=m__namespace.useCallback(p=>{r?.(p);},[r]);return m__namespace.createElement(h__namespace.Root,null,m__namespace.createElement(h__namespace.Trigger,{asChild:true},e),m__namespace.createElement(h__namespace.Portal,null,m__namespace.createElement(h__namespace.Content,{ref:s,align:n,sideOffset:4,className:g("z-50 min-w-[220px]","bg-background-0 rounded-lg p-1","shadow-lg border border-gray-100","animate-in fade-in-0 zoom-in-95",o)},t.map(p=>m__namespace.createElement(h__namespace.Item,{key:p.value,disabled:p.disabled,onSelect:()=>i(p.value),className:"outline-none",asChild:true},m__namespace.createElement(K,{...p,className:"py-3 px-6",onChange:i}))))))});J.displayName="Dropdown";exports.Dropdown=J;//# sourceMappingURL=Dropdown.cjs.map
|
|
8
8
|
//# sourceMappingURL=Dropdown.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/index.ts","../../src/utils/responsive.ts","../../src/components/Icon.tsx","../../src/components/Text.tsx","../../src/components/Badge.tsx","../../src/components/Tooltip.tsx","../../src/components/Option.tsx","../../src/components/Dropdown.tsx"],"names":["cn","inputs","twMerge","clsx","BASE_SIZES","RESPONSIVE_SIZES","getSizeKey","size","getResponsiveSize","baseSize","classes","styles","key","baseKey","responsiveClasses","breakpoint","valueStr","value","valueKey","COLOR_MAP","Icon","React","name","color","title","className","style","props","ref","IconComponent","IconMap","responsiveSizeClasses","responsiveSizeStyles","HEADING_ELEMENT_MAP","getElementFromVariant","variant","category","fontWeight","processVariants","variants","typographyClass","Text","as","children","weight","typographyClasses","colorClasses","suggestedElement","baseVariant","stringToVariant","str","variantKeys","hash","acc","char","index","Badge","w","iconName","finalVariant","Tooltip","content","side","align","delayDuration","defaultOpen","controlledOpen","onOpenChange","longPressDuration","isOpen","setIsOpen","useState","longPressTimer","open","handleOpenChange","useCallback","newOpen","handleTouchStart","handleTouchEnd","y","l","HighlightedText","text","highlight","parts","part","i","Option","label","onChange","onKeyDown","onMouseEnter","onMouseLeave","selected","disabled","id","role","ariaSelected","searchValue","tooltip","onClick","badge","Dropdown","m","trigger","items","onSelect","handleSelect","h","item"],"mappings":"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","file":"Dropdown.cjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\nexport const noopFn = () => {};\n","export type Breakpoint = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\nexport type ResponsiveSize = number | `${Breakpoint}:${number}`;\n\ntype SizeKey =\n | \"12\"\n | \"16\"\n | \"18\"\n | \"20\"\n | \"24\"\n | \"32\"\n | \"36\"\n | \"40\"\n | \"42\"\n | \"48\"\n | \"64\"\n | \"72\";\n\n// These constants help Tailwind identify the classes during compilation\nconst BASE_SIZES: Record<SizeKey, string> = {\n \"12\": \"h-[12px] w-[12px]\",\n \"16\": \"h-[16px] w-[16px]\",\n \"18\": \"h-[18px] w-[18px]\",\n \"20\": \"h-[20px] w-[20px]\",\n \"24\": \"h-[24px] w-[24px]\",\n \"32\": \"h-[32px] w-[32px]\",\n \"36\": \"h-[36px] w-[36px]\",\n \"40\": \"h-[40px] w-[40px]\",\n \"42\": \"h-[42px] w-[42px]\",\n \"48\": \"h-[48px] w-[48px]\",\n \"64\": \"h-[64px] w-[64px]\",\n \"72\": \"h-[72px] w-[72px]\"\n};\n\nconst RESPONSIVE_SIZES: Record<Breakpoint, Record<SizeKey, string>> = {\n sm: {\n \"12\": \"sm:h-[12px] sm:w-[12px]\",\n \"16\": \"sm:h-[16px] sm:w-[16px]\",\n \"18\": \"sm:h-[18px] sm:w-[18px]\",\n \"20\": \"sm:h-[20px] sm:w-[20px]\",\n \"24\": \"sm:h-[24px] sm:w-[24px]\",\n \"32\": \"sm:h-[32px] sm:w-[32px]\",\n \"36\": \"sm:h-[36px] sm:w-[36px]\",\n \"40\": \"sm:h-[40px] sm:w-[40px]\",\n \"42\": \"sm:h-[42px] sm:w-[42px]\",\n \"48\": \"sm:h-[48px] sm:w-[48px]\",\n \"64\": \"sm:h-[64px] sm:w-[64px]\",\n \"72\": \"sm:h-[72px] sm:w-[72px]\"\n },\n md: {\n \"12\": \"md:h-[12px] md:w-[12px]\",\n \"16\": \"md:h-[16px] md:w-[16px]\",\n \"18\": \"md:h-[18px] md:w-[18px]\",\n \"20\": \"md:h-[20px] md:w-[20px]\",\n \"24\": \"md:h-[24px] md:w-[24px]\",\n \"32\": \"md:h-[32px] md:w-[32px]\",\n \"36\": \"md:h-[36px] md:w-[36px]\",\n \"40\": \"md:h-[40px] md:w-[40px]\",\n \"42\": \"md:h-[42px] md:w-[42px]\",\n \"48\": \"md:h-[48px] md:w-[48px]\",\n \"64\": \"md:h-[64px] md:w-[64px]\",\n \"72\": \"md:h-[72px] md:w-[72px]\"\n },\n lg: {\n \"12\": \"lg:h-[12px] lg:w-[12px]\",\n \"16\": \"lg:h-[16px] lg:w-[16px]\",\n \"18\": \"lg:h-[18px] lg:w-[18px]\",\n \"20\": \"lg:h-[20px] lg:w-[20px]\",\n \"24\": \"lg:h-[24px] lg:w-[24px]\",\n \"32\": \"lg:h-[32px] lg:w-[32px]\",\n \"36\": \"lg:h-[36px] lg:w-[36px]\",\n \"40\": \"lg:h-[40px] lg:w-[40px]\",\n \"42\": \"lg:h-[42px] lg:w-[42px]\",\n \"48\": \"lg:h-[48px] lg:w-[48px]\",\n \"64\": \"lg:h-[64px] lg:w-[64px]\",\n \"72\": \"lg:h-[72px] lg:w-[72px]\"\n },\n xl: {\n \"12\": \"xl:h-[12px] xl:w-[12px]\",\n \"16\": \"xl:h-[16px] xl:w-[16px]\",\n \"18\": \"xl:h-[18px] xl:w-[18px]\",\n \"20\": \"xl:h-[20px] xl:w-[20px]\",\n \"24\": \"xl:h-[24px] xl:w-[24px]\",\n \"32\": \"xl:h-[32px] xl:w-[32px]\",\n \"36\": \"xl:h-[36px] xl:w-[36px]\",\n \"40\": \"xl:h-[40px] xl:w-[40px]\",\n \"42\": \"xl:h-[42px] xl:w-[42px]\",\n \"48\": \"xl:h-[48px] xl:w-[48px]\",\n \"64\": \"xl:h-[64px] xl:w-[64px]\",\n \"72\": \"xl:h-[72px] xl:w-[72px]\"\n },\n \"2xl\": {\n \"12\": \"2xl:h-[12px] 2xl:w-[12px]\",\n \"16\": \"2xl:h-[16px] 2xl:w-[16px]\",\n \"18\": \"2xl:h-[18px] 2xl:w-[18px]\",\n \"20\": \"2xl:h-[20px] 2xl:w-[20px]\",\n \"24\": \"2xl:h-[24px] 2xl:w-[24px]\",\n \"32\": \"2xl:h-[32px] 2xl:w-[32px]\",\n \"36\": \"2xl:h-[36px] 2xl:w-[36px]\",\n \"40\": \"2xl:h-[40px] 2xl:w-[40px]\",\n \"42\": \"2xl:h-[42px] 2xl:w-[42px]\",\n \"48\": \"2xl:h-[48px] 2xl:w-[48px]\",\n \"64\": \"2xl:h-[64px] 2xl:w-[64px]\",\n \"72\": \"2xl:h-[72px] 2xl:w-[72px]\"\n }\n};\n\nconst getSizeKey = (size: number): SizeKey | undefined => {\n return String(size) as SizeKey;\n};\n\nexport const getResponsiveSize = (\n size: ResponsiveSize | ResponsiveSize[] | undefined,\n baseSize: number = 24\n): {\n responsiveSizeClasses: string;\n responsiveSizeStyles: Record<string, string>;\n} => {\n const classes: string[] = [];\n const styles: Record<string, string> = {};\n\n // If no size provided, use baseSize\n if (size === undefined) {\n const key = getSizeKey(baseSize);\n if (key) {\n classes.push(BASE_SIZES[key]);\n } else {\n styles.height = `${baseSize}px`;\n styles.width = `${baseSize}px`;\n }\n }\n\n // If size is a number, use that directly\n if (typeof size === \"number\") {\n const key = getSizeKey(size);\n if (key) {\n classes.push(BASE_SIZES[key]);\n } else {\n styles.height = `${size}px`;\n styles.width = `${size}px`;\n }\n }\n\n // If array of responsive sizes, generate responsive classes\n if (Array.isArray(size)) {\n const baseKey = getSizeKey(baseSize);\n const responsiveClasses = [\n (baseKey && BASE_SIZES[baseKey]) || `h-[${baseSize}px] w-[${baseSize}px]`\n ];\n\n size.forEach((s) => {\n if (typeof s === \"string\") {\n const [breakpoint, valueStr] = s.split(\":\") as [Breakpoint, string];\n const value = parseInt(valueStr, 10);\n const key = getSizeKey(value);\n classes.push(\n (key && RESPONSIVE_SIZES[breakpoint]?.[key]) ||\n `${breakpoint}:h-[${value}px] ${breakpoint}:w-[${value}px]`\n );\n }\n });\n\n classes.push(...responsiveClasses);\n }\n\n if (typeof size === \"string\") {\n const [breakpoint, valueStr] = size.split(\":\") as [Breakpoint, string];\n const value = parseInt(valueStr, 10);\n const valueKey = getSizeKey(value);\n classes.push(\n (valueKey && RESPONSIVE_SIZES[breakpoint]?.[valueKey]) ||\n `${breakpoint}:h-[${value}px] ${breakpoint}:w-[${value}px]`\n );\n }\n\n return {\n responsiveSizeClasses: classes.join(\" \"),\n responsiveSizeStyles: styles\n };\n};\n","import { IconMap, IconName } from \"@deckai/icons\";\nimport React, { SVGProps } from \"react\";\nimport { IconColors } from \"../types/tailwind\";\nimport { cn } from \"../utils\";\nimport { ResponsiveSize, getResponsiveSize } from \"../utils/responsive\";\n\nexport type IconProps = {\n name: IconName;\n /** @default 24 */\n size?: ResponsiveSize | ResponsiveSize[];\n /** @default primary */\n color?: IconColors;\n title?: string;\n className?: string;\n style?: React.CSSProperties;\n} & Omit<SVGProps<SVGSVGElement>, \"aria-hidden\" | \"aria-label\">;\n\n// Using CSS variables to support dark mode\nconst COLOR_MAP: Record<IconColors, string> = {\n primary: \"var(--color-primary)\",\n secondary: \"var(--color-secondary)\",\n white: \"var(--color-white)\",\n primaryBlue: \"var(--color-primary-100)\",\n disabled: \"var(--color-disabled)\",\n danger: \"var(--color-danger)\"\n};\n\nexport const Icon = React.forwardRef<SVGSVGElement, IconProps>(\n (\n {\n name,\n size = 24,\n color = \"primary\",\n title,\n className,\n style = {},\n ...props\n },\n ref\n ) => {\n const IconComponent = IconMap[name];\n const { responsiveSizeClasses, responsiveSizeStyles } = getResponsiveSize(\n size,\n 24\n );\n\n return (\n <div\n className={cn(\n \"flex justify-center items-center\",\n responsiveSizeClasses,\n className\n )}\n style={{\n [\"--icon-stroke\" as string]: COLOR_MAP[color],\n ...responsiveSizeStyles,\n ...style\n }}\n >\n <IconComponent\n ref={ref}\n aria-hidden={!title}\n aria-label={title}\n stroke={name.includes(\"filled\") ? undefined : COLOR_MAP[color]}\n {...props}\n />\n </div>\n );\n }\n);\n\nIcon.displayName = \"Icon\";\n","import React from \"react\";\nimport { Typography } from \"../types/tailwind\";\nimport { Breakpoint } from \"../utils/responsive\";\n\ntype TextElement =\n | \"p\"\n | \"span\"\n | \"h1\"\n | \"h2\"\n | \"h3\"\n | \"h4\"\n | \"h5\"\n | \"h6\"\n | \"strong\"\n | \"em\"\n | \"blockquote\"\n | \"pre\"\n | \"code\"\n | \"small\"\n | \"label\"\n | \"a\";\n\n// HTML element mapping type\ntype HTMLElementByTag = {\n p: HTMLParagraphElement;\n span: HTMLSpanElement;\n h1: HTMLHeadingElement;\n h2: HTMLHeadingElement;\n h3: HTMLHeadingElement;\n h4: HTMLHeadingElement;\n h5: HTMLHeadingElement;\n h6: HTMLHeadingElement;\n strong: HTMLElement;\n em: HTMLElement;\n blockquote: HTMLQuoteElement;\n pre: HTMLPreElement;\n code: HTMLElement;\n small: HTMLElement;\n label: HTMLLabelElement;\n a: HTMLAnchorElement;\n};\n\n// HTML props mapping type\ntype HTMLPropsMap = {\n p: React.HTMLAttributes<HTMLParagraphElement>;\n span: React.HTMLAttributes<HTMLSpanElement>;\n h1: React.HTMLAttributes<HTMLHeadingElement>;\n h2: React.HTMLAttributes<HTMLHeadingElement>;\n h3: React.HTMLAttributes<HTMLHeadingElement>;\n h4: React.HTMLAttributes<HTMLHeadingElement>;\n h5: React.HTMLAttributes<HTMLHeadingElement>;\n h6: React.HTMLAttributes<HTMLHeadingElement>;\n strong: React.HTMLAttributes<HTMLElement>;\n em: React.HTMLAttributes<HTMLElement>;\n blockquote: React.HTMLAttributes<HTMLQuoteElement>;\n pre: React.HTMLAttributes<HTMLPreElement>;\n code: React.HTMLAttributes<HTMLElement>;\n small: React.HTMLAttributes<HTMLElement>;\n label: React.LabelHTMLAttributes<HTMLLabelElement>;\n a: Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, \"color\">;\n};\n\ntype TextColor =\n | \"primary\"\n | \"secondary\"\n | \"white\"\n | \"primary-blue\"\n | \"disabled\"\n | \"danger\"\n | \"inherit\"\n | \"primary-100\";\n\nconst HEADING_ELEMENT_MAP: Record<string, TextElement> = {\n xl: \"h1\",\n lg: \"h1\",\n md: \"h2\",\n sm: \"h3\",\n xs: \"h4\"\n};\n\nconst getElementFromVariant = (variant: TypographyKey): TextElement => {\n const [category, size] = variant.split(\"-\");\n\n if (category === \"heading\") {\n return HEADING_ELEMENT_MAP[size] || \"p\";\n }\n\n if (category === \"label\") {\n return \"label\";\n }\n\n return \"p\";\n};\n\ntype Weight = \"light\" | \"regular\" | \"semibold\" | \"bold\";\n\nconst fontWeight: Record<Weight, string> = {\n light: \"font-light\",\n regular: \"font-regular\",\n semibold: \"font-semibold\",\n bold: \"font-bold\"\n};\n\ntype ResponsiveVariant = TypographyKey | `${Breakpoint}:${TypographyKey}`;\n\ntype TypographyCategory = keyof Typography;\ntype TypographyValue<T extends TypographyCategory> = Extract<\n keyof Typography[T],\n string | number | bigint | boolean | null | undefined\n>;\ntype TypographyKey = {\n [T in TypographyCategory]: `${T}-${TypographyValue<T>}`;\n}[TypographyCategory];\n\n// Update TextProps to use ResponsiveVariant\nexport type TextProps<T extends TextElement = \"p\"> = {\n variant?: ResponsiveVariant | ResponsiveVariant[];\n color?: TextColor;\n as?: T;\n className?: string;\n children: React.ReactNode;\n weight?: Weight;\n} & HTMLPropsMap[T];\n\n// Add helper function to process variants\nconst processVariants = (\n variants: ResponsiveVariant | ResponsiveVariant[] | undefined\n): string => {\n if (!variants) return \"text-body-default\";\n\n const variantArray = Array.isArray(variants) ? variants : [variants];\n\n return variantArray\n .map((variant) => {\n if (variant.includes(\":\")) {\n const [breakpoint, typographyClass] = variant.split(\":\");\n return `${breakpoint}:text-${typographyClass}`;\n }\n return `text-${variant}`;\n })\n .join(\" \");\n};\n\nexport const Text = React.forwardRef(\n <T extends TextElement = \"p\">(\n {\n variant = \"body-default\",\n color = \"primary\",\n as,\n className,\n children,\n weight,\n ...props\n }: TextProps<T>,\n ref: React.ForwardedRef<HTMLElementByTag[T]>\n ) => {\n // Process typography classes with breakpoints\n const typographyClasses = processVariants(variant);\n\n // Get color styles using Tailwind classes that reference CSS variables\n const colorClasses = color === \"inherit\" ? \"text-inherit\" : `text-${color}`;\n\n const suggestedElement = React.useMemo(() => {\n const baseVariant =\n typeof variant === \"string\"\n ? variant.split(\":\").pop()!\n : Array.isArray(variant)\n ? variant[0].split(\":\").pop()!\n : \"body-default\";\n return getElementFromVariant(baseVariant as TypographyKey);\n }, [variant]);\n\n const Component = (as || suggestedElement) as T;\n\n return (\n // @ts-expect-error TODO: figure this out\n <Component\n ref={ref}\n className={`\n font-sans antialiased\n ${typographyClasses}\n ${colorClasses}\n ${weight && `!${fontWeight[weight]}`}\n ${className}\n `}\n {...props}\n >\n {children}\n </Component>\n );\n }\n);\n\nText.displayName = \"Text\";\n","import { IconName } from \"@deckai/icons\";\nimport * as React from \"react\";\nimport { cn } from \"../utils\";\nimport { Icon } from \"./Icon\";\nimport { Text } from \"./Text\";\n\nexport type BadgeProps = {\n variant?: \"pink\" | \"orange\" | \"green\" | \"purple\";\n iconName?: IconName;\n} & React.HTMLAttributes<HTMLSpanElement>;\n\nconst variants = {\n pink: \"bg-tertiary-5\",\n orange: \"bg-tertiary-15\",\n green: \"bg-tertiary-25\",\n purple: \"bg-secondary-300\"\n};\n\nconst stringToVariant = (str: string): keyof typeof variants => {\n const variantKeys = Object.keys(variants) as Array<keyof typeof variants>;\n // Let's log some values to understand what's happening\n const hash = str\n .split(\"\")\n .reduce((acc, char) => char.charCodeAt(0) + ((acc << 5) - acc), 0);\n\n const index = Math.abs(hash) % variantKeys.length;\n const selectedVariant = variantKeys[index];\n\n return selectedVariant;\n};\n\nexport const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, variant, iconName, children, ...props }, ref) => {\n const finalVariant =\n variant ||\n (typeof children === \"string\" ? stringToVariant(children) : \"pink\");\n return (\n <span\n ref={ref}\n className={cn(\n \"inline-flex items-center gap-2\",\n \"rounded px-2 py-1.5\",\n \"text-sm font-medium\",\n variants[finalVariant],\n className\n )}\n {...props}\n >\n {iconName && <Icon size={16} name={iconName} />}\n <Text variant=\"body-xxs-semibold\" className=\"mt-0.5\">\n {children}\n </Text>\n </span>\n );\n }\n);\n\nBadge.displayName = \"Badge\";\n","import * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport * as React from \"react\";\nimport { useCallback, useState } from \"react\";\nimport { cn } from \"../utils\";\nimport { Text } from \"./Text\";\nexport interface TooltipProps {\n content: React.ReactNode;\n children: React.ReactNode;\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n align?: \"start\" | \"center\" | \"end\";\n className?: string;\n delayDuration?: number;\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** Duration in ms for long press on mobile devices */\n longPressDuration?: number;\n}\n\nexport const Tooltip = ({\n content,\n children,\n side = \"bottom\",\n align = \"center\",\n className,\n delayDuration = 200,\n defaultOpen,\n open: controlledOpen,\n onOpenChange,\n longPressDuration = 500\n}: TooltipProps) => {\n const [isOpen, setIsOpen] = useState(defaultOpen || false);\n let longPressTimer: Timer | null = null;\n\n const open = controlledOpen ?? isOpen;\n const handleOpenChange = useCallback(\n (newOpen: boolean) => {\n if (!controlledOpen) {\n setIsOpen(newOpen);\n }\n onOpenChange?.(newOpen);\n },\n [controlledOpen, onOpenChange]\n );\n\n const handleTouchStart = useCallback(() => {\n const timer = setTimeout(() => {\n handleOpenChange(true);\n }, longPressDuration);\n longPressTimer = timer;\n }, [handleOpenChange, longPressDuration]);\n\n const handleTouchEnd = useCallback(() => {\n if (longPressTimer) {\n clearTimeout(longPressTimer);\n longPressTimer = null;\n }\n // Keep tooltip open for a brief moment after touch\n setTimeout(() => handleOpenChange(false), 1500);\n }, [longPressTimer, handleOpenChange]);\n\n return (\n <TooltipPrimitive.Provider delayDuration={delayDuration}>\n <TooltipPrimitive.Root open={open} onOpenChange={handleOpenChange}>\n <TooltipPrimitive.Trigger asChild>\n <span\n tabIndex={0}\n onTouchStart={handleTouchStart}\n onTouchEnd={handleTouchEnd}\n onTouchCancel={handleTouchEnd}\n >\n {children}\n </span>\n </TooltipPrimitive.Trigger>\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n side={side}\n align={align}\n sideOffset={4}\n className={cn(\n \"z-50 overflow-hidden rounded-lg\",\n \"bg-primary px-3 py-1.5\",\n \"text-xs text-white\",\n \"animate-in fade-in-0 zoom-in-95\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0\",\n \"data-[side=bottom]:slide-in-from-top-2\",\n \"data-[side=top]:slide-in-from-bottom-2\",\n \"select-none\",\n \"max-w-60\",\n \"touch-none\", // Prevent touch events from interfering with scrolling\n className\n )}\n >\n {typeof content === \"string\" ? (\n <Text variant=\"body-default-medium\" color=\"white\">\n {content}\n </Text>\n ) : (\n content\n )}\n <TooltipPrimitive.Arrow\n className=\"fill-text-primary\"\n width={10}\n height={5}\n />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n </TooltipPrimitive.Root>\n </TooltipPrimitive.Provider>\n );\n};\n","import React, { KeyboardEvent } from \"react\";\nimport { cn } from \"../utils\";\nimport { Badge } from \"./Badge\";\nimport { Text } from \"./Text\";\nimport { Tooltip } from \"./Tooltip\";\n\nexport type OptionProps = {\n label: React.ReactNode;\n value: string;\n /** Optional color override for specific items like \"Logout\" in red */\n color?: \"default\" | \"danger\";\n /** Optional disabled state */\n disabled?: boolean;\n onChange?: (value: string) => void;\n onKeyDown?: (event: KeyboardEvent<HTMLButtonElement>) => void;\n onMouseEnter?: () => void;\n onMouseLeave?: () => void;\n selected?: boolean;\n className?: string;\n /** ID for accessibility */\n id?: string;\n /** ARIA role */\n role?: string;\n /** ARIA selected state */\n \"aria-selected\"?: boolean;\n /** Current search value for highlighting matches */\n searchValue?: string;\n /** Optional tooltip content */\n tooltip?: React.ReactNode;\n onClick?: () => void;\n badge?: React.ReactNode;\n};\n\nconst HighlightedText = ({\n text,\n highlight\n}: {\n text: string;\n highlight: string;\n}) => {\n if (!highlight) return <>{text}</>;\n\n const parts = text.split(new RegExp(`(${highlight})`, \"i\"));\n return (\n <>\n {parts.map((part, i) =>\n part.toLowerCase() === highlight.toLowerCase() ? (\n <span key={i} className=\"font-bold\">\n {part}\n </span>\n ) : (\n part\n )\n )}\n </>\n );\n};\n\nexport const Option = React.forwardRef<HTMLButtonElement, OptionProps>(\n (\n {\n value,\n label,\n onChange,\n onKeyDown,\n onMouseEnter,\n onMouseLeave,\n selected,\n color,\n disabled,\n className,\n id,\n role,\n \"aria-selected\": ariaSelected,\n searchValue = \"\",\n tooltip,\n onClick,\n badge\n },\n ref\n ) => {\n const content = (\n <button\n ref={ref}\n type=\"button\"\n id={id}\n role={role}\n aria-selected={ariaSelected}\n disabled={disabled}\n className={cn(\n \"relative w-full text-left px-2 py-1.5 text-sm rounded outline-none\",\n \"cursor-pointer hover:bg-gray-100\",\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\n selected && \"bg-gray-100\",\n \"flex items-center gap-2\",\n className\n )}\n onClick={() => {\n onChange?.(value);\n onClick?.();\n }}\n onKeyDown={onKeyDown}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n <Text\n variant=\"body-default-medium\"\n color={color === \"danger\" ? \"danger\" : \"inherit\"}\n >\n {typeof label === \"string\" ? (\n <HighlightedText text={label} highlight={searchValue} />\n ) : (\n label\n )}\n </Text>\n {badge && <Badge>{badge}</Badge>}\n </button>\n );\n return tooltip ? <Tooltip content={tooltip}>{content}</Tooltip> : content;\n }\n);\n","import * as DropdownMenu from \"@radix-ui/react-dropdown-menu\";\nimport * as React from \"react\";\nimport { cn } from \"../utils\";\nimport { Option, type OptionProps } from \"./Option\";\n\nexport type DropdownProps = {\n /** The trigger element that opens the dropdown */\n trigger: React.ReactNode;\n /** Array of items to show in the dropdown */\n items: Omit<OptionProps, \"onChange\" | \"selected\">[];\n /** Optional className for the content */\n className?: string;\n /** Callback when an item is selected */\n onSelect?: (value: string) => void;\n /** Optional side alignment */\n align?: \"start\" | \"center\" | \"end\";\n};\n\nexport const Dropdown = React.forwardRef<HTMLDivElement, DropdownProps>(\n ({ trigger, items, className, onSelect, align = \"end\" }, ref) => {\n const handleSelect = React.useCallback(\n (value: string) => {\n onSelect?.(value);\n },\n [onSelect]\n );\n\n return (\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>{trigger}</DropdownMenu.Trigger>\n\n <DropdownMenu.Portal>\n <DropdownMenu.Content\n ref={ref}\n align={align}\n sideOffset={4}\n className={cn(\n \"z-50 min-w-[220px]\",\n \"bg-background-0 rounded-lg p-1\",\n \"shadow-lg border border-gray-100\",\n \"animate-in fade-in-0 zoom-in-95\",\n className\n )}\n >\n {items.map((item) => (\n <DropdownMenu.Item\n key={item.value}\n disabled={item.disabled}\n onSelect={() => handleSelect(item.value)}\n className=\"outline-none\"\n asChild\n >\n <Option\n {...item}\n className=\"py-3 px-6\"\n onChange={handleSelect}\n />\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n );\n }\n);\n\nDropdown.displayName = \"Dropdown\";\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/utils/index.ts","../../src/utils/responsive.ts","../../src/components/Icon.tsx","../../src/components/Text.tsx","../../src/components/Badge.tsx","../../src/components/Tooltip.tsx","../../src/components/Option.tsx","../../src/components/Dropdown.tsx"],"names":["cn","inputs","twMerge","clsx","BASE_SIZES","RESPONSIVE_SIZES","getSizeKey","size","getResponsiveSize","baseSize","classes","styles","key","baseKey","responsiveClasses","s","breakpoint","valueStr","value","valueKey","COLOR_MAP","Icon","React","name","color","title","className","style","props","ref","IconComponent","IconMap","responsiveSizeClasses","responsiveSizeStyles","HEADING_ELEMENT_MAP","getElementFromVariant","variant","category","fontWeight","processVariants","variants","typographyClass","Text","as","children","weight","typographyClasses","colorClasses","suggestedElement","baseVariant","stringToVariant","str","variantKeys","hash","acc","char","index","Badge","w","iconName","finalVariant","Tooltip","content","side","align","delayDuration","defaultOpen","controlledOpen","onOpenChange","longPressDuration","isOpen","setIsOpen","useState","longPressTimer","open","handleOpenChange","useCallback","newOpen","handleTouchStart","handleTouchEnd","u","l","HighlightedText","text","highlight","parts","part","i","Option","label","onChange","onKeyDown","onMouseEnter","onMouseLeave","selected","disabled","id","role","ariaSelected","searchValue","tooltip","onClick","badge","Dropdown","x","trigger","items","onSelect","handleSelect","h","item"],"mappings":"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","file":"Dropdown.cjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\nexport const noopFn = () => {};\n","export type Breakpoint = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\nexport type ResponsiveSize = number | `${Breakpoint}:${number}`;\n\ntype SizeKey =\n | \"12\"\n | \"16\"\n | \"18\"\n | \"20\"\n | \"24\"\n | \"32\"\n | \"36\"\n | \"40\"\n | \"42\"\n | \"48\"\n | \"64\"\n | \"72\";\n\n// These constants help Tailwind identify the classes during compilation\nconst BASE_SIZES: Record<SizeKey, string> = {\n \"12\": \"h-[12px] w-[12px]\",\n \"16\": \"h-[16px] w-[16px]\",\n \"18\": \"h-[18px] w-[18px]\",\n \"20\": \"h-[20px] w-[20px]\",\n \"24\": \"h-[24px] w-[24px]\",\n \"32\": \"h-[32px] w-[32px]\",\n \"36\": \"h-[36px] w-[36px]\",\n \"40\": \"h-[40px] w-[40px]\",\n \"42\": \"h-[42px] w-[42px]\",\n \"48\": \"h-[48px] w-[48px]\",\n \"64\": \"h-[64px] w-[64px]\",\n \"72\": \"h-[72px] w-[72px]\"\n};\n\nconst RESPONSIVE_SIZES: Record<Breakpoint, Record<SizeKey, string>> = {\n sm: {\n \"12\": \"sm:h-[12px] sm:w-[12px]\",\n \"16\": \"sm:h-[16px] sm:w-[16px]\",\n \"18\": \"sm:h-[18px] sm:w-[18px]\",\n \"20\": \"sm:h-[20px] sm:w-[20px]\",\n \"24\": \"sm:h-[24px] sm:w-[24px]\",\n \"32\": \"sm:h-[32px] sm:w-[32px]\",\n \"36\": \"sm:h-[36px] sm:w-[36px]\",\n \"40\": \"sm:h-[40px] sm:w-[40px]\",\n \"42\": \"sm:h-[42px] sm:w-[42px]\",\n \"48\": \"sm:h-[48px] sm:w-[48px]\",\n \"64\": \"sm:h-[64px] sm:w-[64px]\",\n \"72\": \"sm:h-[72px] sm:w-[72px]\"\n },\n md: {\n \"12\": \"md:h-[12px] md:w-[12px]\",\n \"16\": \"md:h-[16px] md:w-[16px]\",\n \"18\": \"md:h-[18px] md:w-[18px]\",\n \"20\": \"md:h-[20px] md:w-[20px]\",\n \"24\": \"md:h-[24px] md:w-[24px]\",\n \"32\": \"md:h-[32px] md:w-[32px]\",\n \"36\": \"md:h-[36px] md:w-[36px]\",\n \"40\": \"md:h-[40px] md:w-[40px]\",\n \"42\": \"md:h-[42px] md:w-[42px]\",\n \"48\": \"md:h-[48px] md:w-[48px]\",\n \"64\": \"md:h-[64px] md:w-[64px]\",\n \"72\": \"md:h-[72px] md:w-[72px]\"\n },\n lg: {\n \"12\": \"lg:h-[12px] lg:w-[12px]\",\n \"16\": \"lg:h-[16px] lg:w-[16px]\",\n \"18\": \"lg:h-[18px] lg:w-[18px]\",\n \"20\": \"lg:h-[20px] lg:w-[20px]\",\n \"24\": \"lg:h-[24px] lg:w-[24px]\",\n \"32\": \"lg:h-[32px] lg:w-[32px]\",\n \"36\": \"lg:h-[36px] lg:w-[36px]\",\n \"40\": \"lg:h-[40px] lg:w-[40px]\",\n \"42\": \"lg:h-[42px] lg:w-[42px]\",\n \"48\": \"lg:h-[48px] lg:w-[48px]\",\n \"64\": \"lg:h-[64px] lg:w-[64px]\",\n \"72\": \"lg:h-[72px] lg:w-[72px]\"\n },\n xl: {\n \"12\": \"xl:h-[12px] xl:w-[12px]\",\n \"16\": \"xl:h-[16px] xl:w-[16px]\",\n \"18\": \"xl:h-[18px] xl:w-[18px]\",\n \"20\": \"xl:h-[20px] xl:w-[20px]\",\n \"24\": \"xl:h-[24px] xl:w-[24px]\",\n \"32\": \"xl:h-[32px] xl:w-[32px]\",\n \"36\": \"xl:h-[36px] xl:w-[36px]\",\n \"40\": \"xl:h-[40px] xl:w-[40px]\",\n \"42\": \"xl:h-[42px] xl:w-[42px]\",\n \"48\": \"xl:h-[48px] xl:w-[48px]\",\n \"64\": \"xl:h-[64px] xl:w-[64px]\",\n \"72\": \"xl:h-[72px] xl:w-[72px]\"\n },\n \"2xl\": {\n \"12\": \"2xl:h-[12px] 2xl:w-[12px]\",\n \"16\": \"2xl:h-[16px] 2xl:w-[16px]\",\n \"18\": \"2xl:h-[18px] 2xl:w-[18px]\",\n \"20\": \"2xl:h-[20px] 2xl:w-[20px]\",\n \"24\": \"2xl:h-[24px] 2xl:w-[24px]\",\n \"32\": \"2xl:h-[32px] 2xl:w-[32px]\",\n \"36\": \"2xl:h-[36px] 2xl:w-[36px]\",\n \"40\": \"2xl:h-[40px] 2xl:w-[40px]\",\n \"42\": \"2xl:h-[42px] 2xl:w-[42px]\",\n \"48\": \"2xl:h-[48px] 2xl:w-[48px]\",\n \"64\": \"2xl:h-[64px] 2xl:w-[64px]\",\n \"72\": \"2xl:h-[72px] 2xl:w-[72px]\"\n }\n};\n\nconst getSizeKey = (size: number): SizeKey | undefined => {\n return String(size) as SizeKey;\n};\n\nexport const getResponsiveSize = (\n size: ResponsiveSize | ResponsiveSize[] | undefined,\n baseSize: number = 24\n): {\n responsiveSizeClasses: string;\n responsiveSizeStyles: Record<string, string>;\n} => {\n const classes: string[] = [];\n const styles: Record<string, string> = {};\n\n // If no size provided, use baseSize\n if (size === undefined) {\n const key = getSizeKey(baseSize);\n if (key) {\n classes.push(BASE_SIZES[key]);\n } else {\n styles.height = `${baseSize}px`;\n styles.width = `${baseSize}px`;\n }\n }\n\n // If size is a number, use that directly\n if (typeof size === \"number\") {\n const key = getSizeKey(size);\n if (key) {\n classes.push(BASE_SIZES[key]);\n } else {\n styles.height = `${size}px`;\n styles.width = `${size}px`;\n }\n }\n\n // If array of responsive sizes, generate responsive classes\n if (Array.isArray(size)) {\n const baseKey = getSizeKey(baseSize);\n const responsiveClasses = [\n (baseKey && BASE_SIZES[baseKey]) || `h-[${baseSize}px] w-[${baseSize}px]`\n ];\n\n size.forEach((s) => {\n if (typeof s === \"string\") {\n const [breakpoint, valueStr] = s.split(\":\") as [Breakpoint, string];\n const value = parseInt(valueStr, 10);\n const key = getSizeKey(value);\n classes.push(\n (key && RESPONSIVE_SIZES[breakpoint]?.[key]) ||\n `${breakpoint}:h-[${value}px] ${breakpoint}:w-[${value}px]`\n );\n }\n });\n\n classes.push(...responsiveClasses);\n }\n\n if (typeof size === \"string\") {\n const [breakpoint, valueStr] = size.split(\":\") as [Breakpoint, string];\n const value = parseInt(valueStr, 10);\n const valueKey = getSizeKey(value);\n classes.push(\n (valueKey && RESPONSIVE_SIZES[breakpoint]?.[valueKey]) ||\n `${breakpoint}:h-[${value}px] ${breakpoint}:w-[${value}px]`\n );\n }\n\n return {\n responsiveSizeClasses: classes.join(\" \"),\n responsiveSizeStyles: styles\n };\n};\n","import type { IconName } from \"@deckai/icons\";\nimport { IconMap } from \"@deckai/icons\";\nimport type { SVGProps } from \"react\";\nimport React from \"react\";\n\nimport type { IconColors } from \"../types/tailwind\";\nimport { cn } from \"../utils\";\nimport type { ResponsiveSize } from \"../utils/responsive\";\nimport { getResponsiveSize } from \"../utils/responsive\";\n\nexport type IconProps = {\n name: IconName;\n /** @default 24 */\n size?: ResponsiveSize | ResponsiveSize[];\n /** @default primary */\n color?: IconColors;\n title?: string;\n className?: string;\n style?: React.CSSProperties;\n} & Omit<SVGProps<SVGSVGElement>, \"aria-hidden\" | \"aria-label\">;\n\n// Using CSS variables to support dark mode\nconst COLOR_MAP: Record<IconColors, string> = {\n primary: \"var(--color-primary)\",\n secondary: \"var(--color-secondary)\",\n white: \"var(--color-white)\",\n primaryBlue: \"var(--color-primary-100)\",\n disabled: \"var(--color-disabled)\",\n danger: \"var(--color-danger)\"\n};\n\nexport const Icon = React.forwardRef<SVGSVGElement, IconProps>(\n (\n {\n name,\n size = 24,\n color = \"primary\",\n title,\n className,\n style = {},\n ...props\n },\n ref\n ) => {\n const IconComponent = IconMap[name];\n const { responsiveSizeClasses, responsiveSizeStyles } = getResponsiveSize(\n size,\n 24\n );\n\n return (\n <div\n className={cn(\n \"flex justify-center items-center\",\n responsiveSizeClasses,\n className\n )}\n style={{\n [\"--icon-stroke\" as string]: COLOR_MAP[color],\n ...responsiveSizeStyles,\n ...style\n }}\n >\n <IconComponent\n ref={ref}\n aria-hidden={!title}\n aria-label={title}\n stroke={name.includes(\"filled\") ? undefined : COLOR_MAP[color]}\n {...props}\n />\n </div>\n );\n }\n);\n\nIcon.displayName = \"Icon\";\n","import React from \"react\";\n\nimport type { Typography } from \"../types/tailwind\";\nimport type { Breakpoint } from \"../utils/responsive\";\n\ntype TextElement =\n | \"p\"\n | \"span\"\n | \"h1\"\n | \"h2\"\n | \"h3\"\n | \"h4\"\n | \"h5\"\n | \"h6\"\n | \"strong\"\n | \"em\"\n | \"blockquote\"\n | \"pre\"\n | \"code\"\n | \"small\"\n | \"label\"\n | \"a\";\n\n// HTML element mapping type\ntype HTMLElementByTag = {\n p: HTMLParagraphElement;\n span: HTMLSpanElement;\n h1: HTMLHeadingElement;\n h2: HTMLHeadingElement;\n h3: HTMLHeadingElement;\n h4: HTMLHeadingElement;\n h5: HTMLHeadingElement;\n h6: HTMLHeadingElement;\n strong: HTMLElement;\n em: HTMLElement;\n blockquote: HTMLQuoteElement;\n pre: HTMLPreElement;\n code: HTMLElement;\n small: HTMLElement;\n label: HTMLLabelElement;\n a: HTMLAnchorElement;\n};\n\n// HTML props mapping type\ntype HTMLPropsMap = {\n p: React.HTMLAttributes<HTMLParagraphElement>;\n span: React.HTMLAttributes<HTMLSpanElement>;\n h1: React.HTMLAttributes<HTMLHeadingElement>;\n h2: React.HTMLAttributes<HTMLHeadingElement>;\n h3: React.HTMLAttributes<HTMLHeadingElement>;\n h4: React.HTMLAttributes<HTMLHeadingElement>;\n h5: React.HTMLAttributes<HTMLHeadingElement>;\n h6: React.HTMLAttributes<HTMLHeadingElement>;\n strong: React.HTMLAttributes<HTMLElement>;\n em: React.HTMLAttributes<HTMLElement>;\n blockquote: React.HTMLAttributes<HTMLQuoteElement>;\n pre: React.HTMLAttributes<HTMLPreElement>;\n code: React.HTMLAttributes<HTMLElement>;\n small: React.HTMLAttributes<HTMLElement>;\n label: React.LabelHTMLAttributes<HTMLLabelElement>;\n a: Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, \"color\">;\n};\n\ntype TextColor =\n | \"primary\"\n | \"secondary\"\n | \"white\"\n | \"primary-blue\"\n | \"disabled\"\n | \"danger\"\n | \"inherit\"\n | \"primary-100\";\n\nconst HEADING_ELEMENT_MAP: Record<string, TextElement> = {\n xl: \"h1\",\n lg: \"h1\",\n md: \"h2\",\n sm: \"h3\",\n xs: \"h4\"\n};\n\nconst getElementFromVariant = (variant: TypographyKey): TextElement => {\n const [category, size] = variant.split(\"-\");\n\n if (category === \"heading\") {\n return HEADING_ELEMENT_MAP[size] || \"p\";\n }\n\n if (category === \"label\") {\n return \"label\";\n }\n\n return \"p\";\n};\n\ntype Weight = \"light\" | \"regular\" | \"semibold\" | \"bold\";\n\nconst fontWeight: Record<Weight, string> = {\n light: \"font-light\",\n regular: \"font-regular\",\n semibold: \"font-semibold\",\n bold: \"font-bold\"\n};\n\ntype ResponsiveVariant = TypographyKey | `${Breakpoint}:${TypographyKey}`;\n\ntype TypographyCategory = keyof Typography;\ntype TypographyValue<T extends TypographyCategory> = Extract<\n keyof Typography[T],\n string | number | bigint | boolean | null | undefined\n>;\ntype TypographyKey = {\n [T in TypographyCategory]: `${T}-${TypographyValue<T>}`;\n}[TypographyCategory];\n\n// Update TextProps to use ResponsiveVariant\nexport type TextProps<T extends TextElement = \"p\"> = {\n variant?: ResponsiveVariant | ResponsiveVariant[];\n color?: TextColor;\n as?: T;\n className?: string;\n children: React.ReactNode;\n weight?: Weight;\n} & HTMLPropsMap[T];\n\n// Add helper function to process variants\nconst processVariants = (\n variants: ResponsiveVariant | ResponsiveVariant[] | undefined\n): string => {\n if (!variants) return \"text-body-default\";\n\n const variantArray = Array.isArray(variants) ? variants : [variants];\n\n return variantArray\n .map((variant) => {\n if (variant.includes(\":\")) {\n const [breakpoint, typographyClass] = variant.split(\":\");\n return `${breakpoint}:text-${typographyClass}`;\n }\n return `text-${variant}`;\n })\n .join(\" \");\n};\n\nexport const Text = React.forwardRef(\n <T extends TextElement = \"p\">(\n {\n variant = \"body-default\",\n color = \"primary\",\n as,\n className,\n children,\n weight,\n ...props\n }: TextProps<T>,\n ref: React.ForwardedRef<HTMLElementByTag[T]>\n ) => {\n // Process typography classes with breakpoints\n const typographyClasses = processVariants(variant);\n\n // Get color styles using Tailwind classes that reference CSS variables\n const colorClasses = color === \"inherit\" ? \"text-inherit\" : `text-${color}`;\n\n const suggestedElement = React.useMemo(() => {\n const baseVariant =\n typeof variant === \"string\"\n ? variant.split(\":\").pop()!\n : Array.isArray(variant)\n ? variant[0].split(\":\").pop()!\n : \"body-default\";\n return getElementFromVariant(baseVariant as TypographyKey);\n }, [variant]);\n\n const Component = (as || suggestedElement) as T;\n\n return (\n // @ts-expect-error TODO: figure this out\n <Component\n ref={ref}\n className={`\n font-sans antialiased\n ${typographyClasses}\n ${colorClasses}\n ${weight && `!${fontWeight[weight]}`}\n ${className}\n `}\n {...props}\n >\n {children}\n </Component>\n );\n }\n);\n\nText.displayName = \"Text\";\n","import type { IconName } from \"@deckai/icons\";\nimport * as React from \"react\";\n\nimport { cn } from \"../utils\";\nimport { Icon } from \"./Icon\";\nimport { Text } from \"./Text\";\n\nexport type BadgeProps = {\n variant?: \"pink\" | \"orange\" | \"green\" | \"purple\";\n iconName?: IconName;\n} & React.HTMLAttributes<HTMLSpanElement>;\n\nconst variants = {\n pink: \"bg-tertiary-5\",\n orange: \"bg-tertiary-15\",\n green: \"bg-tertiary-25\",\n purple: \"bg-secondary-300\"\n};\n\nconst stringToVariant = (str: string): keyof typeof variants => {\n const variantKeys = Object.keys(variants) as Array<keyof typeof variants>;\n // Let's log some values to understand what's happening\n const hash = str\n .split(\"\")\n .reduce((acc, char) => char.charCodeAt(0) + ((acc << 5) - acc), 0);\n\n const index = Math.abs(hash) % variantKeys.length;\n const selectedVariant = variantKeys[index];\n\n return selectedVariant;\n};\n\nexport const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, variant, iconName, children, ...props }, ref) => {\n const finalVariant =\n variant ||\n (typeof children === \"string\" ? stringToVariant(children) : \"pink\");\n return (\n <span\n ref={ref}\n className={cn(\n \"inline-flex items-center gap-2\",\n \"rounded px-2 py-1.5\",\n \"text-sm font-medium\",\n variants[finalVariant],\n className\n )}\n {...props}\n >\n {iconName && <Icon size={16} name={iconName} />}\n <Text variant=\"body-xxs-semibold\" className=\"mt-0.5\">\n {children}\n </Text>\n </span>\n );\n }\n);\n\nBadge.displayName = \"Badge\";\n","import * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport * as React from \"react\";\nimport { useCallback, useState } from \"react\";\n\nimport { cn } from \"../utils\";\nimport { Text } from \"./Text\";\nexport interface TooltipProps {\n content: React.ReactNode;\n children: React.ReactNode;\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n align?: \"start\" | \"center\" | \"end\";\n className?: string;\n delayDuration?: number;\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** Duration in ms for long press on mobile devices */\n longPressDuration?: number;\n}\n\nexport function Tooltip({\n content,\n children,\n side = \"bottom\",\n align = \"center\",\n className,\n delayDuration = 200,\n defaultOpen,\n open: controlledOpen,\n onOpenChange,\n longPressDuration = 500\n}: TooltipProps) {\n const [isOpen, setIsOpen] = useState(defaultOpen || false);\n let longPressTimer: Timer | null = null;\n\n const open = controlledOpen ?? isOpen;\n const handleOpenChange = useCallback(\n (newOpen: boolean) => {\n if (!controlledOpen) {\n setIsOpen(newOpen);\n }\n onOpenChange?.(newOpen);\n },\n [controlledOpen, onOpenChange]\n );\n\n const handleTouchStart = useCallback(() => {\n const timer = setTimeout(() => {\n handleOpenChange(true);\n }, longPressDuration);\n longPressTimer = timer;\n }, [handleOpenChange, longPressDuration]);\n\n const handleTouchEnd = useCallback(() => {\n if (longPressTimer) {\n clearTimeout(longPressTimer);\n longPressTimer = null;\n }\n // Keep tooltip open for a brief moment after touch\n setTimeout(() => handleOpenChange(false), 1500);\n }, [longPressTimer, handleOpenChange]);\n\n return (\n <TooltipPrimitive.Provider delayDuration={delayDuration}>\n <TooltipPrimitive.Root open={open} onOpenChange={handleOpenChange}>\n <TooltipPrimitive.Trigger asChild>\n <span\n tabIndex={0}\n onTouchStart={handleTouchStart}\n onTouchEnd={handleTouchEnd}\n onTouchCancel={handleTouchEnd}\n >\n {children}\n </span>\n </TooltipPrimitive.Trigger>\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n side={side}\n align={align}\n sideOffset={4}\n className={cn(\n \"z-50 overflow-hidden rounded-lg\",\n \"bg-primary px-3 py-1.5\",\n \"text-xs text-white\",\n \"animate-in fade-in-0 zoom-in-95\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0\",\n \"data-[side=bottom]:slide-in-from-top-2\",\n \"data-[side=top]:slide-in-from-bottom-2\",\n \"select-none\",\n \"max-w-60\",\n \"touch-none\", // Prevent touch events from interfering with scrolling\n className\n )}\n >\n {typeof content === \"string\" ? (\n <Text variant=\"body-default-medium\" color=\"white\">\n {content}\n </Text>\n ) : (\n content\n )}\n <TooltipPrimitive.Arrow\n className=\"fill-text-primary\"\n width={10}\n height={5}\n />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n </TooltipPrimitive.Root>\n </TooltipPrimitive.Provider>\n );\n}\n","import type { KeyboardEvent } from \"react\";\nimport React from \"react\";\n\nimport { cn } from \"../utils\";\nimport { Badge } from \"./Badge\";\nimport { Text } from \"./Text\";\nimport { Tooltip } from \"./Tooltip\";\n\nexport type OptionProps = {\n label: React.ReactNode;\n value: string;\n /** Optional color override for specific items like \"Logout\" in red */\n color?: \"default\" | \"danger\";\n /** Optional disabled state */\n disabled?: boolean;\n onChange?: (value: string) => void;\n onKeyDown?: (event: KeyboardEvent<HTMLButtonElement>) => void;\n onMouseEnter?: () => void;\n onMouseLeave?: () => void;\n selected?: boolean;\n className?: string;\n /** ID for accessibility */\n id?: string;\n /** ARIA role */\n role?: string;\n /** ARIA selected state */\n \"aria-selected\"?: boolean;\n /** Current search value for highlighting matches */\n searchValue?: string;\n /** Optional tooltip content */\n tooltip?: React.ReactNode;\n onClick?: () => void;\n badge?: React.ReactNode;\n};\n\nfunction HighlightedText({\n text,\n highlight\n}: {\n text: string;\n highlight: string;\n}) {\n if (!highlight) return <>{text}</>;\n\n const parts = text.split(new RegExp(`(${highlight})`, \"i\"));\n return (\n <>\n {parts.map((part, i) =>\n part.toLowerCase() === highlight.toLowerCase() ? (\n <span key={i} className=\"font-bold\">\n {part}\n </span>\n ) : (\n part\n )\n )}\n </>\n );\n}\n\nexport const Option = React.forwardRef<HTMLButtonElement, OptionProps>(\n (\n {\n value,\n label,\n onChange,\n onKeyDown,\n onMouseEnter,\n onMouseLeave,\n selected,\n color,\n disabled,\n className,\n id,\n role,\n \"aria-selected\": ariaSelected,\n searchValue = \"\",\n tooltip,\n onClick,\n badge\n },\n ref\n ) => {\n const content = (\n <button\n ref={ref}\n type=\"button\"\n id={id}\n role={role}\n aria-selected={ariaSelected}\n disabled={disabled}\n className={cn(\n \"relative w-full text-left px-2 py-1.5 text-sm rounded outline-none\",\n \"cursor-pointer hover:bg-gray-100\",\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\n selected && \"bg-gray-100\",\n \"flex items-center gap-2\",\n className\n )}\n onClick={() => {\n onChange?.(value);\n onClick?.();\n }}\n onKeyDown={onKeyDown}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n <Text\n variant=\"body-default-medium\"\n color={color === \"danger\" ? \"danger\" : \"inherit\"}\n >\n {typeof label === \"string\" ? (\n <HighlightedText text={label} highlight={searchValue} />\n ) : (\n label\n )}\n </Text>\n {badge && <Badge>{badge}</Badge>}\n </button>\n );\n return tooltip ? <Tooltip content={tooltip}>{content}</Tooltip> : content;\n }\n);\n","import * as DropdownMenu from \"@radix-ui/react-dropdown-menu\";\nimport * as React from \"react\";\n\nimport { cn } from \"../utils\";\nimport { Option, type OptionProps } from \"./Option\";\n\nexport type DropdownProps = {\n /** The trigger element that opens the dropdown */\n trigger: React.ReactNode;\n /** Array of items to show in the dropdown */\n items: Omit<OptionProps, \"onChange\" | \"selected\">[];\n /** Optional className for the content */\n className?: string;\n /** Callback when an item is selected */\n onSelect?: (value: string) => void;\n /** Optional side alignment */\n align?: \"start\" | \"center\" | \"end\";\n};\n\nexport const Dropdown = React.forwardRef<HTMLDivElement, DropdownProps>(\n ({ trigger, items, className, onSelect, align = \"end\" }, ref) => {\n const handleSelect = React.useCallback(\n (value: string) => {\n onSelect?.(value);\n },\n [onSelect]\n );\n\n return (\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>{trigger}</DropdownMenu.Trigger>\n\n <DropdownMenu.Portal>\n <DropdownMenu.Content\n ref={ref}\n align={align}\n sideOffset={4}\n className={cn(\n \"z-50 min-w-[220px]\",\n \"bg-background-0 rounded-lg p-1\",\n \"shadow-lg border border-gray-100\",\n \"animate-in fade-in-0 zoom-in-95\",\n className\n )}\n >\n {items.map((item) => (\n <DropdownMenu.Item\n key={item.value}\n disabled={item.disabled}\n onSelect={() => handleSelect(item.value)}\n className=\"outline-none\"\n asChild\n >\n <Option\n {...item}\n className=\"py-3 px-6\"\n onChange={handleSelect}\n />\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n );\n }\n);\n\nDropdown.displayName = \"Dropdown\";\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import*as h from'@radix-ui/react-dropdown-menu';import*as
|
|
1
|
+
import*as h from'@radix-ui/react-dropdown-menu';import*as m from'react';import m__default,{useState,useCallback}from'react';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {IconMap}from'@deckai/icons';import*as l from'@radix-ui/react-tooltip';function g(...e){return twMerge(clsx(e))}var R={12:"h-[12px] w-[12px]",16:"h-[16px] w-[16px]",18:"h-[18px] w-[18px]",20:"h-[20px] w-[20px]",24:"h-[24px] w-[24px]",32:"h-[32px] w-[32px]",36:"h-[36px] w-[36px]",40:"h-[40px] w-[40px]",42:"h-[42px] w-[42px]",48:"h-[48px] w-[48px]",64:"h-[64px] w-[64px]",72:"h-[72px] w-[72px]"},$={sm:{12:"sm:h-[12px] sm:w-[12px]",16:"sm:h-[16px] sm:w-[16px]",18:"sm:h-[18px] sm:w-[18px]",20:"sm:h-[20px] sm:w-[20px]",24:"sm:h-[24px] sm:w-[24px]",32:"sm:h-[32px] sm:w-[32px]",36:"sm:h-[36px] sm:w-[36px]",40:"sm:h-[40px] sm:w-[40px]",42:"sm:h-[42px] sm:w-[42px]",48:"sm:h-[48px] sm:w-[48px]",64:"sm:h-[64px] sm:w-[64px]",72:"sm:h-[72px] sm:w-[72px]"},md:{12:"md:h-[12px] md:w-[12px]",16:"md:h-[16px] md:w-[16px]",18:"md:h-[18px] md:w-[18px]",20:"md:h-[20px] md:w-[20px]",24:"md:h-[24px] md:w-[24px]",32:"md:h-[32px] md:w-[32px]",36:"md:h-[36px] md:w-[36px]",40:"md:h-[40px] md:w-[40px]",42:"md:h-[42px] md:w-[42px]",48:"md:h-[48px] md:w-[48px]",64:"md:h-[64px] md:w-[64px]",72:"md:h-[72px] md:w-[72px]"},lg:{12:"lg:h-[12px] lg:w-[12px]",16:"lg:h-[16px] lg:w-[16px]",18:"lg:h-[18px] lg:w-[18px]",20:"lg:h-[20px] lg:w-[20px]",24:"lg:h-[24px] lg:w-[24px]",32:"lg:h-[32px] lg:w-[32px]",36:"lg:h-[36px] lg:w-[36px]",40:"lg:h-[40px] lg:w-[40px]",42:"lg:h-[42px] lg:w-[42px]",48:"lg:h-[48px] lg:w-[48px]",64:"lg:h-[64px] lg:w-[64px]",72:"lg:h-[72px] lg:w-[72px]"},xl:{12:"xl:h-[12px] xl:w-[12px]",16:"xl:h-[16px] xl:w-[16px]",18:"xl:h-[18px] xl:w-[18px]",20:"xl:h-[20px] xl:w-[20px]",24:"xl:h-[24px] xl:w-[24px]",32:"xl:h-[32px] xl:w-[32px]",36:"xl:h-[36px] xl:w-[36px]",40:"xl:h-[40px] xl:w-[40px]",42:"xl:h-[42px] xl:w-[42px]",48:"xl:h-[48px] xl:w-[48px]",64:"xl:h-[64px] xl:w-[64px]",72:"xl:h-[72px] xl:w-[72px]"},"2xl":{12:"2xl:h-[12px] 2xl:w-[12px]",16:"2xl:h-[16px] 2xl:w-[16px]",18:"2xl:h-[18px] 2xl:w-[18px]",20:"2xl:h-[20px] 2xl:w-[20px]",24:"2xl:h-[24px] 2xl:w-[24px]",32:"2xl:h-[32px] 2xl:w-[32px]",36:"2xl:h-[36px] 2xl:w-[36px]",40:"2xl:h-[40px] 2xl:w-[40px]",42:"2xl:h-[42px] 2xl:w-[42px]",48:"2xl:h-[48px] 2xl:w-[48px]",64:"2xl:h-[64px] 2xl:w-[64px]",72:"2xl:h-[72px] 2xl:w-[72px]"}},H=e=>String(e),I=(e,t=24)=>{let o=[],r={};if(e===void 0){let n=H(t);n?o.push(R[n]):(r.height=`${t}px`,r.width=`${t}px`);}if(typeof e=="number"){let n=H(e);n?o.push(R[n]):(r.height=`${e}px`,r.width=`${e}px`);}if(Array.isArray(e)){let n=H(t),s=[n&&R[n]||`h-[${t}px] w-[${t}px]`];e.forEach(i=>{if(typeof i=="string"){let[p,d]=i.split(":"),a=parseInt(d,10),c=H(a);o.push(c&&$[p]?.[c]||`${p}:h-[${a}px] ${p}:w-[${a}px]`);}}),o.push(...s);}if(typeof e=="string"){let[n,s]=e.split(":"),i=parseInt(s,10),p=H(i);o.push(p&&$[n]?.[p]||`${n}:h-[${i}px] ${n}:w-[${i}px]`);}return {responsiveSizeClasses:o.join(" "),responsiveSizeStyles:r}};var V={primary:"var(--color-primary)",secondary:"var(--color-secondary)",white:"var(--color-white)",primaryBlue:"var(--color-primary-100)",disabled:"var(--color-disabled)",danger:"var(--color-danger)"},S=m__default.forwardRef(({name:e,size:t=24,color:o="primary",title:r,className:n,style:s={},...i},p)=>{let d=IconMap[e],{responsiveSizeClasses:a,responsiveSizeStyles:c}=I(t,24);return m__default.createElement("div",{className:g("flex justify-center items-center",a,n),style:{"--icon-stroke":V[o],...c,...s}},m__default.createElement(d,{ref:p,"aria-hidden":!r,"aria-label":r,stroke:e.includes("filled")?void 0:V[o],...i}))});S.displayName="Icon";var _={xl:"h1",lg:"h1",md:"h2",sm:"h3",xs:"h4"},j=e=>{let[t,o]=e.split("-");return t==="heading"?_[o]||"p":t==="label"?"label":"p"},W={light:"font-light",regular:"font-regular",semibold:"font-semibold",bold:"font-bold"},q=e=>e?(Array.isArray(e)?e:[e]).map(o=>{if(o.includes(":")){let[r,n]=o.split(":");return `${r}:text-${n}`}return `text-${o}`}).join(" "):"text-body-default",f=m__default.forwardRef(({variant:e="body-default",color:t="primary",as:o,className:r,children:n,weight:s,...i},p)=>{let d=q(e),a=t==="inherit"?"text-inherit":`text-${t}`,c=m__default.useMemo(()=>{let y=typeof e=="string"?e.split(":").pop():Array.isArray(e)?e[0].split(":").pop():"body-default";return j(y)},[e]);return m__default.createElement(o||c,{ref:p,className:`
|
|
2
2
|
font-sans antialiased
|
|
3
3
|
${d}
|
|
4
4
|
${a}
|
|
5
|
-
${
|
|
5
|
+
${s&&`!${W[s]}`}
|
|
6
6
|
${r}
|
|
7
|
-
`,...
|
|
7
|
+
`,...i},n)});f.displayName="Text";var D={pink:"bg-tertiary-5",orange:"bg-tertiary-15",green:"bg-tertiary-25",purple:"bg-secondary-300"},F=e=>{let t=Object.keys(D),o=e.split("").reduce((s,i)=>i.charCodeAt(0)+((s<<5)-s),0),r=Math.abs(o)%t.length;return t[r]},k=m.forwardRef(({className:e,variant:t,iconName:o,children:r,...n},s)=>{let i=t||(typeof r=="string"?F(r):"pink");return m.createElement("span",{ref:s,className:g("inline-flex items-center gap-2","rounded px-2 py-1.5","text-sm font-medium",D[i],e),...n},o&&m.createElement(S,{size:16,name:o}),m.createElement(f,{variant:"body-xxs-semibold",className:"mt-0.5"},r))});k.displayName="Badge";function B({content:e,children:t,side:o="bottom",align:r="center",className:n,delayDuration:s=200,defaultOpen:i,open:p,onOpenChange:d,longPressDuration:a=500}){let[c,v]=useState(i||false),y=null,L=p??c,T=useCallback(M=>{p||v(M),d?.(M);},[p,d]),E=useCallback(()=>{y=setTimeout(()=>{T(true);},a);},[T,a]),b=useCallback(()=>{y&&(clearTimeout(y),y=null),setTimeout(()=>T(false),1500);},[y,T]);return m.createElement(l.Provider,{delayDuration:s},m.createElement(l.Root,{open:L,onOpenChange:T},m.createElement(l.Trigger,{asChild:true},m.createElement("span",{tabIndex:0,onTouchStart:E,onTouchEnd:b,onTouchCancel:b},t)),m.createElement(l.Portal,null,m.createElement(l.Content,{side:o,align:r,sideOffset:4,className:g("z-50 overflow-hidden rounded-lg","bg-primary px-3 py-1.5","text-xs text-white","animate-in fade-in-0 zoom-in-95","data-[state=closed]:animate-out data-[state=closed]:fade-out-0","data-[side=bottom]:slide-in-from-top-2","data-[side=top]:slide-in-from-bottom-2","select-none","max-w-60","touch-none",n)},typeof e=="string"?m.createElement(f,{variant:"body-default-medium",color:"white"},e):e,m.createElement(l.Arrow,{className:"fill-text-primary",width:10,height:5})))))}function Z({text:e,highlight:t}){if(!t)return m__default.createElement(m__default.Fragment,null,e);let o=e.split(new RegExp(`(${t})`,"i"));return m__default.createElement(m__default.Fragment,null,o.map((r,n)=>r.toLowerCase()===t.toLowerCase()?m__default.createElement("span",{key:n,className:"font-bold"},r):r))}var K=m__default.forwardRef(({value:e,label:t,onChange:o,onKeyDown:r,onMouseEnter:n,onMouseLeave:s,selected:i,color:p,disabled:d,className:a,id:c,role:v,"aria-selected":y,searchValue:L="",tooltip:T,onClick:E,badge:b},M)=>{let N=m__default.createElement("button",{ref:M,type:"button",id:c,role:v,"aria-selected":y,disabled:d,className:g("relative w-full text-left px-2 py-1.5 text-sm rounded outline-none","cursor-pointer hover:bg-gray-100","disabled:opacity-50 disabled:cursor-not-allowed",i&&"bg-gray-100","flex items-center gap-2",a),onClick:()=>{o?.(e),E?.();},onKeyDown:r,onMouseEnter:n,onMouseLeave:s},m__default.createElement(f,{variant:"body-default-medium",color:p==="danger"?"danger":"inherit"},typeof t=="string"?m__default.createElement(Z,{text:t,highlight:L}):t),b&&m__default.createElement(k,null,b));return T?m__default.createElement(B,{content:T},N):N});var J=m.forwardRef(({trigger:e,items:t,className:o,onSelect:r,align:n="end"},s)=>{let i=m.useCallback(p=>{r?.(p);},[r]);return m.createElement(h.Root,null,m.createElement(h.Trigger,{asChild:true},e),m.createElement(h.Portal,null,m.createElement(h.Content,{ref:s,align:n,sideOffset:4,className:g("z-50 min-w-[220px]","bg-background-0 rounded-lg p-1","shadow-lg border border-gray-100","animate-in fade-in-0 zoom-in-95",o)},t.map(p=>m.createElement(h.Item,{key:p.value,disabled:p.disabled,onSelect:()=>i(p.value),className:"outline-none",asChild:true},m.createElement(K,{...p,className:"py-3 px-6",onChange:i}))))))});J.displayName="Dropdown";export{J as Dropdown};//# sourceMappingURL=Dropdown.js.map
|
|
8
8
|
//# sourceMappingURL=Dropdown.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/index.ts","../../src/utils/responsive.ts","../../src/components/Icon.tsx","../../src/components/Text.tsx","../../src/components/Badge.tsx","../../src/components/Tooltip.tsx","../../src/components/Option.tsx","../../src/components/Dropdown.tsx"],"names":["cn","inputs","twMerge","clsx","BASE_SIZES","RESPONSIVE_SIZES","getSizeKey","size","getResponsiveSize","baseSize","classes","styles","key","baseKey","responsiveClasses","breakpoint","valueStr","value","valueKey","COLOR_MAP","Icon","React","name","color","title","className","style","props","ref","IconComponent","IconMap","responsiveSizeClasses","responsiveSizeStyles","HEADING_ELEMENT_MAP","getElementFromVariant","variant","category","fontWeight","processVariants","variants","typographyClass","Text","as","children","weight","typographyClasses","colorClasses","suggestedElement","baseVariant","stringToVariant","str","variantKeys","hash","acc","char","index","Badge","w","iconName","finalVariant","Tooltip","content","side","align","delayDuration","defaultOpen","controlledOpen","onOpenChange","longPressDuration","isOpen","setIsOpen","useState","longPressTimer","open","handleOpenChange","useCallback","newOpen","handleTouchStart","handleTouchEnd","y","HighlightedText","text","highlight","parts","part","i","Option","label","onChange","onKeyDown","onMouseEnter","onMouseLeave","selected","disabled","id","role","ariaSelected","searchValue","tooltip","onClick","badge","Dropdown","m","trigger","items","onSelect","handleSelect","item"],"mappings":"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","file":"Dropdown.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\nexport const noopFn = () => {};\n","export type Breakpoint = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\nexport type ResponsiveSize = number | `${Breakpoint}:${number}`;\n\ntype SizeKey =\n | \"12\"\n | \"16\"\n | \"18\"\n | \"20\"\n | \"24\"\n | \"32\"\n | \"36\"\n | \"40\"\n | \"42\"\n | \"48\"\n | \"64\"\n | \"72\";\n\n// These constants help Tailwind identify the classes during compilation\nconst BASE_SIZES: Record<SizeKey, string> = {\n \"12\": \"h-[12px] w-[12px]\",\n \"16\": \"h-[16px] w-[16px]\",\n \"18\": \"h-[18px] w-[18px]\",\n \"20\": \"h-[20px] w-[20px]\",\n \"24\": \"h-[24px] w-[24px]\",\n \"32\": \"h-[32px] w-[32px]\",\n \"36\": \"h-[36px] w-[36px]\",\n \"40\": \"h-[40px] w-[40px]\",\n \"42\": \"h-[42px] w-[42px]\",\n \"48\": \"h-[48px] w-[48px]\",\n \"64\": \"h-[64px] w-[64px]\",\n \"72\": \"h-[72px] w-[72px]\"\n};\n\nconst RESPONSIVE_SIZES: Record<Breakpoint, Record<SizeKey, string>> = {\n sm: {\n \"12\": \"sm:h-[12px] sm:w-[12px]\",\n \"16\": \"sm:h-[16px] sm:w-[16px]\",\n \"18\": \"sm:h-[18px] sm:w-[18px]\",\n \"20\": \"sm:h-[20px] sm:w-[20px]\",\n \"24\": \"sm:h-[24px] sm:w-[24px]\",\n \"32\": \"sm:h-[32px] sm:w-[32px]\",\n \"36\": \"sm:h-[36px] sm:w-[36px]\",\n \"40\": \"sm:h-[40px] sm:w-[40px]\",\n \"42\": \"sm:h-[42px] sm:w-[42px]\",\n \"48\": \"sm:h-[48px] sm:w-[48px]\",\n \"64\": \"sm:h-[64px] sm:w-[64px]\",\n \"72\": \"sm:h-[72px] sm:w-[72px]\"\n },\n md: {\n \"12\": \"md:h-[12px] md:w-[12px]\",\n \"16\": \"md:h-[16px] md:w-[16px]\",\n \"18\": \"md:h-[18px] md:w-[18px]\",\n \"20\": \"md:h-[20px] md:w-[20px]\",\n \"24\": \"md:h-[24px] md:w-[24px]\",\n \"32\": \"md:h-[32px] md:w-[32px]\",\n \"36\": \"md:h-[36px] md:w-[36px]\",\n \"40\": \"md:h-[40px] md:w-[40px]\",\n \"42\": \"md:h-[42px] md:w-[42px]\",\n \"48\": \"md:h-[48px] md:w-[48px]\",\n \"64\": \"md:h-[64px] md:w-[64px]\",\n \"72\": \"md:h-[72px] md:w-[72px]\"\n },\n lg: {\n \"12\": \"lg:h-[12px] lg:w-[12px]\",\n \"16\": \"lg:h-[16px] lg:w-[16px]\",\n \"18\": \"lg:h-[18px] lg:w-[18px]\",\n \"20\": \"lg:h-[20px] lg:w-[20px]\",\n \"24\": \"lg:h-[24px] lg:w-[24px]\",\n \"32\": \"lg:h-[32px] lg:w-[32px]\",\n \"36\": \"lg:h-[36px] lg:w-[36px]\",\n \"40\": \"lg:h-[40px] lg:w-[40px]\",\n \"42\": \"lg:h-[42px] lg:w-[42px]\",\n \"48\": \"lg:h-[48px] lg:w-[48px]\",\n \"64\": \"lg:h-[64px] lg:w-[64px]\",\n \"72\": \"lg:h-[72px] lg:w-[72px]\"\n },\n xl: {\n \"12\": \"xl:h-[12px] xl:w-[12px]\",\n \"16\": \"xl:h-[16px] xl:w-[16px]\",\n \"18\": \"xl:h-[18px] xl:w-[18px]\",\n \"20\": \"xl:h-[20px] xl:w-[20px]\",\n \"24\": \"xl:h-[24px] xl:w-[24px]\",\n \"32\": \"xl:h-[32px] xl:w-[32px]\",\n \"36\": \"xl:h-[36px] xl:w-[36px]\",\n \"40\": \"xl:h-[40px] xl:w-[40px]\",\n \"42\": \"xl:h-[42px] xl:w-[42px]\",\n \"48\": \"xl:h-[48px] xl:w-[48px]\",\n \"64\": \"xl:h-[64px] xl:w-[64px]\",\n \"72\": \"xl:h-[72px] xl:w-[72px]\"\n },\n \"2xl\": {\n \"12\": \"2xl:h-[12px] 2xl:w-[12px]\",\n \"16\": \"2xl:h-[16px] 2xl:w-[16px]\",\n \"18\": \"2xl:h-[18px] 2xl:w-[18px]\",\n \"20\": \"2xl:h-[20px] 2xl:w-[20px]\",\n \"24\": \"2xl:h-[24px] 2xl:w-[24px]\",\n \"32\": \"2xl:h-[32px] 2xl:w-[32px]\",\n \"36\": \"2xl:h-[36px] 2xl:w-[36px]\",\n \"40\": \"2xl:h-[40px] 2xl:w-[40px]\",\n \"42\": \"2xl:h-[42px] 2xl:w-[42px]\",\n \"48\": \"2xl:h-[48px] 2xl:w-[48px]\",\n \"64\": \"2xl:h-[64px] 2xl:w-[64px]\",\n \"72\": \"2xl:h-[72px] 2xl:w-[72px]\"\n }\n};\n\nconst getSizeKey = (size: number): SizeKey | undefined => {\n return String(size) as SizeKey;\n};\n\nexport const getResponsiveSize = (\n size: ResponsiveSize | ResponsiveSize[] | undefined,\n baseSize: number = 24\n): {\n responsiveSizeClasses: string;\n responsiveSizeStyles: Record<string, string>;\n} => {\n const classes: string[] = [];\n const styles: Record<string, string> = {};\n\n // If no size provided, use baseSize\n if (size === undefined) {\n const key = getSizeKey(baseSize);\n if (key) {\n classes.push(BASE_SIZES[key]);\n } else {\n styles.height = `${baseSize}px`;\n styles.width = `${baseSize}px`;\n }\n }\n\n // If size is a number, use that directly\n if (typeof size === \"number\") {\n const key = getSizeKey(size);\n if (key) {\n classes.push(BASE_SIZES[key]);\n } else {\n styles.height = `${size}px`;\n styles.width = `${size}px`;\n }\n }\n\n // If array of responsive sizes, generate responsive classes\n if (Array.isArray(size)) {\n const baseKey = getSizeKey(baseSize);\n const responsiveClasses = [\n (baseKey && BASE_SIZES[baseKey]) || `h-[${baseSize}px] w-[${baseSize}px]`\n ];\n\n size.forEach((s) => {\n if (typeof s === \"string\") {\n const [breakpoint, valueStr] = s.split(\":\") as [Breakpoint, string];\n const value = parseInt(valueStr, 10);\n const key = getSizeKey(value);\n classes.push(\n (key && RESPONSIVE_SIZES[breakpoint]?.[key]) ||\n `${breakpoint}:h-[${value}px] ${breakpoint}:w-[${value}px]`\n );\n }\n });\n\n classes.push(...responsiveClasses);\n }\n\n if (typeof size === \"string\") {\n const [breakpoint, valueStr] = size.split(\":\") as [Breakpoint, string];\n const value = parseInt(valueStr, 10);\n const valueKey = getSizeKey(value);\n classes.push(\n (valueKey && RESPONSIVE_SIZES[breakpoint]?.[valueKey]) ||\n `${breakpoint}:h-[${value}px] ${breakpoint}:w-[${value}px]`\n );\n }\n\n return {\n responsiveSizeClasses: classes.join(\" \"),\n responsiveSizeStyles: styles\n };\n};\n","import { IconMap, IconName } from \"@deckai/icons\";\nimport React, { SVGProps } from \"react\";\nimport { IconColors } from \"../types/tailwind\";\nimport { cn } from \"../utils\";\nimport { ResponsiveSize, getResponsiveSize } from \"../utils/responsive\";\n\nexport type IconProps = {\n name: IconName;\n /** @default 24 */\n size?: ResponsiveSize | ResponsiveSize[];\n /** @default primary */\n color?: IconColors;\n title?: string;\n className?: string;\n style?: React.CSSProperties;\n} & Omit<SVGProps<SVGSVGElement>, \"aria-hidden\" | \"aria-label\">;\n\n// Using CSS variables to support dark mode\nconst COLOR_MAP: Record<IconColors, string> = {\n primary: \"var(--color-primary)\",\n secondary: \"var(--color-secondary)\",\n white: \"var(--color-white)\",\n primaryBlue: \"var(--color-primary-100)\",\n disabled: \"var(--color-disabled)\",\n danger: \"var(--color-danger)\"\n};\n\nexport const Icon = React.forwardRef<SVGSVGElement, IconProps>(\n (\n {\n name,\n size = 24,\n color = \"primary\",\n title,\n className,\n style = {},\n ...props\n },\n ref\n ) => {\n const IconComponent = IconMap[name];\n const { responsiveSizeClasses, responsiveSizeStyles } = getResponsiveSize(\n size,\n 24\n );\n\n return (\n <div\n className={cn(\n \"flex justify-center items-center\",\n responsiveSizeClasses,\n className\n )}\n style={{\n [\"--icon-stroke\" as string]: COLOR_MAP[color],\n ...responsiveSizeStyles,\n ...style\n }}\n >\n <IconComponent\n ref={ref}\n aria-hidden={!title}\n aria-label={title}\n stroke={name.includes(\"filled\") ? undefined : COLOR_MAP[color]}\n {...props}\n />\n </div>\n );\n }\n);\n\nIcon.displayName = \"Icon\";\n","import React from \"react\";\nimport { Typography } from \"../types/tailwind\";\nimport { Breakpoint } from \"../utils/responsive\";\n\ntype TextElement =\n | \"p\"\n | \"span\"\n | \"h1\"\n | \"h2\"\n | \"h3\"\n | \"h4\"\n | \"h5\"\n | \"h6\"\n | \"strong\"\n | \"em\"\n | \"blockquote\"\n | \"pre\"\n | \"code\"\n | \"small\"\n | \"label\"\n | \"a\";\n\n// HTML element mapping type\ntype HTMLElementByTag = {\n p: HTMLParagraphElement;\n span: HTMLSpanElement;\n h1: HTMLHeadingElement;\n h2: HTMLHeadingElement;\n h3: HTMLHeadingElement;\n h4: HTMLHeadingElement;\n h5: HTMLHeadingElement;\n h6: HTMLHeadingElement;\n strong: HTMLElement;\n em: HTMLElement;\n blockquote: HTMLQuoteElement;\n pre: HTMLPreElement;\n code: HTMLElement;\n small: HTMLElement;\n label: HTMLLabelElement;\n a: HTMLAnchorElement;\n};\n\n// HTML props mapping type\ntype HTMLPropsMap = {\n p: React.HTMLAttributes<HTMLParagraphElement>;\n span: React.HTMLAttributes<HTMLSpanElement>;\n h1: React.HTMLAttributes<HTMLHeadingElement>;\n h2: React.HTMLAttributes<HTMLHeadingElement>;\n h3: React.HTMLAttributes<HTMLHeadingElement>;\n h4: React.HTMLAttributes<HTMLHeadingElement>;\n h5: React.HTMLAttributes<HTMLHeadingElement>;\n h6: React.HTMLAttributes<HTMLHeadingElement>;\n strong: React.HTMLAttributes<HTMLElement>;\n em: React.HTMLAttributes<HTMLElement>;\n blockquote: React.HTMLAttributes<HTMLQuoteElement>;\n pre: React.HTMLAttributes<HTMLPreElement>;\n code: React.HTMLAttributes<HTMLElement>;\n small: React.HTMLAttributes<HTMLElement>;\n label: React.LabelHTMLAttributes<HTMLLabelElement>;\n a: Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, \"color\">;\n};\n\ntype TextColor =\n | \"primary\"\n | \"secondary\"\n | \"white\"\n | \"primary-blue\"\n | \"disabled\"\n | \"danger\"\n | \"inherit\"\n | \"primary-100\";\n\nconst HEADING_ELEMENT_MAP: Record<string, TextElement> = {\n xl: \"h1\",\n lg: \"h1\",\n md: \"h2\",\n sm: \"h3\",\n xs: \"h4\"\n};\n\nconst getElementFromVariant = (variant: TypographyKey): TextElement => {\n const [category, size] = variant.split(\"-\");\n\n if (category === \"heading\") {\n return HEADING_ELEMENT_MAP[size] || \"p\";\n }\n\n if (category === \"label\") {\n return \"label\";\n }\n\n return \"p\";\n};\n\ntype Weight = \"light\" | \"regular\" | \"semibold\" | \"bold\";\n\nconst fontWeight: Record<Weight, string> = {\n light: \"font-light\",\n regular: \"font-regular\",\n semibold: \"font-semibold\",\n bold: \"font-bold\"\n};\n\ntype ResponsiveVariant = TypographyKey | `${Breakpoint}:${TypographyKey}`;\n\ntype TypographyCategory = keyof Typography;\ntype TypographyValue<T extends TypographyCategory> = Extract<\n keyof Typography[T],\n string | number | bigint | boolean | null | undefined\n>;\ntype TypographyKey = {\n [T in TypographyCategory]: `${T}-${TypographyValue<T>}`;\n}[TypographyCategory];\n\n// Update TextProps to use ResponsiveVariant\nexport type TextProps<T extends TextElement = \"p\"> = {\n variant?: ResponsiveVariant | ResponsiveVariant[];\n color?: TextColor;\n as?: T;\n className?: string;\n children: React.ReactNode;\n weight?: Weight;\n} & HTMLPropsMap[T];\n\n// Add helper function to process variants\nconst processVariants = (\n variants: ResponsiveVariant | ResponsiveVariant[] | undefined\n): string => {\n if (!variants) return \"text-body-default\";\n\n const variantArray = Array.isArray(variants) ? variants : [variants];\n\n return variantArray\n .map((variant) => {\n if (variant.includes(\":\")) {\n const [breakpoint, typographyClass] = variant.split(\":\");\n return `${breakpoint}:text-${typographyClass}`;\n }\n return `text-${variant}`;\n })\n .join(\" \");\n};\n\nexport const Text = React.forwardRef(\n <T extends TextElement = \"p\">(\n {\n variant = \"body-default\",\n color = \"primary\",\n as,\n className,\n children,\n weight,\n ...props\n }: TextProps<T>,\n ref: React.ForwardedRef<HTMLElementByTag[T]>\n ) => {\n // Process typography classes with breakpoints\n const typographyClasses = processVariants(variant);\n\n // Get color styles using Tailwind classes that reference CSS variables\n const colorClasses = color === \"inherit\" ? \"text-inherit\" : `text-${color}`;\n\n const suggestedElement = React.useMemo(() => {\n const baseVariant =\n typeof variant === \"string\"\n ? variant.split(\":\").pop()!\n : Array.isArray(variant)\n ? variant[0].split(\":\").pop()!\n : \"body-default\";\n return getElementFromVariant(baseVariant as TypographyKey);\n }, [variant]);\n\n const Component = (as || suggestedElement) as T;\n\n return (\n // @ts-expect-error TODO: figure this out\n <Component\n ref={ref}\n className={`\n font-sans antialiased\n ${typographyClasses}\n ${colorClasses}\n ${weight && `!${fontWeight[weight]}`}\n ${className}\n `}\n {...props}\n >\n {children}\n </Component>\n );\n }\n);\n\nText.displayName = \"Text\";\n","import { IconName } from \"@deckai/icons\";\nimport * as React from \"react\";\nimport { cn } from \"../utils\";\nimport { Icon } from \"./Icon\";\nimport { Text } from \"./Text\";\n\nexport type BadgeProps = {\n variant?: \"pink\" | \"orange\" | \"green\" | \"purple\";\n iconName?: IconName;\n} & React.HTMLAttributes<HTMLSpanElement>;\n\nconst variants = {\n pink: \"bg-tertiary-5\",\n orange: \"bg-tertiary-15\",\n green: \"bg-tertiary-25\",\n purple: \"bg-secondary-300\"\n};\n\nconst stringToVariant = (str: string): keyof typeof variants => {\n const variantKeys = Object.keys(variants) as Array<keyof typeof variants>;\n // Let's log some values to understand what's happening\n const hash = str\n .split(\"\")\n .reduce((acc, char) => char.charCodeAt(0) + ((acc << 5) - acc), 0);\n\n const index = Math.abs(hash) % variantKeys.length;\n const selectedVariant = variantKeys[index];\n\n return selectedVariant;\n};\n\nexport const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, variant, iconName, children, ...props }, ref) => {\n const finalVariant =\n variant ||\n (typeof children === \"string\" ? stringToVariant(children) : \"pink\");\n return (\n <span\n ref={ref}\n className={cn(\n \"inline-flex items-center gap-2\",\n \"rounded px-2 py-1.5\",\n \"text-sm font-medium\",\n variants[finalVariant],\n className\n )}\n {...props}\n >\n {iconName && <Icon size={16} name={iconName} />}\n <Text variant=\"body-xxs-semibold\" className=\"mt-0.5\">\n {children}\n </Text>\n </span>\n );\n }\n);\n\nBadge.displayName = \"Badge\";\n","import * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport * as React from \"react\";\nimport { useCallback, useState } from \"react\";\nimport { cn } from \"../utils\";\nimport { Text } from \"./Text\";\nexport interface TooltipProps {\n content: React.ReactNode;\n children: React.ReactNode;\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n align?: \"start\" | \"center\" | \"end\";\n className?: string;\n delayDuration?: number;\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** Duration in ms for long press on mobile devices */\n longPressDuration?: number;\n}\n\nexport const Tooltip = ({\n content,\n children,\n side = \"bottom\",\n align = \"center\",\n className,\n delayDuration = 200,\n defaultOpen,\n open: controlledOpen,\n onOpenChange,\n longPressDuration = 500\n}: TooltipProps) => {\n const [isOpen, setIsOpen] = useState(defaultOpen || false);\n let longPressTimer: Timer | null = null;\n\n const open = controlledOpen ?? isOpen;\n const handleOpenChange = useCallback(\n (newOpen: boolean) => {\n if (!controlledOpen) {\n setIsOpen(newOpen);\n }\n onOpenChange?.(newOpen);\n },\n [controlledOpen, onOpenChange]\n );\n\n const handleTouchStart = useCallback(() => {\n const timer = setTimeout(() => {\n handleOpenChange(true);\n }, longPressDuration);\n longPressTimer = timer;\n }, [handleOpenChange, longPressDuration]);\n\n const handleTouchEnd = useCallback(() => {\n if (longPressTimer) {\n clearTimeout(longPressTimer);\n longPressTimer = null;\n }\n // Keep tooltip open for a brief moment after touch\n setTimeout(() => handleOpenChange(false), 1500);\n }, [longPressTimer, handleOpenChange]);\n\n return (\n <TooltipPrimitive.Provider delayDuration={delayDuration}>\n <TooltipPrimitive.Root open={open} onOpenChange={handleOpenChange}>\n <TooltipPrimitive.Trigger asChild>\n <span\n tabIndex={0}\n onTouchStart={handleTouchStart}\n onTouchEnd={handleTouchEnd}\n onTouchCancel={handleTouchEnd}\n >\n {children}\n </span>\n </TooltipPrimitive.Trigger>\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n side={side}\n align={align}\n sideOffset={4}\n className={cn(\n \"z-50 overflow-hidden rounded-lg\",\n \"bg-primary px-3 py-1.5\",\n \"text-xs text-white\",\n \"animate-in fade-in-0 zoom-in-95\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0\",\n \"data-[side=bottom]:slide-in-from-top-2\",\n \"data-[side=top]:slide-in-from-bottom-2\",\n \"select-none\",\n \"max-w-60\",\n \"touch-none\", // Prevent touch events from interfering with scrolling\n className\n )}\n >\n {typeof content === \"string\" ? (\n <Text variant=\"body-default-medium\" color=\"white\">\n {content}\n </Text>\n ) : (\n content\n )}\n <TooltipPrimitive.Arrow\n className=\"fill-text-primary\"\n width={10}\n height={5}\n />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n </TooltipPrimitive.Root>\n </TooltipPrimitive.Provider>\n );\n};\n","import React, { KeyboardEvent } from \"react\";\nimport { cn } from \"../utils\";\nimport { Badge } from \"./Badge\";\nimport { Text } from \"./Text\";\nimport { Tooltip } from \"./Tooltip\";\n\nexport type OptionProps = {\n label: React.ReactNode;\n value: string;\n /** Optional color override for specific items like \"Logout\" in red */\n color?: \"default\" | \"danger\";\n /** Optional disabled state */\n disabled?: boolean;\n onChange?: (value: string) => void;\n onKeyDown?: (event: KeyboardEvent<HTMLButtonElement>) => void;\n onMouseEnter?: () => void;\n onMouseLeave?: () => void;\n selected?: boolean;\n className?: string;\n /** ID for accessibility */\n id?: string;\n /** ARIA role */\n role?: string;\n /** ARIA selected state */\n \"aria-selected\"?: boolean;\n /** Current search value for highlighting matches */\n searchValue?: string;\n /** Optional tooltip content */\n tooltip?: React.ReactNode;\n onClick?: () => void;\n badge?: React.ReactNode;\n};\n\nconst HighlightedText = ({\n text,\n highlight\n}: {\n text: string;\n highlight: string;\n}) => {\n if (!highlight) return <>{text}</>;\n\n const parts = text.split(new RegExp(`(${highlight})`, \"i\"));\n return (\n <>\n {parts.map((part, i) =>\n part.toLowerCase() === highlight.toLowerCase() ? (\n <span key={i} className=\"font-bold\">\n {part}\n </span>\n ) : (\n part\n )\n )}\n </>\n );\n};\n\nexport const Option = React.forwardRef<HTMLButtonElement, OptionProps>(\n (\n {\n value,\n label,\n onChange,\n onKeyDown,\n onMouseEnter,\n onMouseLeave,\n selected,\n color,\n disabled,\n className,\n id,\n role,\n \"aria-selected\": ariaSelected,\n searchValue = \"\",\n tooltip,\n onClick,\n badge\n },\n ref\n ) => {\n const content = (\n <button\n ref={ref}\n type=\"button\"\n id={id}\n role={role}\n aria-selected={ariaSelected}\n disabled={disabled}\n className={cn(\n \"relative w-full text-left px-2 py-1.5 text-sm rounded outline-none\",\n \"cursor-pointer hover:bg-gray-100\",\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\n selected && \"bg-gray-100\",\n \"flex items-center gap-2\",\n className\n )}\n onClick={() => {\n onChange?.(value);\n onClick?.();\n }}\n onKeyDown={onKeyDown}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n <Text\n variant=\"body-default-medium\"\n color={color === \"danger\" ? \"danger\" : \"inherit\"}\n >\n {typeof label === \"string\" ? (\n <HighlightedText text={label} highlight={searchValue} />\n ) : (\n label\n )}\n </Text>\n {badge && <Badge>{badge}</Badge>}\n </button>\n );\n return tooltip ? <Tooltip content={tooltip}>{content}</Tooltip> : content;\n }\n);\n","import * as DropdownMenu from \"@radix-ui/react-dropdown-menu\";\nimport * as React from \"react\";\nimport { cn } from \"../utils\";\nimport { Option, type OptionProps } from \"./Option\";\n\nexport type DropdownProps = {\n /** The trigger element that opens the dropdown */\n trigger: React.ReactNode;\n /** Array of items to show in the dropdown */\n items: Omit<OptionProps, \"onChange\" | \"selected\">[];\n /** Optional className for the content */\n className?: string;\n /** Callback when an item is selected */\n onSelect?: (value: string) => void;\n /** Optional side alignment */\n align?: \"start\" | \"center\" | \"end\";\n};\n\nexport const Dropdown = React.forwardRef<HTMLDivElement, DropdownProps>(\n ({ trigger, items, className, onSelect, align = \"end\" }, ref) => {\n const handleSelect = React.useCallback(\n (value: string) => {\n onSelect?.(value);\n },\n [onSelect]\n );\n\n return (\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>{trigger}</DropdownMenu.Trigger>\n\n <DropdownMenu.Portal>\n <DropdownMenu.Content\n ref={ref}\n align={align}\n sideOffset={4}\n className={cn(\n \"z-50 min-w-[220px]\",\n \"bg-background-0 rounded-lg p-1\",\n \"shadow-lg border border-gray-100\",\n \"animate-in fade-in-0 zoom-in-95\",\n className\n )}\n >\n {items.map((item) => (\n <DropdownMenu.Item\n key={item.value}\n disabled={item.disabled}\n onSelect={() => handleSelect(item.value)}\n className=\"outline-none\"\n asChild\n >\n <Option\n {...item}\n className=\"py-3 px-6\"\n onChange={handleSelect}\n />\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n );\n }\n);\n\nDropdown.displayName = \"Dropdown\";\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/utils/index.ts","../../src/utils/responsive.ts","../../src/components/Icon.tsx","../../src/components/Text.tsx","../../src/components/Badge.tsx","../../src/components/Tooltip.tsx","../../src/components/Option.tsx","../../src/components/Dropdown.tsx"],"names":["cn","inputs","twMerge","clsx","BASE_SIZES","RESPONSIVE_SIZES","getSizeKey","size","getResponsiveSize","baseSize","classes","styles","key","baseKey","responsiveClasses","s","breakpoint","valueStr","value","valueKey","COLOR_MAP","Icon","React","name","color","title","className","style","props","ref","IconComponent","IconMap","responsiveSizeClasses","responsiveSizeStyles","HEADING_ELEMENT_MAP","getElementFromVariant","variant","category","fontWeight","processVariants","variants","typographyClass","Text","as","children","weight","typographyClasses","colorClasses","suggestedElement","baseVariant","stringToVariant","str","variantKeys","hash","acc","char","index","Badge","w","iconName","finalVariant","Tooltip","content","side","align","delayDuration","defaultOpen","controlledOpen","onOpenChange","longPressDuration","isOpen","setIsOpen","useState","longPressTimer","open","handleOpenChange","useCallback","newOpen","handleTouchStart","handleTouchEnd","u","HighlightedText","text","highlight","parts","part","i","Option","label","onChange","onKeyDown","onMouseEnter","onMouseLeave","selected","disabled","id","role","ariaSelected","searchValue","tooltip","onClick","badge","Dropdown","x","trigger","items","onSelect","handleSelect","item"],"mappings":"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","file":"Dropdown.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\nexport const noopFn = () => {};\n","export type Breakpoint = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\nexport type ResponsiveSize = number | `${Breakpoint}:${number}`;\n\ntype SizeKey =\n | \"12\"\n | \"16\"\n | \"18\"\n | \"20\"\n | \"24\"\n | \"32\"\n | \"36\"\n | \"40\"\n | \"42\"\n | \"48\"\n | \"64\"\n | \"72\";\n\n// These constants help Tailwind identify the classes during compilation\nconst BASE_SIZES: Record<SizeKey, string> = {\n \"12\": \"h-[12px] w-[12px]\",\n \"16\": \"h-[16px] w-[16px]\",\n \"18\": \"h-[18px] w-[18px]\",\n \"20\": \"h-[20px] w-[20px]\",\n \"24\": \"h-[24px] w-[24px]\",\n \"32\": \"h-[32px] w-[32px]\",\n \"36\": \"h-[36px] w-[36px]\",\n \"40\": \"h-[40px] w-[40px]\",\n \"42\": \"h-[42px] w-[42px]\",\n \"48\": \"h-[48px] w-[48px]\",\n \"64\": \"h-[64px] w-[64px]\",\n \"72\": \"h-[72px] w-[72px]\"\n};\n\nconst RESPONSIVE_SIZES: Record<Breakpoint, Record<SizeKey, string>> = {\n sm: {\n \"12\": \"sm:h-[12px] sm:w-[12px]\",\n \"16\": \"sm:h-[16px] sm:w-[16px]\",\n \"18\": \"sm:h-[18px] sm:w-[18px]\",\n \"20\": \"sm:h-[20px] sm:w-[20px]\",\n \"24\": \"sm:h-[24px] sm:w-[24px]\",\n \"32\": \"sm:h-[32px] sm:w-[32px]\",\n \"36\": \"sm:h-[36px] sm:w-[36px]\",\n \"40\": \"sm:h-[40px] sm:w-[40px]\",\n \"42\": \"sm:h-[42px] sm:w-[42px]\",\n \"48\": \"sm:h-[48px] sm:w-[48px]\",\n \"64\": \"sm:h-[64px] sm:w-[64px]\",\n \"72\": \"sm:h-[72px] sm:w-[72px]\"\n },\n md: {\n \"12\": \"md:h-[12px] md:w-[12px]\",\n \"16\": \"md:h-[16px] md:w-[16px]\",\n \"18\": \"md:h-[18px] md:w-[18px]\",\n \"20\": \"md:h-[20px] md:w-[20px]\",\n \"24\": \"md:h-[24px] md:w-[24px]\",\n \"32\": \"md:h-[32px] md:w-[32px]\",\n \"36\": \"md:h-[36px] md:w-[36px]\",\n \"40\": \"md:h-[40px] md:w-[40px]\",\n \"42\": \"md:h-[42px] md:w-[42px]\",\n \"48\": \"md:h-[48px] md:w-[48px]\",\n \"64\": \"md:h-[64px] md:w-[64px]\",\n \"72\": \"md:h-[72px] md:w-[72px]\"\n },\n lg: {\n \"12\": \"lg:h-[12px] lg:w-[12px]\",\n \"16\": \"lg:h-[16px] lg:w-[16px]\",\n \"18\": \"lg:h-[18px] lg:w-[18px]\",\n \"20\": \"lg:h-[20px] lg:w-[20px]\",\n \"24\": \"lg:h-[24px] lg:w-[24px]\",\n \"32\": \"lg:h-[32px] lg:w-[32px]\",\n \"36\": \"lg:h-[36px] lg:w-[36px]\",\n \"40\": \"lg:h-[40px] lg:w-[40px]\",\n \"42\": \"lg:h-[42px] lg:w-[42px]\",\n \"48\": \"lg:h-[48px] lg:w-[48px]\",\n \"64\": \"lg:h-[64px] lg:w-[64px]\",\n \"72\": \"lg:h-[72px] lg:w-[72px]\"\n },\n xl: {\n \"12\": \"xl:h-[12px] xl:w-[12px]\",\n \"16\": \"xl:h-[16px] xl:w-[16px]\",\n \"18\": \"xl:h-[18px] xl:w-[18px]\",\n \"20\": \"xl:h-[20px] xl:w-[20px]\",\n \"24\": \"xl:h-[24px] xl:w-[24px]\",\n \"32\": \"xl:h-[32px] xl:w-[32px]\",\n \"36\": \"xl:h-[36px] xl:w-[36px]\",\n \"40\": \"xl:h-[40px] xl:w-[40px]\",\n \"42\": \"xl:h-[42px] xl:w-[42px]\",\n \"48\": \"xl:h-[48px] xl:w-[48px]\",\n \"64\": \"xl:h-[64px] xl:w-[64px]\",\n \"72\": \"xl:h-[72px] xl:w-[72px]\"\n },\n \"2xl\": {\n \"12\": \"2xl:h-[12px] 2xl:w-[12px]\",\n \"16\": \"2xl:h-[16px] 2xl:w-[16px]\",\n \"18\": \"2xl:h-[18px] 2xl:w-[18px]\",\n \"20\": \"2xl:h-[20px] 2xl:w-[20px]\",\n \"24\": \"2xl:h-[24px] 2xl:w-[24px]\",\n \"32\": \"2xl:h-[32px] 2xl:w-[32px]\",\n \"36\": \"2xl:h-[36px] 2xl:w-[36px]\",\n \"40\": \"2xl:h-[40px] 2xl:w-[40px]\",\n \"42\": \"2xl:h-[42px] 2xl:w-[42px]\",\n \"48\": \"2xl:h-[48px] 2xl:w-[48px]\",\n \"64\": \"2xl:h-[64px] 2xl:w-[64px]\",\n \"72\": \"2xl:h-[72px] 2xl:w-[72px]\"\n }\n};\n\nconst getSizeKey = (size: number): SizeKey | undefined => {\n return String(size) as SizeKey;\n};\n\nexport const getResponsiveSize = (\n size: ResponsiveSize | ResponsiveSize[] | undefined,\n baseSize: number = 24\n): {\n responsiveSizeClasses: string;\n responsiveSizeStyles: Record<string, string>;\n} => {\n const classes: string[] = [];\n const styles: Record<string, string> = {};\n\n // If no size provided, use baseSize\n if (size === undefined) {\n const key = getSizeKey(baseSize);\n if (key) {\n classes.push(BASE_SIZES[key]);\n } else {\n styles.height = `${baseSize}px`;\n styles.width = `${baseSize}px`;\n }\n }\n\n // If size is a number, use that directly\n if (typeof size === \"number\") {\n const key = getSizeKey(size);\n if (key) {\n classes.push(BASE_SIZES[key]);\n } else {\n styles.height = `${size}px`;\n styles.width = `${size}px`;\n }\n }\n\n // If array of responsive sizes, generate responsive classes\n if (Array.isArray(size)) {\n const baseKey = getSizeKey(baseSize);\n const responsiveClasses = [\n (baseKey && BASE_SIZES[baseKey]) || `h-[${baseSize}px] w-[${baseSize}px]`\n ];\n\n size.forEach((s) => {\n if (typeof s === \"string\") {\n const [breakpoint, valueStr] = s.split(\":\") as [Breakpoint, string];\n const value = parseInt(valueStr, 10);\n const key = getSizeKey(value);\n classes.push(\n (key && RESPONSIVE_SIZES[breakpoint]?.[key]) ||\n `${breakpoint}:h-[${value}px] ${breakpoint}:w-[${value}px]`\n );\n }\n });\n\n classes.push(...responsiveClasses);\n }\n\n if (typeof size === \"string\") {\n const [breakpoint, valueStr] = size.split(\":\") as [Breakpoint, string];\n const value = parseInt(valueStr, 10);\n const valueKey = getSizeKey(value);\n classes.push(\n (valueKey && RESPONSIVE_SIZES[breakpoint]?.[valueKey]) ||\n `${breakpoint}:h-[${value}px] ${breakpoint}:w-[${value}px]`\n );\n }\n\n return {\n responsiveSizeClasses: classes.join(\" \"),\n responsiveSizeStyles: styles\n };\n};\n","import type { IconName } from \"@deckai/icons\";\nimport { IconMap } from \"@deckai/icons\";\nimport type { SVGProps } from \"react\";\nimport React from \"react\";\n\nimport type { IconColors } from \"../types/tailwind\";\nimport { cn } from \"../utils\";\nimport type { ResponsiveSize } from \"../utils/responsive\";\nimport { getResponsiveSize } from \"../utils/responsive\";\n\nexport type IconProps = {\n name: IconName;\n /** @default 24 */\n size?: ResponsiveSize | ResponsiveSize[];\n /** @default primary */\n color?: IconColors;\n title?: string;\n className?: string;\n style?: React.CSSProperties;\n} & Omit<SVGProps<SVGSVGElement>, \"aria-hidden\" | \"aria-label\">;\n\n// Using CSS variables to support dark mode\nconst COLOR_MAP: Record<IconColors, string> = {\n primary: \"var(--color-primary)\",\n secondary: \"var(--color-secondary)\",\n white: \"var(--color-white)\",\n primaryBlue: \"var(--color-primary-100)\",\n disabled: \"var(--color-disabled)\",\n danger: \"var(--color-danger)\"\n};\n\nexport const Icon = React.forwardRef<SVGSVGElement, IconProps>(\n (\n {\n name,\n size = 24,\n color = \"primary\",\n title,\n className,\n style = {},\n ...props\n },\n ref\n ) => {\n const IconComponent = IconMap[name];\n const { responsiveSizeClasses, responsiveSizeStyles } = getResponsiveSize(\n size,\n 24\n );\n\n return (\n <div\n className={cn(\n \"flex justify-center items-center\",\n responsiveSizeClasses,\n className\n )}\n style={{\n [\"--icon-stroke\" as string]: COLOR_MAP[color],\n ...responsiveSizeStyles,\n ...style\n }}\n >\n <IconComponent\n ref={ref}\n aria-hidden={!title}\n aria-label={title}\n stroke={name.includes(\"filled\") ? undefined : COLOR_MAP[color]}\n {...props}\n />\n </div>\n );\n }\n);\n\nIcon.displayName = \"Icon\";\n","import React from \"react\";\n\nimport type { Typography } from \"../types/tailwind\";\nimport type { Breakpoint } from \"../utils/responsive\";\n\ntype TextElement =\n | \"p\"\n | \"span\"\n | \"h1\"\n | \"h2\"\n | \"h3\"\n | \"h4\"\n | \"h5\"\n | \"h6\"\n | \"strong\"\n | \"em\"\n | \"blockquote\"\n | \"pre\"\n | \"code\"\n | \"small\"\n | \"label\"\n | \"a\";\n\n// HTML element mapping type\ntype HTMLElementByTag = {\n p: HTMLParagraphElement;\n span: HTMLSpanElement;\n h1: HTMLHeadingElement;\n h2: HTMLHeadingElement;\n h3: HTMLHeadingElement;\n h4: HTMLHeadingElement;\n h5: HTMLHeadingElement;\n h6: HTMLHeadingElement;\n strong: HTMLElement;\n em: HTMLElement;\n blockquote: HTMLQuoteElement;\n pre: HTMLPreElement;\n code: HTMLElement;\n small: HTMLElement;\n label: HTMLLabelElement;\n a: HTMLAnchorElement;\n};\n\n// HTML props mapping type\ntype HTMLPropsMap = {\n p: React.HTMLAttributes<HTMLParagraphElement>;\n span: React.HTMLAttributes<HTMLSpanElement>;\n h1: React.HTMLAttributes<HTMLHeadingElement>;\n h2: React.HTMLAttributes<HTMLHeadingElement>;\n h3: React.HTMLAttributes<HTMLHeadingElement>;\n h4: React.HTMLAttributes<HTMLHeadingElement>;\n h5: React.HTMLAttributes<HTMLHeadingElement>;\n h6: React.HTMLAttributes<HTMLHeadingElement>;\n strong: React.HTMLAttributes<HTMLElement>;\n em: React.HTMLAttributes<HTMLElement>;\n blockquote: React.HTMLAttributes<HTMLQuoteElement>;\n pre: React.HTMLAttributes<HTMLPreElement>;\n code: React.HTMLAttributes<HTMLElement>;\n small: React.HTMLAttributes<HTMLElement>;\n label: React.LabelHTMLAttributes<HTMLLabelElement>;\n a: Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, \"color\">;\n};\n\ntype TextColor =\n | \"primary\"\n | \"secondary\"\n | \"white\"\n | \"primary-blue\"\n | \"disabled\"\n | \"danger\"\n | \"inherit\"\n | \"primary-100\";\n\nconst HEADING_ELEMENT_MAP: Record<string, TextElement> = {\n xl: \"h1\",\n lg: \"h1\",\n md: \"h2\",\n sm: \"h3\",\n xs: \"h4\"\n};\n\nconst getElementFromVariant = (variant: TypographyKey): TextElement => {\n const [category, size] = variant.split(\"-\");\n\n if (category === \"heading\") {\n return HEADING_ELEMENT_MAP[size] || \"p\";\n }\n\n if (category === \"label\") {\n return \"label\";\n }\n\n return \"p\";\n};\n\ntype Weight = \"light\" | \"regular\" | \"semibold\" | \"bold\";\n\nconst fontWeight: Record<Weight, string> = {\n light: \"font-light\",\n regular: \"font-regular\",\n semibold: \"font-semibold\",\n bold: \"font-bold\"\n};\n\ntype ResponsiveVariant = TypographyKey | `${Breakpoint}:${TypographyKey}`;\n\ntype TypographyCategory = keyof Typography;\ntype TypographyValue<T extends TypographyCategory> = Extract<\n keyof Typography[T],\n string | number | bigint | boolean | null | undefined\n>;\ntype TypographyKey = {\n [T in TypographyCategory]: `${T}-${TypographyValue<T>}`;\n}[TypographyCategory];\n\n// Update TextProps to use ResponsiveVariant\nexport type TextProps<T extends TextElement = \"p\"> = {\n variant?: ResponsiveVariant | ResponsiveVariant[];\n color?: TextColor;\n as?: T;\n className?: string;\n children: React.ReactNode;\n weight?: Weight;\n} & HTMLPropsMap[T];\n\n// Add helper function to process variants\nconst processVariants = (\n variants: ResponsiveVariant | ResponsiveVariant[] | undefined\n): string => {\n if (!variants) return \"text-body-default\";\n\n const variantArray = Array.isArray(variants) ? variants : [variants];\n\n return variantArray\n .map((variant) => {\n if (variant.includes(\":\")) {\n const [breakpoint, typographyClass] = variant.split(\":\");\n return `${breakpoint}:text-${typographyClass}`;\n }\n return `text-${variant}`;\n })\n .join(\" \");\n};\n\nexport const Text = React.forwardRef(\n <T extends TextElement = \"p\">(\n {\n variant = \"body-default\",\n color = \"primary\",\n as,\n className,\n children,\n weight,\n ...props\n }: TextProps<T>,\n ref: React.ForwardedRef<HTMLElementByTag[T]>\n ) => {\n // Process typography classes with breakpoints\n const typographyClasses = processVariants(variant);\n\n // Get color styles using Tailwind classes that reference CSS variables\n const colorClasses = color === \"inherit\" ? \"text-inherit\" : `text-${color}`;\n\n const suggestedElement = React.useMemo(() => {\n const baseVariant =\n typeof variant === \"string\"\n ? variant.split(\":\").pop()!\n : Array.isArray(variant)\n ? variant[0].split(\":\").pop()!\n : \"body-default\";\n return getElementFromVariant(baseVariant as TypographyKey);\n }, [variant]);\n\n const Component = (as || suggestedElement) as T;\n\n return (\n // @ts-expect-error TODO: figure this out\n <Component\n ref={ref}\n className={`\n font-sans antialiased\n ${typographyClasses}\n ${colorClasses}\n ${weight && `!${fontWeight[weight]}`}\n ${className}\n `}\n {...props}\n >\n {children}\n </Component>\n );\n }\n);\n\nText.displayName = \"Text\";\n","import type { IconName } from \"@deckai/icons\";\nimport * as React from \"react\";\n\nimport { cn } from \"../utils\";\nimport { Icon } from \"./Icon\";\nimport { Text } from \"./Text\";\n\nexport type BadgeProps = {\n variant?: \"pink\" | \"orange\" | \"green\" | \"purple\";\n iconName?: IconName;\n} & React.HTMLAttributes<HTMLSpanElement>;\n\nconst variants = {\n pink: \"bg-tertiary-5\",\n orange: \"bg-tertiary-15\",\n green: \"bg-tertiary-25\",\n purple: \"bg-secondary-300\"\n};\n\nconst stringToVariant = (str: string): keyof typeof variants => {\n const variantKeys = Object.keys(variants) as Array<keyof typeof variants>;\n // Let's log some values to understand what's happening\n const hash = str\n .split(\"\")\n .reduce((acc, char) => char.charCodeAt(0) + ((acc << 5) - acc), 0);\n\n const index = Math.abs(hash) % variantKeys.length;\n const selectedVariant = variantKeys[index];\n\n return selectedVariant;\n};\n\nexport const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, variant, iconName, children, ...props }, ref) => {\n const finalVariant =\n variant ||\n (typeof children === \"string\" ? stringToVariant(children) : \"pink\");\n return (\n <span\n ref={ref}\n className={cn(\n \"inline-flex items-center gap-2\",\n \"rounded px-2 py-1.5\",\n \"text-sm font-medium\",\n variants[finalVariant],\n className\n )}\n {...props}\n >\n {iconName && <Icon size={16} name={iconName} />}\n <Text variant=\"body-xxs-semibold\" className=\"mt-0.5\">\n {children}\n </Text>\n </span>\n );\n }\n);\n\nBadge.displayName = \"Badge\";\n","import * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport * as React from \"react\";\nimport { useCallback, useState } from \"react\";\n\nimport { cn } from \"../utils\";\nimport { Text } from \"./Text\";\nexport interface TooltipProps {\n content: React.ReactNode;\n children: React.ReactNode;\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n align?: \"start\" | \"center\" | \"end\";\n className?: string;\n delayDuration?: number;\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** Duration in ms for long press on mobile devices */\n longPressDuration?: number;\n}\n\nexport function Tooltip({\n content,\n children,\n side = \"bottom\",\n align = \"center\",\n className,\n delayDuration = 200,\n defaultOpen,\n open: controlledOpen,\n onOpenChange,\n longPressDuration = 500\n}: TooltipProps) {\n const [isOpen, setIsOpen] = useState(defaultOpen || false);\n let longPressTimer: Timer | null = null;\n\n const open = controlledOpen ?? isOpen;\n const handleOpenChange = useCallback(\n (newOpen: boolean) => {\n if (!controlledOpen) {\n setIsOpen(newOpen);\n }\n onOpenChange?.(newOpen);\n },\n [controlledOpen, onOpenChange]\n );\n\n const handleTouchStart = useCallback(() => {\n const timer = setTimeout(() => {\n handleOpenChange(true);\n }, longPressDuration);\n longPressTimer = timer;\n }, [handleOpenChange, longPressDuration]);\n\n const handleTouchEnd = useCallback(() => {\n if (longPressTimer) {\n clearTimeout(longPressTimer);\n longPressTimer = null;\n }\n // Keep tooltip open for a brief moment after touch\n setTimeout(() => handleOpenChange(false), 1500);\n }, [longPressTimer, handleOpenChange]);\n\n return (\n <TooltipPrimitive.Provider delayDuration={delayDuration}>\n <TooltipPrimitive.Root open={open} onOpenChange={handleOpenChange}>\n <TooltipPrimitive.Trigger asChild>\n <span\n tabIndex={0}\n onTouchStart={handleTouchStart}\n onTouchEnd={handleTouchEnd}\n onTouchCancel={handleTouchEnd}\n >\n {children}\n </span>\n </TooltipPrimitive.Trigger>\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n side={side}\n align={align}\n sideOffset={4}\n className={cn(\n \"z-50 overflow-hidden rounded-lg\",\n \"bg-primary px-3 py-1.5\",\n \"text-xs text-white\",\n \"animate-in fade-in-0 zoom-in-95\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0\",\n \"data-[side=bottom]:slide-in-from-top-2\",\n \"data-[side=top]:slide-in-from-bottom-2\",\n \"select-none\",\n \"max-w-60\",\n \"touch-none\", // Prevent touch events from interfering with scrolling\n className\n )}\n >\n {typeof content === \"string\" ? (\n <Text variant=\"body-default-medium\" color=\"white\">\n {content}\n </Text>\n ) : (\n content\n )}\n <TooltipPrimitive.Arrow\n className=\"fill-text-primary\"\n width={10}\n height={5}\n />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n </TooltipPrimitive.Root>\n </TooltipPrimitive.Provider>\n );\n}\n","import type { KeyboardEvent } from \"react\";\nimport React from \"react\";\n\nimport { cn } from \"../utils\";\nimport { Badge } from \"./Badge\";\nimport { Text } from \"./Text\";\nimport { Tooltip } from \"./Tooltip\";\n\nexport type OptionProps = {\n label: React.ReactNode;\n value: string;\n /** Optional color override for specific items like \"Logout\" in red */\n color?: \"default\" | \"danger\";\n /** Optional disabled state */\n disabled?: boolean;\n onChange?: (value: string) => void;\n onKeyDown?: (event: KeyboardEvent<HTMLButtonElement>) => void;\n onMouseEnter?: () => void;\n onMouseLeave?: () => void;\n selected?: boolean;\n className?: string;\n /** ID for accessibility */\n id?: string;\n /** ARIA role */\n role?: string;\n /** ARIA selected state */\n \"aria-selected\"?: boolean;\n /** Current search value for highlighting matches */\n searchValue?: string;\n /** Optional tooltip content */\n tooltip?: React.ReactNode;\n onClick?: () => void;\n badge?: React.ReactNode;\n};\n\nfunction HighlightedText({\n text,\n highlight\n}: {\n text: string;\n highlight: string;\n}) {\n if (!highlight) return <>{text}</>;\n\n const parts = text.split(new RegExp(`(${highlight})`, \"i\"));\n return (\n <>\n {parts.map((part, i) =>\n part.toLowerCase() === highlight.toLowerCase() ? (\n <span key={i} className=\"font-bold\">\n {part}\n </span>\n ) : (\n part\n )\n )}\n </>\n );\n}\n\nexport const Option = React.forwardRef<HTMLButtonElement, OptionProps>(\n (\n {\n value,\n label,\n onChange,\n onKeyDown,\n onMouseEnter,\n onMouseLeave,\n selected,\n color,\n disabled,\n className,\n id,\n role,\n \"aria-selected\": ariaSelected,\n searchValue = \"\",\n tooltip,\n onClick,\n badge\n },\n ref\n ) => {\n const content = (\n <button\n ref={ref}\n type=\"button\"\n id={id}\n role={role}\n aria-selected={ariaSelected}\n disabled={disabled}\n className={cn(\n \"relative w-full text-left px-2 py-1.5 text-sm rounded outline-none\",\n \"cursor-pointer hover:bg-gray-100\",\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\n selected && \"bg-gray-100\",\n \"flex items-center gap-2\",\n className\n )}\n onClick={() => {\n onChange?.(value);\n onClick?.();\n }}\n onKeyDown={onKeyDown}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n <Text\n variant=\"body-default-medium\"\n color={color === \"danger\" ? \"danger\" : \"inherit\"}\n >\n {typeof label === \"string\" ? (\n <HighlightedText text={label} highlight={searchValue} />\n ) : (\n label\n )}\n </Text>\n {badge && <Badge>{badge}</Badge>}\n </button>\n );\n return tooltip ? <Tooltip content={tooltip}>{content}</Tooltip> : content;\n }\n);\n","import * as DropdownMenu from \"@radix-ui/react-dropdown-menu\";\nimport * as React from \"react\";\n\nimport { cn } from \"../utils\";\nimport { Option, type OptionProps } from \"./Option\";\n\nexport type DropdownProps = {\n /** The trigger element that opens the dropdown */\n trigger: React.ReactNode;\n /** Array of items to show in the dropdown */\n items: Omit<OptionProps, \"onChange\" | \"selected\">[];\n /** Optional className for the content */\n className?: string;\n /** Callback when an item is selected */\n onSelect?: (value: string) => void;\n /** Optional side alignment */\n align?: \"start\" | \"center\" | \"end\";\n};\n\nexport const Dropdown = React.forwardRef<HTMLDivElement, DropdownProps>(\n ({ trigger, items, className, onSelect, align = \"end\" }, ref) => {\n const handleSelect = React.useCallback(\n (value: string) => {\n onSelect?.(value);\n },\n [onSelect]\n );\n\n return (\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>{trigger}</DropdownMenu.Trigger>\n\n <DropdownMenu.Portal>\n <DropdownMenu.Content\n ref={ref}\n align={align}\n sideOffset={4}\n className={cn(\n \"z-50 min-w-[220px]\",\n \"bg-background-0 rounded-lg p-1\",\n \"shadow-lg border border-gray-100\",\n \"animate-in fade-in-0 zoom-in-95\",\n className\n )}\n >\n {items.map((item) => (\n <DropdownMenu.Item\n key={item.value}\n disabled={item.disabled}\n onSelect={() => handleSelect(item.value)}\n className=\"outline-none\"\n asChild\n >\n <Option\n {...item}\n className=\"py-3 px-6\"\n onChange={handleSelect}\n />\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n );\n }\n);\n\nDropdown.displayName = \"Dropdown\";\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
'use strict';var y=require('react'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),icons=require('@deckai/icons');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var y__namespace=/*#__PURE__*/_interopNamespace(y);function
|
|
1
|
+
'use strict';var y=require('react'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),icons=require('@deckai/icons');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var y__namespace=/*#__PURE__*/_interopNamespace(y);function i(...e){return tailwindMerge.twMerge(clsx.clsx(e))}var k={xl:"h1",lg:"h1",md:"h2",sm:"h3",xs:"h4"},A=e=>{let[r,p]=e.split("-");return r==="heading"?k[p]||"p":r==="label"?"label":"p"},C={light:"font-light",regular:"font-regular",semibold:"font-semibold",bold:"font-bold"},P=e=>e?(Array.isArray(e)?e:[e]).map(p=>{if(p.includes(":")){let[o,t]=p.split(":");return `${o}:text-${t}`}return `text-${p}`}).join(" "):"text-body-default",g=y__namespace.default.forwardRef(({variant:e="body-default",color:r="primary",as:p,className:o,children:t,weight:s,...n},a)=>{let l=P(e),x=r==="inherit"?"text-inherit":`text-${r}`,m=y__namespace.default.useMemo(()=>{let $=typeof e=="string"?e.split(":").pop():Array.isArray(e)?e[0].split(":").pop():"body-default";return A($)},[e]);return y__namespace.default.createElement(p||m,{ref:a,className:`
|
|
2
2
|
font-sans antialiased
|
|
3
|
-
${
|
|
3
|
+
${l}
|
|
4
4
|
${x}
|
|
5
5
|
${s&&`!${C[s]}`}
|
|
6
|
-
${
|
|
7
|
-
`,...n},t)});g.displayName="Text";var d="focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-100";var B={black:"bg-primary text-white",accent:"bg-primary-100 text-white",secondary:"bg-secondary-100 text-secondary"},u={black:"border border-text text-primary",accent:"border border-primary-100 text-primary-100",secondary:"border border-text-secondary text-secondary"},N=y__namespace.forwardRef(({className:e,variant:r="filled",color:
|
|
6
|
+
${o}
|
|
7
|
+
`,...n},t)});g.displayName="Text";var d="focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-100";var B={black:"bg-primary text-white",accent:"bg-primary-100 text-white",secondary:"bg-secondary-100 text-secondary"},u={black:"border border-text text-primary",accent:"border border-primary-100 text-primary-100",secondary:"border border-text-secondary text-secondary"},N=y__namespace.forwardRef(({className:e,variant:r="filled",color:p="black",isLoading:o=false,children:t,disabled:s,end:n,...a},l)=>y__namespace.createElement("button",{ref:l,className:i(`
|
|
8
8
|
sm:px-7 px-4
|
|
9
9
|
py-2
|
|
10
10
|
inline-flex items-center justify-center
|
|
@@ -12,5 +12,5 @@
|
|
|
12
12
|
transition-colors duration-200
|
|
13
13
|
disabled:opacity-50 disabled:pointer-events-none
|
|
14
14
|
hover:opacity-80 active:scale-95
|
|
15
|
-
truncate`,d,r==="filled"?B[
|
|
15
|
+
truncate`,d,r==="filled"?B[p]:r==="transparent"?"bg-transparent text-text":u[p],e),disabled:s||o,type:"button",...a},typeof t=="string"?y__namespace.createElement(g,{variant:["sm:body-default-bold","body-xxs-semibold"],color:"inherit"},t):t,n));N.displayName="Button";var f={12:"h-[12px] w-[12px]",16:"h-[16px] w-[16px]",18:"h-[18px] w-[18px]",20:"h-[20px] w-[20px]",24:"h-[24px] w-[24px]",32:"h-[32px] w-[32px]",36:"h-[36px] w-[36px]",40:"h-[40px] w-[40px]",42:"h-[42px] w-[42px]",48:"h-[48px] w-[48px]",64:"h-[64px] w-[64px]",72:"h-[72px] w-[72px]"},E={sm:{12:"sm:h-[12px] sm:w-[12px]",16:"sm:h-[16px] sm:w-[16px]",18:"sm:h-[18px] sm:w-[18px]",20:"sm:h-[20px] sm:w-[20px]",24:"sm:h-[24px] sm:w-[24px]",32:"sm:h-[32px] sm:w-[32px]",36:"sm:h-[36px] sm:w-[36px]",40:"sm:h-[40px] sm:w-[40px]",42:"sm:h-[42px] sm:w-[42px]",48:"sm:h-[48px] sm:w-[48px]",64:"sm:h-[64px] sm:w-[64px]",72:"sm:h-[72px] sm:w-[72px]"},md:{12:"md:h-[12px] md:w-[12px]",16:"md:h-[16px] md:w-[16px]",18:"md:h-[18px] md:w-[18px]",20:"md:h-[20px] md:w-[20px]",24:"md:h-[24px] md:w-[24px]",32:"md:h-[32px] md:w-[32px]",36:"md:h-[36px] md:w-[36px]",40:"md:h-[40px] md:w-[40px]",42:"md:h-[42px] md:w-[42px]",48:"md:h-[48px] md:w-[48px]",64:"md:h-[64px] md:w-[64px]",72:"md:h-[72px] md:w-[72px]"},lg:{12:"lg:h-[12px] lg:w-[12px]",16:"lg:h-[16px] lg:w-[16px]",18:"lg:h-[18px] lg:w-[18px]",20:"lg:h-[20px] lg:w-[20px]",24:"lg:h-[24px] lg:w-[24px]",32:"lg:h-[32px] lg:w-[32px]",36:"lg:h-[36px] lg:w-[36px]",40:"lg:h-[40px] lg:w-[40px]",42:"lg:h-[42px] lg:w-[42px]",48:"lg:h-[48px] lg:w-[48px]",64:"lg:h-[64px] lg:w-[64px]",72:"lg:h-[72px] lg:w-[72px]"},xl:{12:"xl:h-[12px] xl:w-[12px]",16:"xl:h-[16px] xl:w-[16px]",18:"xl:h-[18px] xl:w-[18px]",20:"xl:h-[20px] xl:w-[20px]",24:"xl:h-[24px] xl:w-[24px]",32:"xl:h-[32px] xl:w-[32px]",36:"xl:h-[36px] xl:w-[36px]",40:"xl:h-[40px] xl:w-[40px]",42:"xl:h-[42px] xl:w-[42px]",48:"xl:h-[48px] xl:w-[48px]",64:"xl:h-[64px] xl:w-[64px]",72:"xl:h-[72px] xl:w-[72px]"},"2xl":{12:"2xl:h-[12px] 2xl:w-[12px]",16:"2xl:h-[16px] 2xl:w-[16px]",18:"2xl:h-[18px] 2xl:w-[18px]",20:"2xl:h-[20px] 2xl:w-[20px]",24:"2xl:h-[24px] 2xl:w-[24px]",32:"2xl:h-[32px] 2xl:w-[32px]",36:"2xl:h-[36px] 2xl:w-[36px]",40:"2xl:h-[40px] 2xl:w-[40px]",42:"2xl:h-[42px] 2xl:w-[42px]",48:"2xl:h-[48px] 2xl:w-[48px]",64:"2xl:h-[64px] 2xl:w-[64px]",72:"2xl:h-[72px] 2xl:w-[72px]"}},h=e=>String(e),H=(e,r=24)=>{let p=[],o={};if(e===void 0){let t=h(r);t?p.push(f[t]):(o.height=`${r}px`,o.width=`${r}px`);}if(typeof e=="number"){let t=h(e);t?p.push(f[t]):(o.height=`${e}px`,o.width=`${e}px`);}if(Array.isArray(e)){let t=h(r),s=[t&&f[t]||`h-[${r}px] w-[${r}px]`];e.forEach(n=>{if(typeof n=="string"){let[a,l]=n.split(":"),x=parseInt(l,10),m=h(x);p.push(m&&E[a]?.[m]||`${a}:h-[${x}px] ${a}:w-[${x}px]`);}}),p.push(...s);}if(typeof e=="string"){let[t,s]=e.split(":"),n=parseInt(s,10),a=h(n);p.push(a&&E[t]?.[a]||`${t}:h-[${n}px] ${t}:w-[${n}px]`);}return {responsiveSizeClasses:p.join(" "),responsiveSizeStyles:o}};var M={primary:"var(--color-primary)",secondary:"var(--color-secondary)",white:"var(--color-white)",primaryBlue:"var(--color-primary-100)",disabled:"var(--color-disabled)",danger:"var(--color-danger)"},T=y__namespace.default.forwardRef(({name:e,size:r=24,color:p="primary",title:o,className:t,style:s={},...n},a)=>{let l=icons.IconMap[e],{responsiveSizeClasses:x,responsiveSizeStyles:m}=H(r,24);return y__namespace.default.createElement("div",{className:i("flex justify-center items-center",x,t),style:{"--icon-stroke":M[p],...m,...s}},y__namespace.default.createElement(l,{ref:a,"aria-hidden":!o,"aria-label":o,stroke:e.includes("filled")?void 0:M[p],...n}))});T.displayName="Icon";var w=y__namespace.default.forwardRef(({children:e,type:r="button",className:p,disabled:o,...t},s)=>y__namespace.default.createElement("button",{ref:s,type:r,disabled:o,className:i("appearance-none hover:opacity-80 transition-all active:scale-95",d,o&&"opacity-50 cursor-not-allowed",p),...t},e));w.displayName="Pressable";function I({className:e,onClick:r}){return y__namespace.default.createElement(w,{className:i("absolute lg:top-10 md:top-8 top-4 lg:right-10 md:right-8 right-4 lg:px-2 lg:py-2 px-1 py-1 rounded-lg",u.black,e),onClick:r},y__namespace.default.createElement(T,{color:"primary",name:"edit-2"}))}I.displayName="EditButton";exports.EditButton=I;//# sourceMappingURL=EditButton.cjs.map
|
|
16
16
|
//# sourceMappingURL=EditButton.cjs.map
|