zudoku 0.66.0 → 0.66.2

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.
Files changed (105) hide show
  1. package/dist/config/validators/validate.d.ts +0 -2
  2. package/dist/config/validators/validate.js +0 -1
  3. package/dist/config/validators/validate.js.map +1 -1
  4. package/dist/flat-config.d.ts +1 -1
  5. package/dist/lib/authentication/ui/ZudokuAuthUi.js +5 -1
  6. package/dist/lib/authentication/ui/ZudokuAuthUi.js.map +1 -1
  7. package/dist/vite/config.js +1 -4
  8. package/dist/vite/config.js.map +1 -1
  9. package/lib/ActionButton-DUgvSylL.js +25 -0
  10. package/lib/ActionButton-DUgvSylL.js.map +1 -0
  11. package/lib/{ClaudeLogo-PxFjou9w.js → ClaudeLogo-CGRfGTk2.js} +2 -2
  12. package/lib/{ClaudeLogo-PxFjou9w.js.map → ClaudeLogo-CGRfGTk2.js.map} +1 -1
  13. package/lib/Drawer-Ci7XwhqT.js.map +1 -1
  14. package/lib/{ErrorAlert-BqjbNHIn.js → ErrorAlert-BUlG32M9.js} +6 -6
  15. package/lib/{ErrorAlert-BqjbNHIn.js.map → ErrorAlert-BUlG32M9.js.map} +1 -1
  16. package/lib/{MdxPage-CVFatbHw.js → MdxPage-Bjf72BP3.js} +7 -7
  17. package/lib/{MdxPage-CVFatbHw.js.map → MdxPage-Bjf72BP3.js.map} +1 -1
  18. package/lib/{Mermaid-CIFixY6C.js → Mermaid-D_VSX7_Q.js} +3 -3
  19. package/lib/{Mermaid-CIFixY6C.js.map → Mermaid-D_VSX7_Q.js.map} +1 -1
  20. package/lib/{OAuthErrorPage-Dup79DJk.js → OAuthErrorPage-1Ekji0PK.js} +6 -6
  21. package/lib/{OAuthErrorPage-Dup79DJk.js.map → OAuthErrorPage-1Ekji0PK.js.map} +1 -1
  22. package/lib/{OasProvider-BJeMq29o.js → OasProvider-BZxmTyMM.js} +3 -3
  23. package/lib/{OasProvider-BJeMq29o.js.map → OasProvider-BZxmTyMM.js.map} +1 -1
  24. package/lib/{OperationList-ff3ZvQsO.js → OperationList-B7nPIFB8.js} +329 -348
  25. package/lib/OperationList-B7nPIFB8.js.map +1 -0
  26. package/lib/{RouteGuard-BXy13JSz.js → RouteGuard-9wjejsKm.js} +3 -3
  27. package/lib/{RouteGuard-BXy13JSz.js.map → RouteGuard-9wjejsKm.js.map} +1 -1
  28. package/lib/{RouterError-CKOZTsDD.js → RouterError-DfTZblpv.js} +2 -2
  29. package/lib/{RouterError-CKOZTsDD.js.map → RouterError-DfTZblpv.js.map} +1 -1
  30. package/lib/{SchemaList-BSC1KM3v.js → SchemaList-16_obkku.js} +7 -7
  31. package/lib/{SchemaList-BSC1KM3v.js.map → SchemaList-16_obkku.js.map} +1 -1
  32. package/lib/{SchemaView-CgwJ9gtb.js → SchemaView-eyvR4bRt.js} +3 -3
  33. package/lib/{SchemaView-CgwJ9gtb.js.map → SchemaView-eyvR4bRt.js.map} +1 -1
  34. package/lib/Select-CkxXP5I7.js +243 -0
  35. package/lib/Select-CkxXP5I7.js.map +1 -0
  36. package/lib/Separator-CTPSeW1S.js +27 -0
  37. package/lib/Separator-CTPSeW1S.js.map +1 -0
  38. package/lib/{SignUp-Pm_LGm6T.js → SignUp-D54_QWFy.js} +3 -3
  39. package/lib/{SignUp-Pm_LGm6T.js.map → SignUp-D54_QWFy.js.map} +1 -1
  40. package/lib/{SyntaxHighlight-bkmst3oV.js → SyntaxHighlight-j_HRSPCU.js} +1508 -1492
  41. package/lib/SyntaxHighlight-j_HRSPCU.js.map +1 -0
  42. package/lib/{Toc-TUXNFbKl.js → Toc-z05x698-.js} +2 -2
  43. package/lib/{Toc-TUXNFbKl.js.map → Toc-z05x698-.js.map} +1 -1
  44. package/lib/{ZudokuContext-np1wheDl.js → ZudokuContext-BXldanA8.js} +5 -5
  45. package/lib/{ZudokuContext-np1wheDl.js.map → ZudokuContext-BXldanA8.js.map} +1 -1
  46. package/lib/chunk-PVWAREVJ-dLIqswPy.js.map +1 -1
  47. package/lib/{circular-XPj_dwqA.js → circular-D5sYCIWL.js} +2 -2
  48. package/lib/{circular-XPj_dwqA.js.map → circular-D5sYCIWL.js.map} +1 -1
  49. package/lib/{createServer-D01nCTNp.js → createServer-BlwU7lIr.js} +4 -4
  50. package/lib/{createServer-D01nCTNp.js.map → createServer-BlwU7lIr.js.map} +1 -1
  51. package/lib/createVariantComponent-B9_dVBvu.js +35 -0
  52. package/lib/createVariantComponent-B9_dVBvu.js.map +1 -0
  53. package/lib/{errors-B0hNTPFO.js → errors-BtC4Kn2j.js} +2 -2
  54. package/lib/{errors-B0hNTPFO.js.map → errors-BtC4Kn2j.js.map} +1 -1
  55. package/lib/firebase-Ibm_tv3G.js +7366 -0
  56. package/lib/firebase-Ibm_tv3G.js.map +1 -0
  57. package/lib/{hook-CvSwcbk6.js → hook-BNxidGQq.js} +2 -2
  58. package/lib/{hook-CvSwcbk6.js.map → hook-BNxidGQq.js.map} +1 -1
  59. package/lib/{index-Bjc_QsUR.js → index-CeVTNcfF.js} +452 -476
  60. package/lib/index-CeVTNcfF.js.map +1 -0
  61. package/lib/index-CrcNWbel.js.map +1 -1
  62. package/lib/{index-DnMgJWrI.js → index-Css56y3F.js} +3 -3
  63. package/lib/{index-DnMgJWrI.js.map → index-Css56y3F.js.map} +1 -1
  64. package/lib/{index-mfkNWYG-.js → index-DSOi7zVM.js} +5 -5
  65. package/lib/{index-mfkNWYG-.js.map → index-DSOi7zVM.js.map} +1 -1
  66. package/lib/{index-DscsS121.js → index-eKVhlB94.js} +2 -2
  67. package/lib/{index-DscsS121.js.map → index-eKVhlB94.js.map} +1 -1
  68. package/lib/index.esm-BYObtETB.js.map +1 -1
  69. package/lib/index.esm-BoKBnRoT.js +32 -0
  70. package/lib/index.esm-BoKBnRoT.js.map +1 -0
  71. package/lib/index.esm-DtzT_KoE.js.map +1 -1
  72. package/lib/jsx-runtime-BzflLqGi.js.map +1 -1
  73. package/lib/{mutation-BlmnL5qL.js → mutation-BoVlx8yA.js} +2 -2
  74. package/lib/{mutation-BlmnL5qL.js.map → mutation-BoVlx8yA.js.map} +1 -1
  75. package/lib/ui/Carousel.js.map +1 -1
  76. package/lib/ui/SyntaxHighlight.js +2 -2
  77. package/lib/useMutation-C6RqWmTS.js +97 -0
  78. package/lib/useMutation-C6RqWmTS.js.map +1 -0
  79. package/lib/zudoku.__internal.js +6 -6
  80. package/lib/zudoku.__internal.js.map +1 -1
  81. package/lib/zudoku.auth-auth0.js +1 -1
  82. package/lib/zudoku.auth-azureb2c.js +4 -4
  83. package/lib/zudoku.auth-clerk.js +2 -2
  84. package/lib/zudoku.auth-firebase.js +9 -0
  85. package/lib/zudoku.auth-firebase.js.map +1 -0
  86. package/lib/zudoku.auth-openid.js +4 -4
  87. package/lib/zudoku.auth-supabase.js +4 -4
  88. package/lib/zudoku.components.js +5 -5
  89. package/lib/zudoku.hooks.js +3 -3
  90. package/lib/zudoku.mermaid.js +3 -3
  91. package/lib/zudoku.plugin-api-catalog.js +4 -4
  92. package/lib/zudoku.plugin-api-keys.js +162 -178
  93. package/lib/zudoku.plugin-api-keys.js.map +1 -1
  94. package/lib/zudoku.plugin-custom-pages.js +1 -1
  95. package/lib/zudoku.plugin-markdown.js +1 -1
  96. package/lib/zudoku.plugin-openapi.js +2 -2
  97. package/lib/zudoku.plugin-search-pagefind.js +2 -2
  98. package/lib/zudoku.router.js.map +1 -1
  99. package/package.json +19 -15
  100. package/src/lib/authentication/ui/ZudokuAuthUi.tsx +11 -1
  101. package/lib/OperationList-ff3ZvQsO.js.map +0 -1
  102. package/lib/Select-VmDZ-nKe.js +0 -337
  103. package/lib/Select-VmDZ-nKe.js.map +0 -1
  104. package/lib/SyntaxHighlight-bkmst3oV.js.map +0 -1
  105. package/lib/index-Bjc_QsUR.js.map +0 -1
