@aiquants/auth-react-router 0.7.0 → 0.7.3
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/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/client.ts","../src/client/GoogleForm.tsx"],"sourcesContent":["/**\n * @aiquants/auth-react-router/client — client-side auth components barrel.\n * クライアントサイド認証コンポーネントのバレル。\n */\nexport type { GoogleFormProps } from \"./client/GoogleForm\"\nexport { GoogleForm } from \"./client/GoogleForm\"\n","/**\n * @module GoogleForm\n * @description Google sign-in form button (tailwind-variants styled).\n * Google サインインフォームボタン (tailwind-variants スタイル)。\n *\n * 原本 (quants-react-router components/elements/GoogleForm.tsx) を挙動保存で移植。\n * ラベル・action 値は props 化し、既定値は原本と同一 (\"Sign In with Google\")。\n */\nimport { FaGoogle } from \"react-icons/fa\"\nimport { Form } from \"react-router\"\nimport { tv } from \"tailwind-variants\"\n\nconst googleFormStyles = tv({\n slots: {\n googleForm: \"my-4\",\n btn: \"w-full flex items-center justify-center gap-3 rounded-2xl bg-gradient-to-r from-blue-500 to-indigo-500 px-6 py-3 text-white font-bold shadow-lg transition-all duration-300 hover:from-blue-600 hover:to-indigo-600 hover:scale-105 focus:outline-none focus:ring-2 focus:ring-blue-300\",\n icon: \"\",\n btnText: \"text-base tracking-wide\",\n },\n})\n\n/** GoogleForm のプロパティ。 */\nexport type GoogleFormProps = {\n /** フォーム action の値 (loginAction の switch と一致させる)。既定 \"Sign In with Google\"。 */\n actionValue?: string\n /** ボタンの表示ラベル。既定 \"Sign in with Google\"。 */\n label?: string\n}\n\n/**\n * Renders the Google sign-in form (POST with `_action`).\n * Google サインインフォーム (`_action` 付き POST) を描画する。\n */\nexport const GoogleForm = ({ actionValue = \"Sign In with Google\", label = \"Sign in with Google\" }: GoogleFormProps = {}) => {\n const { googleForm, btn, icon: _icon, btnText } = googleFormStyles()\n return (\n <Form method=\"POST\" className={googleForm()}>\n <button type=\"submit\" name=\"_action\" value={actionValue} className={btn()}>\n <FaGoogle size={24} className=\"text-white drop-shadow\" />\n <span className={btnText()}>{label}</span>\n </button>\n </Form>\n )\n}\n"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,gBAAAE,IAAA,eAAAC,EAAAH,
|
|
1
|
+
{"version":3,"sources":["../src/client.ts","../src/client/GoogleForm.tsx"],"sourcesContent":["/**\n * @aiquants/auth-react-router/client — client-side auth components barrel.\n * クライアントサイド認証コンポーネントのバレル。\n */\nexport type { GoogleFormProps } from \"./client/GoogleForm\"\nexport { GoogleForm } from \"./client/GoogleForm\"\n","/**\n * @module GoogleForm\n * @description Google sign-in form button (tailwind-variants styled).\n * Google サインインフォームボタン (tailwind-variants スタイル)。\n *\n * 原本 (quants-react-router components/elements/GoogleForm.tsx) を挙動保存で移植。\n * ラベル・action 値は props 化し、既定値は原本と同一 (\"Sign In with Google\")。\n */\n// react-icons はコレクション単位の exports キー (\"./fa\" など) だけを公開しており、ワイルドカードを持たない。\n// `react-icons/fa/index.js` は実ファイルが存在しても exports マップに無いため、TypeScript (bundler/nodenext)・\n// Node ESM・esbuild/Vite の全てが解決を拒否する。この指定子に拡張子を足してはならない (#2044 の再発防止)。\nimport { FaGoogle } from \"react-icons/fa\"\nimport { Form } from \"react-router\"\nimport { tv } from \"tailwind-variants\"\n\nconst googleFormStyles = tv({\n slots: {\n googleForm: \"my-4\",\n btn: \"w-full flex items-center justify-center gap-3 rounded-2xl bg-gradient-to-r from-blue-500 to-indigo-500 px-6 py-3 text-white font-bold shadow-lg transition-all duration-300 hover:from-blue-600 hover:to-indigo-600 hover:scale-105 focus:outline-none focus:ring-2 focus:ring-blue-300\",\n icon: \"\",\n btnText: \"text-base tracking-wide\",\n },\n})\n\n/** GoogleForm のプロパティ。 */\nexport type GoogleFormProps = {\n /** フォーム action の値 (loginAction の switch と一致させる)。既定 \"Sign In with Google\"。 */\n actionValue?: string\n /** ボタンの表示ラベル。既定 \"Sign in with Google\"。 */\n label?: string\n}\n\n/**\n * Renders the Google sign-in form (POST with `_action`).\n * Google サインインフォーム (`_action` 付き POST) を描画する。\n */\nexport const GoogleForm = ({ actionValue = \"Sign In with Google\", label = \"Sign in with Google\" }: GoogleFormProps = {}) => {\n const { googleForm, btn, icon: _icon, btnText } = googleFormStyles()\n return (\n <Form method=\"POST\" className={googleForm()}>\n <button type=\"submit\" name=\"_action\" value={actionValue} className={btn()}>\n <FaGoogle size={24} className=\"text-white drop-shadow\" />\n <span className={btnText()}>{label}</span>\n </button>\n </Form>\n )\n}\n"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,gBAAAE,IAAA,eAAAC,EAAAH,GCWA,IAAAI,EAAyB,0BACzBC,EAAqB,wBACrBC,EAAmB,6BA2BPC,EAAA,6BAzBNC,KAAmB,MAAG,CACxB,MAAO,CACH,WAAY,OACZ,IAAK,0RACL,KAAM,GACN,QAAS,yBACb,CACJ,CAAC,EAcYC,EAAa,CAAC,CAAE,YAAAC,EAAc,sBAAuB,MAAAC,EAAQ,qBAAsB,EAAqB,CAAC,IAAM,CACxH,GAAM,CAAE,WAAAC,EAAY,IAAAC,EAAK,KAAMC,EAAO,QAAAC,CAAQ,EAAIP,EAAiB,EACnE,SACI,OAAC,QAAK,OAAO,OAAO,UAAWI,EAAW,EACtC,oBAAC,UAAO,KAAK,SAAS,KAAK,UAAU,MAAOF,EAAa,UAAWG,EAAI,EACpE,oBAAC,YAAS,KAAM,GAAI,UAAU,yBAAyB,KACvD,OAAC,QAAK,UAAWE,EAAQ,EAAI,SAAAJ,EAAM,GACvC,EACJ,CAER","names":["client_exports","__export","GoogleForm","__toCommonJS","import_fa","import_react_router","import_tailwind_variants","import_jsx_runtime","googleFormStyles","GoogleForm","actionValue","label","googleForm","btn","_icon","btnText"]}
|
package/dist/client.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/client/GoogleForm.tsx"],"sourcesContent":["/**\n * @module GoogleForm\n * @description Google sign-in form button (tailwind-variants styled).\n * Google サインインフォームボタン (tailwind-variants スタイル)。\n *\n * 原本 (quants-react-router components/elements/GoogleForm.tsx) を挙動保存で移植。\n * ラベル・action 値は props 化し、既定値は原本と同一 (\"Sign In with Google\")。\n */\nimport { FaGoogle } from \"react-icons/fa\"\nimport { Form } from \"react-router\"\nimport { tv } from \"tailwind-variants\"\n\nconst googleFormStyles = tv({\n slots: {\n googleForm: \"my-4\",\n btn: \"w-full flex items-center justify-center gap-3 rounded-2xl bg-gradient-to-r from-blue-500 to-indigo-500 px-6 py-3 text-white font-bold shadow-lg transition-all duration-300 hover:from-blue-600 hover:to-indigo-600 hover:scale-105 focus:outline-none focus:ring-2 focus:ring-blue-300\",\n icon: \"\",\n btnText: \"text-base tracking-wide\",\n },\n})\n\n/** GoogleForm のプロパティ。 */\nexport type GoogleFormProps = {\n /** フォーム action の値 (loginAction の switch と一致させる)。既定 \"Sign In with Google\"。 */\n actionValue?: string\n /** ボタンの表示ラベル。既定 \"Sign in with Google\"。 */\n label?: string\n}\n\n/**\n * Renders the Google sign-in form (POST with `_action`).\n * Google サインインフォーム (`_action` 付き POST) を描画する。\n */\nexport const GoogleForm = ({ actionValue = \"Sign In with Google\", label = \"Sign in with Google\" }: GoogleFormProps = {}) => {\n const { googleForm, btn, icon: _icon, btnText } = googleFormStyles()\n return (\n <Form method=\"POST\" className={googleForm()}>\n <button type=\"submit\" name=\"_action\" value={actionValue} className={btn()}>\n <FaGoogle size={24} className=\"text-white drop-shadow\" />\n <span className={btnText()}>{label}</span>\n </button>\n </Form>\n )\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/client/GoogleForm.tsx"],"sourcesContent":["/**\n * @module GoogleForm\n * @description Google sign-in form button (tailwind-variants styled).\n * Google サインインフォームボタン (tailwind-variants スタイル)。\n *\n * 原本 (quants-react-router components/elements/GoogleForm.tsx) を挙動保存で移植。\n * ラベル・action 値は props 化し、既定値は原本と同一 (\"Sign In with Google\")。\n */\n// react-icons はコレクション単位の exports キー (\"./fa\" など) だけを公開しており、ワイルドカードを持たない。\n// `react-icons/fa/index.js` は実ファイルが存在しても exports マップに無いため、TypeScript (bundler/nodenext)・\n// Node ESM・esbuild/Vite の全てが解決を拒否する。この指定子に拡張子を足してはならない (#2044 の再発防止)。\nimport { FaGoogle } from \"react-icons/fa\"\nimport { Form } from \"react-router\"\nimport { tv } from \"tailwind-variants\"\n\nconst googleFormStyles = tv({\n slots: {\n googleForm: \"my-4\",\n btn: \"w-full flex items-center justify-center gap-3 rounded-2xl bg-gradient-to-r from-blue-500 to-indigo-500 px-6 py-3 text-white font-bold shadow-lg transition-all duration-300 hover:from-blue-600 hover:to-indigo-600 hover:scale-105 focus:outline-none focus:ring-2 focus:ring-blue-300\",\n icon: \"\",\n btnText: \"text-base tracking-wide\",\n },\n})\n\n/** GoogleForm のプロパティ。 */\nexport type GoogleFormProps = {\n /** フォーム action の値 (loginAction の switch と一致させる)。既定 \"Sign In with Google\"。 */\n actionValue?: string\n /** ボタンの表示ラベル。既定 \"Sign in with Google\"。 */\n label?: string\n}\n\n/**\n * Renders the Google sign-in form (POST with `_action`).\n * Google サインインフォーム (`_action` 付き POST) を描画する。\n */\nexport const GoogleForm = ({ actionValue = \"Sign In with Google\", label = \"Sign in with Google\" }: GoogleFormProps = {}) => {\n const { googleForm, btn, icon: _icon, btnText } = googleFormStyles()\n return (\n <Form method=\"POST\" className={googleForm()}>\n <button type=\"submit\" name=\"_action\" value={actionValue} className={btn()}>\n <FaGoogle size={24} className=\"text-white drop-shadow\" />\n <span className={btnText()}>{label}</span>\n </button>\n </Form>\n )\n}\n"],"mappings":"AAWA,OAAS,YAAAA,MAAgB,iBACzB,OAAS,QAAAC,MAAY,eACrB,OAAS,MAAAC,MAAU,oBA2BP,OACI,OAAAC,EADJ,QAAAC,MAAA,oBAzBZ,IAAMC,EAAmBH,EAAG,CACxB,MAAO,CACH,WAAY,OACZ,IAAK,0RACL,KAAM,GACN,QAAS,yBACb,CACJ,CAAC,EAcYI,EAAa,CAAC,CAAE,YAAAC,EAAc,sBAAuB,MAAAC,EAAQ,qBAAsB,EAAqB,CAAC,IAAM,CACxH,GAAM,CAAE,WAAAC,EAAY,IAAAC,EAAK,KAAMC,EAAO,QAAAC,CAAQ,EAAIP,EAAiB,EACnE,OACIF,EAACF,EAAA,CAAK,OAAO,OAAO,UAAWQ,EAAW,EACtC,SAAAL,EAAC,UAAO,KAAK,SAAS,KAAK,UAAU,MAAOG,EAAa,UAAWG,EAAI,EACpE,UAAAP,EAACH,EAAA,CAAS,KAAM,GAAI,UAAU,yBAAyB,EACvDG,EAAC,QAAK,UAAWS,EAAQ,EAAI,SAAAJ,EAAM,GACvC,EACJ,CAER","names":["FaGoogle","Form","tv","jsx","jsxs","googleFormStyles","GoogleForm","actionValue","label","googleForm","btn","_icon","btnText"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */
|
|
2
2
|
/*! @aiquants/auth-react-router standalone CSS — 非 Tailwind ホスト専用。ホストの Tailwind ビルドと混在させないこと */
|
|
3
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--color-blue-300:oklch(80.9% .105 251.813);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-indigo-500:oklch(58.5% .233 277.117);--color-indigo-600:oklch(51.1% .262 276.966);--color-white:#fff;--spacing:.25rem;--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--font-weight-bold:700;--tracking-wide:.025em;--radius-2xl:1rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1)}}@layer base,components;@layer utilities{.collapse{visibility:collapse}.fixed{position:fixed}.static{position:static}.my-4{margin-block:calc(var(--spacing) * 4)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.w-full{width:100%}.items-center{align-items:center}.justify-center{justify-content:center}.gap-3{gap:calc(var(--spacing) * 3)}.rounded-2xl{border-radius:var(--radius-2xl)}.border{border-style:var(--tw-border-style);border-width:1px}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-blue-500{--tw-gradient-from:var(--color-blue-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-indigo-500{--tw-gradient-to:var(--color-indigo-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-3{padding-block:calc(var(--spacing) * 3)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.text-white{color:var(--color-white)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a)) drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a) drop-shadow(0 1px 1px #0000000f);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-300{--tw-duration:.3s;transition-duration:.3s}@media (hover:hover){.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:from-blue-600:hover{--tw-gradient-from:var(--color-blue-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:to-indigo-600:hover{--tw-gradient-to:var(--color-indigo-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-blue-300:focus{--tw-ring-color:var(--color-blue-300)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}
|
|
3
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--color-blue-300:oklch(80.9% .105 251.813);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-indigo-500:oklch(58.5% .233 277.117);--color-indigo-600:oklch(51.1% .262 276.966);--color-white:#fff;--spacing:.25rem;--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--font-weight-bold:700;--tracking-wide:.025em;--radius-2xl:1rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1)}}@layer base,components;@layer utilities{.collapse{visibility:collapse}.invisible{visibility:hidden}.fixed{position:fixed}.static{position:static}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.my-4{margin-block:calc(var(--spacing) * 4)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.w-full{width:100%}.items-center{align-items:center}.justify-center{justify-content:center}.gap-3{gap:calc(var(--spacing) * 3)}.rounded-2xl{border-radius:var(--radius-2xl)}.border{border-style:var(--tw-border-style);border-width:1px}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-blue-500{--tw-gradient-from:var(--color-blue-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-indigo-500{--tw-gradient-to:var(--color-indigo-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-3{padding-block:calc(var(--spacing) * 3)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.text-white{color:var(--color-white)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a)) drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a) drop-shadow(0 1px 1px #0000000f);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-300{--tw-duration:.3s;transition-duration:.3s}@media (hover:hover){.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:from-blue-600:hover{--tw-gradient-from:var(--color-blue-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:to-indigo-600:hover{--tw-gradient-to:var(--color-indigo-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-blue-300:focus{--tw-ring-color:var(--color-blue-300)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aiquants/auth-react-router",
|
|
3
|
-
"version": "0.7.
|
|
4
|
-
"description": "React Router v7 auth adapter for @aiquants/auth-core: Google OAuth strategy factory (remix-auth), cookie session storage with DI test backdoor, per-request loader guard with token refresh + photo cache, auth route handlers, and a <GoogleForm> login button.",
|
|
3
|
+
"version": "0.7.3",
|
|
4
|
+
"description": "React Router v7 / v8 auth adapter for @aiquants/auth-core: Google OAuth strategy factory (remix-auth), cookie session storage with DI test backdoor, per-request loader guard with token refresh + photo cache, auth route handlers, and a <GoogleForm> login button.",
|
|
5
5
|
"sideEffects": [
|
|
6
6
|
"**/*.css"
|
|
7
7
|
],
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"jsdom": "^30.0.1",
|
|
60
60
|
"react": "^19.2.7",
|
|
61
61
|
"react-icons": "^5.5.0",
|
|
62
|
-
"react-router": "^
|
|
62
|
+
"react-router": "^8.3.0",
|
|
63
63
|
"remix-auth": "^4.2.0",
|
|
64
64
|
"remix-auth-oauth2": "^3.4.1",
|
|
65
65
|
"rimraf": "^6.1.2",
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
"peerDependencies": {
|
|
73
73
|
"react": ">=18",
|
|
74
74
|
"react-icons": ">=5",
|
|
75
|
-
"react-router": "^7.0.0",
|
|
75
|
+
"react-router": "^7.0.0 || ^8.0.0",
|
|
76
76
|
"remix-auth": "^4.0.0",
|
|
77
77
|
"remix-auth-oauth2": "^3.0.0",
|
|
78
78
|
"@aiquants/auth-core": "^0.2.0"
|
|
@@ -6,6 +6,9 @@
|
|
|
6
6
|
* 原本 (quants-react-router components/elements/GoogleForm.tsx) を挙動保存で移植。
|
|
7
7
|
* ラベル・action 値は props 化し、既定値は原本と同一 ("Sign In with Google")。
|
|
8
8
|
*/
|
|
9
|
+
// react-icons はコレクション単位の exports キー ("./fa" など) だけを公開しており、ワイルドカードを持たない。
|
|
10
|
+
// `react-icons/fa/index.js` は実ファイルが存在しても exports マップに無いため、TypeScript (bundler/nodenext)・
|
|
11
|
+
// Node ESM・esbuild/Vite の全てが解決を拒否する。この指定子に拡張子を足してはならない (#2044 の再発防止)。
|
|
9
12
|
import { FaGoogle } from "react-icons/fa"
|
|
10
13
|
import { Form } from "react-router"
|
|
11
14
|
import { tv } from "tailwind-variants"
|