@noobsociety/nsds 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +220 -0
- package/SKILL.md +18 -0
- package/assets/bg.png +0 -0
- package/assets/bloop.png +0 -0
- package/assets/hero.png +0 -0
- package/assets/lamp.png +0 -0
- package/assets/logo.png +0 -0
- package/assets/mailbox.png +0 -0
- package/assets/plaza.png +0 -0
- package/assets/prickle.png +0 -0
- package/assets/sign.png +0 -0
- package/components/buttons/Button.d.ts +21 -0
- package/components/buttons/Button.js +55 -0
- package/components/buttons/Button.prompt.md +22 -0
- package/components/buttons/buttons.card.html +24 -0
- package/components/cards/FeatureCard.d.ts +18 -0
- package/components/cards/FeatureCard.js +36 -0
- package/components/cards/FeatureCard.prompt.md +17 -0
- package/components/cards/QuestCard.d.ts +16 -0
- package/components/cards/QuestCard.js +27 -0
- package/components/cards/QuestCard.prompt.md +19 -0
- package/components/cards/cards.card.html +54 -0
- package/components/navigation/SectionArrow.d.ts +13 -0
- package/components/navigation/SectionArrow.js +28 -0
- package/components/navigation/navigation.card.html +29 -0
- package/components/primitives.css +407 -0
- package/components/react/index.d.ts +11 -0
- package/components/react/index.js +4 -0
- package/components/shared/styles.js +22 -0
- package/guidelines/brand.card.html +41 -0
- package/guidelines/colors.card.html +43 -0
- package/guidelines/motion.card.html +24 -0
- package/guidelines/pixel-accents.card.html +50 -0
- package/guidelines/radii-shadows.card.html +28 -0
- package/guidelines/semantic-colors.card.html +30 -0
- package/guidelines/spacing.card.html +53 -0
- package/guidelines/sprites.card.html +22 -0
- package/guidelines/type.card.html +24 -0
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/mui-theme/ThemeProvider.tsx +20 -0
- package/mui-theme/examples/FeatureCard.tsx +52 -0
- package/mui-theme/examples/QuestStatusChip.tsx +41 -0
- package/mui-theme/examples/SectionHeader.tsx +44 -0
- package/mui-theme/index.ts +2 -0
- package/mui-theme/preview.dc.html +195 -0
- package/mui-theme/support.js +1513 -0
- package/mui-theme/theme.ts +604 -0
- package/package.json +83 -0
- package/references/noobsociety-monokai.dc.html +360 -0
- package/styles.css +12 -0
- package/support.js +1513 -0
- package/tokens/base.css +46 -0
- package/tokens/colors.css +73 -0
- package/tokens/motion.css +64 -0
- package/tokens/spacing.css +70 -0
- package/tokens/typography.css +43 -0
- package/ui-kits/homepage/index.html +319 -0
package/tokens/base.css
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/* NoobSociety — Base resets and body defaults */
|
|
2
|
+
*, *::before, *::after { box-sizing: border-box; }
|
|
3
|
+
|
|
4
|
+
html {
|
|
5
|
+
scroll-behavior: smooth;
|
|
6
|
+
scroll-padding-top: var(--ns-header-h);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
body {
|
|
10
|
+
margin: 0;
|
|
11
|
+
min-height: 100vh;
|
|
12
|
+
font-family: var(--ns-font-body);
|
|
13
|
+
font-size: var(--ns-text-base);
|
|
14
|
+
line-height: var(--ns-leading-relaxed);
|
|
15
|
+
color: var(--ns-ink);
|
|
16
|
+
background-color: var(--ns-bg-1);
|
|
17
|
+
background-image:
|
|
18
|
+
radial-gradient(ellipse 80% 55% at 88% 2%, rgba(249, 38, 114, 0.11), transparent 58%),
|
|
19
|
+
radial-gradient(ellipse 55% 45% at 8% 12%, rgba(174, 129, 255, 0.07), transparent 52%),
|
|
20
|
+
linear-gradient(180deg, var(--ns-bg-1) 0%, #1e1f1a 100%);
|
|
21
|
+
background-attachment: fixed;
|
|
22
|
+
-webkit-font-smoothing: antialiased;
|
|
23
|
+
text-rendering: optimizeLegibility;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
img { display: block; max-width: 100%; }
|
|
27
|
+
a { color: var(--ns-gold); text-decoration: none; transition: color var(--ns-transition-fast); }
|
|
28
|
+
a:hover { color: var(--ns-gold-pale); }
|
|
29
|
+
|
|
30
|
+
button,
|
|
31
|
+
input,
|
|
32
|
+
select,
|
|
33
|
+
textarea {
|
|
34
|
+
font: inherit;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
:where(a, button, input, select, textarea, [tabindex]):focus-visible {
|
|
38
|
+
outline: 2px solid var(--ns-gold);
|
|
39
|
+
outline-offset: 3px;
|
|
40
|
+
box-shadow: 0 0 0 4px var(--ns-focus-ring);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
::selection {
|
|
44
|
+
background: var(--ns-selection-bg);
|
|
45
|
+
color: var(--ns-ink);
|
|
46
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/* NoobSociety — Color tokens (Monokai dark) */
|
|
2
|
+
:root {
|
|
3
|
+
/* ── Surfaces ─────────────────────────────────────────────── */
|
|
4
|
+
--ns-bg-0: #1a1a16; /* deepest — footer, sidebar */
|
|
5
|
+
--ns-bg-1: #272822; /* page base */
|
|
6
|
+
--ns-bg-2: #32332b; /* raised surfaces, icon slots */
|
|
7
|
+
--ns-glass: rgba(30, 31, 26, 0.88); /* card, header backdrop */
|
|
8
|
+
--ns-glass-2: rgba(30, 31, 26, 0.60); /* lighter glass */
|
|
9
|
+
--ns-glass-soft: rgba(30, 31, 26, 0.75); /* subtle card surface */
|
|
10
|
+
|
|
11
|
+
--ns-bg-0-rgb: 26 26 22;
|
|
12
|
+
--ns-bg-1-rgb: 39 40 34;
|
|
13
|
+
--ns-bg-2-rgb: 50 51 43;
|
|
14
|
+
--ns-glass-rgb: 30 31 26;
|
|
15
|
+
|
|
16
|
+
/* ── Borders ──────────────────────────────────────────────── */
|
|
17
|
+
--ns-line: rgba(255, 255, 255, 0.12);
|
|
18
|
+
--ns-line-strong: rgba(255, 255, 255, 0.22);
|
|
19
|
+
--ns-line-soft: rgba(255, 255, 255, 0.08);
|
|
20
|
+
|
|
21
|
+
/* ── Ink (text) ───────────────────────────────────────────── */
|
|
22
|
+
--ns-ink: #f8f8f2; /* primary text — Monokai foreground */
|
|
23
|
+
--ns-ink-dim: #a8a28c; /* secondary text */
|
|
24
|
+
--ns-ink-faint: #75715e; /* placeholder, captions — Monokai comment */
|
|
25
|
+
--ns-ink-rgb: 248 248 242;
|
|
26
|
+
--ns-ink-dim-rgb: 168 162 140;
|
|
27
|
+
--ns-ink-faint-rgb: 117 113 94;
|
|
28
|
+
|
|
29
|
+
/* ── Brand yellow (gold) — primary accent ─────────────────── */
|
|
30
|
+
--ns-gold: #e6db74;
|
|
31
|
+
--ns-gold-pale: #f4f099;
|
|
32
|
+
--ns-gold-deep: #cabb50;
|
|
33
|
+
--ns-gold-shadow: #b5a83f;
|
|
34
|
+
--ns-gold-btn-fg: #1c1c17; /* text on gold buttons */
|
|
35
|
+
--ns-gold-rgb: 230 219 116;
|
|
36
|
+
--ns-gold-pale-rgb: 244 240 153;
|
|
37
|
+
--ns-gold-deep-rgb: 202 187 80;
|
|
38
|
+
--ns-gold-shadow-rgb: 181 168 63;
|
|
39
|
+
|
|
40
|
+
/* ── Monokai semantic accents ─────────────────────────────── */
|
|
41
|
+
--ns-green: #a6e22e; /* "Holds" / success */
|
|
42
|
+
--ns-green-deep: #7fb81e;
|
|
43
|
+
--ns-cyan: #66d9e8; /* "Planned" / info */
|
|
44
|
+
--ns-cyan-deep: #5bc8d7;
|
|
45
|
+
--ns-orange: #fd971f; /* "Building" / in-progress */
|
|
46
|
+
--ns-orange-deep: #c96f00;
|
|
47
|
+
--ns-pink: #f92672; /* danger / highlight */
|
|
48
|
+
--ns-purple: #ae81ff; /* decorative */
|
|
49
|
+
--ns-green-rgb: 166 226 46;
|
|
50
|
+
--ns-green-deep-rgb: 127 184 30;
|
|
51
|
+
--ns-cyan-rgb: 102 217 232;
|
|
52
|
+
--ns-cyan-deep-rgb: 91 200 215;
|
|
53
|
+
--ns-orange-rgb: 253 151 31;
|
|
54
|
+
--ns-orange-deep-rgb: 201 111 0;
|
|
55
|
+
--ns-pink-rgb: 249 38 114;
|
|
56
|
+
--ns-purple-rgb: 174 129 255;
|
|
57
|
+
|
|
58
|
+
/* ── Semantic aliases ─────────────────────────────────────── */
|
|
59
|
+
--ns-surface-page: var(--ns-bg-1);
|
|
60
|
+
--ns-surface-card: var(--ns-glass);
|
|
61
|
+
--ns-surface-raised: var(--ns-bg-2);
|
|
62
|
+
--ns-text-primary: var(--ns-ink);
|
|
63
|
+
--ns-text-secondary: var(--ns-ink-dim);
|
|
64
|
+
--ns-text-muted: var(--ns-ink-faint);
|
|
65
|
+
--ns-accent: var(--ns-gold);
|
|
66
|
+
--ns-accent-hover: var(--ns-gold-pale);
|
|
67
|
+
--ns-status-holds: var(--ns-green);
|
|
68
|
+
--ns-status-building: var(--ns-orange);
|
|
69
|
+
--ns-status-planned: var(--ns-cyan);
|
|
70
|
+
--ns-status-later: var(--ns-ink-faint);
|
|
71
|
+
--ns-focus-ring: rgba(230, 219, 116, 0.35);
|
|
72
|
+
--ns-selection-bg: rgba(249, 38, 114, 0.28);
|
|
73
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/* NoobSociety — Motion tokens & keyframes */
|
|
2
|
+
:root {
|
|
3
|
+
/* ── Durations ────────────────────────────────────────────── */
|
|
4
|
+
--ns-dur-fast: 150ms;
|
|
5
|
+
--ns-dur-base: 200ms;
|
|
6
|
+
--ns-dur-slow: 400ms;
|
|
7
|
+
--ns-dur-xslow: 600ms;
|
|
8
|
+
|
|
9
|
+
/* ── Easings ──────────────────────────────────────────────── */
|
|
10
|
+
--ns-ease-out: ease-out;
|
|
11
|
+
--ns-ease-in-out: ease-in-out;
|
|
12
|
+
--ns-ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
13
|
+
|
|
14
|
+
/* ── Transitions (common shorthand) ──────────────────────── */
|
|
15
|
+
--ns-transition-fast: var(--ns-dur-fast) var(--ns-ease-out);
|
|
16
|
+
--ns-transition-base: var(--ns-dur-base) var(--ns-ease-out);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/* ── Keyframes ────────────────────────────────────────────────── */
|
|
20
|
+
|
|
21
|
+
/* Character idle bob (with centered offset) */
|
|
22
|
+
@keyframes ns-bob {
|
|
23
|
+
0%, 100% { transform: translateX(-50%) translateY(0); }
|
|
24
|
+
50% { transform: translateX(-50%) translateY(-6px); }
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/* Generic idle bob (no X offset) */
|
|
28
|
+
@keyframes ns-bob-plain {
|
|
29
|
+
0%, 100% { transform: translateY(0); }
|
|
30
|
+
50% { transform: translateY(-5px); }
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/* Pixel text blink (e.g. "Press Start") */
|
|
34
|
+
@keyframes ns-blink {
|
|
35
|
+
0%, 55% { opacity: 1; }
|
|
36
|
+
56%, 100% { opacity: 0; }
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/* Star field twinkle */
|
|
40
|
+
@keyframes ns-twinkle {
|
|
41
|
+
0%, 100% { opacity: 0.7; }
|
|
42
|
+
50% { opacity: 0.35; }
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/* Section arrow nudge */
|
|
46
|
+
@keyframes ns-arrow {
|
|
47
|
+
0%, 100% { transform: translateX(-50%) translateY(0); }
|
|
48
|
+
50% { transform: translateX(-50%) translateY(5px); }
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/* Live pulse dot */
|
|
52
|
+
@keyframes ns-live {
|
|
53
|
+
0% { box-shadow: 0 0 0 0 rgba(166, 226, 46, 0.7); }
|
|
54
|
+
70% { box-shadow: 0 0 0 7px rgba(166, 226, 46, 0); }
|
|
55
|
+
100% { box-shadow: 0 0 0 0 rgba(166, 226, 46, 0); }
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/* Reduced motion: disable all ns animations */
|
|
59
|
+
@media (prefers-reduced-motion: reduce) {
|
|
60
|
+
*, *::before, *::after {
|
|
61
|
+
animation: none !important;
|
|
62
|
+
scroll-behavior: auto !important;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/* NoobSociety Design System — Spacing, layout & shape tokens
|
|
2
|
+
All values rem-based (1rem = 16px user default).
|
|
3
|
+
Fluid layout values use clamp() — min / preferred / max. */
|
|
4
|
+
|
|
5
|
+
:root {
|
|
6
|
+
/* ── Base scale (4px grid, expressed in rem) ──────────────────── */
|
|
7
|
+
--ns-space-1: 0.25rem; /* 4px */
|
|
8
|
+
--ns-space-2: 0.5rem; /* 8px */
|
|
9
|
+
--ns-space-3: 0.75rem; /* 12px */
|
|
10
|
+
--ns-space-4: 1rem; /* 16px */
|
|
11
|
+
--ns-space-5: 1.25rem; /* 20px */
|
|
12
|
+
--ns-space-6: 1.5rem; /* 24px */
|
|
13
|
+
--ns-space-7: 1.75rem; /* 28px */
|
|
14
|
+
--ns-space-8: 2rem; /* 32px */
|
|
15
|
+
--ns-space-10: 2.5rem; /* 40px */
|
|
16
|
+
--ns-space-12: 3rem; /* 48px */
|
|
17
|
+
--ns-space-14: 3.5rem; /* 56px */
|
|
18
|
+
--ns-space-16: 4rem; /* 64px */
|
|
19
|
+
--ns-space-20: 5rem; /* 80px */
|
|
20
|
+
--ns-space-24: 5.75rem; /* 92px */
|
|
21
|
+
|
|
22
|
+
/* ── Fluid layout tokens (viewport-responsive) ────────────────── */
|
|
23
|
+
/* Container side padding: 16px → 32px */
|
|
24
|
+
--ns-fluid-container: clamp(1rem, 4vw, 2rem);
|
|
25
|
+
/* Section top padding: 40px → 64px */
|
|
26
|
+
--ns-fluid-section-top: clamp(2.5rem, 8svh, 4rem);
|
|
27
|
+
/* Section bottom padding: 64px → 88px */
|
|
28
|
+
--ns-fluid-section-bottom: clamp(4rem, 10svh, 5.5rem);
|
|
29
|
+
/* Card grid gap: 12px → 24px */
|
|
30
|
+
--ns-fluid-gap-cards: clamp(0.75rem, 2vw, 1.5rem);
|
|
31
|
+
/* Card internal padding: 16px → 20px */
|
|
32
|
+
--ns-fluid-card-pad: clamp(1rem, 2vw, 1.25rem);
|
|
33
|
+
/* Hero two-col gap: 24px → 48px */
|
|
34
|
+
--ns-fluid-hero-gap: clamp(1.5rem, 4vw, 3rem);
|
|
35
|
+
/* Footer two-col gap: 32px → 48px */
|
|
36
|
+
--ns-fluid-footer-gap: clamp(2rem, 5vw, 3rem);
|
|
37
|
+
|
|
38
|
+
/* ── Fixed layout ─────────────────────────────────────────────── */
|
|
39
|
+
--ns-container: 1080px;
|
|
40
|
+
--ns-header-h: 4rem; /* 64px — sticky header */
|
|
41
|
+
--ns-section-min: calc(100svh - var(--ns-header-h));
|
|
42
|
+
|
|
43
|
+
/* ── Radii ────────────────────────────────────────────────────── */
|
|
44
|
+
--ns-radius-sm: 0.25rem; /* 4px */
|
|
45
|
+
--ns-radius-md: 0.5rem; /* 8px */
|
|
46
|
+
--ns-radius-lg: 0.625rem; /* 10px */
|
|
47
|
+
--ns-radius-xl: 0.75rem; /* 12px */
|
|
48
|
+
--ns-radius-full: 9999px;
|
|
49
|
+
|
|
50
|
+
/* ── Shadows ──────────────────────────────────────────────────── */
|
|
51
|
+
--ns-shadow-card-rest: none;
|
|
52
|
+
--ns-shadow-card-hover: 0 1rem 2.125rem rgba(0, 0, 0, 0.38);
|
|
53
|
+
--ns-shadow-modal: 0 1.5rem 3.5rem rgba(0, 0, 0, 0.5);
|
|
54
|
+
--ns-shadow-btn: 0 0.1875rem 0 var(--ns-gold-shadow);
|
|
55
|
+
--ns-shadow-arrow: 0 0 0 0.25rem rgba(230, 219, 116, 0.12), 0 0.75rem 1.75rem rgba(0, 0, 0, 0.36);
|
|
56
|
+
|
|
57
|
+
/* ── Borders ──────────────────────────────────────────────────── */
|
|
58
|
+
--ns-border-card: 1px solid var(--ns-line);
|
|
59
|
+
--ns-border-card-strong: 1px solid var(--ns-line-strong);
|
|
60
|
+
--ns-border-gold: 2px solid var(--ns-gold-deep);
|
|
61
|
+
|
|
62
|
+
/* ── Blur ─────────────────────────────────────────────────────── */
|
|
63
|
+
--ns-blur-glass: blur(8px);
|
|
64
|
+
--ns-blur-header: blur(12px);
|
|
65
|
+
|
|
66
|
+
/* ── Component sizing ──────────────────────────────────────────── */
|
|
67
|
+
--ns-icon-slot: 2.625rem; /* 42px */
|
|
68
|
+
--ns-icon-slot-sm: 1.625rem; /* 26px */
|
|
69
|
+
--ns-arrow-size: 2.125rem; /* 34px */
|
|
70
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/* NoobSociety — Typography tokens */
|
|
2
|
+
:root {
|
|
3
|
+
/* ── Font families ────────────────────────────────────────── */
|
|
4
|
+
--ns-font-body: 'Inter', system-ui, sans-serif;
|
|
5
|
+
--ns-font-pixel: 'Press Start 2P', system-ui, sans-serif;
|
|
6
|
+
|
|
7
|
+
/* ── Type scale ───────────────────────────────────────────── */
|
|
8
|
+
--ns-text-xs: 0.75rem; /* 12px */
|
|
9
|
+
--ns-text-sm: 0.875rem; /* 14px */
|
|
10
|
+
--ns-text-base: 1rem; /* 16px */
|
|
11
|
+
--ns-text-lg: 1.125rem; /* 18px */
|
|
12
|
+
--ns-text-xl: 1.25rem; /* 20px */
|
|
13
|
+
--ns-text-2xl: 1.5rem; /* 24px */
|
|
14
|
+
--ns-text-3xl: 1.875rem; /* 30px */
|
|
15
|
+
--ns-text-4xl: 2.25rem; /* 36px */
|
|
16
|
+
|
|
17
|
+
/* ── Pixel font scale ─────────────────────────────────────── */
|
|
18
|
+
--ns-pixel-2xs: 7px;
|
|
19
|
+
--ns-pixel-xs: 8px;
|
|
20
|
+
--ns-pixel-sm: 9px;
|
|
21
|
+
--ns-pixel-base: 11px;
|
|
22
|
+
--ns-pixel-md: 12px;
|
|
23
|
+
--ns-pixel-lg: 13px;
|
|
24
|
+
--ns-pixel-xl: 1.6rem; /* hero accent title */
|
|
25
|
+
--ns-pixel-2xl: clamp(2rem, 1rem + 3vw, 3.5rem); /* hero title */
|
|
26
|
+
--ns-title-section: clamp(1.8rem, 1rem + 2vw, 2.4rem);
|
|
27
|
+
|
|
28
|
+
/* ── Line heights ─────────────────────────────────────────── */
|
|
29
|
+
--ns-leading-tight: 1.08;
|
|
30
|
+
--ns-leading-snug: 1.35;
|
|
31
|
+
--ns-leading-normal: 1.45;
|
|
32
|
+
--ns-leading-relaxed: 1.6;
|
|
33
|
+
--ns-leading-pixel: 1.5; /* for Press Start 2P */
|
|
34
|
+
|
|
35
|
+
/* ── Font weights ─────────────────────────────────────────── */
|
|
36
|
+
--ns-weight-normal: 400;
|
|
37
|
+
--ns-weight-medium: 500;
|
|
38
|
+
--ns-weight-semibold: 600;
|
|
39
|
+
--ns-weight-bold: 700;
|
|
40
|
+
|
|
41
|
+
/* ── Section eyebrow ─────────────────────────────────────────*/
|
|
42
|
+
/* font: 700 13px/1 var(--ns-font-body); letter-spacing: .18em; text-transform: uppercase; color: var(--ns-gold) */
|
|
43
|
+
}
|