@noobsociety/nsds 0.3.1 → 0.4.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 +34 -1
- package/CONTRIBUTING.md +43 -2
- package/README.md +87 -36
- package/SECURITY.md +38 -4
- package/dist/client/index.cjs +1 -0
- package/dist/client/index.d.cts +6 -0
- package/dist/client/index.d.ts +6 -0
- package/dist/client/index.js +5 -0
- package/dist/components/_card-base.css +99 -0
- package/dist/components/hud/HUDBar.d.ts +16 -3
- package/dist/components/hud/HUDChat.d.ts +26 -0
- package/dist/components/hud/HUDJoystick.d.ts +21 -0
- package/dist/components/hud/HUDMinimap.d.ts +14 -0
- package/dist/components/hud/HUDPanel.d.ts +25 -0
- package/dist/components/hud/HUDTabWindow.d.ts +37 -0
- package/dist/components/hud-editor.css +197 -0
- package/dist/components/icons/RPGIcon.d.ts +15 -11
- package/dist/components/icons/registry.d.ts +37 -0
- package/dist/components/primitives.css +50 -20
- package/dist/components/react/index.d.ts +12 -2
- package/dist/components/scene-builder.css +740 -0
- package/dist/components/scene-builder.js +3039 -0
- package/dist/components/shared/constants.d.ts +41 -0
- package/dist/components/shared/styles.d.ts +1 -42
- package/dist/index.cjs +1 -1
- package/dist/index.js +6173 -1821
- package/dist/registry-BizUEm6W.js +136 -0
- package/dist/registry-Cyq-qspU.cjs +1 -0
- package/dist/styles.css +1 -0
- package/dist/tokens/base.css +17 -4
- package/dist/tokens/colors.css +57 -53
- package/dist/tokens/hud.css +119 -78
- package/dist/tokens/motion.css +57 -23
- package/dist/tokens/spacing.css +39 -39
- package/dist/tokens/typography.css +20 -20
- package/package.json +37 -8
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,37 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.4.1] - 2026-06-28
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- Added five HUD React components — `HUDChat`, `HUDJoystick`, `HUDMinimap`, `HUDPanel`, and `HUDTabWindow` — each with Storybook stories, component tests, and named exports from `@noobsociety/nsds` and `@noobsociety/nsds/react`.
|
|
14
|
+
- Expanded `RPGIcon` to 68 pixel-art glyphs across 11 groups, adding the attack, skills, items, equip, skins, menu, and emote categories with matching name, group, and type registries on `@noobsociety/nsds` and `@noobsociety/nsds/client`.
|
|
15
|
+
- Added `HUDBar` bar variants (`hp`, `mp`, `xp`, `stamina`) with optional or hidden labels and segmented fills.
|
|
16
|
+
- Added the `--hud-edit-*` editor-chrome token group, plus HUD text-scale, stamina, minimap-path, grid-overlay, and 24×24 canvas/grid tokens, to `tokens/hud.css`.
|
|
17
|
+
- Added `components/hud-editor.css` (token-driven in-game HUD editor chrome) to the CSS entry point, and shipped `components/scene-builder.css`, `components/scene-builder.js`, and `components/_card-base.css` as design-system source.
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
|
|
21
|
+
- Redrew `RPGIcon` artwork on a 24×24 viewBox (existing glyphs preserved) and renamed the chat emotes to NoobSociety command codes (`emote-tysm`, `emote-sos`, `emote-lol`, `emote-win`, `emote-lgo`, `emote-ugh`, `emote-myb`, `emote-wut`, `emote-grr`).
|
|
22
|
+
- Restructured `QuestCard` with a header (gate number and name) and per-status data attributes, and moved quest-card colours onto `--ns-quest-*` tokens.
|
|
23
|
+
|
|
24
|
+
## [0.4.0] - 2026-06-22
|
|
25
|
+
|
|
26
|
+
### Added
|
|
27
|
+
|
|
28
|
+
- Added a `@noobsociety/nsds/client` export for renderer-neutral 21.06 metadata, token references, quest status metadata, and RPG icon registries.
|
|
29
|
+
- Added a Node 22 local runtime pin for contributor setup parity with CI.
|
|
30
|
+
|
|
31
|
+
### Changed
|
|
32
|
+
|
|
33
|
+
- Extracted shared token, quest status, and RPG icon registry metadata out of React-only modules.
|
|
34
|
+
- Removed duplicate primitive stylesheet links from static browser fixtures.
|
|
35
|
+
|
|
36
|
+
### Fixed
|
|
37
|
+
|
|
38
|
+
- Added the missing `--hud-divider` alias used by HUD fixture surfaces.
|
|
39
|
+
|
|
9
40
|
## [0.3.1] - 2026-06-20
|
|
10
41
|
|
|
11
42
|
### Added
|
|
@@ -102,7 +133,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
|
102
133
|
|
|
103
134
|
- Initial NSDS package with tokens, CSS primitives, React components, and Tailwind support.
|
|
104
135
|
|
|
105
|
-
[Unreleased]: https://github.com/noobsociety/nsds/compare/v0.
|
|
136
|
+
[Unreleased]: https://github.com/noobsociety/nsds/compare/v0.4.1...HEAD
|
|
137
|
+
[0.4.1]: https://github.com/noobsociety/nsds/compare/v0.4.0...v0.4.1
|
|
138
|
+
[0.4.0]: https://github.com/noobsociety/nsds/compare/v0.3.1...v0.4.0
|
|
106
139
|
[0.3.1]: https://github.com/noobsociety/nsds/compare/v0.3.0...v0.3.1
|
|
107
140
|
[0.3.0]: https://github.com/noobsociety/nsds/compare/v0.2.1...v0.3.0
|
|
108
141
|
[0.2.1]: https://github.com/noobsociety/nsds/compare/v0.2.0...v0.2.1
|
package/CONTRIBUTING.md
CHANGED
|
@@ -4,13 +4,18 @@ NSDS is the NoobSociety Design System. Changes should keep the package small, re
|
|
|
4
4
|
|
|
5
5
|
## Local setup
|
|
6
6
|
|
|
7
|
-
Use Node.js 22 or newer.
|
|
7
|
+
Use Node.js 22 or newer. The repo pins Node 22 in `.nvmrc` for parity with CI; with nvm, run
|
|
8
|
+
`nvm use` to match it.
|
|
8
9
|
|
|
9
10
|
```bash
|
|
11
|
+
nvm use
|
|
10
12
|
npm install
|
|
11
13
|
npm run check
|
|
12
14
|
```
|
|
13
15
|
|
|
16
|
+
See [QUALITY.md](./QUALITY.md) for the package gate, release evidence, visual baseline policy, and
|
|
17
|
+
tagging rules.
|
|
18
|
+
|
|
14
19
|
Run Storybook while changing components:
|
|
15
20
|
|
|
16
21
|
```bash
|
|
@@ -73,7 +78,7 @@ npm run changeset:version
|
|
|
73
78
|
|
|
74
79
|
This command applies the Changesets version plan and updates `CHANGELOG.md` from the `[Unreleased]` section. Open the result as a release pull request.
|
|
75
80
|
|
|
76
|
-
Publishing is handled by the release workflow after the release pull request is merged to `main`, when `NPM_TOKEN` is configured
|
|
81
|
+
Publishing is handled by the release workflow after the release pull request is merged to `main`, when `NPM_TOKEN` is configured. When the package version is not already on npm, the workflow publishes the package and creates an annotated `vX.Y.Z` tag on the published commit.
|
|
77
82
|
|
|
78
83
|
```bash
|
|
79
84
|
npm run changeset:publish
|
|
@@ -107,9 +112,17 @@ npm run test:visual
|
|
|
107
112
|
Install and export checks run as part of `npm run check`, and can be run directly:
|
|
108
113
|
|
|
109
114
|
```bash
|
|
115
|
+
npm run check:commits
|
|
116
|
+
npm run check:content
|
|
117
|
+
npm run check:deps
|
|
110
118
|
npm run check:docs
|
|
111
119
|
npm run check:exports
|
|
112
120
|
npm run check:install
|
|
121
|
+
npm run check:markdown
|
|
122
|
+
npm run check:release
|
|
123
|
+
npm run check:workflows
|
|
124
|
+
npm run format:check
|
|
125
|
+
npm run lint
|
|
113
126
|
```
|
|
114
127
|
|
|
115
128
|
## Release checks
|
|
@@ -122,6 +135,26 @@ npm run build:storybook
|
|
|
122
135
|
npm run release:dry-run
|
|
123
136
|
```
|
|
124
137
|
|
|
138
|
+
Use this order for package work: commit locally on a feature branch, open the
|
|
139
|
+
pull request from that branch, merge the reviewed PR to `main`, then let the
|
|
140
|
+
release workflow tag only after a version publishes.
|
|
141
|
+
|
|
142
|
+
Before opening the PR, squash local role-pass cleanup commits into the smallest
|
|
143
|
+
reviewable set that preserves the package-facing change. Use the PR title as the
|
|
144
|
+
intended squash commit subject, and keep the squash body as one contiguous
|
|
145
|
+
bullet list of meaningful branch changes. Commit generated API docs with the
|
|
146
|
+
source or TypeDoc configuration change that generated them.
|
|
147
|
+
|
|
148
|
+
Complete the pull request template before requesting review:
|
|
149
|
+
|
|
150
|
+
- Summary uses checklist items for concrete changes.
|
|
151
|
+
- PR description bullet items stay at or below 100 characters.
|
|
152
|
+
- Verification commands are fenced as `bash` blocks.
|
|
153
|
+
- PR text uses repo-relative paths and omits local-only workflow paths.
|
|
154
|
+
- Changeset and changelog status are declared.
|
|
155
|
+
- Release tag timing is declared.
|
|
156
|
+
- Squash shape is confirmed.
|
|
157
|
+
|
|
125
158
|
Before publishing manually:
|
|
126
159
|
|
|
127
160
|
```bash
|
|
@@ -130,6 +163,14 @@ npm run release:dry-run
|
|
|
130
163
|
npm run changeset:publish
|
|
131
164
|
```
|
|
132
165
|
|
|
166
|
+
When a release tag must be repaired manually, use the release tag helper on the final release
|
|
167
|
+
commit. Do not create or push tags before the reviewed release PR has merged unless the target
|
|
168
|
+
commit will not change.
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
node scripts/tag-release.mjs
|
|
172
|
+
```
|
|
173
|
+
|
|
133
174
|
## License guidance
|
|
134
175
|
|
|
135
176
|
NSDS uses the [MIT License](./LICENSE), selected from [Choose a License](https://choosealicense.com/licenses/mit/).
|
package/README.md
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
# NoobSociety Design System
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://github.com/noobsociety/nsds/actions/workflows/ci.yml)
|
|
4
|
+
[](https://github.com/noobsociety/nsds/actions/workflows/release.yml)
|
|
5
|
+
[](https://www.npmjs.com/package/@noobsociety/nsds)
|
|
6
|
+
[](./LICENSE)
|
|
4
7
|
|
|
5
|
-
|
|
8
|
+
Reusable design tokens, client registries, CSS primitives, Tailwind preset, and pixel-art React components for NoobSociety.
|
|
9
|
+
|
|
10
|
+
NSDS is Tailwind-first and token-driven. It ships the public package surface needed by product apps: client registries, React components, CSS tokens, primitives, and a Tailwind preset.
|
|
6
11
|
|
|
7
12
|
## Contents
|
|
8
13
|
|
|
@@ -11,6 +16,7 @@ NSDS is Tailwind-first and token-driven. It ships the public package surface nee
|
|
|
11
16
|
- [Package exports](#package-exports)
|
|
12
17
|
- [Components](#components)
|
|
13
18
|
- [Documentation](#documentation)
|
|
19
|
+
- [Quality](#quality)
|
|
14
20
|
- [Repository layout](#repository-layout)
|
|
15
21
|
- [Development](#development)
|
|
16
22
|
- [Versioning and releases](#versioning-and-releases)
|
|
@@ -36,6 +42,14 @@ Import the CSS entry once in your app:
|
|
|
36
42
|
import '@noobsociety/nsds/styles';
|
|
37
43
|
```
|
|
38
44
|
|
|
45
|
+
Use renderer-neutral client registries when code needs shared names without React:
|
|
46
|
+
|
|
47
|
+
```ts
|
|
48
|
+
import { nsClientRelease, rpgIconNames } from '@noobsociety/nsds/client';
|
|
49
|
+
|
|
50
|
+
console.log(nsClientRelease, rpgIconNames.includes('sword'));
|
|
51
|
+
```
|
|
52
|
+
|
|
39
53
|
Use React components from the package root:
|
|
40
54
|
|
|
41
55
|
```tsx
|
|
@@ -66,16 +80,17 @@ export default {
|
|
|
66
80
|
|
|
67
81
|
## Package exports
|
|
68
82
|
|
|
69
|
-
| Export
|
|
70
|
-
|
|
|
71
|
-
| `@noobsociety/nsds`
|
|
72
|
-
| `@noobsociety/nsds/react`
|
|
73
|
-
| `@noobsociety/nsds/
|
|
74
|
-
| `@noobsociety/nsds/
|
|
75
|
-
| `@noobsociety/nsds/styles
|
|
76
|
-
| `@noobsociety/nsds/
|
|
77
|
-
| `@noobsociety/nsds/
|
|
78
|
-
| `@noobsociety/nsds/
|
|
83
|
+
| Export | Purpose |
|
|
84
|
+
| --------------------------------------------- | ------------------------------------------------------ |
|
|
85
|
+
| `@noobsociety/nsds` | React components |
|
|
86
|
+
| `@noobsociety/nsds/react` | Compatibility alias for React components |
|
|
87
|
+
| `@noobsociety/nsds/client` | Renderer-neutral client registries and shared metadata |
|
|
88
|
+
| `@noobsociety/nsds/tailwind` | Tailwind preset mapped to `--ns-*` tokens |
|
|
89
|
+
| `@noobsociety/nsds/styles` | Full CSS entry |
|
|
90
|
+
| `@noobsociety/nsds/styles.css` | CSS entry compatibility alias |
|
|
91
|
+
| `@noobsociety/nsds/tokens/*` | Individual token CSS files |
|
|
92
|
+
| `@noobsociety/nsds/primitives` | Component primitive CSS |
|
|
93
|
+
| `@noobsociety/nsds/components/primitives.css` | Component primitive CSS compatibility alias |
|
|
79
94
|
|
|
80
95
|
The npm package ships `dist/` plus package metadata, changelog, contribution guidance, security policy, and license.
|
|
81
96
|
|
|
@@ -87,12 +102,19 @@ Public React components:
|
|
|
87
102
|
- `FeatureCard`
|
|
88
103
|
- `QuestCard`
|
|
89
104
|
- `HUDBar`
|
|
105
|
+
- `HUDChat`
|
|
90
106
|
- `HUDDivider`
|
|
107
|
+
- `HUDJoystick`
|
|
91
108
|
- `HUDLabel`
|
|
109
|
+
- `HUDMinimap`
|
|
110
|
+
- `HUDPanel`
|
|
111
|
+
- `HUDTabWindow`
|
|
92
112
|
- `RPGIcon`
|
|
93
113
|
- `HUDIcon`
|
|
94
114
|
- `SectionArrow`
|
|
95
115
|
|
|
116
|
+
`RPGIcon` ships 68 pixel-art glyphs across 11 groups: weapons, elements, races, sizes, attack, skills, items, equip, skins, menu, and emotes. The renderer-neutral icon name, group, and type registries are also exported from `@noobsociety/nsds/client`.
|
|
117
|
+
|
|
96
118
|
Run Storybook for component documentation:
|
|
97
119
|
|
|
98
120
|
```bash
|
|
@@ -122,43 +144,68 @@ npm run docs:api
|
|
|
122
144
|
|
|
123
145
|
The static landing page lives in [`site/`](./site/index.html).
|
|
124
146
|
|
|
147
|
+
## Quality
|
|
148
|
+
|
|
149
|
+
See [QUALITY.md](./QUALITY.md) for the package gate, release evidence, visual baseline policy, and
|
|
150
|
+
tagging rules.
|
|
151
|
+
|
|
152
|
+
Before opening a pull request, run:
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
npm run check
|
|
156
|
+
npm run build:storybook
|
|
157
|
+
npm run release:dry-run
|
|
158
|
+
```
|
|
159
|
+
|
|
125
160
|
## Repository layout
|
|
126
161
|
|
|
127
|
-
| Path
|
|
128
|
-
|
|
|
129
|
-
| `styles.css`
|
|
130
|
-
| `
|
|
131
|
-
| `
|
|
132
|
-
| `
|
|
133
|
-
| `
|
|
134
|
-
| `
|
|
135
|
-
| `
|
|
162
|
+
| Path | Purpose |
|
|
163
|
+
| ------------- | ---------------------------------------------------------------------- |
|
|
164
|
+
| `styles.css` | Public CSS entry point |
|
|
165
|
+
| `client/` | Renderer-neutral client registry entry point |
|
|
166
|
+
| `tokens/` | CSS custom properties for color, type, spacing, motion, and HUD values |
|
|
167
|
+
| `components/` | TypeScript React source, primitive CSS, and Storybook stories |
|
|
168
|
+
| `tailwind/` | Tailwind preset source |
|
|
169
|
+
| `docs/` | Public documentation and generated API reference |
|
|
170
|
+
| `site/` | Static public landing page |
|
|
171
|
+
| `tests/` | Component and browser-rendered visual checks |
|
|
136
172
|
|
|
137
173
|
## Development
|
|
138
174
|
|
|
139
|
-
Use Node.js 22 or newer.
|
|
175
|
+
Use Node.js 22 or newer. The repo pins Node 22 in `.nvmrc` for parity with CI; with nvm, run
|
|
176
|
+
`nvm use` to match it.
|
|
140
177
|
|
|
141
178
|
```bash
|
|
179
|
+
nvm use
|
|
142
180
|
npm install
|
|
143
181
|
npm run check
|
|
144
182
|
```
|
|
145
183
|
|
|
146
184
|
Common scripts:
|
|
147
185
|
|
|
148
|
-
| Script
|
|
149
|
-
|
|
|
150
|
-
| `npm run build`
|
|
151
|
-
| `npm run check`
|
|
152
|
-
| `npm run check:
|
|
153
|
-
| `npm run check:
|
|
154
|
-
| `npm run check:
|
|
155
|
-
| `npm run docs
|
|
156
|
-
| `npm run
|
|
157
|
-
| `npm run
|
|
158
|
-
| `npm run
|
|
159
|
-
| `npm run
|
|
160
|
-
| `npm run release
|
|
161
|
-
| `npm run
|
|
186
|
+
| Script | Purpose |
|
|
187
|
+
| ------------------------- | ---------------------------------------------------------------------- |
|
|
188
|
+
| `npm run build` | Build the package into `dist/` |
|
|
189
|
+
| `npm run check` | Run build, package guards, type checks, tests, and import smoke checks |
|
|
190
|
+
| `npm run check:content` | Catch local path leaks in committed text |
|
|
191
|
+
| `npm run check:commits` | Validate branch commit messages with Commitlint |
|
|
192
|
+
| `npm run check:deps` | Validate dependency pins and cross-platform lockfile coverage |
|
|
193
|
+
| `npm run check:docs` | Regenerate API docs and fail when generated docs drift |
|
|
194
|
+
| `npm run check:exports` | Validate npm exports and declaration entry points |
|
|
195
|
+
| `npm run check:install` | Install the packed package in a temporary consumer project |
|
|
196
|
+
| `npm run check:markdown` | Lint authored Markdown docs and templates |
|
|
197
|
+
| `npm run check:package` | Validate package metadata, required files, and dist shape |
|
|
198
|
+
| `npm run check:release` | Validate release scripts, changelog links, and tag workflow wiring |
|
|
199
|
+
| `npm run check:workflows` | Validate GitHub workflow syntax and Node 22 pins |
|
|
200
|
+
| `npm run docs:api` | Generate markdown API reference from TypeScript source |
|
|
201
|
+
| `npm run format:check` | Check repository formatting with Prettier |
|
|
202
|
+
| `npm run lint` | Lint source, tests, scripts, and configs with ESLint |
|
|
203
|
+
| `npm run storybook` | Start component documentation locally |
|
|
204
|
+
| `npm run build:storybook` | Build static component documentation |
|
|
205
|
+
| `npm run test:components` | Run component behavior tests |
|
|
206
|
+
| `npm run test:visual` | Run browser-rendered visual checks |
|
|
207
|
+
| `npm run release:dry-run` | Preview the npm package contents |
|
|
208
|
+
| `npm run changeset` | Add a release note and version intent |
|
|
162
209
|
|
|
163
210
|
## Versioning and releases
|
|
164
211
|
|
|
@@ -180,6 +227,10 @@ That command applies Changesets version bumps and promotes the current `[Unrelea
|
|
|
180
227
|
|
|
181
228
|
Open and merge the version commit as a normal release pull request. The release workflow publishes from `main` when the package version is not already on npm and `NPM_TOKEN` is configured.
|
|
182
229
|
|
|
230
|
+
After a successful new publish, the workflow creates an annotated `vX.Y.Z` tag on the published
|
|
231
|
+
commit. Tag messages use the NoobSociety release-note style: one concise subject, one factual
|
|
232
|
+
paragraph, and a footprint sentence grounded in the release diff.
|
|
233
|
+
|
|
183
234
|
Manual publishing remains available for maintainers after the version commit is prepared:
|
|
184
235
|
|
|
185
236
|
```bash
|
package/SECURITY.md
CHANGED
|
@@ -1,11 +1,45 @@
|
|
|
1
1
|
# Security
|
|
2
2
|
|
|
3
|
-
NSDS is a design system package, but security issues can still happen through package metadata,
|
|
3
|
+
NSDS is a design system package, but security issues can still happen through package metadata,
|
|
4
|
+
published assets, examples, or dependency changes.
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
## Scope
|
|
7
|
+
|
|
8
|
+
This policy covers the published `@noobsociety/nsds` npm package, repository automation, package
|
|
9
|
+
metadata, examples, and dependency changes.
|
|
10
|
+
|
|
11
|
+
## What to report
|
|
12
|
+
|
|
13
|
+
- Package contents that execute unintended code in consumer projects
|
|
14
|
+
- Dependency or workflow changes that create a supply-chain risk
|
|
15
|
+
- Published assets or examples that expose private information
|
|
16
|
+
- Security issues in package metadata or release automation
|
|
17
|
+
|
|
18
|
+
Not in scope: design opinions, missing components, visual regressions, or normal dependency
|
|
19
|
+
freshness requests without a vulnerability.
|
|
20
|
+
|
|
21
|
+
## How to report
|
|
22
|
+
|
|
23
|
+
Open a
|
|
24
|
+
[private security advisory](https://github.com/noobsociety/nsds/security/advisories/new)
|
|
25
|
+
on GitHub to report a vulnerability confidentially.
|
|
26
|
+
|
|
27
|
+
If you prefer email, write to **<ejelome@gmail.com>** with the subject line `[SECURITY] nsds`.
|
|
28
|
+
|
|
29
|
+
Avoid opening a public issue for a vulnerability until it has been reviewed.
|
|
6
30
|
|
|
7
31
|
Supported release line:
|
|
8
32
|
|
|
9
33
|
| Version | Supported |
|
|
10
|
-
|
|
11
|
-
| `0.x`
|
|
34
|
+
| ------- | --------- |
|
|
35
|
+
| `0.x` | Yes |
|
|
36
|
+
|
|
37
|
+
## Response commitment
|
|
38
|
+
|
|
39
|
+
We will acknowledge your report within **5 business days** and keep you updated until the issue is
|
|
40
|
+
resolved or confirmed as a non-issue.
|
|
41
|
+
|
|
42
|
+
## Disclosure
|
|
43
|
+
|
|
44
|
+
Verified issues are fixed before public disclosure. Researchers who want to be credited will be
|
|
45
|
+
named in the changelog entry for the fix.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../registry-Cyq-qspU.cjs");var t=`21.06`,n=[`web`,`game`];exports.NS=e.p,exports.icons=e.c,exports.rpgIconNames=e.c,exports.nsClientRelease=t,exports.nsClientTargets=n,exports.nsTokens=e.m,exports.questStatus=e.h,exports.rpgIconAttack=e.t,exports.rpgIconElements=e.n,exports.rpgIconEmotes=e.r,exports.rpgIconEquip=e.i,exports.rpgIconGroups=e.a,exports.rpgIconItems=e.o,exports.rpgIconMenu=e.s,exports.rpgIconRaces=e.l,exports.rpgIconSizes=e.u,exports.rpgIconSkills=e.d,exports.rpgIconWeapons=e.f;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { NS, nsTokens, questStatus } from '../components/shared/constants.js';
|
|
2
|
+
export { rpgIconAttack, rpgIconElements, rpgIconEmotes, rpgIconEquip, rpgIconGroups, rpgIconItems, rpgIconMenu, rpgIconNames, rpgIconRaces, rpgIconSizes, rpgIconSkills, rpgIconWeapons, rpgIconNames as icons, } from '../components/icons/registry.js';
|
|
3
|
+
export type { RPGIconAttack, RPGIconElement, RPGIconEmote, RPGIconEquip, RPGIconItem, RPGIconMenu, RPGIconName, RPGIconRace, RPGIconSize, RPGIconSkin, RPGIconWeapon, } from '../components/icons/registry.js';
|
|
4
|
+
export declare const nsClientRelease: "21.06";
|
|
5
|
+
export declare const nsClientTargets: readonly ["web", "game"];
|
|
6
|
+
export type NSClientTarget = (typeof nsClientTargets)[number];
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { NS, nsTokens, questStatus } from '../components/shared/constants.js';
|
|
2
|
+
export { rpgIconAttack, rpgIconElements, rpgIconEmotes, rpgIconEquip, rpgIconGroups, rpgIconItems, rpgIconMenu, rpgIconNames, rpgIconRaces, rpgIconSizes, rpgIconSkills, rpgIconWeapons, rpgIconNames as icons, } from '../components/icons/registry.js';
|
|
3
|
+
export type { RPGIconAttack, RPGIconElement, RPGIconEmote, RPGIconEquip, RPGIconItem, RPGIconMenu, RPGIconName, RPGIconRace, RPGIconSize, RPGIconSkin, RPGIconWeapon, } from '../components/icons/registry.js';
|
|
4
|
+
export declare const nsClientRelease: "21.06";
|
|
5
|
+
export declare const nsClientTargets: readonly ["web", "game"];
|
|
6
|
+
export type NSClientTarget = (typeof nsClientTargets)[number];
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { a as e, c as t, d as n, f as r, h as i, i as a, l as o, m as s, n as c, o as l, p as u, r as d, s as f, t as p, u as m } from "../registry-BizUEm6W.js";
|
|
2
|
+
//#region client/index.ts
|
|
3
|
+
var h = "21.06", g = ["web", "game"];
|
|
4
|
+
//#endregion
|
|
5
|
+
export { u as NS, t as icons, t as rpgIconNames, h as nsClientRelease, g as nsClientTargets, s as nsTokens, i as questStatus, p as rpgIconAttack, c as rpgIconElements, d as rpgIconEmotes, a as rpgIconEquip, e as rpgIconGroups, l as rpgIconItems, f as rpgIconMenu, o as rpgIconRaces, m as rpgIconSizes, n as rpgIconSkills, r as rpgIconWeapons };
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/* NoobSociety DS — Shared card base styles
|
|
2
|
+
Import this in every .card.html after styles.css:
|
|
3
|
+
<link rel="stylesheet" href="../_card-base.css">
|
|
4
|
+
(adjust path depth as needed)
|
|
5
|
+
Never override these fundamentals in per-card <style> blocks —
|
|
6
|
+
extend them instead.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
*,
|
|
10
|
+
*::before,
|
|
11
|
+
*::after {
|
|
12
|
+
box-sizing: border-box;
|
|
13
|
+
margin: 0;
|
|
14
|
+
padding: 0;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
body {
|
|
18
|
+
background: var(--ns-bg-0);
|
|
19
|
+
padding: 24px 28px;
|
|
20
|
+
font-family: var(--ns-font-pixel);
|
|
21
|
+
color: var(--ns-ink);
|
|
22
|
+
display: flex;
|
|
23
|
+
flex-direction: column;
|
|
24
|
+
gap: 20px;
|
|
25
|
+
overflow: auto;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/* ── Section ─────────────────────────────────── */
|
|
29
|
+
.card-section {
|
|
30
|
+
display: flex;
|
|
31
|
+
flex-direction: column;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.section-label {
|
|
35
|
+
font-size: 7px;
|
|
36
|
+
color: var(--ns-ink-faint);
|
|
37
|
+
letter-spacing: 0.08em;
|
|
38
|
+
text-transform: uppercase;
|
|
39
|
+
margin-bottom: 8px;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.divider {
|
|
43
|
+
border: none;
|
|
44
|
+
border-top: 1px solid var(--ns-line-soft);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/* ── Layout helpers ──────────────────────────── */
|
|
48
|
+
.row {
|
|
49
|
+
display: flex;
|
|
50
|
+
flex-wrap: wrap;
|
|
51
|
+
gap: 10px;
|
|
52
|
+
align-items: flex-end;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.col {
|
|
56
|
+
display: flex;
|
|
57
|
+
flex-direction: column;
|
|
58
|
+
gap: 6px;
|
|
59
|
+
align-items: flex-start;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/* ── Swatch / chip ───────────────────────────── */
|
|
63
|
+
.sw {
|
|
64
|
+
display: flex;
|
|
65
|
+
flex-direction: column;
|
|
66
|
+
gap: 5px;
|
|
67
|
+
align-items: flex-start;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.chip {
|
|
71
|
+
width: 56px;
|
|
72
|
+
height: 40px;
|
|
73
|
+
border-radius: var(--ns-radius-sm, 4px);
|
|
74
|
+
border: 1px solid var(--ns-line);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.chip-lg {
|
|
78
|
+
width: 80px;
|
|
79
|
+
height: 56px;
|
|
80
|
+
border-radius: var(--ns-radius-sm, 4px);
|
|
81
|
+
border: 1px solid var(--ns-line);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/* ── Labels ──────────────────────────────────── */
|
|
85
|
+
.tk {
|
|
86
|
+
font-size: 6px;
|
|
87
|
+
color: var(--ns-ink-faint);
|
|
88
|
+
white-space: nowrap;
|
|
89
|
+
}
|
|
90
|
+
.hex {
|
|
91
|
+
font-size: 6px;
|
|
92
|
+
color: var(--ns-ink-dim);
|
|
93
|
+
white-space: nowrap;
|
|
94
|
+
}
|
|
95
|
+
.sub {
|
|
96
|
+
font-size: 7px;
|
|
97
|
+
color: var(--ns-ink-dim);
|
|
98
|
+
white-space: nowrap;
|
|
99
|
+
}
|
|
@@ -1,16 +1,29 @@
|
|
|
1
1
|
import type { HTMLAttributes, ReactElement } from 'react';
|
|
2
2
|
import type { NSStyle } from '../shared/styles.js';
|
|
3
|
+
/** Built-in bar kinds. Each maps to its own fill + label-colour tokens. */
|
|
4
|
+
export type HUDBarVariant = 'hp' | 'mp' | 'xp' | 'stamina';
|
|
3
5
|
export interface HUDBarProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'style'> {
|
|
6
|
+
/** Built-in bar kind — sets fill colour, label colour and (for stamina) segmentation. */
|
|
7
|
+
variant?: HUDBarVariant;
|
|
4
8
|
/** Current stat value. */
|
|
5
9
|
value?: number;
|
|
6
10
|
/** Maximum stat value. */
|
|
7
11
|
max?: number;
|
|
8
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* Label text. Defaults to `"{value} / {max}"`.
|
|
14
|
+
* Pass a string to override, or `false`/`""` to hide the label entirely.
|
|
15
|
+
*/
|
|
16
|
+
label?: string | false;
|
|
17
|
+
/** Render the fill as discrete notched segments (defaults to the variant's setting). */
|
|
18
|
+
segmented?: boolean;
|
|
19
|
+
/** Width of one segment + gutter in px, when `segmented`. */
|
|
20
|
+
segmentSize?: number;
|
|
21
|
+
/** Bar fill colour. Overrides the variant's fill. */
|
|
9
22
|
fillColor?: string;
|
|
10
|
-
/** Bar track
|
|
23
|
+
/** Bar track colour. */
|
|
11
24
|
trackColor?: string;
|
|
12
25
|
/** Bar height in px. */
|
|
13
26
|
height?: number;
|
|
14
27
|
style?: NSStyle;
|
|
15
28
|
}
|
|
16
|
-
export declare function HUDBar({ value, max, fillColor, trackColor, height, style, role, ...props }: HUDBarProps): ReactElement;
|
|
29
|
+
export declare function HUDBar({ variant, value, max, label, segmented, segmentSize, fillColor, trackColor, height, style, role, ...props }: HUDBarProps): ReactElement;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactElement } from 'react';
|
|
2
|
+
import type { NSStyle } from '../shared/styles.js';
|
|
3
|
+
export interface HUDChatMessage {
|
|
4
|
+
/** Sender display name */
|
|
5
|
+
sender: string;
|
|
6
|
+
/** Message text */
|
|
7
|
+
text: string;
|
|
8
|
+
/** Sender name color — defaults to var(--ns-ink) */
|
|
9
|
+
color?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface HUDChatProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'style'> {
|
|
12
|
+
/** Chat messages to display, oldest first */
|
|
13
|
+
messages?: HUDChatMessage[];
|
|
14
|
+
/** Panel height in px */
|
|
15
|
+
height?: number;
|
|
16
|
+
/** Message font size in px */
|
|
17
|
+
fontSize?: number;
|
|
18
|
+
style?: NSStyle;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* HUDChat — compact scrollable chat log.
|
|
22
|
+
*
|
|
23
|
+
* Each message row: `[sender]:` in a player colour + message text in dim white.
|
|
24
|
+
* Designed for small HUD footprints (fontSize 4–6 px).
|
|
25
|
+
*/
|
|
26
|
+
export declare function HUDChat({ messages, height, fontSize, style, ...props }: HUDChatProps): ReactElement;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type HTMLAttributes, type ReactElement } from 'react';
|
|
2
|
+
import type { NSStyle } from '../shared/styles.js';
|
|
3
|
+
export interface HUDJoystickProps extends Omit<HTMLAttributes<HTMLDivElement>, 'style' | 'onChange'> {
|
|
4
|
+
/** Outer diameter in px. The component renders a square of this size. */
|
|
5
|
+
size?: number;
|
|
6
|
+
/** Thumb diameter as a fraction of size (0–1). */
|
|
7
|
+
thumbSize?: number;
|
|
8
|
+
/**
|
|
9
|
+
* Fires continuously during drag with normalised x, y values in [-1, 1].
|
|
10
|
+
* Emits (0, 0) when the thumb is released.
|
|
11
|
+
*/
|
|
12
|
+
onChange?: (x: number, y: number) => void;
|
|
13
|
+
style?: NSStyle;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* HUDJoystick — interactive virtual thumbstick.
|
|
17
|
+
*
|
|
18
|
+
* Drag the thumb within the circular pad; onChange fires normalised
|
|
19
|
+
* x/y coordinates in [-1, 1]. The thumb snaps back to centre on release.
|
|
20
|
+
*/
|
|
21
|
+
export declare function HUDJoystick({ size, thumbSize, onChange, style, ...props }: HUDJoystickProps): ReactElement;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactElement } from 'react';
|
|
2
|
+
import type { NSStyle } from '../shared/styles.js';
|
|
3
|
+
export interface HUDMinimapProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'style'> {
|
|
4
|
+
/** Map background color. */
|
|
5
|
+
mapColor?: string;
|
|
6
|
+
/** Player marker color. */
|
|
7
|
+
markerColor?: string;
|
|
8
|
+
/** Accent color for paths / points of interest. */
|
|
9
|
+
accentColor?: string;
|
|
10
|
+
/** Whether to show a border frame. */
|
|
11
|
+
framed?: boolean;
|
|
12
|
+
style?: NSStyle;
|
|
13
|
+
}
|
|
14
|
+
export declare function HUDMinimap({ mapColor, markerColor, accentColor, framed, style, ...props }: HUDMinimapProps): ReactElement;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactElement } from 'react';
|
|
2
|
+
import type { NSStyle } from '../shared/styles.js';
|
|
3
|
+
declare const VARIANTS: {
|
|
4
|
+
readonly dark: {
|
|
5
|
+
readonly background: "rgba(12,16,22,0.72)";
|
|
6
|
+
readonly border: "1px solid rgba(255,255,255,0.10)";
|
|
7
|
+
};
|
|
8
|
+
readonly light: {
|
|
9
|
+
readonly background: "rgba(255,255,255,0.05)";
|
|
10
|
+
readonly border: "1px solid rgba(255,255,255,0.14)";
|
|
11
|
+
};
|
|
12
|
+
readonly clear: {
|
|
13
|
+
readonly background: "transparent";
|
|
14
|
+
readonly border: "1px solid rgba(255,255,255,0.08)";
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
export interface HUDPanelProps extends Omit<HTMLAttributes<HTMLDivElement>, 'style'> {
|
|
18
|
+
/** Visual treatment of the panel surface. */
|
|
19
|
+
variant?: keyof typeof VARIANTS;
|
|
20
|
+
/** Corner radius in px. */
|
|
21
|
+
radius?: number;
|
|
22
|
+
style?: NSStyle;
|
|
23
|
+
}
|
|
24
|
+
export declare function HUDPanel({ variant, radius, style, children, ...props }: HUDPanelProps): ReactElement;
|
|
25
|
+
export {};
|