- DESIGN_TOKENS.md: Complete rewrite to document --sumi-* token system - APP_SHELL.md: Update layout shell docs (glass bg, backdrop-blur, z-index) - DESIGN_DIRECTION.md: Update aesthetic direction to SUMI philosophy - .storybook/preview.tsx: Remove deleted CSS imports, update bg colors - eslint.config.js: Update color rule message from Kodo to SUMI tokens - tailwind.config.ts: Fix comment referencing deleted design-tokens.css Co-authored-by: Cursor <cursoragent@cursor.com>
1 line
2.6 KiB
JavaScript
1 line
2.6 KiB
JavaScript
import{a as n,j as m}from"./vendor-react-Dkpvlwai.js";import{d as p}from"./index-jE2AGx2y.js";const v=n.forwardRef(({className:c,value:t,activeValue:u,onValueChange:a,tabsId:s,children:f,...b},i)=>{const e=u===t,o=s?`${s}-tab-${t}`:void 0,l=s?`${s}-panel-${t}`:void 0;return m.jsx("button",{ref:i,id:o,role:"tab","aria-selected":e,"aria-controls":l,tabIndex:e?0:-1,"data-value":t,onClick:()=>a?.(t),className:p("inline-flex items-center justify-center whitespace-nowrap rounded-sm px-4 py-1.5 text-sm font-bold uppercase tracking-wider","ring-offset-background transition-all duration-[var(--sumi-duration-normal)]","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2","disabled:pointer-events-none disabled:opacity-50",e?"bg-primary text-primary-foreground":"text-muted-foreground hover:text-foreground",c),...b,children:f})});v.displayName="TabsTrigger";const g=n.forwardRef(({className:c,children:t,activeValue:u,onValueChange:a,tabsId:s,...f},b)=>{const i=e=>{const o=Array.from(e.currentTarget.querySelectorAll('[role="tab"]')),l=o.findIndex(y=>y===document.activeElement);if(l===-1)return;let d;switch(e.key){case"ArrowRight":d=(l+1)%o.length;break;case"ArrowLeft":d=(l-1+o.length)%o.length;break;case"Home":d=0;break;case"End":d=o.length-1;break;default:return}e.preventDefault(),o[d].focus();const r=o[d].getAttribute("data-value");r&&a?.(r)};return m.jsx("div",{ref:b,role:"tablist",className:p("inline-flex h-10 items-center justify-center rounded-xl bg-muted p-1 text-muted-foreground border border-border",c),onKeyDown:i,...f,children:n.Children.map(t,e=>n.isValidElement(e)&&e.type===v?n.cloneElement(e,{activeValue:u,onValueChange:a,tabsId:s}):e)})});g.displayName="TabsList";const x=n.forwardRef(({className:c,value:t,activeValue:u,tabsId:a,children:s,...f},b)=>{if(u!==t)return null;const i=a?`${a}-panel-${t}`:void 0,e=a?`${a}-tab-${t}`:void 0;return m.jsx("div",{ref:b,id:i,role:"tabpanel","aria-labelledby":e,tabIndex:0,className:p("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",c),...f,children:s})});x.displayName="TabsContent";const T=n.forwardRef(({className:c,value:t,defaultValue:u,onValueChange:a,children:s,...f},b)=>{const i=n.useId(),[e,o]=n.useState(u||""),l=t!==void 0?t:e,d=r=>{t===void 0&&o(r),a?.(r)};return m.jsx("div",{ref:b,className:c,...f,children:n.Children.map(s,r=>{if(n.isValidElement(r)){if(r.type===g)return n.cloneElement(r,{activeValue:l,onValueChange:d,tabsId:i});if(r.type===x)return n.cloneElement(r,{activeValue:l,tabsId:i})}return r})})});T.displayName="Tabs";export{T,g as a,v as b,x as c};
|