@rimelight/ui 0.0.20 → 0.0.21

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.
@@ -1,3 +1,156 @@
1
1
  @import "tailwindcss";
2
2
  @import "@nuxt/ui";
3
3
  @import "./prism.css";
4
+
5
+ /* Keyboard Component Styles */
6
+ .keyboard-wrapper {
7
+ display: flex;
8
+ flex-direction: column;
9
+ align-items: center;
10
+ padding: 16px;
11
+ border-radius: 12px;
12
+ width: 100%;
13
+ max-width: 100%;
14
+ margin: 16px 0;
15
+ box-sizing: border-box;
16
+ }
17
+ .keyboard-container {
18
+ width: 100%;
19
+ display: flex;
20
+ justify-content: center;
21
+ }
22
+ .keyboard-svg {
23
+ width: 100%;
24
+ height: auto;
25
+ max-width: 900px;
26
+ }
27
+ .kb-key-label {
28
+ font-family: var(--font-mono, monospace);
29
+ font-size: 10px;
30
+ font-weight: 600;
31
+ pointer-events: none;
32
+ user-select: none;
33
+ }
34
+ .kb-legend {
35
+ display: flex;
36
+ flex-wrap: wrap;
37
+ justify-content: center;
38
+ gap: 12px 24px;
39
+ margin-top: 24px;
40
+ width: 100%;
41
+ }
42
+ .keyboard-wrapper .legend-item {
43
+ display: flex !important;
44
+ align-items: center !important;
45
+ gap: 8px;
46
+ margin: 0 !important;
47
+ padding: 0 !important;
48
+ font-size: 10px;
49
+ color: #a0a0b0;
50
+ text-transform: uppercase;
51
+ letter-spacing: 0.05em;
52
+ font-weight: 500;
53
+ white-space: nowrap;
54
+ line-height: 1 !important;
55
+ }
56
+ .legend-color-svg {
57
+ flex-shrink: 0;
58
+ display: block;
59
+ }
60
+ .keyboard-wrapper .legend-label {
61
+ margin: 0 !important;
62
+ padding: 0 !important;
63
+ line-height: 1 !important;
64
+ display: inline-block !important;
65
+ }
66
+
67
+ /* Gamepad Component Styles */
68
+ .gamepad-wrapper {
69
+ display: flex;
70
+ flex-direction: column;
71
+ align-items: center;
72
+ padding: 48px;
73
+ border-radius: 24px;
74
+ width: 100%;
75
+ max-width: 100%;
76
+ margin: 24px 0;
77
+ box-sizing: border-box;
78
+ container-type: inline-size;
79
+ border: 1px solid #1a1a2e;
80
+ }
81
+ .gamepad-container {
82
+ width: 100%;
83
+ max-width: 440px;
84
+ }
85
+ .gamepad-svg {
86
+ width: 100%;
87
+ height: auto;
88
+ }
89
+ .gp-btn rect,
90
+ .gp-btn circle {
91
+ fill: #1e1e30;
92
+ stroke: #33334d;
93
+ stroke-width: 1;
94
+ transition: all 0.2s ease;
95
+ }
96
+ .btn-label {
97
+ fill: #555570;
98
+ font-size: 10px;
99
+ font-family: var(--font-sans, system-ui);
100
+ font-weight: 800;
101
+ pointer-events: none;
102
+ line-height: 1;
103
+ }
104
+ .gp-btn.active rect,
105
+ .gp-btn.active circle {
106
+ fill: var(--hl-color, #00c16a);
107
+ stroke: #ffffff33;
108
+ stroke-width: 1.5;
109
+ }
110
+ .gp-btn.active .btn-label {
111
+ fill: #fff;
112
+ }
113
+ .gamepad-legend {
114
+ display: flex;
115
+ flex-wrap: wrap;
116
+ justify-content: center;
117
+ gap: 12px 24px;
118
+ margin-top: 40px;
119
+ width: 100%;
120
+ }
121
+ .gamepad-wrapper .legend-item {
122
+ display: flex !important;
123
+ align-items: center !important;
124
+ gap: 8px;
125
+ height: 10px !important;
126
+ font-size: 10px;
127
+ color: #777790;
128
+ text-transform: uppercase;
129
+ letter-spacing: 0.1em;
130
+ font-weight: 700;
131
+ line-height: 10px !important;
132
+ padding: 0 !important;
133
+ margin: 0 !important;
134
+ }
135
+ .gamepad-wrapper .legend-label {
136
+ display: inline-block !important;
137
+ height: 10px !important;
138
+ line-height: 10px !important;
139
+ margin: 0 !important;
140
+ padding: 0 !important;
141
+ }
142
+
143
+ .kb-legend-label {
144
+ font-family: var(--font-sans, system-ui);
145
+ font-size: 10px;
146
+ font-weight: 700;
147
+ text-transform: uppercase;
148
+ letter-spacing: 0.05em;
149
+ }
150
+ .gp-legend-label {
151
+ font-family: var(--font-sans, system-ui);
152
+ font-size: 10px;
153
+ font-weight: 700;
154
+ text-transform: uppercase;
155
+ letter-spacing: 0.1em;
156
+ }
@@ -1,5 +1,6 @@
1
1
  import { buttonTheme } from "./button.theme"
2
2
  import { headerTheme } from "./header.theme"
3
+ import { scrollToTopTheme } from "./scroll-to-top.theme"
3
4
 
4
5
  /**
5
6
  * Default UI configuration for all components. This is the baseline that gets merged with
@@ -7,7 +8,8 @@ import { headerTheme } from "./header.theme"
7
8
  */
8
9
  export const defaultUIConfig = {
9
10
  button: buttonTheme,
10
- header: headerTheme
11
+ header: headerTheme,
12
+ "scroll-to-top": scrollToTopTheme
11
13
  } as const
12
14
 
13
15
  export type DefaultUIConfig = typeof defaultUIConfig
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Theme configuration for the ScrollToTop component. Defines the slots, base styles, and variants
3
+ * for the scroll-to-top button with progress indicator.
4
+ */
5
+ export const scrollToTopTheme = {
6
+ slots: ["root", "button", "progressBase", "svg", "iconContainer", "icon"],
7
+ base: {
8
+ root: "fixed bottom-6 right-6 z-50",
9
+ button: "size-14 lg:size-12 p-0 rounded-full",
10
+ progressBase: "progress-circle-base size-full",
11
+ svg: "size-full",
12
+ iconContainer: "absolute inset-0 flex items-center justify-center text-center",
13
+ icon: "size-6 text-white"
14
+ },
15
+ variants: {
16
+ color: {
17
+ primary: {
18
+ progressBase: "",
19
+ svg: "",
20
+ iconContainer: "",
21
+ icon: ""
22
+ },
23
+ secondary: {
24
+ progressBase: "",
25
+ svg: "",
26
+ iconContainer: "",
27
+ icon: ""
28
+ }
29
+ }
30
+ },
31
+ compoundVariants: [
32
+ {
33
+ color: "primary",
34
+ classNames: {
35
+ icon: "text-primary-foreground"
36
+ }
37
+ },
38
+ {
39
+ color: "secondary",
40
+ classNames: {
41
+ icon: "text-secondary-foreground"
42
+ }
43
+ }
44
+ ],
45
+ defaultVariants: {
46
+ color: "primary"
47
+ }
48
+ } as const