promptslide 0.2.5 → 0.3.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.
- package/dist/index.d.ts +1 -9
- package/dist/index.js +59 -90
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/commands/add.mjs +12 -5
- package/src/commands/create.mjs +5 -1
- package/src/commands/login.mjs +6 -1
- package/src/commands/org.mjs +3 -3
- package/src/commands/publish.mjs +55 -77
- package/src/commands/pull.mjs +228 -0
- package/src/commands/studio.mjs +1 -1
- package/src/commands/update.mjs +1 -1
- package/src/core/index.ts +0 -3
- package/src/core/slide-embed.tsx +1 -3
- package/src/index.mjs +6 -0
- package/src/utils/auth.mjs +5 -3
- package/src/utils/prompts.mjs +70 -0
- package/src/utils/registry.mjs +12 -0
- package/templates/default/AGENTS.md +0 -1
- package/templates/default/src/layouts/shared-footer.tsx +52 -0
- package/templates/default/src/layouts/slide-layout-centered.tsx +2 -1
- package/src/core/layouts/shared-footer.tsx +0 -43
package/dist/index.d.ts
CHANGED
|
@@ -338,14 +338,6 @@ interface SlideThemeProviderProps {
|
|
|
338
338
|
*/
|
|
339
339
|
declare function SlideThemeProvider({ theme, children }: SlideThemeProviderProps): react_jsx_runtime.JSX.Element;
|
|
340
340
|
|
|
341
|
-
interface SlideFooterProps {
|
|
342
|
-
slideNumber: number;
|
|
343
|
-
totalSlides: number;
|
|
344
|
-
/** Use light text/logo for dark slide backgrounds */
|
|
345
|
-
variant?: "default" | "light";
|
|
346
|
-
}
|
|
347
|
-
declare function SlideFooter({ slideNumber, totalSlides, variant }: SlideFooterProps): react_jsx_runtime.JSX.Element | null;
|
|
348
|
-
|
|
349
341
|
interface SlideRendererProps {
|
|
350
342
|
slides: SlideConfig[];
|
|
351
343
|
currentSlide: number;
|
|
@@ -412,4 +404,4 @@ declare class SlideErrorBoundary extends React$1.Component<SlideErrorBoundaryPro
|
|
|
412
404
|
|
|
413
405
|
declare function cn(...inputs: ClassValue[]): string;
|
|
414
406
|
|
|
415
|
-
export { Animated, AnimatedGroup, AnimationProvider, type AnimationType, DEFAULT_SLIDE_TRANSITION, EASE_DEFAULT, EASE_IN, EASE_MORPH, EASE_OUT, ELEMENT_SLIDE_DISTANCE, MORPH_DURATION, MORPH_TRANSITION, Morph, MorphGroup, MorphItem, MorphText, type NavigationDirection, SLIDE_DIMENSIONS, SLIDE_DISTANCE, SLIDE_TRANSITION, SLIDE_TRANSITION_DURATION, SLIDE_VARIANTS, SPRING_BOUNCY, SPRING_SMOOTH, SPRING_SNAPPY, STAGGER_DELAY, STEP_ANIMATION_DURATION, STEP_TRANSITION, type SlideComponent, type SlideConfig, SlideDeck, SlideEmbed, SlideErrorBoundary,
|
|
407
|
+
export { Animated, AnimatedGroup, AnimationProvider, type AnimationType, DEFAULT_SLIDE_TRANSITION, EASE_DEFAULT, EASE_IN, EASE_MORPH, EASE_OUT, ELEMENT_SLIDE_DISTANCE, MORPH_DURATION, MORPH_TRANSITION, Morph, MorphGroup, MorphItem, MorphText, type NavigationDirection, SLIDE_DIMENSIONS, SLIDE_DISTANCE, SLIDE_TRANSITION, SLIDE_TRANSITION_DURATION, SLIDE_VARIANTS, SPRING_BOUNCY, SPRING_SMOOTH, SPRING_SNAPPY, STAGGER_DELAY, STEP_ANIMATION_DURATION, STEP_TRANSITION, type SlideComponent, type SlideConfig, SlideDeck, SlideEmbed, SlideErrorBoundary, type SlideProps, SlideRenderer, type SlideRendererProps, SlideThemeProvider, type SlideTransitionConfig, type SlideTransitionType, type ThemeConfig, type UseSlideNavigationOptions, type UseSlideNavigationReturn, cn, createDirectionalVariants, directionalSlideX, directionalSlideY, getSlideTransition, getSlideVariants, useAnimationContext, useSlideNavigation, useTheme };
|
package/dist/index.js
CHANGED
|
@@ -467,40 +467,12 @@ function SlideThemeProvider({ theme, children }) {
|
|
|
467
467
|
return /* @__PURE__ */ jsx4(ThemeContext.Provider, { value: theme, children: /* @__PURE__ */ jsx4("div", { style: cssOverrides, className: "contents", children }) });
|
|
468
468
|
}
|
|
469
469
|
|
|
470
|
-
// src/core/layouts/shared-footer.tsx
|
|
471
|
-
import { jsx as jsx5, jsxs } from "react/jsx-runtime";
|
|
472
|
-
function SlideFooter({ slideNumber, totalSlides, variant = "default" }) {
|
|
473
|
-
const theme = useTheme();
|
|
474
|
-
if (!theme) return null;
|
|
475
|
-
const logoUrl = variant === "light" ? theme.logo?.fullLight ?? theme.logo?.full : theme.logo?.full;
|
|
476
|
-
const textClass = variant === "light" ? "text-white/70" : "text-muted-foreground";
|
|
477
|
-
const nameClass = variant === "light" ? "text-white font-semibold" : "text-foreground font-semibold";
|
|
478
|
-
return /* @__PURE__ */ jsxs("div", { className: `mt-4 flex shrink-0 items-center justify-between text-sm ${textClass}`, children: [
|
|
479
|
-
/* @__PURE__ */ jsxs("div", { className: `flex items-center gap-3 tracking-tight ${nameClass}`, children: [
|
|
480
|
-
logoUrl && /* @__PURE__ */ jsx5(
|
|
481
|
-
"img",
|
|
482
|
-
{
|
|
483
|
-
src: logoUrl,
|
|
484
|
-
alt: `${theme.name} Logo`,
|
|
485
|
-
className: "h-8 w-auto"
|
|
486
|
-
}
|
|
487
|
-
),
|
|
488
|
-
/* @__PURE__ */ jsx5("span", { className: "text-lg", children: theme.name })
|
|
489
|
-
] }),
|
|
490
|
-
/* @__PURE__ */ jsxs("div", { className: "font-mono", children: [
|
|
491
|
-
slideNumber,
|
|
492
|
-
" / ",
|
|
493
|
-
totalSlides
|
|
494
|
-
] })
|
|
495
|
-
] });
|
|
496
|
-
}
|
|
497
|
-
|
|
498
470
|
// src/core/slide-renderer.tsx
|
|
499
471
|
import { AnimatePresence, motion as motion3 } from "framer-motion";
|
|
500
472
|
|
|
501
473
|
// src/core/slide-error-boundary.tsx
|
|
502
474
|
import React from "react";
|
|
503
|
-
import { jsx as
|
|
475
|
+
import { jsx as jsx5, jsxs } from "react/jsx-runtime";
|
|
504
476
|
var SlideErrorBoundary = class extends React.Component {
|
|
505
477
|
constructor() {
|
|
506
478
|
super(...arguments);
|
|
@@ -518,18 +490,18 @@ var SlideErrorBoundary = class extends React.Component {
|
|
|
518
490
|
}
|
|
519
491
|
render() {
|
|
520
492
|
if (this.state.hasError) {
|
|
521
|
-
return /* @__PURE__ */
|
|
522
|
-
/* @__PURE__ */
|
|
493
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex h-full w-full flex-col items-center justify-center bg-red-950/20 p-12", children: [
|
|
494
|
+
/* @__PURE__ */ jsxs("div", { className: "mb-4 text-lg font-semibold text-red-400", children: [
|
|
523
495
|
"Slide ",
|
|
524
496
|
this.props.slideIndex + 1,
|
|
525
497
|
" Error",
|
|
526
|
-
this.props.slideTitle && /* @__PURE__ */
|
|
498
|
+
this.props.slideTitle && /* @__PURE__ */ jsxs("span", { className: "ml-2 font-normal text-red-400/70", children: [
|
|
527
499
|
"(",
|
|
528
500
|
this.props.slideTitle,
|
|
529
501
|
")"
|
|
530
502
|
] })
|
|
531
503
|
] }),
|
|
532
|
-
/* @__PURE__ */
|
|
504
|
+
/* @__PURE__ */ jsx5("div", { className: "max-w-2xl text-center font-mono text-sm break-words text-red-300/80", children: this.state.error?.message ?? "Unknown error" })
|
|
533
505
|
] });
|
|
534
506
|
}
|
|
535
507
|
return this.props.children;
|
|
@@ -537,7 +509,7 @@ var SlideErrorBoundary = class extends React.Component {
|
|
|
537
509
|
};
|
|
538
510
|
|
|
539
511
|
// src/core/slide-renderer.tsx
|
|
540
|
-
import { jsx as
|
|
512
|
+
import { jsx as jsx6 } from "react/jsx-runtime";
|
|
541
513
|
function SlideRenderer({
|
|
542
514
|
slides,
|
|
543
515
|
currentSlide,
|
|
@@ -557,7 +529,7 @@ function SlideRenderer({
|
|
|
557
529
|
direction
|
|
558
530
|
);
|
|
559
531
|
const CurrentSlideComponent = slides[currentSlide].component;
|
|
560
|
-
return /* @__PURE__ */
|
|
532
|
+
return /* @__PURE__ */ jsx6(AnimatePresence, { initial: false, children: /* @__PURE__ */ jsx6(
|
|
561
533
|
motion3.div,
|
|
562
534
|
{
|
|
563
535
|
variants: slideVariants,
|
|
@@ -571,18 +543,18 @@ function SlideRenderer({
|
|
|
571
543
|
}
|
|
572
544
|
},
|
|
573
545
|
className: "absolute inset-0 h-full w-full",
|
|
574
|
-
children: /* @__PURE__ */
|
|
546
|
+
children: /* @__PURE__ */ jsx6(
|
|
575
547
|
AnimationProvider,
|
|
576
548
|
{
|
|
577
549
|
currentStep: animationStep,
|
|
578
550
|
totalSteps,
|
|
579
551
|
showAllAnimations,
|
|
580
|
-
children: /* @__PURE__ */
|
|
552
|
+
children: /* @__PURE__ */ jsx6(
|
|
581
553
|
SlideErrorBoundary,
|
|
582
554
|
{
|
|
583
555
|
slideIndex: currentSlide,
|
|
584
556
|
slideTitle: slides[currentSlide]?.title,
|
|
585
|
-
children: /* @__PURE__ */
|
|
557
|
+
children: /* @__PURE__ */ jsx6(
|
|
586
558
|
CurrentSlideComponent,
|
|
587
559
|
{
|
|
588
560
|
slideNumber: currentSlide + 1,
|
|
@@ -600,7 +572,7 @@ function SlideRenderer({
|
|
|
600
572
|
|
|
601
573
|
// src/core/slide-embed.tsx
|
|
602
574
|
import { useCallback as useCallback2, useEffect as useEffect2, useState as useState2 } from "react";
|
|
603
|
-
import { jsx as
|
|
575
|
+
import { jsx as jsx7 } from "react/jsx-runtime";
|
|
604
576
|
function SlideEmbed({ slides, transition, directionalTransition }) {
|
|
605
577
|
const [scale, setScale] = useState2(1);
|
|
606
578
|
const {
|
|
@@ -658,15 +630,13 @@ function SlideEmbed({ slides, transition, directionalTransition }) {
|
|
|
658
630
|
}, [handleMessage]);
|
|
659
631
|
useEffect2(() => {
|
|
660
632
|
const calculateScale = () => {
|
|
661
|
-
|
|
662
|
-
const scaleY = window.innerHeight / SLIDE_DIMENSIONS.height;
|
|
663
|
-
setScale(Math.min(scaleX, scaleY));
|
|
633
|
+
setScale(window.innerWidth / SLIDE_DIMENSIONS.width);
|
|
664
634
|
};
|
|
665
635
|
calculateScale();
|
|
666
636
|
window.addEventListener("resize", calculateScale);
|
|
667
637
|
return () => window.removeEventListener("resize", calculateScale);
|
|
668
638
|
}, []);
|
|
669
|
-
return /* @__PURE__ */
|
|
639
|
+
return /* @__PURE__ */ jsx7("div", { className: "flex h-screen w-screen items-center justify-center overflow-hidden bg-black", children: /* @__PURE__ */ jsx7(
|
|
670
640
|
"div",
|
|
671
641
|
{
|
|
672
642
|
className: "relative overflow-hidden bg-black",
|
|
@@ -676,7 +646,7 @@ function SlideEmbed({ slides, transition, directionalTransition }) {
|
|
|
676
646
|
transform: `scale(${scale})`,
|
|
677
647
|
transformOrigin: "center center"
|
|
678
648
|
},
|
|
679
|
-
children: /* @__PURE__ */
|
|
649
|
+
children: /* @__PURE__ */ jsx7(
|
|
680
650
|
SlideRenderer,
|
|
681
651
|
{
|
|
682
652
|
slides,
|
|
@@ -707,7 +677,7 @@ function cn(...inputs) {
|
|
|
707
677
|
}
|
|
708
678
|
|
|
709
679
|
// src/core/slide-deck.tsx
|
|
710
|
-
import { jsx as
|
|
680
|
+
import { jsx as jsx8, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
711
681
|
function SlideExportView({ slides, slideIndex }) {
|
|
712
682
|
const [ready, setReady] = useState3(false);
|
|
713
683
|
const clampedIndex = Math.max(0, Math.min(slideIndex, slides.length - 1));
|
|
@@ -716,7 +686,7 @@ function SlideExportView({ slides, slideIndex }) {
|
|
|
716
686
|
useEffect3(() => {
|
|
717
687
|
setReady(true);
|
|
718
688
|
}, []);
|
|
719
|
-
return /* @__PURE__ */
|
|
689
|
+
return /* @__PURE__ */ jsx8(
|
|
720
690
|
"div",
|
|
721
691
|
{
|
|
722
692
|
"data-export-ready": ready ? "true" : void 0,
|
|
@@ -727,13 +697,13 @@ function SlideExportView({ slides, slideIndex }) {
|
|
|
727
697
|
position: "relative",
|
|
728
698
|
background: "black"
|
|
729
699
|
},
|
|
730
|
-
children: /* @__PURE__ */
|
|
700
|
+
children: /* @__PURE__ */ jsx8(
|
|
731
701
|
AnimationProvider,
|
|
732
702
|
{
|
|
733
703
|
currentStep: slideConfig.steps,
|
|
734
704
|
totalSteps: slideConfig.steps,
|
|
735
705
|
showAllAnimations: true,
|
|
736
|
-
children: /* @__PURE__ */
|
|
706
|
+
children: /* @__PURE__ */ jsx8(SlideErrorBoundary, { slideIndex: clampedIndex, slideTitle: slideConfig.title, children: /* @__PURE__ */ jsx8(SlideComponent, { slideNumber: clampedIndex + 1, totalSlides: slides.length }) })
|
|
737
707
|
}
|
|
738
708
|
)
|
|
739
709
|
}
|
|
@@ -747,7 +717,7 @@ function SlideDeck({ slides, transition, directionalTransition }) {
|
|
|
747
717
|
return { slideIndex: parseInt(params.get("slide") || "0", 10) };
|
|
748
718
|
});
|
|
749
719
|
if (exportParams) {
|
|
750
|
-
return /* @__PURE__ */
|
|
720
|
+
return /* @__PURE__ */ jsx8(SlideExportView, { slides, slideIndex: exportParams.slideIndex });
|
|
751
721
|
}
|
|
752
722
|
const [viewMode, setViewMode] = useState3("slide");
|
|
753
723
|
const [isPresentationMode, setIsPresentationMode] = useState3(false);
|
|
@@ -830,8 +800,8 @@ function SlideDeck({ slides, transition, directionalTransition }) {
|
|
|
830
800
|
window.addEventListener("keydown", handleKeyDown);
|
|
831
801
|
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
832
802
|
}, [advance, goBack, viewMode, togglePresentationMode]);
|
|
833
|
-
return /* @__PURE__ */
|
|
834
|
-
/* @__PURE__ */
|
|
803
|
+
return /* @__PURE__ */ jsxs2("div", { className: "min-h-screen w-full bg-neutral-950 text-foreground", children: [
|
|
804
|
+
/* @__PURE__ */ jsx8("style", { children: `
|
|
835
805
|
@media print {
|
|
836
806
|
@page {
|
|
837
807
|
size: 1920px 1080px;
|
|
@@ -852,7 +822,7 @@ function SlideDeck({ slides, transition, directionalTransition }) {
|
|
|
852
822
|
}
|
|
853
823
|
}
|
|
854
824
|
` }),
|
|
855
|
-
/* @__PURE__ */
|
|
825
|
+
/* @__PURE__ */ jsxs2(
|
|
856
826
|
"div",
|
|
857
827
|
{
|
|
858
828
|
className: cn(
|
|
@@ -860,7 +830,7 @@ function SlideDeck({ slides, transition, directionalTransition }) {
|
|
|
860
830
|
isPresentationMode && "hidden"
|
|
861
831
|
),
|
|
862
832
|
children: [
|
|
863
|
-
/* @__PURE__ */
|
|
833
|
+
/* @__PURE__ */ jsx8(
|
|
864
834
|
"button",
|
|
865
835
|
{
|
|
866
836
|
onClick: () => setViewMode("slide"),
|
|
@@ -869,10 +839,10 @@ function SlideDeck({ slides, transition, directionalTransition }) {
|
|
|
869
839
|
viewMode === "slide" && "bg-neutral-800 text-white"
|
|
870
840
|
),
|
|
871
841
|
title: "Presentation View",
|
|
872
|
-
children: /* @__PURE__ */
|
|
842
|
+
children: /* @__PURE__ */ jsx8(Monitor, { className: "h-4 w-4" })
|
|
873
843
|
}
|
|
874
844
|
),
|
|
875
|
-
/* @__PURE__ */
|
|
845
|
+
/* @__PURE__ */ jsx8(
|
|
876
846
|
"button",
|
|
877
847
|
{
|
|
878
848
|
onClick: () => setViewMode("list"),
|
|
@@ -881,10 +851,10 @@ function SlideDeck({ slides, transition, directionalTransition }) {
|
|
|
881
851
|
viewMode === "list" && "bg-neutral-800 text-white"
|
|
882
852
|
),
|
|
883
853
|
title: "List View",
|
|
884
|
-
children: /* @__PURE__ */
|
|
854
|
+
children: /* @__PURE__ */ jsx8(List, { className: "h-4 w-4" })
|
|
885
855
|
}
|
|
886
856
|
),
|
|
887
|
-
/* @__PURE__ */
|
|
857
|
+
/* @__PURE__ */ jsx8(
|
|
888
858
|
"button",
|
|
889
859
|
{
|
|
890
860
|
onClick: () => setViewMode("grid"),
|
|
@@ -893,32 +863,32 @@ function SlideDeck({ slides, transition, directionalTransition }) {
|
|
|
893
863
|
viewMode === "grid" && "bg-neutral-800 text-white"
|
|
894
864
|
),
|
|
895
865
|
title: "Grid View",
|
|
896
|
-
children: /* @__PURE__ */
|
|
866
|
+
children: /* @__PURE__ */ jsx8(Grid3X3, { className: "h-4 w-4" })
|
|
897
867
|
}
|
|
898
868
|
),
|
|
899
|
-
/* @__PURE__ */
|
|
900
|
-
/* @__PURE__ */
|
|
869
|
+
/* @__PURE__ */ jsx8("div", { className: "mx-1 w-px bg-neutral-800" }),
|
|
870
|
+
/* @__PURE__ */ jsx8(
|
|
901
871
|
"button",
|
|
902
872
|
{
|
|
903
873
|
onClick: handleExportPdf,
|
|
904
874
|
className: "rounded-md p-2 text-neutral-400 transition-colors hover:bg-neutral-800 hover:text-white",
|
|
905
875
|
title: "Download PDF",
|
|
906
|
-
children: /* @__PURE__ */
|
|
876
|
+
children: /* @__PURE__ */ jsx8(Download, { className: "h-4 w-4" })
|
|
907
877
|
}
|
|
908
878
|
),
|
|
909
|
-
/* @__PURE__ */
|
|
879
|
+
/* @__PURE__ */ jsx8(
|
|
910
880
|
"button",
|
|
911
881
|
{
|
|
912
882
|
onClick: togglePresentationMode,
|
|
913
883
|
className: "rounded-md p-2 text-neutral-400 transition-colors hover:bg-neutral-800 hover:text-white",
|
|
914
884
|
title: "Present (F)",
|
|
915
|
-
children: /* @__PURE__ */
|
|
885
|
+
children: /* @__PURE__ */ jsx8(Maximize, { className: "h-4 w-4" })
|
|
916
886
|
}
|
|
917
887
|
)
|
|
918
888
|
]
|
|
919
889
|
}
|
|
920
890
|
),
|
|
921
|
-
viewMode === "slide" && /* @__PURE__ */
|
|
891
|
+
viewMode === "slide" && /* @__PURE__ */ jsxs2(
|
|
922
892
|
"div",
|
|
923
893
|
{
|
|
924
894
|
ref: containerRef,
|
|
@@ -933,7 +903,7 @@ function SlideDeck({ slides, transition, directionalTransition }) {
|
|
|
933
903
|
if (e.key === "Enter" || e.key === " ") advance();
|
|
934
904
|
} : void 0,
|
|
935
905
|
children: [
|
|
936
|
-
/* @__PURE__ */
|
|
906
|
+
/* @__PURE__ */ jsx8(LayoutGroup, { id: "slide-deck", children: isPresentationMode ? /* @__PURE__ */ jsx8(
|
|
937
907
|
"div",
|
|
938
908
|
{
|
|
939
909
|
className: "pointer-events-none relative overflow-hidden bg-black",
|
|
@@ -943,7 +913,7 @@ function SlideDeck({ slides, transition, directionalTransition }) {
|
|
|
943
913
|
transform: `scale(${scale})`,
|
|
944
914
|
transformOrigin: "center center"
|
|
945
915
|
},
|
|
946
|
-
children: /* @__PURE__ */
|
|
916
|
+
children: /* @__PURE__ */ jsx8(
|
|
947
917
|
SlideRenderer,
|
|
948
918
|
{
|
|
949
919
|
slides,
|
|
@@ -958,7 +928,7 @@ function SlideDeck({ slides, transition, directionalTransition }) {
|
|
|
958
928
|
}
|
|
959
929
|
)
|
|
960
930
|
}
|
|
961
|
-
) : /* @__PURE__ */
|
|
931
|
+
) : /* @__PURE__ */ jsx8("div", { className: "relative aspect-video w-full max-w-7xl overflow-hidden rounded-xl border border-neutral-800 bg-black shadow-2xl", children: /* @__PURE__ */ jsx8(
|
|
962
932
|
SlideRenderer,
|
|
963
933
|
{
|
|
964
934
|
slides,
|
|
@@ -972,42 +942,42 @@ function SlideDeck({ slides, transition, directionalTransition }) {
|
|
|
972
942
|
onTransitionComplete
|
|
973
943
|
}
|
|
974
944
|
) }) }),
|
|
975
|
-
!isPresentationMode && /* @__PURE__ */
|
|
976
|
-
/* @__PURE__ */
|
|
945
|
+
!isPresentationMode && /* @__PURE__ */ jsxs2("div", { className: "mt-6 flex items-center gap-4", children: [
|
|
946
|
+
/* @__PURE__ */ jsx8(
|
|
977
947
|
"button",
|
|
978
948
|
{
|
|
979
949
|
onClick: goBack,
|
|
980
950
|
className: "rounded-full border border-neutral-800 bg-black/50 p-2 text-neutral-400 backdrop-blur-sm transition-colors hover:bg-neutral-900 hover:text-white",
|
|
981
|
-
children: /* @__PURE__ */
|
|
951
|
+
children: /* @__PURE__ */ jsx8(ChevronLeft, { className: "h-5 w-5" })
|
|
982
952
|
}
|
|
983
953
|
),
|
|
984
|
-
/* @__PURE__ */
|
|
985
|
-
/* @__PURE__ */
|
|
954
|
+
/* @__PURE__ */ jsxs2("div", { className: "flex min-w-[4rem] flex-col items-center", children: [
|
|
955
|
+
/* @__PURE__ */ jsxs2("span", { className: "font-mono text-sm text-neutral-500", children: [
|
|
986
956
|
currentSlide + 1,
|
|
987
957
|
" / ",
|
|
988
958
|
slides.length
|
|
989
959
|
] }),
|
|
990
|
-
slides[currentSlide]?.title && /* @__PURE__ */
|
|
960
|
+
slides[currentSlide]?.title && /* @__PURE__ */ jsx8("span", { className: "mt-0.5 text-xs text-neutral-600", children: slides[currentSlide].title })
|
|
991
961
|
] }),
|
|
992
|
-
/* @__PURE__ */
|
|
962
|
+
/* @__PURE__ */ jsx8(
|
|
993
963
|
"button",
|
|
994
964
|
{
|
|
995
965
|
onClick: advance,
|
|
996
966
|
className: "rounded-full border border-neutral-800 bg-black/50 p-2 text-neutral-400 backdrop-blur-sm transition-colors hover:bg-neutral-900 hover:text-white",
|
|
997
|
-
children: /* @__PURE__ */
|
|
967
|
+
children: /* @__PURE__ */ jsx8(ChevronRight, { className: "h-5 w-5" })
|
|
998
968
|
}
|
|
999
969
|
)
|
|
1000
970
|
] })
|
|
1001
971
|
]
|
|
1002
972
|
}
|
|
1003
973
|
),
|
|
1004
|
-
viewMode === "grid" && /* @__PURE__ */
|
|
974
|
+
viewMode === "grid" && /* @__PURE__ */ jsx8("div", { className: "mx-auto max-w-7xl p-8 pt-16 print:hidden", children: /* @__PURE__ */ jsx8("div", { className: "grid grid-cols-2 gap-4 md:grid-cols-3 lg:grid-cols-4", children: slides.map((slideConfig, index) => {
|
|
1005
975
|
const SlideComponent = slideConfig.component;
|
|
1006
976
|
const prevSection = index > 0 ? slides[index - 1]?.section : void 0;
|
|
1007
977
|
const showSectionHeader = slideConfig.section && slideConfig.section !== prevSection;
|
|
1008
|
-
return /* @__PURE__ */
|
|
1009
|
-
showSectionHeader && /* @__PURE__ */
|
|
1010
|
-
/* @__PURE__ */
|
|
978
|
+
return /* @__PURE__ */ jsxs2("div", { className: showSectionHeader ? "col-span-full" : void 0, children: [
|
|
979
|
+
showSectionHeader && /* @__PURE__ */ jsx8("h3", { className: "mt-4 mb-3 text-xs font-bold tracking-[0.2em] text-neutral-500 uppercase first:mt-0", children: slideConfig.section }),
|
|
980
|
+
/* @__PURE__ */ jsxs2(
|
|
1011
981
|
"button",
|
|
1012
982
|
{
|
|
1013
983
|
onClick: () => {
|
|
@@ -1016,30 +986,30 @@ function SlideDeck({ slides, transition, directionalTransition }) {
|
|
|
1016
986
|
},
|
|
1017
987
|
className: "group relative aspect-video w-full overflow-hidden rounded-lg border border-neutral-800 bg-black shadow-sm transition-all hover:border-primary hover:shadow-lg hover:shadow-primary/10",
|
|
1018
988
|
children: [
|
|
1019
|
-
/* @__PURE__ */
|
|
989
|
+
/* @__PURE__ */ jsx8(
|
|
1020
990
|
"div",
|
|
1021
991
|
{
|
|
1022
992
|
className: "h-full w-full origin-top-left scale-[0.25]",
|
|
1023
993
|
style: { width: "400%", height: "400%" },
|
|
1024
|
-
children: /* @__PURE__ */
|
|
994
|
+
children: /* @__PURE__ */ jsx8(
|
|
1025
995
|
AnimationProvider,
|
|
1026
996
|
{
|
|
1027
997
|
currentStep: slideConfig.steps,
|
|
1028
998
|
totalSteps: slideConfig.steps,
|
|
1029
999
|
showAllAnimations: true,
|
|
1030
|
-
children: /* @__PURE__ */
|
|
1000
|
+
children: /* @__PURE__ */ jsx8(SlideErrorBoundary, { slideIndex: index, slideTitle: slideConfig.title, children: /* @__PURE__ */ jsx8(SlideComponent, { slideNumber: index + 1, totalSlides: slides.length }) })
|
|
1031
1001
|
}
|
|
1032
1002
|
)
|
|
1033
1003
|
}
|
|
1034
1004
|
),
|
|
1035
|
-
/* @__PURE__ */
|
|
1036
|
-
/* @__PURE__ */
|
|
1005
|
+
/* @__PURE__ */ jsx8("div", { className: "absolute inset-0 bg-black/0 transition-colors group-hover:bg-black/20" }),
|
|
1006
|
+
/* @__PURE__ */ jsx8("div", { className: "absolute bottom-2 left-2 rounded bg-black/70 px-2 py-1 text-xs font-medium text-white", children: slideConfig.title ? `${index + 1}. ${slideConfig.title}` : index + 1 })
|
|
1037
1007
|
]
|
|
1038
1008
|
}
|
|
1039
1009
|
)
|
|
1040
1010
|
] }, index);
|
|
1041
1011
|
}) }) }),
|
|
1042
|
-
/* @__PURE__ */
|
|
1012
|
+
/* @__PURE__ */ jsx8(
|
|
1043
1013
|
"div",
|
|
1044
1014
|
{
|
|
1045
1015
|
className: cn(
|
|
@@ -1047,19 +1017,19 @@ function SlideDeck({ slides, transition, directionalTransition }) {
|
|
|
1047
1017
|
"print:m-0 print:block print:max-w-none print:p-0",
|
|
1048
1018
|
viewMode === "list" ? "block" : "hidden print:block"
|
|
1049
1019
|
),
|
|
1050
|
-
children: /* @__PURE__ */
|
|
1020
|
+
children: /* @__PURE__ */ jsx8("div", { className: "grid grid-cols-1 gap-8 print:block", children: slides.map((slideConfig, index) => {
|
|
1051
1021
|
const SlideComponent = slideConfig.component;
|
|
1052
|
-
return /* @__PURE__ */
|
|
1022
|
+
return /* @__PURE__ */ jsx8(
|
|
1053
1023
|
"div",
|
|
1054
1024
|
{
|
|
1055
1025
|
className: "aspect-video w-full overflow-hidden rounded-xl border border-neutral-800 bg-black shadow-sm print:relative print:m-0 print:h-[1080px] print:w-[1920px] print:break-after-page print:overflow-hidden print:rounded-none print:border-0 print:shadow-none",
|
|
1056
|
-
children: /* @__PURE__ */
|
|
1026
|
+
children: /* @__PURE__ */ jsx8("div", { className: "h-full w-full print:h-[720px] print:w-[1280px] print:origin-top-left print:scale-[1.5]", children: /* @__PURE__ */ jsx8(
|
|
1057
1027
|
AnimationProvider,
|
|
1058
1028
|
{
|
|
1059
1029
|
currentStep: slideConfig.steps,
|
|
1060
1030
|
totalSteps: slideConfig.steps,
|
|
1061
1031
|
showAllAnimations: true,
|
|
1062
|
-
children: /* @__PURE__ */
|
|
1032
|
+
children: /* @__PURE__ */ jsx8(SlideErrorBoundary, { slideIndex: index, slideTitle: slideConfig.title, children: /* @__PURE__ */ jsx8(SlideComponent, { slideNumber: index + 1, totalSlides: slides.length }) })
|
|
1063
1033
|
}
|
|
1064
1034
|
) })
|
|
1065
1035
|
},
|
|
@@ -1100,7 +1070,6 @@ export {
|
|
|
1100
1070
|
SlideDeck,
|
|
1101
1071
|
SlideEmbed,
|
|
1102
1072
|
SlideErrorBoundary,
|
|
1103
|
-
SlideFooter,
|
|
1104
1073
|
SlideRenderer,
|
|
1105
1074
|
SlideThemeProvider,
|
|
1106
1075
|
cn,
|