diff --git a/packages/mini-browser/src/buttons.tsx b/packages/mini-browser/src/buttons.tsx
index 84e192bb..ec642e4d 100644
--- a/packages/mini-browser/src/buttons.tsx
+++ b/packages/mini-browser/src/buttons.tsx
@@ -1,35 +1,38 @@
-import React from "react";
+import { useClasser } from "@code-hike/classer"
+import React from "react"
function Back() {
+ const c = useClasser("ch-browser")
return (
- );
+ )
}
function Forward() {
+ const c = useClasser("ch-browser")
return (
- );
+ )
}
function Refresh() {
@@ -43,13 +46,14 @@ function Refresh() {
>
- );
+ )
}
function Open({ href }: { href: string }) {
+ const c = useClasser("ch-browser")
return (
- );
+ )
}
-export { Back, Forward, Refresh, Open };
+export { Back, Forward, Refresh, Open }
diff --git a/packages/mini-browser/src/index.scss b/packages/mini-browser/src/index.scss
index 4a717ce0..9a6e28d1 100644
--- a/packages/mini-browser/src/index.scss
+++ b/packages/mini-browser/src/index.scss
@@ -22,3 +22,23 @@
padding: 0 10px;
color: #544;
}
+
+.ch-browser-button {
+ margin: 0 1em;
+ color: #999;
+}
+
+.ch-browser-back-button {
+ margin-left: 0.2em;
+}
+
+.ch-browser-forward-button {
+ margin-left: 0;
+}
+
+.ch-browser-open-button {
+ color: inherit;
+}
+.ch-browser-open-icon {
+ display: block;
+}
diff --git a/packages/mini-browser/src/mini-browser-hike.tsx b/packages/mini-browser/src/mini-browser-hike.tsx
index 3fefb312..edb63f0d 100644
--- a/packages/mini-browser/src/mini-browser-hike.tsx
+++ b/packages/mini-browser/src/mini-browser-hike.tsx
@@ -4,11 +4,14 @@ import { TitleBar } from "./title-bar"
import { MiniBrowserStep, useSteps } from "./use-steps"
import { useClasser, Classes } from "@code-hike/classer"
+type Transition = "none" | "slide"
+
export type MiniBrowserHikeProps = {
progress?: number
backward?: boolean
classes?: Classes
steps?: MiniBrowserStep[]
+ transition?: Transition
} & React.PropsWithoutRef
const MiniBrowserHike = React.forwardRef<
@@ -21,6 +24,7 @@ function MiniBrowserWithRef(
progress = 0,
backward = false,
steps: ogSteps,
+ transition = "none",
classes,
...props
}: MiniBrowserHikeProps,
@@ -29,16 +33,6 @@ function MiniBrowserWithRef(
const c = useClasser("ch-mini-browser", classes)
const steps = useSteps(ogSteps)
- // TODO readability and optional
- const X = 50
- const t = progress - Math.floor(progress)
- const x = t <= 0.5 ? -X * t : X - X * t
- const o = Math.abs(t - 0.5) * 2
-
- // const stepIndex = backward
- // ? Math.floor(progress)
- // : Math.ceil(progress)
-
const stepIndex = Math.round(progress)
const { zoom, displayUrl, loadUrl, children } = steps[
@@ -51,8 +45,7 @@ function MiniBrowserWithRef(
zoom={zoom}
className={`${c("")} ${props.className || ""}`}
style={{
- transform: `translateX(${x}px)`,
- opacity: o * o,
+ ...transitionStyle({ progress, transition }),
...props.style,
}}
classes={classes}
@@ -65,4 +58,24 @@ function MiniBrowserWithRef(
)
}
+function transitionStyle({
+ progress,
+ transition,
+}: {
+ progress: number
+ transition: Transition
+}) {
+ if (transition === "slide") {
+ const X = 50
+ const t = progress - Math.floor(progress)
+ const x = t <= 0.5 ? -X * t : X - X * t
+ const o = Math.abs(t - 0.5) * 2
+ return {
+ transform: `translateX(${x}px)`,
+ opacity: o * o,
+ }
+ }
+ return {}
+}
+
export { MiniBrowserHike }
diff --git a/packages/scrollycoding/src/mdx-steps.tsx b/packages/scrollycoding/src/mdx-steps.tsx
index eef968ff..7527654b 100644
--- a/packages/scrollycoding/src/mdx-steps.tsx
+++ b/packages/scrollycoding/src/mdx-steps.tsx
@@ -25,12 +25,15 @@ interface Step {
codeProps: CodeProps
}
-const defaultFilename = "App.js"
+interface Options {
+ defaultFileName?: string
+}
function useMdxSteps(
mdx: React.ReactNode,
previewProps: PreviewProps,
- codeProps: CodeProps
+ codeProps: CodeProps,
+ options: Options = {}
) {
const steps: Step[] = []
let prevFiles: CodeFiles = {}
@@ -41,7 +44,8 @@ function useMdxSteps(
const { files, activeFile } = getFiles(
stepHeadProps,
prevFiles,
- prevActiveFile
+ prevActiveFile,
+ options.defaultFileName
)
const step = {
content: [],
@@ -69,7 +73,8 @@ function useMdxSteps(
function getFiles(
stepHeadProps: StepHeadProps,
prevFiles: CodeFiles = {},
- prevActiveFile: string = ""
+ prevActiveFile: string = "",
+ defaultFileName: string = "App.js"
) {
let activeFile = stepHeadProps.activeFile || ""
const files = { ...prevFiles }
@@ -80,7 +85,7 @@ function getFiles(
preElement?.props?.children?.props || {}
const lang = codeElementProps.className?.slice(9)
const { filename, hideTab } = parseMetastring(
- codeElementProps.metastring || defaultFilename
+ codeElementProps.metastring || defaultFileName
)
const code = codeElementProps.children
files[filename] = { code, lang, hideTab }
diff --git a/packages/scrollycoding/src/preview.tsx b/packages/scrollycoding/src/preview.tsx
index 124284d2..5ef863b7 100644
--- a/packages/scrollycoding/src/preview.tsx
+++ b/packages/scrollycoding/src/preview.tsx
@@ -34,6 +34,7 @@ function Preview({ filesHash, ...props }: PreviewProps) {