four-stroke 0.1.4 → 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/oxlint.config.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import { defineConfig } from "oxlint";
2
2
 
3
3
  export default defineConfig({
4
- plugins: ["eslint", "typescript", "unicorn", "oxc", "import", "promise", "vitest"],
4
+ plugins: ["eslint", "typescript", "unicorn", "oxc", "import", "promise", "vitest", "react"],
5
5
  options: {
6
6
  typeAware: true,
7
7
  },
@@ -64,6 +64,15 @@ export default defineConfig({
64
64
  "unicorn/number-literal-case": "off",
65
65
  "eslint/one-var": "off",
66
66
  "vitest/prefer-called-once": "off",
67
+ "react/react-in-jsx-scope": "off",
68
+ "react/jsx-max-depth": "off",
69
+ "react/function-component-definition": [
70
+ "error",
71
+ {
72
+ namedComponents: "arrow-function",
73
+ unnamedComponents: "arrow-function",
74
+ },
75
+ ],
67
76
  },
68
77
  overrides: [
69
78
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "four-stroke",
3
- "version": "0.1.4",
3
+ "version": "0.2.0",
4
4
  "description": "Simple Cloudflare Worker SSR SPA framework",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -25,7 +25,7 @@
25
25
  "devDependencies": {
26
26
  "@cloudflare/vitest-pool-workers": "^0.22.0",
27
27
  "knip": "^6.32.2",
28
- "oxfmt": "^0.64.0",
28
+ "oxfmt": "^0.66.0",
29
29
  "oxlint": "^1.79.0",
30
30
  "oxlint-tsgolint": "^7.0.2001",
31
31
  "typescript": "^7.0.2",
@@ -5,35 +5,35 @@ interface ViewerMenuProps {
5
5
  viewer: Viewer;
6
6
  }
7
7
 
8
- export default function ViewerMenu({ logoutUrl, viewer }: ViewerMenuProps): React.ReactNode {
9
- return (
10
- <details className="group relative">
11
- <summary className="flex cursor-pointer list-none items-center gap-3 rounded-md px-2 py-1.5 hover:bg-stone-100 focus:outline-none focus:ring-2 focus:ring-emerald-900 focus:ring-offset-2 [&::-webkit-details-marker]:hidden">
12
- {viewer.picture ? (
13
- <img
14
- alt=""
15
- className="size-9 rounded-full object-cover"
16
- referrerPolicy="no-referrer"
17
- src={viewer.picture}
18
- />
19
- ) : (
20
- <span
21
- aria-hidden="true"
22
- className="grid size-9 place-items-center rounded-full bg-emerald-950 text-sm font-semibold text-white"
23
- >
24
- {viewer.name.slice(0, 1).toUpperCase()}
25
- </span>
26
- )}
27
- <span className="max-w-48 truncate text-sm font-medium">{viewer.name}</span>
28
- </summary>
29
- <nav className="absolute right-0 mt-2 w-40 rounded-md border border-stone-200 bg-white py-1 shadow-lg">
30
- <a
31
- className="block px-4 py-2 text-sm font-medium text-neutral-700 hover:bg-stone-100 focus:bg-stone-100 focus:outline-none"
32
- href={logoutUrl}
8
+ const ViewerMenu = ({ logoutUrl, viewer }: ViewerMenuProps): React.ReactNode => (
9
+ <details className="group relative">
10
+ <summary className="flex cursor-pointer list-none items-center gap-3 rounded-md px-2 py-1.5 hover:bg-stone-100 focus:outline-none focus:ring-2 focus:ring-emerald-900 focus:ring-offset-2 [&::-webkit-details-marker]:hidden">
11
+ {viewer.picture ? (
12
+ <img
13
+ alt=""
14
+ className="size-9 rounded-full object-cover"
15
+ referrerPolicy="no-referrer"
16
+ src={viewer.picture}
17
+ />
18
+ ) : (
19
+ <span
20
+ aria-hidden="true"
21
+ className="grid size-9 place-items-center rounded-full bg-emerald-950 text-sm font-semibold text-white"
33
22
  >
34
- Logout
35
- </a>
36
- </nav>
37
- </details>
38
- );
39
- }
23
+ {viewer.name.slice(0, 1).toUpperCase()}
24
+ </span>
25
+ )}
26
+ <span className="max-w-48 truncate text-sm font-medium">{viewer.name}</span>
27
+ </summary>
28
+ <nav className="absolute right-0 mt-2 w-40 rounded-md border border-stone-200 bg-white py-1 shadow-lg">
29
+ <a
30
+ className="block px-4 py-2 text-sm font-medium text-neutral-700 hover:bg-stone-100 focus:bg-stone-100 focus:outline-none"
31
+ href={logoutUrl}
32
+ >
33
+ Logout
34
+ </a>
35
+ </nav>
36
+ </details>
37
+ );
38
+
39
+ export default ViewerMenu;