@activecollab/components 2.0.397 → 2.0.399

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/cjs/presentation/whiteboard/bottomDock.js +194 -0
  2. package/dist/cjs/presentation/whiteboard/bottomDock.js.map +1 -0
  3. package/dist/cjs/presentation/whiteboard/canvasElements.js +877 -0
  4. package/dist/cjs/presentation/whiteboard/canvasElements.js.map +1 -0
  5. package/dist/cjs/presentation/whiteboard/elements.js +816 -0
  6. package/dist/cjs/presentation/whiteboard/elements.js.map +1 -0
  7. package/dist/cjs/presentation/whiteboard/fileElement.js +457 -0
  8. package/dist/cjs/presentation/whiteboard/fileElement.js.map +1 -0
  9. package/dist/cjs/presentation/whiteboard/glyphs.js +67 -0
  10. package/dist/cjs/presentation/whiteboard/glyphs.js.map +1 -0
  11. package/dist/cjs/presentation/whiteboard/inspector.js +884 -0
  12. package/dist/cjs/presentation/whiteboard/inspector.js.map +1 -0
  13. package/dist/cjs/presentation/whiteboard/linkElement.js +357 -0
  14. package/dist/cjs/presentation/whiteboard/linkElement.js.map +1 -0
  15. package/dist/cjs/presentation/whiteboard/outline.js +966 -0
  16. package/dist/cjs/presentation/whiteboard/outline.js.map +1 -0
  17. package/dist/cjs/presentation/whiteboard/peopleMenu.js +516 -0
  18. package/dist/cjs/presentation/whiteboard/peopleMenu.js.map +1 -0
  19. package/dist/cjs/presentation/whiteboard/settingsMenu.js +177 -0
  20. package/dist/cjs/presentation/whiteboard/settingsMenu.js.map +1 -0
  21. package/dist/esm/presentation/whiteboard/bottomDock.d.ts +51 -0
  22. package/dist/esm/presentation/whiteboard/bottomDock.d.ts.map +1 -0
  23. package/dist/esm/presentation/whiteboard/bottomDock.js +162 -0
  24. package/dist/esm/presentation/whiteboard/bottomDock.js.map +1 -0
  25. package/dist/esm/presentation/whiteboard/canvasElements.d.ts +61 -0
  26. package/dist/esm/presentation/whiteboard/canvasElements.d.ts.map +1 -0
  27. package/dist/esm/presentation/whiteboard/canvasElements.js +746 -0
  28. package/dist/esm/presentation/whiteboard/canvasElements.js.map +1 -0
  29. package/dist/esm/presentation/whiteboard/elements.d.ts +180 -0
  30. package/dist/esm/presentation/whiteboard/elements.d.ts.map +1 -0
  31. package/dist/esm/presentation/whiteboard/elements.js +736 -0
  32. package/dist/esm/presentation/whiteboard/elements.js.map +1 -0
  33. package/dist/esm/presentation/whiteboard/fileElement.d.ts +113 -0
  34. package/dist/esm/presentation/whiteboard/fileElement.d.ts.map +1 -0
  35. package/dist/esm/presentation/whiteboard/fileElement.js +430 -0
  36. package/dist/esm/presentation/whiteboard/fileElement.js.map +1 -0
  37. package/dist/esm/presentation/whiteboard/glyphs.d.ts +32 -0
  38. package/dist/esm/presentation/whiteboard/glyphs.d.ts.map +1 -0
  39. package/dist/esm/presentation/whiteboard/glyphs.js +50 -0
  40. package/dist/esm/presentation/whiteboard/glyphs.js.map +1 -0
  41. package/dist/esm/presentation/whiteboard/inspector.d.ts +100 -0
  42. package/dist/esm/presentation/whiteboard/inspector.d.ts.map +1 -0
  43. package/dist/esm/presentation/whiteboard/inspector.js +753 -0
  44. package/dist/esm/presentation/whiteboard/inspector.js.map +1 -0
  45. package/dist/esm/presentation/whiteboard/linkElement.d.ts +97 -0
  46. package/dist/esm/presentation/whiteboard/linkElement.d.ts.map +1 -0
  47. package/dist/esm/presentation/whiteboard/linkElement.js +327 -0
  48. package/dist/esm/presentation/whiteboard/linkElement.js.map +1 -0
  49. package/dist/esm/presentation/whiteboard/outline.d.ts +89 -0
  50. package/dist/esm/presentation/whiteboard/outline.d.ts.map +1 -0
  51. package/dist/esm/presentation/whiteboard/outline.js +870 -0
  52. package/dist/esm/presentation/whiteboard/outline.js.map +1 -0
  53. package/dist/esm/presentation/whiteboard/peopleMenu.d.ts +44 -0
  54. package/dist/esm/presentation/whiteboard/peopleMenu.d.ts.map +1 -0
  55. package/dist/esm/presentation/whiteboard/peopleMenu.js +440 -0
  56. package/dist/esm/presentation/whiteboard/peopleMenu.js.map +1 -0
  57. package/dist/esm/presentation/whiteboard/settingsMenu.d.ts +13 -0
  58. package/dist/esm/presentation/whiteboard/settingsMenu.d.ts.map +1 -0
  59. package/dist/esm/presentation/whiteboard/settingsMenu.js +155 -0
  60. package/dist/esm/presentation/whiteboard/settingsMenu.js.map +1 -0
  61. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outline.js","names":["_react","_interopRequireWildcard","require","_styledComponents","_elements","_peopleMenu","_Button","_Chip","_ChooseV","_EditableText","_IconButton","_Icons","_List","_Menu","_Signifier","_Tooltip","_Transitions","_Typography","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_extends","assign","bind","arguments","length","apply","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","_objectSpread","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","a","_arrayLikeToArray","toString","slice","constructor","name","Array","from","test","l","iterator","u","next","done","return","isArray","OUTLINE_TYPE_ICONS","exports","circle","CircleIcon","roundedRectangle","RoundedRectangleIcon","triangle","TriangleIcon","postit","NoteIcon","text","TextIcon","freehand","DrawIcon","link","InsertLinkIcon","file","AttachmentIcon","OUTLINE_TYPE_LABELS","OUTLINE_GROUPS","id","OUTLINE_ELEMENTS","type","connections","groupId","locked","OUTLINE_MIN_WIDTH","OUTLINE_MAX_WIDTH","OUTLINE_WIDTH","UNGROUPED","StyledOutlineSidebar","styled","aside","withConfig","displayName","componentId","StyledOutlineResizer","div","StyledOutlineBody","StyledOutlineRow","SELECTION_BLUE","StyledOutlineGroupRow","StyledOutlineChildRow","StyledOutlineToggle","button","StyledOutlineCounter","span","OutlineCounter","_ref","count","createElement","className","Chip","label","backgroundColor","color","size","StyledOutlineSignifiers","StyledOutlineTypeIcon","StyledOutlineName","outlineLabel","element","_element$name","OUTLINE_MENU_LIST_STYLE","padding","OUTLINE_MENU_WIDTH","OutlineMenuSliderStyle","createGlobalStyle","StyledOutlineElementMenu","ARRANGE_ITEMS","Icon","LayerFrontIcon","LayerForwardIcon","LayerBackwardIcon","LayerBackIcon","OutlineElementOptionsMenu","_ref2","onToggleLock","_useState","useState","_useState2","open","setOpen","_useState3","_useState4","view","setView","_useState5","_useState6","isLeft","setIsLeft","_useState7","_useState8","height","setHeight","measure","useCallback","node","offsetHeight","goToArrange","backToIndex","handleClose","indexView","List","style","tabIndex","ListItem","EditIcon","DuplicateIcon","ListSeparator","FolderMoveIcon","onClick","LayersIcon","CaretRightIcon","width","LockIcon","TrashIcon","arrangeView","MenuHeader","title","leftElement","IconButton","variant","ArrowLeftIcon","map","_ref3","key","Fragment","Menu","onOpen","onClose","position","menuClassName","target","undefined","active","TreeDotsIcon","ResizeTransition","in","overflow","SlideLeftRightTransition","direction","ref","OutlineGroupOptionsMenu","_useState9","_useState0","INFO_ROWS","LeftMenuContents","_ref4","sidebarOpen","onToggleSidebar","boardName","onRenameBoard","Tooltip","EditableText","weight","onSave","event","inputProps","maxLength","SidebarLeftIcon","WhiteboardPeopleMenu","StyledSidebarHeader","StyledChooseRow","StyledPanelChooseSlot","StyledInfoPanel","InfoPanelContent","_ref5","Header3","_ref6","_ref7","Caption1","Body2","StyledNewGroupRow","LeftSidebar","_ref8","selectedId","onSelect","activePanel","onPanelChange","_useState1","_useState10","setWidth","_useState11","_useState12","resizing","setResizing","_useState13","_useState14","groups","setGroups","_useState15","_useState16","elements","setElements","_useState17","_useState18","collapsed","setCollapsed","_useState19","_useState20","dragId","setDragId","_useState21","_useState22","dropSpot","setDropSpot","isGroup","some","group","membersOf","toggleCollapsed","current","includes","entry","renameGroup","renameElement","toggleLock","startResize","_event$currentTarget$","_event$currentTarget$2","preventDefault","startX","clientX","startWidth","currentTarget","parentElement","offsetWidth","previousUserSelect","document","body","userSelect","cursor","handleMove","moveEvent","Math","min","max","handleUp","window","removeEventListener","addEventListener","addGroup","concat","Date","now","handleDrop","draggedId","spot","kind","findIndex","_next$splice","splice","_next$splice2","moved","to","_next$splice3","_next$splice4","last","reduce","acc","index","find","rowDragProps","draggable","onDragStart","closest","stopPropagation","onDragEnd","onDragOver","box","getBoundingClientRect","isTopHalf","clientY","top","onDrop","dropClass","renderElementRow","TypeIcon","selected","fill","disabled","Signifier","DependencySmallIcon","tooltipText","LockSmallIcon","Boolean","onMouseDown","role","ChooseV2","required","options","onChange","CollapseExpandSingleIcon","members","isOpen","Button","FolderPlusIcon"],"sources":["../../../../src/presentation/whiteboard/outline.tsx"],"sourcesContent":["import React, { ReactElement, useCallback, useState } from \"react\";\n\nimport styled, { createGlobalStyle } from \"styled-components\";\n\nimport { SELECTION_BLUE } from \"./elements\";\nimport { WhiteboardPeopleMenu } from \"./peopleMenu\";\nimport { Button } from \"../../components/Button\";\nimport { Chip } from \"../../components/Chip\";\nimport { ChooseV2 } from \"../../components/ChooseV2\";\nimport { EditableText } from \"../../components/EditableText\";\nimport { IconButton } from \"../../components/IconButton\";\nimport {\n ArrowLeftIcon,\n AttachmentIcon,\n CaretRightIcon,\n CircleIcon,\n CollapseExpandSingleIcon,\n DependencySmallIcon,\n DrawIcon,\n DuplicateIcon,\n EditIcon,\n FolderMoveIcon,\n FolderPlusIcon,\n InsertLinkIcon,\n LayerBackIcon,\n LayerBackwardIcon,\n LayerForwardIcon,\n LayerFrontIcon,\n LayersIcon,\n LockIcon,\n LockSmallIcon,\n RoundedRectangleIcon,\n SidebarLeftIcon,\n NoteIcon,\n TextIcon,\n TrashIcon,\n TreeDotsIcon,\n TriangleIcon,\n} from \"../../components/Icons\";\nimport { List, ListItem, ListSeparator } from \"../../components/List\";\nimport { Menu, MenuHeader } from \"../../components/Menu\";\nimport { Signifier } from \"../../components/Signifier\";\nimport { Tooltip } from \"../../components/Tooltip\";\nimport {\n ResizeTransition,\n SlideLeftRightTransition,\n} from \"../../components/Transitions\";\nimport { Body2, Caption1, Header3 } from \"../../components/Typography\";\n\n/* ------------------------------------------------------------------ */\n/* Outline sidebar */\n/* ------------------------------------------------------------------ */\n\n/* An OUTLINE, not a layers panel. Whiteboard elements are a flat list today\n with no nesting and no names, so the hierarchy here is AUTHORED rather than\n derived from z-order or spatial containment: the user creates groups, names\n things, and drags to order them, and all of that is persisted.\n Deliberately excluded: stacking order. z-order stays on the element context\n menu (send to front / back / forward / backward) and the sidebar never shows\n or edits it — the outline order and the paint order are different questions,\n and conflating them is what makes layers panels confusing on boards that are\n really structured documents.\n\n The model this prototype stands in for:\n GroupElement a new element type on the single-table-inheritance\n `whiteboard_elements` table — no migration needed, and it\n inherits ops, realtime, undo/redo and trash for free.\n Element.jsx's render switch already returns null by\n default, so a group draws nothing on the canvas. It must be\n filtered out of the spatial index, marquee select and the\n z-order sort.\n name a real authored field, separate from `content` (the text\n painted on the canvas). Needed because the eventual goal is\n exporting the outline as a document, and `content` is empty\n on every freshly drawn shape and absent on freehand.\n outlinePosition\n integer ordering SCOPED PER CONTAINER — groups ordered\n among themselves, elements ordered within their group.\n Named to avoid colliding with `element.position`, which is\n already the {x, y} canvas coordinate. Reordering follows\n the house TaskReorderer contract: the client sends the full\n ordered id list, the server renumbers 1..N in one\n transaction. Here that is a new `reorder` op on the\n existing ops pipeline, so it inherits undo/redo, the id_map\n reconcile and the realtime merge.\n\n ONE level of nesting only. Groups cannot contain groups — an exported\n document does not want arbitrarily deep headings, and multi-level grouping\n is a later, separate model. */\n\nexport type OutlineElementType =\n | \"circle\"\n | \"roundedRectangle\"\n | \"triangle\"\n | \"postit\"\n | \"text\"\n | \"freehand\"\n | \"link\"\n | \"file\";\n\n/* The local `Glyph` type is for this story's hand-drawn SVGs; the DS icons are\n forwardRef components, so the map needs the wider component type. */\nexport type OutlineIcon = React.ComponentType<React.SVGProps<SVGSVGElement>>;\n\nexport const OUTLINE_TYPE_ICONS: Record<OutlineElementType, OutlineIcon> = {\n circle: CircleIcon,\n roundedRectangle: RoundedRectangleIcon,\n triangle: TriangleIcon,\n postit: NoteIcon,\n text: TextIcon,\n freehand: DrawIcon,\n link: InsertLinkIcon,\n file: AttachmentIcon,\n};\n\n/* Fallback label when an element has no name. Deliberately reads as a\n PLACEHOLDER (muted + italic) rather than as a name, because an unnamed\n element exports as nothing — the styling is the warning. */\nexport const OUTLINE_TYPE_LABELS: Record<OutlineElementType, string> = {\n circle: \"Circle\",\n roundedRectangle: \"Rounded Rectangle\",\n triangle: \"Triangle\",\n postit: \"Sticky Note\",\n text: \"Text\",\n freehand: \"Freehand\",\n link: \"Link\",\n file: \"File\",\n};\n\nexport interface OutlineElement {\n id: string;\n /* null name = never named; the row shows the type fallback */\n name: string | null;\n type: OutlineElementType;\n locked?: boolean;\n /* How many WhiteboardConnections touch this element. Already derivable today\n from the connections array (start_element_id / end_element_id), so this\n signifier needs no new data — unlike the name and the grouping. Omitted\n entirely at zero rather than shown as \"0\". */\n connections?: number;\n /* null = ungrouped, and therefore in the implicit bucket at the top */\n groupId: string | null;\n}\n\nexport interface OutlineGroup {\n id: string;\n name: string;\n}\n\n/* Ids prefixed `shape-` / `sticky` are the elements really on the canvas, so\n selection syncs both ways for them. The rest stand in for the parts of a\n bigger board scrolled out of view — a four-element outline would not show\n whether the grouping reads well. */\nexport const OUTLINE_GROUPS: OutlineGroup[] = [\n { id: \"group-discovery\", name: \"Discovery phase\" },\n { id: \"group-sketches\", name: \"Solution sketches\" },\n { id: \"group-questions\", name: \"Open questions\" },\n];\n\nexport const OUTLINE_ELEMENTS: OutlineElement[] = [\n {\n id: \"sticky\",\n name: \"Interview five customers\",\n type: \"postit\",\n connections: 2,\n groupId: \"group-discovery\",\n },\n {\n id: \"shape-rounded\",\n name: \"Problem statement\",\n type: \"roundedRectangle\",\n connections: 3,\n groupId: \"group-discovery\",\n },\n {\n id: \"outline-freehand\",\n name: null,\n type: \"freehand\",\n groupId: \"group-discovery\",\n },\n {\n id: \"shape-circle\",\n name: \"Success metric\",\n type: \"circle\",\n locked: true,\n connections: 1,\n groupId: \"group-discovery\",\n },\n {\n id: \"outline-sketch-link\",\n name: \"Competitor teardown\",\n type: \"link\",\n groupId: \"group-sketches\",\n },\n {\n id: \"outline-sketch-file\",\n name: \"Wireframes v3.pdf\",\n type: \"file\",\n connections: 1,\n groupId: \"group-sketches\",\n },\n {\n id: \"outline-sketch-text\",\n name: null,\n type: \"text\",\n groupId: \"group-sketches\",\n },\n /* A deliberately long name, so the truncation and the right-edge behaviour of\n the signifiers and the counter are visible in the story. */\n {\n id: \"outline-parking\",\n name: \"Parking lot for everything we could not agree on today\",\n type: \"postit\",\n connections: 4,\n locked: true,\n groupId: null,\n },\n {\n id: \"shape-triangle\",\n name: null,\n type: \"triangle\",\n groupId: null,\n },\n {\n id: \"outline-q3\",\n name: \"Revisit in Q3\",\n type: \"text\",\n connections: 12,\n groupId: null,\n },\n];\n\n/* Min is the point below which a group name plus its counter stops being\n readable; max follows the common side-panel rule of thumb of 3x the min, past\n which the panel competes with the canvas for the screen rather than annotating\n it. The default sits just above the min — panels of this sort open narrow and\n are widened on demand, not the other way round. */\nexport const OUTLINE_MIN_WIDTH = 260;\nexport const OUTLINE_MAX_WIDTH = OUTLINE_MIN_WIDTH * 3;\nexport const OUTLINE_WIDTH = 320;\nexport const UNGROUPED = \"__ungrouped__\";\n\nexport const StyledOutlineSidebar = styled.aside`\n flex-shrink: 0;\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n border-right: 1px solid var(--selectable);\n background-color: var(--page-paper-main);\n /* raw text (counters) would otherwise fall back to the browser serif,\n since this Storybook ships no global reset */\n font-family: -apple-system, BlinkMacSystemFont, \"Roboto\", \"Helvetica Neue\",\n Arial, sans-serif;\n`;\n\n/* Grab strip on the RIGHT edge, because the panel is docked left — dragging it\n right widens. It sits outside the row list and uses mouse events rather than\n HTML5 drag, so it can never be mistaken for a row reorder. 3px wide with a\n larger invisible hit area is the usual compromise: easy to grab. The border\n line itself stays the selectable grey until hover paints the active token\n over it. */\nexport const StyledOutlineResizer = styled.div`\n position: absolute;\n top: 0;\n bottom: 0;\n right: -4px;\n width: 8px;\n cursor: col-resize;\n z-index: 2;\n\n &::after {\n content: \"\";\n position: absolute;\n top: 0;\n bottom: 0;\n left: 50%;\n margin-left: -0.5px;\n width: 1px;\n background-color: var(--selectable-active);\n opacity: 0;\n transition: opacity 150ms ease;\n }\n\n &:hover::after,\n &.resizing::after {\n opacity: 1;\n }\n`;\n\nexport const StyledOutlineBody = styled.div`\n flex: 1;\n overflow-y: auto;\n padding: 6px 0 24px;\n`;\n\n/* Rows are bordered, not carded — the outline is a dense list and rounded\n tiles at this density read as clutter. */\n/* Row geometry is My Work's, not something invented for this sidebar: the app's\n `ListItem` is `tw-w-full tw-flex tw-items-center tw-h-10` — a fixed 40px row —\n with `border-bottom: 1px solid var(--color-theme-300)` from `.list-item-wrapper`\n and `background-color: var(--color-theme-200)` on `.task-list-item:hover`.\n Reusing those exact values is what makes the outline read as an ActiveCollab\n list rather than as a bespoke panel. */\nexport const StyledOutlineRow = styled.div`\n display: flex;\n align-items: center;\n height: 40px;\n box-sizing: border-box;\n padding-right: 8px;\n cursor: pointer;\n position: relative;\n border-bottom: 1px solid var(--color-theme-300);\n\n &:hover {\n background-color: var(--color-theme-200);\n }\n\n &.selected {\n background-color: var(--color-theme-200);\n box-shadow: inset 2px 0 0 0 ${SELECTION_BLUE};\n }\n\n /* The drop indicator is drawn ON the row rather than inserted as a sibling\n node, so showing it can never reflow the list mid-drag. */\n &.drop-before::after,\n &.drop-after::after {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n height: 2px;\n background-color: ${SELECTION_BLUE};\n z-index: 1;\n }\n\n &.drop-before::after {\n top: -1px;\n }\n\n &.drop-after::after {\n bottom: -1px;\n }\n\n /* Dropping INTO a group targets the whole header, so it highlights rather\n than showing an insertion line. */\n &.drop-into {\n background-color: var(--color-theme-200);\n box-shadow: inset 0 0 0 1px ${SELECTION_BLUE};\n }\n\n &.dragging {\n opacity: 0.4;\n }\n\n /* The name is the ONLY flexible cell (flex 0 1 auto plus min-width 0), so it\n sits at its natural width while short — the count and the signifiers then\n read as belonging to it, immediately after it, the way My Work does — and\n ellipsizes once the row runs out of room, at which point whatever follows\n it comes to rest against the right edge. */\n .outline-trailing {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n }\n\n /* Pushes the options menu to the right edge without a spacer node. */\n .outline-options {\n margin-left: auto;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n padding-left: 4px;\n }\n\n /* Hover-only reveal, the house convention: the .task-list-item:hover\n .options-target-menu-show rule in list-view.less, .show-on-hover in the\n ListView story. The .open class keeps the trigger visible while its menu is\n up, so it does not fade out from under the pointer. */\n .outline-hover {\n opacity: 0;\n transition: opacity 200ms ease;\n }\n\n &:hover .outline-hover,\n .outline-hover.open,\n .outline-hover:focus-within {\n opacity: 1;\n }\n`;\n\n/* 8px so the 24px toggle sits in the same left rail as the app's ExpandToggle,\n scaled down from My Work's 24px page margin for a 300px panel. */\nexport const StyledOutlineGroupRow = styled(StyledOutlineRow)`\n padding-left: 8px;\n`;\n\n/* 32px = where the group's 24px toggle ends. The child's type icon starts\n exactly there, putting the child NAME one 16px step right of the group name —\n enough to read as nested without a staircase, which is all one level of\n nesting ever needs. */\nexport const StyledOutlineChildRow = styled(StyledOutlineRow)`\n padding-left: 32px;\n`;\n\n/* Matches the app's ExpandToggle exactly: CollapseExpandSingleIcon at its\n intrinsic 24px, rotate(0) expanded and rotate(180deg) collapsed, over\n `transition-transform` 200ms. */\nexport const StyledOutlineToggle = styled.button`\n border: 0;\n padding: 0;\n margin: 0 8px 0 0;\n background: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n flex-shrink: 0;\n transition: transform 200ms ease;\n\n &.collapsed {\n transform: rotate(180deg);\n }\n`;\n\n/* Same treatment as the count badges on the System Settings pages — a Chip on\n var(--color-theme-300) with var(--color-theme-900) text — at the 18px small\n size, which sits inside a 40px row without crowding it. Wrapped so the 8px\n left margin is one decision rather than repeated at each call site: it is what\n keeps the chip a fixed distance from the name whether the name is an\n EditableText (whose input carries its own 4px padding) or plain Typography. */\nexport const StyledOutlineCounter = styled.span`\n display: flex;\n align-items: center;\n flex-shrink: 0;\n margin-left: 8px;\n`;\n\nexport const OutlineCounter = ({ count }: { count: number }): ReactElement => (\n <StyledOutlineCounter className=\"outline-trailing\">\n <Chip\n label={String(count)}\n backgroundColor=\"var(--color-theme-300)\"\n color=\"var(--color-theme-900)\"\n size=\"small\"\n />\n </StyledOutlineCounter>\n);\n\n/* The 2px separator dot is a house convention rather than part of the DS\n Signifier: `_components.task-signifiers.less` puts it on `.c-signifier:before`\n at 2px square, `var(--color-theme-600)`, `margin: 0 6px`, with no\n `:not(:first-child)` guard — so the first signifier gets a leading dot too,\n which is exactly what separates it from the name. */\nexport const StyledOutlineSignifiers = styled.span`\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n\n .c-signifier::before {\n content: \"\";\n flex-shrink: 0;\n width: 2px;\n height: 2px;\n margin: 0 6px;\n border-radius: 100%;\n background-color: var(--color-theme-600);\n }\n`;\n\n/* The DS EditableText is an always-live input styled as text — it reveals its\n border on hover and focus rather than swapping into an edit mode. That makes\n it a click-to-edit target, which competes with the row's own click. Element\n rows therefore keep it `disabled` until the row is SELECTED: the first click\n selects, and only then does the name accept a caret. Group rows have no\n selected state, so their name is always live (matching the task-list header\n in ListView) and the toggle, count and row padding carry the collapse. */\n/* 24px reserved so the icon column is stable whether or not a type icon is a\n perfect 16px square, and so it lines up with the group toggle above it. */\nexport const StyledOutlineTypeIcon = styled.span`\n display: flex;\n align-items: center;\n justify-content: flex-start;\n width: 24px;\n flex-shrink: 0;\n`;\n\nexport const StyledOutlineName = styled.div`\n display: flex;\n align-items: center;\n flex: 0 1 auto;\n min-width: 0;\n\n /* EditableText's wrapper is an inline-block sized by a hidden measuring span.\n max-width alone is what makes it ellipsize: it caps the wrapper at the\n shrunk cell while leaving the flex basis as the text's own width, so a SHORT\n name still only takes the room it needs and the count stays tucked against\n it. Adding width: 100% here would make every name greedy and push the count\n to the right edge on every row. */\n > div {\n max-width: 100%;\n }\n\n /* The Ungrouped label is plain Typography, not an EditableText, so it needs\n its own truncation — and the same 4px side padding EditableText's input\n carries. Without that padding its box ends 4px earlier than an editable\n group name's, which is exactly why the Ungrouped counter sat tighter to its\n label than every other row's did. */\n > .typography {\n display: block;\n padding-left: 4px;\n padding-right: 4px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n\n &.unnamed .presentation,\n &.unnamed input {\n font-style: italic;\n color: var(--color-theme-500);\n }\n`;\n\nexport const outlineLabel = (element: OutlineElement): string =>\n element.name ?? OUTLINE_TYPE_LABELS[element.type];\n\n/* Both menus follow the shared TaskListOptionsMenu shape: Menu in normal mode\n (260px bubble), an IconButton + TreeDots trigger whose `.open` class keeps it\n visible while the menu is up, and a flat List of leading-icon ListItems\n grouped by ListSeparator. Every row is an icon plus a caption — no submenu\n rows and no icon-only action strip, so there is exactly one way to read the\n menu.\n\n Note where STACKING lives: bring to front / send to back are here, not in the\n outline. The outline orders the document; the menu orders the pixels. Keeping\n them apart is the whole reason the sidebar can be an outline rather than a\n layers panel. */\nexport const OUTLINE_MENU_LIST_STYLE = { padding: \"8px 0\" };\nexport const OUTLINE_MENU_WIDTH = 264;\n\n/* Same drill-in mechanics as the board Settings menu: the paper clips the two\n sliding panels and gives them a positioning context. */\nexport const OutlineMenuSliderStyle = createGlobalStyle`\n .c-simple-menu__paper.outline-element-menu {\n overflow: hidden;\n position: relative;\n }\n`;\n\nexport const StyledOutlineElementMenu = styled.div`\n .drill-item {\n justify-content: space-between;\n }\n\n .drill-item .opt-left {\n display: flex;\n align-items: center;\n min-width: 0;\n }\n\n /* ListItem spaces its leading icon with a DIRECT-child rule\n (> svg:first-child { margin-right: 8px }). Arrange's icon sits one level\n down inside .opt-left so the caret can be pushed to the far right, which\n puts it outside that selector — hence its caption sat 8px left of every\n other item's. Restate the same value rather than restructuring the row. */\n .drill-item .opt-left > svg:first-child {\n margin-right: 8px;\n }\n\n .drill-item .drill-caret {\n flex-shrink: 0;\n fill: var(--color-theme-600);\n }\n`;\n\nexport const ARRANGE_ITEMS: { label: string; Icon: OutlineIcon }[] = [\n { label: \"Bring to Front\", Icon: LayerFrontIcon },\n { label: \"Send Forward\", Icon: LayerForwardIcon },\n { label: \"Send Backward\", Icon: LayerBackwardIcon },\n { label: \"Send to Back\", Icon: LayerBackIcon },\n];\n\nexport interface OutlineElementOptionsMenuProps {\n locked: boolean;\n onToggleLock: () => void;\n}\n\nexport const OutlineElementOptionsMenu = ({\n locked,\n onToggleLock,\n}: OutlineElementOptionsMenuProps): ReactElement => {\n const [open, setOpen] = useState(false);\n const [view, setView] = useState<\"index\" | \"arrange\">(\"index\");\n const [isLeft, setIsLeft] = useState(true);\n const [height, setHeight] = useState(0);\n\n const measure = useCallback((node: HTMLDivElement | null) => {\n if (node) {\n setHeight(node.offsetHeight);\n }\n }, []);\n\n const goToArrange = (): void => {\n setView(\"arrange\");\n setIsLeft(true);\n };\n\n const backToIndex = (): void => {\n setView(\"index\");\n setIsLeft(false);\n };\n\n const handleClose = (): void => {\n setOpen(false);\n setView(\"index\");\n setIsLeft(true);\n };\n\n const indexView = (\n <StyledOutlineElementMenu>\n <List style={OUTLINE_MENU_LIST_STYLE} tabIndex={-1}>\n <ListItem>\n <EditIcon />\n Rename\n </ListItem>\n <ListItem>\n <DuplicateIcon />\n Duplicate\n </ListItem>\n <ListSeparator />\n <ListItem>\n <FolderMoveIcon />\n Move to Group\n </ListItem>\n {/* Stacking drills in rather than sitting flat, so the four z-order\n actions cannot be mistaken for outline ordering. */}\n <ListItem className=\"drill-item\" onClick={goToArrange}>\n <span className=\"opt-left\">\n <LayersIcon />\n Arrange\n </span>\n <CaretRightIcon className=\"drill-caret\" width={16} height={16} />\n </ListItem>\n <ListSeparator />\n {/* Really toggles the row's lock signifier, so the menu and the row\n cannot disagree about state — the point of wiring it up rather than\n leaving it a no-op like the rest. */}\n <ListItem\n onClick={() => {\n onToggleLock();\n handleClose();\n }}\n >\n <LockIcon />\n {locked ? \"Unlock\" : \"Lock\"}\n </ListItem>\n <ListSeparator />\n <ListItem>\n <TrashIcon />\n Move to Trash\n </ListItem>\n </List>\n </StyledOutlineElementMenu>\n );\n\n const arrangeView = (\n <StyledOutlineElementMenu>\n <MenuHeader\n title=\"Arrange\"\n leftElement={\n <IconButton\n type=\"button\"\n variant=\"text gray\"\n size=\"small\"\n onClick={backToIndex}\n aria-label=\"Back\"\n >\n <ArrowLeftIcon />\n </IconButton>\n }\n />\n <List style={OUTLINE_MENU_LIST_STYLE} tabIndex={-1}>\n {ARRANGE_ITEMS.map(({ label, Icon }) => (\n <ListItem key={label} onClick={backToIndex}>\n <Icon />\n {label}\n </ListItem>\n ))}\n </List>\n </StyledOutlineElementMenu>\n );\n\n return (\n <>\n <OutlineMenuSliderStyle />\n <Menu\n open={open}\n onOpen={() => setOpen(true)}\n onClose={handleClose}\n position=\"bottom-end\"\n menuClassName=\"outline-element-menu\"\n target={\n <IconButton\n type=\"button\"\n variant=\"text gray\"\n className={open ? \"open\" : undefined}\n active={open}\n >\n <TreeDotsIcon />\n </IconButton>\n }\n >\n <ResizeTransition in style={{ height, width: OUTLINE_MENU_WIDTH }}>\n <div style={{ position: \"relative\", overflow: \"hidden\" }}>\n <SlideLeftRightTransition\n in={view === \"index\"}\n direction={isLeft ? \"left\" : \"right\"}\n >\n <div ref={measure} style={{ width: OUTLINE_MENU_WIDTH }}>\n {indexView}\n </div>\n </SlideLeftRightTransition>\n <SlideLeftRightTransition\n in={view === \"arrange\"}\n direction={isLeft ? \"left\" : \"right\"}\n >\n <div ref={measure} style={{ width: OUTLINE_MENU_WIDTH }}>\n {arrangeView}\n </div>\n </SlideLeftRightTransition>\n </div>\n </ResizeTransition>\n </Menu>\n </>\n );\n};\n\nexport const OutlineGroupOptionsMenu = (): ReactElement => {\n const [open, setOpen] = useState(false);\n\n return (\n <Menu\n open={open}\n onOpen={() => setOpen(true)}\n onClose={() => setOpen(false)}\n position=\"bottom-end\"\n target={\n <IconButton\n type=\"button\"\n variant=\"text gray\"\n className={open ? \"open\" : undefined}\n active={open}\n >\n <TreeDotsIcon />\n </IconButton>\n }\n >\n <List style={OUTLINE_MENU_LIST_STYLE} tabIndex={-1}>\n <ListItem>\n <EditIcon />\n Rename\n </ListItem>\n <ListItem>\n <DuplicateIcon />\n Duplicate\n </ListItem>\n <ListSeparator />\n <ListItem>\n <FolderMoveIcon />\n Ungroup\n </ListItem>\n <ListSeparator />\n <ListItem>\n <TrashIcon />\n Move to Trash\n </ListItem>\n </List>\n </Menu>\n );\n};\n\nexport type DropSpot =\n | { kind: \"before\" | \"after\"; id: string }\n | { kind: \"into\"; id: string };\n\nexport type LeftPanel = \"info\" | \"outline\";\n\nexport const INFO_ROWS: [string, string][] = [\n [\"Owner\", \"Ilija Studen\"],\n [\"Created\", \"Jul 30, 2026\"],\n [\"Members\", \"12\"],\n [\"Elements\", \"48\"],\n [\"Last edited\", \"2 hours ago\"],\n];\n\n/* The upper-left menu — exit fullscreen, board name, the Show / Hide Sidebar\n toggle and the people menu. It renders in one of two places: floating over the\n board while the sidebar is closed, and inside the sidebar's header once it\n opens, so the controls follow the panel rather than being shoved aside by it. */\nexport const LeftMenuContents = ({\n sidebarOpen,\n onToggleSidebar,\n boardName,\n onRenameBoard,\n}: {\n sidebarOpen: boolean;\n onToggleSidebar: () => void;\n boardName: string;\n onRenameBoard: (name: string) => void;\n}): ReactElement => (\n <>\n <Tooltip title=\"Back to Whiteboards\">\n <IconButton variant=\"text gray\">\n <ArrowLeftIcon />\n </IconButton>\n </Tooltip>\n <span className=\"wb-title\">\n <EditableText\n value={boardName}\n variant=\"Title 2\"\n weight=\"bold\"\n onSave={(event) => onRenameBoard(event.target.value)}\n inputProps={{ maxLength: 150 }}\n />\n </span>\n {/* One control for the whole left dock — no separate Info / Outline icons,\n and no active state, since the panel being on screen is its own tell. */}\n <Tooltip title={sidebarOpen ? \"Hide Sidebar\" : \"Show Sidebar\"}>\n <IconButton variant=\"text gray\" onClick={onToggleSidebar}>\n <SidebarLeftIcon />\n </IconButton>\n </Tooltip>\n <WhiteboardPeopleMenu />\n </>\n);\n\n/* When the sidebar is open the left menu becomes its header: same controls, but\n laid out as a flat 60px bar with the board name flexing to fill the middle. */\nexport const StyledSidebarHeader = styled.div`\n display: flex;\n align-items: center;\n gap: 2px;\n height: 60px;\n padding: 0 12px;\n box-sizing: border-box;\n flex-shrink: 0;\n\n .wb-title {\n flex: 1;\n min-width: 0;\n margin: 0 4px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n`;\n\n/* Centered segmented switch between the dock's two panels; the active one is\n highlighted. This row replaces the old per-panel header. */\nexport const StyledChooseRow = styled.div`\n display: flex;\n justify-content: center;\n padding: 12px 16px;\n flex-shrink: 0;\n`;\n\n/* The app renders the switch through ChooseV2 in a fixed 224px slot with the\n button group centered inside it (the group alone is narrower than the slot,\n and ChooseV2's own flex container leaves it at the left edge). */\nexport const StyledPanelChooseSlot = styled.div`\n width: 224px;\n\n .c-btn-group {\n margin: 0 auto;\n }\n`;\n\nexport const StyledInfoPanel = styled.div`\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n\n .info-meta {\n display: flex;\n flex-direction: column;\n gap: 10px;\n }\n\n .info-row {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n gap: 12px;\n }\n`;\n\n/* Mock only — the Info panel's content is a placeholder while the two-panel dock\n is explored; the fields here are not the point. */\nexport const InfoPanelContent = ({\n boardName,\n}: {\n boardName: string;\n}): ReactElement => (\n <StyledInfoPanel>\n <Header3 color=\"primary\">{boardName}</Header3>\n <div className=\"info-meta\">\n {INFO_ROWS.map(([label, value]) => (\n <div className=\"info-row\" key={label}>\n <Caption1 color=\"secondary\">{label}</Caption1>\n <Body2 weight=\"medium\">{value}</Body2>\n </div>\n ))}\n </div>\n </StyledInfoPanel>\n);\n\n/* Centered text button below the group list — same text-gray treatment as the\n old header icon (no outline, gray fill on hover), now with a label since it is\n no longer squeezed into a header. */\nexport const StyledNewGroupRow = styled.div`\n display: flex;\n justify-content: center;\n padding: 12px 0 4px;\n\n svg {\n width: 16px;\n height: 16px;\n margin-right: 6px;\n }\n`;\n\nexport interface LeftSidebarProps {\n selectedId: string | null;\n onSelect: (id: string | null) => void;\n activePanel: LeftPanel;\n onPanelChange: (panel: LeftPanel) => void;\n sidebarOpen: boolean;\n onToggleSidebar: () => void;\n boardName: string;\n onRenameBoard: (name: string) => void;\n}\n\nexport const LeftSidebar = ({\n selectedId,\n onSelect,\n activePanel,\n onPanelChange,\n sidebarOpen,\n onToggleSidebar,\n boardName,\n onRenameBoard,\n}: LeftSidebarProps): ReactElement => {\n const [width, setWidth] = useState(OUTLINE_WIDTH);\n const [resizing, setResizing] = useState(false);\n const [groups, setGroups] = useState<OutlineGroup[]>(OUTLINE_GROUPS);\n const [elements, setElements] = useState<OutlineElement[]>(OUTLINE_ELEMENTS);\n const [collapsed, setCollapsed] = useState<string[]>([\"group-sketches\"]);\n const [dragId, setDragId] = useState<string | null>(null);\n const [dropSpot, setDropSpot] = useState<DropSpot | null>(null);\n\n const isGroup = useCallback(\n (id: string) => groups.some((group) => group.id === id),\n [groups]\n );\n\n const membersOf = useCallback(\n (groupId: string | null) =>\n elements.filter((element) => element.groupId === groupId),\n [elements]\n );\n\n const toggleCollapsed = useCallback((id: string) => {\n setCollapsed((current) =>\n current.includes(id)\n ? current.filter((entry) => entry !== id)\n : [...current, id]\n );\n }, []);\n\n const renameGroup = useCallback((id: string, name: string) => {\n setGroups((current) =>\n current.map((group) => (group.id === id ? { ...group, name } : group))\n );\n }, []);\n\n const renameElement = useCallback((id: string, name: string) => {\n setElements((current) =>\n current.map((element) =>\n element.id === id ? { ...element, name } : element\n )\n );\n }, []);\n\n const toggleLock = useCallback((id: string) => {\n setElements((current) =>\n current.map((element) =>\n element.id === id ? { ...element, locked: !element.locked } : element\n )\n );\n }, []);\n\n /* The gesture is tracked from its ORIGIN (pointer x + width at mousedown)\n rather than from the pointer's absolute position, so the panel edge stays\n locked to the cursor even once the width clamps at a bound — otherwise the\n pointer drifts away from the edge and the panel jumps when it comes back.\n Listeners go on window so the drag survives the pointer leaving the strip,\n and body user-select is suspended so dragging does not select the rows. */\n const startResize = useCallback((event: React.MouseEvent) => {\n event.preventDefault();\n const startX = event.clientX;\n const startWidth = event.currentTarget.parentElement?.offsetWidth ?? 0;\n const previousUserSelect = document.body.style.userSelect;\n\n setResizing(true);\n document.body.style.userSelect = \"none\";\n document.body.style.cursor = \"col-resize\";\n\n const handleMove = (moveEvent: MouseEvent): void => {\n const next = startWidth + (moveEvent.clientX - startX);\n setWidth(Math.min(OUTLINE_MAX_WIDTH, Math.max(OUTLINE_MIN_WIDTH, next)));\n };\n\n const handleUp = (): void => {\n setResizing(false);\n document.body.style.userSelect = previousUserSelect;\n document.body.style.cursor = \"\";\n window.removeEventListener(\"mousemove\", handleMove);\n window.removeEventListener(\"mouseup\", handleUp);\n };\n\n window.addEventListener(\"mousemove\", handleMove);\n window.addEventListener(\"mouseup\", handleUp);\n }, []);\n\n const addGroup = useCallback(() => {\n setGroups((current) => [\n ...current,\n { id: `group-${Date.now()}`, name: \"New group\" },\n ]);\n }, []);\n\n /* Reorder mirrors the server contract: splice the moved entry into its new\n slot, then treat the resulting array order AS the 1..N renumbering the\n server would write back. Groups reorder among groups; an element moves\n within or between containers, and its groupId follows the drop target —\n which is the whole of \"one level of nesting\" as an invariant, since a\n group is never a valid child. */\n const handleDrop = useCallback(() => {\n const draggedId = dragId;\n const spot = dropSpot;\n\n setDragId(null);\n setDropSpot(null);\n\n if (!draggedId || !spot || draggedId === spot.id) {\n return;\n }\n\n if (isGroup(draggedId)) {\n /* a group can only land among groups, never inside one */\n if (spot.kind === \"into\" || !isGroup(spot.id)) {\n return;\n }\n\n setGroups((current) => {\n const from = current.findIndex((group) => group.id === draggedId);\n const next = [...current];\n const [moved] = next.splice(from, 1);\n const to = next.findIndex((group) => group.id === spot.id);\n\n next.splice(spot.kind === \"before\" ? to : to + 1, 0, moved);\n\n return next;\n });\n\n return;\n }\n\n setElements((current) => {\n const from = current.findIndex((element) => element.id === draggedId);\n const next = [...current];\n const [moved] = next.splice(from, 1);\n\n if (spot.kind === \"into\") {\n const groupId = spot.id === UNGROUPED ? null : spot.id;\n const last = next.reduce(\n (acc, element, index) => (element.groupId === groupId ? index : acc),\n -1\n );\n\n next.splice(last + 1, 0, { ...moved, groupId });\n\n return next;\n }\n\n const target = next.find((element) => element.id === spot.id);\n\n if (!target) {\n return current;\n }\n\n const to = next.findIndex((element) => element.id === spot.id);\n\n next.splice(spot.kind === \"before\" ? to : to + 1, 0, {\n ...moved,\n groupId: target.groupId,\n });\n\n return next;\n });\n }, [dragId, dropSpot, isGroup]);\n\n const rowDragProps = useCallback(\n (id: string) => ({\n draggable: true,\n onDragStart: (event: React.DragEvent) => {\n /* A live EditableText input sits inside the row, and dragging a text\n selection inside it must not turn into a row reorder. */\n if ((event.target as HTMLElement).closest(\"input\")) {\n event.preventDefault();\n\n return;\n }\n\n event.stopPropagation();\n setDragId(id);\n },\n onDragEnd: () => {\n setDragId(null);\n setDropSpot(null);\n },\n onDragOver: (event: React.DragEvent) => {\n if (!dragId || dragId === id) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n const box = event.currentTarget.getBoundingClientRect();\n const isTopHalf = event.clientY - box.top < box.height / 2;\n\n /* an element dragged onto a GROUP header joins that group; the\n insertion halves are reserved for reordering groups themselves */\n if (isGroup(id) && !isGroup(dragId)) {\n setDropSpot({ kind: \"into\", id });\n\n return;\n }\n\n setDropSpot({ kind: isTopHalf ? \"before\" : \"after\", id });\n },\n onDrop: (event: React.DragEvent) => {\n event.preventDefault();\n event.stopPropagation();\n handleDrop();\n },\n }),\n [dragId, handleDrop, isGroup]\n );\n\n const dropClass = useCallback(\n (id: string) => {\n if (dragId === id) {\n return \"dragging\";\n }\n\n if (!dropSpot || dropSpot.id !== id) {\n return \"\";\n }\n\n return `drop-${dropSpot.kind}`;\n },\n [dragId, dropSpot]\n );\n\n const renderElementRow = (element: OutlineElement): ReactElement => {\n const TypeIcon = OUTLINE_TYPE_ICONS[element.type];\n const selected = element.id === selectedId;\n\n return (\n <StyledOutlineChildRow\n key={element.id}\n className={`${selected ? \"selected\" : \"\"} ${dropClass(element.id)}`}\n onClick={() => onSelect(element.id)}\n {...rowDragProps(element.id)}\n >\n <StyledOutlineTypeIcon>\n <TypeIcon\n width={16}\n height={16}\n fill={\n element.name ? \"var(--color-theme-700)\" : \"var(--color-theme-500)\"\n }\n />\n </StyledOutlineTypeIcon>\n <StyledOutlineName className={element.name ? \"\" : \"unnamed\"}>\n <EditableText\n value={outlineLabel(element)}\n variant=\"Body 2\"\n weight=\"medium\"\n disabled={!selected}\n onSave={(event) => renameElement(element.id, event.target.value)}\n inputProps={{ maxLength: 150 }}\n />\n </StyledOutlineName>\n {element.locked || element.connections ? (\n <StyledOutlineSignifiers className=\"outline-trailing\">\n {element.connections ? (\n <Signifier\n type={DependencySmallIcon}\n value={element.connections}\n tooltipText={`${element.connections} ${\n element.connections === 1 ? \"connection\" : \"connections\"\n }`}\n />\n ) : null}\n {element.locked ? (\n <Signifier type={LockSmallIcon} tooltipText=\"Locked\" />\n ) : null}\n </StyledOutlineSignifiers>\n ) : null}\n <span className=\"outline-options outline-hover\">\n <OutlineElementOptionsMenu\n locked={Boolean(element.locked)}\n onToggleLock={() => toggleLock(element.id)}\n />\n </span>\n </StyledOutlineChildRow>\n );\n };\n\n return (\n <StyledOutlineSidebar style={{ width }}>\n <StyledOutlineResizer\n className={resizing ? \"resizing\" : \"\"}\n onMouseDown={startResize}\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-label=\"Resize outline\"\n />\n\n {/* The upper-left menu, relocated into the panel header once it is open. */}\n <StyledSidebarHeader>\n <LeftMenuContents\n sidebarOpen={sidebarOpen}\n onToggleSidebar={onToggleSidebar}\n boardName={boardName}\n onRenameBoard={onRenameBoard}\n />\n </StyledSidebarHeader>\n\n <StyledChooseRow>\n <StyledPanelChooseSlot>\n <ChooseV2\n required\n options={[\n { id: \"info\", name: \"Info\" },\n { id: \"outline\", name: \"Outline\" },\n ]}\n selected={[activePanel]}\n onChange={(selected) => onPanelChange(selected[0] as LeftPanel)}\n />\n </StyledPanelChooseSlot>\n </StyledChooseRow>\n\n {activePanel === \"info\" ? (\n <InfoPanelContent boardName={boardName} />\n ) : null}\n\n {activePanel === \"outline\" ? (\n <StyledOutlineBody>\n {/* Ungrouped leads the list rather than trailing it. An element only\n reaches a group deliberately, so the bucket is where everything\n starts out and where new work lands — burying it under every group\n would hide the one section that is always changing. It is still NOT\n an entity: no rename, no reorder, no options menu. Which means it can\n never carry a heading into an exported document, so anything worth\n exporting has to be moved into a real group first. */}\n <StyledOutlineGroupRow\n className={\n dropSpot?.kind === \"into\" && dropSpot.id === UNGROUPED\n ? \"drop-into\"\n : \"\"\n }\n onClick={() => toggleCollapsed(UNGROUPED)}\n onDragOver={(event) => {\n if (!dragId || isGroup(dragId)) {\n return;\n }\n\n event.preventDefault();\n setDropSpot({ kind: \"into\", id: UNGROUPED });\n }}\n onDrop={(event) => {\n event.preventDefault();\n handleDrop();\n }}\n >\n <StyledOutlineToggle\n type=\"button\"\n className={collapsed.includes(UNGROUPED) ? \"collapsed\" : \"\"}\n aria-label=\"Toggle ungrouped\"\n onClick={(event) => {\n event.stopPropagation();\n toggleCollapsed(UNGROUPED);\n }}\n >\n <CollapseExpandSingleIcon fill=\"var(--color-theme-700)\" />\n </StyledOutlineToggle>\n <StyledOutlineName>\n <Header3 color=\"primary\">Ungrouped</Header3>\n </StyledOutlineName>\n <OutlineCounter count={membersOf(null).length} />\n </StyledOutlineGroupRow>\n\n {collapsed.includes(UNGROUPED)\n ? null\n : membersOf(null).map(renderElementRow)}\n\n {groups.map((group) => {\n const members = membersOf(group.id);\n const isOpen = !collapsed.includes(group.id);\n\n return (\n <React.Fragment key={group.id}>\n <StyledOutlineGroupRow\n className={dropClass(group.id)}\n onClick={() => toggleCollapsed(group.id)}\n {...rowDragProps(group.id)}\n >\n <StyledOutlineToggle\n type=\"button\"\n className={isOpen ? \"\" : \"collapsed\"}\n aria-label={isOpen ? \"Collapse group\" : \"Expand group\"}\n onClick={(event) => {\n event.stopPropagation();\n toggleCollapsed(group.id);\n }}\n >\n <CollapseExpandSingleIcon fill=\"var(--color-theme-700)\" />\n </StyledOutlineToggle>\n <StyledOutlineName\n onClick={(event) => event.stopPropagation()}\n >\n <EditableText\n value={group.name}\n variant=\"Header 3\"\n weight=\"bold\"\n onSave={(event) =>\n renameGroup(group.id, event.target.value)\n }\n inputProps={{ maxLength: 150 }}\n />\n </StyledOutlineName>\n <OutlineCounter count={members.length} />\n <span className=\"outline-options outline-hover\">\n <OutlineGroupOptionsMenu />\n </span>\n </StyledOutlineGroupRow>\n\n {isOpen ? members.map(renderElementRow) : null}\n </React.Fragment>\n );\n })}\n\n <StyledNewGroupRow>\n <Button variant=\"text gray\" onClick={addGroup}>\n <FolderPlusIcon />\n New Group\n </Button>\n </StyledNewGroupRow>\n </StyledOutlineBody>\n ) : null}\n </StyledOutlineSidebar>\n );\n};\n"],"mappings":"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","ignoreList":[]}