@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.
- package/dist/App.d.ts +7 -0
- package/dist/components/canvas/CanvasAddBar.d.ts +28 -0
- package/dist/components/canvas/CanvasAddModal.d.ts +38 -0
- package/dist/components/canvas/CanvasChart.d.ts +23 -0
- package/dist/components/canvas/CanvasDeleteConfirmModal.d.ts +21 -0
- package/dist/components/canvas/CanvasGallery.d.ts +20 -0
- package/dist/components/canvas/CanvasItemControls.d.ts +33 -0
- package/dist/components/canvas/CanvasPhoto.d.ts +28 -0
- package/dist/components/canvas/CanvasSection.d.ts +27 -0
- package/dist/components/canvas/CanvasSubsection.d.ts +23 -0
- package/dist/components/canvas/CanvasText.d.ts +23 -0
- package/dist/components/canvas/DocumentCanvas.d.ts +20 -0
- package/dist/components/canvas/HeroPhoto.d.ts +17 -0
- package/dist/components/canvas/NodeCanvas.d.ts +2 -0
- package/dist/components/canvas/index.d.ts +17 -0
- package/dist/components/chart/BarChart.d.ts +23 -0
- package/dist/components/chart/ChartCard.d.ts +33 -0
- package/dist/components/chart/ChartConfigDrawer.d.ts +16 -0
- package/dist/components/chart/ChartGhostWireframe.d.ts +16 -0
- package/dist/components/chart/ChartLegend.d.ts +14 -0
- package/dist/components/chart/ChartRouter.d.ts +8 -0
- package/dist/components/chart/ChartSortingControls.d.ts +15 -0
- package/dist/components/chart/ChartTableModal.d.ts +26 -0
- package/dist/components/chart/ChartTooltip.d.ts +12 -0
- package/dist/components/chart/DataPendingCard.d.ts +28 -0
- package/dist/components/chart/DonutChart.d.ts +16 -0
- package/dist/components/chart/HistogramChart.d.ts +23 -0
- package/dist/components/chart/LineChart.d.ts +22 -0
- package/dist/components/chart/RangePreviewMatrix.d.ts +19 -0
- package/dist/components/chart/ScatterPlot.d.ts +21 -0
- package/dist/components/chart/drawer/controls/BarVisualControls.d.ts +9 -0
- package/dist/components/chart/drawer/controls/ChartTitlesSection.d.ts +15 -0
- package/dist/components/chart/drawer/controls/DonutVisualControls.d.ts +7 -0
- package/dist/components/chart/drawer/controls/HistogramVisualControls.d.ts +13 -0
- package/dist/components/chart/drawer/controls/LineVisualControls.d.ts +14 -0
- package/dist/components/chart/drawer/controls/ScatterDataControls.d.ts +17 -0
- package/dist/components/chart/drawer/controls/ScatterVisualControls.d.ts +23 -0
- package/dist/components/chart/drawer/controls/SortingAndOrderControls.d.ts +18 -0
- package/dist/components/chart/drawer/controls/StandardDataControls.d.ts +31 -0
- package/dist/components/chart/drawer/hooks/useChartConfigForm.d.ts +156 -0
- package/dist/components/chart/drawer/hooks/useLiveMatrixSync.d.ts +21 -0
- package/dist/components/chart/drawer/hooks/useSheetVerification.d.ts +26 -0
- package/dist/components/chart/drawer/index.d.ts +17 -0
- package/dist/components/chart/drawer/panels/Step1Source.d.ts +18 -0
- package/dist/components/chart/drawer/panels/Step1SourceRange.d.ts +32 -0
- package/dist/components/chart/drawer/panels/Step2DataRange.d.ts +15 -0
- package/dist/components/chart/drawer/panels/Step3ChartSetup.d.ts +17 -0
- package/dist/components/chart/drawer/panels/Step4Review.d.ts +11 -0
- package/dist/components/chart/index.d.ts +22 -0
- package/dist/components/dev/DevActionAffordance.d.ts +4 -0
- package/dist/components/dev/DevExitConfirmModal.d.ts +14 -0
- package/dist/components/dev/DevLockBlockedModal.d.ts +3 -0
- package/dist/components/dev/DevModeBadge.d.ts +3 -0
- package/dist/components/dev/DevPinModal.d.ts +3 -0
- package/dist/components/dev/DevPublishModal.d.ts +9 -0
- package/dist/components/dev/UniversalEditModal.d.ts +40 -0
- package/dist/components/dev/index.d.ts +8 -0
- package/dist/components/feedback/EmptyState.d.ts +13 -0
- package/dist/components/feedback/PageNotFound.d.ts +15 -0
- package/dist/components/feedback/Toast.d.ts +25 -0
- package/dist/components/feedback/index.d.ts +2 -0
- package/dist/components/history/HistoryHubModal.d.ts +44 -0
- package/dist/components/history/index.d.ts +1 -0
- package/dist/components/layout/AppFooter.d.ts +10 -0
- package/dist/components/layout/AppHeader.d.ts +22 -0
- package/dist/components/layout/EditorialSection.d.ts +27 -0
- package/dist/components/layout/EditorialSidebar.d.ts +34 -0
- package/dist/components/layout/HeroSection.d.ts +2 -0
- package/dist/components/layout/HeroWelcome.d.ts +11 -0
- package/dist/components/layout/SearchField.d.ts +9 -0
- package/dist/components/layout/StatusPill.d.ts +2 -0
- package/dist/components/layout/index.d.ts +8 -0
- package/dist/components/roadmap/RoadmapNode.d.ts +30 -0
- package/dist/components/roadmap/RoadmapSection.d.ts +27 -0
- package/dist/components/roadmap/RoadmapTrack.d.ts +25 -0
- package/dist/components/roadmap/serpentine-generator.d.ts +60 -0
- package/dist/components/roadmap/use-roadmap-scroll.d.ts +19 -0
- package/dist/components/source/EditPhotoModal.d.ts +22 -0
- package/dist/components/source/LightboxPhotoStrip.d.ts +23 -0
- package/dist/components/source/LinkFolderModal.d.ts +24 -0
- package/dist/components/source/SourceCard.d.ts +31 -0
- package/dist/components/source/SourceFolderAttachment.d.ts +25 -0
- package/dist/components/source/SourceGallery.d.ts +26 -0
- package/dist/components/source/SourceImage.d.ts +26 -0
- package/dist/components/source/SourceLightbox.d.ts +28 -0
- package/dist/components/source/index.d.ts +9 -0
- package/dist/components/ui/AccordionSection.d.ts +21 -0
- package/dist/components/ui/Breadcrumb.d.ts +29 -0
- package/dist/components/ui/Button.d.ts +31 -0
- package/dist/components/ui/ColumnSelect.d.ts +17 -0
- package/dist/components/ui/ColumnTypeBadge.d.ts +6 -0
- package/dist/components/ui/DevHelpTooltip.d.ts +11 -0
- package/dist/components/ui/DraggableRows.d.ts +21 -0
- package/dist/components/ui/Drawer.d.ts +50 -0
- package/dist/components/ui/DrawerTier.d.ts +8 -0
- package/dist/components/ui/EditableText.d.ts +48 -0
- package/dist/components/ui/FAB.d.ts +24 -0
- package/dist/components/ui/Modal.d.ts +24 -0
- package/dist/components/ui/PageTitle.d.ts +33 -0
- package/dist/components/ui/ParametricShape.d.ts +57 -0
- package/dist/components/ui/RevolvingButton.d.ts +5 -0
- package/dist/components/ui/SectionTitle.d.ts +42 -0
- package/dist/components/ui/SeriesSelectToolbar.d.ts +10 -0
- package/dist/components/ui/StatusPill.d.ts +21 -0
- package/dist/components/ui/TieredSlider.d.ts +19 -0
- package/dist/components/ui/Toast.d.ts +1 -0
- package/dist/components/ui/ValueLabelToggle.d.ts +10 -0
- package/dist/components/ui/index.d.ts +21 -0
- package/dist/config/engine.config.d.ts +162 -0
- package/dist/context/DeveloperModeContext.d.ts +11 -0
- package/dist/context/UndoRedoContext.d.ts +20 -0
- package/dist/diagnostics/verifyEngineSetup.d.ts +30 -0
- package/dist/diagnostics-CpGr1hhi.js +126 -0
- package/dist/diagnostics-Dw5PzR78.cjs +5 -0
- package/dist/diagnostics.cjs +1 -0
- package/dist/diagnostics.d.ts +10 -0
- package/dist/diagnostics.js +14 -0
- package/dist/edge-1WCVZ0J7.cjs +1 -0
- package/dist/edge-CSjifIhA.js +2709 -0
- package/dist/edge-Dr41JdrQ.cjs +34 -0
- package/dist/edge-h_ge9f1E.js +512 -0
- package/dist/edge.cjs +1 -0
- package/dist/edge.d.ts +10 -0
- package/dist/edge.js +26 -0
- package/dist/folio.cjs +9 -0
- package/dist/folio.js +21895 -0
- package/dist/hooks/use-auto-toc.d.ts +31 -0
- package/dist/hooks/use-discrete-step-navigation.d.ts +26 -0
- package/dist/hooks/use-dynamic-section-numbers.d.ts +30 -0
- package/dist/hooks/use-hash-route.d.ts +36 -0
- package/dist/hooks/use-scroll.d.ts +22 -0
- package/dist/hooks/use-scrollspy.d.ts +19 -0
- package/dist/hooks/useChartTooltip.d.ts +25 -0
- package/dist/hooks/useContent.d.ts +36 -0
- package/dist/hooks/useDeveloperMode.d.ts +1 -0
- package/dist/hooks/useDocumentCanvas.d.ts +53 -0
- package/dist/hooks/useDrivePhotoSync.d.ts +15 -0
- package/dist/hooks/useImageLoader.d.ts +12 -0
- package/dist/hooks/useLightboxHistory.d.ts +14 -0
- package/dist/hooks/useNodeCanvas.d.ts +2 -0
- package/dist/hooks/useSheetChartData.d.ts +31 -0
- package/dist/hooks/useSourcePoint.d.ts +35 -0
- package/dist/hooks/useSwipeGesture.d.ts +30 -0
- package/dist/hooks/useUndoRedo.d.ts +9 -0
- package/dist/hooks/useUnsavedChangesPrompt.d.ts +18 -0
- package/dist/index.d.ts +53 -0
- package/dist/main.d.ts +1 -0
- package/dist/services/canvasLayoutService.d.ts +158 -0
- package/dist/services/chartSourceService.d.ts +128 -0
- package/dist/services/devLockService.d.ts +76 -0
- package/dist/services/draftService.d.ts +129 -0
- package/dist/services/drivePhotoSyncService.d.ts +60 -0
- package/dist/services/driveVerificationService.d.ts +41 -0
- package/dist/services/edgePreBakeService.d.ts +81 -0
- package/dist/services/historyService.d.ts +215 -0
- package/dist/services/historyStorage.d.ts +17 -0
- package/dist/services/mediaService.d.ts +25 -0
- package/dist/services/sheetsDataService.d.ts +59 -0
- package/dist/services/sheetsVerificationService.d.ts +87 -0
- package/dist/services/sourceService.d.ts +43 -0
- package/dist/services/undoRedoService.d.ts +63 -0
- package/dist/services/unsavedChangesService.d.ts +32 -0
- package/dist/style.css +1 -0
- package/dist/types/canvas.d.ts +115 -0
- package/dist/types/chart.d.ts +117 -0
- package/dist/types/developer.d.ts +144 -0
- package/dist/types/draft.d.ts +21 -0
- package/dist/types/edge.d.ts +232 -0
- package/dist/types/history.d.ts +81 -0
- package/dist/types/media.d.ts +16 -0
- package/dist/types/navigation.d.ts +19 -0
- package/dist/types/node.d.ts +51 -0
- package/dist/types/source.d.ts +88 -0
- package/dist/utils/canvasDefaults.d.ts +43 -0
- package/dist/utils/chartColors.d.ts +48 -0
- package/dist/utils/chartDimensions.d.ts +50 -0
- package/dist/utils/chartMath.d.ts +142 -0
- package/dist/utils/chartSanitizer.d.ts +84 -0
- package/dist/utils/contentDb.d.ts +86 -0
- package/dist/utils/devSecurity.d.ts +84 -0
- package/dist/utils/mediaUrl.d.ts +32 -0
- package/dist/utils/modalActions.d.ts +32 -0
- package/dist/utils/node-sections.d.ts +15 -0
- package/dist/utils/page-sections.d.ts +1 -0
- package/dist/utils/runtime-env.d.ts +21 -0
- package/dist/utils/scrollLock.d.ts +10 -0
- package/dist/utils/smooth-scroll.d.ts +24 -0
- package/dist/utils/source.d.ts +25 -0
- package/dist/utils/storage.d.ts +13 -0
- package/dist/utils/supabase-config.d.ts +29 -0
- package/dist/utils/supabase-write-guard.d.ts +15 -0
- package/package.json +68 -4
- 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,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,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,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';
|