@qpjoy/ui-design-neon-void 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,89 @@
1
+ # @qpjoy/ui-design-neon-void
2
+
3
+ Neon Void is the reusable QPJoy dark tool UI style extracted from the MX Launcher design base. It packages the screenshot style as npm-ready tokens plus CSS components: deep blue-black workspaces, cyan primary actions, quiet panel surfaces, purple design frames, and precise status colors.
4
+
5
+ ## Design Language
6
+
7
+ Neon Void is built for dense product and operations tools, not marketing pages. The first screen should feel like a working console: clear navigation, compact state feedback, direct actions, and enough contrast for repeated daily use.
8
+
9
+ - Backgrounds step from `BG1 #141417` to `BG4 #292C37`, creating a dark canvas, workspace, panel, and dialog/actionbar elevation system.
10
+ - Main interaction color is `M1 #2BF6D2`, with hover `#11CDB5` and pressed `#079987`.
11
+ - Status colors are intentionally saturated: danger `#EE6067`, warning `#F8D06C`, success `#48BC77`, info `#5E8EEC`, archetype `#B974FF`.
12
+ - Text is a five-step alpha ladder on `#E2E2E2`, so disabled, muted, metadata, and primary text can stay consistent.
13
+ - Radius is restrained at 4/6/8px, with pill radius only for tags, avatars, switches, and chips.
14
+ - Effects are quiet: a few drop shadows, subtle inner highlights, cyan focus rings, and dashed purple design frames for component specimens.
15
+ - Typography follows the screenshot scale: 20/16/14/12/10px with 150% line-height, using Poppins first and system CJK fallbacks.
16
+
17
+ ## Install
18
+
19
+ ```sh
20
+ pnpm add @qpjoy/ui-design-neon-void
21
+ ```
22
+
23
+ ```ts
24
+ import '@qpjoy/ui-design-neon-void/styles.css';
25
+ import { neonVoidTokens } from '@qpjoy/ui-design-neon-void';
26
+ ```
27
+
28
+ ```html
29
+ <main class="qp-app qp-theme-neon-void qp-density--medium">
30
+ <button class="qp-button qp-button--primary">Publish</button>
31
+ <input class="qp-input" placeholder="Search" />
32
+ </main>
33
+ ```
34
+
35
+ ## Density
36
+
37
+ The screenshots look compact because of capture scale, so the library does not lock the style to a compact UI. Use one of three densities on any container:
38
+
39
+ ```html
40
+ <section class="qp-theme-neon-void qp-density--small">...</section>
41
+ <section class="qp-theme-neon-void qp-density--medium">...</section>
42
+ <section class="qp-theme-neon-void qp-density--large">...</section>
43
+ ```
44
+
45
+ Individual controls also support explicit sizes such as `qp-button--sm`, `qp-button--md`, `qp-button--lg`, `qp-input--sm`, `qp-input--md`, and `qp-input--lg`.
46
+
47
+ ## Exports
48
+
49
+ - `@qpjoy/ui-design-neon-void/styles.css`: tokens plus component classes.
50
+ - `@qpjoy/ui-design-neon-void/tokens.css`: CSS custom properties only.
51
+ - `@qpjoy/ui-design-neon-void/tokens.json`: portable design tokens.
52
+ - `@qpjoy/ui-design-neon-void`: TypeScript token and class name helpers.
53
+
54
+ ## Component Classes
55
+
56
+ - Layout: `qp-app`, `qp-shell`, `qp-sidebar`, `qp-main`, `qp-panel`, `qp-card`, `qp-section-title`.
57
+ - Actions: `qp-button`, `qp-icon-button`, `qp-button--primary`, `qp-button--outline`, `qp-button--ghost`, `qp-button--transparent`.
58
+ - Form: `qp-field`, `qp-input`, `qp-select`, `qp-dropdown`, `qp-textarea`, `qp-input-group`.
59
+ - Choice: `qp-choice--radio`, `qp-choice--checkbox`, `qp-switch`, `qp-slider`, `qp-segmented`.
60
+ - Feedback: `qp-tag`, `qp-status`, `qp-toast`, `qp-dialog`, `qp-actionbar`.
61
+ - App surfaces: `qp-menu`, `qp-list`, `qp-project-card`, `qp-market-layout`, `qp-market-card`, `qp-market-inspector`, `qp-chip-list`, `qp-user-card`, `qp-color-swatch`.
62
+ - Settings: `qp-appbar`, `qp-settings-view`, `qp-settings-nav`, `qp-setting-row`, `qp-version-card`, `qp-path-field`.
63
+ - Properties: `qp-properties-panel`, `qp-property-section`, `qp-property-row`, `qp-axis-grid`, `qp-axis-field`, `qp-swatch-input`.
64
+ - Editor panels: `qp-panel-tabs`, `qp-panel-tab`, `qp-split-panel`, `qp-anchor-grid`, `qp-anchor-preset`.
65
+ - Icons: `qp-icon`, `qp-icon-board`, `qp-icon-category`, `qp-icon-grid`, `qp-icon-cell`.
66
+
67
+ ## Demo
68
+
69
+ From `electron-dock/mx-launcher`:
70
+
71
+ ```sh
72
+ bash scripts/manage.sh ui-design demo
73
+ ```
74
+
75
+ Then open:
76
+
77
+ ```text
78
+ http://127.0.0.1:18130/demos/ui-design-neon-void/
79
+ ```
80
+
81
+ ## Publish
82
+
83
+ From the repository root:
84
+
85
+ ```sh
86
+ ./scripts/manage.sh prepare-design
87
+ ```
88
+
89
+ The script bumps, builds, packs a preview tarball, prints the manual `pnpm publish --no-git-checks --otp=...` command, and can publish directly when an OTP is entered.
@@ -0,0 +1,37 @@
1
+ export { neonVoidCssVariables, neonVoidTokens, neonVoidTheme, type NeonVoidTokens, type TokenLeaf } from './tokens.js';
2
+ export declare const packageName = "@qpjoy/ui-design-neon-void";
3
+ export declare const styleName = "neon-void";
4
+ export declare const cssEntryPoints: {
5
+ readonly styles: "@qpjoy/ui-design-neon-void/styles.css";
6
+ readonly tokens: "@qpjoy/ui-design-neon-void/tokens.css";
7
+ };
8
+ export declare const classNames: {
9
+ readonly app: "qp-app qp-theme-neon-void";
10
+ readonly densitySmall: "qp-density--small";
11
+ readonly densityMedium: "qp-density--medium";
12
+ readonly densityLarge: "qp-density--large";
13
+ readonly sectionTitle: "qp-section-title";
14
+ readonly panel: "qp-panel";
15
+ readonly card: "qp-card";
16
+ readonly button: "qp-button";
17
+ readonly buttonPrimary: "qp-button qp-button--primary";
18
+ readonly buttonOutline: "qp-button qp-button--outline";
19
+ readonly buttonGhost: "qp-button qp-button--ghost";
20
+ readonly input: "qp-input";
21
+ readonly select: "qp-select";
22
+ readonly dropdown: "qp-dropdown";
23
+ readonly field: "qp-field";
24
+ readonly checkbox: "qp-choice qp-choice--checkbox";
25
+ readonly radio: "qp-choice qp-choice--radio";
26
+ readonly switch: "qp-switch";
27
+ readonly tag: "qp-tag";
28
+ readonly menu: "qp-menu";
29
+ readonly toast: "qp-toast";
30
+ readonly projectCard: "qp-project-card";
31
+ readonly userCard: "qp-user-card";
32
+ readonly settingsView: "qp-settings-view";
33
+ readonly propertiesPanel: "qp-properties-panel";
34
+ readonly splitPanel: "qp-split-panel";
35
+ readonly anchorGrid: "qp-anchor-grid";
36
+ readonly iconBoard: "qp-icon-board";
37
+ };
package/dist/index.js ADDED
@@ -0,0 +1,37 @@
1
+ export { neonVoidCssVariables, neonVoidTokens, neonVoidTheme } from './tokens.js';
2
+ export const packageName = '@qpjoy/ui-design-neon-void';
3
+ export const styleName = 'neon-void';
4
+ export const cssEntryPoints = {
5
+ styles: '@qpjoy/ui-design-neon-void/styles.css',
6
+ tokens: '@qpjoy/ui-design-neon-void/tokens.css'
7
+ };
8
+ export const classNames = {
9
+ app: 'qp-app qp-theme-neon-void',
10
+ densitySmall: 'qp-density--small',
11
+ densityMedium: 'qp-density--medium',
12
+ densityLarge: 'qp-density--large',
13
+ sectionTitle: 'qp-section-title',
14
+ panel: 'qp-panel',
15
+ card: 'qp-card',
16
+ button: 'qp-button',
17
+ buttonPrimary: 'qp-button qp-button--primary',
18
+ buttonOutline: 'qp-button qp-button--outline',
19
+ buttonGhost: 'qp-button qp-button--ghost',
20
+ input: 'qp-input',
21
+ select: 'qp-select',
22
+ dropdown: 'qp-dropdown',
23
+ field: 'qp-field',
24
+ checkbox: 'qp-choice qp-choice--checkbox',
25
+ radio: 'qp-choice qp-choice--radio',
26
+ switch: 'qp-switch',
27
+ tag: 'qp-tag',
28
+ menu: 'qp-menu',
29
+ toast: 'qp-toast',
30
+ projectCard: 'qp-project-card',
31
+ userCard: 'qp-user-card',
32
+ settingsView: 'qp-settings-view',
33
+ propertiesPanel: 'qp-properties-panel',
34
+ splitPanel: 'qp-split-panel',
35
+ anchorGrid: 'qp-anchor-grid',
36
+ iconBoard: 'qp-icon-board'
37
+ };