diff --git a/.vscode/launch.json b/.vscode/launch.json
new file mode 100644
index 0000000..7bc18a4
--- /dev/null
+++ b/.vscode/launch.json
@@ -0,0 +1,18 @@
+// A launch configuration that launches the extension inside a new window
+// Use IntelliSense to learn about possible attributes.
+// Hover to view descriptions of existing attributes.
+// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
+{
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "name": "Extension",
+ "type": "extensionHost",
+ "request": "launch",
+ "runtimeExecutable": "${execPath}",
+ "args": [
+ "--extensionDevelopmentPath=${workspaceFolder}"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/.vscodeignore b/.vscodeignore
new file mode 100644
index 0000000..f369b5e
--- /dev/null
+++ b/.vscodeignore
@@ -0,0 +1,4 @@
+.vscode/**
+.vscode-test/**
+.gitignore
+vsc-extension-quickstart.md
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..9091301
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,16 @@
+# Changelog
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [Unreleased]
+
+🍍
+
+## [0.0.1] - 2020-02-02 🤯
+
+### Added
+
+- Initial release of the Kabukichō theme!
+- Custom CSS file for optional glow effect.
+- Demo folder with many syntax examples.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..5c09216
--- /dev/null
+++ b/README.md
@@ -0,0 +1,46 @@
+# Kabukichō Theme for Visual Studio Code
+
+
+
+A techno-neon, autorobotic, VHS-degradaded, superatomic-AI color theme for Visual Studio Code. Of course those are real words. Whatever, man. You can't stop the signal.
+
+
+Font in the screenshot is [JetBrains Mono](https://www.jetbrains.com/lp/mono/).
+
+## Installation
+
+Open VS Code, then launch Quick Open (`Ctrl+P`). Paste in `ext install victoriadrake.kabukicho` and press enter.
+
+Alternatively, clone this repository into your VS Code extensions folder ([where is that?](https://code.visualstudio.com/docs/editor/extension-gallery#_where-are-extensions-installed)), then restart VS Code.
+
+To activate the wave, use the keyboard shortcut `Ctrl+K Ctrl+T` or select **File** > **Preferences** > **Color Theme** and choose **Kabukichō**.
+
+Optionally, activate the custom CSS for a Robot-Restaurant-style party session:
+
+1. Install the [Custom CSS and JS Loader](https://marketplace.visualstudio.com/items?itemName=be5invis.vscode-custom-css) extension.
+
+2. Tell Custom CSS and JS Loader to use the CSS file included with this theme by adding an import line to your VS Code `settings.json` file:
+
+```json
+{
+ "vscode_custom_css.imports": [
+ "file://FULL/PATH/lights-on.css"
+ ]
+}
+```
+
+Use the correct full path to the CSS file in your VS Code extensions directory, or wherever you choose to store it in your filesystem.
+
+3. From the command palette (`Ctrl + Shift + P` or `Shift + ⌘ + P`), select **Reload Custom CSS and JS**. You can also **Disable** and **Enable** the custom CSS from here.
+
+Though it's very `A` `E` `S` `T` `H` `E` `T` `I` `C`, the fun glow effect can strain your eyes and isn't meant for long coding sessions. Also, the custom CSS injector has its downsides. Be sure you [read and understand](https://github.com/be5invis/vscode-custom-css/blob/master/README.md) what's involved.
+
+## Origins and Thanks
+
+This theme began as a let's-be-reasonable-now fork of @webrender's [synthwave-x-fluoromachine](https://github.com/webrender/synthwave-x-fluoromachine) theme, which was forked from @robbowen's [Synthwave '84 theme](https://marketplace.visualstudio.com/items?itemName=RobbOwen.synthwave-vscode) and merged with @fullerenedream's [Fluoromachine](https://colorsublime.github.io/themes/FluoroMachine/) Sublime Text theme.
+
+The `tokenColors` definitions are heavily borrowed from [Noctis](https://github.com/liviuschera/noctis), with which @liviuschera is doing excellent work.
+
+The very nostalgic glow stylesheet originates with @robbowen.
+
+Most of the `demos/` are from [Night Owl](https://github.com/sdras/night-owl-vscode-theme) and the clever how-to article by @sdras, [Creating a VS Code Theme](https://css-tricks.com/creating-a-vs-code-theme/).
diff --git a/banner.png b/banner.png
new file mode 100644
index 0000000..11591da
Binary files /dev/null and b/banner.png differ
diff --git a/demos/.editorconfig b/demos/.editorconfig
new file mode 100644
index 0000000..a119f4d
--- /dev/null
+++ b/demos/.editorconfig
@@ -0,0 +1,14 @@
+# http://editorconfig.org
+root = true
+
+[*]
+charset = utf-8
+end_of_line = lf
+indent_size = 2
+indent_style = space
+insert_final_newline = true
+trim_trailing_whitespace = true
+
+[*.md]
+max_line_length = off
+trim_trailing_whitespace = false
diff --git a/demos/checkbox_with_label.test.js b/demos/checkbox_with_label.test.js
new file mode 100644
index 0000000..9e71630
--- /dev/null
+++ b/demos/checkbox_with_label.test.js
@@ -0,0 +1,22 @@
+import React from 'react';
+import ReactDOM from 'react-dom';
+import * as TestUtils from 'react-dom/test-utils';
+import CheckboxWithLabel from '../CheckboxWithLabel';
+
+it('CheckboxWithLabel changes the text after click', () => {
+ // Render a checkbox with label in the document
+ const checkbox = TestUtils.renderIntoDocument(
+
+ )
+
+ const checkboxNode = ReactDOM.findDOMNode(checkbox)
+
+ // Verify that it's Off by default
+ expect(checkboxNode.textContent).toEqual('Off')
+
+ // Simulate a click and verify that it is now On
+ TestUtils.Simulate.change(
+ TestUtils.findRenderedDOMComponentWithTag(checkbox, 'input')
+ )
+ expect(checkboxNode.textContent).toEqual('On')
+})
\ No newline at end of file
diff --git a/demos/clojure.clj b/demos/clojure.clj
new file mode 100644
index 0000000..d4da277
--- /dev/null
+++ b/demos/clojure.clj
@@ -0,0 +1,26 @@
+(ns hello.world.clojure)
+
+(defn sum [& numbers]
+ (if (empty? numbers)
+ 0
+ (reduce + 0 numbers)))
+
+(defn print-name [{:keys [first last age]}]
+ (println (str "Your name is " first " " last " and you are " age " years old.")))
+
+(defn set-age [person new-age]
+ (assoc person :age new-age))
+
+(defn hello-world []
+ (let [john {:first "John" :last "Smith" :age 65}
+ jack {:first "Jack" :last "Road" :age 76}
+ george {:first "George" :last "Way" :age 23}
+ george-junior (assoc george :age 6)
+ all-persons [john jack george george-junior]]
+
+ (doseq [person all-persons]
+ (print-name person))
+
+ (println (str "Total age is: " (apply sum (map :age all-persons))))))
+
+(hello-world)
diff --git a/demos/clojurescript.cljs b/demos/clojurescript.cljs
new file mode 100644
index 0000000..9aed834
--- /dev/null
+++ b/demos/clojurescript.cljs
@@ -0,0 +1,21 @@
+(ns hello.world.clojurescript
+ (:require [reagent.core :as r])
+
+(def counter (r/atom 0))
+(def text-component-style {:background-color :grey
+ :border "1px solid black"
+ :padding "5px"})
+
+(defn counter-clicked []
+ (.log js/console "You clicked the counter component.")
+ (swap! counter inc))
+
+(defn text-counter [text]
+ [:div {:on-click counter-clicked
+ :style text-component-style})
+ (str text @counter])
+
+(defn main-component []
+ [:div
+ [:p {:style {:color :red}} "Hello world! Click the element below:"]
+ [text-counter "Clicked: "]])
diff --git a/demos/cplusplus-header.h b/demos/cplusplus-header.h
new file mode 100644
index 0000000..e5f5c7d
--- /dev/null
+++ b/demos/cplusplus-header.h
@@ -0,0 +1,616 @@
+// Copyright 2012 the V8 project authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef V8_API_H_
+#define V8_API_H_
+
+#include "include/v8-testing.h"
+#include "src/contexts.h"
+#include "src/debug/debug-interface.h"
+#include "src/detachable-vector.h"
+#include "src/heap/factory.h"
+#include "src/isolate.h"
+#include "src/objects.h"
+#include "src/objects/bigint.h"
+#include "src/objects/js-collection.h"
+#include "src/objects/js-generator.h"
+#include "src/objects/js-promise.h"
+#include "src/objects/js-proxy.h"
+#include "src/objects/module.h"
+#include "src/objects/shared-function-info.h"
+
+#include "src/objects/templates.h"
+
+namespace v8 {
+
+// Constants used in the implementation of the API. The most natural thing
+// would usually be to place these with the classes that use them, but
+// we want to keep them out of v8.h because it is an externally
+// visible file.
+class Consts {
+ public:
+ enum TemplateType {
+ FUNCTION_TEMPLATE = 0,
+ OBJECT_TEMPLATE = 1
+ };
+};
+
+template
+inline T ToCData(v8::internal::Object* obj);
+
+template <>
+inline v8::internal::Address ToCData(v8::internal::Object* obj);
+
+template
+inline v8::internal::Handle FromCData(
+ v8::internal::Isolate* isolate, T obj);
+
+template <>
+inline v8::internal::Handle FromCData(
+ v8::internal::Isolate* isolate, v8::internal::Address obj);
+
+class ApiFunction {
+ public:
+ explicit ApiFunction(v8::internal::Address addr) : addr_(addr) { }
+ v8::internal::Address address() { return addr_; }
+ private:
+ v8::internal::Address addr_;
+};
+
+
+
+class RegisteredExtension {
+ public:
+ explicit RegisteredExtension(Extension* extension);
+ static void Register(RegisteredExtension* that);
+ static void UnregisterAll();
+ Extension* extension() { return extension_; }
+ RegisteredExtension* next() { return next_; }
+ static RegisteredExtension* first_extension() { return first_extension_; }
+ private:
+ Extension* extension_;
+ RegisteredExtension* next_;
+ static RegisteredExtension* first_extension_;
+};
+
+#define OPEN_HANDLE_LIST(V) \
+ V(Template, TemplateInfo) \
+ V(FunctionTemplate, FunctionTemplateInfo) \
+ V(ObjectTemplate, ObjectTemplateInfo) \
+ V(Signature, FunctionTemplateInfo) \
+ V(AccessorSignature, FunctionTemplateInfo) \
+ V(Data, Object) \
+ V(RegExp, JSRegExp) \
+ V(Object, JSReceiver) \
+ V(Array, JSArray) \
+ V(Map, JSMap) \
+ V(Set, JSSet) \
+ V(ArrayBuffer, JSArrayBuffer) \
+ V(ArrayBufferView, JSArrayBufferView) \
+ V(TypedArray, JSTypedArray) \
+ V(Uint8Array, JSTypedArray) \
+ V(Uint8ClampedArray, JSTypedArray) \
+ V(Int8Array, JSTypedArray) \
+ V(Uint16Array, JSTypedArray) \
+ V(Int16Array, JSTypedArray) \
+ V(Uint32Array, JSTypedArray) \
+ V(Int32Array, JSTypedArray) \
+ V(Float32Array, JSTypedArray) \
+ V(Float64Array, JSTypedArray) \
+ V(DataView, JSDataView) \
+ V(SharedArrayBuffer, JSArrayBuffer) \
+ V(Name, Name) \
+ V(String, String) \
+ V(Symbol, Symbol) \
+ V(Script, JSFunction) \
+ V(UnboundModuleScript, SharedFunctionInfo) \
+ V(UnboundScript, SharedFunctionInfo) \
+ V(Module, Module) \
+ V(Function, JSReceiver) \
+ V(Message, JSMessageObject) \
+ V(Context, Context) \
+ V(External, Object) \
+ V(StackTrace, FixedArray) \
+ V(StackFrame, StackFrameInfo) \
+ V(Proxy, JSProxy) \
+ V(debug::GeneratorObject, JSGeneratorObject) \
+ V(debug::Script, Script) \
+ V(debug::WeakMap, JSWeakMap) \
+ V(Promise, JSPromise) \
+ V(Primitive, Object) \
+ V(PrimitiveArray, FixedArray) \
+ V(BigInt, BigInt) \
+ V(ScriptOrModule, Script)
+
+class Utils {
+ public:
+ static inline bool ApiCheck(bool condition,
+ const char* location,
+ const char* message) {
+ if (!condition) Utils::ReportApiFailure(location, message);
+ return condition;
+ }
+ static void ReportOOMFailure(v8::internal::Isolate* isolate,
+ const char* location, bool is_heap_oom);
+
+ static inline Local ToLocal(
+ v8::internal::Handle obj);
+ static inline Local ToLocal(
+ v8::internal::Handle obj);
+ static inline Local ToLocal(
+ v8::internal::Handle obj);
+ static inline Local ToLocal(
+ v8::internal::Handle obj);
+ static inline Local ToLocal(
+ v8::internal::Handle obj);
+ static inline Local ToLocal(
+ v8::internal::Handle obj);
+ static inline Local ToLocal(
+ v8::internal::Handle obj);
+ static inline Local