@wallarm-org/claude-design 4.13.0 → 4.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/SETUP.md +7 -7
- package/dist/UPDATE.md +9 -9
- package/dist/project/components/AppShell/stories.js +1 -1
- package/dist/project/components/AppShell/stories.md +2 -2
- package/dist/project/components/ApprovalCard/README.md +30 -1
- package/dist/project/components/ApprovalCard/stories.js +2 -2
- package/dist/project/components/Attribute/README.md +48 -0
- package/dist/project/components/Attribute/stories.js +2 -2
- package/dist/project/components/Avatar/README.md +46 -1
- package/dist/project/components/Avatar/stories.js +1 -1
- package/dist/project/components/ChainOfThought/README.md +38 -0
- package/dist/project/components/ChainOfThought/stories.js +1 -1
- package/dist/project/components/Chat/README.md +2 -2
- package/dist/project/components/Drawer/README.md +73 -0
- package/dist/project/components/Drawer/stories.js +1 -1
- package/dist/project/components/DropdownMenu/README.md +64 -1
- package/dist/project/components/DropdownMenu/stories.js +1 -1
- package/dist/project/components/FilterDropdown/README.md +1014 -0
- package/dist/project/components/FilterDropdown/stories.js +1 -1
- package/dist/project/components/FilterInput/README.md +6 -0
- package/dist/project/components/FilterInput/stories.js +1 -1
- package/dist/project/components/FilterInput/stories.md +25 -0
- package/dist/project/components/NotificationCenter/stories.md +2 -2
- package/dist/project/components/RemoteShell/README.md +2 -2
- package/dist/project/components/SearchModal/README.md +4 -4
- package/dist/project/components/SearchModal/stories.js +1 -1
- package/dist/project/components/Select/README.md +47 -0
- package/dist/project/components/Select/stories.js +1 -1
- package/dist/project/components/Table/README.md +8 -0
- package/dist/project/components/Table/stories.js +2 -2
- package/dist/project/components/Table/stories.md +117 -0
- package/dist/project/components/Tag/README.md +45 -0
- package/dist/project/components/Tag/stories.js +1 -1
- package/dist/project/components/Timeline/README.md +75 -0
- package/dist/project/components/Timeline/stories.js +1 -1
- package/dist/project/components/bundle.css +16 -0
- package/dist/project/components/bundle.js +48 -48
- package/dist/project/components/index.d.ts +86 -6
- package/dist/project/design-system.json +4 -4
- package/dist/project/tokens.json +2 -2
- package/package.json +4 -4
|
@@ -2690,6 +2690,7 @@ export const WallarmLogo = () => (
|
|
|
2690
2690
|
```tsx
|
|
2691
2691
|
import { useState } from 'react';
|
|
2692
2692
|
import { Building, CircleDashed, Plus } from '../../../icons';
|
|
2693
|
+
import { AgentGlyph } from '../../AgentGlyph';
|
|
2693
2694
|
import { Button } from '../../Button';
|
|
2694
2695
|
import { Code } from '../../Code';
|
|
2695
2696
|
import { EmptyState, EmptyStateDescription, EmptyStateMessage } from '../../EmptyState';
|
|
@@ -2707,7 +2708,6 @@ import {
|
|
|
2707
2708
|
SearchModalTrigger,
|
|
2708
2709
|
} from '../../SearchModal';
|
|
2709
2710
|
import { Text } from '../../Text';
|
|
2710
|
-
import { WallyIcon } from '../../WallyIcon';
|
|
2711
2711
|
|
|
2712
2712
|
const recentItems = [
|
|
2713
2713
|
{ page: 'Attacks', product: 'Cloud WAF', date: '2 hours ago', href: '/attacks' },
|
|
@@ -2796,7 +2796,7 @@ export const StorySearchModal = () => {
|
|
|
2796
2796
|
</Text>
|
|
2797
2797
|
</SearchModalGroupLabel>
|
|
2798
2798
|
<SearchModalItem onSelect={() => {}}>
|
|
2799
|
-
<
|
|
2799
|
+
<AgentGlyph agent='wally' size={20} />
|
|
2800
2800
|
<Text size='sm'>Ask Wally</Text>
|
|
2801
2801
|
</SearchModalItem>
|
|
2802
2802
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Asks the user to approve an action Wally wants to take — a tool call, a config change — before it runs. While `status` is `pending` the card shows its children (`ApprovalCardContent` and `ApprovalCardActions`); once the app sets `approved` or `rejected`, the children are replaced by a one-line status, so the buttons need no gating of their own. The card has no outer margins or horizontal padding: the panel gutter (`ChatBody` / `ChatFooter`) places it, whether it sits inline in the conversation or docked above the input. Buttons are plain DS components composed by the app, which also owns loading — disable them while the request is in flight.
|
|
1
|
+
Asks the user to approve an action Wally wants to take — a tool call, a config change — before it runs. While `status` is `pending` the card shows its children (`ApprovalCardContent` and `ApprovalCardActions`); once the app sets `approved` or `rejected`, the children are replaced by a one-line status, so the buttons need no gating of their own. The card has no outer margins or horizontal padding: the panel gutter (`ChatBody` / `ChatFooter`) places it, whether it sits inline in the conversation or docked above the input. When an agent other than Wally asks, its live 40px `AgentItem` opens the `ApprovalCardContent`. Buttons are plain DS components composed by the app, which also owns loading — disable them while the request is in flight.
|
|
2
2
|
|
|
3
3
|
## Props as canvas attributes
|
|
4
4
|
|
|
@@ -33,6 +33,12 @@ The default ask: what Wally wants to do, then the split approve button and Rejec
|
|
|
33
33
|
|
|
34
34
|
Source: ApprovalCard/ApprovalCard.stories.tsx#Pending
|
|
35
35
|
|
|
36
|
+
### WithRequester
|
|
37
|
+
|
|
38
|
+
An agent's request: its live 40px `AgentItem` (the 3D character, name and role, no plate) opens the content.
|
|
39
|
+
|
|
40
|
+
Source: ApprovalCard/ApprovalCard.stories.tsx#WithRequester
|
|
41
|
+
|
|
36
42
|
### PendingLongText
|
|
37
43
|
|
|
38
44
|
Long text wraps, and unbroken strings such as URLs break rather than overflow the card.
|
|
@@ -85,6 +91,7 @@ Source: ApprovalCard/ApprovalCard.stories.tsx#Analytics
|
|
|
85
91
|
```tsx
|
|
86
92
|
import type { Meta, StoryFn } from 'storybook-react-rsbuild';
|
|
87
93
|
import { ChevronDown } from '../../icons';
|
|
94
|
+
import { AgentItem, AvatarContent, AvatarDescription, AvatarName } from '../Avatar';
|
|
88
95
|
import { Button } from '../Button';
|
|
89
96
|
import { CodeSnippetCode, CodeSnippetContent, CodeSnippetRoot } from '../CodeSnippet';
|
|
90
97
|
import {
|
|
@@ -100,6 +107,7 @@ const DESCRIPTION = [
|
|
|
100
107
|
'Asks the user to approve an action Wally wants to take — a tool call, a config change — before it runs.',
|
|
101
108
|
'While `status` is `pending` the card shows its children (`ApprovalCardContent` and `ApprovalCardActions`); once the app sets `approved` or `rejected`, the children are replaced by a one-line status, so the buttons need no gating of their own.',
|
|
102
109
|
'The card has no outer margins or horizontal padding: the panel gutter (`ChatBody` / `ChatFooter`) places it, whether it sits inline in the conversation or docked above the input.',
|
|
110
|
+
'When an agent other than Wally asks, its live 40px `AgentItem` opens the `ApprovalCardContent`.',
|
|
103
111
|
'Buttons are plain DS components composed by the app, which also owns loading — disable them while the request is in flight.',
|
|
104
112
|
].join(' ');
|
|
105
113
|
|
|
@@ -147,6 +155,27 @@ export const Pending: StoryFn<typeof meta> = () => (
|
|
|
147
155
|
</ApprovalCard>
|
|
148
156
|
);
|
|
149
157
|
|
|
158
|
+
/** An agent's request: its live 40px `AgentItem` (the 3D character, name and role, no plate) opens the content. */
|
|
159
|
+
export const WithRequester: StoryFn<typeof meta> = () => (
|
|
160
|
+
<ApprovalCard data-testid='approval-card'>
|
|
161
|
+
<ApprovalCardContent>
|
|
162
|
+
<AgentItem agent='acquit' size={40} live data-testid='approval-card-requester'>
|
|
163
|
+
<AvatarContent>
|
|
164
|
+
<AvatarName>Acquit</AvatarName>
|
|
165
|
+
<AvatarDescription>False Positive Resolver</AvatarDescription>
|
|
166
|
+
</AvatarContent>
|
|
167
|
+
</AgentItem>
|
|
168
|
+
<p>Mark 12 requests to /api/search as false positives and add an exception rule</p>
|
|
169
|
+
</ApprovalCardContent>
|
|
170
|
+
<ApprovalCardActions>
|
|
171
|
+
<Button>Allow</Button>
|
|
172
|
+
<Button variant='secondary' color='neutral'>
|
|
173
|
+
Reject
|
|
174
|
+
</Button>
|
|
175
|
+
</ApprovalCardActions>
|
|
176
|
+
</ApprovalCard>
|
|
177
|
+
);
|
|
178
|
+
|
|
150
179
|
/** Long text wraps, and unbroken strings such as URLs break rather than overflow the card. */
|
|
151
180
|
export const PendingLongText: StoryFn<typeof meta> = () => (
|
|
152
181
|
<ApprovalCard data-testid='approval-card'>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var e={vD(e,t,n){let r
|
|
1
|
+
var e={vD(e,t,n){let a,r;/**
|
|
2
2
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
@@ -9,4 +9,4 @@ var e={vD(e,t,n){let r,a;/**
|
|
|
9
9
|
* @nolint
|
|
10
10
|
* @preventMunge
|
|
11
11
|
* @preserve-invariant-messages
|
|
12
|
-
*/var o,l,i=Object.create,c=Object.defineProperty,s=Object.getOwnPropertyDescriptor,d=Object.getOwnPropertyNames,p=Object.getPrototypeOf,m=Object.prototype.hasOwnProperty,h=(e,t,n,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let a of d(t))m.call(e,a)||a===n||c(e,a,{get:()=>t[a],enumerable:!(r=s(t,a))||r.enumerable});return e},u={},f={$dispatcherGuard:()=>M,$makeReadOnly:()=>N,$reset:()=>O,$structuralCheck:()=>I,c:()=>R,clearRenderCounterRegistry:()=>j,renderCounterRegistry:()=>D,useRenderCounter:()=>k};for(var y in f)c(u,y,{get:f[y],enumerable:!0});e.exports=h(c({},"__esModule",{value:!0}),u);var _=(a=null!=(r=n("C"))?i(p(r)):{},h(r&&r.__esModule?a:c(a,"default",{value:r,enumerable:!0}),r)),{useRef:w,useEffect:b,isValidElement:S}=_,v=null!=(o=_.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE)?o:_.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,g=Symbol.for("react.memo_cache_sentinel"),R="function"==typeof(null==(l=_.__COMPILER_RUNTIME)?void 0:l.c)?_.__COMPILER_RUNTIME.c:function(e){return _.useMemo(()=>{let t=Array(e);for(let n=0;n<e;n++)t[n]=g;return t[g]=!0,t},[])},A={};["readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","getCacheSignal","getCacheForType","useCacheRefresh"].forEach(e=>{A[e]=()=>{throw Error(`[React] Unexpected React hook call (${e}) from a React compiled function. Check that all hooks are called directly and named according to convention ('use[A-Z]') `)}});var C=null;function E(e){return v.ReactCurrentDispatcher.current=e,v.ReactCurrentDispatcher.current}A.useMemoCache=e=>{if(null!=C)return C.useMemoCache(e);throw Error("React Compiler internal invariant violation: unexpected null dispatcher")};var $=[];function M(e){let t=v.ReactCurrentDispatcher.current;if(0===e){if($.push(t),1===$.length&&(C=t),t===A)throw Error("[React] Unexpected call to custom hook or component from a React compiled function. Check that (1) all hooks are called directly and named according to convention ('use[A-Z]') and (2) components are returned as JSX instead of being directly invoked.");E(A)}else if(1===e){let e=$.pop();if(null==e)throw Error("React Compiler internal error: unexpected null in guard stack");0===$.length&&(C=null),E(e)}else if(2===e)$.push(t),E(C);else if(3===e){let e=$.pop();if(null==e)throw Error("React Compiler internal error: unexpected null in guard stack");E(e)}else throw Error("React Compiler internal error: unreachable block"+e)}function O(e){for(let t=0;t<e.length;t++)e[t]=g}function N(){throw Error("TODO: implement $makeReadOnly in react-compiler-runtime")}var D=new Map;function j(){for(let e of D.values())e.forEach(e=>{e.count=0})}function k(e){let t=w(null);null!=t.current&&(t.current.count+=1),b(()=>{if(null==t.current){let n,r={count:0};null==(n=D.get(e))&&(n=new Set,D.set(e,n)),n.add(r),t.current=r}return()=>{var n;let r;null!==t.current&&(n=t.current,null!=(r=D.get(e))&&r.delete(n))}})}var P=new Set;function I(e,t,n,r,a,o){function l(e,t,l,i){let c=`${r}:${o} [${a}] ${n}${l} changed from ${e} to ${t} at depth ${i}`;P.has(c)||(P.add(c),console.error(c))}!function e(t,n,r,a){if(!(a>2)){if(t!==n)if(typeof t!=typeof n)l(`type ${typeof t}`,`type ${typeof n}`,r,a);else if("object"==typeof t){let o=Array.isArray(t),i=Array.isArray(n);if(null===t&&null!==n)l("null",`type ${typeof n}`,r,a);else if(null===n)l(`type ${typeof t}`,"null",r,a);else if(t instanceof Map)if(n instanceof Map)if(t.size!==n.size)l(`Map instance with size ${t.size}`,`Map instance with size ${n.size}`,r,a);else for(let[o,i]of t)n.has(o)?e(i,n.get(o),`${r}.get(${o})`,a+1):l(`Map instance with key ${o}`,`Map instance without key ${o}`,r,a);else l("Map instance","other value",r,a);else if(n instanceof Map)l("other value","Map instance",r,a);else if(t instanceof Set)if(n instanceof Set)if(t.size!==n.size)l(`Set instance with size ${t.size}`,`Set instance with size ${n.size}`,r,a);else for(let e of n)t.has(e)||l(`Set instance without element ${e}`,`Set instance with element ${e}`,r,a);else l("Set instance","other value",r,a);else if(n instanceof Set)l("other value","Set instance",r,a);else if(o||i)if(o!==i)l(`type ${o?"array":"object"}`,`type ${i?"array":"object"}`,r,a);else if(t.length!==n.length)l(`array with length ${t.length}`,`array with length ${n.length}`,r,a);else for(let o=0;o<t.length;o++)e(t[o],n[o],`${r}[${o}]`,a+1);else if(S(t)||S(n))S(t)!==S(n)?l(`type ${S(t)?"React element":"object"}`,`type ${S(n)?"React element":"object"}`,r,a):t.type!==n.type?l(`React element of type ${t.type}`,`React element of type ${n.type}`,r,a):e(t.props,n.props,`[props of ${r}]`,a+1);else{for(let e in n)e in t||l(`object without key ${e}`,`object with key ${e}`,r,a);for(let o in t)o in n?e(t[o],n[o],`${r}.${o}`,a+1):l(`object with key ${o}`,`object without key ${o}`,r,a)}}else{if("function"==typeof t)return;isNaN(t)||isNaN(n)?isNaN(t)!==isNaN(n)&&l(`${isNaN(t)?"NaN":"non-NaN value"}`,`${isNaN(n)?"NaN":"non-NaN value"}`,r,a):t!==n&&l(t,n,r,a)}}}(e,t,"",0)}},p(e,t,n){let r=new WeakMap,a=new WeakMap;function o(e,t,n){let o=t,l=n;if("object"==typeof o&&null!==o&&"$$typeof"in o&&o.$$typeof===Symbol.for("react.context")&&"Provider"in o&&(o=o.Provider),"function"==typeof o&&null!=l.ref&&!o.prototype?.isReactComponent){let t=o,n=r.get(e);n||(n=new WeakMap,r.set(e,n));let a=n.get(t);a||((a=e.forwardRef((e,n)=>t({...e,ref:n}))).displayName=t.displayName??t.name,n.set(t,a)),o=a}if("string"==typeof o&&"boolean"==typeof l.inert&&((l={...l}).inert?l.inert="":delete l.inert),"string"==typeof o)for(let[e,t]of[["fill-rule","fillRule"],["clip-rule","clipRule"]])e in l&&(l={...l,[t]:l[e]},delete l[e]);return"string"==typeof o&&null!=l.ref&&(o=function(e,t){let n=a.get(e);n||(n=new Map,a.set(e,n));let r=n.get(t);if(r)return r;let o=e.forwardRef((n,r)=>{let a=e.useRef(null);if(!a.current||a.current.original!==r){let e;a.current={original:r,callback:t=>{if(null==t&&e){let t=e;e=void 0,t();return}if("function"==typeof r){let n=r(t);e="function"==typeof n?n:void 0}else r&&(r.current=t)}}}return e.createElement(t,{...n,ref:a.current.callback})});return o.displayName=`CanvasHost(${t})`,n.set(t,o),o}(e,o)),{type:o,props:l}}function l(e){let t=(t,n,r)=>{let a=o(e,t,n??{});return e.createElement(a.type,void 0===r?a.props:{...a.props,key:r})};return{jsx:t,jsxs:(t,n,r)=>{let a=o(e,t,n??{}),{children:l,...i}=a.props;return e.createElement(a.type,void 0===r?i:{...i,key:r},...Array.isArray(l)?l:[l])},jsxDEV:t,Fragment:e.Fragment}}function i(e){return{...e,createElement:(t,n,...r)=>{let a=o(e,t,n??{});return e.createElement(a.type,a.props,...r)},cloneElement:(t,n,...r)=>{let a=e.cloneElement(t,n??void 0,...r),l=a.ref,i=o(e,a.type,{...a.props,ref:l});return i.type===a.type&&"string"!=typeof a.type?a:e.createElement(i.type,{...i.props,key:a.key})}}}n.d(t,{MA:()=>l,YJ:()=>i})},C(e,t,n){n.r(t);let r=(0,n("p").YJ)(window.React),{Children:a,Component:o,Fragment:l,Profiler:i,PureComponent:c,StrictMode:s,Suspense:d,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:p,act:m,cloneElement:h,createContext:u,createElement:f,createFactory:y,createRef:_,forwardRef:w,isValidElement:b,lazy:S,memo:v,startTransition:g,unstable_act:R,useCallback:A,useContext:C,useDebugValue:E,useDeferredValue:$,useEffect:M,useId:O,useImperativeHandle:N,useInsertionEffect:D,useLayoutEffect:j,useMemo:k,useReducer:P,useRef:I,useState:W,useSyncExternalStore:L,useTransition:T,version:x,use:z}=r;n.d(t,{},{Children:a,Component:o,Fragment:l,Profiler:i,PureComponent:c,StrictMode:s,Suspense:d,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:p,act:m,cloneElement:h,createContext:u,createElement:f,createFactory:y,createRef:_,default:r,forwardRef:w,isValidElement:b,lazy:S,memo:v,startTransition:g,unstable_act:R,use:z,useCallback:A,useContext:C,useDebugValue:E,useDeferredValue:$,useEffect:M,useId:O,useImperativeHandle:N,useInsertionEffect:D,useLayoutEffect:j,useMemo:k,useReducer:P,useRef:I,useState:W,useSyncExternalStore:L,useTransition:T,version:x})}},t={};function n(r){var a=t[r];if(void 0!==a)return a.exports;var o=t[r]={exports:{}};return e[r](o,o.exports,n),o.exports}n.d=(e,t,r)=>{var a=(t,r)=>{for(var a in t)n.o(t,a)&&!n.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,[r]:t[a]})};a(t,"get"),a(r,"value")},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{let{jsx:e,jsxs:t,jsxDEV:r,Fragment:a}=(0,n("p").MA)(window.React);var o=n("vD");let l=window.WallarmDS.Icons.ChevronDown,i=window.WallarmDS.Button,c=window.WallarmDS.CodeSnippetCode,s=window.WallarmDS.CodeSnippetContent,d=window.WallarmDS.CodeSnippetRoot,p=window.WallarmDS.DropdownMenu,m=window.WallarmDS.DropdownMenuContent,h=window.WallarmDS.DropdownMenuItem,u=window.WallarmDS.DropdownMenuTrigger,f=window.WallarmDS.SplitButton,y=window.WallarmDS.ApprovalCard,_=window.WallarmDS.ApprovalCardActions,w=window.WallarmDS.ApprovalCardContent,b={title:"AI/ApprovalCard",component:y,subcomponents:{ApprovalCardContent:w,ApprovalCardActions:_},parameters:{layout:"centered",docs:{description:{component:"Asks the user to approve an action Wally wants to take — a tool call, a config change — before it runs. While `status` is `pending` the card shows its children (`ApprovalCardContent` and `ApprovalCardActions`); once the app sets `approved` or `rejected`, the children are replaced by a one-line status, so the buttons need no gating of their own. The card has no outer margins or horizontal padding: the panel gutter (`ChatBody` / `ChatFooter`) places it, whether it sits inline in the conversation or docked above the input. Buttons are plain DS components composed by the app, which also owns loading — disable them while the request is in flight."}}},decorators:[t=>e("div",{className:"w-[440px]",children:e(t,{})})]};var S=n("C");let v=[{name:"Pending",story:()=>{let n,r,a,c,s,d=(0,o.c)(5);return d[0]===Symbol.for("react.memo_cache_sentinel")?(n=e(w,{children:"Add 203.0.113.42 to the denylist on all applications"}),d[0]=n):n=d[0],d[1]===Symbol.for("react.memo_cache_sentinel")?(r={placement:"bottom-end"},d[1]=r):r=d[1],d[2]===Symbol.for("react.memo_cache_sentinel")?(a=e(i,{children:"Always allow in this session"}),d[2]=a):a=d[2],d[3]===Symbol.for("react.memo_cache_sentinel")?(c=t(f,{children:[a,e(u,{asChild:!0,children:e(i,{"aria-label":"More approval options","data-testid":"approval-card-more",children:e(l,{})})})]}),d[3]=c):c=d[3],d[4]===Symbol.for("react.memo_cache_sentinel")?(s=t(y,{"data-testid":"approval-card",children:[n,t(_,{children:[t(p,{positioning:r,children:[c,e(m,{children:e(h,{"data-testid":"approval-card-allow-once",children:"Allow once"})})]}),e(i,{variant:"secondary",color:"neutral",children:"Reject"})]})]}),d[4]=s):s=d[4],s},meta:b},{name:"PendingLongText",story:()=>{let n,r,a,c,s,d=(0,o.c)(5);return d[0]===Symbol.for("react.memo_cache_sentinel")?(n=e(w,{children:'Disable the rule "Block SQL injection attempts" for the application "Payments API" and redeploy the policy to every node in the eu-west-1 cluster. Affected endpoint: https://payments.example.com/api/v2/transactions/refunds/batch-processing/callbacks'}),d[0]=n):n=d[0],d[1]===Symbol.for("react.memo_cache_sentinel")?(r={placement:"bottom-end"},d[1]=r):r=d[1],d[2]===Symbol.for("react.memo_cache_sentinel")?(a=e(i,{children:"Always allow in this session"}),d[2]=a):a=d[2],d[3]===Symbol.for("react.memo_cache_sentinel")?(c=t(f,{children:[a,e(u,{asChild:!0,children:e(i,{"aria-label":"More approval options","data-testid":"approval-card-more",children:e(l,{})})})]}),d[3]=c):c=d[3],d[4]===Symbol.for("react.memo_cache_sentinel")?(s=t(y,{"data-testid":"approval-card",children:[n,t(_,{children:[t(p,{positioning:r,children:[c,e(m,{children:e(h,{"data-testid":"approval-card-allow-once",children:"Allow once"})})]}),e(i,{variant:"secondary",color:"neutral",children:"Reject"})]})]}),d[4]=s):s=d[4],s},meta:b},{name:"PendingWithCodeSnippet",story:()=>{let n,r,a,b,S,v,g=(0,o.c)(6);return g[0]===Symbol.for("react.memo_cache_sentinel")?(n=e("p",{children:"Run this command on the node:"}),g[0]=n):n=g[0],g[1]===Symbol.for("react.memo_cache_sentinel")?(r=t(w,{children:[n,e(d,{code:"wallarm-cli rules disable --id 4021 --app payments-api",language:"bash",children:e(s,{children:e(c,{})})})]}),g[1]=r):r=g[1],g[2]===Symbol.for("react.memo_cache_sentinel")?(a={placement:"bottom-end"},g[2]=a):a=g[2],g[3]===Symbol.for("react.memo_cache_sentinel")?(b=e(i,{children:"Always allow in this session"}),g[3]=b):b=g[3],g[4]===Symbol.for("react.memo_cache_sentinel")?(S=t(f,{children:[b,e(u,{asChild:!0,children:e(i,{"aria-label":"More approval options","data-testid":"approval-card-more",children:e(l,{})})})]}),g[4]=S):S=g[4],g[5]===Symbol.for("react.memo_cache_sentinel")?(v=t(y,{"data-testid":"approval-card",children:[r,t(_,{children:[t(p,{positioning:a,children:[S,e(m,{children:e(h,{"data-testid":"approval-card-allow-once",children:"Allow once"})})]}),e(i,{variant:"secondary",color:"neutral",children:"Reject"})]})]}),g[5]=v):v=g[5],v},meta:b},{name:"AllowOnceMenu",story:()=>{let n,r,a,c,s,d=(0,o.c)(5);return d[0]===Symbol.for("react.memo_cache_sentinel")?(n=e(w,{children:"Add 203.0.113.42 to the denylist on all applications"}),d[0]=n):n=d[0],d[1]===Symbol.for("react.memo_cache_sentinel")?(r={placement:"bottom-end"},d[1]=r):r=d[1],d[2]===Symbol.for("react.memo_cache_sentinel")?(a=e(i,{children:"Always allow in this session"}),d[2]=a):a=d[2],d[3]===Symbol.for("react.memo_cache_sentinel")?(c=t(f,{children:[a,e(u,{asChild:!0,children:e(i,{"aria-label":"More approval options","data-testid":"approval-card-more",children:e(l,{})})})]}),d[3]=c):c=d[3],d[4]===Symbol.for("react.memo_cache_sentinel")?(s=t(y,{"data-testid":"approval-card",children:[n,t(_,{children:[t(p,{positioning:r,defaultOpen:!0,children:[c,e(m,{children:e(h,{"data-testid":"approval-card-allow-once",children:"Allow once"})})]}),e(i,{variant:"secondary",color:"neutral",children:"Reject"})]})]}),d[4]=s):s=d[4],s},meta:b},{name:"Loading",story:()=>{let n,r,a,c,s,d=(0,o.c)(5);return d[0]===Symbol.for("react.memo_cache_sentinel")?(n=e(w,{children:"Add 203.0.113.42 to the denylist on all applications"}),d[0]=n):n=d[0],d[1]===Symbol.for("react.memo_cache_sentinel")?(r={placement:"bottom-end"},d[1]=r):r=d[1],d[2]===Symbol.for("react.memo_cache_sentinel")?(a=e(i,{disabled:!0,children:"Always allow in this session"}),d[2]=a):a=d[2],d[3]===Symbol.for("react.memo_cache_sentinel")?(c=t(f,{children:[a,e(u,{asChild:!0,children:e(i,{"aria-label":"More approval options","data-testid":"approval-card-more",disabled:!0,children:e(l,{})})})]}),d[3]=c):c=d[3],d[4]===Symbol.for("react.memo_cache_sentinel")?(s=t(y,{"data-testid":"approval-card",children:[n,t(_,{children:[t(p,{positioning:r,children:[c,e(m,{children:e(h,{"data-testid":"approval-card-allow-once",children:"Allow once"})})]}),e(i,{variant:"secondary",color:"neutral",disabled:!0,children:"Reject"})]})]}),d[4]=s):s=d[4],s},meta:b},{name:"Approved",story:()=>{let n,r,a,c,s,d=(0,o.c)(5);return d[0]===Symbol.for("react.memo_cache_sentinel")?(n=e(w,{children:"Add 203.0.113.42 to the denylist on all applications"}),d[0]=n):n=d[0],d[1]===Symbol.for("react.memo_cache_sentinel")?(r={placement:"bottom-end"},d[1]=r):r=d[1],d[2]===Symbol.for("react.memo_cache_sentinel")?(a=e(i,{children:"Always allow in this session"}),d[2]=a):a=d[2],d[3]===Symbol.for("react.memo_cache_sentinel")?(c=t(f,{children:[a,e(u,{asChild:!0,children:e(i,{"aria-label":"More approval options",children:e(l,{})})})]}),d[3]=c):c=d[3],d[4]===Symbol.for("react.memo_cache_sentinel")?(s=t(y,{"data-testid":"approval-card",status:"approved",children:[n,t(_,{children:[t(p,{positioning:r,children:[c,e(m,{children:e(h,{children:"Allow once"})})]}),e(i,{variant:"secondary",color:"neutral",children:"Reject"})]})]}),d[4]=s):s=d[4],s},meta:b},{name:"Rejected",story:()=>{let n,r,a,c,s,d=(0,o.c)(5);return d[0]===Symbol.for("react.memo_cache_sentinel")?(n=e(w,{children:"Add 203.0.113.42 to the denylist on all applications"}),d[0]=n):n=d[0],d[1]===Symbol.for("react.memo_cache_sentinel")?(r={placement:"bottom-end"},d[1]=r):r=d[1],d[2]===Symbol.for("react.memo_cache_sentinel")?(a=e(i,{children:"Always allow in this session"}),d[2]=a):a=d[2],d[3]===Symbol.for("react.memo_cache_sentinel")?(c=t(f,{children:[a,e(u,{asChild:!0,children:e(i,{"aria-label":"More approval options",children:e(l,{})})})]}),d[3]=c):c=d[3],d[4]===Symbol.for("react.memo_cache_sentinel")?(s=t(y,{"data-testid":"approval-card",status:"rejected",rejectedLabel:"Denylist change rejected",children:[n,t(_,{children:[t(p,{positioning:r,children:[c,e(m,{children:e(h,{children:"Allow once"})})]}),e(i,{variant:"secondary",color:"neutral",children:"Reject"})]})]}),d[4]=s):s=d[4],s},meta:b},{name:"Analytics",story:()=>{let n,r,a,c,s,d=(0,o.c)(5);return d[0]===Symbol.for("react.memo_cache_sentinel")?(n=e(w,{children:"Add 203.0.113.42 to the denylist on all applications"}),d[0]=n):n=d[0],d[1]===Symbol.for("react.memo_cache_sentinel")?(r={placement:"bottom-end"},d[1]=r):r=d[1],d[2]===Symbol.for("react.memo_cache_sentinel")?(a=e(i,{"data-analytics-id":"AI_APPROVAL_ALLOW_SESSION",children:"Always allow in this session"}),d[2]=a):a=d[2],d[3]===Symbol.for("react.memo_cache_sentinel")?(c=t(f,{children:[a,e(u,{asChild:!0,children:e(i,{"aria-label":"More approval options","data-analytics-id":"AI_APPROVAL_MORE",children:e(l,{})})})]}),d[3]=c):c=d[3],d[4]===Symbol.for("react.memo_cache_sentinel")?(s=t(y,{"data-testid":"approval-card","data-analytics-id":"AI_APPROVAL_CARD",children:[n,t(_,{children:[t(p,{positioning:r,children:[c,e(m,{children:e(h,{"data-analytics-id":"AI_APPROVAL_ALLOW_ONCE",children:"Allow once"})})]}),e(i,{variant:"secondary",color:"neutral","data-analytics-id":"AI_APPROVAL_REJECT",children:"Reject"})]})]}),d[4]=s):s=d[4],s},meta:b}];function g({entry:e}){let{story:t,meta:n}=e,r={...n.args,...t.args},a="function"==typeof t||t.$$typeof?t:t.render||n.render||n.component,o=()=>S.default.createElement(a,r),l={args:r,globals:{theme:"light"},parameters:{...n.parameters,...t.parameters},viewMode:"story"};for(let e of[...n.decorators||[],...t.decorators||[]].reverse()){let t=o;o=()=>e(t,l)}return S.default.createElement("section",{"data-preview-story":e.name,className:"p-16"},S.default.createElement("h2",{className:"text-sm mb-12"},e.name),S.default.createElement(o))}window.WallarmPreview={mount(e){let t=window.ReactDOM.createRoot(e);return t.render(S.default.createElement(window.WallarmDS.Root,null,v.map((e,t)=>S.default.createElement(g,{key:t,entry:e})))),t}}})();
|
|
12
|
+
*/var l,o,i=Object.create,c=Object.defineProperty,s=Object.getOwnPropertyDescriptor,d=Object.getOwnPropertyNames,p=Object.getPrototypeOf,m=Object.prototype.hasOwnProperty,h=(e,t,n,a)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let r of d(t))m.call(e,r)||r===n||c(e,r,{get:()=>t[r],enumerable:!(a=s(t,r))||a.enumerable});return e},u={},f={$dispatcherGuard:()=>M,$makeReadOnly:()=>N,$reset:()=>D,$structuralCheck:()=>W,c:()=>A,clearRenderCounterRegistry:()=>j,renderCounterRegistry:()=>O,useRenderCounter:()=>k};for(var y in f)c(u,y,{get:f[y],enumerable:!0});e.exports=h(c({},"__esModule",{value:!0}),u);var _=(r=null!=(a=n("C"))?i(p(a)):{},h(a&&a.__esModule?r:c(r,"default",{value:a,enumerable:!0}),a)),{useRef:w,useEffect:b,isValidElement:v}=_,S=null!=(l=_.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE)?l:_.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,g=Symbol.for("react.memo_cache_sentinel"),A="function"==typeof(null==(o=_.__COMPILER_RUNTIME)?void 0:o.c)?_.__COMPILER_RUNTIME.c:function(e){return _.useMemo(()=>{let t=Array(e);for(let n=0;n<e;n++)t[n]=g;return t[g]=!0,t},[])},R={};["readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","getCacheSignal","getCacheForType","useCacheRefresh"].forEach(e=>{R[e]=()=>{throw Error(`[React] Unexpected React hook call (${e}) from a React compiled function. Check that all hooks are called directly and named according to convention ('use[A-Z]') `)}});var C=null;function E(e){return S.ReactCurrentDispatcher.current=e,S.ReactCurrentDispatcher.current}R.useMemoCache=e=>{if(null!=C)return C.useMemoCache(e);throw Error("React Compiler internal invariant violation: unexpected null dispatcher")};var $=[];function M(e){let t=S.ReactCurrentDispatcher.current;if(0===e){if($.push(t),1===$.length&&(C=t),t===R)throw Error("[React] Unexpected call to custom hook or component from a React compiled function. Check that (1) all hooks are called directly and named according to convention ('use[A-Z]') and (2) components are returned as JSX instead of being directly invoked.");E(R)}else if(1===e){let e=$.pop();if(null==e)throw Error("React Compiler internal error: unexpected null in guard stack");0===$.length&&(C=null),E(e)}else if(2===e)$.push(t),E(C);else if(3===e){let e=$.pop();if(null==e)throw Error("React Compiler internal error: unexpected null in guard stack");E(e)}else throw Error("React Compiler internal error: unreachable block"+e)}function D(e){for(let t=0;t<e.length;t++)e[t]=g}function N(){throw Error("TODO: implement $makeReadOnly in react-compiler-runtime")}var O=new Map;function j(){for(let e of O.values())e.forEach(e=>{e.count=0})}function k(e){let t=w(null);null!=t.current&&(t.current.count+=1),b(()=>{if(null==t.current){let n,a={count:0};null==(n=O.get(e))&&(n=new Set,O.set(e,n)),n.add(a),t.current=a}return()=>{var n;let a;null!==t.current&&(n=t.current,null!=(a=O.get(e))&&a.delete(n))}})}var P=new Set;function W(e,t,n,a,r,l){function o(e,t,o,i){let c=`${a}:${l} [${r}] ${n}${o} changed from ${e} to ${t} at depth ${i}`;P.has(c)||(P.add(c),console.error(c))}!function e(t,n,a,r){if(!(r>2)){if(t!==n)if(typeof t!=typeof n)o(`type ${typeof t}`,`type ${typeof n}`,a,r);else if("object"==typeof t){let l=Array.isArray(t),i=Array.isArray(n);if(null===t&&null!==n)o("null",`type ${typeof n}`,a,r);else if(null===n)o(`type ${typeof t}`,"null",a,r);else if(t instanceof Map)if(n instanceof Map)if(t.size!==n.size)o(`Map instance with size ${t.size}`,`Map instance with size ${n.size}`,a,r);else for(let[l,i]of t)n.has(l)?e(i,n.get(l),`${a}.get(${l})`,r+1):o(`Map instance with key ${l}`,`Map instance without key ${l}`,a,r);else o("Map instance","other value",a,r);else if(n instanceof Map)o("other value","Map instance",a,r);else if(t instanceof Set)if(n instanceof Set)if(t.size!==n.size)o(`Set instance with size ${t.size}`,`Set instance with size ${n.size}`,a,r);else for(let e of n)t.has(e)||o(`Set instance without element ${e}`,`Set instance with element ${e}`,a,r);else o("Set instance","other value",a,r);else if(n instanceof Set)o("other value","Set instance",a,r);else if(l||i)if(l!==i)o(`type ${l?"array":"object"}`,`type ${i?"array":"object"}`,a,r);else if(t.length!==n.length)o(`array with length ${t.length}`,`array with length ${n.length}`,a,r);else for(let l=0;l<t.length;l++)e(t[l],n[l],`${a}[${l}]`,r+1);else if(v(t)||v(n))v(t)!==v(n)?o(`type ${v(t)?"React element":"object"}`,`type ${v(n)?"React element":"object"}`,a,r):t.type!==n.type?o(`React element of type ${t.type}`,`React element of type ${n.type}`,a,r):e(t.props,n.props,`[props of ${a}]`,r+1);else{for(let e in n)e in t||o(`object without key ${e}`,`object with key ${e}`,a,r);for(let l in t)l in n?e(t[l],n[l],`${a}.${l}`,r+1):o(`object with key ${l}`,`object without key ${l}`,a,r)}}else{if("function"==typeof t)return;isNaN(t)||isNaN(n)?isNaN(t)!==isNaN(n)&&o(`${isNaN(t)?"NaN":"non-NaN value"}`,`${isNaN(n)?"NaN":"non-NaN value"}`,a,r):t!==n&&o(t,n,a,r)}}}(e,t,"",0)}},p(e,t,n){let a=new WeakMap,r=new WeakMap;function l(e,t,n){let l=t,o=n;if("object"==typeof l&&null!==l&&"$$typeof"in l&&l.$$typeof===Symbol.for("react.context")&&"Provider"in l&&(l=l.Provider),"function"==typeof l&&null!=o.ref&&!l.prototype?.isReactComponent){let t=l,n=a.get(e);n||(n=new WeakMap,a.set(e,n));let r=n.get(t);r||((r=e.forwardRef((e,n)=>t({...e,ref:n}))).displayName=t.displayName??t.name,n.set(t,r)),l=r}if("string"==typeof l&&"boolean"==typeof o.inert&&((o={...o}).inert?o.inert="":delete o.inert),"string"==typeof l)for(let[e,t]of[["fill-rule","fillRule"],["clip-rule","clipRule"]])e in o&&(o={...o,[t]:o[e]},delete o[e]);return"string"==typeof l&&null!=o.ref&&(l=function(e,t){let n=r.get(e);n||(n=new Map,r.set(e,n));let a=n.get(t);if(a)return a;let l=e.forwardRef((n,a)=>{let r=e.useRef(null);if(!r.current||r.current.original!==a){let e;r.current={original:a,callback:t=>{if(null==t&&e){let t=e;e=void 0,t();return}if("function"==typeof a){let n=a(t);e="function"==typeof n?n:void 0}else a&&(a.current=t)}}}return e.createElement(t,{...n,ref:r.current.callback})});return l.displayName=`CanvasHost(${t})`,n.set(t,l),l}(e,l)),{type:l,props:o}}function o(e){let t=(t,n,a)=>{let r=l(e,t,n??{});return e.createElement(r.type,void 0===a?r.props:{...r.props,key:a})};return{jsx:t,jsxs:(t,n,a)=>{let r=l(e,t,n??{}),{children:o,...i}=r.props;return e.createElement(r.type,void 0===a?i:{...i,key:a},...Array.isArray(o)?o:[o])},jsxDEV:t,Fragment:e.Fragment}}function i(e){return{...e,createElement:(t,n,...a)=>{let r=l(e,t,n??{});return e.createElement(r.type,r.props,...a)},cloneElement:(t,n,...a)=>{let r=e.cloneElement(t,n??void 0,...a),o=r.ref,i=l(e,r.type,{...r.props,ref:o});return i.type===r.type&&"string"!=typeof r.type?r:e.createElement(i.type,{...i.props,key:r.key})}}}n.d(t,{MA:()=>o,YJ:()=>i})},C(e,t,n){n.r(t);let a=(0,n("p").YJ)(window.React),{Children:r,Component:l,Fragment:o,Profiler:i,PureComponent:c,StrictMode:s,Suspense:d,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:p,act:m,cloneElement:h,createContext:u,createElement:f,createFactory:y,createRef:_,forwardRef:w,isValidElement:b,lazy:v,memo:S,startTransition:g,unstable_act:A,useCallback:R,useContext:C,useDebugValue:E,useDeferredValue:$,useEffect:M,useId:D,useImperativeHandle:N,useInsertionEffect:O,useLayoutEffect:j,useMemo:k,useReducer:P,useRef:W,useState:I,useSyncExternalStore:x,useTransition:L,version:T,use:z}=a;n.d(t,{},{Children:r,Component:l,Fragment:o,Profiler:i,PureComponent:c,StrictMode:s,Suspense:d,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:p,act:m,cloneElement:h,createContext:u,createElement:f,createFactory:y,createRef:_,default:a,forwardRef:w,isValidElement:b,lazy:v,memo:S,startTransition:g,unstable_act:A,use:z,useCallback:R,useContext:C,useDebugValue:E,useDeferredValue:$,useEffect:M,useId:D,useImperativeHandle:N,useInsertionEffect:O,useLayoutEffect:j,useMemo:k,useReducer:P,useRef:W,useState:I,useSyncExternalStore:x,useTransition:L,version:T})}},t={};function n(a){var r=t[a];if(void 0!==r)return r.exports;var l=t[a]={exports:{}};return e[a](l,l.exports,n),l.exports}n.d=(e,t,a)=>{var r=(t,a)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,[a]:t[r]})};r(t,"get"),r(a,"value")},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{let{jsx:e,jsxs:t,jsxDEV:a,Fragment:r}=(0,n("p").MA)(window.React);var l=n("vD");let o=window.WallarmDS.Icons.ChevronDown,i=window.WallarmDS.AgentItem,c=window.WallarmDS.AvatarContent,s=window.WallarmDS.AvatarDescription,d=window.WallarmDS.AvatarName,p=window.WallarmDS.Button,m=window.WallarmDS.CodeSnippetCode,h=window.WallarmDS.CodeSnippetContent,u=window.WallarmDS.CodeSnippetRoot,f=window.WallarmDS.DropdownMenu,y=window.WallarmDS.DropdownMenuContent,_=window.WallarmDS.DropdownMenuItem,w=window.WallarmDS.DropdownMenuTrigger,b=window.WallarmDS.SplitButton,v=window.WallarmDS.ApprovalCard,S=window.WallarmDS.ApprovalCardActions,g=window.WallarmDS.ApprovalCardContent,A={title:"AI/ApprovalCard",component:v,subcomponents:{ApprovalCardContent:g,ApprovalCardActions:S},parameters:{layout:"centered",docs:{description:{component:"Asks the user to approve an action Wally wants to take — a tool call, a config change — before it runs. While `status` is `pending` the card shows its children (`ApprovalCardContent` and `ApprovalCardActions`); once the app sets `approved` or `rejected`, the children are replaced by a one-line status, so the buttons need no gating of their own. The card has no outer margins or horizontal padding: the panel gutter (`ChatBody` / `ChatFooter`) places it, whether it sits inline in the conversation or docked above the input. When an agent other than Wally asks, its live 40px `AgentItem` opens the `ApprovalCardContent`. Buttons are plain DS components composed by the app, which also owns loading — disable them while the request is in flight."}}},decorators:[t=>e("div",{className:"w-[440px]",children:e(t,{})})]};var R=n("C");let C=[{name:"Pending",story:()=>{let n,a,r,i,c,s=(0,l.c)(5);return s[0]===Symbol.for("react.memo_cache_sentinel")?(n=e(g,{children:"Add 203.0.113.42 to the denylist on all applications"}),s[0]=n):n=s[0],s[1]===Symbol.for("react.memo_cache_sentinel")?(a={placement:"bottom-end"},s[1]=a):a=s[1],s[2]===Symbol.for("react.memo_cache_sentinel")?(r=e(p,{children:"Always allow in this session"}),s[2]=r):r=s[2],s[3]===Symbol.for("react.memo_cache_sentinel")?(i=t(b,{children:[r,e(w,{asChild:!0,children:e(p,{"aria-label":"More approval options","data-testid":"approval-card-more",children:e(o,{})})})]}),s[3]=i):i=s[3],s[4]===Symbol.for("react.memo_cache_sentinel")?(c=t(v,{"data-testid":"approval-card",children:[n,t(S,{children:[t(f,{positioning:a,children:[i,e(y,{children:e(_,{"data-testid":"approval-card-allow-once",children:"Allow once"})})]}),e(p,{variant:"secondary",color:"neutral",children:"Reject"})]})]}),s[4]=c):c=s[4],c},meta:A},{name:"WithRequester",story:()=>{let n,a,r=(0,l.c)(2);return r[0]===Symbol.for("react.memo_cache_sentinel")?(n=t(g,{children:[e(i,{agent:"acquit",size:40,live:!0,"data-testid":"approval-card-requester",children:t(c,{children:[e(d,{children:"Acquit"}),e(s,{children:"False Positive Resolver"})]})}),e("p",{children:"Mark 12 requests to /api/search as false positives and add an exception rule"})]}),r[0]=n):n=r[0],r[1]===Symbol.for("react.memo_cache_sentinel")?(a=t(v,{"data-testid":"approval-card",children:[n,t(S,{children:[e(p,{children:"Allow"}),e(p,{variant:"secondary",color:"neutral",children:"Reject"})]})]}),r[1]=a):a=r[1],a},meta:A},{name:"PendingLongText",story:()=>{let n,a,r,i,c,s=(0,l.c)(5);return s[0]===Symbol.for("react.memo_cache_sentinel")?(n=e(g,{children:'Disable the rule "Block SQL injection attempts" for the application "Payments API" and redeploy the policy to every node in the eu-west-1 cluster. Affected endpoint: https://payments.example.com/api/v2/transactions/refunds/batch-processing/callbacks'}),s[0]=n):n=s[0],s[1]===Symbol.for("react.memo_cache_sentinel")?(a={placement:"bottom-end"},s[1]=a):a=s[1],s[2]===Symbol.for("react.memo_cache_sentinel")?(r=e(p,{children:"Always allow in this session"}),s[2]=r):r=s[2],s[3]===Symbol.for("react.memo_cache_sentinel")?(i=t(b,{children:[r,e(w,{asChild:!0,children:e(p,{"aria-label":"More approval options","data-testid":"approval-card-more",children:e(o,{})})})]}),s[3]=i):i=s[3],s[4]===Symbol.for("react.memo_cache_sentinel")?(c=t(v,{"data-testid":"approval-card",children:[n,t(S,{children:[t(f,{positioning:a,children:[i,e(y,{children:e(_,{"data-testid":"approval-card-allow-once",children:"Allow once"})})]}),e(p,{variant:"secondary",color:"neutral",children:"Reject"})]})]}),s[4]=c):c=s[4],c},meta:A},{name:"PendingWithCodeSnippet",story:()=>{let n,a,r,i,c,s,d=(0,l.c)(6);return d[0]===Symbol.for("react.memo_cache_sentinel")?(n=e("p",{children:"Run this command on the node:"}),d[0]=n):n=d[0],d[1]===Symbol.for("react.memo_cache_sentinel")?(a=t(g,{children:[n,e(u,{code:"wallarm-cli rules disable --id 4021 --app payments-api",language:"bash",children:e(h,{children:e(m,{})})})]}),d[1]=a):a=d[1],d[2]===Symbol.for("react.memo_cache_sentinel")?(r={placement:"bottom-end"},d[2]=r):r=d[2],d[3]===Symbol.for("react.memo_cache_sentinel")?(i=e(p,{children:"Always allow in this session"}),d[3]=i):i=d[3],d[4]===Symbol.for("react.memo_cache_sentinel")?(c=t(b,{children:[i,e(w,{asChild:!0,children:e(p,{"aria-label":"More approval options","data-testid":"approval-card-more",children:e(o,{})})})]}),d[4]=c):c=d[4],d[5]===Symbol.for("react.memo_cache_sentinel")?(s=t(v,{"data-testid":"approval-card",children:[a,t(S,{children:[t(f,{positioning:r,children:[c,e(y,{children:e(_,{"data-testid":"approval-card-allow-once",children:"Allow once"})})]}),e(p,{variant:"secondary",color:"neutral",children:"Reject"})]})]}),d[5]=s):s=d[5],s},meta:A},{name:"AllowOnceMenu",story:()=>{let n,a,r,i,c,s=(0,l.c)(5);return s[0]===Symbol.for("react.memo_cache_sentinel")?(n=e(g,{children:"Add 203.0.113.42 to the denylist on all applications"}),s[0]=n):n=s[0],s[1]===Symbol.for("react.memo_cache_sentinel")?(a={placement:"bottom-end"},s[1]=a):a=s[1],s[2]===Symbol.for("react.memo_cache_sentinel")?(r=e(p,{children:"Always allow in this session"}),s[2]=r):r=s[2],s[3]===Symbol.for("react.memo_cache_sentinel")?(i=t(b,{children:[r,e(w,{asChild:!0,children:e(p,{"aria-label":"More approval options","data-testid":"approval-card-more",children:e(o,{})})})]}),s[3]=i):i=s[3],s[4]===Symbol.for("react.memo_cache_sentinel")?(c=t(v,{"data-testid":"approval-card",children:[n,t(S,{children:[t(f,{positioning:a,defaultOpen:!0,children:[i,e(y,{children:e(_,{"data-testid":"approval-card-allow-once",children:"Allow once"})})]}),e(p,{variant:"secondary",color:"neutral",children:"Reject"})]})]}),s[4]=c):c=s[4],c},meta:A},{name:"Loading",story:()=>{let n,a,r,i,c,s=(0,l.c)(5);return s[0]===Symbol.for("react.memo_cache_sentinel")?(n=e(g,{children:"Add 203.0.113.42 to the denylist on all applications"}),s[0]=n):n=s[0],s[1]===Symbol.for("react.memo_cache_sentinel")?(a={placement:"bottom-end"},s[1]=a):a=s[1],s[2]===Symbol.for("react.memo_cache_sentinel")?(r=e(p,{disabled:!0,children:"Always allow in this session"}),s[2]=r):r=s[2],s[3]===Symbol.for("react.memo_cache_sentinel")?(i=t(b,{children:[r,e(w,{asChild:!0,children:e(p,{"aria-label":"More approval options","data-testid":"approval-card-more",disabled:!0,children:e(o,{})})})]}),s[3]=i):i=s[3],s[4]===Symbol.for("react.memo_cache_sentinel")?(c=t(v,{"data-testid":"approval-card",children:[n,t(S,{children:[t(f,{positioning:a,children:[i,e(y,{children:e(_,{"data-testid":"approval-card-allow-once",children:"Allow once"})})]}),e(p,{variant:"secondary",color:"neutral",disabled:!0,children:"Reject"})]})]}),s[4]=c):c=s[4],c},meta:A},{name:"Approved",story:()=>{let n,a,r,i,c,s=(0,l.c)(5);return s[0]===Symbol.for("react.memo_cache_sentinel")?(n=e(g,{children:"Add 203.0.113.42 to the denylist on all applications"}),s[0]=n):n=s[0],s[1]===Symbol.for("react.memo_cache_sentinel")?(a={placement:"bottom-end"},s[1]=a):a=s[1],s[2]===Symbol.for("react.memo_cache_sentinel")?(r=e(p,{children:"Always allow in this session"}),s[2]=r):r=s[2],s[3]===Symbol.for("react.memo_cache_sentinel")?(i=t(b,{children:[r,e(w,{asChild:!0,children:e(p,{"aria-label":"More approval options",children:e(o,{})})})]}),s[3]=i):i=s[3],s[4]===Symbol.for("react.memo_cache_sentinel")?(c=t(v,{"data-testid":"approval-card",status:"approved",children:[n,t(S,{children:[t(f,{positioning:a,children:[i,e(y,{children:e(_,{children:"Allow once"})})]}),e(p,{variant:"secondary",color:"neutral",children:"Reject"})]})]}),s[4]=c):c=s[4],c},meta:A},{name:"Rejected",story:()=>{let n,a,r,i,c,s=(0,l.c)(5);return s[0]===Symbol.for("react.memo_cache_sentinel")?(n=e(g,{children:"Add 203.0.113.42 to the denylist on all applications"}),s[0]=n):n=s[0],s[1]===Symbol.for("react.memo_cache_sentinel")?(a={placement:"bottom-end"},s[1]=a):a=s[1],s[2]===Symbol.for("react.memo_cache_sentinel")?(r=e(p,{children:"Always allow in this session"}),s[2]=r):r=s[2],s[3]===Symbol.for("react.memo_cache_sentinel")?(i=t(b,{children:[r,e(w,{asChild:!0,children:e(p,{"aria-label":"More approval options",children:e(o,{})})})]}),s[3]=i):i=s[3],s[4]===Symbol.for("react.memo_cache_sentinel")?(c=t(v,{"data-testid":"approval-card",status:"rejected",rejectedLabel:"Denylist change rejected",children:[n,t(S,{children:[t(f,{positioning:a,children:[i,e(y,{children:e(_,{children:"Allow once"})})]}),e(p,{variant:"secondary",color:"neutral",children:"Reject"})]})]}),s[4]=c):c=s[4],c},meta:A},{name:"Analytics",story:()=>{let n,a,r,i,c,s=(0,l.c)(5);return s[0]===Symbol.for("react.memo_cache_sentinel")?(n=e(g,{children:"Add 203.0.113.42 to the denylist on all applications"}),s[0]=n):n=s[0],s[1]===Symbol.for("react.memo_cache_sentinel")?(a={placement:"bottom-end"},s[1]=a):a=s[1],s[2]===Symbol.for("react.memo_cache_sentinel")?(r=e(p,{"data-analytics-id":"AI_APPROVAL_ALLOW_SESSION",children:"Always allow in this session"}),s[2]=r):r=s[2],s[3]===Symbol.for("react.memo_cache_sentinel")?(i=t(b,{children:[r,e(w,{asChild:!0,children:e(p,{"aria-label":"More approval options","data-analytics-id":"AI_APPROVAL_MORE",children:e(o,{})})})]}),s[3]=i):i=s[3],s[4]===Symbol.for("react.memo_cache_sentinel")?(c=t(v,{"data-testid":"approval-card","data-analytics-id":"AI_APPROVAL_CARD",children:[n,t(S,{children:[t(f,{positioning:a,children:[i,e(y,{children:e(_,{"data-analytics-id":"AI_APPROVAL_ALLOW_ONCE",children:"Allow once"})})]}),e(p,{variant:"secondary",color:"neutral","data-analytics-id":"AI_APPROVAL_REJECT",children:"Reject"})]})]}),s[4]=c):c=s[4],c},meta:A}];function E({entry:e}){let{story:t,meta:n}=e,a={...n.args,...t.args},r="function"==typeof t||t.$$typeof?t:t.render||n.render||n.component,l=()=>R.default.createElement(r,a),o={args:a,globals:{theme:"light"},parameters:{...n.parameters,...t.parameters},viewMode:"story"};for(let e of[...n.decorators||[],...t.decorators||[]].reverse()){let t=l;l=()=>e(t,o)}return R.default.createElement("section",{"data-preview-story":e.name,className:"p-16"},R.default.createElement("h2",{className:"text-sm mb-12"},e.name),R.default.createElement(l))}window.WallarmPreview={mount(e){let t=window.ReactDOM.createRoot(e);return t.render(R.default.createElement(window.WallarmDS.Root,null,C.map((e,t)=>R.default.createElement(E,{key:t,entry:e})))),t}}})();
|
|
@@ -113,6 +113,13 @@ The same value components in the horizontal layout, where a wide one such as
|
|
|
113
113
|
|
|
114
114
|
Source: Attribute/Attribute.stories.tsx#HorizontalComposition
|
|
115
115
|
|
|
116
|
+
### AgentValue
|
|
117
|
+
|
|
118
|
+
An agent as the value — Run by, Proposed by: `AgentItem` at 20 px beside the text-sm value, the agent's glyph with
|
|
119
|
+
no plate, where a person gets the `Avatar` plate.
|
|
120
|
+
|
|
121
|
+
Source: Attribute/Attribute.stories.tsx#AgentValue
|
|
122
|
+
|
|
116
123
|
### HorizontalLoading
|
|
117
124
|
|
|
118
125
|
The horizontal skeleton is a 16px line against the vertical 24px, matching the
|
|
@@ -179,6 +186,7 @@ Source: Attribute/Attribute.stories.tsx#HorizontalMixed
|
|
|
179
186
|
import { useState } from 'react';
|
|
180
187
|
import type { Meta, StoryFn } from 'storybook-react-rsbuild';
|
|
181
188
|
import { Copy, Filter } from '../../icons';
|
|
189
|
+
import { AgentItem, Avatar, AvatarContent, AvatarFallback, AvatarName } from '../Avatar';
|
|
182
190
|
import { Badge } from '../Badge';
|
|
183
191
|
import { Code } from '../Code';
|
|
184
192
|
import { InlineCodeSnippet } from '../CodeSnippet';
|
|
@@ -871,6 +879,46 @@ export const HorizontalComposition: StoryFn<AttributeProps> = () => (
|
|
|
871
879
|
</div>
|
|
872
880
|
);
|
|
873
881
|
|
|
882
|
+
/**
|
|
883
|
+
* An agent as the value — Run by, Proposed by: `AgentItem` at 20 px beside the text-sm value, the agent's glyph with
|
|
884
|
+
* no plate, where a person gets the `Avatar` plate.
|
|
885
|
+
*/
|
|
886
|
+
export const AgentValue: StoryFn<AttributeProps> = () => (
|
|
887
|
+
<div className='w-[400px] flex flex-col gap-16'>
|
|
888
|
+
<Attribute data-testid='attr-run-by'>
|
|
889
|
+
<AttributeLabel>Run by</AttributeLabel>
|
|
890
|
+
<AttributeValue>
|
|
891
|
+
<AgentItem agent='radar' data-testid='attr-run-by-agent'>
|
|
892
|
+
<AvatarContent>
|
|
893
|
+
<AvatarName>Radar</AvatarName>
|
|
894
|
+
</AvatarContent>
|
|
895
|
+
</AgentItem>
|
|
896
|
+
</AttributeValue>
|
|
897
|
+
</Attribute>
|
|
898
|
+
<Attribute orientation='horizontal' data-testid='attr-proposed-by'>
|
|
899
|
+
<AttributeLabel>Proposed by</AttributeLabel>
|
|
900
|
+
<AttributeValue>
|
|
901
|
+
<AgentItem agent='acquit' data-testid='attr-proposed-by-agent'>
|
|
902
|
+
<AvatarContent>
|
|
903
|
+
<AvatarName>Acquit</AvatarName>
|
|
904
|
+
</AvatarContent>
|
|
905
|
+
</AgentItem>
|
|
906
|
+
</AttributeValue>
|
|
907
|
+
</Attribute>
|
|
908
|
+
<Attribute orientation='horizontal' data-testid='attr-approved-by'>
|
|
909
|
+
<AttributeLabel>Approved by</AttributeLabel>
|
|
910
|
+
<AttributeValue>
|
|
911
|
+
<Avatar size='sm' data-testid='attr-approved-by-person'>
|
|
912
|
+
<AvatarFallback name='Artem Miskevich' />
|
|
913
|
+
<AvatarContent>
|
|
914
|
+
<AvatarName>Artem Miskevich</AvatarName>
|
|
915
|
+
</AvatarContent>
|
|
916
|
+
</Avatar>
|
|
917
|
+
</AttributeValue>
|
|
918
|
+
</Attribute>
|
|
919
|
+
</div>
|
|
920
|
+
);
|
|
921
|
+
|
|
874
922
|
/**
|
|
875
923
|
* The horizontal skeleton is a 16px line against the vertical 24px, matching the
|
|
876
924
|
* single-line row it stands in for.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var e={vD(e,t,
|
|
1
|
+
var e={vD(e,t,r){let n,l;/**
|
|
2
2
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
@@ -9,4 +9,4 @@ var e={vD(e,t,n){let r,l;/**
|
|
|
9
9
|
* @nolint
|
|
10
10
|
* @preventMunge
|
|
11
11
|
* @preserve-invariant-messages
|
|
12
|
-
*/var i,c,o=Object.create,a=Object.defineProperty,d=Object.getOwnPropertyDescriptor,m=Object.getOwnPropertyNames,s=Object.getPrototypeOf,h=Object.prototype.hasOwnProperty,u=(e,t,n,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let l of m(t))h.call(e,l)||l===n||a(e,l,{get:()=>t[l],enumerable:!(r=d(t,l))||r.enumerable});return e},f={},_={$dispatcherGuard:()=>I,$makeReadOnly:()=>C,$reset:()=>D,$structuralCheck:()=>k,c:()=>E,clearRenderCounterRegistry:()=>$,renderCounterRegistry:()=>A,useRenderCounter:()=>W};for(var y in _)a(f,y,{get:_[y],enumerable:!0});e.exports=u(a({},"__esModule",{value:!0}),f);var p=(l=null!=(r=n("C"))?o(s(r)):{},u(r&&r.__esModule?l:a(l,"default",{value:r,enumerable:!0}),r)),{useRef:S,useEffect:b,isValidElement:w}=p,g=null!=(i=p.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE)?i:p.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,v=Symbol.for("react.memo_cache_sentinel"),E="function"==typeof(null==(c=p.__COMPILER_RUNTIME)?void 0:c.c)?p.__COMPILER_RUNTIME.c:function(e){return p.useMemo(()=>{let t=Array(e);for(let n=0;n<e;n++)t[n]=v;return t[v]=!0,t},[])},N={};["readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","getCacheSignal","getCacheForType","useCacheRefresh"].forEach(e=>{N[e]=()=>{throw Error(`[React] Unexpected React hook call (${e}) from a React compiled function. Check that all hooks are called directly and named according to convention ('use[A-Z]') `)}});var z=null;function R(e){return g.ReactCurrentDispatcher.current=e,g.ReactCurrentDispatcher.current}N.useMemoCache=e=>{if(null!=z)return z.useMemoCache(e);throw Error("React Compiler internal invariant violation: unexpected null dispatcher")};var x=[];function I(e){let t=g.ReactCurrentDispatcher.current;if(0===e){if(x.push(t),1===x.length&&(z=t),t===N)throw Error("[React] Unexpected call to custom hook or component from a React compiled function. Check that (1) all hooks are called directly and named according to convention ('use[A-Z]') and (2) components are returned as JSX instead of being directly invoked.");R(N)}else if(1===e){let e=x.pop();if(null==e)throw Error("React Compiler internal error: unexpected null in guard stack");0===x.length&&(z=null),R(e)}else if(2===e)x.push(t),R(z);else if(3===e){let e=x.pop();if(null==e)throw Error("React Compiler internal error: unexpected null in guard stack");R(e)}else throw Error("React Compiler internal error: unreachable block"+e)}function D(e){for(let t=0;t<e.length;t++)e[t]=v}function C(){throw Error("TODO: implement $makeReadOnly in react-compiler-runtime")}var A=new Map;function $(){for(let e of A.values())e.forEach(e=>{e.count=0})}function W(e){let t=S(null);null!=t.current&&(t.current.count+=1),b(()=>{if(null==t.current){let n,r={count:0};null==(n=A.get(e))&&(n=new Set,A.set(e,n)),n.add(r),t.current=r}return()=>{var n;let r;null!==t.current&&(n=t.current,null!=(r=A.get(e))&&r.delete(n))}})}var O=new Set;function k(e,t,n,r,l,i){function c(e,t,c,o){let a=`${r}:${i} [${l}] ${n}${c} changed from ${e} to ${t} at depth ${o}`;O.has(a)||(O.add(a),console.error(a))}!function e(t,n,r,l){if(!(l>2)){if(t!==n)if(typeof t!=typeof n)c(`type ${typeof t}`,`type ${typeof n}`,r,l);else if("object"==typeof t){let i=Array.isArray(t),o=Array.isArray(n);if(null===t&&null!==n)c("null",`type ${typeof n}`,r,l);else if(null===n)c(`type ${typeof t}`,"null",r,l);else if(t instanceof Map)if(n instanceof Map)if(t.size!==n.size)c(`Map instance with size ${t.size}`,`Map instance with size ${n.size}`,r,l);else for(let[i,o]of t)n.has(i)?e(o,n.get(i),`${r}.get(${i})`,l+1):c(`Map instance with key ${i}`,`Map instance without key ${i}`,r,l);else c("Map instance","other value",r,l);else if(n instanceof Map)c("other value","Map instance",r,l);else if(t instanceof Set)if(n instanceof Set)if(t.size!==n.size)c(`Set instance with size ${t.size}`,`Set instance with size ${n.size}`,r,l);else for(let e of n)t.has(e)||c(`Set instance without element ${e}`,`Set instance with element ${e}`,r,l);else c("Set instance","other value",r,l);else if(n instanceof Set)c("other value","Set instance",r,l);else if(i||o)if(i!==o)c(`type ${i?"array":"object"}`,`type ${o?"array":"object"}`,r,l);else if(t.length!==n.length)c(`array with length ${t.length}`,`array with length ${n.length}`,r,l);else for(let i=0;i<t.length;i++)e(t[i],n[i],`${r}[${i}]`,l+1);else if(w(t)||w(n))w(t)!==w(n)?c(`type ${w(t)?"React element":"object"}`,`type ${w(n)?"React element":"object"}`,r,l):t.type!==n.type?c(`React element of type ${t.type}`,`React element of type ${n.type}`,r,l):e(t.props,n.props,`[props of ${r}]`,l+1);else{for(let e in n)e in t||c(`object without key ${e}`,`object with key ${e}`,r,l);for(let i in t)i in n?e(t[i],n[i],`${r}.${i}`,l+1):c(`object with key ${i}`,`object without key ${i}`,r,l)}}else{if("function"==typeof t)return;isNaN(t)||isNaN(n)?isNaN(t)!==isNaN(n)&&c(`${isNaN(t)?"NaN":"non-NaN value"}`,`${isNaN(n)?"NaN":"non-NaN value"}`,r,l):t!==n&&c(t,n,r,l)}}}(e,t,"",0)}},p(e,t,n){let r=new WeakMap,l=new WeakMap;function i(e,t,n){let i=t,c=n;if("object"==typeof i&&null!==i&&"$$typeof"in i&&i.$$typeof===Symbol.for("react.context")&&"Provider"in i&&(i=i.Provider),"function"==typeof i&&null!=c.ref&&!i.prototype?.isReactComponent){let t=i,n=r.get(e);n||(n=new WeakMap,r.set(e,n));let l=n.get(t);l||((l=e.forwardRef((e,n)=>t({...e,ref:n}))).displayName=t.displayName??t.name,n.set(t,l)),i=l}if("string"==typeof i&&"boolean"==typeof c.inert&&((c={...c}).inert?c.inert="":delete c.inert),"string"==typeof i)for(let[e,t]of[["fill-rule","fillRule"],["clip-rule","clipRule"]])e in c&&(c={...c,[t]:c[e]},delete c[e]);return"string"==typeof i&&null!=c.ref&&(i=function(e,t){let n=l.get(e);n||(n=new Map,l.set(e,n));let r=n.get(t);if(r)return r;let i=e.forwardRef((n,r)=>{let l=e.useRef(null);if(!l.current||l.current.original!==r){let e;l.current={original:r,callback:t=>{if(null==t&&e){let t=e;e=void 0,t();return}if("function"==typeof r){let n=r(t);e="function"==typeof n?n:void 0}else r&&(r.current=t)}}}return e.createElement(t,{...n,ref:l.current.callback})});return i.displayName=`CanvasHost(${t})`,n.set(t,i),i}(e,i)),{type:i,props:c}}function c(e){let t=(t,n,r)=>{let l=i(e,t,n??{});return e.createElement(l.type,void 0===r?l.props:{...l.props,key:r})};return{jsx:t,jsxs:(t,n,r)=>{let l=i(e,t,n??{}),{children:c,...o}=l.props;return e.createElement(l.type,void 0===r?o:{...o,key:r},...Array.isArray(c)?c:[c])},jsxDEV:t,Fragment:e.Fragment}}function o(e){return{...e,createElement:(t,n,...r)=>{let l=i(e,t,n??{});return e.createElement(l.type,l.props,...r)},cloneElement:(t,n,...r)=>{let l=e.cloneElement(t,n??void 0,...r),c=l.ref,o=i(e,l.type,{...l.props,ref:c});return o.type===l.type&&"string"!=typeof l.type?l:e.createElement(o.type,{...o.props,key:l.key})}}}n.d(t,{MA:()=>c,YJ:()=>o})},C(e,t,n){n.r(t);let r=(0,n("p").YJ)(window.React),{Children:l,Component:i,Fragment:c,Profiler:o,PureComponent:a,StrictMode:d,Suspense:m,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:s,act:h,cloneElement:u,createContext:f,createElement:_,createFactory:y,createRef:p,forwardRef:S,isValidElement:b,lazy:w,memo:g,startTransition:v,unstable_act:E,useCallback:N,useContext:z,useDebugValue:R,useDeferredValue:x,useEffect:I,useId:D,useImperativeHandle:C,useInsertionEffect:A,useLayoutEffect:$,useMemo:W,useReducer:O,useRef:k,useState:P,useSyncExternalStore:M,useTransition:T,version:L,use:j}=r;n.d(t,{},{Children:l,Component:i,Fragment:c,Profiler:o,PureComponent:a,StrictMode:d,Suspense:m,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:s,act:h,cloneElement:u,createContext:f,createElement:_,createFactory:y,createRef:p,default:r,forwardRef:S,isValidElement:b,lazy:w,memo:g,startTransition:v,unstable_act:E,use:j,useCallback:N,useContext:z,useDebugValue:R,useDeferredValue:x,useEffect:I,useId:D,useImperativeHandle:C,useInsertionEffect:A,useLayoutEffect:$,useMemo:W,useReducer:O,useRef:k,useState:P,useSyncExternalStore:M,useTransition:T,version:L})}},t={};function n(r){var l=t[r];if(void 0!==l)return l.exports;var i=t[r]={exports:{}};return e[r](i,i.exports,n),i.exports}n.d=(e,t,r)=>{var l=(t,r)=>{for(var l in t)n.o(t,l)&&!n.o(e,l)&&Object.defineProperty(e,l,{enumerable:!0,[r]:t[l]})};l(t,"get"),l(r,"value")},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{let{jsx:e,jsxs:t,jsxDEV:r,Fragment:l}=(0,n("p").MA)(window.React);var i=n("vD"),c=n("C");let o=window.WallarmDS.Icons.Copy,a=window.WallarmDS.Icons.Filter,d=window.WallarmDS.Badge,m=window.WallarmDS.Code,s=window.WallarmDS.InlineCodeSnippet,h=window.WallarmDS.FormatDateTime,u=window.WallarmDS.InlineEditControl,f=window.WallarmDS.InlineEditError,_=window.WallarmDS.InlineEditInput,y=window.WallarmDS.InlineEditPreview,p=window.WallarmDS.InlineEdit,S=window.WallarmDS.Ip,b=window.WallarmDS.IpAddress,w=window.WallarmDS.IpCountry,g=window.WallarmDS.IpList,v=window.WallarmDS.IpProvider,E=window.WallarmDS.Link,N=window.WallarmDS.OverflowList,z=window.WallarmDS.Tag,R=window.WallarmDS.Text,x=window.WallarmDS.Attribute,I=window.WallarmDS.AttributeActions,D=window.WallarmDS.AttributeActionsContent,C=window.WallarmDS.AttributeActionsItem,A=window.WallarmDS.AttributeActionsTarget,$=window.WallarmDS.AttributeEmptyDescription,W=window.WallarmDS.AttributeLabel,O=window.WallarmDS.AttributeLabelDescription,k=window.WallarmDS.AttributeLabelInfo,P=window.WallarmDS.AttributeValue,M={title:"Data Display/Attribute",component:x,subcomponents:{AttributeLabel:W,AttributeLabelDescription:O,AttributeLabelInfo:k,AttributeValue:P,AttributeEmptyDescription:$,AttributeActions:I,AttributeActionsTarget:A,AttributeActionsContent:D,AttributeActionsItem:C,InlineEditPreview:y,InlineEditControl:u,InlineEditInput:_,InlineEditError:f},parameters:{layout:"centered",docs:{description:{component:"Pairs one field's label with its value on a detail page — reach for `Table` when the same fields repeat across many objects, and `Field` when the value is being collected rather than read. The value slot takes whichever display component fits the data and hosts `InlineEdit` when the field is editable in place, while `AttributeActions` hangs a per-value menu off it."}}}},T=()=>t(D,{children:[t(C,{onSelect:()=>{},children:[e(a,{}),"Investigate by this value"]}),t(C,{onSelect:()=>{},children:[e(o,{}),"Copy value"]})]}),L=n=>t(l,{children:[t(x,{orientation:"horizontal",children:[e(W,{children:"Source IP"}),e(P,{children:t(I,{"data-testid":"attr-source-ip",children:[e(A,{disableNestedInteractive:n,children:e(R,{size:"sm",children:"142.198.167.52"})}),T()]})})]}),t(x,{orientation:"horizontal",children:[e(W,{children:"Status"}),e(P,{children:t(I,{"data-testid":"attr-badge",children:[e(A,{disableNestedInteractive:n,children:e(d,{"data-testid":"attr-badge-value",color:"red",variant:"dotted",children:"Blocked"})}),T()]})})]}),t(x,{orientation:"horizontal",children:[e(W,{children:"IPs"}),e(P,{children:t(I,{"data-testid":"attr-ip-overflow",children:[e(A,{disableNestedInteractive:n,children:t(g,{type:"horizontal",children:[t(S,{children:[e(w,{code:"US"}),e(b,{children:"142.198.167.52"}),e(v,{children:"Azure"})]}),t(S,{children:[e(w,{code:"US"}),e(b,{children:"34.74.73.20"}),e(v,{children:"AWS"})]}),t(S,{children:[e(w,{code:"DE"}),e(b,{children:"34.74.73.20"}),e(v,{children:"GCP"})]}),t(S,{children:[e(w,{code:"NL"}),e(b,{children:"10.0.0.1"})]}),t(S,{children:[e(w,{code:"JP"}),e(b,{children:"192.168.1.1"})]})]})}),T()]})})]}),t(x,{orientation:"horizontal",children:[e(W,{children:"Payload"}),e(P,{children:t(I,{"data-testid":"attr-code-snippet",children:[e(A,{disableNestedInteractive:n,children:e(s,{code:'{ "action": "login", "user_id": 42 }',size:"sm"})}),T()]})})]}),t(x,{orientation:"horizontal",children:[e(W,{children:"Documentation"}),e(P,{children:t(I,{"data-testid":"attr-link",children:[e(A,{disableNestedInteractive:n,children:e(E,{href:"#",size:"md",children:"View full report"})}),T()]})})]}),t(x,{orientation:"horizontal",children:[e(W,{children:"Tags"}),e(P,{children:t(I,{"data-testid":"attr-tags",children:[e(A,{disableNestedInteractive:n,children:e(N,{className:"gap-4",items:["production","us-east-1","critical","tier-1","public","monitored"],itemRenderer:t=>e(z,{"data-testid":"attr-tag",children:t},t)})}),T()]})})]})]}),j=()=>{let t,n=(0,i.c)(1);return n[0]===Symbol.for("react.memo_cache_sentinel")?(t=e("div",{className:"w-[400px] flex flex-col gap-8",children:L(!1)}),n[0]=t):t=n[0],t};j.storyName="Horizontal With Actions (default — copy on text, menu outside)";let U=()=>{let t,n=(0,i.c)(1);return n[0]===Symbol.for("react.memo_cache_sentinel")?(t=e("div",{className:"w-[400px] flex flex-col gap-8",children:L(!0)}),n[0]=t):t=n[0],t};function F(n){let r,l,o,a,d,m,s,h=(0,i.c)(12),{orientation:S}=n,[b,w]=(0,c.useState)("Checkout API");return h[0]===Symbol.for("react.memo_cache_sentinel")?(r=e(W,{children:"Name"}),h[0]=r):r=h[0],h[1]===Symbol.for("react.memo_cache_sentinel")?(l=e=>w(e),h[1]=l):l=h[1],h[2]!==b?(o=e(y,{children:b}),h[2]=b,h[3]=o):o=h[3],h[4]===Symbol.for("react.memo_cache_sentinel")?(a=e(u,{children:e(_,{})}),d=e(f,{}),h[4]=a,h[5]=d):(a=h[4],d=h[5]),h[6]!==b||h[7]!==o?(m=e(P,{children:t(p,{value:b,onValueCommit:l,children:[o,a,d]})}),h[6]=b,h[7]=o,h[8]=m):m=h[8],h[9]!==S||h[10]!==m?(s=e("div",{className:"w-[420px]",children:t(x,{orientation:S,"data-testid":"attr",children:[r,m]})}),h[9]=S,h[10]=m,h[11]=s):s=h[11],s}function H(n){let r,l,o,a,d,m,s,h,S,b,w,g,v,E,N=(0,i.c)(25),{orientation:z}=n,[D,C]=(0,c.useState)("Checkout API"),$="horizontal"===z?"w-[420px] flex flex-col gap-8":"w-[420px] flex flex-col gap-16";return N[0]===Symbol.for("react.memo_cache_sentinel")?(r=e(W,{children:"Request ID"}),N[0]=r):r=N[0],N[1]===Symbol.for("react.memo_cache_sentinel")?(l=e(P,{children:e(R,{size:"sm",children:"abc-123-def-456"})}),N[1]=l):l=N[1],N[2]!==z?(o=t(x,{orientation:z,"data-testid":"attr-plain",children:[r,l]}),N[2]=z,N[3]=o):o=N[3],N[4]===Symbol.for("react.memo_cache_sentinel")?(a=e(W,{children:"Source IP"}),N[4]=a):a=N[4],N[5]===Symbol.for("react.memo_cache_sentinel")?(d=e(P,{children:t(I,{children:[e(A,{children:e(R,{size:"sm",children:"142.198.167.52"})}),T()]})}),N[5]=d):d=N[5],N[6]!==z?(m=t(x,{orientation:z,"data-testid":"attr-actions",children:[a,d]}),N[6]=z,N[7]=m):m=N[7],N[8]===Symbol.for("react.memo_cache_sentinel")?(s=e(W,{children:"Name"}),N[8]=s):s=N[8],N[9]===Symbol.for("react.memo_cache_sentinel")?(h=e=>C(e),N[9]=h):h=N[9],N[10]!==D?(S=e(y,{children:D}),N[10]=D,N[11]=S):S=N[11],N[12]===Symbol.for("react.memo_cache_sentinel")?(b=e(u,{children:e(_,{})}),w=e(f,{}),N[12]=b,N[13]=w):(b=N[12],w=N[13]),N[14]!==D||N[15]!==S?(g=e(P,{children:t(p,{value:D,onValueCommit:h,children:[S,b,w]})}),N[14]=D,N[15]=S,N[16]=g):g=N[16],N[17]!==z||N[18]!==g?(v=t(x,{orientation:z,"data-testid":"attr-inline-edit",children:[s,g]}),N[17]=z,N[18]=g,N[19]=v):v=N[19],N[20]!==$||N[21]!==v||N[22]!==o||N[23]!==m?(E=t("div",{className:$,children:[o,m,v]}),N[20]=$,N[21]=v,N[22]=o,N[23]=m,N[24]=E):E=N[24],E}U.storyName="Horizontal With Actions (disableNestedInteractive — menu only)";let V=()=>{let t,n=(0,i.c)(1);return n[0]===Symbol.for("react.memo_cache_sentinel")?(t=e(H,{}),n[0]=t):t=n[0],t};V.storyName="Mixed (plain + Actions + InlineEdit)";let B=()=>{let t,n=(0,i.c)(1);return n[0]===Symbol.for("react.memo_cache_sentinel")?(t=e(H,{orientation:"horizontal"}),n[0]=t):t=n[0],t};function X(t){return e(z,{children:t},t)}function q(t){return e(z,{children:t},t)}function Z(t){return e(z,{children:t},t)}function G(t){return e(z,{children:t},t)}function J(t){return e(z,{children:t},t)}function Y(t){return e(z,{children:t},t)}B.storyName="Horizontal Mixed (plain + Actions + InlineEdit)";let Q=[{name:"Default",story:()=>{let n,r,l=(0,i.c)(2);return l[0]===Symbol.for("react.memo_cache_sentinel")?(n=e(W,{children:"Request ID"}),l[0]=n):n=l[0],l[1]===Symbol.for("react.memo_cache_sentinel")?(r=e("div",{className:"w-[400px]",children:t(x,{children:[n,e(P,{children:e(R,{size:"sm",children:"abc-123-def-456"})})]})}),l[1]=r):r=l[1],r},meta:M},{name:"WithDescription",story:()=>{let n,r,l=(0,i.c)(2);return l[0]===Symbol.for("react.memo_cache_sentinel")?(n=t(W,{children:["Created at",e(O,{children:"The time when the request was first received"})]}),l[0]=n):n=l[0],l[1]===Symbol.for("react.memo_cache_sentinel")?(r=e("div",{className:"w-[400px]",children:t(x,{children:[n,e(P,{children:e(R,{size:"sm",children:"April 9, 2026, 14:32"})})]})}),l[1]=r):r=l[1],r},meta:M},{name:"WithInfo",story:()=>{let n,r,l,c,o=(0,i.c)(4);return o[0]===Symbol.for("react.memo_cache_sentinel")?(n=t(W,{children:["Request ID",e(k,{children:"Unique identifier assigned to each incoming request"})]}),o[0]=n):n=o[0],o[1]===Symbol.for("react.memo_cache_sentinel")?(r=t(x,{children:[n,e(P,{children:e(R,{size:"sm",children:"abc-123-def-456"})})]}),o[1]=r):r=o[1],o[2]===Symbol.for("react.memo_cache_sentinel")?(l=t(W,{children:[e(k,{children:"Unique identifier assigned to each incoming request"}),"Request ID"]}),o[2]=l):l=o[2],o[3]===Symbol.for("react.memo_cache_sentinel")?(c=t("div",{className:"w-[400px] flex flex-col gap-16",children:[r,t(x,{children:[l,e(P,{children:e(R,{size:"sm",children:"abc-123-def-456"})})]})]}),o[3]=c):c=o[3],c},meta:M},{name:"WithLink",story:()=>{let n,r,l=(0,i.c)(2);return l[0]===Symbol.for("react.memo_cache_sentinel")?(n=t(W,{children:["Source",e(E,{href:"#",size:"md",children:"View docs"})]}),l[0]=n):n=l[0],l[1]===Symbol.for("react.memo_cache_sentinel")?(r=e("div",{className:"w-[400px]",children:t(x,{children:[n,e(P,{children:e(R,{size:"sm",children:"API Gateway"})})]})}),l[1]=r):r=l[1],r},meta:M},{name:"Empty",story:()=>{let n,r,l,c,o,a=(0,i.c)(5);return a[0]===Symbol.for("react.memo_cache_sentinel")?(n=t(x,{children:[t(W,{children:["Region",e(O,{children:"Manual composition"})]}),e(P,{})]}),a[0]=n):n=a[0],a[1]===Symbol.for("react.memo_cache_sentinel")?(r=e(W,{children:"Region"}),a[1]=r):r=a[1],a[2]===Symbol.for("react.memo_cache_sentinel")?(l=t(x,{isEmpty:!0,children:[r,e(P,{children:e(R,{size:"sm",children:"This text is replaced by the em-dash placeholder"})})]}),a[2]=l):l=a[2],a[3]===Symbol.for("react.memo_cache_sentinel")?(c=t(x,{isEmpty:!0,children:[t(W,{children:["Owner",e($,{children:"Not yet assigned"})]}),e(P,{})]}),a[3]=c):c=a[3],a[4]===Symbol.for("react.memo_cache_sentinel")?(o=t("div",{className:"w-[400px] flex flex-col gap-16",children:[n,l,c,t(x,{isEmpty:!0,children:[t(W,{children:["SSO provider",t($,{children:["Not connected —"," ",e(E,{href:"#",size:"md",children:"set up integration"})]})]}),e(P,{})]})]}),a[4]=o):o=a[4],o},meta:M},{name:"Loading",story:()=>{let n,r,l=(0,i.c)(2);return l[0]===Symbol.for("react.memo_cache_sentinel")?(n=t(x,{loading:!0,children:[e(W,{children:"Created at"}),e(P,{})]}),l[0]=n):n=l[0],l[1]===Symbol.for("react.memo_cache_sentinel")?(r=t("div",{className:"w-[400px] flex flex-col gap-16",children:[n,t(x,{loading:!0,children:[e(W,{children:"Status"}),e(P,{})]})]}),l[1]=r):r=l[1],r},meta:M},{name:"Composition",story:()=>{let n,r,l,c,o,a,u,f,_,y,p,z,I,D,C,A,$,O,k,M,T,L,j,U,F,H,V=(0,i.c)(26);return V[0]===Symbol.for("react.memo_cache_sentinel")?(n=e(W,{children:"Status"}),V[0]=n):n=V[0],V[1]===Symbol.for("react.memo_cache_sentinel")?(r=t(x,{children:[n,e(P,{children:e(d,{color:"red",variant:"dotted",children:"Blocked"})})]}),V[1]=r):r=V[1],V[2]===Symbol.for("react.memo_cache_sentinel")?(l=e(W,{children:"First seen"}),V[2]=l):l=V[2],V[3]===Symbol.for("react.memo_cache_sentinel")?(c=t(x,{children:[l,e(P,{children:e(h,{value:"2026-04-03T10:15:00Z",format:"relative"})})]}),V[3]=c):c=V[3],V[4]===Symbol.for("react.memo_cache_sentinel")?(o=e(W,{children:"Attack type"}),V[4]=o):o=V[4],V[5]===Symbol.for("react.memo_cache_sentinel")?(a=t(x,{children:[o,e(P,{children:e(N,{className:"gap-4",items:["XSS","BOLA","SQL Injection","Scanner","CSRF","XXE","RCE","LFI","IDOR"],itemRenderer:X})})]}),V[5]=a):a=V[5],V[6]===Symbol.for("react.memo_cache_sentinel")?(u=e(W,{children:"Sessions"}),V[6]=u):u=V[6],V[7]===Symbol.for("react.memo_cache_sentinel")?(f=t(x,{children:[u,e(P,{children:e(R,{size:"sm",children:"3 sessions"})})]}),V[7]=f):f=V[7],V[8]===Symbol.for("react.memo_cache_sentinel")?(_=e(W,{children:"Users"}),V[8]=_):_=V[8],V[9]===Symbol.for("react.memo_cache_sentinel")?(y=t(x,{children:[_,e(P,{children:e(N,{className:"gap-4",items:["artem@acme.com","uxd@acme.com","ops@acme.com","security@acme.com","admin@acme.com"],itemRenderer:q})})]}),V[9]=y):y=V[9],V[10]===Symbol.for("react.memo_cache_sentinel")?(p=e(W,{children:"IPs"}),V[10]=p):p=V[10],V[11]===Symbol.for("react.memo_cache_sentinel")?(z=t(S,{children:[e(w,{code:"US"}),e(b,{children:"142.198.167.52"}),e(v,{children:"Azure"})]}),V[11]=z):z=V[11],V[12]===Symbol.for("react.memo_cache_sentinel")?(I=t(S,{children:[e(w,{code:"US"}),e(b,{children:"34.74.73.20"}),e(v,{children:"AWS"})]}),V[12]=I):I=V[12],V[13]===Symbol.for("react.memo_cache_sentinel")?(D=t(S,{children:[e(w,{code:"DE"}),e(b,{children:"34.74.73.20"}),e(v,{children:"GCP"})]}),V[13]=D):D=V[13],V[14]===Symbol.for("react.memo_cache_sentinel")?(C=t(S,{children:[e(w,{code:"NL"}),e(b,{children:"10.0.0.1"})]}),V[14]=C):C=V[14],V[15]===Symbol.for("react.memo_cache_sentinel")?(A=t(x,{children:[p,e(P,{children:t(g,{children:[z,I,D,C,t(S,{children:[e(w,{code:"JP"}),e(b,{children:"192.168.1.1"})]})]})})]}),V[15]=A):A=V[15],V[16]===Symbol.for("react.memo_cache_sentinel")?($=e(W,{children:"Source IP"}),V[16]=$):$=V[16],V[17]===Symbol.for("react.memo_cache_sentinel")?(O=t(x,{children:[$,e(P,{children:t(S,{children:[e(w,{code:"US"}),e(b,{children:"142.198.167.52"}),e(v,{children:"Azure"})]})})]}),V[17]=O):O=V[17],V[18]===Symbol.for("react.memo_cache_sentinel")?(k=e(W,{children:"Created at"}),V[18]=k):k=V[18],V[19]===Symbol.for("react.memo_cache_sentinel")?(M=t(x,{children:[k,e(P,{children:e(h,{value:"2026-04-02T14:03:00Z",format:"datetime"})})]}),V[19]=M):M=V[19],V[20]===Symbol.for("react.memo_cache_sentinel")?(T=e(W,{children:"Documentation"}),V[20]=T):T=V[20],V[21]===Symbol.for("react.memo_cache_sentinel")?(L=t(x,{children:[T,e(P,{children:e(E,{href:"#",size:"md",children:"View full report"})})]}),V[21]=L):L=V[21],V[22]===Symbol.for("react.memo_cache_sentinel")?(j=e(W,{children:"Payload (inline)"}),V[22]=j):j=V[22],V[23]===Symbol.for("react.memo_cache_sentinel")?(U=t(x,{children:[j,e(P,{children:e(s,{code:'{ "action": "login", "user_id": 42 }',size:"sm"})})]}),V[23]=U):U=V[23],V[24]===Symbol.for("react.memo_cache_sentinel")?(F=e(W,{children:"Payload (code)"}),V[24]=F):F=V[24],V[25]===Symbol.for("react.memo_cache_sentinel")?(H=t("div",{className:"grid grid-cols-2 gap-x-8 gap-y-16 w-[874px]",children:[r,c,a,f,y,A,O,M,L,U,t(x,{children:[F,e(P,{children:e(m,{size:"s",children:'{ "action": "login", "user_id": 42 }'})})]})]}),V[25]=H):H=V[25],H},meta:M},{name:"WithActions",story:()=>{let n,r,l,c,o,a,u,f,_,y,p,z,D,C,$,O,k,M,L,j,U,F,H,V,B,X,q=(0,i.c)(26);return q[0]===Symbol.for("react.memo_cache_sentinel")?(n=e(W,{children:"Status"}),q[0]=n):n=q[0],q[1]===Symbol.for("react.memo_cache_sentinel")?(r=t(x,{children:[n,e(P,{children:t(I,{"data-testid":"attribute-with-actions",children:[e(A,{children:e(d,{color:"red",variant:"dotted",children:"Blocked"})}),T()]})})]}),q[1]=r):r=q[1],q[2]===Symbol.for("react.memo_cache_sentinel")?(l=e(W,{children:"First seen"}),q[2]=l):l=q[2],q[3]===Symbol.for("react.memo_cache_sentinel")?(c=t(x,{children:[l,e(P,{children:t(I,{children:[e(A,{children:e(h,{value:"2026-04-03T10:15:00Z",format:"relative"})}),T()]})})]}),q[3]=c):c=q[3],q[4]===Symbol.for("react.memo_cache_sentinel")?(o=e(W,{children:"Attack type"}),q[4]=o):o=q[4],q[5]===Symbol.for("react.memo_cache_sentinel")?(a=t(x,{children:[o,e(P,{children:t(I,{children:[e(A,{children:e(N,{className:"gap-4",items:["XSS","BOLA","SQL Injection","Scanner","CSRF","XXE","RCE","LFI","IDOR"],itemRenderer:Z})}),T()]})})]}),q[5]=a):a=q[5],q[6]===Symbol.for("react.memo_cache_sentinel")?(u=e(W,{children:"Sessions"}),q[6]=u):u=q[6],q[7]===Symbol.for("react.memo_cache_sentinel")?(f=t(x,{children:[u,e(P,{children:t(I,{children:[e(A,{children:e(R,{size:"sm",children:"3 sessions"})}),T()]})})]}),q[7]=f):f=q[7],q[8]===Symbol.for("react.memo_cache_sentinel")?(_=e(W,{children:"Users"}),q[8]=_):_=q[8],q[9]===Symbol.for("react.memo_cache_sentinel")?(y=t(x,{children:[_,e(P,{children:t(I,{children:[e(A,{children:e(N,{className:"gap-4",items:["artem@acme.com","uxd@acme.com","ops@acme.com","security@acme.com","admin@acme.com"],itemRenderer:G})}),T()]})})]}),q[9]=y):y=q[9],q[10]===Symbol.for("react.memo_cache_sentinel")?(p=e(W,{children:"IPs"}),q[10]=p):p=q[10],q[11]===Symbol.for("react.memo_cache_sentinel")?(z=t(S,{children:[e(w,{code:"US"}),e(b,{children:"142.198.167.52"}),e(v,{children:"Azure"})]}),q[11]=z):z=q[11],q[12]===Symbol.for("react.memo_cache_sentinel")?(D=t(S,{children:[e(w,{code:"US"}),e(b,{children:"34.74.73.20"}),e(v,{children:"AWS"})]}),q[12]=D):D=q[12],q[13]===Symbol.for("react.memo_cache_sentinel")?(C=t(S,{children:[e(w,{code:"DE"}),e(b,{children:"34.74.73.20"}),e(v,{children:"GCP"})]}),q[13]=C):C=q[13],q[14]===Symbol.for("react.memo_cache_sentinel")?($=t(S,{children:[e(w,{code:"NL"}),e(b,{children:"10.0.0.1"})]}),q[14]=$):$=q[14],q[15]===Symbol.for("react.memo_cache_sentinel")?(O=t(x,{children:[p,e(P,{children:t(I,{children:[e(A,{children:t(g,{children:[z,D,C,$,t(S,{children:[e(w,{code:"JP"}),e(b,{children:"192.168.1.1"})]})]})}),T()]})})]}),q[15]=O):O=q[15],q[16]===Symbol.for("react.memo_cache_sentinel")?(k=e(W,{children:"Source IP"}),q[16]=k):k=q[16],q[17]===Symbol.for("react.memo_cache_sentinel")?(M=t(x,{children:[k,e(P,{children:t(I,{children:[e(A,{children:t(S,{children:[e(w,{code:"US"}),e(b,{children:"142.198.167.52"}),e(v,{children:"Azure"})]})}),T()]})})]}),q[17]=M):M=q[17],q[18]===Symbol.for("react.memo_cache_sentinel")?(L=e(W,{children:"Created at"}),q[18]=L):L=q[18],q[19]===Symbol.for("react.memo_cache_sentinel")?(j=t(x,{children:[L,e(P,{children:t(I,{children:[e(A,{children:e(h,{value:"2026-04-02T14:03:00Z",format:"datetime"})}),T()]})})]}),q[19]=j):j=q[19],q[20]===Symbol.for("react.memo_cache_sentinel")?(U=e(W,{children:"Documentation"}),q[20]=U):U=q[20],q[21]===Symbol.for("react.memo_cache_sentinel")?(F=t(x,{children:[U,e(P,{children:t(I,{children:[e(A,{children:e(E,{href:"#",size:"md",children:"View full report"})}),T()]})})]}),q[21]=F):F=q[21],q[22]===Symbol.for("react.memo_cache_sentinel")?(H=e(W,{children:"Payload (inline)"}),q[22]=H):H=q[22],q[23]===Symbol.for("react.memo_cache_sentinel")?(V=t(x,{children:[H,e(P,{children:t(I,{children:[e(A,{children:e(s,{code:'{ "action": "login", "user_id": 42 }',size:"sm"})}),T()]})})]}),q[23]=V):V=q[23],q[24]===Symbol.for("react.memo_cache_sentinel")?(B=e(W,{children:"Payload (code)"}),q[24]=B):B=q[24],q[25]===Symbol.for("react.memo_cache_sentinel")?(X=t("div",{className:"grid grid-cols-2 gap-x-8 gap-y-16 w-[874px]",children:[r,c,a,f,y,O,M,j,F,V,t(x,{children:[B,e(P,{children:t(I,{children:[e(A,{children:e(m,{size:"s",children:'{ "action": "login", "user_id": 42 }'})}),T()]})})]})]}),q[25]=X):X=q[25],X},meta:M},{name:"Horizontal",story:()=>{let n,r,l=(0,i.c)(2);return l[0]===Symbol.for("react.memo_cache_sentinel")?(n=e(W,{children:"Status"}),l[0]=n):n=l[0],l[1]===Symbol.for("react.memo_cache_sentinel")?(r=e("div",{className:"w-[400px]",children:t(x,{orientation:"horizontal",children:[n,e(P,{children:e(d,{color:"red",variant:"dotted",children:"Blocked"})})]})}),l[1]=r):r=l[1],r},meta:M},{name:"HorizontalTruncation",story:()=>{let n,r,l,c,o,a,d=(0,i.c)(6);return d[0]===Symbol.for("react.memo_cache_sentinel")?(n=e(W,{width:256,children:"Short"}),d[0]=n):n=d[0],d[1]===Symbol.for("react.memo_cache_sentinel")?(r=t(x,{orientation:"horizontal",children:[n,e(P,{children:e(R,{size:"sm",children:"Fits in 256px label cell"})})]}),d[1]=r):r=d[1],d[2]===Symbol.for("react.memo_cache_sentinel")?(l=e(W,{width:256,children:"This label text is much longer than 256 pixels and must be truncated"}),d[2]=l):l=d[2],d[3]===Symbol.for("react.memo_cache_sentinel")?(c=t(x,{orientation:"horizontal",children:[l,e(P,{children:e(R,{size:"sm",children:"Value"})})]}),d[3]=c):c=d[3],d[4]===Symbol.for("react.memo_cache_sentinel")?(o=e(W,{children:"Users"}),d[4]=o):o=d[4],d[5]===Symbol.for("react.memo_cache_sentinel")?(a=t("div",{className:"w-[500px] flex flex-col gap-8",children:[r,c,t(x,{orientation:"horizontal",children:[o,e(P,{children:e(R,{size:"sm",truncate:!0,children:"artem@acme.com, uxd@acme.com, ops@acme.com, security@acme.com, admin@acme.com"})})]})]}),d[5]=a):a=d[5],a},meta:M},{name:"HorizontalComposition",story:()=>{let n,r,l,c,o,a,m,s,u,f,_,y,p,E,z,I,D=(0,i.c)(16);return D[0]===Symbol.for("react.memo_cache_sentinel")?(n=e(W,{children:"Status"}),D[0]=n):n=D[0],D[1]===Symbol.for("react.memo_cache_sentinel")?(r=t(x,{orientation:"horizontal",children:[n,e(P,{children:e(d,{color:"red",variant:"dotted",children:"Blocked"})})]}),D[1]=r):r=D[1],D[2]===Symbol.for("react.memo_cache_sentinel")?(l=e(W,{children:"First seen"}),D[2]=l):l=D[2],D[3]===Symbol.for("react.memo_cache_sentinel")?(c=t(x,{orientation:"horizontal",children:[l,e(P,{children:e(h,{value:"2026-04-03T10:15:00Z",format:"relative"})})]}),D[3]=c):c=D[3],D[4]===Symbol.for("react.memo_cache_sentinel")?(o=e(W,{children:"Attack type"}),D[4]=o):o=D[4],D[5]===Symbol.for("react.memo_cache_sentinel")?(a=t(x,{orientation:"horizontal",children:[o,e(P,{children:e(N,{className:"gap-4",items:["XSS","BOLA","SQL Injection","Scanner","CSRF","XXE","RCE","LFI","IDOR"],itemRenderer:J})})]}),D[5]=a):a=D[5],D[6]===Symbol.for("react.memo_cache_sentinel")?(m=e(W,{children:"Last seen"}),D[6]=m):m=D[6],D[7]===Symbol.for("react.memo_cache_sentinel")?(s=t(x,{orientation:"horizontal",children:[m,e(P,{children:e(h,{value:"2025-04-02T14:03:00Z",format:"date"})})]}),D[7]=s):s=D[7],D[8]===Symbol.for("react.memo_cache_sentinel")?(u=e(W,{children:"Sessions"}),D[8]=u):u=D[8],D[9]===Symbol.for("react.memo_cache_sentinel")?(f=t(x,{orientation:"horizontal",children:[u,e(P,{children:e(R,{size:"sm",children:"3 sessions"})})]}),D[9]=f):f=D[9],D[10]===Symbol.for("react.memo_cache_sentinel")?(_=e(W,{children:"Users"}),D[10]=_):_=D[10],D[11]===Symbol.for("react.memo_cache_sentinel")?(y=t(x,{orientation:"horizontal",children:[_,e(P,{children:e(N,{className:"gap-4",items:["artem@acme.com","uxd@acme.com","ops@acme.com","security@acme.com","admin@acme.com"],itemRenderer:Y})})]}),D[11]=y):y=D[11],D[12]===Symbol.for("react.memo_cache_sentinel")?(p=e(W,{children:"IPs"}),D[12]=p):p=D[12],D[13]===Symbol.for("react.memo_cache_sentinel")?(E=t(S,{children:[e(w,{code:"US"}),e(b,{children:"142.198.167.52"}),e(v,{children:"Azure"})]}),D[13]=E):E=D[13],D[14]===Symbol.for("react.memo_cache_sentinel")?(z=t(S,{children:[e(w,{code:"US"}),e(b,{children:"34.74.73.20"}),e(v,{children:"AWS"})]}),D[14]=z):z=D[14],D[15]===Symbol.for("react.memo_cache_sentinel")?(I=t("div",{className:"grid grid-cols-2 gap-x-8 gap-y-6 w-[874px]",children:[r,c,a,s,f,y,e("div",{className:"col-span-2",children:t(x,{orientation:"horizontal",children:[p,e(P,{children:t(g,{type:"horizontal",children:[E,z,t(S,{children:[e(w,{code:"DE"}),e(b,{children:"34.74.73.20"}),e(v,{children:"GCP"})]})]})})]})})]}),D[15]=I):I=D[15],I},meta:M},{name:"HorizontalLoading",story:()=>{let n,r,l=(0,i.c)(2);return l[0]===Symbol.for("react.memo_cache_sentinel")?(n=t(x,{orientation:"horizontal",loading:!0,children:[e(W,{children:"Created at"}),e(P,{})]}),l[0]=n):n=l[0],l[1]===Symbol.for("react.memo_cache_sentinel")?(r=t("div",{className:"w-[400px] flex flex-col gap-8",children:[n,t(x,{orientation:"horizontal",loading:!0,children:[e(W,{children:"Status"}),e(P,{})]})]}),l[1]=r):r=l[1],r},meta:M},{name:"HorizontalEmpty",story:()=>{let n,r,l,c,o,a=(0,i.c)(5);return a[0]===Symbol.for("react.memo_cache_sentinel")?(n=t(x,{orientation:"horizontal",children:[t(W,{width:160,children:["Region",e(O,{children:"Manual composition"})]}),e(P,{})]}),a[0]=n):n=a[0],a[1]===Symbol.for("react.memo_cache_sentinel")?(r=e(W,{width:160,children:"Region"}),a[1]=r):r=a[1],a[2]===Symbol.for("react.memo_cache_sentinel")?(l=t(x,{orientation:"horizontal",isEmpty:!0,children:[r,e(P,{children:e(R,{size:"sm",children:"This text is replaced by the em-dash placeholder"})})]}),a[2]=l):l=a[2],a[3]===Symbol.for("react.memo_cache_sentinel")?(c=t(x,{orientation:"horizontal",isEmpty:!0,children:[t(W,{width:160,children:["Owner",e($,{children:"Not yet assigned"})]}),e(P,{})]}),a[3]=c):c=a[3],a[4]===Symbol.for("react.memo_cache_sentinel")?(o=t("div",{className:"w-[400px] flex flex-col gap-8",children:[n,l,c,t(x,{orientation:"horizontal",isEmpty:!0,children:[t(W,{width:160,children:["SSO provider",t($,{children:["Not connected —"," ",e(E,{href:"#",size:"md",children:"set up integration"})]})]}),e(P,{})]})]}),a[4]=o):o=a[4],o},meta:M},{name:"HorizontalWithActions",story:j,meta:M},{name:"HorizontalWithActionsMenuOnly",story:U,meta:M},{name:"WithInlineEdit",story:()=>{let t,n=(0,i.c)(1);return n[0]===Symbol.for("react.memo_cache_sentinel")?(t=e(F,{}),n[0]=t):t=n[0],t},meta:M},{name:"HorizontalWithInlineEdit",story:()=>{let t,n=(0,i.c)(1);return n[0]===Symbol.for("react.memo_cache_sentinel")?(t=e(F,{orientation:"horizontal"}),n[0]=t):t=n[0],t},meta:M},{name:"Mixed",story:V,meta:M},{name:"HorizontalMixed",story:B,meta:M}];function K({entry:e}){let{story:t,meta:n}=e,r={...n.args,...t.args},l="function"==typeof t||t.$$typeof?t:t.render||n.render||n.component,i=()=>c.default.createElement(l,r),o={args:r,globals:{theme:"light"},parameters:{...n.parameters,...t.parameters},viewMode:"story"};for(let e of[...n.decorators||[],...t.decorators||[]].reverse()){let t=i;i=()=>e(t,o)}return c.default.createElement("section",{"data-preview-story":e.name,className:"p-16"},c.default.createElement("h2",{className:"text-sm mb-12"},e.name),c.default.createElement(i))}window.WallarmPreview={mount(e){let t=window.ReactDOM.createRoot(e);return t.render(c.default.createElement(window.WallarmDS.Root,null,Q.map((e,t)=>c.default.createElement(K,{key:t,entry:e})))),t}}})();
|
|
12
|
+
*/var i,c,o=Object.create,a=Object.defineProperty,d=Object.getOwnPropertyDescriptor,m=Object.getOwnPropertyNames,s=Object.getPrototypeOf,h=Object.prototype.hasOwnProperty,f=(e,t,r,n)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let l of m(t))h.call(e,l)||l===r||a(e,l,{get:()=>t[l],enumerable:!(n=d(t,l))||n.enumerable});return e},u={},y={$dispatcherGuard:()=>D,$makeReadOnly:()=>A,$reset:()=>I,$structuralCheck:()=>O,c:()=>z,clearRenderCounterRegistry:()=>W,renderCounterRegistry:()=>C,useRenderCounter:()=>$};for(var _ in y)a(u,_,{get:y[_],enumerable:!0});e.exports=f(a({},"__esModule",{value:!0}),u);var p=(l=null!=(n=r("C"))?o(s(n)):{},f(n&&n.__esModule?l:a(l,"default",{value:n,enumerable:!0}),n)),{useRef:S,useEffect:b,isValidElement:w}=p,g=null!=(i=p.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE)?i:p.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,v=Symbol.for("react.memo_cache_sentinel"),z="function"==typeof(null==(c=p.__COMPILER_RUNTIME)?void 0:c.c)?p.__COMPILER_RUNTIME.c:function(e){return p.useMemo(()=>{let t=Array(e);for(let r=0;r<e;r++)t[r]=v;return t[v]=!0,t},[])},N={};["readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","getCacheSignal","getCacheForType","useCacheRefresh"].forEach(e=>{N[e]=()=>{throw Error(`[React] Unexpected React hook call (${e}) from a React compiled function. Check that all hooks are called directly and named according to convention ('use[A-Z]') `)}});var E=null;function R(e){return g.ReactCurrentDispatcher.current=e,g.ReactCurrentDispatcher.current}N.useMemoCache=e=>{if(null!=E)return E.useMemoCache(e);throw Error("React Compiler internal invariant violation: unexpected null dispatcher")};var x=[];function D(e){let t=g.ReactCurrentDispatcher.current;if(0===e){if(x.push(t),1===x.length&&(E=t),t===N)throw Error("[React] Unexpected call to custom hook or component from a React compiled function. Check that (1) all hooks are called directly and named according to convention ('use[A-Z]') and (2) components are returned as JSX instead of being directly invoked.");R(N)}else if(1===e){let e=x.pop();if(null==e)throw Error("React Compiler internal error: unexpected null in guard stack");0===x.length&&(E=null),R(e)}else if(2===e)x.push(t),R(E);else if(3===e){let e=x.pop();if(null==e)throw Error("React Compiler internal error: unexpected null in guard stack");R(e)}else throw Error("React Compiler internal error: unreachable block"+e)}function I(e){for(let t=0;t<e.length;t++)e[t]=v}function A(){throw Error("TODO: implement $makeReadOnly in react-compiler-runtime")}var C=new Map;function W(){for(let e of C.values())e.forEach(e=>{e.count=0})}function $(e){let t=S(null);null!=t.current&&(t.current.count+=1),b(()=>{if(null==t.current){let r,n={count:0};null==(r=C.get(e))&&(r=new Set,C.set(e,r)),r.add(n),t.current=n}return()=>{var r;let n;null!==t.current&&(r=t.current,null!=(n=C.get(e))&&n.delete(r))}})}var k=new Set;function O(e,t,r,n,l,i){function c(e,t,c,o){let a=`${n}:${i} [${l}] ${r}${c} changed from ${e} to ${t} at depth ${o}`;k.has(a)||(k.add(a),console.error(a))}!function e(t,r,n,l){if(!(l>2)){if(t!==r)if(typeof t!=typeof r)c(`type ${typeof t}`,`type ${typeof r}`,n,l);else if("object"==typeof t){let i=Array.isArray(t),o=Array.isArray(r);if(null===t&&null!==r)c("null",`type ${typeof r}`,n,l);else if(null===r)c(`type ${typeof t}`,"null",n,l);else if(t instanceof Map)if(r instanceof Map)if(t.size!==r.size)c(`Map instance with size ${t.size}`,`Map instance with size ${r.size}`,n,l);else for(let[i,o]of t)r.has(i)?e(o,r.get(i),`${n}.get(${i})`,l+1):c(`Map instance with key ${i}`,`Map instance without key ${i}`,n,l);else c("Map instance","other value",n,l);else if(r instanceof Map)c("other value","Map instance",n,l);else if(t instanceof Set)if(r instanceof Set)if(t.size!==r.size)c(`Set instance with size ${t.size}`,`Set instance with size ${r.size}`,n,l);else for(let e of r)t.has(e)||c(`Set instance without element ${e}`,`Set instance with element ${e}`,n,l);else c("Set instance","other value",n,l);else if(r instanceof Set)c("other value","Set instance",n,l);else if(i||o)if(i!==o)c(`type ${i?"array":"object"}`,`type ${o?"array":"object"}`,n,l);else if(t.length!==r.length)c(`array with length ${t.length}`,`array with length ${r.length}`,n,l);else for(let i=0;i<t.length;i++)e(t[i],r[i],`${n}[${i}]`,l+1);else if(w(t)||w(r))w(t)!==w(r)?c(`type ${w(t)?"React element":"object"}`,`type ${w(r)?"React element":"object"}`,n,l):t.type!==r.type?c(`React element of type ${t.type}`,`React element of type ${r.type}`,n,l):e(t.props,r.props,`[props of ${n}]`,l+1);else{for(let e in r)e in t||c(`object without key ${e}`,`object with key ${e}`,n,l);for(let i in t)i in r?e(t[i],r[i],`${n}.${i}`,l+1):c(`object with key ${i}`,`object without key ${i}`,n,l)}}else{if("function"==typeof t)return;isNaN(t)||isNaN(r)?isNaN(t)!==isNaN(r)&&c(`${isNaN(t)?"NaN":"non-NaN value"}`,`${isNaN(r)?"NaN":"non-NaN value"}`,n,l):t!==r&&c(t,r,n,l)}}}(e,t,"",0)}},p(e,t,r){let n=new WeakMap,l=new WeakMap;function i(e,t,r){let i=t,c=r;if("object"==typeof i&&null!==i&&"$$typeof"in i&&i.$$typeof===Symbol.for("react.context")&&"Provider"in i&&(i=i.Provider),"function"==typeof i&&null!=c.ref&&!i.prototype?.isReactComponent){let t=i,r=n.get(e);r||(r=new WeakMap,n.set(e,r));let l=r.get(t);l||((l=e.forwardRef((e,r)=>t({...e,ref:r}))).displayName=t.displayName??t.name,r.set(t,l)),i=l}if("string"==typeof i&&"boolean"==typeof c.inert&&((c={...c}).inert?c.inert="":delete c.inert),"string"==typeof i)for(let[e,t]of[["fill-rule","fillRule"],["clip-rule","clipRule"]])e in c&&(c={...c,[t]:c[e]},delete c[e]);return"string"==typeof i&&null!=c.ref&&(i=function(e,t){let r=l.get(e);r||(r=new Map,l.set(e,r));let n=r.get(t);if(n)return n;let i=e.forwardRef((r,n)=>{let l=e.useRef(null);if(!l.current||l.current.original!==n){let e;l.current={original:n,callback:t=>{if(null==t&&e){let t=e;e=void 0,t();return}if("function"==typeof n){let r=n(t);e="function"==typeof r?r:void 0}else n&&(n.current=t)}}}return e.createElement(t,{...r,ref:l.current.callback})});return i.displayName=`CanvasHost(${t})`,r.set(t,i),i}(e,i)),{type:i,props:c}}function c(e){let t=(t,r,n)=>{let l=i(e,t,r??{});return e.createElement(l.type,void 0===n?l.props:{...l.props,key:n})};return{jsx:t,jsxs:(t,r,n)=>{let l=i(e,t,r??{}),{children:c,...o}=l.props;return e.createElement(l.type,void 0===n?o:{...o,key:n},...Array.isArray(c)?c:[c])},jsxDEV:t,Fragment:e.Fragment}}function o(e){return{...e,createElement:(t,r,...n)=>{let l=i(e,t,r??{});return e.createElement(l.type,l.props,...n)},cloneElement:(t,r,...n)=>{let l=e.cloneElement(t,r??void 0,...n),c=l.ref,o=i(e,l.type,{...l.props,ref:c});return o.type===l.type&&"string"!=typeof l.type?l:e.createElement(o.type,{...o.props,key:l.key})}}}r.d(t,{MA:()=>c,YJ:()=>o})},C(e,t,r){r.r(t);let n=(0,r("p").YJ)(window.React),{Children:l,Component:i,Fragment:c,Profiler:o,PureComponent:a,StrictMode:d,Suspense:m,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:s,act:h,cloneElement:f,createContext:u,createElement:y,createFactory:_,createRef:p,forwardRef:S,isValidElement:b,lazy:w,memo:g,startTransition:v,unstable_act:z,useCallback:N,useContext:E,useDebugValue:R,useDeferredValue:x,useEffect:D,useId:I,useImperativeHandle:A,useInsertionEffect:C,useLayoutEffect:W,useMemo:$,useReducer:k,useRef:O,useState:P,useSyncExternalStore:M,useTransition:T,version:L,use:j}=n;r.d(t,{},{Children:l,Component:i,Fragment:c,Profiler:o,PureComponent:a,StrictMode:d,Suspense:m,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:s,act:h,cloneElement:f,createContext:u,createElement:y,createFactory:_,createRef:p,default:n,forwardRef:S,isValidElement:b,lazy:w,memo:g,startTransition:v,unstable_act:z,use:j,useCallback:N,useContext:E,useDebugValue:R,useDeferredValue:x,useEffect:D,useId:I,useImperativeHandle:A,useInsertionEffect:C,useLayoutEffect:W,useMemo:$,useReducer:k,useRef:O,useState:P,useSyncExternalStore:M,useTransition:T,version:L})}},t={};function r(n){var l=t[n];if(void 0!==l)return l.exports;var i=t[n]={exports:{}};return e[n](i,i.exports,r),i.exports}r.d=(e,t,n)=>{var l=(t,n)=>{for(var l in t)r.o(t,l)&&!r.o(e,l)&&Object.defineProperty(e,l,{enumerable:!0,[n]:t[l]})};l(t,"get"),l(n,"value")},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{let{jsx:e,jsxs:t,jsxDEV:n,Fragment:l}=(0,r("p").MA)(window.React);var i=r("vD"),c=r("C");let o=window.WallarmDS.Icons.Copy,a=window.WallarmDS.Icons.Filter,d=window.WallarmDS.AgentItem,m=window.WallarmDS.Avatar,s=window.WallarmDS.AvatarContent,h=window.WallarmDS.AvatarFallback,f=window.WallarmDS.AvatarName,u=window.WallarmDS.Badge,y=window.WallarmDS.Code,_=window.WallarmDS.InlineCodeSnippet,p=window.WallarmDS.FormatDateTime,S=window.WallarmDS.InlineEditControl,b=window.WallarmDS.InlineEditError,w=window.WallarmDS.InlineEditInput,g=window.WallarmDS.InlineEditPreview,v=window.WallarmDS.InlineEdit,z=window.WallarmDS.Ip,N=window.WallarmDS.IpAddress,E=window.WallarmDS.IpCountry,R=window.WallarmDS.IpList,x=window.WallarmDS.IpProvider,D=window.WallarmDS.Link,I=window.WallarmDS.OverflowList,A=window.WallarmDS.Tag,C=window.WallarmDS.Text,W=window.WallarmDS.Attribute,$=window.WallarmDS.AttributeActions,k=window.WallarmDS.AttributeActionsContent,O=window.WallarmDS.AttributeActionsItem,P=window.WallarmDS.AttributeActionsTarget,M=window.WallarmDS.AttributeEmptyDescription,T=window.WallarmDS.AttributeLabel,L=window.WallarmDS.AttributeLabelDescription,j=window.WallarmDS.AttributeLabelInfo,U=window.WallarmDS.AttributeValue,F={title:"Data Display/Attribute",component:W,subcomponents:{AttributeLabel:T,AttributeLabelDescription:L,AttributeLabelInfo:j,AttributeValue:U,AttributeEmptyDescription:M,AttributeActions:$,AttributeActionsTarget:P,AttributeActionsContent:k,AttributeActionsItem:O,InlineEditPreview:g,InlineEditControl:S,InlineEditInput:w,InlineEditError:b},parameters:{layout:"centered",docs:{description:{component:"Pairs one field's label with its value on a detail page — reach for `Table` when the same fields repeat across many objects, and `Field` when the value is being collected rather than read. The value slot takes whichever display component fits the data and hosts `InlineEdit` when the field is editable in place, while `AttributeActions` hangs a per-value menu off it."}}}},H=()=>t(k,{children:[t(O,{onSelect:()=>{},children:[e(a,{}),"Investigate by this value"]}),t(O,{onSelect:()=>{},children:[e(o,{}),"Copy value"]})]}),V=r=>t(l,{children:[t(W,{orientation:"horizontal",children:[e(T,{children:"Source IP"}),e(U,{children:t($,{"data-testid":"attr-source-ip",children:[e(P,{disableNestedInteractive:r,children:e(C,{size:"sm",children:"142.198.167.52"})}),H()]})})]}),t(W,{orientation:"horizontal",children:[e(T,{children:"Status"}),e(U,{children:t($,{"data-testid":"attr-badge",children:[e(P,{disableNestedInteractive:r,children:e(u,{"data-testid":"attr-badge-value",color:"red",variant:"dotted",children:"Blocked"})}),H()]})})]}),t(W,{orientation:"horizontal",children:[e(T,{children:"IPs"}),e(U,{children:t($,{"data-testid":"attr-ip-overflow",children:[e(P,{disableNestedInteractive:r,children:t(R,{type:"horizontal",children:[t(z,{children:[e(E,{code:"US"}),e(N,{children:"142.198.167.52"}),e(x,{children:"Azure"})]}),t(z,{children:[e(E,{code:"US"}),e(N,{children:"34.74.73.20"}),e(x,{children:"AWS"})]}),t(z,{children:[e(E,{code:"DE"}),e(N,{children:"34.74.73.20"}),e(x,{children:"GCP"})]}),t(z,{children:[e(E,{code:"NL"}),e(N,{children:"10.0.0.1"})]}),t(z,{children:[e(E,{code:"JP"}),e(N,{children:"192.168.1.1"})]})]})}),H()]})})]}),t(W,{orientation:"horizontal",children:[e(T,{children:"Payload"}),e(U,{children:t($,{"data-testid":"attr-code-snippet",children:[e(P,{disableNestedInteractive:r,children:e(_,{code:'{ "action": "login", "user_id": 42 }',size:"sm"})}),H()]})})]}),t(W,{orientation:"horizontal",children:[e(T,{children:"Documentation"}),e(U,{children:t($,{"data-testid":"attr-link",children:[e(P,{disableNestedInteractive:r,children:e(D,{href:"#",size:"md",children:"View full report"})}),H()]})})]}),t(W,{orientation:"horizontal",children:[e(T,{children:"Tags"}),e(U,{children:t($,{"data-testid":"attr-tags",children:[e(P,{disableNestedInteractive:r,children:e(I,{className:"gap-4",items:["production","us-east-1","critical","tier-1","public","monitored"],itemRenderer:t=>e(A,{"data-testid":"attr-tag",children:t},t)})}),H()]})})]})]}),q=()=>{let t,r=(0,i.c)(1);return r[0]===Symbol.for("react.memo_cache_sentinel")?(t=e("div",{className:"w-[400px] flex flex-col gap-8",children:V(!1)}),r[0]=t):t=r[0],t};q.storyName="Horizontal With Actions (default — copy on text, menu outside)";let B=()=>{let t,r=(0,i.c)(1);return r[0]===Symbol.for("react.memo_cache_sentinel")?(t=e("div",{className:"w-[400px] flex flex-col gap-8",children:V(!0)}),r[0]=t):t=r[0],t};function X(r){let n,l,o,a,d,m,s,h=(0,i.c)(12),{orientation:f}=r,[u,y]=(0,c.useState)("Checkout API");return h[0]===Symbol.for("react.memo_cache_sentinel")?(n=e(T,{children:"Name"}),h[0]=n):n=h[0],h[1]===Symbol.for("react.memo_cache_sentinel")?(l=e=>y(e),h[1]=l):l=h[1],h[2]!==u?(o=e(g,{children:u}),h[2]=u,h[3]=o):o=h[3],h[4]===Symbol.for("react.memo_cache_sentinel")?(a=e(S,{children:e(w,{})}),d=e(b,{}),h[4]=a,h[5]=d):(a=h[4],d=h[5]),h[6]!==u||h[7]!==o?(m=e(U,{children:t(v,{value:u,onValueCommit:l,children:[o,a,d]})}),h[6]=u,h[7]=o,h[8]=m):m=h[8],h[9]!==f||h[10]!==m?(s=e("div",{className:"w-[420px]",children:t(W,{orientation:f,"data-testid":"attr",children:[n,m]})}),h[9]=f,h[10]=m,h[11]=s):s=h[11],s}function Z(r){let n,l,o,a,d,m,s,h,f,u,y,_,p,z,N=(0,i.c)(25),{orientation:E}=r,[R,x]=(0,c.useState)("Checkout API"),D="horizontal"===E?"w-[420px] flex flex-col gap-8":"w-[420px] flex flex-col gap-16";return N[0]===Symbol.for("react.memo_cache_sentinel")?(n=e(T,{children:"Request ID"}),N[0]=n):n=N[0],N[1]===Symbol.for("react.memo_cache_sentinel")?(l=e(U,{children:e(C,{size:"sm",children:"abc-123-def-456"})}),N[1]=l):l=N[1],N[2]!==E?(o=t(W,{orientation:E,"data-testid":"attr-plain",children:[n,l]}),N[2]=E,N[3]=o):o=N[3],N[4]===Symbol.for("react.memo_cache_sentinel")?(a=e(T,{children:"Source IP"}),N[4]=a):a=N[4],N[5]===Symbol.for("react.memo_cache_sentinel")?(d=e(U,{children:t($,{children:[e(P,{children:e(C,{size:"sm",children:"142.198.167.52"})}),H()]})}),N[5]=d):d=N[5],N[6]!==E?(m=t(W,{orientation:E,"data-testid":"attr-actions",children:[a,d]}),N[6]=E,N[7]=m):m=N[7],N[8]===Symbol.for("react.memo_cache_sentinel")?(s=e(T,{children:"Name"}),N[8]=s):s=N[8],N[9]===Symbol.for("react.memo_cache_sentinel")?(h=e=>x(e),N[9]=h):h=N[9],N[10]!==R?(f=e(g,{children:R}),N[10]=R,N[11]=f):f=N[11],N[12]===Symbol.for("react.memo_cache_sentinel")?(u=e(S,{children:e(w,{})}),y=e(b,{}),N[12]=u,N[13]=y):(u=N[12],y=N[13]),N[14]!==R||N[15]!==f?(_=e(U,{children:t(v,{value:R,onValueCommit:h,children:[f,u,y]})}),N[14]=R,N[15]=f,N[16]=_):_=N[16],N[17]!==E||N[18]!==_?(p=t(W,{orientation:E,"data-testid":"attr-inline-edit",children:[s,_]}),N[17]=E,N[18]=_,N[19]=p):p=N[19],N[20]!==D||N[21]!==p||N[22]!==o||N[23]!==m?(z=t("div",{className:D,children:[o,m,p]}),N[20]=D,N[21]=p,N[22]=o,N[23]=m,N[24]=z):z=N[24],z}B.storyName="Horizontal With Actions (disableNestedInteractive — menu only)";let G=()=>{let t,r=(0,i.c)(1);return r[0]===Symbol.for("react.memo_cache_sentinel")?(t=e(Z,{}),r[0]=t):t=r[0],t};G.storyName="Mixed (plain + Actions + InlineEdit)";let J=()=>{let t,r=(0,i.c)(1);return r[0]===Symbol.for("react.memo_cache_sentinel")?(t=e(Z,{orientation:"horizontal"}),r[0]=t):t=r[0],t};function Y(t){return e(A,{children:t},t)}function Q(t){return e(A,{children:t},t)}function K(t){return e(A,{children:t},t)}function ee(t){return e(A,{children:t},t)}function et(t){return e(A,{children:t},t)}function er(t){return e(A,{children:t},t)}J.storyName="Horizontal Mixed (plain + Actions + InlineEdit)";let en=[{name:"Default",story:()=>{let r,n,l=(0,i.c)(2);return l[0]===Symbol.for("react.memo_cache_sentinel")?(r=e(T,{children:"Request ID"}),l[0]=r):r=l[0],l[1]===Symbol.for("react.memo_cache_sentinel")?(n=e("div",{className:"w-[400px]",children:t(W,{children:[r,e(U,{children:e(C,{size:"sm",children:"abc-123-def-456"})})]})}),l[1]=n):n=l[1],n},meta:F},{name:"WithDescription",story:()=>{let r,n,l=(0,i.c)(2);return l[0]===Symbol.for("react.memo_cache_sentinel")?(r=t(T,{children:["Created at",e(L,{children:"The time when the request was first received"})]}),l[0]=r):r=l[0],l[1]===Symbol.for("react.memo_cache_sentinel")?(n=e("div",{className:"w-[400px]",children:t(W,{children:[r,e(U,{children:e(C,{size:"sm",children:"April 9, 2026, 14:32"})})]})}),l[1]=n):n=l[1],n},meta:F},{name:"WithInfo",story:()=>{let r,n,l,c,o=(0,i.c)(4);return o[0]===Symbol.for("react.memo_cache_sentinel")?(r=t(T,{children:["Request ID",e(j,{children:"Unique identifier assigned to each incoming request"})]}),o[0]=r):r=o[0],o[1]===Symbol.for("react.memo_cache_sentinel")?(n=t(W,{children:[r,e(U,{children:e(C,{size:"sm",children:"abc-123-def-456"})})]}),o[1]=n):n=o[1],o[2]===Symbol.for("react.memo_cache_sentinel")?(l=t(T,{children:[e(j,{children:"Unique identifier assigned to each incoming request"}),"Request ID"]}),o[2]=l):l=o[2],o[3]===Symbol.for("react.memo_cache_sentinel")?(c=t("div",{className:"w-[400px] flex flex-col gap-16",children:[n,t(W,{children:[l,e(U,{children:e(C,{size:"sm",children:"abc-123-def-456"})})]})]}),o[3]=c):c=o[3],c},meta:F},{name:"WithLink",story:()=>{let r,n,l=(0,i.c)(2);return l[0]===Symbol.for("react.memo_cache_sentinel")?(r=t(T,{children:["Source",e(D,{href:"#",size:"md",children:"View docs"})]}),l[0]=r):r=l[0],l[1]===Symbol.for("react.memo_cache_sentinel")?(n=e("div",{className:"w-[400px]",children:t(W,{children:[r,e(U,{children:e(C,{size:"sm",children:"API Gateway"})})]})}),l[1]=n):n=l[1],n},meta:F},{name:"Empty",story:()=>{let r,n,l,c,o,a=(0,i.c)(5);return a[0]===Symbol.for("react.memo_cache_sentinel")?(r=t(W,{children:[t(T,{children:["Region",e(L,{children:"Manual composition"})]}),e(U,{})]}),a[0]=r):r=a[0],a[1]===Symbol.for("react.memo_cache_sentinel")?(n=e(T,{children:"Region"}),a[1]=n):n=a[1],a[2]===Symbol.for("react.memo_cache_sentinel")?(l=t(W,{isEmpty:!0,children:[n,e(U,{children:e(C,{size:"sm",children:"This text is replaced by the em-dash placeholder"})})]}),a[2]=l):l=a[2],a[3]===Symbol.for("react.memo_cache_sentinel")?(c=t(W,{isEmpty:!0,children:[t(T,{children:["Owner",e(M,{children:"Not yet assigned"})]}),e(U,{})]}),a[3]=c):c=a[3],a[4]===Symbol.for("react.memo_cache_sentinel")?(o=t("div",{className:"w-[400px] flex flex-col gap-16",children:[r,l,c,t(W,{isEmpty:!0,children:[t(T,{children:["SSO provider",t(M,{children:["Not connected —"," ",e(D,{href:"#",size:"md",children:"set up integration"})]})]}),e(U,{})]})]}),a[4]=o):o=a[4],o},meta:F},{name:"Loading",story:()=>{let r,n,l=(0,i.c)(2);return l[0]===Symbol.for("react.memo_cache_sentinel")?(r=t(W,{loading:!0,children:[e(T,{children:"Created at"}),e(U,{})]}),l[0]=r):r=l[0],l[1]===Symbol.for("react.memo_cache_sentinel")?(n=t("div",{className:"w-[400px] flex flex-col gap-16",children:[r,t(W,{loading:!0,children:[e(T,{children:"Status"}),e(U,{})]})]}),l[1]=n):n=l[1],n},meta:F},{name:"Composition",story:()=>{let r,n,l,c,o,a,d,m,s,h,f,S,b,w,g,v,A,$,k,O,P,M,L,j,F,H,V=(0,i.c)(26);return V[0]===Symbol.for("react.memo_cache_sentinel")?(r=e(T,{children:"Status"}),V[0]=r):r=V[0],V[1]===Symbol.for("react.memo_cache_sentinel")?(n=t(W,{children:[r,e(U,{children:e(u,{color:"red",variant:"dotted",children:"Blocked"})})]}),V[1]=n):n=V[1],V[2]===Symbol.for("react.memo_cache_sentinel")?(l=e(T,{children:"First seen"}),V[2]=l):l=V[2],V[3]===Symbol.for("react.memo_cache_sentinel")?(c=t(W,{children:[l,e(U,{children:e(p,{value:"2026-04-03T10:15:00Z",format:"relative"})})]}),V[3]=c):c=V[3],V[4]===Symbol.for("react.memo_cache_sentinel")?(o=e(T,{children:"Attack type"}),V[4]=o):o=V[4],V[5]===Symbol.for("react.memo_cache_sentinel")?(a=t(W,{children:[o,e(U,{children:e(I,{className:"gap-4",items:["XSS","BOLA","SQL Injection","Scanner","CSRF","XXE","RCE","LFI","IDOR"],itemRenderer:Y})})]}),V[5]=a):a=V[5],V[6]===Symbol.for("react.memo_cache_sentinel")?(d=e(T,{children:"Sessions"}),V[6]=d):d=V[6],V[7]===Symbol.for("react.memo_cache_sentinel")?(m=t(W,{children:[d,e(U,{children:e(C,{size:"sm",children:"3 sessions"})})]}),V[7]=m):m=V[7],V[8]===Symbol.for("react.memo_cache_sentinel")?(s=e(T,{children:"Users"}),V[8]=s):s=V[8],V[9]===Symbol.for("react.memo_cache_sentinel")?(h=t(W,{children:[s,e(U,{children:e(I,{className:"gap-4",items:["artem@acme.com","uxd@acme.com","ops@acme.com","security@acme.com","admin@acme.com"],itemRenderer:Q})})]}),V[9]=h):h=V[9],V[10]===Symbol.for("react.memo_cache_sentinel")?(f=e(T,{children:"IPs"}),V[10]=f):f=V[10],V[11]===Symbol.for("react.memo_cache_sentinel")?(S=t(z,{children:[e(E,{code:"US"}),e(N,{children:"142.198.167.52"}),e(x,{children:"Azure"})]}),V[11]=S):S=V[11],V[12]===Symbol.for("react.memo_cache_sentinel")?(b=t(z,{children:[e(E,{code:"US"}),e(N,{children:"34.74.73.20"}),e(x,{children:"AWS"})]}),V[12]=b):b=V[12],V[13]===Symbol.for("react.memo_cache_sentinel")?(w=t(z,{children:[e(E,{code:"DE"}),e(N,{children:"34.74.73.20"}),e(x,{children:"GCP"})]}),V[13]=w):w=V[13],V[14]===Symbol.for("react.memo_cache_sentinel")?(g=t(z,{children:[e(E,{code:"NL"}),e(N,{children:"10.0.0.1"})]}),V[14]=g):g=V[14],V[15]===Symbol.for("react.memo_cache_sentinel")?(v=t(W,{children:[f,e(U,{children:t(R,{children:[S,b,w,g,t(z,{children:[e(E,{code:"JP"}),e(N,{children:"192.168.1.1"})]})]})})]}),V[15]=v):v=V[15],V[16]===Symbol.for("react.memo_cache_sentinel")?(A=e(T,{children:"Source IP"}),V[16]=A):A=V[16],V[17]===Symbol.for("react.memo_cache_sentinel")?($=t(W,{children:[A,e(U,{children:t(z,{children:[e(E,{code:"US"}),e(N,{children:"142.198.167.52"}),e(x,{children:"Azure"})]})})]}),V[17]=$):$=V[17],V[18]===Symbol.for("react.memo_cache_sentinel")?(k=e(T,{children:"Created at"}),V[18]=k):k=V[18],V[19]===Symbol.for("react.memo_cache_sentinel")?(O=t(W,{children:[k,e(U,{children:e(p,{value:"2026-04-02T14:03:00Z",format:"datetime"})})]}),V[19]=O):O=V[19],V[20]===Symbol.for("react.memo_cache_sentinel")?(P=e(T,{children:"Documentation"}),V[20]=P):P=V[20],V[21]===Symbol.for("react.memo_cache_sentinel")?(M=t(W,{children:[P,e(U,{children:e(D,{href:"#",size:"md",children:"View full report"})})]}),V[21]=M):M=V[21],V[22]===Symbol.for("react.memo_cache_sentinel")?(L=e(T,{children:"Payload (inline)"}),V[22]=L):L=V[22],V[23]===Symbol.for("react.memo_cache_sentinel")?(j=t(W,{children:[L,e(U,{children:e(_,{code:'{ "action": "login", "user_id": 42 }',size:"sm"})})]}),V[23]=j):j=V[23],V[24]===Symbol.for("react.memo_cache_sentinel")?(F=e(T,{children:"Payload (code)"}),V[24]=F):F=V[24],V[25]===Symbol.for("react.memo_cache_sentinel")?(H=t("div",{className:"grid grid-cols-2 gap-x-8 gap-y-16 w-[874px]",children:[n,c,a,m,h,v,$,O,M,j,t(W,{children:[F,e(U,{children:e(y,{size:"s",children:'{ "action": "login", "user_id": 42 }'})})]})]}),V[25]=H):H=V[25],H},meta:F},{name:"WithActions",story:()=>{let r,n,l,c,o,a,d,m,s,h,f,S,b,w,g,v,A,k,O,M,L,j,F,V,q,B,X=(0,i.c)(26);return X[0]===Symbol.for("react.memo_cache_sentinel")?(r=e(T,{children:"Status"}),X[0]=r):r=X[0],X[1]===Symbol.for("react.memo_cache_sentinel")?(n=t(W,{children:[r,e(U,{children:t($,{"data-testid":"attribute-with-actions",children:[e(P,{children:e(u,{color:"red",variant:"dotted",children:"Blocked"})}),H()]})})]}),X[1]=n):n=X[1],X[2]===Symbol.for("react.memo_cache_sentinel")?(l=e(T,{children:"First seen"}),X[2]=l):l=X[2],X[3]===Symbol.for("react.memo_cache_sentinel")?(c=t(W,{children:[l,e(U,{children:t($,{children:[e(P,{children:e(p,{value:"2026-04-03T10:15:00Z",format:"relative"})}),H()]})})]}),X[3]=c):c=X[3],X[4]===Symbol.for("react.memo_cache_sentinel")?(o=e(T,{children:"Attack type"}),X[4]=o):o=X[4],X[5]===Symbol.for("react.memo_cache_sentinel")?(a=t(W,{children:[o,e(U,{children:t($,{children:[e(P,{children:e(I,{className:"gap-4",items:["XSS","BOLA","SQL Injection","Scanner","CSRF","XXE","RCE","LFI","IDOR"],itemRenderer:K})}),H()]})})]}),X[5]=a):a=X[5],X[6]===Symbol.for("react.memo_cache_sentinel")?(d=e(T,{children:"Sessions"}),X[6]=d):d=X[6],X[7]===Symbol.for("react.memo_cache_sentinel")?(m=t(W,{children:[d,e(U,{children:t($,{children:[e(P,{children:e(C,{size:"sm",children:"3 sessions"})}),H()]})})]}),X[7]=m):m=X[7],X[8]===Symbol.for("react.memo_cache_sentinel")?(s=e(T,{children:"Users"}),X[8]=s):s=X[8],X[9]===Symbol.for("react.memo_cache_sentinel")?(h=t(W,{children:[s,e(U,{children:t($,{children:[e(P,{children:e(I,{className:"gap-4",items:["artem@acme.com","uxd@acme.com","ops@acme.com","security@acme.com","admin@acme.com"],itemRenderer:ee})}),H()]})})]}),X[9]=h):h=X[9],X[10]===Symbol.for("react.memo_cache_sentinel")?(f=e(T,{children:"IPs"}),X[10]=f):f=X[10],X[11]===Symbol.for("react.memo_cache_sentinel")?(S=t(z,{children:[e(E,{code:"US"}),e(N,{children:"142.198.167.52"}),e(x,{children:"Azure"})]}),X[11]=S):S=X[11],X[12]===Symbol.for("react.memo_cache_sentinel")?(b=t(z,{children:[e(E,{code:"US"}),e(N,{children:"34.74.73.20"}),e(x,{children:"AWS"})]}),X[12]=b):b=X[12],X[13]===Symbol.for("react.memo_cache_sentinel")?(w=t(z,{children:[e(E,{code:"DE"}),e(N,{children:"34.74.73.20"}),e(x,{children:"GCP"})]}),X[13]=w):w=X[13],X[14]===Symbol.for("react.memo_cache_sentinel")?(g=t(z,{children:[e(E,{code:"NL"}),e(N,{children:"10.0.0.1"})]}),X[14]=g):g=X[14],X[15]===Symbol.for("react.memo_cache_sentinel")?(v=t(W,{children:[f,e(U,{children:t($,{children:[e(P,{children:t(R,{children:[S,b,w,g,t(z,{children:[e(E,{code:"JP"}),e(N,{children:"192.168.1.1"})]})]})}),H()]})})]}),X[15]=v):v=X[15],X[16]===Symbol.for("react.memo_cache_sentinel")?(A=e(T,{children:"Source IP"}),X[16]=A):A=X[16],X[17]===Symbol.for("react.memo_cache_sentinel")?(k=t(W,{children:[A,e(U,{children:t($,{children:[e(P,{children:t(z,{children:[e(E,{code:"US"}),e(N,{children:"142.198.167.52"}),e(x,{children:"Azure"})]})}),H()]})})]}),X[17]=k):k=X[17],X[18]===Symbol.for("react.memo_cache_sentinel")?(O=e(T,{children:"Created at"}),X[18]=O):O=X[18],X[19]===Symbol.for("react.memo_cache_sentinel")?(M=t(W,{children:[O,e(U,{children:t($,{children:[e(P,{children:e(p,{value:"2026-04-02T14:03:00Z",format:"datetime"})}),H()]})})]}),X[19]=M):M=X[19],X[20]===Symbol.for("react.memo_cache_sentinel")?(L=e(T,{children:"Documentation"}),X[20]=L):L=X[20],X[21]===Symbol.for("react.memo_cache_sentinel")?(j=t(W,{children:[L,e(U,{children:t($,{children:[e(P,{children:e(D,{href:"#",size:"md",children:"View full report"})}),H()]})})]}),X[21]=j):j=X[21],X[22]===Symbol.for("react.memo_cache_sentinel")?(F=e(T,{children:"Payload (inline)"}),X[22]=F):F=X[22],X[23]===Symbol.for("react.memo_cache_sentinel")?(V=t(W,{children:[F,e(U,{children:t($,{children:[e(P,{children:e(_,{code:'{ "action": "login", "user_id": 42 }',size:"sm"})}),H()]})})]}),X[23]=V):V=X[23],X[24]===Symbol.for("react.memo_cache_sentinel")?(q=e(T,{children:"Payload (code)"}),X[24]=q):q=X[24],X[25]===Symbol.for("react.memo_cache_sentinel")?(B=t("div",{className:"grid grid-cols-2 gap-x-8 gap-y-16 w-[874px]",children:[n,c,a,m,h,v,k,M,j,V,t(W,{children:[q,e(U,{children:t($,{children:[e(P,{children:e(y,{size:"s",children:'{ "action": "login", "user_id": 42 }'})}),H()]})})]})]}),X[25]=B):B=X[25],B},meta:F},{name:"Horizontal",story:()=>{let r,n,l=(0,i.c)(2);return l[0]===Symbol.for("react.memo_cache_sentinel")?(r=e(T,{children:"Status"}),l[0]=r):r=l[0],l[1]===Symbol.for("react.memo_cache_sentinel")?(n=e("div",{className:"w-[400px]",children:t(W,{orientation:"horizontal",children:[r,e(U,{children:e(u,{color:"red",variant:"dotted",children:"Blocked"})})]})}),l[1]=n):n=l[1],n},meta:F},{name:"HorizontalTruncation",story:()=>{let r,n,l,c,o,a,d=(0,i.c)(6);return d[0]===Symbol.for("react.memo_cache_sentinel")?(r=e(T,{width:256,children:"Short"}),d[0]=r):r=d[0],d[1]===Symbol.for("react.memo_cache_sentinel")?(n=t(W,{orientation:"horizontal",children:[r,e(U,{children:e(C,{size:"sm",children:"Fits in 256px label cell"})})]}),d[1]=n):n=d[1],d[2]===Symbol.for("react.memo_cache_sentinel")?(l=e(T,{width:256,children:"This label text is much longer than 256 pixels and must be truncated"}),d[2]=l):l=d[2],d[3]===Symbol.for("react.memo_cache_sentinel")?(c=t(W,{orientation:"horizontal",children:[l,e(U,{children:e(C,{size:"sm",children:"Value"})})]}),d[3]=c):c=d[3],d[4]===Symbol.for("react.memo_cache_sentinel")?(o=e(T,{children:"Users"}),d[4]=o):o=d[4],d[5]===Symbol.for("react.memo_cache_sentinel")?(a=t("div",{className:"w-[500px] flex flex-col gap-8",children:[n,c,t(W,{orientation:"horizontal",children:[o,e(U,{children:e(C,{size:"sm",truncate:!0,children:"artem@acme.com, uxd@acme.com, ops@acme.com, security@acme.com, admin@acme.com"})})]})]}),d[5]=a):a=d[5],a},meta:F},{name:"HorizontalComposition",story:()=>{let r,n,l,c,o,a,d,m,s,h,f,y,_,S,b,w,g=(0,i.c)(16);return g[0]===Symbol.for("react.memo_cache_sentinel")?(r=e(T,{children:"Status"}),g[0]=r):r=g[0],g[1]===Symbol.for("react.memo_cache_sentinel")?(n=t(W,{orientation:"horizontal",children:[r,e(U,{children:e(u,{color:"red",variant:"dotted",children:"Blocked"})})]}),g[1]=n):n=g[1],g[2]===Symbol.for("react.memo_cache_sentinel")?(l=e(T,{children:"First seen"}),g[2]=l):l=g[2],g[3]===Symbol.for("react.memo_cache_sentinel")?(c=t(W,{orientation:"horizontal",children:[l,e(U,{children:e(p,{value:"2026-04-03T10:15:00Z",format:"relative"})})]}),g[3]=c):c=g[3],g[4]===Symbol.for("react.memo_cache_sentinel")?(o=e(T,{children:"Attack type"}),g[4]=o):o=g[4],g[5]===Symbol.for("react.memo_cache_sentinel")?(a=t(W,{orientation:"horizontal",children:[o,e(U,{children:e(I,{className:"gap-4",items:["XSS","BOLA","SQL Injection","Scanner","CSRF","XXE","RCE","LFI","IDOR"],itemRenderer:et})})]}),g[5]=a):a=g[5],g[6]===Symbol.for("react.memo_cache_sentinel")?(d=e(T,{children:"Last seen"}),g[6]=d):d=g[6],g[7]===Symbol.for("react.memo_cache_sentinel")?(m=t(W,{orientation:"horizontal",children:[d,e(U,{children:e(p,{value:"2025-04-02T14:03:00Z",format:"date"})})]}),g[7]=m):m=g[7],g[8]===Symbol.for("react.memo_cache_sentinel")?(s=e(T,{children:"Sessions"}),g[8]=s):s=g[8],g[9]===Symbol.for("react.memo_cache_sentinel")?(h=t(W,{orientation:"horizontal",children:[s,e(U,{children:e(C,{size:"sm",children:"3 sessions"})})]}),g[9]=h):h=g[9],g[10]===Symbol.for("react.memo_cache_sentinel")?(f=e(T,{children:"Users"}),g[10]=f):f=g[10],g[11]===Symbol.for("react.memo_cache_sentinel")?(y=t(W,{orientation:"horizontal",children:[f,e(U,{children:e(I,{className:"gap-4",items:["artem@acme.com","uxd@acme.com","ops@acme.com","security@acme.com","admin@acme.com"],itemRenderer:er})})]}),g[11]=y):y=g[11],g[12]===Symbol.for("react.memo_cache_sentinel")?(_=e(T,{children:"IPs"}),g[12]=_):_=g[12],g[13]===Symbol.for("react.memo_cache_sentinel")?(S=t(z,{children:[e(E,{code:"US"}),e(N,{children:"142.198.167.52"}),e(x,{children:"Azure"})]}),g[13]=S):S=g[13],g[14]===Symbol.for("react.memo_cache_sentinel")?(b=t(z,{children:[e(E,{code:"US"}),e(N,{children:"34.74.73.20"}),e(x,{children:"AWS"})]}),g[14]=b):b=g[14],g[15]===Symbol.for("react.memo_cache_sentinel")?(w=t("div",{className:"grid grid-cols-2 gap-x-8 gap-y-6 w-[874px]",children:[n,c,a,m,h,y,e("div",{className:"col-span-2",children:t(W,{orientation:"horizontal",children:[_,e(U,{children:t(R,{type:"horizontal",children:[S,b,t(z,{children:[e(E,{code:"DE"}),e(N,{children:"34.74.73.20"}),e(x,{children:"GCP"})]})]})})]})})]}),g[15]=w):w=g[15],w},meta:F},{name:"AgentValue",story:()=>{let r,n,l,c,o,a,u,y=(0,i.c)(7);return y[0]===Symbol.for("react.memo_cache_sentinel")?(r=e(T,{children:"Run by"}),y[0]=r):r=y[0],y[1]===Symbol.for("react.memo_cache_sentinel")?(n=t(W,{"data-testid":"attr-run-by",children:[r,e(U,{children:e(d,{agent:"radar","data-testid":"attr-run-by-agent",children:e(s,{children:e(f,{children:"Radar"})})})})]}),y[1]=n):n=y[1],y[2]===Symbol.for("react.memo_cache_sentinel")?(l=e(T,{children:"Proposed by"}),y[2]=l):l=y[2],y[3]===Symbol.for("react.memo_cache_sentinel")?(c=t(W,{orientation:"horizontal","data-testid":"attr-proposed-by",children:[l,e(U,{children:e(d,{agent:"acquit","data-testid":"attr-proposed-by-agent",children:e(s,{children:e(f,{children:"Acquit"})})})})]}),y[3]=c):c=y[3],y[4]===Symbol.for("react.memo_cache_sentinel")?(o=e(T,{children:"Approved by"}),y[4]=o):o=y[4],y[5]===Symbol.for("react.memo_cache_sentinel")?(a=e(h,{name:"Artem Miskevich"}),y[5]=a):a=y[5],y[6]===Symbol.for("react.memo_cache_sentinel")?(u=t("div",{className:"w-[400px] flex flex-col gap-16",children:[n,c,t(W,{orientation:"horizontal","data-testid":"attr-approved-by",children:[o,e(U,{children:t(m,{size:"sm","data-testid":"attr-approved-by-person",children:[a,e(s,{children:e(f,{children:"Artem Miskevich"})})]})})]})]}),y[6]=u):u=y[6],u},meta:F},{name:"HorizontalLoading",story:()=>{let r,n,l=(0,i.c)(2);return l[0]===Symbol.for("react.memo_cache_sentinel")?(r=t(W,{orientation:"horizontal",loading:!0,children:[e(T,{children:"Created at"}),e(U,{})]}),l[0]=r):r=l[0],l[1]===Symbol.for("react.memo_cache_sentinel")?(n=t("div",{className:"w-[400px] flex flex-col gap-8",children:[r,t(W,{orientation:"horizontal",loading:!0,children:[e(T,{children:"Status"}),e(U,{})]})]}),l[1]=n):n=l[1],n},meta:F},{name:"HorizontalEmpty",story:()=>{let r,n,l,c,o,a=(0,i.c)(5);return a[0]===Symbol.for("react.memo_cache_sentinel")?(r=t(W,{orientation:"horizontal",children:[t(T,{width:160,children:["Region",e(L,{children:"Manual composition"})]}),e(U,{})]}),a[0]=r):r=a[0],a[1]===Symbol.for("react.memo_cache_sentinel")?(n=e(T,{width:160,children:"Region"}),a[1]=n):n=a[1],a[2]===Symbol.for("react.memo_cache_sentinel")?(l=t(W,{orientation:"horizontal",isEmpty:!0,children:[n,e(U,{children:e(C,{size:"sm",children:"This text is replaced by the em-dash placeholder"})})]}),a[2]=l):l=a[2],a[3]===Symbol.for("react.memo_cache_sentinel")?(c=t(W,{orientation:"horizontal",isEmpty:!0,children:[t(T,{width:160,children:["Owner",e(M,{children:"Not yet assigned"})]}),e(U,{})]}),a[3]=c):c=a[3],a[4]===Symbol.for("react.memo_cache_sentinel")?(o=t("div",{className:"w-[400px] flex flex-col gap-8",children:[r,l,c,t(W,{orientation:"horizontal",isEmpty:!0,children:[t(T,{width:160,children:["SSO provider",t(M,{children:["Not connected —"," ",e(D,{href:"#",size:"md",children:"set up integration"})]})]}),e(U,{})]})]}),a[4]=o):o=a[4],o},meta:F},{name:"HorizontalWithActions",story:q,meta:F},{name:"HorizontalWithActionsMenuOnly",story:B,meta:F},{name:"WithInlineEdit",story:()=>{let t,r=(0,i.c)(1);return r[0]===Symbol.for("react.memo_cache_sentinel")?(t=e(X,{}),r[0]=t):t=r[0],t},meta:F},{name:"HorizontalWithInlineEdit",story:()=>{let t,r=(0,i.c)(1);return r[0]===Symbol.for("react.memo_cache_sentinel")?(t=e(X,{orientation:"horizontal"}),r[0]=t):t=r[0],t},meta:F},{name:"Mixed",story:G,meta:F},{name:"HorizontalMixed",story:J,meta:F}];function el({entry:e}){let{story:t,meta:r}=e,n={...r.args,...t.args},l="function"==typeof t||t.$$typeof?t:t.render||r.render||r.component,i=()=>c.default.createElement(l,n),o={args:n,globals:{theme:"light"},parameters:{...r.parameters,...t.parameters},viewMode:"story"};for(let e of[...r.decorators||[],...t.decorators||[]].reverse()){let t=i;i=()=>e(t,o)}return c.default.createElement("section",{"data-preview-story":e.name,className:"p-16"},c.default.createElement("h2",{className:"text-sm mb-12"},e.name),c.default.createElement(i))}window.WallarmPreview={mount(e){let t=window.ReactDOM.createRoot(e);return t.render(c.default.createElement(window.WallarmDS.Root,null,en.map((e,t)=>c.default.createElement(el,{key:t,entry:e})))),t}}})();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
A person's photo on a rounded plate, falling back to initials or an icon while it loads, when it fails, or when there is none. It is decorative beside a visible name; standing alone, give it `aria-label` so it reads as an image. Add `AvatarContent` with `AvatarName` (and an optional `AvatarDescription`) for the user item: plate and name in one row. To let people change it, make the avatar the `FileUploadTrigger` (`asChild`) and give it `as='button'` — picking only previews, and your form uploads.
|
|
1
|
+
A person's photo on a rounded plate, falling back to initials or an icon while it loads, when it fails, or when there is none. It is decorative beside a visible name; standing alone, give it `aria-label` so it reads as an image. Add `AvatarContent` with `AvatarName` (and an optional `AvatarDescription`) for the user item: plate and name in one row. An AI agent takes `AgentItem` instead of `Avatar`: its character, with no plate, before the same `AvatarContent`. To let people change it, make the avatar the `FileUploadTrigger` (`asChild`) and give it `as='button'` — picking only previews, and your form uploads.
|
|
2
2
|
|
|
3
3
|
## Props as canvas attributes
|
|
4
4
|
|
|
@@ -26,6 +26,7 @@ Use kebab-case attribute names. Pass non-string values through renderVals holes,
|
|
|
26
26
|
|
|
27
27
|
## Sub-components
|
|
28
28
|
|
|
29
|
+
- `WallarmDS.AgentItem` — `AgentItemProps` in the declaration bundle.
|
|
29
30
|
- `WallarmDS.AvatarContent` — `AvatarContentProps` in the declaration bundle.
|
|
30
31
|
- `WallarmDS.AvatarDescription` — `AvatarDescriptionProps` in the declaration bundle.
|
|
31
32
|
- `WallarmDS.AvatarFallback` — `AvatarFallbackProps` in the declaration bundle.
|
|
@@ -62,6 +63,13 @@ Source: Avatar/Avatar.stories.tsx#WithName
|
|
|
62
63
|
|
|
63
64
|
Source: Avatar/Avatar.stories.tsx#WithDescription
|
|
64
65
|
|
|
66
|
+
### Agent
|
|
67
|
+
|
|
68
|
+
An AI agent's user item: `AgentItem` puts the agent's glyph where the plate goes, with no plate and no circle, and
|
|
69
|
+
takes the same `AvatarContent`. 20 px beside the text-sm name, 24 px for roomier rows, 16 px beside text-xs.
|
|
70
|
+
|
|
71
|
+
Source: Avatar/Avatar.stories.tsx#Agent
|
|
72
|
+
|
|
65
73
|
### Fallback
|
|
66
74
|
|
|
67
75
|
Initials are the first letters of the first and last word of `name`; without a name the person icon shows, whether the photo is missing or failed to load.
|
|
@@ -113,6 +121,7 @@ import { FileUpload, FileUploadError, FileUploadTrigger, useFilePreviewUrl } fro
|
|
|
113
121
|
import { Loader } from '../Loader';
|
|
114
122
|
import { HStack, VStack } from '../Stack';
|
|
115
123
|
import {
|
|
124
|
+
AgentItem,
|
|
116
125
|
Avatar,
|
|
117
126
|
AvatarContent,
|
|
118
127
|
AvatarDescription,
|
|
@@ -135,6 +144,7 @@ const DESCRIPTION = [
|
|
|
135
144
|
"A person's photo on a rounded plate, falling back to initials or an icon while it loads, when it fails, or when there is none.",
|
|
136
145
|
'It is decorative beside a visible name; standing alone, give it `aria-label` so it reads as an image.',
|
|
137
146
|
'Add `AvatarContent` with `AvatarName` (and an optional `AvatarDescription`) for the user item: plate and name in one row.',
|
|
147
|
+
'An AI agent takes `AgentItem` instead of `Avatar`: its character, with no plate, before the same `AvatarContent`.',
|
|
138
148
|
"To let people change it, make the avatar the `FileUploadTrigger` (`asChild`) and give it `as='button'` — picking only previews, and your form uploads.",
|
|
139
149
|
].join(' ');
|
|
140
150
|
|
|
@@ -271,6 +281,41 @@ export const WithDescription: StoryFn<AvatarProps> = () => (
|
|
|
271
281
|
</VStack>
|
|
272
282
|
);
|
|
273
283
|
|
|
284
|
+
/**
|
|
285
|
+
* An AI agent's user item: `AgentItem` puts the agent's glyph where the plate goes, with no plate and no circle, and
|
|
286
|
+
* takes the same `AvatarContent`. 20 px beside the text-sm name, 24 px for roomier rows, 16 px beside text-xs.
|
|
287
|
+
*/
|
|
288
|
+
export const Agent: StoryFn<AvatarProps> = () => (
|
|
289
|
+
<VStack gap={16} align='start' data-testid='avatar'>
|
|
290
|
+
<Avatar size='sm' data-testid='avatar-person'>
|
|
291
|
+
<AvatarFallback name='Artem Miskevich' />
|
|
292
|
+
<AvatarContent>
|
|
293
|
+
<AvatarName>Artem Miskevich</AvatarName>
|
|
294
|
+
</AvatarContent>
|
|
295
|
+
</Avatar>
|
|
296
|
+
{([20, 24, 16] as const).map(size => (
|
|
297
|
+
<AgentItem key={size} agent='radar' size={size} data-testid={`avatar-agent-${size}`}>
|
|
298
|
+
<AvatarContent>
|
|
299
|
+
<AvatarName>Radar</AvatarName>
|
|
300
|
+
</AvatarContent>
|
|
301
|
+
</AgentItem>
|
|
302
|
+
))}
|
|
303
|
+
<AgentItem agent='sift' data-testid='avatar-agent-description'>
|
|
304
|
+
<AvatarContent>
|
|
305
|
+
<AvatarName>Sift</AvatarName>
|
|
306
|
+
<AvatarDescription>False Positives Analyzer</AvatarDescription>
|
|
307
|
+
</AvatarContent>
|
|
308
|
+
</AgentItem>
|
|
309
|
+
<div className='w-120'>
|
|
310
|
+
<AgentItem agent='acquit' data-testid='avatar-agent-truncated'>
|
|
311
|
+
<AvatarContent>
|
|
312
|
+
<AvatarName>Acquit, the false positive resolver</AvatarName>
|
|
313
|
+
</AvatarContent>
|
|
314
|
+
</AgentItem>
|
|
315
|
+
</div>
|
|
316
|
+
</VStack>
|
|
317
|
+
);
|
|
318
|
+
|
|
274
319
|
/** Initials are the first letters of the first and last word of `name`; without a name the person icon shows, whether the photo is missing or failed to load. */
|
|
275
320
|
export const Fallback: StoryFn<AvatarProps> = () => (
|
|
276
321
|
<HStack gap={12} align='center' data-testid='avatar'>
|