@dalcvil/steam-green-react 0.1.0 → 0.2.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 CHANGED
@@ -1,25 +1,25 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 Dalcvi
4
-
5
- This project contains styles derived from VGUI.css
6
- (https://github.com/AlpyneDreams/vgui.css), Copyright (c) 2021 Jeffrey Ellison,
7
- licensed under the MIT License.
8
-
9
- Permission is hereby granted, free of charge, to any person obtaining a copy
10
- of this software and associated documentation files (the "Software"), to deal
11
- in the Software without restriction, including without limitation the rights
12
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13
- copies of the Software, and to permit persons to whom the Software is
14
- furnished to do so, subject to the following conditions:
15
-
16
- The above copyright notice and this permission notice shall be included in all
17
- copies or substantial portions of the Software.
18
-
19
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
25
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Dalcvi
4
+
5
+ This project contains styles derived from VGUI.css
6
+ (https://github.com/AlpyneDreams/vgui.css), Copyright (c) 2021 Jeffrey Ellison,
7
+ licensed under the MIT License.
8
+
9
+ Permission is hereby granted, free of charge, to any person obtaining a copy
10
+ of this software and associated documentation files (the "Software"), to deal
11
+ in the Software without restriction, including without limitation the rights
12
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13
+ copies of the Software, and to permit persons to whom the Software is
14
+ furnished to do so, subject to the following conditions:
15
+
16
+ The above copyright notice and this permission notice shall be included in all
17
+ copies or substantial portions of the Software.
18
+
19
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
25
+ SOFTWARE.
package/README.md CHANGED
@@ -43,6 +43,7 @@ import.
43
43
  | Component | Description |
44
44
  | --- | --- |
45
45
  | `GreenButton` | Classic VGUI push button. Supports `fullWidth` on top of all `<button>` props. |
46
+ | `GreenPanel` | VGUI container with the beveled border and an optional uppercase title bar. Supports `inset` and `rounded`. |
46
47
 
47
48
  More components are on the way; each one will get its own CSS file plus a
48
49
  Storybook story.
@@ -91,6 +92,8 @@ src/
91
92
  GreenButton.css # colocated styles, imported by the component
92
93
  GreenButton.stories.tsx
93
94
  index.ts
95
+ GreenPanel/
96
+ ...
94
97
  ```
95
98
 
96
99
  To add a component: create a folder under `src/components/`, export it from its
@@ -102,7 +105,7 @@ own `index.ts` **and** from `src/index.ts`, and add a story next to it.
102
105
  | --- | --- | --- |
103
106
  | `.github/workflows/ci.yml` | push to `main`, PRs | Typechecks, builds the library and Storybook, uploads `dist` as an artifact. |
104
107
  | `.github/workflows/pages.yml` | push to `main` | Builds Storybook and deploys it to GitHub Pages. |
105
- | `.github/workflows/release.yml` | push to `main` | Opens/updates the *“chore: version packages”* PR, then publishes to npm **with provenance** and creates the GitHub release once that PR is merged. |
108
+ | `.github/workflows/release.yml` | **CI** finishing successfully on `main` | Opens/updates the *“chore: version packages”* PR, then publishes to npm **with provenance** and creates the GitHub release once that PR is merged. Never runs on a plain push, so a red CI run cannot release. |
106
109
 
107
110
  ### Releasing
108
111
 
@@ -124,8 +127,8 @@ Releases are managed by [Changesets](https://changesets.dev) — the version in
124
127
  creates a GitHub release.
125
128
 
126
129
  Nothing is published while no changeset exists, so `main` can sit unreleased
127
- indefinitely with one exception: `@dalcvil/steam-green-react` is not on the
128
- registry yet, so the first release run publishes the current `0.1.0` directly.
130
+ indefinitely. Releases are driven entirely by changesets `0.1.0` was the one
131
+ version published by hand, before trusted publishing existed.
129
132
 
130
133
  ### First-time setup
131
134
 
@@ -135,10 +138,18 @@ registry yet, so the first release run publishes the current `0.1.0` directly.
135
138
  default runs a Jekyll build that serves the README instead. Once the source
136
139
  is set, the Pages workflow publishes Storybook to
137
140
  `https://<owner>.github.io/<repo>/`.
138
- 2. **npm publishing** — create an npm **Automation** token for the `@dalcvil`
139
- scope and store it as the repository secret `NPM_TOKEN`
140
- (**Settings → Secrets and variables → Actions**). The release workflow
141
- exports it as `NODE_AUTH_TOKEN`, which `actions/setup-node` picks up.
141
+ 2. **npm publishing** — add a **trusted publisher** on npmjs.com
142
+ (**Packages `@dalcvil/steam-green-react` Settings Trusted publishing
143
+ GitHub Actions**) with repository `Dalcvi/steam-style-react`, workflow
144
+ `release.yml`, and *Environment* left blank. Let the connection perform a
145
+ direct publish, not a stage-only one — the release workflow publishes
146
+ unattended, so stage-only would leave every version waiting on manual 2FA
147
+ approval.
148
+
149
+ No token and no repository secret are involved: the workflow authenticates
150
+ over OIDC, and npm attaches provenance automatically. Once a release has
151
+ succeeded, tighten **Settings → Publishing access** to *Require two-factor
152
+ authentication and disallow tokens*.
142
153
  3. **Allow the version PR** — enable **Settings → Actions → General →
143
154
  *Allow GitHub Actions to create and approve pull requests***, otherwise the
144
155
  workflow cannot open the “chore: version packages” pull request.
@@ -1,47 +1,47 @@
1
- /*
2
- * Green Steam button.
3
- *
4
- * The upstream VGUI.css targets the bare `button` element. As a component we
5
- * scope the same declarations to `.greensteam-button` so the component can be
6
- * dropped into any page without restyling every button on it.
7
- */
8
-
9
- .greensteam-button {
10
- color: white;
11
- background-color: #4c5844;
12
- height: 25px;
13
- min-width: 75px;
14
- padding: 0 8px;
15
- cursor: pointer;
16
- border-top: solid 1px #899281;
17
- border-bottom: solid 1px #292d23;
18
- border-left: solid 1px #899281;
19
- border-right: solid 1px #292d23;
20
- font-family: inherit;
21
- font-size: inherit;
22
- font-weight: lighter;
23
- text-align: left;
24
- -webkit-font-smoothing: none;
25
- }
26
-
27
- .greensteam-button:active {
28
- border-top: solid 1px #292d23;
29
- border-bottom: solid 1px #899281;
30
- border-left: solid 1px #292d23;
31
- border-right: solid 1px #899281;
32
- }
33
-
34
- .greensteam-button:focus-visible {
35
- outline: 1px dashed #292d23;
36
- outline-offset: -4px;
37
- }
38
-
39
- .greensteam-button:disabled {
40
- color: #8b9481;
41
- cursor: default;
42
- }
43
-
44
- .greensteam-button--full-width {
45
- display: block;
46
- width: 100%;
47
- }
1
+ /*
2
+ * Green Steam button.
3
+ *
4
+ * The upstream VGUI.css targets the bare `button` element. As a component we
5
+ * scope the same declarations to `.greensteam-button` so the component can be
6
+ * dropped into any page without restyling every button on it.
7
+ */
8
+
9
+ .greensteam-button {
10
+ color: white;
11
+ background-color: #4c5844;
12
+ height: 25px;
13
+ min-width: 75px;
14
+ padding: 0 8px;
15
+ cursor: pointer;
16
+ border-top: solid 1px #899281;
17
+ border-bottom: solid 1px #292d23;
18
+ border-left: solid 1px #899281;
19
+ border-right: solid 1px #292d23;
20
+ font-family: inherit;
21
+ font-size: inherit;
22
+ font-weight: lighter;
23
+ text-align: left;
24
+ -webkit-font-smoothing: none;
25
+ }
26
+
27
+ .greensteam-button:active {
28
+ border-top: solid 1px #292d23;
29
+ border-bottom: solid 1px #899281;
30
+ border-left: solid 1px #292d23;
31
+ border-right: solid 1px #899281;
32
+ }
33
+
34
+ .greensteam-button:focus-visible {
35
+ outline: 1px dashed #292d23;
36
+ outline-offset: -4px;
37
+ }
38
+
39
+ .greensteam-button:disabled {
40
+ color: #8b9481;
41
+ cursor: default;
42
+ }
43
+
44
+ .greensteam-button--full-width {
45
+ display: block;
46
+ width: 100%;
47
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"GreenButton.js","names":[],"sources":["../../../src/components/GreenButton/GreenButton.tsx"],"sourcesContent":["import { forwardRef } from 'react'\r\nimport type { ButtonHTMLAttributes } from 'react'\r\n\r\nimport './GreenButton.css'\r\n\r\nexport interface GreenButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\r\n /** Stretch the button across the full width of its container. */\r\n fullWidth?: boolean\r\n}\r\n\r\nexport const GreenButton = forwardRef<HTMLButtonElement, GreenButtonProps>(function GreenButton(\r\n { className, type = 'button', fullWidth = false, ...rest },\r\n ref,\r\n) {\r\n const classes = ['greensteam-button']\r\n if (fullWidth) classes.push('greensteam-button--full-width')\r\n if (className) classes.push(className)\r\n\r\n return <button ref={ref} type={type} className={classes.join(' ')} {...rest} />\r\n})\r\n\r\nGreenButton.displayName = 'GreenButton'\r\n"],"mappings":";;;;AAUA,IAAa,cAAc,WAAgD,SAAS,YAClF,EAAE,WAAW,OAAO,UAAU,YAAY,OAAO,GAAG,QACpD,KACA;CACA,MAAM,UAAU,CAAC,mBAAmB;CACpC,IAAI,WAAW,QAAQ,KAAK,+BAA+B;CAC3D,IAAI,WAAW,QAAQ,KAAK,SAAS;CAErC,OAAO,oBAAC,UAAD;EAAa;EAAW;EAAM,WAAW,QAAQ,KAAK,GAAG;EAAG,GAAI;CAAO,CAAA;AAChF,CAAC;AAED,YAAY,cAAc"}
1
+ {"version":3,"file":"GreenButton.js","names":[],"sources":["../../../src/components/GreenButton/GreenButton.tsx"],"sourcesContent":["import { forwardRef } from 'react'\nimport type { ButtonHTMLAttributes } from 'react'\n\nimport './GreenButton.css'\n\nexport interface GreenButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** Stretch the button across the full width of its container. */\n fullWidth?: boolean\n}\n\nexport const GreenButton = forwardRef<HTMLButtonElement, GreenButtonProps>(function GreenButton(\n { className, type = 'button', fullWidth = false, ...rest },\n ref,\n) {\n const classes = ['greensteam-button']\n if (fullWidth) classes.push('greensteam-button--full-width')\n if (className) classes.push(className)\n\n return <button ref={ref} type={type} className={classes.join(' ')} {...rest} />\n})\n\nGreenButton.displayName = 'GreenButton'\n"],"mappings":";;;;AAUA,IAAa,cAAc,WAAgD,SAAS,YAClF,EAAE,WAAW,OAAO,UAAU,YAAY,OAAO,GAAG,QACpD,KACA;CACA,MAAM,UAAU,CAAC,mBAAmB;CACpC,IAAI,WAAW,QAAQ,KAAK,+BAA+B;CAC3D,IAAI,WAAW,QAAQ,KAAK,SAAS;CAErC,OAAO,oBAAC,UAAD;EAAa;EAAW;EAAM,WAAW,QAAQ,KAAK,GAAG;EAAG,GAAI;CAAO,CAAA;AAChF,CAAC;AAED,YAAY,cAAc"}
@@ -0,0 +1,45 @@
1
+ /*
2
+ * Green Steam panel.
3
+ *
4
+ * Reproduces the upstream `.window` / `.box` container: a light-green body with
5
+ * the beveled VGUI border, plus the uppercase title bar upstream renders via
6
+ * `.window::before { content: attr(name) }`. Here the title bar is a real
7
+ * element, so the text is selectable and no attribute trick is needed.
8
+ */
9
+
10
+ .greensteam-panel {
11
+ background-color: #4c5844;
12
+ padding: 10px;
13
+ box-sizing: border-box;
14
+ margin: 0 0 20px;
15
+ border-top: solid 1px #899281;
16
+ border-bottom: solid 1px #292d23;
17
+ border-left: solid 1px #899281;
18
+ border-right: solid 1px #292d23;
19
+ }
20
+
21
+ .greensteam-panel__titlebar {
22
+ display: block;
23
+ position: relative;
24
+ height: 18px;
25
+ line-height: 18px;
26
+ margin-bottom: 1em;
27
+ color: white;
28
+ font-size: 12px;
29
+ font-weight: bold;
30
+ text-transform: uppercase;
31
+ letter-spacing: 2px;
32
+ }
33
+
34
+ .greensteam-panel--inset {
35
+ background-color: #3e4637;
36
+ border-top: solid 1px #292d23;
37
+ border-bottom: solid 1px #899281;
38
+ border-left: solid 1px #292d23;
39
+ border-right: solid 1px #899281;
40
+ }
41
+
42
+ .greensteam-panel--rounded {
43
+ border: none;
44
+ border-radius: 10px;
45
+ }
@@ -0,0 +1 @@
1
+ export {}
@@ -0,0 +1,12 @@
1
+ import type { HTMLAttributes, ReactNode } from 'react';
2
+ import './GreenPanel.css';
3
+ export interface GreenPanelProps extends HTMLAttributes<HTMLDivElement> {
4
+ /** Uppercase VGUI title bar text. Omit it to render a panel without one. */
5
+ heading?: ReactNode;
6
+ /** Darken the body to the VGUI "inset" look, e.g. for read-only content. */
7
+ inset?: boolean;
8
+ /** Round the corners and drop the beveled border. */
9
+ rounded?: boolean;
10
+ }
11
+ export declare const GreenPanel: import("react").ForwardRefExoticComponent<GreenPanelProps & import("react").RefAttributes<HTMLDivElement>>;
12
+ //# sourceMappingURL=GreenPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GreenPanel.d.ts","sourceRoot":"","sources":["../../../src/components/GreenPanel/GreenPanel.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtD,OAAO,kBAAkB,CAAA;AAEzB,MAAM,WAAW,eAAgB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACrE,4EAA4E;IAC5E,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,qDAAqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,eAAO,MAAM,UAAU,4GAerB,CAAA"}
@@ -0,0 +1,24 @@
1
+ import { forwardRef } from "react";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import "./GreenPanel.css";
4
+ //#region src/components/GreenPanel/GreenPanel.tsx
5
+ var GreenPanel = forwardRef(function GreenPanel({ className, heading, inset = false, rounded = false, children, ...rest }, ref) {
6
+ const classes = ["greensteam-panel"];
7
+ if (inset) classes.push("greensteam-panel--inset");
8
+ if (rounded) classes.push("greensteam-panel--rounded");
9
+ if (className) classes.push(className);
10
+ return /* @__PURE__ */ jsxs("div", {
11
+ ref,
12
+ className: classes.join(" "),
13
+ ...rest,
14
+ children: [heading != null && /* @__PURE__ */ jsx("div", {
15
+ className: "greensteam-panel__titlebar",
16
+ children: heading
17
+ }), children]
18
+ });
19
+ });
20
+ GreenPanel.displayName = "GreenPanel";
21
+ //#endregion
22
+ export { GreenPanel };
23
+
24
+ //# sourceMappingURL=GreenPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GreenPanel.js","names":[],"sources":["../../../src/components/GreenPanel/GreenPanel.tsx"],"sourcesContent":["import { forwardRef } from 'react'\nimport type { HTMLAttributes, ReactNode } from 'react'\n\nimport './GreenPanel.css'\n\nexport interface GreenPanelProps extends HTMLAttributes<HTMLDivElement> {\n /** Uppercase VGUI title bar text. Omit it to render a panel without one. */\n heading?: ReactNode\n /** Darken the body to the VGUI \"inset\" look, e.g. for read-only content. */\n inset?: boolean\n /** Round the corners and drop the beveled border. */\n rounded?: boolean\n}\n\nexport const GreenPanel = forwardRef<HTMLDivElement, GreenPanelProps>(function GreenPanel(\n { className, heading, inset = false, rounded = false, children, ...rest },\n ref,\n) {\n const classes = ['greensteam-panel']\n if (inset) classes.push('greensteam-panel--inset')\n if (rounded) classes.push('greensteam-panel--rounded')\n if (className) classes.push(className)\n\n return (\n <div ref={ref} className={classes.join(' ')} {...rest}>\n {heading != null && <div className=\"greensteam-panel__titlebar\">{heading}</div>}\n {children}\n </div>\n )\n})\n\nGreenPanel.displayName = 'GreenPanel'\n"],"mappings":";;;;AAcA,IAAa,aAAa,WAA4C,SAAS,WAC7E,EAAE,WAAW,SAAS,QAAQ,OAAO,UAAU,OAAO,UAAU,GAAG,QACnE,KACA;CACA,MAAM,UAAU,CAAC,kBAAkB;CACnC,IAAI,OAAO,QAAQ,KAAK,yBAAyB;CACjD,IAAI,SAAS,QAAQ,KAAK,2BAA2B;CACrD,IAAI,WAAW,QAAQ,KAAK,SAAS;CAErC,OACE,qBAAC,OAAD;EAAU;EAAK,WAAW,QAAQ,KAAK,GAAG;EAAG,GAAI;EAAjD,UAAA,CACG,WAAW,QAAQ,oBAAC,OAAD;GAAK,WAAU;GAA8B,UAAA;EAAa,CAAA,GAC7E,QACE;;AAET,CAAC;AAED,WAAW,cAAc"}
@@ -0,0 +1,3 @@
1
+ export { GreenPanel } from './GreenPanel';
2
+ export type { GreenPanelProps } from './GreenPanel';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/GreenPanel/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA"}
package/dist/index.d.ts CHANGED
@@ -14,4 +14,6 @@
14
14
  */
15
15
  export { GreenButton } from './components/GreenButton';
16
16
  export type { GreenButtonProps } from './components/GreenButton';
17
+ export { GreenPanel } from './components/GreenPanel';
18
+ export type { GreenPanelProps } from './components/GreenPanel';
17
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACpD,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA"}
package/dist/index.js CHANGED
@@ -1,2 +1,3 @@
1
1
  import { GreenButton } from "./components/GreenButton/GreenButton.js";
2
- export { GreenButton };
2
+ import { GreenPanel } from "./components/GreenPanel/GreenPanel.js";
3
+ export { GreenButton, GreenPanel };
@@ -1,122 +1,122 @@
1
- /*
2
- * Global Green Steam (VGUI) theme.
3
- *
4
- * Only document-level rules live here — the element defaults and shared layout
5
- * helpers that every component inherits. Anything that belongs to a specific
6
- * component is colocated with that component instead (see
7
- * `components/GreenButton/GreenButton.css`).
8
- *
9
- * Derived from VGUI.css <https://github.com/AlpyneDreams/vgui.css> (MIT).
10
- */
11
-
12
- body {
13
- background-color: #3e4637;
14
- font-family: "Trebuchet MS", "Verdana", sans-serif;
15
- color: #d8ded3;
16
- font-size: 14px;
17
- image-rendering: pixelated;
18
- margin: 20px 20px;
19
- }
20
-
21
- ::selection {
22
- background-color: #96892d;
23
- }
24
-
25
- h1,
26
- h2,
27
- h3,
28
- h4,
29
- h5,
30
- h6 {
31
- margin: 3px 12px 12px;
32
- }
33
-
34
- h1,
35
- h2 {
36
- color: #c4b550;
37
- }
38
-
39
- h1 {
40
- font-size: 18px;
41
- }
42
-
43
- h2 {
44
- font-size: 16px;
45
- }
46
-
47
- p {
48
- text-align: left;
49
- margin: 12px 12px 12px;
50
- color: #d8ded3;
51
- }
52
-
53
- a {
54
- text-decoration: none;
55
- color: #aaaaaa;
56
- }
57
-
58
- a:hover {
59
- text-decoration: underline;
60
- }
61
-
62
- code {
63
- background: #3e4637;
64
- padding: 0 3px;
65
- font-family: monospace;
66
- }
67
-
68
- hr {
69
- margin: 20px 0;
70
- border: none;
71
- height: 1px;
72
- background-color: #3e4637;
73
- }
74
-
75
- img {
76
- object-fit: contain;
77
- margin: 2px;
78
- border: solid 2px #7b8484;
79
- }
80
-
81
- fieldset {
82
- border-top: solid 1px #292d23;
83
- border-bottom: solid 1px #899281;
84
- border-left: solid 1px #292d23;
85
- border-right: solid 1px #899281;
86
- }
87
-
88
- legend {
89
- text-transform: uppercase;
90
- letter-spacing: 2px;
91
- font-size: 12px;
92
- color: white;
93
- font-weight: bold;
94
- }
95
-
96
- /* Shared layout helpers */
97
-
98
- .flex-row {
99
- display: flex;
100
- flex-direction: row;
101
- align-items: flex-start;
102
- }
103
-
104
- .flex-column {
105
- display: flex;
106
- flex-direction: column;
107
- align-items: flex-start;
108
- }
109
-
110
- .border {
111
- border-top: solid 1px #899281;
112
- border-bottom: solid 1px #292d23;
113
- border-left: solid 1px #899281;
114
- border-right: solid 1px #292d23;
115
- }
116
-
117
- .border-inverted {
118
- border-top: solid 1px #292d23;
119
- border-bottom: solid 1px #899281;
120
- border-left: solid 1px #292d23;
121
- border-right: solid 1px #899281;
122
- }
1
+ /*
2
+ * Global Green Steam (VGUI) theme.
3
+ *
4
+ * Only document-level rules live here — the element defaults and shared layout
5
+ * helpers that every component inherits. Anything that belongs to a specific
6
+ * component is colocated with that component instead (see
7
+ * `components/GreenButton/GreenButton.css`).
8
+ *
9
+ * Derived from VGUI.css <https://github.com/AlpyneDreams/vgui.css> (MIT).
10
+ */
11
+
12
+ body {
13
+ background-color: #3e4637;
14
+ font-family: "Trebuchet MS", "Verdana", sans-serif;
15
+ color: #d8ded3;
16
+ font-size: 14px;
17
+ image-rendering: pixelated;
18
+ margin: 20px 20px;
19
+ }
20
+
21
+ ::selection {
22
+ background-color: #96892d;
23
+ }
24
+
25
+ h1,
26
+ h2,
27
+ h3,
28
+ h4,
29
+ h5,
30
+ h6 {
31
+ margin: 3px 12px 12px;
32
+ }
33
+
34
+ h1,
35
+ h2 {
36
+ color: #c4b550;
37
+ }
38
+
39
+ h1 {
40
+ font-size: 18px;
41
+ }
42
+
43
+ h2 {
44
+ font-size: 16px;
45
+ }
46
+
47
+ p {
48
+ text-align: left;
49
+ margin: 12px 12px 12px;
50
+ color: #d8ded3;
51
+ }
52
+
53
+ a {
54
+ text-decoration: none;
55
+ color: #aaaaaa;
56
+ }
57
+
58
+ a:hover {
59
+ text-decoration: underline;
60
+ }
61
+
62
+ code {
63
+ background: #3e4637;
64
+ padding: 0 3px;
65
+ font-family: monospace;
66
+ }
67
+
68
+ hr {
69
+ margin: 20px 0;
70
+ border: none;
71
+ height: 1px;
72
+ background-color: #3e4637;
73
+ }
74
+
75
+ img {
76
+ object-fit: contain;
77
+ margin: 2px;
78
+ border: solid 2px #7b8484;
79
+ }
80
+
81
+ fieldset {
82
+ border-top: solid 1px #292d23;
83
+ border-bottom: solid 1px #899281;
84
+ border-left: solid 1px #292d23;
85
+ border-right: solid 1px #899281;
86
+ }
87
+
88
+ legend {
89
+ text-transform: uppercase;
90
+ letter-spacing: 2px;
91
+ font-size: 12px;
92
+ color: white;
93
+ font-weight: bold;
94
+ }
95
+
96
+ /* Shared layout helpers */
97
+
98
+ .flex-row {
99
+ display: flex;
100
+ flex-direction: row;
101
+ align-items: flex-start;
102
+ }
103
+
104
+ .flex-column {
105
+ display: flex;
106
+ flex-direction: column;
107
+ align-items: flex-start;
108
+ }
109
+
110
+ .border {
111
+ border-top: solid 1px #899281;
112
+ border-bottom: solid 1px #292d23;
113
+ border-left: solid 1px #899281;
114
+ border-right: solid 1px #292d23;
115
+ }
116
+
117
+ .border-inverted {
118
+ border-top: solid 1px #292d23;
119
+ border-bottom: solid 1px #899281;
120
+ border-left: solid 1px #292d23;
121
+ border-right: solid 1px #899281;
122
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dalcvil/steam-green-react",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Tree-shakable React components for the classic Green Steam (VGUI) theme.",
5
5
  "keywords": [
6
6
  "react",
@@ -22,7 +22,6 @@
22
22
  "url": "https://github.com/Dalcvi/steam-style-react/issues"
23
23
  },
24
24
  "type": "module",
25
- "packageManager": "pnpm@12.4.1",
26
25
  "sideEffects": [
27
26
  "**/*.css"
28
27
  ],
@@ -41,16 +40,6 @@
41
40
  "./styles/theme.css": "./dist/styles/theme.css",
42
41
  "./package.json": "./package.json"
43
42
  },
44
- "scripts": {
45
- "build": "vite build && tsc -p tsconfig.build.json",
46
- "typecheck": "tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.node.json",
47
- "storybook": "storybook dev -p 6006",
48
- "build-storybook": "storybook build",
49
- "changeset": "changeset",
50
- "version-packages": "changeset version",
51
- "release": "changeset publish",
52
- "prepublishOnly": "pnpm run typecheck && pnpm run build"
53
- },
54
43
  "peerDependencies": {
55
44
  "react": "^18.0.0 || ^19.0.0",
56
45
  "react-dom": "^18.0.0 || ^19.0.0"
@@ -70,5 +59,14 @@
70
59
  "storybook": "^10.6.0",
71
60
  "typescript": "^7.0.2",
72
61
  "vite": "^8.3.0"
62
+ },
63
+ "scripts": {
64
+ "build": "vite build && tsc -p tsconfig.build.json",
65
+ "typecheck": "tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.node.json",
66
+ "storybook": "storybook dev -p 6006",
67
+ "build-storybook": "storybook build",
68
+ "changeset": "changeset",
69
+ "version-packages": "changeset version",
70
+ "release": "changeset publish"
73
71
  }
74
- }
72
+ }