@godxjp/ui 9.0.0 → 9.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/dist/app/index.d.ts +1 -1
  2. package/dist/{app.prop-DnIXFzLi.d.ts → app.prop-UTc4j4nj.d.ts} +5 -0
  3. package/dist/aspect-ratio-CZZJd9Km.d.ts +9 -0
  4. package/dist/{chunk-442ULAA6.js → chunk-26WDEDWL.js} +112 -41
  5. package/dist/{chunk-TBXQJCBQ.js → chunk-6HQMUUQW.js} +123 -44
  6. package/dist/{chunk-32ZUUKML.js → chunk-6MCI7W5G.js} +15 -3
  7. package/dist/{chunk-2ACNEQOI.js → chunk-CAEL2ZD2.js} +1 -1
  8. package/dist/{chunk-RSC5K7RP.js → chunk-ETLAI3QU.js} +1 -1
  9. package/dist/chunk-FVPCVZL3.js +270 -0
  10. package/dist/{chunk-Z6HNY2PL.js → chunk-G6Q32VHO.js} +2 -2
  11. package/dist/{chunk-JOLM73YQ.js → chunk-GKXPALFT.js} +1 -1
  12. package/dist/chunk-QWLXN6CT.js +162 -0
  13. package/dist/{chunk-FRU44GA2.js → chunk-XK3M3VRR.js} +16 -2
  14. package/dist/{chunk-6PA2YHRE.js → chunk-XQMPK4GM.js} +0 -15
  15. package/dist/components/admin/index.d.ts +5 -5
  16. package/dist/components/admin/index.js +22 -22
  17. package/dist/components/data-display/card.d.ts +2 -2
  18. package/dist/components/data-display/index.js +2 -2
  19. package/dist/components/data-entry/autocomplete.js +3 -3
  20. package/dist/components/data-entry/cascader.js +1 -1
  21. package/dist/components/data-entry/index.d.ts +1 -1
  22. package/dist/components/data-entry/index.js +13 -13
  23. package/dist/components/data-entry/select.js +3 -3
  24. package/dist/components/data-entry/transfer.js +2 -2
  25. package/dist/components/data-entry/tree-select.js +1 -1
  26. package/dist/components/data-entry/upload.js +4 -4
  27. package/dist/components/feedback/alert.d.ts +2 -2
  28. package/dist/components/feedback/alert.js +2 -2
  29. package/dist/components/feedback/dialog.d.ts +24 -13
  30. package/dist/components/feedback/dialog.js +2 -2
  31. package/dist/components/feedback/index.d.ts +10 -18
  32. package/dist/components/feedback/index.js +6 -6
  33. package/dist/components/layout/index.d.ts +25 -10
  34. package/dist/components/layout/index.js +3 -3
  35. package/dist/components/navigation/index.d.ts +5 -5
  36. package/dist/components/navigation/index.js +6 -6
  37. package/dist/components/navigation/pagination.d.ts +20 -2
  38. package/dist/components/navigation/pagination.js +4 -4
  39. package/dist/components/query/index.js +2 -2
  40. package/dist/components/ui/index.d.ts +10 -7
  41. package/dist/components/ui/index.js +19 -18
  42. package/dist/{feedback.prop-BR5JOpPl.d.ts → feedback.prop-Nc9Aa8SV.d.ts} +1 -3
  43. package/dist/{filter-bar-BycYH10i.d.ts → filter-bar-B5TPUqEO.d.ts} +1 -1
  44. package/dist/index.d.ts +5 -5
  45. package/dist/index.js +27 -27
  46. package/dist/{inline-DCqn4O29.d.ts → inline-CDSVAN54.d.ts} +1 -1
  47. package/dist/{layout.prop-DwJKI6ka.d.ts → layout.prop-JE2TcRyL.d.ts} +8 -2
  48. package/dist/{toggle-group-BulJgKh3.d.ts → password-strength-kQkloEeo.d.ts} +22 -1
  49. package/dist/props/components/index.d.ts +3 -3
  50. package/dist/props/index.d.ts +3 -3
  51. package/dist/props/index.js +1 -1
  52. package/dist/props/registry.d.ts +0 -5
  53. package/dist/props/registry.js +1 -1
  54. package/dist/styles/data-entry-layout.css +71 -0
  55. package/dist/styles/layout.css +48 -0
  56. package/dist/tooltip-Bf2KjRy8.d.ts +14 -0
  57. package/package.json +2 -1
  58. package/dist/aspect-ratio-DGoYrOry.d.ts +0 -6
  59. package/dist/chunk-FYM3MJSK.js +0 -59
  60. package/dist/chunk-P4HFJQID.js +0 -239
  61. package/dist/{chunk-INSF6K3Y.js → chunk-457KVJTX.js} +1 -1
  62. package/dist/{chunk-ZRRLOOBX.js → chunk-E7HBHUJY.js} +1 -1
  63. package/dist/{chunk-GKED65NV.js → chunk-KDBGFJJI.js} +1 -1
  64. package/dist/{chunk-JBHXILI4.js → chunk-S6TBIL7J.js} +1 -1
