diff --git a/packages/apollo-react/src/canvas/components/NodePropertyPanel/NodePropertyPanel.stories.tsx b/packages/apollo-react/src/canvas/components/NodePropertyPanel/NodePropertyPanel.stories.tsx index b31028287..ae9aba115 100644 --- a/packages/apollo-react/src/canvas/components/NodePropertyPanel/NodePropertyPanel.stories.tsx +++ b/packages/apollo-react/src/canvas/components/NodePropertyPanel/NodePropertyPanel.stories.tsx @@ -2,21 +2,40 @@ import type { EditorProps } from '@monaco-editor/react'; import type { Meta, StoryObj } from '@storybook/react-vite'; import type { FormSchema } from '@uipath/apollo-wind'; import { + Accordion, + AccordionContent, + AccordionItem, + AccordionTrigger, + Alert, + AlertDescription, + AlertTitle, Badge, Button, + Checkbox, cn, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, + Input, + Label, MetadataForm, + RadioGroup, + RadioGroupItem, ScrollableTabsList, + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, + Slider, Switch, Tabs, TabsContent, TabsList, TabsTrigger, + Textarea, } from '@uipath/apollo-wind'; import { apolloCoreDarkHCMonaco, @@ -28,6 +47,7 @@ import { } from '@uipath/apollo-wind/editor-themes'; import { ChevronDown, + ChevronsUpDown, CircleAlert, CircleCheck, Code2, @@ -1732,6 +1752,505 @@ export const InlineEditing: Story = { render: () => , }; +// ============================================================================ +// Panel UI Inventory +// Interactive reference of common controls and layout patterns used in panels. +// ============================================================================ + +function InventoryField({ + label, + description, + children, +}: { + label: string; + description?: string; + children: ReactNode; +}) { + return ( +
+ + {children} + {description &&

{description}

} +
+ ); +} + +function PatternNote({ title, children }: { title: string; children: ReactNode }) { + const [dismissed, setDismissed] = useState(false); + + if (dismissed) return null; + + return ( + + ); +} + +function InventorySubContainer({ + expandedSections, + onExpandedSectionsChange, +}: { + expandedSections: string[]; + onExpandedSectionsChange: (sections: string[]) => void; +}) { + const [enabled, setEnabled] = useState(true); + const [checked, setChecked] = useState(true); + const toggleSection = (section: string) => { + onExpandedSectionsChange( + expandedSections.includes(section) + ? expandedSections.filter((value) => value !== section) + : [...expandedSections, section] + ); + }; + + return ( +
+
+ + + {expandedSections.includes('text-fields') && ( +
+
+ + + + +