@devcabs/folio-engine 0.0.0-stage → 0.1.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 (180) 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 +21 -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 +31 -0
  110. package/dist/context/DeveloperModeContext.d.ts +11 -0
  111. package/dist/context/UndoRedoContext.d.ts +20 -0
  112. package/dist/folio.js +24996 -0
  113. package/dist/folio.umd.cjs +42 -0
  114. package/dist/hooks/use-auto-toc.d.ts +31 -0
  115. package/dist/hooks/use-discrete-step-navigation.d.ts +26 -0
  116. package/dist/hooks/use-dynamic-section-numbers.d.ts +30 -0
  117. package/dist/hooks/use-hash-route.d.ts +36 -0
  118. package/dist/hooks/use-scroll.d.ts +22 -0
  119. package/dist/hooks/use-scrollspy.d.ts +19 -0
  120. package/dist/hooks/useChartTooltip.d.ts +25 -0
  121. package/dist/hooks/useContent.d.ts +36 -0
  122. package/dist/hooks/useDeveloperMode.d.ts +1 -0
  123. package/dist/hooks/useDocumentCanvas.d.ts +53 -0
  124. package/dist/hooks/useDrivePhotoSync.d.ts +15 -0
  125. package/dist/hooks/useImageLoader.d.ts +12 -0
  126. package/dist/hooks/useLightboxHistory.d.ts +14 -0
  127. package/dist/hooks/useNodeCanvas.d.ts +2 -0
  128. package/dist/hooks/useSheetChartData.d.ts +30 -0
  129. package/dist/hooks/useSourcePoint.d.ts +35 -0
  130. package/dist/hooks/useSwipeGesture.d.ts +30 -0
  131. package/dist/hooks/useUndoRedo.d.ts +9 -0
  132. package/dist/hooks/useUnsavedChangesPrompt.d.ts +18 -0
  133. package/dist/index.d.ts +52 -0
  134. package/dist/main.d.ts +1 -0
  135. package/dist/services/canvasLayoutService.d.ts +158 -0
  136. package/dist/services/chartSourceService.d.ts +128 -0
  137. package/dist/services/devLockService.d.ts +76 -0
  138. package/dist/services/draftService.d.ts +129 -0
  139. package/dist/services/drivePhotoSyncService.d.ts +60 -0
  140. package/dist/services/driveVerificationService.d.ts +41 -0
  141. package/dist/services/edgePreBakeService.d.ts +81 -0
  142. package/dist/services/historyService.d.ts +215 -0
  143. package/dist/services/historyStorage.d.ts +17 -0
  144. package/dist/services/mediaService.d.ts +25 -0
  145. package/dist/services/sheetsDataService.d.ts +59 -0
  146. package/dist/services/sheetsVerificationService.d.ts +87 -0
  147. package/dist/services/sourceService.d.ts +43 -0
  148. package/dist/services/undoRedoService.d.ts +63 -0
  149. package/dist/services/unsavedChangesService.d.ts +32 -0
  150. package/dist/style.css +1 -0
  151. package/dist/types/canvas.d.ts +115 -0
  152. package/dist/types/chart.d.ts +117 -0
  153. package/dist/types/developer.d.ts +144 -0
  154. package/dist/types/draft.d.ts +21 -0
  155. package/dist/types/edge.d.ts +232 -0
  156. package/dist/types/history.d.ts +81 -0
  157. package/dist/types/media.d.ts +16 -0
  158. package/dist/types/navigation.d.ts +19 -0
  159. package/dist/types/node.d.ts +51 -0
  160. package/dist/types/source.d.ts +88 -0
  161. package/dist/utils/canvasDefaults.d.ts +43 -0
  162. package/dist/utils/chartColors.d.ts +48 -0
  163. package/dist/utils/chartDimensions.d.ts +50 -0
  164. package/dist/utils/chartMath.d.ts +142 -0
  165. package/dist/utils/chartSanitizer.d.ts +84 -0
  166. package/dist/utils/contentDb.d.ts +86 -0
  167. package/dist/utils/devSecurity.d.ts +84 -0
  168. package/dist/utils/mediaUrl.d.ts +32 -0
  169. package/dist/utils/modalActions.d.ts +32 -0
  170. package/dist/utils/node-sections.d.ts +15 -0
  171. package/dist/utils/page-sections.d.ts +1 -0
  172. package/dist/utils/runtime-env.d.ts +21 -0
  173. package/dist/utils/scrollLock.d.ts +10 -0
  174. package/dist/utils/smooth-scroll.d.ts +24 -0
  175. package/dist/utils/source.d.ts +25 -0
  176. package/dist/utils/storage.d.ts +13 -0
  177. package/dist/utils/supabase-config.d.ts +29 -0
  178. package/dist/utils/supabase-write-guard.d.ts +15 -0
  179. package/package.json +56 -4
  180. package/README.md +0 -3
