@rpgjs/ui-css 5.0.0-alpha.30

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.
@@ -0,0 +1,85 @@
1
+ .rpg-ui-title-screen {
2
+ position: relative;
3
+ width: 100%;
4
+ height: 100%;
5
+ display: flex;
6
+ flex-direction: column;
7
+ align-items: center;
8
+ justify-content: center;
9
+ gap: calc(var(--rpg-ui-spacing-lg) * 1.5);
10
+ padding: calc(var(--rpg-ui-spacing-lg) * 1.5);
11
+ text-align: center;
12
+ color: var(--rpg-ui-text);
13
+ background-color: var(--rpg-ui-bg);
14
+ background-image:
15
+ radial-gradient(circle at 20% 20%, rgba(255, 255, 255, 0.08), transparent 45%),
16
+ radial-gradient(circle at 80% 10%, rgba(255, 255, 255, 0.05), transparent 50%),
17
+ linear-gradient(180deg, rgba(0, 0, 0, 0.35), rgba(0, 0, 0, 0.75));
18
+ }
19
+
20
+ .rpg-ui-title-screen-header {
21
+ display: flex;
22
+ flex-direction: column;
23
+ gap: var(--rpg-ui-spacing-sm);
24
+ margin-bottom: var(--rpg-ui-spacing-lg);
25
+ }
26
+
27
+ .rpg-ui-title-screen-title {
28
+ font-family: var(--rpg-ui-font);
29
+ font-size: clamp(2.5rem, 7vw, 5rem);
30
+ font-weight: var(--rpg-ui-font-weight-bold);
31
+ letter-spacing: 0.35em;
32
+ text-transform: uppercase;
33
+ color: var(--rpg-ui-accent);
34
+ text-shadow: var(--rpg-ui-text-shadow);
35
+ }
36
+
37
+ .rpg-ui-title-screen-subtitle {
38
+ font-size: clamp(0.9rem, 2.2vw, 1.2rem);
39
+ letter-spacing: 0.4em;
40
+ text-transform: uppercase;
41
+ color: var(--rpg-ui-text-muted);
42
+ }
43
+
44
+ .rpg-ui-title-screen-menu {
45
+ width: min(360px, 85vw);
46
+ background: transparent;
47
+ border: none;
48
+ box-shadow: none;
49
+ }
50
+
51
+ .rpg-ui-title-screen-menu .rpg-ui-menu-item {
52
+ text-align: center;
53
+ background: rgba(0, 0, 0, 0.35);
54
+ border: 1px solid rgba(255, 255, 255, 0.1);
55
+ color: var(--rpg-ui-text);
56
+ padding: 12px 16px;
57
+ margin-bottom: 12px;
58
+ transition: transform 0.2s ease, border-color 0.2s ease, color 0.2s ease;
59
+ }
60
+
61
+ .rpg-ui-title-screen-menu .rpg-ui-menu-item:hover,
62
+ .rpg-ui-title-screen-menu .rpg-ui-menu-item[data-selected="true"] {
63
+ border-color: var(--rpg-ui-accent);
64
+ color: var(--rpg-ui-accent);
65
+ transform: translateY(-2px);
66
+ }
67
+
68
+ .rpg-ui-title-screen-menu .rpg-ui-menu-item:hover::before,
69
+ .rpg-ui-title-screen-menu .rpg-ui-menu-item[data-selected="true"]::before {
70
+ display: none;
71
+ }
72
+
73
+ .rpg-ui-title-screen-menu .rpg-ui-menu-item.disabled {
74
+ opacity: 0.5;
75
+ cursor: not-allowed;
76
+ transform: none;
77
+ }
78
+
79
+ .rpg-ui-title-screen-version {
80
+ position: absolute;
81
+ right: calc(var(--rpg-ui-spacing-lg) * 1.25);
82
+ bottom: calc(var(--rpg-ui-spacing-lg) * 1.25);
83
+ font-size: var(--rpg-ui-font-size-sm);
84
+ color: var(--rpg-ui-text-muted);
85
+ }
@@ -0,0 +1,120 @@
1
+ .rpg-ui-toast-container {
2
+ position: fixed;
3
+ top: 24px;
4
+ right: 24px;
5
+ display: flex;
6
+ flex-direction: column;
7
+ gap: 12px;
8
+ z-index: 2000;
9
+ }
10
+
11
+ .rpg-ui-toast {
12
+ background: var(--rpg-ui-surface);
13
+ border: 2px solid var(--rpg-ui-border);
14
+ border-left-width: 8px;
15
+ padding: 12px 16px;
16
+ border-radius: var(--rpg-ui-radius-md);
17
+ box-shadow: var(--rpg-ui-shadow-lg);
18
+ color: var(--rpg-ui-text);
19
+ min-width: 250px;
20
+ display: flex;
21
+ align-items: center;
22
+ gap: 12px;
23
+ animation: rpg-slide-up 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
24
+ }
25
+
26
+ .rpg-ui-notifications {
27
+ position: absolute;
28
+ top: 24px;
29
+ right: 24px;
30
+ width: 320px;
31
+ height: auto;
32
+ pointer-events: none;
33
+ }
34
+
35
+ .rpg-ui-notification {
36
+ position: absolute;
37
+ right: 0;
38
+ left: 0;
39
+ display: flex;
40
+ align-items: center;
41
+ gap: 12px;
42
+ padding: 12px 16px;
43
+ background: var(--rpg-ui-surface);
44
+ border: 2px solid var(--rpg-ui-border);
45
+ border-radius: var(--rpg-ui-radius-md);
46
+ box-shadow: var(--rpg-ui-shadow-lg);
47
+ color: var(--rpg-ui-text);
48
+ pointer-events: auto;
49
+ }
50
+
51
+ .rpg-ui-notification[data-type="info"] {
52
+ border-color: var(--rpg-ui-accent);
53
+ }
54
+
55
+ .rpg-ui-notification[data-type="warn"] {
56
+ border-color: #f6c453;
57
+ }
58
+
59
+ .rpg-ui-notification[data-type="error"] {
60
+ border-color: #ef4444;
61
+ }
62
+
63
+ .rpg-ui-notification-icon {
64
+ width: 32px;
65
+ height: 32px;
66
+ border-radius: var(--rpg-ui-radius-sm);
67
+ background: var(--rpg-ui-border-dark);
68
+ display: flex;
69
+ align-items: center;
70
+ justify-content: center;
71
+ overflow: hidden;
72
+ }
73
+
74
+ .rpg-ui-notification-message {
75
+ font-size: var(--rpg-ui-font-size-sm);
76
+ line-height: 1.4;
77
+ }
78
+
79
+ .rpg-ui-notification-icon > * {
80
+ width: 100% !important;
81
+ height: 100% !important;
82
+ background-size: cover !important;
83
+ background-position: center !important;
84
+ }
85
+
86
+ .rpg-ui-toast[data-type="success"] {
87
+ border-left-color: var(--rpg-ui-success);
88
+ }
89
+
90
+ .rpg-ui-toast[data-type="warning"] {
91
+ border-left-color: var(--rpg-ui-warning);
92
+ }
93
+
94
+ .rpg-ui-toast[data-type="danger"] {
95
+ border-left-color: var(--rpg-ui-danger);
96
+ }
97
+
98
+ .rpg-ui-toast[data-type="info"] {
99
+ border-left-color: var(--rpg-ui-info);
100
+ }
101
+
102
+ .rpg-ui-toast-icon {
103
+ font-size: 24px;
104
+ }
105
+
106
+ .rpg-ui-toast-content {
107
+ display: flex;
108
+ flex-direction: column;
109
+ }
110
+
111
+ .rpg-ui-toast-title {
112
+ font-weight: bold;
113
+ font-size: var(--rpg-ui-font-size);
114
+ color: var(--rpg-ui-accent);
115
+ }
116
+
117
+ .rpg-ui-toast-message {
118
+ font-size: var(--rpg-ui-font-size-sm);
119
+ color: var(--rpg-ui-text-muted);
120
+ }
@@ -0,0 +1,32 @@
1
+ .rpg-ui-tooltip {
2
+ position: absolute;
3
+ background: var(--rpg-ui-surface);
4
+ border: 2px solid var(--rpg-ui-border);
5
+ color: var(--rpg-ui-text);
6
+ padding: 8px 12px;
7
+ border-radius: var(--rpg-ui-radius-md);
8
+ box-shadow: var(--rpg-ui-shadow);
9
+ font-size: var(--rpg-ui-font-size-sm);
10
+ z-index: 1000;
11
+ pointer-events: none;
12
+ opacity: 0;
13
+ transition: opacity 0.2s;
14
+ white-space: nowrap;
15
+ }
16
+
17
+ .rpg-ui-tooltip[data-visible="true"] {
18
+ opacity: 1;
19
+ animation: rpg-fade-in 0.2s ease-out;
20
+ }
21
+
22
+ /* Arrow */
23
+ .rpg-ui-tooltip::after {
24
+ content: "";
25
+ position: absolute;
26
+ bottom: -6px;
27
+ left: 50%;
28
+ transform: translateX(-50%);
29
+ border-left: 6px solid transparent;
30
+ border-right: 6px solid transparent;
31
+ border-top: 6px solid var(--rpg-ui-border);
32
+ }
package/src/reset.css ADDED
@@ -0,0 +1,35 @@
1
+ /* Reset for RPG UI components */
2
+ *,
3
+ *::before,
4
+ *::after {
5
+ box-sizing: border-box;
6
+ }
7
+
8
+ :root {
9
+ /* Disable user selection by default for game UIs to prevent accidental text highlighting */
10
+ user-select: none;
11
+ -webkit-user-select: none;
12
+ }
13
+
14
+ body {
15
+ margin: 0;
16
+ padding: 0;
17
+ font-family: var(--rpg-ui-font, serif);
18
+ background-color: #000;
19
+ /* Default to black for game canvas background */
20
+ color: white;
21
+ overflow: hidden;
22
+ /* Prevent scrollbars on full screen games */
23
+ }
24
+
25
+ /* Allow selection on inputs */
26
+ input,
27
+ textarea,
28
+ [contenteditable] {
29
+ user-select: text;
30
+ -webkit-user-select: text;
31
+ }
32
+
33
+ button {
34
+ font-family: inherit;
35
+ }
package/src/tokens.css ADDED
@@ -0,0 +1,49 @@
1
+ :root {
2
+ /* Colors */
3
+ --rpg-ui-bg: #000;
4
+ --rpg-ui-surface: #111;
5
+ --rpg-ui-border: currentColor;
6
+ --rpg-ui-border-light: #444;
7
+ --rpg-ui-border-dark: #000;
8
+ --rpg-ui-text: #fff;
9
+ --rpg-ui-text-muted: #888;
10
+ --rpg-ui-accent: currentColor;
11
+ --rpg-ui-success: #22c55e;
12
+ --rpg-ui-warning: #f59e0b;
13
+ --rpg-ui-danger: #ef4444;
14
+ --rpg-ui-info: #3b82f6;
15
+
16
+ /* Gradients */
17
+ --rpg-ui-gradient-surface: linear-gradient(180deg, var(--rpg-ui-surface) 0%, var(--rpg-ui-bg) 100%);
18
+ --rpg-ui-gradient-accent: linear-gradient(180deg, var(--rpg-ui-accent) 0%, color-mix(in srgb, var(--rpg-ui-accent), black 20%) 100%);
19
+ --rpg-ui-gradient-bar: linear-gradient(90deg, var(--rpg-ui-accent) 0%, color-mix(in srgb, var(--rpg-ui-accent), black 30%) 100%);
20
+
21
+ /* Shadows */
22
+ --rpg-ui-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.5);
23
+ --rpg-ui-shadow-md: 0 4px 6px rgba(0, 0, 0, 0.6);
24
+ --rpg-ui-shadow-lg: 0 10px 25px rgba(0, 0, 0, 0.8);
25
+ --rpg-ui-shadow-glow: 0 0 20px var(--rpg-ui-accent);
26
+ --rpg-ui-shadow-inset: inset 0 1px 3px rgba(0, 0, 0, 0.5);
27
+
28
+ /* Typography */
29
+ --rpg-ui-font: system-ui, sans-serif;
30
+ --rpg-ui-font-size: 1rem;
31
+ --rpg-ui-font-size-sm: 0.875rem;
32
+ --rpg-ui-font-size-lg: 1.125rem;
33
+ --rpg-ui-font-weight: normal;
34
+ --rpg-ui-font-weight-bold: 700;
35
+ --rpg-ui-text-shadow: 0 2px 4px rgba(0, 0, 0, 0.8);
36
+
37
+ /* Layout */
38
+ --rpg-ui-radius-sm: 0;
39
+ --rpg-ui-radius-md: 4px;
40
+ --rpg-ui-radius-lg: 8px;
41
+ --rpg-ui-border-width: 2px;
42
+ --rpg-ui-spacing: 0.5rem;
43
+ --rpg-ui-spacing-lg: 1rem;
44
+
45
+ /* Effects */
46
+ --rpg-ui-bevel-light: var(--rpg-ui-border-light);
47
+ --rpg-ui-bevel-dark: var(--rpg-ui-border-dark);
48
+ --rpg-ui-border-double: 4px;
49
+ }
@@ -0,0 +1,65 @@
1
+ :root {
2
+ /* -- Colors: Minimalist -- */
3
+ /* Surface: White/Grey */
4
+ --rpg-ui-bg: #ffffff;
5
+ --rpg-ui-surface: #f8f9fa;
6
+ --rpg-ui-surface-light: #e9ecef;
7
+
8
+ /* Borders: Thin, crisp */
9
+ --rpg-ui-border: #dee2e6;
10
+ --rpg-ui-border-light: #ced4da;
11
+ --rpg-ui-border-dark: #adb5bd;
12
+ --rpg-ui-border-double: 0px;
13
+
14
+ /* Text: Dark Grey/Black */
15
+ --rpg-ui-text: #212529;
16
+ --rpg-ui-text-muted: #6c757d;
17
+ --rpg-ui-text-shadow: none;
18
+
19
+ /* Accents: Subtle Blue */
20
+ --rpg-ui-accent: #0d6efd;
21
+ --rpg-ui-accent-hover: #0b5ed7;
22
+ --rpg-ui-accent-active: #0a58ca;
23
+
24
+ /* Status Colors (Standard) */
25
+ --rpg-ui-success: #198754;
26
+ --rpg-ui-warning: #ffc107;
27
+ --rpg-ui-danger: #dc3545;
28
+ --rpg-ui-info: #0dcaf0;
29
+ --rpg-ui-mana: #6610f2;
30
+ --rpg-ui-xp: #20c997;
31
+
32
+ /* -- Typography -- */
33
+ /* System Fonts */
34
+ --rpg-ui-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
35
+ --rpg-ui-font-mono: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
36
+ --rpg-ui-font-size: 16px;
37
+ --rpg-ui-font-size-sm: 14px;
38
+ --rpg-ui-font-size-lg: 20px;
39
+ --rpg-ui-font-size-xl: 24px;
40
+ --rpg-ui-font-weight: 400;
41
+ --rpg-ui-font-weight-bold: 600;
42
+
43
+ /* -- Spacing & Layout -- */
44
+ --rpg-ui-spacing: 1rem;
45
+ --rpg-ui-spacing-sm: 0.5rem;
46
+ --rpg-ui-spacing-lg: 1.5rem;
47
+
48
+ /* -- Radius: Small -- */
49
+ --rpg-ui-radius-sm: 4px;
50
+ --rpg-ui-radius-md: 6px;
51
+ --rpg-ui-radius-lg: 8px;
52
+
53
+ /* -- Effects -- */
54
+ /* No shadows for flat look */
55
+ --rpg-ui-shadow: none;
56
+ --rpg-ui-shadow-lg: 0 4px 6px rgba(0, 0, 0, 0.1);
57
+
58
+ --rpg-ui-bevel-light: rgba(255, 255, 255, 0.5);
59
+ --rpg-ui-bevel-dark: rgba(0, 0, 0, 0.1);
60
+
61
+ /* -- Gradients -- */
62
+ /* Flat colors */
63
+ --rpg-ui-gradient-surface: var(--rpg-ui-surface);
64
+ --rpg-ui-gradient-gloss: none;
65
+ }