We compile
BIN
assets/icons/1x/Element 1.png
Normal file
After Width: | Height: | Size: 28 KiB |
BIN
assets/icons/200w/Element 1.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
assets/icons/400w/Element 1.png
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
assets/icons/400w/Zeichenfläche 1.png
Normal file
After Width: | Height: | Size: 37 KiB |
BIN
assets/icons/800w/Zeichenfläche 1.png
Normal file
After Width: | Height: | Size: 81 KiB |
1101
assets/icons/LogoHead.ai
Normal file
2
blog/.vscode/settings.json
vendored
@ -1,4 +1,4 @@
|
||||
{
|
||||
"workbench.preferredDarkColorTheme": "Base2Tone_HeathDark",
|
||||
"workbench.colorTheme": "Base2Tone_FieldDark"
|
||||
"workbench.colorTheme": "Kay Dark"
|
||||
}
|
@ -1,6 +1,5 @@
|
||||
const path = require("path");
|
||||
var proxy = require("http-proxy-middleware");
|
||||
|
||||
module.exports = {
|
||||
siteMetadata: {
|
||||
title: "Rowtype Yoga",
|
||||
@ -12,10 +11,8 @@ module.exports = {
|
||||
app.use(
|
||||
"/api",
|
||||
proxy({
|
||||
target: "http://127.0.0.1:14188",
|
||||
pathRewrite: {
|
||||
"/api": ""
|
||||
}
|
||||
target: "https://rowtype.yoga",
|
||||
changeOrigin: true,
|
||||
})
|
||||
);
|
||||
},
|
||||
|
26073
blog/package-lock.json
generated
@ -9,7 +9,7 @@
|
||||
"@mdx-js/react": "^1.1.5",
|
||||
"@welldone-software/why-did-you-render": "^4.1.3-alpha.0",
|
||||
"gatsby": "^2.19.45",
|
||||
"gatsby-image": "^2.2.8",
|
||||
"gatsby-image": "^2.4.3",
|
||||
"gatsby-plugin-alias-imports": "^1.0.5",
|
||||
"gatsby-plugin-better-jss": "^1.0.3",
|
||||
"gatsby-plugin-manifest": "^2.3.2",
|
||||
@ -18,10 +18,10 @@
|
||||
"gatsby-plugin-purescript": "^2.0.0",
|
||||
"gatsby-plugin-react-helmet": "^3.1.3",
|
||||
"gatsby-plugin-react-svg": "^3.0.0",
|
||||
"gatsby-plugin-sharp": "^2.5.2",
|
||||
"gatsby-plugin-sharp": "^2.6.3",
|
||||
"gatsby-plugin-web-font-loader": "^1.0.4",
|
||||
"gatsby-source-filesystem": "^2.1.8",
|
||||
"gatsby-transformer-sharp": "^2.4.2",
|
||||
"gatsby-transformer-sharp": "^2.5.2",
|
||||
"mdx-utils": "^0.2.0",
|
||||
"monaco-editor": "^0.20.0",
|
||||
"monaco-editor-webpack-plugin": "^1.8.2",
|
||||
|
@ -1 +0,0 @@
|
||||
../packages.dhall
|
218
blog/packages.dhall
Normal file
@ -0,0 +1,218 @@
|
||||
{-
|
||||
Welcome to your new Dhall package-set!
|
||||
|
||||
Below are instructions for how to edit this file for most use
|
||||
cases, so that you don't need to know Dhall to use it.
|
||||
|
||||
## Warning: Don't Move This Top-Level Comment!
|
||||
|
||||
Due to how `dhall format` currently works, this comment's
|
||||
instructions cannot appear near corresponding sections below
|
||||
because `dhall format` will delete the comment. However,
|
||||
it will not delete a top-level comment like this one.
|
||||
|
||||
## Use Cases
|
||||
|
||||
Most will want to do one or both of these options:
|
||||
1. Override/Patch a package's dependency
|
||||
2. Add a package not already in the default package set
|
||||
|
||||
This file will continue to work whether you use one or both options.
|
||||
Instructions for each option are explained below.
|
||||
|
||||
### Overriding/Patching a package
|
||||
|
||||
Purpose:
|
||||
- Change a package's dependency to a newer/older release than the
|
||||
default package set's release
|
||||
- Use your own modified version of some dependency that may
|
||||
include new API, changed API, removed API by
|
||||
using your custom git repo of the library rather than
|
||||
the package set's repo
|
||||
|
||||
Syntax:
|
||||
Replace the overrides' "{=}" (an empty record) with the following idea
|
||||
The "//" or "⫽" means "merge these two records and
|
||||
when they have the same value, use the one on the right:"
|
||||
-------------------------------
|
||||
let override =
|
||||
{ packageName =
|
||||
upstream.packageName // { updateEntity1 = "new value", updateEntity2 = "new value" }
|
||||
, packageName =
|
||||
upstream.packageName // { version = "v4.0.0" }
|
||||
, packageName =
|
||||
upstream.packageName // { repo = "https://www.example.com/path/to/new/repo.git" }
|
||||
}
|
||||
-------------------------------
|
||||
|
||||
Example:
|
||||
-------------------------------
|
||||
let overrides =
|
||||
{ halogen =
|
||||
upstream.halogen // { version = "master" }
|
||||
, halogen-vdom =
|
||||
upstream.halogen-vdom // { version = "v4.0.0" }
|
||||
}
|
||||
-------------------------------
|
||||
|
||||
### Additions
|
||||
|
||||
Purpose:
|
||||
- Add packages that aren't already included in the default package set
|
||||
|
||||
Syntax:
|
||||
Replace the additions' "{=}" (an empty record) with the following idea:
|
||||
-------------------------------
|
||||
let additions =
|
||||
{ "package-name" =
|
||||
{ dependencies =
|
||||
[ "dependency1"
|
||||
, "dependency2"
|
||||
]
|
||||
, repo =
|
||||
"https://example.com/path/to/git/repo.git"
|
||||
, version =
|
||||
"tag ('v4.0.0') or branch ('master')"
|
||||
}
|
||||
, "package-name" =
|
||||
{ dependencies =
|
||||
[ "dependency1"
|
||||
, "dependency2"
|
||||
]
|
||||
, repo =
|
||||
"https://example.com/path/to/git/repo.git"
|
||||
, version =
|
||||
"tag ('v4.0.0') or branch ('master')"
|
||||
}
|
||||
, etc.
|
||||
}
|
||||
-------------------------------
|
||||
|
||||
Example:
|
||||
-------------------------------
|
||||
let additions =
|
||||
{ benchotron =
|
||||
{ dependencies =
|
||||
[ "arrays"
|
||||
, "exists"
|
||||
, "profunctor"
|
||||
, "strings"
|
||||
, "quickcheck"
|
||||
, "lcg"
|
||||
, "transformers"
|
||||
, "foldable-traversable"
|
||||
, "exceptions"
|
||||
, "node-fs"
|
||||
, "node-buffer"
|
||||
, "node-readline"
|
||||
, "datetime"
|
||||
, "now"
|
||||
],
|
||||
, repo =
|
||||
"https://github.com/hdgarrood/purescript-benchotron.git"
|
||||
, version =
|
||||
"v7.0.0"
|
||||
}
|
||||
}
|
||||
-------------------------------
|
||||
-}
|
||||
|
||||
|
||||
let upstream =
|
||||
https://github.com/purescript/package-sets/releases/download/psc-0.13.6-20200309/packages.dhall sha256:9221987b4e7ea99ccd0efbe056f7bebc872cd92e0058efe5baa181d73359e7b3
|
||||
|
||||
let overrides =
|
||||
{ react-basic-hooks =
|
||||
upstream.react-basic-hooks
|
||||
⫽ { repo =
|
||||
"https://github.com/i-am-the-slime/purescript-react-basic-hooks.git"
|
||||
, version = "e04b106ab2dfda3f9a1407420c434a908ff72b90"
|
||||
}
|
||||
, css =
|
||||
upstream.css
|
||||
⫽ { repo = "https://github.com/i-am-the-slime/purescript-css.git"
|
||||
, version = "8ea0bab17c268d9c62a09892d7ba231dcbe6308b"
|
||||
}
|
||||
}
|
||||
|
||||
let additions =
|
||||
{ react-testing-library =
|
||||
{ dependencies =
|
||||
[ "aff-promise"
|
||||
, "console"
|
||||
, "debug"
|
||||
, "effect"
|
||||
, "foreign"
|
||||
, "foreign-object"
|
||||
, "psci-support"
|
||||
, "react-basic-hooks"
|
||||
, "remotedata"
|
||||
, "run"
|
||||
, "simple-json"
|
||||
, "spec"
|
||||
, "spec-discovery"
|
||||
]
|
||||
, repo =
|
||||
"https://github.com/i-am-the-slime/purescript-react-testing-library.git"
|
||||
, version = "13a63056506a3ce32572e326130be325931ba7c0"
|
||||
}
|
||||
, pseudo-random =
|
||||
{ dependencies =
|
||||
[ "prelude", "console", "effect", "lcg", "arrays", "st" ]
|
||||
, repo = "https://github.com/opyapeus/purescript-pseudo-random.git"
|
||||
, version = "7715e8a2c096c480a093a5e0a6df1ece4df5ed2a"
|
||||
}
|
||||
, oneof =
|
||||
{ dependencies =
|
||||
[ "assert"
|
||||
, "console"
|
||||
, "effect"
|
||||
, "foreign"
|
||||
, "foreign-object"
|
||||
, "literal"
|
||||
, "maybe"
|
||||
, "newtype"
|
||||
, "proxy"
|
||||
, "psci-support"
|
||||
, "tuples"
|
||||
, "unsafe-coerce"
|
||||
]
|
||||
, repo = "https://github.com/jvliwanag/purescript-oneof.git"
|
||||
, version = "0325fddf6ee8a181fac2128c9b542c2c01ddd361"
|
||||
}
|
||||
, literal =
|
||||
{ dependencies =
|
||||
[ "assert"
|
||||
, "effect"
|
||||
, "console"
|
||||
, "integers"
|
||||
, "numbers"
|
||||
, "partial"
|
||||
, "psci-support"
|
||||
, "unsafe-coerce"
|
||||
, "typelevel-prelude"
|
||||
]
|
||||
, repo = "https://github.com/jvliwanag/purescript-literal.git"
|
||||
, version = "7b2ae20f77c67b7e419a92fdd0dc7a09b447b18e"
|
||||
}
|
||||
, justifill =
|
||||
{ dependencies = [ "record", "typelevel-prelude" ]
|
||||
, repo = "https://github.com/i-am-the-slime/purescript-justifill.git"
|
||||
, version = "2de06260ae8e37355678198180bbdd06c91457e3"
|
||||
}
|
||||
, matryoshka =
|
||||
{ dependencies =
|
||||
[ "prelude", "fixed-points", "free", "transformers", "profunctor" ]
|
||||
, repo = "https://github.com/slamdata/purescript-matryoshka.git"
|
||||
, version = "caaca2d836d52159ba7963333996286a00428394"
|
||||
}
|
||||
, interpolate =
|
||||
{ dependencies = [ "prelude" ]
|
||||
, repo =
|
||||
"https://github.com/jordanmartinez/purescript-interpolate.git"
|
||||
, version = "v2.0.1"
|
||||
}
|
||||
, yoga-components = ../components/spago.dhall as Location
|
||||
}
|
||||
|
||||
in upstream ⫽ overrides ⫽ additions
|
@ -2,8 +2,9 @@
|
||||
Welcome to a Spago project!
|
||||
You can edit this file as you like.
|
||||
-}
|
||||
{ name = "my-project"
|
||||
, dependencies = [ "console", "effect", "psci-support", "yoga-components" ]
|
||||
{ name = "ry-blog"
|
||||
, dependencies =
|
||||
[ "console", "effect", "psci-support", "yoga-components" ]
|
||||
, packages = ./packages.dhall
|
||||
, sources = [ "src/**/*.purs", "test/**/*.purs" ]
|
||||
}
|
||||
|
@ -1,7 +1,6 @@
|
||||
module PSLayout where
|
||||
|
||||
import Prelude
|
||||
|
||||
import Data.Array (foldMap, intercalate)
|
||||
import Data.Array as Array
|
||||
import Data.Array.NonEmpty as NEA
|
||||
@ -14,7 +13,6 @@ import Data.Nullable as Nullable
|
||||
import Data.String as String
|
||||
import Data.Traversable (mapAccumL)
|
||||
import Data.Tuple.Nested ((/\))
|
||||
import Debug.Trace (spy)
|
||||
import Effect (Effect)
|
||||
import Effect.Aff (launchAff_)
|
||||
import Effect.Class (liftEffect)
|
||||
@ -22,7 +20,7 @@ import JSS (jssClasses)
|
||||
import Justifill (justifill)
|
||||
import Milkis.Impl (FetchImpl)
|
||||
import React.Basic (JSX, ReactComponent, fragment)
|
||||
import React.Basic.DOM (unsafeCreateDOMComponent)
|
||||
import React.Basic.DOM (css, unsafeCreateDOMComponent)
|
||||
import React.Basic.DOM as R
|
||||
import React.Basic.Helpers (jsx)
|
||||
import React.Basic.Hooks (ReactChildren, component, componentWithChildren, element, memo, reactChildrenToArray, useReducer, useState)
|
||||
@ -32,52 +30,52 @@ import Unsafe.Coerce (unsafeCoerce)
|
||||
import Yoga.Box.Component as Box
|
||||
import Yoga.ClickAway.Component as ClickAway
|
||||
import Yoga.CloseIcon.Component as CloseIcon
|
||||
import Yoga.Cluster.Component as Cluster
|
||||
import Yoga.CompileEditor.Component (mkCompileEditor)
|
||||
import Yoga.Compiler.Api (apiCompiler)
|
||||
import Yoga.Compiler.Types (Compiler)
|
||||
import Yoga.Cover.Component as Cover
|
||||
import Yoga.FillInTheGaps.Component as FillInTheGaps
|
||||
import Yoga.FillInTheGaps.Logic (findResult, parseSegments, toCode)
|
||||
import Yoga.Header.Component (mkHeader)
|
||||
import Yoga.Helpers ((?||))
|
||||
import Yoga.Imposter.Component as Imposter
|
||||
import Yoga.InlineCode.Component as InlineCode
|
||||
import Yoga.Modal.Component as Modal
|
||||
import Yoga.Theme (fromTheme)
|
||||
import Yoga.Theme.CSSBaseline (mkCssBaseline)
|
||||
import Yoga.Theme.Default (darkTheme)
|
||||
import Yoga.Theme.Default as Default
|
||||
import Yoga.Theme.Provider (mkThemeProvider)
|
||||
import Yoga.Theme.Styles (makeStylesJSS)
|
||||
import Yoga.Theme.Types (CSSTheme)
|
||||
import Yoga.Typography.Header (HeadingLevel(..), mkH)
|
||||
import Yoga.Typography.Paragraph (mkP)
|
||||
import Yoga.WithSidebar.Component (makeComponent) as WithSidebar
|
||||
|
||||
type SiteQueryResult
|
||||
= { site ∷
|
||||
{ siteMetadata ∷
|
||||
{ title ∷ String
|
||||
, menuLinks ∷ Array { name ∷ String, link ∷ String }
|
||||
}
|
||||
type SiteQueryResult =
|
||||
{ siteMetadata ∷
|
||||
{ title ∷ String
|
||||
, menuLinks ∷ Array { name ∷ String, link ∷ String }
|
||||
}
|
||||
}
|
||||
|
||||
type PreProps =
|
||||
{ children ∷
|
||||
Nullable
|
||||
{ props ∷
|
||||
Nullable
|
||||
{ mdxType ∷ Nullable String
|
||||
, children ∷ Nullable String
|
||||
, className ∷ Nullable String
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
type PreProps
|
||||
= { children ∷
|
||||
Nullable
|
||||
{ props ∷
|
||||
Nullable
|
||||
{ mdxType ∷ Nullable String
|
||||
, children ∷ Nullable String
|
||||
, className ∷ Nullable String
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
data ShowModal
|
||||
= ShowModal Modal.Props
|
||||
| HideModal
|
||||
|
||||
mkLayout ∷
|
||||
∀ r.
|
||||
FetchImpl ->
|
||||
Effect
|
||||
( ReactComponent
|
||||
@ -88,10 +86,13 @@ mkLayout ∷
|
||||
mkLayout fetchImpl = do
|
||||
themeProvider <- mkThemeProvider
|
||||
modal <- memo Modal.makeComponent
|
||||
imposter <- memo Imposter.makeComponent
|
||||
cover <- memo Cover.makeComponent
|
||||
cluster <- memo Cluster.makeComponent
|
||||
clickAway <- memo ClickAway.makeComponent
|
||||
mdxProviderComponent <- memo $ mkMdxProviderComponent (apiCompiler fetchImpl)
|
||||
componentWithChildren "MDXLayout" \{ children, siteInfo } -> React.do
|
||||
maybeModalProps /\ dispatch <-
|
||||
(maybeModalProps ∷ Maybe Modal.Props) /\ dispatch <-
|
||||
useReducer Nothing case _, _ of
|
||||
_, ShowModal props -> Just props
|
||||
_, HideModal -> Nothing
|
||||
@ -99,20 +100,23 @@ mkLayout fetchImpl = do
|
||||
$ element themeProvider
|
||||
{ theme: fromTheme darkTheme
|
||||
, children:
|
||||
[ R.div_
|
||||
[ maybeModalProps
|
||||
# foldMap \modalProps ->
|
||||
fragment
|
||||
[ element clickAway { allowEscape: Just true, onClick: dispatch HideModal, style: Nothing }
|
||||
, element modal (justifill modalProps)
|
||||
]
|
||||
, element mdxProviderComponent
|
||||
{ children
|
||||
, siteInfo
|
||||
, showModal: dispatch <<< ShowModal
|
||||
, hideModal: dispatch HideModal
|
||||
}
|
||||
]
|
||||
[ R.div
|
||||
{ style: css { maxWidth: "none" }
|
||||
, children:
|
||||
[ maybeModalProps
|
||||
# foldMap \modalProps ->
|
||||
fragment
|
||||
[ element clickAway { allowEscape: Just true, onClick: dispatch HideModal, style: Nothing }
|
||||
, element modal (justifill modalProps)
|
||||
]
|
||||
, element mdxProviderComponent
|
||||
{ children
|
||||
, siteInfo
|
||||
, showModal: dispatch <<< ShowModal
|
||||
, hideModal: dispatch HideModal
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@ -123,22 +127,18 @@ isQuiz a =
|
||||
&& ((unsafeCoerce a).props.children.props.mdxType == "code")
|
||||
&& ((unsafeCoerce a).props.children.props.children # parseSegments # isJust)
|
||||
|
||||
mkMdxProviderComponent ∷
|
||||
∀ r.
|
||||
{ | Compiler r } ->
|
||||
Effect
|
||||
( ReactComponent
|
||||
{ children ∷ ReactChildren JSX
|
||||
, siteInfo ∷ SiteQueryResult
|
||||
, showModal ∷ Modal.Props -> Effect Unit
|
||||
, hideModal :: Effect Unit
|
||||
}
|
||||
)
|
||||
type MdxProviderProps =
|
||||
{ children ∷ ReactChildren JSX
|
||||
, siteInfo ∷ SiteQueryResult
|
||||
, showModal ∷ Modal.Props -> Effect Unit
|
||||
, hideModal ∷ Effect Unit
|
||||
}
|
||||
|
||||
mkMdxProviderComponent ∷ ∀ r. { | Compiler r } -> Effect (ReactComponent MdxProviderProps)
|
||||
mkMdxProviderComponent compiler = do
|
||||
cssBaseline <- memo mkCssBaseline
|
||||
cssBaseline <- memo (mkCssBaseline Default.fontFaces)
|
||||
editor <- memo $ mkCompileEditor compiler
|
||||
box <- memo $ Box.makeComponent
|
||||
sidebar <- memo mkSidebar
|
||||
header <- memo mkHeader
|
||||
yogaInlineCode <- InlineCode.makeComponent
|
||||
quiz <- memo $ mkQuiz compiler
|
||||
@ -157,7 +157,7 @@ mkMdxProviderComponent compiler = do
|
||||
, borderRadius: "3px"
|
||||
}
|
||||
}
|
||||
componentWithChildren "MDXProviderComponent" \{ children, siteInfo, showModal, hideModal } -> React.do
|
||||
componentWithChildren "MDXProviderComponent" \({ children, siteInfo, showModal, hideModal } ∷ MdxProviderProps) -> React.do
|
||||
classes <- useStyles {}
|
||||
visibleUntil /\ updateVisible <- useState 1
|
||||
let
|
||||
@ -167,28 +167,24 @@ mkMdxProviderComponent compiler = do
|
||||
{ title
|
||||
, icon: element closeIcon { onClick: hideModal, style: Nothing }
|
||||
, kids
|
||||
} ∷ Modal.Props
|
||||
} ∷
|
||||
Modal.Props
|
||||
)
|
||||
|
||||
onSuccess = updateVisible (_ + one)
|
||||
|
||||
mapVisible i kid =
|
||||
{ accum: i + if isQuiz kid then one else zero
|
||||
, value: guard (i < visibleUntil) (pure kid)
|
||||
}
|
||||
|
||||
visibleKids ∷ Array JSX
|
||||
visibleKids =
|
||||
reactChildrenToArray children
|
||||
# mapAccumL mapVisible zero
|
||||
# _.value
|
||||
# Array.catMaybes
|
||||
|
||||
siteInfoJSX =
|
||||
R.div
|
||||
{ children:
|
||||
[ jsx header { className: "" } [ R.text siteInfo.site.siteMetadata.title ]
|
||||
, element sidebar { links: siteInfo.site.siteMetadata.menuLinks }
|
||||
[ jsx header { className: "" } [ R.text siteInfo.siteMetadata.title ]
|
||||
, jsx box {} visibleKids
|
||||
]
|
||||
}
|
||||
@ -215,21 +211,13 @@ mkMdxProviderComponent compiler = do
|
||||
, pre:
|
||||
mkFn2 \(props ∷ PreProps) other -> do
|
||||
let
|
||||
|
||||
childrenQ = Nullable.toMaybe props.children
|
||||
|
||||
propsQ = (_.props >>> Nullable.toMaybe) =<< childrenQ
|
||||
|
||||
mdxTypeQ = (_.mdxType >>> Nullable.toMaybe) =<< propsQ
|
||||
|
||||
childrenQ2 = (_.children >>> Nullable.toMaybe) =<< propsQ
|
||||
|
||||
classNameQ = (_.className >>> Nullable.toMaybe) =<< propsQ
|
||||
|
||||
isCode = fromMaybe false (mdxTypeQ <#> eq "code")
|
||||
|
||||
codeQ = childrenQ2
|
||||
|
||||
height =
|
||||
(fromMaybe 200 >>> show >>> (_ <> "px")) do
|
||||
code <- codeQ
|
||||
@ -238,9 +226,7 @@ mkMdxProviderComponent compiler = do
|
||||
# Array.length
|
||||
# \x -> (x * 12) + 100
|
||||
)
|
||||
|
||||
language = fromMaybe "" (classNameQ >>= String.stripPrefix (String.Pattern "language-"))
|
||||
|
||||
segmentsQ = parseSegments (codeQ ?|| "")
|
||||
case isCode, language, segmentsQ of
|
||||
true, "purescript", Just initialSegments -> element quiz { initialSegments, onFailure, onSuccess }
|
||||
@ -271,21 +257,20 @@ mkQuiz compiler = do
|
||||
{ segments
|
||||
, incantate:
|
||||
launchAff_ do
|
||||
let
|
||||
code = toCode segments
|
||||
let code = toCode segments
|
||||
result <- compiler.compileAndRun { code }
|
||||
liftEffect case result of
|
||||
Right r
|
||||
| String.stripSuffix (String.Pattern "\n") r.stdout == (findResult $ join segments) -> do
|
||||
updateSolvedWith (const $ String.stripSuffix (String.Pattern "\n") r.stdout)
|
||||
onSuccess
|
||||
Right r | r.stdout /= "\n" -> onFailure "Oh shit!" [R.text r.stdout]
|
||||
Right r -> onFailure "Oh shit!" [R.text r.stderr]
|
||||
Left (cr :: CompileResult) -> onFailure "Oh shit!" [R.text (intercalate ", " (cr.result <#> _.message))]
|
||||
Right r
|
||||
| r.stdout /= "\n" -> onFailure "Oh shit!" [ R.text r.stdout ]
|
||||
Right r -> onFailure "Oh shit!" [ R.text r.stderr ]
|
||||
Left (cr ∷ CompileResult) -> onFailure "Oh shit!" [ R.text (intercalate ", " (cr.result <#> _.message)) ]
|
||||
, updateSegments:
|
||||
\update -> do
|
||||
let
|
||||
updated = update segments
|
||||
let updated = update segments
|
||||
case segments, updated of
|
||||
old, new
|
||||
| new == old -> mempty
|
||||
@ -294,22 +279,6 @@ mkQuiz compiler = do
|
||||
}
|
||||
]
|
||||
|
||||
mkSidebar = do
|
||||
withSidebar <- WithSidebar.makeComponent
|
||||
useStyles <-
|
||||
makeStylesJSS
|
||||
$ jssClasses \(theme ∷ CSSTheme) ->
|
||||
{}
|
||||
component "Sidebar" \{ links } -> React.do
|
||||
classes <- useStyles {}
|
||||
pure
|
||||
$ element withSidebar
|
||||
( justifill
|
||||
{ sidebarChildren: [ R.div_ [] ]
|
||||
, notSidebarChildren: [] ∷ Array JSX
|
||||
}
|
||||
)
|
||||
|
||||
foreign import mdxProvider ∷
|
||||
∀ r.
|
||||
ReactComponent
|
||||
|
@ -5,24 +5,31 @@ import { preToCodeBlock } from "mdx-utils";
|
||||
const psLayout = require("../../output/PSLayout/index.js"); // [FIXME] use the next line
|
||||
// const psLayout = require("./PSLayout.purs");
|
||||
const fetch = typeof window !== "undefined" && window.fetch;
|
||||
import Img from "gatsby-image";
|
||||
|
||||
const PSLayout = psLayout.mkLayout(fetch)();
|
||||
|
||||
const Layout = ({ children }) => {
|
||||
const siteInfo = useStaticQuery(graphql`
|
||||
query SiteTitleQuery {
|
||||
site {
|
||||
siteMetadata {
|
||||
title
|
||||
menuLinks {
|
||||
name
|
||||
link
|
||||
}
|
||||
const query = graphql`
|
||||
query {
|
||||
site {
|
||||
siteMetadata {
|
||||
title
|
||||
menuLinks {
|
||||
name
|
||||
link
|
||||
}
|
||||
}
|
||||
}
|
||||
`);
|
||||
return <PSLayout siteInfo={siteInfo}>{children}</PSLayout>;
|
||||
}
|
||||
`;
|
||||
|
||||
const Layout = ({ children }) => {
|
||||
const q = useStaticQuery(query);
|
||||
return (
|
||||
<PSLayout siteInfo={q.site}>
|
||||
{children}
|
||||
</PSLayout>
|
||||
);
|
||||
};
|
||||
|
||||
export default Layout;
|
||||
export default Layout;
|
||||
|
@ -13,10 +13,10 @@ import SEO from '../components/seo'
|
||||
module Main where
|
||||
import Grimoire
|
||||
|
||||
incantation :: Effect Unit
|
||||
incantation =
|
||||
main :: Effect Unit
|
||||
main =
|
||||
--start here
|
||||
cast "pocus"
|
||||
log "pocus"
|
||||
--end here
|
||||
```
|
||||
|
||||
@ -26,10 +26,10 @@ incantation =
|
||||
module Main where
|
||||
import Grimoire
|
||||
|
||||
incantation :: Effect Unit
|
||||
incantation =
|
||||
main :: Effect Unit
|
||||
main =
|
||||
--start here
|
||||
{-cast-} "kazam"
|
||||
{-log-} "kazam"
|
||||
--end here
|
||||
```
|
||||
|
||||
@ -39,10 +39,10 @@ incantation =
|
||||
module Main where
|
||||
import Grimoire
|
||||
|
||||
incantation :: Effect Unit
|
||||
incantation =
|
||||
main :: Effect Unit
|
||||
main =
|
||||
--start here
|
||||
{-cast-} "{-cadabra-}"
|
||||
{-log-} "{-cadabra-}"
|
||||
--end here
|
||||
```
|
||||
|
||||
@ -53,12 +53,12 @@ module Main where
|
||||
import Grimoire
|
||||
import Prelude (discard)
|
||||
|
||||
incantation :: Effect Unit
|
||||
incantation =
|
||||
main :: Effect Unit
|
||||
main =
|
||||
--start here
|
||||
do
|
||||
{-cast-} "{-abra-}"
|
||||
{-cast-} "{-cadabra-}"
|
||||
{-log-} "{-abra-}"
|
||||
{-log-} "{-cadabra-}"
|
||||
--end here
|
||||
```
|
||||
|
||||
|
@ -14,10 +14,10 @@ module Main where
|
||||
import Grimoire
|
||||
import Data.String (take)
|
||||
|
||||
incantation :: Effect Unit
|
||||
incantation =
|
||||
main :: Effect Unit
|
||||
main =
|
||||
--start here
|
||||
cast (take 4 "pocus")
|
||||
log (take 4 "pocus")
|
||||
--end here
|
||||
```
|
||||
|
||||
@ -29,10 +29,10 @@ module Main where
|
||||
import Grimoire
|
||||
import Data.String (take)
|
||||
|
||||
incantation :: Effect Unit
|
||||
incantation =
|
||||
main :: Effect Unit
|
||||
main =
|
||||
--start here
|
||||
{-cast-} (take 3 "pocus")
|
||||
{-log-} (take 3 "pocus")
|
||||
--end here
|
||||
```
|
||||
|
||||
@ -44,10 +44,10 @@ module Main where
|
||||
import Grimoire
|
||||
import Data.String (take)
|
||||
|
||||
incantation :: Effect Unit
|
||||
incantation =
|
||||
main :: Effect Unit
|
||||
main =
|
||||
--start here
|
||||
cast (take {-1-} "pocus")
|
||||
log (take {-1-} "pocus")
|
||||
--end here
|
||||
```
|
||||
|
||||
@ -58,10 +58,10 @@ module Main where
|
||||
import Grimoire
|
||||
import Data.String (take)
|
||||
|
||||
incantation :: Effect Unit
|
||||
incantation =
|
||||
main :: Effect Unit
|
||||
main =
|
||||
--start here
|
||||
{-cast-} ({-take-} 200 "pocus")
|
||||
{-log-} ({-take-} 200 "pocus")
|
||||
--end here
|
||||
```
|
||||
|
||||
@ -72,10 +72,10 @@ module Main where
|
||||
import Grimoire
|
||||
import Data.String (take)
|
||||
|
||||
incantation :: Effect Unit
|
||||
incantation =
|
||||
main :: Effect Unit
|
||||
main =
|
||||
--start here
|
||||
{-cast-} ({-take-} 5 "cadabra")
|
||||
{-log-} ({-take-} 5 "cadabra")
|
||||
--end here
|
||||
```
|
||||
|
||||
@ -86,10 +86,10 @@ module Main where
|
||||
import Grimoire
|
||||
import Data.String (take)
|
||||
|
||||
incantation :: Effect Unit
|
||||
incantation =
|
||||
main :: Effect Unit
|
||||
main =
|
||||
--start here
|
||||
cast (take {-4-} "echo")
|
||||
log (take {-4-} "echo")
|
||||
--end here
|
||||
```
|
||||
|
||||
@ -100,10 +100,10 @@ module Main where
|
||||
import Grimoire
|
||||
import Data.String (take)
|
||||
|
||||
incantation :: Effect Unit
|
||||
incantation =
|
||||
main :: Effect Unit
|
||||
main =
|
||||
--start here
|
||||
cast (take {-0-} "noise")
|
||||
log (take {-0-} "noise")
|
||||
--end here
|
||||
```
|
||||
|
||||
|
@ -1,6 +1,5 @@
|
||||
@font-face {
|
||||
font-family: "Rubik";
|
||||
src: url("Rubik-Regular.woff2") format("woff2");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
@import url('https://rsms.me/inter/inter.css');
|
||||
html { font-family: 'Inter', sans-serif; }
|
||||
@supports (font-variation-settings: normal) {
|
||||
html { font-family: 'Inter var', sans-serif; }
|
||||
}
|
@ -1 +0,0 @@
|
||||
../assets/
|
BIN
client/assets/fonts/PragmataProLiga-Regular.woff
Normal file
BIN
client/assets/fonts/PragmataProLiga-Regular.woff2
Normal file
BIN
client/assets/fonts/Rubik-Medium.woff2
Normal file
BIN
client/assets/fonts/Rubik-MediumItalic.woff2
Normal file
BIN
client/assets/fonts/VictorMonoPureScript-Bold.woff2
Normal file
BIN
client/assets/fonts/VictorMonoPureScript-BoldItalic.woff2
Normal file
BIN
client/assets/fonts/VictorMonoPureScript-Medium.woff2
Normal file
BIN
client/assets/fonts/VictorMonoPureScript-MediumItalic.woff2
Normal file
BIN
client/assets/fonts/VictorMonoPureScript-SemiBold.woff2
Normal file
BIN
client/assets/fonts/VictorMonoPureScript-SemiBoldItalic.woff2
Normal file
6
client/assets/fonts/fonts.css
Normal file
@ -0,0 +1,6 @@
|
||||
@font-face {
|
||||
font-family: "Rubik";
|
||||
src: url("Rubik-Regular.woff2") format("woff2");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
BIN
client/assets/icons/1x/Element 1.png
Normal file
After Width: | Height: | Size: 28 KiB |
BIN
client/assets/icons/200w/Element 1.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
client/assets/icons/400w/Element 1.png
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
client/assets/icons/400w/Zeichenfläche 1.png
Normal file
After Width: | Height: | Size: 37 KiB |
BIN
client/assets/icons/800w/Zeichenfläche 1.png
Normal file
After Width: | Height: | Size: 81 KiB |
1101
client/assets/icons/LogoHead.ai
Normal file
1
client/assets/icons/alternative.svg
Normal file
@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"><rect id="Artboard1" x="0" y="0" width="100" height="100" style="fill:none;"/><g id="Artboard11" serif:id="Artboard1"><g id="Alternative"><path d="M83.506,45.907l-15.824,-15.832l-4.268,4.269l13.688,13.696l-13.688,13.695l4.268,4.268l15.824,-15.826c0.57,-0.573 0.885,-1.332 0.885,-2.139c-0.002,-0.807 -0.315,-1.563 -0.885,-2.131" style="fill-rule:nonzero;"/><path d="M36.924,34.346l-4.27,-4.27l-15.83,15.829c-0.568,0.568 -0.882,1.328 -0.88,2.134c0,0.807 0.312,1.565 0.88,2.133l15.83,15.83l4.27,-4.267l-13.695,-13.696l13.695,-13.693Z" style="fill-rule:nonzero;"/><path d="M53.013,18.146c0,-0.714 -0.579,-1.294 -1.293,-1.294l-2.588,0c-0.714,0 -1.294,0.58 -1.294,1.294l0,59.785c0,0.714 0.58,1.294 1.294,1.294l2.588,0c0.714,0 1.293,-0.58 1.293,-1.294l0,-59.785Z" style=""/></g></g></svg>
|
After Width: | Height: | Size: 1.2 KiB |
1
client/assets/icons/ap.svg
Normal file
@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"><rect id="Artboard1" x="0" y="0" width="100" height="100" style="fill:none;"/><g id="Artboard11" serif:id="Artboard1"><g><g id="Ap"><g><path d="M90.506,47.156l-15.824,-15.832l-4.268,4.269l13.688,13.696l-13.688,13.695l4.268,4.268l15.824,-15.826c0.57,-0.573 0.885,-1.332 0.885,-2.139c-0.002,-0.807 -0.315,-1.563 -0.885,-2.131" style="fill-rule:nonzero;"/></g><path d="M29.924,35.595l-4.27,-4.27l-15.83,15.829c-0.568,0.568 -0.882,1.328 -0.88,2.134c0,0.807 0.312,1.565 0.88,2.133l15.83,15.83l4.27,-4.267l-13.695,-13.696l13.695,-13.693Z" style="fill-rule:nonzero;"/><path d="M47.276,31.405c0.168,-1.47 1.413,-2.58 2.893,-2.58c1.48,0 2.724,1.11 2.893,2.58l1.124,9.784l9.653,-1.954c1.451,-0.294 2.891,0.547 3.348,1.954c0.457,1.408 -0.214,2.934 -1.56,3.549l-8.958,4.093l4.842,8.576c0.727,1.289 0.373,2.918 -0.824,3.788c-1.198,0.87 -2.857,0.704 -3.858,-0.386l-6.66,-7.255l-6.661,7.255c-1,1.09 -2.66,1.256 -3.857,0.386c-1.197,-0.87 -1.552,-2.499 -0.824,-3.788l4.842,-8.576l-8.958,-4.093c-1.347,-0.615 -2.017,-2.141 -1.56,-3.549c0.457,-1.407 1.897,-2.248 3.348,-1.954l9.653,1.954l1.124,-9.784Z" style=""/></g></g></g></svg>
|
After Width: | Height: | Size: 1.5 KiB |
1
client/assets/icons/append.svg
Normal file
@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"><rect id="Artboard1" x="0" y="0" width="100" height="100" style="fill:none;"/><g id="Artboard11" serif:id="Artboard1"><g><g id="append"><g><path d="M77.506,45.907l-15.824,-15.832l-4.268,4.269l13.688,13.696l-13.688,13.695l4.268,4.268l15.824,-15.826c0.57,-0.573 0.885,-1.332 0.885,-2.139c-0.002,-0.807 -0.315,-1.563 -0.885,-2.131" style="fill-rule:nonzero;"/></g><path d="M42.924,34.346l-4.27,-4.27l-15.83,15.829c-0.568,0.568 -0.882,1.328 -0.88,2.134c0,0.807 0.312,1.565 0.88,2.133l15.83,15.83l4.27,-4.267l-13.695,-13.696l13.695,-13.693Z" style="fill-rule:nonzero;"/></g></g></g></svg>
|
After Width: | Height: | Size: 1.0 KiB |
1
client/assets/icons/apply.svg
Normal file
@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.5;"><rect id="Artboard1" x="0" y="0" width="100" height="100" style="fill:none;"/><g id="Artboard11" serif:id="Artboard1"><g><g id="Apply"><g><path d="M37.344,58.583c0,5.756 5.739,10.422 12.819,10.422c7.075,0 12.818,-4.67 12.818,-10.422c0,-5.754 -5.733,-10.418 -12.807,-10.423l-0.013,0.002c-7.074,-0.005 -12.808,-4.67 -12.808,-10.423c0,-5.752 5.744,-10.423 12.819,-10.423c7.079,0 12.819,4.667 12.819,10.423" style="fill:none;stroke:#fff;stroke-width:6px;"/><path d="M53.012,18.146c0,-0.714 -0.58,-1.294 -1.294,-1.294l-2.588,0c-0.714,0 -1.293,0.58 -1.293,1.294l0,59.785c0,0.714 0.579,1.294 1.293,1.294l2.588,0c0.714,0 1.294,-0.58 1.294,-1.294l0,-59.785Z" style=""/></g></g></g></g></svg>
|
After Width: | Height: | Size: 1.1 KiB |
1
client/assets/icons/applyflipped.svg
Normal file
@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"><rect id="Artboard1" x="0" y="0" width="100" height="100" style="fill:none;"/><g id="Artboard11" serif:id="Artboard1"><g><g id="Map-Flipped" serif:id="Map Flipped"><path d="M48.556,27.619c0.113,-0.67 -0.34,-1.214 -1.01,-1.214l-2.429,0c-0.67,0 -1.306,0.544 -1.419,1.214l-6.89,40.839c-0.113,0.67 0.339,1.214 1.009,1.214l2.429,0c0.67,0 1.306,-0.544 1.419,-1.214l6.891,-40.839Z" style=""/><path d="M62.429,27.619c0.113,-0.67 -0.339,-1.214 -1.009,-1.214l-2.429,0c-0.67,0 -1.306,0.544 -1.419,1.214l-6.89,40.839c-0.113,0.67 0.339,1.214 1.009,1.214l2.429,0c0.67,0 1.306,-0.544 1.419,-1.214l6.89,-40.839Z" style=""/><path d="M67.974,43.53c0.69,0 1.341,-0.544 1.454,-1.214l0.41,-2.429c0.113,-0.67 -0.355,-1.214 -1.044,-1.214l-35.19,0c-0.69,0 -1.341,0.544 -1.454,1.214l-0.41,2.429c-0.113,0.67 0.355,1.214 1.044,1.214l35.19,0Z" style=""/><path d="M65.633,57.404c0.69,0 1.341,-0.544 1.454,-1.214l0.41,-2.429c0.113,-0.67 -0.355,-1.214 -1.044,-1.214l-35.19,0c-0.689,0 -1.341,0.544 -1.454,1.214l-0.41,2.429c-0.113,0.67 0.355,1.214 1.044,1.214l35.19,0Z" style=""/></g></g></g></svg>
|
After Width: | Height: | Size: 1.5 KiB |
1
client/assets/icons/bind.svg
Normal file
@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"><rect id="Artboard1" x="0" y="0" width="100" height="100" style="fill:none;"/><g id="Artboard11" serif:id="Artboard1"><g><g id="bind"><g><path d="M53.177,45.907l-15.824,-15.832l-4.268,4.269l13.688,13.696l-13.688,13.695l4.268,4.268l15.824,-15.826c0.57,-0.573 0.885,-1.332 0.885,-2.139c-0.002,-0.807 -0.315,-1.563 -0.885,-2.131" style="fill-rule:nonzero;"/></g><path d="M15.615,34.346l4.27,-4.27l15.83,15.829c0.568,0.568 0.882,1.328 0.88,2.134c0,0.807 -0.312,1.565 -0.88,2.133l-15.83,15.83l-4.27,-4.267l13.695,-13.696l-13.695,-13.693Z" style="fill-rule:nonzero;"/><path d="M59.808,43.694l24.911,0l0,-6.262l-31.146,0" style=""/><path d="M59.808,52.432l24.911,0l0,6.262l-31.146,0" style=""/></g></g></g></svg>
|
After Width: | Height: | Size: 1.1 KiB |
1
client/assets/icons/compose.svg
Normal file
@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"><rect id="Artboard1" x="0" y="0" width="100" height="100" style="fill:none;"/><g id="Artboard11" serif:id="Artboard1"><g><g id="compose"><g><path d="M21.829,45.907l15.824,-15.832l4.268,4.269l-13.688,13.696l13.688,13.695l-4.268,4.268l-15.824,-15.826c-0.57,-0.573 -0.885,-1.332 -0.885,-2.139c0.002,-0.807 0.315,-1.563 0.885,-2.131" style="fill-rule:nonzero;"/></g><path d="M79.391,34.346l-4.27,-4.27l-15.83,15.829c-0.568,0.568 -0.882,1.328 -0.88,2.134c0,0.807 0.312,1.565 0.88,2.133l15.83,15.83l4.27,-4.267l-13.695,-13.696l13.695,-13.693Z" style="fill-rule:nonzero;"/><path d="M60.656,34.346l-4.27,-4.27l-15.83,15.829c-0.568,0.568 -0.882,1.328 -0.88,2.134c0,0.807 0.312,1.565 0.88,2.133l15.83,15.83l4.27,-4.267l-13.695,-13.696l13.695,-13.693Z" style="fill-rule:nonzero;"/></g></g></g></svg>
|
After Width: | Height: | Size: 1.2 KiB |
1
client/assets/icons/composeflipped.svg
Normal file
@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"><rect id="Artboard1" x="0" y="0" width="100" height="100" style="fill:none;"/><clipPath id="_clip1"><rect id="Artboard11" serif:id="Artboard1" x="0" y="0" width="100" height="100"/></clipPath><g clip-path="url(#_clip1)"><rect id="Background" x="-0.264" y="0.156" width="100.061" height="99.786" style="fill:#1e223f;"/><g id="kleisli"><g><path d="M79.506,47.808l-15.824,-15.832l-4.268,4.269l13.688,13.696l-13.688,13.695l4.268,4.268l15.824,-15.826c0.57,-0.573 0.885,-1.332 0.885,-2.139c-0.002,-0.807 -0.315,-1.563 -0.885,-2.131" style="fill-rule:nonzero;"/></g><path d="M21.944,36.247l4.27,-4.27l15.83,15.829c0.568,0.568 0.882,1.328 0.88,2.134c0,0.807 -0.312,1.565 -0.88,2.133l-15.83,15.83l-4.27,-4.267l13.695,-13.696l-13.695,-13.693Z" style="fill-rule:nonzero;"/><path d="M40.679,36.247l4.27,-4.27l15.83,15.829c0.568,0.568 0.882,1.328 0.88,2.134c0,0.807 -0.312,1.565 -0.88,2.133l-15.83,15.83l-4.27,-4.267l13.695,-13.696l-13.695,-13.693Z" style="fill-rule:nonzero;"/></g></g></svg>
|
After Width: | Height: | Size: 1.4 KiB |
BIN
client/assets/icons/elements.afdesign
Normal file
37
client/assets/icons/example.html
Normal file
@ -0,0 +1,37 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Document</title>
|
||||
<script src="https://unpkg.com/spiritjs/dist/spirit.js"></script>
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg
|
||||
width="400px"
|
||||
height="400px"
|
||||
viewBox="0 0 39 34"
|
||||
version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xml:space="preserve"
|
||||
xmlns:serif="http://www.serif.com/"
|
||||
style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"
|
||||
>
|
||||
<g transform="matrix(1,0,0,1,15.6853,16.2316)">
|
||||
<path d="M3.379,6.769L9.165,16.789L-2.406,16.789L3.379,6.769Z" />
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,15.6853,16.2316)">
|
||||
<path
|
||||
d="M-3.26,-4.732L0.493,1.768L-8.179,16.789L-15.685,16.789L-3.26,-4.732Z"
|
||||
/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,15.6853,16.2316)">
|
||||
<path
|
||||
d="M-0.373,-9.732L3.379,-16.231L22.444,16.789L14.938,16.789L-0.373,-9.732Z"
|
||||
/>
|
||||
</g>
|
||||
</svg>
|
||||
</head>
|
||||
<body></body>
|
||||
</html>
|
1
client/assets/icons/forall.svg
Normal file
@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"><rect id="Artboard1" x="0" y="0" width="100" height="100" style="fill:none;"/><g id="Artboard11" serif:id="Artboard1"><g><g id="forall"><path d="M29.639,24.185l6.269,0l5.743,15.779l17.032,0l5.743,-15.779l6.27,0l-17.363,47.707l-6.331,0l-17.363,-47.707Zm13.872,20.89l6.656,18.287l6.656,-18.287l-13.312,0Z" style=""/></g></g></g></svg>
|
After Width: | Height: | Size: 775 B |
1
client/assets/icons/kleisli.svg
Normal file
@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"><rect id="Artboard1" x="0" y="0" width="100" height="100" style="fill:none;"/><g id="Artboard11" serif:id="Artboard1"><g><g id="kleisli"><g><path d="M86.006,45.907l-15.824,-15.832l-4.268,4.269l13.688,13.696l-13.688,13.695l4.268,4.268l15.824,-15.826c0.57,-0.573 0.885,-1.332 0.885,-2.139c-0.002,-0.807 -0.315,-1.563 -0.885,-2.131" style="fill-rule:nonzero;"/></g><path d="M13.444,34.346l4.27,-4.27l15.83,15.829c0.568,0.568 0.882,1.328 0.88,2.134c0,0.807 -0.312,1.565 -0.88,2.133l-15.83,15.83l-4.27,-4.267l13.695,-13.696l-13.695,-13.693Z" style="fill-rule:nonzero;"/><path d="M38.637,43.694l30.063,-0.014l-6.152,-6.248l-30.146,0" style=""/><path d="M38.637,52.432l30.063,0l-6.152,6.262l-30.146,0" style=""/></g></g></g></svg>
|
After Width: | Height: | Size: 1.1 KiB |
1
client/assets/icons/landingpagedark.svg
Normal file
After Width: | Height: | Size: 31 KiB |
1
client/assets/icons/landingpagelight.svg
Normal file
After Width: | Height: | Size: 31 KiB |
BIN
client/assets/icons/logo.png
Normal file
After Width: | Height: | Size: 9.0 KiB |
1
client/assets/icons/lovelogo.svg
Normal file
@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 101 72" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"><rect id="Artboard1" x="0" y="0" width="100.651" height="71.235" style="fill:none;"/><g id="Icon"><path d="M96.414,22.222l-18.005,-18.014l-4.857,4.857l15.576,15.585l-15.576,15.582l4.857,4.856l18.005,-18.007c0.649,-0.652 1.007,-1.516 1.007,-2.434c-0.003,-0.918 -0.358,-1.778 -1.007,-2.425" style="fill:#ccffd6;fill-rule:nonzero;"/><path d="M50.441,13.651c7.364,-7.356 19.315,-7.354 26.677,0.007c7.361,7.362 7.363,19.313 0.007,26.677l0.007,0.007l-26.684,26.684l-26.684,-26.684c-7.364,-7.363 -7.364,-19.32 0,-26.684c7.361,-7.361 19.312,-7.363 26.677,-0.007Z" style="fill:#c47dff;"/><path d="M27.102,26.276l-4.859,-4.858l-18.012,18.01c-0.647,0.647 -1.004,1.511 -1.002,2.428c0,0.919 0.355,1.781 1.002,2.428l18.012,18.012l4.859,-4.856l-15.583,-15.584l15.583,-15.58Z" style="fill:#ccffd6;fill-rule:nonzero;"/></g></svg>
|
After Width: | Height: | Size: 1.2 KiB |
1
client/assets/icons/map.svg
Normal file
@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"><rect id="Artboard1" x="0" y="0" width="100" height="100" style="fill:none;"/><g id="Artboard11" serif:id="Artboard1"><g id="Map"><path d="M90.506,45.907l-15.824,-15.832l-4.268,4.269l13.688,13.696l-13.688,13.695l4.268,4.268l15.824,-15.826c0.57,-0.573 0.885,-1.332 0.885,-2.139c-0.002,-0.807 -0.315,-1.563 -0.885,-2.131" style="fill-rule:nonzero;"/><path d="M29.924,34.346l-4.27,-4.27l-15.83,15.829c-0.568,0.568 -0.882,1.328 -0.88,2.134c0,0.807 0.312,1.565 0.88,2.133l15.83,15.83l4.27,-4.267l-13.695,-13.696l13.695,-13.693Z" style="fill-rule:nonzero;"/><path d="M51.304,22.848c0.484,0 0.878,0.393 0.878,0.878l0,4.969c5.339,0.735 10.415,4.272 10.951,10.001c0.027,0.289 0.039,0.579 0.041,0.869l-4.931,0.039c-0.023,-2.934 -2.79,-5.107 -6.061,-5.828l0,12.109c1.468,0.218 3.352,0.65 4.937,1.5c4.967,2.661 7.895,9.181 4.515,14.545c-1.991,3.157 -5.6,5.051 -9.452,5.574l0,4.847c0,0.485 -0.394,0.878 -0.878,0.878l-1.756,0c-0.485,0 -0.878,-0.393 -0.878,-0.878l0,-4.75c-4.77,-0.384 -9.281,-2.894 -10.969,-7.726c-0.351,-1.007 -0.529,-2.071 -0.537,-3.139l4.931,-0.039c0.024,3.085 3.085,5.33 6.575,5.927l0,-12.096c-0.618,-0.06 -1.308,-0.154 -1.945,-0.301c-5.207,-1.206 -10.046,-5.836 -9.512,-11.531c0.5,-5.342 5.647,-9.416 11.457,-10.055l0,-4.915c0,-0.485 0.393,-0.878 0.878,-0.878l1.756,0Zm0.878,27.969l0,11.83c2.136,-0.357 4.109,-1.432 5.32,-3.411c0.745,-1.22 0.945,-2.758 0.448,-4.118c-0.852,-2.328 -3.189,-3.791 -5.768,-4.301Zm-3.512,-17.235c-2.331,0.263 -4.527,1.346 -5.834,3.483c-0.745,1.22 -0.945,2.758 -0.448,4.118c0.908,2.482 3.504,3.981 6.282,4.389l0,-11.99Z" style=""/></g></g></svg>
|
After Width: | Height: | Size: 2.0 KiB |
1
client/assets/icons/mapflipped.svg
Normal file
@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"><rect id="Artboard1" x="0" y="0" width="100" height="100" style="fill:none;"/><g id="Artboard11" serif:id="Artboard1"><g><g id="Map-Flipped" serif:id="Map Flipped"><g><path d="M90.506,47.151l-15.824,-15.832l-4.268,4.269l13.688,13.696l-13.688,13.695l4.268,4.268l15.824,-15.826c0.57,-0.573 0.885,-1.332 0.885,-2.139c-0.002,-0.807 -0.315,-1.563 -0.885,-2.131" style="fill-rule:nonzero;"/></g><path d="M29.924,35.59l-4.27,-4.27l-15.83,15.829c-0.568,0.568 -0.882,1.328 -0.88,2.134c0,0.807 0.312,1.565 0.88,2.133l15.83,15.83l4.27,-4.267l-13.695,-13.696l13.695,-13.693Z" style="fill-rule:nonzero;"/><path d="M48.556,27.619c0.113,-0.67 -0.34,-1.214 -1.01,-1.214l-2.429,0c-0.67,0 -1.306,0.544 -1.419,1.214l-6.89,40.839c-0.113,0.67 0.339,1.214 1.009,1.214l2.429,0c0.67,0 1.306,-0.544 1.419,-1.214l6.891,-40.839Z" style=""/><path d="M62.429,27.619c0.113,-0.67 -0.339,-1.214 -1.009,-1.214l-2.429,0c-0.67,0 -1.306,0.544 -1.419,1.214l-6.89,40.839c-0.113,0.67 0.339,1.214 1.009,1.214l2.429,0c0.67,0 1.306,-0.544 1.419,-1.214l6.89,-40.839Z" style=""/><path d="M67.974,43.53c0.69,0 1.341,-0.544 1.454,-1.214l0.41,-2.429c0.113,-0.67 -0.355,-1.214 -1.044,-1.214l-35.19,0c-0.69,0 -1.341,0.544 -1.454,1.214l-0.41,2.429c-0.113,0.67 0.355,1.214 1.044,1.214l35.19,0Z" style=""/><path d="M65.633,57.404c0.69,0 1.341,-0.544 1.454,-1.214l0.41,-2.429c0.113,-0.67 -0.355,-1.214 -1.044,-1.214l-35.19,0c-0.689,0 -1.341,0.544 -1.454,1.214l-0.41,2.429c-0.113,0.67 0.355,1.214 1.044,1.214l35.19,0Z" style=""/></g></g></g></svg>
|
After Width: | Height: | Size: 1.9 KiB |
1
client/assets/icons/menu.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 100 100" fill-rule="nonzero" stroke-linejoin="round" stroke-miterlimit="2"><path d="M28.72 46.524l8.94.26-7.843 7.388h40.97l-7.87 6.732H29.753l7.64 7.302-8.76.267-10.928-10.88 11.013-11.07zM17.493 57.806l.213-.213-.213.213z" fill="#fafafa"/><path d="M71.3 53.472l-8.94-.26 7.843-7.388H29.4l7.723-6.732h33.163l-7.64-7.302 8.758-.267 10.93 10.88L71.3 53.472zM82.536 42.2l-.213.213.213-.213z" fill="#fff" fill-opacity=".14"/></svg>
|
After Width: | Height: | Size: 508 B |
28
client/assets/icons/play.svg
Normal file
@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="90px" height="90px" viewBox="0 0 90 90" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 62 (91390) - https://sketch.com -->
|
||||
<title>Play</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs>
|
||||
<linearGradient x1="0%" y1="0%" x2="100%" y2="100%" id="linearGradient-1">
|
||||
<stop stop-color="#413F4E" stop-opacity="0.5" offset="0%"></stop>
|
||||
<stop stop-color="#101215" offset="100%"></stop>
|
||||
</linearGradient>
|
||||
<linearGradient x1="0%" y1="0%" x2="100%" y2="100%" id="linearGradient-2">
|
||||
<stop stop-color="#EF5BFF" offset="0%"></stop>
|
||||
<stop stop-color="#DB2FFF" offset="100%"></stop>
|
||||
</linearGradient>
|
||||
<linearGradient x1="10.8727811%" y1="0%" x2="89.1272189%" y2="100%" id="linearGradient-3">
|
||||
<stop stop-color="#EF5BFF" offset="0%"></stop>
|
||||
<stop stop-color="#DB2FFF" offset="100%"></stop>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<rect id="Background" fill="#1F2228" x="-1064" y="-666" width="1600" height="2000"></rect>
|
||||
<rect id="Rectangle" fill="#14161A" x="-650" y="-28" width="888" height="549" rx="36"></rect>
|
||||
<g id="Play" stroke-width="3">
|
||||
<circle id="Oval" stroke="url(#linearGradient-2)" fill="url(#linearGradient-1)" cx="45" cy="45" r="43.5"></circle>
|
||||
<polygon id="Path" stroke="url(#linearGradient-3)" points="37 32 37 58 60 45"></polygon>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.6 KiB |
3
client/assets/icons/pslogo.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>
|
||||
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" version="1.1" viewBox="0 0 100 100" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><g fill-rule="nonzero"><path d="m69.418 69.64l-7.256-6.775h-31.862l7.256 6.775h31.862z"/><path d="m37.556 45.889l-7.256 6.775h31.863l7.255-6.775h-31.862z"/><path d="m69.416 35.686l-7.254-6.777h-31.86l7.254 6.777h31.86z"/><path d="m26.948 42.391l-4.794-4.793-17.772 17.77c-0.638 0.638-0.99 1.491-0.988 2.396 0 0.906 0.35 1.757 0.988 2.395l17.772 17.772 4.794-4.791-15.375-15.376 15.375-15.373z"/><path d="m95.336 38.392l-17.765-17.774-4.792 4.792 15.368 15.377-15.368 15.374 4.792 4.792 17.765-17.767c0.64-0.644 0.994-1.496 0.994-2.402-3e-3 -0.906-0.354-1.754-0.994-2.392"/></g></svg>
|
After Width: | Height: | Size: 907 B |
1
client/assets/icons/trianglelogo.svg
Normal file
@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 39 34" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"><path d="M0,33.021l12.425,-21.521l3.753,6.5l-8.672,15.021l-7.506,0Zm24.85,0l-11.571,0l5.785,-10.021l5.786,10.021Zm13.279,0l-7.506,0l-15.311,-26.521l3.752,-6.5l19.065,33.021Z"/></svg>
|
After Width: | Height: | Size: 586 B |
BIN
client/assets/icons/trianglelogo2.afdesign
Normal file
13
client/assets/icons/trianglelogo2.svg
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg width="100%" height="100%" viewBox="0 0 39 34" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||
<g transform="matrix(1,0,0,1,15.6853,16.2316)">
|
||||
<path d="M3.379,6.769L9.165,16.789L-2.406,16.789L3.379,6.769Z"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,15.6853,16.2316)">
|
||||
<path d="M-3.26,-4.732L0.493,1.768L-8.179,16.789L-15.685,16.789L-3.26,-4.732Z"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,15.6853,16.2316)">
|
||||
<path d="M-0.373,-9.732L3.379,-16.231L22.444,16.789L14.938,16.789L-0.373,-9.732Z"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 887 B |
6
client/assets/icons/x-mark.svg
Normal file
@ -0,0 +1,6 @@
|
||||
<svg width="100%" height="50%" viewBox="0 0 123 123" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||
<g id="x-mark">
|
||||
<path d="M101.703,36.06c2.054,-2.054 2.054,-5.388 0,-7.442l-7.441,-7.441c-2.054,-2.054 -5.388,-2.054 -7.442,0l-65.643,65.643c-2.054,2.054 -2.054,5.388 0,7.442l7.441,7.441c2.054,2.054 5.388,2.054 7.442,0l65.643,-65.643Z" style="fill:#02001e;" />
|
||||
<path d="M86.82,101.703c2.054,2.054 5.388,2.054 7.442,0l7.441,-7.441c2.054,-2.054 2.054,-5.388 0,-7.442l-65.643,-65.643c-2.054,-2.054 -5.388,-2.054 -7.442,0l-7.441,7.441c-2.054,2.054 -2.054,5.388 0,7.442l65.643,65.643Z" style="fill:#02001e;" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 795 B |
1
client/assets/images/landingpagedark.svg
Normal file
After Width: | Height: | Size: 31 KiB |
1
client/assets/images/landingpagelight.svg
Normal file
After Width: | Height: | Size: 30 KiB |
@ -1 +0,0 @@
|
||||
../packages.dhall
|
218
client/packages.dhall
Normal file
@ -0,0 +1,218 @@
|
||||
{-
|
||||
Welcome to your new Dhall package-set!
|
||||
|
||||
Below are instructions for how to edit this file for most use
|
||||
cases, so that you don't need to know Dhall to use it.
|
||||
|
||||
## Warning: Don't Move This Top-Level Comment!
|
||||
|
||||
Due to how `dhall format` currently works, this comment's
|
||||
instructions cannot appear near corresponding sections below
|
||||
because `dhall format` will delete the comment. However,
|
||||
it will not delete a top-level comment like this one.
|
||||
|
||||
## Use Cases
|
||||
|
||||
Most will want to do one or both of these options:
|
||||
1. Override/Patch a package's dependency
|
||||
2. Add a package not already in the default package set
|
||||
|
||||
This file will continue to work whether you use one or both options.
|
||||
Instructions for each option are explained below.
|
||||
|
||||
### Overriding/Patching a package
|
||||
|
||||
Purpose:
|
||||
- Change a package's dependency to a newer/older release than the
|
||||
default package set's release
|
||||
- Use your own modified version of some dependency that may
|
||||
include new API, changed API, removed API by
|
||||
using your custom git repo of the library rather than
|
||||
the package set's repo
|
||||
|
||||
Syntax:
|
||||
Replace the overrides' "{=}" (an empty record) with the following idea
|
||||
The "//" or "⫽" means "merge these two records and
|
||||
when they have the same value, use the one on the right:"
|
||||
-------------------------------
|
||||
let override =
|
||||
{ packageName =
|
||||
upstream.packageName // { updateEntity1 = "new value", updateEntity2 = "new value" }
|
||||
, packageName =
|
||||
upstream.packageName // { version = "v4.0.0" }
|
||||
, packageName =
|
||||
upstream.packageName // { repo = "https://www.example.com/path/to/new/repo.git" }
|
||||
}
|
||||
-------------------------------
|
||||
|
||||
Example:
|
||||
-------------------------------
|
||||
let overrides =
|
||||
{ halogen =
|
||||
upstream.halogen // { version = "master" }
|
||||
, halogen-vdom =
|
||||
upstream.halogen-vdom // { version = "v4.0.0" }
|
||||
}
|
||||
-------------------------------
|
||||
|
||||
### Additions
|
||||
|
||||
Purpose:
|
||||
- Add packages that aren't already included in the default package set
|
||||
|
||||
Syntax:
|
||||
Replace the additions' "{=}" (an empty record) with the following idea:
|
||||
-------------------------------
|
||||
let additions =
|
||||
{ "package-name" =
|
||||
{ dependencies =
|
||||
[ "dependency1"
|
||||
, "dependency2"
|
||||
]
|
||||
, repo =
|
||||
"https://example.com/path/to/git/repo.git"
|
||||
, version =
|
||||
"tag ('v4.0.0') or branch ('master')"
|
||||
}
|
||||
, "package-name" =
|
||||
{ dependencies =
|
||||
[ "dependency1"
|
||||
, "dependency2"
|
||||
]
|
||||
, repo =
|
||||
"https://example.com/path/to/git/repo.git"
|
||||
, version =
|
||||
"tag ('v4.0.0') or branch ('master')"
|
||||
}
|
||||
, etc.
|
||||
}
|
||||
-------------------------------
|
||||
|
||||
Example:
|
||||
-------------------------------
|
||||
let additions =
|
||||
{ benchotron =
|
||||
{ dependencies =
|
||||
[ "arrays"
|
||||
, "exists"
|
||||
, "profunctor"
|
||||
, "strings"
|
||||
, "quickcheck"
|
||||
, "lcg"
|
||||
, "transformers"
|
||||
, "foldable-traversable"
|
||||
, "exceptions"
|
||||
, "node-fs"
|
||||
, "node-buffer"
|
||||
, "node-readline"
|
||||
, "datetime"
|
||||
, "now"
|
||||
],
|
||||
, repo =
|
||||
"https://github.com/hdgarrood/purescript-benchotron.git"
|
||||
, version =
|
||||
"v7.0.0"
|
||||
}
|
||||
}
|
||||
-------------------------------
|
||||
-}
|
||||
|
||||
|
||||
let upstream =
|
||||
https://github.com/purescript/package-sets/releases/download/psc-0.13.6-20200309/packages.dhall sha256:9221987b4e7ea99ccd0efbe056f7bebc872cd92e0058efe5baa181d73359e7b3
|
||||
|
||||
let overrides =
|
||||
{ react-basic-hooks =
|
||||
upstream.react-basic-hooks
|
||||
⫽ { repo =
|
||||
"https://github.com/i-am-the-slime/purescript-react-basic-hooks.git"
|
||||
, version = "e04b106ab2dfda3f9a1407420c434a908ff72b90"
|
||||
}
|
||||
, css =
|
||||
upstream.css
|
||||
⫽ { repo = "https://github.com/i-am-the-slime/purescript-css.git"
|
||||
, version = "8ea0bab17c268d9c62a09892d7ba231dcbe6308b"
|
||||
}
|
||||
}
|
||||
|
||||
let additions =
|
||||
{ react-testing-library =
|
||||
{ dependencies =
|
||||
[ "aff-promise"
|
||||
, "console"
|
||||
, "debug"
|
||||
, "effect"
|
||||
, "foreign"
|
||||
, "foreign-object"
|
||||
, "psci-support"
|
||||
, "react-basic-hooks"
|
||||
, "remotedata"
|
||||
, "run"
|
||||
, "simple-json"
|
||||
, "spec"
|
||||
, "spec-discovery"
|
||||
]
|
||||
, repo =
|
||||
"https://github.com/i-am-the-slime/purescript-react-testing-library.git"
|
||||
, version = "13a63056506a3ce32572e326130be325931ba7c0"
|
||||
}
|
||||
, pseudo-random =
|
||||
{ dependencies =
|
||||
[ "prelude", "console", "effect", "lcg", "arrays", "st" ]
|
||||
, repo = "https://github.com/opyapeus/purescript-pseudo-random.git"
|
||||
, version = "7715e8a2c096c480a093a5e0a6df1ece4df5ed2a"
|
||||
}
|
||||
, oneof =
|
||||
{ dependencies =
|
||||
[ "assert"
|
||||
, "console"
|
||||
, "effect"
|
||||
, "foreign"
|
||||
, "foreign-object"
|
||||
, "literal"
|
||||
, "maybe"
|
||||
, "newtype"
|
||||
, "proxy"
|
||||
, "psci-support"
|
||||
, "tuples"
|
||||
, "unsafe-coerce"
|
||||
]
|
||||
, repo = "https://github.com/jvliwanag/purescript-oneof.git"
|
||||
, version = "0325fddf6ee8a181fac2128c9b542c2c01ddd361"
|
||||
}
|
||||
, literal =
|
||||
{ dependencies =
|
||||
[ "assert"
|
||||
, "effect"
|
||||
, "console"
|
||||
, "integers"
|
||||
, "numbers"
|
||||
, "partial"
|
||||
, "psci-support"
|
||||
, "unsafe-coerce"
|
||||
, "typelevel-prelude"
|
||||
]
|
||||
, repo = "https://github.com/jvliwanag/purescript-literal.git"
|
||||
, version = "7b2ae20f77c67b7e419a92fdd0dc7a09b447b18e"
|
||||
}
|
||||
, justifill =
|
||||
{ dependencies = [ "record", "typelevel-prelude" ]
|
||||
, repo = "https://github.com/i-am-the-slime/purescript-justifill.git"
|
||||
, version = "2de06260ae8e37355678198180bbdd06c91457e3"
|
||||
}
|
||||
, matryoshka =
|
||||
{ dependencies =
|
||||
[ "prelude", "fixed-points", "free", "transformers", "profunctor" ]
|
||||
, repo = "https://github.com/slamdata/purescript-matryoshka.git"
|
||||
, version = "caaca2d836d52159ba7963333996286a00428394"
|
||||
}
|
||||
, interpolate =
|
||||
{ dependencies = [ "prelude" ]
|
||||
, repo =
|
||||
"https://github.com/jordanmartinez/purescript-interpolate.git"
|
||||
, version = "v2.0.1"
|
||||
}
|
||||
, yoga-components = ../components/spago.dhall as Location
|
||||
}
|
||||
|
||||
in upstream ⫽ overrides ⫽ additions
|
@ -1,14 +1,17 @@
|
||||
import { configure, forceReRender } from "@storybook/react";
|
||||
import { configure } from "@storybook/react";
|
||||
|
||||
const localStories = require.context("../src/", true, /Stories\.purs$/);
|
||||
|
||||
function loadStories() {
|
||||
localStories.keys().forEach(filename => {
|
||||
localStories(filename).stories();
|
||||
localStories.keys().forEach((filename) => {
|
||||
localStories(filename).stories(
|
||||
require.cache["./src" + filename.substr(1)]
|
||||
)();
|
||||
});
|
||||
}
|
||||
|
||||
configure(loadStories, module);
|
||||
|
||||
if (module.hot) {
|
||||
forceReRender();
|
||||
module.hot.accept(() => configure(loadStories, module));
|
||||
}
|
||||
|
3
components/.vscode/settings.json
vendored
@ -1,6 +1,7 @@
|
||||
{
|
||||
"editor.formatOnSave": true,
|
||||
"purescript.buildCommand": "npx spago build --purs-args '--json-errors'",
|
||||
"purescript.addNpmPath": true,
|
||||
"purescript.buildCommand": "npx spago build --purs-args --json-errors",
|
||||
"search.exclude": {
|
||||
"**/.history": true
|
||||
},
|
||||
|
@ -1 +0,0 @@
|
||||
../assets/
|
BIN
components/assets/fonts/PragmataProLiga-Regular.woff
Normal file
BIN
components/assets/fonts/PragmataProLiga-Regular.woff2
Normal file
BIN
components/assets/fonts/Rubik-Bold.woff2
Normal file
BIN
components/assets/fonts/Rubik-BoldItalic.woff2
Normal file
BIN
components/assets/fonts/Rubik-Italic.woff2
Normal file
BIN
components/assets/fonts/Rubik-Light.woff2
Normal file
BIN
components/assets/fonts/Rubik-LightItalic.woff2
Normal file
BIN
components/assets/fonts/Rubik-Medium.woff2
Normal file
BIN
components/assets/fonts/Rubik-MediumItalic.woff2
Normal file
BIN
components/assets/fonts/Rubik-Regular.woff2
Normal file
BIN
components/assets/fonts/VictorMonoPureScript-Bold.woff2
Normal file
BIN
components/assets/fonts/VictorMonoPureScript-BoldItalic.woff2
Normal file
BIN
components/assets/fonts/VictorMonoPureScript-Medium.woff2
Normal file
BIN
components/assets/fonts/VictorMonoPureScript-MediumItalic.woff2
Normal file
BIN
components/assets/fonts/VictorMonoPureScript-SemiBold.woff2
Normal file
6
components/assets/fonts/fonts.css
Normal file
@ -0,0 +1,6 @@
|
||||
@font-face {
|
||||
font-family: "Rubik";
|
||||
src: url("Rubik-Regular.woff2") format("woff2");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
BIN
components/assets/icons/1x/Element 1.png
Normal file
After Width: | Height: | Size: 28 KiB |
BIN
components/assets/icons/200w/Element 1.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
components/assets/icons/400w/Element 1.png
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
components/assets/icons/400w/Zeichenfläche 1.png
Normal file
After Width: | Height: | Size: 37 KiB |
BIN
components/assets/icons/800w/Zeichenfläche 1.png
Normal file
After Width: | Height: | Size: 81 KiB |
1101
components/assets/icons/LogoHead.ai
Normal file
1
components/assets/icons/alternative.svg
Normal file
@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"><rect id="Artboard1" x="0" y="0" width="100" height="100" style="fill:none;"/><g id="Artboard11" serif:id="Artboard1"><g id="Alternative"><path d="M83.506,45.907l-15.824,-15.832l-4.268,4.269l13.688,13.696l-13.688,13.695l4.268,4.268l15.824,-15.826c0.57,-0.573 0.885,-1.332 0.885,-2.139c-0.002,-0.807 -0.315,-1.563 -0.885,-2.131" style="fill-rule:nonzero;"/><path d="M36.924,34.346l-4.27,-4.27l-15.83,15.829c-0.568,0.568 -0.882,1.328 -0.88,2.134c0,0.807 0.312,1.565 0.88,2.133l15.83,15.83l4.27,-4.267l-13.695,-13.696l13.695,-13.693Z" style="fill-rule:nonzero;"/><path d="M53.013,18.146c0,-0.714 -0.579,-1.294 -1.293,-1.294l-2.588,0c-0.714,0 -1.294,0.58 -1.294,1.294l0,59.785c0,0.714 0.58,1.294 1.294,1.294l2.588,0c0.714,0 1.293,-0.58 1.293,-1.294l0,-59.785Z" style=""/></g></g></svg>
|
After Width: | Height: | Size: 1.2 KiB |
1
components/assets/icons/ap.svg
Normal file
@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"><rect id="Artboard1" x="0" y="0" width="100" height="100" style="fill:none;"/><g id="Artboard11" serif:id="Artboard1"><g><g id="Ap"><g><path d="M90.506,47.156l-15.824,-15.832l-4.268,4.269l13.688,13.696l-13.688,13.695l4.268,4.268l15.824,-15.826c0.57,-0.573 0.885,-1.332 0.885,-2.139c-0.002,-0.807 -0.315,-1.563 -0.885,-2.131" style="fill-rule:nonzero;"/></g><path d="M29.924,35.595l-4.27,-4.27l-15.83,15.829c-0.568,0.568 -0.882,1.328 -0.88,2.134c0,0.807 0.312,1.565 0.88,2.133l15.83,15.83l4.27,-4.267l-13.695,-13.696l13.695,-13.693Z" style="fill-rule:nonzero;"/><path d="M47.276,31.405c0.168,-1.47 1.413,-2.58 2.893,-2.58c1.48,0 2.724,1.11 2.893,2.58l1.124,9.784l9.653,-1.954c1.451,-0.294 2.891,0.547 3.348,1.954c0.457,1.408 -0.214,2.934 -1.56,3.549l-8.958,4.093l4.842,8.576c0.727,1.289 0.373,2.918 -0.824,3.788c-1.198,0.87 -2.857,0.704 -3.858,-0.386l-6.66,-7.255l-6.661,7.255c-1,1.09 -2.66,1.256 -3.857,0.386c-1.197,-0.87 -1.552,-2.499 -0.824,-3.788l4.842,-8.576l-8.958,-4.093c-1.347,-0.615 -2.017,-2.141 -1.56,-3.549c0.457,-1.407 1.897,-2.248 3.348,-1.954l9.653,1.954l1.124,-9.784Z" style=""/></g></g></g></svg>
|
After Width: | Height: | Size: 1.5 KiB |
1
components/assets/icons/append.svg
Normal file
@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"><rect id="Artboard1" x="0" y="0" width="100" height="100" style="fill:none;"/><g id="Artboard11" serif:id="Artboard1"><g><g id="append"><g><path d="M77.506,45.907l-15.824,-15.832l-4.268,4.269l13.688,13.696l-13.688,13.695l4.268,4.268l15.824,-15.826c0.57,-0.573 0.885,-1.332 0.885,-2.139c-0.002,-0.807 -0.315,-1.563 -0.885,-2.131" style="fill-rule:nonzero;"/></g><path d="M42.924,34.346l-4.27,-4.27l-15.83,15.829c-0.568,0.568 -0.882,1.328 -0.88,2.134c0,0.807 0.312,1.565 0.88,2.133l15.83,15.83l4.27,-4.267l-13.695,-13.696l13.695,-13.693Z" style="fill-rule:nonzero;"/></g></g></g></svg>
|
After Width: | Height: | Size: 1.0 KiB |