@noobsociety/nsds 0.2.1 → 0.3.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/CHANGELOG.md +17 -1
- package/CONTRIBUTING.md +25 -1
- package/README.md +29 -2
- package/dist/components/buttons/Button.d.ts +17 -20
- package/dist/components/cards/FeatureCard.d.ts +15 -17
- package/dist/components/cards/QuestCard.d.ts +12 -15
- package/dist/components/hud/HUDBar.d.ts +15 -16
- package/dist/components/hud/HUDDivider.d.ts +9 -10
- package/dist/components/hud/HUDLabel.d.ts +21 -16
- package/dist/components/icons/RPGIcon.d.ts +25 -38
- package/dist/components/navigation/SectionArrow.d.ts +8 -12
- package/dist/components/react/index.d.ts +17 -0
- package/dist/components/shared/styles.d.ts +47 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -18
- package/dist/index.js +35 -27
- package/dist/tailwind/preset.d.cts +4 -0
- package/dist/tailwind/preset.d.ts +4 -0
- package/package.json +45 -11
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,21 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.3.0] - 2026-06-20
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- First-class TypeScript component source with generated declaration output.
|
|
14
|
+
- Component tests for class names, variants, invalid runtime values, and accessibility attributes.
|
|
15
|
+
- Package export linting, packed install checks, and Tailwind preset type validation.
|
|
16
|
+
- Diataxis-style public docs, generated API reference, and static landing page.
|
|
17
|
+
- Browser-rendered visual checks for the public component specimen surface.
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
|
|
21
|
+
- Storybook stories now use typed `.tsx` examples and include a full component showcase.
|
|
22
|
+
- CI and release checks now install the browser needed for visual coverage.
|
|
23
|
+
|
|
9
24
|
## [0.2.1] - 2026-06-20
|
|
10
25
|
|
|
11
26
|
### Added
|
|
@@ -76,7 +91,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
|
76
91
|
|
|
77
92
|
- Initial NSDS package with tokens, CSS primitives, React components, and Tailwind support.
|
|
78
93
|
|
|
79
|
-
[Unreleased]: https://github.com/noobsociety/nsds/compare/v0.
|
|
94
|
+
[Unreleased]: https://github.com/noobsociety/nsds/compare/v0.3.0...HEAD
|
|
95
|
+
[0.3.0]: https://github.com/noobsociety/nsds/compare/v0.2.1...v0.3.0
|
|
80
96
|
[0.2.1]: https://github.com/noobsociety/nsds/compare/v0.2.0...v0.2.1
|
|
81
97
|
[0.2.0]: https://github.com/noobsociety/nsds/compare/v0.1.2...v0.2.0
|
|
82
98
|
[0.1.2]: https://github.com/noobsociety/nsds/compare/v0.1.1...v0.1.2
|
package/CONTRIBUTING.md
CHANGED
|
@@ -23,7 +23,9 @@ npm run storybook
|
|
|
23
23
|
- Prefer CSS tokens and shared primitives over one-off styles.
|
|
24
24
|
- Keep React components small and framework-light.
|
|
25
25
|
- Add or update Storybook stories when changing public component behavior or props.
|
|
26
|
-
- Add or update
|
|
26
|
+
- Add or update component tests when changing class names, variants, props, or accessibility behavior.
|
|
27
|
+
- Add or update package checks when changing import behavior, package exports, or generated types.
|
|
28
|
+
- Run `npm run docs:api` when public TypeScript types change.
|
|
27
29
|
- Keep third-party code and assets license-compatible with MIT.
|
|
28
30
|
|
|
29
31
|
## Versioning
|
|
@@ -88,6 +90,28 @@ npm run build:storybook
|
|
|
88
90
|
|
|
89
91
|
Stories should show the stable public props, common variants, disabled or edge states when relevant, and realistic token-backed styling. Avoid documenting private implementation details as API.
|
|
90
92
|
|
|
93
|
+
## Tests
|
|
94
|
+
|
|
95
|
+
Component behavior tests run with:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
npm run test:components
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Browser-rendered visual checks run with:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
npm run test:visual
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Install and export checks run as part of `npm run check`, and can be run directly:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
npm run check:docs
|
|
111
|
+
npm run check:exports
|
|
112
|
+
npm run check:install
|
|
113
|
+
```
|
|
114
|
+
|
|
91
115
|
## Release checks
|
|
92
116
|
|
|
93
117
|
Before merging a package-impacting change:
|
package/README.md
CHANGED
|
@@ -10,6 +10,7 @@ NSDS is Tailwind-first and token-driven. It ships the public package surface nee
|
|
|
10
10
|
- [Quick start](#quick-start)
|
|
11
11
|
- [Package exports](#package-exports)
|
|
12
12
|
- [Components](#components)
|
|
13
|
+
- [Documentation](#documentation)
|
|
13
14
|
- [Repository layout](#repository-layout)
|
|
14
15
|
- [Development](#development)
|
|
15
16
|
- [Versioning and releases](#versioning-and-releases)
|
|
@@ -104,14 +105,34 @@ Build static Storybook documentation:
|
|
|
104
105
|
npm run build:storybook
|
|
105
106
|
```
|
|
106
107
|
|
|
108
|
+
## Documentation
|
|
109
|
+
|
|
110
|
+
Public docs live in [`docs/`](./docs/README.md) and follow the Diataxis model:
|
|
111
|
+
|
|
112
|
+
- tutorials for first-time setup
|
|
113
|
+
- how-to guides for integration tasks
|
|
114
|
+
- reference pages for exports, tokens, classes, and generated API details
|
|
115
|
+
- explanation pages for design, accessibility, and versioning decisions
|
|
116
|
+
|
|
117
|
+
Generate the API reference from TypeScript source:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
npm run docs:api
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
The static landing page lives in [`site/`](./site/index.html).
|
|
124
|
+
|
|
107
125
|
## Repository layout
|
|
108
126
|
|
|
109
127
|
| Path | Purpose |
|
|
110
128
|
| --- | --- |
|
|
111
129
|
| `styles.css` | Public CSS entry point |
|
|
112
130
|
| `tokens/` | CSS custom properties for color, type, spacing, motion, and HUD values |
|
|
113
|
-
| `components/` | React
|
|
131
|
+
| `components/` | TypeScript React source, primitive CSS, and Storybook stories |
|
|
114
132
|
| `tailwind/` | Tailwind preset source |
|
|
133
|
+
| `docs/` | Public documentation and generated API reference |
|
|
134
|
+
| `site/` | Static public landing page |
|
|
135
|
+
| `tests/` | Component and browser-rendered visual checks |
|
|
115
136
|
|
|
116
137
|
## Development
|
|
117
138
|
|
|
@@ -127,9 +148,15 @@ Common scripts:
|
|
|
127
148
|
| Script | Purpose |
|
|
128
149
|
| --- | --- |
|
|
129
150
|
| `npm run build` | Build the package into `dist/` |
|
|
130
|
-
| `npm run check` |
|
|
151
|
+
| `npm run check` | Run build, package guards, type checks, tests, and import smoke checks |
|
|
152
|
+
| `npm run check:docs` | Regenerate API docs and fail when generated docs drift |
|
|
153
|
+
| `npm run check:exports` | Validate npm exports and declaration entry points |
|
|
154
|
+
| `npm run check:install` | Install the packed package in a temporary consumer project |
|
|
155
|
+
| `npm run docs:api` | Generate markdown API reference from TypeScript source |
|
|
131
156
|
| `npm run storybook` | Start component documentation locally |
|
|
132
157
|
| `npm run build:storybook` | Build static component documentation |
|
|
158
|
+
| `npm run test:components` | Run component behavior tests |
|
|
159
|
+
| `npm run test:visual` | Run browser-rendered visual checks |
|
|
133
160
|
| `npm run release:dry-run` | Preview the npm package contents |
|
|
134
161
|
| `npm run changeset` | Add a release note and version intent |
|
|
135
162
|
|
|
@@ -1,21 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
style?: React.CSSProperties;
|
|
18
|
-
type?: 'button' | 'submit' | 'reset';
|
|
1
|
+
import type { AnchorHTMLAttributes, HTMLAttributes, MouseEventHandler, ReactElement, ReactNode } from 'react';
|
|
2
|
+
export type ButtonVariant = 'play' | 'ghost';
|
|
3
|
+
export type ButtonSize = 'sm' | 'md' | 'lg';
|
|
4
|
+
export interface ButtonProps extends Omit<HTMLAttributes<HTMLElement>, 'onClick'> {
|
|
5
|
+
/** Visual style. */
|
|
6
|
+
variant?: ButtonVariant;
|
|
7
|
+
/** Control size. */
|
|
8
|
+
size?: ButtonSize;
|
|
9
|
+
/** Render as an anchor when provided. */
|
|
10
|
+
href?: string;
|
|
11
|
+
rel?: string;
|
|
12
|
+
target?: AnchorHTMLAttributes<HTMLAnchorElement>['target'];
|
|
13
|
+
onClick?: MouseEventHandler<HTMLAnchorElement | HTMLButtonElement>;
|
|
14
|
+
children?: ReactNode;
|
|
15
|
+
disabled?: boolean;
|
|
16
|
+
type?: 'button' | 'submit' | 'reset';
|
|
19
17
|
}
|
|
20
|
-
|
|
21
|
-
export declare function Button(props: ButtonProps): React.ReactElement;
|
|
18
|
+
export declare function Button({ variant, size, href, onClick, children, disabled, className, type, ...props }: ButtonProps): ReactElement;
|
|
@@ -1,18 +1,16 @@
|
|
|
1
|
-
import type
|
|
2
|
-
|
|
3
|
-
export interface FeatureCardProps {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
style?: React.CSSProperties;
|
|
1
|
+
import type { LiHTMLAttributes, ReactElement, ReactNode } from 'react';
|
|
2
|
+
import type { NSStyle } from '../shared/styles.js';
|
|
3
|
+
export interface FeatureCardProps extends Omit<LiHTMLAttributes<HTMLLIElement>, 'children' | 'style' | 'title'> {
|
|
4
|
+
/** Pixel-art icon element. */
|
|
5
|
+
icon: ReactNode;
|
|
6
|
+
/** Card heading. */
|
|
7
|
+
title: string;
|
|
8
|
+
/** Body copy. */
|
|
9
|
+
body: string;
|
|
10
|
+
/** Small tag label. */
|
|
11
|
+
tag?: string;
|
|
12
|
+
/** Icon accent color. */
|
|
13
|
+
iconColor?: string;
|
|
14
|
+
style?: NSStyle;
|
|
16
15
|
}
|
|
17
|
-
|
|
18
|
-
export declare function FeatureCard(props: FeatureCardProps): React.ReactElement;
|
|
16
|
+
export declare function FeatureCard({ icon, title, body, tag, iconColor, className, style, ...props }: FeatureCardProps): ReactElement;
|
|
@@ -1,16 +1,13 @@
|
|
|
1
|
-
import type
|
|
2
|
-
|
|
3
|
-
export interface QuestCardProps {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
className?: string;
|
|
13
|
-
style?: React.CSSProperties;
|
|
1
|
+
import type { LiHTMLAttributes, ReactElement } from 'react';
|
|
2
|
+
export type QuestCardStatus = 'done' | 'active' | 'planned' | 'locked';
|
|
3
|
+
export interface QuestCardProps extends Omit<LiHTMLAttributes<HTMLLIElement>, 'children' | 'title'> {
|
|
4
|
+
/** Gate number shown in the title. */
|
|
5
|
+
gate: number;
|
|
6
|
+
/** Short gate name. */
|
|
7
|
+
title: string;
|
|
8
|
+
/** One-sentence description. */
|
|
9
|
+
body: string;
|
|
10
|
+
/** Controls border color, tint, icon, and pill label. */
|
|
11
|
+
status?: QuestCardStatus;
|
|
14
12
|
}
|
|
15
|
-
|
|
16
|
-
export declare function QuestCard(props: QuestCardProps): React.ReactElement;
|
|
13
|
+
export declare function QuestCard({ gate, title, body, status, className, ...props }: QuestCardProps): ReactElement;
|
|
@@ -1,17 +1,16 @@
|
|
|
1
|
-
import type
|
|
2
|
-
|
|
3
|
-
export interface HUDBarProps {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
1
|
+
import type { HTMLAttributes, ReactElement } from 'react';
|
|
2
|
+
import type { NSStyle } from '../shared/styles.js';
|
|
3
|
+
export interface HUDBarProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'style'> {
|
|
4
|
+
/** Current stat value. */
|
|
5
|
+
value?: number;
|
|
6
|
+
/** Maximum stat value. */
|
|
7
|
+
max?: number;
|
|
8
|
+
/** Bar fill color. */
|
|
9
|
+
fillColor?: string;
|
|
10
|
+
/** Bar track color. */
|
|
11
|
+
trackColor?: string;
|
|
12
|
+
/** Bar height in px. */
|
|
13
|
+
height?: number;
|
|
14
|
+
style?: NSStyle;
|
|
15
15
|
}
|
|
16
|
-
|
|
17
|
-
export declare function HUDBar(props: HUDBarProps): React.ReactElement;
|
|
16
|
+
export declare function HUDBar({ value, max, fillColor, trackColor, height, style, role, ...props }: HUDBarProps): ReactElement;
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import type
|
|
2
|
-
|
|
3
|
-
export interface HUDDividerProps {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import type { HTMLAttributes, ReactElement } from 'react';
|
|
2
|
+
import type { NSStyle } from '../shared/styles.js';
|
|
3
|
+
export interface HUDDividerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'style'> {
|
|
4
|
+
/** Vertical by default; use horizontal for a 1px row rule. */
|
|
5
|
+
direction?: 'vertical' | 'horizontal';
|
|
6
|
+
/** Line color. */
|
|
7
|
+
color?: string;
|
|
8
|
+
style?: NSStyle;
|
|
9
9
|
}
|
|
10
|
-
|
|
11
|
-
export declare function HUDDivider(props: HUDDividerProps): React.ReactElement;
|
|
10
|
+
export declare function HUDDivider({ direction, color, style, role, ...props }: HUDDividerProps): ReactElement;
|
|
@@ -1,17 +1,22 @@
|
|
|
1
|
-
import type
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
1
|
+
import type { HTMLAttributes, ReactElement } from 'react';
|
|
2
|
+
import type { NSStyle } from '../shared/styles.js';
|
|
3
|
+
declare const JUSTIFY: {
|
|
4
|
+
readonly left: "flex-start";
|
|
5
|
+
readonly center: "center";
|
|
6
|
+
readonly right: "flex-end";
|
|
7
|
+
};
|
|
8
|
+
export interface HUDLabelProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'style'> {
|
|
9
|
+
/** Display text. */
|
|
10
|
+
text?: string;
|
|
11
|
+
/** Text alignment within the container. */
|
|
12
|
+
align?: keyof typeof JUSTIFY;
|
|
13
|
+
/** Uniform scale multiplier applied to fontSize. */
|
|
14
|
+
scale?: number;
|
|
15
|
+
/** Text color. */
|
|
16
|
+
color?: string;
|
|
17
|
+
/** Base font size in px, before scale. */
|
|
18
|
+
fontSize?: number;
|
|
19
|
+
style?: NSStyle;
|
|
15
20
|
}
|
|
16
|
-
|
|
17
|
-
export
|
|
21
|
+
export declare function HUDLabel({ text, align, scale, color, fontSize, style, ...props }: HUDLabelProps): ReactElement;
|
|
22
|
+
export {};
|
|
@@ -1,42 +1,29 @@
|
|
|
1
|
-
import type
|
|
2
|
-
|
|
3
|
-
export type RPGIconWeapon = 'sword' | 'staff' | 'bow' | 'katar' | 'book' | 'hammer';
|
|
1
|
+
import type { CSSProperties, ReactElement } from 'react';
|
|
2
|
+
export type RPGIconWeapon = 'sword' | 'staff' | 'bow' | 'katar' | 'book' | 'hammer';
|
|
4
3
|
export type RPGIconElement = 'neutral' | 'earth' | 'wind' | 'water' | 'fire' | 'light' | 'dark' | 'void';
|
|
5
|
-
export type RPGIconRace
|
|
6
|
-
export type RPGIconSize
|
|
7
|
-
|
|
8
|
-
export type RPGIconName =
|
|
9
|
-
| RPGIconWeapon
|
|
10
|
-
| RPGIconElement
|
|
11
|
-
| RPGIconRace
|
|
12
|
-
| RPGIconSize;
|
|
13
|
-
|
|
4
|
+
export type RPGIconRace = 'human' | 'beast' | 'demon' | 'angel' | 'spirit';
|
|
5
|
+
export type RPGIconSize = 'small' | 'medium' | 'large';
|
|
6
|
+
export type RPGIconName = RPGIconWeapon | RPGIconElement | RPGIconRace | RPGIconSize;
|
|
14
7
|
export interface RPGIconProps {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
*
|
|
21
|
-
* Elements (8): neutral · earth · wind · water · fire · light · dark · void
|
|
22
|
-
* (from identity.ts ELEMENTS + ELEMENT_DISPLAY)
|
|
23
|
-
*
|
|
24
|
-
* Races (5): human · beast · demon · angel · spirit
|
|
25
|
-
* (illustrative — race is free text in the game)
|
|
26
|
-
*
|
|
27
|
-
* Sizes (3): small · medium · large
|
|
28
|
-
* (from identity.ts BODY_SIZES)
|
|
29
|
-
*/
|
|
30
|
-
name?: RPGIconName;
|
|
31
|
-
/** Rendered size in px (width = height). Default: 22 */
|
|
32
|
-
size?: number;
|
|
33
|
-
style?: React.CSSProperties;
|
|
8
|
+
/** Icon name across weapon, element, race, and size groups. */
|
|
9
|
+
name?: RPGIconName;
|
|
10
|
+
/** Rendered size in px. */
|
|
11
|
+
size?: number;
|
|
12
|
+
style?: CSSProperties;
|
|
34
13
|
}
|
|
35
|
-
|
|
36
|
-
export declare function RPGIcon(props: RPGIconProps): React.ReactElement;
|
|
37
|
-
|
|
38
|
-
/** Sorted list of all valid icon names */
|
|
39
14
|
export declare const icons: RPGIconName[];
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
15
|
+
/**
|
|
16
|
+
* RPGIcon — 22 original pixel-art icons.
|
|
17
|
+
*
|
|
18
|
+
* Weapons (6): sword · staff · bow · katar · book · hammer
|
|
19
|
+
* Elements (8): neutral · earth · wind · water · fire · light · dark · void
|
|
20
|
+
* Races (5): human · beast · demon · angel · spirit
|
|
21
|
+
* Sizes (3): small · medium · large
|
|
22
|
+
*/
|
|
23
|
+
export declare const RPGIcon: (({ name, size, style, }: RPGIconProps) => ReactElement) & {
|
|
24
|
+
icons: RPGIconName[];
|
|
25
|
+
};
|
|
26
|
+
/** @deprecated Use RPGIcon — kept for backward compatibility */
|
|
27
|
+
export declare const HUDIcon: (({ name, size, style, }: RPGIconProps) => ReactElement) & {
|
|
28
|
+
icons: RPGIconName[];
|
|
29
|
+
};
|
|
@@ -1,13 +1,9 @@
|
|
|
1
|
-
import type
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
children?: React.ReactNode;
|
|
9
|
-
className?: string;
|
|
10
|
-
style?: React.CSSProperties;
|
|
1
|
+
import type { AnchorHTMLAttributes, ReactElement, ReactNode } from 'react';
|
|
2
|
+
export interface SectionArrowProps extends Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'children' | 'href'> {
|
|
3
|
+
/** href of the next section. */
|
|
4
|
+
href: string;
|
|
5
|
+
/** Accessible label for screen readers. */
|
|
6
|
+
label: string;
|
|
7
|
+
children?: ReactNode;
|
|
11
8
|
}
|
|
12
|
-
|
|
13
|
-
export declare function SectionArrow(props: SectionArrowProps): React.ReactElement;
|
|
9
|
+
export declare function SectionArrow({ href, label, className, children, ...props }: SectionArrowProps): ReactElement;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export { Button } from '../buttons/Button.js';
|
|
2
|
+
export type { ButtonProps, ButtonSize, ButtonVariant } from '../buttons/Button.js';
|
|
3
|
+
export { FeatureCard } from '../cards/FeatureCard.js';
|
|
4
|
+
export type { FeatureCardProps } from '../cards/FeatureCard.js';
|
|
5
|
+
export { QuestCard } from '../cards/QuestCard.js';
|
|
6
|
+
export type { QuestCardProps, QuestCardStatus } from '../cards/QuestCard.js';
|
|
7
|
+
export { HUDBar } from '../hud/HUDBar.js';
|
|
8
|
+
export type { HUDBarProps } from '../hud/HUDBar.js';
|
|
9
|
+
export { HUDDivider } from '../hud/HUDDivider.js';
|
|
10
|
+
export type { HUDDividerProps } from '../hud/HUDDivider.js';
|
|
11
|
+
export { HUDLabel } from '../hud/HUDLabel.js';
|
|
12
|
+
export type { HUDLabelProps } from '../hud/HUDLabel.js';
|
|
13
|
+
export { RPGIcon, HUDIcon, icons } from '../icons/RPGIcon.js';
|
|
14
|
+
export type { RPGIconElement, RPGIconName, RPGIconProps, RPGIconRace, RPGIconSize, RPGIconWeapon, } from '../icons/RPGIcon.js';
|
|
15
|
+
export { SectionArrow } from '../navigation/SectionArrow.js';
|
|
16
|
+
export type { SectionArrowProps } from '../navigation/SectionArrow.js';
|
|
17
|
+
export type { NSStyle } from '../shared/styles.js';
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { CSSProperties } from 'react';
|
|
2
|
+
export type NSStyle = CSSProperties & Record<`--${string}`, string | number | undefined>;
|
|
3
|
+
export type ClassValue = string | false | null | undefined;
|
|
4
|
+
export declare const cx: (...parts: ClassValue[]) => string;
|
|
5
|
+
export declare function mergeStyles(base: NSStyle, override?: NSStyle): NSStyle;
|
|
6
|
+
/** Token shortcuts for inline style props — lowercase to avoid DS compiler treating this as a component */
|
|
7
|
+
export declare const nsTokens: {
|
|
8
|
+
readonly gold: "var(--ns-gold)";
|
|
9
|
+
readonly pink: "var(--ns-pink)";
|
|
10
|
+
readonly purple: "var(--ns-purple)";
|
|
11
|
+
readonly cyan: "var(--ns-cyan)";
|
|
12
|
+
readonly green: "var(--ns-green)";
|
|
13
|
+
readonly orange: "var(--ns-orange)";
|
|
14
|
+
readonly later: "var(--ns-ink-faint)";
|
|
15
|
+
};
|
|
16
|
+
/** @deprecated Use nsTokens */
|
|
17
|
+
export declare const NS: {
|
|
18
|
+
readonly gold: "var(--ns-gold)";
|
|
19
|
+
readonly pink: "var(--ns-pink)";
|
|
20
|
+
readonly purple: "var(--ns-purple)";
|
|
21
|
+
readonly cyan: "var(--ns-cyan)";
|
|
22
|
+
readonly green: "var(--ns-green)";
|
|
23
|
+
readonly orange: "var(--ns-orange)";
|
|
24
|
+
readonly later: "var(--ns-ink-faint)";
|
|
25
|
+
};
|
|
26
|
+
export declare const questStatus: {
|
|
27
|
+
readonly done: {
|
|
28
|
+
readonly className: "ns-quest-card--done";
|
|
29
|
+
readonly label: "HOLDS";
|
|
30
|
+
readonly icon: "✓";
|
|
31
|
+
};
|
|
32
|
+
readonly active: {
|
|
33
|
+
readonly className: "ns-quest-card--active";
|
|
34
|
+
readonly label: "BUILDING";
|
|
35
|
+
readonly icon: "▶";
|
|
36
|
+
};
|
|
37
|
+
readonly planned: {
|
|
38
|
+
readonly className: "ns-quest-card--planned";
|
|
39
|
+
readonly label: "PLANNED";
|
|
40
|
+
readonly icon: "◌";
|
|
41
|
+
};
|
|
42
|
+
readonly locked: {
|
|
43
|
+
readonly className: "ns-quest-card--locked";
|
|
44
|
+
readonly label: "LATER";
|
|
45
|
+
readonly icon: "✦";
|
|
46
|
+
};
|
|
47
|
+
};
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("react/jsx-runtime");var t=(...e)=>e.filter(Boolean).join(` `);function n(e,t){return t?{...e,...t}:e}var r={gold:`var(--ns-gold)`,pink:`var(--ns-pink)`,purple:`var(--ns-purple)`,cyan:`var(--ns-cyan)`,green:`var(--ns-green)`,orange:`var(--ns-orange)`,later:`var(--ns-ink-faint)`},i={done:{className:`ns-quest-card--done`,label:`HOLDS`,icon:`✓`},active:{className:`ns-quest-card--active`,label:`BUILDING`,icon:`▶`},planned:{className:`ns-quest-card--planned`,label:`PLANNED`,icon:`◌`},locked:{className:`ns-quest-card--locked`,label:`LATER`,icon:`✦`}},a=new Set([`play`,`ghost`]),o=new Set([`sm`,`md`,`lg`]);function s({variant:n=`play`,size:r=`md`,href:i,onClick:s,children:c,disabled:l=!1,className:u,type:d=`button`,...f}){let p=a.has(n)?n:`play`,m=o.has(r)?r:`md`,h=t(`ns-button`,`ns-button--${p}`,`ns-button--${m}`,u),g={...f,className:h,onClick:l?void 0:s};return i?(0,e.jsx)(`a`,{...g,href:l?void 0:i,"aria-disabled":l||void 0,tabIndex:l?-1:f.tabIndex,children:c}):(0,e.jsx)(`button`,{...g,type:d,disabled:l,children:c})}function c({icon:i,title:a,body:o,tag:s,iconColor:c=r.gold,className:l,style:u,...d}){return(0,e.jsxs)(`li`,{...d,className:t(`ns-card ns-feature-card`,l),style:n({"--ns-feature-accent":c},u),children:[(0,e.jsx)(`span`,{className:`ns-icon-slot ns-feature-card__icon`,"aria-hidden":`true`,children:i}),(0,e.jsxs)(`div`,{children:[(0,e.jsx)(`h3`,{className:`ns-feature-card__title`,children:a}),(0,e.jsx)(`p`,{className:`ns-feature-card__body`,children:o})]}),s&&(0,e.jsx)(`span`,{className:`ns-tag ns-feature-card__tag`,children:s})]})}function l({gate:n,title:r,body:a,status:o=`locked`,className:s,...c}){let l=i[o]||i.locked;return(0,e.jsxs)(`li`,{...c,className:t(`ns-quest-card`,l.className,s),children:[(0,e.jsx)(`span`,{className:`ns-quest-card__icon`,"aria-hidden":`true`,children:l.icon}),(0,e.jsxs)(`div`,{className:`ns-quest-card__body`,children:[(0,e.jsx)(`p`,{className:`ns-quest-card__title`,children:`Gate ${n} · ${r}`}),(0,e.jsx)(`p`,{className:`ns-quest-card__desc`,children:a}),(0,e.jsx)(`span`,{className:`ns-status-pill`,children:l.label})]})]})}var u=`var(--ns-font-pixel, "Press Start 2P", monospace)`;function d({value:t=40,max:n=40,fillColor:r=`var(--hud-hp-fill, #4caf73)`,trackColor:i=`var(--hud-track, rgba(255, 255, 255, 0.10))`,height:a=14,style:o}){let s=n>0?Math.max(0,Math.min(100,t/n*100)):0;return(0,e.jsxs)(`div`,{style:{position:`relative`,background:i,height:a,overflow:`hidden`,fontFamily:u,...o},children:[(0,e.jsx)(`div`,{style:{position:`absolute`,inset:0,width:`${s}%`,background:r,transition:`width .35s ease-out`}}),(0,e.jsxs)(`span`,{style:{position:`absolute`,inset:0,display:`flex`,alignItems:`center`,paddingLeft:4,fontSize:4,color:`#fff`,pointerEvents:`none`},children:[t,` / `,n]})]})}function f({direction:t=`vertical`,color:n=`var(--ns-line)`,style:r}){let i=t===`vertical`;return(0,e.jsx)(`div`,{style:{width:i?`1px`:`100%`,height:i?`100%`:`1px`,background:n,flexShrink:0,alignSelf:`stretch`,...r}})}var p=`var(--ns-font-pixel, "Press Start 2P", monospace)`,m={left:`flex-start`,center:`center`,right:`flex-end`};function h({text:t=`Label`,align:n=`left`,scale:r=1,color:i=`var(--ns-ink)`,fontSize:a=5,style:o}){return(0,e.jsx)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:m[n]||m.left,paddingLeft:n===`right`?0:3,paddingRight:n===`left`?0:3,fontFamily:p,fontSize:a*r,color:i,whiteSpace:`nowrap`,overflow:`hidden`,width:`100%`,height:`100%`,...o},children:t})}function g(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`line`,{x1:`13`,y1:`2`,x2:`4`,y2:`11`,stroke:`#cfd8e2`,strokeWidth:`2`,strokeLinecap:`square`}),(0,e.jsx)(`line`,{x1:`6`,y1:`5`,x2:`10`,y2:`9`,stroke:`#e6db74`,strokeWidth:`2`,strokeLinecap:`square`}),(0,e.jsx)(`line`,{x1:`4`,y1:`10`,x2:`2`,y2:`13`,stroke:`#b07040`,strokeWidth:`1.5`,strokeLinecap:`square`})]})}function _(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`3`,y:`1`,width:`3`,height:`2`,fill:`#8a6540`}),(0,e.jsx)(`rect`,{x:`2`,y:`3`,width:`2`,height:`10`,fill:`#8a6540`}),(0,e.jsx)(`rect`,{x:`3`,y:`13`,width:`3`,height:`2`,fill:`#8a6540`}),(0,e.jsx)(`rect`,{x:`6`,y:`2`,width:`1`,height:`1`,fill:`#cfd8e2`}),(0,e.jsx)(`rect`,{x:`7`,y:`3`,width:`1`,height:`10`,fill:`#cfd8e2`}),(0,e.jsx)(`rect`,{x:`6`,y:`13`,width:`1`,height:`1`,fill:`#cfd8e2`}),(0,e.jsx)(`rect`,{x:`7`,y:`7`,width:`7`,height:`2`,fill:`#c8a878`}),(0,e.jsx)(`rect`,{x:`13`,y:`6`,width:`2`,height:`1`,fill:`#cfd8e2`}),(0,e.jsx)(`rect`,{x:`14`,y:`7`,width:`2`,height:`2`,fill:`#cfd8e2`}),(0,e.jsx)(`rect`,{x:`13`,y:`9`,width:`2`,height:`1`,fill:`#cfd8e2`}),(0,e.jsx)(`rect`,{x:`7`,y:`5`,width:`2`,height:`2`,fill:`#ae81ff`}),(0,e.jsx)(`rect`,{x:`7`,y:`9`,width:`2`,height:`2`,fill:`#ae81ff`})]})}function v(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`5`,y:`1`,width:`6`,height:`1`,fill:`#c8a8ff`}),(0,e.jsx)(`rect`,{x:`4`,y:`2`,width:`8`,height:`4`,fill:`#ae81ff`}),(0,e.jsx)(`rect`,{x:`5`,y:`6`,width:`6`,height:`1`,fill:`#c8a8ff`}),(0,e.jsx)(`rect`,{x:`6`,y:`3`,width:`4`,height:`2`,fill:`#d4b8ff`}),(0,e.jsx)(`rect`,{x:`7`,y:`7`,width:`2`,height:`8`,fill:`#8a6540`}),(0,e.jsx)(`rect`,{x:`6`,y:`10`,width:`4`,height:`1`,fill:`#b07040`})]})}function y(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`2`,y:`1`,width:`2`,height:`8`,fill:`#cfd8e2`}),(0,e.jsx)(`rect`,{x:`2`,y:`9`,width:`2`,height:`3`,fill:`#a8b0bc`}),(0,e.jsx)(`rect`,{x:`12`,y:`1`,width:`2`,height:`8`,fill:`#cfd8e2`}),(0,e.jsx)(`rect`,{x:`12`,y:`9`,width:`2`,height:`3`,fill:`#a8b0bc`}),(0,e.jsx)(`rect`,{x:`2`,y:`8`,width:`12`,height:`2`,fill:`#e6db74`}),(0,e.jsx)(`rect`,{x:`6`,y:`10`,width:`4`,height:`5`,fill:`#8a6540`}),(0,e.jsx)(`rect`,{x:`3`,y:`0`,width:`1`,height:`1`,fill:`#eef0f4`}),(0,e.jsx)(`rect`,{x:`12`,y:`0`,width:`1`,height:`1`,fill:`#eef0f4`})]})}function b(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`2`,y:`2`,width:`2`,height:`12`,fill:`#6a4a6a`}),(0,e.jsx)(`rect`,{x:`4`,y:`2`,width:`10`,height:`12`,fill:`#8855aa`}),(0,e.jsx)(`rect`,{x:`13`,y:`3`,width:`1`,height:`10`,fill:`#f4f0e8`}),(0,e.jsx)(`rect`,{x:`7`,y:`4`,width:`2`,height:`1`,fill:`#c8a8ff`}),(0,e.jsx)(`rect`,{x:`6`,y:`5`,width:`4`,height:`1`,fill:`#c8a8ff`}),(0,e.jsx)(`rect`,{x:`7`,y:`6`,width:`2`,height:`1`,fill:`#c8a8ff`}),(0,e.jsx)(`rect`,{x:`6`,y:`8`,width:`4`,height:`1`,fill:`#e6db74`}),(0,e.jsx)(`rect`,{x:`7`,y:`9`,width:`2`,height:`2`,fill:`#e6db74`})]})}function x(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`4`,y:`1`,width:`8`,height:`1`,fill:`#a8b0bc`}),(0,e.jsx)(`rect`,{x:`3`,y:`2`,width:`10`,height:`5`,fill:`#a8b0bc`}),(0,e.jsx)(`rect`,{x:`3`,y:`2`,width:`10`,height:`1`,fill:`#cfd8e2`}),(0,e.jsx)(`rect`,{x:`3`,y:`3`,width:`1`,height:`3`,fill:`#cfd8e2`}),(0,e.jsx)(`rect`,{x:`3`,y:`7`,width:`10`,height:`1`,fill:`#5a6570`}),(0,e.jsx)(`rect`,{x:`7`,y:`7`,width:`2`,height:`8`,fill:`#8a6540`}),(0,e.jsx)(`rect`,{x:`6`,y:`10`,width:`4`,height:`1`,fill:`#b07040`})]})}function S(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`2`,y:`6`,width:`12`,height:`4`,fill:`#7a7a8a`}),(0,e.jsx)(`rect`,{x:`6`,y:`2`,width:`4`,height:`12`,fill:`#7a7a8a`}),(0,e.jsx)(`rect`,{x:`3`,y:`3`,width:`2`,height:`2`,fill:`#7a7a8a`}),(0,e.jsx)(`rect`,{x:`11`,y:`3`,width:`2`,height:`2`,fill:`#7a7a8a`}),(0,e.jsx)(`rect`,{x:`3`,y:`11`,width:`2`,height:`2`,fill:`#7a7a8a`}),(0,e.jsx)(`rect`,{x:`11`,y:`11`,width:`2`,height:`2`,fill:`#7a7a8a`}),(0,e.jsx)(`rect`,{x:`7`,y:`7`,width:`2`,height:`2`,fill:`#b0b0c0`}),(0,e.jsx)(`rect`,{x:`7`,y:`4`,width:`2`,height:`1`,fill:`#b0b0c0`}),(0,e.jsx)(`rect`,{x:`7`,y:`11`,width:`2`,height:`1`,fill:`#b0b0c0`}),(0,e.jsx)(`rect`,{x:`4`,y:`7`,width:`1`,height:`2`,fill:`#b0b0c0`}),(0,e.jsx)(`rect`,{x:`11`,y:`7`,width:`1`,height:`2`,fill:`#b0b0c0`})]})}function C(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`7`,y:`2`,width:`2`,height:`2`,fill:`#c8a050`}),(0,e.jsx)(`rect`,{x:`6`,y:`4`,width:`4`,height:`2`,fill:`#c8a050`}),(0,e.jsx)(`rect`,{x:`5`,y:`6`,width:`6`,height:`2`,fill:`#8b6914`}),(0,e.jsx)(`rect`,{x:`4`,y:`8`,width:`8`,height:`2`,fill:`#8b6914`}),(0,e.jsx)(`rect`,{x:`3`,y:`10`,width:`10`,height:`2`,fill:`#6a5010`}),(0,e.jsx)(`rect`,{x:`1`,y:`12`,width:`14`,height:`3`,fill:`#5a4008`}),(0,e.jsx)(`rect`,{x:`7`,y:`2`,width:`2`,height:`1`,fill:`#f0ece0`}),(0,e.jsx)(`rect`,{x:`6`,y:`3`,width:`4`,height:`1`,fill:`#f0ece0`}),(0,e.jsx)(`rect`,{x:`5`,y:`8`,width:`1`,height:`1`,fill:`#a07820`}),(0,e.jsx)(`rect`,{x:`10`,y:`9`,width:`1`,height:`1`,fill:`#a07820`})]})}function w(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`2`,y:`4`,width:`10`,height:`1`,fill:`#5dcaa5`}),(0,e.jsx)(`rect`,{x:`3`,y:`5`,width:`2`,height:`1`,fill:`#5dcaa5`}),(0,e.jsx)(`rect`,{x:`12`,y:`3`,width:`2`,height:`2`,fill:`#5dcaa5`}),(0,e.jsx)(`rect`,{x:`13`,y:`5`,width:`1`,height:`1`,fill:`#5dcaa5`}),(0,e.jsx)(`rect`,{x:`1`,y:`7`,width:`11`,height:`2`,fill:`#5dcaa5`}),(0,e.jsx)(`rect`,{x:`12`,y:`6`,width:`2`,height:`4`,fill:`#5dcaa5`}),(0,e.jsx)(`rect`,{x:`11`,y:`10`,width:`2`,height:`1`,fill:`#5dcaa5`}),(0,e.jsx)(`rect`,{x:`2`,y:`12`,width:`9`,height:`1`,fill:`#5dcaa5`}),(0,e.jsx)(`rect`,{x:`2`,y:`11`,width:`2`,height:`1`,fill:`#5dcaa5`}),(0,e.jsx)(`rect`,{x:`11`,y:`12`,width:`2`,height:`2`,fill:`#5dcaa5`}),(0,e.jsx)(`rect`,{x:`10`,y:`14`,width:`2`,height:`1`,fill:`#5dcaa5`}),(0,e.jsx)(`rect`,{x:`2`,y:`3`,width:`8`,height:`1`,fill:`#90e8cc`}),(0,e.jsx)(`rect`,{x:`2`,y:`8`,width:`9`,height:`1`,fill:`#90e8cc`})]})}function T(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`6`,y:`1`,width:`4`,height:`1`,fill:`#378add`}),(0,e.jsx)(`rect`,{x:`5`,y:`2`,width:`6`,height:`2`,fill:`#378add`}),(0,e.jsx)(`rect`,{x:`4`,y:`4`,width:`8`,height:`6`,fill:`#378add`}),(0,e.jsx)(`rect`,{x:`5`,y:`10`,width:`6`,height:`2`,fill:`#378add`}),(0,e.jsx)(`rect`,{x:`6`,y:`12`,width:`4`,height:`2`,fill:`#378add`}),(0,e.jsx)(`rect`,{x:`7`,y:`14`,width:`2`,height:`1`,fill:`#378add`}),(0,e.jsx)(`rect`,{x:`6`,y:`4`,width:`3`,height:`4`,fill:`#70b8f0`}),(0,e.jsx)(`rect`,{x:`7`,y:`3`,width:`2`,height:`1`,fill:`#70b8f0`}),(0,e.jsx)(`rect`,{x:`5`,y:`7`,width:`2`,height:`1`,fill:`#1a5a9a`}),(0,e.jsx)(`rect`,{x:`9`,y:`8`,width:`2`,height:`1`,fill:`#1a5a9a`})]})}function E(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`4`,y:`11`,width:`8`,height:`4`,fill:`#ba7517`}),(0,e.jsx)(`rect`,{x:`3`,y:`8`,width:`10`,height:`3`,fill:`#ba7517`}),(0,e.jsx)(`rect`,{x:`4`,y:`5`,width:`8`,height:`3`,fill:`#ba7517`}),(0,e.jsx)(`rect`,{x:`5`,y:`3`,width:`6`,height:`2`,fill:`#ba7517`}),(0,e.jsx)(`rect`,{x:`6`,y:`1`,width:`4`,height:`2`,fill:`#ba7517`}),(0,e.jsx)(`rect`,{x:`5`,y:`9`,width:`6`,height:`5`,fill:`#e8882a`}),(0,e.jsx)(`rect`,{x:`6`,y:`7`,width:`4`,height:`2`,fill:`#e8882a`}),(0,e.jsx)(`rect`,{x:`6`,y:`10`,width:`4`,height:`3`,fill:`#e6db74`}),(0,e.jsx)(`rect`,{x:`7`,y:`9`,width:`2`,height:`1`,fill:`#e6db74`})]})}function D(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`5`,y:`2`,width:`6`,height:`2`,fill:`#888780`}),(0,e.jsx)(`rect`,{x:`3`,y:`4`,width:`8`,height:`8`,fill:`#888780`}),(0,e.jsx)(`rect`,{x:`5`,y:`12`,width:`6`,height:`2`,fill:`#888780`}),(0,e.jsx)(`rect`,{x:`4`,y:`3`,width:`1`,height:`10`,fill:`#888780`}),(0,e.jsx)(`rect`,{x:`8`,y:`4`,width:`4`,height:`8`,fill:`#1a1a20`}),(0,e.jsx)(`rect`,{x:`7`,y:`5`,width:`5`,height:`6`,fill:`#1a1a20`}),(0,e.jsx)(`rect`,{x:`11`,y:`2`,width:`1`,height:`1`,fill:`#c8c8d0`}),(0,e.jsx)(`rect`,{x:`13`,y:`5`,width:`1`,height:`1`,fill:`#c8c8d0`}),(0,e.jsx)(`rect`,{x:`12`,y:`9`,width:`1`,height:`1`,fill:`#c8c8d0`})]})}function O(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`5`,y:`5`,width:`6`,height:`6`,fill:`#fac775`}),(0,e.jsx)(`rect`,{x:`6`,y:`4`,width:`4`,height:`1`,fill:`#fac775`}),(0,e.jsx)(`rect`,{x:`6`,y:`11`,width:`4`,height:`1`,fill:`#fac775`}),(0,e.jsx)(`rect`,{x:`4`,y:`6`,width:`1`,height:`4`,fill:`#fac775`}),(0,e.jsx)(`rect`,{x:`11`,y:`6`,width:`1`,height:`4`,fill:`#fac775`}),(0,e.jsx)(`rect`,{x:`7`,y:`1`,width:`2`,height:`3`,fill:`#fac775`}),(0,e.jsx)(`rect`,{x:`7`,y:`12`,width:`2`,height:`3`,fill:`#fac775`}),(0,e.jsx)(`rect`,{x:`1`,y:`7`,width:`3`,height:`2`,fill:`#fac775`}),(0,e.jsx)(`rect`,{x:`12`,y:`7`,width:`3`,height:`2`,fill:`#fac775`}),(0,e.jsx)(`rect`,{x:`3`,y:`3`,width:`2`,height:`2`,fill:`#fac775`}),(0,e.jsx)(`rect`,{x:`11`,y:`3`,width:`2`,height:`2`,fill:`#fac775`}),(0,e.jsx)(`rect`,{x:`3`,y:`11`,width:`2`,height:`2`,fill:`#fac775`}),(0,e.jsx)(`rect`,{x:`11`,y:`11`,width:`2`,height:`2`,fill:`#fac775`}),(0,e.jsx)(`rect`,{x:`6`,y:`6`,width:`4`,height:`4`,fill:`#fff8e0`})]})}function k(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`5`,y:`1`,width:`6`,height:`2`,fill:`#7f77dd`}),(0,e.jsx)(`rect`,{x:`3`,y:`3`,width:`10`,height:`2`,fill:`#7f77dd`}),(0,e.jsx)(`rect`,{x:`2`,y:`5`,width:`12`,height:`6`,fill:`#7f77dd`}),(0,e.jsx)(`rect`,{x:`3`,y:`11`,width:`10`,height:`2`,fill:`#7f77dd`}),(0,e.jsx)(`rect`,{x:`5`,y:`13`,width:`6`,height:`2`,fill:`#7f77dd`}),(0,e.jsx)(`rect`,{x:`4`,y:`4`,width:`8`,height:`8`,fill:`#1a1828`}),(0,e.jsx)(`rect`,{x:`5`,y:`3`,width:`6`,height:`1`,fill:`#1a1828`}),(0,e.jsx)(`rect`,{x:`5`,y:`12`,width:`6`,height:`1`,fill:`#1a1828`}),(0,e.jsx)(`rect`,{x:`3`,y:`5`,width:`1`,height:`6`,fill:`#1a1828`}),(0,e.jsx)(`rect`,{x:`12`,y:`5`,width:`1`,height:`6`,fill:`#1a1828`}),(0,e.jsx)(`rect`,{x:`6`,y:`6`,width:`4`,height:`4`,fill:`#4a44aa`}),(0,e.jsx)(`rect`,{x:`7`,y:`5`,width:`2`,height:`1`,fill:`#4a44aa`}),(0,e.jsx)(`rect`,{x:`7`,y:`10`,width:`2`,height:`1`,fill:`#4a44aa`}),(0,e.jsx)(`rect`,{x:`5`,y:`7`,width:`1`,height:`2`,fill:`#4a44aa`}),(0,e.jsx)(`rect`,{x:`10`,y:`7`,width:`1`,height:`2`,fill:`#4a44aa`}),(0,e.jsx)(`rect`,{x:`7`,y:`7`,width:`2`,height:`2`,fill:`#c8c0ff`})]})}function A(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`5`,y:`1`,width:`6`,height:`5`,fill:`#e8c87a`}),(0,e.jsx)(`rect`,{x:`7`,y:`6`,width:`2`,height:`1`,fill:`#d4a85a`}),(0,e.jsx)(`rect`,{x:`3`,y:`7`,width:`10`,height:`5`,fill:`#c8873a`}),(0,e.jsx)(`rect`,{x:`1`,y:`7`,width:`2`,height:`4`,fill:`#c8873a`}),(0,e.jsx)(`rect`,{x:`13`,y:`7`,width:`2`,height:`4`,fill:`#c8873a`}),(0,e.jsx)(`rect`,{x:`4`,y:`12`,width:`3`,height:`3`,fill:`#8a5c2a`}),(0,e.jsx)(`rect`,{x:`9`,y:`12`,width:`3`,height:`3`,fill:`#8a5c2a`})]})}function j(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`2`,y:`1`,width:`3`,height:`4`,fill:`#c8a060`}),(0,e.jsx)(`rect`,{x:`11`,y:`1`,width:`3`,height:`4`,fill:`#c8a060`}),(0,e.jsx)(`rect`,{x:`3`,y:`2`,width:`1`,height:`2`,fill:`#e8886a`}),(0,e.jsx)(`rect`,{x:`12`,y:`2`,width:`1`,height:`2`,fill:`#e8886a`}),(0,e.jsx)(`rect`,{x:`3`,y:`4`,width:`10`,height:`6`,fill:`#c8a060`}),(0,e.jsx)(`rect`,{x:`5`,y:`8`,width:`6`,height:`3`,fill:`#d4b070`}),(0,e.jsx)(`rect`,{x:`7`,y:`8`,width:`2`,height:`1`,fill:`#5a3020`}),(0,e.jsx)(`rect`,{x:`4`,y:`6`,width:`3`,height:`2`,fill:`#e8a020`}),(0,e.jsx)(`rect`,{x:`9`,y:`6`,width:`3`,height:`2`,fill:`#e8a020`}),(0,e.jsx)(`rect`,{x:`5`,y:`6`,width:`1`,height:`2`,fill:`#1a1008`}),(0,e.jsx)(`rect`,{x:`10`,y:`6`,width:`1`,height:`2`,fill:`#1a1008`}),(0,e.jsx)(`rect`,{x:`3`,y:`11`,width:`10`,height:`4`,fill:`#a87840`}),(0,e.jsx)(`rect`,{x:`1`,y:`11`,width:`2`,height:`3`,fill:`#a87840`}),(0,e.jsx)(`rect`,{x:`13`,y:`11`,width:`2`,height:`3`,fill:`#a87840`})]})}function M(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`3`,y:`1`,width:`2`,height:`5`,fill:`#cc3030`}),(0,e.jsx)(`rect`,{x:`11`,y:`1`,width:`2`,height:`5`,fill:`#cc3030`}),(0,e.jsx)(`rect`,{x:`2`,y:`1`,width:`2`,height:`2`,fill:`#cc3030`}),(0,e.jsx)(`rect`,{x:`12`,y:`1`,width:`2`,height:`2`,fill:`#cc3030`}),(0,e.jsx)(`rect`,{x:`3`,y:`5`,width:`10`,height:`6`,fill:`#7a2a2a`}),(0,e.jsx)(`rect`,{x:`4`,y:`7`,width:`3`,height:`2`,fill:`#ff2020`}),(0,e.jsx)(`rect`,{x:`9`,y:`7`,width:`3`,height:`2`,fill:`#ff2020`}),(0,e.jsx)(`rect`,{x:`5`,y:`7`,width:`1`,height:`2`,fill:`#ff8080`}),(0,e.jsx)(`rect`,{x:`10`,y:`7`,width:`1`,height:`2`,fill:`#ff8080`}),(0,e.jsx)(`rect`,{x:`6`,y:`11`,width:`1`,height:`2`,fill:`#f0e8d0`}),(0,e.jsx)(`rect`,{x:`9`,y:`11`,width:`1`,height:`2`,fill:`#f0e8d0`}),(0,e.jsx)(`rect`,{x:`2`,y:`12`,width:`12`,height:`4`,fill:`#5a1a1a`}),(0,e.jsx)(`rect`,{x:`1`,y:`12`,width:`2`,height:`3`,fill:`#5a1a1a`}),(0,e.jsx)(`rect`,{x:`13`,y:`12`,width:`2`,height:`3`,fill:`#5a1a1a`})]})}function N(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`4`,y:`1`,width:`8`,height:`1`,fill:`#e6db74`}),(0,e.jsx)(`rect`,{x:`3`,y:`2`,width:`10`,height:`1`,fill:`#e6db74`}),(0,e.jsx)(`rect`,{x:`3`,y:`3`,width:`2`,height:`1`,fill:`#e6db74`}),(0,e.jsx)(`rect`,{x:`11`,y:`3`,width:`2`,height:`1`,fill:`#e6db74`}),(0,e.jsx)(`rect`,{x:`5`,y:`4`,width:`6`,height:`5`,fill:`#f4e4c0`}),(0,e.jsx)(`rect`,{x:`6`,y:`6`,width:`2`,height:`1`,fill:`#6090e0`}),(0,e.jsx)(`rect`,{x:`10`,y:`6`,width:`2`,height:`1`,fill:`#6090e0`}),(0,e.jsx)(`rect`,{x:`1`,y:`9`,width:`4`,height:`5`,fill:`#f0f0f8`}),(0,e.jsx)(`rect`,{x:`11`,y:`9`,width:`4`,height:`5`,fill:`#f0f0f8`}),(0,e.jsx)(`rect`,{x:`1`,y:`9`,width:`2`,height:`3`,fill:`#ffffff`}),(0,e.jsx)(`rect`,{x:`13`,y:`9`,width:`2`,height:`3`,fill:`#ffffff`}),(0,e.jsx)(`rect`,{x:`5`,y:`9`,width:`6`,height:`6`,fill:`#d4c8f0`}),(0,e.jsx)(`rect`,{x:`4`,y:`10`,width:`1`,height:`4`,fill:`#d4c8f0`}),(0,e.jsx)(`rect`,{x:`11`,y:`10`,width:`1`,height:`4`,fill:`#d4c8f0`})]})}function P(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`6`,y:`1`,width:`4`,height:`2`,fill:`#66d9e8`}),(0,e.jsx)(`rect`,{x:`5`,y:`3`,width:`6`,height:`4`,fill:`#66d9e8`}),(0,e.jsx)(`rect`,{x:`4`,y:`7`,width:`8`,height:`4`,fill:`#66d9e8`}),(0,e.jsx)(`rect`,{x:`5`,y:`11`,width:`6`,height:`2`,fill:`#66d9e8`}),(0,e.jsx)(`rect`,{x:`4`,y:`13`,width:`2`,height:`2`,fill:`#66d9e8`}),(0,e.jsx)(`rect`,{x:`7`,y:`13`,width:`2`,height:`2`,fill:`#66d9e8`}),(0,e.jsx)(`rect`,{x:`10`,y:`13`,width:`2`,height:`2`,fill:`#66d9e8`}),(0,e.jsx)(`rect`,{x:`6`,y:`4`,width:`4`,height:`3`,fill:`#b0eff6`}),(0,e.jsx)(`rect`,{x:`7`,y:`3`,width:`2`,height:`1`,fill:`#b0eff6`}),(0,e.jsx)(`rect`,{x:`6`,y:`7`,width:`2`,height:`2`,fill:`#ffffff`}),(0,e.jsx)(`rect`,{x:`9`,y:`7`,width:`2`,height:`2`,fill:`#ffffff`}),(0,e.jsx)(`rect`,{x:`7`,y:`8`,width:`1`,height:`1`,fill:`#66d9e8`}),(0,e.jsx)(`rect`,{x:`10`,y:`8`,width:`1`,height:`1`,fill:`#66d9e8`})]})}function F(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`1`,y:`11`,width:`3`,height:`4`,fill:`#cfd8e2`}),(0,e.jsx)(`rect`,{x:`6`,y:`7`,width:`4`,height:`8`,fill:`#4a4a5a`}),(0,e.jsx)(`rect`,{x:`12`,y:`4`,width:`3`,height:`11`,fill:`#4a4a5a`}),(0,e.jsx)(`rect`,{x:`1`,y:`15`,width:`14`,height:`1`,fill:`#5a5a6a`}),(0,e.jsx)(`rect`,{x:`1`,y:`8`,width:`1`,height:`2`,fill:`#e6db74`}),(0,e.jsx)(`rect`,{x:`3`,y:`10`,width:`1`,height:`2`,fill:`#e6db74`}),(0,e.jsx)(`rect`,{x:`2`,y:`10`,width:`1`,height:`1`,fill:`#e6db74`})]})}function I(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`1`,y:`11`,width:`3`,height:`4`,fill:`#4a4a5a`}),(0,e.jsx)(`rect`,{x:`6`,y:`7`,width:`4`,height:`8`,fill:`#cfd8e2`}),(0,e.jsx)(`rect`,{x:`12`,y:`4`,width:`3`,height:`11`,fill:`#4a4a5a`}),(0,e.jsx)(`rect`,{x:`1`,y:`15`,width:`14`,height:`1`,fill:`#5a5a6a`}),(0,e.jsx)(`rect`,{x:`6`,y:`4`,width:`1`,height:`2`,fill:`#e6db74`}),(0,e.jsx)(`rect`,{x:`9`,y:`4`,width:`1`,height:`2`,fill:`#e6db74`}),(0,e.jsx)(`rect`,{x:`7`,y:`5`,width:`2`,height:`1`,fill:`#e6db74`})]})}function L(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`1`,y:`11`,width:`3`,height:`4`,fill:`#4a4a5a`}),(0,e.jsx)(`rect`,{x:`6`,y:`7`,width:`4`,height:`8`,fill:`#4a4a5a`}),(0,e.jsx)(`rect`,{x:`12`,y:`4`,width:`3`,height:`11`,fill:`#cfd8e2`}),(0,e.jsx)(`rect`,{x:`1`,y:`15`,width:`14`,height:`1`,fill:`#5a5a6a`}),(0,e.jsx)(`rect`,{x:`13`,y:`1`,width:`1`,height:`2`,fill:`#e6db74`}),(0,e.jsx)(`rect`,{x:`14`,y:`1`,width:`1`,height:`3`,fill:`#e6db74`}),(0,e.jsx)(`rect`,{x:`13`,y:`3`,width:`1`,height:`1`,fill:`#e6db74`})]})}var R={sword:g,staff:v,bow:_,katar:y,book:b,hammer:x,neutral:S,earth:C,wind:w,water:T,fire:E,light:O,dark:D,void:k,human:A,beast:j,demon:M,angel:N,spirit:P,small:F,medium:I,large:L},z=Object.keys(R);function B({name:t=`sword`,size:n=22,style:r}){let i=R[t]||g;return(0,e.jsx)(`span`,{style:{display:`inline-flex`,alignItems:`center`,justifyContent:`center`,width:n,height:n,imageRendering:`pixelated`,flexShrink:0,...r},children:(0,e.jsx)(i,{})})}B.icons=z;var V=B;function H(){return(0,e.jsx)(`svg`,{viewBox:`0 0 12 8`,width:12,height:12,"aria-hidden":`true`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,e.jsx)(`polyline`,{points:`1,1.5 6,6.5 11,1.5`})})}function U({href:n,label:r,className:i,children:a,...o}){return(0,e.jsx)(`a`,{...o,href:n,"aria-label":r,className:t(`ns-section-arrow`,i),children:a||(0,e.jsx)(H,{})})}exports.Button=s,exports.FeatureCard=c,exports.HUDBar=d,exports.HUDDivider=f,exports.HUDIcon=V,exports.HUDLabel=h,exports.QuestCard=l,exports.RPGIcon=B,exports.SectionArrow=U,exports.icons=z;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("react/jsx-runtime");var t=(...e)=>e.filter(Boolean).join(` `);function n(e,t){return t?{...e,...t}:e}var r={gold:`var(--ns-gold)`,pink:`var(--ns-pink)`,purple:`var(--ns-purple)`,cyan:`var(--ns-cyan)`,green:`var(--ns-green)`,orange:`var(--ns-orange)`,later:`var(--ns-ink-faint)`},i={done:{className:`ns-quest-card--done`,label:`HOLDS`,icon:`✓`},active:{className:`ns-quest-card--active`,label:`BUILDING`,icon:`▶`},planned:{className:`ns-quest-card--planned`,label:`PLANNED`,icon:`◌`},locked:{className:`ns-quest-card--locked`,label:`LATER`,icon:`✦`}},a=new Set([`play`,`ghost`]),o=new Set([`sm`,`md`,`lg`]);function s({variant:n=`play`,size:r=`md`,href:i,onClick:s,children:c,disabled:l=!1,className:u,type:d=`button`,...f}){let p=a.has(n)?n:`play`,m=o.has(r)?r:`md`,h=t(`ns-button`,`ns-button--${p}`,`ns-button--${m}`,u),g={...f,className:h,onClick:l?void 0:s};return i?(0,e.jsx)(`a`,{...g,href:l?void 0:i,"aria-disabled":l||void 0,tabIndex:l?-1:f.tabIndex,children:c}):(0,e.jsx)(`button`,{...g,type:d,disabled:l,children:c})}function c({icon:i,title:a,body:o,tag:s,iconColor:c=r.gold,className:l,style:u,...d}){return(0,e.jsxs)(`li`,{...d,className:t(`ns-card ns-feature-card`,l),style:n({"--ns-feature-accent":c},u),children:[(0,e.jsx)(`span`,{className:`ns-icon-slot ns-feature-card__icon`,"aria-hidden":`true`,children:i}),(0,e.jsxs)(`div`,{children:[(0,e.jsx)(`h3`,{className:`ns-feature-card__title`,children:a}),(0,e.jsx)(`p`,{className:`ns-feature-card__body`,children:o})]}),s&&(0,e.jsx)(`span`,{className:`ns-tag ns-feature-card__tag`,children:s})]})}function l({gate:n,title:r,body:a,status:o=`locked`,className:s,...c}){let l=i[o]||i.locked;return(0,e.jsxs)(`li`,{...c,className:t(`ns-quest-card`,l.className,s),children:[(0,e.jsx)(`span`,{className:`ns-quest-card__icon`,"aria-hidden":`true`,children:l.icon}),(0,e.jsxs)(`div`,{className:`ns-quest-card__body`,children:[(0,e.jsx)(`p`,{className:`ns-quest-card__title`,children:`Gate ${n} · ${r}`}),(0,e.jsx)(`p`,{className:`ns-quest-card__desc`,children:a}),(0,e.jsx)(`span`,{className:`ns-status-pill`,children:l.label})]})]})}var u=`var(--ns-font-pixel, "Press Start 2P", monospace)`;function d({value:t=40,max:n=40,fillColor:r=`var(--hud-hp-fill, #4caf73)`,trackColor:i=`var(--hud-track, rgba(255, 255, 255, 0.10))`,height:a=14,style:o,role:s=`meter`,...c}){let l=n>0?Math.max(0,Math.min(100,t/n*100)):0;return(0,e.jsxs)(`div`,{...c,role:s,"aria-valuemin":0,"aria-valuemax":n,"aria-valuenow":Math.max(0,Math.min(t,n)),style:{position:`relative`,background:i,height:a,overflow:`hidden`,fontFamily:u,...o},children:[(0,e.jsx)(`div`,{style:{position:`absolute`,inset:0,width:`${l}%`,background:r,transition:`width .35s ease-out`}}),(0,e.jsxs)(`span`,{style:{position:`absolute`,inset:0,display:`flex`,alignItems:`center`,paddingLeft:4,fontSize:4,color:`#fff`,pointerEvents:`none`},children:[t,` / `,n]})]})}function f({direction:t=`vertical`,color:n=`var(--ns-line)`,style:r,role:i=`separator`,...a}){let o=t===`vertical`;return(0,e.jsx)(`div`,{...a,role:i,"aria-orientation":t,style:{width:o?`1px`:`100%`,height:o?`100%`:`1px`,background:n,flexShrink:0,alignSelf:`stretch`,...r}})}var p=`var(--ns-font-pixel, "Press Start 2P", monospace)`,m={left:`flex-start`,center:`center`,right:`flex-end`};function h({text:t=`Label`,align:n=`left`,scale:r=1,color:i=`var(--ns-ink)`,fontSize:a=5,style:o,...s}){return(0,e.jsx)(`div`,{...s,style:{display:`flex`,alignItems:`center`,justifyContent:m[n]||m.left,paddingLeft:n===`right`?0:3,paddingRight:n===`left`?0:3,fontFamily:p,fontSize:a*r,color:i,whiteSpace:`nowrap`,overflow:`hidden`,width:`100%`,height:`100%`,...o},children:t})}function g(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`line`,{x1:`13`,y1:`2`,x2:`4`,y2:`11`,stroke:`#cfd8e2`,strokeWidth:`2`,strokeLinecap:`square`}),(0,e.jsx)(`line`,{x1:`6`,y1:`5`,x2:`10`,y2:`9`,stroke:`#e6db74`,strokeWidth:`2`,strokeLinecap:`square`}),(0,e.jsx)(`line`,{x1:`4`,y1:`10`,x2:`2`,y2:`13`,stroke:`#b07040`,strokeWidth:`1.5`,strokeLinecap:`square`})]})}function _(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`3`,y:`1`,width:`3`,height:`2`,fill:`#8a6540`}),(0,e.jsx)(`rect`,{x:`2`,y:`3`,width:`2`,height:`10`,fill:`#8a6540`}),(0,e.jsx)(`rect`,{x:`3`,y:`13`,width:`3`,height:`2`,fill:`#8a6540`}),(0,e.jsx)(`rect`,{x:`6`,y:`2`,width:`1`,height:`1`,fill:`#cfd8e2`}),(0,e.jsx)(`rect`,{x:`7`,y:`3`,width:`1`,height:`10`,fill:`#cfd8e2`}),(0,e.jsx)(`rect`,{x:`6`,y:`13`,width:`1`,height:`1`,fill:`#cfd8e2`}),(0,e.jsx)(`rect`,{x:`7`,y:`7`,width:`7`,height:`2`,fill:`#c8a878`}),(0,e.jsx)(`rect`,{x:`13`,y:`6`,width:`2`,height:`1`,fill:`#cfd8e2`}),(0,e.jsx)(`rect`,{x:`14`,y:`7`,width:`2`,height:`2`,fill:`#cfd8e2`}),(0,e.jsx)(`rect`,{x:`13`,y:`9`,width:`2`,height:`1`,fill:`#cfd8e2`}),(0,e.jsx)(`rect`,{x:`7`,y:`5`,width:`2`,height:`2`,fill:`#ae81ff`}),(0,e.jsx)(`rect`,{x:`7`,y:`9`,width:`2`,height:`2`,fill:`#ae81ff`})]})}function v(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`5`,y:`1`,width:`6`,height:`1`,fill:`#c8a8ff`}),(0,e.jsx)(`rect`,{x:`4`,y:`2`,width:`8`,height:`4`,fill:`#ae81ff`}),(0,e.jsx)(`rect`,{x:`5`,y:`6`,width:`6`,height:`1`,fill:`#c8a8ff`}),(0,e.jsx)(`rect`,{x:`6`,y:`3`,width:`4`,height:`2`,fill:`#d4b8ff`}),(0,e.jsx)(`rect`,{x:`7`,y:`7`,width:`2`,height:`8`,fill:`#8a6540`}),(0,e.jsx)(`rect`,{x:`6`,y:`10`,width:`4`,height:`1`,fill:`#b07040`})]})}function y(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`2`,y:`1`,width:`2`,height:`8`,fill:`#cfd8e2`}),(0,e.jsx)(`rect`,{x:`2`,y:`9`,width:`2`,height:`3`,fill:`#a8b0bc`}),(0,e.jsx)(`rect`,{x:`12`,y:`1`,width:`2`,height:`8`,fill:`#cfd8e2`}),(0,e.jsx)(`rect`,{x:`12`,y:`9`,width:`2`,height:`3`,fill:`#a8b0bc`}),(0,e.jsx)(`rect`,{x:`2`,y:`8`,width:`12`,height:`2`,fill:`#e6db74`}),(0,e.jsx)(`rect`,{x:`6`,y:`10`,width:`4`,height:`5`,fill:`#8a6540`}),(0,e.jsx)(`rect`,{x:`3`,y:`0`,width:`1`,height:`1`,fill:`#eef0f4`}),(0,e.jsx)(`rect`,{x:`12`,y:`0`,width:`1`,height:`1`,fill:`#eef0f4`})]})}function b(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`2`,y:`2`,width:`2`,height:`12`,fill:`#6a4a6a`}),(0,e.jsx)(`rect`,{x:`4`,y:`2`,width:`10`,height:`12`,fill:`#8855aa`}),(0,e.jsx)(`rect`,{x:`13`,y:`3`,width:`1`,height:`10`,fill:`#f4f0e8`}),(0,e.jsx)(`rect`,{x:`7`,y:`4`,width:`2`,height:`1`,fill:`#c8a8ff`}),(0,e.jsx)(`rect`,{x:`6`,y:`5`,width:`4`,height:`1`,fill:`#c8a8ff`}),(0,e.jsx)(`rect`,{x:`7`,y:`6`,width:`2`,height:`1`,fill:`#c8a8ff`}),(0,e.jsx)(`rect`,{x:`6`,y:`8`,width:`4`,height:`1`,fill:`#e6db74`}),(0,e.jsx)(`rect`,{x:`7`,y:`9`,width:`2`,height:`2`,fill:`#e6db74`})]})}function x(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`4`,y:`1`,width:`8`,height:`1`,fill:`#a8b0bc`}),(0,e.jsx)(`rect`,{x:`3`,y:`2`,width:`10`,height:`5`,fill:`#a8b0bc`}),(0,e.jsx)(`rect`,{x:`3`,y:`2`,width:`10`,height:`1`,fill:`#cfd8e2`}),(0,e.jsx)(`rect`,{x:`3`,y:`3`,width:`1`,height:`3`,fill:`#cfd8e2`}),(0,e.jsx)(`rect`,{x:`3`,y:`7`,width:`10`,height:`1`,fill:`#5a6570`}),(0,e.jsx)(`rect`,{x:`7`,y:`7`,width:`2`,height:`8`,fill:`#8a6540`}),(0,e.jsx)(`rect`,{x:`6`,y:`10`,width:`4`,height:`1`,fill:`#b07040`})]})}function S(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`2`,y:`6`,width:`12`,height:`4`,fill:`#7a7a8a`}),(0,e.jsx)(`rect`,{x:`6`,y:`2`,width:`4`,height:`12`,fill:`#7a7a8a`}),(0,e.jsx)(`rect`,{x:`3`,y:`3`,width:`2`,height:`2`,fill:`#7a7a8a`}),(0,e.jsx)(`rect`,{x:`11`,y:`3`,width:`2`,height:`2`,fill:`#7a7a8a`}),(0,e.jsx)(`rect`,{x:`3`,y:`11`,width:`2`,height:`2`,fill:`#7a7a8a`}),(0,e.jsx)(`rect`,{x:`11`,y:`11`,width:`2`,height:`2`,fill:`#7a7a8a`}),(0,e.jsx)(`rect`,{x:`7`,y:`7`,width:`2`,height:`2`,fill:`#b0b0c0`}),(0,e.jsx)(`rect`,{x:`7`,y:`4`,width:`2`,height:`1`,fill:`#b0b0c0`}),(0,e.jsx)(`rect`,{x:`7`,y:`11`,width:`2`,height:`1`,fill:`#b0b0c0`}),(0,e.jsx)(`rect`,{x:`4`,y:`7`,width:`1`,height:`2`,fill:`#b0b0c0`}),(0,e.jsx)(`rect`,{x:`11`,y:`7`,width:`1`,height:`2`,fill:`#b0b0c0`})]})}function C(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`7`,y:`2`,width:`2`,height:`2`,fill:`#c8a050`}),(0,e.jsx)(`rect`,{x:`6`,y:`4`,width:`4`,height:`2`,fill:`#c8a050`}),(0,e.jsx)(`rect`,{x:`5`,y:`6`,width:`6`,height:`2`,fill:`#8b6914`}),(0,e.jsx)(`rect`,{x:`4`,y:`8`,width:`8`,height:`2`,fill:`#8b6914`}),(0,e.jsx)(`rect`,{x:`3`,y:`10`,width:`10`,height:`2`,fill:`#6a5010`}),(0,e.jsx)(`rect`,{x:`1`,y:`12`,width:`14`,height:`3`,fill:`#5a4008`}),(0,e.jsx)(`rect`,{x:`7`,y:`2`,width:`2`,height:`1`,fill:`#f0ece0`}),(0,e.jsx)(`rect`,{x:`6`,y:`3`,width:`4`,height:`1`,fill:`#f0ece0`}),(0,e.jsx)(`rect`,{x:`5`,y:`8`,width:`1`,height:`1`,fill:`#a07820`}),(0,e.jsx)(`rect`,{x:`10`,y:`9`,width:`1`,height:`1`,fill:`#a07820`})]})}function w(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`2`,y:`4`,width:`10`,height:`1`,fill:`#5dcaa5`}),(0,e.jsx)(`rect`,{x:`3`,y:`5`,width:`2`,height:`1`,fill:`#5dcaa5`}),(0,e.jsx)(`rect`,{x:`12`,y:`3`,width:`2`,height:`2`,fill:`#5dcaa5`}),(0,e.jsx)(`rect`,{x:`13`,y:`5`,width:`1`,height:`1`,fill:`#5dcaa5`}),(0,e.jsx)(`rect`,{x:`1`,y:`7`,width:`11`,height:`2`,fill:`#5dcaa5`}),(0,e.jsx)(`rect`,{x:`12`,y:`6`,width:`2`,height:`4`,fill:`#5dcaa5`}),(0,e.jsx)(`rect`,{x:`11`,y:`10`,width:`2`,height:`1`,fill:`#5dcaa5`}),(0,e.jsx)(`rect`,{x:`2`,y:`12`,width:`9`,height:`1`,fill:`#5dcaa5`}),(0,e.jsx)(`rect`,{x:`2`,y:`11`,width:`2`,height:`1`,fill:`#5dcaa5`}),(0,e.jsx)(`rect`,{x:`11`,y:`12`,width:`2`,height:`2`,fill:`#5dcaa5`}),(0,e.jsx)(`rect`,{x:`10`,y:`14`,width:`2`,height:`1`,fill:`#5dcaa5`}),(0,e.jsx)(`rect`,{x:`2`,y:`3`,width:`8`,height:`1`,fill:`#90e8cc`}),(0,e.jsx)(`rect`,{x:`2`,y:`8`,width:`9`,height:`1`,fill:`#90e8cc`})]})}function T(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`6`,y:`1`,width:`4`,height:`1`,fill:`#378add`}),(0,e.jsx)(`rect`,{x:`5`,y:`2`,width:`6`,height:`2`,fill:`#378add`}),(0,e.jsx)(`rect`,{x:`4`,y:`4`,width:`8`,height:`6`,fill:`#378add`}),(0,e.jsx)(`rect`,{x:`5`,y:`10`,width:`6`,height:`2`,fill:`#378add`}),(0,e.jsx)(`rect`,{x:`6`,y:`12`,width:`4`,height:`2`,fill:`#378add`}),(0,e.jsx)(`rect`,{x:`7`,y:`14`,width:`2`,height:`1`,fill:`#378add`}),(0,e.jsx)(`rect`,{x:`6`,y:`4`,width:`3`,height:`4`,fill:`#70b8f0`}),(0,e.jsx)(`rect`,{x:`7`,y:`3`,width:`2`,height:`1`,fill:`#70b8f0`}),(0,e.jsx)(`rect`,{x:`5`,y:`7`,width:`2`,height:`1`,fill:`#1a5a9a`}),(0,e.jsx)(`rect`,{x:`9`,y:`8`,width:`2`,height:`1`,fill:`#1a5a9a`})]})}function E(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`4`,y:`11`,width:`8`,height:`4`,fill:`#ba7517`}),(0,e.jsx)(`rect`,{x:`3`,y:`8`,width:`10`,height:`3`,fill:`#ba7517`}),(0,e.jsx)(`rect`,{x:`4`,y:`5`,width:`8`,height:`3`,fill:`#ba7517`}),(0,e.jsx)(`rect`,{x:`5`,y:`3`,width:`6`,height:`2`,fill:`#ba7517`}),(0,e.jsx)(`rect`,{x:`6`,y:`1`,width:`4`,height:`2`,fill:`#ba7517`}),(0,e.jsx)(`rect`,{x:`5`,y:`9`,width:`6`,height:`5`,fill:`#e8882a`}),(0,e.jsx)(`rect`,{x:`6`,y:`7`,width:`4`,height:`2`,fill:`#e8882a`}),(0,e.jsx)(`rect`,{x:`6`,y:`10`,width:`4`,height:`3`,fill:`#e6db74`}),(0,e.jsx)(`rect`,{x:`7`,y:`9`,width:`2`,height:`1`,fill:`#e6db74`})]})}function D(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`5`,y:`2`,width:`6`,height:`2`,fill:`#888780`}),(0,e.jsx)(`rect`,{x:`3`,y:`4`,width:`8`,height:`8`,fill:`#888780`}),(0,e.jsx)(`rect`,{x:`5`,y:`12`,width:`6`,height:`2`,fill:`#888780`}),(0,e.jsx)(`rect`,{x:`4`,y:`3`,width:`1`,height:`10`,fill:`#888780`}),(0,e.jsx)(`rect`,{x:`8`,y:`4`,width:`4`,height:`8`,fill:`#1a1a20`}),(0,e.jsx)(`rect`,{x:`7`,y:`5`,width:`5`,height:`6`,fill:`#1a1a20`}),(0,e.jsx)(`rect`,{x:`11`,y:`2`,width:`1`,height:`1`,fill:`#c8c8d0`}),(0,e.jsx)(`rect`,{x:`13`,y:`5`,width:`1`,height:`1`,fill:`#c8c8d0`}),(0,e.jsx)(`rect`,{x:`12`,y:`9`,width:`1`,height:`1`,fill:`#c8c8d0`})]})}function O(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`5`,y:`5`,width:`6`,height:`6`,fill:`#fac775`}),(0,e.jsx)(`rect`,{x:`6`,y:`4`,width:`4`,height:`1`,fill:`#fac775`}),(0,e.jsx)(`rect`,{x:`6`,y:`11`,width:`4`,height:`1`,fill:`#fac775`}),(0,e.jsx)(`rect`,{x:`4`,y:`6`,width:`1`,height:`4`,fill:`#fac775`}),(0,e.jsx)(`rect`,{x:`11`,y:`6`,width:`1`,height:`4`,fill:`#fac775`}),(0,e.jsx)(`rect`,{x:`7`,y:`1`,width:`2`,height:`3`,fill:`#fac775`}),(0,e.jsx)(`rect`,{x:`7`,y:`12`,width:`2`,height:`3`,fill:`#fac775`}),(0,e.jsx)(`rect`,{x:`1`,y:`7`,width:`3`,height:`2`,fill:`#fac775`}),(0,e.jsx)(`rect`,{x:`12`,y:`7`,width:`3`,height:`2`,fill:`#fac775`}),(0,e.jsx)(`rect`,{x:`3`,y:`3`,width:`2`,height:`2`,fill:`#fac775`}),(0,e.jsx)(`rect`,{x:`11`,y:`3`,width:`2`,height:`2`,fill:`#fac775`}),(0,e.jsx)(`rect`,{x:`3`,y:`11`,width:`2`,height:`2`,fill:`#fac775`}),(0,e.jsx)(`rect`,{x:`11`,y:`11`,width:`2`,height:`2`,fill:`#fac775`}),(0,e.jsx)(`rect`,{x:`6`,y:`6`,width:`4`,height:`4`,fill:`#fff8e0`})]})}function k(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`5`,y:`1`,width:`6`,height:`2`,fill:`#7f77dd`}),(0,e.jsx)(`rect`,{x:`3`,y:`3`,width:`10`,height:`2`,fill:`#7f77dd`}),(0,e.jsx)(`rect`,{x:`2`,y:`5`,width:`12`,height:`6`,fill:`#7f77dd`}),(0,e.jsx)(`rect`,{x:`3`,y:`11`,width:`10`,height:`2`,fill:`#7f77dd`}),(0,e.jsx)(`rect`,{x:`5`,y:`13`,width:`6`,height:`2`,fill:`#7f77dd`}),(0,e.jsx)(`rect`,{x:`4`,y:`4`,width:`8`,height:`8`,fill:`#1a1828`}),(0,e.jsx)(`rect`,{x:`5`,y:`3`,width:`6`,height:`1`,fill:`#1a1828`}),(0,e.jsx)(`rect`,{x:`5`,y:`12`,width:`6`,height:`1`,fill:`#1a1828`}),(0,e.jsx)(`rect`,{x:`3`,y:`5`,width:`1`,height:`6`,fill:`#1a1828`}),(0,e.jsx)(`rect`,{x:`12`,y:`5`,width:`1`,height:`6`,fill:`#1a1828`}),(0,e.jsx)(`rect`,{x:`6`,y:`6`,width:`4`,height:`4`,fill:`#4a44aa`}),(0,e.jsx)(`rect`,{x:`7`,y:`5`,width:`2`,height:`1`,fill:`#4a44aa`}),(0,e.jsx)(`rect`,{x:`7`,y:`10`,width:`2`,height:`1`,fill:`#4a44aa`}),(0,e.jsx)(`rect`,{x:`5`,y:`7`,width:`1`,height:`2`,fill:`#4a44aa`}),(0,e.jsx)(`rect`,{x:`10`,y:`7`,width:`1`,height:`2`,fill:`#4a44aa`}),(0,e.jsx)(`rect`,{x:`7`,y:`7`,width:`2`,height:`2`,fill:`#c8c0ff`})]})}function A(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`5`,y:`1`,width:`6`,height:`5`,fill:`#e8c87a`}),(0,e.jsx)(`rect`,{x:`7`,y:`6`,width:`2`,height:`1`,fill:`#d4a85a`}),(0,e.jsx)(`rect`,{x:`3`,y:`7`,width:`10`,height:`5`,fill:`#c8873a`}),(0,e.jsx)(`rect`,{x:`1`,y:`7`,width:`2`,height:`4`,fill:`#c8873a`}),(0,e.jsx)(`rect`,{x:`13`,y:`7`,width:`2`,height:`4`,fill:`#c8873a`}),(0,e.jsx)(`rect`,{x:`4`,y:`12`,width:`3`,height:`3`,fill:`#8a5c2a`}),(0,e.jsx)(`rect`,{x:`9`,y:`12`,width:`3`,height:`3`,fill:`#8a5c2a`})]})}function j(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`2`,y:`1`,width:`3`,height:`4`,fill:`#c8a060`}),(0,e.jsx)(`rect`,{x:`11`,y:`1`,width:`3`,height:`4`,fill:`#c8a060`}),(0,e.jsx)(`rect`,{x:`3`,y:`2`,width:`1`,height:`2`,fill:`#e8886a`}),(0,e.jsx)(`rect`,{x:`12`,y:`2`,width:`1`,height:`2`,fill:`#e8886a`}),(0,e.jsx)(`rect`,{x:`3`,y:`4`,width:`10`,height:`6`,fill:`#c8a060`}),(0,e.jsx)(`rect`,{x:`5`,y:`8`,width:`6`,height:`3`,fill:`#d4b070`}),(0,e.jsx)(`rect`,{x:`7`,y:`8`,width:`2`,height:`1`,fill:`#5a3020`}),(0,e.jsx)(`rect`,{x:`4`,y:`6`,width:`3`,height:`2`,fill:`#e8a020`}),(0,e.jsx)(`rect`,{x:`9`,y:`6`,width:`3`,height:`2`,fill:`#e8a020`}),(0,e.jsx)(`rect`,{x:`5`,y:`6`,width:`1`,height:`2`,fill:`#1a1008`}),(0,e.jsx)(`rect`,{x:`10`,y:`6`,width:`1`,height:`2`,fill:`#1a1008`}),(0,e.jsx)(`rect`,{x:`3`,y:`11`,width:`10`,height:`4`,fill:`#a87840`}),(0,e.jsx)(`rect`,{x:`1`,y:`11`,width:`2`,height:`3`,fill:`#a87840`}),(0,e.jsx)(`rect`,{x:`13`,y:`11`,width:`2`,height:`3`,fill:`#a87840`})]})}function M(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`3`,y:`1`,width:`2`,height:`5`,fill:`#cc3030`}),(0,e.jsx)(`rect`,{x:`11`,y:`1`,width:`2`,height:`5`,fill:`#cc3030`}),(0,e.jsx)(`rect`,{x:`2`,y:`1`,width:`2`,height:`2`,fill:`#cc3030`}),(0,e.jsx)(`rect`,{x:`12`,y:`1`,width:`2`,height:`2`,fill:`#cc3030`}),(0,e.jsx)(`rect`,{x:`3`,y:`5`,width:`10`,height:`6`,fill:`#7a2a2a`}),(0,e.jsx)(`rect`,{x:`4`,y:`7`,width:`3`,height:`2`,fill:`#ff2020`}),(0,e.jsx)(`rect`,{x:`9`,y:`7`,width:`3`,height:`2`,fill:`#ff2020`}),(0,e.jsx)(`rect`,{x:`5`,y:`7`,width:`1`,height:`2`,fill:`#ff8080`}),(0,e.jsx)(`rect`,{x:`10`,y:`7`,width:`1`,height:`2`,fill:`#ff8080`}),(0,e.jsx)(`rect`,{x:`6`,y:`11`,width:`1`,height:`2`,fill:`#f0e8d0`}),(0,e.jsx)(`rect`,{x:`9`,y:`11`,width:`1`,height:`2`,fill:`#f0e8d0`}),(0,e.jsx)(`rect`,{x:`2`,y:`12`,width:`12`,height:`4`,fill:`#5a1a1a`}),(0,e.jsx)(`rect`,{x:`1`,y:`12`,width:`2`,height:`3`,fill:`#5a1a1a`}),(0,e.jsx)(`rect`,{x:`13`,y:`12`,width:`2`,height:`3`,fill:`#5a1a1a`})]})}function N(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`4`,y:`1`,width:`8`,height:`1`,fill:`#e6db74`}),(0,e.jsx)(`rect`,{x:`3`,y:`2`,width:`10`,height:`1`,fill:`#e6db74`}),(0,e.jsx)(`rect`,{x:`3`,y:`3`,width:`2`,height:`1`,fill:`#e6db74`}),(0,e.jsx)(`rect`,{x:`11`,y:`3`,width:`2`,height:`1`,fill:`#e6db74`}),(0,e.jsx)(`rect`,{x:`5`,y:`4`,width:`6`,height:`5`,fill:`#f4e4c0`}),(0,e.jsx)(`rect`,{x:`6`,y:`6`,width:`2`,height:`1`,fill:`#6090e0`}),(0,e.jsx)(`rect`,{x:`10`,y:`6`,width:`2`,height:`1`,fill:`#6090e0`}),(0,e.jsx)(`rect`,{x:`1`,y:`9`,width:`4`,height:`5`,fill:`#f0f0f8`}),(0,e.jsx)(`rect`,{x:`11`,y:`9`,width:`4`,height:`5`,fill:`#f0f0f8`}),(0,e.jsx)(`rect`,{x:`1`,y:`9`,width:`2`,height:`3`,fill:`#ffffff`}),(0,e.jsx)(`rect`,{x:`13`,y:`9`,width:`2`,height:`3`,fill:`#ffffff`}),(0,e.jsx)(`rect`,{x:`5`,y:`9`,width:`6`,height:`6`,fill:`#d4c8f0`}),(0,e.jsx)(`rect`,{x:`4`,y:`10`,width:`1`,height:`4`,fill:`#d4c8f0`}),(0,e.jsx)(`rect`,{x:`11`,y:`10`,width:`1`,height:`4`,fill:`#d4c8f0`})]})}function P(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`6`,y:`1`,width:`4`,height:`2`,fill:`#66d9e8`}),(0,e.jsx)(`rect`,{x:`5`,y:`3`,width:`6`,height:`4`,fill:`#66d9e8`}),(0,e.jsx)(`rect`,{x:`4`,y:`7`,width:`8`,height:`4`,fill:`#66d9e8`}),(0,e.jsx)(`rect`,{x:`5`,y:`11`,width:`6`,height:`2`,fill:`#66d9e8`}),(0,e.jsx)(`rect`,{x:`4`,y:`13`,width:`2`,height:`2`,fill:`#66d9e8`}),(0,e.jsx)(`rect`,{x:`7`,y:`13`,width:`2`,height:`2`,fill:`#66d9e8`}),(0,e.jsx)(`rect`,{x:`10`,y:`13`,width:`2`,height:`2`,fill:`#66d9e8`}),(0,e.jsx)(`rect`,{x:`6`,y:`4`,width:`4`,height:`3`,fill:`#b0eff6`}),(0,e.jsx)(`rect`,{x:`7`,y:`3`,width:`2`,height:`1`,fill:`#b0eff6`}),(0,e.jsx)(`rect`,{x:`6`,y:`7`,width:`2`,height:`2`,fill:`#ffffff`}),(0,e.jsx)(`rect`,{x:`9`,y:`7`,width:`2`,height:`2`,fill:`#ffffff`}),(0,e.jsx)(`rect`,{x:`7`,y:`8`,width:`1`,height:`1`,fill:`#66d9e8`}),(0,e.jsx)(`rect`,{x:`10`,y:`8`,width:`1`,height:`1`,fill:`#66d9e8`})]})}function F(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`1`,y:`11`,width:`3`,height:`4`,fill:`#cfd8e2`}),(0,e.jsx)(`rect`,{x:`6`,y:`7`,width:`4`,height:`8`,fill:`#4a4a5a`}),(0,e.jsx)(`rect`,{x:`12`,y:`4`,width:`3`,height:`11`,fill:`#4a4a5a`}),(0,e.jsx)(`rect`,{x:`1`,y:`15`,width:`14`,height:`1`,fill:`#5a5a6a`}),(0,e.jsx)(`rect`,{x:`1`,y:`8`,width:`1`,height:`2`,fill:`#e6db74`}),(0,e.jsx)(`rect`,{x:`3`,y:`10`,width:`1`,height:`2`,fill:`#e6db74`}),(0,e.jsx)(`rect`,{x:`2`,y:`10`,width:`1`,height:`1`,fill:`#e6db74`})]})}function I(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`1`,y:`11`,width:`3`,height:`4`,fill:`#4a4a5a`}),(0,e.jsx)(`rect`,{x:`6`,y:`7`,width:`4`,height:`8`,fill:`#cfd8e2`}),(0,e.jsx)(`rect`,{x:`12`,y:`4`,width:`3`,height:`11`,fill:`#4a4a5a`}),(0,e.jsx)(`rect`,{x:`1`,y:`15`,width:`14`,height:`1`,fill:`#5a5a6a`}),(0,e.jsx)(`rect`,{x:`6`,y:`4`,width:`1`,height:`2`,fill:`#e6db74`}),(0,e.jsx)(`rect`,{x:`9`,y:`4`,width:`1`,height:`2`,fill:`#e6db74`}),(0,e.jsx)(`rect`,{x:`7`,y:`5`,width:`2`,height:`1`,fill:`#e6db74`})]})}function L(){return(0,e.jsxs)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,e.jsx)(`rect`,{x:`1`,y:`11`,width:`3`,height:`4`,fill:`#4a4a5a`}),(0,e.jsx)(`rect`,{x:`6`,y:`7`,width:`4`,height:`8`,fill:`#4a4a5a`}),(0,e.jsx)(`rect`,{x:`12`,y:`4`,width:`3`,height:`11`,fill:`#cfd8e2`}),(0,e.jsx)(`rect`,{x:`1`,y:`15`,width:`14`,height:`1`,fill:`#5a5a6a`}),(0,e.jsx)(`rect`,{x:`13`,y:`1`,width:`1`,height:`2`,fill:`#e6db74`}),(0,e.jsx)(`rect`,{x:`14`,y:`1`,width:`1`,height:`3`,fill:`#e6db74`}),(0,e.jsx)(`rect`,{x:`13`,y:`3`,width:`1`,height:`1`,fill:`#e6db74`})]})}var R={sword:g,staff:v,bow:_,katar:y,book:b,hammer:x,neutral:S,earth:C,wind:w,water:T,fire:E,light:O,dark:D,void:k,human:A,beast:j,demon:M,angel:N,spirit:P,small:F,medium:I,large:L},z=Object.keys(R),B=Object.assign(function({name:t=`sword`,size:n=22,style:r}){let i=R[t]||g;return(0,e.jsx)(`span`,{style:{display:`inline-flex`,alignItems:`center`,justifyContent:`center`,width:n,height:n,imageRendering:`pixelated`,flexShrink:0,...r},children:(0,e.jsx)(i,{})})},{icons:z}),V=B;function H(){return(0,e.jsx)(`svg`,{viewBox:`0 0 12 8`,width:12,height:12,"aria-hidden":`true`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,e.jsx)(`polyline`,{points:`1,1.5 6,6.5 11,1.5`})})}function U({href:n,label:r,className:i,children:a,...o}){return(0,e.jsx)(`a`,{...o,href:n,"aria-label":r,className:t(`ns-section-arrow`,i),children:a||(0,e.jsx)(H,{})})}exports.Button=s,exports.FeatureCard=c,exports.HUDBar=d,exports.HUDDivider=f,exports.HUDIcon=V,exports.HUDLabel=h,exports.QuestCard=l,exports.RPGIcon=B,exports.SectionArrow=U,exports.icons=z;
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './components/react/index.js';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,18 +1 @@
|
|
|
1
|
-
export
|
|
2
|
-
export { FeatureCard, type FeatureCardProps } from './components/cards/FeatureCard';
|
|
3
|
-
export { QuestCard, type QuestCardProps } from './components/cards/QuestCard';
|
|
4
|
-
export { HUDBar, type HUDBarProps } from './components/hud/HUDBar';
|
|
5
|
-
export { HUDDivider, type HUDDividerProps } from './components/hud/HUDDivider';
|
|
6
|
-
export { HUDLabel, type HUDLabelProps } from './components/hud/HUDLabel';
|
|
7
|
-
export {
|
|
8
|
-
RPGIcon,
|
|
9
|
-
HUDIcon,
|
|
10
|
-
icons,
|
|
11
|
-
type RPGIconElement,
|
|
12
|
-
type RPGIconName,
|
|
13
|
-
type RPGIconProps,
|
|
14
|
-
type RPGIconRace,
|
|
15
|
-
type RPGIconSize,
|
|
16
|
-
type RPGIconWeapon,
|
|
17
|
-
} from './components/icons/RPGIcon';
|
|
18
|
-
export { SectionArrow, type SectionArrowProps } from './components/navigation/SectionArrow';
|
|
1
|
+
export * from './components/react/index.js';
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as e, jsxs as t } from "react/jsx-runtime";
|
|
2
|
-
//#region components/shared/styles.
|
|
2
|
+
//#region components/shared/styles.ts
|
|
3
3
|
var n = (...e) => e.filter(Boolean).join(" ");
|
|
4
4
|
function r(e, t) {
|
|
5
5
|
return t ? {
|
|
@@ -61,7 +61,7 @@ function c({ variant: t = "play", size: r = "md", href: i, onClick: a, children:
|
|
|
61
61
|
});
|
|
62
62
|
}
|
|
63
63
|
//#endregion
|
|
64
|
-
//#region components/cards/FeatureCard.
|
|
64
|
+
//#region components/cards/FeatureCard.tsx
|
|
65
65
|
function l({ icon: a, title: o, body: s, tag: c, iconColor: l = i.gold, className: u, style: d, ...f }) {
|
|
66
66
|
return /* @__PURE__ */ t("li", {
|
|
67
67
|
...f,
|
|
@@ -88,7 +88,7 @@ function l({ icon: a, title: o, body: s, tag: c, iconColor: l = i.gold, classNam
|
|
|
88
88
|
});
|
|
89
89
|
}
|
|
90
90
|
//#endregion
|
|
91
|
-
//#region components/cards/QuestCard.
|
|
91
|
+
//#region components/cards/QuestCard.tsx
|
|
92
92
|
function u({ gate: r, title: i, body: o, status: s = "locked", className: c, ...l }) {
|
|
93
93
|
let u = a[s] || a.locked;
|
|
94
94
|
return /* @__PURE__ */ t("li", {
|
|
@@ -118,11 +118,16 @@ function u({ gate: r, title: i, body: o, status: s = "locked", className: c, ...
|
|
|
118
118
|
});
|
|
119
119
|
}
|
|
120
120
|
//#endregion
|
|
121
|
-
//#region components/hud/HUDBar.
|
|
121
|
+
//#region components/hud/HUDBar.tsx
|
|
122
122
|
var d = "var(--ns-font-pixel, \"Press Start 2P\", monospace)";
|
|
123
|
-
function f({ value: n = 40, max: r = 40, fillColor: i = "var(--hud-hp-fill, #4caf73)", trackColor: a = "var(--hud-track, rgba(255, 255, 255, 0.10))", height: o = 14, style: s }) {
|
|
124
|
-
let
|
|
123
|
+
function f({ value: n = 40, max: r = 40, fillColor: i = "var(--hud-hp-fill, #4caf73)", trackColor: a = "var(--hud-track, rgba(255, 255, 255, 0.10))", height: o = 14, style: s, role: c = "meter", ...l }) {
|
|
124
|
+
let u = r > 0 ? Math.max(0, Math.min(100, n / r * 100)) : 0;
|
|
125
125
|
return /* @__PURE__ */ t("div", {
|
|
126
|
+
...l,
|
|
127
|
+
role: c,
|
|
128
|
+
"aria-valuemin": 0,
|
|
129
|
+
"aria-valuemax": r,
|
|
130
|
+
"aria-valuenow": Math.max(0, Math.min(n, r)),
|
|
126
131
|
style: {
|
|
127
132
|
position: "relative",
|
|
128
133
|
background: a,
|
|
@@ -134,7 +139,7 @@ function f({ value: n = 40, max: r = 40, fillColor: i = "var(--hud-hp-fill, #4ca
|
|
|
134
139
|
children: [/* @__PURE__ */ e("div", { style: {
|
|
135
140
|
position: "absolute",
|
|
136
141
|
inset: 0,
|
|
137
|
-
width: `${
|
|
142
|
+
width: `${u}%`,
|
|
138
143
|
background: i,
|
|
139
144
|
transition: "width .35s ease-out"
|
|
140
145
|
} }), /* @__PURE__ */ t("span", {
|
|
@@ -157,27 +162,33 @@ function f({ value: n = 40, max: r = 40, fillColor: i = "var(--hud-hp-fill, #4ca
|
|
|
157
162
|
});
|
|
158
163
|
}
|
|
159
164
|
//#endregion
|
|
160
|
-
//#region components/hud/HUDDivider.
|
|
161
|
-
function p({ direction: t = "vertical", color: n = "var(--ns-line)", style: r }) {
|
|
162
|
-
let
|
|
163
|
-
return /* @__PURE__ */ e("div", {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
165
|
+
//#region components/hud/HUDDivider.tsx
|
|
166
|
+
function p({ direction: t = "vertical", color: n = "var(--ns-line)", style: r, role: i = "separator", ...a }) {
|
|
167
|
+
let o = t === "vertical";
|
|
168
|
+
return /* @__PURE__ */ e("div", {
|
|
169
|
+
...a,
|
|
170
|
+
role: i,
|
|
171
|
+
"aria-orientation": t,
|
|
172
|
+
style: {
|
|
173
|
+
width: o ? "1px" : "100%",
|
|
174
|
+
height: o ? "100%" : "1px",
|
|
175
|
+
background: n,
|
|
176
|
+
flexShrink: 0,
|
|
177
|
+
alignSelf: "stretch",
|
|
178
|
+
...r
|
|
179
|
+
}
|
|
180
|
+
});
|
|
171
181
|
}
|
|
172
182
|
//#endregion
|
|
173
|
-
//#region components/hud/HUDLabel.
|
|
183
|
+
//#region components/hud/HUDLabel.tsx
|
|
174
184
|
var m = "var(--ns-font-pixel, \"Press Start 2P\", monospace)", h = {
|
|
175
185
|
left: "flex-start",
|
|
176
186
|
center: "center",
|
|
177
187
|
right: "flex-end"
|
|
178
188
|
};
|
|
179
|
-
function g({ text: t = "Label", align: n = "left", scale: r = 1, color: i = "var(--ns-ink)", fontSize: a = 5, style: o }) {
|
|
189
|
+
function g({ text: t = "Label", align: n = "left", scale: r = 1, color: i = "var(--ns-ink)", fontSize: a = 5, style: o, ...s }) {
|
|
180
190
|
return /* @__PURE__ */ e("div", {
|
|
191
|
+
...s,
|
|
181
192
|
style: {
|
|
182
193
|
display: "flex",
|
|
183
194
|
alignItems: "center",
|
|
@@ -197,7 +208,7 @@ function g({ text: t = "Label", align: n = "left", scale: r = 1, color: i = "var
|
|
|
197
208
|
});
|
|
198
209
|
}
|
|
199
210
|
//#endregion
|
|
200
|
-
//#region components/icons/RPGIcon.
|
|
211
|
+
//#region components/icons/RPGIcon.tsx
|
|
201
212
|
function _() {
|
|
202
213
|
return /* @__PURE__ */ t("svg", {
|
|
203
214
|
viewBox: "0 0 16 16",
|
|
@@ -1936,8 +1947,7 @@ var z = {
|
|
|
1936
1947
|
small: I,
|
|
1937
1948
|
medium: L,
|
|
1938
1949
|
large: R
|
|
1939
|
-
}, B = Object.keys(z)
|
|
1940
|
-
function V({ name: t = "sword", size: n = 22, style: r }) {
|
|
1950
|
+
}, B = Object.keys(z), V = Object.assign(function({ name: t = "sword", size: n = 22, style: r }) {
|
|
1941
1951
|
let i = z[t] || _;
|
|
1942
1952
|
return /* @__PURE__ */ e("span", {
|
|
1943
1953
|
style: {
|
|
@@ -1952,11 +1962,9 @@ function V({ name: t = "sword", size: n = 22, style: r }) {
|
|
|
1952
1962
|
},
|
|
1953
1963
|
children: /* @__PURE__ */ e(i, {})
|
|
1954
1964
|
});
|
|
1955
|
-
}
|
|
1956
|
-
V.icons = B;
|
|
1957
|
-
var H = V;
|
|
1965
|
+
}, { icons: B }), H = V;
|
|
1958
1966
|
//#endregion
|
|
1959
|
-
//#region components/navigation/SectionArrow.
|
|
1967
|
+
//#region components/navigation/SectionArrow.tsx
|
|
1960
1968
|
function U() {
|
|
1961
1969
|
return /* @__PURE__ */ e("svg", {
|
|
1962
1970
|
viewBox: "0 0 12 8",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@noobsociety/nsds",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "NoobSociety Design System — Monokai dark tokens, Tailwind preset, and pixel-art React components",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"design-system",
|
|
@@ -13,17 +13,23 @@
|
|
|
13
13
|
"author": "NoobSociety",
|
|
14
14
|
"license": "MIT",
|
|
15
15
|
"scripts": {
|
|
16
|
-
"build": "vite build",
|
|
16
|
+
"build": "vite build && tsc -p tsconfig.build.json && node scripts/prepare-types.mjs",
|
|
17
17
|
"build:storybook": "storybook build --disable-telemetry",
|
|
18
18
|
"changeset": "changeset",
|
|
19
19
|
"changeset:publish": "changeset publish",
|
|
20
20
|
"changeset:version": "changeset version && node scripts/release-changelog.mjs",
|
|
21
|
-
"check": "npm run build && npm run check:package && npm run check:types && npm run test:smoke",
|
|
21
|
+
"check": "npm run build && npm run check:package && npm run check:exports && npm run check:install && npm run check:types && npm run check:docs && npm run test:components && npm run test:visual && npm run test:smoke",
|
|
22
|
+
"check:docs": "npm run docs:api && git diff --exit-code docs/reference/api",
|
|
23
|
+
"check:exports": "publint run --pack npm --level warning && attw --pack . --profile node16 --entrypoints . ./react ./tailwind --format table --no-emoji",
|
|
24
|
+
"check:install": "node scripts/check-install.mjs",
|
|
22
25
|
"check:package": "node scripts/check-package.mjs",
|
|
23
26
|
"check:types": "tsc --noEmit",
|
|
27
|
+
"docs:api": "typedoc --options typedoc.json",
|
|
24
28
|
"prepublishOnly": "npm run build",
|
|
25
29
|
"storybook": "storybook dev -p 6006 --disable-telemetry",
|
|
26
30
|
"test": "npm run check",
|
|
31
|
+
"test:components": "vitest run",
|
|
32
|
+
"test:visual": "playwright test",
|
|
27
33
|
"test:smoke": "node scripts/smoke-imports.mjs",
|
|
28
34
|
"release:dry-run": "npm pack --dry-run"
|
|
29
35
|
},
|
|
@@ -56,16 +62,35 @@
|
|
|
56
62
|
],
|
|
57
63
|
"exports": {
|
|
58
64
|
".": {
|
|
59
|
-
"
|
|
60
|
-
|
|
61
|
-
|
|
65
|
+
"import": {
|
|
66
|
+
"types": "./dist/index.d.ts",
|
|
67
|
+
"default": "./dist/index.js"
|
|
68
|
+
},
|
|
69
|
+
"require": {
|
|
70
|
+
"types": "./dist/index.d.cts",
|
|
71
|
+
"default": "./dist/index.cjs"
|
|
72
|
+
}
|
|
62
73
|
},
|
|
63
74
|
"./react": {
|
|
64
|
-
"
|
|
65
|
-
|
|
66
|
-
|
|
75
|
+
"import": {
|
|
76
|
+
"types": "./dist/index.d.ts",
|
|
77
|
+
"default": "./dist/index.js"
|
|
78
|
+
},
|
|
79
|
+
"require": {
|
|
80
|
+
"types": "./dist/index.d.cts",
|
|
81
|
+
"default": "./dist/index.cjs"
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
"./tailwind": {
|
|
85
|
+
"import": {
|
|
86
|
+
"types": "./dist/tailwind/preset.d.ts",
|
|
87
|
+
"default": "./dist/tailwind/preset.js"
|
|
88
|
+
},
|
|
89
|
+
"require": {
|
|
90
|
+
"types": "./dist/tailwind/preset.d.cts",
|
|
91
|
+
"default": "./dist/tailwind/preset.js"
|
|
92
|
+
}
|
|
67
93
|
},
|
|
68
|
-
"./tailwind": "./dist/tailwind/preset.js",
|
|
69
94
|
"./styles": "./dist/styles.css",
|
|
70
95
|
"./styles.css": "./dist/styles.css",
|
|
71
96
|
"./tokens/*": "./dist/tokens/*",
|
|
@@ -78,16 +103,25 @@
|
|
|
78
103
|
"react-dom": ">=18.0.0"
|
|
79
104
|
},
|
|
80
105
|
"devDependencies": {
|
|
106
|
+
"@arethetypeswrong/cli": "^0.18.3",
|
|
81
107
|
"@changesets/cli": "^2.31.0",
|
|
108
|
+
"@playwright/test": "^1.61.0",
|
|
82
109
|
"@storybook/addon-docs": "^10.4.6",
|
|
83
110
|
"@storybook/react-vite": "^10.4.6",
|
|
111
|
+
"@testing-library/jest-dom": "^6.9.1",
|
|
112
|
+
"@testing-library/react": "^16.3.2",
|
|
84
113
|
"@types/react": "^19.2.17",
|
|
85
114
|
"@vitejs/plugin-react": "^6.0.2",
|
|
115
|
+
"jsdom": "^29.1.1",
|
|
116
|
+
"publint": "^0.3.21",
|
|
86
117
|
"react": "^19.2.7",
|
|
87
118
|
"react-dom": "^19.2.7",
|
|
88
119
|
"storybook": "^10.4.6",
|
|
89
120
|
"tailwindcss": "^3.0.0",
|
|
121
|
+
"typedoc": "^0.28.19",
|
|
122
|
+
"typedoc-plugin-markdown": "^4.12.0",
|
|
90
123
|
"typescript": "^6.0.3",
|
|
91
|
-
"vite": "^8.0.16"
|
|
124
|
+
"vite": "^8.0.16",
|
|
125
|
+
"vitest": "^4.1.9"
|
|
92
126
|
}
|
|
93
127
|
}
|