@strapi/admin 5.27.0 → 5.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/dist/admin/admin/src/components/DragLayer.js +67 -0
  2. package/dist/admin/admin/src/components/DragLayer.js.map +1 -0
  3. package/dist/admin/admin/src/components/DragLayer.mjs +64 -0
  4. package/dist/admin/admin/src/components/DragLayer.mjs.map +1 -0
  5. package/dist/admin/admin/src/components/FormInputs/Json.js +1 -1
  6. package/dist/admin/admin/src/components/FormInputs/Json.js.map +1 -1
  7. package/dist/admin/admin/src/components/FormInputs/Json.mjs +1 -1
  8. package/dist/admin/admin/src/components/FormInputs/Json.mjs.map +1 -1
  9. package/dist/admin/admin/src/components/GapDropZone.js +292 -0
  10. package/dist/admin/admin/src/components/GapDropZone.js.map +1 -0
  11. package/dist/admin/admin/src/components/GapDropZone.mjs +268 -0
  12. package/dist/admin/admin/src/components/GapDropZone.mjs.map +1 -0
  13. package/dist/admin/admin/src/components/ResizeIndicator.js +353 -0
  14. package/dist/admin/admin/src/components/ResizeIndicator.js.map +1 -0
  15. package/dist/admin/admin/src/components/ResizeIndicator.mjs +332 -0
  16. package/dist/admin/admin/src/components/ResizeIndicator.mjs.map +1 -0
  17. package/dist/admin/admin/src/components/SubNav.js +9 -2
  18. package/dist/admin/admin/src/components/SubNav.js.map +1 -1
  19. package/dist/admin/admin/src/components/SubNav.mjs +9 -2
  20. package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
  21. package/dist/admin/admin/src/components/WidgetRoot.js +216 -0
  22. package/dist/admin/admin/src/components/WidgetRoot.js.map +1 -0
  23. package/dist/admin/admin/src/components/WidgetRoot.mjs +195 -0
  24. package/dist/admin/admin/src/components/WidgetRoot.mjs.map +1 -0
  25. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  26. package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
  27. package/dist/admin/admin/src/features/Widgets.js +276 -0
  28. package/dist/admin/admin/src/features/Widgets.js.map +1 -0
  29. package/dist/admin/admin/src/features/Widgets.mjs +255 -0
  30. package/dist/admin/admin/src/features/Widgets.mjs.map +1 -0
  31. package/dist/admin/admin/src/hooks/useAPIErrorHandler.js +1 -1
  32. package/dist/admin/admin/src/hooks/useAPIErrorHandler.js.map +1 -1
  33. package/dist/admin/admin/src/hooks/useAPIErrorHandler.mjs +1 -1
  34. package/dist/admin/admin/src/hooks/useAPIErrorHandler.mjs.map +1 -1
  35. package/dist/admin/admin/src/pages/Home/HomePage.js +160 -91
  36. package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
  37. package/dist/admin/admin/src/pages/Home/HomePage.mjs +162 -93
  38. package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
  39. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js +189 -0
  40. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js.map +1 -0
  41. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.mjs +168 -0
  42. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.mjs.map +1 -0
  43. package/dist/admin/admin/src/services/homepage.js +11 -4
  44. package/dist/admin/admin/src/services/homepage.js.map +1 -1
  45. package/dist/admin/admin/src/services/homepage.mjs +11 -4
  46. package/dist/admin/admin/src/services/homepage.mjs.map +1 -1
  47. package/dist/admin/admin/src/translations/en.json.js +8 -1
  48. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  49. package/dist/admin/admin/src/translations/en.json.mjs +8 -1
  50. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  51. package/dist/admin/admin/src/translations/uk.json.js +9 -9
  52. package/dist/admin/admin/src/translations/uk.json.mjs +9 -9
  53. package/dist/admin/admin/src/utils/resizeHandlers.js +109 -0
  54. package/dist/admin/admin/src/utils/resizeHandlers.js.map +1 -0
  55. package/dist/admin/admin/src/utils/resizeHandlers.mjs +100 -0
  56. package/dist/admin/admin/src/utils/resizeHandlers.mjs.map +1 -0
  57. package/dist/admin/admin/src/utils/widgetLayout.js +293 -0
  58. package/dist/admin/admin/src/utils/widgetLayout.js.map +1 -0
  59. package/dist/admin/admin/src/utils/widgetLayout.mjs +273 -0
  60. package/dist/admin/admin/src/utils/widgetLayout.mjs.map +1 -0
  61. package/dist/admin/src/components/DragLayer.d.ts +8 -4
  62. package/dist/admin/src/components/GapDropZone.d.ts +36 -0
  63. package/dist/admin/src/components/ResizeIndicator.d.ts +12 -0
  64. package/dist/admin/src/components/SubNav.d.ts +1 -1
  65. package/dist/admin/src/components/WidgetRoot.d.ts +14 -0
  66. package/dist/admin/src/features/Tracking.d.ts +1 -1
  67. package/dist/admin/src/features/Widgets.d.ts +29 -0
  68. package/dist/admin/src/pages/Home/HomePage.d.ts +4 -5
  69. package/dist/admin/src/pages/Home/components/AddWidgetModal.d.ts +10 -0
  70. package/dist/admin/src/services/homepage.d.ts +3 -3
  71. package/dist/admin/src/utils/resizeHandlers.d.ts +58 -0
  72. package/dist/admin/src/utils/widgetLayout.d.ts +78 -0
  73. package/dist/ee/server/src/controllers/authentication-utils/middlewares.d.ts.map +1 -1
  74. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js +4 -2
  75. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js.map +1 -1
  76. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.mjs +4 -2
  77. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.mjs.map +1 -1
  78. package/dist/server/server/src/bootstrap.js +5 -0
  79. package/dist/server/server/src/bootstrap.js.map +1 -1
  80. package/dist/server/server/src/bootstrap.mjs +5 -0
  81. package/dist/server/server/src/bootstrap.mjs.map +1 -1
  82. package/dist/server/server/src/controllers/authentication.js +6 -6
  83. package/dist/server/server/src/controllers/authentication.js.map +1 -1
  84. package/dist/server/server/src/controllers/authentication.mjs +6 -6
  85. package/dist/server/server/src/controllers/authentication.mjs.map +1 -1
  86. package/dist/server/server/src/register.js +2 -1
  87. package/dist/server/server/src/register.js.map +1 -1
  88. package/dist/server/server/src/register.mjs +2 -1
  89. package/dist/server/server/src/register.mjs.map +1 -1
  90. package/dist/server/shared/utils/session-auth.js +14 -5
  91. package/dist/server/shared/utils/session-auth.js.map +1 -1
  92. package/dist/server/shared/utils/session-auth.mjs +14 -5
  93. package/dist/server/shared/utils/session-auth.mjs.map +1 -1
  94. package/dist/server/src/bootstrap.d.ts.map +1 -1
  95. package/dist/server/src/controllers/authentication.d.ts.map +1 -1
  96. package/dist/server/src/register.d.ts.map +1 -1
  97. package/dist/shared/contracts/homepage.d.ts +8 -4
  98. package/dist/shared/contracts/homepage.d.ts.map +1 -1
  99. package/dist/shared/utils/session-auth.d.ts +2 -2
  100. package/dist/shared/utils/session-auth.d.ts.map +1 -1
  101. package/package.json +7 -7
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResizeIndicator.js","sources":["../../../../../admin/src/components/ResizeIndicator.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nimport {\n isValidResize,\n calculateTargetWidths,\n shouldTriggerResize,\n calculateResizeHandlePosition,\n calculateRowBounds,\n} from '../utils/resizeHandlers';\nimport { getWidgetElement, getWidgetGridContainer } from '../utils/widgetLayout';\n\nimport type { WidgetWithUID } from '../core/apis/Widgets';\n\nconst INDICATOR_SIZE = 20;\n\ninterface ResizeIndicatorProps {\n isVisible: boolean;\n position: { left: number; top: number; height: number };\n currentLeftWidth: number;\n currentRightWidth: number;\n totalColumns?: number;\n rowPosition?: { left: number; top: number; width: number; height: number } | null;\n}\n\nconst IndicatorContainer = styled(Box)<{ $isVisible: boolean }>`\n position: absolute;\n z-index: 1;\n pointer-events: none;\n opacity: ${({ $isVisible }) => ($isVisible ? 1 : 0)};\n transition: opacity 0.2s ease-in-out;\n background: transparent;\n height: ${INDICATOR_SIZE}px;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst DotContainer = styled(Box)<{ $position: number }>`\n position: absolute;\n top: 50%;\n left: ${({ $position }) => $position}%;\n transform: translate(-50%, -50%);\n`;\n\nconst Dot = styled(Box)<{ $isActive: boolean; $isCurrent: boolean }>`\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background-color: ${({ $isActive, $isCurrent, theme }) => {\n if ($isCurrent) return theme.colors.primary600;\n if ($isActive) return theme.colors.primary500;\n return theme.colors.neutral300;\n }};\n transition: all 0.2s ease-in-out;\n box-shadow: ${({ $isCurrent, theme }) =>\n $isCurrent ? `0 0 0 3px ${theme.colors.primary100}` : 'none'};\n transform: ${({ $isCurrent }) => ($isCurrent ? 'scale(1.2)' : 'scale(1)')};\n`;\n\nconst calculateGapAdjustment = (rowWidth: number, leftColumns: number): number => {\n const dotWidth = 6;\n const gapAdjustmentPixels = dotWidth / 2; // Half dot width to center on boundary\n const gapAdjustmentPercent = (gapAdjustmentPixels / rowWidth) * 100;\n\n // Different adjustments for different positions\n switch (leftColumns) {\n case 4:\n return -gapAdjustmentPercent; // Left dot\n case 8:\n return gapAdjustmentPercent; // Right dot\n default: // Center dot\n return 0;\n }\n};\n\nconst ResizeIndicator = ({\n isVisible,\n position,\n currentLeftWidth,\n currentRightWidth,\n totalColumns = 12,\n rowPosition,\n}: ResizeIndicatorProps) => {\n // Calculate available resize positions accounting for grid gaps\n const availablePositions = React.useMemo(() => {\n const rowWidth = rowPosition?.width || 800;\n\n return [4, 6, 8].map((left) => {\n const right = totalColumns - left;\n const basePosition = (left / totalColumns) * 100;\n const gapAdjustment = calculateGapAdjustment(rowWidth, left);\n const positionPercent = basePosition + gapAdjustment;\n\n return { left, right, positionPercent };\n });\n }, [totalColumns, rowPosition?.width]);\n\n // Find the current position index\n const currentPositionIndex = React.useMemo(() => {\n return availablePositions.findIndex(\n (pos) => pos.left === currentLeftWidth && pos.right === currentRightWidth\n );\n }, [availablePositions, currentLeftWidth, currentRightWidth]);\n\n if (!isVisible) {\n return null;\n }\n\n // Calculate positioning - indicator always spans the full row width\n const indicatorTop = rowPosition\n ? rowPosition.top - INDICATOR_SIZE\n : Math.max(10, position.top + position.height / 2 - 40);\n const isCurrent = (index: number) => index === currentPositionIndex;\n const isActive = (index: number) => Math.abs(index - currentPositionIndex) <= 1;\n\n return (\n <IndicatorContainer\n $isVisible={isVisible}\n style={{\n left: rowPosition ? `${rowPosition.left}px` : `${position.left + 10}px`,\n top: `${indicatorTop}px`,\n width: rowPosition ? `${rowPosition.width}px` : 'auto',\n }}\n >\n {availablePositions.map((pos, index) => {\n return (\n <DotContainer key={`${pos.left}-${pos.right}`} $position={pos.positionPercent}>\n <Dot $isActive={isActive(index)} $isCurrent={isCurrent(index)} />\n </DotContainer>\n );\n })}\n </IndicatorContainer>\n );\n};\nconst ResizeHandleContainer = styled(Box)<{ $isDragging?: boolean }>`\n position: absolute;\n top: 0;\n bottom: 0;\n width: ${INDICATOR_SIZE}px;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0.8;\n transition: opacity 0.2s ease-in-out;\n cursor: col-resize;\n background-color: ${({ $isDragging }) => ($isDragging ? 'rgba(0, 0, 0, 0.1)' : 'transparent')};\n`;\n\nconst ResizeHandleBar = styled(Box)<{ $isDragging?: boolean }>`\n width: 2px;\n height: 100%;\n background-color: ${({ theme }) => theme.colors.primary500};\n border-radius: 1px;\n opacity: 0;\n transition: opacity 0.2s ease-in-out;\n\n ${ResizeHandleContainer}:hover & {\n opacity: 0.8;\n }\n\n ${({ $isDragging }) => $isDragging && `opacity: 0.8;`}\n`;\n\ninterface WidgetResizeHandleProps {\n leftWidgetId: string;\n rightWidgetId: string;\n leftWidgetWidth: number;\n rightWidgetWidth: number;\n onResize: (\n leftWidgetId: string,\n rightWidgetId: string,\n newLeftWidth: number,\n newRightWidth: number\n ) => void;\n saveLayout: () => void;\n filteredWidgets?: WidgetWithUID[];\n}\n\nexport const WidgetResizeHandle = ({\n leftWidgetId,\n rightWidgetId,\n leftWidgetWidth,\n rightWidgetWidth,\n onResize,\n saveLayout,\n}: WidgetResizeHandleProps) => {\n const [state, setState] = React.useState({\n isDragging: false,\n startX: 0,\n startLeftWidth: 0,\n startRightWidth: 0,\n position: { left: 0, top: 0, height: 0 },\n lastResizeValues: { leftWidth: 0, rightWidth: 0 },\n currentResizeValues: { leftWidth: leftWidgetWidth, rightWidth: rightWidgetWidth },\n rowPosition: null as { left: number; top: number; width: number; height: number } | null,\n });\n\n const throttleRef = React.useRef<NodeJS.Timeout | null>(null);\n\n const handleResize = React.useCallback(\n (deltaColumns: number) => {\n // Only resize if there's significant movement (dead zone)\n if (Math.abs(deltaColumns) < 0.25) {\n return;\n }\n\n // Calculate target widths\n const { targetLeftWidth, targetRightWidth } = calculateTargetWidths(\n deltaColumns,\n state.startLeftWidth,\n state.startRightWidth\n );\n\n // Validate the resize\n if (!isValidResize(targetLeftWidth, targetRightWidth)) {\n return;\n }\n\n // Update current resize values for the indicator\n setState((prev) => ({\n ...prev,\n currentResizeValues: { leftWidth: targetLeftWidth, rightWidth: targetRightWidth },\n }));\n\n // Only trigger resize if values have changed\n if (shouldTriggerResize(targetLeftWidth, targetRightWidth, state.lastResizeValues)) {\n setState((prev) => ({\n ...prev,\n lastResizeValues: { leftWidth: targetLeftWidth, rightWidth: targetRightWidth },\n }));\n onResize(leftWidgetId, rightWidgetId, targetLeftWidth, targetRightWidth);\n }\n },\n [\n leftWidgetId,\n rightWidgetId,\n onResize,\n state.startLeftWidth,\n state.startRightWidth,\n state.lastResizeValues,\n ]\n );\n\n const handlePointerMove = React.useCallback(\n (e: PointerEvent) => {\n if (!state.isDragging) return;\n\n // Clear any existing throttle timeout\n if (throttleRef.current) {\n clearTimeout(throttleRef.current);\n }\n\n // Throttle the resize calls to prevent excessive updates\n throttleRef.current = setTimeout(() => {\n const deltaX = e.clientX - state.startX;\n const threshold = 120; // Pixels per column unit\n const deltaColumns = Math.round(deltaX / threshold);\n\n handleResize(deltaColumns);\n }, 0);\n },\n [state.isDragging, state.startX, handleResize]\n );\n\n // Handle pointer up to end drag\n const handlePointerUp = React.useCallback(() => {\n // Clear any pending throttle timeout\n if (throttleRef.current) {\n clearTimeout(throttleRef.current);\n throttleRef.current = null;\n }\n\n // Save the layout\n saveLayout();\n\n // Reset last resize values and stop dragging\n setState((prev) => ({\n ...prev,\n lastResizeValues: { leftWidth: 0, rightWidth: 0 },\n currentResizeValues: { leftWidth: leftWidgetWidth, rightWidth: rightWidgetWidth },\n isDragging: false,\n }));\n }, [leftWidgetWidth, rightWidgetWidth, saveLayout]);\n\n // Handle pointer down to start drag\n const handlePointerDown = React.useCallback(\n (e: React.PointerEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n setState((prev) => ({\n ...prev,\n isDragging: true,\n startX: e.clientX,\n startLeftWidth: leftWidgetWidth,\n startRightWidth: rightWidgetWidth,\n }));\n },\n [leftWidgetWidth, rightWidgetWidth]\n );\n\n // Set up drag event listeners\n React.useEffect(() => {\n if (state.isDragging) {\n document.addEventListener('pointermove', handlePointerMove);\n document.addEventListener('pointerup', handlePointerUp);\n\n return () => {\n document.removeEventListener('pointermove', handlePointerMove);\n document.removeEventListener('pointerup', handlePointerUp);\n };\n }\n }, [state.isDragging, handlePointerMove, handlePointerUp]);\n\n // Set up resize observer for position updates - watching widgets and grid container\n React.useLayoutEffect(() => {\n const leftElement = getWidgetElement(leftWidgetId);\n const rightElement = getWidgetElement(rightWidgetId);\n const containerElement = getWidgetGridContainer();\n\n const updatePosition = () => {\n const position = calculateResizeHandlePosition(leftElement, rightElement, containerElement);\n const rowPosition = calculateRowBounds(leftElement, rightElement, containerElement);\n\n setState((prev) => ({\n ...prev,\n position,\n rowPosition,\n }));\n };\n\n // Create ResizeObserver to watch widgets and grid container\n const resizeObserver = new ResizeObserver(updatePosition);\n\n // Observe all relevant elements\n if (leftElement) resizeObserver.observe(leftElement);\n if (rightElement) resizeObserver.observe(rightElement);\n if (containerElement) resizeObserver.observe(containerElement);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [leftWidgetId, rightWidgetId]);\n\n // Cleanup throttle timeout on unmount\n React.useEffect(() => {\n return () => {\n if (throttleRef.current) {\n clearTimeout(throttleRef.current);\n }\n };\n }, []);\n\n return (\n <>\n <ResizeHandleContainer\n onPointerDown={handlePointerDown}\n style={{\n transform: `translate(${state.position.left}px, ${state.position.top}px)`,\n height: `${state.position.height}px`,\n }}\n >\n <ResizeHandleBar $isDragging={state.isDragging} />\n </ResizeHandleContainer>\n\n <ResizeIndicator\n isVisible={state.isDragging}\n position={state.position}\n currentLeftWidth={state.currentResizeValues.leftWidth}\n currentRightWidth={state.currentResizeValues.rightWidth}\n rowPosition={state.rowPosition}\n />\n </>\n );\n};\n"],"names":["INDICATOR_SIZE","IndicatorContainer","styled","Box","$isVisible","DotContainer","$position","Dot","$isActive","$isCurrent","theme","colors","primary600","primary500","neutral300","primary100","calculateGapAdjustment","rowWidth","leftColumns","dotWidth","gapAdjustmentPixels","gapAdjustmentPercent","ResizeIndicator","isVisible","position","currentLeftWidth","currentRightWidth","totalColumns","rowPosition","availablePositions","React","useMemo","width","map","left","right","basePosition","gapAdjustment","positionPercent","currentPositionIndex","findIndex","pos","indicatorTop","top","Math","max","height","isCurrent","index","isActive","abs","_jsx","style","ResizeHandleContainer","$isDragging","ResizeHandleBar","WidgetResizeHandle","leftWidgetId","rightWidgetId","leftWidgetWidth","rightWidgetWidth","onResize","saveLayout","state","setState","useState","isDragging","startX","startLeftWidth","startRightWidth","lastResizeValues","leftWidth","rightWidth","currentResizeValues","throttleRef","useRef","handleResize","useCallback","deltaColumns","targetLeftWidth","targetRightWidth","calculateTargetWidths","isValidResize","prev","shouldTriggerResize","handlePointerMove","e","current","clearTimeout","setTimeout","deltaX","clientX","threshold","round","handlePointerUp","handlePointerDown","preventDefault","stopPropagation","useEffect","document","addEventListener","removeEventListener","useLayoutEffect","leftElement","getWidgetElement","rightElement","containerElement","getWidgetGridContainer","updatePosition","calculateResizeHandlePosition","calculateRowBounds","resizeObserver","ResizeObserver","observe","disconnect","_jsxs","_Fragment","onPointerDown","transform"],"mappings":"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"}
@@ -0,0 +1,332 @@
1
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+ import { Box } from '@strapi/design-system';
4
+ import { styled } from 'styled-components';
5
+ import { calculateTargetWidths, isValidResize, shouldTriggerResize, calculateResizeHandlePosition, calculateRowBounds } from '../utils/resizeHandlers.mjs';
6
+ import { getWidgetElement, getWidgetGridContainer } from '../utils/widgetLayout.mjs';
7
+
8
+ const INDICATOR_SIZE = 20;
9
+ const IndicatorContainer = styled(Box)`
10
+ position: absolute;
11
+ z-index: 1;
12
+ pointer-events: none;
13
+ opacity: ${({ $isVisible })=>$isVisible ? 1 : 0};
14
+ transition: opacity 0.2s ease-in-out;
15
+ background: transparent;
16
+ height: ${INDICATOR_SIZE}px;
17
+ display: flex;
18
+ align-items: center;
19
+ justify-content: center;
20
+ `;
21
+ const DotContainer = styled(Box)`
22
+ position: absolute;
23
+ top: 50%;
24
+ left: ${({ $position })=>$position}%;
25
+ transform: translate(-50%, -50%);
26
+ `;
27
+ const Dot = styled(Box)`
28
+ width: 6px;
29
+ height: 6px;
30
+ border-radius: 50%;
31
+ background-color: ${({ $isActive, $isCurrent, theme })=>{
32
+ if ($isCurrent) return theme.colors.primary600;
33
+ if ($isActive) return theme.colors.primary500;
34
+ return theme.colors.neutral300;
35
+ }};
36
+ transition: all 0.2s ease-in-out;
37
+ box-shadow: ${({ $isCurrent, theme })=>$isCurrent ? `0 0 0 3px ${theme.colors.primary100}` : 'none'};
38
+ transform: ${({ $isCurrent })=>$isCurrent ? 'scale(1.2)' : 'scale(1)'};
39
+ `;
40
+ const calculateGapAdjustment = (rowWidth, leftColumns)=>{
41
+ const dotWidth = 6;
42
+ const gapAdjustmentPixels = dotWidth / 2; // Half dot width to center on boundary
43
+ const gapAdjustmentPercent = gapAdjustmentPixels / rowWidth * 100;
44
+ // Different adjustments for different positions
45
+ switch(leftColumns){
46
+ case 4:
47
+ return -gapAdjustmentPercent; // Left dot
48
+ case 8:
49
+ return gapAdjustmentPercent; // Right dot
50
+ default:
51
+ return 0;
52
+ }
53
+ };
54
+ const ResizeIndicator = ({ isVisible, position, currentLeftWidth, currentRightWidth, totalColumns = 12, rowPosition })=>{
55
+ // Calculate available resize positions accounting for grid gaps
56
+ const availablePositions = React.useMemo(()=>{
57
+ const rowWidth = rowPosition?.width || 800;
58
+ return [
59
+ 4,
60
+ 6,
61
+ 8
62
+ ].map((left)=>{
63
+ const right = totalColumns - left;
64
+ const basePosition = left / totalColumns * 100;
65
+ const gapAdjustment = calculateGapAdjustment(rowWidth, left);
66
+ const positionPercent = basePosition + gapAdjustment;
67
+ return {
68
+ left,
69
+ right,
70
+ positionPercent
71
+ };
72
+ });
73
+ }, [
74
+ totalColumns,
75
+ rowPosition?.width
76
+ ]);
77
+ // Find the current position index
78
+ const currentPositionIndex = React.useMemo(()=>{
79
+ return availablePositions.findIndex((pos)=>pos.left === currentLeftWidth && pos.right === currentRightWidth);
80
+ }, [
81
+ availablePositions,
82
+ currentLeftWidth,
83
+ currentRightWidth
84
+ ]);
85
+ if (!isVisible) {
86
+ return null;
87
+ }
88
+ // Calculate positioning - indicator always spans the full row width
89
+ const indicatorTop = rowPosition ? rowPosition.top - INDICATOR_SIZE : Math.max(10, position.top + position.height / 2 - 40);
90
+ const isCurrent = (index)=>index === currentPositionIndex;
91
+ const isActive = (index)=>Math.abs(index - currentPositionIndex) <= 1;
92
+ return /*#__PURE__*/ jsx(IndicatorContainer, {
93
+ $isVisible: isVisible,
94
+ style: {
95
+ left: rowPosition ? `${rowPosition.left}px` : `${position.left + 10}px`,
96
+ top: `${indicatorTop}px`,
97
+ width: rowPosition ? `${rowPosition.width}px` : 'auto'
98
+ },
99
+ children: availablePositions.map((pos, index)=>{
100
+ return /*#__PURE__*/ jsx(DotContainer, {
101
+ $position: pos.positionPercent,
102
+ children: /*#__PURE__*/ jsx(Dot, {
103
+ $isActive: isActive(index),
104
+ $isCurrent: isCurrent(index)
105
+ })
106
+ }, `${pos.left}-${pos.right}`);
107
+ })
108
+ });
109
+ };
110
+ const ResizeHandleContainer = styled(Box)`
111
+ position: absolute;
112
+ top: 0;
113
+ bottom: 0;
114
+ width: ${INDICATOR_SIZE}px;
115
+ z-index: 1;
116
+ display: flex;
117
+ align-items: center;
118
+ justify-content: center;
119
+ opacity: 0.8;
120
+ transition: opacity 0.2s ease-in-out;
121
+ cursor: col-resize;
122
+ background-color: ${({ $isDragging })=>$isDragging ? 'rgba(0, 0, 0, 0.1)' : 'transparent'};
123
+ `;
124
+ const ResizeHandleBar = styled(Box)`
125
+ width: 2px;
126
+ height: 100%;
127
+ background-color: ${({ theme })=>theme.colors.primary500};
128
+ border-radius: 1px;
129
+ opacity: 0;
130
+ transition: opacity 0.2s ease-in-out;
131
+
132
+ ${ResizeHandleContainer}:hover & {
133
+ opacity: 0.8;
134
+ }
135
+
136
+ ${({ $isDragging })=>$isDragging && `opacity: 0.8;`}
137
+ `;
138
+ const WidgetResizeHandle = ({ leftWidgetId, rightWidgetId, leftWidgetWidth, rightWidgetWidth, onResize, saveLayout })=>{
139
+ const [state, setState] = React.useState({
140
+ isDragging: false,
141
+ startX: 0,
142
+ startLeftWidth: 0,
143
+ startRightWidth: 0,
144
+ position: {
145
+ left: 0,
146
+ top: 0,
147
+ height: 0
148
+ },
149
+ lastResizeValues: {
150
+ leftWidth: 0,
151
+ rightWidth: 0
152
+ },
153
+ currentResizeValues: {
154
+ leftWidth: leftWidgetWidth,
155
+ rightWidth: rightWidgetWidth
156
+ },
157
+ rowPosition: null
158
+ });
159
+ const throttleRef = React.useRef(null);
160
+ const handleResize = React.useCallback((deltaColumns)=>{
161
+ // Only resize if there's significant movement (dead zone)
162
+ if (Math.abs(deltaColumns) < 0.25) {
163
+ return;
164
+ }
165
+ // Calculate target widths
166
+ const { targetLeftWidth, targetRightWidth } = calculateTargetWidths(deltaColumns, state.startLeftWidth, state.startRightWidth);
167
+ // Validate the resize
168
+ if (!isValidResize(targetLeftWidth, targetRightWidth)) {
169
+ return;
170
+ }
171
+ // Update current resize values for the indicator
172
+ setState((prev)=>({
173
+ ...prev,
174
+ currentResizeValues: {
175
+ leftWidth: targetLeftWidth,
176
+ rightWidth: targetRightWidth
177
+ }
178
+ }));
179
+ // Only trigger resize if values have changed
180
+ if (shouldTriggerResize(targetLeftWidth, targetRightWidth, state.lastResizeValues)) {
181
+ setState((prev)=>({
182
+ ...prev,
183
+ lastResizeValues: {
184
+ leftWidth: targetLeftWidth,
185
+ rightWidth: targetRightWidth
186
+ }
187
+ }));
188
+ onResize(leftWidgetId, rightWidgetId, targetLeftWidth, targetRightWidth);
189
+ }
190
+ }, [
191
+ leftWidgetId,
192
+ rightWidgetId,
193
+ onResize,
194
+ state.startLeftWidth,
195
+ state.startRightWidth,
196
+ state.lastResizeValues
197
+ ]);
198
+ const handlePointerMove = React.useCallback((e)=>{
199
+ if (!state.isDragging) return;
200
+ // Clear any existing throttle timeout
201
+ if (throttleRef.current) {
202
+ clearTimeout(throttleRef.current);
203
+ }
204
+ // Throttle the resize calls to prevent excessive updates
205
+ throttleRef.current = setTimeout(()=>{
206
+ const deltaX = e.clientX - state.startX;
207
+ const threshold = 120; // Pixels per column unit
208
+ const deltaColumns = Math.round(deltaX / threshold);
209
+ handleResize(deltaColumns);
210
+ }, 0);
211
+ }, [
212
+ state.isDragging,
213
+ state.startX,
214
+ handleResize
215
+ ]);
216
+ // Handle pointer up to end drag
217
+ const handlePointerUp = React.useCallback(()=>{
218
+ // Clear any pending throttle timeout
219
+ if (throttleRef.current) {
220
+ clearTimeout(throttleRef.current);
221
+ throttleRef.current = null;
222
+ }
223
+ // Save the layout
224
+ saveLayout();
225
+ // Reset last resize values and stop dragging
226
+ setState((prev)=>({
227
+ ...prev,
228
+ lastResizeValues: {
229
+ leftWidth: 0,
230
+ rightWidth: 0
231
+ },
232
+ currentResizeValues: {
233
+ leftWidth: leftWidgetWidth,
234
+ rightWidth: rightWidgetWidth
235
+ },
236
+ isDragging: false
237
+ }));
238
+ }, [
239
+ leftWidgetWidth,
240
+ rightWidgetWidth,
241
+ saveLayout
242
+ ]);
243
+ // Handle pointer down to start drag
244
+ const handlePointerDown = React.useCallback((e)=>{
245
+ e.preventDefault();
246
+ e.stopPropagation();
247
+ setState((prev)=>({
248
+ ...prev,
249
+ isDragging: true,
250
+ startX: e.clientX,
251
+ startLeftWidth: leftWidgetWidth,
252
+ startRightWidth: rightWidgetWidth
253
+ }));
254
+ }, [
255
+ leftWidgetWidth,
256
+ rightWidgetWidth
257
+ ]);
258
+ // Set up drag event listeners
259
+ React.useEffect(()=>{
260
+ if (state.isDragging) {
261
+ document.addEventListener('pointermove', handlePointerMove);
262
+ document.addEventListener('pointerup', handlePointerUp);
263
+ return ()=>{
264
+ document.removeEventListener('pointermove', handlePointerMove);
265
+ document.removeEventListener('pointerup', handlePointerUp);
266
+ };
267
+ }
268
+ }, [
269
+ state.isDragging,
270
+ handlePointerMove,
271
+ handlePointerUp
272
+ ]);
273
+ // Set up resize observer for position updates - watching widgets and grid container
274
+ React.useLayoutEffect(()=>{
275
+ const leftElement = getWidgetElement(leftWidgetId);
276
+ const rightElement = getWidgetElement(rightWidgetId);
277
+ const containerElement = getWidgetGridContainer();
278
+ const updatePosition = ()=>{
279
+ const position = calculateResizeHandlePosition(leftElement, rightElement, containerElement);
280
+ const rowPosition = calculateRowBounds(leftElement, rightElement, containerElement);
281
+ setState((prev)=>({
282
+ ...prev,
283
+ position,
284
+ rowPosition
285
+ }));
286
+ };
287
+ // Create ResizeObserver to watch widgets and grid container
288
+ const resizeObserver = new ResizeObserver(updatePosition);
289
+ // Observe all relevant elements
290
+ if (leftElement) resizeObserver.observe(leftElement);
291
+ if (rightElement) resizeObserver.observe(rightElement);
292
+ if (containerElement) resizeObserver.observe(containerElement);
293
+ return ()=>{
294
+ resizeObserver.disconnect();
295
+ };
296
+ }, [
297
+ leftWidgetId,
298
+ rightWidgetId
299
+ ]);
300
+ // Cleanup throttle timeout on unmount
301
+ React.useEffect(()=>{
302
+ return ()=>{
303
+ if (throttleRef.current) {
304
+ clearTimeout(throttleRef.current);
305
+ }
306
+ };
307
+ }, []);
308
+ return /*#__PURE__*/ jsxs(Fragment, {
309
+ children: [
310
+ /*#__PURE__*/ jsx(ResizeHandleContainer, {
311
+ onPointerDown: handlePointerDown,
312
+ style: {
313
+ transform: `translate(${state.position.left}px, ${state.position.top}px)`,
314
+ height: `${state.position.height}px`
315
+ },
316
+ children: /*#__PURE__*/ jsx(ResizeHandleBar, {
317
+ $isDragging: state.isDragging
318
+ })
319
+ }),
320
+ /*#__PURE__*/ jsx(ResizeIndicator, {
321
+ isVisible: state.isDragging,
322
+ position: state.position,
323
+ currentLeftWidth: state.currentResizeValues.leftWidth,
324
+ currentRightWidth: state.currentResizeValues.rightWidth,
325
+ rowPosition: state.rowPosition
326
+ })
327
+ ]
328
+ });
329
+ };
330
+
331
+ export { WidgetResizeHandle };
332
+ //# sourceMappingURL=ResizeIndicator.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResizeIndicator.mjs","sources":["../../../../../admin/src/components/ResizeIndicator.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nimport {\n isValidResize,\n calculateTargetWidths,\n shouldTriggerResize,\n calculateResizeHandlePosition,\n calculateRowBounds,\n} from '../utils/resizeHandlers';\nimport { getWidgetElement, getWidgetGridContainer } from '../utils/widgetLayout';\n\nimport type { WidgetWithUID } from '../core/apis/Widgets';\n\nconst INDICATOR_SIZE = 20;\n\ninterface ResizeIndicatorProps {\n isVisible: boolean;\n position: { left: number; top: number; height: number };\n currentLeftWidth: number;\n currentRightWidth: number;\n totalColumns?: number;\n rowPosition?: { left: number; top: number; width: number; height: number } | null;\n}\n\nconst IndicatorContainer = styled(Box)<{ $isVisible: boolean }>`\n position: absolute;\n z-index: 1;\n pointer-events: none;\n opacity: ${({ $isVisible }) => ($isVisible ? 1 : 0)};\n transition: opacity 0.2s ease-in-out;\n background: transparent;\n height: ${INDICATOR_SIZE}px;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst DotContainer = styled(Box)<{ $position: number }>`\n position: absolute;\n top: 50%;\n left: ${({ $position }) => $position}%;\n transform: translate(-50%, -50%);\n`;\n\nconst Dot = styled(Box)<{ $isActive: boolean; $isCurrent: boolean }>`\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background-color: ${({ $isActive, $isCurrent, theme }) => {\n if ($isCurrent) return theme.colors.primary600;\n if ($isActive) return theme.colors.primary500;\n return theme.colors.neutral300;\n }};\n transition: all 0.2s ease-in-out;\n box-shadow: ${({ $isCurrent, theme }) =>\n $isCurrent ? `0 0 0 3px ${theme.colors.primary100}` : 'none'};\n transform: ${({ $isCurrent }) => ($isCurrent ? 'scale(1.2)' : 'scale(1)')};\n`;\n\nconst calculateGapAdjustment = (rowWidth: number, leftColumns: number): number => {\n const dotWidth = 6;\n const gapAdjustmentPixels = dotWidth / 2; // Half dot width to center on boundary\n const gapAdjustmentPercent = (gapAdjustmentPixels / rowWidth) * 100;\n\n // Different adjustments for different positions\n switch (leftColumns) {\n case 4:\n return -gapAdjustmentPercent; // Left dot\n case 8:\n return gapAdjustmentPercent; // Right dot\n default: // Center dot\n return 0;\n }\n};\n\nconst ResizeIndicator = ({\n isVisible,\n position,\n currentLeftWidth,\n currentRightWidth,\n totalColumns = 12,\n rowPosition,\n}: ResizeIndicatorProps) => {\n // Calculate available resize positions accounting for grid gaps\n const availablePositions = React.useMemo(() => {\n const rowWidth = rowPosition?.width || 800;\n\n return [4, 6, 8].map((left) => {\n const right = totalColumns - left;\n const basePosition = (left / totalColumns) * 100;\n const gapAdjustment = calculateGapAdjustment(rowWidth, left);\n const positionPercent = basePosition + gapAdjustment;\n\n return { left, right, positionPercent };\n });\n }, [totalColumns, rowPosition?.width]);\n\n // Find the current position index\n const currentPositionIndex = React.useMemo(() => {\n return availablePositions.findIndex(\n (pos) => pos.left === currentLeftWidth && pos.right === currentRightWidth\n );\n }, [availablePositions, currentLeftWidth, currentRightWidth]);\n\n if (!isVisible) {\n return null;\n }\n\n // Calculate positioning - indicator always spans the full row width\n const indicatorTop = rowPosition\n ? rowPosition.top - INDICATOR_SIZE\n : Math.max(10, position.top + position.height / 2 - 40);\n const isCurrent = (index: number) => index === currentPositionIndex;\n const isActive = (index: number) => Math.abs(index - currentPositionIndex) <= 1;\n\n return (\n <IndicatorContainer\n $isVisible={isVisible}\n style={{\n left: rowPosition ? `${rowPosition.left}px` : `${position.left + 10}px`,\n top: `${indicatorTop}px`,\n width: rowPosition ? `${rowPosition.width}px` : 'auto',\n }}\n >\n {availablePositions.map((pos, index) => {\n return (\n <DotContainer key={`${pos.left}-${pos.right}`} $position={pos.positionPercent}>\n <Dot $isActive={isActive(index)} $isCurrent={isCurrent(index)} />\n </DotContainer>\n );\n })}\n </IndicatorContainer>\n );\n};\nconst ResizeHandleContainer = styled(Box)<{ $isDragging?: boolean }>`\n position: absolute;\n top: 0;\n bottom: 0;\n width: ${INDICATOR_SIZE}px;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0.8;\n transition: opacity 0.2s ease-in-out;\n cursor: col-resize;\n background-color: ${({ $isDragging }) => ($isDragging ? 'rgba(0, 0, 0, 0.1)' : 'transparent')};\n`;\n\nconst ResizeHandleBar = styled(Box)<{ $isDragging?: boolean }>`\n width: 2px;\n height: 100%;\n background-color: ${({ theme }) => theme.colors.primary500};\n border-radius: 1px;\n opacity: 0;\n transition: opacity 0.2s ease-in-out;\n\n ${ResizeHandleContainer}:hover & {\n opacity: 0.8;\n }\n\n ${({ $isDragging }) => $isDragging && `opacity: 0.8;`}\n`;\n\ninterface WidgetResizeHandleProps {\n leftWidgetId: string;\n rightWidgetId: string;\n leftWidgetWidth: number;\n rightWidgetWidth: number;\n onResize: (\n leftWidgetId: string,\n rightWidgetId: string,\n newLeftWidth: number,\n newRightWidth: number\n ) => void;\n saveLayout: () => void;\n filteredWidgets?: WidgetWithUID[];\n}\n\nexport const WidgetResizeHandle = ({\n leftWidgetId,\n rightWidgetId,\n leftWidgetWidth,\n rightWidgetWidth,\n onResize,\n saveLayout,\n}: WidgetResizeHandleProps) => {\n const [state, setState] = React.useState({\n isDragging: false,\n startX: 0,\n startLeftWidth: 0,\n startRightWidth: 0,\n position: { left: 0, top: 0, height: 0 },\n lastResizeValues: { leftWidth: 0, rightWidth: 0 },\n currentResizeValues: { leftWidth: leftWidgetWidth, rightWidth: rightWidgetWidth },\n rowPosition: null as { left: number; top: number; width: number; height: number } | null,\n });\n\n const throttleRef = React.useRef<NodeJS.Timeout | null>(null);\n\n const handleResize = React.useCallback(\n (deltaColumns: number) => {\n // Only resize if there's significant movement (dead zone)\n if (Math.abs(deltaColumns) < 0.25) {\n return;\n }\n\n // Calculate target widths\n const { targetLeftWidth, targetRightWidth } = calculateTargetWidths(\n deltaColumns,\n state.startLeftWidth,\n state.startRightWidth\n );\n\n // Validate the resize\n if (!isValidResize(targetLeftWidth, targetRightWidth)) {\n return;\n }\n\n // Update current resize values for the indicator\n setState((prev) => ({\n ...prev,\n currentResizeValues: { leftWidth: targetLeftWidth, rightWidth: targetRightWidth },\n }));\n\n // Only trigger resize if values have changed\n if (shouldTriggerResize(targetLeftWidth, targetRightWidth, state.lastResizeValues)) {\n setState((prev) => ({\n ...prev,\n lastResizeValues: { leftWidth: targetLeftWidth, rightWidth: targetRightWidth },\n }));\n onResize(leftWidgetId, rightWidgetId, targetLeftWidth, targetRightWidth);\n }\n },\n [\n leftWidgetId,\n rightWidgetId,\n onResize,\n state.startLeftWidth,\n state.startRightWidth,\n state.lastResizeValues,\n ]\n );\n\n const handlePointerMove = React.useCallback(\n (e: PointerEvent) => {\n if (!state.isDragging) return;\n\n // Clear any existing throttle timeout\n if (throttleRef.current) {\n clearTimeout(throttleRef.current);\n }\n\n // Throttle the resize calls to prevent excessive updates\n throttleRef.current = setTimeout(() => {\n const deltaX = e.clientX - state.startX;\n const threshold = 120; // Pixels per column unit\n const deltaColumns = Math.round(deltaX / threshold);\n\n handleResize(deltaColumns);\n }, 0);\n },\n [state.isDragging, state.startX, handleResize]\n );\n\n // Handle pointer up to end drag\n const handlePointerUp = React.useCallback(() => {\n // Clear any pending throttle timeout\n if (throttleRef.current) {\n clearTimeout(throttleRef.current);\n throttleRef.current = null;\n }\n\n // Save the layout\n saveLayout();\n\n // Reset last resize values and stop dragging\n setState((prev) => ({\n ...prev,\n lastResizeValues: { leftWidth: 0, rightWidth: 0 },\n currentResizeValues: { leftWidth: leftWidgetWidth, rightWidth: rightWidgetWidth },\n isDragging: false,\n }));\n }, [leftWidgetWidth, rightWidgetWidth, saveLayout]);\n\n // Handle pointer down to start drag\n const handlePointerDown = React.useCallback(\n (e: React.PointerEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n setState((prev) => ({\n ...prev,\n isDragging: true,\n startX: e.clientX,\n startLeftWidth: leftWidgetWidth,\n startRightWidth: rightWidgetWidth,\n }));\n },\n [leftWidgetWidth, rightWidgetWidth]\n );\n\n // Set up drag event listeners\n React.useEffect(() => {\n if (state.isDragging) {\n document.addEventListener('pointermove', handlePointerMove);\n document.addEventListener('pointerup', handlePointerUp);\n\n return () => {\n document.removeEventListener('pointermove', handlePointerMove);\n document.removeEventListener('pointerup', handlePointerUp);\n };\n }\n }, [state.isDragging, handlePointerMove, handlePointerUp]);\n\n // Set up resize observer for position updates - watching widgets and grid container\n React.useLayoutEffect(() => {\n const leftElement = getWidgetElement(leftWidgetId);\n const rightElement = getWidgetElement(rightWidgetId);\n const containerElement = getWidgetGridContainer();\n\n const updatePosition = () => {\n const position = calculateResizeHandlePosition(leftElement, rightElement, containerElement);\n const rowPosition = calculateRowBounds(leftElement, rightElement, containerElement);\n\n setState((prev) => ({\n ...prev,\n position,\n rowPosition,\n }));\n };\n\n // Create ResizeObserver to watch widgets and grid container\n const resizeObserver = new ResizeObserver(updatePosition);\n\n // Observe all relevant elements\n if (leftElement) resizeObserver.observe(leftElement);\n if (rightElement) resizeObserver.observe(rightElement);\n if (containerElement) resizeObserver.observe(containerElement);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [leftWidgetId, rightWidgetId]);\n\n // Cleanup throttle timeout on unmount\n React.useEffect(() => {\n return () => {\n if (throttleRef.current) {\n clearTimeout(throttleRef.current);\n }\n };\n }, []);\n\n return (\n <>\n <ResizeHandleContainer\n onPointerDown={handlePointerDown}\n style={{\n transform: `translate(${state.position.left}px, ${state.position.top}px)`,\n height: `${state.position.height}px`,\n }}\n >\n <ResizeHandleBar $isDragging={state.isDragging} />\n </ResizeHandleContainer>\n\n <ResizeIndicator\n isVisible={state.isDragging}\n position={state.position}\n currentLeftWidth={state.currentResizeValues.leftWidth}\n currentRightWidth={state.currentResizeValues.rightWidth}\n rowPosition={state.rowPosition}\n />\n </>\n );\n};\n"],"names":["INDICATOR_SIZE","IndicatorContainer","styled","Box","$isVisible","DotContainer","$position","Dot","$isActive","$isCurrent","theme","colors","primary600","primary500","neutral300","primary100","calculateGapAdjustment","rowWidth","leftColumns","dotWidth","gapAdjustmentPixels","gapAdjustmentPercent","ResizeIndicator","isVisible","position","currentLeftWidth","currentRightWidth","totalColumns","rowPosition","availablePositions","React","useMemo","width","map","left","right","basePosition","gapAdjustment","positionPercent","currentPositionIndex","findIndex","pos","indicatorTop","top","Math","max","height","isCurrent","index","isActive","abs","_jsx","style","ResizeHandleContainer","$isDragging","ResizeHandleBar","WidgetResizeHandle","leftWidgetId","rightWidgetId","leftWidgetWidth","rightWidgetWidth","onResize","saveLayout","state","setState","useState","isDragging","startX","startLeftWidth","startRightWidth","lastResizeValues","leftWidth","rightWidth","currentResizeValues","throttleRef","useRef","handleResize","useCallback","deltaColumns","targetLeftWidth","targetRightWidth","calculateTargetWidths","isValidResize","prev","shouldTriggerResize","handlePointerMove","e","current","clearTimeout","setTimeout","deltaX","clientX","threshold","round","handlePointerUp","handlePointerDown","preventDefault","stopPropagation","useEffect","document","addEventListener","removeEventListener","useLayoutEffect","leftElement","getWidgetElement","rightElement","containerElement","getWidgetGridContainer","updatePosition","calculateResizeHandlePosition","calculateRowBounds","resizeObserver","ResizeObserver","observe","disconnect","_jsxs","_Fragment","onPointerDown","transform"],"mappings":";;;;;;;AAgBA,MAAMA,cAAiB,GAAA,EAAA;AAWvB,MAAMC,kBAAAA,GAAqBC,MAAOC,CAAAA,GAAAA,CAA6B;;;;AAIpD,WAAA,EAAE,CAAC,EAAEC,UAAU,EAAE,GAAMA,UAAAA,GAAa,IAAI,CAAG,CAAA;;;AAG5C,UAAA,EAAEJ,cAAe,CAAA;;;;AAI3B,CAAC;AAED,MAAMK,YAAAA,GAAeH,MAAOC,CAAAA,GAAAA,CAA2B;;;AAG/C,QAAA,EAAE,CAAC,EAAEG,SAAS,EAAE,GAAKA,SAAU,CAAA;;AAEvC,CAAC;AAED,MAAMC,GAAAA,GAAML,MAAOC,CAAAA,GAAAA,CAAiD;;;;AAIhD,oBAAA,EAAE,CAAC,EAAEK,SAAS,EAAEC,UAAU,EAAEC,KAAK,EAAE,GAAA;AACnD,IAAA,IAAID,UAAY,EAAA,OAAOC,KAAMC,CAAAA,MAAM,CAACC,UAAU;AAC9C,IAAA,IAAIJ,SAAW,EAAA,OAAOE,KAAMC,CAAAA,MAAM,CAACE,UAAU;IAC7C,OAAOH,KAAAA,CAAMC,MAAM,CAACG,UAAU;AAChC,CAAE,CAAA;;AAEU,cAAA,EAAE,CAAC,EAAEL,UAAU,EAAEC,KAAK,EAAE,GAClCD,UAAa,GAAA,CAAC,UAAU,EAAEC,MAAMC,MAAM,CAACI,UAAU,CAAC,CAAC,GAAG,MAAO,CAAA;AACpD,aAAA,EAAE,CAAC,EAAEN,UAAU,EAAE,GAAMA,UAAAA,GAAa,eAAe,UAAY,CAAA;AAC5E,CAAC;AAED,MAAMO,sBAAAA,GAAyB,CAACC,QAAkBC,EAAAA,WAAAA,GAAAA;AAChD,IAAA,MAAMC,QAAW,GAAA,CAAA;IACjB,MAAMC,mBAAAA,GAAsBD,QAAW,GAAA,CAAA,CAAA;IACvC,MAAME,oBAAAA,GAAuB,mBAACD,GAAsBH,QAAY,GAAA,GAAA;;IAGhE,OAAQC,WAAAA;QACN,KAAK,CAAA;YACH,OAAO,CAACG;QACV,KAAK,CAAA;AACH,YAAA,OAAOA;AACT,QAAA;YACE,OAAO,CAAA;AACX;AACF,CAAA;AAEA,MAAMC,eAAkB,GAAA,CAAC,EACvBC,SAAS,EACTC,QAAQ,EACRC,gBAAgB,EAChBC,iBAAiB,EACjBC,YAAAA,GAAe,EAAE,EACjBC,WAAW,EACU,GAAA;;IAErB,MAAMC,kBAAAA,GAAqBC,KAAMC,CAAAA,OAAO,CAAC,IAAA;QACvC,MAAMd,QAAAA,GAAWW,aAAaI,KAAS,IAAA,GAAA;QAEvC,OAAO;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA;SAAE,CAACC,GAAG,CAAC,CAACC,IAAAA,GAAAA;AACpB,YAAA,MAAMC,QAAQR,YAAeO,GAAAA,IAAAA;YAC7B,MAAME,YAAAA,GAAe,IAACF,GAAOP,YAAgB,GAAA,GAAA;YAC7C,MAAMU,aAAAA,GAAgBrB,uBAAuBC,QAAUiB,EAAAA,IAAAA,CAAAA;AACvD,YAAA,MAAMI,kBAAkBF,YAAeC,GAAAA,aAAAA;YAEvC,OAAO;AAAEH,gBAAAA,IAAAA;AAAMC,gBAAAA,KAAAA;AAAOG,gBAAAA;AAAgB,aAAA;AACxC,SAAA,CAAA;KACC,EAAA;AAACX,QAAAA,YAAAA;QAAcC,WAAaI,EAAAA;AAAM,KAAA,CAAA;;IAGrC,MAAMO,oBAAAA,GAAuBT,KAAMC,CAAAA,OAAO,CAAC,IAAA;QACzC,OAAOF,kBAAAA,CAAmBW,SAAS,CACjC,CAACC,GAAAA,GAAQA,GAAIP,CAAAA,IAAI,KAAKT,gBAAAA,IAAoBgB,GAAIN,CAAAA,KAAK,KAAKT,iBAAAA,CAAAA;KAEzD,EAAA;AAACG,QAAAA,kBAAAA;AAAoBJ,QAAAA,gBAAAA;AAAkBC,QAAAA;AAAkB,KAAA,CAAA;AAE5D,IAAA,IAAI,CAACH,SAAW,EAAA;QACd,OAAO,IAAA;AACT;;AAGA,IAAA,MAAMmB,eAAed,WACjBA,GAAAA,WAAAA,CAAYe,GAAG,GAAG3C,iBAClB4C,IAAKC,CAAAA,GAAG,CAAC,EAAA,EAAIrB,SAASmB,GAAG,GAAGnB,QAASsB,CAAAA,MAAM,GAAG,CAAI,GAAA,EAAA,CAAA;IACtD,MAAMC,SAAAA,GAAY,CAACC,KAAAA,GAAkBA,KAAUT,KAAAA,oBAAAA;AAC/C,IAAA,MAAMU,WAAW,CAACD,KAAAA,GAAkBJ,KAAKM,GAAG,CAACF,QAAQT,oBAAyB,CAAA,IAAA,CAAA;AAE9E,IAAA,qBACEY,GAAClD,CAAAA,kBAAAA,EAAAA;QACCG,UAAYmB,EAAAA,SAAAA;QACZ6B,KAAO,EAAA;AACLlB,YAAAA,IAAAA,EAAMN,cAAc,CAAC,EAAEA,WAAYM,CAAAA,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAEV,QAASU,CAAAA,IAAI,GAAG,EAAA,CAAG,EAAE,CAAC;AACvES,YAAAA,GAAAA,EAAK,CAAC,EAAED,YAAa,CAAA,EAAE,CAAC;YACxBV,KAAOJ,EAAAA,WAAAA,GAAc,CAAC,EAAEA,WAAAA,CAAYI,KAAK,CAAC,EAAE,CAAC,GAAG;AAClD,SAAA;kBAECH,kBAAmBI,CAAAA,GAAG,CAAC,CAACQ,GAAKO,EAAAA,KAAAA,GAAAA;AAC5B,YAAA,qBACEG,GAAC9C,CAAAA,YAAAA,EAAAA;AAA8CC,gBAAAA,SAAAA,EAAWmC,IAAIH,eAAe;AAC3E,gBAAA,QAAA,gBAAAa,GAAC5C,CAAAA,GAAAA,EAAAA;AAAIC,oBAAAA,SAAAA,EAAWyC,QAASD,CAAAA,KAAAA,CAAAA;AAAQvC,oBAAAA,UAAAA,EAAYsC,SAAUC,CAAAA,KAAAA;;eADtC,CAAC,EAAEP,IAAIP,IAAI,CAAC,CAAC,EAAEO,GAAAA,CAAIN,KAAK,CAAC,CAAC,CAAA;AAIjD,SAAA;;AAGN,CAAA;AACA,MAAMkB,qBAAAA,GAAwBnD,MAAOC,CAAAA,GAAAA,CAA+B;;;;AAI3D,SAAA,EAAEH,cAAe,CAAA;;;;;;;;AAQN,oBAAA,EAAE,CAAC,EAAEsD,WAAW,EAAE,GAAMA,WAAAA,GAAc,uBAAuB,aAAe,CAAA;AAChG,CAAC;AAED,MAAMC,eAAAA,GAAkBrD,MAAOC,CAAAA,GAAAA,CAA+B;;;oBAG1C,EAAE,CAAC,EAAEO,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACE,UAAU,CAAC;;;;;AAK3D,EAAA,EAAEwC,qBAAsB,CAAA;;;;EAIxB,EAAE,CAAC,EAAEC,WAAW,EAAE,GAAKA,WAAe,IAAA,CAAC,aAAa,CAAC;AACvD,CAAC;AAiBYE,MAAAA,kBAAAA,GAAqB,CAAC,EACjCC,YAAY,EACZC,aAAa,EACbC,eAAe,EACfC,gBAAgB,EAChBC,QAAQ,EACRC,UAAU,EACc,GAAA;AACxB,IAAA,MAAM,CAACC,KAAOC,EAAAA,QAAAA,CAAS,GAAGlC,KAAAA,CAAMmC,QAAQ,CAAC;QACvCC,UAAY,EAAA,KAAA;QACZC,MAAQ,EAAA,CAAA;QACRC,cAAgB,EAAA,CAAA;QAChBC,eAAiB,EAAA,CAAA;QACjB7C,QAAU,EAAA;YAAEU,IAAM,EAAA,CAAA;YAAGS,GAAK,EAAA,CAAA;YAAGG,MAAQ,EAAA;AAAE,SAAA;QACvCwB,gBAAkB,EAAA;YAAEC,SAAW,EAAA,CAAA;YAAGC,UAAY,EAAA;AAAE,SAAA;QAChDC,mBAAqB,EAAA;YAAEF,SAAWZ,EAAAA,eAAAA;YAAiBa,UAAYZ,EAAAA;AAAiB,SAAA;QAChFhC,WAAa,EAAA;AACf,KAAA,CAAA;IAEA,MAAM8C,WAAAA,GAAc5C,KAAM6C,CAAAA,MAAM,CAAwB,IAAA,CAAA;AAExD,IAAA,MAAMC,YAAe9C,GAAAA,KAAAA,CAAM+C,WAAW,CACpC,CAACC,YAAAA,GAAAA;;AAEC,QAAA,IAAIlC,IAAKM,CAAAA,GAAG,CAAC4B,YAAAA,CAAAA,GAAgB,IAAM,EAAA;AACjC,YAAA;AACF;;AAGA,QAAA,MAAM,EAAEC,eAAe,EAAEC,gBAAgB,EAAE,GAAGC,qBAC5CH,CAAAA,YAAAA,EACAf,KAAMK,CAAAA,cAAc,EACpBL,KAAAA,CAAMM,eAAe,CAAA;;QAIvB,IAAI,CAACa,aAAcH,CAAAA,eAAAA,EAAiBC,gBAAmB,CAAA,EAAA;AACrD,YAAA;AACF;;QAGAhB,QAAS,CAAA,CAACmB,QAAU;AAClB,gBAAA,GAAGA,IAAI;gBACPV,mBAAqB,EAAA;oBAAEF,SAAWQ,EAAAA,eAAAA;oBAAiBP,UAAYQ,EAAAA;AAAiB;aAClF,CAAA,CAAA;;AAGA,QAAA,IAAII,mBAAoBL,CAAAA,eAAAA,EAAiBC,gBAAkBjB,EAAAA,KAAAA,CAAMO,gBAAgB,CAAG,EAAA;YAClFN,QAAS,CAAA,CAACmB,QAAU;AAClB,oBAAA,GAAGA,IAAI;oBACPb,gBAAkB,EAAA;wBAAEC,SAAWQ,EAAAA,eAAAA;wBAAiBP,UAAYQ,EAAAA;AAAiB;iBAC/E,CAAA,CAAA;YACAnB,QAASJ,CAAAA,YAAAA,EAAcC,eAAeqB,eAAiBC,EAAAA,gBAAAA,CAAAA;AACzD;KAEF,EAAA;AACEvB,QAAAA,YAAAA;AACAC,QAAAA,aAAAA;AACAG,QAAAA,QAAAA;AACAE,QAAAA,KAAAA,CAAMK,cAAc;AACpBL,QAAAA,KAAAA,CAAMM,eAAe;AACrBN,QAAAA,KAAAA,CAAMO;AACP,KAAA,CAAA;AAGH,IAAA,MAAMe,iBAAoBvD,GAAAA,KAAAA,CAAM+C,WAAW,CACzC,CAACS,CAAAA,GAAAA;QACC,IAAI,CAACvB,KAAMG,CAAAA,UAAU,EAAE;;QAGvB,IAAIQ,WAAAA,CAAYa,OAAO,EAAE;AACvBC,YAAAA,YAAAA,CAAad,YAAYa,OAAO,CAAA;AAClC;;QAGAb,WAAYa,CAAAA,OAAO,GAAGE,UAAW,CAAA,IAAA;AAC/B,YAAA,MAAMC,MAASJ,GAAAA,CAAAA,CAAEK,OAAO,GAAG5B,MAAMI,MAAM;YACvC,MAAMyB,SAAAA,GAAY;AAClB,YAAA,MAAMd,YAAelC,GAAAA,IAAAA,CAAKiD,KAAK,CAACH,MAASE,GAAAA,SAAAA,CAAAA;YAEzChB,YAAaE,CAAAA,YAAAA,CAAAA;SACZ,EAAA,CAAA,CAAA;KAEL,EAAA;AAACf,QAAAA,KAAAA,CAAMG,UAAU;AAAEH,QAAAA,KAAAA,CAAMI,MAAM;AAAES,QAAAA;AAAa,KAAA,CAAA;;IAIhD,MAAMkB,eAAAA,GAAkBhE,KAAM+C,CAAAA,WAAW,CAAC,IAAA;;QAExC,IAAIH,WAAAA,CAAYa,OAAO,EAAE;AACvBC,YAAAA,YAAAA,CAAad,YAAYa,OAAO,CAAA;AAChCb,YAAAA,WAAAA,CAAYa,OAAO,GAAG,IAAA;AACxB;;AAGAzB,QAAAA,UAAAA,EAAAA;;QAGAE,QAAS,CAAA,CAACmB,QAAU;AAClB,gBAAA,GAAGA,IAAI;gBACPb,gBAAkB,EAAA;oBAAEC,SAAW,EAAA,CAAA;oBAAGC,UAAY,EAAA;AAAE,iBAAA;gBAChDC,mBAAqB,EAAA;oBAAEF,SAAWZ,EAAAA,eAAAA;oBAAiBa,UAAYZ,EAAAA;AAAiB,iBAAA;gBAChFM,UAAY,EAAA;aACd,CAAA,CAAA;KACC,EAAA;AAACP,QAAAA,eAAAA;AAAiBC,QAAAA,gBAAAA;AAAkBE,QAAAA;AAAW,KAAA,CAAA;;AAGlD,IAAA,MAAMiC,iBAAoBjE,GAAAA,KAAAA,CAAM+C,WAAW,CACzC,CAACS,CAAAA,GAAAA;AACCA,QAAAA,CAAAA,CAAEU,cAAc,EAAA;AAChBV,QAAAA,CAAAA,CAAEW,eAAe,EAAA;QAEjBjC,QAAS,CAAA,CAACmB,QAAU;AAClB,gBAAA,GAAGA,IAAI;gBACPjB,UAAY,EAAA,IAAA;AACZC,gBAAAA,MAAAA,EAAQmB,EAAEK,OAAO;gBACjBvB,cAAgBT,EAAAA,eAAAA;gBAChBU,eAAiBT,EAAAA;aACnB,CAAA,CAAA;KAEF,EAAA;AAACD,QAAAA,eAAAA;AAAiBC,QAAAA;AAAiB,KAAA,CAAA;;AAIrC9B,IAAAA,KAAAA,CAAMoE,SAAS,CAAC,IAAA;QACd,IAAInC,KAAAA,CAAMG,UAAU,EAAE;YACpBiC,QAASC,CAAAA,gBAAgB,CAAC,aAAef,EAAAA,iBAAAA,CAAAA;YACzCc,QAASC,CAAAA,gBAAgB,CAAC,WAAaN,EAAAA,eAAAA,CAAAA;YAEvC,OAAO,IAAA;gBACLK,QAASE,CAAAA,mBAAmB,CAAC,aAAehB,EAAAA,iBAAAA,CAAAA;gBAC5Cc,QAASE,CAAAA,mBAAmB,CAAC,WAAaP,EAAAA,eAAAA,CAAAA;AAC5C,aAAA;AACF;KACC,EAAA;AAAC/B,QAAAA,KAAAA,CAAMG,UAAU;AAAEmB,QAAAA,iBAAAA;AAAmBS,QAAAA;AAAgB,KAAA,CAAA;;AAGzDhE,IAAAA,KAAAA,CAAMwE,eAAe,CAAC,IAAA;AACpB,QAAA,MAAMC,cAAcC,gBAAiB/C,CAAAA,YAAAA,CAAAA;AACrC,QAAA,MAAMgD,eAAeD,gBAAiB9C,CAAAA,aAAAA,CAAAA;AACtC,QAAA,MAAMgD,gBAAmBC,GAAAA,sBAAAA,EAAAA;AAEzB,QAAA,MAAMC,cAAiB,GAAA,IAAA;YACrB,MAAMpF,QAAAA,GAAWqF,6BAA8BN,CAAAA,WAAAA,EAAaE,YAAcC,EAAAA,gBAAAA,CAAAA;YAC1E,MAAM9E,WAAAA,GAAckF,kBAAmBP,CAAAA,WAAAA,EAAaE,YAAcC,EAAAA,gBAAAA,CAAAA;YAElE1C,QAAS,CAAA,CAACmB,QAAU;AAClB,oBAAA,GAAGA,IAAI;AACP3D,oBAAAA,QAAAA;AACAI,oBAAAA;iBACF,CAAA,CAAA;AACF,SAAA;;QAGA,MAAMmF,cAAAA,GAAiB,IAAIC,cAAeJ,CAAAA,cAAAA,CAAAA;;QAG1C,IAAIL,WAAAA,EAAaQ,cAAeE,CAAAA,OAAO,CAACV,WAAAA,CAAAA;QACxC,IAAIE,YAAAA,EAAcM,cAAeE,CAAAA,OAAO,CAACR,YAAAA,CAAAA;QACzC,IAAIC,gBAAAA,EAAkBK,cAAeE,CAAAA,OAAO,CAACP,gBAAAA,CAAAA;QAE7C,OAAO,IAAA;AACLK,YAAAA,cAAAA,CAAeG,UAAU,EAAA;AAC3B,SAAA;KACC,EAAA;AAACzD,QAAAA,YAAAA;AAAcC,QAAAA;AAAc,KAAA,CAAA;;AAGhC5B,IAAAA,KAAAA,CAAMoE,SAAS,CAAC,IAAA;QACd,OAAO,IAAA;YACL,IAAIxB,WAAAA,CAAYa,OAAO,EAAE;AACvBC,gBAAAA,YAAAA,CAAad,YAAYa,OAAO,CAAA;AAClC;AACF,SAAA;AACF,KAAA,EAAG,EAAE,CAAA;IAEL,qBACE4B,IAAA,CAAAC,QAAA,EAAA;;0BACEjE,GAACE,CAAAA,qBAAAA,EAAAA;gBACCgE,aAAetB,EAAAA,iBAAAA;gBACf3C,KAAO,EAAA;AACLkE,oBAAAA,SAAAA,EAAW,CAAC,UAAU,EAAEvD,KAAMvC,CAAAA,QAAQ,CAACU,IAAI,CAAC,IAAI,EAAE6B,MAAMvC,QAAQ,CAACmB,GAAG,CAAC,GAAG,CAAC;oBACzEG,MAAQ,EAAA,CAAC,EAAEiB,KAAMvC,CAAAA,QAAQ,CAACsB,MAAM,CAAC,EAAE;AACrC,iBAAA;AAEA,gBAAA,QAAA,gBAAAK,GAACI,CAAAA,eAAAA,EAAAA;AAAgBD,oBAAAA,WAAAA,EAAaS,MAAMG;;;0BAGtCf,GAAC7B,CAAAA,eAAAA,EAAAA;AACCC,gBAAAA,SAAAA,EAAWwC,MAAMG,UAAU;AAC3B1C,gBAAAA,QAAAA,EAAUuC,MAAMvC,QAAQ;gBACxBC,gBAAkBsC,EAAAA,KAAAA,CAAMU,mBAAmB,CAACF,SAAS;gBACrD7C,iBAAmBqC,EAAAA,KAAAA,CAAMU,mBAAmB,CAACD,UAAU;AACvD5C,gBAAAA,WAAAA,EAAamC,MAAMnC;;;;AAI3B;;;;"}
@@ -93,7 +93,10 @@ const Link = (props)=>{
93
93
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
94
94
  tag: "div",
95
95
  lineHeight: "32px",
96
- width: "100%",
96
+ width: {
97
+ initial: '80dvw',
98
+ medium: '100%'
99
+ },
97
100
  overflow: "hidden",
98
101
  style: {
99
102
  textOverflow: 'ellipsis',
@@ -136,8 +139,12 @@ const Sections = ({ children, ...props })=>{
136
139
  return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
137
140
  paddingTop: 4,
138
141
  paddingBottom: 4,
142
+ maxWidth: {
143
+ initial: '100%',
144
+ medium: '23.2rem'
145
+ },
139
146
  children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
140
- tag: "ol",
147
+ tag: "ul",
141
148
  gap: "5",
142
149
  direction: "column",
143
150
  alignItems: "stretch",
@@ -1 +1 @@
1
- {"version":3,"file":"SubNav.js","sources":["../../../../../admin/src/components/SubNav.tsx"],"sourcesContent":["import { useId, useState } from 'react';\n\nimport {\n Box,\n SubNav as DSSubNav,\n Flex,\n Typography,\n IconButton,\n Badge,\n ScrollArea,\n} from '@strapi/design-system';\nimport { ChevronDown, Plus } from '@strapi/icons';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { HEIGHT_TOP_NAVIGATION } from '../constants/theme';\n\nimport { tours } from './GuidedTour/Tours';\n\nconst MainSubNav = styled(DSSubNav)`\n width: 100%;\n height: calc(100dvh - ${HEIGHT_TOP_NAVIGATION} - 1px);\n overflow: hidden;\n background-color: ${({ theme }) => theme.colors.neutral0};\n display: flex;\n flex-direction: column;\n border-right: 0;\n box-shadow: none;\n position: fixed;\n top: calc(${HEIGHT_TOP_NAVIGATION} + 1px);\n left: 0;\n z-index: 2;\n\n ${({ theme }) => theme.breakpoints.medium} {\n position: sticky;\n top: 0;\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n }\n ${({ theme }) => theme.breakpoints.large} {\n height: 100dvh;\n }\n`;\n\nconst Main = ({ children, ...props }: { children: React.ReactNode; isFullPage?: boolean }) => (\n <MainSubNav {...props}>{children}</MainSubNav>\n);\n\nconst StyledLink = styled(NavLink)`\n display: flex;\n align-items: center;\n justify-content: space-between;\n text-decoration: none;\n height: 32px;\n\n color: ${({ theme }) => theme.colors.neutral800};\n\n &.active > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.primary100};\n color: ${theme.colors.primary700};\n font-weight: 500;\n `;\n }}\n }\n\n &:hover.active > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.primary100};\n `;\n }}\n }\n\n &:hover > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.neutral100};\n `;\n }}\n }\n\n &:focus-visible {\n outline-offset: -2px;\n }\n`;\n\nconst Link = (\n props: Omit<React.ComponentProps<typeof StyledLink>, 'label'> & {\n label: React.ReactNode;\n endAction?: React.ReactNode;\n handleClick?: () => void;\n }\n) => {\n const { label, endAction, handleClick, ...rest } = props;\n\n return (\n <StyledLink {...rest} onClick={handleClick}>\n <Box width={'100%'} paddingLeft={3} paddingRight={3} borderRadius={1}>\n <Flex justifyContent=\"space-between\" width=\"100%\" gap={1}>\n <Typography\n tag=\"div\"\n lineHeight=\"32px\"\n width=\"100%\"\n overflow=\"hidden\"\n style={{ textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}\n >\n {label}\n </Typography>\n <Flex gap={2}>{endAction}</Flex>\n </Flex>\n </Box>\n </StyledLink>\n );\n};\n\nconst StyledHeader = styled(Flex)`\n flex: 0 0 ${HEIGHT_TOP_NAVIGATION};\n height: ${HEIGHT_TOP_NAVIGATION};\n`;\n\nconst Header = ({ label }: { label: string }) => {\n return (\n <StyledHeader\n justifyContent=\"space-between\"\n paddingLeft={{\n initial: 4,\n large: 5,\n }}\n paddingRight={{\n initial: 4,\n large: 5,\n }}\n >\n <Typography variant=\"beta\" tag=\"h2\">\n {label}\n </Typography>\n </StyledHeader>\n );\n};\n\nconst Sections = ({ children, ...props }: { children: React.ReactNode[]; [key: string]: any }) => {\n return (\n <Box paddingTop={4} paddingBottom={4}>\n <Flex tag=\"ol\" gap=\"5\" direction=\"column\" alignItems=\"stretch\" {...props}>\n {children.map((child, index) => {\n return <li key={index}>{child}</li>;\n })}\n </Flex>\n </Box>\n );\n};\n\n/**\n * TODO:\n * This would be better in the content-type-builder package directly but currently\n * the SubNav API does not expose a way to wrap the link, instead it wraps the link and the list\n */\nconst GuidedTourTooltip = ({\n sectionId,\n children,\n}: {\n sectionId?: string;\n children: React.ReactNode;\n}) => {\n switch (sectionId) {\n case 'models':\n return (\n <tours.contentTypeBuilder.CollectionTypes>\n <tours.contentTypeBuilder.YourTurn>{children}</tours.contentTypeBuilder.YourTurn>\n </tours.contentTypeBuilder.CollectionTypes>\n );\n case 'singleTypes':\n return (\n <tours.contentTypeBuilder.SingleTypes>{children}</tours.contentTypeBuilder.SingleTypes>\n );\n case 'components':\n return <tours.contentTypeBuilder.Components>{children}</tours.contentTypeBuilder.Components>;\n default:\n return children;\n }\n};\n\nconst Section = ({\n label,\n children,\n link,\n sectionId,\n badgeLabel,\n}: {\n label: string;\n children: React.ReactNode[];\n link?: { label: string; onClick: () => void };\n sectionId?: string;\n badgeLabel?: string;\n}) => {\n const listId = useId();\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Box\n paddingLeft={{\n initial: 4,\n large: 5,\n }}\n paddingRight={{\n initial: 4,\n large: 5,\n }}\n >\n <Flex position=\"relative\" justifyContent=\"space-between\" gap={2}>\n <Flex>\n <Box paddingRight={1}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {label}\n </Typography>\n </Box>\n </Flex>\n <Flex gap={1}>\n {badgeLabel && (\n <Badge backgroundColor=\"neutral150\" textColor=\"neutral600\">\n {badgeLabel}\n </Badge>\n )}\n {link && (\n <GuidedTourTooltip sectionId={sectionId}>\n <IconButton\n label={link.label}\n variant=\"ghost\"\n withTooltip\n onClick={link.onClick}\n size=\"XS\"\n >\n <Plus />\n </IconButton>\n </GuidedTourTooltip>\n )}\n </Flex>\n </Flex>\n </Box>\n <Flex\n tag=\"ol\"\n id={listId}\n direction=\"column\"\n gap=\"2px\"\n alignItems={'stretch'}\n marginLeft={{\n initial: 1,\n large: 2,\n }}\n marginRight={{\n initial: 1,\n large: 2,\n }}\n >\n {children.map((child, index) => {\n return <li key={index}>{child}</li>;\n })}\n </Flex>\n </Flex>\n );\n};\n\nconst SubSectionHeader = styled.button`\n cursor: pointer;\n width: 100%;\n border: none;\n padding: 0;\n background: transparent;\n display: flex;\n align-items: center;\n border-radius: ${({ theme }) => theme.borderRadius};\n padding-left: ${({ theme }) => theme.spaces[3]};\n padding-right: ${({ theme }) => theme.spaces[3]};\n padding-top: ${({ theme }) => theme.spaces[2]};\n padding-bottom: ${({ theme }) => theme.spaces[2]};\n\n &:hover {\n background-color: ${({ theme }) => theme.colors.neutral100};\n }\n`;\n\nconst SubSectionLinkWrapper = styled.li`\n ${StyledLink} > div {\n padding-left: 36px;\n }\n`;\n\nconst SubSection = ({ label, children }: { label: string; children: React.ReactNode[] }) => {\n const [isOpen, setOpenLinks] = useState(true);\n const listId = useId();\n\n const handleClick = () => {\n setOpenLinks((prev) => !prev);\n };\n\n return (\n <Box>\n <Flex justifyContent=\"space-between\">\n <SubSectionHeader onClick={handleClick} aria-expanded={isOpen} aria-controls={listId}>\n <ChevronDown\n aria-hidden\n fill=\"neutral500\"\n style={{\n transform: `rotate(${isOpen ? '0deg' : '-90deg'})`,\n transition: 'transform 0.5s',\n }}\n />\n <Box paddingLeft={2}>\n <Typography tag=\"span\" fontWeight=\"semiBold\" textColor=\"neutral800\">\n {label}\n </Typography>\n </Box>\n </SubSectionHeader>\n </Flex>\n {\n <Flex\n tag=\"ul\"\n id={listId}\n direction=\"column\"\n gap=\"2px\"\n alignItems={'stretch'}\n style={{\n maxHeight: isOpen ? '1000px' : 0,\n overflow: 'hidden',\n transition: isOpen\n ? 'max-height 1s ease-in-out'\n : 'max-height 0.5s cubic-bezier(0, 1, 0, 1)',\n }}\n >\n {children.map((child, index) => {\n return <SubSectionLinkWrapper key={index}>{child}</SubSectionLinkWrapper>;\n })}\n </Flex>\n }\n </Box>\n );\n};\n\nconst PageWrapper = styled(Box)`\n ${MainSubNav} {\n background-color: transparent;\n border-right: none;\n }\n\n ${({ theme }) => theme.breakpoints.medium} {\n ${MainSubNav} {\n top: 0;\n }\n }\n`;\n\nconst Content = ({ children }: { children: React.ReactNode }) => {\n return <ScrollArea>{children}</ScrollArea>;\n};\n\nexport const SubNav = {\n Main,\n Content,\n Header,\n Link,\n Sections,\n Section,\n SubSection,\n PageWrapper,\n};\n"],"names":["MainSubNav","styled","DSSubNav","HEIGHT_TOP_NAVIGATION","theme","colors","neutral0","breakpoints","medium","neutral150","large","Main","children","props","_jsx","StyledLink","NavLink","neutral800","primary100","primary700","neutral100","Link","label","endAction","handleClick","rest","onClick","Box","width","paddingLeft","paddingRight","borderRadius","_jsxs","Flex","justifyContent","gap","Typography","tag","lineHeight","overflow","style","textOverflow","whiteSpace","StyledHeader","Header","initial","variant","Sections","paddingTop","paddingBottom","direction","alignItems","map","child","index","li","GuidedTourTooltip","sectionId","tours","contentTypeBuilder","CollectionTypes","YourTurn","SingleTypes","Components","Section","link","badgeLabel","listId","useId","position","textColor","Badge","backgroundColor","IconButton","withTooltip","size","Plus","id","marginLeft","marginRight","SubSectionHeader","button","spaces","SubSectionLinkWrapper","SubSection","isOpen","setOpenLinks","useState","prev","aria-expanded","aria-controls","ChevronDown","aria-hidden","fill","transform","transition","fontWeight","maxHeight","PageWrapper","Content","ScrollArea","SubNav"],"mappings":"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"}
1
+ {"version":3,"file":"SubNav.js","sources":["../../../../../admin/src/components/SubNav.tsx"],"sourcesContent":["import { useId, useState } from 'react';\n\nimport {\n Box,\n SubNav as DSSubNav,\n Flex,\n Typography,\n IconButton,\n Badge,\n ScrollArea,\n} from '@strapi/design-system';\nimport { ChevronDown, Plus } from '@strapi/icons';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { HEIGHT_TOP_NAVIGATION } from '../constants/theme';\n\nimport { tours } from './GuidedTour/Tours';\n\nconst MainSubNav = styled(DSSubNav)`\n width: 100%;\n height: calc(100dvh - ${HEIGHT_TOP_NAVIGATION} - 1px);\n overflow: hidden;\n background-color: ${({ theme }) => theme.colors.neutral0};\n display: flex;\n flex-direction: column;\n border-right: 0;\n box-shadow: none;\n position: fixed;\n top: calc(${HEIGHT_TOP_NAVIGATION} + 1px);\n left: 0;\n z-index: 2;\n\n ${({ theme }) => theme.breakpoints.medium} {\n position: sticky;\n top: 0;\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n }\n ${({ theme }) => theme.breakpoints.large} {\n height: 100dvh;\n }\n`;\n\nconst Main = ({ children, ...props }: { children: React.ReactNode; isFullPage?: boolean }) => (\n <MainSubNav {...props}>{children}</MainSubNav>\n);\n\nconst StyledLink = styled(NavLink)`\n display: flex;\n align-items: center;\n justify-content: space-between;\n text-decoration: none;\n height: 32px;\n\n color: ${({ theme }) => theme.colors.neutral800};\n\n &.active > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.primary100};\n color: ${theme.colors.primary700};\n font-weight: 500;\n `;\n }}\n }\n\n &:hover.active > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.primary100};\n `;\n }}\n }\n\n &:hover > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.neutral100};\n `;\n }}\n }\n\n &:focus-visible {\n outline-offset: -2px;\n }\n`;\n\nconst Link = (\n props: Omit<React.ComponentProps<typeof StyledLink>, 'label'> & {\n label: React.ReactNode;\n endAction?: React.ReactNode;\n handleClick?: () => void;\n }\n) => {\n const { label, endAction, handleClick, ...rest } = props;\n\n return (\n <StyledLink {...rest} onClick={handleClick}>\n <Box width={'100%'} paddingLeft={3} paddingRight={3} borderRadius={1}>\n <Flex justifyContent=\"space-between\" width=\"100%\" gap={1}>\n <Typography\n tag=\"div\"\n lineHeight=\"32px\"\n width={{ initial: '80dvw', medium: '100%' }}\n overflow=\"hidden\"\n style={{ textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}\n >\n {label}\n </Typography>\n <Flex gap={2}>{endAction}</Flex>\n </Flex>\n </Box>\n </StyledLink>\n );\n};\n\nconst StyledHeader = styled(Flex)`\n flex: 0 0 ${HEIGHT_TOP_NAVIGATION};\n height: ${HEIGHT_TOP_NAVIGATION};\n`;\n\nconst Header = ({ label }: { label: string }) => {\n return (\n <StyledHeader\n justifyContent=\"space-between\"\n paddingLeft={{\n initial: 4,\n large: 5,\n }}\n paddingRight={{\n initial: 4,\n large: 5,\n }}\n >\n <Typography variant=\"beta\" tag=\"h2\">\n {label}\n </Typography>\n </StyledHeader>\n );\n};\n\nconst Sections = ({\n children,\n ...props\n}: {\n children: React.ReactNode[];\n [key: string]: unknown;\n}) => {\n return (\n <Box paddingTop={4} paddingBottom={4} maxWidth={{ initial: '100%', medium: '23.2rem' }}>\n <Flex tag=\"ul\" gap=\"5\" direction=\"column\" alignItems=\"stretch\" {...props}>\n {children.map((child, index) => {\n return <li key={index}>{child}</li>;\n })}\n </Flex>\n </Box>\n );\n};\n\n/**\n * TODO:\n * This would be better in the content-type-builder package directly but currently\n * the SubNav API does not expose a way to wrap the link, instead it wraps the link and the list\n */\nconst GuidedTourTooltip = ({\n sectionId,\n children,\n}: {\n sectionId?: string;\n children: React.ReactNode;\n}) => {\n switch (sectionId) {\n case 'models':\n return (\n <tours.contentTypeBuilder.CollectionTypes>\n <tours.contentTypeBuilder.YourTurn>{children}</tours.contentTypeBuilder.YourTurn>\n </tours.contentTypeBuilder.CollectionTypes>\n );\n case 'singleTypes':\n return (\n <tours.contentTypeBuilder.SingleTypes>{children}</tours.contentTypeBuilder.SingleTypes>\n );\n case 'components':\n return <tours.contentTypeBuilder.Components>{children}</tours.contentTypeBuilder.Components>;\n default:\n return children;\n }\n};\n\nconst Section = ({\n label,\n children,\n link,\n sectionId,\n badgeLabel,\n}: {\n label: string;\n children: React.ReactNode[];\n link?: { label: string; onClick: () => void };\n sectionId?: string;\n badgeLabel?: string;\n}) => {\n const listId = useId();\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Box\n paddingLeft={{\n initial: 4,\n large: 5,\n }}\n paddingRight={{\n initial: 4,\n large: 5,\n }}\n >\n <Flex position=\"relative\" justifyContent=\"space-between\" gap={2}>\n <Flex>\n <Box paddingRight={1}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {label}\n </Typography>\n </Box>\n </Flex>\n <Flex gap={1}>\n {badgeLabel && (\n <Badge backgroundColor=\"neutral150\" textColor=\"neutral600\">\n {badgeLabel}\n </Badge>\n )}\n {link && (\n <GuidedTourTooltip sectionId={sectionId}>\n <IconButton\n label={link.label}\n variant=\"ghost\"\n withTooltip\n onClick={link.onClick}\n size=\"XS\"\n >\n <Plus />\n </IconButton>\n </GuidedTourTooltip>\n )}\n </Flex>\n </Flex>\n </Box>\n <Flex\n tag=\"ol\"\n id={listId}\n direction=\"column\"\n gap=\"2px\"\n alignItems={'stretch'}\n marginLeft={{\n initial: 1,\n large: 2,\n }}\n marginRight={{\n initial: 1,\n large: 2,\n }}\n >\n {children.map((child, index) => {\n return <li key={index}>{child}</li>;\n })}\n </Flex>\n </Flex>\n );\n};\n\nconst SubSectionHeader = styled.button`\n cursor: pointer;\n width: 100%;\n border: none;\n padding: 0;\n background: transparent;\n display: flex;\n align-items: center;\n border-radius: ${({ theme }) => theme.borderRadius};\n padding-left: ${({ theme }) => theme.spaces[3]};\n padding-right: ${({ theme }) => theme.spaces[3]};\n padding-top: ${({ theme }) => theme.spaces[2]};\n padding-bottom: ${({ theme }) => theme.spaces[2]};\n\n &:hover {\n background-color: ${({ theme }) => theme.colors.neutral100};\n }\n`;\n\nconst SubSectionLinkWrapper = styled.li`\n ${StyledLink} > div {\n padding-left: 36px;\n }\n`;\n\nconst SubSection = ({ label, children }: { label: string; children: React.ReactNode[] }) => {\n const [isOpen, setOpenLinks] = useState(true);\n const listId = useId();\n\n const handleClick = () => {\n setOpenLinks((prev) => !prev);\n };\n\n return (\n <Box>\n <Flex justifyContent=\"space-between\">\n <SubSectionHeader onClick={handleClick} aria-expanded={isOpen} aria-controls={listId}>\n <ChevronDown\n aria-hidden\n fill=\"neutral500\"\n style={{\n transform: `rotate(${isOpen ? '0deg' : '-90deg'})`,\n transition: 'transform 0.5s',\n }}\n />\n <Box paddingLeft={2}>\n <Typography tag=\"span\" fontWeight=\"semiBold\" textColor=\"neutral800\">\n {label}\n </Typography>\n </Box>\n </SubSectionHeader>\n </Flex>\n <Flex\n tag=\"ul\"\n id={listId}\n direction=\"column\"\n gap=\"2px\"\n alignItems={'stretch'}\n style={{\n maxHeight: isOpen ? '1000px' : 0,\n overflow: 'hidden',\n transition: isOpen\n ? 'max-height 1s ease-in-out'\n : 'max-height 0.5s cubic-bezier(0, 1, 0, 1)',\n }}\n >\n {children.map((child, index) => {\n return <SubSectionLinkWrapper key={index}>{child}</SubSectionLinkWrapper>;\n })}\n </Flex>\n </Box>\n );\n};\n\nconst PageWrapper = styled(Box)`\n ${MainSubNav} {\n background-color: transparent;\n border-right: none;\n }\n\n ${({ theme }) => theme.breakpoints.medium} {\n ${MainSubNav} {\n top: 0;\n }\n }\n`;\n\nconst Content = ({ children }: { children: React.ReactNode }) => {\n return <ScrollArea>{children}</ScrollArea>;\n};\n\nexport const SubNav = {\n Main,\n Content,\n Header,\n Link,\n Sections,\n Section,\n SubSection,\n PageWrapper,\n};\n"],"names":["MainSubNav","styled","DSSubNav","HEIGHT_TOP_NAVIGATION","theme","colors","neutral0","breakpoints","medium","neutral150","large","Main","children","props","_jsx","StyledLink","NavLink","neutral800","primary100","primary700","neutral100","Link","label","endAction","handleClick","rest","onClick","Box","width","paddingLeft","paddingRight","borderRadius","_jsxs","Flex","justifyContent","gap","Typography","tag","lineHeight","initial","overflow","style","textOverflow","whiteSpace","StyledHeader","Header","variant","Sections","paddingTop","paddingBottom","maxWidth","direction","alignItems","map","child","index","li","GuidedTourTooltip","sectionId","tours","contentTypeBuilder","CollectionTypes","YourTurn","SingleTypes","Components","Section","link","badgeLabel","listId","useId","position","textColor","Badge","backgroundColor","IconButton","withTooltip","size","Plus","id","marginLeft","marginRight","SubSectionHeader","button","spaces","SubSectionLinkWrapper","SubSection","isOpen","setOpenLinks","useState","prev","aria-expanded","aria-controls","ChevronDown","aria-hidden","fill","transform","transition","fontWeight","maxHeight","PageWrapper","Content","ScrollArea","SubNav"],"mappings":"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"}
@@ -91,7 +91,10 @@ const Link = (props)=>{
91
91
  /*#__PURE__*/ jsx(Typography, {
92
92
  tag: "div",
93
93
  lineHeight: "32px",
94
- width: "100%",
94
+ width: {
95
+ initial: '80dvw',
96
+ medium: '100%'
97
+ },
95
98
  overflow: "hidden",
96
99
  style: {
97
100
  textOverflow: 'ellipsis',
@@ -134,8 +137,12 @@ const Sections = ({ children, ...props })=>{
134
137
  return /*#__PURE__*/ jsx(Box, {
135
138
  paddingTop: 4,
136
139
  paddingBottom: 4,
140
+ maxWidth: {
141
+ initial: '100%',
142
+ medium: '23.2rem'
143
+ },
137
144
  children: /*#__PURE__*/ jsx(Flex, {
138
- tag: "ol",
145
+ tag: "ul",
139
146
  gap: "5",
140
147
  direction: "column",
141
148
  alignItems: "stretch",