slexkit 0.3.0 → 0.3.1
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 +18 -0
- package/README.md +4 -3
- package/README.zh-CN.md +4 -3
- package/dist/ai/llms-components.txt +2 -1
- package/dist/ai/llms-full.txt +73 -42
- package/dist/ai/llms-runtime.txt +11 -12
- package/dist/ai/llms.txt +1 -1
- package/dist/ai/slexkit-ai-manifest.json +77 -73
- package/dist/components/checkbox.js +1 -0
- package/dist/components/choice.css +2 -2
- package/dist/components/display.css +1 -1
- package/dist/components/index.js +56 -153
- package/dist/components/input.css +53 -119
- package/dist/components/input.js +33 -143
- package/dist/components/radio-group.js +1 -0
- package/dist/components/select.css +0 -6
- package/dist/components/slider.css +27 -18
- package/dist/components/specs.js +2 -1
- package/dist/components/switch.css +3 -3
- package/dist/components/switch.js +1 -0
- package/dist/components/text-input.css +21 -90
- package/dist/components/text.js +12 -0
- package/dist/components/tooling.css +0 -1
- package/dist/runtime.cjs +22 -5
- package/dist/runtime.js +22 -5
- package/dist/slexkit.cjs +78 -158
- package/dist/slexkit.css +54 -121
- package/dist/slexkit.js +78 -158
- package/dist/types/version.d.ts +2 -2
- package/dist/umd/slexkit.tooling.umd.js +77 -158
- package/dist/umd/slexkit.umd.js +78 -158
- package/package.json +3 -2
- package/skills/slexkit-host-integration/SKILL.md +1 -1
- package/src/components/svelte/display/Text.svelte +14 -1
- package/src/components/svelte/input/Checkbox.svelte +1 -1
- package/src/components/svelte/input/Input.svelte +0 -110
- package/src/components/svelte/input/RadioGroup.svelte +1 -1
- package/src/components/svelte/input/Switch.svelte +1 -1
- package/src/styles/components/choice.css +2 -2
- package/src/styles/components/select.css +0 -6
- package/src/styles/components/slider.css +27 -18
- package/src/styles/components/switch.css +3 -3
- package/src/styles/components/text-input.css +21 -90
- package/src/styles/display.css +1 -1
- package/src/styles/tooling.css +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,24 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to SlexKit.
|
|
4
4
|
|
|
5
|
+
## v0.3.1 - Host stability and control rendering hardening
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- Runtime style safety tests that block broad `:has()` selectors, `clip-path`, and slider track regressions in shipped CSS.
|
|
9
|
+
- Regression coverage for disabled Switch, Checkbox, and Radio state attributes.
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
- CI now installs dependencies with `bun install --frozen-lockfile` and runs lint before tests.
|
|
13
|
+
- Disabled Switch, Checkbox, and Radio styling now uses explicit `data-disabled` attributes instead of broad relational selectors.
|
|
14
|
+
- Select and sr-only helper styles avoid `clip-path` for better host and Obsidian CSS compatibility.
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
- Slider thumb rendering artifacts caused by painting the range track on the native input box.
|
|
18
|
+
- Input focus visibility after removing custom engineering steppers.
|
|
19
|
+
- Home RC example input labels now use native Input component labels instead of separate text labels.
|
|
20
|
+
- Stat cards no longer clip updated text during cross-document state examples.
|
|
21
|
+
- Markdown calculator examples no longer render duplicate section labels.
|
|
22
|
+
|
|
5
23
|
## v0.3.0 - Examples overhaul with component audit and i18n
|
|
6
24
|
|
|
7
25
|
### Added
|
package/README.md
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
<a href="README.zh-CN.md">简体中文</a>
|
|
16
16
|
</p>
|
|
17
17
|
<p>
|
|
18
|
-
<img alt="version" src="https://img.shields.io/badge/version-0.
|
|
18
|
+
<img alt="version" src="https://img.shields.io/badge/version-0.3.1-18181b">
|
|
19
19
|
<img alt="script" src="https://img.shields.io/badge/Slex-v0.1-18181b">
|
|
20
20
|
<img alt="TypeScript" src="https://img.shields.io/badge/runtime-TypeScript-3178c6">
|
|
21
21
|
<img alt="Svelte 5" src="https://img.shields.io/badge/components-Svelte_5-ff3e00">
|
|
@@ -31,6 +31,8 @@ It is built for chat messages, documents, agent panels, tool results, and AI-aut
|
|
|
31
31
|
|
|
32
32
|
## Installation
|
|
33
33
|
|
|
34
|
+
> Just want to use SlexKit in Obsidian? Open **Settings -> Community plugins**, search for **SlexKit**, then install and enable it. The npm package below is for developers integrating SlexKit into web apps, Markdown renderers, Streamdown, or custom hosts.
|
|
35
|
+
|
|
34
36
|
```sh
|
|
35
37
|
npm install slexkit
|
|
36
38
|
```
|
|
@@ -115,7 +117,6 @@ Markdown platforms without SlexKit support show the fallback text. Hosts with Sl
|
|
|
115
117
|
| `@slexkit/components-svelte` | `npm install slexkit @slexkit/runtime @slexkit/components-svelte` | Svelte component registration |
|
|
116
118
|
| `@slexkit/theme-shadcn` | `npm install @slexkit/theme-shadcn` | CSS theme tokens |
|
|
117
119
|
| `@slexkit/streamdown` | `npm install slexkit @slexkit/theme-shadcn @slexkit/streamdown streamdown react react-dom` | React / Streamdown Markdown renderer |
|
|
118
|
-
| `@slexkit/obsidian` | `npm install slexkit @slexkit/obsidian` | Obsidian plugin adapter |
|
|
119
120
|
| `@slexkit/mcp` | `npx -y @slexkit/mcp` | Read-only MCP server for docs, examples, and source validation |
|
|
120
121
|
|
|
121
122
|
See [Package Boundaries](site/content/reference/packages/en-US.md) for details.
|
|
@@ -127,7 +128,7 @@ See [Package Boundaries](site/content/reference/packages/en-US.md) for details.
|
|
|
127
128
|
| Browser DOM | `mount()`, `ingest()`, `boot()`, `disposeNamespace()` |
|
|
128
129
|
| Markdown renderers | `createSlexKitMarkdownRuntimeHost()` |
|
|
129
130
|
| React / Streamdown | `@slexkit/streamdown` |
|
|
130
|
-
| Obsidian |
|
|
131
|
+
| Obsidian | Install **SlexKit** from Community Plugins; release repo: <https://github.com/slexkit/obsidian-slexkit> |
|
|
131
132
|
| AI agents | `@slexkit/mcp`, `llms.txt`, SlexKit skill docs |
|
|
132
133
|
| Custom components | `register()`, `registerSvelteComponent()`, `registerSubset()` |
|
|
133
134
|
|
package/README.zh-CN.md
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
<a href="README.md">English</a>
|
|
16
16
|
</p>
|
|
17
17
|
<p>
|
|
18
|
-
<img alt="version" src="https://img.shields.io/badge/version-0.
|
|
18
|
+
<img alt="version" src="https://img.shields.io/badge/version-0.3.1-18181b">
|
|
19
19
|
<img alt="script" src="https://img.shields.io/badge/Slex-v0.1-18181b">
|
|
20
20
|
<img alt="TypeScript" src="https://img.shields.io/badge/runtime-TypeScript-3178c6">
|
|
21
21
|
<img alt="Svelte 5" src="https://img.shields.io/badge/components-Svelte_5-ff3e00">
|
|
@@ -31,6 +31,8 @@
|
|
|
31
31
|
|
|
32
32
|
## 安装
|
|
33
33
|
|
|
34
|
+
> 只想在 Obsidian 里使用 SlexKit?打开 **Settings -> Community plugins**,搜索 **SlexKit**,安装并启用即可。下面的 npm 安装方式主要面向需要把 SlexKit 接入网页、Markdown renderer、Streamdown 或自定义宿主的开发者。
|
|
35
|
+
|
|
34
36
|
```sh
|
|
35
37
|
npm install slexkit
|
|
36
38
|
```
|
|
@@ -115,7 +117,6 @@ import "slexkit/style.css";
|
|
|
115
117
|
| `@slexkit/components-svelte` | `npm install slexkit @slexkit/runtime @slexkit/components-svelte` | Svelte 组件注册 |
|
|
116
118
|
| `@slexkit/theme-shadcn` | `npm install @slexkit/theme-shadcn` | CSS 主题 token |
|
|
117
119
|
| `@slexkit/streamdown` | `npm install slexkit @slexkit/theme-shadcn @slexkit/streamdown streamdown react react-dom` | React / Streamdown Markdown 渲染器 |
|
|
118
|
-
| `@slexkit/obsidian` | `npm install slexkit @slexkit/obsidian` | Obsidian 插件适配器 |
|
|
119
120
|
| `@slexkit/mcp` | `npx -y @slexkit/mcp` | 面向文档、示例和源码校验的只读 MCP 服务 |
|
|
120
121
|
|
|
121
122
|
更多说明见 [Package Boundaries](site/content/reference/packages/zh-CN.md)。
|
|
@@ -127,7 +128,7 @@ import "slexkit/style.css";
|
|
|
127
128
|
| 浏览器 DOM | `mount()`、`ingest()`、`boot()`、`disposeNamespace()` |
|
|
128
129
|
| Markdown 渲染器 | `createSlexKitMarkdownRuntimeHost()` |
|
|
129
130
|
| React / Streamdown | `@slexkit/streamdown` |
|
|
130
|
-
| Obsidian |
|
|
131
|
+
| Obsidian | 从 Community Plugins 安装 **SlexKit**;发布仓库:<https://github.com/slexkit/obsidian-slexkit> |
|
|
131
132
|
| AI Agents | `@slexkit/mcp`、`llms.txt`、SlexKit skill 文档 |
|
|
132
133
|
| 自定义组件 | `register()`、`registerSvelteComponent()`、`registerSubset()` |
|
|
133
134
|
|
|
@@ -355,7 +355,6 @@ Since: 0.1.0
|
|
|
355
355
|
- `min` (string | number; optional; dynamic): Minimum value used by numeric input controls.
|
|
356
356
|
- `max` (string | number; optional; dynamic): Maximum value used by numeric input controls.
|
|
357
357
|
- `step` (string | number; optional; dynamic): Step size used by numeric input controls.
|
|
358
|
-
- `controls` (boolean; optional; dynamic; default: true): Show decrement and increment buttons for numeric inputs.
|
|
359
358
|
- `onchange` (write-expression; optional; static): Write expression invoked when the value changes.
|
|
360
359
|
|
|
361
360
|
### Children
|
|
@@ -655,6 +654,8 @@ Since: 0.1.0
|
|
|
655
654
|
- `content` (string; optional; dynamic): Alias for text.
|
|
656
655
|
- `label` (string; optional; dynamic): Alias for text.
|
|
657
656
|
- `variant` (string; optional; static; default: "default"; values: default, muted): Text visual variant.
|
|
657
|
+
- `color` (string; optional; dynamic): Optional CSS color for controlled previews.
|
|
658
|
+
- `size` (string | number; optional; dynamic): Optional font size. Numbers are treated as px.
|
|
658
659
|
- `class` (string; optional; static): Additional host-controlled CSS class.
|
|
659
660
|
|
|
660
661
|
### Children
|
package/dist/ai/llms-full.txt
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# SlexKit Full LLM Documentation
|
|
2
2
|
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.1
|
|
4
4
|
|
|
5
5
|
This file concatenates SlexKit's canonical English Markdown docs. `slex` fences are preserved exactly.
|
|
6
6
|
|
|
@@ -27,7 +27,7 @@ Source: README.md
|
|
|
27
27
|
<a href="README.zh-CN.md">简体中文</a>
|
|
28
28
|
</p>
|
|
29
29
|
<p>
|
|
30
|
-
<img alt="version" src="https://img.shields.io/badge/version-0.
|
|
30
|
+
<img alt="version" src="https://img.shields.io/badge/version-0.3.1-18181b">
|
|
31
31
|
<img alt="script" src="https://img.shields.io/badge/Slex-v0.1-18181b">
|
|
32
32
|
<img alt="TypeScript" src="https://img.shields.io/badge/runtime-TypeScript-3178c6">
|
|
33
33
|
<img alt="Svelte 5" src="https://img.shields.io/badge/components-Svelte_5-ff3e00">
|
|
@@ -43,6 +43,8 @@ It is built for chat messages, documents, agent panels, tool results, and AI-aut
|
|
|
43
43
|
|
|
44
44
|
## Installation
|
|
45
45
|
|
|
46
|
+
> Just want to use SlexKit in Obsidian? Open **Settings -> Community plugins**, search for **SlexKit**, then install and enable it. The npm package below is for developers integrating SlexKit into web apps, Markdown renderers, Streamdown, or custom hosts.
|
|
47
|
+
|
|
46
48
|
```sh
|
|
47
49
|
npm install slexkit
|
|
48
50
|
```
|
|
@@ -127,7 +129,6 @@ Markdown platforms without SlexKit support show the fallback text. Hosts with Sl
|
|
|
127
129
|
| `@slexkit/components-svelte` | `npm install slexkit @slexkit/runtime @slexkit/components-svelte` | Svelte component registration |
|
|
128
130
|
| `@slexkit/theme-shadcn` | `npm install @slexkit/theme-shadcn` | CSS theme tokens |
|
|
129
131
|
| `@slexkit/streamdown` | `npm install slexkit @slexkit/theme-shadcn @slexkit/streamdown streamdown react react-dom` | React / Streamdown Markdown renderer |
|
|
130
|
-
| `@slexkit/obsidian` | `npm install slexkit @slexkit/obsidian` | Obsidian plugin adapter |
|
|
131
132
|
| `@slexkit/mcp` | `npx -y @slexkit/mcp` | Read-only MCP server for docs, examples, and source validation |
|
|
132
133
|
|
|
133
134
|
See [Package Boundaries](site/content/reference/packages/en-US.md) for details.
|
|
@@ -139,7 +140,7 @@ See [Package Boundaries](site/content/reference/packages/en-US.md) for details.
|
|
|
139
140
|
| Browser DOM | `mount()`, `ingest()`, `boot()`, `disposeNamespace()` |
|
|
140
141
|
| Markdown renderers | `createSlexKitMarkdownRuntimeHost()` |
|
|
141
142
|
| React / Streamdown | `@slexkit/streamdown` |
|
|
142
|
-
| Obsidian |
|
|
143
|
+
| Obsidian | Install **SlexKit** from Community Plugins; release repo: <https://github.com/slexkit/obsidian-slexkit> |
|
|
143
144
|
| AI agents | `@slexkit/mcp`, `llms.txt`, SlexKit skill docs |
|
|
144
145
|
| Custom components | `register()`, `registerSvelteComponent()`, `registerSubset()` |
|
|
145
146
|
|
|
@@ -320,6 +321,8 @@ slexkitRenderMode: component
|
|
|
320
321
|
|
|
321
322
|
# Getting Started
|
|
322
323
|
|
|
324
|
+
> Just want to install the Obsidian plugin? Open **Settings -> Community plugins**, search for **SlexKit**, then install and enable it. The rest of this page is for developers integrating SlexKit into web apps, Markdown hosts, Streamdown, or custom runtimes.
|
|
325
|
+
|
|
323
326
|
Install `slexkit`, mount a trusted fragment, and you're off. Hand off Markdown / React / Obsidian details to dedicated guides — this page keeps the core integration path focused.
|
|
324
327
|
|
|
325
328
|
## Installation Entry
|
|
@@ -343,7 +346,7 @@ For clearer package boundaries, choose scoped packages by host:
|
|
|
343
346
|
| Official Svelte component registration | `npm install slexkit @slexkit/runtime @slexkit/components-svelte` |
|
|
344
347
|
| Standalone shadcn-token theme CSS | `npm install @slexkit/theme-shadcn` |
|
|
345
348
|
| React + Streamdown Markdown host | `npm install slexkit @slexkit/theme-shadcn @slexkit/streamdown streamdown react react-dom` |
|
|
346
|
-
| Obsidian vault rendering |
|
|
349
|
+
| Obsidian vault rendering | Install **SlexKit** from Obsidian Community Plugins |
|
|
347
350
|
|
|
348
351
|
`@slexkit/runtime` and `@slexkit/components-svelte` are thin wrappers around the root package, not independent implementations.
|
|
349
352
|
|
|
@@ -458,17 +461,17 @@ slexkitRenderMode: component
|
|
|
458
461
|
|
|
459
462
|
# Integration
|
|
460
463
|
|
|
461
|
-
SlexKit ships
|
|
464
|
+
SlexKit ships the Streamdown package in this repository and maintains the official Obsidian plugin in a separate release repository. Both integrations process only explicit `slex` fences — they don't scan ordinary JavaScript, JSON, or unlabeled code blocks. For the full API and host contract, see the [Host Integration reference](/docs/reference/integration).
|
|
462
465
|
|
|
463
466
|
## Plugin Selection
|
|
464
467
|
|
|
465
468
|
| Host | Package | Use case | Runtime boundary |
|
|
466
469
|
|---|---|---|---|
|
|
467
470
|
| React / Streamdown | `@slexkit/streamdown` | Chat messages, AI output, React Markdown pages | trusted or secure |
|
|
468
|
-
| Obsidian |
|
|
471
|
+
| Obsidian | `slexkit/obsidian-slexkit` | Slex fences in local vault reading mode | trusted readonly |
|
|
469
472
|
| Custom Markdown host | `slexkit` | Product-specific Markdown renderer or document viewer | trusted or secure |
|
|
470
473
|
|
|
471
|
-
Use the packaged plugin when the host is Streamdown
|
|
474
|
+
Use the packaged plugin when the host is Streamdown. Use the separate [SlexKit plugin repository](https://github.com/slexkit/obsidian-slexkit) for Obsidian installs and releases. Use `createSlexKitMarkdownRuntimeHost` directly for custom Markdown renderers.
|
|
472
475
|
|
|
473
476
|
Package installation details and release boundaries are tracked in [Package Boundaries](/docs/reference/packages).
|
|
474
477
|
|
|
@@ -559,15 +562,26 @@ The secure runtime deployment checklist lives in [Secure Runtime Setup](security
|
|
|
559
562
|
|
|
560
563
|
## Obsidian
|
|
561
564
|
|
|
565
|
+
> If your goal is only to install the Obsidian plugin, you do not need the developer integration material above. Search for **SlexKit** in Obsidian **Community plugins**, then install and enable it.
|
|
566
|
+
|
|
562
567
|
The Obsidian plugin targets local vault content. It registers a `slex` code block processor in reading mode, renders the fence as a readonly interactive fragment, and does not write output back to notes.
|
|
563
568
|
|
|
564
|
-
|
|
569
|
+
Install the plugin from Obsidian Community Plugins:
|
|
565
570
|
|
|
566
|
-
|
|
567
|
-
|
|
571
|
+
1. Open **Settings -> Community plugins**.
|
|
572
|
+
2. Disable **Restricted mode** if needed.
|
|
573
|
+
3. Search for **SlexKit**.
|
|
574
|
+
4. Install and enable the plugin.
|
|
575
|
+
|
|
576
|
+
The current community release is desktop-only until mobile vault testing is complete. The plugin is compatible with Obsidian 1.5.0+.
|
|
577
|
+
|
|
578
|
+
BRAT and manual release assets remain useful for testing unreleased builds:
|
|
579
|
+
|
|
580
|
+
```text
|
|
581
|
+
BRAT repository: https://github.com/slexkit/obsidian-slexkit
|
|
568
582
|
```
|
|
569
583
|
|
|
570
|
-
|
|
584
|
+
Manual installs copy the GitHub release assets into the vault:
|
|
571
585
|
|
|
572
586
|
```text
|
|
573
587
|
.obsidian/plugins/slexkit/
|
|
@@ -603,7 +617,7 @@ Blocks in the same note share one Markdown artifact runtime, so a state-only fen
|
|
|
603
617
|
|
|
604
618
|
## Obsidian Boundary
|
|
605
619
|
|
|
606
|
-
|
|
620
|
+
The official plugin is a trusted readonly adapter. Content comes from the user's local vault; the plugin is not a sandbox for third-party Markdown or agent output.
|
|
607
621
|
|
|
608
622
|
For untrusted content, use secure mode in a web host with an explicit sandbox frame and host policy.
|
|
609
623
|
|
|
@@ -1058,7 +1072,7 @@ For exact policy fields and allowed adapter hooks, use the [Security Runtime Con
|
|
|
1058
1072
|
|
|
1059
1073
|
`@slexkit/streamdown` can run trusted or secure. Use secure mode for chat messages and agent output unless the message source is already trusted by the host.
|
|
1060
1074
|
|
|
1061
|
-
|
|
1075
|
+
The official Obsidian plugin is a trusted readonly adapter for local vault content. It should not be used as the isolation boundary for third-party Markdown or direct agent output.
|
|
1062
1076
|
|
|
1063
1077
|
Custom Markdown hosts should still process only fences whose language is exactly `slex` and should preserve readable Markdown fallback for non-SlexKit environments.
|
|
1064
1078
|
|
|
@@ -1347,7 +1361,7 @@ Source: content/examples/first-interaction/zh-CN.md
|
|
|
1347
1361
|
step: 1,
|
|
1348
1362
|
onchange: "g.count = Number($event)"
|
|
1349
1363
|
},
|
|
1350
|
-
"stat:
|
|
1364
|
+
"stat:countStat": { label: "当前数值", "$value": "g.count" },
|
|
1351
1365
|
"badge:level": {
|
|
1352
1366
|
"$label": "g.count < 30 ? '低' : g.count < 70 ? '中' : '高'",
|
|
1353
1367
|
"$tone": "g.count < 30 ? 'success' : g.count < 70 ? 'warning' : 'danger'"
|
|
@@ -1537,7 +1551,6 @@ Source: content/examples/salary-calculator/zh-CN.md
|
|
|
1537
1551
|
},
|
|
1538
1552
|
layout: {
|
|
1539
1553
|
"section:salary": {
|
|
1540
|
-
eyebrow: "计算器",
|
|
1541
1554
|
title: "五险一金计算器",
|
|
1542
1555
|
subtitle: "输入税前工资和城市,实时计算五险一金明细。",
|
|
1543
1556
|
"grid:params": {
|
|
@@ -1642,7 +1655,6 @@ Source: content/examples/project-cost-estimator/zh-CN.md
|
|
|
1642
1655
|
},
|
|
1643
1656
|
layout: {
|
|
1644
1657
|
"section:estimator": {
|
|
1645
|
-
eyebrow: "计算器",
|
|
1646
1658
|
title: "软件项目成本估算器",
|
|
1647
1659
|
subtitle: "输入团队配置和周期,成本自动算出来。",
|
|
1648
1660
|
"card:estimator": {
|
|
@@ -1762,7 +1774,6 @@ Source: content/examples/voltage-divider/zh-CN.md
|
|
|
1762
1774
|
},
|
|
1763
1775
|
layout: {
|
|
1764
1776
|
"section:divider": {
|
|
1765
|
-
eyebrow: "计算器",
|
|
1766
1777
|
title: "分压器计算器",
|
|
1767
1778
|
subtitle: "两个电阻串联,从中间引出电压。",
|
|
1768
1779
|
"card:divider": {
|
|
@@ -1845,7 +1856,6 @@ $$|H(f)| = \frac{1}{\sqrt{1 + (f/f_c)^2}}$$
|
|
|
1845
1856
|
},
|
|
1846
1857
|
layout: {
|
|
1847
1858
|
"section:params": {
|
|
1848
|
-
eyebrow: "计算器",
|
|
1849
1859
|
title: "RC 低通滤波器",
|
|
1850
1860
|
subtitle: "一个电阻加一个电容,把高频噪声滤掉。",
|
|
1851
1861
|
"card:params": {
|
|
@@ -1961,8 +1971,7 @@ $$Error = \frac{|BR_{actual} - BR_{target}|}{BR_{target}} \times 100\%$$
|
|
|
1961
1971
|
tone: function () { var e = this.error(); return e < 0.5 ? "success" : e < 2 ? "info" : e < 5 ? "warning" : "danger"; }
|
|
1962
1972
|
},
|
|
1963
1973
|
layout: {
|
|
1964
|
-
"section:
|
|
1965
|
-
eyebrow: "计算器",
|
|
1974
|
+
"section:baudCalculator": {
|
|
1966
1975
|
title: "波特率误差计算器",
|
|
1967
1976
|
subtitle: "输入晶振频率和目标波特率,计算误差。",
|
|
1968
1977
|
"card:baud": {
|
|
@@ -2155,7 +2164,7 @@ Source: content/examples/project-dashboard/zh-CN.md
|
|
|
2155
2164
|
"card:sprint": {
|
|
2156
2165
|
title: "Sprint 进度",
|
|
2157
2166
|
"progress:sp": { label: "完成度", "$value": "g.sprintProgress" },
|
|
2158
|
-
"stat:scope": {
|
|
2167
|
+
"stat:scope": { label: "范围状态", "$value": "g.scopeStatus()" },
|
|
2159
2168
|
"badge:flag": { "$label": "g.scope === 'on-track' ? '正常' : g.scope === 'at-risk' ? '⚠ 预警' : '🚨 偏离'", "$tone": "g.scope === 'on-track' ? 'success' : g.scope === 'at-risk' ? 'warning' : 'danger'" }
|
|
2160
2169
|
},
|
|
2161
2170
|
"card:quality": {
|
|
@@ -2630,7 +2639,10 @@ Source: content/examples/cross-doc-state-lab/zh-CN.md
|
|
|
2630
2639
|
layout: {
|
|
2631
2640
|
"card:a": {
|
|
2632
2641
|
title: "观察面板 A — 纯文本样式",
|
|
2633
|
-
"
|
|
2642
|
+
"column:stylePreview": {
|
|
2643
|
+
"text:styleMeta": { "$text": "'字体大小:' + g.size + 'px'" },
|
|
2644
|
+
"text:styledValue": { "$text": "g.color", "$color": "g.color", "$size": "g.size" }
|
|
2645
|
+
},
|
|
2634
2646
|
"callout:preview": {
|
|
2635
2647
|
"$tone": "g.theme === 'dark' ? 'danger' : g.theme === 'info' ? 'info' : 'success'",
|
|
2636
2648
|
"$text": "g.theme === 'dark' ? '暗色模式:适合夜间阅读的配色方案。' : g.theme === 'info' ? '信息模式:用于强调技术细节。' : '明亮模式:默认的文档阅读配色。'"
|
|
@@ -4090,8 +4102,8 @@ Single-line text input with controlled value, placeholder, label, description, n
|
|
|
4090
4102
|
- Related components: `select` for option selection, `slider` for numeric ranges.
|
|
4091
4103
|
- Typically placed inside a `column` to compose forms.
|
|
4092
4104
|
- Use `$value` and `onchange` for state binding.
|
|
4093
|
-
- Numeric
|
|
4094
|
-
- `onchange` fires when the user edits the value
|
|
4105
|
+
- Numeric and engineering inputs render only the native input. Use `slider` for range adjustment; SlexKit no longer adds custom decrement or increment buttons.
|
|
4106
|
+
- `onchange` fires when the user edits the value.
|
|
4095
4107
|
- `type: "number"` still emits a string value. Convert with `Number($event)` or use `type: "engineering"` to read parsed results.
|
|
4096
4108
|
- Use `invalid` plus `error` for validation feedback. Error text is linked through `aria-describedby`.
|
|
4097
4109
|
|
|
@@ -4158,7 +4170,7 @@ Supports scientific notation and SI prefixes: `p`, `n`, `u`, `µ`, `m`, `k`, `K`
|
|
|
4158
4170
|
|
|
4159
4171
|
## API Reference {#api}
|
|
4160
4172
|
|
|
4161
|
-
<!-- slex:spec-api:start component="input" sourceHash="
|
|
4173
|
+
<!-- slex:spec-api:start component="input" sourceHash="a1afe57e" -->
|
|
4162
4174
|
| Field | Type | Required | Dynamic | Default | Description |
|
|
4163
4175
|
|---|---|---|---|---|---|
|
|
4164
4176
|
| `value` | string | No | Yes | | Current input value. |
|
|
@@ -4181,7 +4193,6 @@ Supports scientific notation and SI prefixes: `p`, `n`, `u`, `µ`, `m`, `k`, `K`
|
|
|
4181
4193
|
| `min` | string \| number | No | Yes | | Minimum value used by numeric input controls. |
|
|
4182
4194
|
| `max` | string \| number | No | Yes | | Maximum value used by numeric input controls. |
|
|
4183
4195
|
| `step` | string \| number | No | Yes | | Step size used by numeric input controls. |
|
|
4184
|
-
| `controls` | boolean | No | Yes | `true` | Show decrement and increment buttons for numeric inputs. |
|
|
4185
4196
|
| `onchange` | write-expression | No | No | | Write expression invoked when the value changes. |
|
|
4186
4197
|
<!-- slex:spec-api:end -->
|
|
4187
4198
|
|
|
@@ -5256,13 +5267,15 @@ Output text content for status messages, descriptions, and result display.
|
|
|
5256
5267
|
|
|
5257
5268
|
## API Reference {#api}
|
|
5258
5269
|
|
|
5259
|
-
<!-- slex:spec-api:start component="text" sourceHash="
|
|
5270
|
+
<!-- slex:spec-api:start component="text" sourceHash="745fea9a" -->
|
|
5260
5271
|
| Field | Type | Required | Dynamic | Default | Description |
|
|
5261
5272
|
|---|---|---|---|---|---|
|
|
5262
5273
|
| `text` | string | No | Yes | | Displayed text. |
|
|
5263
5274
|
| `content` | string | No | Yes | | Alias for text. |
|
|
5264
5275
|
| `label` | string | No | Yes | | Alias for text. |
|
|
5265
5276
|
| `variant` | string: default, muted | No | No | `"default"` | Text visual variant. |
|
|
5277
|
+
| `color` | string | No | Yes | | Optional CSS color for controlled previews. |
|
|
5278
|
+
| `size` | string \| number | No | Yes | | Optional font size. Numbers are treated as px. |
|
|
5266
5279
|
| `class` | string | No | No | | Additional host-controlled CSS class. |
|
|
5267
5280
|
<!-- slex:spec-api:end -->
|
|
5268
5281
|
|
|
@@ -6322,16 +6335,16 @@ The renderer handles `slex` fences. It supports both trusted and secure runtime
|
|
|
6322
6335
|
|
|
6323
6336
|
## Obsidian integration
|
|
6324
6337
|
|
|
6325
|
-
The
|
|
6338
|
+
The official Obsidian plugin lives in <https://github.com/slexkit/obsidian-slexkit> and registers the `slex` fenced code block processor:
|
|
6326
6339
|
|
|
6327
6340
|
```ts
|
|
6328
|
-
// In the
|
|
6341
|
+
// In the plugin:
|
|
6329
6342
|
registerMarkdownCodeBlockProcessor("slex", (source, el, ctx) => { ... });
|
|
6330
6343
|
```
|
|
6331
6344
|
|
|
6332
6345
|
The adapter renders blocks in **reading mode only** and does not write back to the vault. Blocks within the same note share a trusted artifact runtime.
|
|
6333
6346
|
|
|
6334
|
-
**Important**: The Obsidian adapter uses trusted mode because it renders content from the user's
|
|
6347
|
+
**Important**: The Obsidian adapter uses trusted mode because it renders content from the user's local vault. It is not designed as a security boundary for untrusted or agent-generated Markdown.
|
|
6335
6348
|
|
|
6336
6349
|
## Writing a custom host adapter
|
|
6337
6350
|
|
|
@@ -6715,7 +6728,6 @@ slexkit (root - real code)
|
|
|
6715
6728
|
@slexkit/components-svelte (thin wrapper) ─── re-exports slexkit/components-svelte
|
|
6716
6729
|
@slexkit/theme-shadcn ─── CSS only
|
|
6717
6730
|
@slexkit/streamdown ─── React/Streamdown renderer
|
|
6718
|
-
@slexkit/obsidian ─── Obsidian plugin
|
|
6719
6731
|
@slexkit/mcp ─── read-only MCP server for AI agents
|
|
6720
6732
|
```
|
|
6721
6733
|
|
|
@@ -6807,15 +6819,15 @@ export function Message({ markdown }: { markdown: string }) {
|
|
|
6807
6819
|
|
|
6808
6820
|
Processes `slex` fences. Supports both trusted and secure runtime modes.
|
|
6809
6821
|
|
|
6810
|
-
##
|
|
6822
|
+
## Obsidian plugin
|
|
6811
6823
|
|
|
6812
|
-
Obsidian plugin
|
|
6824
|
+
The official Obsidian plugin lives in a separate release repository: <https://github.com/slexkit/obsidian-slexkit>.
|
|
6813
6825
|
|
|
6814
|
-
|
|
6815
|
-
|
|
6816
|
-
|
|
6826
|
+
Install **SlexKit** through Obsidian Community Plugins for normal vault use. Use BRAT or manual GitHub release assets only when testing unreleased builds from `slexkit/obsidian-slexkit`.
|
|
6827
|
+
|
|
6828
|
+
The community plugin is currently desktop-only and compatible with Obsidian 1.5.0+. Mobile support should be enabled only after real mobile vault testing.
|
|
6817
6829
|
|
|
6818
|
-
The adapter uses trusted runtime mode -it renders content from the user's local vault and is not designed as a sandbox for third-party or agent-generated Markdown.
|
|
6830
|
+
The adapter uses trusted runtime mode - it renders content from the user's local vault and is not designed as a sandbox for third-party or agent-generated Markdown. Secure sandbox support is not part of the v0 adapter.
|
|
6819
6831
|
|
|
6820
6832
|
## @slexkit/mcp
|
|
6821
6833
|
|
|
@@ -6836,7 +6848,7 @@ The server does not modify project files. Use it when an agent needs current Sle
|
|
|
6836
6848
|
| With Svelte components | `npm install slexkit @slexkit/runtime @slexkit/components-svelte` |
|
|
6837
6849
|
| Add shadcn theme | `npm install @slexkit/theme-shadcn` |
|
|
6838
6850
|
| React/Streamdown host | `npm install slexkit @slexkit/theme-shadcn @slexkit/streamdown streamdown react react-dom` |
|
|
6839
|
-
| Obsidian plugin |
|
|
6851
|
+
| Obsidian plugin | Install **SlexKit** from Obsidian Community Plugins |
|
|
6840
6852
|
| AI agent MCP server | `npx -y @slexkit/mcp` |
|
|
6841
6853
|
|
|
6842
6854
|
## v0 packaging strategy
|
|
@@ -6853,7 +6865,7 @@ bun run test
|
|
|
6853
6865
|
bun run smoke:release
|
|
6854
6866
|
```
|
|
6855
6867
|
|
|
6856
|
-
The release smoke packs and installs every scoped package, verifies public entry points, verifies CSS subpath exports,
|
|
6868
|
+
The release smoke packs and installs every scoped package in this repository, verifies public entry points, verifies CSS subpath exports, and starts the MCP stdio binary to check `initialize`, `tools/list`, and `slexkitValidate`.
|
|
6857
6869
|
|
|
6858
6870
|
---
|
|
6859
6871
|
|
|
@@ -7489,7 +7501,7 @@ A generation should include a plain Markdown fallback so the output degrades gra
|
|
|
7489
7501
|
|
|
7490
7502
|
~~~~md
|
|
7491
7503
|
```slex
|
|
7492
|
-
{ namespace: "status",
|
|
7504
|
+
{ namespace: "status", layout: { "badge:state": { label: "3/4 complete", tone: "info" } } }
|
|
7493
7505
|
```
|
|
7494
7506
|
|
|
7495
7507
|
**Status:** 3/4 complete
|
|
@@ -7562,6 +7574,24 @@ slexkitRenderMode: component
|
|
|
7562
7574
|
|
|
7563
7575
|
All notable changes to SlexKit.
|
|
7564
7576
|
|
|
7577
|
+
## v0.3.1 - Host stability and control rendering hardening
|
|
7578
|
+
|
|
7579
|
+
### Added
|
|
7580
|
+
- Runtime style safety tests that block broad `:has()` selectors, `clip-path`, and slider track regressions in shipped CSS.
|
|
7581
|
+
- Regression coverage for disabled Switch, Checkbox, and Radio state attributes.
|
|
7582
|
+
|
|
7583
|
+
### Changed
|
|
7584
|
+
- CI now installs dependencies with `bun install --frozen-lockfile` and runs lint before tests.
|
|
7585
|
+
- Disabled Switch, Checkbox, and Radio styling now uses explicit `data-disabled` attributes instead of broad relational selectors.
|
|
7586
|
+
- Select and sr-only helper styles avoid `clip-path` for better host and Obsidian CSS compatibility.
|
|
7587
|
+
|
|
7588
|
+
### Fixed
|
|
7589
|
+
- Slider thumb rendering artifacts caused by painting the range track on the native input box.
|
|
7590
|
+
- Input focus visibility after removing custom engineering steppers.
|
|
7591
|
+
- Home RC example input labels now use native Input component labels instead of separate text labels.
|
|
7592
|
+
- Stat cards no longer clip updated text during cross-document state examples.
|
|
7593
|
+
- Markdown calculator examples no longer render duplicate section labels.
|
|
7594
|
+
|
|
7565
7595
|
## v0.3.0 - Examples overhaul with component audit and i18n
|
|
7566
7596
|
|
|
7567
7597
|
### Added
|
|
@@ -7976,7 +8006,6 @@ Since: 0.1.0
|
|
|
7976
8006
|
- `min` (string | number; optional; dynamic): Minimum value used by numeric input controls.
|
|
7977
8007
|
- `max` (string | number; optional; dynamic): Maximum value used by numeric input controls.
|
|
7978
8008
|
- `step` (string | number; optional; dynamic): Step size used by numeric input controls.
|
|
7979
|
-
- `controls` (boolean; optional; dynamic; default: true): Show decrement and increment buttons for numeric inputs.
|
|
7980
8009
|
- `onchange` (write-expression; optional; static): Write expression invoked when the value changes.
|
|
7981
8010
|
|
|
7982
8011
|
### Children
|
|
@@ -8276,6 +8305,8 @@ Since: 0.1.0
|
|
|
8276
8305
|
- `content` (string; optional; dynamic): Alias for text.
|
|
8277
8306
|
- `label` (string; optional; dynamic): Alias for text.
|
|
8278
8307
|
- `variant` (string; optional; static; default: "default"; values: default, muted): Text visual variant.
|
|
8308
|
+
- `color` (string; optional; dynamic): Optional CSS color for controlled previews.
|
|
8309
|
+
- `size` (string | number; optional; dynamic): Optional font size. Numbers are treated as px.
|
|
8279
8310
|
- `class` (string; optional; static): Additional host-controlled CSS class.
|
|
8280
8311
|
|
|
8281
8312
|
### Children
|
package/dist/ai/llms-runtime.txt
CHANGED
|
@@ -949,16 +949,16 @@ The renderer handles `slex` fences. It supports both trusted and secure runtime
|
|
|
949
949
|
|
|
950
950
|
## Obsidian integration
|
|
951
951
|
|
|
952
|
-
The
|
|
952
|
+
The official Obsidian plugin lives in <https://github.com/slexkit/obsidian-slexkit> and registers the `slex` fenced code block processor:
|
|
953
953
|
|
|
954
954
|
```ts
|
|
955
|
-
// In the
|
|
955
|
+
// In the plugin:
|
|
956
956
|
registerMarkdownCodeBlockProcessor("slex", (source, el, ctx) => { ... });
|
|
957
957
|
```
|
|
958
958
|
|
|
959
959
|
The adapter renders blocks in **reading mode only** and does not write back to the vault. Blocks within the same note share a trusted artifact runtime.
|
|
960
960
|
|
|
961
|
-
**Important**: The Obsidian adapter uses trusted mode because it renders content from the user's
|
|
961
|
+
**Important**: The Obsidian adapter uses trusted mode because it renders content from the user's local vault. It is not designed as a security boundary for untrusted or agent-generated Markdown.
|
|
962
962
|
|
|
963
963
|
## Writing a custom host adapter
|
|
964
964
|
|
|
@@ -1338,7 +1338,6 @@ slexkit (root - real code)
|
|
|
1338
1338
|
@slexkit/components-svelte (thin wrapper) ─── re-exports slexkit/components-svelte
|
|
1339
1339
|
@slexkit/theme-shadcn ─── CSS only
|
|
1340
1340
|
@slexkit/streamdown ─── React/Streamdown renderer
|
|
1341
|
-
@slexkit/obsidian ─── Obsidian plugin
|
|
1342
1341
|
@slexkit/mcp ─── read-only MCP server for AI agents
|
|
1343
1342
|
```
|
|
1344
1343
|
|
|
@@ -1430,15 +1429,15 @@ export function Message({ markdown }: { markdown: string }) {
|
|
|
1430
1429
|
|
|
1431
1430
|
Processes `slex` fences. Supports both trusted and secure runtime modes.
|
|
1432
1431
|
|
|
1433
|
-
##
|
|
1432
|
+
## Obsidian plugin
|
|
1434
1433
|
|
|
1435
|
-
Obsidian plugin
|
|
1434
|
+
The official Obsidian plugin lives in a separate release repository: <https://github.com/slexkit/obsidian-slexkit>.
|
|
1436
1435
|
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1436
|
+
Install **SlexKit** through Obsidian Community Plugins for normal vault use. Use BRAT or manual GitHub release assets only when testing unreleased builds from `slexkit/obsidian-slexkit`.
|
|
1437
|
+
|
|
1438
|
+
The community plugin is currently desktop-only and compatible with Obsidian 1.5.0+. Mobile support should be enabled only after real mobile vault testing.
|
|
1440
1439
|
|
|
1441
|
-
The adapter uses trusted runtime mode -it renders content from the user's local vault and is not designed as a sandbox for third-party or agent-generated Markdown.
|
|
1440
|
+
The adapter uses trusted runtime mode - it renders content from the user's local vault and is not designed as a sandbox for third-party or agent-generated Markdown. Secure sandbox support is not part of the v0 adapter.
|
|
1442
1441
|
|
|
1443
1442
|
## @slexkit/mcp
|
|
1444
1443
|
|
|
@@ -1459,7 +1458,7 @@ The server does not modify project files. Use it when an agent needs current Sle
|
|
|
1459
1458
|
| With Svelte components | `npm install slexkit @slexkit/runtime @slexkit/components-svelte` |
|
|
1460
1459
|
| Add shadcn theme | `npm install @slexkit/theme-shadcn` |
|
|
1461
1460
|
| React/Streamdown host | `npm install slexkit @slexkit/theme-shadcn @slexkit/streamdown streamdown react react-dom` |
|
|
1462
|
-
| Obsidian plugin |
|
|
1461
|
+
| Obsidian plugin | Install **SlexKit** from Obsidian Community Plugins |
|
|
1463
1462
|
| AI agent MCP server | `npx -y @slexkit/mcp` |
|
|
1464
1463
|
|
|
1465
1464
|
## v0 packaging strategy
|
|
@@ -1476,6 +1475,6 @@ bun run test
|
|
|
1476
1475
|
bun run smoke:release
|
|
1477
1476
|
```
|
|
1478
1477
|
|
|
1479
|
-
The release smoke packs and installs every scoped package, verifies public entry points, verifies CSS subpath exports,
|
|
1478
|
+
The release smoke packs and installs every scoped package in this repository, verifies public entry points, verifies CSS subpath exports, and starts the MCP stdio binary to check `initialize`, `tools/list`, and `slexkitValidate`.
|
|
1480
1479
|
|
|
1481
1480
|
---
|