mikuru 1.0.4 → 1.0.5
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/CHANGELOG.md +7 -0
- package/README.md +21 -0
- package/dist/cli.js +28 -10
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
- package/templates/basic/_gitignore +3 -0
- package/templates/basic/index.html +13 -0
- package/templates/basic/package.json +18 -0
- package/templates/basic/public/favicon.svg +4 -0
- package/templates/basic/src/App.mikuru +37 -0
- package/templates/basic/src/MoodBadge.mikuru +26 -0
- package/templates/basic/src/main.ts +9 -0
- package/templates/basic/src/mikuru-env.d.ts +1 -0
- package/templates/basic/vite.config.ts +6 -0
- package/templates/starter/package.json +1 -1
- package/types/env.d.ts +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.0.5
|
|
4
|
+
|
|
5
|
+
- Added a `basic` project template for `mikuru create --template basic`.
|
|
6
|
+
- Added `mikuru create --force` and `--yes` support.
|
|
7
|
+
- Added generated starter and basic template build smoke coverage for packed packages.
|
|
8
|
+
- Added generic `MikuruComponent<Props>` and `MikuruMount<Props>` types.
|
|
9
|
+
|
|
3
10
|
## 1.0.4
|
|
4
11
|
|
|
5
12
|
- Added a starter favicon to projects created with `mikuru create`.
|
package/README.md
CHANGED
|
@@ -22,6 +22,14 @@ npm run dev
|
|
|
22
22
|
|
|
23
23
|
The generated starter includes Vite, TypeScript, the package-provided `.mikuru` module declaration, and a welcome component at `src/App.mikuru`.
|
|
24
24
|
|
|
25
|
+
Use the `basic` template when you want a small component composition example:
|
|
26
|
+
|
|
27
|
+
```sh
|
|
28
|
+
npx mikuru create my-basic-app --template basic
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
`mikuru create` also accepts `--force` for non-empty directories and `--yes` / `-y` to use default answers for prompts.
|
|
32
|
+
|
|
25
33
|
## Add Mikuru to a Vite App
|
|
26
34
|
|
|
27
35
|
Install Mikuru and the Vite tooling:
|
|
@@ -88,6 +96,18 @@ For TypeScript projects, add a local declaration file such as `src/mikuru-env.d.
|
|
|
88
96
|
import "mikuru/env";
|
|
89
97
|
```
|
|
90
98
|
|
|
99
|
+
You can use the exported component types for typed wrappers or hand-written integrations:
|
|
100
|
+
|
|
101
|
+
```ts
|
|
102
|
+
import type { MikuruComponent } from "mikuru/env";
|
|
103
|
+
|
|
104
|
+
type GreetingProps = {
|
|
105
|
+
name: string;
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
declare const Greeting: MikuruComponent<GreetingProps>;
|
|
109
|
+
```
|
|
110
|
+
|
|
91
111
|
## Supported v1 Surface
|
|
92
112
|
|
|
93
113
|
- `.mikuru` SFCs with `<template>`, `<script>`, and `<style>`
|
|
@@ -133,6 +153,7 @@ The package also provides the `mikuru` binary:
|
|
|
133
153
|
|
|
134
154
|
```sh
|
|
135
155
|
npx mikuru create my-app
|
|
156
|
+
npx mikuru create my-basic-app --template basic
|
|
136
157
|
```
|
|
137
158
|
|
|
138
159
|
## Not Included in v1
|
package/dist/cli.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { copyFileSync, existsSync, mkdirSync, readdirSync, readFileSync, statSync, writeFileSync } from "node:fs";
|
|
3
3
|
import { basename, dirname, join, resolve } from "node:path";
|
|
4
4
|
import { fileURLToPath } from "node:url";
|
|
5
|
+
const availableTemplates = ["starter", "basic"];
|
|
5
6
|
const args = process.argv.slice(2);
|
|
6
7
|
const command = args[0];
|
|
7
8
|
if (command === "--help" || command === "-h" || !command) {
|
|
@@ -21,17 +22,19 @@ const createOptions = parseCreateArgs(args.slice(1));
|
|
|
21
22
|
if (!createOptions) {
|
|
22
23
|
process.exit(1);
|
|
23
24
|
}
|
|
24
|
-
const { targetArg, templateName } = createOptions;
|
|
25
|
+
const { force, targetArg, templateName } = createOptions;
|
|
25
26
|
const targetDir = resolve(process.cwd(), targetArg ?? "mikuru-app");
|
|
26
27
|
const appName = toPackageName(basename(targetDir));
|
|
27
|
-
if (existsSync(targetDir) && readdirSync(targetDir).length > 0) {
|
|
28
|
+
if (!force && existsSync(targetDir) && readdirSync(targetDir).length > 0) {
|
|
28
29
|
console.error(`Cannot create a Mikuru app in a non-empty directory: ${targetDir}`);
|
|
29
|
-
console.error("Choose a new directory name
|
|
30
|
+
console.error("Choose a new directory name, empty the target directory, or pass --force to overwrite template files.");
|
|
30
31
|
process.exit(1);
|
|
31
32
|
}
|
|
32
33
|
const templateDir = resolve(dirname(fileURLToPath(import.meta.url)), `../templates/${templateName}`);
|
|
33
34
|
copyTemplate(templateDir, targetDir, { appName });
|
|
34
|
-
console.log(`Created ${appName}
|
|
35
|
+
console.log(`Created ${appName}`);
|
|
36
|
+
console.log(` Template: ${templateName}`);
|
|
37
|
+
console.log(` Location: ${targetDir}`);
|
|
35
38
|
console.log("");
|
|
36
39
|
console.log("Next steps:");
|
|
37
40
|
console.log(` cd ${basename(targetDir)}`);
|
|
@@ -39,7 +42,7 @@ console.log(" npm install");
|
|
|
39
42
|
console.log(" npm run dev");
|
|
40
43
|
function printHelp() {
|
|
41
44
|
console.log(`Usage:
|
|
42
|
-
mikuru create [project-name] [--template starter]
|
|
45
|
+
mikuru create [project-name] [--template starter|basic]
|
|
43
46
|
mikuru --version
|
|
44
47
|
mikuru --help
|
|
45
48
|
|
|
@@ -52,21 +55,33 @@ Options:
|
|
|
52
55
|
}
|
|
53
56
|
function printCreateHelp() {
|
|
54
57
|
console.log(`Usage:
|
|
55
|
-
mikuru create [project-name] [--template starter]
|
|
58
|
+
mikuru create [project-name] [--template starter|basic]
|
|
56
59
|
|
|
57
60
|
Options:
|
|
58
|
-
--template <name> Template to use. Available:
|
|
61
|
+
--template <name> Template to use. Available: ${availableTemplates.join(", ")}.
|
|
62
|
+
--force Create into a non-empty directory and overwrite template files.
|
|
63
|
+
-y, --yes Use default answers for prompts. Currently accepted for future compatibility.
|
|
59
64
|
-h, --help Show create help.`);
|
|
60
65
|
}
|
|
61
66
|
function parseCreateArgs(createArgs) {
|
|
67
|
+
let force = false;
|
|
62
68
|
let targetArg;
|
|
63
69
|
let templateName = "starter";
|
|
70
|
+
let yes = false;
|
|
64
71
|
for (let i = 0; i < createArgs.length; i++) {
|
|
65
72
|
const arg = createArgs[i];
|
|
66
73
|
if (arg === "--help" || arg === "-h") {
|
|
67
74
|
printCreateHelp();
|
|
68
75
|
process.exit(0);
|
|
69
76
|
}
|
|
77
|
+
if (arg === "--force") {
|
|
78
|
+
force = true;
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
if (arg === "--yes" || arg === "-y") {
|
|
82
|
+
yes = true;
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
70
85
|
if (arg === "--template") {
|
|
71
86
|
const nextValue = createArgs[++i];
|
|
72
87
|
if (!nextValue) {
|
|
@@ -93,12 +108,15 @@ function parseCreateArgs(createArgs) {
|
|
|
93
108
|
}
|
|
94
109
|
targetArg = arg;
|
|
95
110
|
}
|
|
96
|
-
if (templateName
|
|
111
|
+
if (!isTemplateName(templateName)) {
|
|
97
112
|
console.error(`Unknown template: ${templateName}`);
|
|
98
|
-
console.error(
|
|
113
|
+
console.error(`Available templates: ${availableTemplates.join(", ")}`);
|
|
99
114
|
return undefined;
|
|
100
115
|
}
|
|
101
|
-
return { targetArg, templateName };
|
|
116
|
+
return { force, targetArg, templateName, yes };
|
|
117
|
+
}
|
|
118
|
+
function isTemplateName(value) {
|
|
119
|
+
return availableTemplates.includes(value);
|
|
102
120
|
}
|
|
103
121
|
function copyTemplate(sourceDir, targetDir, variables) {
|
|
104
122
|
mkdirSync(targetDir, { recursive: true });
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAClH,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAClH,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,kBAAkB,GAAG,CAAC,SAAS,EAAE,OAAO,CAAU,CAAC;AAUzD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAExB,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;IACzD,SAAS,EAAE,CAAC;IACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,OAAO,KAAK,WAAW,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;IACzB,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;IAC7C,SAAS,EAAE,CAAC;IACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,aAAa,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,IAAI,CAAC,aAAa,EAAE,CAAC;IACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,aAAa,CAAC;AACzD,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,IAAI,YAAY,CAAC,CAAC;AACpE,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AAEnD,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC,SAAS,CAAC,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;IACzE,OAAO,CAAC,KAAK,CAAC,wDAAwD,SAAS,EAAE,CAAC,CAAC;IACnF,OAAO,CAAC,KAAK,CAAC,uGAAuG,CAAC,CAAC;IACvH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,gBAAgB,YAAY,EAAE,CAAC,CAAC;AAErG,YAAY,CAAC,WAAW,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;AAElD,OAAO,CAAC,GAAG,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC;AAClC,OAAO,CAAC,GAAG,CAAC,eAAe,YAAY,EAAE,CAAC,CAAC;AAC3C,OAAO,CAAC,GAAG,CAAC,eAAe,SAAS,EAAE,CAAC,CAAC;AACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAChB,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AAC3B,OAAO,CAAC,GAAG,CAAC,QAAQ,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AAC3C,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAC7B,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAE7B,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;sDAUwC,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,eAAe;IACtB,OAAO,CAAC,GAAG,CAAC;;;;qDAIuC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;;;yCAGzC,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,eAAe,CAAC,UAAoB;IAC3C,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,SAA6B,CAAC;IAClC,IAAI,YAAY,GAAG,SAAS,CAAC;IAC7B,IAAI,GAAG,GAAG,KAAK,CAAC;IAEhB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAE1B,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACrC,eAAe,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,KAAK,GAAG,IAAI,CAAC;YACb,SAAS;QACX,CAAC;QAED,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACpC,GAAG,GAAG,IAAI,CAAC;YACX,SAAS;QACX,CAAC;QAED,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;YACzB,MAAM,SAAS,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;YAClC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;gBAC/C,eAAe,EAAE,CAAC;gBAClB,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,YAAY,GAAG,SAAS,CAAC;YACzB,SAAS;QACX,CAAC;QAED,IAAI,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAClC,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC/C,SAAS;QACX,CAAC;QAED,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,0BAA0B,GAAG,EAAE,CAAC,CAAC;YAC/C,eAAe,EAAE,CAAC;YAClB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAC;YACnD,eAAe,EAAE,CAAC;YAClB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,SAAS,GAAG,GAAG,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,qBAAqB,YAAY,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,KAAK,CAAC,wBAAwB,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC;AACjD,CAAC;AAED,SAAS,cAAc,CAAC,KAAa;IACnC,OAAQ,kBAAwC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,YAAY,CAAC,SAAiB,EAAE,SAAiB,EAAE,SAA8B;IACxF,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE1C,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC1C,MAAM,UAAU,GAAG,KAAK,KAAK,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC;QACjE,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;QAElC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,YAAY,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;YAChD,SAAS;QACX,CAAC;QAED,IAAI,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,UAAU,CAAC,qBAAqB,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;YACtG,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACnC,SAAS;QACX,CAAC;QAED,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACvC,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AACtF,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,OAAO,KAAK;SACT,IAAI,EAAE;SACN,WAAW,EAAE;SACb,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;SAC9B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,YAAY,CAAC;AAC7C,CAAC;AAED,SAAS,kBAAkB;IACzB,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;IAC5F,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAyB,CAAC;IAC9F,OAAO,WAAW,CAAC,OAAO,IAAI,OAAO,CAAC;AACxC,CAAC"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<link rel="icon" href="/favicon.svg" type="image/svg+xml" />
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
+
<title>Mikuru Basic</title>
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<main id="app"></main>
|
|
11
|
+
<script type="module" src="/src/main.ts"></script>
|
|
12
|
+
</body>
|
|
13
|
+
</html>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "__MIKURU_APP_NAME__",
|
|
3
|
+
"private": true,
|
|
4
|
+
"version": "0.0.0",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"dev": "vite",
|
|
8
|
+
"build": "vite build",
|
|
9
|
+
"preview": "vite preview"
|
|
10
|
+
},
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"mikuru": "^1.0.5"
|
|
13
|
+
},
|
|
14
|
+
"devDependencies": {
|
|
15
|
+
"typescript": "^6.0.3",
|
|
16
|
+
"vite": "^8.0.10"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<section class="app">
|
|
3
|
+
<h1>Mikuru Counter</h1>
|
|
4
|
+
<button @click="increment">count: {{ count }}</button>
|
|
5
|
+
<MoodBadge label="Mood" v-model="mood">
|
|
6
|
+
<span>Current mood is {{ mood }}</span>
|
|
7
|
+
</MoodBadge>
|
|
8
|
+
</section>
|
|
9
|
+
</template>
|
|
10
|
+
|
|
11
|
+
<script>
|
|
12
|
+
import { ref } from "mikuru";
|
|
13
|
+
import MoodBadge from "./MoodBadge.mikuru";
|
|
14
|
+
|
|
15
|
+
const count = ref(0);
|
|
16
|
+
const mood = ref("curious");
|
|
17
|
+
|
|
18
|
+
function increment() {
|
|
19
|
+
count.value += 1;
|
|
20
|
+
mood.value = count.value % 2 === 0 ? "curious" : "building";
|
|
21
|
+
}
|
|
22
|
+
</script>
|
|
23
|
+
|
|
24
|
+
<style scoped>
|
|
25
|
+
.app {
|
|
26
|
+
display: grid;
|
|
27
|
+
gap: 16px;
|
|
28
|
+
max-width: 520px;
|
|
29
|
+
margin: 48px auto;
|
|
30
|
+
font-family: system-ui, sans-serif;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
button {
|
|
34
|
+
font: inherit;
|
|
35
|
+
width: fit-content;
|
|
36
|
+
}
|
|
37
|
+
</style>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<article class="badge">
|
|
3
|
+
<strong>{{ label }}</strong>
|
|
4
|
+
<button @click="toggle">{{ modelValue }}</button>
|
|
5
|
+
<slot />
|
|
6
|
+
</article>
|
|
7
|
+
</template>
|
|
8
|
+
|
|
9
|
+
<script>
|
|
10
|
+
const { label, modelValue } = defineProps({ label: String, modelValue: String });
|
|
11
|
+
const emit = defineEmits(["update:modelValue"]);
|
|
12
|
+
|
|
13
|
+
function toggle() {
|
|
14
|
+
emit("update:modelValue", modelValue.value === "curious" ? "building" : "curious");
|
|
15
|
+
}
|
|
16
|
+
</script>
|
|
17
|
+
|
|
18
|
+
<style scoped>
|
|
19
|
+
.badge {
|
|
20
|
+
display: grid;
|
|
21
|
+
gap: 8px;
|
|
22
|
+
padding: 12px;
|
|
23
|
+
border: 1px solid #d7dce2;
|
|
24
|
+
border-radius: 8px;
|
|
25
|
+
}
|
|
26
|
+
</style>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "mikuru/env";
|
package/types/env.d.ts
CHANGED
|
@@ -3,19 +3,19 @@ type EnvMikuruComponentInstance = {
|
|
|
3
3
|
unmount(): void;
|
|
4
4
|
};
|
|
5
5
|
|
|
6
|
-
type EnvMikuruMount = (
|
|
6
|
+
type EnvMikuruMount<Props = Record<string, unknown>> = (
|
|
7
7
|
target: Element | DocumentFragment,
|
|
8
|
-
props?:
|
|
8
|
+
props?: Props
|
|
9
9
|
) => EnvMikuruComponentInstance;
|
|
10
10
|
|
|
11
|
-
type EnvMikuruComponent = {
|
|
12
|
-
mount: EnvMikuruMount
|
|
11
|
+
type EnvMikuruComponent<Props = Record<string, unknown>> = {
|
|
12
|
+
mount: EnvMikuruMount<Props>;
|
|
13
13
|
};
|
|
14
14
|
|
|
15
15
|
declare module "mikuru/env" {
|
|
16
16
|
export type MikuruComponentInstance = EnvMikuruComponentInstance;
|
|
17
|
-
export type MikuruMount = EnvMikuruMount
|
|
18
|
-
export type MikuruComponent = EnvMikuruComponent
|
|
17
|
+
export type MikuruMount<Props = Record<string, unknown>> = EnvMikuruMount<Props>;
|
|
18
|
+
export type MikuruComponent<Props = Record<string, unknown>> = EnvMikuruComponent<Props>;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
declare module "*.mikuru" {
|