zudoku 0.66.0 → 0.66.1

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 (93) 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/lib/ActionButton-DUgvSylL.js +25 -0
  8. package/lib/ActionButton-DUgvSylL.js.map +1 -0
  9. package/lib/{ClaudeLogo-PxFjou9w.js → ClaudeLogo-B4Xxt-x_.js} +2 -2
  10. package/lib/{ClaudeLogo-PxFjou9w.js.map → ClaudeLogo-B4Xxt-x_.js.map} +1 -1
  11. package/lib/{ErrorAlert-BqjbNHIn.js → ErrorAlert-DrOR8w3f.js} +6 -6
  12. package/lib/{ErrorAlert-BqjbNHIn.js.map → ErrorAlert-DrOR8w3f.js.map} +1 -1
  13. package/lib/{MdxPage-CVFatbHw.js → MdxPage-BagO2c-n.js} +7 -7
  14. package/lib/{MdxPage-CVFatbHw.js.map → MdxPage-BagO2c-n.js.map} +1 -1
  15. package/lib/{Mermaid-CIFixY6C.js → Mermaid-D_VSX7_Q.js} +3 -3
  16. package/lib/{Mermaid-CIFixY6C.js.map → Mermaid-D_VSX7_Q.js.map} +1 -1
  17. package/lib/{OAuthErrorPage-Dup79DJk.js → OAuthErrorPage-Fq54RLgt.js} +6 -6
  18. package/lib/{OAuthErrorPage-Dup79DJk.js.map → OAuthErrorPage-Fq54RLgt.js.map} +1 -1
  19. package/lib/{OasProvider-BJeMq29o.js → OasProvider-DPH8mwDa.js} +3 -3
  20. package/lib/{OasProvider-BJeMq29o.js.map → OasProvider-DPH8mwDa.js.map} +1 -1
  21. package/lib/{OperationList-ff3ZvQsO.js → OperationList-C0jiEaG5.js} +329 -348
  22. package/lib/OperationList-C0jiEaG5.js.map +1 -0
  23. package/lib/{RouteGuard-BXy13JSz.js → RouteGuard-9wjejsKm.js} +3 -3
  24. package/lib/{RouteGuard-BXy13JSz.js.map → RouteGuard-9wjejsKm.js.map} +1 -1
  25. package/lib/{RouterError-CKOZTsDD.js → RouterError-DSLXagd5.js} +2 -2
  26. package/lib/{RouterError-CKOZTsDD.js.map → RouterError-DSLXagd5.js.map} +1 -1
  27. package/lib/{SchemaList-BSC1KM3v.js → SchemaList-BU0zCHn9.js} +7 -7
  28. package/lib/{SchemaList-BSC1KM3v.js.map → SchemaList-BU0zCHn9.js.map} +1 -1
  29. package/lib/{SchemaView-CgwJ9gtb.js → SchemaView-DVae4RO2.js} +3 -3
  30. package/lib/{SchemaView-CgwJ9gtb.js.map → SchemaView-DVae4RO2.js.map} +1 -1
  31. package/lib/Select-CkxXP5I7.js +243 -0
  32. package/lib/Select-CkxXP5I7.js.map +1 -0
  33. package/lib/Separator-CTPSeW1S.js +27 -0
  34. package/lib/Separator-CTPSeW1S.js.map +1 -0
  35. package/lib/{SignUp-Pm_LGm6T.js → SignUp-BjS4ozA7.js} +3 -3
  36. package/lib/{SignUp-Pm_LGm6T.js.map → SignUp-BjS4ozA7.js.map} +1 -1
  37. package/lib/{SyntaxHighlight-bkmst3oV.js → SyntaxHighlight-Kdyskw3C.js} +2 -2
  38. package/lib/{SyntaxHighlight-bkmst3oV.js.map → SyntaxHighlight-Kdyskw3C.js.map} +1 -1
  39. package/lib/{Toc-TUXNFbKl.js → Toc-DJxFPfcS.js} +2 -2
  40. package/lib/{Toc-TUXNFbKl.js.map → Toc-DJxFPfcS.js.map} +1 -1
  41. package/lib/{ZudokuContext-np1wheDl.js → ZudokuContext-BXldanA8.js} +5 -5
  42. package/lib/{ZudokuContext-np1wheDl.js.map → ZudokuContext-BXldanA8.js.map} +1 -1
  43. package/lib/{circular-XPj_dwqA.js → circular-CzWF1hj5.js} +2 -2
  44. package/lib/{circular-XPj_dwqA.js.map → circular-CzWF1hj5.js.map} +1 -1
  45. package/lib/{createServer-D01nCTNp.js → createServer-BIr2_tGn.js} +4 -4
  46. package/lib/{createServer-D01nCTNp.js.map → createServer-BIr2_tGn.js.map} +1 -1
  47. package/lib/createVariantComponent-B9_dVBvu.js +35 -0
  48. package/lib/createVariantComponent-B9_dVBvu.js.map +1 -0
  49. package/lib/{errors-B0hNTPFO.js → errors-Bs4duWDy.js} +2 -2
  50. package/lib/{errors-B0hNTPFO.js.map → errors-Bs4duWDy.js.map} +1 -1
  51. package/lib/firebase-qUdSEL1p.js +7366 -0
  52. package/lib/firebase-qUdSEL1p.js.map +1 -0
  53. package/lib/{hook-CvSwcbk6.js → hook-BNxidGQq.js} +2 -2
  54. package/lib/{hook-CvSwcbk6.js.map → hook-BNxidGQq.js.map} +1 -1
  55. package/lib/{index-Bjc_QsUR.js → index-0oT9beQN.js} +452 -476
  56. package/lib/index-0oT9beQN.js.map +1 -0
  57. package/lib/{index-DscsS121.js → index-Bh-MffiL.js} +2 -2
  58. package/lib/{index-DscsS121.js.map → index-Bh-MffiL.js.map} +1 -1
  59. package/lib/{index-mfkNWYG-.js → index-CCmMJp02.js} +5 -5
  60. package/lib/{index-mfkNWYG-.js.map → index-CCmMJp02.js.map} +1 -1
  61. package/lib/{index-DnMgJWrI.js → index-Css56y3F.js} +3 -3
  62. package/lib/{index-DnMgJWrI.js.map → index-Css56y3F.js.map} +1 -1
  63. package/lib/index.esm-kW-Utcsi.js +32 -0
  64. package/lib/index.esm-kW-Utcsi.js.map +1 -0
  65. package/lib/{mutation-BlmnL5qL.js → mutation-BoVlx8yA.js} +2 -2
  66. package/lib/{mutation-BlmnL5qL.js.map → mutation-BoVlx8yA.js.map} +1 -1
  67. package/lib/ui/SyntaxHighlight.js +2 -2
  68. package/lib/useMutation-C6RqWmTS.js +97 -0
  69. package/lib/useMutation-C6RqWmTS.js.map +1 -0
  70. package/lib/zudoku.__internal.js +6 -6
  71. package/lib/zudoku.auth-auth0.js +1 -1
  72. package/lib/zudoku.auth-azureb2c.js +4 -4
  73. package/lib/zudoku.auth-clerk.js +2 -2
  74. package/lib/zudoku.auth-firebase.js +9 -0
  75. package/lib/zudoku.auth-firebase.js.map +1 -0
  76. package/lib/zudoku.auth-openid.js +4 -4
  77. package/lib/zudoku.auth-supabase.js +4 -4
  78. package/lib/zudoku.components.js +5 -5
  79. package/lib/zudoku.hooks.js +3 -3
  80. package/lib/zudoku.mermaid.js +3 -3
  81. package/lib/zudoku.plugin-api-catalog.js +4 -4
  82. package/lib/zudoku.plugin-api-keys.js +162 -178
  83. package/lib/zudoku.plugin-api-keys.js.map +1 -1
  84. package/lib/zudoku.plugin-custom-pages.js +1 -1
  85. package/lib/zudoku.plugin-markdown.js +1 -1
  86. package/lib/zudoku.plugin-openapi.js +2 -2
  87. package/lib/zudoku.plugin-search-pagefind.js +2 -2
  88. package/package.json +5 -1
  89. package/src/lib/authentication/ui/ZudokuAuthUi.tsx +11 -1
  90. package/lib/OperationList-ff3ZvQsO.js.map +0 -1
  91. package/lib/Select-VmDZ-nKe.js +0 -337
  92. package/lib/Select-VmDZ-nKe.js.map +0 -1
  93. 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-CCmMJp02.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-BjS4ozA7.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-BjS4ozA7.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,6 +1,6 @@
1
1
  import { j as at } from "./jsx-runtime-BzflLqGi.js";
2
2
  import { createElement as os, Fragment as ss, memo as as } from "react";
3
- import { a as is } from "./ZudokuContext-np1wheDl.js";
3
+ import { a as is } from "./ZudokuContext-BXldanA8.js";
4
4
  import { c as Ir } from "./cn-dYga0KKN.js";
5
5
  import { a as ls, i as us } from "./invariant-CGOLuIIz.js";
6
6
  import { CodeBlock as cs } from "./ui/CodeBlock.js";
@@ -10381,4 +10381,4 @@ export {
10381
10381
  Xr as v,
10382
10382
  ua as z
10383
10383
  };
10384
- //# sourceMappingURL=SyntaxHighlight-bkmst3oV.js.map
10384
+ //# sourceMappingURL=SyntaxHighlight-Kdyskw3C.js.map