@ktbsh/ui 0.1.0
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/README.md +165 -0
- package/dist/custom-elements.json +1427 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.js +12 -0
- package/dist/react/alert.d.ts +20 -0
- package/dist/react/alert.js +30 -0
- package/dist/react/badge.d.ts +17 -0
- package/dist/react/badge.js +30 -0
- package/dist/react/box.d.ts +22 -0
- package/dist/react/box.js +30 -0
- package/dist/react/breadcrumb.d.ts +17 -0
- package/dist/react/breadcrumb.js +30 -0
- package/dist/react/button.d.ts +20 -0
- package/dist/react/button.js +30 -0
- package/dist/react/checkbox.d.ts +22 -0
- package/dist/react/checkbox.js +30 -0
- package/dist/react/container.d.ts +18 -0
- package/dist/react/container.js +30 -0
- package/dist/react/field.d.ts +20 -0
- package/dist/react/field.js +30 -0
- package/dist/react/heading.d.ts +19 -0
- package/dist/react/heading.js +30 -0
- package/dist/react/input.d.ts +25 -0
- package/dist/react/input.js +30 -0
- package/dist/react/label.d.ts +18 -0
- package/dist/react/label.js +30 -0
- package/dist/react/link.d.ts +21 -0
- package/dist/react/link.js +30 -0
- package/dist/react/modal.d.ts +18 -0
- package/dist/react/modal.js +30 -0
- package/dist/react/nav.d.ts +17 -0
- package/dist/react/nav.js +30 -0
- package/dist/react/pagination.d.ts +19 -0
- package/dist/react/pagination.js +30 -0
- package/dist/react/progress.d.ts +19 -0
- package/dist/react/progress.js +30 -0
- package/dist/react/radio.d.ts +22 -0
- package/dist/react/radio.js +30 -0
- package/dist/react/select.d.ts +22 -0
- package/dist/react/select.js +30 -0
- package/dist/react/skeleton.d.ts +19 -0
- package/dist/react/skeleton.js +30 -0
- package/dist/react/spinner.d.ts +18 -0
- package/dist/react/spinner.js +30 -0
- package/dist/react/stack.d.ts +21 -0
- package/dist/react/stack.js +30 -0
- package/dist/react/switch.d.ts +21 -0
- package/dist/react/switch.js +30 -0
- package/dist/react/tab-panel.d.ts +18 -0
- package/dist/react/tab-panel.js +30 -0
- package/dist/react/tab.d.ts +19 -0
- package/dist/react/tab.js +30 -0
- package/dist/react/tabs.d.ts +17 -0
- package/dist/react/tabs.js +30 -0
- package/dist/react/text.d.ts +19 -0
- package/dist/react/text.js +30 -0
- package/dist/react/textarea.d.ts +24 -0
- package/dist/react/textarea.js +30 -0
- package/dist/react/toast.d.ts +19 -0
- package/dist/react/toast.js +30 -0
- package/dist/themes/dark.css +52 -0
- package/dist/themes/light.css +53 -0
- package/dist/tokens/index.d.ts +7 -0
- package/dist/tokens/index.js +7 -0
- package/dist/tokens/semantic.d.ts +209 -0
- package/dist/tokens/semantic.js +102 -0
- package/dist/types/index.d.ts +15 -0
- package/dist/types/index.js +2 -0
- package/dist/vanilla/alert.d.ts +2 -0
- package/dist/vanilla/alert.js +134 -0
- package/dist/vanilla/alert.src.js +257 -0
- package/dist/vanilla/badge.d.ts +2 -0
- package/dist/vanilla/badge.js +89 -0
- package/dist/vanilla/badge.src.js +212 -0
- package/dist/vanilla/box.d.ts +2 -0
- package/dist/vanilla/box.js +100 -0
- package/dist/vanilla/box.src.js +270 -0
- package/dist/vanilla/breadcrumb.d.ts +2 -0
- package/dist/vanilla/breadcrumb.js +93 -0
- package/dist/vanilla/breadcrumb.src.js +255 -0
- package/dist/vanilla/button.d.ts +2 -0
- package/dist/vanilla/button.js +135 -0
- package/dist/vanilla/button.src.js +260 -0
- package/dist/vanilla/checkbox.d.ts +2 -0
- package/dist/vanilla/checkbox.js +96 -0
- package/dist/vanilla/checkbox.src.js +296 -0
- package/dist/vanilla/container.d.ts +2 -0
- package/dist/vanilla/container.js +79 -0
- package/dist/vanilla/container.src.js +222 -0
- package/dist/vanilla/field.d.ts +2 -0
- package/dist/vanilla/field.js +113 -0
- package/dist/vanilla/field.src.js +278 -0
- package/dist/vanilla/heading.d.ts +2 -0
- package/dist/vanilla/heading.js +75 -0
- package/dist/vanilla/heading.src.js +241 -0
- package/dist/vanilla/input.d.ts +2 -0
- package/dist/vanilla/input.js +121 -0
- package/dist/vanilla/input.src.js +326 -0
- package/dist/vanilla/label.d.ts +2 -0
- package/dist/vanilla/label.js +75 -0
- package/dist/vanilla/label.src.js +232 -0
- package/dist/vanilla/link.d.ts +2 -0
- package/dist/vanilla/link.js +96 -0
- package/dist/vanilla/link.src.js +272 -0
- package/dist/vanilla/modal.d.ts +2 -0
- package/dist/vanilla/modal.js +125 -0
- package/dist/vanilla/modal.src.js +251 -0
- package/dist/vanilla/nav.d.ts +2 -0
- package/dist/vanilla/nav.js +94 -0
- package/dist/vanilla/nav.src.js +214 -0
- package/dist/vanilla/pagination.d.ts +2 -0
- package/dist/vanilla/pagination.js +114 -0
- package/dist/vanilla/pagination.src.js +262 -0
- package/dist/vanilla/progress.d.ts +2 -0
- package/dist/vanilla/progress.js +108 -0
- package/dist/vanilla/progress.src.js +244 -0
- package/dist/vanilla/radio.d.ts +2 -0
- package/dist/vanilla/radio.js +104 -0
- package/dist/vanilla/radio.src.js +326 -0
- package/dist/vanilla/select.d.ts +2 -0
- package/dist/vanilla/select.js +104 -0
- package/dist/vanilla/select.src.js +332 -0
- package/dist/vanilla/skeleton.d.ts +2 -0
- package/dist/vanilla/skeleton.js +99 -0
- package/dist/vanilla/skeleton.src.js +240 -0
- package/dist/vanilla/spinner.d.ts +2 -0
- package/dist/vanilla/spinner.js +108 -0
- package/dist/vanilla/spinner.src.js +222 -0
- package/dist/vanilla/stack.d.ts +2 -0
- package/dist/vanilla/stack.js +83 -0
- package/dist/vanilla/stack.src.js +259 -0
- package/dist/vanilla/switch.d.ts +2 -0
- package/dist/vanilla/switch.js +166 -0
- package/dist/vanilla/switch.src.js +299 -0
- package/dist/vanilla/tab-panel.d.ts +2 -0
- package/dist/vanilla/tab-panel.js +80 -0
- package/dist/vanilla/tab-panel.src.js +227 -0
- package/dist/vanilla/tab.d.ts +2 -0
- package/dist/vanilla/tab.js +99 -0
- package/dist/vanilla/tab.src.js +253 -0
- package/dist/vanilla/tabs.d.ts +2 -0
- package/dist/vanilla/tabs.js +66 -0
- package/dist/vanilla/tabs.src.js +237 -0
- package/dist/vanilla/text.d.ts +2 -0
- package/dist/vanilla/text.js +74 -0
- package/dist/vanilla/text.src.js +232 -0
- package/dist/vanilla/textarea.d.ts +2 -0
- package/dist/vanilla/textarea.js +97 -0
- package/dist/vanilla/textarea.src.js +316 -0
- package/dist/vanilla/toast.d.ts +2 -0
- package/dist/vanilla/toast.js +120 -0
- package/dist/vanilla/toast.src.js +245 -0
- package/package.json +111 -0
package/README.md
ADDED
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
# @ktbsh/ui
|
|
2
|
+
|
|
3
|
+
Framework-agnostic **design system** built with [`@ktbsh/sdk`](https://www.npmjs.com/package/@ktbsh/sdk).
|
|
4
|
+
Author once → vanilla custom elements + React wrappers + Custom Elements Manifest.
|
|
5
|
+
|
|
6
|
+
| | |
|
|
7
|
+
|--|--|
|
|
8
|
+
| **Package** | `@ktbsh/ui` |
|
|
9
|
+
| **Tags** | `kitbash-*` primitives + layout (box, stack, container, text, heading, …) |
|
|
10
|
+
| **Runtime** | Bun ≥ 1.3.14 |
|
|
11
|
+
|
|
12
|
+
Playground: **Storybook** (`bun run storybook`).
|
|
13
|
+
Agent/process rules: [`AGENTS.md`](./AGENTS.md). Architecture: [`docs/superpowers/specs/`](./docs/superpowers/specs/).
|
|
14
|
+
Accessibility target: **WCAG 2.2 AA** — [`docs/a11y.md`](./docs/a11y.md).
|
|
15
|
+
|
|
16
|
+
## Requirements
|
|
17
|
+
|
|
18
|
+
- [Bun](https://bun.sh) **1.3.14+**
|
|
19
|
+
|
|
20
|
+
## Install
|
|
21
|
+
|
|
22
|
+
From npm (when published):
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
bun add @ktbsh/ui
|
|
26
|
+
# or: npm install @ktbsh/ui
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
From a local clone (path / workspace):
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
bun install
|
|
33
|
+
bun run build
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Build output:
|
|
37
|
+
|
|
38
|
+
```text
|
|
39
|
+
dist/
|
|
40
|
+
├── custom-elements.json
|
|
41
|
+
├── vanilla/ # browser custom elements (uhtml bundled)
|
|
42
|
+
└── react/ # React wrappers + .d.ts
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Public import map
|
|
46
|
+
|
|
47
|
+
| Import | Purpose |
|
|
48
|
+
|--------|---------|
|
|
49
|
+
| `@ktbsh/ui` | Tokens helpers + shared types |
|
|
50
|
+
| `@ktbsh/ui/vanilla/<name>` | Register `kitbash-<name>` custom element |
|
|
51
|
+
| `@ktbsh/ui/react/<name>` | React wrapper (`Kitbash*`) + types |
|
|
52
|
+
| `@ktbsh/ui/themes/light.css` | Light theme (`:root` default) |
|
|
53
|
+
| `@ktbsh/ui/themes/dark.css` | Dark theme (`:root[data-theme="dark"]`) |
|
|
54
|
+
| `@ktbsh/ui/tokens` | Token API only |
|
|
55
|
+
| `@ktbsh/ui/types` | Shared TypeScript unions |
|
|
56
|
+
| `@ktbsh/ui/custom-elements.json` | Custom Elements Manifest |
|
|
57
|
+
|
|
58
|
+
`<name>` matches the component file (e.g. `button`, `stack`, `tab-panel`).
|
|
59
|
+
|
|
60
|
+
## Scripts
|
|
61
|
+
|
|
62
|
+
| Script | Purpose |
|
|
63
|
+
|--------|---------|
|
|
64
|
+
| `bun run build` | kitbash compile + package entry emit (JS/d.ts/themes) |
|
|
65
|
+
| `bun run package:entries` | Emit public `dist` entries after kitbash (also part of `build`) |
|
|
66
|
+
| `bun run dev` | Watch rebuild |
|
|
67
|
+
| `bun run lint` / `format` / `ci` | Biome |
|
|
68
|
+
| `bun run typecheck` | `tsc --noEmit` |
|
|
69
|
+
| `bun run test` | Bun tests |
|
|
70
|
+
| `bun run storybook` | Storybook dev (port 6006) |
|
|
71
|
+
| `bun run build-storybook` | Static Storybook build |
|
|
72
|
+
| `bun run verify` | tokens, ci, typecheck, test, kitbash build, Storybook build |
|
|
73
|
+
| `bun run pack:dry` | `npm pack --dry-run` (runs `prepack` → build once) |
|
|
74
|
+
|
|
75
|
+
## Theming (light / dark)
|
|
76
|
+
|
|
77
|
+
Source of truth: `src/tokens/semantic.ts`
|
|
78
|
+
Generated: `src/tokens/themes/light.css`, `dark.css`, `src/tokens/tokens.json`
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
bun run tokens:build # regenerate after editing semantic.ts
|
|
82
|
+
bun run tokens:check # CI drift check
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Load theme CSS in the host app (variables inherit into shadow roots):
|
|
86
|
+
|
|
87
|
+
```ts
|
|
88
|
+
import '@ktbsh/ui/themes/light.css';
|
|
89
|
+
import '@ktbsh/ui/themes/dark.css';
|
|
90
|
+
import { applyTheme } from '@ktbsh/ui';
|
|
91
|
+
|
|
92
|
+
applyTheme('dark'); // document.documentElement dataset.theme
|
|
93
|
+
// light is default via :root even without data-theme
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Components use semantic vars such as `var(--kb-color-accent-default)`. Kitbash also injects light defaults onto `:host` from `tokens.json`.
|
|
97
|
+
|
|
98
|
+
## Consume
|
|
99
|
+
|
|
100
|
+
**Vanilla / Astro / Svelte** — import the custom element (side-effect registration), then use the tag:
|
|
101
|
+
|
|
102
|
+
```html
|
|
103
|
+
<script type="module">
|
|
104
|
+
import '@ktbsh/ui/vanilla/button';
|
|
105
|
+
</script>
|
|
106
|
+
<kitbash-button variant="primary">Hello</kitbash-button>
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
```svelte
|
|
110
|
+
<script>
|
|
111
|
+
import '@ktbsh/ui/vanilla/button';
|
|
112
|
+
</script>
|
|
113
|
+
<kitbash-button variant="primary">Hello</kitbash-button>
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
**React**
|
|
117
|
+
|
|
118
|
+
```tsx
|
|
119
|
+
import { KitbashButton } from '@ktbsh/ui/react/button';
|
|
120
|
+
|
|
121
|
+
<KitbashButton variant="primary">Hello</KitbashButton>
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
React is an **optional peer** (`react` ≥ 18). Vanilla-only apps do not need it.
|
|
125
|
+
|
|
126
|
+
## Publish / release
|
|
127
|
+
|
|
128
|
+
- **Package:** `@ktbsh/ui` (public). `files` + `exports` define the npm surface; `prepack` runs `bun run build`.
|
|
129
|
+
- **Dry-run:** `bun run pack:dry`.
|
|
130
|
+
- **CI does not publish on every merge.** Releases are **git tags** only.
|
|
131
|
+
|
|
132
|
+
### Cut a release (maintainers)
|
|
133
|
+
|
|
134
|
+
1. On `master`, set `"version"` in `package.json` (semver). First release is already `0.1.0`.
|
|
135
|
+
2. Merge any open work; `master` green.
|
|
136
|
+
3. Tag and push (must match version):
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
git checkout master && git pull
|
|
140
|
+
# version in package.json is e.g. 0.1.0
|
|
141
|
+
git tag v0.1.0
|
|
142
|
+
git push origin v0.1.0
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
4. GitHub Actions workflow **Publish** runs `bun run verify` then `npm publish` using secret `NPM_TOKEN`.
|
|
146
|
+
5. Check: https://www.npmjs.com/package/@ktbsh/ui
|
|
147
|
+
|
|
148
|
+
Semver guide: **patch** fixes, **minor** new components/exports, **major** breaking changes.
|
|
149
|
+
Consumers should pin early (`0.1.0` or `~0.1.0`), not track every git commit.
|
|
150
|
+
|
|
151
|
+
## Authoring
|
|
152
|
+
|
|
153
|
+
1. Add `src/components/<name>.ts` with `export default defineComponent({ tag: 'kitbash-…', … })`.
|
|
154
|
+
2. Obey SDK rules: no outer closures in `render` / `events`.
|
|
155
|
+
3. `bun run build`.
|
|
156
|
+
|
|
157
|
+
Full compiler API: [@ktbsh/sdk on npm](https://www.npmjs.com/package/@ktbsh/sdk).
|
|
158
|
+
|
|
159
|
+
## CI
|
|
160
|
+
|
|
161
|
+
GitHub Actions runs Biome, typecheck, and build on every push/PR to `master`.
|
|
162
|
+
|
|
163
|
+
## License
|
|
164
|
+
|
|
165
|
+
MIT
|