@devcabs/folio-engine 0.0.0-stage → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. package/dist/App.d.ts +7 -0
  2. package/dist/components/canvas/CanvasAddBar.d.ts +28 -0
  3. package/dist/components/canvas/CanvasAddModal.d.ts +38 -0
  4. package/dist/components/canvas/CanvasChart.d.ts +23 -0
  5. package/dist/components/canvas/CanvasDeleteConfirmModal.d.ts +21 -0
  6. package/dist/components/canvas/CanvasGallery.d.ts +20 -0
  7. package/dist/components/canvas/CanvasItemControls.d.ts +33 -0
  8. package/dist/components/canvas/CanvasPhoto.d.ts +28 -0
  9. package/dist/components/canvas/CanvasSection.d.ts +27 -0
  10. package/dist/components/canvas/CanvasSubsection.d.ts +23 -0
  11. package/dist/components/canvas/CanvasText.d.ts +23 -0
  12. package/dist/components/canvas/DocumentCanvas.d.ts +20 -0
  13. package/dist/components/canvas/HeroPhoto.d.ts +17 -0
  14. package/dist/components/canvas/NodeCanvas.d.ts +2 -0
  15. package/dist/components/canvas/index.d.ts +17 -0
  16. package/dist/components/chart/BarChart.d.ts +23 -0
  17. package/dist/components/chart/ChartCard.d.ts +33 -0
  18. package/dist/components/chart/ChartConfigDrawer.d.ts +16 -0
  19. package/dist/components/chart/ChartGhostWireframe.d.ts +16 -0
  20. package/dist/components/chart/ChartLegend.d.ts +14 -0
  21. package/dist/components/chart/ChartRouter.d.ts +8 -0
  22. package/dist/components/chart/ChartSortingControls.d.ts +15 -0
  23. package/dist/components/chart/ChartTableModal.d.ts +26 -0
  24. package/dist/components/chart/ChartTooltip.d.ts +12 -0
  25. package/dist/components/chart/DataPendingCard.d.ts +28 -0
  26. package/dist/components/chart/DonutChart.d.ts +16 -0
  27. package/dist/components/chart/HistogramChart.d.ts +23 -0
  28. package/dist/components/chart/LineChart.d.ts +22 -0
  29. package/dist/components/chart/RangePreviewMatrix.d.ts +19 -0
  30. package/dist/components/chart/ScatterPlot.d.ts +21 -0
  31. package/dist/components/chart/drawer/controls/BarVisualControls.d.ts +9 -0
  32. package/dist/components/chart/drawer/controls/ChartTitlesSection.d.ts +15 -0
  33. package/dist/components/chart/drawer/controls/DonutVisualControls.d.ts +7 -0
  34. package/dist/components/chart/drawer/controls/HistogramVisualControls.d.ts +13 -0
  35. package/dist/components/chart/drawer/controls/LineVisualControls.d.ts +14 -0
  36. package/dist/components/chart/drawer/controls/ScatterDataControls.d.ts +17 -0
  37. package/dist/components/chart/drawer/controls/ScatterVisualControls.d.ts +23 -0
  38. package/dist/components/chart/drawer/controls/SortingAndOrderControls.d.ts +18 -0
  39. package/dist/components/chart/drawer/controls/StandardDataControls.d.ts +31 -0
  40. package/dist/components/chart/drawer/hooks/useChartConfigForm.d.ts +156 -0
  41. package/dist/components/chart/drawer/hooks/useLiveMatrixSync.d.ts +21 -0
  42. package/dist/components/chart/drawer/hooks/useSheetVerification.d.ts +26 -0
  43. package/dist/components/chart/drawer/index.d.ts +17 -0
  44. package/dist/components/chart/drawer/panels/Step1Source.d.ts +18 -0
  45. package/dist/components/chart/drawer/panels/Step1SourceRange.d.ts +32 -0
  46. package/dist/components/chart/drawer/panels/Step2DataRange.d.ts +15 -0
  47. package/dist/components/chart/drawer/panels/Step3ChartSetup.d.ts +17 -0
  48. package/dist/components/chart/drawer/panels/Step4Review.d.ts +11 -0
  49. package/dist/components/chart/index.d.ts +22 -0
  50. package/dist/components/dev/DevActionAffordance.d.ts +4 -0
  51. package/dist/components/dev/DevExitConfirmModal.d.ts +14 -0
  52. package/dist/components/dev/DevLockBlockedModal.d.ts +3 -0
  53. package/dist/components/dev/DevModeBadge.d.ts +3 -0
  54. package/dist/components/dev/DevPinModal.d.ts +3 -0
  55. package/dist/components/dev/DevPublishModal.d.ts +9 -0
  56. package/dist/components/dev/UniversalEditModal.d.ts +40 -0
  57. package/dist/components/dev/index.d.ts +8 -0
  58. package/dist/components/feedback/EmptyState.d.ts +13 -0
  59. package/dist/components/feedback/PageNotFound.d.ts +15 -0
  60. package/dist/components/feedback/Toast.d.ts +25 -0
  61. package/dist/components/feedback/index.d.ts +2 -0
  62. package/dist/components/history/HistoryHubModal.d.ts +44 -0
  63. package/dist/components/history/index.d.ts +1 -0
  64. package/dist/components/layout/AppFooter.d.ts +10 -0
  65. package/dist/components/layout/AppHeader.d.ts +22 -0
  66. package/dist/components/layout/EditorialSection.d.ts +27 -0
  67. package/dist/components/layout/EditorialSidebar.d.ts +34 -0
  68. package/dist/components/layout/HeroSection.d.ts +2 -0
  69. package/dist/components/layout/HeroWelcome.d.ts +11 -0
  70. package/dist/components/layout/SearchField.d.ts +9 -0
  71. package/dist/components/layout/StatusPill.d.ts +2 -0
  72. package/dist/components/layout/index.d.ts +8 -0
  73. package/dist/components/roadmap/RoadmapNode.d.ts +30 -0
  74. package/dist/components/roadmap/RoadmapSection.d.ts +27 -0
  75. package/dist/components/roadmap/RoadmapTrack.d.ts +25 -0
  76. package/dist/components/roadmap/serpentine-generator.d.ts +60 -0
  77. package/dist/components/roadmap/use-roadmap-scroll.d.ts +19 -0
  78. package/dist/components/source/EditPhotoModal.d.ts +22 -0
  79. package/dist/components/source/LightboxPhotoStrip.d.ts +23 -0
  80. package/dist/components/source/LinkFolderModal.d.ts +24 -0
  81. package/dist/components/source/SourceCard.d.ts +31 -0
  82. package/dist/components/source/SourceFolderAttachment.d.ts +25 -0
  83. package/dist/components/source/SourceGallery.d.ts +26 -0
  84. package/dist/components/source/SourceImage.d.ts +26 -0
  85. package/dist/components/source/SourceLightbox.d.ts +28 -0
  86. package/dist/components/source/index.d.ts +9 -0
  87. package/dist/components/ui/AccordionSection.d.ts +21 -0
  88. package/dist/components/ui/Breadcrumb.d.ts +29 -0
  89. package/dist/components/ui/Button.d.ts +31 -0
  90. package/dist/components/ui/ColumnSelect.d.ts +17 -0
  91. package/dist/components/ui/ColumnTypeBadge.d.ts +6 -0
  92. package/dist/components/ui/DevHelpTooltip.d.ts +11 -0
  93. package/dist/components/ui/DraggableRows.d.ts +21 -0
  94. package/dist/components/ui/Drawer.d.ts +50 -0
  95. package/dist/components/ui/DrawerTier.d.ts +8 -0
  96. package/dist/components/ui/EditableText.d.ts +48 -0
  97. package/dist/components/ui/FAB.d.ts +24 -0
  98. package/dist/components/ui/Modal.d.ts +24 -0
  99. package/dist/components/ui/PageTitle.d.ts +33 -0
  100. package/dist/components/ui/ParametricShape.d.ts +57 -0
  101. package/dist/components/ui/RevolvingButton.d.ts +5 -0
  102. package/dist/components/ui/SectionTitle.d.ts +42 -0
  103. package/dist/components/ui/SeriesSelectToolbar.d.ts +10 -0
  104. package/dist/components/ui/StatusPill.d.ts +21 -0
  105. package/dist/components/ui/TieredSlider.d.ts +19 -0
  106. package/dist/components/ui/Toast.d.ts +1 -0
  107. package/dist/components/ui/ValueLabelToggle.d.ts +10 -0
  108. package/dist/components/ui/index.d.ts +21 -0
  109. package/dist/config/engine.config.d.ts +162 -0
  110. package/dist/context/DeveloperModeContext.d.ts +11 -0
  111. package/dist/context/UndoRedoContext.d.ts +20 -0
  112. package/dist/diagnostics/verifyEngineSetup.d.ts +30 -0
  113. package/dist/diagnostics-CpGr1hhi.js +126 -0
  114. package/dist/diagnostics-Dw5PzR78.cjs +5 -0
  115. package/dist/diagnostics.cjs +1 -0
  116. package/dist/diagnostics.d.ts +10 -0
  117. package/dist/diagnostics.js +14 -0
  118. package/dist/edge-1WCVZ0J7.cjs +1 -0
  119. package/dist/edge-CSjifIhA.js +2709 -0
  120. package/dist/edge-Dr41JdrQ.cjs +34 -0
  121. package/dist/edge-h_ge9f1E.js +512 -0
  122. package/dist/edge.cjs +1 -0
  123. package/dist/edge.d.ts +10 -0
  124. package/dist/edge.js +26 -0
  125. package/dist/folio.cjs +9 -0
  126. package/dist/folio.js +21895 -0
  127. package/dist/hooks/use-auto-toc.d.ts +31 -0
  128. package/dist/hooks/use-discrete-step-navigation.d.ts +26 -0
  129. package/dist/hooks/use-dynamic-section-numbers.d.ts +30 -0
  130. package/dist/hooks/use-hash-route.d.ts +36 -0
  131. package/dist/hooks/use-scroll.d.ts +22 -0
  132. package/dist/hooks/use-scrollspy.d.ts +19 -0
  133. package/dist/hooks/useChartTooltip.d.ts +25 -0
  134. package/dist/hooks/useContent.d.ts +36 -0
  135. package/dist/hooks/useDeveloperMode.d.ts +1 -0
  136. package/dist/hooks/useDocumentCanvas.d.ts +53 -0
  137. package/dist/hooks/useDrivePhotoSync.d.ts +15 -0
  138. package/dist/hooks/useImageLoader.d.ts +12 -0
  139. package/dist/hooks/useLightboxHistory.d.ts +14 -0
  140. package/dist/hooks/useNodeCanvas.d.ts +2 -0
  141. package/dist/hooks/useSheetChartData.d.ts +31 -0
  142. package/dist/hooks/useSourcePoint.d.ts +35 -0
  143. package/dist/hooks/useSwipeGesture.d.ts +30 -0
  144. package/dist/hooks/useUndoRedo.d.ts +9 -0
  145. package/dist/hooks/useUnsavedChangesPrompt.d.ts +18 -0
  146. package/dist/index.d.ts +53 -0
  147. package/dist/main.d.ts +1 -0
  148. package/dist/services/canvasLayoutService.d.ts +158 -0
  149. package/dist/services/chartSourceService.d.ts +128 -0
  150. package/dist/services/devLockService.d.ts +76 -0
  151. package/dist/services/draftService.d.ts +129 -0
  152. package/dist/services/drivePhotoSyncService.d.ts +60 -0
  153. package/dist/services/driveVerificationService.d.ts +41 -0
  154. package/dist/services/edgePreBakeService.d.ts +81 -0
  155. package/dist/services/historyService.d.ts +215 -0
  156. package/dist/services/historyStorage.d.ts +17 -0
  157. package/dist/services/mediaService.d.ts +25 -0
  158. package/dist/services/sheetsDataService.d.ts +59 -0
  159. package/dist/services/sheetsVerificationService.d.ts +87 -0
  160. package/dist/services/sourceService.d.ts +43 -0
  161. package/dist/services/undoRedoService.d.ts +63 -0
  162. package/dist/services/unsavedChangesService.d.ts +32 -0
  163. package/dist/style.css +1 -0
  164. package/dist/types/canvas.d.ts +115 -0
  165. package/dist/types/chart.d.ts +117 -0
  166. package/dist/types/developer.d.ts +144 -0
  167. package/dist/types/draft.d.ts +21 -0
  168. package/dist/types/edge.d.ts +232 -0
  169. package/dist/types/history.d.ts +81 -0
  170. package/dist/types/media.d.ts +16 -0
  171. package/dist/types/navigation.d.ts +19 -0
  172. package/dist/types/node.d.ts +51 -0
  173. package/dist/types/source.d.ts +88 -0
  174. package/dist/utils/canvasDefaults.d.ts +43 -0
  175. package/dist/utils/chartColors.d.ts +48 -0
  176. package/dist/utils/chartDimensions.d.ts +50 -0
  177. package/dist/utils/chartMath.d.ts +142 -0
  178. package/dist/utils/chartSanitizer.d.ts +84 -0
  179. package/dist/utils/contentDb.d.ts +86 -0
  180. package/dist/utils/devSecurity.d.ts +84 -0
  181. package/dist/utils/mediaUrl.d.ts +32 -0
  182. package/dist/utils/modalActions.d.ts +32 -0
  183. package/dist/utils/node-sections.d.ts +15 -0
  184. package/dist/utils/page-sections.d.ts +1 -0
  185. package/dist/utils/runtime-env.d.ts +21 -0
  186. package/dist/utils/scrollLock.d.ts +10 -0
  187. package/dist/utils/smooth-scroll.d.ts +24 -0
  188. package/dist/utils/source.d.ts +25 -0
  189. package/dist/utils/storage.d.ts +13 -0
  190. package/dist/utils/supabase-config.d.ts +29 -0
  191. package/dist/utils/supabase-write-guard.d.ts +15 -0
  192. package/package.json +68 -4
  193. package/README.md +0 -3
