@process.co/ui 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,414 @@
1
+ # UI Component Library
2
+
3
+ This package contains a collection of reusable UI components for the proc-app project. All components are built with React, TypeScript, and Tailwind CSS.
4
+
5
+ ## Table of Contents
6
+
7
+ - [Installation](#installation)
8
+ - [Usage](#usage)
9
+ - [Components](#components)
10
+ - [Basic Components](#basic-components)
11
+ - [Form Components](#form-components)
12
+ - [Layout Components](#layout-components)
13
+ - [Feedback Components](#feedback-components)
14
+ - [Navigation Components](#navigation-components)
15
+ - [Blocks](#blocks)
16
+ - [Providers](#providers)
17
+ - [Storybook](#storybook)
18
+
19
+ ## Installation
20
+
21
+ ```bash
22
+ npm install @process.co/ui
23
+ ```
24
+
25
+ Or with pnpm:
26
+
27
+ ```bash
28
+ pnpm add @process.co/ui
29
+ ```
30
+
31
+ ## Usage
32
+
33
+ ### Importing Components
34
+
35
+ ```tsx
36
+ import { Button, Card, Alert } from '@process.co/ui';
37
+ import { UIProvider } from '@process.co/ui';
38
+ ```
39
+
40
+ ### Importing Styles
41
+
42
+ The library includes pre-built CSS that must be imported in your application:
43
+
44
+ ```tsx
45
+ // In your main app file or layout
46
+ import '@process.co/ui/styles';
47
+ ```
48
+
49
+ Or in your CSS:
50
+
51
+ ```css
52
+ @import '@process.co/ui/styles';
53
+ ```
54
+
55
+ ### Basic Example
56
+
57
+ ```tsx
58
+ import { Button, Card, Alert } from '@process.co/ui';
59
+ import { UIProvider } from '@process.co/ui';
60
+ import '@process.co/ui/styles';
61
+
62
+ // Wrap your app with UIProvider
63
+ function App() {
64
+ return (
65
+ <UIProvider>
66
+ <Button>Click me</Button>
67
+ </UIProvider>
68
+ );
69
+ }
70
+ ```
71
+
72
+ ## Components
73
+
74
+ ### Basic Components
75
+
76
+ #### Button
77
+ A customizable button component with multiple variants and sizes.
78
+
79
+ ```tsx
80
+ import { Button } from '@repo/ui';
81
+
82
+ <Button variant="primary" size="md" onClick={handleClick}>
83
+ Click me
84
+ </Button>
85
+ ```
86
+
87
+ **Props:**
88
+ - `variant`: 'primary' | 'secondary' | 'outline' | 'ghost' | 'link' | 'destructive'
89
+ - `size`: 'sm' | 'md' | 'lg'
90
+ - `disabled`: boolean
91
+ - `loading`: boolean
92
+ - Standard button HTML attributes
93
+
94
+ #### Card
95
+ A clickable card component that links to external resources.
96
+
97
+ ```tsx
98
+ import { Card } from '@repo/ui';
99
+
100
+ <Card
101
+ title="Documentation"
102
+ href="https://docs.example.com"
103
+ className="custom-class"
104
+ >
105
+ Learn more about our components
106
+ </Card>
107
+ ```
108
+
109
+ **Props:**
110
+ - `title`: string (required)
111
+ - `href`: string (required)
112
+ - `className`: string (optional)
113
+ - `children`: React.ReactNode
114
+
115
+ #### Code
116
+ A simple inline code component for displaying code snippets.
117
+
118
+ ```tsx
119
+ import { Code } from '@repo/ui';
120
+
121
+ <Code className="custom-class">const example = "Hello";</Code>
122
+ ```
123
+
124
+ **Props:**
125
+ - `className`: string (optional)
126
+ - `children`: React.ReactNode
127
+
128
+ #### Header
129
+ A header component with navigation and branding.
130
+
131
+ ```tsx
132
+ import { Header } from '@repo/ui';
133
+
134
+ <Header
135
+ logoSrc="/logo.svg"
136
+ logoAlt="Company Logo"
137
+ navigation={navigationItems}
138
+ />
139
+ ```
140
+
141
+ ### Form Components
142
+
143
+ #### TextInput
144
+ A text input component with built-in validation and error handling.
145
+
146
+ ```tsx
147
+ import { TextInput } from '@repo/ui';
148
+
149
+ <TextInput
150
+ label="Email"
151
+ name="email"
152
+ type="email"
153
+ placeholder="Enter your email"
154
+ error={errors.email}
155
+ onChange={handleChange}
156
+ />
157
+ ```
158
+
159
+ **Props:**
160
+ - `label`: string
161
+ - `name`: string
162
+ - `type`: string
163
+ - `placeholder`: string
164
+ - `error`: string
165
+ - `required`: boolean
166
+ - Standard input HTML attributes
167
+
168
+ #### PasswordMeter
169
+ A password input with strength meter visualization.
170
+
171
+ ```tsx
172
+ import { PasswordMeter } from '@repo/ui';
173
+
174
+ <PasswordMeter
175
+ password={password}
176
+ onChange={setPassword}
177
+ requirements={{
178
+ minLength: 8,
179
+ requireUppercase: true,
180
+ requireNumbers: true,
181
+ requireSpecialChars: true
182
+ }}
183
+ />
184
+ ```
185
+
186
+ **Props:**
187
+ - `password`: string
188
+ - `onChange`: (value: string) => void
189
+ - `requirements`: PasswordRequirements object
190
+
191
+ ### Layout Components
192
+
193
+ #### NotFound (404)
194
+ A pre-styled 404 error page layout.
195
+
196
+ ```tsx
197
+ import { NotFound } from '@repo/ui';
198
+
199
+ <NotFound />
200
+ ```
201
+
202
+ The component uses translations from UIProvider for customization.
203
+
204
+ #### Sidebar
205
+ A collapsible sidebar navigation component.
206
+
207
+ ```tsx
208
+ import { Sidebar } from '@repo/ui';
209
+
210
+ <Sidebar
211
+ items={navigationItems}
212
+ collapsed={isCollapsed}
213
+ onToggle={handleToggle}
214
+ />
215
+ ```
216
+
217
+ ### Feedback Components
218
+
219
+ #### Alert
220
+ A dismissible alert component for displaying messages.
221
+
222
+ ```tsx
223
+ import { Alert } from '@repo/ui';
224
+
225
+ <Alert
226
+ type="success"
227
+ message="Operation completed successfully"
228
+ onClose={handleClose}
229
+ />
230
+ ```
231
+
232
+ **Props:**
233
+ - `type`: 'success' | 'error' | 'warning' | 'info'
234
+ - `message`: string
235
+ - `onClose`: () => void (optional)
236
+
237
+ #### Loader
238
+ An animated loading indicator.
239
+
240
+ ```tsx
241
+ import { Loader } from '@repo/ui';
242
+
243
+ <Loader
244
+ id="unique-loader-id"
245
+ getAnimationData={() => animationData}
246
+ speed={1}
247
+ />
248
+ ```
249
+
250
+ #### SuspenseLoader
251
+ A full-screen loading component with animation, wrapped in React Query provider.
252
+
253
+ ```tsx
254
+ import { SuspenseLoader } from '@repo/ui';
255
+
256
+ <SuspenseLoader />
257
+ ```
258
+
259
+ #### FullScreenLoader
260
+ A centered full-screen loading overlay.
261
+
262
+ ```tsx
263
+ import { FullScreenLoader } from '@repo/ui';
264
+
265
+ <FullScreenLoader
266
+ message="Loading..."
267
+ showSpinner={true}
268
+ />
269
+ ```
270
+
271
+ #### Tooltip
272
+ A simple tooltip component for hover information.
273
+
274
+ ```tsx
275
+ import { Tooltip } from '@repo/ui';
276
+
277
+ <Tooltip content="Additional information">
278
+ <Button>Hover me</Button>
279
+ </Tooltip>
280
+ ```
281
+
282
+ ### Navigation Components
283
+
284
+ #### NavigationPortal
285
+ A portal component for setting navigation breadcrumbs and content.
286
+
287
+ ```tsx
288
+ import NavigationPortal from '@repo/ui';
289
+
290
+ <NavigationPortal
291
+ breadcrumbs={[
292
+ { label: 'Home', href: '/' },
293
+ { label: 'Products', href: '/products' },
294
+ { label: 'Current Page' }
295
+ ]}
296
+ clearOnUnmount={true}
297
+ >
298
+ <CustomNavigation />
299
+ </NavigationPortal>
300
+ ```
301
+
302
+ **Props:**
303
+ - `breadcrumbs`: Breadcrumb[] (optional)
304
+ - `clearOnUnmount`: boolean (default: true)
305
+ - `keys`: unknown[] (for memoization)
306
+ - `children`: React.ReactNode (navigation content)
307
+
308
+ ### Blocks
309
+
310
+ #### LinkTree
311
+ A component displaying a tree of navigation links.
312
+
313
+ ```tsx
314
+ import { LinkTree } from '@repo/ui';
315
+
316
+ <LinkTree links={navigationLinks} />
317
+ ```
318
+
319
+ #### Copyright
320
+ A copyright notice component with customizable text.
321
+
322
+ ```tsx
323
+ import { Copyright } from '@repo/ui';
324
+
325
+ <Copyright year={2024} company="Process Co" />
326
+ ```
327
+
328
+ ### Authentication Components
329
+
330
+ #### SocialLogin
331
+ A component for social authentication providers.
332
+
333
+ ```tsx
334
+ import { SocialLogin } from '@repo/ui';
335
+
336
+ <SocialLogin
337
+ providers={['google', 'github', 'microsoft']}
338
+ onLogin={handleSocialLogin}
339
+ />
340
+ ```
341
+
342
+ ### Providers
343
+
344
+ #### UIProvider
345
+ The main provider component that wraps your application and provides context for translations, settings, and state management.
346
+
347
+ ```tsx
348
+ import { UIProvider } from '@repo/ui';
349
+
350
+ <UIProvider
351
+ locale="en"
352
+ translations={translations}
353
+ theme="light"
354
+ >
355
+ <App />
356
+ </UIProvider>
357
+ ```
358
+
359
+ **Exports:**
360
+ - `useSettings`: Hook to access UI settings
361
+ - `useTranslation`: Hook for translations
362
+ - `KeyValueStore`: Type definition for storage
363
+ - `StorageType`: Enum for storage types
364
+
365
+ ## Utility Functions
366
+
367
+ The package also exports utility functions from `lib/utils`:
368
+
369
+ ```tsx
370
+ import { cn, formatDate } from '@repo/ui';
371
+ ```
372
+
373
+ ## Storybook
374
+
375
+ To view all components in Storybook:
376
+
377
+ ```bash
378
+ pnpm storybook
379
+ ```
380
+
381
+ ## Development
382
+
383
+ ### Adding New Components
384
+
385
+ 1. Create the component in `src/components/`
386
+ 2. Export it from `src/index.tsx`
387
+ 3. Create a Storybook story in `src/stories/components/`
388
+ 4. Update this documentation
389
+
390
+ ### Component Guidelines
391
+
392
+ - Use TypeScript for all components
393
+ - Follow the existing naming conventions
394
+ - Include proper TypeScript types
395
+ - Add JSDoc comments for props
396
+ - Create comprehensive Storybook stories
397
+ - Ensure accessibility compliance
398
+ - Use Tailwind CSS with the `ui:` prefix for styling
399
+
400
+ ### Testing
401
+
402
+ Run tests with:
403
+
404
+ ```bash
405
+ pnpm test
406
+ ```
407
+
408
+ ### Building
409
+
410
+ Build the package with:
411
+
412
+ ```bash
413
+ pnpm build
414
+ ```
package/dist/index.cjs ADDED
@@ -0,0 +1 @@
1
+ "use strict";function e(e,t){if(t==null||t>e.length)t=e.length;for(var i=0,n=new Array(t);i<t;i++)n[i]=e[i];return n}function t(e){if(Array.isArray(e))return e}function i(e,t,i,n,r,u,a){try{var o=e[u](a);var s=o.value}catch(e){i(e);return}if(o.done){t(s)}else{Promise.resolve(s).then(n,r)}}function n(e){return function(){var t=this,n=arguments;return new Promise(function(r,u){var a=e.apply(t,n);function o(e){i(a,r,u,o,s,"next",e)}function s(e){i(a,r,u,o,s,"throw",e)}o(undefined)})}}function r(e,t,i){if(t in e){Object.defineProperty(e,t,{value:i,enumerable:true,configurable:true,writable:true})}else{e[t]=i}return e}function u(e,t){if(t!=null&&typeof Symbol!=="undefined"&&t[Symbol.hasInstance]){return!!t[Symbol.hasInstance](e)}else{return e instanceof t}}function a(e,t){var i=e==null?null:typeof Symbol!=="undefined"&&e[Symbol.iterator]||e["@@iterator"];if(i==null)return;var n=[];var r=true;var u=false;var a,o;try{for(i=i.call(e);!(r=(a=i.next()).done);r=true){n.push(a.value);if(t&&n.length===t)break}}catch(e){u=true;o=e}finally{try{if(!r&&i["return"]!=null)i["return"]()}finally{if(u)throw o}}return n}function o(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function s(e){for(var t=1;t<arguments.length;t++){var i=arguments[t]!=null?arguments[t]:{};var n=Object.keys(i);if(typeof Object.getOwnPropertySymbols==="function"){n=n.concat(Object.getOwnPropertySymbols(i).filter(function(e){return Object.getOwnPropertyDescriptor(i,e).enumerable}))}n.forEach(function(t){r(e,t,i[t])})}return e}function l(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);if(t){n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})}i.push.apply(i,n)}return i}function c(e,t){t=t!=null?t:{};if(Object.getOwnPropertyDescriptors){Object.defineProperties(e,Object.getOwnPropertyDescriptors(t))}else{l(Object(t)).forEach(function(i){Object.defineProperty(e,i,Object.getOwnPropertyDescriptor(t,i))})}return e}function d(e,t){if(e==null)return{};var i=f(e,t);var n,r;if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;r<u.length;r++){n=u[r];if(t.indexOf(n)>=0)continue;if(!Object.prototype.propertyIsEnumerable.call(e,n))continue;i[n]=e[n]}}return i}function f(e,t){if(e==null)return{};var i={};var n=Object.keys(e);var r,u;for(u=0;u<n.length;u++){r=n[u];if(t.indexOf(r)>=0)continue;i[r]=e[r]}return i}function p(e,i){return t(e)||a(e,i)||g(e,i)||o()}function m(e){"@swc/helpers - typeof";return e&&typeof Symbol!=="undefined"&&e.constructor===Symbol?"symbol":typeof e}function g(t,i){if(!t)return;if(typeof t==="string")return e(t,i);var n=Object.prototype.toString.call(t).slice(8,-1);if(n==="Object"&&t.constructor)n=t.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return e(t,i)}function v(e,t){var i,n,r,u={label:0,sent:function(){if(r[0]&1)throw r[1];return r[1]},trys:[],ops:[]},a=Object.create((typeof Iterator==="function"?Iterator:Object).prototype);return a.next=o(0),a["throw"]=o(1),a["return"]=o(2),typeof Symbol==="function"&&(a[Symbol.iterator]=function(){return this}),a;function o(e){return function(t){return s([e,t])}}function s(o){if(i)throw new TypeError("Generator is already executing.");while(a&&(a=0,o[0]&&(u=0)),u)try{if(i=1,n&&(r=o[0]&2?n["return"]:o[0]?n["throw"]||((r=n["return"])&&r.call(n),0):n.next)&&!(r=r.call(n,o[1])).done)return r;if(n=0,r)o=[o[0]&2,r.value];switch(o[0]){case 0:case 1:r=o;break;case 4:u.label++;return{value:o[1],done:false};case 5:u.label++;n=o[1];o=[0];continue;case 7:o=u.ops.pop();u.trys.pop();continue;default:if(!(r=u.trys,r=r.length>0&&r[r.length-1])&&(o[0]===6||o[0]===2)){u=0;continue}if(o[0]===3&&(!r||o[1]>r[0]&&o[1]<r[3])){u.label=o[1];break}if(o[0]===6&&u.label<r[1]){u.label=r[1];r=o;break}if(r&&u.label<r[2]){u.label=r[2];u.ops.push(o);break}if(r[2])u.ops.pop();u.trys.pop();continue}o=t.call(e,u)}catch(e){o=[6,e];n=0}finally{i=r=0}if(o[0]&5)throw o[1];return{value:o[0]?o[1]:void 0,done:true}}}var x=Object.create;var y=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var h=Object.getPrototypeOf,S=Object.prototype.hasOwnProperty;var w=function(e,t){for(var i in t)y(e,i,{get:t[i],enumerable:!0})},N=function(e,t,i,n){var r=true,u=false,a=undefined;if(t&&(typeof t==="undefined"?"undefined":m(t))=="object"||typeof t=="function")try{var o=function(){var r=l.value;!S.call(e,r)&&r!==i&&y(e,r,{get:function(){return t[r]},enumerable:!(n=b(t,r))||n.enumerable})};for(var s=E(t)[Symbol.iterator](),l;!(r=(l=s.next()).done);r=true)o()}catch(e){u=true;a=e}finally{try{if(!r&&s.return!=null){s.return()}}finally{if(u){throw a}}}return e};var k=function(e,t,i){return i=e!=null?x(h(e)):{},N(t||!e||!e.__esModule?y(i,"default",{value:e,enumerable:!0}):i,e)},C=function(e){return N(y({},"__esModule",{value:!0}),e)};var T={};w(T,{Input:function(){return er}});module.exports=C(T);var F=k(require("react"),1);var M=k(require("react"),1);var O=require("clsx"),D=require("tailwind-merge");function j(){for(var e=arguments.length,t=new Array(e),i=0;i<e;i++){t[i]=arguments[i]}return(0,D.twMerge)((0,O.clsx)(t))}function L(e){var t=e.className,i=e.wrapperClassName,n=e.type,r=e.required,u=e.error,a=d(e,["className","wrapperClassName","type","required","error"]);return M.createElement("div",{className:j("uii:relative",i)},M.createElement("input",s({"aria-invalid":u,type:n,"data-slot":"input",className:j("uii:border-input uii:file:text-foreground uii:placeholder:text-muted-foreground uii:selection:bg-primary uii:selection:text-primary-foreground uii:flex uii:h-9 uii:w-full uii:min-w-0 uii:rounded-sm uii:border uii:bg-transparent uii:px-3 uii:py-1 uii:text-base uii:shadow-xs uii:transition-[color,box-shadow] uii:outline-none uii:file:inline-flex uii:file:h-7 uii:file:border-0 uii:file:bg-transparent uii:file:text-sm uii:file:font-medium uii:disabled:pointer-events-none uii:disabled:cursor-not-allowed uii:disabled:opacity-50 uii:md:text-sm","uii:focus-visible:border-ring uii:focus-visible:ring-ring/50 uii:focus-visible:ring-[3px]","uii:aria-invalid:ring-destructive/20 uii:dark:aria-invalid:ring-destructive/40 uii:aria-invalid:border-destructive",{"uii:pr-30":u},t)},a)),u&&M.createElement("span",{className:"uii:absolute uii:inset-y-0 uii:right-0 uii:flex uii:items-center uii:pr-2 uii:border-l-10 uii:border-l-background uii:my-[6px] uii:pointer-events-none "},M.createElement("span",{className:"uii:bg-destructive uii:text-white uii:px-1.5 uii:py-1.5 uii:rounded-xs uii:uppercase uii:tracking-wide uii:font-medium uii:text-xs uii:leading-none uii:font-sans"},u&&r?"required":"error")))}var P=k(require("react"),1);var I=require("react");var V=require("zustand"),R={expression:"",mode:"value",isEditing:!1,currentValue:void 0,isFullScreen:!1},_=(0,V.create)(function(e,t){return{states:{},setState:function(t,i){e(function(e){return{states:c(s({},e.states),r({},t,i))}})},getState:function(e){return t().states[e]||R},clear:function(t){e(function(e){return{states:c(s({},e.states),r({},t,R))}})},switchToValue:function(e){var i=t().getState(e);t().setState(e,c(s({},i),{mode:"value",isEditing:!1}))},switchToExpression:function(e){var i=t().getState(e);t().setState(e,c(s({},i),{mode:"expression",isEditing:!1}))},switchToEditor:function(e){var i=t().getState(e);t().setState(e,c(s({},i),{mode:"expression",isEditing:!0}))},setExpression:function(e,i){var n=t().getState(e);t().setState(e,c(s({},n),{expression:i}))},setEditing:function(e,i){var n=t().getState(e);t().setState(e,c(s({},n),{isEditing:i}))},setFullScreen:function(e,i){var n=t().getState(e);t().setState(e,c(s({},n),{isFullScreen:i}))},setCurrentValue:function(e,i){var n=t().getState(e);t().setState(e,c(s({},n),{currentValue:i}))}}});function K(e){var t=_(),i=t.getState(e),n=(0,I.useCallback)(function(){t.switchToValue(e)},[t,e]),r=(0,I.useCallback)(function(){t.switchToExpression(e)},[t,e]),u=(0,I.useCallback)(function(){t.switchToEditor(e)},[t,e]),a=(0,I.useCallback)(function(){t.clear(e)},[t,e]),o=(0,I.useCallback)(function(i){t.setExpression(e,i)},[t,e]),s=(0,I.useCallback)(function(i){t.setEditing(e,i)},[t,e]),l=(0,I.useCallback)(function(i){t.setCurrentValue(e,i)},[t,e]),c=(0,I.useCallback)(function(i){t.setFullScreen(e,i)},[t,e]);return{current:i.mode,switchToValue:n,switchToExpression:r,switchToEditor:u,clear:a,isExpressionMode:i.mode==="expression",isEditorMode:i.isEditing,expression:i.expression,setExpression:o,isEditing:i.isEditing,setEditing:s,currentValue:i.currentValue,setCurrentValue:l,isFullScreen:i.isFullScreen,setFullScreen:c}}var W=k(require("react"),1),A=require("@monaco-editor/react");var q=require("@fortawesome/react-fontawesome"),B=require("@fortawesome/pro-regular-svg-icons");function U(e,t,i){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"\uD83D\uDD37";return n(function(){var n,u,a,o,s,l,c,d,f,p,m,g,x,y,b,E,h,S,w;return v(this,function(v){switch(v.label){case 0:if(!i.trim())return[2,(console.log("".concat(r," Type inference skipped - no expression")),null)];if(!e.hasTextFocus())return[2,(console.log("".concat(r," Skipping type inference - editor does not have focus")),null)];console.log("".concat(r," Running type inference, expression:"),i);v.label=1;case 1:v.trys.push([1,5,,6]);n=e.getModel();if(n&&t.editor.getModelMarkers({resource:n.uri}).some(function(e){return e.severity===t.MarkerSeverity.Error}))return[2,(console.log("".concat(r," Type inference skipped - expression has validation errors")),"error")];u="const __expr__ = (".concat(i,");"),a=t.editor.createModel(u,"typescript");return[4,t.languages.typescript.getTypeScriptWorker()];case 2:return[4,v.sent()(a.uri)];case 3:o=v.sent(),s=u.indexOf("__expr__"),l=a.getPositionAt(s);return[4,o.getQuickInfoAtPosition(a.uri.toString(),a.getOffsetAt(l))];case 4:c=v.sent();console.log("".concat(r," QuickInfo response:"),c);d=null;if(c&&c.displayParts){f=!1,p=[];m=true,g=false,x=undefined;try{for(y=c.displayParts[Symbol.iterator]();!(m=(b=y.next()).done);m=true){E=b.value;if(f&&p.push(E),E.kind==="punctuation"&&E.text===":"&&!f){h=c.displayParts[c.displayParts.indexOf(E)-1];h&&(h.kind==="localName"||h.kind==="parameterName")&&(f=!0)}}}catch(e){g=true;x=e}finally{try{if(!m&&y.return!=null){y.return()}}finally{if(g){throw x}}}if(p.length>0){S=p.map(function(e){return e.text}).join("").trim();console.log("".concat(r," Extracted type:"),S),S&&S!=="any"&&(d=S)}}return[2,(a.dispose(),d)];case 5:w=v.sent();return[2,(console.warn("".concat(r," Type inference failed:"),w),null)];case 6:return[2]}})})()}var z={fontSize:"14px",fontWeight:"normal",wordWrap:"off",lineNumbers:"off",lineNumbersMinChars:0,overviewRulerLanes:0,overviewRulerBorder:!1,hideCursorInOverviewRuler:!0,lineDecorationsWidth:0,glyphMargin:!1,folding:!1,scrollBeyondLastColumn:0,scrollbar:{horizontal:"hidden",vertical:"hidden",alwaysConsumeMouseWheel:!1},find:{addExtraSpaceOnTop:!1,autoFindInSelection:"never",seedSearchStringFromSelection:!1},minimap:{enabled:!1},wordBasedSuggestions:!0,links:!1,occurrencesHighlight:!1,cursorStyle:"line",renderLineHighlight:"none",contextmenu:!1,roundedSelection:!1,hover:{delay:300},acceptSuggestionOnEnter:"on",automaticLayout:!0,fixedOverflowWidgets:!0,padding:{top:4,bottom:4},fontFamily:"inherit",letterSpacing:"normal",lineHeight:"normal"},H={fontSize:"14px",fontWeight:"normal",wordWrap:"on",lineNumbers:"on",lineNumbersMinChars:3,overviewRulerLanes:3,overviewRulerBorder:!0,hideCursorInOverviewRuler:!1,lineDecorationsWidth:10,glyphMargin:!0,folding:!0,scrollBeyondLastColumn:5,scrollbar:{horizontal:"auto",vertical:"auto",alwaysConsumeMouseWheel:!1},find:{addExtraSpaceOnTop:!1,autoFindInSelection:"never",seedSearchStringFromSelection:!1},minimap:{enabled:!0},wordBasedSuggestions:!0,links:!0,occurrencesHighlight:!0,cursorStyle:"line",renderLineHighlight:"line",contextmenu:!0,roundedSelection:!0,hover:{delay:300},acceptSuggestionOnEnter:"off",automaticLayout:!0,fixedOverflowWidgets:!0,readOnly:!1,domReadOnly:!1};function $(e){var t=e.value,i=e.onChange,r=e.onBlur,u=e.onEnter,a=e.onTypeInferred,o=e.onValidationChange,l=e.context,d=l===void 0?{}:l,f=e.className,p=e.placeholder,m=p===void 0?"Enter expression...":p;var g=(0,W.useRef)(null),x=(0,W.useRef)(null),y=(0,W.useRef)(null),b=function(e){x.current=e;var t=Object.keys(d);t.length>0&&e.languages.typescript.javascriptDefaults.addExtraLib("\n declare const ".concat(t.join(", "),": any;\n "),"context.d.ts")},E=function(e,t){g.current=e,e.updateOptions(z),console.log("\uD83D\uDD37 Inline editor mounted!");var i=e.getDomNode(),l=e.addCommand(t.KeyMod.CtrlCmd|t.KeyCode.KEY_F,function(){}),d=e.onKeyDown(function(i){if(i.keyCode===t.KeyCode.Enter){var n,a,o;if(!e.hasTextFocus()){console.log("\uD83D\uDD37 Enter keydown but inline editor does NOT have focus - allowing default");return}if(i.shiftKey){console.log("\uD83D\uDD37 Shift+Enter in INLINE editor - switching to full-screen"),i.preventDefault(),i.stopPropagation(),u&&u();return}var s=(n=e._contentWidgets)===null||n===void 0?void 0:n["editor.widget.suggestWidget"],l=(s===null||s===void 0?void 0:s.widget)&&!s.widget._hidden&&s.widget.state!==void 0&&s.widget.state!==0,c=(o=e._contextKeyService)===null||o===void 0?void 0:(a=o.getContextKeyValue)===null||a===void 0?void 0:a.call(o,"suggestWidgetVisible");l||c?(console.log("\uD83D\uDD37 Enter in INLINE editor - accepting autocomplete"),i.preventDefault(),i.stopPropagation(),e.trigger("","acceptSelectedSuggestion")):(console.log("\uD83D\uDD37 Enter in INLINE editor - blurring (finishing edit)"),i.preventDefault(),i.stopPropagation(),r===null||r===void 0?void 0:r({}))}});e.onDidPaste(function(t){if(t.endLineNumber<=1)return;var i="",n=e.getModel(),r=n.getLineCount();for(var u=0;u<r;u+=1)i+=n.getLineContent(u+1);n.setValue(i),e.setPosition({column:i.length+1,lineNumber:1})}),e.onDidBlurEditorText(function(t){var i=e.getValue();r===null||r===void 0?void 0:r(c(s({},t),{currentValue:i}))}),e.onDidChangeModelContent(function(){var i=e.getModel();if(i){if(o){var r=t.editor.getModelMarkers({resource:i.uri}),u=r.some(function(e){return e.severity===t.MarkerSeverity.Error});o(!u,r)}a&&(y.current&&clearTimeout(y.current),console.log("\uD83D\uDD37 Content changed - debouncing type inference"),y.current=setTimeout(function(){return n(function(){var n,r;return v(this,function(u){switch(u.label){case 0:n=i.getValue();return[4,U(e,t,n,"\uD83D\uDD37")];case 1:r=u.sent();r&&a(r);return[2]}})})()},200))}});var f=t.editor.onDidChangeMarkers(function(i){var r=e.getModel();if(!r||!a||!i.some(function(e){return e.toString()===r.uri.toString()}))return;var u=t.editor.getModelMarkers({resource:r.uri}).some(function(e){return e.severity===t.MarkerSeverity.Error});console.log("\uD83D\uDD37 Monaco markers changed - hasErrors:",u),u?(y.current&&(clearTimeout(y.current),y.current=null),console.log("\uD83D\uDD37 ERROR detected - immediately setting type to error"),a("error")):(y.current&&clearTimeout(y.current),console.log("\uD83D\uDD37 Errors cleared - triggering type inference"),y.current=setTimeout(function(){return n(function(){var i,n;return v(this,function(u){switch(u.label){case 0:i=r.getValue();return[4,U(e,t,i,"\uD83D\uDD37")];case 1:n=u.sent();n&&a(n);return[2]}})})()},100))});e.addCommand(t.KeyCode.F1,function(){});var p=e.onDidChangeCursorPosition(function(){return n(function(){var i,n,r;return v(this,function(u){switch(u.label){case 0:if(!(a&&e.hasTextFocus()))return[3,2];i=e.getModel();if(!(i&&i.getValue().trim()))return[3,2];y.current&&clearTimeout(y.current);n=i.getValue();return[4,U(e,t,n,"\uD83D\uDD37")];case 1:r=u.sent();r&&a(r);u.label=2;case 2:return[2]}})})()});e.setPosition({lineNumber:1,column:999999}),window.requestAnimationFrame(function(){e.focus(),setTimeout(function(){return n(function(){var i,n,r;return v(this,function(u){switch(u.label){case 0:i=e.getModel();if(!(a&&i&&i.getValue()))return[3,3];if(!(console.log("\uD83D\uDD37 Triggering initial type inference for inline editor"),t.editor.getModelMarkers({resource:i.uri}).some(function(e){return e.severity===t.MarkerSeverity.Error})))return[3,1];a("error");return[3,3];case 1:n=i.getValue();return[4,U(e,t,n,"\uD83D\uDD37")];case 2:r=u.sent();r&&a(r);u.label=3;case 3:return[2]}})})()},100)}),g.current._inlineDisposables={enterKeyDisposable:d,findCommand:l,markerChangeDisposable:f,cursorDisposable:p}};(0,W.useEffect)(function(){return function(){if(g.current){if(console.log("\uD83D\uDD37 Inline editor unmounting - cleaning up"),y.current&&clearTimeout(y.current),g.current._inlineDisposables){var e,t,i,n,r,u,a,o;var s=g.current._inlineDisposables;(t=s.enterKeyDisposable)===null||t===void 0?void 0:(e=t.dispose)===null||e===void 0?void 0:e.call(t),(n=s.findCommand)===null||n===void 0?void 0:(i=n.dispose)===null||i===void 0?void 0:i.call(n),(u=s.markerChangeDisposable)===null||u===void 0?void 0:(r=u.dispose)===null||r===void 0?void 0:r.call(u),(o=s.cursorDisposable)===null||o===void 0?void 0:(a=o.dispose)===null||a===void 0?void 0:a.call(o)}g.current=null}}},[]);var h=function(e){i(e||"")};return W.default.createElement("div",{className:j("uii:relative uii:flex-1",f)},W.default.createElement(A.Editor,{theme:"vs-dark",height:"26px",language:"typescript",value:t,onChange:h,onMount:E,beforeMount:b,width:"100%",loading:W.default.createElement(W.default.Fragment,null,W.default.createElement(q.FontAwesomeIcon,{icon:B.faSpinner,className:"uii:animate-spin"})),options:z,className:"uii:-ml-[4px] uii:-mt-[1px] inline-editor"}),!t&&W.default.createElement("div",{className:"uii:absolute uii:inset-0 uii:flex uii:items-center uii:pointer-events-none uii:text-muted-foreground uii:text-sm"},m))}function Q(e){var t=e.value,i=e.onChange,r=e.onClose,u=e.onBlur,a=e.onTypeInferred,o=e.context,l=o===void 0?{}:o,d=e.className,f=e.placeholder,p=f===void 0?"Enter expression...":f;var m=(0,W.useRef)(null),g=(0,W.useRef)(null),x=(0,W.useRef)(null),y=function(e){g.current=e;var t=Object.keys(l);t.length>0&&e.languages.typescript.javascriptDefaults.addExtraLib("\n declare const ".concat(t.join(", "),": any;\n "),"context.d.ts")},b=function(e,t){m.current=e,e.updateOptions(H),console.log("\uD83D\uDFE6 FULL-SCREEN panel editor mounted!"),console.log("Full-screen editor is read-only?",e.getOption(t.editor.EditorOption.readOnly));var i=e.onKeyDown(function(i){if(i.keyCode===t.KeyCode.Escape&&(console.log("\uD83D\uDFE6 Escape pressed in FULL-SCREEN editor - closing"),i.preventDefault(),i.stopPropagation(),r()),i.keyCode===t.KeyCode.Enter){var n,u,a;var o=(n=e._contentWidgets)===null||n===void 0?void 0:n["editor.widget.suggestWidget"],s=(o===null||o===void 0?void 0:o.widget)&&!o.widget._hidden&&o.widget.state!==void 0&&o.widget.state!==0,l=(a=e._contextKeyService)===null||a===void 0?void 0:(u=a.getContextKeyValue)===null||u===void 0?void 0:u.call(a,"suggestWidgetVisible");s||l?(console.log("\uD83D\uDFE6 Enter in FULL-SCREEN - accepting autocomplete"),i.preventDefault(),i.stopPropagation(),e.trigger("","acceptSelectedSuggestion")):console.log("\uD83D\uDFE6 Enter in FULL-SCREEN - allowing newline (default behavior)")}}),o=0,l=e.onDidChangeModelContent(function(i){var r;o++;var u=e.getValue();console.log("\uD83D\uDFE6 FULL-SCREEN content changed (".concat(o,"):"),u),console.log("\uD83D\uDFE6 Line count: ".concat((r=e.getModel())===null||r===void 0?void 0:r.getLineCount())),a&&(x.current&&clearTimeout(x.current),console.log("\uD83D\uDFE6 Content changed - debouncing type inference"),x.current=setTimeout(function(){return n(function(){var i;return v(this,function(n){switch(n.label){case 0:return[4,U(e,t,u,"\uD83D\uDFE6")];case 1:i=n.sent();i&&a(i);return[2]}})})()},200))}),d=t.editor.onDidChangeMarkers(function(i){var r=e.getModel();if(!r||!a||!i.some(function(e){return e.toString()===r.uri.toString()}))return;var u=t.editor.getModelMarkers({resource:r.uri}).some(function(e){return e.severity===t.MarkerSeverity.Error});console.log("\uD83D\uDFE6 Monaco markers changed - hasErrors:",u),u?(x.current&&(clearTimeout(x.current),x.current=null),console.log("\uD83D\uDFE6 ERROR detected - immediately setting type to error"),a("error")):(x.current&&clearTimeout(x.current),console.log("\uD83D\uDFE6 Errors cleared - triggering type inference"),x.current=setTimeout(function(){return n(function(){var i,n;return v(this,function(u){switch(u.label){case 0:i=r.getValue();return[4,U(e,t,i,"\uD83D\uDFE6")];case 1:n=u.sent();n&&a(n);return[2]}})})()},100))});e.onDidBlurEditorText(function(t){var i=e.getValue();u===null||u===void 0?void 0:u(c(s({},t),{currentValue:i}))});var f=e.getModel();if(f){var p=f.getLineCount(),g=f.getLineLength(p);e.setPosition({lineNumber:p,column:g+1})}e.focus(),setTimeout(function(){return n(function(){var i,n;return v(this,function(r){switch(r.label){case 0:if(!(a&&f))return[3,3];if(!(console.log("\uD83D\uDFE6 Triggering initial type inference for full-screen editor"),t.editor.getModelMarkers({resource:f.uri}).some(function(e){return e.severity===t.MarkerSeverity.Error})))return[3,1];console.log("\uD83D\uDFE6 Initial load has error - setting type to error"),a("error");return[3,3];case 1:i=f.getValue();return[4,U(e,t,i,"\uD83D\uDFE6")];case 2:n=r.sent();n&&a(n);r.label=3;case 3:return[2]}})})()},100);var y=e.onDidChangeCursorPosition(function(){return n(function(){var i,n,r;return v(this,function(u){switch(u.label){case 0:if(!(a&&e.hasTextFocus()))return[3,2];i=e.getModel();if(!(i&&i.getValue().trim()))return[3,2];x.current&&clearTimeout(x.current);n=i.getValue();return[4,U(e,t,n,"\uD83D\uDFE6")];case 1:r=u.sent();r&&a(r);u.label=2;case 2:return[2]}})})()});m.current._fullScreenDisposables={escapeKeyDisposable:i,changeDisposable:l,markerChangeDisposable:d,cursorDisposable:y}};(0,W.useEffect)(function(){return function(){if(m.current){if(console.log("\uD83D\uDFE6 Full-screen editor unmounting - cleaning up"),x.current&&clearTimeout(x.current),m.current._fullScreenDisposables){var e,t,i,n,r,u,a,o;var s=m.current._fullScreenDisposables;(t=s.escapeKeyDisposable)===null||t===void 0?void 0:(e=t.dispose)===null||e===void 0?void 0:e.call(t),(n=s.changeDisposable)===null||n===void 0?void 0:(i=n.dispose)===null||i===void 0?void 0:i.call(n),(u=s.markerChangeDisposable)===null||u===void 0?void 0:(r=u.dispose)===null||r===void 0?void 0:r.call(u),(o=s.cursorDisposable)===null||o===void 0?void 0:(a=o.dispose)===null||a===void 0?void 0:a.call(o)}m.current=null}}},[]);var E=function(e){i(e||"")};return W.default.createElement("div",{className:j("uii:relative uii:border uii:rounded-md uii:bg-background",d)},W.default.createElement("div",{className:"uii:flex uii:items-center uii:justify-between uii:p-2 uii:border-b uii:bg-muted/50"},W.default.createElement("span",{className:"uii:text-sm uii:font-medium"},"Expression Editor"),W.default.createElement("button",{type:"button",onClick:r,className:"uii:text-muted-foreground hover:uii:text-foreground uii:p-1 uii:rounded uii:cursor-pointer uii:text-xs"},"✕")),W.default.createElement(A.Editor,{height:"300px",theme:"vs-dark",language:"typescript",value:t,onChange:E,onMount:b,beforeMount:y,options:H}),!t&&W.default.createElement("div",{className:"uii:absolute uii:inset-0 uii:flex uii:items-center uii:justify-center uii:pointer-events-none uii:text-muted-foreground"},p))}var G=require("react");function J(e,t){var i=p((0,G.useState)(null),2),n=i[0],r=i[1],u=p((0,G.useState)([]),2),a=u[0],o=u[1],s=p((0,G.useState)([]),2),l=s[0],c=s[1],d=p((0,G.useState)(!1),2),f=d[0],g=d[1],v=p((0,G.useState)(null),2),x=v[0],y=v[1],b=(0,G.useRef)(0),E=(0,G.useRef)(null),h=(0,G.useRef)(t||"default");return(0,G.useEffect)(function(){h.current=t||"default"},[t]),(0,G.useEffect)(function(){if((typeof window==="undefined"?"undefined":m(window))>"u"||!navigator.serviceWorker){y("Service worker not available");return}var e=function(e){if(e.data.type==="AST_PARSE_RESULT"){var t=e.data.payload,i=t.id,n=t.controlKey,u=t.result;i===b.current&&n===h.current?(console.log("Service worker AST response:",{id:i,controlKey:n,result:u}),r(u.ast),o(u.tokens),c(u.dependencies||[]),y(u.error||null),g(!1)):console.log("Ignoring AST response - wrong control:",{receivedId:i,expectedId:b.current,receivedKey:n,expectedKey:h.current})}};return E.current=e,navigator.serviceWorker.addEventListener("message",e),function(){E.current&&navigator.serviceWorker.removeEventListener("message",E.current)}},[]),(0,G.useEffect)(function(){if(!e.trim()){r(null),o([]),c([]),y(null),g(!1);return}if(!navigator.serviceWorker||!navigator.serviceWorker.controller){y("Service worker not ready"),g(!1);return}g(!0),y(null),b.current++,console.log("Sending expression to service worker:",{expression:e.trim(),controlKey:h.current,id:b.current}),navigator.serviceWorker.controller.postMessage({type:"PARSE_AST",payload:{expression:e.trim(),id:b.current,controlKey:h.current}})},[e]),{ast:n,tokens:a,dependencies:l,isLoading:f,error:x}}var Y=k(require("react"),1);function X(e){var t=e.ast,i=e.key,n=e.className,r=e.variant,u=r===void 0?"inline":r,a=e.showTokens,o=a===void 0?!1:a,s=e.tokens,l=s===void 0?[]:s;var c=function(e){switch(e){case"StringLiteral":return"uii:text-green-600 uii:bg-green-100";case"NumericLiteral":return"uii:text-purple-600 uii:bg-purple-100";case"Identifier":return"uii:text-blue-600 uii:bg-blue-100";case"Keyword":case"Literal":return"uii:text-orange-600 uii:bg-orange-100";case"BinaryExpression":return"uii:text-gray-700 uii:bg-gray-100";case"CallExpression":return"uii:text-indigo-600 uii:bg-indigo-100";case"MemberExpression":return"uii:text-cyan-600 uii:bg-cyan-100";case"UnaryExpression":return"uii:text-pink-600 uii:bg-pink-100";case"ParenthesizedExpression":return"uii:text-yellow-600 uii:bg-yellow-100";default:return"uii:text-gray-600 uii:bg-gray-100"}},d=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return t>2?null:e.type==="Identifier"?Y.default.createElement("span",{key:"".concat(e.start,"-").concat(e.end),className:"uii:inline-flex uii:items-center uii:mr-1"},Y.default.createElement("span",{className:"uii:px-1 uii:py-0.5 uii:rounded uii:text-xs uii:bg-blue-100 uii:text-blue-800 uii:font-mono"},e.name||e.value)):e.type==="StringLiteral"||e.type==="NumericLiteral"?Y.default.createElement("span",{key:"".concat(e.start,"-").concat(e.end),className:"uii:inline-flex uii:items-center uii:mr-1"},Y.default.createElement("span",{className:"uii:px-1 uii:py-0.5 uii:rounded uii:text-xs uii:bg-green-100 uii:text-green-800 uii:font-mono"},e.value)):e.type==="BinaryExpression"?Y.default.createElement("span",{key:"".concat(e.start,"-").concat(e.end),className:"uii:inline-flex uii:items-center uii:mr-1"},e.left&&d(e.left,t+1),Y.default.createElement("span",{className:"uii:px-1 uii:py-0.5 uii:rounded uii:text-xs uii:bg-purple-100 uii:text-purple-800 uii:font-mono uii:mx-1"},e.operator),e.right&&d(e.right,t+1)):e.type==="CallExpression"?Y.default.createElement("span",{key:"".concat(e.start,"-").concat(e.end),className:"uii:inline-flex uii:items-center uii:mr-1"},e.callee&&d(e.callee,t+1),Y.default.createElement("span",{className:"text-xs text-gray-600"},"()")):e.type==="PropertyAccessExpression"?Y.default.createElement("span",{key:"".concat(e.start,"-").concat(e.end),className:"uii:inline-flex uii:items-center uii:mr-1"},e.object&&d(e.object,t+1),Y.default.createElement("span",{className:"text-xs text-gray-600"},"."),e.property&&d(e.property,t+1)):Y.default.createElement("span",{key:"".concat(e.start,"-").concat(e.end),className:"uii:inline-flex uii:items-center uii:mr-1"},Y.default.createElement("span",{className:"px-1 py-0.5 rounded text-xs bg-gray-100 text-gray-600 font-mono"},e.type))},f=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(t>4)return null;var i=" ".repeat(t);return Y.default.createElement("div",{key:"".concat(e.start,"-").concat(e.end),className:"font-mono text-xs"},Y.default.createElement("div",{className:"uii:flex uii:items-start uii:gap-2"},Y.default.createElement("span",{className:"uii:text-gray-400"},i),Y.default.createElement("span",{className:j("uii:px-1 uii:py-0.5 uii:rounded uii:text-xs uii:font-semibold",c(e.type))},e.type),e.value&&Y.default.createElement("span",{className:"uii:text-green-600"},'"',e.value,'"'),e.operator&&Y.default.createElement("span",{className:"uii:text-purple-600"},e.operator),e.name&&Y.default.createElement("span",{className:"uii:text-blue-600"},e.name)),e.left&&Y.default.createElement("div",{className:"uii:ml-2"},Y.default.createElement("span",{className:"uii:text-gray-500 uii:text-xs"},"left: "),f(e.left,t+1)),e.right&&Y.default.createElement("div",{className:"uii:ml-2"},Y.default.createElement("span",{className:"uii:text-gray-500 uii:text-xs"},"right: "),f(e.right,t+1)),e.argument&&Y.default.createElement("div",{className:"uii:ml-2"},Y.default.createElement("span",{className:"uii:text-gray-500 uii:text-xs"},"arg: "),f(e.argument,t+1)),e.object&&Y.default.createElement("div",{className:"uii:ml-2"},Y.default.createElement("span",{className:"uii:text-gray-500 uii:text-xs"},"obj: "),f(e.object,t+1)),e.property&&Y.default.createElement("div",{className:"uii:ml-2"},Y.default.createElement("span",{className:"uii:text-gray-500 uii:text-xs"},"prop: "),f(e.property,t+1)),e.index&&Y.default.createElement("div",{className:"uii:ml-2"},Y.default.createElement("span",{className:"uii:text-gray-500 uii:text-xs"},"idx: "),f(e.index,t+1)),!e.left&&!e.right&&!e.argument&&!e.object&&!e.property&&!e.index&&e.children&&e.children.length>0&&Y.default.createElement("div",{className:"uii:ml-2"},e.children.slice(0,3).map(function(e,i){return f(e,t+1)}),e.children.length>3&&Y.default.createElement("div",{className:"uii:ml-2 uii:text-gray-500 uii:text-xs"},"... and ",e.children.length-3," more")))},p=function(){if(l.length===0)return null;var e=l.slice(0,10);return Y.default.createElement("div",{className:"uii:space-y-2"},Y.default.createElement("div",{className:"uii:text-sm uii:font-semibold uii:text-gray-700"},"Tokens ",l.length>10&&"(".concat(l.length," total)"),":"),Y.default.createElement("div",{className:"uii:flex uii:flex-wrap uii:gap-1"},e.map(function(e,t){return Y.default.createElement("span",{key:t,className:j("uii:px-1 uii:py-0.5 uii:rounded uii:text-xs uii:font-mono",e.type.includes("Keyword")&&"uii:bg-blue-100 uii:text-blue-800",e.type.includes("Identifier")&&"uii:bg-green-100 uii:text-green-800",e.type.includes("String")&&"uii:bg-yellow-100 uii:text-yellow-800",e.type.includes("Numeric")&&"uii:bg-purple-100 uii:text-purple-800",e.type.includes("Punctuation")&&"uii:bg-gray-100 uii:text-gray-800","uii:bg-gray-100 uii:text-gray-600")},e.value)}),l.length>10&&Y.default.createElement("span",{className:"uii:px-1 uii:py-0.5 uii:rounded uii:text-xs uii:bg-gray-200 uii:text-gray-600"},"+",l.length-10," more")))};return t?u==="inline"?Y.default.createElement("div",{className:j("uii:inline-flex uii:items-center uii:gap-2",n)},d(t)):u==="compact"?Y.default.createElement("div",{className:j("uii:space-y-2",n)},Y.default.createElement("div",{className:"uii:flex uii:flex-wrap uii:gap-1"},d(t)),o&&p()):Y.default.createElement("div",{className:j("uii:space-y-3",n)},Y.default.createElement("div",{className:"uii:space-y-2"},Y.default.createElement("div",{className:"uii:text-sm uii:font-semibold uii:text-gray-700"},"AST Tree:"),Y.default.createElement("div",{className:"uii:p-3 uii:border uii:rounded-md uii:bg-gray-50 uii:max-h-64 uii:overflow-auto"},f(t))),o&&p()):Y.default.createElement("div",{className:j("uii:text-gray-500 uii:text-sm uii:italic",n)},"No AST available")}var Z=k(require("clsx"),1);var ee=require("@fortawesome/react-fontawesome"),et=require("@fortawesome/pro-regular-svg-icons");function ei(e){var t=e.label,i=e.value,r=e.type,a=e.valuesLoading,o=a===void 0?!1:a,l=e.key,d=e.onValueChange,f=e.onDependenciesChange,g=e.metadata,x=e.children,y=e.fieldName,b=e.expressionContext,E=b===void 0?{}:b,h=e.availableNodes,S=e.myInterface,w=e.contextTypeDefinitions,N=e.inlineEditor,k=N===void 0?!0:N,C=e.className,T=e.editorClassName,F=e.expressionPlaceholder,M=F===void 0?"Enter expression...":F,O=e.evaluateExpression,D=e.expressionResult,L=e.isEvaluating,I=L===void 0?!1:L,V=e.isExpressionValid,R=V===void 0?!0:V,W=e.expectedType,A=W===void 0?"any":W;var q=p((0,P.useState)(function(){return c(s({},g||{expression:"",mode:"value",isEditing:!1,isFullScreen:!1,value:void 0}),{isEditing:!1,isFullScreen:!1,mode:"value"})}),2),B=q[0],U=q[1],z=p((0,P.useState)(i&&(typeof i==="undefined"?"undefined":m(i))=="object"&&"expression"in i&&"type"in i&&i.type==="expression"?i.value:i),2),H=z[0],G=z[1],Y=p((0,P.useState)(i&&(typeof i==="undefined"?"undefined":m(i))=="object"&&"expression"in i&&"type"in i&&i.type==="expression"?i.value:i),2),ei=Y[0],en=Y[1],er=(0,P.useCallback)(function(e){switch(r){case"float":return typeof e=="string"&&!isNaN(parseFloat(e))?parseFloat(e):e;case"integer":case"number":return typeof e=="string"&&!isNaN(parseInt(e))?parseInt(e):e;case"string[]":return typeof e=="string"?e.split(","):e;case"string":default:return e}},[r]),eu=p((0,P.useState)(),2),ea=eu[0],eo=eu[1],es=_.getState().getState(y).expression;(0,P.useEffect)(function(){g&&U(c(s({},g),{isEditing:!1,isFullScreen:!1}))},[g]);var el=(0,P.useMemo)(function(){return i&&(typeof i==="undefined"?"undefined":m(i))=="object"&&"expression"in i&&"type"in i&&i.type==="expression"},[i]),ec=(0,P.useRef)(!0);(0,P.useEffect)(function(){if(i&&(typeof i==="undefined"?"undefined":m(i))=="object"&&"expression"in i&&"type"in i&&i.type==="expression"){var e=i.value,t=i.expression;e!==void 0&&(en(er(e)),G(er(e))),t&&ed.expression!==t&&(ed.setExpression(t),ec.current&&!ed.isEditing&&ed.switchToExpression());var n=!g||g.expression!==t||g.mode==="value"||g.isEditing===!0||g.isFullScreen===!0;if(ec.current&&n){var r={expression:t||"",value:er(e),mode:"expression",isEditing:!1,isFullScreen:!1};setTimeout(function(){d(i,c(s({},r),{value:er(i)}))},0)}}else if(!o&&(en(er(i)),G(er(i)),ec.current&&((g===null||g===void 0?void 0:g.expression)||(g===null||g===void 0?void 0:g.mode)==="expression"))){var u={expression:"",value:er(i),mode:"value",isEditing:!1,isFullScreen:!1};setTimeout(function(){d(er(i),c(s({},u),{value:er(i)}))},0)}ec.current&&setTimeout(function(){ec.current=!1},100)},[i,o]);var ed=K(y),ef=J(ed.expression,y),ep=ef.ast,em=ef.tokens,eg=ef.dependencies,ev=ef.isLoading,ex=ef.error,ey=(0,P.useMemo)(function(){return!ep||eg.length===0?[]:eg.map(function(e){return{name:e,exists:E?e in E:!1,value:E?E[e]:void 0}})},[eg,E,ep]),eb=p((0,P.useState)(null),2),eE=eb[0],eh=eb[1],eS=(0,P.useCallback)(function(e){eh(e)},[]),ew=(0,P.useMemo)(function(){return ed.expression.includes("\n")||ed.expression.includes("\r")},[ed.expression]),eN=(0,P.useMemo)(function(){return eE||"unknown"},[eE]),ek=(0,P.useMemo)(function(){if(!eN||eN==="unknown"||eN==="any"||eN==="error")return!1;var e=eN.toLowerCase().trim(),t=(r||A||"any").toLowerCase().trim();return!(t==="array"&&e.endsWith("[]")||e===t||t==="any"||t==="string"&&(e.startsWith('"')||e.startsWith("'"))||t==="number"&&/^-?\d+(\.\d+)?([eE][+-]?\d+)?$/.test(e)||t==="integer"&&/^-?\d+(\.\d+)?([eE][+-]?\d+)?$/.test(e)||t==="integer"&&e==="number"||t==="float"&&/^-?\d+(\.\d+)?([eE][+-]?\d+)?$/.test(e)||t==="float"&&e==="number"||t==="boolean"&&(e==="true"||e==="false"))},[eN,r,A]),eC=p((0,P.useState)(null),2),eT=eC[0],eF=eC[1],eM=p((0,P.useState)(!1),2),eO=eM[0],eD=eM[1],ej=p((0,P.useState)(!1),2),eL=ej[0],eP=ej[1],eI=p((0,P.useState)(!0),2),eV=eI[0],eR=eI[1],e_=p((0,P.useState)({syntax:!0,expression:!0,context:!0,type:!0,security:!0}),2),eK=e_[0],eW=e_[1],eA=(0,P.useMemo)(function(){return!ed.expression||!ed.expression.trim()?!1:!!(!eV||!R||ex||!eK.syntax||!eK.expression||(D===null||D===void 0?void 0:D.error)||(eT===null||eT===void 0?void 0:eT.error))},[ed.expression,eV,R,ex,eK,D,eT]),eq=(0,P.useRef)(!1),eB=(0,P.useRef)(!1),eU=(0,P.useRef)(!1),ez=(0,P.useCallback)(function(e,t){eR(e),eW(function(t){return c(s({},t),{syntax:e})})},[]),eH=(0,P.useCallback)(function(e){var t=e.includes("\n"),i=e.length>80;ed.isFullScreen||ed.setFullScreen(t||i)},[ed.isFullScreen]),e$=(0,P.useCallback)(function(e,t){return n(function(){var i,n;return v(this,function(r){switch(r.label){case 0:if(!!(!O||!e.trim()))return[3,5];eD(!0);r.label=1;case 1:r.trys.push([1,3,4,5]);return[4,O(e,t)];case 2:i=r.sent();eF(i);return[3,5];case 3:n=r.sent();eF({value:null,ast:{kind:0,text:"",color:"#ff0000"},error:u(n,Error)?n.message:"Unknown error",isValid:!1,validation:{syntax:!1,expression:!1,context:!1,type:!1,security:!1}});return[3,5];case 4:eD(!1);return[7];case 5:return[2]}})})()},[O]),eQ=(0,P.useMemo)(function(){return{expression:ed.expression,value:ei,mode:ed.current,isEditing:ed.isEditing,isFullScreen:ed.isFullScreen}},[ed.expression,ed.current,ed.isFullScreen,ed.isEditing,ei]),eG=(0,P.useMemo)(function(){return{expression:ed.expression,type:"expression"}},[ed.currentValue||ed.expression]),eJ=(0,P.useCallback)(function(e){d(er(e),c(s({},eQ),{value:er(e)}))},[d,ed,el,ei]),eY=(0,P.useCallback)(function(e){eq.current=!1,ed.setExpression(e),eo(e),eH(e),d({expression:e,type:"expression"},c(s({},eQ),{expression:e}))},[ed,E,d,O,e$,eH]),eX=(0,P.useCallback)(function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return n(function(){return v(this,function(e){if(eq.current){eq.current=!1;return[2]}if(eB.current){eB.current=!1;return[2]}ed.isFullScreen&&!t||ew&&!t||(eU.current=!0,ed.setEditing(!1),ed.setFullScreen(!1));return[2]})})()},[ed,D,eT,E,d,ei,I,eO,eG,ew]);(0,P.useEffect)(function(){d(ei,c(s({},eQ),{isFullScreen:ed.isFullScreen}))},[ed.isFullScreen]),(0,P.useEffect)(function(){ed.isEditing&&ew&&!ed.isFullScreen&&ed.setFullScreen(!0)},[ew,ed.isEditing,ed.isFullScreen]);var eZ=(0,P.useCallback)(function(e){switch(e){case"value":ed.switchToValue(),ed.setFullScreen(!1),d(H||i,void 0);break;case"editor":ed.switchToEditor();var t=ew;t&&ed.setFullScreen(!0);var n={expression:ed.expression,value:ei,mode:"expression",isEditing:!0,isFullScreen:t};d(ed.expression?{expression:ed.expression,type:"expression"}:ei,n);break;case"expression":G(ei),ed.switchToExpression(),ew&&ed.setFullScreen(!0);break}},[ed,ei,d,ew,H,i]);(0,P.useEffect)(function(){var e,t;eU.current&&(ed.expression&&ed.expression.trim()?d(eQ.mode==="value"?(e=eQ.value)!==null&&e!==void 0?e:"":{expression:eQ.expression.trim(),type:"expression"},c(s({},eQ),{isEditing:!1,isFullScreen:!1})):(ed.switchToValue(),d((t=eQ.value)!==null&&t!==void 0?t:"",c(s({},eQ),{mode:"value",expression:"",isEditing:!1,isFullScreen:!1}))),eU.current=!1)},[ed.isEditing,ed.isFullScreen,eU.current]),(0,P.useEffect)(function(){f&&f(eg)},[eg,f]);var e0=(0,P.useCallback)(function(){eq.current=!0,d(ei,eQ),eZ("value"),ed.setFullScreen(!1)},[d,ed,H]),e1=p((0,P.useState)(ei),2),e2=e1[0],e5=e1[1];(0,P.useEffect)(function(){e5(ei)},[ei]);var e3=(0,P.useMemo)(function(){return{value:ei,onChange:eJ,onExpressionClick:function(){return eZ("editor")},inferredType:eN,hasTypeMismatch:ek,hasError:eA,localInput:e2,setLocalInput:e5,expressionMode:{current:ed.current,switchToValue:function(){return eZ("value")},switchToExpression:function(){return eZ("expression")},switchToEditor:function(){return eZ("editor")},clear:e0,isExpressionMode:ed.isExpressionMode,isEditorMode:ed.isEditorMode,expression:ed.expression,setExpression:eY,isEditing:ed.isEditing,setEditing:ed.setEditing,isFullScreen:ed.isFullScreen,setFullScreen:ed.setFullScreen}}},[ei,eJ,ed,eZ,e0,eY,eN,ek,eA]),e6=function(){switch(ed.current){case"expression":var e;var t=ed.expression&&ed.expression.trim(),i=(e=D||eT)===null||e===void 0?void 0:e.isValid,n=R&&eV;return e3.expressionMode.isEditing?P.default.createElement("div",{key:"".concat(l,"-expression"),className:j("relative",C)},k&&!ed.isFullScreen&&!ew?P.default.createElement("div",{className:j("uii:flex uii:h-9 uii:w-full \n uii:min-w-0 uii:rounded-sm \n uii:border uii:border-ring \n uii:bg-background uii:px-3 uii:py-1 uii:text-base uii:shadow-xs \n uii:ring-ring/50 uii:ring-[3px] uii:transition-[color,box-shadow] \n uii:outline-none uii:md:text-sm uii:cursor-pointer\n uii:mt-0.5 ",T)},P.default.createElement($,{value:ed.expression,onChange:function(e){eY(e)},onEnter:function(){eB.current=!0,ed.setFullScreen(!0),setTimeout(function(){eB.current=!1},100)},onBlur:eX,onTypeInferred:eS,onValidationChange:ez,context:E,placeholder:M}),P.default.createElement("div",{className:"uii:flex uii:items-center uii:gap-2 uii:mt-0.5"},P.default.createElement("span",{className:"uii:text-xs uii:font-mono uii:cursor-pointer uii:text-muted-foreground",onMouseDown:function(e){e.preventDefault(),e.stopPropagation(),eB.current=!0,ed.setFullScreen(!0),setTimeout(function(){eB.current=!1},100)}},P.default.createElement(ee.FontAwesomeIcon,{icon:et.faExpand})),P.default.createElement("span",{className:"uii:text-xs uii:font-mono uii:cursor-pointer uii:text-muted-foreground",onMouseDown:function(e){e.preventDefault(),e0()}},"Clear"))):P.default.createElement("div",{className:"uii:space-y-4"},P.default.createElement(Q,{value:ed.expression,onChange:function(e){eY(e)},onClose:function(){eX(void 0,!0),ed.setFullScreen(!1)},onBlur:eX,onTypeInferred:eS,context:E,placeholder:M}),(ep||eg.length>0)&&P.default.createElement("div",{className:"uii:space-y-3"},eN&&eN!=="unknown"&&P.default.createElement("div",{className:"uii:space-y-2"},P.default.createElement("div",{className:"uii:flex uii:items-center uii:gap-2"},P.default.createElement("div",{className:"uii:text-sm uii:font-semibold uii:text-gray-700"},"Inferred Return Type:"),eE&&eN!=="error"&&P.default.createElement("span",{className:"uii:px-1.5 uii:py-0.5 uii:text-xs uii:rounded uii:bg-blue-100 uii:text-blue-700 uii:border uii:border-blue-200"},"TypeScript")),P.default.createElement("div",{className:"uii:flex uii:items-center uii:gap-2"},eN==="error"?P.default.createElement("span",{className:"uii:px-3 uii:py-1.5 uii:text-sm uii:font-mono uii:rounded uii:border uii:bg-red-50 uii:text-red-800 uii:border-red-200"},"❌ Syntax Error"):P.default.createElement(P.default.Fragment,null,P.default.createElement("span",{className:"uii:px-3 uii:py-1.5 uii:text-sm uii:font-mono uii:rounded uii:border uii:bg-purple-50 uii:text-purple-800 uii:border-purple-200"},eN),ek&&P.default.createElement("span",{className:"uii:text-xs uii:text-orange-600 uii:font-semibold"},"⚠️ Expected: ",r||A)))),ey.length>0&&P.default.createElement("div",{className:"uii:space-y-2"},P.default.createElement("div",{className:"uii:text-sm uii:font-semibold uii:text-gray-700"},"Dependencies (",ey.length,"):"),P.default.createElement("div",{className:"uii:flex uii:flex-wrap uii:gap-2"},ey.map(function(e,t){return P.default.createElement("span",{key:t,className:j("uii:px-2 uii:py-1 uii:text-sm uii:rounded uii:border",e.exists?"uii:bg-blue-100 uii:text-blue-800 uii:border-blue-200":"uii:bg-red-100 uii:text-red-800 uii:border-red-200"),title:e.exists?"Value: ".concat(JSON.stringify(e.value)):"Not found in context"},e.name)}))),ep&&P.default.createElement(X,{ast:ep,tokens:em,variant:"tree",showTokens:!0,className:"uii:w-full"}),ev&&P.default.createElement("div",{className:"uii:text-sm uii:text-gray-500 uii:italic"},"Parsing expression..."),ex&&P.default.createElement("div",{className:"uii:text-sm uii:text-red-600"},"Parse Error: ",ex)))):P.default.createElement("div",{className:j("uii:relative",C),key:"".concat(l,"-expression-display")},P.default.createElement("div",{className:(0,Z.default)("uii:flex uii:h-9 uii:w-full uii:min-w-0 uii:rounded-sm uii:border uii:border-input uii:bg-transparent uii:px-3 uii:py-1 uii:text-base uii:shadow-xs uii:transition-[color,box-shadow] uii:outline-none uii:focus-visible:border-ring uii:focus-visible:ring-ring/50 uii:focus-visible:ring-[3px] uii:md:text-sm uii:cursor-pointer uii:hover:bg-muted/50","uii:mt-0.5 uii:bg-white uii:rounded-md uii:items-center"),onClick:function(){return eZ("editor")},onMouseEnter:function(){return eP(!0)},onMouseLeave:function(){return eP(!1)}},P.default.createElement("span",{className:"uii:flex-1 uii:truncate uii:text-foreground uii:items-center"},eL?P.default.createElement("div",{className:"uii:flex uii:items-center uii:gap-2"},ep?P.default.createElement(X,{key:"".concat(l,"-ast"),ast:ep,tokens:em,variant:"inline",showTokens:!1,className:"uii:text-xs"}):P.default.createElement("div",{className:"uii:text-xs uii:text-gray-500"},ev?"Parsing...":ex?"Error: ".concat(ex):"No AST available"),eg.length>0&&P.default.createElement("div",{className:"uii:flex uii:gap-1"},eg.map(function(e,t){return P.default.createElement("span",{key:t,className:"uii:px-1 uii:py-0.5 uii:bg-blue-100 uii:text-blue-800 uii:text-xs uii:rounded"},e)}))):P.default.createElement("span",{className:"uii:font-mono uii:text-sm"},es||"No expression"))));default:return x(e3)}};return P.default.createElement(P.default.Fragment,null,P.default.createElement("div",{className:"uii:flex uii:items-center uii:gap-2 uii:mt-2"},P.default.createElement("label",{className:"uii:text-xs uii:text-muted-foreground uii:font-bold",htmlFor:l},t,":"),P.default.createElement("span",{className:"uii:-mt-2 uii:inline-flex uii:px-1 uii:py-0.5 uii:bg-gray-200 uii:rounded-sm uii:text-[10px] uii:font-mono uii:text-muted-foreground uii:font-light"},r),ek||eN==="error"?P.default.createElement(P.default.Fragment,null,ed.current==="expression"?P.default.createElement(P.default.Fragment,null,P.default.createElement("span",{className:"uii:-mt-2 uii:inline-flex uii:px-1 uii:py-0.5 uii:bg-gray-200 uii:rounded-sm uii:text-[10px] uii:font-mono uii:text-muted-foreground uii:font-light"},ed.expression.trim()!==""?eN:"empty"),P.default.createElement("span",{className:"uii:-mt-2 uii:inline-flex uii:px-1 uii:py-0.5 uii:bg-gray-200 uii:rounded-sm uii:text-[10px] uii:font-mono uii:font-light uii:text-orange-600 "},"⚠️ Expected: ",r||A)):P.default.createElement(P.default.Fragment,null)):P.default.createElement(P.default.Fragment,null)),e6())}var en=require("react");function er(e){var t=e.className,i=e.expectedType,n=d(e,["className","expectedType"]);var r=p((0,en.useState)(n.value),2),u=r[0],a=r[1],o=p((0,en.useState)({}),2),s=o[0],l=o[1];var c;return F.createElement(ei,{label:(c=n.label)!==null&&c!==void 0?c:"Test Entry",key:n.name,type:i!==null&&i!==void 0?i:"string",valuesLoading:!1,value:n.value,onValueChange:function(e,t){a(e),t&&l(t)},expectedType:i,fieldName:n.name,children:function(e){var t=e.onExpressionClick,i=e.onChange,r=e.value,u=e.localInput,a=e.setLocalInput;var o;return F.createElement("div",{className:"uii:relative uii:text-xs uii:mt-0.5"},F.createElement(L,{type:"text",value:u,onChange:function(e){a(e.target.value),i(e.target.value)},placeholder:(o=n.placeholder)!==null&&o!==void 0?o:"Enter value..."}),F.createElement("div",{className:"uii:flex uii:bg-white uii:border-white/40 uii:border-l-8 uii:items-center uii:gap-1 uii:absolute uii:right-1.5 uii:top-2.5 uii:cursor-pointer uii:truncate",onClick:function(){return t()}},F.createElement("span",{className:"uii:border-l uii:border-gray-200 uii:px-2"},"Custom Expression")))}})}0&&(module.exports={Input:Input});
@@ -0,0 +1,47 @@
1
+ import * as React from 'react';
2
+
3
+ interface ExpressionContext {
4
+ [key: string]: any;
5
+ }
6
+ interface ExpressionAST {
7
+ kind: number;
8
+ color?: string;
9
+ left?: ExpressionAST;
10
+ right?: ExpressionAST;
11
+ name?: ExpressionAST;
12
+ argumentExpression?: ExpressionAST;
13
+ arguments?: ExpressionAST[];
14
+ expression?: ExpressionAST;
15
+ escapedText?: string;
16
+ text?: string;
17
+ operator?: string;
18
+ type?: string;
19
+ }
20
+
21
+ interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {
22
+ }
23
+ interface ExpressionResult {
24
+ value: any;
25
+ ast: ExpressionAST;
26
+ error?: string;
27
+ isValid: boolean;
28
+ validation: {
29
+ syntax: boolean;
30
+ expression: boolean;
31
+ context: boolean;
32
+ type?: boolean;
33
+ security?: boolean;
34
+ };
35
+ }
36
+ declare function Input({ className, expectedType, ...props }: React.ComponentProps<'input'> & {
37
+ error?: boolean;
38
+ label?: string;
39
+ rapperClassName?: string;
40
+ expressionContext?: ExpressionContext;
41
+ expressionResult?: ExpressionResult;
42
+ isEvaluating?: boolean;
43
+ isExpressionValid?: boolean;
44
+ expectedType?: string;
45
+ }): React.JSX.Element;
46
+
47
+ export { type ExpressionResult, Input, type InputProps };
@@ -0,0 +1,47 @@
1
+ import * as React from 'react';
2
+
3
+ interface ExpressionContext {
4
+ [key: string]: any;
5
+ }
6
+ interface ExpressionAST {
7
+ kind: number;
8
+ color?: string;
9
+ left?: ExpressionAST;
10
+ right?: ExpressionAST;
11
+ name?: ExpressionAST;
12
+ argumentExpression?: ExpressionAST;
13
+ arguments?: ExpressionAST[];
14
+ expression?: ExpressionAST;
15
+ escapedText?: string;
16
+ text?: string;
17
+ operator?: string;
18
+ type?: string;
19
+ }
20
+
21
+ interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {
22
+ }
23
+ interface ExpressionResult {
24
+ value: any;
25
+ ast: ExpressionAST;
26
+ error?: string;
27
+ isValid: boolean;
28
+ validation: {
29
+ syntax: boolean;
30
+ expression: boolean;
31
+ context: boolean;
32
+ type?: boolean;
33
+ security?: boolean;
34
+ };
35
+ }
36
+ declare function Input({ className, expectedType, ...props }: React.ComponentProps<'input'> & {
37
+ error?: boolean;
38
+ label?: string;
39
+ rapperClassName?: string;
40
+ expressionContext?: ExpressionContext;
41
+ expressionResult?: ExpressionResult;
42
+ isEvaluating?: boolean;
43
+ isExpressionValid?: boolean;
44
+ expectedType?: string;
45
+ }): React.JSX.Element;
46
+
47
+ export { type ExpressionResult, Input, type InputProps };