Skip to content

Example App

Here is a little example app within src of Vite App.

js
import './style.css'
import { App, body } from "noctes.jsx"
import AppComponent from './App.jsx'

const app = new App(
  body(AppComponent, { msg: "World" })
)

app.render()
jsx
import { ref } from 'noctes.jsx'

export default {
  methods: {
    toggleSecret(e) {
      this.showSecret.value = !this.showSecret.value
    }
  },

  onCreated(ctx) {
    ctx.showSecret = ref(false)
  },

  render(ctx, props) {
    return (<>
      <div>Hello: ${props.msg}</div>
      <button onClick={ctx.toggleSecret}>
        ${ ctx.showSecret.value ? 'Hide' : 'Show' } Secret
      </button>
      { ctx.showSecret.value ? <div>Secret Message! Shh!</div> : null }
    </>)
  }
}
css
:root {
  font-family: system-ui, Avenir, Helvetica, Arial, sans-serif;
  line-height: 1.5;
  font-weight: 400;

  color-scheme: light dark;
  color: rgba(255, 255, 255, 0.87);
  background-color: #242424;

  font-synthesis: none;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

body {
  margin: 0;
  display: flex;
  height: 100vh;
  width: 100vw;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}

button {
  border-radius: 8px;
  border: 1px solid transparent;
  padding: 0.6em 1.2em;
  font-size: 1em;
  font-weight: 500;
  font-family: inherit;
  background-color: #1a1a1a;
  cursor: pointer;
  transition: border-color 0.25s;
}

button:hover {
  border-color: #646cff;
}

button:focus,
button:focus-visible {
  outline: 4px auto -webkit-focus-ring-color;
}

@media (prefers-color-scheme: light) {
  :root {
    color: #213547;
    background-color: #ffffff;
  }

  button {
    background-color: #f9f9f9;
  }
}