@gpichot/spectacle-deck 1.1.6 → 1.2.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/index.cjs CHANGED
@@ -42,17 +42,17 @@ __export(src_exports, {
42
42
  Image: () => Image,
43
43
  Information: () => Information,
44
44
  ItemsColumn: () => ItemsColumn,
45
- Layout: () => Layout,
46
45
  PassThrough: () => PassThrough,
47
46
  Side: () => Side,
48
47
  Success: () => Success,
49
48
  Timeline: () => Timeline,
50
49
  TimelineItem: () => TimelineItem,
51
- Warning: () => Warning
50
+ Warning: () => Warning,
51
+ layouts: () => layouts
52
52
  });
53
- var import_react21 = __toESM(require("react"));
54
- var import_react22 = require("@mdx-js/react");
55
- var import_spectacle9 = require("spectacle");
53
+ var import_react24 = __toESM(require("react"));
54
+ var import_react25 = require("@mdx-js/react");
55
+ var import_spectacle10 = require("spectacle");
56
56
 
57
57
  // src/layouts/CenteredLayout.tsx
58
58
  var import_react2 = __toESM(require("react"));
@@ -67,11 +67,9 @@ var Margins = {
67
67
  };
68
68
  function getHeading(children) {
69
69
  const allChild = import_react.default.Children.toArray(children);
70
- if (allChild.length === 0)
71
- return [null, allChild];
70
+ if (allChild.length === 0) return [null, allChild];
72
71
  const [candidate, ...rest] = allChild;
73
- if (!import_react.default.isValidElement(candidate))
74
- return [null, allChild];
72
+ if (!import_react.default.isValidElement(candidate)) return [null, allChild];
75
73
  if (["h2", "h3"].includes(candidate.props.originalType)) {
76
74
  return [candidate, rest];
77
75
  }
@@ -79,15 +77,12 @@ function getHeading(children) {
79
77
  }
80
78
  function getCode(children) {
81
79
  const allChild = import_react.default.Children.toArray(children);
82
- if (allChild.length === 0)
83
- return [null, allChild];
80
+ if (allChild.length === 0) return [null, allChild];
84
81
  const index = allChild.findIndex((child) => {
85
- if (!import_react.default.isValidElement(child))
86
- return false;
82
+ if (!import_react.default.isValidElement(child)) return false;
87
83
  return child.props.originalType === "pre";
88
84
  });
89
- if (index === -1)
90
- return [null, allChild];
85
+ if (index === -1) return [null, allChild];
91
86
  const candidate = allChild[index];
92
87
  const rest = allChild.filter((_, i) => i !== index);
93
88
  return [candidate, rest];
@@ -95,14 +90,10 @@ function getCode(children) {
95
90
  function getMatchingMdxType(children, mdxType) {
96
91
  const allChild = import_react.default.Children.toArray(children);
97
92
  const matchFn = (child) => {
98
- if (!import_react.default.isValidElement(child))
99
- return false;
100
- if (typeof child.type !== "function")
101
- return false;
102
- if (child.type.name === mdxType)
103
- return true;
104
- if ("mdxType" in child.type === false)
105
- return false;
93
+ if (!import_react.default.isValidElement(child)) return false;
94
+ if (typeof child.type !== "function") return false;
95
+ if (child.type.name === mdxType) return true;
96
+ if ("mdxType" in child.type === false) return false;
106
97
  return child.type.mdxType === mdxType;
107
98
  };
108
99
  const matches = allChild.filter(matchFn);
@@ -111,11 +102,9 @@ function getMatchingMdxType(children, mdxType) {
111
102
  }
112
103
  function getCodeChildren(children) {
113
104
  const [code, rest] = getCode(children);
114
- if (code)
115
- return [code, rest];
105
+ if (code) return [code, rest];
116
106
  const [codeStepper, rest2] = getMatchingMdxType(children, "CodeStepper");
117
- if (codeStepper.length > 0)
118
- return [codeStepper, rest2];
107
+ if (codeStepper.length > 0) return [codeStepper, rest2];
119
108
  const [codes, rest3] = getMatchingMdxType(children, "FilePane");
120
109
  return [codes, rest3];
121
110
  }
@@ -672,14 +661,20 @@ var DivWithHeading2 = import_styled_components8.default.div`
672
661
  font-weight: 400;
673
662
  }
674
663
  `;
664
+ function parseRatio(ratio) {
665
+ const [a, b] = ratio.split("/");
666
+ return { left: parseInt(a), right: parseInt(b) };
667
+ }
675
668
  var SidedImageLayout = ({
676
669
  children,
677
670
  image,
678
671
  position,
679
- height
672
+ height,
673
+ ratio: ratioProp
680
674
  }) => {
681
675
  const isReversed = position === "left";
682
676
  const [component, rest] = getMatchingMdxType(children, "Image") || image;
677
+ const ratio = parseRatio(ratioProp || "6/4");
683
678
  if (!image && !component.length) {
684
679
  console.error("No image provided for SidedImageLayout");
685
680
  return null;
@@ -701,7 +696,7 @@ var SidedImageLayout = ({
701
696
  "div",
702
697
  {
703
698
  style: {
704
- flex: "6 0",
699
+ flex: `${ratio.left || 6} 0`,
705
700
  display: "flex",
706
701
  flexDirection: "column",
707
702
  justifyContent: "center",
@@ -714,7 +709,7 @@ var SidedImageLayout = ({
714
709
  "div",
715
710
  {
716
711
  style: {
717
- flex: "4 0",
712
+ flex: `${ratio.right || 4} 0`,
718
713
  display: "flex",
719
714
  flexDirection: "column",
720
715
  justifyContent: "center",
@@ -769,9 +764,12 @@ var import__3 = require("@fontsource/bitter/500.css");
769
764
  var import__4 = require("@fontsource/bitter/700.css");
770
765
  var theme_default = {
771
766
  colors: {
772
- primary: "white",
773
- secondary: "#F49676",
774
- tertiary: "#042F3B"
767
+ //primary: "white",
768
+ primary: "rgb(43,19,90)",
769
+ secondary: "rgb(86,212,248)",
770
+ // secondary: "#F49676",
771
+ // tertiary: "#042F3B",
772
+ tertiary: "rgb(43,19,90)"
775
773
  },
776
774
  fonts: {
777
775
  header: 'Bitter, "Helvetica Neue", Helvetica, Arial, sans-serif',
@@ -806,8 +804,8 @@ var template = ({ slideNumber, numberOfSlides }) => {
806
804
  };
807
805
 
808
806
  // src/components/map.tsx
809
- var import_react14 = __toESM(require("react"));
810
- var import_spectacle5 = require("spectacle");
807
+ var import_react15 = __toESM(require("react"));
808
+ var import_spectacle6 = require("spectacle");
811
809
 
812
810
  // src/components/styled.tsx
813
811
  var import_react12 = __toESM(require("react"));
@@ -821,7 +819,7 @@ var StyledImage = (0, import_styled_components9.default)(import_spectacle3.Image
821
819
  var Image2 = (props) => /* @__PURE__ */ import_react12.default.createElement(import_spectacle3.FlexBox, { margin: "0 0", padding: "0 0" }, /* @__PURE__ */ import_react12.default.createElement(StyledImage, { ...props }));
822
820
  var CustomHeading = (0, import_styled_components9.default)(import_spectacle3.Heading)`
823
821
  strong {
824
- color: #f49676;
822
+ color: var(--color-secondary);
825
823
  font-weight: 500;
826
824
  }
827
825
  `;
@@ -857,7 +855,7 @@ var HeadingThree = import_styled_components9.default.h3`
857
855
  margin-top: 0;
858
856
 
859
857
  strong {
860
- color: #f49676;
858
+ color: var(--color-secondary);
861
859
  font-weight: 500;
862
860
  }
863
861
  `;
@@ -876,30 +874,26 @@ function range(start, end) {
876
874
  }
877
875
  function parseRangeList(str) {
878
876
  return str.split(",").reduce((acc, line) => {
879
- if (!line.includes("-"))
880
- return [...acc, parseInt(line, 10)];
877
+ if (!line.includes("-")) return [...acc, parseInt(line, 10)];
881
878
  const [start, end] = line.split("-").map(Number);
882
879
  return [...acc, ...range(start, end)];
883
880
  }, []);
884
881
  }
885
882
  function parseShowLines(directive) {
886
883
  const match = directive.match(/showLines\((.*)\)/);
887
- if (!match)
888
- return null;
884
+ if (!match) return null;
889
885
  const lines = parseRangeList(match[1]);
890
886
  return { showLines: lines };
891
887
  }
892
888
  function parseHighlight(directive) {
893
889
  const match = directive.match(/highlight\((.*)\)/);
894
- if (!match)
895
- return null;
890
+ if (!match) return null;
896
891
  const lines = parseRangeList(match[1]);
897
892
  return { highlight: lines };
898
893
  }
899
894
  function parseName(directive) {
900
895
  const match = directive.match(/name\("(.*)"\)/);
901
- if (!match)
902
- return null;
896
+ if (!match) return null;
903
897
  return { name: match[1] };
904
898
  }
905
899
  function parseStepDirective(directive) {
@@ -912,8 +906,7 @@ function parseStepDirective(directive) {
912
906
  }
913
907
  function combineStepDirectives(directives) {
914
908
  let hiddenLines = directives.reduce((acc, { showLines }) => {
915
- if (!showLines)
916
- return acc;
909
+ if (!showLines) return acc;
917
910
  return [...acc, ...showLines];
918
911
  }, []);
919
912
  return directives.map(({ highlight, showLines, name }) => {
@@ -945,11 +938,11 @@ var CodeContainer = import_styled_components10.default.div`
945
938
  &:before {
946
939
  content: " ";
947
940
  position: absolute;
948
- background-color: #f4967688;
941
+ background-color: rgba(var(--color-primary-rgb), 0.5);
949
942
  }
950
943
 
951
944
  &[data-step-active="true"]:before {
952
- background-color: #f49676;
945
+ background-color: var(--color-secondary);
953
946
  }
954
947
  }
955
948
  `;
@@ -1061,64 +1054,114 @@ function CodeStepper({
1061
1054
  alwaysVisible: !hasSteps,
1062
1055
  priority: priority ? priority + 1 : void 0
1063
1056
  },
1064
- (step, _, isActive) => /* @__PURE__ */ import_react13.default.createElement(
1065
- CodeWrapper,
1066
- {
1067
- name,
1068
- stepName: step == null ? void 0 : step.name,
1069
- hasName
1070
- },
1071
- /* @__PURE__ */ import_react13.default.createElement(
1072
- Highlighter,
1057
+ (step, _, isActive) => {
1058
+ console.log({ step, isActive });
1059
+ return /* @__PURE__ */ import_react13.default.createElement(
1060
+ CodeWrapper,
1073
1061
  {
1074
- language,
1075
- wrapLines: true,
1076
- showLineNumbers: true,
1077
- style: import_prism.gruvboxDark,
1078
- lineNumberStyle: (lineNumber) => {
1079
- const { highlight = [] } = step || {};
1080
- const isHighlighted = highlight.includes(lineNumber);
1081
- return {
1082
- fontWeight: isHighlighted ? "bold" : "normal"
1083
- };
1084
- },
1085
- lineProps: (lineNumber) => {
1086
- const { hiddenLines = [], highlight = [] } = step || {};
1087
- const isVisible = hasSteps && isActive ? !hiddenLines.includes(lineNumber) : isActive || !hasSteps;
1088
- const isHighlighted = highlight.includes(lineNumber);
1089
- const getOpacity = () => {
1090
- if (!isVisible)
1091
- return 0;
1092
- if (isHighlighted || !highlight.length)
1093
- return 1;
1094
- return 0.8;
1095
- };
1096
- return {
1097
- ...isHighlighted && {
1098
- "data-highlight-line": isHighlighted,
1099
- "data-step-active": isActive
1100
- },
1101
- style: {
1102
- opacity: getOpacity(),
1103
- transition: "all 0.3s ease",
1104
- display: "block",
1105
- width: "100%",
1106
- backgroundColor: isHighlighted ? "#f4967622" : ""
1107
- }
1108
- };
1109
- }
1062
+ name,
1063
+ stepName: step == null ? void 0 : step.name,
1064
+ hasName
1110
1065
  },
1111
- codeNormalized
1112
- )
1113
- )
1066
+ /* @__PURE__ */ import_react13.default.createElement(
1067
+ Highlighter,
1068
+ {
1069
+ language,
1070
+ wrapLines: true,
1071
+ showLineNumbers: true,
1072
+ style: import_prism.gruvboxDark,
1073
+ lineNumberStyle: (lineNumber) => {
1074
+ const { highlight = [] } = step || {};
1075
+ const isHighlighted = highlight.includes(lineNumber);
1076
+ return {
1077
+ fontWeight: isHighlighted ? "bold" : "normal"
1078
+ };
1079
+ },
1080
+ lineProps: (lineNumber) => {
1081
+ const { hiddenLines = [], highlight = [] } = step || {};
1082
+ const isVisible = hasSteps && isActive ? !hiddenLines.includes(lineNumber) : isActive || !hasSteps;
1083
+ const isHighlighted = highlight.includes(lineNumber);
1084
+ const getOpacity = () => {
1085
+ if (!isVisible) return 0;
1086
+ if (isHighlighted || !highlight.length) return 1;
1087
+ return 0.8;
1088
+ };
1089
+ return {
1090
+ ...isHighlighted && {
1091
+ "data-highlight-line": isHighlighted,
1092
+ "data-step-active": isActive
1093
+ },
1094
+ style: {
1095
+ opacity: getOpacity(),
1096
+ transition: "all 0.3s ease",
1097
+ display: "block",
1098
+ width: "100%",
1099
+ backgroundColor: isHighlighted ? "rgba(var(--color-secondary-rgb), 0.13)" : ""
1100
+ }
1101
+ };
1102
+ }
1103
+ },
1104
+ codeNormalized
1105
+ )
1106
+ );
1107
+ }
1114
1108
  ));
1115
1109
  }
1116
1110
  CodeStepper.mdxType = "CodeStepper";
1117
1111
 
1112
+ // src/components/QRCode.tsx
1113
+ var import_qr_creator = __toESM(require("qr-creator"));
1114
+ var import_react14 = __toESM(require("react"));
1115
+ var import_spectacle5 = require("spectacle");
1116
+ var MapSize = {
1117
+ xs: 64,
1118
+ sm: 128,
1119
+ md: 256,
1120
+ lg: 512
1121
+ };
1122
+ function QRCode({ url, size = "md" }) {
1123
+ var _a, _b;
1124
+ const id = import_react14.default.useId().replace(/:/g, "___");
1125
+ const deck = (0, import_react14.useContext)(import_spectacle5.DeckContext);
1126
+ const width = MapSize[size];
1127
+ const backgroundColor = ((_b = (_a = deck.theme) == null ? void 0 : _a.colors) == null ? void 0 : _b.primary) || "#ffffff";
1128
+ import_react14.default.useEffect(() => {
1129
+ var _a2, _b2;
1130
+ const element = document.querySelector(`#${id}`);
1131
+ if (!element) return console.error("QRCode element not mounted");
1132
+ import_qr_creator.default.render(
1133
+ {
1134
+ text: url,
1135
+ radius: 0.5,
1136
+ ecLevel: "H",
1137
+ // L, M, Q, H
1138
+ fill: ((_b2 = (_a2 = deck.theme) == null ? void 0 : _a2.colors) == null ? void 0 : _b2.secondary) || "#000000",
1139
+ background: backgroundColor,
1140
+ size: width
1141
+ },
1142
+ element
1143
+ );
1144
+ return () => {
1145
+ element.replaceChildren();
1146
+ };
1147
+ }, [url]);
1148
+ return /* @__PURE__ */ import_react14.default.createElement(
1149
+ "div",
1150
+ {
1151
+ id,
1152
+ style: {
1153
+ padding: "1rem 1rem 0.6rem 1rem",
1154
+ borderRadius: "1rem",
1155
+ backgroundColor
1156
+ }
1157
+ }
1158
+ );
1159
+ }
1160
+
1118
1161
  // src/components/map.tsx
1119
1162
  var componentsMap = {
1120
- ...import_spectacle5.mdxComponentMap,
1121
- inlineCode: (props) => /* @__PURE__ */ import_react14.default.createElement(
1163
+ ...import_spectacle6.mdxComponentMap,
1164
+ inlineCode: (props) => /* @__PURE__ */ import_react15.default.createElement(
1122
1165
  InlineCode,
1123
1166
  {
1124
1167
  ...props,
@@ -1128,7 +1171,7 @@ var componentsMap = {
1128
1171
  }
1129
1172
  }
1130
1173
  ),
1131
- table: (props) => /* @__PURE__ */ import_react14.default.createElement(
1174
+ table: (props) => /* @__PURE__ */ import_react15.default.createElement(
1132
1175
  "table",
1133
1176
  {
1134
1177
  ...props,
@@ -1139,7 +1182,7 @@ var componentsMap = {
1139
1182
  }
1140
1183
  }
1141
1184
  ),
1142
- tr: (props) => /* @__PURE__ */ import_react14.default.createElement(
1185
+ tr: (props) => /* @__PURE__ */ import_react15.default.createElement(
1143
1186
  "tr",
1144
1187
  {
1145
1188
  ...props,
@@ -1151,7 +1194,7 @@ var componentsMap = {
1151
1194
  }
1152
1195
  }
1153
1196
  ),
1154
- td: (props) => /* @__PURE__ */ import_react14.default.createElement(
1197
+ td: (props) => /* @__PURE__ */ import_react15.default.createElement(
1155
1198
  "td",
1156
1199
  {
1157
1200
  ...props,
@@ -1164,7 +1207,7 @@ var componentsMap = {
1164
1207
  }
1165
1208
  }
1166
1209
  ),
1167
- h1: (props) => /* @__PURE__ */ import_react14.default.createElement(
1210
+ h1: (props) => /* @__PURE__ */ import_react15.default.createElement(
1168
1211
  CustomHeading,
1169
1212
  {
1170
1213
  fontSize: "h1",
@@ -1180,15 +1223,15 @@ var componentsMap = {
1180
1223
  },
1181
1224
  props.children
1182
1225
  ),
1183
- h2: (props) => /* @__PURE__ */ import_react14.default.createElement(HeadingTwo, null, props.children),
1184
- h3: (props) => /* @__PURE__ */ import_react14.default.createElement(HeadingThree, { ...props }),
1185
- img: (props) => /* @__PURE__ */ import_react14.default.createElement(Image2, { ...props }),
1226
+ h2: (props) => /* @__PURE__ */ import_react15.default.createElement(HeadingTwo, null, props.children),
1227
+ h3: (props) => /* @__PURE__ */ import_react15.default.createElement(HeadingThree, { ...props }),
1228
+ img: (props) => /* @__PURE__ */ import_react15.default.createElement(Image2, { ...props }),
1186
1229
  pre: CodeStepper,
1187
- li: (props) => /* @__PURE__ */ import_react14.default.createElement("li", { ...props, style: { margin: "24px 0" } }),
1188
- Side: (props) => /* @__PURE__ */ import_react14.default.createElement("div", { ...props }),
1230
+ li: (props) => /* @__PURE__ */ import_react15.default.createElement("li", { ...props, style: { margin: "24px 0" } }),
1231
+ Side: (props) => /* @__PURE__ */ import_react15.default.createElement("div", { ...props }),
1189
1232
  p: (props) => {
1190
- const Text = import_spectacle5.mdxComponentMap.p;
1191
- return /* @__PURE__ */ import_react14.default.createElement(
1233
+ const Text = import_spectacle6.mdxComponentMap.p;
1234
+ return /* @__PURE__ */ import_react15.default.createElement(
1192
1235
  Text,
1193
1236
  {
1194
1237
  style: { margin: "8px 0", padding: "8px 0", lineHeight: "2rem" },
@@ -1196,36 +1239,117 @@ var componentsMap = {
1196
1239
  }
1197
1240
  );
1198
1241
  },
1199
- blockquote: (props) => /* @__PURE__ */ import_react14.default.createElement(CustomQuote, { ...props }),
1242
+ blockquote: (props) => /* @__PURE__ */ import_react15.default.createElement(CustomQuote, { ...props }),
1200
1243
  a: ({ children, ...props }) => {
1201
1244
  const domain = new URL(props.href || "").hostname;
1202
- return /* @__PURE__ */ import_react14.default.createElement("a", { ...props, style: { color: "#f49676", textDecoration: "none" } }, children, " ", /* @__PURE__ */ import_react14.default.createElement(
1203
- "small",
1245
+ return /* @__PURE__ */ import_react15.default.createElement(
1246
+ "a",
1204
1247
  {
1205
- style: {
1206
- color: "#ffffff44"
1207
- }
1248
+ ...props,
1249
+ style: { color: "var(--color-secondary)", textDecoration: "none" }
1208
1250
  },
1209
- "(",
1210
- domain,
1211
- ")"
1212
- ));
1251
+ children,
1252
+ " ",
1253
+ /* @__PURE__ */ import_react15.default.createElement(
1254
+ "small",
1255
+ {
1256
+ style: {
1257
+ color: "#ffffff44"
1258
+ }
1259
+ },
1260
+ "(",
1261
+ domain,
1262
+ ")"
1263
+ )
1264
+ );
1265
+ },
1266
+ directive: (props) => {
1267
+ if (props._name === "qrcode") {
1268
+ const url = import_react15.default.Children.toArray(props.children)[0].props.href;
1269
+ return /* @__PURE__ */ import_react15.default.createElement(QRCode, { url });
1270
+ }
1271
+ return /* @__PURE__ */ import_react15.default.createElement("div", { ...props });
1213
1272
  }
1214
1273
  };
1215
1274
  var map_default = componentsMap;
1216
1275
 
1276
+ // src/index.tsx
1277
+ var import_styled_components17 = require("styled-components");
1278
+
1279
+ // src/SlideWrapper.tsx
1280
+ var import_react17 = __toESM(require("react"));
1281
+
1282
+ // src/context.tsx
1283
+ var import_react16 = __toESM(require("react"));
1284
+ var PestacleContext = import_react16.default.createContext(void 0);
1285
+ function usePestacle() {
1286
+ const context = import_react16.default.useContext(PestacleContext);
1287
+ if (!context) {
1288
+ throw new Error("usePestacle must be used within a PestacleProvider");
1289
+ }
1290
+ return context;
1291
+ }
1292
+ function PestacleProvider({
1293
+ children,
1294
+ layouts: layouts2
1295
+ }) {
1296
+ return /* @__PURE__ */ import_react16.default.createElement(PestacleContext.Provider, { value: { layouts: layouts2 } }, children);
1297
+ }
1298
+
1299
+ // src/SlideWrapper.tsx
1300
+ function SlideWrapper({
1301
+ children,
1302
+ frontmatter
1303
+ }) {
1304
+ const { layouts: layouts2 } = usePestacle();
1305
+ const layout = (frontmatter == null ? void 0 : frontmatter.layout) || "default";
1306
+ console.log(layouts2, layout);
1307
+ const Layout = layout in layouts2 ? layouts2[layout] : null;
1308
+ if (layout && !Layout) {
1309
+ console.warn(`Layout ${layout} not found`);
1310
+ }
1311
+ if (Layout) {
1312
+ return /* @__PURE__ */ import_react17.default.createElement(Layout, { ...frontmatter }, children);
1313
+ }
1314
+ return /* @__PURE__ */ import_react17.default.createElement(import_react17.default.Fragment, null, children);
1315
+ }
1316
+
1317
+ // src/colors.ts
1318
+ function extractColors(color) {
1319
+ if (color.startsWith("rgb")) {
1320
+ const [r, g, b] = color.replace("rgb(", "").replace("rgba(", "").replace(")", "").split(",").map((c) => parseInt(c.trim(), 10));
1321
+ return { r, g, b };
1322
+ } else if (color.startsWith("#")) {
1323
+ const hex = color.replace("#", "");
1324
+ const r = parseInt(hex.substring(0, 2), 16);
1325
+ const g = parseInt(hex.substring(2, 4), 16);
1326
+ const b = parseInt(hex.substring(4, 6), 16);
1327
+ return { r, g, b };
1328
+ }
1329
+ throw new Error(`Invalid color format: ${color}`);
1330
+ }
1331
+ function createCssVariables(colors) {
1332
+ const base = Object.entries(colors).map(([key, value]) => `--color-${key}: ${value};`).join("\n");
1333
+ const rgbs = Object.entries(colors).map(([key, value]) => {
1334
+ const { r, g, b } = extractColors(value);
1335
+ return `--color-${key}-rgb: ${r}, ${g}, ${b};`;
1336
+ }).join("\n");
1337
+ return `${base}
1338
+ ${rgbs}`;
1339
+ }
1340
+
1217
1341
  // src/index.tsx
1218
1342
  __reExport(src_exports, require("spectacle"));
1219
1343
 
1220
1344
  // src/components/FilePane.tsx
1221
- var import_react15 = __toESM(require("react"));
1345
+ var import_react18 = __toESM(require("react"));
1222
1346
  function FilePane({
1223
1347
  name,
1224
1348
  children,
1225
1349
  priority,
1226
1350
  ...divProps
1227
1351
  }) {
1228
- return import_react15.default.isValidElement(children) ? import_react15.default.cloneElement(children, {
1352
+ return import_react18.default.isValidElement(children) ? import_react18.default.cloneElement(children, {
1229
1353
  // @ts-expect-error cloning
1230
1354
  priority,
1231
1355
  name
@@ -1234,14 +1358,14 @@ function FilePane({
1234
1358
  FilePane.mdxType = "FilePane";
1235
1359
 
1236
1360
  // src/components/ItemsColumn.tsx
1237
- var import_react16 = __toESM(require("react"));
1238
- var import_spectacle6 = require("spectacle");
1361
+ var import_react19 = __toESM(require("react"));
1362
+ var import_spectacle7 = require("spectacle");
1239
1363
  var import_styled_components11 = __toESM(require("styled-components"));
1240
1364
  var import_react_spring = require("react-spring");
1241
1365
  function ItemsColumn(divProps) {
1242
1366
  const { style: style2, children, ...props } = divProps;
1243
- const childrenArray = import_react16.default.Children.toArray(children);
1244
- return /* @__PURE__ */ import_react16.default.createElement(import_spectacle6.Stepper, { values: childrenArray }, (value, step) => /* @__PURE__ */ import_react16.default.createElement(
1367
+ const childrenArray = import_react19.default.Children.toArray(children);
1368
+ return /* @__PURE__ */ import_react19.default.createElement(import_spectacle7.Stepper, { values: childrenArray }, (value, step) => /* @__PURE__ */ import_react19.default.createElement(
1245
1369
  "div",
1246
1370
  {
1247
1371
  style: {
@@ -1257,10 +1381,10 @@ function ItemsColumn(divProps) {
1257
1381
  },
1258
1382
  childrenArray.map((child, index) => {
1259
1383
  const isVisible = index <= step;
1260
- if (!import_react16.default.isValidElement(child)) {
1384
+ if (!import_react19.default.isValidElement(child)) {
1261
1385
  return child;
1262
1386
  }
1263
- return /* @__PURE__ */ import_react16.default.createElement(ItemColumnWrapper, { key: index, isVisible }, child);
1387
+ return /* @__PURE__ */ import_react19.default.createElement(ItemColumnWrapper, { key: index, isVisible }, child);
1264
1388
  })
1265
1389
  ));
1266
1390
  }
@@ -1277,11 +1401,11 @@ function ItemColumnWrapper({
1277
1401
  ...props
1278
1402
  }) {
1279
1403
  const styles = (0, import_react_spring.useSpring)({ opacity: isVisible ? 1 : 0 });
1280
- return /* @__PURE__ */ import_react16.default.createElement(ItemColumnWrapperStyled, { style: styles, ...props }, children);
1404
+ return /* @__PURE__ */ import_react19.default.createElement(ItemColumnWrapperStyled, { style: styles, ...props }, children);
1281
1405
  }
1282
1406
 
1283
1407
  // src/components/DocumentationItem.tsx
1284
- var import_react17 = __toESM(require("react"));
1408
+ var import_react20 = __toESM(require("react"));
1285
1409
  var import_styled_components12 = __toESM(require("styled-components"));
1286
1410
  var DocWrapper = import_styled_components12.default.div`
1287
1411
  position: absolute;
@@ -1334,16 +1458,16 @@ function Doc({
1334
1458
  link,
1335
1459
  children
1336
1460
  }) {
1337
- return /* @__PURE__ */ import_react17.default.createElement(DocWrapper, null, /* @__PURE__ */ import_react17.default.createElement(DocContainer, null, children && /* @__PURE__ */ import_react17.default.createElement(DocContent, null, children), /* @__PURE__ */ import_react17.default.createElement("div", null, /* @__PURE__ */ import_react17.default.createElement(DocLink, { target: "_blank", rel: "noopener noreferrer", href: link }, label))));
1461
+ return /* @__PURE__ */ import_react20.default.createElement(DocWrapper, null, /* @__PURE__ */ import_react20.default.createElement(DocContainer, null, children && /* @__PURE__ */ import_react20.default.createElement(DocContent, null, children), /* @__PURE__ */ import_react20.default.createElement("div", null, /* @__PURE__ */ import_react20.default.createElement(DocLink, { target: "_blank", rel: "noopener noreferrer", href: link }, label))));
1338
1462
  }
1339
1463
  function DocItem({ label, link }) {
1340
- return /* @__PURE__ */ import_react17.default.createElement(DocLinkItem, { target: "_blank", rel: "noopener noreferrer", href: link }, label);
1464
+ return /* @__PURE__ */ import_react20.default.createElement(DocLinkItem, { target: "_blank", rel: "noopener noreferrer", href: link }, label);
1341
1465
  }
1342
1466
 
1343
1467
  // src/components/HorizontalList.tsx
1344
- var import_react18 = __toESM(require("react"));
1468
+ var import_react21 = __toESM(require("react"));
1345
1469
  var import_react_spring2 = require("react-spring");
1346
- var import_spectacle7 = require("spectacle");
1470
+ var import_spectacle8 = require("spectacle");
1347
1471
  var import_styled_components13 = __toESM(require("styled-components"));
1348
1472
  var Container = import_styled_components13.default.div`
1349
1473
  display: grid;
@@ -1353,8 +1477,8 @@ function HorizontalList({
1353
1477
  children,
1354
1478
  columns = 3
1355
1479
  }) {
1356
- const items = import_react18.default.Children.toArray(children);
1357
- return /* @__PURE__ */ import_react18.default.createElement(import_spectacle7.Stepper, { values: items }, (_, step) => /* @__PURE__ */ import_react18.default.createElement(
1480
+ const items = import_react21.default.Children.toArray(children);
1481
+ return /* @__PURE__ */ import_react21.default.createElement(import_spectacle8.Stepper, { values: items }, (_, step) => /* @__PURE__ */ import_react21.default.createElement(
1358
1482
  Container,
1359
1483
  {
1360
1484
  style: {
@@ -1362,10 +1486,10 @@ function HorizontalList({
1362
1486
  }
1363
1487
  },
1364
1488
  items.map((item, k) => {
1365
- if (!import_react18.default.isValidElement(item)) {
1489
+ if (!import_react21.default.isValidElement(item)) {
1366
1490
  return item;
1367
1491
  }
1368
- return import_react18.default.cloneElement(item, {
1492
+ return import_react21.default.cloneElement(item, {
1369
1493
  // @ts-expect-error cloning
1370
1494
  position: k + 1,
1371
1495
  isVisible: k <= step,
@@ -1375,12 +1499,12 @@ function HorizontalList({
1375
1499
  ));
1376
1500
  }
1377
1501
  function Pill({ position }) {
1378
- return /* @__PURE__ */ import_react18.default.createElement(
1502
+ return /* @__PURE__ */ import_react21.default.createElement(
1379
1503
  "div",
1380
1504
  {
1381
1505
  style: { width: 48, transform: "translate(-25%, -25%)", opacity: 0.9 }
1382
1506
  },
1383
- /* @__PURE__ */ import_react18.default.createElement(
1507
+ /* @__PURE__ */ import_react21.default.createElement(
1384
1508
  "svg",
1385
1509
  {
1386
1510
  width: "48",
@@ -1389,14 +1513,14 @@ function Pill({ position }) {
1389
1513
  fill: "none",
1390
1514
  xmlns: "http://www.w3.org/2000/svg"
1391
1515
  },
1392
- /* @__PURE__ */ import_react18.default.createElement(
1516
+ /* @__PURE__ */ import_react21.default.createElement(
1393
1517
  "path",
1394
1518
  {
1395
1519
  d: "M8.64717 20L0 15.0094V5.00134L8.64717 0L17.289 5.00134V15.0094L8.64717 20ZM1.48222 14.141L8.64717 18.2846L15.8068 14.141V5.85902L8.64717 1.71536L1.48222 5.85902V14.141Z",
1396
1520
  fill: "#ffffff"
1397
1521
  }
1398
1522
  ),
1399
- /* @__PURE__ */ import_react18.default.createElement(
1523
+ /* @__PURE__ */ import_react21.default.createElement(
1400
1524
  "text",
1401
1525
  {
1402
1526
  x: "9",
@@ -1408,7 +1532,7 @@ function Pill({ position }) {
1408
1532
  },
1409
1533
  position
1410
1534
  ),
1411
- /* @__PURE__ */ import_react18.default.createElement(
1535
+ /* @__PURE__ */ import_react21.default.createElement(
1412
1536
  "path",
1413
1537
  {
1414
1538
  d: "M 8.758 16.01 L 3.549 13.004 L 3.549 6.975 L 8.758 3.963 L 13.964 6.975 L 13.964 13.004 L 8.758 16.01 Z",
@@ -1445,10 +1569,8 @@ function getItemOpacity({
1445
1569
  isLast,
1446
1570
  isVisible
1447
1571
  }) {
1448
- if (isLast)
1449
- return 1;
1450
- if (isVisible)
1451
- return 0.7;
1572
+ if (isLast) return 1;
1573
+ if (isVisible) return 0.7;
1452
1574
  return 0;
1453
1575
  }
1454
1576
  function HorizontalListItem({
@@ -1461,13 +1583,13 @@ function HorizontalListItem({
1461
1583
  const opacityStyles = (0, import_react_spring2.useSpring)({
1462
1584
  opacity: getItemOpacity({ isVisible, isLast })
1463
1585
  });
1464
- return /* @__PURE__ */ import_react18.default.createElement(Item, { style: opacityStyles }, /* @__PURE__ */ import_react18.default.createElement(ItemHead, null, /* @__PURE__ */ import_react18.default.createElement(Pill, { position }), /* @__PURE__ */ import_react18.default.createElement("p", null, title)), /* @__PURE__ */ import_react18.default.createElement(ItemContent, null, children));
1586
+ return /* @__PURE__ */ import_react21.default.createElement(Item, { style: opacityStyles }, /* @__PURE__ */ import_react21.default.createElement(ItemHead, null, /* @__PURE__ */ import_react21.default.createElement(Pill, { position }), /* @__PURE__ */ import_react21.default.createElement("p", null, title)), /* @__PURE__ */ import_react21.default.createElement(ItemContent, null, children));
1465
1587
  }
1466
1588
 
1467
1589
  // src/components/Timeline.tsx
1468
- var import_react19 = __toESM(require("react"));
1590
+ var import_react22 = __toESM(require("react"));
1469
1591
  var import_react_spring3 = require("react-spring");
1470
- var import_spectacle8 = require("spectacle");
1592
+ var import_spectacle9 = require("spectacle");
1471
1593
 
1472
1594
  // src/components/Timeline.styled.tsx
1473
1595
  var import_styled_components14 = __toESM(require("styled-components"));
@@ -1539,9 +1661,9 @@ var style = {
1539
1661
  alignItems: "center"
1540
1662
  };
1541
1663
  function Timeline(props) {
1542
- const children = import_react19.default.Children.toArray(props.children);
1543
- return /* @__PURE__ */ import_react19.default.createElement(
1544
- import_spectacle8.Stepper,
1664
+ const children = import_react22.default.Children.toArray(props.children);
1665
+ return /* @__PURE__ */ import_react22.default.createElement(
1666
+ import_spectacle9.Stepper,
1545
1667
  {
1546
1668
  ...props,
1547
1669
  values: children,
@@ -1550,10 +1672,10 @@ function Timeline(props) {
1550
1672
  },
1551
1673
  (value, step) => {
1552
1674
  return children.map((child, index) => {
1553
- if (!import_react19.default.isValidElement(child)) {
1675
+ if (!import_react22.default.isValidElement(child)) {
1554
1676
  return child;
1555
1677
  }
1556
- return import_react19.default.cloneElement(child, {
1678
+ return import_react22.default.cloneElement(child, {
1557
1679
  // @ts-expect-error cloning
1558
1680
  isPhantom: step < index,
1559
1681
  isLast: step === index
@@ -1566,10 +1688,8 @@ function getItemOpacity2({
1566
1688
  isLast,
1567
1689
  isPhantom
1568
1690
  }) {
1569
- if (isPhantom)
1570
- return 0;
1571
- if (isLast)
1572
- return 1;
1691
+ if (isPhantom) return 0;
1692
+ if (isLast) return 1;
1573
1693
  return 0.5;
1574
1694
  }
1575
1695
  function TimelineItem(props) {
@@ -1581,7 +1701,7 @@ function TimelineItem(props) {
1581
1701
  opacity: getItemOpacity2({ isPhantom, isLast })
1582
1702
  });
1583
1703
  const colorStyles = (0, import_react_spring3.useSpring)({ opacity: isPhantom || isLast ? 1 : 0.15 });
1584
- return /* @__PURE__ */ import_react19.default.createElement(
1704
+ return /* @__PURE__ */ import_react22.default.createElement(
1585
1705
  TimelineItemStyled,
1586
1706
  {
1587
1707
  ...rest,
@@ -1589,13 +1709,13 @@ function TimelineItem(props) {
1589
1709
  ...appearStyles
1590
1710
  }
1591
1711
  },
1592
- /* @__PURE__ */ import_react19.default.createElement(TimelineItemContentPhantom, null, /* @__PURE__ */ import_react19.default.createElement(TimelineItemTitle, null, title), /* @__PURE__ */ import_react19.default.createElement(TimelineItemBody, null, children)),
1593
- /* @__PURE__ */ import_react19.default.createElement(TimelineItemGuide, { style: colorStyles }, /* @__PURE__ */ import_react19.default.createElement(Hexagon, null), /* @__PURE__ */ import_react19.default.createElement(TimelineItemGuideLine, { style: guideLineProps })),
1594
- /* @__PURE__ */ import_react19.default.createElement(TimelineItemContent, null, /* @__PURE__ */ import_react19.default.createElement(TimelineItemTitle, null, title), /* @__PURE__ */ import_react19.default.createElement(TimelineItemBody, null, children))
1712
+ /* @__PURE__ */ import_react22.default.createElement(TimelineItemContentPhantom, null, /* @__PURE__ */ import_react22.default.createElement(TimelineItemTitle, null, title), /* @__PURE__ */ import_react22.default.createElement(TimelineItemBody, null, children)),
1713
+ /* @__PURE__ */ import_react22.default.createElement(TimelineItemGuide, { style: colorStyles }, /* @__PURE__ */ import_react22.default.createElement(Hexagon, null), /* @__PURE__ */ import_react22.default.createElement(TimelineItemGuideLine, { style: guideLineProps })),
1714
+ /* @__PURE__ */ import_react22.default.createElement(TimelineItemContent, null, /* @__PURE__ */ import_react22.default.createElement(TimelineItemTitle, null, title), /* @__PURE__ */ import_react22.default.createElement(TimelineItemBody, null, children))
1595
1715
  );
1596
1716
  }
1597
1717
  function Hexagon() {
1598
- return /* @__PURE__ */ import_react19.default.createElement(
1718
+ return /* @__PURE__ */ import_react22.default.createElement(
1599
1719
  "svg",
1600
1720
  {
1601
1721
  width: "18",
@@ -1604,14 +1724,14 @@ function Hexagon() {
1604
1724
  fill: "none",
1605
1725
  xmlns: "http://www.w3.org/2000/svg"
1606
1726
  },
1607
- /* @__PURE__ */ import_react19.default.createElement(
1727
+ /* @__PURE__ */ import_react22.default.createElement(
1608
1728
  "path",
1609
1729
  {
1610
1730
  d: "M8.64717 20L0 15.0094V5.00134L8.64717 0L17.289 5.00134V15.0094L8.64717 20ZM1.48222 14.141L8.64717 18.2846L15.8068 14.141V5.85902L8.64717 1.71536L1.48222 5.85902V14.141Z",
1611
1731
  fill: "#F49676"
1612
1732
  }
1613
1733
  ),
1614
- /* @__PURE__ */ import_react19.default.createElement(
1734
+ /* @__PURE__ */ import_react22.default.createElement(
1615
1735
  "path",
1616
1736
  {
1617
1737
  d: "M 8.758 16.01 L 3.549 13.004 L 3.549 6.975 L 8.758 3.963 L 13.964 6.975 L 13.964 13.004 L 8.758 16.01 Z",
@@ -1622,7 +1742,7 @@ function Hexagon() {
1622
1742
  }
1623
1743
 
1624
1744
  // src/components/IconBox.tsx
1625
- var import_react20 = __toESM(require("react"));
1745
+ var import_react23 = __toESM(require("react"));
1626
1746
  var import_styled_components16 = __toESM(require("styled-components"));
1627
1747
  var IconBoxContent = import_styled_components16.default.div`
1628
1748
  * {
@@ -1634,7 +1754,7 @@ function IconBox({
1634
1754
  children,
1635
1755
  icon
1636
1756
  }) {
1637
- return /* @__PURE__ */ import_react20.default.createElement(
1757
+ return /* @__PURE__ */ import_react23.default.createElement(
1638
1758
  "div",
1639
1759
  {
1640
1760
  style: {
@@ -1644,63 +1764,69 @@ function IconBox({
1644
1764
  padding: "1rem 0"
1645
1765
  }
1646
1766
  },
1647
- /* @__PURE__ */ import_react20.default.createElement("div", { style: { fontSize: 60 } }, icon),
1648
- /* @__PURE__ */ import_react20.default.createElement(IconBoxContent, null, children)
1767
+ /* @__PURE__ */ import_react23.default.createElement("div", { style: { fontSize: 60 } }, icon),
1768
+ /* @__PURE__ */ import_react23.default.createElement(IconBoxContent, null, children)
1649
1769
  );
1650
1770
  }
1651
1771
 
1652
1772
  // src/index.tsx
1653
1773
  function PassThrough({ children }) {
1654
- return /* @__PURE__ */ import_react21.default.createElement(import_react21.default.Fragment, null, children);
1655
- }
1656
- function Layout({
1657
- children,
1658
- frontmatter
1659
- }) {
1660
- const layout = (frontmatter == null ? void 0 : frontmatter.layout) || "default";
1661
- const Layout2 = layout in layouts_default ? layouts_default[layout] : null;
1662
- if (layout && !Layout2) {
1663
- console.warn(`Layout ${layout} not found`);
1664
- }
1665
- if (Layout2) {
1666
- return /* @__PURE__ */ import_react21.default.createElement(Layout2, { ...frontmatter }, children);
1667
- }
1668
- return /* @__PURE__ */ import_react21.default.createElement(import_react21.default.Fragment, null, children);
1774
+ return /* @__PURE__ */ import_react24.default.createElement(import_react24.default.Fragment, null, children);
1669
1775
  }
1776
+ var layouts = layouts_default;
1670
1777
  var componentsMap2 = {
1671
1778
  ...map_default,
1672
- wrapper: Layout
1779
+ wrapper: SlideWrapper
1673
1780
  };
1674
- function Deck({ deck }) {
1675
- import_react21.default.useEffect(() => {
1781
+ function Deck({
1782
+ deck,
1783
+ theme,
1784
+ layouts: layouts2 = layouts_default
1785
+ }) {
1786
+ import_react24.default.useEffect(() => {
1676
1787
  document.title = deck.metadata.title || "Untitled";
1677
1788
  }, [deck.metadata.title]);
1678
- return /* @__PURE__ */ import_react21.default.createElement(import_react21.default.StrictMode, null, /* @__PURE__ */ import_react21.default.createElement(import_react22.MDXProvider, { components: componentsMap2 }, /* @__PURE__ */ import_react21.default.createElement(import_spectacle9.Deck, { theme: theme_default, template }, deck.slides.map((slide, i) => {
1679
- const Component = slide.slideComponent;
1680
- return /* @__PURE__ */ import_react21.default.createElement(import_spectacle9.Slide, { key: i }, /* @__PURE__ */ import_react21.default.createElement(Component, null));
1681
- }))));
1789
+ const GlobalStyle = import_react24.default.useMemo(() => {
1790
+ const cssVariables = createCssVariables(theme.themeTokens.colors);
1791
+ return import_styled_components17.createGlobalStyle`
1792
+ :root {
1793
+ ${cssVariables}
1794
+ }
1795
+ `;
1796
+ }, [theme]);
1797
+ return /* @__PURE__ */ import_react24.default.createElement(import_react24.default.StrictMode, null, /* @__PURE__ */ import_react24.default.createElement(PestacleProvider, { layouts: layouts2 }, /* @__PURE__ */ import_react24.default.createElement(import_react25.MDXProvider, { components: componentsMap2 }, /* @__PURE__ */ import_react24.default.createElement(GlobalStyle, null), /* @__PURE__ */ import_react24.default.createElement(
1798
+ import_spectacle10.Deck,
1799
+ {
1800
+ theme: { ...theme_default, ...theme.themeTokens },
1801
+ template
1802
+ },
1803
+ deck.slides.map((slide, i) => {
1804
+ const Component = slide.slideComponent;
1805
+ return /* @__PURE__ */ import_react24.default.createElement(import_spectacle10.Slide, { key: i }, /* @__PURE__ */ import_react24.default.createElement(Component, null));
1806
+ })
1807
+ ))));
1682
1808
  }
1683
1809
  function Danger({ children }) {
1684
- return /* @__PURE__ */ import_react21.default.createElement("div", { style: { color: "red" } }, children);
1810
+ return /* @__PURE__ */ import_react24.default.createElement("div", { style: { color: "red" } }, children);
1685
1811
  }
1686
1812
  function Information({ children }) {
1687
- return /* @__PURE__ */ import_react21.default.createElement("div", { style: { color: "orange" } }, children);
1813
+ return /* @__PURE__ */ import_react24.default.createElement("div", { style: { color: "orange" } }, children);
1688
1814
  }
1689
1815
  function Success({ children }) {
1690
- return /* @__PURE__ */ import_react21.default.createElement("div", { style: { color: "green" } }, children);
1816
+ return /* @__PURE__ */ import_react24.default.createElement("div", { style: { color: "green" } }, children);
1691
1817
  }
1692
1818
  function Warning({ children }) {
1693
- return /* @__PURE__ */ import_react21.default.createElement("div", { style: { color: "yellow" } }, children);
1819
+ return /* @__PURE__ */ import_react24.default.createElement("div", { style: { color: "yellow" } }, children);
1694
1820
  }
1695
1821
  function Side({ children }) {
1696
- return /* @__PURE__ */ import_react21.default.createElement("div", null, children);
1822
+ return /* @__PURE__ */ import_react24.default.createElement("div", null, children);
1697
1823
  }
1698
1824
  Side.mdxType = "Side";
1699
1825
  function Documentation({ children }) {
1700
- return /* @__PURE__ */ import_react21.default.createElement("div", null, children);
1826
+ return /* @__PURE__ */ import_react24.default.createElement("div", null, children);
1701
1827
  }
1702
1828
  function Box2({ children }) {
1703
- return /* @__PURE__ */ import_react21.default.createElement("div", null, children);
1829
+ return /* @__PURE__ */ import_react24.default.createElement("div", null, children);
1704
1830
  }
1705
1831
 
1706
1832
  // <stdin>