@contractspec/lib.design-system 4.1.0 → 4.3.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 +117 -1
- package/dist/browser/components/atoms/Input.js +1 -1
- package/dist/browser/components/data-view/DataViewGrid.js +1 -0
- package/dist/browser/components/data-view/DataViewList.js +1 -1
- package/dist/browser/components/data-view/DataViewRenderer.js +1 -1
- package/dist/browser/components/data-view/DataViewTable.js +1 -1
- package/dist/browser/components/data-view/collection.js +1 -0
- package/dist/browser/components/data-view/utils.js +1 -1
- package/dist/browser/components/forms/controls/Autocomplete.js +1 -1
- package/dist/browser/components/forms/controls/Select.js +1 -1
- package/dist/browser/components/forms/controls/select-options.js +1 -0
- package/dist/browser/components/molecules/Tabs.js +1 -1
- package/dist/browser/components/object-reference/DefaultObjectReferenceParts.js +1 -0
- package/dist/browser/components/object-reference/ObjectReferenceHandler.js +1 -0
- package/dist/browser/components/object-reference/ReferenceIcon.js +1 -0
- package/dist/browser/components/object-reference/actions.js +1 -0
- package/dist/browser/components/object-reference/index.js +1 -0
- package/dist/browser/components/object-reference/maps.js +1 -0
- package/dist/browser/components/object-reference/runtime.js +1 -0
- package/dist/browser/components/object-reference/types.js +0 -0
- package/dist/browser/components/object-reference/useObjectReferenceController.js +1 -0
- package/dist/browser/components/shell/AppShell.js +1 -0
- package/dist/browser/components/shell/AppShell.types.js +0 -0
- package/dist/browser/components/shell/PageOutline.js +1 -0
- package/dist/browser/components/shell/ShellSidebar.js +1 -0
- package/dist/browser/components/shell/index.js +1 -0
- package/dist/browser/components/shell/outline.js +1 -0
- package/dist/browser/components/shell/types.js +0 -0
- package/dist/browser/design-system.feature.js +1 -1
- package/dist/browser/index.js +1 -1
- package/dist/browser/renderers/form-contract/renderer.js +1 -1
- package/dist/browser/renderers/form-contract/shell.js +1 -1
- package/dist/browser/shell.js +1 -0
- package/dist/browser/theme/tailwind-css.js +5 -5
- package/dist/components/atoms/Input.js +1 -1
- package/dist/components/data-view/DataViewGrid.d.ts +12 -0
- package/dist/components/data-view/DataViewGrid.js +1 -0
- package/dist/components/data-view/DataViewGrid.native.d.ts +12 -0
- package/dist/components/data-view/DataViewList.d.ts +3 -2
- package/dist/components/data-view/DataViewList.js +1 -1
- package/dist/components/data-view/DataViewList.native.d.ts +12 -0
- package/dist/components/data-view/DataViewRenderer.d.ts +8 -2
- package/dist/components/data-view/DataViewRenderer.js +1 -1
- package/dist/components/data-view/DataViewRenderer.native.d.ts +8 -2
- package/dist/components/data-view/DataViewTable.d.ts +3 -2
- package/dist/components/data-view/DataViewTable.js +1 -1
- package/dist/components/data-view/DataViewTable.native.d.ts +3 -2
- package/dist/components/data-view/collection.d.ts +16 -0
- package/dist/components/data-view/collection.js +1 -0
- package/dist/components/data-view/utils.js +1 -1
- package/dist/components/forms/controls/Autocomplete.d.ts +9 -1
- package/dist/components/forms/controls/Autocomplete.js +1 -1
- package/dist/components/forms/controls/Autocomplete.native.d.ts +5 -1
- package/dist/components/forms/controls/Select.d.ts +7 -5
- package/dist/components/forms/controls/Select.js +1 -1
- package/dist/components/forms/controls/Select.native.d.ts +7 -5
- package/dist/components/forms/controls/index.d.ts +1 -1
- package/dist/components/forms/controls/select-options.d.ts +17 -0
- package/dist/components/forms/controls/select-options.js +1 -0
- package/dist/components/molecules/Tabs.js +1 -1
- package/dist/components/object-reference/DefaultObjectReferenceParts.d.ts +18 -0
- package/dist/components/object-reference/DefaultObjectReferenceParts.js +1 -0
- package/dist/components/object-reference/DefaultObjectReferenceParts.native.d.ts +13 -0
- package/dist/components/object-reference/ObjectReferenceHandler.d.ts +2 -0
- package/dist/components/object-reference/ObjectReferenceHandler.js +1 -0
- package/dist/components/object-reference/ObjectReferenceHandler.native.d.ts +2 -0
- package/dist/components/object-reference/ReferenceIcon.d.ts +7 -0
- package/dist/components/object-reference/ReferenceIcon.js +1 -0
- package/dist/components/object-reference/actions.d.ts +7 -0
- package/dist/components/object-reference/actions.js +1 -0
- package/dist/components/object-reference/index.d.ts +4 -0
- package/dist/components/object-reference/index.js +1 -0
- package/dist/components/object-reference/index.native.d.ts +4 -0
- package/dist/components/object-reference/maps.d.ts +8 -0
- package/dist/components/object-reference/maps.js +1 -0
- package/dist/components/object-reference/runtime.d.ts +12 -0
- package/dist/components/object-reference/runtime.js +1 -0
- package/dist/components/object-reference/types.d.ts +73 -0
- package/dist/components/object-reference/types.js +0 -0
- package/dist/components/object-reference/useObjectReferenceController.d.ts +13 -0
- package/dist/components/object-reference/useObjectReferenceController.js +1 -0
- package/dist/components/shell/AppShell.d.ts +2 -0
- package/dist/components/shell/AppShell.js +1 -0
- package/dist/components/shell/AppShell.native.d.ts +2 -0
- package/dist/components/shell/AppShell.types.d.ts +21 -0
- package/dist/components/shell/AppShell.types.js +0 -0
- package/dist/components/shell/PageOutline.d.ts +12 -0
- package/dist/components/shell/PageOutline.js +1 -0
- package/dist/components/shell/PageOutline.native.d.ts +11 -0
- package/dist/components/shell/ShellSidebar.d.ts +11 -0
- package/dist/components/shell/ShellSidebar.js +1 -0
- package/dist/components/shell/index.d.ts +5 -0
- package/dist/components/shell/index.js +1 -0
- package/dist/components/shell/index.native.d.ts +4 -0
- package/dist/components/shell/outline.d.ts +5 -0
- package/dist/components/shell/outline.js +1 -0
- package/dist/components/shell/types.d.ts +66 -0
- package/dist/components/shell/types.js +0 -0
- package/dist/design-system.feature.js +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.js +1 -1
- package/dist/native/components/atoms/Input.js +1 -1
- package/dist/native/components/atoms/Input.native.js +1 -1
- package/dist/native/components/data-view/DataViewGrid.js +1 -0
- package/dist/native/components/data-view/DataViewGrid.native.js +1 -0
- package/dist/native/components/data-view/DataViewList.js +1 -1
- package/dist/native/components/data-view/DataViewList.native.js +1 -0
- package/dist/native/components/data-view/DataViewRenderer.js +1 -1
- package/dist/native/components/data-view/DataViewRenderer.native.js +1 -1
- package/dist/native/components/data-view/DataViewTable.js +1 -1
- package/dist/native/components/data-view/DataViewTable.native.js +1 -1
- package/dist/native/components/data-view/collection.js +1 -0
- package/dist/native/components/data-view/utils.js +1 -1
- package/dist/native/components/forms/controls/Autocomplete.js +1 -1
- package/dist/native/components/forms/controls/Autocomplete.native.js +1 -1
- package/dist/native/components/forms/controls/Select.js +1 -1
- package/dist/native/components/forms/controls/Select.native.js +1 -1
- package/dist/native/components/forms/controls/select-options.js +1 -0
- package/dist/native/components/molecules/Tabs.js +1 -1
- package/dist/native/components/molecules/Tabs.native.js +1 -1
- package/dist/native/components/object-reference/DefaultObjectReferenceParts.js +1 -0
- package/dist/native/components/object-reference/DefaultObjectReferenceParts.native.js +1 -0
- package/dist/native/components/object-reference/ObjectReferenceHandler.js +1 -0
- package/dist/native/components/object-reference/ObjectReferenceHandler.native.js +1 -0
- package/dist/native/components/object-reference/ReferenceIcon.js +1 -0
- package/dist/native/components/object-reference/actions.js +1 -0
- package/dist/native/components/object-reference/index.js +1 -0
- package/dist/native/components/object-reference/index.native.js +1 -0
- package/dist/native/components/object-reference/maps.js +1 -0
- package/dist/native/components/object-reference/runtime.js +1 -0
- package/dist/native/components/object-reference/types.js +0 -0
- package/dist/native/components/object-reference/useObjectReferenceController.js +1 -0
- package/dist/native/components/shell/AppShell.js +1 -0
- package/dist/native/components/shell/AppShell.native.js +1 -0
- package/dist/native/components/shell/AppShell.types.js +0 -0
- package/dist/native/components/shell/PageOutline.js +1 -0
- package/dist/native/components/shell/PageOutline.native.js +1 -0
- package/dist/native/components/shell/ShellSidebar.js +1 -0
- package/dist/native/components/shell/index.js +1 -0
- package/dist/native/components/shell/index.native.js +1 -0
- package/dist/native/components/shell/outline.js +1 -0
- package/dist/native/components/shell/types.js +0 -0
- package/dist/native/design-system.feature.js +1 -1
- package/dist/native/index.js +1 -1
- package/dist/native/renderers/form-contract/renderer.js +1 -1
- package/dist/native/renderers/form-contract/shell.js +1 -1
- package/dist/native/shell.js +1 -0
- package/dist/native/shell.native.js +1 -0
- package/dist/native/theme/tailwind-css.js +5 -5
- package/dist/renderers/form-contract/renderer.js +1 -1
- package/dist/renderers/form-contract/shell.d.ts +9 -0
- package/dist/renderers/form-contract/shell.js +1 -1
- package/dist/shell.d.ts +1 -0
- package/dist/shell.js +1 -0
- package/dist/shell.native.d.ts +1 -0
- package/dist/theme/tailwind-css.js +5 -5
- package/package.json +355 -7
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as k,jsxs as F}from"react/jsx-runtime";import{Dialog as R,DialogContent as P,DialogHeader as B,DialogTitle as T}from"@contractspec/lib.ui-kit-web/ui/dialog";import{cn as Q}from"@contractspec/lib.ui-kit-web/ui/utils";import{MenuIcon as w,PanelRightIcon as y}from"lucide-react";import*as D from"react";import{Button as I}from"../atoms/Button";import{NavBrand as g}from"../atoms/NavBrand";import{Breadcrumbs as u}from"../molecules/Breadcrumbs";import{CommandSearchTrigger as _}from"../molecules/CommandSearchTrigger";import{PageOutline as N}from"./PageOutline";import{ShellSidebar as x}from"./ShellSidebar";function d({sections:q,activeHref:G}){return k("nav",{className:"flex flex-col gap-5","aria-label":"Application navigation",children:q.map((A,J)=>F("div",{className:"flex flex-col gap-2",children:[A.title&&k("div",{className:"font-medium text-muted-foreground text-xs uppercase tracking-wide",children:A.title}),k("div",{className:"flex flex-col gap-1",children:A.items.map((z)=>k(C,{item:z,activeHref:G},z.key??z.href??String(z.label)))})]},A.key??J))})}function C({item:q,activeHref:G,depth:A=0}){const J=q.active||Boolean(q.href)&&Boolean(G)&&(q.match==="startsWith"?G?.startsWith(q.href??""):G===q.href),z=F("span",{className:Q("inline-flex min-w-0 items-center gap-2",A>0&&"pl-4"),children:[q.icon,k("span",{className:"truncate",children:q.label}),q.badge?k("span",{className:"ml-auto text-muted-foreground text-xs",children:q.badge}):null]});return F("div",{className:"flex flex-col gap-1",children:[q.href?k("a",{href:q.href,target:q.target,"aria-current":J?"page":void 0,"aria-label":q.ariaLabel,onClick:()=>q.onSelect?.(),className:Q("rounded-xs px-2 py-2 text-sm hover:bg-accent hover:text-accent-foreground",J&&"bg-accent font-medium text-accent-foreground"),children:z}):k("button",{type:"button","aria-label":q.ariaLabel,onClick:()=>q.onSelect?.(),className:Q("rounded-xs px-2 py-2 text-left text-sm hover:bg-accent hover:text-accent-foreground",J&&"bg-accent font-medium text-accent-foreground"),children:z}),q.children?.length?k("div",{className:"flex flex-col gap-1",children:q.children.map((K)=>k(C,{item:K,activeHref:G,depth:A+1},K.key??K.href??String(K.label)))}):null]})}export function AppShell({brand:q,logo:G,title:A,homeHref:J,navigation:z=[],commands:K=[],breadcrumbs:Y=[],pageOutline:U=[],activeHref:Z,activeOutlineId:$,userMenu:V,topbarStart:M,topbarEnd:S,children:b,className:H,contentClassName:p,onNavigate:f}){const[O,E]=D.useState(!1),[v,W]=D.useState(!1),L=q??k(g,{href:J,logo:G,title:A}),X=(h=!1)=>K.length?k(_,{groups:K,placeholder:"Search or run action...",compact:h}):null;return F("div",{className:Q("min-h-svh bg-background",H),children:[k("header",{className:"sticky top-0 z-30 border-b bg-background/95 backdrop-blur-xs supports-backdrop-filter:bg-background/60",children:F("div",{className:"flex h-14 items-center gap-3 px-3 md:px-4",children:[k(I,{variant:"ghost",size:"icon",className:"md:hidden","aria-label":"Open navigation",onPress:()=>E(!0),children:k(w,{className:"h-4 w-4"})}),k("div",{className:"min-w-0 md:hidden",children:L}),k("div",{className:"hidden min-w-0 md:block",children:M}),k("div",{className:"min-w-0 flex-1",children:Y.length?k(u,{items:Y}):null}),k("div",{className:"hidden shrink-0 md:block",children:X()}),U.length?k(I,{variant:"ghost",size:"icon",className:"lg:hidden","aria-label":"Open page outline",onPress:()=>W(!0),children:k(y,{className:"h-4 w-4"})}):null,S,V]})}),F("div",{className:"grid min-h-[calc(100svh-3.5rem)] grid-cols-1 md:grid-cols-[280px_minmax(0,1fr)] lg:grid-cols-[280px_minmax(0,1fr)_240px]",children:[k("aside",{className:"hidden border-r md:block",children:k(x,{sections:z,brand:L,commandTrigger:X(),footer:V,activeHref:Z})}),k("main",{className:Q("min-w-0 px-4 py-5 md:px-6",p),children:b}),U.length?k("aside",{className:"hidden px-4 py-5 lg:block",children:k(N,{items:U,activeId:$})}):null]}),k(R,{open:O,onOpenChange:E,children:F(P,{className:"max-h-[85svh] overflow-auto sm:max-w-sm",children:[k(B,{children:k(T,{children:"Menu"})}),F("div",{className:"flex flex-col gap-4",children:[X(),k(d,{sections:z,activeHref:Z}),V]})]})}),k(R,{open:v,onOpenChange:W,children:F(P,{className:"max-h-[85svh] overflow-auto sm:max-w-sm",children:[k(B,{children:k(T,{children:"On this page"})}),k(N,{items:U,activeId:$,variant:"compact",onNavigate:()=>W(!1)})]})})]})}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import type { AppShellProps } from './AppShell.types';
|
|
2
|
+
export declare function AppShell({ brand, logo, title, navigation, commands, breadcrumbs, pageOutline, activeHref, activeOutlineId, userMenu, topbarEnd, children, className, homeHref: _homeHref, topbarStart: _topbarStart, contentClassName, onNavigate, }: AppShellProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type * as React from 'react';
|
|
2
|
+
import type { PageOutlineItem, ShellBreadcrumbItem, ShellCommandGroup, ShellNavItem, ShellNavSection } from './types';
|
|
3
|
+
export interface AppShellProps {
|
|
4
|
+
brand?: React.ReactNode;
|
|
5
|
+
logo?: React.ReactNode;
|
|
6
|
+
title?: React.ReactNode;
|
|
7
|
+
homeHref?: string;
|
|
8
|
+
navigation?: ShellNavSection[];
|
|
9
|
+
commands?: ShellCommandGroup[];
|
|
10
|
+
breadcrumbs?: ShellBreadcrumbItem[];
|
|
11
|
+
pageOutline?: PageOutlineItem[];
|
|
12
|
+
activeHref?: string;
|
|
13
|
+
activeOutlineId?: string;
|
|
14
|
+
userMenu?: React.ReactNode;
|
|
15
|
+
topbarStart?: React.ReactNode;
|
|
16
|
+
topbarEnd?: React.ReactNode;
|
|
17
|
+
children: React.ReactNode;
|
|
18
|
+
className?: string;
|
|
19
|
+
contentClassName?: string;
|
|
20
|
+
onNavigate?: (item: ShellNavItem) => void;
|
|
21
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { PageOutlineItem, PageOutlineLevel } from './types';
|
|
3
|
+
export interface PageOutlineProps extends React.HTMLAttributes<HTMLElement> {
|
|
4
|
+
items: PageOutlineItem[];
|
|
5
|
+
activeId?: string;
|
|
6
|
+
onNavigate?: (item: PageOutlineItem) => void;
|
|
7
|
+
ariaLabel?: string;
|
|
8
|
+
variant?: 'rail' | 'compact';
|
|
9
|
+
maxLevel?: PageOutlineLevel;
|
|
10
|
+
}
|
|
11
|
+
export declare function PageOutline({ items, activeId, onNavigate, ariaLabel, variant, maxLevel, className, ...props }: PageOutlineProps): import("react/jsx-runtime").JSX.Element | null;
|
|
12
|
+
export declare function usePageOutlineActiveItem(ids: string[], options?: IntersectionObserverInit): string | undefined;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as H}from"react/jsx-runtime";import{cn as S}from"@contractspec/lib.ui-kit-web/ui/utils";import*as M from"react";import{resolvePageOutlineItems as U}from"./outline";export function PageOutline({items:z,activeId:E,onNavigate:J,ariaLabel:K="On this page",variant:F="rail",maxLevel:C=3,className:B,...D}){const G=M.useMemo(()=>U(z,C),[z,C]);if(!G.length)return null;return H("nav",{"aria-label":K,className:S("text-muted-foreground text-sm",F==="rail"?"sticky top-20 max-h-[calc(100svh-6rem)] overflow-auto border-l pl-4":"rounded-md border p-3",B),...D,children:H("ol",{className:"m-0 list-none space-y-1 p-0",children:G.map((q)=>{const Q=E===q.id,T=q.href??`#${q.id}`;return H("li",{children:H("a",{href:T,"aria-current":Q?"location":void 0,onClick:()=>J?.(q),className:S("block rounded-xs px-2 py-1 transition-colors hover:bg-accent hover:text-accent-foreground",q.resolvedLevel===2&&"pl-5",q.resolvedLevel===3&&"pl-8 text-xs",Q&&"bg-accent font-medium text-accent-foreground"),children:q.label})},`${q.id}-${q.resolvedLevel}`)})})})}export function usePageOutlineActiveItem(z,E){const[J,K]=M.useState(z[0]);M.useEffect(()=>{if(!z.length||typeof IntersectionObserver>"u")return;const F=new IntersectionObserver((C)=>{const B=C.filter((D)=>D.isIntersecting).sort((D,G)=>G.intersectionRatio-D.intersectionRatio)[0];if(B?.target.id)K(B.target.id)},E??{rootMargin:"-20% 0px -65% 0px",threshold:[0,0.25,0.5,1]});for(const C of z){const B=document.getElementById(C);if(B)F.observe(B)}return()=>F.disconnect()},[z,E]);return J}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { PageOutlineItem, PageOutlineLevel } from './types';
|
|
2
|
+
export interface PageOutlineProps {
|
|
3
|
+
items: PageOutlineItem[];
|
|
4
|
+
activeId?: string;
|
|
5
|
+
onNavigate?: (item: PageOutlineItem) => void;
|
|
6
|
+
ariaLabel?: string;
|
|
7
|
+
maxLevel?: PageOutlineLevel;
|
|
8
|
+
className?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function PageOutline({ items, activeId, onNavigate, ariaLabel, maxLevel, className, }: PageOutlineProps): import("react/jsx-runtime").JSX.Element | null;
|
|
11
|
+
export declare function usePageOutlineActiveItem(ids: string[]): string | undefined;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { ShellNavSection } from './types';
|
|
3
|
+
export interface ShellSidebarProps {
|
|
4
|
+
sections: ShellNavSection[];
|
|
5
|
+
brand?: React.ReactNode;
|
|
6
|
+
commandTrigger?: React.ReactNode;
|
|
7
|
+
footer?: React.ReactNode;
|
|
8
|
+
activeHref?: string;
|
|
9
|
+
className?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function ShellSidebar({ sections, brand, commandTrigger, footer, activeHref, className, }: ShellSidebarProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as z,jsxs as O}from"react/jsx-runtime";import{Sidebar as A,SidebarContent as F,SidebarFooter as L,SidebarGroup as P,SidebarGroupContent as R,SidebarGroupLabel as B,SidebarHeader as K,SidebarMenu as X,SidebarMenuBadge as N,SidebarMenuButton as C,SidebarMenuItem as G,SidebarProvider as I,SidebarRail as T}from"@contractspec/lib.ui-kit-web/ui/sidebar";import{cn as Y}from"@contractspec/lib.ui-kit-web/ui/utils";function M(q,D){if(q.active)return!0;if(!D||!q.href)return!1;return q.match==="startsWith"?D.startsWith(q.href):D===q.href}function Z(q){return q.key??q.href??String(q.label)}function $({item:q,activeHref:D,depth:J=0}){const Q=M(q,D),V=Boolean(q.children?.length),U=O("span",{className:Y("inline-flex min-w-0 items-center gap-2",J>0&&"pl-4"),children:[q.icon,z("span",{className:"truncate",children:q.label})]});return O(G,{children:[z(C,{asChild:!!q.href,isActive:Q,"aria-label":q.href?void 0:q.ariaLabel,onClick:q.href?void 0:()=>q.onSelect?.(),children:q.href?z("a",{href:q.href,target:q.target,"aria-label":q.ariaLabel,onClick:()=>q.onSelect?.(),children:U}):U}),q.badge!=null&&z(N,{children:q.badge}),V&&z(X,{className:"mt-1",children:q.children?.map((E)=>z($,{item:E,activeHref:D,depth:J+1},Z(E)))})]})}export function ShellSidebar({sections:q,brand:D,commandTrigger:J,footer:Q,activeHref:V,className:U}){return z(I,{children:O(A,{className:U,children:[z(T,{}),O(K,{className:Y("gap-3",!D&&!J&&"hidden"),children:[D,J]}),z(F,{children:q.map((E,k)=>O(P,{children:[E.title&&z(B,{children:E.title}),z(R,{children:z(X,{children:E.items.map((W)=>z($,{item:W,activeHref:V},Z(W)))})})]},E.key??k))}),Q&&z(L,{children:Q})]})})}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { AppShell } from './AppShell';
|
|
2
|
+
export type { AppShellProps } from './AppShell.types';
|
|
3
|
+
export { PageOutline, type PageOutlineProps, usePageOutlineActiveItem, } from './PageOutline';
|
|
4
|
+
export { ShellSidebar, type ShellSidebarProps } from './ShellSidebar';
|
|
5
|
+
export type { AppShellConfig, PageOutlineItem, PageOutlineLevel, ShellBreadcrumbItem, ShellCommandGroup, ShellCommandItem, ShellNavItem, ShellNavMatch, ShellNavSection, ShellUserMenu, ShellUserMenuItem, } from './types';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{AppShell}from"./AppShell";export{PageOutline,usePageOutlineActiveItem}from"./PageOutline";export{ShellSidebar}from"./ShellSidebar";
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { AppShell } from './AppShell.native';
|
|
2
|
+
export type { AppShellProps } from './AppShell.types';
|
|
3
|
+
export { PageOutline, type PageOutlineProps, usePageOutlineActiveItem, } from './PageOutline.native';
|
|
4
|
+
export type { AppShellConfig, PageOutlineItem, PageOutlineLevel, ShellBreadcrumbItem, ShellCommandGroup, ShellCommandItem, ShellNavItem, ShellNavMatch, ShellNavSection, ShellUserMenu, ShellUserMenuItem, } from './types';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { PageOutlineItem, PageOutlineLevel } from './types';
|
|
2
|
+
export type ResolvedPageOutlineItem = PageOutlineItem & {
|
|
3
|
+
resolvedLevel: PageOutlineLevel;
|
|
4
|
+
};
|
|
5
|
+
export declare function resolvePageOutlineItems(items: PageOutlineItem[], maxLevel: PageOutlineLevel, parentLevel?: number): ResolvedPageOutlineItem[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export function resolvePageOutlineItems(n,t,r=1){return n.flatMap((e)=>{const l=Math.min(e.level??r,t),a={...e,resolvedLevel:l},i=e.children?.length?resolvePageOutlineItems(e.children,t,Math.min(l+1,t)):[];return[a,...i]})}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type * as React from 'react';
|
|
2
|
+
export type ShellNavMatch = 'exact' | 'startsWith';
|
|
3
|
+
export interface ShellNavItem {
|
|
4
|
+
key?: string;
|
|
5
|
+
label: React.ReactNode;
|
|
6
|
+
href?: string;
|
|
7
|
+
icon?: React.ReactNode;
|
|
8
|
+
badge?: React.ReactNode;
|
|
9
|
+
description?: React.ReactNode;
|
|
10
|
+
children?: ShellNavItem[];
|
|
11
|
+
active?: boolean;
|
|
12
|
+
match?: ShellNavMatch;
|
|
13
|
+
priority?: number;
|
|
14
|
+
target?: '_self' | '_blank';
|
|
15
|
+
ariaLabel?: string;
|
|
16
|
+
onSelect?: () => void;
|
|
17
|
+
commandId?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface ShellNavSection {
|
|
20
|
+
key?: string;
|
|
21
|
+
title?: React.ReactNode;
|
|
22
|
+
items: ShellNavItem[];
|
|
23
|
+
}
|
|
24
|
+
export interface ShellCommandItem {
|
|
25
|
+
id: string;
|
|
26
|
+
label: string;
|
|
27
|
+
shortcut?: string;
|
|
28
|
+
onSelect?: () => void;
|
|
29
|
+
}
|
|
30
|
+
export interface ShellCommandGroup {
|
|
31
|
+
heading?: string;
|
|
32
|
+
items: ShellCommandItem[];
|
|
33
|
+
}
|
|
34
|
+
export interface ShellBreadcrumbItem {
|
|
35
|
+
href?: string;
|
|
36
|
+
label: React.ReactNode;
|
|
37
|
+
}
|
|
38
|
+
export interface ShellUserMenuItem {
|
|
39
|
+
label: React.ReactNode;
|
|
40
|
+
href?: string;
|
|
41
|
+
onSelect?: () => void;
|
|
42
|
+
icon?: React.ReactNode;
|
|
43
|
+
danger?: boolean;
|
|
44
|
+
}
|
|
45
|
+
export interface ShellUserMenu {
|
|
46
|
+
name?: string;
|
|
47
|
+
email?: string;
|
|
48
|
+
imageUrl?: string;
|
|
49
|
+
items: ShellUserMenuItem[];
|
|
50
|
+
}
|
|
51
|
+
export type PageOutlineLevel = 1 | 2 | 3;
|
|
52
|
+
export interface PageOutlineItem {
|
|
53
|
+
id: string;
|
|
54
|
+
label: React.ReactNode;
|
|
55
|
+
href?: string;
|
|
56
|
+
level?: PageOutlineLevel;
|
|
57
|
+
children?: PageOutlineItem[];
|
|
58
|
+
}
|
|
59
|
+
export interface AppShellConfig {
|
|
60
|
+
brand?: React.ReactNode;
|
|
61
|
+
navigation?: ShellNavSection[];
|
|
62
|
+
commands?: ShellCommandGroup[];
|
|
63
|
+
breadcrumbs?: ShellBreadcrumbItem[];
|
|
64
|
+
userMenu?: React.ReactNode;
|
|
65
|
+
pageOutline?: PageOutlineItem[];
|
|
66
|
+
}
|
|
File without changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{defineFeature as g}from"@contractspec/lib.contracts-spec/features";export const DesignSystemFeature=g({meta:{key:"libs.design-system",version:"1.0.0",title:"Design System",description:"Design tokens and
|
|
1
|
+
import{defineFeature as g}from"@contractspec/lib.contracts-spec/features";export const DesignSystemFeature=g({meta:{key:"libs.design-system",version:"1.0.0",title:"Design System",description:"Design tokens, theming primitives, and composed product-surface components",domain:"design-system",owners:["@contractspec-core"],tags:["package","libs","design-system","components"],stability:"experimental"}});
|
package/dist/index.d.ts
CHANGED
|
@@ -19,6 +19,7 @@ export { Textarea } from './components/atoms/Textarea';
|
|
|
19
19
|
export { DataTable, type DataTableProps, } from './components/data-table/DataTable';
|
|
20
20
|
export { DataTableToolbar, type DataTableToolbarProps, } from './components/data-table/DataTableToolbar';
|
|
21
21
|
export { DataViewDetail } from './components/data-view/DataViewDetail';
|
|
22
|
+
export { DataViewGrid } from './components/data-view/DataViewGrid';
|
|
22
23
|
export { DataViewList } from './components/data-view/DataViewList';
|
|
23
24
|
export { DataViewRenderer } from './components/data-view/DataViewRenderer';
|
|
24
25
|
export { DataViewTable } from './components/data-view/DataViewTable';
|
|
@@ -80,6 +81,7 @@ export { SkeletonList } from './components/molecules/SkeletonList';
|
|
|
80
81
|
export { StatCard, StatCardGroup } from './components/molecules/StatCard';
|
|
81
82
|
export { StatusChip } from './components/molecules/StatusChip';
|
|
82
83
|
export { Tabs, TabsContent, type TabsContentProps, TabsList, type TabsListProps, type TabsProps, TabsTrigger, type TabsTriggerProps, } from './components/molecules/Tabs';
|
|
84
|
+
export { createCopyReferenceAction, createDefaultObjectReferenceActions, createMapsProviderHref, createMapsReferenceActions, createOpenReferenceAction, createPhoneReferenceAction, getObjectReferenceDisplayValue, type ObjectReferenceActionDescriptor, type ObjectReferenceActionEvent, type ObjectReferenceActionHandler, type ObjectReferenceCopyHandler, type ObjectReferenceDescriptor, ObjectReferenceHandler, type ObjectReferenceHandlerProps, type ObjectReferenceInteractivityVisibility, type ObjectReferenceKind, type ObjectReferenceMapsProvider, type ObjectReferenceMetadata, type ObjectReferenceOpenHrefHandler, } from './components/object-reference';
|
|
83
85
|
export { AcademyLayout } from './components/organisms/AcademyLayout';
|
|
84
86
|
export { AppHeader } from './components/organisms/AppHeader';
|
|
85
87
|
export { AppLayout } from './components/organisms/AppLayout';
|
|
@@ -107,6 +109,8 @@ export { PricingCarousel } from './components/organisms/PricingCarousel';
|
|
|
107
109
|
export { PricingSection } from './components/organisms/PricingSection';
|
|
108
110
|
export { TestimonialCarousel } from './components/organisms/TestimonialCarousel';
|
|
109
111
|
export { PackageManagerProvider, type PackageManagerProviderProps, usePackageManager, } from './components/providers/PackageManagerProvider';
|
|
112
|
+
export type { AppShellConfig, PageOutlineItem, PageOutlineLevel, ShellBreadcrumbItem, ShellCommandGroup, ShellCommandItem, ShellNavItem, ShellNavMatch, ShellNavSection, ShellUserMenu, ShellUserMenuItem, } from './components/shell';
|
|
113
|
+
export { AppShell, type AppShellProps, PageOutline, type PageOutlineProps, ShellSidebar, type ShellSidebarProps, usePageOutlineActiveItem, } from './components/shell';
|
|
110
114
|
export { ListPageTemplate } from './components/templates/lists/ListPageTemplate';
|
|
111
115
|
export { BlockQuote, Code, H1, H2, H3, H4, Large, Lead, Muted, P, Small, Text, } from './components/typography';
|
|
112
116
|
export { ComparisonView, type ComparisonViewProps, } from './components/visualization/ComparisonView';
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{AgentMonitor}from"./components/agent/AgentMonitor";export{ApprovalQueue}from"./components/agent/ApprovalQueue";export{DeleteButton,EditButton,ToggleButton,ToggleLeftButton,ToggleRightButton,ViewButton}from"./components/atoms/ActionButtons";export{Button}from"./components/atoms/Button";export{ButtonLink}from"./components/atoms/ButtonLink";export{Cta}from"./components/atoms/Cta";export{DateChip,DurationChip,PlaceChip,TimeChip}from"./components/atoms/DataChips";export{EmptyState}from"./components/atoms/EmptyState";export{ErrorState}from"./components/atoms/ErrorState";export{Input}from"./components/atoms/Input";export{InputPassword}from"./components/atoms/InputPassword";export{Link}from"./components/atoms/Link";export{LoaderCircular}from"./components/atoms/LoaderCircular";export{NavBrand}from"./components/atoms/NavBrand";export{RankBadge}from"./components/atoms/RankBadge";export{ScoreBar}from"./components/atoms/ScoreBar";export{Stepper}from"./components/atoms/Stepper";export{Textarea}from"./components/atoms/Textarea";export{DataTable}from"./components/data-table/DataTable";export{DataTableToolbar}from"./components/data-table/DataTableToolbar";export{DataViewDetail}from"./components/data-view/DataViewDetail";export{DataViewList}from"./components/data-view/DataViewList";export{DataViewRenderer}from"./components/data-view/DataViewRenderer";export{DataViewTable}from"./components/data-view/DataViewTable";export*from"./components/forms";export*from"./components/layout";export{DefinitionList}from"./components/legal/atoms/DefinitionList";export{KeyValueList}from"./components/legal/atoms/KeyValueList";export{LegalCallout}from"./components/legal/atoms/LegalCallout";export{LegalHeading}from"./components/legal/atoms/LegalHeading";export{LegalList}from"./components/legal/atoms/LegalList";export{LegalSection}from"./components/legal/atoms/LegalSection";export{LegalText}from"./components/legal/atoms/LegalText";export{ConsentItem,ConsentList}from"./components/legal/molecules/Consent";export{ContactFields}from"./components/legal/molecules/ContactFields";export{LegalMeta}from"./components/legal/molecules/LegalMeta";export{LegalTOC}from"./components/legal/molecules/LegalTOC";export*from"./components/legal/organisms/ContactForm";export*from"./components/legal/organisms/GDPRDataRequest";export*from"./components/legal/organisms/GDPRRights";export*from"./components/legal/organisms/LegalPageLayout";export{ContactTemplate}from"./components/legal/templates/ContactTemplate";export{CookiesTemplate}from"./components/legal/templates/CookiesTemplate";export{PrivacyTemplate}from"./components/legal/templates/PrivacyTemplate";export{SalesTermsTemplate}from"./components/legal/templates/SalesTermsTemplate";export{TermsTemplate}from"./components/legal/templates/TermsTemplate";export{List,ListItem}from"./components/list";export{MarketingCard,MarketingCardContent,MarketingCardDescription,MarketingCardHeader,MarketingCardTitle}from"./components/marketing/MarketingCard";export{MarketingCardsSection}from"./components/marketing/MarketingCardsSection";export{MarketingComparisonSection}from"./components/marketing/MarketingComparisonSection";export{MarketingIconCard}from"./components/marketing/MarketingIconCard";export{MarketingSection}from"./components/marketing/MarketingSection";export{MarketingStepCard}from"./components/marketing/MarketingStepCard";export{AiLinkButton}from"./components/molecules/AiLinkButton";export{Breadcrumbs}from"./components/molecules/Breadcrumbs";export{CodeBlock}from"./components/molecules/CodeBlock";export{CommandPalette}from"./components/molecules/CommandPalette";export{CommandSearchTrigger}from"./components/molecules/CommandSearchTrigger";export{CommandTabs}from"./components/molecules/CommandTabs";export{CopyButton}from"./components/molecules/CopyButton";export{DimensionScoresCard}from"./components/molecules/DimensionScoresCard";export{EntityCard}from"./components/molecules/EntityCard";export{FiltersToolbar}from"./components/molecules/FiltersToolbar";export{HoverPreview}from"./components/molecules/HoverPreview";export{HoverPreviewDoc}from"./components/molecules/hover-previews/Doc";export{HoverPreviewMedia}from"./components/molecules/hover-previews/Media";export{HoverPreviewSimple}from"./components/molecules/hover-previews/Simple";export{HoverPreviewStats}from"./components/molecules/hover-previews/Stats";export{HoverPreviewUser}from"./components/molecules/hover-previews/User";export{InstallCommand}from"./components/molecules/InstallCommand";export{LangSwitch}from"./components/molecules/LangSwitch";export{LoaderBlock}from"./components/molecules/LoaderBlock";export{MarkdownRenderer}from"./components/molecules/MarkdownRenderer";export{NavMain}from"./components/molecules/NavMain";export{NavUser}from"./components/molecules/NavUser";export{OverviewCard}from"./components/molecules/OverviewCard";export{SkeletonBlock}from"./components/molecules/SkeletonBlock";export{SkeletonCircle}from"./components/molecules/SkeletonCircle";export{SkeletonList}from"./components/molecules/SkeletonList";export{StatCard,StatCardGroup}from"./components/molecules/StatCard";export{StatusChip}from"./components/molecules/StatusChip";export{Tabs,TabsContent,TabsList,TabsTrigger}from"./components/molecules/Tabs";export{AcademyLayout}from"./components/organisms/AcademyLayout";export{AppHeader}from"./components/organisms/AppHeader";export{AppLayout}from"./components/organisms/AppLayout";export{AppSidebar}from"./components/organisms/AppSidebar";export{EmptyDataList}from"./components/organisms/EmptyDataList";export{EmptySearchResult}from"./components/organisms/EmptySearchResult";export{FAQSection}from"./components/organisms/FAQSection";export{FeatureCarousel}from"./components/organisms/FeatureCarousel";export{FeaturesSection}from"./components/organisms/FeaturesSection";export{Footer}from"./components/organisms/Footer";export{DesktopHeader,Header,MobileHeader}from"./components/organisms/Header";export{HeroResponsive}from"./components/organisms/HeroResponsive";export{HeroSection}from"./components/organisms/HeroSection";export{ListCardPage}from"./components/organisms/ListCardPage";export{ListGridPage}from"./components/organisms/ListGridPage";export{ListPageResponsive}from"./components/organisms/ListPageResponsive";export{ListTablePage}from"./components/organisms/ListTablePage";export{MarketingHeader}from"./components/organisms/MarketingHeader";export{MarketingHeaderDesktop}from"./components/organisms/MarketingHeaderDesktop";export{MarketingHeaderMobile}from"./components/organisms/MarketingHeaderMobile";export{MarketingLayout}from"./components/organisms/MarketingLayout";export{ModelComparisonView}from"./components/organisms/ModelComparisonView";export{PageHeaderResponsive}from"./components/organisms/PageHeaderResponsive";export{PricingCarousel}from"./components/organisms/PricingCarousel";export{PricingSection}from"./components/organisms/PricingSection";export{TestimonialCarousel}from"./components/organisms/TestimonialCarousel";export{PackageManagerProvider,usePackageManager}from"./components/providers/PackageManagerProvider";export{ListPageTemplate}from"./components/templates/lists/ListPageTemplate";export{BlockQuote,Code,H1,H2,H3,H4,Large,Lead,Muted,P,Small,Text}from"./components/typography";export{ComparisonView}from"./components/visualization/ComparisonView";export{TimelineView}from"./components/visualization/TimelineView";export{VisualizationCard}from"./components/visualization/VisualizationCard";export{VisualizationGrid}from"./components/visualization/VisualizationGrid";export{VisualizationRenderer}from"./components/visualization/VisualizationRenderer";export*from"./design-system.feature";export{useListUrlState}from"./hooks/useListUrlState";export*from"./i18n/translation";export{useColorScheme}from"./platform/useColorScheme";export{useReducedMotion}from"./platform/useReducedMotion";export{useResponsive}from"./platform/useResponsive";export*from"./platform/withPlatformUI";export*from"./renderers";export*from"./theme";export*from"./types/navigation";
|
|
1
|
+
export{AgentMonitor}from"./components/agent/AgentMonitor";export{ApprovalQueue}from"./components/agent/ApprovalQueue";export{DeleteButton,EditButton,ToggleButton,ToggleLeftButton,ToggleRightButton,ViewButton}from"./components/atoms/ActionButtons";export{Button}from"./components/atoms/Button";export{ButtonLink}from"./components/atoms/ButtonLink";export{Cta}from"./components/atoms/Cta";export{DateChip,DurationChip,PlaceChip,TimeChip}from"./components/atoms/DataChips";export{EmptyState}from"./components/atoms/EmptyState";export{ErrorState}from"./components/atoms/ErrorState";export{Input}from"./components/atoms/Input";export{InputPassword}from"./components/atoms/InputPassword";export{Link}from"./components/atoms/Link";export{LoaderCircular}from"./components/atoms/LoaderCircular";export{NavBrand}from"./components/atoms/NavBrand";export{RankBadge}from"./components/atoms/RankBadge";export{ScoreBar}from"./components/atoms/ScoreBar";export{Stepper}from"./components/atoms/Stepper";export{Textarea}from"./components/atoms/Textarea";export{DataTable}from"./components/data-table/DataTable";export{DataTableToolbar}from"./components/data-table/DataTableToolbar";export{DataViewDetail}from"./components/data-view/DataViewDetail";export{DataViewGrid}from"./components/data-view/DataViewGrid";export{DataViewList}from"./components/data-view/DataViewList";export{DataViewRenderer}from"./components/data-view/DataViewRenderer";export{DataViewTable}from"./components/data-view/DataViewTable";export*from"./components/forms";export*from"./components/layout";export{DefinitionList}from"./components/legal/atoms/DefinitionList";export{KeyValueList}from"./components/legal/atoms/KeyValueList";export{LegalCallout}from"./components/legal/atoms/LegalCallout";export{LegalHeading}from"./components/legal/atoms/LegalHeading";export{LegalList}from"./components/legal/atoms/LegalList";export{LegalSection}from"./components/legal/atoms/LegalSection";export{LegalText}from"./components/legal/atoms/LegalText";export{ConsentItem,ConsentList}from"./components/legal/molecules/Consent";export{ContactFields}from"./components/legal/molecules/ContactFields";export{LegalMeta}from"./components/legal/molecules/LegalMeta";export{LegalTOC}from"./components/legal/molecules/LegalTOC";export*from"./components/legal/organisms/ContactForm";export*from"./components/legal/organisms/GDPRDataRequest";export*from"./components/legal/organisms/GDPRRights";export*from"./components/legal/organisms/LegalPageLayout";export{ContactTemplate}from"./components/legal/templates/ContactTemplate";export{CookiesTemplate}from"./components/legal/templates/CookiesTemplate";export{PrivacyTemplate}from"./components/legal/templates/PrivacyTemplate";export{SalesTermsTemplate}from"./components/legal/templates/SalesTermsTemplate";export{TermsTemplate}from"./components/legal/templates/TermsTemplate";export{List,ListItem}from"./components/list";export{MarketingCard,MarketingCardContent,MarketingCardDescription,MarketingCardHeader,MarketingCardTitle}from"./components/marketing/MarketingCard";export{MarketingCardsSection}from"./components/marketing/MarketingCardsSection";export{MarketingComparisonSection}from"./components/marketing/MarketingComparisonSection";export{MarketingIconCard}from"./components/marketing/MarketingIconCard";export{MarketingSection}from"./components/marketing/MarketingSection";export{MarketingStepCard}from"./components/marketing/MarketingStepCard";export{AiLinkButton}from"./components/molecules/AiLinkButton";export{Breadcrumbs}from"./components/molecules/Breadcrumbs";export{CodeBlock}from"./components/molecules/CodeBlock";export{CommandPalette}from"./components/molecules/CommandPalette";export{CommandSearchTrigger}from"./components/molecules/CommandSearchTrigger";export{CommandTabs}from"./components/molecules/CommandTabs";export{CopyButton}from"./components/molecules/CopyButton";export{DimensionScoresCard}from"./components/molecules/DimensionScoresCard";export{EntityCard}from"./components/molecules/EntityCard";export{FiltersToolbar}from"./components/molecules/FiltersToolbar";export{HoverPreview}from"./components/molecules/HoverPreview";export{HoverPreviewDoc}from"./components/molecules/hover-previews/Doc";export{HoverPreviewMedia}from"./components/molecules/hover-previews/Media";export{HoverPreviewSimple}from"./components/molecules/hover-previews/Simple";export{HoverPreviewStats}from"./components/molecules/hover-previews/Stats";export{HoverPreviewUser}from"./components/molecules/hover-previews/User";export{InstallCommand}from"./components/molecules/InstallCommand";export{LangSwitch}from"./components/molecules/LangSwitch";export{LoaderBlock}from"./components/molecules/LoaderBlock";export{MarkdownRenderer}from"./components/molecules/MarkdownRenderer";export{NavMain}from"./components/molecules/NavMain";export{NavUser}from"./components/molecules/NavUser";export{OverviewCard}from"./components/molecules/OverviewCard";export{SkeletonBlock}from"./components/molecules/SkeletonBlock";export{SkeletonCircle}from"./components/molecules/SkeletonCircle";export{SkeletonList}from"./components/molecules/SkeletonList";export{StatCard,StatCardGroup}from"./components/molecules/StatCard";export{StatusChip}from"./components/molecules/StatusChip";export{Tabs,TabsContent,TabsList,TabsTrigger}from"./components/molecules/Tabs";export{createCopyReferenceAction,createDefaultObjectReferenceActions,createMapsProviderHref,createMapsReferenceActions,createOpenReferenceAction,createPhoneReferenceAction,getObjectReferenceDisplayValue,ObjectReferenceHandler}from"./components/object-reference";export{AcademyLayout}from"./components/organisms/AcademyLayout";export{AppHeader}from"./components/organisms/AppHeader";export{AppLayout}from"./components/organisms/AppLayout";export{AppSidebar}from"./components/organisms/AppSidebar";export{EmptyDataList}from"./components/organisms/EmptyDataList";export{EmptySearchResult}from"./components/organisms/EmptySearchResult";export{FAQSection}from"./components/organisms/FAQSection";export{FeatureCarousel}from"./components/organisms/FeatureCarousel";export{FeaturesSection}from"./components/organisms/FeaturesSection";export{Footer}from"./components/organisms/Footer";export{DesktopHeader,Header,MobileHeader}from"./components/organisms/Header";export{HeroResponsive}from"./components/organisms/HeroResponsive";export{HeroSection}from"./components/organisms/HeroSection";export{ListCardPage}from"./components/organisms/ListCardPage";export{ListGridPage}from"./components/organisms/ListGridPage";export{ListPageResponsive}from"./components/organisms/ListPageResponsive";export{ListTablePage}from"./components/organisms/ListTablePage";export{MarketingHeader}from"./components/organisms/MarketingHeader";export{MarketingHeaderDesktop}from"./components/organisms/MarketingHeaderDesktop";export{MarketingHeaderMobile}from"./components/organisms/MarketingHeaderMobile";export{MarketingLayout}from"./components/organisms/MarketingLayout";export{ModelComparisonView}from"./components/organisms/ModelComparisonView";export{PageHeaderResponsive}from"./components/organisms/PageHeaderResponsive";export{PricingCarousel}from"./components/organisms/PricingCarousel";export{PricingSection}from"./components/organisms/PricingSection";export{TestimonialCarousel}from"./components/organisms/TestimonialCarousel";export{PackageManagerProvider,usePackageManager}from"./components/providers/PackageManagerProvider";export{AppShell,PageOutline,ShellSidebar,usePageOutlineActiveItem}from"./components/shell";export{ListPageTemplate}from"./components/templates/lists/ListPageTemplate";export{BlockQuote,Code,H1,H2,H3,H4,Large,Lead,Muted,P,Small,Text}from"./components/typography";export{ComparisonView}from"./components/visualization/ComparisonView";export{TimelineView}from"./components/visualization/TimelineView";export{VisualizationCard}from"./components/visualization/VisualizationCard";export{VisualizationGrid}from"./components/visualization/VisualizationGrid";export{VisualizationRenderer}from"./components/visualization/VisualizationRenderer";export*from"./design-system.feature";export{useListUrlState}from"./hooks/useListUrlState";export*from"./i18n/translation";export{useColorScheme}from"./platform/useColorScheme";export{useReducedMotion}from"./platform/useReducedMotion";export{useResponsive}from"./platform/useResponsive";export*from"./platform/withPlatformUI";export*from"./renderers";export*from"./theme";export*from"./types/navigation";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as N}from"react/jsx-runtime";import{Input as j}from"@contractspec/lib.ui-kit-web/ui/input";import{mapKeyboardToWeb as B}from"../../lib/keyboard";import{useThemedTextField as C}from"../primitives/control";export function Input({value:
|
|
1
|
+
import{jsx as N}from"react/jsx-runtime";import{Input as j}from"@contractspec/lib.ui-kit-web/ui/input";import{mapKeyboardToWeb as B}from"../../lib/keyboard";import{useThemedTextField as C}from"../primitives/control";export function Input({value:D,defaultValue:E,onChange:G,onSubmit:O,onFocus:H,onBlur:J,placeholder:M,disabled:P,readOnly:Q,maxLength:R,name:S,className:U,keyboard:z,componentKey:X,themeVariant:Y,placeholderI18n:Z,ariaLabelI18n:$,...A}){const _=z?B(z):{},q=C({defaultComponentKey:"Input",componentKey:X,themeVariant:Y,className:U,style:A.style,placeholder:M,placeholderI18n:Z,ariaLabelI18n:$});return N(j,{...q.themed.props,..._,...A,className:q.themed.className,style:q.themed.style,value:D,defaultValue:E,onChange:G,onFocus:H,onBlur:J,placeholder:q.placeholder,"aria-label":q.ariaLabel,disabled:P,readOnly:Q,maxLength:R,name:S})}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as C}from"react/jsx-runtime";import{Input as _}from"@contractspec/lib.ui-kit/ui/input";import{mapKeyboardToNative as j}from"../../lib/keyboard";import{useThemedTextField as B}from"../primitives/control";export function Input({value:
|
|
1
|
+
import{jsx as C}from"react/jsx-runtime";import{Input as _}from"@contractspec/lib.ui-kit/ui/input";import{mapKeyboardToNative as j}from"../../lib/keyboard";import{useThemedTextField as B}from"../primitives/control";export function Input({value:A,defaultValue:D,onChange:E,onSubmit:G,onFocus:H,onBlur:J,placeholder:M,disabled:P,readOnly:Q,maxLength:R,className:U,keyboard:z,componentKey:W,themeVariant:X,placeholderI18n:Y,ariaLabelI18n:Z,...$}){const w=z?j(z):{},q=B({defaultComponentKey:"Input",componentKey:W,themeVariant:X,className:U,placeholder:M,placeholderI18n:Y,ariaLabelI18n:Z});return C(_,{...q.themed.props,...$,className:q.themed.className,value:A,defaultValue:D,onChangeText:E,onSubmitEditing:G,onFocus:H,onBlur:J,placeholder:q.placeholder,accessibilityLabel:q.ariaLabel,editable:!P&&!Q,maxLength:R,...w})}export default Input;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as r}from"react/jsx-runtime";import{cn as m}from"../../lib/utils";import{DataViewList as p}from"./DataViewList";export function DataViewGrid({spec:e,items:o,className:a,renderActions:c,onSelect:n,emptyState:s,density:t="comfortable"}){if(e.view.kind!=="grid")throw Error(`DataViewGrid received view kind "${e.view.kind}", expected "grid".`);const i=e.view,d=i.columns??3,l={...e,view:{kind:"list",layout:"card",fields:i.fields,primaryField:i.primaryField,secondaryFields:i.secondaryFields,filters:i.filters,filterScope:i.filterScope,actions:i.actions,collection:i.collection}};return r("div",{className:m("grid w-full gap-4",t==="compact"&&"gap-3",w(d),a),children:r(p,{spec:l,items:o,className:"contents",renderActions:c,onSelect:n,emptyState:s,density:t})})}function w(e){if(e<=1)return"grid-cols-1";if(e===2)return"md:grid-cols-2";if(e===4)return"md:grid-cols-2 xl:grid-cols-4";return"md:grid-cols-2 lg:grid-cols-3"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as t}from"react/jsx-runtime";import{View as l}from"react-native";import{DataViewList as m}from"./DataViewList";export function DataViewGrid({spec:i,items:a,className:r,renderActions:o,onSelect:n,emptyState:c,density:s="comfortable"}){if(i.view.kind!=="grid")throw Error(`DataViewGrid received view kind "${i.view.kind}", expected "grid".`);const e=i.view,d={...i,view:{kind:"list",layout:"card",fields:e.fields,primaryField:e.primaryField,secondaryFields:e.secondaryFields,filters:e.filters,filterScope:e.filterScope,actions:e.actions,collection:e.collection}};return t(l,{className:r,children:t(m,{spec:d,items:a,renderActions:o,onSelect:n,emptyState:c,density:s})})}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as t,jsxs as m}from"react/jsx-runtime";import{resolveTranslationString as
|
|
1
|
+
import{jsx as t,jsxs as m}from"react/jsx-runtime";import{resolveTranslationString as y,useDesignSystemTranslation as D}from"../../i18n/translation";import{cn as c}from"../../lib/utils";import{DisplayValue as u}from"./DataViewTable";export function DataViewList({spec:e,items:r,className:i,renderActions:d,onSelect:g,emptyState:v,density:p="comfortable"}){const b=D();if(e.view.kind!=="list")throw Error(`DataViewList received view kind "${e.view.kind}", expected "list".`);const n=e.view,a=n.fields,l=n.primaryField??a.find((o)=>o.key===n.primaryField)?.key??a[0]?.key;if(!r.length)return t("div",{className:c("flex w-full flex-col gap-4",i),children:v??t("div",{className:"rounded-md border border-muted-foreground/40 border-dashed p-8 text-center text-muted-foreground text-sm",children:"No records available."})});return t("div",{className:c("flex w-full flex-col",p==="compact"?"gap-2":"gap-4",i),children:r.map((o,w)=>{const f=k(o);return m("button",{type:"button",className:c("flex w-full flex-col gap-2 rounded-lg border border-muted bg-card p-4 text-left shadow-sm transition hover:border-primary/40 hover:shadow-md focus-visible:border-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40",p==="compact"&&"p-3",n.layout==="compact"&&"md:flex-row md:items-center md:gap-4"),onClick:()=>g?.(o),children:[m("div",{className:"flex flex-1 flex-col gap-1",children:[l?t("span",{className:"font-medium text-base text-foreground",children:t(u,{item:f,fields:a,fieldKey:l})}):null,t("div",{className:"flex flex-wrap gap-x-4 gap-y-1 text-muted-foreground text-sm",children:x(n,l).map((s)=>m("span",{className:"flex items-center gap-1.5",children:[t("span",{className:"font-medium text-foreground/80",children:V(a,s,b)}),t("span",{children:t(u,{item:f,fields:a,fieldKey:s})})]},s))})]}),d?t("div",{className:"flex shrink-0 items-center gap-2",children:d(o)}):null]},w)})})}function k(e){if(e&&typeof e==="object")return e;return{}}function V(e,r,i){return y(e.find((d)=>d.key===r)?.label??r,i)}function x(e,r){if(e.secondaryFields?.length)return e.secondaryFields;return e.fields.map((i)=>i.key).filter((i)=>i!==r)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as t,jsxs as k}from"react/jsx-runtime";import{Pressable as N,View as S}from"react-native";import{resolveTranslationString as T,useDesignSystemTranslation as R}from"../../i18n/translation";import{HStack as l,VStack as p}from"../layout";import{Text as o}from"../typography";import{DisplayValue as f}from"./DataViewTable";export function DataViewList({spec:e,items:i,className:r,renderActions:a,onSelect:V,emptyState:D,density:u="comfortable"}){const w=R();if(e.view.kind!=="list")throw Error(`DataViewList received view kind "${e.view.kind}", expected "list".`);const s=e.view,n=s.fields,c=s.primaryField??n[0]?.key;if(!i.length)return t(p,{className:r,children:D??t(S,{className:"rounded-md border border-muted-foreground/40 border-dashed p-8",children:t(o,{className:"text-center text-muted-foreground text-sm",children:"No records available."})})});return t(p,{className:r,gap:u==="compact"?"sm":"md",children:i.map((d,b)=>{const g=L(d);return t(N,{className:["rounded-lg border border-muted bg-card text-left shadow-sm",u==="compact"?"p-3":"p-4"].join(" "),onPress:()=>V?.(d),children:k(p,{gap:"sm",children:[c?t(o,{className:"font-medium text-base text-foreground",children:t(f,{item:g,fields:n,fieldKey:c})}):null,t(l,{className:"flex-wrap gap-x-4 gap-y-1",children:y(s,c).map((m)=>k(l,{className:"items-center gap-1.5",children:[t(o,{className:"font-medium text-foreground/80 text-sm",children:v(n,m,w)}),t(o,{className:"text-muted-foreground text-sm",children:t(f,{item:g,fields:n,fieldKey:m})})]},m))}),a?t(l,{className:"items-center gap-2",children:a(d)}):null]})},b)})})}function L(e){if(e&&typeof e==="object")return e;return{}}function v(e,i,r){return T(e.find((a)=>a.key===i)?.label??i,r)}function y(e,i){if(e.secondaryFields?.length)return e.secondaryFields;return e.fields.map((r)=>r.key).filter((r)=>r!==i)}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as W,jsxs as T,Fragment as hB}from"react/jsx-runtime";import{resolveDataViewFilters as GB}from"@contractspec/lib.contracts-spec/data-views";import{Pagination as qB}from"@contractspec/lib.ui-kit-web/ui/atoms/Pagination";import{VStack as KB}from"@contractspec/lib.ui-kit-web/ui/stack";import{Text as LB}from"@contractspec/lib.ui-kit-web/ui/text";import{Grid3X3 as IB,List as PB,Table2 as EB}from"lucide-react";import*as I from"react";import{resolveTranslationString as n,useDesignSystemTranslation as NB}from"../../i18n/translation";import{Button as V}from"../atoms/Button";import{Input as b}from"../atoms/Input";import{FiltersToolbar as RB}from"../molecules/FiltersToolbar";import{getDataViewCollectionConfig as TB,getDataViewCollectionViewModesConfig as AB,isDataViewCollectionKind as i,resolveAllowedCollectionModes as _B,resolveCollectionDensity as jB,resolveCollectionView as MB}from"./collection";import{DataViewDetail as VB}from"./DataViewDetail";import{DataViewGrid as kB}from"./DataViewGrid";import{DataViewList as SB}from"./DataViewList";import{DataViewTable as DB}from"./DataViewTable";export function DataViewRenderer({spec:B,items:H=[],item:O=null,className:U,renderActions:J,onSelect:Y,onRowClick:Z,toolbar:A,loading:q,headerActions:X,emptyState:E,footer:w,viewMode:F,defaultViewMode:C,onViewModeChange:HB,density:h,defaultDensity:g,onDensityChange:JB,search:OB,onSearchChange:y,filters:z,onFilterChange:N,pagination:K,onPageChange:p}){const k=NB(),S=I.useMemo(()=>_B(B.view),[B.view]),[QB,UB]=I.useState(C),u=F??QB??C,_=I.useMemo(()=>MB(B,u),[u,B]),[WB,YB]=I.useState(g),P=jB(B,{density:h??WB,defaultDensity:g}),ZB=TB(B.view),$B=AB(B.view),$=ZB?.toolbar,j=$?.enabled!==!1,v=$?.filters!==!1,M=$?.actions??"end",d=M==="start"||M==="both"?X:void 0,f=M==="end"||M==="both"?X:void 0,c=typeof $?.search==="object"?$.search:void 0,r=Boolean(j&&$?.search!==!1&&y),G=I.useMemo(()=>GB({filters:B.view.filters,scope:B.view.filterScope,user:bB(z)}),[z,B.view.filterScope,B.view.filters]),o=I.useMemo(()=>{if(B.view.filterScope){const Q=Object.entries(G.user).map(([L,R])=>({key:L,label:`${a(B,L)}: ${l(R)}`,onRemove:()=>{const{[L]:yB,...zB}=G.user;N?.(zB)}})),D=G.lockedChips==="hidden"?[]:Object.entries(G.locked).map(([L,R])=>({key:`locked-${L}`,label:`${a(B,L)}: ${l(R)}`,disabled:!0}));return[...Q,...D]}return z?Object.entries(z).map(([Q,D])=>({key:Q,label:`${Q}: ${String(D)}`,onRemove:()=>{const{[Q]:L,...R}=z;N?.(R)}})):[]},[z,N,G,B]),XB=B.view.filterScope?Object.keys(G.user).length>0:Boolean(z&&Object.keys(z).length>0),s=I.useMemo(()=>{const Q=i(B.view.kind)?_.spec:B;switch(Q.view.kind){case"list":return W(SB,{spec:Q,items:H,className:U,renderActions:J,onSelect:Y,emptyState:E,density:P});case"table":return W(DB,{spec:Q,items:H,className:U,onRowClick:Z,toolbar:A,loading:q,emptyState:E,headerActions:j?void 0:X,footer:w,density:P});case"detail":return W(VB,{spec:B,item:O,className:U,emptyState:E,headerActions:X});case"grid":return W(kB,{spec:Q,items:H,className:U,renderActions:J,onSelect:Y,emptyState:E,density:P});default:return W(LB,{className:U,children:n("Unsupported data view kind",k)})}},[B,_.spec,H,O,U,J,Y,Z,A,q,X,E,w,P,j,k]);if(!(B.view.kind==="list"||B.view.kind==="table"||B.view.kind==="grid"))return W(hB,{children:s});return T(KB,{gap:"lg",children:[j&&(v&&B.view.filters?.length||r||o.length||S.length>1||$?.density||d||f)?T(RB,{searchValue:OB,onSearchChange:r?y:void 0,searchPlaceholder:c?.placeholder??n("Search...",k)??"Search...",debounceMs:c?.debounceMs,activeChips:o,onClearAll:XB?()=>N?.({}):void 0,right:f,children:[d,S.length>1&&$?.viewMode!==!1?W(wB,{mode:_.mode,allowedModes:S,labels:i(B.view.kind)?$B?.labels:void 0,onChange:(Q)=>{if(Q===_.mode)return;if(F===void 0)UB(Q);HB?.(Q)}}):null,$?.density?W(FB,{density:P,onChange:(Q)=>{if(Q===P)return;if(h===void 0)YB(Q);JB?.(Q)}}):null,v?W(xB,{filters:B.view.filters,values:G.user,lockedKeys:Object.keys(G.locked),onFilterChange:N}):null]}):null,s,K&&K.total>0&&W(qB,{currentPage:K.page,totalPages:Math.ceil(K.total/K.pageSize),totalItems:K.total,itemsPerPage:K.pageSize,onPageChange:(Q)=>p?.(Q),onItemsPerPageChange:(Q)=>{p?.(1)},showItemsPerPage:!1})]})}function bB(B){if(!B)return;return Object.fromEntries(Object.entries(B??{}).filter((H)=>Boolean(H[1]&&typeof H[1]==="object"&&"kind"in H[1]&&typeof H[1].kind==="string")))}function a(B,H){return B.view.filters?.find((O)=>O.key===H)?.label??H}function l(B){if(!B)return"";if(B.kind==="single")return String(B.value);if(B.kind==="multi")return B.values.map(String).join(", ");if(B.kind==="range")return[B.from==null?"":String(B.from),B.to==null?"":String(B.to)].filter(Boolean).join(" - ");return`${B.mode}(${B.clauses.length})`}function xB({filters:B,values:H,lockedKeys:O,onFilterChange:U}){if(!B?.length||!U)return null;const J=new Set(O),Y=B.filter((Z)=>Z.type!=="search"&&!J.has(Z.key));if(Y.length===0)return null;return W("div",{className:"flex flex-wrap items-center gap-2",children:Y.map((Z)=>W(mB,{filter:Z,value:H[Z.key],values:H,onFilterChange:U},Z.key))})}function mB({filter:B,value:H,values:O,onFilterChange:U}){if(B.type==="boolean"){const J=H?.kind==="single"?H.value===!0:void 0;return T(V,{size:"sm",variant:"outline",onPress:()=>t(O,B.key,J===void 0?!0:!J,U),children:[B.label,": ",J?"Oui":"Non"]})}if(B.valueMode==="range"){const J=H?.kind==="range"?H:void 0;return T("div",{className:"flex min-w-0 items-center gap-2",children:[W(b,{type:x(B),inputMode:m(B),value:J?.from==null?"":String(J.from),onChange:(Y)=>e(O,B,"from",Y.currentTarget.value,U),placeholder:`${B.label} min`,className:"h-9 w-28"}),W(b,{type:x(B),inputMode:m(B),value:J?.to==null?"":String(J.to),onChange:(Y)=>e(O,B,"to",Y.currentTarget.value,U),placeholder:`${B.label} max`,className:"h-9 w-28"})]})}return W(b,{type:x(B),inputMode:m(B),value:H?.kind==="single"?String(H.value):"",onChange:(J)=>t(O,B.key,BB(B,J.currentTarget.value),U),placeholder:B.label,className:"h-9 w-36"})}function t(B,H,O,U){const J={...B};if(O===void 0||O==="")delete J[H];else J[H]={kind:"single",value:O};U(J)}function e(B,H,O,U,J){const Y=B[H.key],Z=Y?.kind==="range"?Y:{},A=BB(H,U),q={...Z,[O]:A};if(q.from==null&&q.to==null){const X={...B};delete X[H.key];J(X);return}J({...B,[H.key]:{kind:"range",from:q.from,to:q.to}})}function BB(B,H){if(H==="")return;switch(B.type){case"number":case"percent":case"currency":case"duration":{const O=Number(H);return Number.isFinite(O)?O:void 0}default:return H}}function x(B){switch(B.type){case"number":case"percent":case"currency":case"duration":return"number";case"date":return"date";case"time":return"time";case"datetime":return"datetime-local";default:return"text"}}function m(B){switch(B.type){case"number":case"percent":case"currency":case"duration":return"decimal";default:return}}function wB({mode:B,allowedModes:H,labels:O,onChange:U}){return W("div",{className:"flex items-center gap-1 rounded-md border bg-background p-1",children:H.map((J)=>{const Y=CB(J);return W(V,{size:"sm",variant:J===B?"default":"ghost",onPress:()=>U(J),ariaLabelI18n:O?.[J]??J,children:W(Y,{className:"h-4 w-4"})},J)})})}function FB({density:B,onChange:H}){return T("div",{className:"flex items-center gap-1 rounded-md border bg-background p-1",children:[W(V,{size:"sm",variant:B==="comfortable"?"default":"ghost",onPress:()=>H("comfortable"),children:"Comfort"}),W(V,{size:"sm",variant:B==="compact"?"default":"ghost",onPress:()=>H("compact"),children:"Compact"})]})}function CB(B){if(B==="grid")return IB;if(B==="table")return EB;return PB}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as X,jsxs as R,Fragment as xB}from"react/jsx-runtime";import{resolveDataViewFilters as KB}from"@contractspec/lib.contracts-spec/data-views";import{Pagination as qB}from"@contractspec/lib.ui-kit/ui/atoms/Pagination";import{HStack as D,VStack as HB}from"@contractspec/lib.ui-kit/ui/stack";import{Text as IB}from"@contractspec/lib.ui-kit/ui/text";import*as I from"react";import{resolveTranslationString as n,useDesignSystemTranslation as PB}from"../../i18n/translation";import{Button as k}from"../atoms/Button";import{Input as F}from"../atoms/Input";import{FiltersToolbar as EB}from"../molecules/FiltersToolbar";import{getDataViewCollectionConfig as NB,getDataViewCollectionViewModesConfig as TB,isDataViewCollectionKind as l,resolveAllowedCollectionModes as RB,resolveCollectionDensity as AB,resolveCollectionView as _B}from"./collection";import{DataViewDetail as jB}from"./DataViewDetail";import{DataViewGrid as MB}from"./DataViewGrid";import{DataViewList as DB}from"./DataViewList";import{DataViewTable as kB}from"./DataViewTable";export function DataViewRenderer({spec:B,items:J=[],item:Q=null,className:W,renderActions:O,onSelect:Y,onRowClick:Z,toolbar:A,loading:K,headerActions:G,emptyState:E,footer:w,viewMode:C,defaultViewMode:h,onViewModeChange:OB,density:y,defaultDensity:g,onDensityChange:QB,search:UB,onSearchChange:p,filters:L,onFilterChange:N,pagination:q,onPageChange:v}){const S=PB(),V=I.useMemo(()=>RB(B.view),[B.view]),[WB,XB]=I.useState(h),d=C??WB??h,_=I.useMemo(()=>_B(B,d),[d,B]),[YB,ZB]=I.useState(g),P=AB(B,{density:y??YB,defaultDensity:g}),$B=NB(B.view),GB=TB(B.view),$=$B?.toolbar,j=$?.enabled!==!1,u=$?.filters!==!1,M=$?.actions??"end",f=M==="start"||M==="both"?G:void 0,c=M==="end"||M==="both"?G:void 0,r=typeof $?.search==="object"?$.search:void 0,o=Boolean(j&&$?.search!==!1&&p),z=I.useMemo(()=>KB({filters:B.view.filters,scope:B.view.filterScope,user:SB(L)}),[L,B.view.filterScope,B.view.filters]),s=I.useMemo(()=>{if(B.view.filterScope){const U=Object.entries(z.user).map(([H,T])=>({key:H,label:`${a(B,H)}: ${t(T)}`,onRemove:()=>{const{[H]:CB,...zB}=z.user;N?.(zB)}})),b=z.lockedChips==="hidden"?[]:Object.entries(z.locked).map(([H,T])=>({key:`locked-${H}`,label:`${a(B,H)}: ${t(T)}`,disabled:!0}));return[...U,...b]}return L?Object.entries(L).map(([U,b])=>({key:U,label:`${U}: ${String(b)}`,onRemove:()=>{const{[U]:H,...T}=L;N?.(T)}})):[]},[L,N,z,B]),LB=B.view.filterScope?Object.keys(z.user).length>0:Boolean(L&&Object.keys(L).length>0),i=I.useMemo(()=>{const U=l(B.view.kind)?_.spec:B;switch(U.view.kind){case"list":return X(DB,{spec:U,items:J,className:W,renderActions:O,onSelect:Y,emptyState:E,density:P});case"table":return X(kB,{spec:U,items:J,className:W,onRowClick:Z,toolbar:A,loading:K,emptyState:E,headerActions:j?void 0:G,footer:w,density:P});case"detail":return X(jB,{spec:B,item:Q,className:W,emptyState:E,headerActions:G});case"grid":return X(MB,{spec:U,items:J,className:W,renderActions:O,onSelect:Y,emptyState:E,density:P});default:return X(IB,{className:W,children:n("Unsupported data view kind",S)})}},[B,_.spec,J,Q,W,O,Y,Z,A,K,G,E,w,P,j,S]);if(!(B.view.kind==="list"||B.view.kind==="table"||B.view.kind==="grid"))return X(xB,{children:i});return R(HB,{gap:"lg",children:[j&&(u&&B.view.filters?.length||o||s.length||V.length>1||$?.density||f||c)?R(EB,{searchValue:UB,onSearchChange:o?p:void 0,searchPlaceholder:r?.placeholder??n("Search...",S)??"Search...",debounceMs:r?.debounceMs,activeChips:s,onClearAll:LB?()=>N?.({}):void 0,right:c,children:[f,V.length>1&&$?.viewMode!==!1?X(FB,{mode:_.mode,allowedModes:V,labels:l(B.view.kind)?GB?.labels:void 0,onChange:(U)=>{if(U===_.mode)return;if(C===void 0)XB(U);OB?.(U)}}):null,$?.density?X(mB,{density:P,onChange:(U)=>{if(U===P)return;if(y===void 0)ZB(U);QB?.(U)}}):null,u?X(VB,{filters:B.view.filters,values:z.user,lockedKeys:Object.keys(z.locked),onFilterChange:N}):null]}):null,i,q&&q.total>0?X(qB,{currentPage:q.page,totalPages:Math.ceil(q.total/q.pageSize),totalItems:q.total,itemsPerPage:q.pageSize,onPageChange:(U)=>v?.(U),onItemsPerPageChange:(U)=>{v?.(1)},showItemsPerPage:!1}):null]})}function SB(B){if(!B)return;return Object.fromEntries(Object.entries(B??{}).filter((J)=>Boolean(J[1]&&typeof J[1]==="object"&&"kind"in J[1]&&typeof J[1].kind==="string")))}function a(B,J){return B.view.filters?.find((Q)=>Q.key===J)?.label??J}function t(B){if(!B)return"";if(B.kind==="single")return String(B.value);if(B.kind==="multi")return B.values.map(String).join(", ");if(B.kind==="range")return[B.from==null?"":String(B.from),B.to==null?"":String(B.to)].filter(Boolean).join(" - ");return`${B.mode}(${B.clauses.length})`}function VB({filters:B,values:J,lockedKeys:Q,onFilterChange:W}){if(!B?.length||!W)return null;const O=new Set(Q),Y=B.filter((Z)=>Z.type!=="search"&&!O.has(Z.key));if(Y.length===0)return null;return X(D,{className:"flex flex-wrap items-center gap-2",children:Y.map((Z)=>X(bB,{filter:Z,value:J[Z.key],values:J,onFilterChange:W},Z.key))})}function bB({filter:B,value:J,values:Q,onFilterChange:W}){if(B.type==="boolean"){const O=J?.kind==="single"?J.value===!0:void 0;return R(k,{size:"sm",variant:"outline",onPress:()=>e(Q,B.key,O===void 0?!0:!O,W),children:[B.label,": ",O?"Oui":"Non"]})}if(B.valueMode==="range"){const O=J?.kind==="range"?J:void 0;return R(D,{className:"items-center gap-2",children:[X(F,{value:O?.from==null?"":String(O.from),onChange:(Y)=>BB(Q,B,"from",x(Y),W),placeholder:`${B.label} min`,keyboard:m(B),className:"h-9 w-28"}),X(F,{value:O?.to==null?"":String(O.to),onChange:(Y)=>BB(Q,B,"to",x(Y),W),placeholder:`${B.label} max`,keyboard:m(B),className:"h-9 w-28"})]})}return X(F,{value:J?.kind==="single"?String(J.value):"",onChange:(O)=>e(Q,B.key,JB(B,x(O)),W),placeholder:B.label,keyboard:m(B),className:"h-9 w-36"})}function e(B,J,Q,W){const O={...B};if(Q===void 0||Q==="")delete O[J];else O[J]={kind:"single",value:Q};W(O)}function BB(B,J,Q,W,O){const Y=B[J.key],Z=Y?.kind==="range"?Y:{},A=JB(J,W),K={...Z,[Q]:A};if(K.from==null&&K.to==null){const G={...B};delete G[J.key];O(G);return}O({...B,[J.key]:{kind:"range",from:K.from,to:K.to}})}function JB(B,J){if(J==="")return;switch(B.type){case"number":case"percent":case"currency":case"duration":{const Q=Number(J);return Number.isFinite(Q)?Q:void 0}default:return J}}function m(B){switch(B.type){case"number":case"percent":case"currency":case"duration":return{kind:"decimal"};default:return}}function x(B){return typeof B==="string"?B:B.currentTarget.value}function FB({mode:B,allowedModes:J,labels:Q,onChange:W}){return X(D,{className:"items-center gap-1",children:J.map((O)=>X(k,{size:"sm",variant:O===B?"default":"ghost",onPress:()=>W(O),children:Q?.[O]??O},O))})}function mB({density:B,onChange:J}){return R(D,{className:"items-center gap-1",children:[X(k,{size:"sm",variant:B==="comfortable"?"default":"ghost",onPress:()=>J("comfortable"),children:"Comfort"}),X(k,{size:"sm",variant:B==="compact"?"default":"ghost",onPress:()=>J("compact"),children:"Compact"})]})}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as E,jsxs as
|
|
1
|
+
import{jsx as E,jsxs as _}from"react/jsx-runtime";import{useDataViewTable as C}from"@contractspec/lib.presentation-runtime-react";import{HStack as K,VStack as R}from"@contractspec/lib.ui-kit-web/ui/stack";import{Text as Z}from"@contractspec/lib.ui-kit-web/ui/text";import*as $ from"react";import{resolveTranslationString as X,useDesignSystemTranslation as g}from"../../i18n/translation";import{DataTable as D}from"../data-table/DataTable";import{DataViewFormattedValue as B,getAtPath as V}from"./utils";export function DataViewTable({spec:q,items:J,className:L,onRowClick:G,toolbar:O,loading:H,emptyState:P,headerActions:N,footer:A,density:Q}){const U=g();if(q.view.kind!=="table")throw Error(`DataViewTable received view kind "${q.view.kind}", expected "table".`);const Y=$.useMemo(()=>Q&&q.view.kind==="table"?{...q,view:{...q.view,density:Q}}:q,[Q,q]),M=Y.view,F=$.useMemo(()=>(M.rowExpansion?.fields??[]).map((z)=>M.fields.find((I)=>I.key===z)).filter((z)=>Boolean(z)),[M.fields,M.rowExpansion?.fields]),h=C({spec:Y,data:J,renderValue:({value:z,field:I})=>E(B,{value:z,format:I.format}),renderExpandedContent:F.length>0?({item:z,fields:I})=>E(R,{gap:"sm",className:"py-2",children:I.map((W)=>_(K,{justify:"between",align:"start",children:[E(Z,{className:"font-medium text-muted-foreground text-sm",children:X(W.label,U)}),E(Z,{className:"text-right text-sm",children:E(DisplayValue,{item:z,fields:I,fieldKey:W.key})})]},W.key))}):void 0});return E(D,{controller:h,className:L,title:X(q.meta.title,U),description:X(q.meta.description,U),toolbar:O,loading:H,headerActions:N,emptyState:P,footer:A,onRowPress:G?(z)=>G(z.original):void 0})}function b(q,J){return q.find((L)=>L.key===J)}export function DisplayValue({item:q,fields:J,fieldKey:L}){const G=b(J,L);if(!G)return"";const O=V(q,G.dataPath);return E(B,{value:O,format:G.format})}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as E,jsxs as
|
|
1
|
+
import{jsx as E,jsxs as _}from"react/jsx-runtime";import{useDataViewTable as C}from"@contractspec/lib.presentation-runtime-react";import{HStack as K,VStack as R}from"@contractspec/lib.ui-kit/ui/stack";import{Text as Z}from"@contractspec/lib.ui-kit/ui/text";import*as $ from"react";import{resolveTranslationString as X,useDesignSystemTranslation as b}from"../../i18n/translation";import{DataTable as g}from"../data-table/DataTable";import{DataViewFormattedValue as B,getAtPath as D}from"./utils";export function DataViewTable({spec:q,items:J,className:L,onRowClick:G,toolbar:O,loading:H,emptyState:P,headerActions:N,footer:A,density:Q}){const U=b();if(q.view.kind!=="table")throw Error(`DataViewTable received view kind "${q.view.kind}", expected "table".`);const Y=$.useMemo(()=>Q&&q.view.kind==="table"?{...q,view:{...q.view,density:Q}}:q,[Q,q]),M=Y.view,F=$.useMemo(()=>(M.rowExpansion?.fields??[]).map((z)=>M.fields.find((I)=>I.key===z)).filter((z)=>Boolean(z)),[M.fields,M.rowExpansion?.fields]),h=C({spec:Y,data:J,renderValue:({value:z,field:I})=>E(B,{value:z,format:I.format}),renderExpandedContent:F.length>0?({item:z,fields:I})=>E(R,{gap:"sm",className:"py-2",children:I.map((W)=>_(K,{justify:"between",align:"start",children:[E(Z,{className:"font-medium text-muted-foreground text-sm",children:X(W.label,U)}),E(Z,{className:"text-right text-sm",children:E(DisplayValue,{item:z,fields:I,fieldKey:W.key})})]},W.key))}):void 0});return E(g,{controller:h,className:L,title:X(q.meta.title,U),description:X(q.meta.description,U),toolbar:O,loading:H,headerActions:N,emptyState:P,footer:A,onRowPress:G?(z)=>G(z.original):void 0})}function V(q,J){return q.find((L)=>L.key===J)}export function DisplayValue({item:q,fields:J,fieldKey:L}){const G=V(J,L);if(!G)return"";const O=D(q,G.dataPath);return E(B,{value:O,format:G.format})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const F=["list","grid","table"];export function isDataViewCollectionKind(h){return h==="list"||h==="grid"||h==="table"}export function resolveAllowedCollectionModes(h){const x=getDataViewCollectionConfig(h);if(!x||!isDataViewCollectionKind(h.kind))return isDataViewCollectionKind(h.kind)?[h.kind]:[];const z=getDataViewCollectionViewModesConfig(h),B=z?.allowedModes?.filter(K);if(B?.length)return P(B);if(x.toolbar?.viewMode===!0)return F;return z?F:[h.kind]}export function getDataViewCollectionConfig(h){if(!isDataViewCollectionKind(h.kind))return;return h.collection}export function getDataViewCollectionViewModesConfig(h){const x=getDataViewCollectionConfig(h),z=x?.toolbar?.viewMode;if(x?.viewModes)return x.viewModes;return typeof z==="object"?z:void 0}export function resolveCollectionView(h,x){const z=resolveAllowedCollectionModes(h.view),B=H(h.view,z),G=x&&z.includes(x)?x:B;return{spec:{...h,view:J(h.view,G)},mode:G,allowedModes:z}}export function resolveCollectionDensity(h,x={}){const z=h.view.kind==="table"?h.view.density:void 0;return x.density??z??getDataViewCollectionConfig(h.view)?.density??x.defaultDensity??"comfortable"}function H(h,x){const z=isDataViewCollectionKind(h.kind)&&getDataViewCollectionViewModesConfig(h)?.defaultMode;if(z&&x.includes(z))return z;if(isDataViewCollectionKind(h.kind)&&x.includes(h.kind))return h.kind;return x[0]??"list"}function J(h,x){const z=getDataViewCollectionConfig(h),B={fields:h.fields,primaryField:h.primaryField,secondaryFields:h.secondaryFields,filters:h.filters,filterScope:h.filterScope,actions:h.actions,collection:z};if(x==="list")return{...B,kind:"list",layout:h.kind==="list"?h.layout:"compact"};if(x==="grid")return{...B,kind:"grid",columns:h.kind==="grid"?h.columns:void 0};if(h.kind==="table")return{...h,...B,kind:"table"};return{...B,kind:"table",density:z?.density}}function K(h){return h==="list"||h==="grid"||h==="table"}function P(h){return F.filter((x)=>h.includes(x))}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as l}from"react/jsx-runtime";import{MarkdownRenderer as u}from"../molecules/MarkdownRenderer";export function getAtPath(n,t){if(!n)return;if(!t)return n;const e=t.replace(/\[(\d+)\]/g,".$1").split(".").filter(Boolean);let i=n;for(const r of e){if(i==null||typeof i!=="object"&&!Array.isArray(i))return;i=i[r]}return i}export function DataViewFormattedValue({value:n,format:t}){if(n==null)return"";switch(typeof t==="string"?t:t?.type){case"boolean":return n?"Yes":"No";case"number":return m(n,t);case"currency":return d(n,t);case"percent":case"percentage":return p(n,t);case"date":return o(n,typeof t==="object"&&t.type==="date"?t:{dateStyle:"medium"});case"time":return o(n,typeof t==="object"&&t.type==="time"?t:{timeStyle:"short"});case"datetime":case"dateTime":return o(n,typeof t==="object"&&t.type==="datetime"?t:{dateStyle:"medium",timeStyle:"short"});case"duration":return g(n,t);case"markdown":return l(u,{content:n});default:return String(n)}}function m(n,t){if(typeof n!=="number")return String(n);const e=typeof t==="object"&&t.type==="number"?t:void 0;return new Intl.NumberFormat(e?.locale,{minimumFractionDigits:e?.minimumFractionDigits,maximumFractionDigits:e?.maximumFractionDigits,useGrouping:e?.useGrouping,notation:e?.notation,signDisplay:e?.signDisplay}).format(n)}function d(n,t){if(typeof n!=="number")return String(n);const e=typeof t==="object"&&t.type==="currency"?t:void 0;return new Intl.NumberFormat(e?.locale,{style:"currency",currency:e?.currency??"USD",currencyDisplay:e?.currencyDisplay,minimumFractionDigits:e?.rounded?0:e?.minimumFractionDigits,maximumFractionDigits:e?.rounded?0:e?.maximumFractionDigits,useGrouping:e?.useGrouping,notation:e?.notation,signDisplay:e?.signDisplay}).format(n)}function p(n,t){if(typeof n!=="number")return String(n);const e=typeof t==="object"&&t.type==="percent"?t:void 0,i=e?.valueScale==="whole"?n/100:n;return new Intl.NumberFormat(e?.locale,{style:"percent",minimumFractionDigits:e?.minimumFractionDigits??1,maximumFractionDigits:e?.maximumFractionDigits??1,useGrouping:e?.useGrouping,notation:e?.notation,signDisplay:e?.signDisplay}).format(i)}function o(n,t){const{locale:e,...i}=t;if(n instanceof Date)return new Intl.DateTimeFormat(e,i).format(n);if(typeof n==="string"||typeof n==="number"){const r=new Date(n);if(!Number.isNaN(r.getTime()))return new Intl.DateTimeFormat(e,i).format(r)}return String(n??"")}function g(n,t){if(typeof n!=="number")return String(n);const e=typeof t==="object"&&t.type==="duration"?t:void 0,i=e?.unit??"second";if(e?.display==="digital")return y(f(n,i));return new Intl.NumberFormat(e?.locale,{style:"unit",unit:i,unitDisplay:e?.display==="narrow"?"narrow":e?.display,maximumFractionDigits:2}).format(n)}function y(n){const t=n<0?"-":"",e=Math.round(Math.abs(n)),i=Math.floor(e/3600),r=Math.floor(e%3600/60),c=e%60,s=[r,c].map((a)=>String(a).padStart(2,"0")).join(":");return i>0?`${t}${i}:${s}`:`${t}${s}`}function f(n,t){switch(t){case"millisecond":return n/1000;case"minute":return n*60;case"hour":return n*3600;case"day":return n*86400;case"week":return n*604800;case"month":return n*2629746;case"year":return n*31556952;case"second":default:return n}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as v}from"react/jsx-runtime";import{Combobox as I}from"@contractspec/lib.ui-kit-web/ui/combobox";import{useThemedPrimitive as T,useTranslatedText as b}from"../../primitives/themed";function H(E){return typeof E==="string"?E:String(E??"")}function g(E,U){const F=new Set,J=[];for(const L of[...U,...E]){const M=H(L.value);if(F.has(M))continue;F.add(M);J.push(L)}return J}export function Autocomplete({query:E,options:U,selectedOptions:F,onQueryChange:J,onSelectOption:L,onRemoveOption:M,multiple:W,placeholder:X,placeholderI18n:Y,readOnly:_,disabled:j,className:q,componentKey:w,themeVariant:D,emptyText:K="No results found.",loadingText:N="Loading options...",errorText:Q="Unable to load options.",loading:R,error:Z,id:S,name:k,"aria-invalid":C,"aria-describedby":B}){const A=b(),$=T({defaultComponentKey:"Autocomplete",componentKey:w,themeVariant:D,className:q}),f=g(U,F),P=new Map(f.map((z)=>[H(z.value),z]));return v(I,{...$.props,id:S,name:k,className:$.className,options:f.map((z)=>({value:H(z.value),label:A(z.labelI18n)??z.labelI18n,description:z.descriptionI18n?A(z.descriptionI18n)??z.descriptionI18n:void 0,disabled:z.disabled})),value:W?void 0:H(F[0]?.value??""),selectedValues:W?F.map((z)=>H(z.value)):void 0,query:E,onQueryChange:J,onValueChange:(z)=>{const G=P.get(z);if(G)L?.(G)},onRemoveValue:(z)=>{const G=P.get(z);if(G)M?.(G)},multiple:W,placeholder:A(Y??X),searchPlaceholder:A(Y??X),emptyText:A(K),loadingText:A(N),errorText:A(Q),loading:R,error:Z?A(Z):null,readOnly:_,disabled:j,"aria-invalid":C,"aria-describedby":B})}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as A,jsxs as
|
|
1
|
+
import{jsx as A,jsxs as w}from"react/jsx-runtime";import{Text as F}from"@contractspec/lib.ui-kit/ui/text";import{Button as W}from"../../atoms/Button";import{Input as S}from"../../atoms/Input";import{HStack as V,VStack as X}from"../../layout/Stack";import{useThemedPrimitive as b,useTranslatedText as f}from"../../primitives/themed";function Y(E){return typeof E==="string"?E:String(E??"")}export function Autocomplete({query:E,options:L,selectedOptions:M,onQueryChange:Z,onSelectOption:$,onRemoveOption:H,multiple:P,placeholder:q,placeholderI18n:C,readOnly:G,disabled:J,className:K,componentKey:N,themeVariant:Q,emptyText:R="No results found.",loadingText:B="Loading options...",errorText:I="Unable to load options.",loading:k,error:U}){const D=f(),g=b({defaultComponentKey:"Autocomplete",componentKey:N,themeVariant:Q,className:K});return w(X,{gap:"sm",className:g.className,children:[A(S,{value:E,onChange:(z)=>{if(typeof z==="string")Z?.(z)},placeholder:D(C??q),disabled:J||G}),A(X,{gap:"xs",children:k?A(F,{children:D(B)}):U?A(F,{children:D(U)??D(I)}):L.length?L.map((z)=>A(W,{variant:"ghost",onPress:()=>$?.(z),disabled:J||z.disabled||G,children:A(F,{children:D(z.labelI18n)})},Y(z.value))):A(F,{children:D(R)})}),M.length?A(V,{gap:"sm",wrap:"wrap",children:M.map((z)=>A(W,{variant:"outline",size:"sm",onPress:()=>H?.(z),disabled:!P||G||J,children:A(F,{children:D(z.labelI18n)})},`selected-${Y(z.value)}`))}):null]})}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as z,jsxs as M}from"react/jsx-runtime";import{SelectContent,SelectGroup,SelectItem,SelectLabel,SelectTrigger,SelectValue,Select as K}from"@contractspec/lib.ui-kit-web/ui/select";import{useThemedPrimitive as O,useTranslatedText as T}from"../../primitives/themed";import{selectGroupKey as v,selectGroupLabel as w,selectOptionGroups as G,selectOptionLabel as L,selectOptionValue as D}from"./select-options";export function Select({options:Q,groups:R,value:E,onChange:U,placeholder:X,disabled:Y,className:Z,componentKey:$,themeVariant:k,placeholderI18n:P,...W}){const B=T(),N=O({defaultComponentKey:"Select",componentKey:$,themeVariant:k,className:Z}),C=G({options:Q,groups:R});return M(K,{value:E==null?"":D(E),onValueChange:(q)=>U?.(q),disabled:Y,...W,children:[z(SelectTrigger,{className:N.className,children:z(SelectValue,{placeholder:B(P??X)})}),z(SelectContent,{children:C.map((q,F)=>{const H=v(q,F),J=w(q,B);return M(SelectGroup,{children:[J?z(SelectLabel,{children:J}):null,q.options.map((A,f)=>z(SelectItem,{value:D(A.value),disabled:A.disabled,children:L(A,B)},`${H}-${D(A.value)}-${f}`))]},`${H}-${F}`)})})]})}export{SelectContent,SelectGroup,SelectItem,SelectLabel,SelectTrigger,SelectValue};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as B,jsxs as
|
|
1
|
+
import{jsx as B,jsxs as X}from"react/jsx-runtime";import{Select as v,SelectContent,SelectGroup,SelectItem,SelectLabel,SelectTrigger,SelectValue}from"@contractspec/lib.ui-kit/ui/select";import{useThemedPrimitive as G,useTranslatedText as _}from"../../primitives/themed";import{selectGroupKey as L,selectGroupLabel as j,selectOptionGroups as y,selectOptionLabel as W,selectOptionValue as A}from"./select-options";export function Select({options:Y,groups:Z,value:H,onChange:$,placeholder:k,disabled:P,className:R,componentKey:N,themeVariant:C,placeholderI18n:f}){const D=_(),w=G({defaultComponentKey:"Select",componentKey:N,themeVariant:C,className:R}),J=y({options:Y,groups:Z}),z=H==null?void 0:A(H),F=J.flatMap((q)=>q.options).find((q)=>A(q.value)===z),K=F?W(F,D)??A(F.value):z;return X(v,{value:z==null?void 0:{value:z,label:K??z},onValueChange:(q)=>$?.(q?.value),children:[B(SelectTrigger,{disabled:P,className:w.className,children:B(SelectValue,{placeholder:D(f??k)??""})}),B(SelectContent,{children:J.map((q,M)=>{const Q=L(q,M),U=j(q,D);return X(SelectGroup,{children:[U?B(SelectLabel,{children:U}):null,q.options.map((E,T)=>B(SelectItem,{value:A(E.value),label:W(E,D),disabled:E.disabled},`${Q}-${A(E.value)}-${T}`))]},`${Q}-${M}`)})})]})}export{SelectContent,SelectGroup,SelectItem,SelectLabel,SelectTrigger,SelectValue};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export function selectOptionValue(e){return typeof e==="string"?e:String(e??"")}export function selectOptionLabel(e,t){return t(e.labelI18n)??selectOptionValue(e.labelI18n)}export function selectGroupLabel(e,t){return t(e.labelI18n??e.label)}export function selectGroupKey(e,t){return e.key??e.labelI18n??e.label??`group-${t}`}export function selectOptionGroups({options:e,groups:t}){return t?.length?t:[{options:e??[]}]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as H}from"react/jsx-runtime";import{Tabs as R,TabsContent as S,TabsList as U,TabsTrigger as X}from"@contractspec/lib.ui-kit-web/ui/tabs";import{useThemedPrimitive as G}from"../primitives/themed";export function Tabs({value:z,defaultValue:A,onValueChange:B,className:D,children:q,orientation:F,dir:E,activationMode:J,componentKey:O,themeVariant:Q}){
|
|
1
|
+
import{jsx as H}from"react/jsx-runtime";import{Tabs as R,TabsContent as S,TabsList as U,TabsTrigger as X}from"@contractspec/lib.ui-kit-web/ui/tabs";import{useThemedPrimitive as G}from"../primitives/themed";export function Tabs({value:z,defaultValue:A,onValueChange:B,className:D,children:q,orientation:F,dir:E,activationMode:J,componentKey:O,themeVariant:Q}){const I=G({defaultComponentKey:"Tabs",componentKey:O,themeVariant:Q,className:D});return H(R,{...I.props,value:z,defaultValue:A,onValueChange:B,className:I.className,orientation:F,dir:E,activationMode:J,children:q})}export function TabsList({className:z,children:A,componentKey:B,themeVariant:D}){const q=G({defaultComponentKey:"TabsList",componentKey:B,themeVariant:D,className:z});return H(U,{...q.props,className:q.className,children:A})}export function TabsTrigger({value:z,disabled:A,className:B,children:D,componentKey:q,themeVariant:F}){const E=G({defaultComponentKey:"TabsTrigger",componentKey:q,themeVariant:F,className:B});return H(X,{...E.props,value:z,disabled:A,className:E.className,children:D})}export function TabsContent({value:z,forceMount:A,className:B,children:D,componentKey:q,themeVariant:F}){const E=G({defaultComponentKey:"TabsContent",componentKey:q,themeVariant:F,className:B});return H(S,{...E.props,value:z,forceMount:A?!0:void 0,className:E.className,children:D})}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as H}from"react/jsx-runtime";import{Tabs as L,TabsContent as I,TabsList as R,TabsTrigger as w}from"@contractspec/lib.ui-kit/ui/tabs";import*as U from"react";import{useThemedPrimitive as G}from"../primitives/themed";export function Tabs({value:q,defaultValue:B,onValueChange:z,className:D,children:A,orientation:F,dir:E,activationMode:W,componentKey:X,themeVariant:Y}){
|
|
1
|
+
import{jsx as H}from"react/jsx-runtime";import{Tabs as L,TabsContent as I,TabsList as R,TabsTrigger as w}from"@contractspec/lib.ui-kit/ui/tabs";import*as U from"react";import{useThemedPrimitive as G}from"../primitives/themed";export function Tabs({value:q,defaultValue:B,onValueChange:z,className:D,children:A,orientation:F,dir:E,activationMode:W,componentKey:X,themeVariant:Y}){const J=G({defaultComponentKey:"Tabs",componentKey:X,themeVariant:Y,className:D}),[Z,O]=U.useState(B??""),Q=q!==void 0,$=Q?q:Z,k=U.useCallback((S)=>{if(!Q)O(S);z?.(S)},[z,O]);return H(L,{...J.props,value:$,onValueChange:k,className:J.className,orientation:F,dir:E,activationMode:W,children:A})}export function TabsList({className:q,children:B,componentKey:z,themeVariant:D}){const A=G({defaultComponentKey:"TabsList",componentKey:z,themeVariant:D,className:q});return H(R,{...A.props,className:A.className,children:B})}export function TabsTrigger({value:q,disabled:B,className:z,children:D,componentKey:A,themeVariant:F}){const E=G({defaultComponentKey:"TabsTrigger",componentKey:A,themeVariant:F,className:z});return H(w,{...E.props,value:q,disabled:B,className:E.className,children:D})}export function TabsContent({value:q,forceMount:B,className:z,children:D,componentKey:A,themeVariant:F}){const E=G({defaultComponentKey:"TabsContent",componentKey:A,themeVariant:F,className:z});return H(I,{...E.props,value:q,forceMount:B?!0:void 0,className:E.className,children:D})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as r,jsxs as i}from"react/jsx-runtime";import{cn as c}from"../../lib/utils";import{getObjectReferenceDisplayValue as l}from"./actions";import{ReferenceIcon as a,ReferenceSearchIcon as m}from"./ReferenceIcon";export function DefaultObjectReferenceTrigger({context:e,iconRenderer:d,interactivityVisibility:t,className:n}){const{reference:o}=e;return i("span",{className:c("inline-flex min-w-0 items-center gap-1.5 text-foreground text-sm transition-colors hover:text-primary",t==="underline"&&"underline decoration-muted-foreground/50 underline-offset-4 hover:decoration-primary",n),children:[r(a,{context:{iconKey:o.iconKey??o.kind,reference:o},iconRenderer:d}),r("span",{className:"truncate",children:o.label}),t==="icon"?r(m,{className:"h-3.5 w-3.5 shrink-0 text-muted-foreground"}):null]})}export function DefaultReferenceDetail({reference:e}){const d=l(e),t=Object.entries(e.metadata??{});return i("div",{className:"rounded-md border border-border bg-muted/30 p-3 text-sm",children:[r("div",{className:"font-medium text-foreground",children:d}),e.href?r("div",{className:"mt-1 break-all text-muted-foreground",children:e.href}):null,t.length>0?r("dl",{className:"mt-3 grid gap-2",children:t.map(([n,o])=>i("div",{className:"grid gap-0.5",children:[r("dt",{className:"font-medium text-muted-foreground text-xs uppercase",children:n}),r("dd",{className:"break-words text-foreground",children:String(o)})]},n))}):null]})}export function DefaultActionButton({action:e,reference:d,iconRenderer:t,onClick:n}){return i("button",{type:"button",className:c("flex min-h-11 w-full items-center gap-3 rounded-md border border-border px-3 py-2 text-left text-sm transition-colors hover:bg-muted focus:outline-none focus:ring-2 focus:ring-ring",e.variant==="primary"&&"border-primary/40 bg-primary/10",e.variant==="danger"&&"border-destructive/40 text-destructive",e.disabled&&"cursor-not-allowed opacity-50"),disabled:e.disabled,onClick:n,children:[r(a,{context:{iconKey:e.iconKey??e.id,reference:d,action:e},iconRenderer:t}),i("span",{className:"min-w-0 flex-1",children:[r("span",{className:"block font-medium",children:e.label}),e.description?r("span",{className:"block text-muted-foreground text-xs",children:e.description}):null]})]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as r,jsxs as i}from"react/jsx-runtime";import{Pressable as d,Text as t,View as l}from"react-native";import{getObjectReferenceDisplayValue as a}from"./actions";export function NativeObjectReferenceTrigger({context:e,iconRenderer:o,interactivityVisibility:c}){const{reference:n}=e;return i(l,{className:"flex-row items-center gap-1.5",children:[o?.({iconKey:n.iconKey??n.kind,reference:n}),r(t,{className:c==="underline"?"text-foreground underline":"text-foreground",children:n.label}),c==="icon"?r(t,{className:"text-muted-foreground",children:"..."}):null]})}export function NativeReferenceDetail({reference:e}){return i(l,{className:"gap-1",children:[r(t,{className:"font-medium text-foreground",children:a(e)}),e.description?r(t,{className:"text-muted-foreground",children:e.description}):null]})}export function NativeActionButton({action:e,onPress:o}){return i(d,{accessibilityRole:"button",accessibilityState:{disabled:e.disabled},disabled:e.disabled,className:"rounded-md border px-3 py-2",onPress:o,children:[r(t,{className:"font-medium text-foreground",children:e.label}),e.description?r(t,{className:"text-muted-foreground",children:e.description}):null]})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as z,jsxs as G}from"react/jsx-runtime";import{Sheet as b,SheetContent as D,SheetDescription as w,SheetHeader as O,SheetTitle as A}from"@contractspec/lib.ui-kit-web/ui/sheet";import{Tooltip as R,TooltipContent as T,TooltipTrigger as h}from"@contractspec/lib.ui-kit-web/ui/tooltip";import*as u from"react";import{cn as _}from"../../lib/utils";import{DefaultActionButton as g,DefaultObjectReferenceTrigger as y,DefaultReferenceDetail as d}from"./DefaultObjectReferenceParts";import{useObjectReferenceController as j}from"./useObjectReferenceController";export function ObjectReferenceHandler({reference:q,actions:J,interactivityVisibility:X="underline",defaultOpen:Y=!1,open:Z,onOpenChange:$,actionHandlers:k,onAction:B,onActionError:P,copyText:E,copyHandler:V,openHref:v,renderTrigger:K,renderDetail:L,renderAction:M,iconRenderer:Q,className:N,panelClassName:m}){const{context:I,resolvedActions:S,resolvedOpen:C,runAction:U,setOpen:W}=j({reference:q,actions:J,defaultOpen:Y,open:Z,onOpenChange:$,actionHandlers:k,copyText:E,copyHandler:V,openHref:v,onAction:B,onActionError:P,defaultCopy:p,defaultOpenHref:x}),H=K?K(I):z(y,{context:I,iconRenderer:Q,interactivityVisibility:X,className:N});return G(b,{open:C,onOpenChange:W,children:[G(R,{children:[z(h,{asChild:!0,children:z("button",{type:"button",className:"contents","aria-label":q.ariaLabel??`Open ${q.label}`,onClick:()=>W(!0),children:H})}),z(T,{children:q.ariaLabel??q.label})]}),G(D,{className:_("sm:max-w-md",m),children:[G(O,{children:[z(A,{children:q.label}),q.description?z(w,{children:q.description}):null]}),G("div",{className:"flex flex-col gap-4 px-4 pb-4",children:[L?L(I):z(d,{reference:q}),z("div",{className:"flex flex-col gap-2",children:S.map((F)=>M?z(u.Fragment,{children:M({...I,action:F,runAction:U})},F.id):z(g,{action:F,reference:q,iconRenderer:Q,onClick:()=>U(F)},F.id))})]})]})]})}async function p(q,J){if(typeof navigator<"u"&&navigator.clipboard){await navigator.clipboard.writeText(q);return}throw Error("Clipboard is not available.")}async function x(q,J){if(typeof window<"u")window.open(q,"_blank","noopener,noreferrer")}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as B,jsxs as E}from"react/jsx-runtime";import*as z from"react";import{Linking as v,Pressable as w,View as K}from"react-native";import{createDefaultObjectReferenceActions as j}from"./actions";import{NativeActionButton as g,NativeObjectReferenceTrigger as H,NativeReferenceDetail as y}from"./DefaultObjectReferenceParts.native";import{executeObjectReferenceAction as A}from"./runtime";export function ObjectReferenceHandler({reference:q,actions:L,interactivityVisibility:N="underline",defaultOpen:D=!1,open:M,onOpenChange:P,actionHandlers:Q,onAction:S,onActionError:W,copyText:X,copyHandler:Y,openHref:Z,renderTrigger:$,renderDetail:U,renderAction:b,iconRenderer:V,className:u,panelClassName:h}){const[C,T]=z.useState(D),R=M!==void 0,F=M??C,I=z.useMemo(()=>L??j(q),[L,q]),J=z.useCallback((k)=>{if(!R)T(k);P?.(k)},[R,P]),G=z.useMemo(()=>({reference:q,actions:I,open:F,setOpen:J}),[q,I,F,J]),m=z.useCallback((k)=>{if(k.disabled)return;A({reference:q,action:k,source:"action"},{actionHandlers:Q,copyText:X,copyHandler:Y,openHref:Z,onAction:S,onActionError:W,defaultOpenHref:(_)=>v.openURL(_)})},[Q,Y,X,S,W,Z,q]);return E(K,{className:u,children:[B(w,{accessibilityRole:"button",accessibilityLabel:q.ariaLabel??`Open ${q.label}`,onPress:()=>J(!F),children:$?$(G):B(H,{context:G,iconRenderer:V,interactivityVisibility:N})}),F?E(K,{className:h??"mt-2 gap-2 rounded-md border p-3",children:[U?U(G):B(y,{reference:q}),B(K,{className:"gap-2",children:I.map((k)=>b?B(z.Fragment,{children:b({...G,action:k,runAction:m})},k.id):B(g,{action:k,onPress:()=>m(k)},k.id))})]}):null]})}
|