\n\n {/* Platform selection for cURL */}\n {selectedTab === \"cURL\" && (\n
\n )}\n\n {/* Code content */}\n {currentTab &&\n (() => {\n // Work directly with structured data - no parsing needed\n const codeData = currentTab.code;\n const hasSteps =\n typeof codeData === \"object\" &&\n codeData !== null &&\n \"steps\" in codeData;\n\n if (hasSteps) {\n const steps = (\n codeData as { steps: { title: string; code: string }[] }\n ).steps;\n return (\n
\n
\n {/* Main language tabs */}\n
\n {tabsList.map((tab) => (\n \n ))}\n
\n\n {/* Platform selection for cURL */}\n {/* complex expression */} onValueChange={setSelectedPlatform}>\n
\n {/* complex expression */}\n value={tab.name}\n >\n \n {tab.title}\n \n ))}\n \n \n
\n )}\n\n {/* Code content */}\n {/* complex expression */}[] }\n ).steps;\n return (\n
\n {steps.map((step, index) => (\n
\n
{step.title}
\n
\n \n 0}\n wrapLongLines={true}\n language={currentTab.language}\n style={dark ? oneDark : oneLight}\n className={/* complex expression */} w-full overflow-scroll !rounded-b-md border border-border text-left !custom-scroll`}\n >\n {step.code}\n \n
\n
\n ))}\n
",
+ "imports": [
+ {
+ "source": "react",
+ "items": [
+ "useEffect",
+ "useState"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "react-syntax-highlighter",
+ "items": [
+ "Prism as SyntaxHighlighter"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "react-syntax-highlighter/dist/cjs/styles/prism",
+ "items": [
+ "oneDark",
+ "oneLight",
+ ""
+ ],
+ "type": "named"
+ },
+ {
+ "source": "zustand/react/shallow",
+ "items": [
+ "useShallow"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "@/components/common/genericIconComponent",
+ "items": [
+ "IconComponent"
+ ],
+ "type": "default"
+ },
+ {
+ "source": "@/components/ui/button",
+ "items": [
+ "Button"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "@/components/ui/tabs-button",
+ "items": [
+ "Tabs",
+ "TabsList",
+ "TabsTrigger"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "@/hooks/use-is-auto-login",
+ "items": [
+ "useIsAutoLogin"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "@/stores/authStore",
+ "items": [
+ "useAuthStore"
+ ],
+ "type": "default"
+ },
+ {
+ "source": "@/stores/flowStore",
+ "items": [
+ "useFlowStore"
+ ],
+ "type": "default"
+ },
+ {
+ "source": "@/stores/tweaksStore",
+ "items": [
+ "useTweaksStore"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "@/utils/reactflowUtils",
+ "items": [
+ "hasStreaming"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "@/utils/utils",
+ "items": [
+ "getOS"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "../../../stores/darkStore",
+ "items": [
+ "useDarkStore"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "../utils/filter-tweaks",
+ "items": [
+ "formatPayloadTweaks"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "../utils/get-curl-code",
+ "items": [
+ "getNewCurlCode"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "../utils/get-js-api-code",
+ "items": [
+ "getNewJsApiCode"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "../utils/get-python-api-code",
+ "items": [
+ "getNewPythonApiCode"
+ ],
+ "type": "named"
+ }
+ ],
+ "props_definition": null,
+ "ui_components_used": [
+ "Button",
+ "IconComponent",
+ "SyntaxHighlighter",
+ "Tabs",
+ "TabsList",
+ "TabsTrigger"
+ ],
+ "tailwind_classes_used": [
+ "!h-5",
+ "!hover:bg-foreground",
+ "!w-5",
+ "-",
+ "1",
+ "===",
+ "?",
+ "absolute",
+ "api-modal-tabs",
+ "api-modal-tabs-content",
+ "border-b",
+ "border-border",
+ "flex",
+ "flex-col",
+ "flex-row",
+ "font-medium",
+ "gap-2",
+ "gap-4",
+ "group",
+ "h-4",
+ "h-5",
+ "h-full",
+ "index",
+ "inset-0",
+ "items-center",
+ "justify-start",
+ "m-0",
+ "mb-2",
+ "overflow-auto",
+ "overflow-hidden",
+ "right-4",
+ "select-none",
+ "steps.length",
+ "text-muted-foreground",
+ "text-sm",
+ "top-2",
+ "w-4",
+ "w-5",
+ "z-10"
+ ],
+ "state_props_referenced": [
+ "index",
+ "selectedPlatform",
+ "setSelectedPlatform",
+ "true"
+ ],
+ "file_size_lines": 311,
+ "jsx_size_chars": 4659
+ }
+ },
+ {
+ "id": "ni0048",
+ "type": "interface",
+ "name": "DeleteConfirmationModal",
+ "path": "src/frontend/src/modals/deleteConfirmationModal/index.tsx",
+ "category": "modal",
+ "description": "interface node: DeleteConfirmationModal (Modal component)",
+ "impact_analysis_status": "intact",
+ "impact_analysis": "No changes required for RBAC MVP",
+ "uidl_conceptual": {
+ "name": "DeleteConfirmationModal",
+ "propDefinitions": {
+ "children": {
+ "type": "node",
+ "defaultValue": null
+ },
+ "onConfirm": {
+ "type": "func",
+ "defaultValue": null
+ },
+ "description": {
+ "type": "string",
+ "defaultValue": "flow"
+ },
+ "asChild": {
+ "type": "boolean",
+ "defaultValue": false
+ },
+ "open": {
+ "type": "boolean",
+ "defaultValue": null
+ },
+ "setOpen": {
+ "type": "func",
+ "defaultValue": null
+ },
+ "note": {
+ "type": "string",
+ "defaultValue": ""
+ }
+ },
+ "stateDefinitions": {},
+ "node": {
+ "type": "element",
+ "content": {
+ "elementType": "Dialog",
+ "semanticType": "modal",
+ "name": "DeleteConfirmationModal",
+ "dependency": {
+ "type": "package",
+ "path": "@radix-ui/react-dialog"
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "DialogTrigger",
+ "semanticType": "trigger",
+ "attrs": {
+ "asChild": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "expr",
+ "id": "children !== undefined"
+ }
+ }
+ },
+ "children": [
+ {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "prop",
+ "id": "children"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "DialogContent",
+ "semanticType": "modalContent",
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "DialogHeader",
+ "semanticType": "modalHeader",
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "DialogTitle",
+ "semanticType": "heading",
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "div",
+ "semanticType": "container",
+ "attrs": {
+ "className": {
+ "type": "static",
+ "content": "flex"
+ }
+ },
+ "style": {
+ "display": "flex"
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "IconComponent",
+ "semanticType": "icon",
+ "attrs": {
+ "name": {
+ "type": "static",
+ "content": "Trash2"
+ }
+ }
+ }
+ },
+ {
+ "type": "static",
+ "content": "Delete"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "span",
+ "semanticType": "text",
+ "children": [
+ {
+ "type": "static",
+ "content": "Are you sure you want to delete this "
+ },
+ {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "prop",
+ "id": "description"
+ }
+ },
+ {
+ "type": "static",
+ "content": "?"
+ },
+ {
+ "type": "conditional",
+ "content": {
+ "reference": {
+ "type": "expr",
+ "content": "note && note.length > 0"
+ },
+ "node": {
+ "type": "static",
+ "content": " "
+ }
+ }
+ },
+ {
+ "type": "conditional",
+ "content": {
+ "reference": {
+ "type": "expr",
+ "content": "note && note.length > 0"
+ },
+ "node": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "prop",
+ "id": "note"
+ }
+ }
+ }
+ }
+ ]
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "DialogFooter",
+ "semanticType": "modalFooter",
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "DialogClose",
+ "semanticType": "action",
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "Button",
+ "semanticType": "action",
+ "attrs": {
+ "variant": {
+ "type": "static",
+ "content": "outline"
+ }
+ },
+ "children": [
+ {
+ "type": "static",
+ "content": "Cancel"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "DialogClose",
+ "semanticType": "action",
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "Button",
+ "semanticType": "action",
+ "attrs": {
+ "variant": {
+ "type": "static",
+ "content": "destructive"
+ },
+ "onClick": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "prop",
+ "id": "onConfirm"
+ }
+ }
+ },
+ "children": [
+ {
+ "type": "static",
+ "content": "Delete"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ },
+ "ui_blueprint": {
+ "component_name": "DeleteConfirmationModal",
+ "file_path": "frontend/src/modals/deleteConfirmationModal/index.tsx",
+ "jsx_structure": {
+ "elements": [
+ {
+ "type": "Dialog",
+ "attributes": {
+ "onOpenChange": "setOpen"
+ },
+ "category": "component"
+ },
+ {
+ "type": "DialogTrigger",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "DialogContent",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "DialogHeader",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "DialogTitle",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "div",
+ "attributes": {
+ "className": "flex items-center"
+ },
+ "category": "html"
+ },
+ {
+ "type": "Trash2",
+ "attributes": {
+ "className": "h-6 w-6 pr-1 text-foreground"
+ },
+ "category": "component"
+ },
+ {
+ "type": "span",
+ "attributes": {
+ "className": "pl-2"
+ },
+ "category": "html"
+ },
+ {
+ "type": "span",
+ "attributes": {
+ "className": "pb-3 text-sm"
+ },
+ "category": "html"
+ },
+ {
+ "type": "br",
+ "attributes": {},
+ "category": "html"
+ },
+ {
+ "type": "DialogFooter",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "DialogClose",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "Button",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "DialogClose",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "Button",
+ "attributes": {
+ "type": "submit"
+ },
+ "category": "component"
+ }
+ ],
+ "components": [
+ "DialogHeader",
+ "DialogTitle",
+ "DialogFooter",
+ "Dialog",
+ "DialogClose",
+ "Trash2",
+ "Button",
+ "DialogTrigger",
+ "DialogContent"
+ ],
+ "ui_patterns": [
+ {
+ "type": "flex",
+ "description": "Flexbox layout"
+ },
+ {
+ "type": "modal",
+ "description": "Modal/Dialog component"
+ },
+ {
+ "type": "tabs",
+ "description": "Tabbed interface"
+ }
+ ]
+ },
+ "ui_components": {
+ "shadcn": [
+ "Button",
+ "Dialog",
+ "DialogContent",
+ "DialogHeader",
+ "DialogTitle",
+ "DialogTrigger"
+ ],
+ "custom": [
+ "HTMLButtonElement",
+ "Trash2",
+ "DialogFooter",
+ "DialogClose"
+ ],
+ "html": [
+ "div",
+ "span"
+ ]
+ },
+ "styling": {
+ "tailwind_classes": [
+ "pr-1",
+ "pb-3",
+ "flex",
+ "text-sm",
+ "text-foreground",
+ "w-6",
+ "h-6",
+ "pl-2",
+ "items-center",
+ "mr-1"
+ ],
+ "layout_patterns": [
+ "flexbox"
+ ],
+ "spacing_patterns": [],
+ "color_scheme": [
+ "color-theming"
+ ]
+ },
+ "interactive_elements": {
+ "buttons": [
+ {
+ "attributes": {},
+ "type": "button"
+ },
+ {
+ "attributes": {
+ "type": "submit"
+ },
+ "type": "button"
+ }
+ ],
+ "inputs": [],
+ "forms": [],
+ "links": []
+ },
+ "data_display_patterns": [],
+ "primary_layout": "modal"
+ },
+ "ui_physical": {
+ "component_name": "DeleteConfirmationModal",
+ "file_path": "frontend/src/modals/deleteConfirmationModal/index.tsx",
+ "component_type": "modal",
+ "summary": "Modal dialog for deleteconfirmation",
+ "jsx_return_statement": "
",
+ "jsx_simplified": "
",
+ "imports": [
+ {
+ "source": "@radix-ui/react-dialog",
+ "items": [
+ "DialogClose"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "lucide-react",
+ "items": [
+ "Trash2"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "../../components/ui/button",
+ "items": [
+ "Button"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "../../components/ui/dialog",
+ "items": [
+ "Dialog",
+ "DialogContent",
+ "DialogFooter",
+ "DialogHeader",
+ "DialogTitle",
+ "DialogTrigger",
+ ""
+ ],
+ "type": "named"
+ }
+ ],
+ "props_definition": null,
+ "ui_components_used": [
+ "Button",
+ "Dialog",
+ "DialogClose",
+ "DialogContent",
+ "DialogFooter",
+ "DialogHeader",
+ "DialogTitle",
+ "DialogTrigger",
+ "Trash2"
+ ],
+ "tailwind_classes_used": [
+ "flex",
+ "h-6",
+ "items-center",
+ "mr-1",
+ "pb-3",
+ "pl-2",
+ "pr-1",
+ "text-foreground",
+ "text-sm",
+ "w-6"
+ ],
+ "state_props_referenced": [
+ "open",
+ "setOpen"
+ ],
+ "file_size_lines": 78,
+ "jsx_size_chars": 1461
+ }
+ },
+ {
+ "id": "ni0049",
+ "type": "interface",
+ "name": "SecretKeyModal",
+ "path": "src/frontend/src/modals/secretKeyModal/index.tsx",
+ "category": "modal",
+ "description": "interface node: SecretKeyModal (Modal component)",
+ "impact_analysis_status": "intact",
+ "impact_analysis": "No changes required for RBAC MVP",
+ "uidl_conceptual": {
+ "name": "SecretKeyModal",
+ "propDefinitions": {
+ "children": {
+ "type": "node",
+ "defaultValue": null
+ },
+ "data": {
+ "type": "object",
+ "defaultValue": {}
+ },
+ "onCloseModal": {
+ "type": "func",
+ "defaultValue": null
+ },
+ "modalProps": {
+ "type": "object",
+ "defaultValue": {}
+ }
+ },
+ "stateDefinitions": {
+ "open": {
+ "type": "boolean",
+ "defaultValue": false
+ },
+ "apiKeyName": {
+ "type": "string",
+ "defaultValue": ""
+ },
+ "apiKeyValue": {
+ "type": "string",
+ "defaultValue": ""
+ },
+ "renderKey": {
+ "type": "boolean",
+ "defaultValue": false
+ },
+ "textCopied": {
+ "type": "boolean",
+ "defaultValue": true
+ }
+ },
+ "node": {
+ "type": "element",
+ "content": {
+ "elementType": "BaseModal",
+ "semanticType": "modal",
+ "name": "SecretKeyModal",
+ "dependency": {
+ "type": "local",
+ "path": "../baseModal"
+ },
+ "attrs": {
+ "onSubmit": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "local",
+ "id": "handleSubmitForm"
+ }
+ },
+ "size": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "expr",
+ "id": "modalProps?.size ?? 'small-h-full'"
+ }
+ },
+ "open": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "state",
+ "id": "open"
+ }
+ },
+ "setOpen": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "state",
+ "id": "setOpen"
+ }
+ }
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "BaseModal.Trigger",
+ "semanticType": "trigger",
+ "attrs": {
+ "asChild": {
+ "type": "static",
+ "content": true
+ }
+ },
+ "children": [
+ {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "prop",
+ "id": "children"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "BaseModal.Header",
+ "semanticType": "modalHeader",
+ "attrs": {
+ "clampDescription": {
+ "type": "static",
+ "content": 3
+ },
+ "description": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "expr",
+ "id": "renderKey ? generatedKeyMessage : description"
+ }
+ }
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "HeaderRender",
+ "semanticType": "component",
+ "attrs": {
+ "title": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "expr",
+ "id": "modalConfigProps?.title"
+ }
+ },
+ "showIcon": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "expr",
+ "id": "modalConfigProps?.showIcon"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "BaseModal.Content",
+ "semanticType": "modalContent",
+ "children": [
+ {
+ "type": "conditional",
+ "content": {
+ "reference": {
+ "type": "expr",
+ "content": "renderKey"
+ },
+ "node": {
+ "type": "element",
+ "content": {
+ "elementType": "ContentRenderKey",
+ "semanticType": "component",
+ "attrs": {
+ "inputLabel": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "prop",
+ "id": "modalProps.inputLabel"
+ }
+ },
+ "inputRef": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "local",
+ "id": "inputRef"
+ }
+ },
+ "apiKeyValue": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "state",
+ "id": "apiKeyValue"
+ }
+ },
+ "handleCopyClick": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "local",
+ "id": "handleCopyClick"
+ }
+ },
+ "textCopied": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "state",
+ "id": "textCopied"
+ }
+ },
+ "renderKey": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "state",
+ "id": "renderKey"
+ }
+ }
+ }
+ }
+ },
+ "value": {
+ "type": "conditional",
+ "content": {
+ "reference": {
+ "type": "expr",
+ "content": "ENABLE_DATASTAX_LANGBUILDER"
+ },
+ "node": {
+ "type": "element",
+ "content": {
+ "elementType": "fragment",
+ "semanticType": "container"
+ }
+ },
+ "value": {
+ "type": "element",
+ "content": {
+ "elementType": "FormKeyRender",
+ "semanticType": "component",
+ "attrs": {
+ "modalProps": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "prop",
+ "id": "modalProps"
+ }
+ },
+ "apiKeyName": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "state",
+ "id": "apiKeyName"
+ }
+ },
+ "inputRef": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "local",
+ "id": "inputRef"
+ }
+ },
+ "setApiKeyName": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "state",
+ "id": "setApiKeyName"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "BaseModal.Footer",
+ "semanticType": "modalFooter",
+ "attrs": {
+ "submit": {
+ "type": "static",
+ "content": {
+ "label": "renderKey ? 'Done' : buttonText"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ },
+ "ui_blueprint": {
+ "component_name": "SecretKeyModal",
+ "file_path": "frontend/src/modals/secretKeyModal/index.tsx",
+ "jsx_structure": {
+ "elements": [
+ {
+ "type": "BaseModal",
+ "attributes": {
+ "onSubmit": "handleSubmitForm"
+ },
+ "category": "component"
+ },
+ {
+ "type": "BaseModal",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "BaseModal",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "HeaderRender",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "BaseModal",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "ContentRenderKey",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "FormKeyRender",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "BaseModal",
+ "attributes": {},
+ "category": "component"
+ }
+ ],
+ "components": [
+ "FormKeyRender",
+ "BaseModal",
+ "HeaderRender",
+ "ContentRenderKey"
+ ],
+ "ui_patterns": [
+ {
+ "type": "form",
+ "description": "Form with inputs and submit handling"
+ },
+ {
+ "type": "modal",
+ "description": "Modal/Dialog component"
+ }
+ ]
+ },
+ "ui_components": {
+ "shadcn": [],
+ "custom": [
+ "HTMLInputElement",
+ "BaseModal",
+ "HeaderRender",
+ "ContentRenderKey",
+ "FormKeyRender"
+ ],
+ "html": []
+ },
+ "styling": {
+ "tailwind_classes": [],
+ "layout_patterns": [],
+ "spacing_patterns": [],
+ "color_scheme": []
+ },
+ "interactive_elements": {
+ "buttons": [],
+ "inputs": [],
+ "forms": [],
+ "links": []
+ },
+ "data_display_patterns": [],
+ "primary_layout": "modal"
+ },
+ "ui_physical": {
+ "component_name": "SecretKeyModal",
+ "file_path": "frontend/src/modals/secretKeyModal/index.tsx",
+ "component_type": "modal",
+ "summary": "Add this interface for the modal props",
+ "jsx_return_statement": "
\n {children}\n {modalConfigProps?.generatedKeyMessage}>\n ) : (\n <>{modalConfigProps?.description}>\n )\n }\n >\n \n \n \n {renderKey ? (\n \n ) : ENABLE_DATASTAX_LANGBUILDER ? (\n <>>\n ) : (\n \n )}\n \n \n ",
+ "jsx_simplified": "
\n {children}\n {modalConfigProps?.generatedKeyMessage}>\n ) : (\n <>{modalConfigProps?.description}>\n )\n }\n >\n \n \n \n {/* complex expression */}\n inputRef={inputRef}\n apiKeyValue={apiKeyValue}\n handleCopyClick={handleCopyClick}\n textCopied={textCopied}\n renderKey={renderKey}\n />\n ) : ENABLE_DATASTAX_LANGBUILDER ? (\n <>>\n ) : (\n \n )}\n \n \n ",
+ "imports": [
+ {
+ "source": "react",
+ "items": [
+ "useEffect",
+ "useRef",
+ "useState"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "@/customization/feature-flags",
+ "items": [
+ "ENABLE_DATASTAX_LANGBUILDER"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "@/customization/hooks/use-custom-generate-token",
+ "items": [
+ "useGenerateToken"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "../../constants/alerts_constants",
+ "items": [
+ "COPIED_NOTICE_ALERT"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "../../controllers/API",
+ "items": [
+ "createApiKey"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "../../stores/alertStore",
+ "items": [
+ "useAlertStore"
+ ],
+ "type": "default"
+ },
+ {
+ "source": "../baseModal",
+ "items": [
+ "BaseModal"
+ ],
+ "type": "default"
+ },
+ {
+ "source": "./components/content-render",
+ "items": [
+ "ContentRenderKey"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "./components/form-key-render",
+ "items": [
+ "FormKeyRender"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "./components/header-render",
+ "items": [
+ "HeaderRender"
+ ],
+ "type": "named"
+ }
+ ],
+ "props_definition": {
+ "name": "ModalConfigProps",
+ "definition": "title?: string;\n description?: React.ReactNode;\n inputLabel?: React.ReactNode;\n inputPlaceholder?: string;\n buttonText?: string;\n generatedKeyMessage?: React.ReactNode;\n showIcon?: boolean;",
+ "type": "interface"
+ },
+ "ui_components_used": [
+ "BaseModal",
+ "ContentRenderKey",
+ "FormKeyRender",
+ "HeaderRender"
+ ],
+ "tailwind_classes_used": [],
+ "state_props_referenced": [
+ "apiKeyName",
+ "apiKeyValue",
+ "children",
+ "handleCopyClick",
+ "handleSubmitForm",
+ "inputRef",
+ "modalConfigProps",
+ "open",
+ "renderKey",
+ "setApiKeyName",
+ "setOpen",
+ "textCopied"
+ ],
+ "file_size_lines": 163,
+ "jsx_size_chars": 1405
+ }
+ },
+ {
+ "id": "ni0050",
+ "type": "interface",
+ "name": "CodeAreaModal",
+ "path": "src/frontend/src/modals/codeAreaModal/index.tsx",
+ "category": "modal",
+ "description": "interface node: CodeAreaModal (Modal component)",
+ "impact_analysis_status": "intact",
+ "impact_analysis": "No changes required for RBAC MVP",
+ "uidl_conceptual": {
+ "name": "CodeAreaModal",
+ "propDefinitions": {
+ "value": {
+ "type": "string",
+ "defaultValue": ""
+ },
+ "setValue": {
+ "type": "func",
+ "defaultValue": null
+ },
+ "nodeClass": {
+ "type": "object",
+ "defaultValue": {}
+ },
+ "setNodeClass": {
+ "type": "func",
+ "defaultValue": null
+ },
+ "children": {
+ "type": "node",
+ "defaultValue": null
+ },
+ "dynamic": {
+ "type": "boolean",
+ "defaultValue": false
+ },
+ "readonly": {
+ "type": "boolean",
+ "defaultValue": false
+ },
+ "open": {
+ "type": "boolean",
+ "defaultValue": null
+ },
+ "setOpen": {
+ "type": "func",
+ "defaultValue": null
+ },
+ "componentId": {
+ "type": "string",
+ "defaultValue": ""
+ }
+ },
+ "stateDefinitions": {
+ "code": {
+ "type": "string",
+ "defaultValue": ""
+ },
+ "open": {
+ "type": "boolean",
+ "defaultValue": false
+ },
+ "height": {
+ "type": "string",
+ "defaultValue": null
+ },
+ "openConfirmation": {
+ "type": "boolean",
+ "defaultValue": false
+ },
+ "error": {
+ "type": "object",
+ "defaultValue": null
+ }
+ },
+ "node": {
+ "type": "element",
+ "content": {
+ "elementType": "BaseModal",
+ "semanticType": "modal",
+ "name": "CodeAreaModal",
+ "dependency": {
+ "type": "local",
+ "path": "../baseModal"
+ },
+ "attrs": {
+ "size": {
+ "type": "static",
+ "content": "x-large"
+ },
+ "open": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "state",
+ "id": "open"
+ }
+ },
+ "setOpen": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "state",
+ "id": "setOpen"
+ }
+ }
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "BaseModal.Trigger",
+ "semanticType": "trigger",
+ "children": [
+ {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "prop",
+ "id": "children"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "BaseModal.Header",
+ "semanticType": "modalHeader",
+ "attrs": {
+ "description": {
+ "type": "static",
+ "content": "CODE_PROMPT_DIALOG_SUBTITLE"
+ }
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "span",
+ "semanticType": "text",
+ "children": [
+ {
+ "type": "static",
+ "content": "Edit Code"
+ }
+ ]
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "IconComponent",
+ "semanticType": "icon",
+ "attrs": {
+ "name": {
+ "type": "static",
+ "content": "prompts"
+ }
+ }
+ }
+ }
+ ]
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "BaseModal.Content",
+ "semanticType": "modalContent",
+ "attrs": {
+ "overflowHidden": {
+ "type": "static",
+ "content": true
+ }
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "Input",
+ "semanticType": "formField",
+ "attrs": {
+ "type": {
+ "type": "static",
+ "content": "hidden"
+ },
+ "readOnly": {
+ "type": "static",
+ "content": true
+ },
+ "value": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "state",
+ "id": "code"
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "div",
+ "semanticType": "container",
+ "attrs": {
+ "className": {
+ "type": "static",
+ "content": "flex flex-col"
+ }
+ },
+ "style": {
+ "display": "flex",
+ "flexDirection": "column"
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "AceEditor",
+ "semanticType": "codeEditor",
+ "dependency": {
+ "type": "package",
+ "path": "react-ace"
+ },
+ "attrs": {
+ "mode": {
+ "type": "static",
+ "content": "python"
+ },
+ "theme": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "expr",
+ "id": "dark ? 'twilight' : 'github'"
+ }
+ },
+ "value": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "state",
+ "id": "code"
+ }
+ },
+ "onChange": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "expr",
+ "id": "(value) => setCode(value)"
+ }
+ },
+ "fontSize": {
+ "type": "static",
+ "content": 14
+ },
+ "showGutter": {
+ "type": "static",
+ "content": true
+ },
+ "highlightActiveLine": {
+ "type": "static",
+ "content": true
+ },
+ "readOnly": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "prop",
+ "id": "readonly"
+ }
+ },
+ "setOptions": {
+ "type": "static",
+ "content": {
+ "enableBasicAutocompletion": true,
+ "enableLiveAutocompletion": true,
+ "enableSnippets": false,
+ "showLineNumbers": true,
+ "tabSize": 4
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "conditional",
+ "content": {
+ "reference": {
+ "type": "expr",
+ "content": "error"
+ },
+ "node": {
+ "type": "element",
+ "content": {
+ "elementType": "div",
+ "semanticType": "container",
+ "attrs": {
+ "style": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "expr",
+ "id": "{height}"
+ }
+ }
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "h1",
+ "semanticType": "heading",
+ "children": [
+ {
+ "type": "static",
+ "content": "Error"
+ }
+ ]
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "div",
+ "semanticType": "text",
+ "children": [
+ {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "expr",
+ "id": "error.detail"
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "div",
+ "semanticType": "container",
+ "attrs": {
+ "className": {
+ "type": "static",
+ "content": "flex justify-end"
+ }
+ },
+ "style": {
+ "display": "flex",
+ "justifyContent": "flex-end"
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "Button",
+ "semanticType": "action",
+ "attrs": {
+ "onClick": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "local",
+ "id": "handleCheckAndSave"
+ }
+ }
+ },
+ "children": [
+ {
+ "type": "static",
+ "content": "Check & Save"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ },
+ "ui_blueprint": {
+ "component_name": "CodeAreaModal",
+ "file_path": "frontend/src/modals/codeAreaModal/index.tsx",
+ "jsx_structure": {
+ "elements": [
+ {
+ "type": "BaseModal",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "BaseModal",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "BaseModal",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "span",
+ "attributes": {
+ "className": "pr-2"
+ },
+ "category": "html"
+ },
+ {
+ "type": "IconComponent",
+ "attributes": {
+ "className": "h-6 w-6 pl-1 text-primary"
+ },
+ "category": "component"
+ },
+ {
+ "type": "BaseModal",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "Input",
+ "attributes": {
+ "className": "absolute left-[500%] top-[500%]",
+ "value": "code"
+ },
+ "category": "component"
+ },
+ {
+ "type": "div",
+ "attributes": {
+ "className": "flex h-full w-full flex-col transition-all"
+ },
+ "category": "html"
+ },
+ {
+ "type": "div",
+ "attributes": {
+ "className": "h-full w-full"
+ },
+ "category": "html"
+ },
+ {
+ "type": "AceEditor",
+ "attributes": {
+ "value": "code"
+ },
+ "category": "component"
+ },
+ {
+ "type": "div",
+ "attributes": {
+ "className": ""
+ },
+ "category": "html"
+ },
+ {
+ "type": "div",
+ "attributes": {
+ "className": "mt-5 h-full max-h-[10rem] w-full overflow-y-auto overflow-x-clip text-left custom-scroll"
+ },
+ "category": "html"
+ },
+ {
+ "type": "h",
+ "attributes": {
+ "className": "text-lg text-error"
+ },
+ "category": "html"
+ },
+ {
+ "type": "div",
+ "attributes": {
+ "className": "ml-2 mt-2 w-full text-sm text-destructive word-break-break-word"
+ },
+ "category": "html"
+ },
+ {
+ "type": "span",
+ "attributes": {
+ "className": "w-full word-break-break-word"
+ },
+ "category": "html"
+ },
+ {
+ "type": "div",
+ "attributes": {
+ "className": "flex h-fit w-full justify-end"
+ },
+ "category": "html"
+ },
+ {
+ "type": "Button",
+ "attributes": {
+ "className": "mt-3",
+ "onClick": "processCode",
+ "type": "submit",
+ "disabled": true
+ },
+ "category": "component"
+ },
+ {
+ "type": "ConfirmationModal",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "ConfirmationModal",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "p",
+ "attributes": {},
+ "category": "html"
+ }
+ ],
+ "components": [
+ "Input",
+ "AceEditor",
+ "BaseModal",
+ "IconComponent",
+ "ConfirmationModal",
+ "Button"
+ ],
+ "ui_patterns": [
+ {
+ "type": "flex",
+ "description": "Flexbox layout"
+ },
+ {
+ "type": "modal",
+ "description": "Modal/Dialog component"
+ },
+ {
+ "type": "card",
+ "description": "Card-based layout"
+ }
+ ]
+ },
+ "ui_components": {
+ "shadcn": [
+ "Button",
+ "Input"
+ ],
+ "custom": [
+ "ReactAce",
+ "BaseModal",
+ "IconComponent",
+ "AceEditor",
+ "ConfirmationModal"
+ ],
+ "html": [
+ "div",
+ "span",
+ "p",
+ "h1"
+ ]
+ },
+ "styling": {
+ "tailwind_classes": [
+ "rounded-lg",
+ "absolute",
+ "border-gray-300",
+ "word-break-break-word",
+ "h-fit",
+ "w-full",
+ "flex-col",
+ "text-error",
+ "mt-3",
+ "ml-2",
+ "transition-all",
+ "custom-scroll",
+ "max-h-[10rem]",
+ "mt-2",
+ "border-[1px]",
+ "text-lg",
+ "w-6",
+ "h-6",
+ "min-w-full",
+ "mt-5",
+ "left-[500%]",
+ "text-primary",
+ "flex",
+ "dark:border-gray-600",
+ "h-full",
+ "overflow-y-auto",
+ "text-sm",
+ "text-destructive",
+ "top-[500%]",
+ "pr-2",
+ "text-left",
+ "justify-end",
+ "pl-1",
+ "overflow-x-clip"
+ ],
+ "layout_patterns": [
+ "flexbox"
+ ],
+ "spacing_patterns": [
+ "consistent-spacing"
+ ],
+ "color_scheme": [
+ "dark-mode-support",
+ "color-theming"
+ ]
+ },
+ "interactive_elements": {
+ "buttons": [
+ {
+ "attributes": {
+ "className": "mt-3",
+ "onClick": "processCode",
+ "type": "submit",
+ "disabled": true
+ },
+ "type": "button"
+ }
+ ],
+ "inputs": [
+ {
+ "attributes": {
+ "className": "absolute left-[500%] top-[500%]",
+ "value": "code"
+ },
+ "type": "text"
+ }
+ ],
+ "forms": [],
+ "links": []
+ },
+ "data_display_patterns": [],
+ "primary_layout": "flexbox"
+ },
+ "ui_physical": {
+ "component_name": "CodeAreaModal",
+ "file_path": "frontend/src/modals/codeAreaModal/index.tsx",
+ "component_type": "modal",
+ "summary": "if nodeClass.template has more fields other than code and dynamic is true",
+ "jsx_return_statement": ") => {\n clearTimeout(delayedFunction);\n };\n }, [error, setHeight]);\n\n useEffect(() => {\n if (!openConfirmation) {\n codeRef.current?.editor.focus();\n }\n }, [openConfirmation]);\n\n useEffect(() => {\n setCode(value);\n }, [value, open]);\n\n return (\n
{\n e.preventDefault();\n if (code === value) {\n setOpen(false);\n } else {\n if (\n !(\n codeRef.current?.editor.completer &&\n \"popup\" in codeRef.current?.editor.completer &&\n codeRef.current?.editor.completer.popup &&\n codeRef.current?.editor.completer.popup.isOpen\n )\n ) {\n setOpenConfirmation(true);\n }\n }\n }}\n open={open}\n setOpen={setOpen}\n size=\"x-large\"\n >\n {children}\n \n {EDIT_CODE_TITLE} \n \n \n \n \n \n
\n
{\n setCode(value);\n }}\n className=\"h-full min-w-full rounded-lg border-[1px] border-gray-300 custom-scroll dark:border-gray-600\"\n />\n \n
\n
\n
\n {error?.detail?.error}\n
\n
\n \n {error?.detail?.traceback}\n \n
\n
\n
\n
\n \n
\n
\n {\n setOpenConfirmation(false);\n }}\n onEscapeKeyDown={(e) => {\n e.stopPropagation();\n setOpenConfirmation(false);\n }}\n size=\"x-small\"\n icon=\"AlertTriangle\"\n confirmationText=\"Check & Save\"\n cancelText=\"Discard Changes\"\n open={openConfirmation}\n onCancel={() => setOpen(false)}\n onConfirm={() => {\n processCode();\n setOpenConfirmation(false);\n }}\n title=\"Caution\"\n >\n \n Are you sure you want to exit without saving your changes?
\n \n \n \n ",
+ "jsx_simplified": ") => {\n clearTimeout(delayedFunction);\n };\n }, [error, setHeight]);\n\n useEffect(() => {\n if (!openConfirmation) {\n codeRef.current?.editor.focus();\n }\n }, [openConfirmation]);\n\n useEffect(() => {\n setCode(value);\n }, [value, open]);\n\n return (\n
\n {children}\n \n {EDIT_CODE_TITLE} \n \n \n \n \n \n
\n
\n
\n
\n {error?.detail?.error}\n
\n
\n \n {error?.detail?.traceback}\n \n
\n
\n
\n
\n \n
\n
\n setOpen(false)}\n onConfirm={handleClick}\n title=\"Caution\"\n >\n \n Are you sure you want to exit without saving your changes?
\n \n \n \n ",
+ "imports": [
+ {
+ "source": "@/controllers/API/queries/nodes/use-post-validate-code",
+ "items": [
+ "usePostValidateCode"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "@/controllers/API/queries/nodes/use-post-validate-component-code",
+ "items": [
+ "usePostValidateComponentCode"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "@/utils/reactflowUtils",
+ "items": [
+ "clearHandlesFromAdvancedFields"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "react",
+ "items": [
+ "useEffect",
+ "useRef",
+ "useState"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "react-ace",
+ "items": [
+ "AceEditor"
+ ],
+ "type": "default"
+ },
+ {
+ "source": "../../components/common/genericIconComponent",
+ "items": [
+ "IconComponent"
+ ],
+ "type": "default"
+ },
+ {
+ "source": "../../components/ui/button",
+ "items": [
+ "Button"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "../../components/ui/input",
+ "items": [
+ "Input"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "../../constants/alerts_constants",
+ "items": [
+ "BUG_ALERT",
+ "CODE_ERROR_ALERT",
+ "CODE_SUCCESS_ALERT",
+ "FUNC_ERROR_ALERT",
+ "IMPORT_ERROR_ALERT",
+ ""
+ ],
+ "type": "named"
+ },
+ {
+ "source": "../../constants/constants",
+ "items": [
+ "CODE_PROMPT_DIALOG_SUBTITLE",
+ "EDIT_CODE_TITLE",
+ ""
+ ],
+ "type": "named"
+ },
+ {
+ "source": "../../stores/alertStore",
+ "items": [
+ "useAlertStore"
+ ],
+ "type": "default"
+ },
+ {
+ "source": "../../stores/darkStore",
+ "items": [
+ "useDarkStore"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "../baseModal",
+ "items": [
+ "BaseModal"
+ ],
+ "type": "default"
+ },
+ {
+ "source": "../confirmationModal",
+ "items": [
+ "ConfirmationModal"
+ ],
+ "type": "default"
+ }
+ ],
+ "props_definition": null,
+ "ui_components_used": [
+ "AceEditor",
+ "BaseModal",
+ "Button",
+ "ConfirmationModal",
+ "IconComponent",
+ "Input"
+ ],
+ "tailwind_classes_used": [
+ "absolute",
+ "border-[1px]",
+ "border-gray-300",
+ "custom-scroll",
+ "dark:border-gray-600",
+ "flex",
+ "flex-col",
+ "h-6",
+ "h-fit",
+ "h-full",
+ "justify-end",
+ "left-[500%]",
+ "max-h-[10rem]",
+ "min-w-full",
+ "ml-2",
+ "mt-2",
+ "mt-3",
+ "mt-5",
+ "overflow-x-clip",
+ "overflow-y-auto",
+ "pl-1",
+ "pr-2",
+ "rounded-lg",
+ "text-destructive",
+ "text-error",
+ "text-left",
+ "text-lg",
+ "text-primary",
+ "text-sm",
+ "top-[500%]",
+ "transition-all",
+ "w-6",
+ "w-full",
+ "word-break-break-word"
+ ],
+ "state_props_referenced": [
+ "CODE_PROMPT_DIALOG_SUBTITLE",
+ "EDIT_CODE_TITLE",
+ "children",
+ "code",
+ "codeRef",
+ "false",
+ "open",
+ "openConfirmation",
+ "processCode",
+ "readonly",
+ "setOpen",
+ "true"
+ ],
+ "file_size_lines": 292,
+ "jsx_size_chars": 4217
+ }
+ },
+ {
+ "id": "ni0051",
+ "type": "interface",
+ "name": "FileManagerModal",
+ "path": "src/frontend/src/modals/fileManagerModal/index.tsx",
+ "category": "modal",
+ "description": "interface node: FileManagerModal (Modal component)",
+ "impact_analysis_status": "intact",
+ "impact_analysis": "No changes required for RBAC MVP",
+ "uidl_conceptual": {
+ "name": "FileManagerModal",
+ "propDefinitions": {
+ "children": {
+ "type": "node",
+ "defaultValue": null
+ },
+ "selectedFiles": {
+ "type": "array",
+ "defaultValue": []
+ },
+ "open": {
+ "type": "boolean",
+ "defaultValue": null
+ },
+ "handleSubmit": {
+ "type": "func",
+ "defaultValue": null
+ },
+ "setOpen": {
+ "type": "func",
+ "defaultValue": null
+ },
+ "disabled": {
+ "type": "boolean",
+ "defaultValue": false
+ },
+ "files": {
+ "type": "array",
+ "defaultValue": []
+ },
+ "types": {
+ "type": "array",
+ "defaultValue": []
+ },
+ "isList": {
+ "type": "boolean",
+ "defaultValue": false
+ }
+ },
+ "stateDefinitions": {
+ "internalOpen": {
+ "type": "boolean",
+ "defaultValue": false
+ },
+ "internalSelectedFiles": {
+ "type": "array",
+ "defaultValue": []
+ }
+ },
+ "node": {
+ "type": "element",
+ "content": {
+ "elementType": "BaseModal",
+ "semanticType": "modal",
+ "name": "FileManagerModal",
+ "dependency": {
+ "type": "local",
+ "path": "../baseModal"
+ },
+ "attrs": {
+ "size": {
+ "type": "static",
+ "content": "smaller-h-full"
+ },
+ "open": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "expr",
+ "id": "!disabled && internalOpen"
+ }
+ },
+ "setOpen": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "state",
+ "id": "internalSetOpen"
+ }
+ },
+ "onSubmit": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "local",
+ "id": "handleFormSubmit"
+ }
+ }
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "BaseModal.Trigger",
+ "semanticType": "trigger",
+ "attrs": {
+ "asChild": {
+ "type": "static",
+ "content": true
+ }
+ },
+ "children": [
+ {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "expr",
+ "id": "children ? children : <>>"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "BaseModal.Header",
+ "semanticType": "modalHeader",
+ "attrs": {
+ "description": {
+ "type": "static",
+ "content": null
+ }
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "span",
+ "semanticType": "text",
+ "attrs": {
+ "className": {
+ "type": "static",
+ "content": "flex items-center gap-2"
+ }
+ },
+ "style": {
+ "display": "flex",
+ "alignItems": "center",
+ "gap": "0.5rem"
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "div",
+ "semanticType": "container",
+ "attrs": {
+ "className": {
+ "type": "static",
+ "content": "rounded-md bg-muted p-1.5"
+ }
+ },
+ "style": {
+ "borderRadius": "0.375rem",
+ "padding": "0.375rem"
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "ForwardedIconComponent",
+ "semanticType": "icon",
+ "attrs": {
+ "name": {
+ "type": "static",
+ "content": "File"
+ },
+ "className": {
+ "type": "static",
+ "content": "h-5 w-5"
+ }
+ },
+ "style": {
+ "width": "1.25rem",
+ "height": "1.25rem"
+ }
+ }
+ }
+ ]
+ }
+ },
+ {
+ "type": "static",
+ "content": "My Files"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "BaseModal.Content",
+ "semanticType": "modalContent",
+ "attrs": {
+ "overflowHidden": {
+ "type": "static",
+ "content": true
+ }
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "div",
+ "semanticType": "container",
+ "attrs": {
+ "className": {
+ "type": "static",
+ "content": "flex flex-col gap-4 overflow-hidden"
+ }
+ },
+ "style": {
+ "display": "flex",
+ "flexDirection": "column",
+ "gap": "1rem",
+ "overflow": "hidden"
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "div",
+ "semanticType": "container",
+ "attrs": {
+ "className": {
+ "type": "static",
+ "content": "flex shrink-0 flex-col"
+ }
+ },
+ "style": {
+ "display": "flex",
+ "flexShrink": "0",
+ "flexDirection": "column"
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "DragFilesComponent",
+ "semanticType": "component",
+ "dependency": {
+ "type": "local",
+ "path": "./components/DragFilesComponent"
+ },
+ "attrs": {
+ "onUpload": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "local",
+ "id": "handleUpload"
+ }
+ },
+ "types": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "prop",
+ "id": "types"
+ }
+ },
+ "isList": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "expr",
+ "id": "isList ?? false"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "div",
+ "semanticType": "container",
+ "attrs": {
+ "className": {
+ "type": "static",
+ "content": "flex flex-1 flex-col overflow-hidden"
+ }
+ },
+ "style": {
+ "display": "flex",
+ "flex": "1",
+ "flexDirection": "column",
+ "overflow": "hidden"
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "RecentFilesComponent",
+ "semanticType": "component",
+ "dependency": {
+ "type": "local",
+ "path": "./components/RecentFilesComponent"
+ },
+ "attrs": {
+ "files": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "prop",
+ "id": "files"
+ }
+ },
+ "selectedFiles": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "state",
+ "id": "internalSelectedFiles"
+ }
+ },
+ "setSelectedFiles": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "state",
+ "id": "setInternalSelectedFiles"
+ }
+ },
+ "types": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "prop",
+ "id": "types"
+ }
+ },
+ "isList": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "expr",
+ "id": "isList ?? false"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "BaseModal.Footer",
+ "semanticType": "modalFooter",
+ "attrs": {
+ "submit": {
+ "type": "static",
+ "content": {
+ "label": "Select files",
+ "dataTestId": "select-files-modal-button"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ },
+ "ui_blueprint": {
+ "component_name": "FileManagerModal",
+ "file_path": "frontend/src/modals/fileManagerModal/index.tsx",
+ "jsx_structure": {
+ "elements": [
+ {
+ "type": "BaseModal",
+ "attributes": {
+ "disabled": true
+ },
+ "category": "component"
+ },
+ {
+ "type": "BaseModal",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "BaseModal",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "span",
+ "attributes": {
+ "className": "flex items-center gap-2 font-medium"
+ },
+ "category": "html"
+ },
+ {
+ "type": "div",
+ "attributes": {
+ "className": "rounded-md bg-muted p-1.5"
+ },
+ "category": "html"
+ },
+ {
+ "type": "ForwardedIconComponent",
+ "attributes": {
+ "className": "h-5 w-5"
+ },
+ "category": "component"
+ },
+ {
+ "type": "BaseModal",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "div",
+ "attributes": {
+ "className": "flex flex-col gap-4 overflow-hidden"
+ },
+ "category": "html"
+ },
+ {
+ "type": "div",
+ "attributes": {
+ "className": "flex shrink-0 flex-col"
+ },
+ "category": "html"
+ },
+ {
+ "type": "DragFilesComponent",
+ "attributes": {
+ "onUpload": "handleUpload"
+ },
+ "category": "component"
+ },
+ {
+ "type": "div",
+ "attributes": {
+ "className": "flex flex-1 flex-col overflow-hidden"
+ },
+ "category": "html"
+ },
+ {
+ "type": "RecentFilesComponent",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "BaseModal",
+ "attributes": {},
+ "category": "component"
+ }
+ ],
+ "components": [
+ "DragFilesComponent",
+ "RecentFilesComponent",
+ "BaseModal",
+ "ForwardedIconComponent"
+ ],
+ "ui_patterns": [
+ {
+ "type": "form",
+ "description": "Form with inputs and submit handling"
+ },
+ {
+ "type": "flex",
+ "description": "Flexbox layout"
+ },
+ {
+ "type": "modal",
+ "description": "Modal/Dialog component"
+ }
+ ]
+ },
+ "ui_components": {
+ "shadcn": [],
+ "custom": [
+ "BaseModal",
+ "ForwardedIconComponent",
+ "DragFilesComponent",
+ "RecentFilesComponent"
+ ],
+ "html": [
+ "div",
+ "span"
+ ]
+ },
+ "styling": {
+ "tailwind_classes": [
+ "flex-col",
+ "font-medium",
+ "flex",
+ "gap-2",
+ "p-1.5",
+ "rounded-md",
+ "shrink-0",
+ "overflow-hidden",
+ "bg-muted",
+ "flex-1",
+ "h-5",
+ "w-5",
+ "gap-4",
+ "items-center"
+ ],
+ "layout_patterns": [
+ "flexbox"
+ ],
+ "spacing_patterns": [
+ "consistent-spacing"
+ ],
+ "color_scheme": [
+ "color-theming"
+ ]
+ },
+ "interactive_elements": {
+ "buttons": [],
+ "inputs": [],
+ "forms": [],
+ "links": []
+ },
+ "data_display_patterns": [],
+ "primary_layout": "flexbox"
+ },
+ "ui_physical": {
+ "component_name": "FileManagerModal",
+ "file_path": "frontend/src/modals/fileManagerModal/index.tsx",
+ "component_type": "modal",
+ "summary": "Modal dialog for filemanager",
+ "jsx_return_statement": "<>\n
{\n if (internalSelectedFiles.length === 0) {\n setErrorData({\n title: \"Please select at least one file\",\n });\n return;\n }\n handleSubmit(internalSelectedFiles);\n internalSetOpen(false);\n }}\n >\n \n {children ? children : <>>}\n \n \n \n \n \n
\n My Files\n \n \n \n \n \n\n \n \n >",
+ "jsx_simplified": "<>\n
\n \n {children ? children : <>>}\n \n \n \n \n \n
\n My Files\n \n \n \n \n \n\n \n \n >",
+ "imports": [
+ {
+ "source": "@tanstack/react-query",
+ "items": [
+ "useQueryClient"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "react",
+ "items": [
+ "type ReactNode",
+ "useEffect",
+ "useState"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "@/stores/alertStore",
+ "items": [
+ "useAlertStore"
+ ],
+ "type": "default"
+ },
+ {
+ "source": "../../components/common/genericIconComponent",
+ "items": [
+ "ForwardedIconComponent"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "../baseModal",
+ "items": [
+ "BaseModal"
+ ],
+ "type": "default"
+ },
+ {
+ "source": "./components/dragFilesComponent",
+ "items": [
+ "DragFilesComponent"
+ ],
+ "type": "default"
+ },
+ {
+ "source": "./components/recentFilesComponent",
+ "items": [
+ "RecentFilesComponent"
+ ],
+ "type": "default"
+ }
+ ],
+ "props_definition": null,
+ "ui_components_used": [
+ "BaseModal",
+ "DragFilesComponent",
+ "ForwardedIconComponent",
+ "RecentFilesComponent"
+ ],
+ "tailwind_classes_used": [
+ "bg-muted",
+ "flex",
+ "flex-1",
+ "flex-col",
+ "font-medium",
+ "gap-2",
+ "gap-4",
+ "h-5",
+ "items-center",
+ "overflow-hidden",
+ "p-1.5",
+ "rounded-md",
+ "shrink-0",
+ "w-5"
+ ],
+ "state_props_referenced": [
+ "files",
+ "handleUpload",
+ "internalSelectedFiles",
+ "internalSetOpen",
+ "null",
+ "setInternalSelectedFiles",
+ "types"
+ ],
+ "file_size_lines": 113,
+ "jsx_size_chars": 1809
+ }
+ },
+ {
+ "id": "ni0052",
+ "type": "interface",
+ "name": "UserManagementModal",
+ "path": "src/frontend/src/modals/userManagementModal/index.tsx",
+ "category": "modal",
+ "description": "interface node: UserManagementModal (Modal component)",
+ "impact_analysis_status": "intact",
+ "impact_analysis": "No changes required for RBAC MVP",
+ "uidl_conceptual": {
+ "name": "UserManagementModal",
+ "propDefinitions": {
+ "title": {
+ "type": "string",
+ "defaultValue": ""
+ },
+ "titleHeader": {
+ "type": "string",
+ "defaultValue": ""
+ },
+ "cancelText": {
+ "type": "string",
+ "defaultValue": "Cancel"
+ },
+ "confirmationText": {
+ "type": "string",
+ "defaultValue": "Confirm"
+ },
+ "children": {
+ "type": "node",
+ "defaultValue": null
+ },
+ "icon": {
+ "type": "string",
+ "defaultValue": "User"
+ },
+ "data": {
+ "type": "object",
+ "defaultValue": null
+ },
+ "index": {
+ "type": "number",
+ "defaultValue": 0
+ },
+ "onConfirm": {
+ "type": "func",
+ "defaultValue": null
+ },
+ "asChild": {
+ "type": "boolean",
+ "defaultValue": false
+ }
+ },
+ "stateDefinitions": {
+ "pwdVisible": {
+ "type": "boolean",
+ "defaultValue": false
+ },
+ "confirmPwdVisible": {
+ "type": "boolean",
+ "defaultValue": false
+ },
+ "open": {
+ "type": "boolean",
+ "defaultValue": false
+ },
+ "password": {
+ "type": "string",
+ "defaultValue": ""
+ },
+ "username": {
+ "type": "string",
+ "defaultValue": ""
+ },
+ "confirmPassword": {
+ "type": "string",
+ "defaultValue": ""
+ },
+ "isActive": {
+ "type": "boolean",
+ "defaultValue": false
+ },
+ "isSuperUser": {
+ "type": "boolean",
+ "defaultValue": false
+ }
+ },
+ "node": {
+ "type": "element",
+ "content": {
+ "elementType": "BaseModal",
+ "semanticType": "modal",
+ "name": "UserManagementModal",
+ "dependency": {
+ "type": "local",
+ "path": "../baseModal"
+ },
+ "attrs": {
+ "size": {
+ "type": "static",
+ "content": "medium-h-full"
+ },
+ "open": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "state",
+ "id": "open"
+ }
+ },
+ "setOpen": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "state",
+ "id": "setOpen"
+ }
+ }
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "BaseModal.Trigger",
+ "semanticType": "trigger",
+ "attrs": {
+ "asChild": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "prop",
+ "id": "asChild"
+ }
+ }
+ },
+ "children": [
+ {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "prop",
+ "id": "children"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "BaseModal.Header",
+ "semanticType": "modalHeader",
+ "attrs": {
+ "description": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "prop",
+ "id": "titleHeader"
+ }
+ }
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "container",
+ "semanticType": "container",
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "span",
+ "semanticType": "text",
+ "attrs": {
+ "className": {
+ "type": "static",
+ "content": "pr-2"
+ }
+ },
+ "style": {
+ "paddingRight": "0.5rem"
+ },
+ "children": [
+ {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "prop",
+ "id": "title"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "IconComponent",
+ "semanticType": "icon",
+ "attrs": {
+ "name": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "prop",
+ "id": "icon"
+ }
+ },
+ "className": {
+ "type": "static",
+ "content": "h-6 w-6"
+ }
+ },
+ "style": {
+ "width": "1.5rem",
+ "height": "1.5rem"
+ }
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "BaseModal.Content",
+ "semanticType": "modalContent",
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "Form.Root",
+ "semanticType": "form",
+ "dependency": {
+ "type": "package",
+ "path": "@radix-ui/react-form"
+ },
+ "attrs": {
+ "onSubmit": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "local",
+ "id": "handleSubmit"
+ }
+ }
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "div",
+ "semanticType": "container",
+ "attrs": {
+ "className": {
+ "type": "static",
+ "content": "grid gap-5"
+ }
+ },
+ "style": {
+ "display": "grid",
+ "gap": "1.25rem"
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "Form.Field",
+ "semanticType": "formField",
+ "attrs": {
+ "name": {
+ "type": "static",
+ "content": "username"
+ }
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "Form.Label",
+ "semanticType": "text",
+ "children": [
+ {
+ "type": "static",
+ "content": "Username *"
+ }
+ ]
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "Form.Control",
+ "semanticType": "formField",
+ "attrs": {
+ "asChild": {
+ "type": "static",
+ "content": true
+ }
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "input",
+ "semanticType": "formField",
+ "attrs": {
+ "value": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "state",
+ "id": "username"
+ }
+ },
+ "onChange": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "expr",
+ "id": "(e) => setUsername(e.target.value)"
+ }
+ },
+ "required": {
+ "type": "static",
+ "content": true
+ },
+ "placeholder": {
+ "type": "static",
+ "content": "Username"
+ }
+ }
+ }
+ }
+ ]
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "Form.Message",
+ "semanticType": "text",
+ "attrs": {
+ "match": {
+ "type": "static",
+ "content": "valueMissing"
+ }
+ },
+ "children": [
+ {
+ "type": "static",
+ "content": "Please enter your username"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "div",
+ "semanticType": "container",
+ "attrs": {
+ "className": {
+ "type": "static",
+ "content": "flex gap-8"
+ }
+ },
+ "style": {
+ "display": "flex",
+ "gap": "2rem"
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "Form.Field",
+ "semanticType": "formField",
+ "attrs": {
+ "name": {
+ "type": "static",
+ "content": "is_active"
+ }
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "Form.Label",
+ "semanticType": "text",
+ "children": [
+ {
+ "type": "static",
+ "content": "Active"
+ }
+ ]
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "Form.Control",
+ "semanticType": "formField",
+ "attrs": {
+ "asChild": {
+ "type": "static",
+ "content": true
+ }
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "Checkbox",
+ "semanticType": "formField",
+ "attrs": {
+ "checked": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "state",
+ "id": "isActive"
+ }
+ },
+ "onCheckedChange": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "state",
+ "id": "setIsActive"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "div",
+ "semanticType": "container",
+ "attrs": {
+ "className": {
+ "type": "static",
+ "content": "float-right"
+ }
+ },
+ "style": {
+ "float": "right"
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "Button",
+ "semanticType": "action",
+ "attrs": {
+ "variant": {
+ "type": "static",
+ "content": "outline"
+ },
+ "onClick": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "expr",
+ "id": "() => setOpen(false)"
+ }
+ }
+ },
+ "children": [
+ {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "prop",
+ "id": "cancelText"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "Form.Submit",
+ "semanticType": "action",
+ "attrs": {
+ "asChild": {
+ "type": "static",
+ "content": true
+ }
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "Button",
+ "semanticType": "action",
+ "attrs": {
+ "className": {
+ "type": "static",
+ "content": "mt-8"
+ }
+ },
+ "style": {
+ "marginTop": "2rem"
+ },
+ "children": [
+ {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "prop",
+ "id": "confirmationText"
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ },
+ "ui_blueprint": {
+ "component_name": "UserManagementModal",
+ "file_path": "frontend/src/modals/userManagementModal/index.tsx",
+ "jsx_structure": {
+ "elements": [
+ {
+ "type": "BaseModal",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "BaseModal",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "BaseModal",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "span",
+ "attributes": {
+ "className": "pr-2"
+ },
+ "category": "html"
+ },
+ {
+ "type": "IconComponent",
+ "attributes": {
+ "className": "h-6 w-6 pl-1 text-foreground"
+ },
+ "category": "component"
+ },
+ {
+ "type": "BaseModal",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "Form",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "div",
+ "attributes": {
+ "className": "grid gap-5"
+ },
+ "category": "html"
+ },
+ {
+ "type": "Form",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "div",
+ "attributes": {},
+ "category": "html"
+ },
+ {
+ "type": "Form",
+ "attributes": {
+ "className": "data-[invalid]:label-invalid"
+ },
+ "category": "component"
+ },
+ {
+ "type": "span",
+ "attributes": {
+ "className": "font-medium text-destructive"
+ },
+ "category": "html"
+ },
+ {
+ "type": "Form",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "input",
+ "attributes": {
+ "onChange": "({ target: { value"
+ },
+ "category": "html"
+ },
+ {
+ "type": "Form",
+ "attributes": {
+ "className": "field-invalid"
+ },
+ "category": "component"
+ },
+ {
+ "type": "div",
+ "attributes": {
+ "className": "flex flex-row"
+ },
+ "category": "html"
+ },
+ {
+ "type": "div",
+ "attributes": {
+ "className": "mr-3 basis-1/2"
+ },
+ "category": "html"
+ },
+ {
+ "type": "Form",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "div",
+ "attributes": {},
+ "category": "html"
+ },
+ {
+ "type": "Form",
+ "attributes": {
+ "className": "data-[invalid]:label-invalid flex"
+ },
+ "category": "component"
+ },
+ {
+ "type": "span",
+ "attributes": {
+ "className": "ml-1 mr-1 font-medium text-destructive"
+ },
+ "category": "html"
+ },
+ {
+ "type": "Eye",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "EyeOff",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "Form",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "input",
+ "attributes": {
+ "onChange": "({ target: { value"
+ },
+ "category": "html"
+ },
+ {
+ "type": "Form",
+ "attributes": {
+ "className": "field-invalid"
+ },
+ "category": "component"
+ },
+ {
+ "type": "Form",
+ "attributes": {
+ "className": "field-invalid"
+ },
+ "category": "component"
+ },
+ {
+ "type": "div",
+ "attributes": {
+ "className": "basis-1/2"
+ },
+ "category": "html"
+ },
+ {
+ "type": "Form",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "div",
+ "attributes": {},
+ "category": "html"
+ },
+ {
+ "type": "Form",
+ "attributes": {
+ "className": "data-[invalid]:label-invalid flex"
+ },
+ "category": "component"
+ },
+ {
+ "type": "span",
+ "attributes": {
+ "className": "ml-1 mr-1 font-medium text-destructive"
+ },
+ "category": "html"
+ },
+ {
+ "type": "Eye",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "EyeOff",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "Form",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "input",
+ "attributes": {},
+ "category": "html"
+ },
+ {
+ "type": "Form",
+ "attributes": {
+ "className": "field-invalid"
+ },
+ "category": "component"
+ },
+ {
+ "type": "div",
+ "attributes": {
+ "className": "flex gap-8"
+ },
+ "category": "html"
+ },
+ {
+ "type": "Form",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "div",
+ "attributes": {},
+ "category": "html"
+ },
+ {
+ "type": "Form",
+ "attributes": {
+ "className": "data-[invalid]:label-invalid mr-3"
+ },
+ "category": "component"
+ },
+ {
+ "type": "Form",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "Checkbox",
+ "attributes": {
+ "className": "relative top-0.5",
+ "value": "isActive"
+ },
+ "category": "component"
+ },
+ {
+ "type": "Form",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "div",
+ "attributes": {},
+ "category": "html"
+ },
+ {
+ "type": "Form",
+ "attributes": {
+ "className": "data-[invalid]:label-invalid mr-3"
+ },
+ "category": "component"
+ },
+ {
+ "type": "Form",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "Checkbox",
+ "attributes": {
+ "className": "relative top-0.5",
+ "value": "isSuperUser"
+ },
+ "category": "component"
+ },
+ {
+ "type": "div",
+ "attributes": {
+ "className": "float-right"
+ },
+ "category": "html"
+ },
+ {
+ "type": "Button",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "Form",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "Button",
+ "attributes": {
+ "className": "mt-8"
+ },
+ "category": "component"
+ }
+ ],
+ "components": [
+ "Form",
+ "EyeOff",
+ "BaseModal",
+ "Checkbox",
+ "Eye",
+ "IconComponent",
+ "Button"
+ ],
+ "ui_patterns": [
+ {
+ "type": "form",
+ "description": "Form with inputs and submit handling"
+ },
+ {
+ "type": "grid",
+ "description": "Grid layout structure"
+ },
+ {
+ "type": "flex",
+ "description": "Flexbox layout"
+ },
+ {
+ "type": "modal",
+ "description": "Modal/Dialog component"
+ }
+ ]
+ },
+ "ui_components": {
+ "shadcn": [
+ "Button",
+ "Checkbox"
+ ],
+ "custom": [
+ "UserInputType",
+ "BaseModal",
+ "IconComponent",
+ "Form",
+ "Eye",
+ "EyeOff"
+ ],
+ "html": [
+ "div",
+ "span",
+ "input"
+ ]
+ },
+ "styling": {
+ "tailwind_classes": [
+ "field-invalid",
+ "data-[invalid]:label-invalid",
+ "float-right",
+ "top-0.5",
+ "flex-row",
+ "mt-8",
+ "text-foreground",
+ "gap-5",
+ "primary-input",
+ "w-6",
+ "h-6",
+ "mr-1",
+ "cursor-pointer",
+ "font-medium",
+ "flex",
+ "basis-1/2",
+ "relative",
+ "text-destructive",
+ "mr-3",
+ "grid",
+ "pr-2",
+ "h-5",
+ "gap-8",
+ "ml-1",
+ "pl-1"
+ ],
+ "layout_patterns": [
+ "flexbox",
+ "grid"
+ ],
+ "spacing_patterns": [
+ "consistent-spacing"
+ ],
+ "color_scheme": [
+ "color-theming"
+ ]
+ },
+ "interactive_elements": {
+ "buttons": [
+ {
+ "attributes": {},
+ "type": "button"
+ },
+ {
+ "attributes": {
+ "className": "mt-8"
+ },
+ "type": "button"
+ }
+ ],
+ "inputs": [
+ {
+ "attributes": {
+ "onChange": "({ target: { value"
+ },
+ "type": "text"
+ },
+ {
+ "attributes": {
+ "onChange": "({ target: { value"
+ },
+ "type": "text"
+ },
+ {
+ "attributes": {},
+ "type": "text"
+ }
+ ],
+ "forms": [],
+ "links": []
+ },
+ "data_display_patterns": [],
+ "primary_layout": "flexbox"
+ },
+ "ui_physical": {
+ "component_name": "UserManagementModal",
+ "file_path": "frontend/src/modals/userManagementModal/index.tsx",
+ "component_type": "modal",
+ "summary": "Modal dialog for usermanagement",
+ "jsx_return_statement": "
\n {children}\n \n {title}\n \n \n \n {\n if (password !== confirmPassword) {\n event.preventDefault();\n return;\n }\n resetForm();\n onConfirm(1, inputState);\n setOpen(false);\n event.preventDefault();\n }}\n >\n \n
\n \n
\n Username{\" \"}\n *\n \n \n \n {\n handleInput({ target: { name: \"username\", value } });\n setUserName(value);\n }}\n value={username}\n className=\"primary-input\"\n required\n placeholder=\"Username\"\n />\n \n \n Please enter your username\n \n \n\n
\n
\n
\n \n
\n Password{\" \"}\n \n *\n \n {pwdVisible && (\n setPwdVisible(!pwdVisible)}\n className=\"h-5 cursor-pointer\"\n strokeWidth={1.5}\n />\n )}\n {!pwdVisible && (\n setPwdVisible(!pwdVisible)}\n className=\"h-5 cursor-pointer\"\n strokeWidth={1.5}\n />\n )}\n \n \n \n {\n handleInput({ target: { name: \"password\", value } });\n setPassword(value);\n }}\n value={password}\n className=\"primary-input\"\n required={data ? false : true}\n type={pwdVisible ? \"text\" : \"password\"}\n />\n \n\n \n Please enter a password\n \n\n {password != confirmPassword && (\n \n Passwords do not match\n \n )}\n \n
\n\n
\n
\n \n
\n Confirm password{\" \"}\n \n *\n \n {confirmPwdVisible && (\n \n setConfirmPwdVisible(!confirmPwdVisible)\n }\n className=\"h-5 cursor-pointer\"\n strokeWidth={1.5}\n />\n )}\n {!confirmPwdVisible && (\n \n setConfirmPwdVisible(!confirmPwdVisible)\n }\n className=\"h-5 cursor-pointer\"\n strokeWidth={1.5}\n />\n )}\n \n \n \n {\n setConfirmPassword(input.target.value);\n }}\n value={confirmPassword}\n className=\"primary-input\"\n required={data ? false : true}\n type={confirmPwdVisible ? \"text\" : \"password\"}\n />\n \n \n Please confirm your password\n \n \n
\n
\n
\n
\n \n
\n Active\n \n \n {\n handleInput({ target: { name: \"is_active\", value } });\n setIsActive(value);\n }}\n />\n \n \n \n {userData?.is_superuser && (\n
\n \n
\n Superuser\n \n \n {\n handleInput({\n target: { name: \"is_superuser\", value },\n });\n setIsSuperUser(value);\n }}\n />\n \n \n \n )}\n
\n
\n\n \n \n\n
\n \n \n \n \n \n ",
+ "jsx_simplified": "
\n {children}\n \n {title}\n \n \n \n \n \n
\n \n
\n Username{\" \"}\n *\n \n \n \n {\n handleInput({ target: { name: \"username\", value } });\n setUserName(value);\n }}\n value={username}\n className=\"primary-input\"\n required\n placeholder=\"Username\"\n />\n \n \n Please enter your username\n \n \n\n
\n
\n
\n \n
\n Password{\" \"}\n \n *\n \n {/* complex expression */}\n className=\"h-5 cursor-pointer\"\n strokeWidth={1.5}\n />\n )}\n {/* complex expression */}\n className=\"h-5 cursor-pointer\"\n strokeWidth={1.5}\n />\n )}\n \n \n \n {\n handleInput({ target: { name: \"password\", value } });\n setPassword(value);\n }}\n value={password}\n className=\"primary-input\"\n required={data ? false : true}\n type={pwdVisible ? \"text\" : \"password\"}\n />\n \n\n \n Please enter a password\n \n\n {/* complex expression */}\n \n
\n\n
\n
\n \n
\n Confirm password{\" \"}\n \n *\n \n {/* complex expression */}\n className=\"h-5 cursor-pointer\"\n strokeWidth={1.5}\n />\n )}\n {/* complex expression */}\n className=\"h-5 cursor-pointer\"\n strokeWidth={1.5}\n />\n )}\n \n \n \n \n \n \n Please confirm ",
+ "imports": [
+ {
+ "source": "@radix-ui/react-form",
+ "items": [
+ "* as Form"
+ ],
+ "type": "namespace"
+ },
+ {
+ "source": "lucide-react",
+ "items": [
+ "Eye",
+ "EyeOff"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "react",
+ "items": [
+ "useContext",
+ "useEffect",
+ "useState"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "@/components/common/genericIconComponent",
+ "items": [
+ "IconComponent"
+ ],
+ "type": "default"
+ },
+ {
+ "source": "../../components/ui/button",
+ "items": [
+ "Button"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "../../components/ui/checkbox",
+ "items": [
+ "Checkbox"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "../../constants/constants",
+ "items": [
+ "CONTROL_NEW_USER"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "../../contexts/authContext",
+ "items": [
+ "AuthContext"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "../baseModal",
+ "items": [
+ "BaseModal"
+ ],
+ "type": "default"
+ }
+ ],
+ "props_definition": null,
+ "ui_components_used": [
+ "BaseModal",
+ "Button",
+ "Checkbox",
+ "Eye",
+ "EyeOff",
+ "Form",
+ "IconComponent"
+ ],
+ "tailwind_classes_used": [
+ "basis-1/2",
+ "cursor-pointer",
+ "data-[invalid]:label-invalid",
+ "field-invalid",
+ "flex",
+ "flex-row",
+ "float-right",
+ "font-medium",
+ "gap-5",
+ "gap-8",
+ "grid",
+ "h-5",
+ "h-6",
+ "ml-1",
+ "mr-1",
+ "mr-3",
+ "mt-8",
+ "pl-1",
+ "pr-2",
+ "primary-input",
+ "relative",
+ "text-destructive",
+ "text-foreground",
+ "top-0.5",
+ "w-6"
+ ],
+ "state_props_referenced": [
+ "asChild",
+ "cancelText",
+ "children",
+ "confirmPassword",
+ "confirmationText",
+ "icon",
+ "isActive",
+ "isSuperUser",
+ "open",
+ "password",
+ "setOpen",
+ "title",
+ "titleHeader",
+ "username"
+ ],
+ "file_size_lines": 302,
+ "jsx_size_chars": 8622
+ }
+ },
+ {
+ "id": "ni0053",
+ "type": "interface",
+ "name": "EmbedModal",
+ "path": "src/frontend/src/modals/EmbedModal/embed-modal.tsx",
+ "category": "modal",
+ "description": "interface node: EmbedModal (Modal component)",
+ "impact_analysis_status": "intact",
+ "impact_analysis": "No changes required for RBAC MVP",
+ "uidl_conceptual": {
+ "name": "EmbedModal",
+ "propDefinitions": {
+ "open": {
+ "type": "boolean",
+ "defaultValue": false
+ },
+ "setOpen": {
+ "type": "func",
+ "defaultValue": null
+ },
+ "flowId": {
+ "type": "string",
+ "defaultValue": ""
+ },
+ "flowName": {
+ "type": "string",
+ "defaultValue": ""
+ },
+ "isAuth": {
+ "type": "boolean",
+ "defaultValue": false
+ },
+ "tweaksBuildedObject": {
+ "type": "object",
+ "defaultValue": {}
+ },
+ "activeTweaks": {
+ "type": "boolean",
+ "defaultValue": false
+ }
+ },
+ "stateDefinitions": {
+ "isCopied": {
+ "type": "boolean",
+ "defaultValue": false
+ }
+ },
+ "node": {
+ "type": "element",
+ "content": {
+ "elementType": "BaseModal",
+ "semanticType": "modal",
+ "name": "EmbedModal",
+ "dependency": {
+ "type": "local",
+ "path": "../baseModal"
+ },
+ "attrs": {
+ "open": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "prop",
+ "id": "open"
+ }
+ },
+ "setOpen": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "prop",
+ "id": "setOpen"
+ }
+ },
+ "size": {
+ "type": "static",
+ "content": "retangular"
+ }
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "BaseModal.Header",
+ "semanticType": "modalHeader",
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "div",
+ "semanticType": "container",
+ "attrs": {
+ "className": {
+ "type": "static",
+ "content": "flex items-center gap-2 text-base font-semibold"
+ }
+ },
+ "style": {
+ "display": "flex",
+ "alignItems": "center",
+ "gap": "0.5rem",
+ "fontSize": "1rem",
+ "fontWeight": "600"
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "IconComponent",
+ "semanticType": "icon",
+ "attrs": {
+ "name": {
+ "type": "static",
+ "content": "Columns2"
+ },
+ "className": {
+ "type": "static",
+ "content": "icon-size"
+ }
+ }
+ }
+ },
+ {
+ "type": "static",
+ "content": "Embed into site"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "BaseModal.Content",
+ "semanticType": "modalContent",
+ "attrs": {
+ "className": {
+ "type": "static",
+ "content": ""
+ }
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "div",
+ "semanticType": "container",
+ "attrs": {
+ "className": {
+ "type": "static",
+ "content": "relative flex h-full w-full"
+ }
+ },
+ "style": {
+ "position": "relative",
+ "display": "flex",
+ "height": "100%",
+ "width": "100%"
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "Button",
+ "semanticType": "action",
+ "attrs": {
+ "variant": {
+ "type": "static",
+ "content": "ghost"
+ },
+ "size": {
+ "type": "static",
+ "content": "icon"
+ },
+ "onClick": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "local",
+ "id": "copyToClipboard"
+ }
+ },
+ "data-testid": {
+ "type": "static",
+ "content": "btn-copy-code"
+ },
+ "className": {
+ "type": "static",
+ "content": "!hover:bg-foreground group absolute right-2 top-2"
+ }
+ },
+ "style": {
+ "position": "absolute",
+ "right": "0.5rem",
+ "top": "0.5rem"
+ },
+ "children": [
+ {
+ "type": "conditional",
+ "content": {
+ "reference": {
+ "type": "expr",
+ "content": "isCopied"
+ },
+ "node": {
+ "type": "element",
+ "content": {
+ "elementType": "IconComponent",
+ "semanticType": "icon",
+ "attrs": {
+ "name": {
+ "type": "static",
+ "content": "Check"
+ },
+ "className": {
+ "type": "static",
+ "content": "h-5 w-5 text-muted-foreground"
+ }
+ },
+ "style": {
+ "width": "1.25rem",
+ "height": "1.25rem"
+ }
+ }
+ },
+ "value": {
+ "type": "element",
+ "content": {
+ "elementType": "IconComponent",
+ "semanticType": "icon",
+ "attrs": {
+ "name": {
+ "type": "static",
+ "content": "Copy"
+ },
+ "className": {
+ "type": "static",
+ "content": "!h-5 !w-5 text-muted-foreground"
+ }
+ },
+ "style": {
+ "width": "1.25rem",
+ "height": "1.25rem"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "SyntaxHighlighter",
+ "semanticType": "codeViewer",
+ "dependency": {
+ "type": "package",
+ "path": "react-syntax-highlighter"
+ },
+ "attrs": {
+ "showLineNumbers": {
+ "type": "static",
+ "content": true
+ },
+ "wrapLongLines": {
+ "type": "static",
+ "content": true
+ },
+ "language": {
+ "type": "static",
+ "content": "html"
+ },
+ "style": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "expr",
+ "id": "isDark ? oneDark : oneLight"
+ }
+ },
+ "className": {
+ "type": "static",
+ "content": "!mt-0 h-full w-full overflow-scroll !rounded-b-md border border-border text-left !custom-scroll"
+ }
+ },
+ "style": {
+ "marginTop": "0",
+ "height": "100%",
+ "width": "100%",
+ "overflow": "scroll"
+ },
+ "children": [
+ {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "local",
+ "id": "embedCode"
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ },
+ "ui_blueprint": {
+ "component_name": "EmbedModal",
+ "file_path": "frontend/src/modals/EmbedModal/embed-modal.tsx",
+ "jsx_structure": {
+ "elements": [
+ {
+ "type": "BaseModal",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "BaseModal",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "div",
+ "attributes": {
+ "className": "flex items-center gap-2 text-base font-semibold"
+ },
+ "category": "html"
+ },
+ {
+ "type": "IconComponent",
+ "attributes": {
+ "className": "icon-size"
+ },
+ "category": "component"
+ },
+ {
+ "type": "BaseModal",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "div",
+ "attributes": {
+ "className": "relative flex h-full w-full"
+ },
+ "category": "html"
+ },
+ {
+ "type": "Button",
+ "attributes": {
+ "className": "!hover:bg-foreground group absolute right-2 top-2",
+ "onClick": "copyToClipboard"
+ },
+ "category": "component"
+ },
+ {
+ "type": "IconComponent",
+ "attributes": {
+ "className": "h-5 w-5 text-muted-foreground"
+ },
+ "category": "component"
+ },
+ {
+ "type": "IconComponent",
+ "attributes": {
+ "className": "!h-5 !w-5 text-muted-foreground"
+ },
+ "category": "component"
+ },
+ {
+ "type": "SyntaxHighlighter",
+ "attributes": {
+ "className": "!mt-0 h-full w-full overflow-scroll !rounded-b-md border border-border text-left !custom-scroll"
+ },
+ "category": "component"
+ }
+ ],
+ "components": [
+ "BaseModal",
+ "IconComponent",
+ "SyntaxHighlighter",
+ "Button"
+ ],
+ "ui_patterns": [
+ {
+ "type": "flex",
+ "description": "Flexbox layout"
+ },
+ {
+ "type": "modal",
+ "description": "Modal/Dialog component"
+ }
+ ]
+ },
+ "ui_components": {
+ "shadcn": [
+ "Button"
+ ],
+ "custom": [
+ "BaseModal",
+ "IconComponent",
+ "SyntaxHighlighter"
+ ],
+ "html": [
+ "div"
+ ]
+ },
+ "styling": {
+ "tailwind_classes": [
+ "right-2",
+ "top-2",
+ "!custom-scroll",
+ "text-muted-foreground",
+ "absolute",
+ "!mt-0",
+ "icon-size",
+ "w-full",
+ "gap-2",
+ "w-5",
+ "items-center",
+ "text-base",
+ "group",
+ "border-border",
+ "!hover:bg-foreground",
+ "border",
+ "!h-5",
+ "overflow-scroll",
+ "flex",
+ "h-full",
+ "relative",
+ "h-5",
+ "text-left",
+ "!rounded-b-md",
+ "font-semibold",
+ "!w-5"
+ ],
+ "layout_patterns": [
+ "flexbox"
+ ],
+ "spacing_patterns": [
+ "consistent-spacing"
+ ],
+ "color_scheme": [
+ "color-theming"
+ ]
+ },
+ "interactive_elements": {
+ "buttons": [
+ {
+ "attributes": {
+ "className": "!hover:bg-foreground group absolute right-2 top-2",
+ "onClick": "copyToClipboard"
+ },
+ "type": "button"
+ }
+ ],
+ "inputs": [],
+ "forms": [],
+ "links": []
+ },
+ "data_display_patterns": [],
+ "primary_layout": "modal"
+ },
+ "ui_physical": {
+ "component_name": "EmbedModal",
+ "file_path": "frontend/src/modals/EmbedModal/embed-modal.tsx",
+ "component_type": "modal",
+ "summary": "Modal dialog for embed",
+ "jsx_return_statement": "\n \n \n \n Embed into site\n
\n \n \n \n \n \n {embedCode}\n \n
\n \n ",
+ "jsx_simplified": "\n \n \n \n Embed into site\n
\n \n \n \n \n \n {embedCode}\n \n
\n \n ",
+ "imports": [
+ {
+ "source": "react",
+ "items": [
+ "useState"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "react-syntax-highlighter",
+ "items": [
+ "Prism as SyntaxHighlighter"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "react-syntax-highlighter/dist/cjs/styles/prism",
+ "items": [
+ "oneDark",
+ "oneLight",
+ ""
+ ],
+ "type": "named"
+ },
+ {
+ "source": "@/stores/darkStore",
+ "items": [
+ "useDarkStore"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "../../components/common/genericIconComponent",
+ "items": [
+ "IconComponent"
+ ],
+ "type": "default"
+ },
+ {
+ "source": "../../components/ui/button",
+ "items": [
+ "Button"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "../apiModal/utils/get-widget-code",
+ "items": [
+ "getWidgetCode"
+ ],
+ "type": "default"
+ },
+ {
+ "source": "../baseModal",
+ "items": [
+ "BaseModal"
+ ],
+ "type": "default"
+ }
+ ],
+ "props_definition": {
+ "name": "EmbedModalProps",
+ "definition": "open: boolean;\n setOpen: (open: boolean) => void;\n flowId: string;\n flowName: string;\n isAuth: boolean;\n tweaksBuildedObject: {",
+ "type": "interface"
+ },
+ "ui_components_used": [
+ "BaseModal",
+ "Button",
+ "IconComponent",
+ "SyntaxHighlighter"
+ ],
+ "tailwind_classes_used": [
+ "!custom-scroll",
+ "!h-5",
+ "!hover:bg-foreground",
+ "!mt-0",
+ "!rounded-b-md",
+ "!w-5",
+ "absolute",
+ "border",
+ "border-border",
+ "flex",
+ "font-semibold",
+ "gap-2",
+ "group",
+ "h-5",
+ "h-full",
+ "icon-size",
+ "items-center",
+ "overflow-scroll",
+ "relative",
+ "right-2",
+ "text-base",
+ "text-left",
+ "text-muted-foreground",
+ "top-2",
+ "w-5",
+ "w-full"
+ ],
+ "state_props_referenced": [
+ "copyToClipboard",
+ "embedCode",
+ "open",
+ "setOpen",
+ "true"
+ ],
+ "file_size_lines": 99,
+ "jsx_size_chars": 1383
+ }
+ },
+ {
+ "id": "ni0054",
+ "type": "interface",
+ "name": "ShareModal",
+ "path": "src/frontend/src/modals/shareModal/index.tsx",
+ "category": "modal",
+ "description": "interface node: ShareModal (Modal component)",
+ "impact_analysis_status": "intact",
+ "impact_analysis": "No changes required for RBAC MVP",
+ "uidl_conceptual": {
+ "name": "ShareModal",
+ "propDefinitions": {
+ "children": {
+ "type": "node",
+ "defaultValue": null
+ },
+ "is_component": {
+ "type": "boolean",
+ "defaultValue": false
+ },
+ "component": {
+ "type": "object",
+ "defaultValue": {}
+ },
+ "open": {
+ "type": "boolean",
+ "defaultValue": null
+ },
+ "setOpen": {
+ "type": "func",
+ "defaultValue": null
+ },
+ "disabled": {
+ "type": "boolean",
+ "defaultValue": false
+ }
+ },
+ "stateDefinitions": {
+ "internalOpen": {
+ "type": "boolean",
+ "defaultValue": false
+ },
+ "openConfirmationModal": {
+ "type": "boolean",
+ "defaultValue": false
+ },
+ "sharePublic": {
+ "type": "boolean",
+ "defaultValue": true
+ },
+ "selectedTags": {
+ "type": "array",
+ "defaultValue": []
+ },
+ "unavaliableNames": {
+ "type": "array",
+ "defaultValue": []
+ },
+ "loadingNames": {
+ "type": "boolean",
+ "defaultValue": false
+ }
+ },
+ "node": {
+ "type": "element",
+ "content": {
+ "elementType": "fragment",
+ "semanticType": "container",
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "BaseModal",
+ "semanticType": "modal",
+ "name": "ShareModal",
+ "dependency": {
+ "type": "local",
+ "path": "../baseModal"
+ },
+ "attrs": {
+ "size": {
+ "type": "static",
+ "content": "smaller-h-full"
+ },
+ "open": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "expr",
+ "id": "!disabled && internalOpen"
+ }
+ },
+ "setOpen": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "state",
+ "id": "internalSetOpen"
+ }
+ },
+ "onSubmit": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "local",
+ "id": "handleShareSubmit"
+ }
+ }
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "BaseModal.Trigger",
+ "semanticType": "trigger",
+ "attrs": {
+ "asChild": {
+ "type": "static",
+ "content": true
+ }
+ },
+ "children": [
+ {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "expr",
+ "id": "children ? children : <>>"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "BaseModal.Header",
+ "semanticType": "modalHeader",
+ "attrs": {
+ "description": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "expr",
+ "id": "`Publish ${is_component ? 'your component' : 'workflow'} to the Langbuilder Store.`"
+ }
+ }
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "container",
+ "semanticType": "container",
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "span",
+ "semanticType": "text",
+ "attrs": {
+ "className": {
+ "type": "static",
+ "content": "pr-2"
+ }
+ },
+ "style": {
+ "paddingRight": "0.5rem"
+ },
+ "children": [
+ {
+ "type": "static",
+ "content": "Share"
+ }
+ ]
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "IconComponent",
+ "semanticType": "icon",
+ "attrs": {
+ "name": {
+ "type": "static",
+ "content": "Share3"
+ },
+ "className": {
+ "type": "static",
+ "content": "-m-0.5 h-6 w-6 text-foreground"
+ }
+ },
+ "style": {
+ "width": "1.5rem",
+ "height": "1.5rem"
+ }
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "BaseModal.Content",
+ "semanticType": "modalContent",
+ "children": [
+ {
+ "type": "conditional",
+ "content": {
+ "reference": {
+ "type": "expr",
+ "content": "open"
+ },
+ "node": {
+ "type": "element",
+ "content": {
+ "elementType": "container",
+ "semanticType": "container",
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "EditFlowSettings",
+ "semanticType": "component",
+ "attrs": {
+ "name": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "local",
+ "id": "name"
+ }
+ },
+ "description": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "local",
+ "id": "description"
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "TagsSelector",
+ "semanticType": "component",
+ "attrs": {
+ "tags": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "expr",
+ "id": "tags ?? []"
+ }
+ },
+ "loadingTags": {
+ "type": "static",
+ "content": false
+ },
+ "disabled": {
+ "type": "static",
+ "content": false
+ },
+ "selectedTags": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "state",
+ "id": "selectedTags"
+ }
+ },
+ "setSelectedTags": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "state",
+ "id": "setSelectedTags"
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "Checkbox",
+ "semanticType": "formField",
+ "attrs": {
+ "id": {
+ "type": "static",
+ "content": "public"
+ },
+ "checked": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "state",
+ "id": "sharePublic"
+ }
+ },
+ "onCheckedChange": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "state",
+ "id": "setSharePublic"
+ }
+ },
+ "data-testid": {
+ "type": "static",
+ "content": "public-checkbox"
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ ]
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "BaseModal.Footer",
+ "semanticType": "modalFooter",
+ "attrs": {
+ "submit": {
+ "type": "static",
+ "content": {
+ "label": "Share",
+ "loading": "loadingNames",
+ "dataTestId": "share-modal-button-flow"
+ }
+ }
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "Button",
+ "semanticType": "action",
+ "attrs": {
+ "type": {
+ "type": "static",
+ "content": "button"
+ },
+ "variant": {
+ "type": "static",
+ "content": "outline"
+ }
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "IconComponent",
+ "semanticType": "icon",
+ "attrs": {
+ "name": {
+ "type": "static",
+ "content": "Download"
+ },
+ "className": {
+ "type": "static",
+ "content": "h-4 w-4"
+ }
+ }
+ }
+ },
+ {
+ "type": "static",
+ "content": "Export"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "ConfirmationModal",
+ "semanticType": "modal",
+ "attrs": {
+ "open": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "state",
+ "id": "openConfirmationModal"
+ }
+ },
+ "title": {
+ "type": "static",
+ "content": "Replace"
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ },
+ "ui_blueprint": {
+ "component_name": "ShareModal",
+ "file_path": "frontend/src/modals/shareModal/index.tsx",
+ "jsx_structure": {
+ "elements": [
+ {
+ "type": "ConfirmationModal",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "ConfirmationModal",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "span",
+ "attributes": {},
+ "category": "html"
+ },
+ {
+ "type": "br",
+ "attributes": {},
+ "category": "html"
+ },
+ {
+ "type": "span",
+ "attributes": {
+ "className": "text-xs text-destructive"
+ },
+ "category": "html"
+ }
+ ],
+ "components": [
+ "ConfirmationModal"
+ ],
+ "ui_patterns": [
+ {
+ "type": "modal",
+ "description": "Modal/Dialog component"
+ }
+ ]
+ },
+ "ui_components": {
+ "shadcn": [
+ "Button",
+ "Checkbox"
+ ],
+ "custom": [
+ "ConfirmationModal",
+ "BaseModal",
+ "IconComponent",
+ "EditFlowSettings",
+ "TagsSelector",
+ "ExportModal"
+ ],
+ "html": [
+ "div",
+ "span"
+ ]
+ },
+ "styling": {
+ "tailwind_classes": [
+ "mb-2",
+ "rounded-lg",
+ "-m-0.5",
+ "space-x-2",
+ "text-xs",
+ "export-modal-save-api",
+ "w-full",
+ "p-4",
+ "gap-2",
+ "mt-3",
+ "text-foreground",
+ "items-center",
+ "w-4",
+ "border-border",
+ "border",
+ "w-6",
+ "h-6",
+ "h-4",
+ "mt-5",
+ "flex",
+ "h-8",
+ "text-sm",
+ "text-destructive",
+ "pr-2"
+ ],
+ "layout_patterns": [
+ "flexbox"
+ ],
+ "spacing_patterns": [
+ "consistent-spacing"
+ ],
+ "color_scheme": [
+ "color-theming"
+ ]
+ },
+ "interactive_elements": {
+ "buttons": [
+ {
+ "attributes": {
+ "className": "gap-2",
+ "type": "button"
+ },
+ "type": "button"
+ },
+ {
+ "attributes": {
+ "className": "gap-2",
+ "type": "button"
+ },
+ "type": "button"
+ }
+ ],
+ "inputs": [],
+ "forms": [],
+ "links": []
+ },
+ "data_display_patterns": [],
+ "primary_layout": "modal"
+ },
+ "ui_physical": {
+ "component_name": "ShareModal",
+ "file_path": "frontend/src/modals/shareModal/index.tsx",
+ "component_type": "modal",
+ "summary": "remove file names from flows before sharing",
+ "jsx_return_statement": "<>\n {\n handleUpdateComponent();\n setOpenConfirmationModal(false);\n }}\n onCancel={() => {\n setOpenConfirmationModal(false);\n }}\n >\n \n \n It seems {name} already exists. Do you want to replace it with the\n current?\n \n
\n \n Note: This action is irreversible.\n \n \n \n >",
+ "jsx_simplified": "<>\n \n \n \n It seems {name} already exists. Do you want to replace it with the\n current?\n \n
\n \n Note: This action is irreversible.\n \n \n \n >",
+ "imports": [
+ {
+ "source": "lodash",
+ "items": [
+ "cloneDeep"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "react",
+ "items": [
+ "type ReactNode",
+ "useEffect",
+ "useMemo",
+ "useState"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "@/hooks/flows/use-save-flow",
+ "items": [
+ "useSaveFlow"
+ ],
+ "type": "default"
+ },
+ {
+ "source": "@/stores/utilityStore",
+ "items": [
+ "useUtilityStore"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "../../components/common/genericIconComponent",
+ "items": [
+ "IconComponent"
+ ],
+ "type": "default"
+ },
+ {
+ "source": "../../components/common/tagsSelectorComponent",
+ "items": [
+ "TagsSelector"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "../../components/core/editFlowSettingsComponent",
+ "items": [
+ "EditFlowSettings"
+ ],
+ "type": "default"
+ },
+ {
+ "source": "../../components/ui/button",
+ "items": [
+ "Button"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "../../components/ui/checkbox",
+ "items": [
+ "Checkbox"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "../../controllers/API",
+ "items": [
+ "getStoreComponents",
+ "saveFlowStore",
+ "updateFlowStore",
+ ""
+ ],
+ "type": "named"
+ },
+ {
+ "source": "../../stores/alertStore",
+ "items": [
+ "useAlertStore"
+ ],
+ "type": "default"
+ },
+ {
+ "source": "../../stores/darkStore",
+ "items": [
+ "useDarkStore"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "../../stores/storeStore",
+ "items": [
+ "useStoreStore"
+ ],
+ "type": "named"
+ },
+ {
+ "source": "../../utils/reactflowUtils",
+ "items": [
+ "downloadNode",
+ "removeApiKeys",
+ "removeFileNameFromComponents",
+ ""
+ ],
+ "type": "named"
+ },
+ {
+ "source": "../baseModal",
+ "items": [
+ "BaseModal"
+ ],
+ "type": "default"
+ },
+ {
+ "source": "../confirmationModal",
+ "items": [
+ "ConfirmationModal"
+ ],
+ "type": "default"
+ },
+ {
+ "source": "../exportModal",
+ "items": [
+ "ExportModal"
+ ],
+ "type": "default"
+ },
+ {
+ "source": "./utils/get-tags-ids",
+ "items": [
+ "getTagsIds"
+ ],
+ "type": "default"
+ }
+ ],
+ "props_definition": null,
+ "ui_components_used": [
+ "ConfirmationModal"
+ ],
+ "tailwind_classes_used": [
+ "text-destructive",
+ "text-xs"
+ ],
+ "state_props_referenced": [
+ "name",
+ "openConfirmationModal"
+ ],
+ "file_size_lines": 305,
+ "jsx_size_chars": 863
+ }
+ },
+ {
+ "id": "ni0055",
+ "type": "interface",
+ "name": "TemplatesModal",
+ "path": "src/frontend/src/modals/templatesModal/index.tsx",
+ "category": "modal",
+ "description": "interface node: TemplatesModal (Modal component)",
+ "impact_analysis_status": "intact",
+ "impact_analysis": "No changes required for RBAC MVP",
+ "uidl_conceptual": {
+ "name": "TemplatesModal",
+ "propDefinitions": {
+ "open": {
+ "type": "boolean",
+ "defaultValue": false
+ },
+ "setOpen": {
+ "type": "func",
+ "defaultValue": null
+ }
+ },
+ "stateDefinitions": {
+ "currentTab": {
+ "type": "string",
+ "defaultValue": "get-started"
+ }
+ },
+ "node": {
+ "type": "element",
+ "content": {
+ "elementType": "BaseModal",
+ "semanticType": "modal",
+ "name": "TemplatesModal",
+ "dependency": {
+ "type": "local",
+ "path": "../baseModal"
+ },
+ "attrs": {
+ "size": {
+ "type": "static",
+ "content": "templates"
+ },
+ "open": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "prop",
+ "id": "open"
+ }
+ },
+ "setOpen": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "prop",
+ "id": "setOpen"
+ }
+ },
+ "className": {
+ "type": "static",
+ "content": "p-0"
+ }
+ },
+ "style": {
+ "padding": "0"
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "BaseModal.Content",
+ "semanticType": "modalContent",
+ "attrs": {
+ "className": {
+ "type": "static",
+ "content": "flex flex-col p-0"
+ }
+ },
+ "style": {
+ "display": "flex",
+ "flexDirection": "column",
+ "padding": "0"
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "div",
+ "semanticType": "container",
+ "attrs": {
+ "className": {
+ "type": "static",
+ "content": "flex h-full"
+ }
+ },
+ "style": {
+ "display": "flex",
+ "height": "100%"
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "SidebarProvider",
+ "semanticType": "component",
+ "dependency": {
+ "type": "local",
+ "path": "@/components/ui/sidebar"
+ },
+ "attrs": {
+ "width": {
+ "type": "static",
+ "content": "15rem"
+ },
+ "defaultOpen": {
+ "type": "static",
+ "content": false
+ }
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "Nav",
+ "semanticType": "component",
+ "attrs": {
+ "categories": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "local",
+ "id": "categories"
+ }
+ },
+ "currentTab": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "state",
+ "id": "currentTab"
+ }
+ },
+ "setCurrentTab": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "state",
+ "id": "setCurrentTab"
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "main",
+ "semanticType": "container",
+ "attrs": {
+ "className": {
+ "type": "static",
+ "content": "flex flex-1 flex-col gap-4 overflow-auto p-6 md:gap-8"
+ }
+ },
+ "style": {
+ "display": "flex",
+ "flex": "1",
+ "flexDirection": "column",
+ "gap": "1rem",
+ "overflow": "auto",
+ "padding": "1.5rem"
+ },
+ "children": [
+ {
+ "type": "conditional",
+ "content": {
+ "reference": {
+ "type": "expr",
+ "content": "currentTab === 'get-started'"
+ },
+ "node": {
+ "type": "element",
+ "content": {
+ "elementType": "GetStartedComponent",
+ "semanticType": "component"
+ }
+ },
+ "value": {
+ "type": "element",
+ "content": {
+ "elementType": "TemplateContentComponent",
+ "semanticType": "component",
+ "attrs": {
+ "currentTab": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "state",
+ "id": "currentTab"
+ }
+ },
+ "categories": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "expr",
+ "id": "categories.flatMap((category) => category.items)"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "BaseModal.Footer",
+ "semanticType": "modalFooter",
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "div",
+ "semanticType": "container",
+ "attrs": {
+ "className": {
+ "type": "static",
+ "content": "flex w-full flex-col justify-between gap-4 pb-4 sm:flex-row sm:items-center"
+ }
+ },
+ "style": {
+ "display": "flex",
+ "width": "100%",
+ "flexDirection": "column",
+ "justifyContent": "space-between",
+ "gap": "1rem",
+ "paddingBottom": "1rem"
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "div",
+ "semanticType": "container",
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "div",
+ "semanticType": "text",
+ "attrs": {
+ "className": {
+ "type": "static",
+ "content": "font-semibold"
+ }
+ },
+ "style": {
+ "fontWeight": "600"
+ },
+ "children": [
+ {
+ "type": "static",
+ "content": "Start from scratch"
+ }
+ ]
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "div",
+ "semanticType": "text",
+ "attrs": {
+ "className": {
+ "type": "static",
+ "content": "text-sm text-muted-foreground"
+ }
+ },
+ "style": {
+ "fontSize": "0.875rem"
+ },
+ "children": [
+ {
+ "type": "static",
+ "content": "Begin with a fresh flow to build from scratch."
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "type": "element",
+ "content": {
+ "elementType": "Button",
+ "semanticType": "action",
+ "attrs": {
+ "onClick": {
+ "type": "dynamic",
+ "content": {
+ "referenceType": "local",
+ "id": "handleAddBlankFlow"
+ }
+ },
+ "size": {
+ "type": "static",
+ "content": "sm"
+ },
+ "data-testid": {
+ "type": "static",
+ "content": "blank-flow"
+ },
+ "className": {
+ "type": "static",
+ "content": "shrink-0"
+ }
+ },
+ "children": [
+ {
+ "type": "element",
+ "content": {
+ "elementType": "ForwardedIconComponent",
+ "semanticType": "icon",
+ "attrs": {
+ "name": {
+ "type": "static",
+ "content": "Plus"
+ },
+ "className": {
+ "type": "static",
+ "content": "h-4 w-4 shrink-0"
+ }
+ },
+ "style": {
+ "width": "1rem",
+ "height": "1rem"
+ }
+ }
+ },
+ {
+ "type": "static",
+ "content": "Blank Flow"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ },
+ "ui_blueprint": {
+ "component_name": "TemplatesModal",
+ "file_path": "frontend/src/modals/templatesModal/index.tsx",
+ "jsx_structure": {
+ "elements": [
+ {
+ "type": "BaseModal",
+ "attributes": {
+ "className": "p-0"
+ },
+ "category": "component"
+ },
+ {
+ "type": "BaseModal",
+ "attributes": {
+ "className": "flex flex-col p-0"
+ },
+ "category": "component"
+ },
+ {
+ "type": "div",
+ "attributes": {
+ "className": "flex h-full"
+ },
+ "category": "html"
+ },
+ {
+ "type": "SidebarProvider",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "Nav",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "main",
+ "attributes": {
+ "className": "flex flex-1 flex-col gap-4 overflow-auto p-6 md:gap-8"
+ },
+ "category": "html"
+ },
+ {
+ "type": "GetStartedComponent",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "TemplateContentComponent",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "BaseModal",
+ "attributes": {},
+ "category": "component"
+ },
+ {
+ "type": "div",
+ "attributes": {
+ "className": "flex w-full flex-col justify-between gap-4 pb-4 sm:flex-row sm:items-center"
+ },
+ "category": "html"
+ },
+ {
+ "type": "div",
+ "attributes": {
+ "className": "flex flex-col items-start justify-center"
+ },
+ "category": "html"
+ },
+ {
+ "type": "div",
+ "attributes": {
+ "className": "font-semibold"
+ },
+ "category": "html"
+ },
+ {
+ "type": "div",
+ "attributes": {
+ "className": "text-sm text-muted-foreground"
+ },
+ "category": "html"
+ },
+ {
+ "type": "Button",
+ "attributes": {},
+ "category": "component"
+ }
+ ],
+ "components": [
+ "SidebarProvider",
+ "GetStartedComponent",
+ "BaseModal",
+ "TemplateContentComponent",
+ "Nav",
+ "Button"
+ ],
+ "ui_patterns": [
+ {
+ "type": "flex",
+ "description": "Flexbox layout"
+ },
+ {
+ "type": "modal",
+ "description": "Modal/Dialog component"
+ },
+ {
+ "type": "tabs",
+ "description": "Tabbed interface"
+ }
+ ]
+ },
+ "ui_components": {
+ "shadcn": [
+ "Button"
+ ],
+ "custom": [
+ "BaseModal",
+ "SidebarProvider",
+ "Nav",
+ "GetStartedComponent",
+ "TemplateContentComponent",
+ "ForwardedIconComponent"
+ ],
+ "html": [
+ "div"
+ ]
+ },
+ "styling": {
+ "tailwind_classes": [
+ "sm:items-center",
+ "text-muted-foreground",
+ "gap-4",
+ "flex-col",
+ "w-full",
+ "justify-center",
+ "overflow-auto",
+ "flex-1",
+ "justify-between",
+ "w-4",
+ "p-6",
+ "p-0",
+ "items-start",
+ "shrink-0",
+ "sm:flex-row",
+ "pb-4",
+ "h-4",
+ "flex",
+ "text-sm",
+ "h-full",
+ "md:gap-8",
+ "font-semibold"
+ ],
+ "layout_patterns": [
+ "flexbox"
+ ],
+ "spacing_patterns": [
+ "consistent-spacing"
+ ],
+ "color_scheme": [
+ "color-theming"
+ ]
+ },
+ "interactive_elements": {
+ "buttons": [
+ {
+ "attributes": {},
+ "type": "button"
+ }
+ ],
+ "inputs": [],
+ "forms": [],
+ "links": []
+ },
+ "data_display_patterns": [],
+ "primary_layout": "flexbox"
+ },
+ "ui_physical": {
+ "component_name": "TemplatesModal",
+ "file_path": "frontend/src/modals/templatesModal/index.tsx",
+ "component_type": "modal",
+ "summary": "Define categories and their items",
+ "jsx_return_statement": "\n \n \n
\n \n \n {currentTab === \"get-started\" ? (\n \n ) : (\n category.items)}\n />\n )}\n \n \n
\n
Start from scratch
\n
\n Begin with a fresh flow to build from scratch.\n
\n
\n