@@ -0,0 +1,270 @@
1
+ import { Input } from './chunk-VOHTRR5X.js';
2
+ import { buttonVariants, Button } from './chunk-M4PZNAMV.js';
3
+ import { useTranslation } from './chunk-RLGHEV4A.js';
4
+ import { Label } from './chunk-7PWBC4BY.js';
5
+ import { cn } from './chunk-U7N2A7A3.js';
6
+ import * as React from 'react';
7
+ import * as DialogPrimitive from '@radix-ui/react-dialog';
8
+ import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
9
+ import { X } from 'lucide-react';
10
+ import { jsx, jsxs } from 'react/jsx-runtime';
11
+
12
+ function DialogRoot(props) {
13
+ return /* @__PURE__ */ jsx(DialogPrimitive.Root, { "data-slot": "dialog", ...props });
14
+ }
15
+ function DialogTrigger(props) {
16
+ return /* @__PURE__ */ jsx(DialogPrimitive.Trigger, { "data-slot": "dialog-trigger", ...props });
17
+ }
18
+ function DialogPortal(props) {
19
+ return /* @__PURE__ */ jsx(DialogPrimitive.Portal, { "data-slot": "dialog-portal", ...props });
20
+ }
21
+ function DialogClose(props) {
22
+ return /* @__PURE__ */ jsx(DialogPrimitive.Close, { "data-slot": "dialog-close", ...props });
23
+ }
24
+ var DialogOverlay = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
25
+ DialogPrimitive.Overlay,
26
+ {
27
+ ref,
28
+ "data-slot": "dialog-overlay",
29
+ className: cn(
30
+ "ui-dialog-overlay data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0",
31
+ className
32
+ ),
33
+ ...props
34
+ }
35
+ ));
36
+ DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
37
+ var DialogContent = React.forwardRef(({ className, children, showClose, showCloseButton: showCloseButtonProp, ...props }, ref) => {
38
+ const showCloseButton = showCloseButtonProp ?? showClose ?? true;
39
+ return /* @__PURE__ */ jsxs(DialogPortal, { children: [
40
+ /* @__PURE__ */ jsx(DialogOverlay, {}),
41
+ /* @__PURE__ */ jsxs(
42
+ DialogPrimitive.Content,
43
+ {
44
+ ref,
45
+ "data-slot": "dialog-content",
46
+ className: cn(
47
+ "data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 duration-200 outline-none",
48
+ className
49
+ ),
50
+ ...props,
51
+ children: [
52
+ children,
53
+ showCloseButton ? /* @__PURE__ */ jsxs(
54
+ DialogPrimitive.Close,
55
+ {
56
+ "data-slot": "dialog-close",
57
+ className: "ring-offset-background focus:ring-ring transition-opacity focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none",
58
+ children: [
59
+ /* @__PURE__ */ jsx(X, { className: "size-4", "aria-hidden": "true" }),
60
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
61
+ ]
62
+ }
63
+ ) : null
64
+ ]
65
+ }
66
+ )
67
+ ] });
68
+ });
69
+ DialogContent.displayName = "DialogContent";
70
+ var DialogHeader = ({ className, ...props }) => /* @__PURE__ */ jsx("div", { "data-slot": "dialog-header", className, ...props });
71
+ DialogHeader.displayName = "DialogHeader";
72
+ var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ jsx("div", { "data-slot": "dialog-footer", className, ...props });
73
+ DialogFooter.displayName = "DialogFooter";
74
+ var DialogTitle = React.forwardRef(({ className, ...props }, ref) => {
75
+ const cls = cn(className);
76
+ return /* @__PURE__ */ jsx(DialogPrimitive.Title, { ref, "data-slot": "dialog-title", className: cls, ...props });
77
+ });
78
+ DialogTitle.displayName = "DialogTitle";
79
+ var DialogDescription = React.forwardRef(({ className, ...props }, ref) => {
80
+ const cls = cn(className);
81
+ return /* @__PURE__ */ jsx(
82
+ DialogPrimitive.Description,
83
+ {
84
+ ref,
85
+ "data-slot": "dialog-description",
86
+ className: cls,
87
+ ...props
88
+ }
89
+ );
90
+ });
91
+ DialogDescription.displayName = "DialogDescription";
92
+ var AlertDialogTrigger = AlertDialogPrimitive.Trigger;
93
+ var AlertDialogPortal = AlertDialogPrimitive.Portal;
94
+ var AlertDialogOverlay = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
95
+ AlertDialogPrimitive.Overlay,
96
+ {
97
+ ref,
98
+ "data-slot": "dialog-overlay",
99
+ className: cn(
100
+ "ui-dialog-overlay data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0",
101
+ className
102
+ ),
103
+ ...props
104
+ }
105
+ ));
106
+ AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
107
+ var AlertDialogContent = React.forwardRef(({ className, children, showClose, showCloseButton: showCloseButtonProp, ...props }, ref) => {
108
+ const showCloseButton = showCloseButtonProp ?? showClose ?? false;
109
+ return /* @__PURE__ */ jsxs(
110
+ AlertDialogPrimitive.Content,
111
+ {
112
+ ref,
113
+ "data-slot": "dialog-content",
114
+ className: cn(
115
+ "data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 duration-200 outline-none",
116
+ className
117
+ ),
118
+ ...props,
119
+ children: [
120
+ children,
121
+ showCloseButton ? /* @__PURE__ */ jsx(AlertDialogPrimitive.Cancel, { asChild: true, children: /* @__PURE__ */ jsx(
122
+ "button",
123
+ {
124
+ type: "button",
125
+ className: "ring-offset-background focus:ring-ring transition-opacity focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none",
126
+ "aria-label": "Close",
127
+ children: /* @__PURE__ */ jsx(X, { className: "size-4", "aria-hidden": "true" })
128
+ }
129
+ ) }) : null
130
+ ]
131
+ }
132
+ );
133
+ });
134
+ AlertDialogContent.displayName = "AlertDialogContent";
135
+ var AlertDialogHeader = ({ className, ...props }) => /* @__PURE__ */ jsx("div", { "data-slot": "dialog-header", className: cn(className), ...props });
136
+ AlertDialogHeader.displayName = "AlertDialogHeader";
137
+ var AlertDialogFooter = ({ className, ...props }) => /* @__PURE__ */ jsx("div", { "data-slot": "dialog-footer", className: cn(className), ...props });
138
+ AlertDialogFooter.displayName = "AlertDialogFooter";
139
+ var AlertDialogTitle = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
140
+ AlertDialogPrimitive.Title,
141
+ {
142
+ ref,
143
+ "data-slot": "dialog-title",
144
+ className: cn(className),
145
+ ...props
146
+ }
147
+ ));
148
+ AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
149
+ var AlertDialogDescription = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
150
+ AlertDialogPrimitive.Description,
151
+ {
152
+ ref,
153
+ "data-slot": "dialog-description",
154
+ className: cn(className),
155
+ ...props
156
+ }
157
+ ));
158
+ AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;
159
+ var DialogAction = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(AlertDialogPrimitive.Action, { ref, className: cn(buttonVariants(), className), ...props }));
160
+ DialogAction.displayName = "DialogAction";
161
+ var DialogCancel = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
162
+ AlertDialogPrimitive.Cancel,
163
+ {
164
+ ref,
165
+ className: cn(buttonVariants({ variant: "outline" }), className),
166
+ ...props
167
+ }
168
+ ));
169
+ DialogCancel.displayName = "DialogCancel";
170
+ var AlertDialogAction = DialogAction;
171
+ var AlertDialogCancel = DialogCancel;
172
+ function AlertDialog({
173
+ open,
174
+ onOpenChange,
175
+ title,
176
+ description,
177
+ confirmLabel,
178
+ cancelLabel,
179
+ variant = "default",
180
+ confirmPhrase,
181
+ onConfirm,
182
+ keepOpenOnConfirm = false,
183
+ pending = false
184
+ }) {
185
+ const { t } = useTranslation();
186
+ const [typed, setTyped] = React.useState("");
187
+ const inputId = React.useId();
188
+ const needsPhrase = confirmPhrase != null && confirmPhrase.length > 0;
189
+ const phraseMatches = !needsPhrase || typed === confirmPhrase;
190
+ const effectiveVariant = needsPhrase ? "destructive" : variant;
191
+ const resolvedConfirm = confirmLabel ?? (needsPhrase ? t("common.delete") : t("common.continue"));
192
+ const resolvedCancel = cancelLabel ?? t("common.cancel");
193
+ const handleOpenChange = (next) => {
194
+ setTyped("");
195
+ onOpenChange(next);
196
+ };
197
+ const handleConfirm = () => {
198
+ if (!phraseMatches) return;
199
+ void (async () => {
200
+ await onConfirm();
201
+ if (!keepOpenOnConfirm) onOpenChange(false);
202
+ })();
203
+ };
204
+ return /* @__PURE__ */ jsx(AlertDialogPrimitive.Root, { "data-slot": "dialog", open, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsxs(AlertDialogPrimitive.Portal, { children: [
205
+ /* @__PURE__ */ jsx(
206
+ AlertDialogPrimitive.Overlay,
207
+ {
208
+ "data-slot": "dialog-overlay",
209
+ className: "ui-dialog-overlay data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0"
210
+ }
211
+ ),
212
+ /* @__PURE__ */ jsxs(
213
+ AlertDialogPrimitive.Content,
214
+ {
215
+ "data-slot": "dialog-content",
216
+ className: "data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 duration-200 outline-none",
217
+ children: [
218
+ /* @__PURE__ */ jsxs(DialogHeader, { children: [
219
+ /* @__PURE__ */ jsx(AlertDialogPrimitive.Title, { "data-slot": "dialog-title", children: title }),
220
+ description ? /* @__PURE__ */ jsx(AlertDialogPrimitive.Description, { "data-slot": "dialog-description", children: description }) : null
221
+ ] }),
222
+ needsPhrase && /* @__PURE__ */ jsxs("div", { className: "ui-stack-xs", children: [
223
+ /* @__PURE__ */ jsx(Label, { htmlFor: inputId, className: "text-sm", children: t("common.typeToConfirm", { phrase: confirmPhrase }) }),
224
+ /* @__PURE__ */ jsx(
225
+ Input,
226
+ {
227
+ id: inputId,
228
+ value: typed,
229
+ onChange: (e) => {
230
+ setTyped(e.target.value);
231
+ },
232
+ autoComplete: "off",
233
+ spellCheck: false,
234
+ placeholder: confirmPhrase,
235
+ "aria-required": "true"
236
+ }
237
+ )
238
+ ] }),
239
+ /* @__PURE__ */ jsxs(DialogFooter, { children: [
240
+ /* @__PURE__ */ jsx(DialogCancel, { asChild: true, children: /* @__PURE__ */ jsx(Button, { variant: "ghost", disabled: pending, children: resolvedCancel }) }),
241
+ /* @__PURE__ */ jsx(
242
+ Button,
243
+ {
244
+ variant: effectiveVariant === "destructive" ? "destructive" : "default",
245
+ onClick: handleConfirm,
246
+ disabled: pending || !phraseMatches,
247
+ children: pending ? t("common.working") : resolvedConfirm
248
+ }
249
+ )
250
+ ] })
251
+ ]
252
+ }
253
+ )
254
+ ] }) });
255
+ }
256
+ var Dialog = Object.assign(DialogRoot, {
257
+ Trigger: DialogTrigger,
258
+ Portal: DialogPortal,
259
+ Overlay: DialogOverlay,
260
+ Content: DialogContent,
261
+ Header: DialogHeader,
262
+ Footer: DialogFooter,
263
+ Title: DialogTitle,
264
+ Description: DialogDescription,
265
+ Close: DialogClose,
266
+ Action: DialogAction,
267
+ Cancel: DialogCancel
268
+ });
269
+
270
+ export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, Dialog, DialogAction, DialogCancel, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogRoot, DialogTitle, DialogTrigger };
@@ -1,6 +1,6 @@
1
- import { formatBytes } from './chunk-4R7QL3MW.js';
2
- import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter } from './chunk-P4HFJQID.js';
3
1
  import { Slider } from './chunk-CRERCLIZ.js';
