@nukleas/cyberdesign 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +38 -0
- package/build.ts +286 -0
- package/dist/cyberdesign-vars-only.css +116 -0
- package/dist/cyberdesign.css +8377 -0
- package/dist/fonts/JetBrainsMono-Variable.woff2 +0 -0
- package/dist/fonts/OFL.txt +93 -0
- package/dist/react/Accordion.d.ts +34 -0
- package/dist/react/Accordion.js +13 -0
- package/dist/react/Alert.d.ts +19 -0
- package/dist/react/Alert.js +6 -0
- package/dist/react/AugButton.d.ts +12 -0
- package/dist/react/AugButton.js +6 -0
- package/dist/react/AugPanel.d.ts +10 -0
- package/dist/react/AugPanel.js +6 -0
- package/dist/react/Avatar.d.ts +28 -0
- package/dist/react/Avatar.js +11 -0
- package/dist/react/Badge.d.ts +10 -0
- package/dist/react/Badge.js +6 -0
- package/dist/react/Breadcrumb.d.ts +19 -0
- package/dist/react/Breadcrumb.js +10 -0
- package/dist/react/Button.d.ts +12 -0
- package/dist/react/Button.js +6 -0
- package/dist/react/Checkbox.d.ts +9 -0
- package/dist/react/Checkbox.js +9 -0
- package/dist/react/Dropdown.d.ts +35 -0
- package/dist/react/Dropdown.js +20 -0
- package/dist/react/Field.d.ts +13 -0
- package/dist/react/Field.js +6 -0
- package/dist/react/Gauge.d.ts +19 -0
- package/dist/react/Gauge.js +6 -0
- package/dist/react/GlowCard.d.ts +12 -0
- package/dist/react/GlowCard.js +4 -0
- package/dist/react/HudBar.d.ts +34 -0
- package/dist/react/HudBar.js +10 -0
- package/dist/react/HudFrame.d.ts +19 -0
- package/dist/react/HudFrame.js +6 -0
- package/dist/react/Input.d.ts +11 -0
- package/dist/react/Input.js +6 -0
- package/dist/react/Interference.d.ts +18 -0
- package/dist/react/Interference.js +6 -0
- package/dist/react/Kbd.d.ts +18 -0
- package/dist/react/Kbd.js +11 -0
- package/dist/react/Label.d.ts +8 -0
- package/dist/react/Label.js +6 -0
- package/dist/react/Modal.d.ts +19 -0
- package/dist/react/Modal.js +9 -0
- package/dist/react/Pagination.d.ts +23 -0
- package/dist/react/Pagination.js +28 -0
- package/dist/react/PanelHeader.d.ts +9 -0
- package/dist/react/PanelHeader.js +6 -0
- package/dist/react/Progress.d.ts +13 -0
- package/dist/react/Progress.js +6 -0
- package/dist/react/Radio.d.ts +9 -0
- package/dist/react/Radio.js +9 -0
- package/dist/react/Scanner.d.ts +11 -0
- package/dist/react/Scanner.js +6 -0
- package/dist/react/Select.d.ts +13 -0
- package/dist/react/Select.js +6 -0
- package/dist/react/Separator.d.ts +11 -0
- package/dist/react/Separator.js +7 -0
- package/dist/react/Skeleton.d.ts +11 -0
- package/dist/react/Skeleton.js +13 -0
- package/dist/react/Slider.d.ts +9 -0
- package/dist/react/Slider.js +9 -0
- package/dist/react/Spinner.d.ts +11 -0
- package/dist/react/Spinner.js +6 -0
- package/dist/react/Stat.d.ts +20 -0
- package/dist/react/Stat.js +11 -0
- package/dist/react/Switch.d.ts +9 -0
- package/dist/react/Switch.js +6 -0
- package/dist/react/Table.d.ts +55 -0
- package/dist/react/Table.js +36 -0
- package/dist/react/Tabs.d.ts +28 -0
- package/dist/react/Tabs.js +16 -0
- package/dist/react/Terminal.d.ts +33 -0
- package/dist/react/Terminal.js +6 -0
- package/dist/react/Textarea.d.ts +7 -0
- package/dist/react/Textarea.js +6 -0
- package/dist/react/Ticker.d.ts +13 -0
- package/dist/react/Ticker.js +7 -0
- package/dist/react/Toast.d.ts +15 -0
- package/dist/react/Toast.js +6 -0
- package/dist/react/Tooltip.d.ts +11 -0
- package/dist/react/Tooltip.js +6 -0
- package/dist/react/index.d.ts +39 -0
- package/dist/react/index.js +46 -0
- package/dist/tailwind-theme.css +171 -0
- package/dist/tokens/base.d.ts +33 -0
- package/dist/tokens/base.js +41 -0
- package/dist/tokens/index.d.ts +7 -0
- package/dist/tokens/index.js +7 -0
- package/dist/tokens/semantic.d.ts +1 -0
- package/dist/tokens/semantic.js +54 -0
- package/dist/tokens/themes/cyan.d.ts +1 -0
- package/dist/tokens/themes/cyan.js +15 -0
- package/dist/tokens/themes/green.d.ts +1 -0
- package/dist/tokens/themes/green.js +15 -0
- package/dist/tokens/themes/orange.d.ts +1 -0
- package/dist/tokens/themes/orange.js +15 -0
- package/dist/tokens/themes/red.d.ts +1 -0
- package/dist/tokens/themes/red.js +15 -0
- package/dist/tokens/themes/steel.d.ts +1 -0
- package/dist/tokens/themes/steel.js +15 -0
- package/package.json +73 -0
- package/src/css/a11y.css +67 -0
- package/src/css/animations.css +111 -0
- package/src/css/base.css +34 -0
- package/src/css/components/accordion.css +148 -0
- package/src/css/components/alert.css +116 -0
- package/src/css/components/app-patterns.css +894 -0
- package/src/css/components/augmented.css +474 -0
- package/src/css/components/avatar.css +105 -0
- package/src/css/components/badge.css +46 -0
- package/src/css/components/breadcrumb.css +75 -0
- package/src/css/components/button.css +130 -0
- package/src/css/components/calendar.css +135 -0
- package/src/css/components/card.css +68 -0
- package/src/css/components/carousel.css +69 -0
- package/src/css/components/charts.css +464 -0
- package/src/css/components/checkbox.css +136 -0
- package/src/css/components/command.css +162 -0
- package/src/css/components/dropdown.css +187 -0
- package/src/css/components/form.css +280 -0
- package/src/css/components/gauge.css +156 -0
- package/src/css/components/glow-card.css +32 -0
- package/src/css/components/hud.css +165 -0
- package/src/css/components/image.css +164 -0
- package/src/css/components/input-otp.css +53 -0
- package/src/css/components/input.css +182 -0
- package/src/css/components/interference.css +217 -0
- package/src/css/components/kbd.css +54 -0
- package/src/css/components/layout-extras.css +256 -0
- package/src/css/components/modal.css +146 -0
- package/src/css/components/navigation-extras.css +280 -0
- package/src/css/components/pagination.css +122 -0
- package/src/css/components/panel-header.css +55 -0
- package/src/css/components/popover.css +112 -0
- package/src/css/components/scanner.css +125 -0
- package/src/css/components/select.css +99 -0
- package/src/css/components/sheet.css +149 -0
- package/src/css/components/skeleton.css +77 -0
- package/src/css/components/slider.css +116 -0
- package/src/css/components/spinner.css +101 -0
- package/src/css/components/spreadsheet.css +314 -0
- package/src/css/components/svg.css +104 -0
- package/src/css/components/switch.css +114 -0
- package/src/css/components/table.css +115 -0
- package/src/css/components/tabs.css +159 -0
- package/src/css/components/terminal.css +259 -0
- package/src/css/components/ticker.css +100 -0
- package/src/css/components/toast.css +137 -0
- package/src/css/components/toaster.css +48 -0
- package/src/css/components/toggle.css +99 -0
- package/src/css/components/typography.css +122 -0
- package/src/css/components/vectorbg.css +57 -0
- package/src/css/utilities.css +165 -0
- package/src/fonts/JetBrainsMono-Variable.woff2 +0 -0
- package/src/fonts/OFL.txt +93 -0
- package/src/js/charts.js +533 -0
- package/src/react/Accordion.tsx +85 -0
- package/src/react/Alert.tsx +58 -0
- package/src/react/AugButton.tsx +40 -0
- package/src/react/AugPanel.tsx +36 -0
- package/src/react/Avatar.tsx +69 -0
- package/src/react/Badge.tsx +28 -0
- package/src/react/Breadcrumb.tsx +63 -0
- package/src/react/Button.tsx +39 -0
- package/src/react/Checkbox.tsx +31 -0
- package/src/react/Dropdown.tsx +104 -0
- package/src/react/Field.tsx +36 -0
- package/src/react/Gauge.tsx +57 -0
- package/src/react/GlowCard.tsx +25 -0
- package/src/react/HudBar.tsx +86 -0
- package/src/react/HudFrame.tsx +52 -0
- package/src/react/Input.tsx +38 -0
- package/src/react/Interference.tsx +53 -0
- package/src/react/Kbd.tsx +62 -0
- package/src/react/Label.tsx +31 -0
- package/src/react/Modal.tsx +63 -0
- package/src/react/Pagination.tsx +113 -0
- package/src/react/PanelHeader.tsx +28 -0
- package/src/react/Progress.tsx +47 -0
- package/src/react/Radio.tsx +31 -0
- package/src/react/Scanner.tsx +37 -0
- package/src/react/Select.tsx +43 -0
- package/src/react/Separator.tsx +40 -0
- package/src/react/Skeleton.tsx +50 -0
- package/src/react/Slider.tsx +28 -0
- package/src/react/Spinner.tsx +39 -0
- package/src/react/Stat.tsx +52 -0
- package/src/react/Switch.tsx +25 -0
- package/src/react/Table.tsx +144 -0
- package/src/react/Tabs.tsx +97 -0
- package/src/react/Terminal.tsx +95 -0
- package/src/react/Textarea.tsx +20 -0
- package/src/react/Ticker.tsx +46 -0
- package/src/react/Toast.tsx +43 -0
- package/src/react/Tooltip.tsx +32 -0
- package/src/react/index.ts +52 -0
- package/src/tokens/base.ts +48 -0
- package/src/tokens/index.ts +7 -0
- package/src/tokens/semantic.ts +63 -0
- package/src/tokens/themes/cyan.ts +16 -0
- package/src/tokens/themes/green.ts +16 -0
- package/src/tokens/themes/orange.ts +16 -0
- package/src/tokens/themes/red.ts +16 -0
- package/src/tokens/themes/steel.ts +16 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Nader Heidari
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# cyberdesign
|
|
2
|
+
|
|
3
|
+
Unified cyber/terminal design system — shared design tokens, glow utilities, CRT effects, and component primitives (`cd-*` classes).
|
|
4
|
+
|
|
5
|
+
Part of the [cyberdesign monorepo](../../README.md). For the full React API and Storybook, see [`react-cyberdesign`](../react-cyberdesign).
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
pnpm add @nukleas/cyberdesign
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
```css
|
|
14
|
+
@import "@nukleas/cyberdesign/css";
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
```html
|
|
18
|
+
<html class="theme-orange"> <!-- or theme-cyan | theme-green | theme-red | theme-steel -->
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Build
|
|
22
|
+
|
|
23
|
+
From monorepo root:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
pnpm build:css
|
|
27
|
+
pnpm demo # http://localhost:4980/test/
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Exports
|
|
31
|
+
|
|
32
|
+
| Import | Contents |
|
|
33
|
+
| --- | --- |
|
|
34
|
+
| `@nukleas/cyberdesign` / `@nukleas/cyberdesign/css` | Full CSS bundle |
|
|
35
|
+
| `@nukleas/cyberdesign/vars` | CSS variables only |
|
|
36
|
+
| `@nukleas/cyberdesign/tailwind` | Variables + Tailwind v4 `@theme` |
|
|
37
|
+
| `@nukleas/cyberdesign/react` | Thin React class wrappers (prefer `@nukleas/react-cyberdesign` for apps) |
|
|
38
|
+
| `@nukleas/cyberdesign/tokens` | TypeScript token constants |
|
package/build.ts
ADDED
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
import { writeFileSync, readFileSync, mkdirSync, cpSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { createRequire } from 'node:module';
|
|
4
|
+
|
|
5
|
+
import { semanticTokens } from './src/tokens/semantic.js';
|
|
6
|
+
import { orangeTheme } from './src/tokens/themes/orange.js';
|
|
7
|
+
import { cyanTheme } from './src/tokens/themes/cyan.js';
|
|
8
|
+
import { greenTheme } from './src/tokens/themes/green.js';
|
|
9
|
+
import { redTheme } from './src/tokens/themes/red.js';
|
|
10
|
+
import { steelTheme } from './src/tokens/themes/steel.js';
|
|
11
|
+
|
|
12
|
+
const ROOT = new URL('.', import.meta.url).pathname;
|
|
13
|
+
const DIST = join(ROOT, 'dist');
|
|
14
|
+
const SRC_CSS = join(ROOT, 'src/css');
|
|
15
|
+
|
|
16
|
+
const require = createRequire(import.meta.url);
|
|
17
|
+
const { version: PKG_VERSION } = require(join(ROOT, 'package.json')) as { version: string };
|
|
18
|
+
|
|
19
|
+
mkdirSync(DIST, { recursive: true });
|
|
20
|
+
|
|
21
|
+
// Self-hosted font — no external CDN dependency at runtime
|
|
22
|
+
cpSync(join(ROOT, 'src/fonts'), join(DIST, 'fonts'), { recursive: true });
|
|
23
|
+
console.log('✓ dist/fonts/ (self-hosted JetBrains Mono)');
|
|
24
|
+
|
|
25
|
+
// ── Helpers ──────────────────────────────────────────────────────────────────
|
|
26
|
+
|
|
27
|
+
function block(selector: string, tokens: Record<string, string>): string {
|
|
28
|
+
const lines = Object.entries(tokens)
|
|
29
|
+
.map(([k, v]) => ` --cd-${k}: ${v};`)
|
|
30
|
+
.join('\n');
|
|
31
|
+
return `${selector} {\n${lines}\n}`;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function tailwindBlock(tokens: Record<string, string>, themes: Record<string, Record<string, string>>): string {
|
|
35
|
+
const allKeys = new Set([
|
|
36
|
+
...Object.keys(tokens),
|
|
37
|
+
...Object.values(themes).flatMap(Object.keys),
|
|
38
|
+
]);
|
|
39
|
+
|
|
40
|
+
const colorKeys = [...allKeys].filter(k =>
|
|
41
|
+
!k.startsWith('font') && k !== 'scanline-color' && k !== 'pixel-grid-color'
|
|
42
|
+
);
|
|
43
|
+
const fontKeys = [...allKeys].filter(k => k.startsWith('font'));
|
|
44
|
+
|
|
45
|
+
const colorLines = colorKeys
|
|
46
|
+
.map(k => ` --color-cd-${k}: var(--cd-${k});`)
|
|
47
|
+
.join('\n');
|
|
48
|
+
const fontLines = fontKeys
|
|
49
|
+
.map(k => ` --font-cd-${k.replace('font-', '')}: var(--cd-${k});`)
|
|
50
|
+
.join('\n');
|
|
51
|
+
|
|
52
|
+
return `@theme inline {\n${colorLines}\n${fontLines}\n}`;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function readCss(rel: string): string {
|
|
56
|
+
return readFileSync(join(SRC_CSS, rel), 'utf8');
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// ── Generate: cyberdesign-vars-only.css ──────────────────────────────────────
|
|
60
|
+
|
|
61
|
+
const header = `/* cyberdesign v${PKG_VERSION} — generated by build.ts, DO NOT EDIT */\n\n`;
|
|
62
|
+
|
|
63
|
+
const varsOnly = [
|
|
64
|
+
header,
|
|
65
|
+
block(':root', semanticTokens),
|
|
66
|
+
'\n\n',
|
|
67
|
+
block('.theme-orange', orangeTheme),
|
|
68
|
+
'\n\n',
|
|
69
|
+
block('.theme-cyan', cyanTheme),
|
|
70
|
+
'\n\n',
|
|
71
|
+
block('.theme-green', greenTheme),
|
|
72
|
+
'\n\n',
|
|
73
|
+
block('.theme-red', redTheme),
|
|
74
|
+
'\n\n',
|
|
75
|
+
block('.theme-steel', steelTheme),
|
|
76
|
+
'\n',
|
|
77
|
+
].join('');
|
|
78
|
+
|
|
79
|
+
writeFileSync(join(DIST, 'cyberdesign-vars-only.css'), varsOnly);
|
|
80
|
+
console.log('✓ dist/cyberdesign-vars-only.css');
|
|
81
|
+
|
|
82
|
+
// ── Generate: tailwind-theme.css ─────────────────────────────────────────────
|
|
83
|
+
|
|
84
|
+
const tailwind = [
|
|
85
|
+
header,
|
|
86
|
+
'/* Import this in your globals.css after @import "tailwindcss" */\n\n',
|
|
87
|
+
'/* 1. Load CSS variables */\n',
|
|
88
|
+
block(':root', semanticTokens),
|
|
89
|
+
'\n\n',
|
|
90
|
+
block('.theme-orange', orangeTheme),
|
|
91
|
+
'\n\n',
|
|
92
|
+
block('.theme-cyan', cyanTheme),
|
|
93
|
+
'\n\n',
|
|
94
|
+
block('.theme-green', greenTheme),
|
|
95
|
+
'\n\n',
|
|
96
|
+
block('.theme-red', redTheme),
|
|
97
|
+
'\n\n',
|
|
98
|
+
block('.theme-steel', steelTheme),
|
|
99
|
+
'\n\n',
|
|
100
|
+
'/* 2. Expose tokens to Tailwind v4 */\n',
|
|
101
|
+
tailwindBlock(semanticTokens, { orange: orangeTheme, cyan: cyanTheme, green: greenTheme, red: redTheme, steel: steelTheme }),
|
|
102
|
+
'\n',
|
|
103
|
+
].join('');
|
|
104
|
+
|
|
105
|
+
writeFileSync(join(DIST, 'tailwind-theme.css'), tailwind);
|
|
106
|
+
console.log('✓ dist/tailwind-theme.css');
|
|
107
|
+
|
|
108
|
+
// ── Generate: cyberdesign.css (full bundle) ───────────────────────────────────
|
|
109
|
+
|
|
110
|
+
const bundle = [
|
|
111
|
+
header,
|
|
112
|
+
'/* Variables */\n',
|
|
113
|
+
block(':root', semanticTokens),
|
|
114
|
+
'\n\n',
|
|
115
|
+
block('.theme-orange', orangeTheme),
|
|
116
|
+
'\n\n',
|
|
117
|
+
block('.theme-cyan', cyanTheme),
|
|
118
|
+
'\n\n',
|
|
119
|
+
block('.theme-green', greenTheme),
|
|
120
|
+
'\n\n',
|
|
121
|
+
block('.theme-red', redTheme),
|
|
122
|
+
'\n\n',
|
|
123
|
+
block('.theme-steel', steelTheme),
|
|
124
|
+
'\n\n',
|
|
125
|
+
'/* Base */\n',
|
|
126
|
+
readCss('base.css'),
|
|
127
|
+
'\n',
|
|
128
|
+
'/* Utilities */\n',
|
|
129
|
+
readCss('utilities.css'),
|
|
130
|
+
'\n',
|
|
131
|
+
'/* Animations */\n',
|
|
132
|
+
readCss('animations.css'),
|
|
133
|
+
'\n',
|
|
134
|
+
'/* Component: GlowCard */\n',
|
|
135
|
+
readCss('components/glow-card.css'),
|
|
136
|
+
'\n',
|
|
137
|
+
'/* Component: PanelHeader */\n',
|
|
138
|
+
readCss('components/panel-header.css'),
|
|
139
|
+
'\n',
|
|
140
|
+
'/* Component: Badge */\n',
|
|
141
|
+
readCss('components/badge.css'),
|
|
142
|
+
'\n',
|
|
143
|
+
'/* Component: Button */\n',
|
|
144
|
+
readCss('components/button.css'),
|
|
145
|
+
'\n',
|
|
146
|
+
'/* Component: Input + Textarea */\n',
|
|
147
|
+
readCss('components/input.css'),
|
|
148
|
+
'\n',
|
|
149
|
+
'/* Component: Select */\n',
|
|
150
|
+
readCss('components/select.css'),
|
|
151
|
+
'\n',
|
|
152
|
+
'/* Component: Checkbox + Radio */\n',
|
|
153
|
+
readCss('components/checkbox.css'),
|
|
154
|
+
'\n',
|
|
155
|
+
'/* Component: Switch */\n',
|
|
156
|
+
readCss('components/switch.css'),
|
|
157
|
+
'\n',
|
|
158
|
+
'/* Component: Slider */\n',
|
|
159
|
+
readCss('components/slider.css'),
|
|
160
|
+
'\n',
|
|
161
|
+
'/* Component: Form (label, field, separator, tooltip, progress) */\n',
|
|
162
|
+
readCss('components/form.css'),
|
|
163
|
+
'\n',
|
|
164
|
+
'/* Component: Terminal / Console */\n',
|
|
165
|
+
readCss('components/terminal.css'),
|
|
166
|
+
'\n',
|
|
167
|
+
'/* Component: HUD Frames & Status Bars */\n',
|
|
168
|
+
readCss('components/hud.css'),
|
|
169
|
+
'\n',
|
|
170
|
+
'/* Component: Gauge / Radial Meter */\n',
|
|
171
|
+
readCss('components/gauge.css'),
|
|
172
|
+
'\n',
|
|
173
|
+
'/* Component: Ticker / Data Stream */\n',
|
|
174
|
+
readCss('components/ticker.css'),
|
|
175
|
+
'\n',
|
|
176
|
+
'/* Component: Scanner / Sweep Line */\n',
|
|
177
|
+
readCss('components/scanner.css'),
|
|
178
|
+
'\n',
|
|
179
|
+
'/* Component: Interference / Corruption Overlay */\n',
|
|
180
|
+
readCss('components/interference.css'),
|
|
181
|
+
'\n',
|
|
182
|
+
'/* Component: Modal */\n',
|
|
183
|
+
readCss('components/modal.css'),
|
|
184
|
+
'\n',
|
|
185
|
+
'/* Component: Toast */\n',
|
|
186
|
+
readCss('components/toast.css'),
|
|
187
|
+
'\n',
|
|
188
|
+
'/* Component: Accordion */\n',
|
|
189
|
+
readCss('components/accordion.css'),
|
|
190
|
+
'\n',
|
|
191
|
+
'/* Component: Pagination */\n',
|
|
192
|
+
readCss('components/pagination.css'),
|
|
193
|
+
'\n',
|
|
194
|
+
'/* Component: Dropdown */\n',
|
|
195
|
+
readCss('components/dropdown.css'),
|
|
196
|
+
'\n',
|
|
197
|
+
'/* Component: Table */\n',
|
|
198
|
+
readCss('components/table.css'),
|
|
199
|
+
'\n',
|
|
200
|
+
'/* Component: Tabs */\n',
|
|
201
|
+
readCss('components/tabs.css'),
|
|
202
|
+
'\n',
|
|
203
|
+
'/* Component: Alert */\n',
|
|
204
|
+
readCss('components/alert.css'),
|
|
205
|
+
'\n',
|
|
206
|
+
'/* Component: Skeleton */\n',
|
|
207
|
+
readCss('components/skeleton.css'),
|
|
208
|
+
'\n',
|
|
209
|
+
'/* Component: Kbd */\n',
|
|
210
|
+
readCss('components/kbd.css'),
|
|
211
|
+
'\n',
|
|
212
|
+
'/* Component: Avatar */\n',
|
|
213
|
+
readCss('components/avatar.css'),
|
|
214
|
+
'\n',
|
|
215
|
+
'/* Component: Breadcrumb */\n',
|
|
216
|
+
readCss('components/breadcrumb.css'),
|
|
217
|
+
'\n',
|
|
218
|
+
'/* Component: Spinner */\n',
|
|
219
|
+
readCss('components/spinner.css'),
|
|
220
|
+
'\n',
|
|
221
|
+
'/* Component: Charts (stat, bar chart, histogram, sparkline, timeline, canvas shells) */\n',
|
|
222
|
+
readCss('components/charts.css'),
|
|
223
|
+
'\n',
|
|
224
|
+
'/* Component: Augmented (clip-path shapes, neon glow, aug-panel, aug-btn, corners) */\n',
|
|
225
|
+
readCss('components/augmented.css'),
|
|
226
|
+
'\n',
|
|
227
|
+
'/* Component: VectorBg (spinning SVG background containers + keyframes) */\n',
|
|
228
|
+
readCss('components/vectorbg.css'),
|
|
229
|
+
'\n',
|
|
230
|
+
'/* Component: Image treatments (frames, glitch, scan/CRT, holo) */\n',
|
|
231
|
+
readCss('components/image.css'),
|
|
232
|
+
'\n',
|
|
233
|
+
'/* Component: SVG / Vector art helpers (icons, grids, reticles, wireframes) */\n',
|
|
234
|
+
readCss('components/svg.css'),
|
|
235
|
+
'\n',
|
|
236
|
+
'/* Component: Card */\n',
|
|
237
|
+
readCss('components/card.css'),
|
|
238
|
+
'\n',
|
|
239
|
+
'/* Component: Sheet / Drawer */\n',
|
|
240
|
+
readCss('components/sheet.css'),
|
|
241
|
+
'\n',
|
|
242
|
+
'/* Component: Popover / Hover Card */\n',
|
|
243
|
+
readCss('components/popover.css'),
|
|
244
|
+
'\n',
|
|
245
|
+
'/* Component: Toggle / Button Group */\n',
|
|
246
|
+
readCss('components/toggle.css'),
|
|
247
|
+
'\n',
|
|
248
|
+
'/* Component: Layout extras (aspect, scroll, empty, collapsible, resizable, item) */\n',
|
|
249
|
+
readCss('components/layout-extras.css'),
|
|
250
|
+
'\n',
|
|
251
|
+
'/* Component: Command / Combobox */\n',
|
|
252
|
+
readCss('components/command.css'),
|
|
253
|
+
'\n',
|
|
254
|
+
'/* Component: Calendar / Date Picker */\n',
|
|
255
|
+
readCss('components/calendar.css'),
|
|
256
|
+
'\n',
|
|
257
|
+
'/* Component: Carousel */\n',
|
|
258
|
+
readCss('components/carousel.css'),
|
|
259
|
+
'\n',
|
|
260
|
+
'/* Component: Menubar / Nav / Context Menu / Sidebar */\n',
|
|
261
|
+
readCss('components/navigation-extras.css'),
|
|
262
|
+
'\n',
|
|
263
|
+
'/* Component: Input OTP */\n',
|
|
264
|
+
readCss('components/input-otp.css'),
|
|
265
|
+
'\n',
|
|
266
|
+
'/* Component: Typography */\n',
|
|
267
|
+
readCss('components/typography.css'),
|
|
268
|
+
'\n',
|
|
269
|
+
'/* Component: Toaster viewport */\n',
|
|
270
|
+
readCss('components/toaster.css'),
|
|
271
|
+
'\n',
|
|
272
|
+
'/* Component: App patterns */\n',
|
|
273
|
+
readCss('components/app-patterns.css'),
|
|
274
|
+
'\n',
|
|
275
|
+
'/* Component: Spreadsheet (editable grid) */\n',
|
|
276
|
+
readCss('components/spreadsheet.css'),
|
|
277
|
+
'\n',
|
|
278
|
+
'/* Accessibility layer (opt-in via .cd-a11y) */\n',
|
|
279
|
+
readCss('a11y.css'),
|
|
280
|
+
'\n',
|
|
281
|
+
].join('');
|
|
282
|
+
|
|
283
|
+
writeFileSync(join(DIST, 'cyberdesign.css'), bundle);
|
|
284
|
+
console.log('✓ dist/cyberdesign.css');
|
|
285
|
+
|
|
286
|
+
console.log('\ncyberdesign build complete.');
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/* cyberdesign v0.1.0 — generated by build.ts, DO NOT EDIT */
|
|
2
|
+
|
|
3
|
+
:root {
|
|
4
|
+
--cd-bg: #05060a;
|
|
5
|
+
--cd-bg-panel: #0b0f18;
|
|
6
|
+
--cd-bg-panel-hover: #111827;
|
|
7
|
+
--cd-bg-surface: rgba(11, 15, 24, 0.94);
|
|
8
|
+
--cd-border: #26324c;
|
|
9
|
+
--cd-border-dim: #1e1e24;
|
|
10
|
+
--cd-text: #e8e4e0;
|
|
11
|
+
--cd-text-alt: #f2f7ff;
|
|
12
|
+
--cd-text-secondary: #a7b7d6;
|
|
13
|
+
--cd-text-muted: #8a8078;
|
|
14
|
+
--cd-text-muted-alt: #7a8599;
|
|
15
|
+
--cd-text-dim: #6a625c;
|
|
16
|
+
--cd-accent-secondary: #ff2bd6;
|
|
17
|
+
--cd-accent-secondary-glow: rgba(255, 43, 214, 0.32);
|
|
18
|
+
--cd-accent-secondary-subtle: rgba(255, 43, 214, 0.12);
|
|
19
|
+
--cd-neon-green: #52ff9f;
|
|
20
|
+
--cd-neon-red: #ff456c;
|
|
21
|
+
--cd-neon-blue: #6aa8ff;
|
|
22
|
+
--cd-neon-purple: #9d7cff;
|
|
23
|
+
--cd-neon-yellow: #f7ff5a;
|
|
24
|
+
--cd-neon-amber: #ffaa00;
|
|
25
|
+
--cd-neon-orange: #ff8800;
|
|
26
|
+
--cd-neon-cyan: #47f6ff;
|
|
27
|
+
--cd-neon-magenta: #ff2bd6;
|
|
28
|
+
--cd-orange: #ff8800;
|
|
29
|
+
--cd-amber: #ffaa00;
|
|
30
|
+
--cd-gold: #ffcc00;
|
|
31
|
+
--cd-cyan: #47f6ff;
|
|
32
|
+
--cd-magenta: #ff2bd6;
|
|
33
|
+
--cd-purple: #9d7cff;
|
|
34
|
+
--cd-green: #52ff9f;
|
|
35
|
+
--cd-red: #ff456c;
|
|
36
|
+
--cd-blue: #6aa8ff;
|
|
37
|
+
--cd-yellow: #f7ff5a;
|
|
38
|
+
--cd-scanline-color: rgba(0, 0, 0, 0.18);
|
|
39
|
+
--cd-pixel-grid-color: rgba(71, 246, 255, 0.055);
|
|
40
|
+
--cd-font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Consolas, monospace;
|
|
41
|
+
--cd-text-xs: 0.6875rem;
|
|
42
|
+
--cd-text-sm: 0.75rem;
|
|
43
|
+
--cd-text-base: 0.8125rem;
|
|
44
|
+
--cd-text-md: 0.875rem;
|
|
45
|
+
--cd-text-lg: 0.9375rem;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.theme-orange {
|
|
49
|
+
--cd-accent: #ff8800;
|
|
50
|
+
--cd-accent-bright: #ffaa00;
|
|
51
|
+
--cd-accent-subtle: rgba(255, 136, 0, 0.12);
|
|
52
|
+
--cd-accent-glow: rgba(255, 136, 0, 0.40);
|
|
53
|
+
--cd-accent-subtle-glow: rgba(255, 136, 0, 0.20);
|
|
54
|
+
--cd-border-glow: rgba(255, 136, 0, 0.20);
|
|
55
|
+
--cd-scrollbar-thumb: rgba(255, 136, 0, 0.20);
|
|
56
|
+
--cd-panel-shadow: inset 0 0 0 1px rgba(255, 136, 0, 0.04), 0 0 24px rgba(255, 136, 0, 0.07);
|
|
57
|
+
--cd-accent-secondary: #ff2bd6;
|
|
58
|
+
--cd-accent-secondary-glow: rgba(255, 43, 214, 0.32);
|
|
59
|
+
--cd-accent-secondary-subtle: rgba(255, 43, 214, 0.12);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.theme-cyan {
|
|
63
|
+
--cd-accent: #47f6ff;
|
|
64
|
+
--cd-accent-bright: #bdffff;
|
|
65
|
+
--cd-accent-subtle: rgba(71, 246, 255, 0.12);
|
|
66
|
+
--cd-accent-glow: rgba(71, 246, 255, 0.34);
|
|
67
|
+
--cd-accent-subtle-glow: rgba(71, 246, 255, 0.20);
|
|
68
|
+
--cd-border-glow: rgba(71, 246, 255, 0.20);
|
|
69
|
+
--cd-scrollbar-thumb: rgba(71, 246, 255, 0.20);
|
|
70
|
+
--cd-panel-shadow: inset 0 0 0 1px rgba(71, 246, 255, 0.04), 0 0 24px rgba(71, 246, 255, 0.07);
|
|
71
|
+
--cd-accent-secondary: #ff2bd6;
|
|
72
|
+
--cd-accent-secondary-glow: rgba(255, 43, 214, 0.32);
|
|
73
|
+
--cd-accent-secondary-subtle: rgba(255, 43, 214, 0.12);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.theme-green {
|
|
77
|
+
--cd-accent: #00ff00;
|
|
78
|
+
--cd-accent-bright: #52ff9f;
|
|
79
|
+
--cd-accent-subtle: rgba(0, 255, 0, 0.12);
|
|
80
|
+
--cd-accent-glow: rgba(0, 255, 0, 0.34);
|
|
81
|
+
--cd-accent-subtle-glow: rgba(0, 255, 0, 0.20);
|
|
82
|
+
--cd-border-glow: rgba(0, 255, 0, 0.20);
|
|
83
|
+
--cd-scrollbar-thumb: rgba(0, 255, 0, 0.20);
|
|
84
|
+
--cd-panel-shadow: inset 0 0 0 1px rgba(0, 255, 0, 0.04), 0 0 24px rgba(0, 255, 0, 0.07);
|
|
85
|
+
--cd-accent-secondary: #9d7cff;
|
|
86
|
+
--cd-accent-secondary-glow: rgba(157, 124, 255, 0.32);
|
|
87
|
+
--cd-accent-secondary-subtle: rgba(157, 124, 255, 0.12);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.theme-red {
|
|
91
|
+
--cd-accent: #ff4444;
|
|
92
|
+
--cd-accent-bright: #ff7777;
|
|
93
|
+
--cd-accent-subtle: rgba(255, 68, 68, 0.12);
|
|
94
|
+
--cd-accent-glow: rgba(255, 68, 68, 0.34);
|
|
95
|
+
--cd-accent-subtle-glow: rgba(255, 68, 68, 0.20);
|
|
96
|
+
--cd-border-glow: rgba(255, 68, 68, 0.20);
|
|
97
|
+
--cd-scrollbar-thumb: rgba(255, 68, 68, 0.20);
|
|
98
|
+
--cd-panel-shadow: inset 0 0 0 1px rgba(255, 68, 68, 0.04), 0 0 24px rgba(255, 68, 68, 0.07);
|
|
99
|
+
--cd-accent-secondary: #6aa8ff;
|
|
100
|
+
--cd-accent-secondary-glow: rgba(106, 168, 255, 0.32);
|
|
101
|
+
--cd-accent-secondary-subtle: rgba(106, 168, 255, 0.12);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.theme-steel {
|
|
105
|
+
--cd-accent: #9aafc4;
|
|
106
|
+
--cd-accent-bright: #c8d8e8;
|
|
107
|
+
--cd-accent-subtle: rgba(154, 175, 196, 0.12);
|
|
108
|
+
--cd-accent-glow: rgba(154, 175, 196, 0.28);
|
|
109
|
+
--cd-accent-subtle-glow: rgba(154, 175, 196, 0.16);
|
|
110
|
+
--cd-border-glow: rgba(154, 175, 196, 0.18);
|
|
111
|
+
--cd-scrollbar-thumb: rgba(154, 175, 196, 0.20);
|
|
112
|
+
--cd-panel-shadow: inset 0 0 0 1px rgba(154, 175, 196, 0.06), 0 0 24px rgba(154, 175, 196, 0.06);
|
|
113
|
+
--cd-accent-secondary: #ffaa00;
|
|
114
|
+
--cd-accent-secondary-glow: rgba(255, 170, 0, 0.28);
|
|
115
|
+
--cd-accent-secondary-subtle: rgba(255, 170, 0, 0.12);
|
|
116
|
+
}
|