@@ -0,0 +1,243 @@
1
+ import { j as e } from "./jsx-runtime-BzflLqGi.js";
2
+ import { EyeOffIcon as z, EyeIcon as w, CheckIcon as u, CopyIcon as S, ChevronDownIcon as m, ChevronUpIcon as N } from "lucide-react";
3
+ import { useState as I } from "react";
4
+ import { c as r } from "./cn-dYga0KKN.js";
5
+ import { u as k } from "./useCopyToClipboard-B_085nfO.js";
6
+ import { Button as c } from "./ui/Button.js";
7
+ import * as o from "@radix-ui/react-select";
8
+ import { cn as l } from "./ui/util.js";
9
+ const _ = ({
10
+ secret: t,
11
+ revealed: a = !1,
12
+ previewChars: s = 5,
13
+ className: n
14
+ }) => /* @__PURE__ */ e.jsxs("span", { className: r("w-full truncate", n), children: [
15
+ /* @__PURE__ */ e.jsx(
16
+ "div",
17
+ {
18
+ className: r(
19
+ "w-40 inline-block md:w-fit",
20
+ a ? "" : "opacity-50"
21
+ ),
22
+ children: a ? t.slice(0, s === 0 ? t.length : -s) : "•••• ".repeat(
23
+ t.slice(
24
+ 0,
25
+ s === 0 ? t.length : -s
26
+ ).length / 5
27
+ ) + "•".repeat(
28
+ t.slice(
29
+ 0,
30
+ s === 0 ? t.length : -s
31
+ ).length % 5
32
+ )
33
+ }
34
+ ),
35
+ s > 0 && /* @__PURE__ */ e.jsx("span", { children: t.slice(-s) })
36
+ ] }), P = ({
37
+ secret: t,
38
+ preview: a = 5,
39
+ className: s,
40
+ status: n,
41
+ onCopy: i,
42
+ revealed: p,
43
+ onReveal: x,
44
+ noReveal: f
45
+ }) => {
46
+ const g = Math.abs(a), [h, v] = I(!1), [j, b] = k(), d = p ?? h;
47
+ return /* @__PURE__ */ e.jsxs(
48
+ "div",
49
+ {
50
+ className: r(
51
+ "flex gap-2 items-center text-sm border rounded-md px-1",
52
+ s
53
+ ),
54
+ children: [
55
+ /* @__PURE__ */ e.jsxs("div", { className: "font-mono w-full h-9 items-center flex px-2 text-xs gap-2", children: [
56
+ n && /* @__PURE__ */ e.jsx(
57
+ "div",
58
+ {
59
+ className: r(
60
+ "rounded-full shrink-0 w-2 h-2 mr-2",
61
+ n === "active" && "bg-emerald-400",
62
+ n === "expired" && "bg-neutral-200",
63
+ n === "expiring" && "bg-yellow-400",
64
+ n === "revoked" && "bg-red-400",
65
+ n === "none" && "opacity-0"
66
+ )
67
+ }
68
+ ),
69
+ /* @__PURE__ */ e.jsx(
70
+ _,
71
+ {
72
+ secret: t,
73
+ revealed: d,
74
+ previewChars: g
75
+ }
76
+ )
77
+ ] }),
78
+ f !== !0 && /* @__PURE__ */ e.jsx(
79
+ c,
80
+ {
81
+ variant: "ghost",
82
+ onClick: () => {
83
+ v((y) => !y), x?.(!d);
84
+ },
85
+ size: "icon",
86
+ children: d ? /* @__PURE__ */ e.jsx(z, { size: 16 }) : /* @__PURE__ */ e.jsx(w, { size: 16 })
87
+ }
88
+ ),
89
+ /* @__PURE__ */ e.jsx(
90
+ c,
91
+ {
92
+ variant: "ghost",
93
+ onClick: () => {
94
+ b(t), i?.(t);
95
+ },
96
+ size: "icon",
97
+ children: j ? /* @__PURE__ */ e.jsx(u, { size: 16 }) : /* @__PURE__ */ e.jsx(S, { size: 16 })
98
+ }
99
+ )
100
+ ]
101
+ }
102
+ );
103
+ };
104
+ function M({
105
+ ...t
106
+ }) {
107
+ return /* @__PURE__ */ e.jsx(o.Root, { "data-slot": "select", ...t });
108
+ }
109
+ function O({
110
+ ...t
111
+ }) {
112
+ return /* @__PURE__ */ e.jsx(o.Group, { "data-slot": "select-group", ...t });
113
+ }
114
+ function $({
115
+ ...t
116
+ }) {
117
+ return /* @__PURE__ */ e.jsx(o.Value, { "data-slot": "select-value", ...t });
118
+ }
119
+ function q({
120
+ className: t,
121
+ size: a = "default",
122
+ children: s,
123
+ ...n
124
+ }) {
125
+ return /* @__PURE__ */ e.jsxs(
126
+ o.Trigger,
127
+ {
128
+ "data-slot": "select-trigger",
129
+ "data-size": a,
130
+ className: l(
131
+ "border-input data-placeholder:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
132
+ t
133
+ ),
134
+ ...n,
135
+ children: [
136
+ s,
137
+ /* @__PURE__ */ e.jsx(o.Icon, { asChild: !0, children: /* @__PURE__ */ e.jsx(m, { className: "size-4 opacity-50" }) })
138
+ ]
139
+ }
140
+ );
141
+ }
142
+ function A({
143
+ className: t,
144
+ children: a,
145
+ position: s = "popper",
146
+ align: n = "center",
147
+ ...i
148
+ }) {
149
+ return /* @__PURE__ */ e.jsx(o.Portal, { children: /* @__PURE__ */ e.jsxs(
150
+ o.Content,
151
+ {
152
+ "data-slot": "select-content",
153
+ className: l(
154
+ "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-32 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md",
155
+ s === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
156
+ t
157
+ ),
158
+ position: s,
159
+ align: n,
160
+ ...i,
161
+ children: [
162
+ /* @__PURE__ */ e.jsx(C, {}),
163
+ /* @__PURE__ */ e.jsx(
164
+ o.Viewport,
165
+ {
166
+ className: l(
167
+ "p-1",
168
+ s === "popper" && "h-(--radix-select-trigger-height) w-full min-w-(--radix-select-trigger-width) scroll-my-1"
169
+ ),
170
+ children: a
171
+ }
172
+ ),
173
+ /* @__PURE__ */ e.jsx(T, {})
174
+ ]
175
+ }
176
+ ) });
177
+ }
178
+ function F({
179
+ className: t,
180
+ children: a,
181
+ ...s
182
+ }) {
183
+ return /* @__PURE__ */ e.jsxs(
184
+ o.Item,
185
+ {
186
+ "data-slot": "select-item",
187
+ className: l(
188
+ "focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",
189
+ t
190
+ ),
191
+ ...s,
192
+ children: [
193
+ /* @__PURE__ */ e.jsx("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ e.jsx(o.ItemIndicator, { children: /* @__PURE__ */ e.jsx(u, { className: "size-4" }) }) }),
194
+ /* @__PURE__ */ e.jsx(o.ItemText, { children: a })
195
+ ]
196
+ }
197
+ );
198
+ }
199
+ function C({
200
+ className: t,
201
+ ...a
202
+ }) {
203
+ return /* @__PURE__ */ e.jsx(
204
+ o.ScrollUpButton,
205
+ {
206
+ "data-slot": "select-scroll-up-button",
207
+ className: l(
208
+ "flex cursor-default items-center justify-center py-1",
209
+ t
210
+ ),
211
+ ...a,
212
+ children: /* @__PURE__ */ e.jsx(N, { className: "size-4" })
213
+ }
214
+ );
215
+ }
216
+ function T({
217
+ className: t,
218
+ ...a
219
+ }) {
220
+ return /* @__PURE__ */ e.jsx(
221
+ o.ScrollDownButton,
222
+ {
223
+ "data-slot": "select-scroll-down-button",
224
+ className: l(
225
+ "flex cursor-default items-center justify-center py-1",
226
+ t
227
+ ),
228
+ ...a,
229
+ children: /* @__PURE__ */ e.jsx(m, { className: "size-4" })
230
+ }
231
+ );
232
+ }
233
+ export {
234
+ M as S,
235
+ q as a,
236
+ $ as b,
237
+ A as c,
238
+ O as d,
239
+ F as e,
240
+ P as f,
241
+ _ as g
242
+ };
243
+ //# sourceMappingURL=Select-CkxXP5I7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Select-CkxXP5I7.js","sources":["../src/lib/ui/Secret.tsx","../src/lib/ui/Select.tsx"],"sourcesContent":["import { CheckIcon, CopyIcon, EyeIcon, EyeOffIcon } from \"lucide-react\";\nimport { useState } from \"react\";\nimport { cn } from \"../util/cn.js\";\nimport { useCopyToClipboard } from \"../util/useCopyToClipboard.js\";\nimport { Button } from \"./Button.js\";\n\ntype Status = \"active\" | \"expired\" | \"expiring\" | \"revoked\" | \"none\";\n\nexport const SecretText = ({\n secret,\n revealed = false,\n previewChars = 5,\n className,\n}: {\n secret: string;\n revealed?: boolean;\n previewChars?: number;\n className?: string;\n}) => {\n return (\n <span className={cn(\"w-full truncate\", className)}>\n <div\n className={cn(\n \"w-40 inline-block md:w-fit\",\n revealed ? \"\" : \"opacity-50\",\n )}\n >\n {revealed\n ? secret.slice(0, previewChars === 0 ? secret.length : -previewChars)\n : \"•••• \".repeat(\n secret.slice(\n 0,\n previewChars === 0 ? secret.length : -previewChars,\n ).length / 5,\n ) +\n \"•\".repeat(\n secret.slice(\n 0,\n previewChars === 0 ? secret.length : -previewChars,\n ).length % 5,\n )}\n </div>\n {previewChars > 0 && <span>{secret.slice(-previewChars)}</span>}\n </span>\n );\n};\n\nexport const Secret = ({\n secret,\n preview = 5,\n className,\n status,\n onCopy,\n revealed: controlledRevealed,\n onReveal,\n noReveal: disabledReveal,\n}: {\n revealed?: boolean;\n noReveal?: boolean;\n secret: string;\n status?: Status;\n className?: string;\n preview?: number;\n onCopy?: (secret: string) => void;\n onReveal?: (revealed: boolean) => void;\n}) => {\n const previewChars = Math.abs(preview);\n const [isRevealed, setRevealed] = useState(false);\n const [isCopied, copyToClipboard] = useCopyToClipboard();\n\n const revealed = controlledRevealed ?? isRevealed;\n\n return (\n <div\n className={cn(\n \"flex gap-2 items-center text-sm border rounded-md px-1\",\n className,\n )}\n >\n <div className=\"font-mono w-full h-9 items-center flex px-2 text-xs gap-2\">\n {status && (\n <div\n className={cn(\n \"rounded-full shrink-0 w-2 h-2 mr-2\",\n status === \"active\" && \"bg-emerald-400\",\n status === \"expired\" && \"bg-neutral-200\",\n status === \"expiring\" && \"bg-yellow-400\",\n status === \"revoked\" && \"bg-red-400\",\n status === \"none\" && \"opacity-0\",\n )}\n />\n )}\n <SecretText\n secret={secret}\n revealed={revealed}\n previewChars={previewChars}\n />\n </div>\n {disabledReveal !== true && (\n <Button\n variant=\"ghost\"\n onClick={() => {\n setRevealed((prev) => !prev);\n onReveal?.(!revealed);\n }}\n size=\"icon\"\n >\n {revealed ? <EyeOffIcon size={16} /> : <EyeIcon size={16} />}\n </Button>\n )}\n <Button\n variant=\"ghost\"\n onClick={() => {\n copyToClipboard(secret);\n onCopy?.(secret);\n }}\n size=\"icon\"\n >\n {isCopied ? <CheckIcon size={16} /> : <CopyIcon size={16} />}\n </Button>\n </div>\n );\n};\n","import * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\";\nimport type * as React from \"react\";\nimport { cn } from \"./util.js\";\n\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />;\n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />;\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />;\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"default\";\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input data-placeholder:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"size-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n );\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"popper\",\n align = \"center\",\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-32 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className,\n )}\n position={position}\n align={align}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-(--radix-select-trigger-height) w-full min-w-(--radix-select-trigger-width) scroll-my-1\",\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-2 py-1.5 text-xs\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex size-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-border pointer-events-none -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n"],"names":["SecretText","secret","revealed","previewChars","className","cn","jsx","Secret","preview","status","onCopy","controlledRevealed","onReveal","disabledReveal","isRevealed","setRevealed","useState","isCopied","copyToClipboard","useCopyToClipboard","jsxs","Button","prev","EyeOffIcon","EyeIcon","CheckIcon","CopyIcon","Select","props","SelectPrimitive","SelectGroup","SelectValue","SelectTrigger","size","children","ChevronDownIcon","SelectContent","position","align","SelectScrollUpButton","SelectScrollDownButton","SelectItem","ChevronUpIcon"],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { j as i } from "./jsx-runtime-BzflLqGi.js";
2
+ import * as n from "@radix-ui/react-separator";
3
+ import { c as e } from "./cn-dYga0KKN.js";
4
+ function p({
5
+ className: t,
6
+ orientation: a = "horizontal",
7
+ decorative: o = !0,
8
+ ...r
9
+ }) {
10
+ return /* @__PURE__ */ i.jsx(
11
+ n.Root,
12
+ {
13
+ "data-slot": "separator",
14
+ decorative: o,
15
+ orientation: a,
16
+ className: e(
17
+ "bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",
18
+ t
19
+ ),
20
+ ...r
21
+ }
22
+ );
23
+ }
24
+ export {
25
+ p as S
26
+ };
27
+ //# sourceMappingURL=Separator-CTPSeW1S.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Separator-CTPSeW1S.js","sources":["../src/lib/ui/Separator.tsx"],"sourcesContent":["import * as SeparatorPrimitive from \"@radix-ui/react-separator\";\nimport type * as React from \"react\";\nimport { cn } from \"../util/cn.js\";\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Separator };\n"],"names":["Separator","className","orientation","decorative","props","jsx","SeparatorPrimitive","cn"],"mappings":";;;AAIA,SAASA,EAAU;AAAA,EACjB,WAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,YAAAC,IAAa;AAAA,EACb,GAAGC;AACL,GAAyD;AACvD,SACEC,gBAAAA,EAAAA;AAAAA,IAACC,EAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,YAAAH;AAAA,MACA,aAAAD;AAAA,MACA,WAAWK;AAAA,QACT;AAAA,QACAN;AAAA,MAAA;AAAA,MAED,GAAGG;AAAA,IAAA;AAAA,EAAA;AAGV;"}
@@ -1,9 +1,9 @@
1
1
  import { j as e } from "./jsx-runtime-BzflLqGi.js";
2
2
  import { useEffect as t } from "react";
3
3
  import { b as m } from "./chunk-PVWAREVJ-dLIqswPy.js";
4
- import { S as x, B as o, L as h } from "./index-mfkNWYG-.js";
4
+ import { S as x, B as o, L as h } from "./index-DSOi7zVM.js";
5
5
  import { C as c, a, b as l, c as d, d as u } from "./Card-KFniaZn5.js";
6
- import { u as i } from "./hook-CvSwcbk6.js";
6
+ import { u as i } from "./hook-BNxidGQq.js";
7
7
  import { u as p } from "./useLatest-hmRS46UF.js";
8
8
  const b = () => {
9
9
  const s = i(), [r] = m(), n = r.get("redirect") ?? void 0;
@@ -47,4 +47,4 @@ export {
47
47
  b as a,
48
48
  w as b
49
49
  };
50
- //# sourceMappingURL=SignUp-Pm_LGm6T.js.map
50
+ //# sourceMappingURL=SignUp-D54_QWFy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SignUp-Pm_LGm6T.js","sources":["../src/lib/authentication/components/SignIn.tsx","../src/lib/authentication/components/SignOut.tsx","../src/lib/authentication/components/SignUp.tsx"],"sourcesContent":["import { useEffect } from \"react\";\nimport { useSearchParams } from \"react-router\";\nimport { Spinner } from \"zudoku/components\";\nimport {\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"zudoku/ui/Card.js\";\nimport { useAuth } from \"../hook.js\";\n\nexport const SignIn = () => {\n const auth = useAuth();\n const [search] = useSearchParams();\n const redirectTo = search.get(\"redirect\") ?? undefined;\n\n useEffect(() => {\n void auth.login({\n redirectTo,\n replace: true,\n });\n }, [auth, redirectTo]);\n\n return (\n <div className=\"flex items-center justify-center mt-8\">\n <Card className=\"max-w-md w-full\">\n <CardHeader>\n <CardTitle className=\"text-lg\">Sign in</CardTitle>\n <CardDescription>\n You're being redirected to our secure login provider to complete\n your sign-in process.\n </CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"flex items-center text-sm font-medium gap-2\">\n <Spinner /> Redirecting...\n </div>\n </CardContent>\n </Card>\n </div>\n );\n};\n","import { useEffect } from \"react\";\nimport { useLatest } from \"../../util/useLatest.js\";\nimport { useAuth } from \"../hook.js\";\n\nexport const SignOut = () => {\n const auth = useAuth();\n\n const logout = useLatest(auth.logout);\n\n useEffect(() => {\n void logout.current();\n }, [logout]);\n\n return null;\n};\n","import { useEffect } from \"react\";\nimport { Button, Link } from \"zudoku/components\";\nimport {\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"zudoku/ui/Card.js\";\nimport { useAuth } from \"../hook.js\";\n\nexport const SignUp = () => {\n const auth = useAuth();\n\n useEffect(() => {\n void auth.signup();\n }, [auth]);\n\n return (\n <div className=\"flex items-center justify-center mt-8\">\n <Card className=\"max-w-md w-full\">\n <CardHeader>\n <CardTitle className=\"text-lg\">Sign up</CardTitle>\n <CardDescription>\n You're being redirected to our secure login provider to complete\n your sign up process.\n </CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"flex flex-col gap-2 justify-center\">\n <Button onClick={() => auth.signup()} variant=\"default\">\n Register\n </Button>\n <Button variant=\"link\" className=\"text-muted-foreground\" asChild>\n <Link to=\"/\">Go home</Link>\n </Button>\n </div>\n </CardContent>\n </Card>\n </div>\n );\n};\n"],"names":["SignIn","auth","useAuth","search","useSearchParams","redirectTo","useEffect","jsxs","Card","CardHeader","jsx","CardTitle","CardDescription","CardContent","Spinner","SignOut","logout","useLatest","SignUp","Button","Link"],"mappings":";;;;;;;AAYO,MAAMA,IAAS,MAAM;AAC1B,QAAMC,IAAOC,EAAA,GACP,CAACC,CAAM,IAAIC,EAAA,GACXC,IAAaF,EAAO,IAAI,UAAU,KAAK;AAE7C,SAAAG,EAAU,MAAM;AACd,IAAKL,EAAK,MAAM;AAAA,MACd,YAAAI;AAAA,MACA,SAAS;AAAA,IAAA,CACV;AAAA,EACH,GAAG,CAACJ,GAAMI,CAAU,CAAC,yBAGlB,OAAA,EAAI,WAAU,yCACb,UAAAE,gBAAAA,EAAAA,KAACC,GAAA,EAAK,WAAU,mBACd,UAAA;AAAA,IAAAD,gBAAAA,OAACE,GAAA,EACC,UAAA;AAAA,MAAAC,gBAAAA,EAAAA,IAACC,GAAA,EAAU,WAAU,WAAU,UAAA,WAAO;AAAA,MACtCD,gBAAAA,EAAAA,IAACE,KAAgB,UAAA,yFAAA,CAGjB;AAAA,IAAA,GACF;AAAA,IACAF,gBAAAA,MAACG,GAAA,EACC,UAAAN,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,+CACb,UAAA;AAAA,MAAAG,gBAAAA,EAAAA,IAACI,GAAA,EAAQ;AAAA,MAAE;AAAA,IAAA,EAAA,CACb,EAAA,CACF;AAAA,EAAA,EAAA,CACF,EAAA,CACF;AAEJ,GCtCaC,IAAU,MAAM;AAC3B,QAAMd,IAAOC,EAAA,GAEPc,IAASC,EAAUhB,EAAK,MAAM;AAEpC,SAAAK,EAAU,MAAM;AACd,IAAKU,EAAO,QAAA;AAAA,EACd,GAAG,CAACA,CAAM,CAAC,GAEJ;AACT,GCHaE,IAAS,MAAM;AAC1B,QAAMjB,IAAOC,EAAA;AAEb,SAAAI,EAAU,MAAM;AACd,IAAKL,EAAK,OAAA;AAAA,EACZ,GAAG,CAACA,CAAI,CAAC,yBAGN,OAAA,EAAI,WAAU,yCACb,UAAAM,gBAAAA,EAAAA,KAACC,GAAA,EAAK,WAAU,mBACd,UAAA;AAAA,IAAAD,gBAAAA,OAACE,GAAA,EACC,UAAA;AAAA,MAAAC,gBAAAA,EAAAA,IAACC,GAAA,EAAU,WAAU,WAAU,UAAA,WAAO;AAAA,MACtCD,gBAAAA,EAAAA,IAACE,KAAgB,UAAA,yFAAA,CAGjB;AAAA,IAAA,GACF;AAAA,IACAF,gBAAAA,MAACG,GAAA,EACC,UAAAN,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,sCACb,UAAA;AAAA,MAAAG,gBAAAA,EAAAA,IAACS,GAAA,EAAO,SAAS,MAAMlB,EAAK,UAAU,SAAQ,WAAU,UAAA,WAAA,CAExD;AAAA,MACAS,gBAAAA,EAAAA,IAACS,GAAA,EAAO,SAAQ,QAAO,WAAU,yBAAwB,SAAO,IAC9D,UAAAT,gBAAAA,EAAAA,IAACU,GAAA,EAAK,IAAG,KAAI,qBAAO,EAAA,CACtB;AAAA,IAAA,EAAA,CACF,EAAA,CACF;AAAA,EAAA,EAAA,CACF,EAAA,CACF;AAEJ;"}
1
+ {"version":3,"file":"SignUp-D54_QWFy.js","sources":["../src/lib/authentication/components/SignIn.tsx","../src/lib/authentication/components/SignOut.tsx","../src/lib/authentication/components/SignUp.tsx"],"sourcesContent":["import { useEffect } from \"react\";\nimport { useSearchParams } from \"react-router\";\nimport { Spinner } from \"zudoku/components\";\nimport {\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"zudoku/ui/Card.js\";\nimport { useAuth } from \"../hook.js\";\n\nexport const SignIn = () => {\n const auth = useAuth();\n const [search] = useSearchParams();\n const redirectTo = search.get(\"redirect\") ?? undefined;\n\n useEffect(() => {\n void auth.login({\n redirectTo,\n replace: true,\n });\n }, [auth, redirectTo]);\n\n return (\n <div className=\"flex items-center justify-center mt-8\">\n <Card className=\"max-w-md w-full\">\n <CardHeader>\n <CardTitle className=\"text-lg\">Sign in</CardTitle>\n <CardDescription>\n You're being redirected to our secure login provider to complete\n your sign-in process.\n </CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"flex items-center text-sm font-medium gap-2\">\n <Spinner /> Redirecting...\n </div>\n </CardContent>\n </Card>\n </div>\n );\n};\n","import { useEffect } from \"react\";\nimport { useLatest } from \"../../util/useLatest.js\";\nimport { useAuth } from \"../hook.js\";\n\nexport const SignOut = () => {\n const auth = useAuth();\n\n const logout = useLatest(auth.logout);\n\n useEffect(() => {\n void logout.current();\n }, [logout]);\n\n return null;\n};\n","import { useEffect } from \"react\";\nimport { Button, Link } from \"zudoku/components\";\nimport {\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"zudoku/ui/Card.js\";\nimport { useAuth } from \"../hook.js\";\n\nexport const SignUp = () => {\n const auth = useAuth();\n\n useEffect(() => {\n void auth.signup();\n }, [auth]);\n\n return (\n <div className=\"flex items-center justify-center mt-8\">\n <Card className=\"max-w-md w-full\">\n <CardHeader>\n <CardTitle className=\"text-lg\">Sign up</CardTitle>\n <CardDescription>\n You're being redirected to our secure login provider to complete\n your sign up process.\n </CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"flex flex-col gap-2 justify-center\">\n <Button onClick={() => auth.signup()} variant=\"default\">\n Register\n </Button>\n <Button variant=\"link\" className=\"text-muted-foreground\" asChild>\n <Link to=\"/\">Go home</Link>\n </Button>\n </div>\n </CardContent>\n </Card>\n </div>\n );\n};\n"],"names":["SignIn","auth","useAuth","search","useSearchParams","redirectTo","useEffect","jsxs","Card","CardHeader","jsx","CardTitle","CardDescription","CardContent","Spinner","SignOut","logout","useLatest","SignUp","Button","Link"],"mappings":";;;;;;;AAYO,MAAMA,IAAS,MAAM;AAC1B,QAAMC,IAAOC,EAAA,GACP,CAACC,CAAM,IAAIC,EAAA,GACXC,IAAaF,EAAO,IAAI,UAAU,KAAK;AAE7C,SAAAG,EAAU,MAAM;AACd,IAAKL,EAAK,MAAM;AAAA,MACd,YAAAI;AAAA,MACA,SAAS;AAAA,IAAA,CACV;AAAA,EACH,GAAG,CAACJ,GAAMI,CAAU,CAAC,yBAGlB,OAAA,EAAI,WAAU,yCACb,UAAAE,gBAAAA,EAAAA,KAACC,GAAA,EAAK,WAAU,mBACd,UAAA;AAAA,IAAAD,gBAAAA,OAACE,GAAA,EACC,UAAA;AAAA,MAAAC,gBAAAA,EAAAA,IAACC,GAAA,EAAU,WAAU,WAAU,UAAA,WAAO;AAAA,MACtCD,gBAAAA,EAAAA,IAACE,KAAgB,UAAA,yFAAA,CAGjB;AAAA,IAAA,GACF;AAAA,IACAF,gBAAAA,MAACG,GAAA,EACC,UAAAN,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,+CACb,UAAA;AAAA,MAAAG,gBAAAA,EAAAA,IAACI,GAAA,EAAQ;AAAA,MAAE;AAAA,IAAA,EAAA,CACb,EAAA,CACF;AAAA,EAAA,EAAA,CACF,EAAA,CACF;AAEJ,GCtCaC,IAAU,MAAM;AAC3B,QAAMd,IAAOC,EAAA,GAEPc,IAASC,EAAUhB,EAAK,MAAM;AAEpC,SAAAK,EAAU,MAAM;AACd,IAAKU,EAAO,QAAA;AAAA,EACd,GAAG,CAACA,CAAM,CAAC,GAEJ;AACT,GCHaE,IAAS,MAAM;AAC1B,QAAMjB,IAAOC,EAAA;AAEb,SAAAI,EAAU,MAAM;AACd,IAAKL,EAAK,OAAA;AAAA,EACZ,GAAG,CAACA,CAAI,CAAC,yBAGN,OAAA,EAAI,WAAU,yCACb,UAAAM,gBAAAA,EAAAA,KAACC,GAAA,EAAK,WAAU,mBACd,UAAA;AAAA,IAAAD,gBAAAA,OAACE,GAAA,EACC,UAAA;AAAA,MAAAC,gBAAAA,EAAAA,IAACC,GAAA,EAAU,WAAU,WAAU,UAAA,WAAO;AAAA,MACtCD,gBAAAA,EAAAA,IAACE,KAAgB,UAAA,yFAAA,CAGjB;AAAA,IAAA,GACF;AAAA,IACAF,gBAAAA,MAACG,GAAA,EACC,UAAAN,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,sCACb,UAAA;AAAA,MAAAG,gBAAAA,EAAAA,IAACS,GAAA,EAAO,SAAS,MAAMlB,EAAK,UAAU,SAAQ,WAAU,UAAA,WAAA,CAExD;AAAA,MACAS,gBAAAA,EAAAA,IAACS,GAAA,EAAO,SAAQ,QAAO,WAAU,yBAAwB,SAAO,IAC9D,UAAAT,gBAAAA,EAAAA,IAACU,GAAA,EAAK,IAAG,KAAI,qBAAO,EAAA,CACtB;AAAA,IAAA,EAAA,CACF,EAAA,CACF;AAAA,EAAA,EAAA,CACF,EAAA,CACF;AAEJ;"}