2
+ import { formatBytes } from './chunk-4R7QL3MW.js';
3
+ import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter } from './chunk-FVPCVZL3.js';
4
4
  import { Button } from './chunk-M4PZNAMV.js';
5
5
  import { controlIconClass } from './chunk-IBK5D2Q6.js';
6
6
  import { useTranslation } from './chunk-RLGHEV4A.js';
@@ -1,4 +1,4 @@
1
- import { SearchSelect } from './chunk-GKED65NV.js';
1
+ import { SearchSelect } from './chunk-KDBGFJJI.js';
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
 
4
4
  function Autocomplete({
@@ -0,0 +1,162 @@
1
+ import { cn } from './chunk-U7N2A7A3.js';
2
+ import * as React2 from 'react';
3
+ import * as TogglePrimitive from '@radix-ui/react-toggle';
4
+ import { cva } from 'class-variance-authority';
5
+ import { jsx, jsxs } from 'react/jsx-runtime';
6
+ import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
7
+ import { Check, X } from 'lucide-react';
8
+
9
+ var toggleVariants = cva("ui-toggle", {
10
+ variants: {
11
+ variant: {
12
+ default: "ui-toggle-default",
13
+ outline: "ui-toggle-outline"
14
+ },
15
+ size: {
16
+ sm: "ui-toggle-sm",
17
+ default: "ui-toggle-default-size",
18
+ lg: "ui-toggle-lg"
19
+ }
20
+ },
21
+ defaultVariants: {
22
+ variant: "default",
23
+ size: "default"
24
+ }
25
+ });
26
+ var Toggle = React2.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ jsx(
27
+ TogglePrimitive.Root,
28
+ {
29
+ ref,
30
+ "data-slot": "toggle",
31
+ className: cn(toggleVariants({ variant, size }), className),
32
+ ...props
33
+ }
34
+ ));
35
+ Toggle.displayName = TogglePrimitive.Root.displayName;
36
+ var ToggleGroup = React2.forwardRef(({ className, variant = "default", size = "default", children, ...props }, ref) => /* @__PURE__ */ jsx(
37
+ ToggleGroupPrimitive.Root,
38
+ {
39
+ ref,
40
+ "data-slot": "toggle-group",
41
+ "data-variant": variant,
42
+ "data-size": size,
43
+ className: cn("ui-toggle-group", className),
44
+ ...props,
45
+ children
46
+ }
47
+ ));
48
+ ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
49
+ var ToggleGroupItem = React2.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ jsx(
50
+ ToggleGroupPrimitive.Item,
51
+ {
52
+ ref,
53
+ "data-slot": "toggle-group-item",
54
+ className: cn(toggleVariants({ variant, size }), className),
55
+ ...props
56
+ }
57
+ ));
58
+ ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;
59
+ var DEFAULT_PASSWORD_RULES = ["length", "upper", "lower", "number", "symbol"];
60
+ var DEFAULT_LABELS = {
61
+ weak: "Weak",
62
+ fair: "Fair",
63
+ strong: "Strong"
64
+ };
65
+ function usePasswordStrength(value, rules = [...DEFAULT_PASSWORD_RULES]) {
66
+ const uniqueRules = [...new Set(rules)];
67
+ const checks = {
68
+ length: value.length >= 8,
69
+ upper: /[A-Z]/.test(value),
70
+ lower: /[a-z]/.test(value),
71
+ number: /\d/.test(value),
72
+ symbol: /[^A-Za-z0-9]/.test(value)
73
+ };
74
+ const passed = uniqueRules.filter((rule) => checks[rule]).length;
75
+ const score = Math.max(0, Math.min(4, passed));
76
+ return { score, checks };
77
+ }
78
+ function scoreTone(score) {
79
+ if (score <= 1) return "destructive";
80
+ if (score <= 3) return "warning";
81
+ return "success";
82
+ }
83
+ function scoreLabel(score, labels) {
84
+ if (score <= 1) return labels.weak;
85
+ if (score <= 3) return labels.fair;
86
+ return labels.strong;
87
+ }
88
+ function PasswordStrength({
89
+ value,
90
+ rules = [...DEFAULT_PASSWORD_RULES],
91
+ showChecklist = true,
92
+ labels = DEFAULT_LABELS
93
+ }) {
94
+ const normalizedRules = [...new Set(rules)];
95
+ const { score, checks } = usePasswordStrength(value, normalizedRules);
96
+ const tone = scoreTone(score);
97
+ const segments = Array.from({ length: 5 });
98
+ return /* @__PURE__ */ jsxs("div", { className: "ui-password-strength", children: [
99
+ /* @__PURE__ */ jsx(
100
+ "div",
101
+ {
102
+ className: "ui-password-strength-track",
103
+ role: "img",
104
+ "aria-label": `Password strength ${score}/4`,
105
+ children: segments.map((_, index) => {
106
+ const filled = index < score + 1;
107
+ return /* @__PURE__ */ jsx(
108
+ "span",
109
+ {
110
+ className: "ui-password-strength-segment",
111
+ "data-tone": filled ? tone : void 0,
112
+ "data-state": filled ? "filled" : "empty",
113
+ "aria-hidden": "true"
114
+ },
115
+ index
116
+ );
117
+ })
118
+ }
119
+ ),
120
+ /* @__PURE__ */ jsxs("div", { className: "ui-password-strength-meta", children: [
121
+ /* @__PURE__ */ jsx("span", { className: "ui-password-strength-label", children: scoreLabel(score, labels) }),
122
+ /* @__PURE__ */ jsxs("span", { className: "ui-password-strength-score", "aria-hidden": "true", children: [
123
+ score,
124
+ "/4"
125
+ ] })
126
+ ] }),
127
+ showChecklist ? /* @__PURE__ */ jsx("ul", { className: "ui-password-strength-checklist", children: normalizedRules.map((rule) => /* @__PURE__ */ jsxs(
128
+ "li",
129
+ {
130
+ className: "ui-password-strength-checklist-item",
131
+ "data-state": checks[rule] ? "passed" : "failed",
132
+ children: [
133
+ checks[rule] ? /* @__PURE__ */ jsx(Check, { "aria-hidden": "true" }) : /* @__PURE__ */ jsx(X, { "aria-hidden": "true" }),
134
+ /* @__PURE__ */ jsx("span", { children: labelForRule(rule) })
135
+ ]
136
+ },
137
+ rule
138
+ )) }) : null,
139
+ /* @__PURE__ */ jsxs("span", { className: "sr-only", "aria-live": "polite", children: [
140
+ scoreLabel(score, labels),
141
+ " password strength"
142
+ ] })
143
+ ] });
144
+ }
145
+ function labelForRule(rule) {
146
+ switch (rule) {
147
+ case "length":
148
+ return "8+ characters";
149
+ case "upper":
150
+ return "Contains uppercase letter";
151
+ case "lower":
152
+ return "Contains lowercase letter";
153
+ case "number":
154
+ return "Contains number";
155
+ case "symbol":
156
+ return "Contains symbol";
157
+ default:
158
+ return rule;
159
+ }
160
+ }
161
+
162
+ export { PasswordStrength, Toggle, ToggleGroup, ToggleGroupItem, toggleVariants, usePasswordStrength };
@@ -1,8 +1,22 @@
1
1
  import { cn } from './chunk-U7N2A7A3.js';
