@treeal/ds 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +48 -0
- package/dist/assets/style.css +1 -0
- package/dist/components/Alert/Alert.d.ts +19 -0
- package/dist/components/Alert/Alert.d.ts.map +1 -0
- package/dist/components/Alert/index.d.ts +3 -0
- package/dist/components/Alert/index.d.ts.map +1 -0
- package/dist/components/BaseCheckRadio/BaseCheckRadio.d.ts +14 -0
- package/dist/components/BaseCheckRadio/BaseCheckRadio.d.ts.map +1 -0
- package/dist/components/BaseCheckRadio/index.d.ts +3 -0
- package/dist/components/BaseCheckRadio/index.d.ts.map +1 -0
- package/dist/components/Button/Button.d.ts +21 -0
- package/dist/components/Button/Button.d.ts.map +1 -0
- package/dist/components/Button/index.d.ts +3 -0
- package/dist/components/Button/index.d.ts.map +1 -0
- package/dist/components/Header/Header.d.ts +28 -0
- package/dist/components/Header/Header.d.ts.map +1 -0
- package/dist/components/Header/index.d.ts +3 -0
- package/dist/components/Header/index.d.ts.map +1 -0
- package/dist/components/Input/Input.d.ts +21 -0
- package/dist/components/Input/Input.d.ts.map +1 -0
- package/dist/components/Input/index.d.ts +3 -0
- package/dist/components/Input/index.d.ts.map +1 -0
- package/dist/components/Modal/Modal.d.ts +17 -0
- package/dist/components/Modal/Modal.d.ts.map +1 -0
- package/dist/components/Modal/index.d.ts +3 -0
- package/dist/components/Modal/index.d.ts.map +1 -0
- package/dist/components/Nav/Nav.d.ts +48 -0
- package/dist/components/Nav/Nav.d.ts.map +1 -0
- package/dist/components/Nav/index.d.ts +3 -0
- package/dist/components/Nav/index.d.ts.map +1 -0
- package/dist/components/Pagination/Pagination.d.ts +14 -0
- package/dist/components/Pagination/Pagination.d.ts.map +1 -0
- package/dist/components/Pagination/index.d.ts +3 -0
- package/dist/components/Pagination/index.d.ts.map +1 -0
- package/dist/components/Steps/Steps.d.ts +14 -0
- package/dist/components/Steps/Steps.d.ts.map +1 -0
- package/dist/components/Steps/index.d.ts +3 -0
- package/dist/components/Steps/index.d.ts.map +1 -0
- package/dist/components/Upload/Upload.d.ts +33 -0
- package/dist/components/Upload/Upload.d.ts.map +1 -0
- package/dist/components/Upload/index.d.ts +3 -0
- package/dist/components/Upload/index.d.ts.map +1 -0
- package/dist/components/index.d.ts +25 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/index.cjs.js +2 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.cjs10.js +2 -0
- package/dist/index.cjs10.js.map +1 -0
- package/dist/index.cjs11.js +2 -0
- package/dist/index.cjs11.js.map +1 -0
- package/dist/index.cjs12.js +2 -0
- package/dist/index.cjs12.js.map +1 -0
- package/dist/index.cjs13.js +2 -0
- package/dist/index.cjs13.js.map +1 -0
- package/dist/index.cjs14.js +2 -0
- package/dist/index.cjs14.js.map +1 -0
- package/dist/index.cjs15.js +2 -0
- package/dist/index.cjs15.js.map +1 -0
- package/dist/index.cjs16.js +2 -0
- package/dist/index.cjs16.js.map +1 -0
- package/dist/index.cjs17.js +2 -0
- package/dist/index.cjs17.js.map +1 -0
- package/dist/index.cjs18.js +2 -0
- package/dist/index.cjs18.js.map +1 -0
- package/dist/index.cjs19.js +2 -0
- package/dist/index.cjs19.js.map +1 -0
- package/dist/index.cjs2.js +2 -0
- package/dist/index.cjs2.js.map +1 -0
- package/dist/index.cjs20.js +2 -0
- package/dist/index.cjs20.js.map +1 -0
- package/dist/index.cjs21.js +2 -0
- package/dist/index.cjs21.js.map +1 -0
- package/dist/index.cjs22.js +2 -0
- package/dist/index.cjs22.js.map +1 -0
- package/dist/index.cjs23.js +2 -0
- package/dist/index.cjs23.js.map +1 -0
- package/dist/index.cjs3.js +2 -0
- package/dist/index.cjs3.js.map +1 -0
- package/dist/index.cjs4.js +2 -0
- package/dist/index.cjs4.js.map +1 -0
- package/dist/index.cjs5.js +2 -0
- package/dist/index.cjs5.js.map +1 -0
- package/dist/index.cjs6.js +2 -0
- package/dist/index.cjs6.js.map +1 -0
- package/dist/index.cjs7.js +2 -0
- package/dist/index.cjs7.js.map +1 -0
- package/dist/index.cjs8.js +2 -0
- package/dist/index.cjs8.js.map +1 -0
- package/dist/index.cjs9.js +2 -0
- package/dist/index.cjs9.js.map +1 -0
- package/dist/index.esm.js +27 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/index.esm10.js +238 -0
- package/dist/index.esm10.js.map +1 -0
- package/dist/index.esm11.js +177 -0
- package/dist/index.esm11.js.map +1 -0
- package/dist/index.esm12.js +93 -0
- package/dist/index.esm12.js.map +1 -0
- package/dist/index.esm13.js +222 -0
- package/dist/index.esm13.js.map +1 -0
- package/dist/index.esm14.js +26 -0
- package/dist/index.esm14.js.map +1 -0
- package/dist/index.esm15.js +34 -0
- package/dist/index.esm15.js.map +1 -0
- package/dist/index.esm16.js +64 -0
- package/dist/index.esm16.js.map +1 -0
- package/dist/index.esm17.js +64 -0
- package/dist/index.esm17.js.map +1 -0
- package/dist/index.esm18.js +42 -0
- package/dist/index.esm18.js.map +1 -0
- package/dist/index.esm19.js +26 -0
- package/dist/index.esm19.js.map +1 -0
- package/dist/index.esm2.js +98 -0
- package/dist/index.esm2.js.map +1 -0
- package/dist/index.esm20.js +24 -0
- package/dist/index.esm20.js.map +1 -0
- package/dist/index.esm21.js +52 -0
- package/dist/index.esm21.js.map +1 -0
- package/dist/index.esm22.js +26 -0
- package/dist/index.esm22.js.map +1 -0
- package/dist/index.esm23.js +106 -0
- package/dist/index.esm23.js.map +1 -0
- package/dist/index.esm3.js +62 -0
- package/dist/index.esm3.js.map +1 -0
- package/dist/index.esm4.js +115 -0
- package/dist/index.esm4.js.map +1 -0
- package/dist/index.esm5.js +69 -0
- package/dist/index.esm5.js.map +1 -0
- package/dist/index.esm6.js +37 -0
- package/dist/index.esm6.js.map +1 -0
- package/dist/index.esm7.js +182 -0
- package/dist/index.esm7.js.map +1 -0
- package/dist/index.esm8.js +69 -0
- package/dist/index.esm8.js.map +1 -0
- package/dist/index.esm9.js +78 -0
- package/dist/index.esm9.js.map +1 -0
- package/dist/tokens/colors.d.ts +122 -0
- package/dist/tokens/colors.d.ts.map +1 -0
- package/dist/tokens/index.d.ts +5 -0
- package/dist/tokens/index.d.ts.map +1 -0
- package/dist/tokens/typography.d.ts +66 -0
- package/dist/tokens/typography.d.ts.map +1 -0
- package/package.json +55 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs10.js","sources":["../components/Nav/Nav.tsx"],"sourcesContent":["import React from 'react';\nimport styles from './Nav.module.css';\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport interface NavItem {\n id: string;\n label: string;\n icon: React.ReactNode;\n href?: string;\n onClick?: () => void;\n}\n\nexport interface NavSection {\n title?: string;\n items: NavItem[];\n}\n\nexport interface NavMobileFooter {\n ctaLabel?: string;\n onCtaClick?: () => void;\n workspaceName?: string;\n workspaceIcon?: React.ReactNode;\n onWorkspaceClick?: () => void;\n userName?: string;\n userRole?: string;\n userAvatarUrl?: string;\n userInitials?: string;\n}\n\nexport interface NavProps {\n /** Visual type of the nav */\n type: 'open' | 'closed' | 'mobile';\n /** Navigation sections with items */\n sections: NavSection[];\n /** Currently active item id */\n activeId?: string;\n /** Called when an item is clicked (receives item.id) */\n onItemClick?: (id: string) => void;\n /** Called when collapse/expand button is clicked (Open/Closed only) */\n onCollapseToggle?: () => void;\n /** Bell icon click handler (Mobile only) */\n onBellClick?: () => void;\n /** Mobile header title (defaults to \"Menu\") */\n mobileTitle?: string;\n /** Mobile footer data */\n mobileFooter?: NavMobileFooter;\n /** Logo for the Open type (full logo) */\n logo?: React.ReactNode;\n /** Small logo icon shown in Closed + Mobile headers */\n logoIcon?: React.ReactNode;\n className?: string;\n}\n\n// ─── Inline SVG icons ─────────────────────────────────────────────────────────\n\nfunction IconChevronRight() {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M6 12l4-4-4-4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n}\n\nfunction IconChevronLeft() {\n return (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M13 15l-5-5 5-5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n}\n\nfunction IconChevronRight20() {\n return (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M7 15l5-5-5-5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n}\n\nfunction IconBell() {\n return (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9\" />\n <path d=\"M13.73 21a2 2 0 0 1-3.46 0\" />\n </svg>\n );\n}\n\nfunction DefaultLogoIcon() {\n return (\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" aria-hidden=\"true\">\n <rect width=\"32\" height=\"32\" rx=\"6\" fill=\"#0F6C13\" />\n <path d=\"M8 24 L16 8 L24 24\" stroke=\"#E7DA10\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M11 19h10\" stroke=\"#E7DA10\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n );\n}\n\n// ─── Sub-components ───────────────────────────────────────────────────────────\n\nfunction NavItemOpen({\n item,\n isActive,\n onClick,\n}: {\n item: NavItem;\n isActive: boolean;\n onClick: () => void;\n}) {\n const itemClass = [\n styles.item,\n styles.itemOpen,\n isActive ? styles.itemOpenActive : '',\n ]\n .filter(Boolean)\n .join(' ');\n\n const labelClass = [\n styles.itemLabel,\n isActive ? styles.itemLabelActive : styles.itemLabelDefault,\n ].join(' ');\n\n return (\n <button\n type=\"button\"\n className={itemClass}\n onClick={onClick}\n aria-current={isActive ? 'page' : undefined}\n >\n <span className={[styles.itemIcon, styles.itemIconDark].join(' ')}>\n {item.icon}\n </span>\n <span className={labelClass}>{item.label}</span>\n </button>\n );\n}\n\nfunction NavItemClosed({\n item,\n isActive,\n onClick,\n}: {\n item: NavItem;\n isActive: boolean;\n onClick: () => void;\n}) {\n const itemClass = [\n styles.item,\n styles.itemClosed,\n isActive ? styles.itemClosedActive : '',\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <button\n type=\"button\"\n className={itemClass}\n onClick={onClick}\n aria-label={item.label}\n aria-current={isActive ? 'page' : undefined}\n title={item.label}\n >\n <span className={[styles.itemIcon, styles.itemIconDark].join(' ')}>\n {item.icon}\n </span>\n </button>\n );\n}\n\nfunction NavItemMobile({\n item,\n isActive,\n onClick,\n}: {\n item: NavItem;\n isActive: boolean;\n onClick: () => void;\n}) {\n const itemClass = [\n styles.item,\n styles.itemMobile,\n isActive ? styles.itemMobileActive : '',\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <button\n type=\"button\"\n className={itemClass}\n onClick={onClick}\n aria-current={isActive ? 'page' : undefined}\n >\n <span className={[styles.itemIcon, styles.itemIconLight].join(' ')}>\n {item.icon}\n </span>\n <span className={[styles.itemLabel, styles.itemLabelMobile].join(' ')}>\n {item.label}\n </span>\n <span className={styles.chevron}>\n <IconChevronRight />\n </span>\n </button>\n );\n}\n\n// ─── Main component ───────────────────────────────────────────────────────────\n\nexport function Nav({\n type,\n sections,\n activeId,\n onItemClick,\n onCollapseToggle,\n onBellClick,\n mobileTitle = 'Menu',\n mobileFooter,\n logo,\n logoIcon,\n className,\n}: NavProps) {\n const resolvedLogoIcon = logoIcon ?? <DefaultLogoIcon />;\n\n const navClass = [\n styles.nav,\n type === 'open' ? styles.navOpen : '',\n type === 'closed' ? styles.navClosed : '',\n type === 'mobile' ? styles.navMobile : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n // ── Open ──────────────────────────────────────────────────────────────────\n if (type === 'open') {\n return (\n <nav className={navClass} aria-label=\"Main navigation\">\n {/* Header */}\n <div className={[styles.header, styles.headerOpen].join(' ')}>\n <div className={styles.logoIcon}>{resolvedLogoIcon}</div>\n {logo && <div className={styles.logoFull}>{logo}</div>}\n </div>\n\n {/* Links */}\n <div className={[styles.links, styles.linksOpen].join(' ')}>\n {sections.map((section, si) => (\n <div key={si} className={styles.section}>\n {section.title && (\n <p className={styles.sectionTitle}>{section.title}</p>\n )}\n <div className={styles.sectionItems}>\n {section.items.map((item) => (\n <NavItemOpen\n key={item.id}\n item={item}\n isActive={item.id === activeId}\n onClick={() => onItemClick?.(item.id)}\n />\n ))}\n </div>\n </div>\n ))}\n </div>\n\n {/* Footer: collapse */}\n <div className={styles.footer}>\n <button\n type=\"button\"\n className={styles.collapseBtn}\n onClick={onCollapseToggle}\n >\n <span className={styles.collapseBtnIcon}>\n <IconChevronLeft />\n </span>\n Recolher menu\n </button>\n </div>\n </nav>\n );\n }\n\n // ── Closed ────────────────────────────────────────────────────────────────\n if (type === 'closed') {\n return (\n <nav className={navClass} aria-label=\"Main navigation\">\n {/* Header */}\n <div className={[styles.header, styles.headerClosed].join(' ')}>\n <div className={styles.logoIcon}>{resolvedLogoIcon}</div>\n </div>\n\n {/* Links */}\n <div className={[styles.links, styles.linksClosed].join(' ')}>\n {sections.map((section, si) => (\n <div key={si} className={styles.section}>\n <div className={styles.sectionItems}>\n {section.items.map((item) => (\n <NavItemClosed\n key={item.id}\n item={item}\n isActive={item.id === activeId}\n onClick={() => onItemClick?.(item.id)}\n />\n ))}\n </div>\n </div>\n ))}\n </div>\n\n {/* Footer: expand */}\n <div className={styles.footer}>\n <button\n type=\"button\"\n className={[styles.collapseBtn, styles.collapseBtnClosed].join(' ')}\n onClick={onCollapseToggle}\n aria-label=\"Expand menu\"\n title=\"Expandir menu\"\n >\n <span className={styles.collapseBtnIcon}>\n <IconChevronRight20 />\n </span>\n </button>\n </div>\n </nav>\n );\n }\n\n // ── Mobile ────────────────────────────────────────────────────────────────\n return (\n <nav className={navClass} aria-label=\"Main navigation\">\n {/* Header */}\n <div className={[styles.header, styles.headerMobile].join(' ')}>\n <div className={styles.logoIcon}>{resolvedLogoIcon}</div>\n <h2 className={styles.headerTitle}>{mobileTitle}</h2>\n <div className={styles.headerActions}>\n <button\n type=\"button\"\n className={styles.bellBtn}\n onClick={onBellClick}\n aria-label=\"Notifications\"\n >\n <IconBell />\n </button>\n </div>\n </div>\n\n {/* Links */}\n <div className={[styles.links, styles.linksMobile].join(' ')}>\n {sections.map((section, si) => (\n <div key={si} className={styles.section}>\n <div className={styles.sectionItems}>\n {section.items.map((item) => (\n <NavItemMobile\n key={item.id}\n item={item}\n isActive={item.id === activeId}\n onClick={() => onItemClick?.(item.id)}\n />\n ))}\n </div>\n </div>\n ))}\n </div>\n\n {/* Footer: CTA + workspace + avatar */}\n {mobileFooter && (\n <div className={styles.footerMobile}>\n {mobileFooter.ctaLabel && (\n <button\n type=\"button\"\n className={styles.ctaBtn}\n onClick={mobileFooter.onCtaClick}\n >\n {mobileFooter.ctaLabel}\n </button>\n )}\n\n {mobileFooter.workspaceName && (\n <button\n type=\"button\"\n className={styles.workspace}\n onClick={mobileFooter.onWorkspaceClick}\n >\n <div className={styles.workspaceIcon}>\n {mobileFooter.workspaceIcon ?? <DefaultLogoIcon />}\n </div>\n <span className={styles.workspaceLabel}>\n {mobileFooter.workspaceName}\n </span>\n <span style={{ color: '#9490AC', display: 'flex' }}>\n <IconChevronRight />\n </span>\n </button>\n )}\n\n {(mobileFooter.userName || mobileFooter.userInitials) && (\n <div className={styles.avatarRow}>\n <div className={styles.avatar}>\n {mobileFooter.userAvatarUrl ? (\n <img\n src={mobileFooter.userAvatarUrl}\n alt={mobileFooter.userName ?? ''}\n style={{ width: '100%', height: '100%', objectFit: 'cover' }}\n />\n ) : (\n <span className={styles.avatarInitials}>\n {mobileFooter.userInitials ?? '?'}\n </span>\n )}\n </div>\n <div className={styles.avatarInfo}>\n {mobileFooter.userName && (\n <span className={styles.avatarName}>{mobileFooter.userName}</span>\n )}\n {mobileFooter.userRole && (\n <span className={styles.avatarRole}>{mobileFooter.userRole}</span>\n )}\n </div>\n </div>\n )}\n </div>\n )}\n </nav>\n );\n}\n"],"names":["IconChevronRight","jsx","IconChevronLeft","IconChevronRight20","IconBell","DefaultLogoIcon","jsxs","NavItemOpen","item","isActive","onClick","itemClass","styles","labelClass","NavItemClosed","NavItemMobile","Nav","type","sections","activeId","onItemClick","onCollapseToggle","onBellClick","mobileTitle","mobileFooter","logo","logoIcon","className","resolvedLogoIcon","navClass","section","si"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("react/jsx-runtime"),s=require("./index.cjs20.js"),f={xs:12,md:20,lg:24},b=({s:n})=>i.jsxs("svg",{width:n,height:n,viewBox:"0 0 12 12",fill:"currentColor","aria-hidden":"true",children:[i.jsx("circle",{cx:"2",cy:"6",r:"1.25"}),i.jsx("circle",{cx:"6",cy:"6",r:"1.25"}),i.jsx("circle",{cx:"10",cy:"6",r:"1.25"})]}),p=({s:n})=>i.jsx("svg",{width:n,height:n,viewBox:"0 0 12 12",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:i.jsx("polyline",{points:"7.5,2 4,6 7.5,10"})}),k=({s:n})=>i.jsx("svg",{width:n,height:n,viewBox:"0 0 12 12",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:i.jsx("polyline",{points:"4.5,2 8,6 4.5,10"})}),v=({s:n})=>i.jsxs("svg",{width:n,height:n,viewBox:"0 0 12 12",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[i.jsx("polyline",{points:"6.5,2 3,6 6.5,10"}),i.jsx("polyline",{points:"9.5,2 6,6 9.5,10"})]}),y=({s:n})=>i.jsxs("svg",{width:n,height:n,viewBox:"0 0 12 12",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[i.jsx("polyline",{points:"2.5,2 6,6 2.5,10"}),i.jsx("polyline",{points:"5.5,2 9,6 5.5,10"})]});function m(n,e){return e<=7?Array.from({length:e},(t,c)=>c+1):n<=4?[1,2,3,4,5,"…",e]:n>=e-3?[1,"…",e-4,e-3,e-2,e-1,e]:[1,"…",n-1,n,n+1,"…",e]}function C({sizes:n="xs",currentPage:e=1,totalPages:t=10,withControls:c=!1,withEdges:u=!1,onChange:a,className:h}){const l=f[n],x=m(e,t),d=o=>{o<1||o>t||o===e||a==null||a(o)},r=o=>[s.default.item,s.default[n],o].filter(Boolean).join(" ");return i.jsxs("nav",{role:"navigation","aria-label":"Pagination",className:[s.default.pagination,h].filter(Boolean).join(" "),children:[u&&i.jsx("button",{className:r(s.default.control),onClick:()=>d(1),disabled:e===1,"aria-label":"First page",type:"button",children:i.jsx(v,{s:l})}),c&&i.jsx("button",{className:r(s.default.control),onClick:()=>d(e-1),disabled:e===1,"aria-label":"Previous page",type:"button",children:i.jsx(p,{s:l})}),x.map((o,j)=>o==="…"?i.jsx("span",{className:r(s.default.dots),"aria-hidden":"true",children:i.jsx(b,{s:l})},`dots-${j}`):i.jsx("button",{className:r(o===e?s.default.active:s.default.inactive),onClick:()=>d(o),"aria-label":`Page ${o}`,"aria-current":o===e?"page":void 0,type:"button",children:o},o)),c&&i.jsx("button",{className:r(s.default.control),onClick:()=>d(e+1),disabled:e===t,"aria-label":"Next page",type:"button",children:i.jsx(k,{s:l})}),u&&i.jsx("button",{className:r(s.default.control),onClick:()=>d(t),disabled:e===t,"aria-label":"Last page",type:"button",children:i.jsx(y,{s:l})})]})}exports.Pagination=C;
|
|
2
|
+
//# sourceMappingURL=index.cjs11.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs11.js","sources":["../components/Pagination/Pagination.tsx"],"sourcesContent":["import React from 'react';\nimport styles from './Pagination.module.css';\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport type PaginationSize = 'xs' | 'md' | 'lg';\n\nexport interface PaginationProps {\n sizes?: PaginationSize;\n currentPage?: number;\n totalPages?: number;\n /** Show previous / next chevron buttons */\n withControls?: boolean;\n /** Show first / last double-chevron buttons */\n withEdges?: boolean;\n onChange?: (page: number) => void;\n className?: string;\n}\n\n// ─── Icon size lookup (xs=12, md=20, lg=24 — from Figma) ─────────────────────\n\nconst ICON_SIZE: Record<PaginationSize, number> = { xs: 12, md: 20, lg: 24 };\n\n// ─── SVG icons (inline, no external dependency) ──────────────────────────────\n\nconst IconDots = ({ s }: { s: number }) => (\n <svg width={s} height={s} viewBox=\"0 0 12 12\" fill=\"currentColor\" aria-hidden=\"true\">\n {/* System/Dots — 3 horizontal dots */}\n <circle cx=\"2\" cy=\"6\" r=\"1.25\" />\n <circle cx=\"6\" cy=\"6\" r=\"1.25\" />\n <circle cx=\"10\" cy=\"6\" r=\"1.25\" />\n </svg>\n);\n\nconst IconChevronLeft = ({ s }: { s: number }) => (\n // Arrows/Chevron Left — single chevron «\n <svg width={s} height={s} viewBox=\"0 0 12 12\" fill=\"none\" stroke=\"currentColor\"\n strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <polyline points=\"7.5,2 4,6 7.5,10\" />\n </svg>\n);\n\nconst IconChevronRight = ({ s }: { s: number }) => (\n // Arrows/Chevron Right — single chevron »\n <svg width={s} height={s} viewBox=\"0 0 12 12\" fill=\"none\" stroke=\"currentColor\"\n strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <polyline points=\"4.5,2 8,6 4.5,10\" />\n </svg>\n);\n\nconst IconChevronsLeft = ({ s }: { s: number }) => (\n // Arrows/Chevrons Left — double chevron «\n <svg width={s} height={s} viewBox=\"0 0 12 12\" fill=\"none\" stroke=\"currentColor\"\n strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <polyline points=\"6.5,2 3,6 6.5,10\" />\n <polyline points=\"9.5,2 6,6 9.5,10\" />\n </svg>\n);\n\nconst IconChevronsRight = ({ s }: { s: number }) => (\n // Arrows/Chevrons Right — double chevron »\n <svg width={s} height={s} viewBox=\"0 0 12 12\" fill=\"none\" stroke=\"currentColor\"\n strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <polyline points=\"2.5,2 6,6 2.5,10\" />\n <polyline points=\"5.5,2 9,6 5.5,10\" />\n </svg>\n);\n\n// ─── Page range algorithm ─────────────────────────────────────────────────────\n// Produces an array like: [1, 2, 3, 4, 5, '…', 10]\n// or: [1, '…', 4, 5, 6, '…', 10]\n// Matches the Figma design: first 5 visible, dots, last page\n\ntype PageItem = number | '…';\n\nfunction buildRange(current: number, total: number): PageItem[] {\n if (total <= 7) {\n return Array.from({ length: total }, (_, i) => i + 1);\n }\n\n // Near the start — show first 5, dots, last\n if (current <= 4) {\n return [1, 2, 3, 4, 5, '…', total];\n }\n\n // Near the end — show first, dots, last 5\n if (current >= total - 3) {\n return [1, '…', total - 4, total - 3, total - 2, total - 1, total];\n }\n\n // Middle — first, dots, (current-1), current, (current+1), dots, last\n return [1, '…', current - 1, current, current + 1, '…', total];\n}\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\nexport function Pagination({\n sizes = 'xs',\n currentPage = 1,\n totalPages = 10,\n withControls = false,\n withEdges = false,\n onChange,\n className,\n}: PaginationProps) {\n const iconSize = ICON_SIZE[sizes];\n const pages = buildRange(currentPage, totalPages);\n\n const go = (page: number) => {\n if (page < 1 || page > totalPages || page === currentPage) return;\n onChange?.(page);\n };\n\n const itemClass = (extra: string) =>\n [styles.item, styles[sizes], extra].filter(Boolean).join(' ');\n\n return (\n <nav\n role=\"navigation\"\n aria-label=\"Pagination\"\n className={[styles.pagination, className].filter(Boolean).join(' ')}\n >\n {/* First page button («) */}\n {withEdges && (\n <button\n className={itemClass(styles.control)}\n onClick={() => go(1)}\n disabled={currentPage === 1}\n aria-label=\"First page\"\n type=\"button\"\n >\n <IconChevronsLeft s={iconSize} />\n </button>\n )}\n\n {/* Previous button (‹) */}\n {withControls && (\n <button\n className={itemClass(styles.control)}\n onClick={() => go(currentPage - 1)}\n disabled={currentPage === 1}\n aria-label=\"Previous page\"\n type=\"button\"\n >\n <IconChevronLeft s={iconSize} />\n </button>\n )}\n\n {/* Page numbers + dots */}\n {pages.map((page, i) =>\n page === '…' ? (\n <span\n key={`dots-${i}`}\n className={itemClass(styles.dots)}\n aria-hidden=\"true\"\n >\n <IconDots s={iconSize} />\n </span>\n ) : (\n <button\n key={page}\n className={itemClass(page === currentPage ? styles.active : styles.inactive)}\n onClick={() => go(page)}\n aria-label={`Page ${page}`}\n aria-current={page === currentPage ? 'page' : undefined}\n type=\"button\"\n >\n {page}\n </button>\n )\n )}\n\n {/* Next button (›) */}\n {withControls && (\n <button\n className={itemClass(styles.control)}\n onClick={() => go(currentPage + 1)}\n disabled={currentPage === totalPages}\n aria-label=\"Next page\"\n type=\"button\"\n >\n <IconChevronRight s={iconSize} />\n </button>\n )}\n\n {/* Last page button (») */}\n {withEdges && (\n <button\n className={itemClass(styles.control)}\n onClick={() => go(totalPages)}\n disabled={currentPage === totalPages}\n aria-label=\"Last page\"\n type=\"button\"\n >\n <IconChevronsRight s={iconSize} />\n </button>\n )}\n </nav>\n );\n}\n"],"names":["ICON_SIZE","IconDots","s","jsx","IconChevronLeft","IconChevronRight","IconChevronsLeft","jsxs","IconChevronsRight","buildRange","current","total","_","i","Pagination","sizes","currentPage","totalPages","withControls","withEdges","onChange","className","iconSize","pages","go","page","itemClass","extra","styles"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),v=require("react"),e=require("./index.cjs21.js");function f(n,a){return n<a?"Complete":n===a?"Active":"Default"}function x(n,a){return n===0?"Start":n===a-1?"End":"Step"}function C(){return t.jsxs("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[t.jsx("polyline",{points:"2,12.5 6,16.5 13,9.5"}),t.jsx("polyline",{points:"9,12.5 13,16.5 21,9.5"})]})}function S({steps:n,current:a}){return t.jsx("div",{className:e.default.minified,role:"list","aria-label":"Steps",children:n.map((u,r)=>{const l=f(r,a),o=r===n.length-1,c=[e.default.minDot,l==="Default"?e.default.minDefault:"",l==="Active"?e.default.minActive:"",l==="Complete"?e.default.minComplete:""].filter(Boolean).join(" "),s=[e.default.minConnector,l==="Complete"?e.default.minConnectorComplete:e.default.minConnectorDefault].join(" ");return t.jsxs(v.Fragment,{children:[t.jsx("div",{role:"listitem",className:c,"aria-label":`Step ${r+1}: ${u.label}${l==="Active"?" (current)":l==="Complete"?" (completed)":""}`,"aria-current":l==="Active"?"step":void 0}),!o&&t.jsx("div",{className:s,"aria-hidden":"true"})]},r)})})}function g({steps:n,current:a,minified:u=!1,className:r}){const l=[e.default.steps,r].filter(Boolean).join(" ");if(u)return t.jsx("div",{className:l,children:t.jsx(S,{steps:n,current:a})});const o=n.length;return t.jsx("nav",{className:l,"aria-label":"Steps",children:n.map((c,s)=>{const i=f(s,a),m=x(s,o),p=i==="Active"||i==="Complete",j=o-s,h=[e.default.item,e.default[`type${m}`],e.default[`state${i}`]].join(" "),d=p?e.default.textLight:e.default.textDark;return t.jsxs("div",{className:h,style:{zIndex:j},role:"listitem","aria-current":i==="Active"?"step":void 0,"aria-label":`Step ${s+1} of ${o}: ${c.label}${i==="Active"?" (current)":i==="Complete"?" (completed)":""}`,children:[t.jsx("span",{className:[e.default.label,d].join(" "),children:c.label}),i==="Complete"?t.jsx("span",{className:[e.default.checkIcon,d].join(" "),children:t.jsx(C,{})}):t.jsx("span",{className:[e.default.num,d].join(" "),children:String(s+1).padStart(2,"0")})]},s)})})}exports.Steps=g;
|
|
2
|
+
//# sourceMappingURL=index.cjs12.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs12.js","sources":["../components/Steps/Steps.tsx"],"sourcesContent":["import React from 'react';\nimport styles from './Steps.module.css';\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport interface StepItem {\n label: string;\n description?: string;\n}\n\nexport interface StepsProps {\n steps: StepItem[];\n /** 0-based index of the currently active step */\n current: number;\n /** Compact dot version — for mobile or tight spaces */\n minified?: boolean;\n className?: string;\n}\n\ntype StepState = 'Default' | 'Active' | 'Complete';\ntype StepType = 'Start' | 'Step' | 'End';\n\n// ─── Helpers ──────────────────────────────────────────────────────────────────\n\nfunction getState(index: number, current: number): StepState {\n if (index < current) return 'Complete';\n if (index === current) return 'Active';\n return 'Default';\n}\n\nfunction getType(index: number, total: number): StepType {\n if (index === 0) return 'Start';\n if (index === total - 1) return 'End';\n return 'Step';\n}\n\n// ─── Double-check icon (tabler:checks) — inline SVG ──────────────────────────\n\nfunction IconChecks() {\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n {/* left check */}\n <polyline points=\"2,12.5 6,16.5 13,9.5\" />\n {/* right check (shifted) */}\n <polyline points=\"9,12.5 13,16.5 21,9.5\" />\n </svg>\n );\n}\n\n// ─── Minified (dots) version ──────────────────────────────────────────────────\n\nfunction MinifiedSteps({ steps, current }: Pick<StepsProps, 'steps' | 'current'>) {\n return (\n <div className={styles.minified} role=\"list\" aria-label=\"Steps\">\n {steps.map((step, i) => {\n const state = getState(i, current);\n const isLast = i === steps.length - 1;\n\n const dotClass = [\n styles.minDot,\n state === 'Default' ? styles.minDefault : '',\n state === 'Active' ? styles.minActive : '',\n state === 'Complete' ? styles.minComplete : '',\n ]\n .filter(Boolean)\n .join(' ');\n\n // Connector color: complete if the step TO THE LEFT is complete\n const connectorClass = [\n styles.minConnector,\n state === 'Complete' ? styles.minConnectorComplete : styles.minConnectorDefault,\n ].join(' ');\n\n return (\n <React.Fragment key={i}>\n <div\n role=\"listitem\"\n className={dotClass}\n aria-label={`Step ${i + 1}: ${step.label}${\n state === 'Active' ? ' (current)' : state === 'Complete' ? ' (completed)' : ''\n }`}\n aria-current={state === 'Active' ? 'step' : undefined}\n />\n {!isLast && <div className={connectorClass} aria-hidden=\"true\" />}\n </React.Fragment>\n );\n })}\n </div>\n );\n}\n\n// ─── Full Steps ───────────────────────────────────────────────────────────────\n\nexport function Steps({ steps, current, minified = false, className }: StepsProps) {\n const wrapperClass = [styles.steps, className].filter(Boolean).join(' ');\n\n if (minified) {\n return (\n <div className={wrapperClass}>\n <MinifiedSteps steps={steps} current={current} />\n </div>\n );\n }\n\n const total = steps.length;\n\n return (\n <nav\n className={wrapperClass}\n aria-label=\"Steps\"\n >\n {steps.map((step, i) => {\n const state = getState(i, current);\n const type = getType(i, total);\n const isLight = state === 'Active' || state === 'Complete';\n\n /*\n * z-index stacking: first item (Start) is highest.\n * Its arrow paints on top of the next item's notch,\n * creating the connected-chevron effect.\n */\n const zIndex = total - i;\n\n const itemClass = [\n styles.item,\n styles[`type${type}`],\n styles[`state${state}`],\n ].join(' ');\n\n const textClass = isLight ? styles.textLight : styles.textDark;\n\n return (\n <div\n key={i}\n className={itemClass}\n style={{ zIndex }}\n role=\"listitem\"\n aria-current={state === 'Active' ? 'step' : undefined}\n aria-label={`Step ${i + 1} of ${total}: ${step.label}${\n state === 'Active' ? ' (current)' : state === 'Complete' ? ' (completed)' : ''\n }`}\n >\n {/* Label */}\n <span className={[styles.label, textClass].join(' ')}>\n {step.label}\n </span>\n\n {/* Number (Default / Active) or check icon (Complete) */}\n {state === 'Complete' ? (\n <span className={[styles.checkIcon, textClass].join(' ')}>\n <IconChecks />\n </span>\n ) : (\n <span className={[styles.num, textClass].join(' ')}>\n {String(i + 1).padStart(2, '0')}\n </span>\n )}\n </div>\n );\n })}\n </nav>\n );\n}\n"],"names":["getState","index","current","getType","total","IconChecks","jsxs","jsx","MinifiedSteps","steps","styles","step","i","state","isLast","dotClass","connectorClass","React","Steps","minified","className","wrapperClass","type","isLight","zIndex","itemClass","textClass"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),j=require("react"),t=require("./index.cjs16.js"),C=()=>e.jsxs("svg",{viewBox:"0 0 12 12",width:"12",height:"12","aria-hidden":"true",children:[e.jsx("defs",{children:e.jsxs("linearGradient",{id:"fileGrad",x1:"0%",y1:"100%",x2:"100%",y2:"0%",children:[e.jsx("stop",{offset:"0%",stopColor:"#2970FF"}),e.jsx("stop",{offset:"100%",stopColor:"#0040C1"})]})}),e.jsx("path",{fill:"url(#fileGrad)",d:"M2 0h5.5L10 2.5V12H2V0zm5 0v3h3L7 0zM3 5h6v1H3V5zm0 2h6v1H3V7zm0 2h4v1H3V9z"})]}),L=()=>e.jsx("svg",{viewBox:"0 0 12 12",width:"12",height:"12",fill:"currentColor","aria-hidden":"true",children:e.jsx("path",{d:"M8.707.293a1 1 0 0 1 1.414 0l1.586 1.586a1 1 0 0 1 0 1.414L9.414 5.1 6.9 2.586 8.707.293zM0 9.5V12h2.5l7-7L7 2.5l-7 7zM1.5 10.5v-.793l5.5-5.5.793.793-5.5 5.5H1.5z"})}),w=()=>e.jsx("svg",{viewBox:"0 0 12 12",width:"12",height:"12",fill:"currentColor","aria-hidden":"true",children:e.jsx("path",{d:"M6 2C3.27 2 1 4 1 6s2.27 4 5 4 5-2 5-4-2.27-4-5-4zm0 7a3 3 0 1 1 0-6 3 3 0 0 1 0 6zm0-5a2 2 0 1 0 0 4 2 2 0 0 0 0-4z"})}),y=()=>e.jsx("svg",{viewBox:"0 0 12 12",width:"12",height:"12",fill:"currentColor","aria-hidden":"true",children:e.jsx("path",{d:"M4 1V0h4v1h3v1H1V1h3zM2 3h8l-.8 8H2.8L2 3zm2 1v6h1V4H4zm2 0v6h1V4H6z"})}),b=()=>e.jsxs("svg",{width:"32",height:"32",viewBox:"0 0 32 32",fill:"none","aria-hidden":"true",children:[e.jsx("rect",{x:"18",y:"10",width:"10",height:"13",rx:"1.5",fill:"#DBE8FF",stroke:"#B2C9FF",strokeWidth:"0.5",transform:"rotate(12 18 10)"}),e.jsx("rect",{x:"4",y:"10",width:"10",height:"13",rx:"1.5",fill:"#DBE8FF",stroke:"#B2C9FF",strokeWidth:"0.5",transform:"rotate(-12 4 10)"}),e.jsx("rect",{x:"10",y:"7",width:"12",height:"16",rx:"1.5",fill:"#FFFFFF",stroke:"#B2C9FF",strokeWidth:"1"}),e.jsx("path",{d:"M13 12h6M13 15h6M13 18h4",stroke:"#B2C9FF",strokeWidth:"1",strokeLinecap:"round"}),e.jsx("circle",{cx:"23",cy:"23",r:"5",fill:"#2970FF"}),e.jsx("path",{d:"M23 26v-6M20.5 22.5L23 20l2.5 2.5",stroke:"#FFF",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]}),D=()=>e.jsxs("svg",{width:"96",height:"64",viewBox:"0 0 96 64",fill:"none","aria-hidden":"true",children:[e.jsxs("g",{transform:"rotate(15 70 35)",children:[e.jsx("rect",{x:"55",y:"18",width:"28",height:"36",rx:"3",fill:"#DBE8FF",stroke:"#B2C9FF",strokeWidth:"1"}),e.jsx("path",{d:"M61 28h16M61 34h16M61 40h10",stroke:"#B2C9FF",strokeWidth:"1.5",strokeLinecap:"round"})]}),e.jsxs("g",{transform:"rotate(-15 26 35)",children:[e.jsx("rect",{x:"13",y:"18",width:"28",height:"36",rx:"3",fill:"#DBE8FF",stroke:"#B2C9FF",strokeWidth:"1"}),e.jsx("path",{d:"M19 28h16M19 34h16M19 40h10",stroke:"#B2C9FF",strokeWidth:"1.5",strokeLinecap:"round"})]}),e.jsx("rect",{x:"30",y:"8",width:"36",height:"48",rx:"3",fill:"#FFFFFF",stroke:"#B2C9FF",strokeWidth:"1.5"}),e.jsx("path",{d:"M38 22h20M38 30h20M38 38h14",stroke:"#B2C9FF",strokeWidth:"1.5",strokeLinecap:"round"}),e.jsx("circle",{cx:"76",cy:"50",r:"10",fill:"#2970FF"}),e.jsx("path",{d:"M76 55v-10M71 48l5-5 5 5",stroke:"#FFF",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]});function I({file:s,size:i,onEdit:d,onPreview:l,onRemove:a}){const o=s.state==="loading"||s.indicator==="loader",h=i==="LG"&&s.indicator!=="loader";return e.jsxs("div",{className:[t.default.fileItem,i==="LG"?t.default.fileItemLg:t.default.fileItemMd].join(" "),children:[e.jsx("div",{className:t.default.fileBadge,children:e.jsx(C,{})}),e.jsxs("div",{className:t.default.fileContent,children:[e.jsxs("div",{className:t.default.fileHeader,children:[e.jsxs("div",{className:t.default.fileTexts,children:[e.jsx("p",{className:t.default.fileName,children:s.name}),e.jsx("p",{className:t.default.fileSize,children:s.size})]}),o?e.jsx("div",{className:t.default.spinner,role:"status","aria-label":"Uploading…"}):e.jsxs("div",{className:t.default.actions,children:[e.jsx("button",{className:t.default.actionBtn,onClick:()=>d==null?void 0:d(s.id),"aria-label":`Edit ${s.name}`,type:"button",children:e.jsx(L,{})}),e.jsx("button",{className:t.default.actionBtn,onClick:()=>l==null?void 0:l(s.id),"aria-label":`Preview ${s.name}`,type:"button",children:e.jsx(w,{})}),e.jsx("button",{className:t.default.actionBtn,onClick:()=>a==null?void 0:a(s.id),"aria-label":`Remove ${s.name}`,type:"button",children:e.jsx(y,{})})]})]}),h&&e.jsxs("div",{className:t.default.progressRow,children:[e.jsx("div",{className:t.default.progressTrack,children:e.jsx("div",{className:t.default.progressFill,style:{width:`${Math.min(100,Math.max(0,s.progress))}%`},role:"progressbar","aria-valuenow":s.progress,"aria-valuemin":0,"aria-valuemax":100})}),e.jsxs("p",{className:t.default.progressLabel,children:[s.progress,"%"]})]})]})]})}function W({size:s="LG",type:i="multiple",status:d="default",files:l=[],onDrop:a,onRemove:o,onEdit:h,onPreview:p,accept:g,className:m}){const x=j.useRef(null),[F,c]=j.useState(!1),v=r=>{r.preventDefault(),c(!0)},k=r=>{r.preventDefault(),c(!1)},M=r=>{r.preventDefault(),c(!1);const n=Array.from(r.dataTransfer.files);n.length&&(a==null||a(n))},N=r=>{const n=Array.from(r.target.files??[]);n.length&&(a==null||a(n)),r.target.value=""},u=()=>{var r;return(r=x.current)==null?void 0:r.click()},B=i==="single"&&d==="active"&&l.length>0,z=[t.default.dropzone,s==="MD"?t.default.dropzoneMd:t.default.dropzoneLg,F?t.default.dropzoneDragging:""].filter(Boolean).join(" "),f=i==="multiple"?"Drop your files here, or":"Drop your file here, or";return e.jsxs("div",{className:[t.default.wrapper,m].filter(Boolean).join(" "),children:[e.jsx("input",{ref:x,type:"file",multiple:i==="multiple",accept:g,onChange:N,style:{display:"none"},"aria-hidden":"true",tabIndex:-1}),!B&&e.jsxs("div",{className:z,onClick:u,onDragOver:v,onDragLeave:k,onDrop:M,role:"button",tabIndex:0,"aria-label":`${f} browse`,onKeyDown:r=>{(r.key===" "||r.key==="Enter")&&u()},children:[s==="MD"?e.jsx("div",{className:t.default.dropzoneIconMd,children:e.jsx(b,{})}):e.jsx("div",{className:t.default.dropzoneIconLg,children:e.jsx(D,{})}),e.jsxs("div",{className:t.default.dropzoneContent,children:[e.jsxs("div",{className:t.default.dropzoneTitleRow,children:[e.jsx("p",{className:t.default.dropzoneTitle,children:f}),e.jsx("span",{className:t.default.dropzoneBrowse,"aria-hidden":"true",children:"browse"})]}),e.jsx("p",{className:t.default.dropzoneSubtitle,children:"JPG, PNG, PDF (Max 800×400px – 2Mo)"})]})]}),d==="active"&&l.length>0&&e.jsx("div",{className:t.default.fileList,children:l.map(r=>e.jsx(I,{file:r,size:s,onEdit:h,onPreview:p,onRemove:o},r.id))})]})}exports.Upload=W;
|
|
2
|
+
//# sourceMappingURL=index.cjs13.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs13.js","sources":["../components/Upload/Upload.tsx"],"sourcesContent":["import React, { useRef, useState } from 'react';\nimport styles from './Upload.module.css';\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport type UploadSize = 'MD' | 'LG';\nexport type UploadType = 'single' | 'multiple';\nexport type UploadStatus = 'default' | 'active';\nexport type UploadFileState = 'loading' | 'loaded' | 'error';\nexport type UploadIndicator = 'loader' | 'progress-bar';\n\nexport interface UploadFile {\n id: string;\n name: string;\n size: string;\n /** 0–100 */\n progress: number;\n state: UploadFileState;\n /** 'loader' shows spinner · 'progress-bar' shows progress (LG only) */\n indicator?: UploadIndicator;\n}\n\nexport interface UploadProps {\n size?: UploadSize;\n type?: UploadType;\n /** 'default' = drop area only · 'active' = files listed */\n status?: UploadStatus;\n files?: UploadFile[];\n onDrop?: (files: File[]) => void;\n onRemove?: (id: string) => void;\n onEdit?: (id: string) => void;\n onPreview?: (id: string) => void;\n /** Native accept attribute, e.g. \".pdf,.png,.jpg\" */\n accept?: string;\n /** Max file size in bytes */\n maxSize?: number;\n className?: string;\n}\n\n// ─── SVG icons (inline, no external dependency) ──────────────────────────────\n\nconst IconFile = () => (\n <svg viewBox=\"0 0 12 12\" width=\"12\" height=\"12\" aria-hidden=\"true\">\n <defs>\n <linearGradient id=\"fileGrad\" x1=\"0%\" y1=\"100%\" x2=\"100%\" y2=\"0%\">\n {/* Figma: linear-gradient(63.88deg, #2970FF 0.2%, #0040C1 99.99%) */}\n <stop offset=\"0%\" stopColor=\"#2970FF\" />\n <stop offset=\"100%\" stopColor=\"#0040C1\" />\n </linearGradient>\n </defs>\n <path\n fill=\"url(#fileGrad)\"\n d=\"M2 0h5.5L10 2.5V12H2V0zm5 0v3h3L7 0zM3 5h6v1H3V5zm0 2h6v1H3V7zm0 2h4v1H3V9z\"\n />\n </svg>\n);\n\nconst IconPen = () => (\n <svg viewBox=\"0 0 12 12\" width=\"12\" height=\"12\" fill=\"currentColor\" aria-hidden=\"true\">\n <path d=\"M8.707.293a1 1 0 0 1 1.414 0l1.586 1.586a1 1 0 0 1 0 1.414L9.414 5.1 6.9 2.586 8.707.293zM0 9.5V12h2.5l7-7L7 2.5l-7 7zM1.5 10.5v-.793l5.5-5.5.793.793-5.5 5.5H1.5z\" />\n </svg>\n);\n\nconst IconEye = () => (\n <svg viewBox=\"0 0 12 12\" width=\"12\" height=\"12\" fill=\"currentColor\" aria-hidden=\"true\">\n <path d=\"M6 2C3.27 2 1 4 1 6s2.27 4 5 4 5-2 5-4-2.27-4-5-4zm0 7a3 3 0 1 1 0-6 3 3 0 0 1 0 6zm0-5a2 2 0 1 0 0 4 2 2 0 0 0 0-4z\" />\n </svg>\n);\n\nconst IconTrash = () => (\n <svg viewBox=\"0 0 12 12\" width=\"12\" height=\"12\" fill=\"currentColor\" aria-hidden=\"true\">\n <path d=\"M4 1V0h4v1h3v1H1V1h3zM2 3h8l-.8 8H2.8L2 3zm2 1v6h1V4H4zm2 0v6h1V4H6z\" />\n </svg>\n);\n\n// SVG illustration for MD drop zone (32×32 stacked files)\nconst DropIconMd = () => (\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" aria-hidden=\"true\">\n {/* back-right file */}\n <rect x=\"18\" y=\"10\" width=\"10\" height=\"13\" rx=\"1.5\" fill=\"#DBE8FF\" stroke=\"#B2C9FF\" strokeWidth=\"0.5\"\n transform=\"rotate(12 18 10)\" />\n {/* back-left file */}\n <rect x=\"4\" y=\"10\" width=\"10\" height=\"13\" rx=\"1.5\" fill=\"#DBE8FF\" stroke=\"#B2C9FF\" strokeWidth=\"0.5\"\n transform=\"rotate(-12 4 10)\" />\n {/* center file */}\n <rect x=\"10\" y=\"7\" width=\"12\" height=\"16\" rx=\"1.5\" fill=\"#FFFFFF\" stroke=\"#B2C9FF\" strokeWidth=\"1\" />\n <path d=\"M13 12h6M13 15h6M13 18h4\" stroke=\"#B2C9FF\" strokeWidth=\"1\" strokeLinecap=\"round\" />\n {/* upload arrow */}\n <circle cx=\"23\" cy=\"23\" r=\"5\" fill=\"#2970FF\" />\n <path d=\"M23 26v-6M20.5 22.5L23 20l2.5 2.5\" stroke=\"#FFF\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\n// SVG illustration for LG drop zone (96×64 stacked files)\nconst DropIconLg = () => (\n <svg width=\"96\" height=\"64\" viewBox=\"0 0 96 64\" fill=\"none\" aria-hidden=\"true\">\n {/* right file — rotated 15deg */}\n <g transform=\"rotate(15 70 35)\">\n <rect x=\"55\" y=\"18\" width=\"28\" height=\"36\" rx=\"3\" fill=\"#DBE8FF\" stroke=\"#B2C9FF\" strokeWidth=\"1\" />\n <path d=\"M61 28h16M61 34h16M61 40h10\" stroke=\"#B2C9FF\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </g>\n {/* left file — rotated -15deg */}\n <g transform=\"rotate(-15 26 35)\">\n <rect x=\"13\" y=\"18\" width=\"28\" height=\"36\" rx=\"3\" fill=\"#DBE8FF\" stroke=\"#B2C9FF\" strokeWidth=\"1\" />\n <path d=\"M19 28h16M19 34h16M19 40h10\" stroke=\"#B2C9FF\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </g>\n {/* center file */}\n <rect x=\"30\" y=\"8\" width=\"36\" height=\"48\" rx=\"3\" fill=\"#FFFFFF\" stroke=\"#B2C9FF\" strokeWidth=\"1.5\" />\n <path d=\"M38 22h20M38 30h20M38 38h14\" stroke=\"#B2C9FF\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n {/* upload arrow overlay */}\n <circle cx=\"76\" cy=\"50\" r=\"10\" fill=\"#2970FF\" />\n <path d=\"M76 55v-10M71 48l5-5 5 5\" stroke=\"#FFF\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\n// ─── Sub-components ───────────────────────────────────────────────────────────\n\ninterface UploadItemProps {\n file: UploadFile;\n size: UploadSize;\n onEdit?: (id: string) => void;\n onPreview?: (id: string) => void;\n onRemove?: (id: string) => void;\n}\n\nfunction UploadItem({ file, size, onEdit, onPreview, onRemove }: UploadItemProps) {\n const isLoading = file.state === 'loading' || file.indicator === 'loader';\n const showProgress = size === 'LG' && file.indicator !== 'loader';\n\n return (\n <div\n className={[\n styles.fileItem,\n size === 'LG' ? styles.fileItemLg : styles.fileItemMd,\n ].join(' ')}\n >\n {/* Badge */}\n <div className={styles.fileBadge}>\n <IconFile />\n </div>\n\n {/* Content */}\n <div className={styles.fileContent}>\n <div className={styles.fileHeader}>\n {/* Name + size */}\n <div className={styles.fileTexts}>\n <p className={styles.fileName}>{file.name}</p>\n <p className={styles.fileSize}>{file.size}</p>\n </div>\n\n {/* Actions or spinner */}\n {isLoading ? (\n <div className={styles.spinner} role=\"status\" aria-label=\"Uploading…\" />\n ) : (\n <div className={styles.actions}>\n <button\n className={styles.actionBtn}\n onClick={() => onEdit?.(file.id)}\n aria-label={`Edit ${file.name}`}\n type=\"button\"\n >\n <IconPen />\n </button>\n <button\n className={styles.actionBtn}\n onClick={() => onPreview?.(file.id)}\n aria-label={`Preview ${file.name}`}\n type=\"button\"\n >\n <IconEye />\n </button>\n <button\n className={styles.actionBtn}\n onClick={() => onRemove?.(file.id)}\n aria-label={`Remove ${file.name}`}\n type=\"button\"\n >\n <IconTrash />\n </button>\n </div>\n )}\n </div>\n\n {/* Progress bar — LG only, not during loader */}\n {showProgress && (\n <div className={styles.progressRow}>\n <div className={styles.progressTrack}>\n <div\n className={styles.progressFill}\n style={{ width: `${Math.min(100, Math.max(0, file.progress))}%` }}\n role=\"progressbar\"\n aria-valuenow={file.progress}\n aria-valuemin={0}\n aria-valuemax={100}\n />\n </div>\n <p className={styles.progressLabel}>{file.progress}%</p>\n </div>\n )}\n </div>\n </div>\n );\n}\n\n// ─── Main component ───────────────────────────────────────────────────────────\n\nexport function Upload({\n size = 'LG',\n type = 'multiple',\n status = 'default',\n files = [],\n onDrop,\n onRemove,\n onEdit,\n onPreview,\n accept,\n className,\n}: UploadProps) {\n const inputRef = useRef<HTMLInputElement>(null);\n const [dragging, setDragging] = useState(false);\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault();\n setDragging(true);\n };\n\n const handleDragLeave = (e: React.DragEvent) => {\n e.preventDefault();\n setDragging(false);\n };\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault();\n setDragging(false);\n const dropped = Array.from(e.dataTransfer.files);\n if (dropped.length) onDrop?.(dropped);\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const selected = Array.from(e.target.files ?? []);\n if (selected.length) onDrop?.(selected);\n // reset so same file can be re-selected\n e.target.value = '';\n };\n\n const openFilePicker = () => inputRef.current?.click();\n\n // LG single active / MD single active: hide drop zone when a file is loaded\n const hideDrop = type === 'single' && status === 'active' && files.length > 0;\n\n const dropzoneClass = [\n styles.dropzone,\n size === 'MD' ? styles.dropzoneMd : styles.dropzoneLg,\n dragging ? styles.dropzoneDragging : '',\n ]\n .filter(Boolean)\n .join(' ');\n\n const titleText =\n type === 'multiple' ? 'Drop your files here, or' : 'Drop your file here, or';\n\n return (\n <div className={[styles.wrapper, className].filter(Boolean).join(' ')}>\n {/* Hidden file input */}\n <input\n ref={inputRef}\n type=\"file\"\n multiple={type === 'multiple'}\n accept={accept}\n onChange={handleInputChange}\n style={{ display: 'none' }}\n aria-hidden=\"true\"\n tabIndex={-1}\n />\n\n {/* Drop zone */}\n {!hideDrop && (\n <div\n className={dropzoneClass}\n onClick={openFilePicker}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n role=\"button\"\n tabIndex={0}\n aria-label={`${titleText} browse`}\n onKeyDown={(e) => {\n if (e.key === ' ' || e.key === 'Enter') openFilePicker();\n }}\n >\n {/* Icon */}\n {size === 'MD' ? (\n <div className={styles.dropzoneIconMd}>\n <DropIconMd />\n </div>\n ) : (\n <div className={styles.dropzoneIconLg}>\n <DropIconLg />\n </div>\n )}\n\n {/* Text content */}\n <div className={styles.dropzoneContent}>\n <div className={styles.dropzoneTitleRow}>\n <p className={styles.dropzoneTitle}>{titleText}</p>\n <span className={styles.dropzoneBrowse} aria-hidden=\"true\">\n browse\n </span>\n </div>\n <p className={styles.dropzoneSubtitle}>\n JPG, PNG, PDF (Max 800×400px – 2Mo)\n </p>\n </div>\n </div>\n )}\n\n {/* File list */}\n {status === 'active' && files.length > 0 && (\n <div className={styles.fileList}>\n {files.map((file) => (\n <UploadItem\n key={file.id}\n file={file}\n size={size}\n onEdit={onEdit}\n onPreview={onPreview}\n onRemove={onRemove}\n />\n ))}\n </div>\n )}\n </div>\n );\n}\n"],"names":["IconFile","jsxs","jsx","IconPen","IconEye","IconTrash","DropIconMd","DropIconLg","UploadItem","file","size","onEdit","onPreview","onRemove","isLoading","showProgress","styles","Upload","type","status","files","onDrop","accept","className","inputRef","useRef","dragging","setDragging","useState","handleDragOver","e","handleDragLeave","handleDrop","dropped","handleInputChange","selected","openFilePicker","_a","hideDrop","dropzoneClass","titleText"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e="_base_106pz_9",c="_checkDefault_106pz_18",o="_radioDefault_106pz_19",t="_checkChecked_106pz_40",a="_radioChecked_106pz_41",_="_checkIcon_106pz_64",r="_radioIcon_106pz_86",d="_toggleWrapper_106pz_105",k="_toggleTrack_106pz_113",l="_toggleChecked_106pz_140",g={base:e,checkDefault:c,radioDefault:o,checkChecked:t,radioChecked:a,checkIcon:_,radioIcon:r,toggleWrapper:d,toggleTrack:k,toggleChecked:l};exports.base=e;exports.checkChecked=t;exports.checkDefault=c;exports.checkIcon=_;exports.default=g;exports.radioChecked=a;exports.radioDefault=o;exports.radioIcon=r;exports.toggleChecked=l;exports.toggleTrack=k;exports.toggleWrapper=d;
|
|
2
|
+
//# sourceMappingURL=index.cjs14.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs14.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e="_wrapper_1iytr_9",r="_labelRow_1iytr_19",l="_label_1iytr_19",t="_labelDisabled_1iytr_37",s="_labelIcon_1iytr_41",a="_field_1iytr_53",o="_hover_1iytr_70",_="_active_1iytr_77",i="_disabled_1iytr_85",c="_error_1iytr_98",n="_icon_1iytr_110",b="_input_1iytr_122",d="_message_1iytr_155",y="_messageError_1iytr_170",p={wrapper:e,labelRow:r,label:l,labelDisabled:t,labelIcon:s,field:a,hover:o,active:_,disabled:i,error:c,icon:n,input:b,message:d,messageError:y};exports.active=_;exports.default=p;exports.disabled=i;exports.error=c;exports.field=a;exports.hover=o;exports.icon=n;exports.input=b;exports.label=l;exports.labelDisabled=t;exports.labelIcon=s;exports.labelRow=r;exports.message=d;exports.messageError=y;exports.wrapper=e;
|
|
2
|
+
//# sourceMappingURL=index.cjs15.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs15.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e="_dropzone_19kgn_8",o="_dropzoneMd_19kgn_22",n="_dropzoneLg_19kgn_29",r="_dropzoneDragging_19kgn_39",t="_dropzoneIconMd_19kgn_48",_="_dropzoneIconLg_19kgn_56",s="_dropzoneContent_19kgn_67",i="_dropzoneTitleRow_19kgn_81",g="_dropzoneTitle_19kgn_81",p="_dropzoneBrowse_19kgn_99",l="_dropzoneSubtitle_19kgn_114",d="_fileList_19kgn_128",c="_fileItem_19kgn_137",z="_fileItemLg_19kgn_150",f="_fileItemMd_19kgn_155",a="_fileBadge_19kgn_161",k="_fileContent_19kgn_176",I="_fileHeader_19kgn_186",L="_fileTexts_19kgn_193",m="_fileName_19kgn_202",T="_fileSize_19kgn_216",w="_actions_19kgn_229",M="_actionBtn_19kgn_236",B="_progressRow_19kgn_259",u="_progressTrack_19kgn_267",b="_progressFill_19kgn_277",S="_progressLabel_19kgn_288",C="_spinner_19kgn_301",R="_wrapper_19kgn_317",x={dropzone:e,dropzoneMd:o,dropzoneLg:n,dropzoneDragging:r,dropzoneIconMd:t,dropzoneIconLg:_,dropzoneContent:s,dropzoneTitleRow:i,dropzoneTitle:g,dropzoneBrowse:p,dropzoneSubtitle:l,fileList:d,fileItem:c,fileItemLg:z,fileItemMd:f,fileBadge:a,fileContent:k,fileHeader:I,fileTexts:L,fileName:m,fileSize:T,actions:w,actionBtn:M,progressRow:B,progressTrack:u,progressFill:b,progressLabel:S,spinner:C,wrapper:R};exports.actionBtn=M;exports.actions=w;exports.default=x;exports.dropzone=e;exports.dropzoneBrowse=p;exports.dropzoneContent=s;exports.dropzoneDragging=r;exports.dropzoneIconLg=_;exports.dropzoneIconMd=t;exports.dropzoneLg=n;exports.dropzoneMd=o;exports.dropzoneSubtitle=l;exports.dropzoneTitle=g;exports.dropzoneTitleRow=i;exports.fileBadge=a;exports.fileContent=k;exports.fileHeader=I;exports.fileItem=c;exports.fileItemLg=z;exports.fileItemMd=f;exports.fileList=d;exports.fileName=m;exports.fileSize=T;exports.fileTexts=L;exports.progressFill=b;exports.progressLabel=S;exports.progressRow=B;exports.progressTrack=u;exports.spinner=C;exports.wrapper=R;
|
|
2
|
+
//# sourceMappingURL=index.cjs16.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs16.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e="_header_1jw5v_25",a="_variantDefault_1jw5v_36",t="_variantMobile_1jw5v_37",o="_variantMobileOpen_1jw5v_38",s="_pageTitle_1jw5v_49",n="_pageTitleDesktop_1jw5v_63",_="_pageTitleMobile_1jw5v_64",c="_actions_1jw5v_68",r="_actionsMobileOpen_1jw5v_76",i="_workspace_1jw5v_86",l="_workspaceFull_1jw5v_104",w="_workspaceLeft_1jw5v_110",v="_statusDot_1jw5v_118",p="_workspaceCol_1jw5v_126",u="_workspaceAccount_1jw5v_134",k="_workspaceName_1jw5v_144",j="_workspaceArrow_1jw5v_156",m="_bellBtn_1jw5v_168",b="_menuBtn_1jw5v_188",g="_menuIcon_1jw5v_208",M="_navUser_1jw5v_219",T="_avatar_1jw5v_227",A="_avatarImg_1jw5v_239",B="_avatarInitials_1jw5v_248",D="_userText_1jw5v_255",I="_userName_1jw5v_262",f="_userRole_1jw5v_271",O="_ctaBtn_1jw5v_282",d="_mainActions_1jw5v_307",N={header:e,variantDefault:a,variantMobile:t,variantMobileOpen:o,pageTitle:s,pageTitleDesktop:n,pageTitleMobile:_,actions:c,actionsMobileOpen:r,workspace:i,workspaceFull:l,workspaceLeft:w,statusDot:v,workspaceCol:p,workspaceAccount:u,workspaceName:k,workspaceArrow:j,bellBtn:m,menuBtn:b,menuIcon:g,navUser:M,avatar:T,avatarImg:A,avatarInitials:B,userText:D,userName:I,userRole:f,ctaBtn:O,mainActions:d};exports.actions=c;exports.actionsMobileOpen=r;exports.avatar=T;exports.avatarImg=A;exports.avatarInitials=B;exports.bellBtn=m;exports.ctaBtn=O;exports.default=N;exports.header=e;exports.mainActions=d;exports.menuBtn=b;exports.menuIcon=g;exports.navUser=M;exports.pageTitle=s;exports.pageTitleDesktop=n;exports.pageTitleMobile=_;exports.statusDot=v;exports.userName=I;exports.userRole=f;exports.userText=D;exports.variantDefault=a;exports.variantMobile=t;exports.variantMobileOpen=o;exports.workspace=i;exports.workspaceAccount=u;exports.workspaceArrow=j;exports.workspaceCol=p;exports.workspaceFull=l;exports.workspaceLeft=w;exports.workspaceName=k;
|
|
2
|
+
//# sourceMappingURL=index.cjs17.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs17.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t="_alert_p4b5i_21",e="_typeDefault_p4b5i_36",n="_typeInfo_p4b5i_37",i="_typeSuccess_p4b5i_38",o="_typeWarning_p4b5i_39",_="_typeError_p4b5i_40",l="_iconSlot_p4b5i_44",s="_textContent_p4b5i_54",c="_title_p4b5i_63",r="_titleDefault_p4b5i_72",p="_titleInfo_p4b5i_73",a="_titleSuccess_p4b5i_74",u="_titleWarning_p4b5i_75",y="_titleError_p4b5i_76",b="_message_p4b5i_78",f="_rightSlot_p4b5i_90",g="_actionBtn_p4b5i_101",S="_closeBtn_p4b5i_127",B={alert:t,typeDefault:e,typeInfo:n,typeSuccess:i,typeWarning:o,typeError:_,iconSlot:l,textContent:s,title:c,titleDefault:r,titleInfo:p,titleSuccess:a,titleWarning:u,titleError:y,message:b,rightSlot:f,actionBtn:g,closeBtn:S};exports.actionBtn=g;exports.alert=t;exports.closeBtn=S;exports.default=B;exports.iconSlot=l;exports.message=b;exports.rightSlot=f;exports.textContent=s;exports.title=c;exports.titleDefault=r;exports.titleError=y;exports.titleInfo=p;exports.titleSuccess=a;exports.titleWarning=u;exports.typeDefault=e;exports.typeError=_;exports.typeInfo=n;exports.typeSuccess=i;exports.typeWarning=o;
|
|
2
|
+
//# sourceMappingURL=index.cjs18.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs18.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o="_button_1hwro_8",t="_sm_1hwro_40",e="_md_1hwro_48",_="_outline_1hwro_58",l="_fill_1hwro_74",n="_secondary_1hwro_89",s="_text_1hwro_104",c="_disabled_1hwro_119",d="_label_1hwro_130",i="_icon_1hwro_136",r={button:o,sm:t,md:e,outline:_,fill:l,secondary:n,text:s,disabled:c,label:d,icon:i};exports.button=o;exports.default=r;exports.disabled=c;exports.fill=l;exports.icon=i;exports.label=d;exports.md=e;exports.outline=_;exports.secondary=n;exports.sm=t;exports.text=s;
|
|
2
|
+
//# sourceMappingURL=index.cjs19.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs19.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const F={brand:{primary:{base:"#203224"},secondary:{base:"#0F6C13"},tertiary:{base:"#E7DA10"}},default:{white:"#FFFFFF",textDark:"#524E69",textMedium:"#9490AC",disabled:"#EFEEF2",border:"#DCE5DE",stepDefault:"#E0DEED",whiteCloud:"#F5F5F5",modalBorder:"#E0DEED",modalTextMedium:"#757094"},message:{info:{base:"#2472BA"},danger:{base:"#FF3A29"}},gray:{900:"#101828",600:"#475467",500:"#667085",300:"#D0D5DD",200:"#EAECF0"},pagination:{active:"#0F6C13",border:"#CED4DA",text:"#101113"},alert:{default:{bg:"#F9F8FC",border:"#DCE5DE",title:"#524E69"},info:{bg:"#F4F9FF",border:"#C9E2FE",title:"#2472BA"},success:{bg:"#F5FBF7",border:"#CAE7D5",title:"#2C7D56"},warning:{bg:"#FFF9E9",border:"#FFDB90",title:"#A36A00"},error:{bg:"#FFF8F6",border:"#FFCABF",title:"#DE0000"}},shadow:{popper:"0px 1px 12px 0px rgba(25,27,35,0.15)"},primary:{600:"#154FEF",500:"#2970FF",400:"#5280FF",200:"#B2C9FF",100:"#DBE8FF"}};exports.colors=F;
|
|
2
|
+
//# sourceMappingURL=index.cjs2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs2.js","sources":["../tokens/colors.ts"],"sourcesContent":["/**\n * Color tokens — extracted directly from Figma (VekfomfsZU4q2iaY1j4VXP)\n * Nodes: BtnsBase (3107:5509), TextField (3105:3885), BaseCheckRadio (3106:4752),\n * FileUpload (3210:3538), Pagination (3203:662), NavPrimary (3554:548),\n * Modal (5139:1464), AlertSticky (3114:1706)\n */\n\nexport const colors = {\n brand: {\n primary: {\n /** #203224 — Secondary button bg; Fill button text; Check/Radio checked bg */\n base: '#203224',\n },\n secondary: {\n /** #0F6C13 — Outline button border & text */\n base: '#0F6C13',\n },\n tertiary: {\n /** #E7DA10 — Fill button background */\n base: '#E7DA10',\n },\n },\n default: {\n /** #FFFFFF — Secondary button text; input background */\n white: '#FFFFFF',\n /** #524E69 — Disabled text; input active/error text */\n textDark: '#524E69',\n /** #9490AC — Placeholder; input hover/active border; Grayscale/600 */\n textMedium: '#9490AC',\n /** #EFEEF2 — Disabled background; input focus ring; Grayscale/100 */\n disabled: '#EFEEF2',\n /** #DCE5DE — Default input border; Check/Radio border */\n border: '#DCE5DE',\n /** #E0DEED — Grayscale/200 · Default step background */\n stepDefault: '#E0DEED',\n /** #F5F5F5 — Default Colors/White Cloud · Nav sidebar background */\n whiteCloud: '#F5F5F5',\n /** #E0DEED — Grayscale/200 · Modal slot border */\n modalBorder: '#E0DEED',\n /** #757094 — Default Colors/Text medium · Modal slot text, option labels */\n modalTextMedium: '#757094',\n },\n message: {\n info: {\n /** #2472BA — Text button text */\n base: '#2472BA',\n },\n danger: {\n /** #FF3A29 — Error input border & message */\n base: '#FF3A29',\n },\n },\n /** Gray scale — FileUpload / Gray/x00 tokens */\n gray: {\n /** #101828 — Gray/900 · file name, body text */\n 900: '#101828',\n /** #475467 — Gray/600 · action icon color */\n 600: '#475467',\n /** #667085 — Gray/500 · file size, muted text */\n 500: '#667085',\n /** #D0D5DD — Gray/300 · upload drop-zone default border */\n 300: '#D0D5DD',\n /** #EAECF0 — Gray/200 · file item border, progress track */\n 200: '#EAECF0',\n },\n /** Pagination tokens — Pagination (3203:662) */\n pagination: {\n /** #0F6C13 — active item bg (= brand.secondary.base) */\n active: '#0F6C13',\n /** #CED4DA — Gray/Gray 4 · inactive item border, control border */\n border: '#CED4DA',\n /** #101113 — Dark/Dark 9 · page number text */\n text: '#101113',\n },\n /** Alert tokens — AlertSticky (3114:1706) */\n alert: {\n default: { bg: '#F9F8FC', border: '#DCE5DE', title: '#524E69' },\n info: { bg: '#F4F9FF', border: '#C9E2FE', title: '#2472BA' },\n success: { bg: '#F5FBF7', border: '#CAE7D5', title: '#2C7D56' },\n warning: { bg: '#FFF9E9', border: '#FFDB90', title: '#A36A00' },\n error: { bg: '#FFF8F6', border: '#FFCABF', title: '#DE0000' },\n },\n /** Shadow tokens */\n shadow: {\n /** 0px 1px 12px 0px rgba(25,27,35,0.15) — BS-Popper */\n popper: '0px 1px 12px 0px rgba(25,27,35,0.15)',\n },\n /** Blue primary scale — FileUpload / Primary/x00 tokens */\n primary: {\n /** #154FEF — Primary/600 · \"browse\" link color */\n 600: '#154FEF',\n /** #2970FF — Primary/500 · active drop-zone border, progress fill */\n 500: '#2970FF',\n /** #5280FF — Primary/400 */\n 400: '#5280FF',\n /** #B2C9FF — Primary/200 · file badge background */\n 200: '#B2C9FF',\n /** #DBE8FF — Primary/100 · file badge ring, active drop-zone bg */\n 100: '#DBE8FF',\n },\n} as const;\n\nexport type Colors = typeof colors;\n"],"names":["colors"],"mappings":"gFAOO,MAAMA,EAAS,CACpB,MAAO,CACL,QAAS,CAEP,KAAM,SAAA,EAER,UAAW,CAET,KAAM,SAAA,EAER,SAAU,CAER,KAAM,SAAA,CACR,EAEF,QAAS,CAEP,MAAO,UAEP,SAAU,UAEV,WAAY,UAEZ,SAAU,UAEV,OAAQ,UAER,YAAa,UAEb,WAAY,UAEZ,YAAa,UAEb,gBAAiB,SAAA,EAEnB,QAAS,CACP,KAAM,CAEJ,KAAM,SAAA,EAER,OAAQ,CAEN,KAAM,SAAA,CACR,EAGF,KAAM,CAEJ,IAAK,UAEL,IAAK,UAEL,IAAK,UAEL,IAAK,UAEL,IAAK,SAAA,EAGP,WAAY,CAEV,OAAQ,UAER,OAAQ,UAER,KAAM,SAAA,EAGR,MAAO,CACL,QAAS,CAAE,GAAI,UAAW,OAAQ,UAAW,MAAO,SAAA,EACpD,KAAS,CAAE,GAAI,UAAW,OAAQ,UAAW,MAAO,SAAA,EACpD,QAAS,CAAE,GAAI,UAAW,OAAQ,UAAW,MAAO,SAAA,EACpD,QAAS,CAAE,GAAI,UAAW,OAAQ,UAAW,MAAO,SAAA,EACpD,MAAS,CAAE,GAAI,UAAW,OAAQ,UAAW,MAAO,SAAA,CAAU,EAGhE,OAAQ,CAEN,OAAQ,sCAAA,EAGV,QAAS,CAEP,IAAK,UAEL,IAAK,UAEL,IAAK,UAEL,IAAK,UAEL,IAAK,SAAA,CAET"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t="_pagination_olot7_11",o="_item_olot7_20",_="_xs_olot7_55",i="_md_olot7_63",n="_lg_olot7_71",e="_active_olot7_81",c="_inactive_olot7_88",l="_dots_olot7_102",s="_control_olot7_110",a={pagination:t,item:o,xs:_,md:i,lg:n,active:e,inactive:c,dots:l,control:s};exports.active=e;exports.control=s;exports.default=a;exports.dots=l;exports.inactive=c;exports.item=o;exports.lg=n;exports.md=i;exports.pagination=t;exports.xs=_;
|
|
2
|
+
//# sourceMappingURL=index.cjs20.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs20.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t="_steps_xg6k6_20",e="_item_xg6k6_30",n="_typeStart_xg6k6_51",o="_typeStep_xg6k6_66",_="_typeEnd_xg6k6_82",i="_stateDefault_xg6k6_94",c="_stateHover_xg6k6_95",m="_stateActive_xg6k6_96",s="_stateComplete_xg6k6_97",a="_textDark_xg6k6_101",l="_textLight_xg6k6_102",p="_label_xg6k6_106",r="_num_xg6k6_119",k="_checkIcon_xg6k6_132",x="_minified_xg6k6_143",g="_minDot_xg6k6_150",C="_minDefault_xg6k6_156",u="_minActive_xg6k6_162",D="_minComplete_xg6k6_169",f="_minConnector_xg6k6_176",v="_minConnectorDefault_xg6k6_183",y="_minConnectorActive_xg6k6_184",d="_minConnectorComplete_xg6k6_185",A={steps:t,item:e,typeStart:n,typeStep:o,typeEnd:_,stateDefault:i,stateHover:c,stateActive:m,stateComplete:s,textDark:a,textLight:l,label:p,num:r,checkIcon:k,minified:x,minDot:g,minDefault:C,minActive:u,minComplete:D,minConnector:f,minConnectorDefault:v,minConnectorActive:y,minConnectorComplete:d};exports.checkIcon=k;exports.default=A;exports.item=e;exports.label=p;exports.minActive=u;exports.minComplete=D;exports.minConnector=f;exports.minConnectorActive=y;exports.minConnectorComplete=d;exports.minConnectorDefault=v;exports.minDefault=C;exports.minDot=g;exports.minified=x;exports.num=r;exports.stateActive=m;exports.stateComplete=s;exports.stateDefault=i;exports.stateHover=c;exports.steps=t;exports.textDark=a;exports.textLight=l;exports.typeEnd=_;exports.typeStart=n;exports.typeStep=o;
|
|
2
|
+
//# sourceMappingURL=index.cjs21.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs21.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const i="_overlay_rzwii_24",t="_modal_rzwii_43",n="_heading_rzwii_64",o="_title_rzwii_72",r="_description_rzwii_81",e="_body_rzwii_92",_="_actions_rzwii_101",s="_btns_rzwii_108",a="_btnSecondary_rzwii_115",c="_btnPrimary_rzwii_137",d={overlay:i,modal:t,heading:n,title:o,description:r,body:e,actions:_,btns:s,btnSecondary:a,btnPrimary:c};exports.actions=_;exports.body=e;exports.btnPrimary=c;exports.btnSecondary=a;exports.btns=s;exports.default=d;exports.description=r;exports.heading=n;exports.modal=t;exports.overlay=i;exports.title=o;
|
|
2
|
+
//# sourceMappingURL=index.cjs22.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs22.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e="_nav_53r24_22",t="_navOpen_53r24_32",o="_navClosed_53r24_33",a="_navMobile_53r24_42",n="_header_53r24_51",l="_headerOpen_53r24_58",i="_headerClosed_53r24_64",_="_headerMobile_53r24_73",s="_logoIcon_53r24_80",c="_logoFull_53r24_87",r="_headerTitle_53r24_93",m="_headerActions_53r24_102",v="_bellBtn_53r24_108",b="_links_53r24_129",d="_linksOpen_53r24_136",p="_linksClosed_53r24_137",I="_linksMobile_53r24_138",h="_section_53r24_142",k="_sectionTitle_53r24_147",M="_sectionItems_53r24_160",C="_item_53r24_168",L="_itemOpen_53r24_181",O="_itemOpenActive_53r24_191",A="_itemClosed_53r24_201",B="_itemClosedActive_53r24_211",f="_itemMobile_53r24_222",w="_itemMobileActive_53r24_231",u="_itemIcon_53r24_237",g="_itemIconDark_53r24_246",T="_itemIconLight_53r24_247",D="_itemLabel_53r24_251",R="_itemLabelDefault_53r24_263",F="_itemLabelActive_53r24_264",N="_itemLabelMobile_53r24_265",y="_chevron_53r24_269",S="_footer_53r24_283",j="_collapseBtn_53r24_289",P="_collapseBtnClosed_53r24_310",q="_collapseBtnIcon_53r24_314",x="_footerMobile_53r24_326",z="_ctaBtn_53r24_335",E="_workspace_53r24_358",G="_workspaceIcon_53r24_372",H="_workspaceLabel_53r24_383",J="_avatarRow_53r24_397",K="_avatar_53r24_397",Q="_avatarInitials_53r24_415",U="_avatarInfo_53r24_422",V="_avatarName_53r24_430",W="_avatarRole_53r24_441",X={nav:e,navOpen:t,navClosed:o,navMobile:a,header:n,headerOpen:l,headerClosed:i,headerMobile:_,logoIcon:s,logoFull:c,headerTitle:r,headerActions:m,bellBtn:v,links:b,linksOpen:d,linksClosed:p,linksMobile:I,section:h,sectionTitle:k,sectionItems:M,item:C,itemOpen:L,itemOpenActive:O,itemClosed:A,itemClosedActive:B,itemMobile:f,itemMobileActive:w,itemIcon:u,itemIconDark:g,itemIconLight:T,itemLabel:D,itemLabelDefault:R,itemLabelActive:F,itemLabelMobile:N,chevron:y,footer:S,collapseBtn:j,collapseBtnClosed:P,collapseBtnIcon:q,footerMobile:x,ctaBtn:z,workspace:E,workspaceIcon:G,workspaceLabel:H,avatarRow:J,avatar:K,avatarInitials:Q,avatarInfo:U,avatarName:V,avatarRole:W};exports.avatar=K;exports.avatarInfo=U;exports.avatarInitials=Q;exports.avatarName=V;exports.avatarRole=W;exports.avatarRow=J;exports.bellBtn=v;exports.chevron=y;exports.collapseBtn=j;exports.collapseBtnClosed=P;exports.collapseBtnIcon=q;exports.ctaBtn=z;exports.default=X;exports.footer=S;exports.footerMobile=x;exports.header=n;exports.headerActions=m;exports.headerClosed=i;exports.headerMobile=_;exports.headerOpen=l;exports.headerTitle=r;exports.item=C;exports.itemClosed=A;exports.itemClosedActive=B;exports.itemIcon=u;exports.itemIconDark=g;exports.itemIconLight=T;exports.itemLabel=D;exports.itemLabelActive=F;exports.itemLabelDefault=R;exports.itemLabelMobile=N;exports.itemMobile=f;exports.itemMobileActive=w;exports.itemOpen=L;exports.itemOpenActive=O;exports.links=b;exports.linksClosed=p;exports.linksMobile=I;exports.linksOpen=d;exports.logoFull=c;exports.logoIcon=s;exports.nav=e;exports.navClosed=o;exports.navMobile=a;exports.navOpen=t;exports.section=h;exports.sectionItems=M;exports.sectionTitle=k;exports.workspace=E;exports.workspaceIcon=G;exports.workspaceLabel=H;
|
|
2
|
+
//# sourceMappingURL=index.cjs23.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs23.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e={fontFamily:{base:"'Clash Grotesk Variable', sans-serif",inter:"'Inter', sans-serif",roboto:"'Roboto', sans-serif",clashDisplay:"'Clash Display Variable', sans-serif",button:"'Clash Grotesk Variable', sans-serif"},fontWeight:{regular:400,semibold:600},fontSize:{md:"1rem",sm:"0.875rem",bodySm:"0.75rem",bodyXs:"0.625rem",paginationXs:"0.75rem",paginationMd:"1rem",paginationLg:"1.125rem",button:"1rem"},lineHeight:{button:1.5,label:1.43,text:1.3,body:1.6,paginationXs:"14px",paginationMd:"18px",paginationLg:"20px"},letterSpacing:{none:0,button:0}};exports.typography=e;
|
|
2
|
+
//# sourceMappingURL=index.cjs3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs3.js","sources":["../tokens/typography.ts"],"sourcesContent":["/**\n * Typography tokens — extracted directly from Figma (VekfomfsZU4q2iaY1j4VXP)\n * Tokens: Body Texts/Button, Body Texts/Label, Body Texts/Text, Body Texts/Text Small,\n * Paragraph/SM/Regular, Paragraph/XS/Regular (FileUpload 3210:3538),\n * Text/xs, Text/md, Text/lg (Pagination 3203:662)\n */\n\nexport const typography = {\n fontFamily: {\n /** Clash Grotesk Variable — buttons, inputs, labels */\n base: \"'Clash Grotesk Variable', sans-serif\",\n /** Inter — FileUpload text (Paragraph/SM and Paragraph/XS) */\n inter: \"'Inter', sans-serif\",\n /** Roboto — Pagination numbers and controls */\n roboto: \"'Roboto', sans-serif\",\n /** Clash Display Variable — Steps step number (Headings/H4 · 21px) */\n clashDisplay: \"'Clash Display Variable', sans-serif\",\n /** @deprecated use fontFamily.base */\n button: \"'Clash Grotesk Variable', sans-serif\",\n },\n fontWeight: {\n regular: 400,\n semibold: 600,\n },\n fontSize: {\n /** 16px — Body Texts/Button & Body Texts/Text */\n md: '1rem',\n /** 14px — Body Texts/Label & Body Texts/Text Small */\n sm: '0.875rem',\n /** 12px — Paragraph/SM/Regular (Inter · FileUpload) */\n bodySm: '0.75rem',\n /** 10px — Paragraph/XS/Regular (Inter · FileUpload) */\n bodyXs: '0.625rem',\n /** 12px — Text/xs (Roboto · Pagination xs) */\n paginationXs: '0.75rem',\n /** 16px — Text/md (Roboto · Pagination md) */\n paginationMd: '1rem',\n /** 18px — Text/lg (Roboto · Pagination lg) */\n paginationLg: '1.125rem',\n /** @deprecated use fontSize.md */\n button: '1rem',\n },\n lineHeight: {\n /** 1.5 — Body Texts/Button */\n button: 1.5,\n /** 1.43 — Body Texts/Label (Semibold 14px) */\n label: 1.43,\n /** 1.30 — Body Texts/Text & Body Texts/Text Small */\n text: 1.3,\n /** 1.60 — Paragraph/SM/Regular & Paragraph/XS/Regular (Inter · FileUpload) */\n body: 1.6,\n /** 14px — Text/xs (Roboto · Pagination xs) */\n paginationXs: '14px',\n /** 18px — Text/md (Roboto · Pagination md) */\n paginationMd: '18px',\n /** 20px — Text/lg (Roboto · Pagination lg) */\n paginationLg: '20px',\n },\n letterSpacing: {\n /** 0 — all tokens */\n none: 0,\n /** @deprecated use letterSpacing.none */\n button: 0,\n },\n} as const;\n\nexport type Typography = typeof typography;\n"],"names":["typography"],"mappings":"gFAOO,MAAMA,EAAa,CACxB,WAAY,CAEV,KAAM,uCAEN,MAAO,sBAEP,OAAQ,uBAER,aAAc,uCAEd,OAAQ,sCAAA,EAEV,WAAY,CACV,QAAS,IACT,SAAU,GAAA,EAEZ,SAAU,CAER,GAAI,OAEJ,GAAI,WAEJ,OAAQ,UAER,OAAQ,WAER,aAAc,UAEd,aAAc,OAEd,aAAc,WAEd,OAAQ,MAAA,EAEV,WAAY,CAEV,OAAQ,IAER,MAAO,KAEP,KAAM,IAEN,KAAM,IAEN,aAAc,OAEd,aAAc,OAEd,aAAc,MAAA,EAEhB,cAAe,CAEb,KAAM,EAEN,OAAQ,CAAA,CAEZ"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),r=require("./index.cjs18.js"),x={Default:"#9490AC",Info:"#2472BA",Success:"#2C7D56",Warning:"#A36A00",Error:"#DE0000"};function j({color:t}){return e.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none","aria-hidden":"true",children:[e.jsx("circle",{cx:"10",cy:"10",r:"9",fill:t}),e.jsx("path",{d:"M10 9v5",stroke:"#fff",strokeWidth:"1.75",strokeLinecap:"round"}),e.jsx("circle",{cx:"10",cy:"6.5",r:"1",fill:"#fff"})]})}function g({color:t}){return e.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none","aria-hidden":"true",children:[e.jsx("circle",{cx:"10",cy:"10",r:"9",fill:t}),e.jsx("path",{d:"M6 10.5l3 3 5-5.5",stroke:"#fff",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round"})]})}function p({color:t}){return e.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none","aria-hidden":"true",children:[e.jsx("path",{d:"M10 2.5L18 17H2L10 2.5Z",fill:t}),e.jsx("path",{d:"M10 8v4",stroke:"#fff",strokeWidth:"1.75",strokeLinecap:"round"}),e.jsx("circle",{cx:"10",cy:"14.5",r:"1",fill:"#fff"})]})}function k({color:t}){return e.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none","aria-hidden":"true",children:[e.jsx("circle",{cx:"10",cy:"10",r:"9",fill:t}),e.jsx("path",{d:"M7 7l6 6M13 7l-6 6",stroke:"#fff",strokeWidth:"1.75",strokeLinecap:"round"})]})}function v(){return e.jsx("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none","aria-hidden":"true",children:e.jsx("path",{d:"M15 5L5 15M5 5l10 10",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round"})})}function S({type:t}){const n=x[t];return t==="Success"?e.jsx(g,{color:n}):t==="Warning"?e.jsx(p,{color:n}):t==="Error"?e.jsx(k,{color:n}):e.jsx(j,{color:n})}const W={Default:r.default.typeDefault,Info:r.default.typeInfo,Success:r.default.typeSuccess,Warning:r.default.typeWarning,Error:r.default.typeError},m={Default:r.default.titleDefault,Info:r.default.titleInfo,Success:r.default.titleSuccess,Warning:r.default.titleWarning,Error:r.default.titleError},I={Default:"status",Info:"status",Success:"status",Warning:"alert",Error:"alert"};function M({type:t="Default",title:n,message:l,addonLeft:o=!0,closeIcon:s=!0,actions:i=!1,actionLabel:a="Ação",onClose:c,onAction:u,className:f}){const d=[r.default.alert,W[t],f].filter(Boolean).join(" "),h=i||s;return e.jsxs("div",{className:d,role:I[t],"aria-live":t==="Warning"||t==="Error"?"assertive":"polite",children:[o&&e.jsx("span",{className:r.default.iconSlot,children:e.jsx(S,{type:t})}),e.jsxs("div",{className:r.default.textContent,children:[n&&e.jsx("p",{className:[r.default.title,m[t]].join(" "),children:n}),e.jsx("p",{className:r.default.message,children:l})]}),h&&e.jsxs("div",{className:r.default.rightSlot,children:[i&&e.jsx("button",{type:"button",className:r.default.actionBtn,onClick:u,children:a}),s&&e.jsx("button",{type:"button",className:r.default.closeBtn,onClick:c,"aria-label":"Fechar alerta",children:e.jsx(v,{})})]})]})}exports.Alert=M;
|
|
2
|
+
//# sourceMappingURL=index.cjs4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs4.js","sources":["../components/Alert/Alert.tsx"],"sourcesContent":["import React from 'react';\nimport styles from './Alert.module.css';\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport type AlertType = 'Default' | 'Info' | 'Success' | 'Warning' | 'Error';\n\nexport interface AlertProps {\n type?: AlertType;\n title?: string;\n message: string;\n /** Show icon on the left */\n addonLeft?: boolean;\n /** Show close (×) button on the right */\n closeIcon?: boolean;\n /** Show action button */\n actions?: boolean;\n /** Label for the action button (defaults to \"Ação\") */\n actionLabel?: string;\n onClose?: () => void;\n onAction?: () => void;\n className?: string;\n}\n\n// ─── Inline SVG icons ─────────────────────────────────────────────────────────\n\nconst iconColor: Record<AlertType, string> = {\n Default: '#9490AC',\n Info: '#2472BA',\n Success: '#2C7D56',\n Warning: '#A36A00',\n Error: '#DE0000',\n};\n\n/** Info-circle icon — Default & Info */\nfunction IconInfo({ color }: { color: string }) {\n return (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" aria-hidden=\"true\">\n <circle cx=\"10\" cy=\"10\" r=\"9\" fill={color} />\n <path d=\"M10 9v5\" stroke=\"#fff\" strokeWidth=\"1.75\" strokeLinecap=\"round\" />\n <circle cx=\"10\" cy=\"6.5\" r=\"1\" fill=\"#fff\" />\n </svg>\n );\n}\n\n/** Check-circle icon — Success */\nfunction IconSuccess({ color }: { color: string }) {\n return (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" aria-hidden=\"true\">\n <circle cx=\"10\" cy=\"10\" r=\"9\" fill={color} />\n <path d=\"M6 10.5l3 3 5-5.5\" stroke=\"#fff\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n}\n\n/** Warning-triangle icon — Warning */\nfunction IconWarning({ color }: { color: string }) {\n return (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M10 2.5L18 17H2L10 2.5Z\" fill={color} />\n <path d=\"M10 8v4\" stroke=\"#fff\" strokeWidth=\"1.75\" strokeLinecap=\"round\" />\n <circle cx=\"10\" cy=\"14.5\" r=\"1\" fill=\"#fff\" />\n </svg>\n );\n}\n\n/** X-circle icon — Error */\nfunction IconError({ color }: { color: string }) {\n return (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" aria-hidden=\"true\">\n <circle cx=\"10\" cy=\"10\" r=\"9\" fill={color} />\n <path d=\"M7 7l6 6M13 7l-6 6\" stroke=\"#fff\" strokeWidth=\"1.75\" strokeLinecap=\"round\" />\n </svg>\n );\n}\n\n/** Close × icon */\nfunction IconClose() {\n return (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M15 5L5 15M5 5l10 10\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" />\n </svg>\n );\n}\n\nfunction TypeIcon({ type }: { type: AlertType }) {\n const color = iconColor[type];\n if (type === 'Success') return <IconSuccess color={color} />;\n if (type === 'Warning') return <IconWarning color={color} />;\n if (type === 'Error') return <IconError color={color} />;\n return <IconInfo color={color} />;\n}\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\nconst typeStyleMap: Record<AlertType, string> = {\n Default: styles.typeDefault,\n Info: styles.typeInfo,\n Success: styles.typeSuccess,\n Warning: styles.typeWarning,\n Error: styles.typeError,\n};\n\nconst titleStyleMap: Record<AlertType, string> = {\n Default: styles.titleDefault,\n Info: styles.titleInfo,\n Success: styles.titleSuccess,\n Warning: styles.titleWarning,\n Error: styles.titleError,\n};\n\nconst ariaRoleMap: Record<AlertType, string> = {\n Default: 'status',\n Info: 'status',\n Success: 'status',\n Warning: 'alert',\n Error: 'alert',\n};\n\nexport function Alert({\n type = 'Default',\n title,\n message,\n addonLeft = true,\n closeIcon = true,\n actions = false,\n actionLabel = 'Ação',\n onClose,\n onAction,\n className,\n}: AlertProps) {\n const rootClass = [styles.alert, typeStyleMap[type], className]\n .filter(Boolean)\n .join(' ');\n\n const hasRightSlot = actions || closeIcon;\n\n return (\n <div\n className={rootClass}\n role={ariaRoleMap[type]}\n aria-live={type === 'Warning' || type === 'Error' ? 'assertive' : 'polite'}\n >\n {/* Left icon */}\n {addonLeft && (\n <span className={styles.iconSlot}>\n <TypeIcon type={type} />\n </span>\n )}\n\n {/* Text */}\n <div className={styles.textContent}>\n {title && (\n <p className={[styles.title, titleStyleMap[type]].join(' ')}>\n {title}\n </p>\n )}\n <p className={styles.message}>{message}</p>\n </div>\n\n {/* Right: action + close */}\n {hasRightSlot && (\n <div className={styles.rightSlot}>\n {actions && (\n <button\n type=\"button\"\n className={styles.actionBtn}\n onClick={onAction}\n >\n {actionLabel}\n </button>\n )}\n {closeIcon && (\n <button\n type=\"button\"\n className={styles.closeBtn}\n onClick={onClose}\n aria-label=\"Fechar alerta\"\n >\n <IconClose />\n </button>\n )}\n </div>\n )}\n </div>\n );\n}\n"],"names":["iconColor","IconInfo","color","jsxs","jsx","IconSuccess","IconWarning","IconError","IconClose","TypeIcon","type","typeStyleMap","styles","titleStyleMap","ariaRoleMap","Alert","title","message","addonLeft","closeIcon","actions","actionLabel","onClose","onAction","className","rootClass","hasRightSlot"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react/jsx-runtime"),e=require("./index.cjs14.js");function f({type:n="Check",status:u="Default",onChange:l,className:i,"aria-label":t,"aria-labelledby":r}){const a=u==="Checked",o=()=>l==null?void 0:l(!a),s=d=>{(d.key===" "||d.key==="Enter")&&(d.preventDefault(),l==null||l(!a))};if(n==="Toggle")return c.jsx("div",{role:"switch","aria-checked":a,"aria-label":t,"aria-labelledby":r,tabIndex:0,onClick:o,onKeyDown:s,className:[e.default.toggleWrapper,a?e.default.toggleChecked:"",i].filter(Boolean).join(" "),children:c.jsx("div",{className:e.default.toggleTrack})});if(n==="Radio"){const d=a?e.default.radioChecked:e.default.radioDefault;return c.jsx("div",{role:"radio","aria-checked":a,"aria-label":t,"aria-labelledby":r,tabIndex:0,onClick:o,onKeyDown:s,className:[e.default.base,d,i].filter(Boolean).join(" "),children:a&&c.jsx("span",{className:e.default.radioIcon,"aria-hidden":"true"})})}const k=a?e.default.checkChecked:e.default.checkDefault;return c.jsx("div",{role:"checkbox","aria-checked":a,"aria-label":t,"aria-labelledby":r,tabIndex:0,onClick:o,onKeyDown:s,className:[e.default.base,k,i].filter(Boolean).join(" "),children:a&&c.jsx("span",{className:e.default.checkIcon,"aria-hidden":"true"})})}exports.BaseCheckRadio=f;
|
|
2
|
+
//# sourceMappingURL=index.cjs5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs5.js","sources":["../components/BaseCheckRadio/BaseCheckRadio.tsx"],"sourcesContent":["import React from 'react';\nimport styles from './BaseCheckRadio.module.css';\n\nexport type CheckRadioType = 'Check' | 'Radio' | 'Toggle';\nexport type CheckRadioStatus = 'Default' | 'Checked';\n\nexport interface BaseCheckRadioProps {\n type?: CheckRadioType;\n status?: CheckRadioStatus;\n /** Accessible label for the control. */\n 'aria-label'?: string;\n /** Associates the control with a visible label element. */\n 'aria-labelledby'?: string;\n onChange?: (checked: boolean) => void;\n className?: string;\n}\n\nexport function BaseCheckRadio({\n type = 'Check',\n status = 'Default',\n onChange,\n className,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n}: BaseCheckRadioProps) {\n const isChecked = status === 'Checked';\n\n const handleClick = () => onChange?.(!isChecked);\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === ' ' || e.key === 'Enter') {\n e.preventDefault();\n onChange?.(!isChecked);\n }\n };\n\n if (type === 'Toggle') {\n return (\n <div\n role=\"switch\"\n aria-checked={isChecked}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledby}\n tabIndex={0}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n className={[\n styles.toggleWrapper,\n isChecked ? styles.toggleChecked : '',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <div className={styles.toggleTrack} />\n </div>\n );\n }\n\n if (type === 'Radio') {\n const trackClass = isChecked ? styles.radioChecked : styles.radioDefault;\n return (\n <div\n role=\"radio\"\n aria-checked={isChecked}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledby}\n tabIndex={0}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n className={[styles.base, trackClass, className].filter(Boolean).join(' ')}\n >\n {isChecked && <span className={styles.radioIcon} aria-hidden=\"true\" />}\n </div>\n );\n }\n\n // Check (default)\n const trackClass = isChecked ? styles.checkChecked : styles.checkDefault;\n return (\n <div\n role=\"checkbox\"\n aria-checked={isChecked}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledby}\n tabIndex={0}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n className={[styles.base, trackClass, className].filter(Boolean).join(' ')}\n >\n {isChecked && <span className={styles.checkIcon} aria-hidden=\"true\" />}\n </div>\n );\n}\n"],"names":["BaseCheckRadio","type","status","onChange","className","ariaLabel","ariaLabelledby","isChecked","handleClick","handleKeyDown","e","jsx","styles","trackClass"],"mappings":"mJAiBO,SAASA,EAAe,CAC7B,KAAAC,EAAO,QACP,OAAAC,EAAS,UACT,SAAAC,EACA,UAAAC,EACA,aAAcC,EACd,kBAAmBC,CACrB,EAAwB,CACtB,MAAMC,EAAYL,IAAW,UAEvBM,EAAc,IAAML,GAAA,YAAAA,EAAW,CAACI,GAEhCE,EAAiBC,GAA2B,EAC5CA,EAAE,MAAQ,KAAOA,EAAE,MAAQ,WAC7BA,EAAE,eAAA,EACFP,GAAA,MAAAA,EAAW,CAACI,GAEhB,EAEA,GAAIN,IAAS,SACX,OACEU,EAAAA,IAAC,MAAA,CACC,KAAK,SACL,eAAcJ,EACd,aAAYF,EACZ,kBAAiBC,EACjB,SAAU,EACV,QAASE,EACT,UAAWC,EACX,UAAW,CACTG,EAAAA,QAAO,cACPL,EAAYK,EAAAA,QAAO,cAAgB,GACnCR,CAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG,EAEX,SAAAO,EAAAA,IAAC,MAAA,CAAI,UAAWC,EAAAA,QAAO,WAAA,CAAa,CAAA,CAAA,EAK1C,GAAIX,IAAS,QAAS,CACpB,MAAMY,EAAaN,EAAYK,EAAAA,QAAO,aAAeA,EAAAA,QAAO,aAC5D,OACED,EAAAA,IAAC,MAAA,CACC,KAAK,QACL,eAAcJ,EACd,aAAYF,EACZ,kBAAiBC,EACjB,SAAU,EACV,QAASE,EACT,UAAWC,EACX,UAAW,CAACG,EAAAA,QAAO,KAAMC,EAAYT,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EAEvE,YAAaO,EAAAA,IAAC,OAAA,CAAK,UAAWC,UAAO,UAAW,cAAY,MAAA,CAAO,CAAA,CAAA,CAG1E,CAGA,MAAMC,EAAaN,EAAYK,EAAAA,QAAO,aAAeA,EAAAA,QAAO,aAC5D,OACED,EAAAA,IAAC,MAAA,CACC,KAAK,WACL,eAAcJ,EACd,aAAYF,EACZ,kBAAiBC,EACjB,SAAU,EACV,QAASE,EACT,UAAWC,EACX,UAAW,CAACG,EAAAA,QAAO,KAAMC,EAAYT,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EAEvE,YAAaO,EAAAA,IAAC,OAAA,CAAK,UAAWC,UAAO,UAAW,cAAY,MAAA,CAAO,CAAA,CAAA,CAG1E"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),e=require("./index.cjs19.js");function m({variant:l="outline",size:u="sm",iconLeft:s,iconRight:n,disabled:a,className:o,children:r,...c}){const i=a?"disabled":l,d=[e.default.button,e.default[u],e.default[i],o].filter(Boolean).join(" ");return t.jsxs("button",{className:d,disabled:a,"aria-disabled":a,...c,children:[s&&t.jsx("span",{className:e.default.icon,children:s}),t.jsx("span",{className:e.default.label,children:r}),n&&t.jsx("span",{className:e.default.icon,children:n})]})}exports.Button=m;
|
|
2
|
+
//# sourceMappingURL=index.cjs6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs6.js","sources":["../components/Button/Button.tsx"],"sourcesContent":["import React from 'react';\nimport styles from './Button.module.css';\n\nexport type ButtonVariant = 'outline' | 'fill' | 'secondary' | 'text';\nexport type ButtonSize = 'sm' | 'md';\n\nexport interface ButtonProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n /** Visual variant. Defaults to 'outline'. */\n variant?: ButtonVariant;\n /**\n * Size of the button.\n * - sm → min-height 36px (Figma size=\"36\")\n * - md → min-height 48px (Figma size=\"48\")\n * Defaults to 'sm'.\n */\n size?: ButtonSize;\n /** Node rendered before the label. Sized to 24×24 px by the stylesheet. */\n iconLeft?: React.ReactNode;\n /** Node rendered after the label. Sized to 24×24 px by the stylesheet. */\n iconRight?: React.ReactNode;\n children: React.ReactNode;\n}\n\nexport function Button({\n variant = 'outline',\n size = 'sm',\n iconLeft,\n iconRight,\n disabled,\n className,\n children,\n ...props\n}: ButtonProps) {\n // When the button is disabled, the disabled visual variant takes over\n const visualVariant = disabled ? 'disabled' : variant;\n\n const classNames = [\n styles.button,\n styles[size],\n styles[visualVariant],\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <button\n className={classNames}\n disabled={disabled}\n aria-disabled={disabled}\n {...props}\n >\n {iconLeft && <span className={styles.icon}>{iconLeft}</span>}\n <span className={styles.label}>{children}</span>\n {iconRight && <span className={styles.icon}>{iconRight}</span>}\n </button>\n );\n}\n"],"names":["Button","variant","size","iconLeft","iconRight","disabled","className","children","props","visualVariant","classNames","styles","jsxs","jsx"],"mappings":"mJAwBO,SAASA,EAAO,CACrB,QAAAC,EAAU,UACV,KAAAC,EAAO,KACP,SAAAC,EACA,UAAAC,EACA,SAAAC,EACA,UAAAC,EACA,SAAAC,EACA,GAAGC,CACL,EAAgB,CAEd,MAAMC,EAAgBJ,EAAW,WAAaJ,EAExCS,EAAa,CACjBC,EAAAA,QAAO,OACPA,EAAAA,QAAOT,CAAI,EACXS,EAAAA,QAAOF,CAAa,EACpBH,CAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG,EAEX,OACEM,EAAAA,KAAC,SAAA,CACC,UAAWF,EACX,SAAAL,EACA,gBAAeA,EACd,GAAGG,EAEH,SAAA,CAAAL,GAAYU,EAAAA,IAAC,OAAA,CAAK,UAAWF,EAAAA,QAAO,KAAO,SAAAR,EAAS,EACrDU,EAAAA,IAAC,OAAA,CAAK,UAAWF,EAAAA,QAAO,MAAQ,SAAAJ,EAAS,EACxCH,GAAaS,EAAAA,IAAC,OAAA,CAAK,UAAWF,EAAAA,QAAO,KAAO,SAAAP,CAAA,CAAU,CAAA,CAAA,CAAA,CAG7D"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),a=require("./index.cjs17.js");function h(){return e.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[e.jsx("path",{d:"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"}),e.jsx("path",{d:"M13.73 21a2 2 0 0 1-3.46 0"})]})}function v(){return e.jsxs("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round","aria-hidden":"true",children:[e.jsx("line",{x1:"4",y1:"6",x2:"20",y2:"6"}),e.jsx("line",{x1:"4",y1:"12",x2:"20",y2:"12"}),e.jsx("line",{x1:"4",y1:"18",x2:"20",y2:"18"})]})}function N(){return e.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:e.jsx("path",{d:"M4 6l4 4 4-4"})})}function j({workspaceName:s="Workspace",workspaceAccount:l="Conta Atual",fullWidth:t=!1}){return e.jsxs("button",{type:"button",className:[a.default.workspace,t?a.default.workspaceFull:""].filter(Boolean).join(" "),"aria-label":`Trocar workspace: ${s}`,children:[e.jsxs("div",{className:a.default.workspaceLeft,children:[e.jsx("span",{className:a.default.statusDot,"aria-hidden":"true"}),e.jsxs("div",{className:a.default.workspaceCol,children:[e.jsx("p",{className:a.default.workspaceAccount,children:l}),e.jsx("p",{className:a.default.workspaceName,children:s})]})]}),e.jsx("span",{className:a.default.workspaceArrow,children:e.jsx(N,{})})]})}function p({userName:s,userRole:l,userAvatar:t}){const n=s?s.split(" ").slice(0,2).map(i=>i[0]).join("").toUpperCase():"?";return e.jsxs("div",{className:a.default.navUser,children:[e.jsx("div",{className:a.default.avatar,children:t?e.jsx("img",{src:t,alt:s??"Avatar",className:a.default.avatarImg}):e.jsx("span",{className:a.default.avatarInitials,children:n})}),(s||l)&&e.jsxs("div",{className:a.default.userText,children:[s&&e.jsx("p",{className:a.default.userName,children:s}),l&&e.jsx("p",{className:a.default.userRole,children:l})]})]})}function w({variant:s="Default",pageTitle:l="Portal de Gestão",workspaceName:t,workspaceAccount:n,userName:i,userRole:c,userAvatar:u,onMenuToggle:b,onNotifications:f,primaryAction:o,className:m}){const r=s==="Default",x=s==="Mobile",d=s==="MobileOpen",k=[a.default.header,r?a.default.variantDefault:"",x?a.default.variantMobile:"",d?a.default.variantMobileOpen:"",m].filter(Boolean).join(" ");return e.jsxs("header",{className:k,children:[!d&&e.jsx("h1",{className:[a.default.pageTitle,r?a.default.pageTitleDesktop:a.default.pageTitleMobile].join(" "),children:l}),r&&e.jsxs("div",{className:a.default.actions,children:[e.jsx(j,{workspaceName:t,workspaceAccount:n}),e.jsx("button",{type:"button",className:a.default.bellBtn,onClick:f,"aria-label":"Notificações",children:e.jsx(h,{})}),e.jsx(p,{userName:i,userRole:c,userAvatar:u})]}),x&&e.jsxs("div",{className:a.default.actions,children:[e.jsx("button",{type:"button",className:a.default.bellBtn,onClick:f,"aria-label":"Notificações",children:e.jsx(h,{})}),e.jsxs("button",{type:"button",className:a.default.menuBtn,onClick:b,"aria-label":"Abrir menu","aria-expanded":!1,children:[e.jsx("span",{className:a.default.menuIcon,children:e.jsx(v,{})}),"Menu"]})]}),d&&e.jsxs("div",{className:[a.default.actions,a.default.actionsMobileOpen].join(" "),children:[o&&e.jsx("button",{type:"button",className:a.default.ctaBtn,onClick:o.onClick,children:o.label}),e.jsxs("div",{className:a.default.mainActions,children:[e.jsx(j,{workspaceName:t,workspaceAccount:n,fullWidth:!0}),e.jsx(p,{userName:i,userRole:c,userAvatar:u})]})]})]})}exports.Header=w;
|
|
2
|
+
//# sourceMappingURL=index.cjs7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs7.js","sources":["../components/Header/Header.tsx"],"sourcesContent":["import React from 'react';\nimport styles from './Header.module.css';\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport type HeaderVariant = 'Default' | 'Mobile' | 'MobileOpen';\n\nexport interface HeaderProps {\n variant?: HeaderVariant;\n /** Page / section title shown on the left */\n pageTitle?: string;\n /** Workspace display name (e.g. \"Best Buy Eletronics\") */\n workspaceName?: string;\n /** Workspace account label (defaults to \"Conta Atual\") */\n workspaceAccount?: string;\n /** Logged-in user display name */\n userName?: string;\n /** Logged-in user role / subtitle */\n userRole?: string;\n /** Avatar image URL — falls back to initials */\n userAvatar?: string;\n /** Called when the Mobile hamburger \"Menu\" button is clicked */\n onMenuToggle?: () => void;\n /** Called when the bell notification button is clicked */\n onNotifications?: () => void;\n /** Primary CTA in MobileOpen expanded panel */\n primaryAction?: { label: string; onClick: () => void };\n className?: string;\n}\n\n// ─── Inline SVG icons ─────────────────────────────────────────────────────────\n\nfunction IconBell() {\n return (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9\" />\n <path d=\"M13.73 21a2 2 0 0 1-3.46 0\" />\n </svg>\n );\n}\n\nfunction IconMenu() {\n return (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" aria-hidden=\"true\">\n <line x1=\"4\" y1=\"6\" x2=\"20\" y2=\"6\" />\n <line x1=\"4\" y1=\"12\" x2=\"20\" y2=\"12\" />\n <line x1=\"4\" y1=\"18\" x2=\"20\" y2=\"18\" />\n </svg>\n );\n}\n\nfunction IconChevronDown() {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M4 6l4 4 4-4\" />\n </svg>\n );\n}\n\n// ─── Sub-components ───────────────────────────────────────────────────────────\n\nfunction WorkspaceSwitcher({\n workspaceName = 'Workspace',\n workspaceAccount = 'Conta Atual',\n fullWidth = false,\n}: {\n workspaceName?: string;\n workspaceAccount?: string;\n fullWidth?: boolean;\n}) {\n return (\n <button\n type=\"button\"\n className={[styles.workspace, fullWidth ? styles.workspaceFull : ''].filter(Boolean).join(' ')}\n aria-label={`Trocar workspace: ${workspaceName}`}\n >\n <div className={styles.workspaceLeft}>\n <span className={styles.statusDot} aria-hidden=\"true\" />\n <div className={styles.workspaceCol}>\n <p className={styles.workspaceAccount}>{workspaceAccount}</p>\n <p className={styles.workspaceName}>{workspaceName}</p>\n </div>\n </div>\n <span className={styles.workspaceArrow}>\n <IconChevronDown />\n </span>\n </button>\n );\n}\n\nfunction UserInfo({\n userName,\n userRole,\n userAvatar,\n}: {\n userName?: string;\n userRole?: string;\n userAvatar?: string;\n}) {\n const initials = userName\n ? userName\n .split(' ')\n .slice(0, 2)\n .map((w) => w[0])\n .join('')\n .toUpperCase()\n : '?';\n\n return (\n <div className={styles.navUser}>\n <div className={styles.avatar}>\n {userAvatar ? (\n <img\n src={userAvatar}\n alt={userName ?? 'Avatar'}\n className={styles.avatarImg}\n />\n ) : (\n <span className={styles.avatarInitials}>{initials}</span>\n )}\n </div>\n {(userName || userRole) && (\n <div className={styles.userText}>\n {userName && <p className={styles.userName}>{userName}</p>}\n {userRole && <p className={styles.userRole}>{userRole}</p>}\n </div>\n )}\n </div>\n );\n}\n\n// ─── Header ───────────────────────────────────────────────────────────────────\n\nexport function Header({\n variant = 'Default',\n pageTitle = 'Portal de Gestão',\n workspaceName,\n workspaceAccount,\n userName,\n userRole,\n userAvatar,\n onMenuToggle,\n onNotifications,\n primaryAction,\n className,\n}: HeaderProps) {\n const isDefault = variant === 'Default';\n const isMobile = variant === 'Mobile';\n const isMobileOpen = variant === 'MobileOpen';\n\n const rootClass = [\n styles.header,\n isDefault ? styles.variantDefault : '',\n isMobile ? styles.variantMobile : '',\n isMobileOpen ? styles.variantMobileOpen : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <header className={rootClass}>\n {/* Page title — Default + Mobile only */}\n {!isMobileOpen && (\n <h1\n className={[\n styles.pageTitle,\n isDefault ? styles.pageTitleDesktop : styles.pageTitleMobile,\n ].join(' ')}\n >\n {pageTitle}\n </h1>\n )}\n\n {/* ── Default actions ─────────────────────────────────────────────── */}\n {isDefault && (\n <div className={styles.actions}>\n <WorkspaceSwitcher\n workspaceName={workspaceName}\n workspaceAccount={workspaceAccount}\n />\n <button\n type=\"button\"\n className={styles.bellBtn}\n onClick={onNotifications}\n aria-label=\"Notificações\"\n >\n <IconBell />\n </button>\n <UserInfo\n userName={userName}\n userRole={userRole}\n userAvatar={userAvatar}\n />\n </div>\n )}\n\n {/* ── Mobile actions ──────────────────────────────────────────────── */}\n {isMobile && (\n <div className={styles.actions}>\n <button\n type=\"button\"\n className={styles.bellBtn}\n onClick={onNotifications}\n aria-label=\"Notificações\"\n >\n <IconBell />\n </button>\n <button\n type=\"button\"\n className={styles.menuBtn}\n onClick={onMenuToggle}\n aria-label=\"Abrir menu\"\n aria-expanded={false}\n >\n <span className={styles.menuIcon}>\n <IconMenu />\n </span>\n Menu\n </button>\n </div>\n )}\n\n {/* ── MobileOpen expanded panel ────────────────────────────────────── */}\n {isMobileOpen && (\n <div className={[styles.actions, styles.actionsMobileOpen].join(' ')}>\n {/* CTA */}\n {primaryAction && (\n <button\n type=\"button\"\n className={styles.ctaBtn}\n onClick={primaryAction.onClick}\n >\n {primaryAction.label}\n </button>\n )}\n\n {/* Workspace + User */}\n <div className={styles.mainActions}>\n <WorkspaceSwitcher\n workspaceName={workspaceName}\n workspaceAccount={workspaceAccount}\n fullWidth\n />\n <UserInfo\n userName={userName}\n userRole={userRole}\n userAvatar={userAvatar}\n />\n </div>\n </div>\n )}\n </header>\n );\n}\n"],"names":["IconBell","jsx","IconMenu","IconChevronDown","WorkspaceSwitcher","workspaceName","workspaceAccount","fullWidth","jsxs","styles","UserInfo","userName","userRole","userAvatar","initials","w","Header","variant","pageTitle","onMenuToggle","onNotifications","primaryAction","className","isDefault","isMobile","isMobileOpen","rootClass"],"mappings":"mJAgCA,SAASA,GAAW,CAClB,cACG,MAAA,CAAI,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OAAO,OAAO,eAAe,YAAY,OAAO,cAAc,QAAQ,eAAe,QAAQ,cAAY,OAC5J,SAAA,CAAAC,EAAAA,IAAC,OAAA,CAAK,EAAE,6CAAA,CAA8C,EACtDA,EAAAA,IAAC,OAAA,CAAK,EAAE,4BAAA,CAA6B,CAAA,EACvC,CAEJ,CAEA,SAASC,GAAW,CAClB,cACG,MAAA,CAAI,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OAAO,OAAO,eAAe,YAAY,IAAI,cAAc,QAAQ,cAAY,OAClI,SAAA,CAAAD,EAAAA,IAAC,OAAA,CAAK,GAAG,IAAI,GAAG,IAAK,GAAG,KAAK,GAAG,GAAA,CAAI,EACpCA,EAAAA,IAAC,QAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,IAAA,CAAK,EACrCA,EAAAA,IAAC,QAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,IAAA,CAAK,CAAA,EACvC,CAEJ,CAEA,SAASE,GAAkB,CACzB,OACEF,EAAAA,IAAC,MAAA,CAAI,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OAAO,OAAO,eAAe,YAAY,MAAM,cAAc,QAAQ,eAAe,QAAQ,cAAY,OAC3J,SAAAA,EAAAA,IAAC,OAAA,CAAK,EAAE,cAAA,CAAe,CAAA,CACzB,CAEJ,CAIA,SAASG,EAAkB,CACzB,cAAAC,EAAgB,YAChB,iBAAAC,EAAmB,cACnB,UAAAC,EAAY,EACd,EAIG,CACD,OACEC,EAAAA,KAAC,SAAA,CACC,KAAK,SACL,UAAW,CAACC,EAAAA,QAAO,UAAWF,EAAYE,EAAAA,QAAO,cAAgB,EAAE,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EAC7F,aAAY,qBAAqBJ,CAAa,GAE9C,SAAA,CAAAG,EAAAA,KAAC,MAAA,CAAI,UAAWC,EAAAA,QAAO,cACrB,SAAA,CAAAR,EAAAA,IAAC,OAAA,CAAK,UAAWQ,EAAAA,QAAO,UAAW,cAAY,OAAO,EACtDD,EAAAA,KAAC,MAAA,CAAI,UAAWC,EAAAA,QAAO,aACrB,SAAA,CAAAR,EAAAA,IAAC,IAAA,CAAE,UAAWQ,EAAAA,QAAO,iBAAmB,SAAAH,EAAiB,EACzDL,EAAAA,IAAC,IAAA,CAAE,UAAWQ,EAAAA,QAAO,cAAgB,SAAAJ,CAAA,CAAc,CAAA,CAAA,CACrD,CAAA,EACF,QACC,OAAA,CAAK,UAAWI,EAAAA,QAAO,eACtB,SAAAR,EAAAA,IAACE,IAAgB,CAAA,CACnB,CAAA,CAAA,CAAA,CAGN,CAEA,SAASO,EAAS,CAChB,SAAAC,EACA,SAAAC,EACA,WAAAC,CACF,EAIG,CACD,MAAMC,EAAWH,EACbA,EACG,MAAM,GAAG,EACT,MAAM,EAAG,CAAC,EACV,IAAKI,GAAMA,EAAE,CAAC,CAAC,EACf,KAAK,EAAE,EACP,YAAA,EACH,IAEJ,OACEP,EAAAA,KAAC,MAAA,CAAI,UAAWC,EAAAA,QAAO,QACrB,SAAA,CAAAR,EAAAA,IAAC,MAAA,CAAI,UAAWQ,EAAAA,QAAO,OACpB,SAAAI,EACCZ,EAAAA,IAAC,MAAA,CACC,IAAKY,EACL,IAAKF,GAAY,SACjB,UAAWF,EAAAA,QAAO,SAAA,CAAA,EAGpBR,EAAAA,IAAC,OAAA,CAAK,UAAWQ,EAAAA,QAAO,eAAiB,WAAS,EAEtD,GACEE,GAAYC,IACZJ,OAAC,MAAA,CAAI,UAAWC,EAAAA,QAAO,SACpB,SAAA,CAAAE,GAAYV,EAAAA,IAAC,IAAA,CAAE,UAAWQ,EAAAA,QAAO,SAAW,SAAAE,EAAS,EACrDC,GAAaX,EAAAA,IAAC,IAAA,CAAE,UAAWQ,EAAAA,QAAO,SAAW,SAAAG,CAAA,CAAS,CAAA,CAAA,CACzD,CAAA,EAEJ,CAEJ,CAIO,SAASI,EAAO,CACrB,QAAAC,EAAU,UACV,UAAAC,EAAY,mBACZ,cAAAb,EACA,iBAAAC,EACA,SAAAK,EACA,SAAAC,EACA,WAAAC,EACA,aAAAM,EACA,gBAAAC,EACA,cAAAC,EACA,UAAAC,CACF,EAAgB,CACd,MAAMC,EAAeN,IAAY,UAC3BO,EAAeP,IAAY,SAC3BQ,EAAeR,IAAY,aAE3BS,EAAY,CAChBjB,EAAAA,QAAO,OACPc,EAAed,EAAAA,QAAO,eAAoB,GAC1Ce,EAAef,EAAAA,QAAO,cAAoB,GAC1CgB,EAAehB,EAAAA,QAAO,kBAAoB,GAC1Ca,CAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG,EAEX,OACEd,EAAAA,KAAC,SAAA,CAAO,UAAWkB,EAEhB,SAAA,CAAA,CAACD,GACAxB,EAAAA,IAAC,KAAA,CACC,UAAW,CACTQ,EAAAA,QAAO,UACPc,EAAYd,EAAAA,QAAO,iBAAmBA,UAAO,eAAA,EAC7C,KAAK,GAAG,EAET,SAAAS,CAAA,CAAA,EAKJK,GACCf,EAAAA,KAAC,MAAA,CAAI,UAAWC,EAAAA,QAAO,QACrB,SAAA,CAAAR,EAAAA,IAACG,EAAA,CACC,cAAAC,EACA,iBAAAC,CAAA,CAAA,EAEFL,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,UAAWQ,EAAAA,QAAO,QAClB,QAASW,EACT,aAAW,eAEX,eAACpB,EAAA,CAAA,CAAS,CAAA,CAAA,EAEZC,EAAAA,IAACS,EAAA,CACC,SAAAC,EACA,SAAAC,EACA,WAAAC,CAAA,CAAA,CACF,EACF,EAIDW,GACChB,EAAAA,KAAC,MAAA,CAAI,UAAWC,EAAAA,QAAO,QACrB,SAAA,CAAAR,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,UAAWQ,EAAAA,QAAO,QAClB,QAASW,EACT,aAAW,eAEX,eAACpB,EAAA,CAAA,CAAS,CAAA,CAAA,EAEZQ,EAAAA,KAAC,SAAA,CACC,KAAK,SACL,UAAWC,EAAAA,QAAO,QAClB,QAASU,EACT,aAAW,aACX,gBAAe,GAEf,SAAA,CAAAlB,EAAAA,IAAC,QAAK,UAAWQ,UAAO,SACtB,SAAAR,MAACC,IAAS,EACZ,EAAO,MAAA,CAAA,CAAA,CAET,EACF,EAIDuB,GACCjB,EAAAA,KAAC,MAAA,CAAI,UAAW,CAACC,EAAAA,QAAO,QAASA,EAAAA,QAAO,iBAAiB,EAAE,KAAK,GAAG,EAEhE,SAAA,CAAAY,GACCpB,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,UAAWQ,EAAAA,QAAO,OAClB,QAASY,EAAc,QAEtB,SAAAA,EAAc,KAAA,CAAA,EAKnBb,EAAAA,KAAC,MAAA,CAAI,UAAWC,EAAAA,QAAO,YACrB,SAAA,CAAAR,EAAAA,IAACG,EAAA,CACC,cAAAC,EACA,iBAAAC,EACA,UAAS,EAAA,CAAA,EAEXL,EAAAA,IAACS,EAAA,CACC,SAAAC,EACA,SAAAC,EACA,WAAAC,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CAAA,CACF,CAAA,EAEJ,CAEJ"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),x=require("react"),e=require("./index.cjs15.js");function N({state:l="Default",label:n,placeholder:o,message:d,iconLabel:t,iconLeft:u,iconRight:c,value:f,onChange:m,id:j,className:b,...h}){const p=x.useId(),s=j??p,i=l==="Disabled",r=l==="Error",v=[e.default.field,l==="Hover"?e.default.hover:"",l==="Active"?e.default.active:"",i?e.default.disabled:"",r?e.default.error:"",b].filter(Boolean).join(" ");return a.jsxs("div",{className:e.default.wrapper,children:[n&&a.jsxs("div",{className:e.default.labelRow,children:[a.jsx("label",{htmlFor:s,className:[e.default.label,i?e.default.labelDisabled:""].filter(Boolean).join(" "),children:n}),t&&a.jsx("span",{className:e.default.labelIcon,"aria-hidden":"true",children:t})]}),a.jsxs("div",{className:v,children:[u&&a.jsx("span",{className:e.default.icon,"aria-hidden":"true",children:u}),a.jsx("input",{id:s,className:e.default.input,placeholder:o,disabled:i,value:f,onChange:m,"aria-invalid":r,"aria-describedby":d?`${s}-message`:void 0,...h}),c&&a.jsx("span",{className:e.default.icon,"aria-hidden":"true",children:c})]}),d&&a.jsx("p",{id:`${s}-message`,className:[e.default.message,r?e.default.messageError:""].filter(Boolean).join(" "),children:d})]})}exports.Input=N;
|
|
2
|
+
//# sourceMappingURL=index.cjs8.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs8.js","sources":["../components/Input/Input.tsx"],"sourcesContent":["import React, { useId } from 'react';\nimport styles from './Input.module.css';\n\nexport type InputState = 'Default' | 'Hover' | 'Active' | 'Disabled' | 'Error';\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange'> {\n /** Visual/interaction state. Defaults to 'Default'. */\n state?: InputState;\n /** Label text rendered above the field. */\n label?: string;\n placeholder?: string;\n /** Helper or error message rendered below the field. */\n message?: string;\n /** Info icon rendered beside the label. */\n iconLabel?: React.ReactNode;\n /** Icon rendered inside the field, left side (24×24 slot). */\n iconLeft?: React.ReactNode;\n /** Icon rendered inside the field, right side (24×24 slot). */\n iconRight?: React.ReactNode;\n value?: string;\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n}\n\nexport function Input({\n state = 'Default',\n label,\n placeholder,\n message,\n iconLabel,\n iconLeft,\n iconRight,\n value,\n onChange,\n id: idProp,\n className,\n ...props\n}: InputProps) {\n const generatedId = useId();\n const id = idProp ?? generatedId;\n\n const isDisabled = state === 'Disabled';\n const isError = state === 'Error';\n\n const fieldClass = [\n styles.field,\n state === 'Hover' ? styles.hover : '',\n state === 'Active' ? styles.active : '',\n isDisabled ? styles.disabled : '',\n isError ? styles.error : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={styles.wrapper}>\n {label && (\n <div className={styles.labelRow}>\n <label\n htmlFor={id}\n className={[styles.label, isDisabled ? styles.labelDisabled : '']\n .filter(Boolean)\n .join(' ')}\n >\n {label}\n </label>\n {iconLabel && (\n <span className={styles.labelIcon} aria-hidden=\"true\">\n {iconLabel}\n </span>\n )}\n </div>\n )}\n\n <div className={fieldClass}>\n {iconLeft && (\n <span className={styles.icon} aria-hidden=\"true\">\n {iconLeft}\n </span>\n )}\n <input\n id={id}\n className={styles.input}\n placeholder={placeholder}\n disabled={isDisabled}\n value={value}\n onChange={onChange}\n aria-invalid={isError}\n aria-describedby={message ? `${id}-message` : undefined}\n {...props}\n />\n {iconRight && (\n <span className={styles.icon} aria-hidden=\"true\">\n {iconRight}\n </span>\n )}\n </div>\n\n {message && (\n <p\n id={`${id}-message`}\n className={[styles.message, isError ? styles.messageError : '']\n .filter(Boolean)\n .join(' ')}\n >\n {message}\n </p>\n )}\n </div>\n );\n}\n"],"names":["Input","state","label","placeholder","message","iconLabel","iconLeft","iconRight","value","onChange","idProp","className","props","generatedId","useId","id","isDisabled","isError","fieldClass","styles","jsxs","jsx"],"mappings":"sKAwBO,SAASA,EAAM,CACpB,MAAAC,EAAQ,UACR,MAAAC,EACA,YAAAC,EACA,QAAAC,EACA,UAAAC,EACA,SAAAC,EACA,UAAAC,EACA,MAAAC,EACA,SAAAC,EACA,GAAIC,EACJ,UAAAC,EACA,GAAGC,CACL,EAAe,CACb,MAAMC,EAAcC,EAAAA,MAAA,EACdC,EAAKL,GAAUG,EAEfG,EAAaf,IAAU,WACvBgB,EAAUhB,IAAU,QAEpBiB,EAAa,CACjBC,EAAAA,QAAO,MACPlB,IAAU,QAAUkB,UAAO,MAAQ,GACnClB,IAAU,SAAWkB,UAAO,OAAS,GACrCH,EAAaG,EAAAA,QAAO,SAAW,GAC/BF,EAAUE,EAAAA,QAAO,MAAQ,GACzBR,CAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG,EAEX,OACES,EAAAA,KAAC,MAAA,CAAI,UAAWD,EAAAA,QAAO,QACpB,SAAA,CAAAjB,GACCkB,EAAAA,KAAC,MAAA,CAAI,UAAWD,EAAAA,QAAO,SACrB,SAAA,CAAAE,EAAAA,IAAC,QAAA,CACC,QAASN,EACT,UAAW,CAACI,EAAAA,QAAO,MAAOH,EAAaG,EAAAA,QAAO,cAAgB,EAAE,EAC7D,OAAO,OAAO,EACd,KAAK,GAAG,EAEV,SAAAjB,CAAA,CAAA,EAEFG,SACE,OAAA,CAAK,UAAWc,EAAAA,QAAO,UAAW,cAAY,OAC5C,SAAAd,CAAA,CACH,CAAA,EAEJ,EAGFe,EAAAA,KAAC,MAAA,CAAI,UAAWF,EACb,SAAA,CAAAZ,SACE,OAAA,CAAK,UAAWa,EAAAA,QAAO,KAAM,cAAY,OACvC,SAAAb,CAAA,CACH,EAEFe,EAAAA,IAAC,QAAA,CACC,GAAAN,EACA,UAAWI,EAAAA,QAAO,MAClB,YAAAhB,EACA,SAAUa,EACV,MAAAR,EACA,SAAAC,EACA,eAAcQ,EACd,mBAAkBb,EAAU,GAAGW,CAAE,WAAa,OAC7C,GAAGH,CAAA,CAAA,EAELL,SACE,OAAA,CAAK,UAAWY,EAAAA,QAAO,KAAM,cAAY,OACvC,SAAAZ,CAAA,CACH,CAAA,EAEJ,EAECH,GACCiB,EAAAA,IAAC,IAAA,CACC,GAAI,GAAGN,CAAE,WACT,UAAW,CAACI,EAAAA,QAAO,QAASF,EAAUE,EAAAA,QAAO,aAAe,EAAE,EAC3D,OAAO,OAAO,EACd,KAAK,GAAG,EAEV,SAAAf,CAAA,CAAA,CACH,EAEJ,CAEJ"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),r=require("react"),l=require("./index.cjs22.js");function b({isOpen:s,title:u,description:o,children:i,onClose:n,primaryAction:a,secondaryAction:d}){const c=r.useCallback(t=>{t.key==="Escape"&&n()},[n]);if(r.useEffect(()=>{if(!s)return;document.addEventListener("keydown",c);const t=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.removeEventListener("keydown",c),document.body.style.overflow=t}},[s,c]),!s)return null;const m=a||d;return e.jsx("div",{className:l.default.overlay,onClick:n,role:"presentation",children:e.jsxs("div",{className:l.default.modal,role:"dialog","aria-modal":"true","aria-labelledby":"modal-title","aria-describedby":o?"modal-desc":void 0,onClick:t=>t.stopPropagation(),children:[e.jsxs("div",{className:l.default.heading,children:[e.jsx("p",{id:"modal-title",className:l.default.title,children:u}),o&&e.jsx("p",{id:"modal-desc",className:l.default.description,children:o})]}),i&&e.jsx("div",{className:l.default.body,children:i}),m&&e.jsx("div",{className:l.default.actions,children:e.jsxs("div",{className:l.default.btns,children:[d&&e.jsx("button",{type:"button",className:l.default.btnSecondary,onClick:d.onClick,children:d.label}),a&&e.jsx("button",{type:"button",className:l.default.btnPrimary,onClick:a.onClick,children:a.label})]})})]})})}exports.Modal=b;
|
|
2
|
+
//# sourceMappingURL=index.cjs9.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs9.js","sources":["../components/Modal/Modal.tsx"],"sourcesContent":["import React, { useEffect, useCallback } from 'react';\nimport styles from './Modal.module.css';\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport interface ModalAction {\n label: string;\n onClick: () => void;\n}\n\nexport interface ModalProps {\n isOpen: boolean;\n title: string;\n description?: string;\n /** Customizable modal body content (e.g. radio/checkbox option list) */\n children?: React.ReactNode;\n onClose: () => void;\n primaryAction?: ModalAction;\n secondaryAction?: ModalAction;\n}\n\n// ─── Modal ────────────────────────────────────────────────────────────────────\n\nexport function Modal({\n isOpen,\n title,\n description,\n children,\n onClose,\n primaryAction,\n secondaryAction,\n}: ModalProps) {\n // Close on Escape key\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (e.key === 'Escape') onClose();\n },\n [onClose],\n );\n\n useEffect(() => {\n if (!isOpen) return;\n document.addEventListener('keydown', handleKeyDown);\n // Prevent body scroll while modal is open\n const prev = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n document.body.style.overflow = prev;\n };\n }, [isOpen, handleKeyDown]);\n\n if (!isOpen) return null;\n\n const hasActions = primaryAction || secondaryAction;\n\n return (\n <div\n className={styles.overlay}\n onClick={onClose}\n role=\"presentation\"\n >\n <div\n className={styles.modal}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"modal-title\"\n aria-describedby={description ? 'modal-desc' : undefined}\n onClick={(e) => e.stopPropagation()}\n >\n {/* Heading */}\n <div className={styles.heading}>\n <p id=\"modal-title\" className={styles.title}>\n {title}\n </p>\n {description && (\n <p id=\"modal-desc\" className={styles.description}>\n {description}\n </p>\n )}\n </div>\n\n {/* Body */}\n {children && (\n <div className={styles.body}>\n {children}\n </div>\n )}\n\n {/* Actions */}\n {hasActions && (\n <div className={styles.actions}>\n <div className={styles.btns}>\n {secondaryAction && (\n <button\n type=\"button\"\n className={styles.btnSecondary}\n onClick={secondaryAction.onClick}\n >\n {secondaryAction.label}\n </button>\n )}\n {primaryAction && (\n <button\n type=\"button\"\n className={styles.btnPrimary}\n onClick={primaryAction.onClick}\n >\n {primaryAction.label}\n </button>\n )}\n </div>\n </div>\n )}\n </div>\n </div>\n );\n}\n"],"names":["Modal","isOpen","title","description","children","onClose","primaryAction","secondaryAction","handleKeyDown","useCallback","e","useEffect","prev","hasActions","jsx","styles","jsxs"],"mappings":"sKAuBO,SAASA,EAAM,CACpB,OAAAC,EACA,MAAAC,EACA,YAAAC,EACA,SAAAC,EACA,QAAAC,EACA,cAAAC,EACA,gBAAAC,CACF,EAAe,CAEb,MAAMC,EAAgBC,EAAAA,YACnBC,GAAqB,CAChBA,EAAE,MAAQ,UAAUL,EAAA,CAC1B,EACA,CAACA,CAAO,CAAA,EAeV,GAZAM,EAAAA,UAAU,IAAM,CACd,GAAI,CAACV,EAAQ,OACb,SAAS,iBAAiB,UAAWO,CAAa,EAElD,MAAMI,EAAO,SAAS,KAAK,MAAM,SACjC,gBAAS,KAAK,MAAM,SAAW,SACxB,IAAM,CACX,SAAS,oBAAoB,UAAWJ,CAAa,EACrD,SAAS,KAAK,MAAM,SAAWI,CACjC,CACF,EAAG,CAACX,EAAQO,CAAa,CAAC,EAEtB,CAACP,EAAQ,OAAO,KAEpB,MAAMY,EAAaP,GAAiBC,EAEpC,OACEO,EAAAA,IAAC,MAAA,CACC,UAAWC,EAAAA,QAAO,QAClB,QAASV,EACT,KAAK,eAEL,SAAAW,EAAAA,KAAC,MAAA,CACC,UAAWD,EAAAA,QAAO,MAClB,KAAK,SACL,aAAW,OACX,kBAAgB,cAChB,mBAAkBZ,EAAc,aAAe,OAC/C,QAAUO,GAAMA,EAAE,gBAAA,EAGlB,SAAA,CAAAM,EAAAA,KAAC,MAAA,CAAI,UAAWD,EAAAA,QAAO,QACrB,SAAA,CAAAD,MAAC,KAAE,GAAG,cAAc,UAAWC,EAAAA,QAAO,MACnC,SAAAb,EACH,EACCC,SACE,IAAA,CAAE,GAAG,aAAa,UAAWY,UAAO,YAClC,SAAAZ,CAAA,CACH,CAAA,EAEJ,EAGCC,GACCU,EAAAA,IAAC,MAAA,CAAI,UAAWC,UAAO,KACpB,SAAAX,EACH,EAIDS,GACCC,EAAAA,IAAC,MAAA,CAAI,UAAWC,EAAAA,QAAO,QACrB,SAAAC,EAAAA,KAAC,MAAA,CAAI,UAAWD,EAAAA,QAAO,KACpB,SAAA,CAAAR,GACCO,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,UAAWC,EAAAA,QAAO,aAClB,QAASR,EAAgB,QAExB,SAAAA,EAAgB,KAAA,CAAA,EAGpBD,GACCQ,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,UAAWC,EAAAA,QAAO,WAClB,QAAST,EAAc,QAEtB,SAAAA,EAAc,KAAA,CAAA,CACjB,CAAA,CAEJ,CAAA,CACF,CAAA,CAAA,CAAA,CAEJ,CAAA,CAGN"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { colors as t } from "./index.esm2.js";
|
|
2
|
+
import { typography as p } from "./index.esm3.js";
|
|
3
|
+
import { Alert as m } from "./index.esm4.js";
|
|
4
|
+
import { BaseCheckRadio as a } from "./index.esm5.js";
|
|
5
|
+
import { Button as l } from "./index.esm6.js";
|
|
6
|
+
import { Header as i } from "./index.esm7.js";
|
|
7
|
+
import { Input as c } from "./index.esm8.js";
|
|
8
|
+
import { Modal as h } from "./index.esm9.js";
|
|
9
|
+
import { Nav as y } from "./index.esm10.js";
|
|
10
|
+
import { Pagination as k } from "./index.esm11.js";
|
|
11
|
+
import { Steps as A } from "./index.esm12.js";
|
|
12
|
+
import { Upload as H } from "./index.esm13.js";
|
|
13
|
+
export {
|
|
14
|
+
m as Alert,
|
|
15
|
+
a as BaseCheckRadio,
|
|
16
|
+
l as Button,
|
|
17
|
+
i as Header,
|
|
18
|
+
c as Input,
|
|
19
|
+
h as Modal,
|
|
20
|
+
y as Nav,
|
|
21
|
+
k as Pagination,
|
|
22
|
+
A as Steps,
|
|
23
|
+
H as Upload,
|
|
24
|
+
t as colors,
|
|
25
|
+
p as typography
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=index.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
|