@@ -0,0 +1,21 @@
1
+ import React from 'react';
2
+ import type { ScatterPoint } from '../../types/chart';
3
+ export interface ScatterPlotProps {
4
+ points?: ScatterPoint[];
5
+ xLabel?: string;
6
+ yLabel?: string;
7
+ unit?: string;
8
+ accentColor?: string;
9
+ curveInterpolation?: 'none' | 'linear' | 'smooth' | 'polynomial' | 'straight';
10
+ loessBandwidth?: number;
11
+ showAreaFill?: boolean;
12
+ markerSize?: 'compact' | 'regular' | 'prominent';
13
+ autoScaleY?: boolean;
14
+ autoScaleX?: boolean;
15
+ startAtZero?: boolean;
16
+ startAtZeroX?: boolean;
17
+ showCorrelationChip?: boolean;
18
+ showReferenceGuide?: boolean;
19
+ onSelectPoint?: (point: ScatterPoint) => void;
20
+ }
21
+ export declare const ScatterPlot: React.FC<ScatterPlotProps>;
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ interface BarVisualControlsProps {
3
+ barOrientation: 'vertical' | 'horizontal';
4
+ setBarOrientation: (val: 'vertical' | 'horizontal') => void;
5
+ stacked: boolean;
6
+ setStacked: (val: boolean) => void;
7
+ }
8
+ export declare const BarVisualControls: React.FC<BarVisualControlsProps>;
9
+ export {};
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import type { ChartType } from '../../../../types/chart';
3
+ interface ChartTitlesSectionProps {
4
+ titleOverride: string;
5
+ setTitleOverride: (val: string) => void;
6
+ subtitleOverride: string;
7
+ setSubtitleOverride: (val: string) => void;
8
+ xLabel?: string;
9
+ setXLabel?: (val: string) => void;
10
+ yLabel?: string;
11
+ setYLabel?: (val: string) => void;
12
+ chartType?: ChartType;
13
+ }
14
+ export declare const ChartTitlesSection: React.FC<ChartTitlesSectionProps>;
15
+ export {};
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ interface DonutVisualControlsProps {
3
+ donutVariant: 'donut' | 'pie';
4
+ setDonutVariant: (val: 'donut' | 'pie') => void;
5
+ }
6
+ export declare const DonutVisualControls: React.FC<DonutVisualControlsProps>;
7
+ export {};
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ interface HistogramVisualControlsProps {
3
+ curveInterpolation: 'smooth' | 'straight' | 'linear' | 'none' | 'polynomial';
4
+ setCurveInterpolation: (val: 'smooth' | 'straight' | 'linear' | 'none' | 'polynomial') => void;
5
+ showReferenceGuide: boolean;
6
+ setShowReferenceGuide: (val: boolean) => void;
7
+ showSummaryStats: boolean;
8
+ setShowSummaryStats: (val: boolean) => void;
9
+ showMedianMode: boolean;
10
+ setShowMedianMode: (val: boolean) => void;
11
+ }
12
+ export declare const HistogramVisualControls: React.FC<HistogramVisualControlsProps>;
13
+ export {};
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ interface LineVisualControlsProps {
3
+ curveInterpolation: 'smooth' | 'straight' | 'linear' | 'none' | 'polynomial';
4
+ setCurveInterpolation: (val: 'smooth' | 'straight' | 'linear' | 'none' | 'polynomial') => void;
5
+ markerSize: 'compact' | 'regular' | 'prominent';
6
+ setMarkerSize: (val: 'compact' | 'regular' | 'prominent') => void;
7
+ showAreaFill: boolean;
8
+ setShowAreaFill: (val: boolean) => void;
9
+ startAtZero: boolean;
10
+ setStartAtZero: (val: boolean) => void;
11
+ setAutoScaleY: (val: boolean) => void;
12
+ }
13
+ export declare const LineVisualControls: React.FC<LineVisualControlsProps>;
14
+ export {};
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ interface ScatterDataControlsProps {
3
+ effectiveScatterX: number;
4
+ setScatterXColIndex: (val: number) => void;
5
+ effectiveScatterY: number;
6
+ setScatterYColIndex: (val: number) => void;
7
+ effectiveScatterLabel: number;
8
+ setScatterLabelColIndex: (val: number) => void;
9
+ scatterGroupColIndex?: number;
10
+ setScatterGroupColIndex: (val?: number) => void;
11
+ detectedColumns: Array<{
12
+ index: number;
13
+ label: string;
14
+ }>;
15
+ }
16
+ export declare const ScatterDataControls: React.FC<ScatterDataControlsProps>;
17
+ export {};
@@ -0,0 +1,23 @@
1
+ import React from 'react';
2
+ interface ScatterVisualControlsProps {
3
+ curveInterpolation: 'smooth' | 'straight' | 'linear' | 'none' | 'polynomial';
4
+ setCurveInterpolation: (val: 'smooth' | 'straight' | 'linear' | 'none' | 'polynomial') => void;
5
+ markerSize: 'compact' | 'regular' | 'prominent';
6
+ setMarkerSize: (val: 'compact' | 'regular' | 'prominent') => void;
7
+ loessBandwidth: number;
8
+ setLoessBandwidth: (val: number) => void;
9
+ showAreaFill: boolean;
10
+ setShowAreaFill: (val: boolean) => void;
11
+ showCorrelationChip: boolean;
12
+ setShowCorrelationChip: (val: boolean) => void;
13
+ showReferenceGuide: boolean;
14
+ setShowReferenceGuide: (val: boolean) => void;
15
+ startAtZero: boolean;
16
+ setStartAtZero: (val: boolean) => void;
17
+ setAutoScaleY: (val: boolean) => void;
18
+ startAtZeroX: boolean;
19
+ setStartAtZeroX: (val: boolean) => void;
20
+ setAutoScaleX: (val: boolean) => void;
21
+ }
22
+ export declare const ScatterVisualControls: React.FC<ScatterVisualControlsProps>;
23
+ export {};
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ import type { ChartType } from '../../../../types/chart';
3
+ interface SortingAndOrderControlsProps {
4
+ chartType: ChartType;
5
+ sortBy: 'none' | 'asc' | 'desc' | 'category-asc' | 'category-desc';
6
+ setSortBy: (val: 'none' | 'asc' | 'desc' | 'category-asc' | 'category-desc') => void;
7
+ sortField: string;
8
+ setSortField: (val: string) => void;
9
+ sortDirection: 'asc' | 'desc';
10
+ setSortDirection: (val: 'asc' | 'desc') => void;
11
+ categoryColIndex: number;
12
+ detectedColumns: Array<{
13
+ index: number;
14
+ label: string;
15
+ }>;
16
+ }
17
+ export declare const SortingAndOrderControls: React.FC<SortingAndOrderControlsProps>;
18
+ export {};
@@ -0,0 +1,31 @@
1
+ import React from 'react';
2
+ import type { ChartType } from '../../../../types/chart';
3
+ interface StandardDataControlsProps {
4
+ chartType: ChartType;
5
+ categoryColIndex: number;
6
+ setCategoryColIndex: (val: number) => void;
7
+ detectedColumns: Array<{
8
+ index: number;
9
+ label: string;
10
+ }>;
11
+ includedSeriesIndices: number[] | undefined;
12
+ setIncludedSeriesIndices: (val: number[] | undefined) => void;
13
+ binStrategy: 'auto' | 'custom';
14
+ setBinStrategy: (val: 'auto' | 'custom') => void;
15
+ customBinMode: 'step' | 'count';
16
+ setCustomBinMode: (val: 'step' | 'count') => void;
17
+ bucketSize: number | '';
18
+ setBucketSize: (val: number | '') => void;
19
+ binCount: number | '';
20
+ setBinCount: (val: number | '') => void;
21
+ histogramYMode: 'frequency' | 'relative';
22
+ setHistogramYMode: (val: 'frequency' | 'relative') => void;
23
+ groupOthers: boolean;
24
+ setGroupOthers: (val: boolean) => void;
25
+ sortField: string;
26
+ setSortField: (val: string) => void;
27
+ accentColor: string;
28
+ handleToggleSeries: (colIdx: number) => void;
29
+ }
30
+ export declare const StandardDataControls: React.FC<StandardDataControlsProps>;
31
+ export {};
@@ -0,0 +1,156 @@
1
+ import type { SheetChartConfig, ChartType } from '../../../../types/chart';
2
+ import type { NodeCode } from '../../../../types/node';
3
+ export interface FormSnapshot {
4
+ sheetUrl: string;
5
+ tabName: string;
6
+ sheetGid: string;
7
+ range: string;
8
+ chartType: ChartType;
9
+ unit: string;
10
+ titleOverride: string;
11
+ subtitleOverride: string;
12
+ barVariant: 'standard' | 'progress';
13
+ targetValue: number | undefined;
14
+ targetLabel: string;
15
+ categoryColIndex: number;
16
+ includedSeriesIndices: number[] | undefined;
17
+ sortBy: 'none' | 'asc' | 'desc' | 'category-asc' | 'category-desc';
18
+ sortField: string;
19
+ sortDirection: 'asc' | 'desc';
20
+ orientation: 'vertical' | 'horizontal';
21
+ barOrientation: 'vertical' | 'horizontal';
22
+ stacked: boolean;
23
+ showValues: boolean;
24
+ lastModifiedTime: string | undefined;
25
+ excludeSummaryRows: boolean;
26
+ transpose: boolean;
27
+ curveInterpolation: 'smooth' | 'straight' | 'linear' | 'none' | 'polynomial';
28
+ showAreaFill: boolean;
29
+ markerSize: 'compact' | 'regular' | 'prominent';
30
+ autoScaleY: boolean;
31
+ startAtZero: boolean;
32
+ scatterXColIndex?: number;
33
+ scatterYColIndex?: number;
34
+ scatterLabelColIndex?: number;
35
+ scatterGroupColIndex?: number;
36
+ autoScaleX: boolean;
37
+ startAtZeroX: boolean;
38
+ loessBandwidth: number;
39
+ showCorrelationChip: boolean;
40
+ donutVariant: 'donut' | 'pie';
41
+ groupOthers: boolean;
42
+ binStrategy: 'auto' | 'custom';
43
+ customBinMode: 'step' | 'count';
44
+ binCount: number;
45
+ bucketSize: number;
46
+ histogramYMode: 'frequency' | 'relative';
47
+ showSummaryStats: boolean;
48
+ showMedianMode: boolean;
49
+ showReferenceGuide: boolean;
50
+ xLabel: string;
51
+ yLabel: string;
52
+ }
53
+ export declare function createSnapshotFromConfig(cfg?: SheetChartConfig): FormSnapshot;
54
+ export declare function useChartConfigForm(initialConfig?: SheetChartConfig): {
55
+ sheetUrl: string;
56
+ setSheetUrl: import("react").Dispatch<import("react").SetStateAction<string>>;
57
+ tabName: string;
58
+ setTabName: import("react").Dispatch<import("react").SetStateAction<string>>;
59
+ sheetGid: string;
60
+ setSheetGid: import("react").Dispatch<import("react").SetStateAction<string>>;
61
+ range: string;
62
+ setRange: import("react").Dispatch<import("react").SetStateAction<string>>;
63
+ chartType: ChartType;
64
+ setChartType: import("react").Dispatch<import("react").SetStateAction<ChartType>>;
65
+ unit: string;
66
+ setUnit: import("react").Dispatch<import("react").SetStateAction<string>>;
67
+ titleOverride: string;
68
+ setTitleOverride: import("react").Dispatch<import("react").SetStateAction<string>>;
69
+ subtitleOverride: string;
70
+ setSubtitleOverride: import("react").Dispatch<import("react").SetStateAction<string>>;
71
+ xLabel: string;
72
+ setXLabel: import("react").Dispatch<import("react").SetStateAction<string>>;
73
+ yLabel: string;
74
+ setYLabel: import("react").Dispatch<import("react").SetStateAction<string>>;
75
+ excludeSummaryRows: boolean;
76
+ setExcludeSummaryRows: import("react").Dispatch<import("react").SetStateAction<boolean>>;
77
+ transpose: boolean;
78
+ setTranspose: import("react").Dispatch<import("react").SetStateAction<boolean>>;
79
+ barVariant: "standard" | "progress";
80
+ setBarVariant: import("react").Dispatch<import("react").SetStateAction<"standard" | "progress">>;
81
+ targetValue: number | undefined;
82
+ setTargetValue: import("react").Dispatch<import("react").SetStateAction<number | undefined>>;
83
+ targetLabel: string;
84
+ setTargetLabel: import("react").Dispatch<import("react").SetStateAction<string>>;
85
+ categoryColIndex: number;
86
+ setCategoryColIndex: import("react").Dispatch<import("react").SetStateAction<number>>;
87
+ includedSeriesIndices: number[] | undefined;
88
+ setIncludedSeriesIndices: import("react").Dispatch<import("react").SetStateAction<number[] | undefined>>;
89
+ sortBy: "none" | "asc" | "desc" | "category-asc" | "category-desc";
90
+ setSortBy: import("react").Dispatch<import("react").SetStateAction<"none" | "asc" | "desc" | "category-asc" | "category-desc">>;
91
+ sortField: string;
92
+ setSortField: import("react").Dispatch<import("react").SetStateAction<string>>;
93
+ sortDirection: "asc" | "desc";
94
+ setSortDirection: import("react").Dispatch<import("react").SetStateAction<"asc" | "desc">>;
95
+ barOrientation: "vertical" | "horizontal";
96
+ setBarOrientation: import("react").Dispatch<import("react").SetStateAction<"vertical" | "horizontal">>;
97
+ stacked: boolean;
98
+ setStacked: import("react").Dispatch<import("react").SetStateAction<boolean>>;
99
+ showValues: boolean;
100
+ setShowValues: import("react").Dispatch<import("react").SetStateAction<boolean>>;
101
+ lastModifiedTime: string | undefined;
102
+ setLastModifiedTime: import("react").Dispatch<import("react").SetStateAction<string | undefined>>;
103
+ curveInterpolation: "none" | "smooth" | "straight" | "linear" | "polynomial";
104
+ setCurveInterpolation: import("react").Dispatch<import("react").SetStateAction<"none" | "smooth" | "straight" | "linear" | "polynomial">>;
105
+ showAreaFill: boolean;
106
+ setShowAreaFill: import("react").Dispatch<import("react").SetStateAction<boolean>>;
107
+ markerSize: "compact" | "regular" | "prominent";
108
+ setMarkerSize: import("react").Dispatch<import("react").SetStateAction<"compact" | "regular" | "prominent">>;
109
+ autoScaleY: boolean;
110
+ setAutoScaleY: import("react").Dispatch<import("react").SetStateAction<boolean>>;
111
+ startAtZero: boolean;
112
+ setStartAtZero: import("react").Dispatch<import("react").SetStateAction<boolean>>;
113
+ scatterXColIndex: number | undefined;
114
+ setScatterXColIndex: import("react").Dispatch<import("react").SetStateAction<number | undefined>>;
115
+ scatterYColIndex: number | undefined;
116
+ setScatterYColIndex: import("react").Dispatch<import("react").SetStateAction<number | undefined>>;
117
+ scatterLabelColIndex: number | undefined;
118
+ setScatterLabelColIndex: import("react").Dispatch<import("react").SetStateAction<number | undefined>>;
119
+ scatterGroupColIndex: number | undefined;
120
+ setScatterGroupColIndex: import("react").Dispatch<import("react").SetStateAction<number | undefined>>;
121
+ autoScaleX: boolean;
122
+ setAutoScaleX: import("react").Dispatch<import("react").SetStateAction<boolean>>;
123
+ startAtZeroX: boolean;
124
+ setStartAtZeroX: import("react").Dispatch<import("react").SetStateAction<boolean>>;
125
+ loessBandwidth: number;
126
+ setLoessBandwidth: import("react").Dispatch<import("react").SetStateAction<number>>;
127
+ showCorrelationChip: boolean;
128
+ setShowCorrelationChip: import("react").Dispatch<import("react").SetStateAction<boolean>>;
129
+ donutVariant: "donut" | "pie";
130
+ setDonutVariant: import("react").Dispatch<import("react").SetStateAction<"donut" | "pie">>;
131
+ groupOthers: boolean;
132
+ setGroupOthers: import("react").Dispatch<import("react").SetStateAction<boolean>>;
133
+ binStrategy: "auto" | "custom";
134
+ setBinStrategy: import("react").Dispatch<import("react").SetStateAction<"auto" | "custom">>;
135
+ customBinMode: "step" | "count";
136
+ setCustomBinMode: import("react").Dispatch<import("react").SetStateAction<"step" | "count">>;
137
+ binCount: number | "";
138
+ setBinCount: import("react").Dispatch<import("react").SetStateAction<number | "">>;
139
+ bucketSize: number | "";
140
+ setBucketSize: import("react").Dispatch<import("react").SetStateAction<number | "">>;
141
+ histogramYMode: "frequency" | "relative";
142
+ setHistogramYMode: import("react").Dispatch<import("react").SetStateAction<"frequency" | "relative">>;
143
+ showSummaryStats: boolean;
144
+ setShowSummaryStats: import("react").Dispatch<import("react").SetStateAction<boolean>>;
145
+ showMedianMode: boolean;
146
+ setShowMedianMode: import("react").Dispatch<import("react").SetStateAction<boolean>>;
147
+ showReferenceGuide: boolean;
148
+ setShowReferenceGuide: import("react").Dispatch<import("react").SetStateAction<boolean>>;
149
+ savedSnapshot: FormSnapshot;
150
+ setSavedSnapshot: import("react").Dispatch<import("react").SetStateAction<FormSnapshot>>;
151
+ hasUnsavedChanges: boolean;
152
+ resetForm: (cfg?: SheetChartConfig) => void;
153
+ markAsSaved: (cfg: SheetChartConfig) => void;
154
+ buildConfigPayload: (chartId: string, nodeId: NodeCode, effectiveScatterX?: number, effectiveScatterY?: number, effectiveScatterLabel?: number) => SheetChartConfig;
155
+ };
156
+ export type ChartConfigFormReturn = ReturnType<typeof useChartConfigForm>;
@@ -0,0 +1,21 @@
1
+ interface UseLiveMatrixSyncProps {
2
+ sheetUrl: string;
3
+ tabName: string;
4
+ sheetGid: string;
5
+ range: string;
6
+ previewMatrix?: (string | number | null)[][] | null | undefined;
7
+ }
8
+ export declare function useLiveMatrixSync({ sheetUrl, tabName, sheetGid, range, previewMatrix, }: UseLiveMatrixSyncProps): {
9
+ fetchedMatrix: (string | number | null)[][];
10
+ fullMatrix: (string | number | null)[][];
11
+ isSyncing: boolean;
12
+ liveMatrix: (string | number | null)[][];
13
+ activeMatrix: (string | number | null)[][];
14
+ detectedColumns: {
15
+ index: number;
16
+ label: string;
17
+ }[];
18
+ detectedRange: string | null;
19
+ executeSync: (targetUrl?: string, targetTab?: string, targetGid?: string) => Promise<void>;
20
+ };
21
+ export {};
@@ -0,0 +1,26 @@
1
+ import type { SheetChartConfig } from '../../../../types/chart';
2
+ import { type SheetMetadataTab } from '../../../../services/sheetsVerificationService';
3
+ export type AccessStatus = 'idle' | 'checking' | 'public' | 'restricted' | 'invalid';
4
+ interface UseSheetVerificationProps {
5
+ sheetUrl: string;
6
+ tabName: string;
7
+ sheetGid: string;
8
+ initialConfig?: SheetChartConfig;
9
+ setTabName: (name: string) => void;
10
+ setSheetGid: (gid: string) => void;
11
+ setLastModifiedTime: (time?: string) => void;
12
+ onAutoSelectTab?: (tabTitle: string, gid: string) => void;
13
+ }
14
+ export declare function useSheetVerification({ sheetUrl, tabName, sheetGid, initialConfig, setTabName, setSheetGid, setLastModifiedTime, onAutoSelectTab, }: UseSheetVerificationProps): {
15
+ accessStatus: AccessStatus;
16
+ setAccessStatus: import("react").Dispatch<import("react").SetStateAction<AccessStatus>>;
17
+ statusMessage: string;
18
+ setStatusMessage: import("react").Dispatch<import("react").SetStateAction<string>>;
19
+ discoveredTabs: SheetMetadataTab[];
20
+ setDiscoveredTabs: import("react").Dispatch<import("react").SetStateAction<SheetMetadataTab[]>>;
21
+ isStep1Valid: boolean;
22
+ executeVerification: (urlToVerify: string) => Promise<void>;
23
+ handleTabChange: (e: React.ChangeEvent<HTMLSelectElement>) => void;
24
+ resetVerification: (newUrl?: string, newTabName?: string, newGid?: string) => void;
25
+ };
26
+ export {};
@@ -0,0 +1,17 @@
1
+ export { useChartConfigForm, type ChartConfigFormReturn, type FormSnapshot, createSnapshotFromConfig } from './hooks/useChartConfigForm';
2
+ export { useSheetVerification, type AccessStatus } from './hooks/useSheetVerification';
3
+ export { useLiveMatrixSync } from './hooks/useLiveMatrixSync';
4
+ export { Step1SourceRange } from './panels/Step1SourceRange';
5
+ export { Step1Source } from './panels/Step1Source';
6
+ export { Step2DataRange } from './panels/Step2DataRange';
7
+ export { Step3ChartSetup, type ChartSetupSubTab } from './panels/Step3ChartSetup';
8
+ export { Step4Review } from './panels/Step4Review';
9
+ export { BarVisualControls } from './controls/BarVisualControls';
10
+ export { LineVisualControls } from './controls/LineVisualControls';
11
+ export { DonutVisualControls } from './controls/DonutVisualControls';
12
+ export { HistogramVisualControls } from './controls/HistogramVisualControls';
13
+ export { ScatterVisualControls } from './controls/ScatterVisualControls';
14
+ export { ChartTitlesSection } from './controls/ChartTitlesSection';
15
+ export { ScatterDataControls } from './controls/ScatterDataControls';
16
+ export { StandardDataControls } from './controls/StandardDataControls';
17
+ export { SortingAndOrderControls } from './controls/SortingAndOrderControls';
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ import type { SheetMetadataTab } from '../../../../services/sheetsVerificationService';
3
+ import type { AccessStatus } from '../hooks/useSheetVerification';
4
+ interface Step1SourceProps {
5
+ sheetUrl: string;
6
+ setSheetUrl: (url: string) => void;
7
+ accessStatus: AccessStatus;
8
+ statusMessage: string;
9
+ discoveredTabs: SheetMetadataTab[];
10
+ tabName: string;
11
+ setTabName: (tab: string) => void;
12
+ executeVerification: (url: string) => void;
13
+ handleTabChange: (e: React.ChangeEvent<HTMLSelectElement>) => void;
14
+ onResync?: () => void;
15
+ isSyncing?: boolean;
16
+ }
17
+ export declare const Step1Source: React.FC<Step1SourceProps>;
18
+ export {};
@@ -0,0 +1,32 @@
1
+ import React from 'react';
2
+ import { type SheetMetadataTab } from '../../../../services/sheetsVerificationService';
3
+ import type { AccessStatus } from '../hooks/useSheetVerification';
4
+ export interface Step1SourceRangeProps {
5
+ sheetUrl: string;
6
+ setSheetUrl: (url: string) => void;
7
+ accessStatus: AccessStatus;
8
+ statusMessage: string;
9
+ discoveredTabs: SheetMetadataTab[];
10
+ tabName: string;
11
+ sheetGid?: string;
12
+ setTabName: (tab: string) => void;
13
+ executeVerification: (url: string) => void;
14
+ handleTabChange: (e: React.ChangeEvent<HTMLSelectElement>) => void;
15
+ onResync?: () => void;
16
+ isSyncing?: boolean;
17
+ range: string;
18
+ isRangeValid: boolean;
19
+ isSelectingRange: boolean;
20
+ setIsSelectingRange: (val: boolean | ((prev: boolean) => boolean)) => void;
21
+ executeSync: (url?: string, tab?: string, gid?: string) => Promise<void> | void;
22
+ }
23
+ /**
24
+ * Step1SourceRange Component
25
+ * Folio Engine — Task 13.1: Full-Viewport Edge-to-Edge Spreadsheet Studio
26
+ *
27
+ * Streamlines Google Sheet connection and cell range selection into
28
+ * a single focused setup panel. Range selection is triggered interactively
29
+ * across the wide edge-to-edge sheet preview on the left.
30
+ */
31
+ export declare const Step1SourceRange: React.FC<Step1SourceRangeProps>;
32
+ export default Step1SourceRange;
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ interface Step2DataRangeProps {
3
+ range: string;
4
+ setRange: (val: string) => void;
5
+ isRangeValid: boolean;
6
+ executeSync: () => void;
7
+ isSyncing: boolean;
8
+ excludeSummaryRows: boolean;
9
+ setExcludeSummaryRows: (val: boolean) => void;
10
+ transpose: boolean;
11
+ setTranspose: (val: boolean) => void;
12
+ liveMatrix: (string | number | null)[][];
13
+ }
14
+ export declare const Step2DataRange: React.FC<Step2DataRangeProps>;
15
+ export {};
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ import type { ChartConfigFormReturn } from '../hooks/useChartConfigForm';
3
+ export type ChartSetupSubTab = 'style' | 'data' | 'sorting';
4
+ interface Step3ChartSetupProps {
5
+ form: ChartConfigFormReturn;
6
+ detectedColumns: Array<{
7
+ index: number;
8
+ label: string;
9
+ }>;
10
+ accentColor: string;
11
+ setupSubTab: ChartSetupSubTab;
12
+ setSetupSubTab: (tab: ChartSetupSubTab) => void;
13
+ handleSubTabKeyDown: (e: React.KeyboardEvent) => void;
14
+ handleToggleSeries: (colIdx: number) => void;
15
+ }
16
+ export declare const Step3ChartSetup: React.FC<Step3ChartSetupProps>;
17
+ export {};
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import type { ChartType, ChartDataset } from '../../../../types/chart';
3
+ interface Step4ReviewProps {
4
+ isSyncing: boolean;
5
+ previewDataset: ChartDataset | null;
6
+ chartType: ChartType;
7
+ accentColor: string;
8
+ range: string;
9
+ }
10
+ export declare const Step4Review: React.FC<Step4ReviewProps>;
11
+ export {};
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Pure SVG Chart Presentation Layer & Data Visualizers
3
+ * Folio Engine
4
+ * Document Reference: docs/tasks/task7_3_pure_svg_visualizers_mobile_purge.md &
5
+ * docs/tasks/task7_4_drawer_range_matrix_supabase_deploy.md &
6
+ * docs/tasks/task7_8_5_canonical_chart_drawer_elements.md
7
+ */
8
+ export { BarChart, type BarChartProps } from './BarChart';
9
+ export { LineChart, type LineChartProps } from './LineChart';
10
+ export { DonutChart, type DonutChartProps } from './DonutChart';
11
+ export { ScatterPlot, type ScatterPlotProps } from './ScatterPlot';
12
+ export { HistogramChart, type HistogramChartProps } from './HistogramChart';
13
+ export { ChartTooltip, type ChartTooltipProps } from './ChartTooltip';
14
+ export { ChartRouter, type ChartRouterProps } from './ChartRouter';
15
+ export { RangePreviewMatrix, type RangePreviewMatrixProps } from './RangePreviewMatrix';
16
+ export { ChartConfigDrawer, type ChartConfigDrawerProps } from './ChartConfigDrawer';
17
+ export { ChartCard, type ChartCardProps } from './ChartCard';
18
+ export { DataPendingCard, type DataPendingCardProps } from './DataPendingCard';
19
+ export { ChartGhostWireframe, type ChartGhostWireframeProps } from './ChartGhostWireframe';
20
+ export { ChartSortingControls, type ChartSortingControlsProps, type ChartSortingSeriesOption } from './ChartSortingControls';
21
+ export { ChartLegend, type ChartLegendProps, type ChartLegendItem } from './ChartLegend';
22
+ export { ChartTableModal, type ChartTableModalProps } from './ChartTableModal';
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import type { DevActionAffordanceProps } from '../../types/developer';
3
+ export declare const DevActionAffordance: React.FC<DevActionAffordanceProps>;
4
+ export default DevActionAffordance;
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ /**
3
+ * DevExitConfirmModal Component
4
+ * Folio Engine — Developer Mode Exit Safeguard
5
+ *
6
+ * Implements:
7
+ * Case A (Clean State): 1-click confirmation "Exit Developer Mode"
8
+ * Case B (Dirty State): "You have unpublished changes. Drafts will not be kept once you exit."
9
+ * - [Publish & Exit]
10
+ * - [Discard Draft & Exit]
11
+ * - [Keep Editing]
12
+ */
13
+ export declare const DevExitConfirmModal: React.FC;
14
+ export default DevExitConfirmModal;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare const DevLockBlockedModal: React.FC;
3
+ export default DevLockBlockedModal;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare const DevModeBadge: React.FC;
3
+ export default DevModeBadge;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare const DevPinModal: React.FC;
3
+ export default DevPinModal;
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import type { PublishedSnapshot } from '../../types/history';
3
+ export interface DevPublishModalProps {
4
+ isOpen: boolean;
5
+ onClose: () => void;
6
+ onPublished?: (snapshot: PublishedSnapshot, cloudSynced?: boolean) => void;
7
+ }
8
+ export declare const DevPublishModal: React.FC<DevPublishModalProps>;
9
+ export default DevPublishModal;
@@ -0,0 +1,40 @@
1
+ import React from 'react';
2
+ import type { CanvasModalMode, CanvasModalElementType, CanvasElementFormData } from '../../types/canvas';
3
+ import type { DevEditType, DevLinkData, DevImageData, DevFileData } from '../../types/developer';
4
+ export interface UniversalEditModalProps {
5
+ isOpen: boolean;
6
+ onClose: () => void;
7
+ mode?: CanvasModalMode;
8
+ elementType?: CanvasModalElementType | null;
9
+ nodeId?: string;
10
+ itemId?: string;
11
+ initialData?: CanvasElementFormData;
12
+ targetSectionId?: string;
13
+ targetIndex?: number;
14
+ targetSubsectionId?: string;
15
+ onSubmit?: (data: CanvasElementFormData) => void;
16
+ onResetToDefault?: () => void;
17
+ pointId?: string;
18
+ type?: DevEditType;
19
+ currentValue?: string | DevLinkData | DevImageData | DevFileData;
20
+ defaultValue?: string | DevLinkData | DevImageData | DevFileData;
21
+ title?: string;
22
+ isSection?: boolean;
23
+ isNumbered?: boolean;
24
+ defaultNumbered?: boolean;
25
+ onNumberedChange?: (isNumbered: boolean) => void;
26
+ onSave?: (newValue: string, type?: DevEditType, data?: DevLinkData | DevImageData | DevFileData) => void;
27
+ onReset?: () => void;
28
+ }
29
+ /**
30
+ * UniversalEditModal Component
31
+ * Folio Engine — Task 10.6: Universal Edit Modal Unification
32
+ *
33
+ * Unifies all portal and canvas edit affordances into a single canonical modal:
34
+ * - Handles Dynamic Canvas Elements (Section, Subsection, Narrative Text, Photo, Gallery)
35
+ * - Handles Generic Portal Strings (Hero titles, Mission/Vision, Roadmap milestones, Footer, Links, Documents)
36
+ * - Strict Draft-Only persistence: All mutations target the draft sandbox
37
+ * - Universal Zero Outline Policy, 100% Token Purity, Zero Divider Lines
38
+ */
39
+ export declare const UniversalEditModal: React.FC<UniversalEditModalProps>;
40
+ export default UniversalEditModal;
@@ -0,0 +1,8 @@
1
+ export { DevPinModal } from './DevPinModal';
2
+ export { DevModeBadge } from './DevModeBadge';
3
+ export { DevActionAffordance } from './DevActionAffordance';
4
+ export { UniversalEditModal } from './UniversalEditModal';
5
+ export type { UniversalEditModalProps } from './UniversalEditModal';
6
+ export { DevLockBlockedModal } from './DevLockBlockedModal';
7
+ export { DevExitConfirmModal } from './DevExitConfirmModal';
8
+ export { DevPublishModal } from './DevPublishModal';
@@ -0,0 +1,13 @@
1
+ import React from "react";
2
+ export interface EmptyStateProps {
3
+ title?: string;
4
+ description?: string;
5
+ actionText?: string;
6
+ actionLabel?: string;
7
+ variant?: string;
8
+ onAction?: () => void;
9
+ className?: string;
10
+ [key: string]: any;
11
+ }
12
+ export declare const EmptyState: React.FC<EmptyStateProps>;
13
+ export default EmptyState;