2
2
  import * as React from 'react';
3
- import * as AspectRatioPrimitive from '@radix-ui/react-aspect-ratio';
3
+ import * as SeparatorPrimitive from '@radix-ui/react-separator';
4
4
  import { jsx } from 'react/jsx-runtime';
5
+ import * as AspectRatioPrimitive from '@radix-ui/react-aspect-ratio';
5
6
 
7
+ var Separator = React.forwardRef(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsx(
8
+ SeparatorPrimitive.Root,
9
+ {
10
+ ref,
11
+ "data-slot": "separator",
12
+ "data-orientation": orientation,
13
+ orientation,
14
+ decorative,
15
+ className: cn("ui-separator", className),
16
+ ...props
17
+ }
18
+ ));
19
+ Separator.displayName = SeparatorPrimitive.Root.displayName;
6
20
  var AspectRatio = React.forwardRef(({ className, ratio = 16 / 9, ...props }, ref) => /* @__PURE__ */ jsx(
7
21
  AspectRatioPrimitive.Root,
8
22
  {
@@ -15,4 +29,4 @@ var AspectRatio = React.forwardRef(({ className, ratio = 16 / 9, ...props }, ref
15
29
  ));
16
30
  AspectRatio.displayName = AspectRatioPrimitive.Root.displayName;
17
31
 
18
- export { AspectRatio };
32
+ export { AspectRatio, Separator };
@@ -683,21 +683,6 @@ var COMPONENT_PROP_REGISTRY = {
683
683
  file: "components/data-display.prop.ts",
684
684
  vocabulary: ["ColumnDefProp", "DensityProp", "SortStateProp", "SelectedIdsProp"]
685
685
  },
686
- DialogConfirmProp: {
687
- group: "feedback",
688
- file: "components/feedback.prop.ts",
689
- vocabulary: [
690
- "OpenProp",
691
- "OnOpenChangeProp",
692
- "TitleProp",
693
- "DescriptionProp",
694
- "ConfirmLabelProp",
695
- "CancelLabelProp",
696
- "ConfirmVariantProp",
697
- "OnValueChangeProp",
698
- "PendingProp"
699
- ]
700
- },
701
686
  AlertDialogProp: {
702
687
  group: "feedback",
703
688
  file: "components/feedback.prop.ts",
@@ -1,7 +1,7 @@
1
1
  export { B as BreadcrumbItem } from '../../navigation.prop-BKlxd-j7.js';
2
- export { c as FlexProp, I as InlineProp, P as PageContainerProp, P as PageContainerProps, d as PageHeaderProp, i as StackProp } from '../../layout.prop-DwJKI6ka.js';
3
- export { F as FilterBar, a as FilterGroup, P as PageHeader, T as Toolbar, b as ToolbarGroup } from '../../filter-bar-BycYH10i.js';
4
- export { F as Flex, I as Inline, P as PageContainer, S as Stack } from '../../inline-DCqn4O29.js';
2
+ export { c as FlexProp, I as InlineProp, P as PageContainerProp, P as PageContainerProps, d as PageHeaderProp, j as StackProp } from '../../layout.prop-JE2TcRyL.js';
3
+ export { F as FilterBar, a as FilterGroup, P as PageHeader, T as Toolbar, b as ToolbarGroup } from '../../filter-bar-B5TPUqEO.js';
4
+ export { F as Flex, I as Inline, P as PageContainer, S as Stack } from '../../inline-CDSVAN54.js';
5
5
  export { C as ColumnDef, D as DataTable, a as Density, b as Descriptions, E as EmptyState } from '../../data-table-B_q7j992.js';
6
6
  export { Badge } from '../data-display/badge.js';
7
7
  export { C as ChoiceField, F as Field, a as FormField, S as SearchInput } from '../../search-input-cezAxpgb.js';
@@ -14,7 +14,7 @@ export { Transfer } from '../data-entry/transfer.js';
14
14
  export { Tabs, TabsContent, TabsList, TabsTrigger } from '../navigation/tabs.js';
15
15
  export { Pagination } from '../navigation/pagination.js';
16
16
  export { Steps } from '../navigation/steps.js';
17
- export { AlertDialog, Dialog, DialogConfirm, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from '../feedback/dialog.js';
17
+ export { AlertDialog, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from '../feedback/dialog.js';
18
18
  export { Toaster } from '../feedback/sonner.js';
19
19
  export { L as LegacyToastOptions, t as toast, u as useToast } from '../../use-toast-Dsw3yE2S.js';
20
20
  export { useDebouncedValue, useTimeoutFlag } from '../../lib/hooks.js';
@@ -32,7 +32,7 @@ import '../../interaction.prop-DSFizzP6.js';
32
32
  import '../../data-display.prop-Cf2p9QC4.js';
33
33
  import 'class-variance-authority/types';
34
34
  import 'class-variance-authority';
35
- import '../../feedback.prop-BR5JOpPl.js';
35
+ import '../../feedback.prop-Nc9Aa8SV.js';
36
36
  import '@radix-ui/react-checkbox';
37
37
  import '@radix-ui/react-radio-group';
38
38
  import '@radix-ui/react-slider';
@@ -1,46 +1,46 @@
1
1
  import '../../chunk-LDSLS6HE.js';
2
- export { FilterBar, FilterGroup, PageHeader, Toolbar, ToolbarGroup } from '../../chunk-32ZUUKML.js';
2
+ export { FilterBar, FilterGroup, PageHeader, Toolbar, ToolbarGroup } from '../../chunk-6MCI7W5G.js';
3
3
  import '../../chunk-B73NA66T.js';
4
4
  import '../../chunk-WGWI7EGL.js';
5
- export { Pagination } from '../../chunk-TBXQJCBQ.js';
5
+ export { Pagination } from '../../chunk-6HQMUUQW.js';
6
6
  export { Steps } from '../../chunk-OJZ6C2HM.js';
7
7
  export { Tabs, TabsContent, TabsList, TabsTrigger } from '../../chunk-V3N266PT.js';
8
- export { toast, useToast } from '../../chunk-B3WX53JQ.js';
9
- export { SkeletonCard, SkeletonDetail, SkeletonRows, SkeletonStat, SkeletonTable } from '../../chunk-AINW5WYN.js';
10
- export { Alert, AlertActions, AlertContent, AlertDescription, AlertQueryError, AlertTitle } from '../../chunk-ZRRLOOBX.js';
11
- export { Toaster } from '../../chunk-TO7URV7U.js';
12
- export { PageContainer, Stack } from '../../chunk-442ULAA6.js';
13
- import '../../chunk-FRU44GA2.js';
14
- import '../../chunk-TO33OY4L.js';
15
- import '../../chunk-32WO3YLB.js';
16
- import '../../chunk-W4REF4TD.js';
17
8
  import '../../chunk-HL3G4SVG.js';
18
- export { SearchInput, Transfer } from '../../chunk-INSF6K3Y.js';
9
+ export { SearchInput, Transfer } from '../../chunk-457KVJTX.js';
19
10
  export { TreeSelect } from '../../chunk-6J7GRCDA.js';
20
- export { Upload, collectUploadCommitActions, createUploadItem, useUploadDraft } from '../../chunk-Z6HNY2PL.js';
21
- export { formatBytes, formatCurrency, formatDateLong, formatDateTime, formatRelative, humanError, shortId } from '../../chunk-4R7QL3MW.js';
22
- export { AlertDialog, Dialog, DialogConfirm, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from '../../chunk-P4HFJQID.js';
11
+ export { Upload, collectUploadCommitActions, createUploadItem, useUploadDraft } from '../../chunk-G6Q32VHO.js';
12
+ import '../../chunk-CAEL2ZD2.js';
23
13
  import '../../chunk-CRERCLIZ.js';
24
- import '../../chunk-2ACNEQOI.js';
25
- import '../../chunk-GKED65NV.js';
14
+ import '../../chunk-KDBGFJJI.js';
26
15
  export { Cascader } from '../../chunk-HB2OHB5X.js';
27
16
  import '../../chunk-SMLKNECP.js';
28
17
  import '../../chunk-O24Z3ULJ.js';
29
18
  export { ChoiceField, Field } from '../../chunk-26CPAKUP.js';
30
- import '../../chunk-VOHTRR5X.js';
31
19
  import '../../chunk-HTEL5DQI.js';
32
- export { DataTable, Descriptions, EmptyState } from '../../chunk-JBHXILI4.js';
20
+ export { toast, useToast } from '../../chunk-B3WX53JQ.js';
21
+ export { SkeletonCard, SkeletonDetail, SkeletonRows, SkeletonStat, SkeletonTable } from '../../chunk-AINW5WYN.js';
22
+ export { Alert, AlertActions, AlertContent, AlertDescription, AlertQueryError, AlertTitle } from '../../chunk-E7HBHUJY.js';
23
+ export { formatBytes, formatCurrency, formatDateLong, formatDateTime, formatRelative, humanError, shortId } from '../../chunk-4R7QL3MW.js';
24
+ export { AlertDialog, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from '../../chunk-FVPCVZL3.js';
25
+ import '../../chunk-VOHTRR5X.js';
26
+ export { Toaster } from '../../chunk-TO7URV7U.js';
27
+ export { PageContainer, Stack } from '../../chunk-26WDEDWL.js';
28
+ import '../../chunk-XK3M3VRR.js';
29
+ import '../../chunk-TO33OY4L.js';
30
+ import '../../chunk-W4REF4TD.js';
31
+ import '../../chunk-32WO3YLB.js';
32
+ export { DataTable, Descriptions, EmptyState } from '../../chunk-S6TBIL7J.js';
33
+ import '../../chunk-M4PZNAMV.js';
33
34
  import '../../chunk-DV52WNXO.js';
34
35
  export { Flex, Inline } from '../../chunk-TILFZBTE.js';
35
- import '../../chunk-M4PZNAMV.js';
36
36
  export { Badge } from '../../chunk-UIYEAUWA.js';
37
37
  import '../../chunk-DY5C44UP.js';
38
38
  import '../../chunk-3KPEZ5CF.js';
39
39
  import '../../chunk-4MMIMZMK.js';
40
40
  import '../../chunk-IBK5D2Q6.js';
41
- export { FormField } from '../../chunk-F7PG4OEV.js';
42
- import '../../chunk-7PWBC4BY.js';
43
41
  import '../../chunk-RLGHEV4A.js';
44
42
  export { formatDate } from '../../chunk-FXFJF4YA.js';
43
+ export { FormField } from '../../chunk-F7PG4OEV.js';
44
+ import '../../chunk-7PWBC4BY.js';
45
45
  export { useDebouncedValue, useTimeoutFlag } from '../../chunk-LFW37FGG.js';
46
46
  import '../../chunk-U7N2A7A3.js';
@@ -11,7 +11,7 @@ type CardVariant = "default" | "muted" | "outline" | "featured";
11
11
  /** Padding density — base 16px · tight 12px · cozy 20px. */
12
12
  type CardDensity = "tight" | "cozy";
13
13
  declare const cardVariants: (props?: ({
14
- size?: "default" | "compact" | null | undefined;
14
+ size?: "compact" | "default" | null | undefined;
15
15
  } & class_variance_authority_types.ClassProp) | undefined) => string;
16
16
  type CardProps = React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof cardVariants> & {
17
17
  size?: CardSize;
@@ -20,7 +20,7 @@ type CardProps = React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof card
20
20
  density?: CardDensity;
21
21
  };
22
22
  declare const Card: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & VariantProps<(props?: ({
23
- size?: "default" | "compact" | null | undefined;
23
+ size?: "compact" | "default" | null | undefined;
24
24
  } & class_variance_authority_types.ClassProp) | undefined) => string> & {
25
25
  size?: CardSize;
26
26
  accent?: CardAccent;
@@ -1,10 +1,10 @@
1
1
  export { Avatar, AvatarFallback, AvatarImage } from '../../chunk-QTUJSRDH.js';
2
2
  export { Card, CardAction, CardContent, CardCover, CardDescription, CardFooter, CardHeader, CardTitle, StatCard } from '../../chunk-O2OUNXV4.js';
3
3
  export { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious } from '../../chunk-HCM4JAC2.js';
4
- export { DataTable, Descriptions, EmptyState } from '../../chunk-JBHXILI4.js';
4
+ export { DataTable, Descriptions, EmptyState } from '../../chunk-S6TBIL7J.js';
5
+ import '../../chunk-M4PZNAMV.js';
5
6
  export { Collapsible, CollapsibleContent, CollapsibleTrigger } from '../../chunk-DV52WNXO.js';
6
7
  import '../../chunk-TILFZBTE.js';
7
- import '../../chunk-M4PZNAMV.js';
8
8
  import { Badge } from '../../chunk-UIYEAUWA.js';
9
9
  export { Badge } from '../../chunk-UIYEAUWA.js';
10
10
  export { Popover, PopoverAnchor, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger } from '../../chunk-DY5C44UP.js';
@@ -1,7 +1,7 @@
1
- export { Autocomplete } from '../../chunk-JOLM73YQ.js';
2
- import '../../chunk-GKED65NV.js';
3
- import '../../chunk-VOHTRR5X.js';
1
+ export { Autocomplete } from '../../chunk-GKXPALFT.js';
2
+ import '../../chunk-KDBGFJJI.js';
4
3
  import '../../chunk-HTEL5DQI.js';
4
+ import '../../chunk-VOHTRR5X.js';
5
5
  import '../../chunk-M4PZNAMV.js';
6
6
  import '../../chunk-DY5C44UP.js';
7
7
  import '../../chunk-IBK5D2Q6.js';
@@ -7,7 +7,7 @@ import '../../chunk-M4PZNAMV.js';
7
7
  import '../../chunk-DY5C44UP.js';
8
8
  import '../../chunk-3KPEZ5CF.js';
9
9
  import '../../chunk-IBK5D2Q6.js';
10
- import '../../chunk-7PWBC4BY.js';
11
10
  import '../../chunk-RLGHEV4A.js';
12
11
  import '../../chunk-FXFJF4YA.js';
12
+ import '../../chunk-7PWBC4BY.js';
13
13
  import '../../chunk-U7N2A7A3.js';