@@ -0,0 +1,29 @@
1
+ import React from 'react';
2
+ export interface BreadcrumbItem {
3
+ id?: string;
4
+ label: React.ReactNode;
5
+ href?: string;
6
+ onClick?: (e: React.MouseEvent<HTMLAnchorElement | HTMLButtonElement>) => void;
7
+ isCurrent?: boolean;
8
+ icon?: React.ReactNode;
9
+ badge?: React.ReactNode;
10
+ }
11
+ export interface BreadcrumbProps {
12
+ items: BreadcrumbItem[];
13
+ separator?: React.ReactNode;
14
+ className?: string;
15
+ ariaLabel?: string;
16
+ endSlot?: React.ReactNode;
17
+ }
18
+ /**
19
+ * Canonical Breadcrumb Navigation Component
20
+ *
21
+ * Implements W3C Breadcrumb Pattern:
22
+ * - Landmark `<nav aria-label="...">` wrapping `<ol>` and `<li>` elements
23
+ * - `aria-current="page"` on current terminal items
24
+ * - Universal Zero Outline Policy compliant
25
+ * - Pure token-driven styling (zero hardcoded values)
26
+ * - Optional endSlot for auxiliary status markers or page badges
27
+ */
28
+ export declare const Breadcrumb: React.FC<BreadcrumbProps>;
29
+ export default Breadcrumb;
@@ -0,0 +1,31 @@
1
+ import React from 'react';
2
+ export type ButtonVariant = 'revolving-outline' | 'primary' | 'secondary' | 'ghost' | 'admin';
3
+ export type ButtonSize = 'xs' | 'sm' | 'md' | 'lg';
4
+ export interface ButtonProps {
5
+ variant?: ButtonVariant;
6
+ size?: ButtonSize;
7
+ outlineWidth?: number | string;
8
+ revolving?: boolean;
9
+ pulse?: boolean;
10
+ as?: 'button' | 'a';
11
+ href?: string;
12
+ type?: 'button' | 'submit' | 'reset';
13
+ onClick?: (e: React.MouseEvent<HTMLElement>) => void;
14
+ onMouseEnter?: (e: React.MouseEvent<HTMLElement>) => void;
15
+ onMouseLeave?: (e: React.MouseEvent<HTMLElement>) => void;
16
+ className?: string;
17
+ style?: React.CSSProperties;
18
+ children: React.ReactNode;
19
+ 'aria-label'?: string;
20
+ title?: string;
21
+ disabled?: boolean;
22
+ target?: string;
23
+ rel?: string;
24
+ id?: string;
25
+ tabIndex?: number;
26
+ 'aria-hidden'?: boolean | 'true' | 'false';
27
+ ref?: React.Ref<HTMLButtonElement>;
28
+ [key: `data-${string}`]: unknown;
29
+ }
30
+ export declare const Button: React.FC<ButtonProps>;
31
+ export default Button;
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ export interface DetectedColumnOption {
3
+ index: number;
4
+ label: string;
5
+ type?: 'text' | 'number';
6
+ }
7
+ export interface ColumnSelectProps {
8
+ id: string;
9
+ label: string;
10
+ value: number;
11
+ onChange: (colIndex: number) => void;
12
+ columns: DetectedColumnOption[];
13
+ expectedType?: 'text' | 'number';
14
+ hint?: string;
15
+ className?: string;
16
+ }
17
+ export declare const ColumnSelect: React.FC<ColumnSelectProps>;
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ export interface ColumnTypeBadgeProps {
3
+ type: 'text' | 'number';
4
+ className?: string;
5
+ }
6
+ export declare const ColumnTypeBadge: React.FC<ColumnTypeBadgeProps>;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ export interface DevHelpTooltipProps {
3
+ /** Explanatory help guidance shown on hover */
4
+ text: string;
5
+ /** Accessible concept name for screen readers */
6
+ label?: string;
7
+ /** Optional custom class for the trigger button */
8
+ className?: string;
9
+ }
10
+ export declare const DevHelpTooltip: React.FC<DevHelpTooltipProps>;
11
+ export default DevHelpTooltip;
@@ -0,0 +1,21 @@
1
+ import React from 'react';
2
+ export interface DraggableRowItemMeta {
3
+ index: number;
4
+ isDragging: boolean;
5
+ isDragOver: boolean;
6
+ moveUp: () => void;
7
+ moveDown: () => void;
8
+ canMoveUp: boolean;
9
+ canMoveDown: boolean;
10
+ }
11
+ export interface DraggableRowsProps<T> {
12
+ items: T[];
13
+ keyExtractor: (item: T, index: number) => string | number;
14
+ onReorder: (newItems: T[]) => void;
15
+ renderItem: (item: T, meta: DraggableRowItemMeta) => React.ReactNode;
16
+ showMicroArrows?: boolean;
17
+ className?: string;
18
+ ariaLabel?: string;
19
+ }
20
+ export declare function DraggableRows<T>({ items, keyExtractor, onReorder, renderItem, showMicroArrows, className, ariaLabel, }: DraggableRowsProps<T>): React.JSX.Element;
21
+ export default DraggableRows;
@@ -0,0 +1,50 @@
1
+ import React from 'react';
2
+ export interface DrawerTabItem {
3
+ id: string | number;
4
+ label: React.ReactNode;
5
+ badge?: React.ReactNode;
6
+ disabled?: boolean;
7
+ completed?: boolean;
8
+ }
9
+ export interface DrawerProps {
10
+ isOpen: boolean;
11
+ onClose: () => void;
12
+ title?: React.ReactNode;
13
+ kicker?: React.ReactNode;
14
+ headerActions?: React.ReactNode;
15
+ showCloseButton?: boolean;
16
+ closeOnOutsideClick?: boolean;
17
+ closeOnBackdropClick?: boolean;
18
+ position?: 'right' | 'left';
19
+ size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';
20
+ tabs?: DrawerTabItem[];
21
+ activeTab?: string | number;
22
+ onTabChange?: (tabId: string | number) => void;
23
+ tabsContent?: React.ReactNode;
24
+ footer?: React.ReactNode;
25
+ footerLeft?: React.ReactNode;
26
+ footerRight?: React.ReactNode;
27
+ children: React.ReactNode;
28
+ className?: string;
29
+ bodyClassName?: string;
30
+ ariaLabel?: string;
31
+ ariaLabelledBy?: string;
32
+ ariaDescribedBy?: string;
33
+ onConfirm?: () => void | Promise<void>;
34
+ enableCtrlEnter?: boolean;
35
+ companionContent?: React.ReactNode;
36
+ }
37
+ /**
38
+ * Drawer Component
39
+ * Folio Engine — Canonical Modern Academic Editorial Slide-Out Drawer
40
+ *
41
+ * Adheres strictly to:
42
+ * 1. Background blur with frosted glass tokens (var(--backdrop-blur), var(--overlay-scrim)).
43
+ * 2. Synchronous body scroll locking with desktop scrollbar jitter compensation.
44
+ * 3. First-class tabbed/stepper layout with accessible ARIA semantics.
45
+ * 4. Sticky drawer footer with flexible button placeholders.
46
+ * 5. Universal Zero Outline Policy & pure token styling.
47
+ * 6. Optional companionContent rendering into remaining viewport area.
48
+ */
49
+ export declare const Drawer: React.FC<DrawerProps>;
50
+ export default Drawer;
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ export interface DrawerTierProps {
3
+ title: string;
4
+ subtitle?: string;
5
+ children: React.ReactNode;
6
+ className?: string;
7
+ }
8
+ export declare const DrawerTier: React.FC<DrawerTierProps>;
@@ -0,0 +1,48 @@
1
+ import React from 'react';
2
+ export interface EditableTextProps {
3
+ /** Dynamic content key in Content DB (e.g. 'hero.title', 'footer.orgName') */
4
+ pointId: string;
5
+ /** Hardcoded initial fallback text */
6
+ defaultText: string;
7
+ /** HTML element or component to render as (defaults to 'span') */
8
+ as?: React.ElementType;
9
+ /** Optional CSS class name */
10
+ className?: string;
11
+ /** Optional wrapper CSS class name for dev mode affordance */
12
+ wrapperClassName?: string;
13
+ /** Optional inline styles */
14
+ style?: React.CSSProperties;
15
+ /** Optional child element or render prop `(text: string) => React.ReactNode` */
16
+ children?: React.ReactNode | ((resolvedText: string) => React.ReactNode);
17
+ /** Accessibility label */
18
+ ariaLabel?: string;
19
+ /** Direct update handler if custom action needed on save */
20
+ onSave?: (newValue: string) => void;
21
+ /** Direct reset handler */
22
+ onReset?: () => void;
23
+ /** Optional custom edit handler to intercept edit clicks and delegate up */
24
+ onEditText?: () => void;
25
+ /** Whether to render as an inline container in dev mode */
26
+ inline?: boolean;
27
+ /** Whether the target content belongs to a section heading */
28
+ isSection?: boolean;
29
+ /** Whether the section is currently numbered */
30
+ isNumbered?: boolean;
31
+ /** Default numbering fallback */
32
+ defaultNumbered?: boolean;
33
+ /** Callback when section numbering is toggled */
34
+ onNumberedChange?: (isNumbered: boolean) => void;
35
+ /** Optional deterministic trigger identifier for canvas controls targeting */
36
+ editTriggerId?: string;
37
+ }
38
+ /**
39
+ * EditableText Component (Canonical Typography Primitive)
40
+ *
41
+ * Implements universal in-place editing across all portal views in Developer Mode:
42
+ * - Reads reactively from Content DB via useContent
43
+ * - Displays discrete '✎ Edit' button on hover when Developer Mode is active (PIN 1997)
44
+ * - Returns pure rendered content with ZERO wrapping markup in public mode
45
+ * - Strictly adheres to Uniform Administrative Edit Button Standard and Universal Zero Outline Policy
46
+ */
47
+ export declare const EditableText: React.FC<EditableTextProps>;
48
+ export default EditableText;
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+ export interface FABProps {
3
+ label: string;
4
+ isVisible: boolean;
5
+ position?: 'left' | 'right';
6
+ direction?: 'down' | 'up';
7
+ revolving?: boolean;
8
+ pulse?: boolean;
9
+ onClick: (e?: React.MouseEvent) => void;
10
+ className?: string;
11
+ 'aria-label'?: string;
12
+ }
13
+ /**
14
+ * FAB Component (Floating Action Button) — Folio Engine
15
+ *
16
+ * All FABs are designed as a revolving variant of the button:
17
+ * - Positioned at bottom-left or bottom-right with dynamic keyboard & visual viewport adjustment
18
+ * - Conic gradient revolving outline border
19
+ * - Attention-grabbing flick micro-motion & golden halo flash (every 1.5s)
20
+ * - Directional motion cues: ↓ for advancing to next stage, ↑ for Previous or Back to Top
21
+ * - Spring-interpolated entrance and exit animations
22
+ */
23
+ export declare const FAB: React.FC<FABProps>;
24
+ export default FAB;
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+ export interface ModalProps {
3
+ isOpen: boolean;
4
+ onClose: () => void;
5
+ title?: React.ReactNode;
6
+ children: React.ReactNode;
7
+ maxWidth?: string | number;
8
+ className?: string;
9
+ cardClassName?: string;
10
+ ariaLabel?: string;
11
+ ariaLabelledBy?: string;
12
+ ariaDescribedBy?: string;
13
+ showCloseButton?: boolean;
14
+ role?: 'dialog' | 'alertdialog';
15
+ 'aria-modal'?: boolean | 'true' | 'false';
16
+ closeOnOutsideClick?: boolean;
17
+ closeOnBackdropClick?: boolean;
18
+ closeOnEscape?: boolean;
19
+ onConfirm?: () => void | Promise<void>;
20
+ enableCtrlEnter?: boolean;
21
+ initialFocusRef?: React.RefObject<HTMLElement | null>;
22
+ }
23
+ export declare const Modal: React.FC<ModalProps>;
24
+ export default Modal;
@@ -0,0 +1,33 @@
1
+ import React from 'react';
2
+ export interface PageTitleProps {
3
+ /** Main page headline (rendered as a semantic h1) */
4
+ title: string;
5
+ /** Content DB pointId for live editing */
6
+ titlePointId?: string;
7
+ /** Optional institutional eyebrow/kicker above the title */
8
+ kicker?: string;
9
+ /** Content DB pointId for kicker */
10
+ kickerPointId?: string;
11
+ /** Optional descriptive subtitle or summary below the title */
12
+ subtitle?: string;
13
+ /** Content DB pointId for subtitle */
14
+ subtitlePointId?: string;
15
+ /** Optional institutional accent color (defaults to var(--folio-primary)) */
16
+ accentColor?: string;
17
+ /** Optional custom CSS class */
18
+ className?: string;
19
+ /** Optional supplementary elements or action slots */
20
+ children?: React.ReactNode;
21
+ }
22
+ /**
23
+ * PageTitle Component (Canonical Typography Primitive)
24
+ *
25
+ * Implements Modern Academic Editorial page heading:
26
+ * - Single h1 per page for strict SEO and document outline hierarchy
27
+ * - Elegant serif typography (Fraunces) with tightened editorial tracking
28
+ * - High-contrast readable lead subtitle
29
+ * - Pure token-driven styling
30
+ * - Integrated live editing via Content DB pointIds
31
+ */
32
+ export declare const PageTitle: React.FC<PageTitleProps>;
33
+ export default PageTitle;
@@ -0,0 +1,57 @@
1
+ import React from 'react';
2
+ export interface WavyPolygonOptions {
3
+ /** Number of polygon lobes/sides (default: 5) */
4
+ sides?: number;
5
+ /** Base radius in coordinate space (default: 50) */
6
+ radius?: number;
7
+ /** Wave amplitude: crest height vs trough depth (default: 10, or 0-1 as fraction of radius) */
8
+ waviness?: number;
9
+ /** Corner roundness factor / tangent handle tension (default: 1) */
10
+ roundness?: number;
11
+ /** Outline path stroke width (default: 12) */
12
+ strokeWidth?: number;
13
+ }
14
+ export interface WavyPolygonResult {
15
+ pathData: string;
16
+ viewBox: string;
17
+ }
18
+ /**
19
+ * Mathematically generates an auto-centered, tangent-continuous closed cubic-bezier wavy polygon path
20
+ * with an auto-fitted viewBox that guarantees zero clipping.
21
+ */
22
+ export declare function generateWavyPolygonPath({ sides, radius, waviness, roundness, strokeWidth, }?: WavyPolygonOptions): WavyPolygonResult;
23
+ /**
24
+ * Computes an SVG closed path string using the parametric rosette formula.
25
+ */
26
+ export declare function generateParametricPath(sides?: number, waviness?: number, radius?: number): string;
27
+ export interface ParametricShapeProps extends WavyPolygonOptions {
28
+ /** Size preset or custom pixel number */
29
+ size?: 'sm' | 'md' | 'lg' | number;
30
+ /** Outline path stroke width (default: 12) */
31
+ strokeWidth?: number;
32
+ /** Optional glyph or letter centered in the outline (e.g. "P") */
33
+ letter?: string;
34
+ /** Custom additional CSS class */
35
+ className?: string;
36
+ /** Inline style overrides */
37
+ style?: React.CSSProperties;
38
+ /** SVG fill color if rendering direct vector */
39
+ fill?: string;
40
+ /** SVG stroke color */
41
+ stroke?: string;
42
+ /** Accessibility label */
43
+ ariaLabel?: string;
44
+ /** Whether screen readers should ignore the visual mark */
45
+ ariaHidden?: boolean;
46
+ /** Optional child elements */
47
+ children?: React.ReactNode;
48
+ }
49
+ /**
50
+ * ParametricShape — Parametric Geometric Brand Mark
51
+ * Renders an auto-centered, tangent-continuous cubic-Bézier wavy polygon
52
+ * with CSS `--gradient-conic` design token masking or direct SVG fill.
53
+ */
54
+ export declare const ParametricShape: React.FC<ParametricShapeProps>;
55
+ export default ParametricShape;
56
+ export { ParametricShape as EnzoLogo };
57
+ export type { ParametricShapeProps as EnzoLogoProps };
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import { ButtonProps } from './Button';
3
+ export type RevolvingButtonProps = Omit<ButtonProps, 'variant'>;
4
+ export declare const RevolvingButton: React.FC<RevolvingButtonProps>;
5
+ export default RevolvingButton;
@@ -0,0 +1,42 @@
1
+ import React from 'react';
2
+ export interface SectionTitleProps {
3
+ /** The primary section title text */
4
+ title: string;
5
+ /** Content DB pointId for title */
6
+ titlePointId?: string;
7
+ /** Optional section numbering (e.g. "01", 1, or "Section 01") */
8
+ number?: string | number | null;
9
+ /** Optional default numbered status (defaults to true if number was specified) */
10
+ defaultNumbered?: boolean;
11
+ /** @deprecated Subtitles removed for sections: only the page title gets a subtitle */
12
+ subtitle?: string;
13
+ /** @deprecated Subtitles removed for sections: only the page title gets a subtitle */
14
+ subtitlePointId?: string;
15
+ /** Heading level tag to render (defaults to "h2") */
16
+ as?: 'h2' | 'h3' | 'h4' | 'h5';
17
+ /** Optional element ID for in-page anchor linking */
18
+ id?: string;
19
+ /** Optional accent color for visual branding */
20
+ accentColor?: string;
21
+ /** Optional custom CSS class */
22
+ className?: string;
23
+ /** Optional supplementary elements or action slots */
24
+ children?: React.ReactNode;
25
+ /** Optional deterministic trigger identifier for canvas controls targeting */
26
+ editTriggerId?: string;
27
+ /** Optional custom edit callback to delegate to parent coordinator */
28
+ onEdit?: () => void;
29
+ }
30
+ /**
31
+ * SectionTitle Component (Canonical Typography Primitive)
32
+ *
33
+ * Implements Modern Academic Editorial section titles:
34
+ * - Uses the editorial serif font (Fraunces) for BOTH numbered and unnumbered sections
35
+ * - Serif section numbering (italic or classical numeral)
36
+ * - Configurable heading level (defaults to h2)
37
+ * - Pure token-driven styling
38
+ * - Integrated live editing via Content DB pointIds
39
+ * - Subtitles removed: only the page title (PageTitle) gets a subtitle
40
+ */
41
+ export declare const SectionTitle: React.FC<SectionTitleProps>;
42
+ export default SectionTitle;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ export interface SeriesSelectToolbarProps {
3
+ title?: string;
4
+ selectedCount?: number;
5
+ totalCount?: number;
6
+ onSelectAll: () => void;
7
+ onClear: () => void;
8
+ className?: string;
9
+ }
10
+ export declare const SeriesSelectToolbar: React.FC<SeriesSelectToolbarProps>;
@@ -0,0 +1,21 @@
1
+ import React from 'react';
2
+ export type StatusPillVariant = 'white' | 'primary' | 'accent' | 'green' | 'blue' | 'amber' | 'neutral' | 'mono' | 'link' | 'interactive';
3
+ export type StatusPillSize = 'sm' | 'md';
4
+ export interface StatusPillProps {
5
+ label: React.ReactNode;
6
+ variant?: StatusPillVariant;
7
+ size?: StatusPillSize;
8
+ icon?: React.ReactNode;
9
+ pulse?: boolean;
10
+ href?: string;
11
+ target?: string;
12
+ rel?: string;
13
+ type?: 'button' | 'submit' | 'reset';
14
+ onClick?: (e: React.MouseEvent<HTMLElement>) => void;
15
+ className?: string;
16
+ ariaLabel?: string;
17
+ title?: string;
18
+ showExternalIcon?: boolean;
19
+ }
20
+ export declare const StatusPill: React.FC<StatusPillProps>;
21
+ export default StatusPill;
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ export interface TieredSliderTier {
3
+ value: number;
4
+ label: string;
5
+ sublabel?: string;
6
+ }
7
+ export interface TieredSliderProps {
8
+ id: string;
9
+ label: string;
10
+ value: number;
11
+ min?: number;
12
+ max?: number;
13
+ step?: number;
14
+ tiers?: TieredSliderTier[];
15
+ badgeFormatter?: (val: number) => string;
16
+ onChange: (val: number) => void;
17
+ disabled?: boolean;
18
+ }
19
+ export declare const TieredSlider: React.FC<TieredSliderProps>;
@@ -0,0 +1 @@
1
+ export * from '../feedback/Toast';
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ export interface ValueLabelToggleProps {
3
+ id?: string;
4
+ checked: boolean;
5
+ onChange: (checked: boolean) => void;
6
+ label?: string;
7
+ hint?: string;
8
+ className?: string;
9
+ }
10
+ export declare const ValueLabelToggle: React.FC<ValueLabelToggleProps>;
@@ -0,0 +1,21 @@
1
+ export * from './Button';
2
+ export * from './Drawer';
3
+ export * from './Modal';
4
+ export * from './StatusPill';
5
+ export * from './Breadcrumb';
6
+ export * from './AccordionSection';
7
+ export * from './DrawerTier';
8
+ export * from './FAB';
9
+ export * from './RevolvingButton';
10
+ export * from './ParametricShape';
11
+ export * from './ColumnSelect';
12
+ export * from './ColumnTypeBadge';
13
+ export * from './DraggableRows';
14
+ export * from './SeriesSelectToolbar';
15
+ export * from './TieredSlider';
16
+ export * from './ValueLabelToggle';
17
+ export * from './DevHelpTooltip';
18
+ export * from './EditableText';
19
+ export * from './PageTitle';
20
+ export * from './SectionTitle';
21
+ export * from './Toast';
@@ -0,0 +1,31 @@
1
+ import type { NodeItem } from "../types/node";
2
+ export interface EngineBrandingConfig {
3
+ appName: string;
4
+ tagline?: string;
5
+ logoText?: string;
6
+ markSides?: number;
7
+ markWaviness?: number;
8
+ heroKicker?: string;
9
+ heroTitle?: string;
10
+ heroSubtitle?: string;
11
+ orgName?: string;
12
+ }
13
+ export interface EngineConfig {
14
+ appId: string;
15
+ appNamespace: string;
16
+ nodes: NodeItem[];
17
+ branding: EngineBrandingConfig;
18
+ securitySalt?: string;
19
+ expectedPinHash?: string;
20
+ features?: {
21
+ enableChartDrawer?: boolean;
22
+ enableEditorMode?: boolean;
23
+ enableHistoryLedger?: boolean;
24
+ };
25
+ }
26
+ export declare function createDefaultEngineConfig(overrides?: Partial<EngineConfig>): EngineConfig;
27
+ export declare function getEngineConfig(): EngineConfig;
28
+ export declare function setEngineConfig(config: Partial<EngineConfig>): EngineConfig;
29
+ export declare function resetEngineConfig(): void;
30
+ export declare function getStorageNamespace(): string;
31
+ export declare function getStorageKey(key: string, namespace?: string): string;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import type { DeveloperModeContextType } from '../types/developer';
3
+ declare const DeveloperModeContext: React.Context<DeveloperModeContextType | null>;
4
+ export interface DeveloperModeProviderProps {
5
+ children: React.ReactNode;
6
+ securitySalt?: string;
7
+ expectedPinHash?: string;
8
+ }
9
+ export declare const DeveloperModeProvider: React.FC<DeveloperModeProviderProps>;
10
+ export declare const useDeveloperMode: () => DeveloperModeContextType;
11
+ export default DeveloperModeContext;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Folio Engine - Active Session Undo / Redo Context
3
+ * Location: src/context/UndoRedoContext.tsx
4
+ * Specification: docs/tasks/task9_2_active_session_undo_redo_engine.md
5
+ * Aligned with: docs/00_WORKFLOW.md, docs/03_ARCHITECTURE.md, docs/07_CODING_STANDARDS.md
6
+ *
7
+ * Implements:
8
+ * 1. Global UndoRedoProvider wrapping the application.
9
+ * 2. React 19 startTransition to guarantee non-blocking layout reconciliations (rerender-transitions).
10
+ * 3. Unified keyboard shortcut handling (Cmd+Z / Ctrl+Z / Cmd+Shift+Z / Ctrl+Shift+Z / Ctrl+Y).
11
+ * 4. Resilient input focus guards (isTextInput) to prevent shortcut collisions with native inputs.
12
+ */
13
+ import React from 'react';
14
+ import type { UndoRedoContextType } from '../types/history';
15
+ export declare const UndoRedoContext: React.Context<UndoRedoContextType | null>;
16
+ export interface UndoRedoProviderProps {
17
+ children: React.ReactNode;
18
+ }
19
+ export declare const UndoRedoProvider: React.FC<UndoRedoProviderProps>;
20
+ export default UndoRedoProvider;