@godxjp/ui 8.3.0 → 9.0.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 (38) hide show
  1. package/dist/{chunk-CAEL2ZD2.js → chunk-2ACNEQOI.js} +1 -1
  2. package/dist/{chunk-ZY5NUG4B.js → chunk-32ZUUKML.js} +18 -4
  3. package/dist/{chunk-CLU46QR2.js → chunk-442ULAA6.js} +12 -4
  4. package/dist/{chunk-GKXPALFT.js → chunk-JOLM73YQ.js} +1 -1
  5. package/dist/{chunk-6YK3IJXW.js → chunk-RSC5K7RP.js} +1 -1
  6. package/dist/{chunk-56NYZNVY.js → chunk-TBXQJCBQ.js} +1 -1
  7. package/dist/components/admin/index.d.ts +3 -8
  8. package/dist/components/admin/index.js +16 -17
  9. package/dist/components/data-display/card.d.ts +2 -2
  10. package/dist/components/data-entry/autocomplete.js +3 -3
  11. package/dist/components/data-entry/command.d.ts +1 -1
  12. package/dist/components/data-entry/index.js +13 -13
  13. package/dist/components/data-entry/select.js +3 -3
  14. package/dist/components/data-entry/upload.js +2 -2
  15. package/dist/components/feedback/index.js +2 -2
  16. package/dist/components/layout/index.d.ts +7 -6
  17. package/dist/components/layout/index.js +2 -2
  18. package/dist/components/navigation/index.d.ts +2 -2
  19. package/dist/components/navigation/index.js +6 -6
  20. package/dist/components/navigation/pagination.js +4 -4
  21. package/dist/components/query/index.d.ts +2 -2
  22. package/dist/components/query/index.js +193 -4
  23. package/dist/components/ui/index.js +18 -18
  24. package/dist/{filter-bar-WjnQOs2C.d.ts → filter-bar-BycYH10i.d.ts} +2 -2
  25. package/dist/form/index.js +71 -3
  26. package/dist/index.d.ts +3 -12
  27. package/dist/index.js +25 -27
  28. package/dist/{inline-DqfYlGKj.d.ts → inline-DCqn4O29.d.ts} +2 -2
  29. package/dist/{layout.prop-Baq9muDN.d.ts → layout.prop-DwJKI6ka.d.ts} +2 -0
  30. package/dist/props/components/index.d.ts +2 -2
  31. package/dist/props/index.d.ts +2 -2
  32. package/dist/{query.prop-DuODxsiU.d.ts → query.prop-BDdz9L1G.d.ts} +1 -1
  33. package/package.json +4 -3
  34. package/dist/chunk-7WRZG2IG.js +0 -71
  35. package/dist/chunk-GLEEJYGQ.js +0 -193
  36. package/dist/{chunk-KDBGFJJI.js → chunk-GKED65NV.js} +1 -1
  37. package/dist/{chunk-HKD6ERY7.js → chunk-LDSLS6HE.js} +0 -0
  38. package/dist/{chunk-PIQXAOWS.js → chunk-Z6HNY2PL.js} +1 -1
@@ -1,8 +1,197 @@
1
- export { AlertMutationFeedback, ButtonRefetch, DataState, InfiniteQueryState, MutationFeedback, PrefetchLink, QueryRefetchButton, flattenItemPages } from '../../chunk-GLEEJYGQ.js';
2
- import '../../chunk-ZRRLOOBX.js';
1
+ import { AlertQueryError } from '../../chunk-ZRRLOOBX.js';
3
2
  import '../../chunk-4R7QL3MW.js';
4
3
  import '../../chunk-TILFZBTE.js';
5
- import '../../chunk-M4PZNAMV.js';
6
- import '../../chunk-RLGHEV4A.js';
4
+ import { Button } from '../../chunk-M4PZNAMV.js';
5
+ import { useTranslation } from '../../chunk-RLGHEV4A.js';
7
6
  import '../../chunk-FXFJF4YA.js';
8
7
  import '../../chunk-U7N2A7A3.js';
8
+ import * as React from 'react';
9
+ import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
10
+ import { RefreshCw } from 'lucide-react';
11
+ import { Link } from 'react-router-dom';
12
+ import { useQueryClient } from '@tanstack/react-query';
13
+
14
+ function defaultIsEmpty(data) {
15
+ if (!data) return true;
16
+ if (Array.isArray(data)) return data.length === 0;
17
+ if (typeof data === "object" && data !== null) {
18
+ const obj = data;
19
+ if (Array.isArray(obj.items)) return obj.items.length === 0;
20
+ if (typeof obj.length === "number") return obj.length === 0;
21
+ }
22
+ return false;
23
+ }
24
+ function DataState({
25
+ query,
26
+ skeleton,
27
+ empty,
28
+ isEmpty = defaultIsEmpty,
29
+ errorRenderer,
30
+ showRetry = true,
31
+ onRetry,
32
+ children
33
+ }) {
34
+ const retry = React.useCallback(() => {
35
+ if (onRetry) {
36
+ void onRetry();
37
+ return;
38
+ }
39
+ void query.refetch();
40
+ }, [onRetry, query]);
41
+ if (query.isPending) return /* @__PURE__ */ jsx(Fragment, { children: skeleton });
42
+ if (query.isError) {
43
+ if (query.isFetching) return /* @__PURE__ */ jsx(Fragment, { children: skeleton });
44
+ if (errorRenderer) return /* @__PURE__ */ jsx(Fragment, { children: errorRenderer(query.error, retry) });
45
+ return /* @__PURE__ */ jsx(AlertQueryError, { error: query.error, onRetry: showRetry ? retry : void 0 });
46
+ }
47
+ const data = query.data;
48
+ if (data === void 0) return /* @__PURE__ */ jsx(Fragment, { children: skeleton });
49
+ if (empty && (data === null || isEmpty(data))) return /* @__PURE__ */ jsx(Fragment, { children: empty });
50
+ return /* @__PURE__ */ jsx(Fragment, { children: children(data) });
51
+ }
52
+ function AlertMutationFeedback({
53
+ mutation,
54
+ onRetry,
55
+ showRetry = true,
56
+ pending,
57
+ className
58
+ }) {
59
+ if (mutation.isPending && pending) return /* @__PURE__ */ jsx(Fragment, { children: pending });
60
+ if (!mutation.isError || mutation.error == null) return null;
61
+ return /* @__PURE__ */ jsx(
62
+ AlertQueryError,
63
+ {
64
+ className,
65
+ error: mutation.error,
66
+ onRetry: showRetry ? onRetry : void 0
67
+ }
68
+ );
69
+ }
70
+ var MutationFeedback = AlertMutationFeedback;
71
+ function ButtonRefetch({
72
+ query,
73
+ label = "Refresh",
74
+ children,
75
+ variant = "outline",
76
+ size = "sm",
77
+ className,
78
+ ...props
79
+ }) {
80
+ const text = children ?? label;
81
+ return /* @__PURE__ */ jsxs(
82
+ Button,
83
+ {
84
+ type: "button",
85
+ variant,
86
+ size,
87
+ className,
88
+ onClick: () => void query.refetch(),
89
+ disabled: query.isFetching,
90
+ ...props,
91
+ children: [
92
+ /* @__PURE__ */ jsx(
93
+ RefreshCw,
94
+ {
95
+ className: "ui-query-refetch-icon",
96
+ "data-fetching": query.isFetching,
97
+ "aria-hidden": "true"
98
+ }
99
+ ),
100
+ text
101
+ ]
102
+ }
103
+ );
104
+ }
105
+ var QueryRefetchButton = ButtonRefetch;
106
+ function flattenItemPages(data) {
107
+ if (!data) return [];
108
+ return data.pages.flatMap((page) => page.items);
109
+ }
110
+ function defaultIsEmptyFlat(flat) {
111
+ if (Array.isArray(flat)) return flat.length === 0;
112
+ return !flat;
113
+ }
114
+ function InfiniteQueryState({
115
+ query,
116
+ skeleton,
117
+ empty,
118
+ flatten,
119
+ isEmpty = defaultIsEmptyFlat,
120
+ errorRenderer,
121
+ showRetry = true,
122
+ onRetry,
123
+ loadingMore,
124
+ loadMore,
125
+ showLoadMore = true,
126
+ children
127
+ }) {
128
+ const { t } = useTranslation();
129
+ const retry = React.useCallback(() => {
130
+ if (onRetry) {
131
+ void onRetry();
132
+ return;
133
+ }
134
+ void query.refetch();
135
+ }, [onRetry, query]);
136
+ if (query.isPending) return /* @__PURE__ */ jsx(Fragment, { children: skeleton });
137
+ if (query.isError) {
138
+ if (query.isFetching && !query.isFetchingNextPage) return /* @__PURE__ */ jsx(Fragment, { children: skeleton });
139
+ if (errorRenderer) return /* @__PURE__ */ jsx(Fragment, { children: errorRenderer(query.error, retry) });
140
+ return /* @__PURE__ */ jsx(AlertQueryError, { error: query.error, onRetry: showRetry ? retry : void 0 });
141
+ }
142
+ const data = query.data;
143
+ if (!data) return /* @__PURE__ */ jsx(Fragment, { children: skeleton });
144
+ const flat = flatten(data);
145
+ if (empty && isEmpty(flat)) return /* @__PURE__ */ jsx(Fragment, { children: empty });
146
+ const footer = showLoadMore && query.hasNextPage ? loadMore ?? /* @__PURE__ */ jsx("div", { className: "flex justify-center pt-4", children: /* @__PURE__ */ jsx(
147
+ Button,
148
+ {
149
+ type: "button",
150
+ variant: "outline",
151
+ size: "sm",
152
+ disabled: query.isFetchingNextPage,
153
+ onClick: () => void query.fetchNextPage(),
154
+ children: query.isFetchingNextPage ? t("common.working") : t("query.loadMore")
155
+ }
156
+ ) }) : null;
157
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
158
+ children(flat, {
159
+ fetchNextPage: () => void query.fetchNextPage(),
160
+ hasNextPage: !!query.hasNextPage,
161
+ isFetchingNextPage: query.isFetchingNextPage
162
+ }),
163
+ query.isFetchingNextPage && (loadingMore ?? /* @__PURE__ */ jsx("p", { className: "text-muted-foreground pt-2 text-center text-xs", children: t("common.working") })),
164
+ footer
165
+ ] });
166
+ }
167
+ function PrefetchLink({
168
+ queryKey,
169
+ queryFn,
170
+ prefetchOn = "both",
171
+ staleTime = 3e4,
172
+ onMouseEnter,
173
+ onFocus,
174
+ ...linkProps
175
+ }) {
176
+ const queryClient = useQueryClient();
177
+ const prefetch = React.useCallback(() => {
178
+ if (prefetchOn === "none") return;
179
+ void queryClient.prefetchQuery({ queryKey, queryFn, staleTime });
180
+ }, [prefetchOn, queryClient, queryFn, queryKey, staleTime]);
181
+ return /* @__PURE__ */ jsx(
182
+ Link,
183
+ {
184
+ ...linkProps,
185
+ onMouseEnter: (event) => {
186
+ if (prefetchOn === "hover" || prefetchOn === "both") prefetch();
187
+ onMouseEnter?.(event);
188
+ },
189
+ onFocus: (event) => {
190
+ if (prefetchOn === "focus" || prefetchOn === "both") prefetch();
191
+ onFocus?.(event);
192
+ }
193
+ }
194
+ );
195
+ }
196
+
197
+ export { AlertMutationFeedback, ButtonRefetch, DataState, InfiniteQueryState, MutationFeedback, PrefetchLink, QueryRefetchButton, flattenItemPages };
@@ -1,40 +1,40 @@
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, useCarousel } from '../../chunk-HCM4JAC2.js';
4
+ export { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger } from '../../chunk-BHV2FUOA.js';
4
5
  export { Toggle, ToggleGroup, ToggleGroupItem, toggleVariants } from '../../chunk-FYM3MJSK.js';
5
- export { TimeInput } from '../../chunk-QLMXEJSY.js';
6
- export { TimePicker } from '../../chunk-6YBYAEXD.js';
7
- export { Radio, RadioGroupOptions as RadioGroup, RadioGroupRoot, RadioItem } from '../../chunk-25RYBC5T.js';
8
6
  export { Switch } from '../../chunk-R2W2FX5Q.js';
9
7
  export { Textarea } from '../../chunk-EOTOCNT7.js';
10
- export { ColorPicker } from '../../chunk-3TS3G4U3.js';
11
- export { Combobox } from '../../chunk-JKHWLPM5.js';
8
+ export { TimeInput } from '../../chunk-QLMXEJSY.js';
9
+ export { TimePicker } from '../../chunk-6YBYAEXD.js';
12
10
  export { DatePicker } from '../../chunk-LJLGABFV.js';
13
11
  export { DateRangePicker } from '../../chunk-N3JPLJ3B.js';
12
+ export { Radio, RadioGroupOptions as RadioGroup, RadioGroupRoot, RadioItem } from '../../chunk-25RYBC5T.js';
13
+ export { Autocomplete } from '../../chunk-JOLM73YQ.js';
14
14
  export { Calendar } from '../../chunk-IOGU3ZWF.js';
15
- export { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger } from '../../chunk-BHV2FUOA.js';
16
- export { Autocomplete } from '../../chunk-GKXPALFT.js';
17
- export { ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger } from '../../chunk-HL3G4SVG.js';
15
+ export { ColorPicker } from '../../chunk-3TS3G4U3.js';
16
+ export { Combobox } from '../../chunk-JKHWLPM5.js';
18
17
  export { Menubar, MenubarCheckboxItem, MenubarContent, MenubarItem, MenubarLabel, MenubarMenu, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger } from '../../chunk-B73NA66T.js';
19
18
  export { NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport } from '../../chunk-WGWI7EGL.js';
20
- export { Pagination } from '../../chunk-56NYZNVY.js';
19
+ export { Pagination } from '../../chunk-TBXQJCBQ.js';
21
20
  export { Tabs, TabsContent, TabsList, TabsTrigger } from '../../chunk-V3N266PT.js';
21
+ export { Skeleton } from '../../chunk-AINW5WYN.js';
22
+ export { Alert, AlertActions, AlertBase, AlertContent, AlertDescription, AlertQueryError, AlertTitle } from '../../chunk-ZRRLOOBX.js';
23
+ export { Toaster } from '../../chunk-TO7URV7U.js';
22
24
  export { AspectRatio } from '../../chunk-FRU44GA2.js';
23
25
  export { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger } from '../../chunk-TO33OY4L.js';
24
26
  export { ResizableHandle, ResizablePanel, ResizablePanelGroup } from '../../chunk-W4REF4TD.js';
25
- export { Upload, collectUploadCommitActions, createUploadItem, useUploadDraft } from '../../chunk-PIQXAOWS.js';
26
- export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue } from '../../chunk-CAEL2ZD2.js';
27
+ export { ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger } from '../../chunk-HL3G4SVG.js';
28
+ export { Upload, collectUploadCommitActions, createUploadItem, useUploadDraft } from '../../chunk-Z6HNY2PL.js';
29
+ import '../../chunk-4R7QL3MW.js';
30
+ export { AlertDialog, Dialog, DialogAction, DialogCancel, DialogClose, DialogConfirm, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogRoot, DialogTitle, DialogTrigger } from '../../chunk-P4HFJQID.js';
27
31
  export { Slider } from '../../chunk-CRERCLIZ.js';
32
+ export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue } from '../../chunk-2ACNEQOI.js';
33
+ import '../../chunk-GKED65NV.js';
28
34
  export { Checkbox } from '../../chunk-O24Z3ULJ.js';
29
35
  import '../../chunk-26CPAKUP.js';
30
- export { Skeleton } from '../../chunk-AINW5WYN.js';
31
- export { Alert, AlertActions, AlertBase, AlertContent, AlertDescription, AlertQueryError, AlertTitle } from '../../chunk-ZRRLOOBX.js';
32
- import '../../chunk-4R7QL3MW.js';
33
- export { AlertDialog, Dialog, DialogAction, DialogCancel, DialogClose, DialogConfirm, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogRoot, DialogTitle, DialogTrigger } from '../../chunk-P4HFJQID.js';
34
- export { Toaster } from '../../chunk-TO7URV7U.js';
35
- import '../../chunk-KDBGFJJI.js';
36
- export { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from '../../chunk-HTEL5DQI.js';
37
36
  export { Input } from '../../chunk-VOHTRR5X.js';
37
+ export { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from '../../chunk-HTEL5DQI.js';
38
38
  import '../../chunk-TILFZBTE.js';
39
39
  export { Button, buttonVariants } from '../../chunk-M4PZNAMV.js';
40
40
  export { Badge } from '../../chunk-UIYEAUWA.js';
@@ -1,8 +1,8 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { d as PageHeaderProp } from './layout.prop-Baq9muDN.js';
2
+ import { d as PageHeaderProp } from './layout.prop-DwJKI6ka.js';
3
3
  import { f as ToolbarProp, e as ToolbarGroupProp } from './navigation.prop-8DgElO0c.js';
4
4
 
5
- declare function PageHeader({ title, description, breadcrumb, actions, className }: PageHeaderProp): react_jsx_runtime.JSX.Element;
5
+ declare function PageHeader({ title, description, breadcrumb, actions, linkComponent: LinkComponent, className, }: PageHeaderProp): react_jsx_runtime.JSX.Element;
6
6
 
7
7
  declare function Toolbar({ onClear, hasActiveFilters, className, children }: ToolbarProp): react_jsx_runtime.JSX.Element;
8
8
  declare function ToolbarGroup({ label, className, children }: ToolbarGroupProp): react_jsx_runtime.JSX.Element;
@@ -1,4 +1,72 @@
1
- export { FormFieldControl, FormRoot, useZodForm } from '../chunk-7WRZG2IG.js';
2
- import '../chunk-F7PG4OEV.js';
1
+ import { FormField } from '../chunk-F7PG4OEV.js';
3
2
  import '../chunk-7PWBC4BY.js';
4
- import '../chunk-U7N2A7A3.js';
3
+ import { cn } from '../chunk-U7N2A7A3.js';
4
+ import { useForm, FormProvider, useFormContext, Controller } from 'react-hook-form';
5
+ import { zodResolver } from '@hookform/resolvers/zod';
6
+ import { jsx } from 'react/jsx-runtime';
7
+
8
+ function useZodForm(schema, options) {
9
+ return useForm({
10
+ ...options,
11
+ // zodResolver + Zod 4 inference gap — runtime types are correct.
12
+ resolver: zodResolver(schema)
13
+ });
14
+ }
15
+ function FormRoot({
16
+ form,
17
+ onSubmit,
18
+ children,
19
+ className,
20
+ id
21
+ }) {
22
+ return /* @__PURE__ */ jsx(FormProvider, { ...form, children: /* @__PURE__ */ jsx(
23
+ "form",
24
+ {
25
+ id,
26
+ className: cn("ui-stack-md", className),
27
+ onSubmit: (event) => {
28
+ void form.handleSubmit((values) => onSubmit(values))(event);
29
+ },
30
+ noValidate: true,
31
+ children
32
+ }
33
+ ) });
34
+ }
35
+ function FormFieldControl({
36
+ name,
37
+ label,
38
+ required,
39
+ helper,
40
+ className,
41
+ children
42
+ }) {
43
+ const { control } = useFormContext();
44
+ return /* @__PURE__ */ jsx(
45
+ Controller,
46
+ {
47
+ name,
48
+ control,
49
+ render: ({ field, fieldState }) => /* @__PURE__ */ jsx(
50
+ FormField,
51
+ {
52
+ id: String(name),
53
+ label,
54
+ required,
55
+ helper,
56
+ error: fieldState.error?.message,
57
+ className,
58
+ children: children({
59
+ id: String(name),
60
+ name: field.name,
61
+ value: field.value,
62
+ onChange: field.onChange,
63
+ onBlur: field.onBlur,
64
+ ref: field.ref
65
+ })
66
+ }
67
+ )
68
+ }
69
+ );
70
+ }
71
+
72
+ export { FormFieldControl, FormRoot, useZodForm };
package/dist/index.d.ts CHANGED
@@ -1,12 +1,11 @@
1
1
  export { B as BreadcrumbItem } from './navigation.prop-BKlxd-j7.js';
2
- export { F as FlexAlignProp, a as FlexDirectionProp, b as FlexJustifyProp, c as FlexProp, c as FlexProps, I as InlineProp, P as PageContainerProp, P as PageContainerProps, d as PageHeaderProp, i as StackProp } from './layout.prop-Baq9muDN.js';
3
- export { F as FilterBar, a as FilterGroup, P as PageHeader, T as Toolbar, b as ToolbarGroup } from './filter-bar-WjnQOs2C.js';
4
- export { F as Flex, I as Inline, P as PageContainer, S as Stack } from './inline-DqfYlGKj.js';
2
+ export { F as FlexAlignProp, a as FlexDirectionProp, b as FlexJustifyProp, c as FlexProp, c as FlexProps, 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';
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 './components/data-display/badge.js';
7
7
  export { C as ChoiceField, F as Field, a as FormField, S as SearchInput } from './search-input-cezAxpgb.js';
8
8
  export { a as SkeletonCard, b as SkeletonDetail, d as SkeletonRows, e as SkeletonStat, f as SkeletonTable } from './skeleton-uWAjSacg.js';
9
- export { AlertMutationFeedback, ButtonRefetch, DataState, InfiniteQueryState, MutationFeedback, PrefetchLink, QueryRefetchButton, flattenItemPages } from './components/query/index.js';
10
9
  export { Alert, AlertActions, AlertContent, AlertDescription, AlertQueryError, AlertTitle } from './components/feedback/alert.js';
11
10
  export { Upload, useUploadDraft } from './components/data-entry/upload.js';
12
11
  export { Cascader } from './components/data-entry/cascader.js';
@@ -20,12 +19,9 @@ export { Toaster } from './components/feedback/sonner.js';
20
19
  export { L as LegacyToastOptions, t as toast, u as useToast } from './use-toast-Dsw3yE2S.js';
21
20
  export { useDebouncedValue, useTimeoutFlag } from './lib/hooks.js';
22
21
  export { formatBytes, formatCurrency, formatDateLong, formatDateTime, formatRelative, humanError, shortId } from './components/admin/index.js';
23
- export { FormFieldControl, FormRoot, useZodForm } from './form/index.js';
24
- export { F as FieldErrorMessageProp, a as FormFieldControlProp, b as FormRootProp, U as UseZodFormOptionsProp, c as UseZodFormReturnProp, Z as ZodSchemaProp } from './form.prop-Bc6r6JJW.js';
25
22
  export { cn } from './lib/utils.js';
26
23
  export { F as FieldProps, L as collectUploadCommitActions, M as createUploadItem } from './data-entry.prop-CDkOajPj.js';
27
24
  export { c as AlertDialogProps } from './feedback.prop-BR5JOpPl.js';
28
- export { A as AlertMutationFeedbackProps, B as ButtonRefetchProps } from './query.prop-DuODxsiU.js';
29
25
  export { e as ToolbarGroupProps, f as ToolbarProps } from './navigation.prop-8DgElO0c.js';
30
26
  export { j as formatDate } from './format-date-ByyZoqI5.js';
31
27
  import './shared.prop-BsNSXeqD.js';
@@ -42,16 +38,11 @@ import '@radix-ui/react-tabs';
42
38
  import '@radix-ui/react-dialog';
43
39
  import '@radix-ui/react-alert-dialog';
44
40
  import 'sonner';
45
- import 'react-hook-form';
46
- import 'zod';
47
41
  import 'clsx';
48
42
  import '@radix-ui/react-checkbox';
49
43
  import '@radix-ui/react-radio-group';
50
44
  import '@radix-ui/react-slider';
51
45
  import '@radix-ui/react-switch';
52
46
  import 'react-day-picker';
53
- import '@tanstack/react-query';
54
- import 'react-router-dom';
55
- import './general.prop-DoHDCRmL.js';
56
47
  import 'date-fns';
57
48
  import './types-mvzYGrma.js';
package/dist/index.js CHANGED
@@ -1,50 +1,49 @@
1
- import './chunk-6YK3IJXW.js';
1
+ import './chunk-WFUIE252.js';
2
+ import './chunk-BHV2FUOA.js';
3
+ import './chunk-RSC5K7RP.js';
2
4
  import './chunk-FYM3MJSK.js';
3
- import './chunk-QLMXEJSY.js';
4
- import './chunk-6YBYAEXD.js';
5
- import './chunk-25RYBC5T.js';
6
5
  import './chunk-R2W2FX5Q.js';
7
6
  import './chunk-EOTOCNT7.js';
8
- import './chunk-3TS3G4U3.js';
9
- import './chunk-JKHWLPM5.js';
7
+ import './chunk-QLMXEJSY.js';
8
+ import './chunk-6YBYAEXD.js';
10
9
  import './chunk-LJLGABFV.js';
11
10
  import './chunk-N3JPLJ3B.js';
11
+ import './chunk-25RYBC5T.js';
12
+ import './chunk-JOLM73YQ.js';
12
13
  import './chunk-IOGU3ZWF.js';
13
- import './chunk-WFUIE252.js';
14
- import './chunk-BHV2FUOA.js';
15
- import './chunk-GKXPALFT.js';
16
- import './chunk-HKD6ERY7.js';
17
- export { FilterBar, FilterGroup, PageHeader, Toolbar, ToolbarGroup } from './chunk-ZY5NUG4B.js';
18
- import './chunk-HL3G4SVG.js';
14
+ import './chunk-3TS3G4U3.js';
15
+ import './chunk-JKHWLPM5.js';
16
+ import './chunk-LDSLS6HE.js';
17
+ export { FilterBar, FilterGroup, PageHeader, Toolbar, ToolbarGroup } from './chunk-32ZUUKML.js';
19
18
  import './chunk-B73NA66T.js';
20
19
  import './chunk-WGWI7EGL.js';
21
- export { Pagination } from './chunk-56NYZNVY.js';
20
+ export { Pagination } from './chunk-TBXQJCBQ.js';
22
21
  export { Steps } from './chunk-OJZ6C2HM.js';
23
22
  export { Tabs, TabsContent, TabsList, TabsTrigger } from './chunk-V3N266PT.js';
24
- export { PageContainer, Stack } from './chunk-CLU46QR2.js';
23
+ export { toast, useToast } from './chunk-B3WX53JQ.js';
24
+ export { SkeletonCard, SkeletonDetail, SkeletonRows, SkeletonStat, SkeletonTable } from './chunk-AINW5WYN.js';
25
+ export { Alert, AlertActions, AlertContent, AlertDescription, AlertQueryError, AlertTitle } from './chunk-ZRRLOOBX.js';
26
+ export { Toaster } from './chunk-TO7URV7U.js';
27
+ export { PageContainer, Stack } from './chunk-442ULAA6.js';
25
28
  import './chunk-FRU44GA2.js';
26
29
  import './chunk-TO33OY4L.js';
30
+ import './chunk-32WO3YLB.js';
27
31
  import './chunk-W4REF4TD.js';
28
- export { AlertMutationFeedback, ButtonRefetch, DataState, InfiniteQueryState, MutationFeedback, PrefetchLink, QueryRefetchButton, flattenItemPages } from './chunk-GLEEJYGQ.js';
32
+ import './chunk-HL3G4SVG.js';
29
33
  export { SearchInput, Transfer } from './chunk-INSF6K3Y.js';
30
34
  export { TreeSelect } from './chunk-6J7GRCDA.js';
31
- export { Upload, collectUploadCommitActions, createUploadItem, useUploadDraft } from './chunk-PIQXAOWS.js';
32
- import './chunk-CAEL2ZD2.js';
35
+ export { Upload, collectUploadCommitActions, createUploadItem, useUploadDraft } from './chunk-Z6HNY2PL.js';
36
+ export { formatBytes, formatCurrency, formatDateLong, formatDateTime, formatRelative, humanError, shortId } from './chunk-4R7QL3MW.js';
37
+ export { AlertDialog, Dialog, DialogConfirm, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from './chunk-P4HFJQID.js';
33
38
  import './chunk-CRERCLIZ.js';
39
+ import './chunk-2ACNEQOI.js';
40
+ import './chunk-GKED65NV.js';
34
41
  export { Cascader } from './chunk-HB2OHB5X.js';
35
42
  import './chunk-SMLKNECP.js';
36
43
  import './chunk-O24Z3ULJ.js';
37
44
  export { ChoiceField, Field } from './chunk-26CPAKUP.js';
38
- export { toast, useToast } from './chunk-B3WX53JQ.js';
39
- export { SkeletonCard, SkeletonDetail, SkeletonRows, SkeletonStat, SkeletonTable } from './chunk-AINW5WYN.js';
40
- import './chunk-32WO3YLB.js';
41
- export { Alert, AlertActions, AlertContent, AlertDescription, AlertQueryError, AlertTitle } from './chunk-ZRRLOOBX.js';
42
- export { formatBytes, formatCurrency, formatDateLong, formatDateTime, formatRelative, humanError, shortId } from './chunk-4R7QL3MW.js';
43
- export { AlertDialog, Dialog, DialogConfirm, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from './chunk-P4HFJQID.js';
44
- export { Toaster } from './chunk-TO7URV7U.js';
45
- import './chunk-KDBGFJJI.js';
46
- import './chunk-HTEL5DQI.js';
47
45
  import './chunk-VOHTRR5X.js';
46
+ import './chunk-HTEL5DQI.js';
48
47
  export { DataTable, Descriptions, EmptyState } from './chunk-JBHXILI4.js';
49
48
  import './chunk-DV52WNXO.js';
50
49
  export { Flex, Inline } from './chunk-TILFZBTE.js';
@@ -54,7 +53,6 @@ import './chunk-DY5C44UP.js';
54
53
  import './chunk-3KPEZ5CF.js';
55
54
  import './chunk-4MMIMZMK.js';
56
55
  import './chunk-IBK5D2Q6.js';
57
- export { FormFieldControl, FormRoot, useZodForm } from './chunk-7WRZG2IG.js';
58
56
  export { FormField } from './chunk-F7PG4OEV.js';
59
57
  import './chunk-7PWBC4BY.js';
60
58
  import './chunk-RLGHEV4A.js';
@@ -1,8 +1,8 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { P as PageContainerProp, e as PageInsetProp, c as FlexProp, i as StackProp, I as InlineProp } from './layout.prop-Baq9muDN.js';
2
+ import { P as PageContainerProp, e as PageInsetProp, c as FlexProp, i as StackProp, I as InlineProp } from './layout.prop-DwJKI6ka.js';
3
3
 
4
4
  declare function PageContainerInset({ className, children, ...props }: PageInsetProp): react_jsx_runtime.JSX.Element;
5
- declare function PageContainerRoot({ title, subtitle, extra, footer, breadcrumb, density, variant, stickyFooter, children, className, }: PageContainerProp): react_jsx_runtime.JSX.Element;
5
+ declare function PageContainerRoot({ title, subtitle, extra, footer, breadcrumb, linkComponent: LinkComponent, density, variant, stickyFooter, children, className, }: PageContainerProp): react_jsx_runtime.JSX.Element;
6
6
  declare const PageContainer: typeof PageContainerRoot & {
7
7
  Inset: typeof PageContainerInset;
8
8
  };
@@ -14,6 +14,7 @@ type PageContainerProp = {
14
14
  extra?: ExtraProp;
15
15
  footer?: FooterProp;
16
16
  breadcrumb?: BreadcrumbProp;
17
+ linkComponent?: React.ElementType;
17
18
  density?: PageDensityProp;
18
19
  variant?: PageContainerVariantProp;
19
20
  /** Pin footer to viewport bottom on scroll — pairs well with `variant="narrow"`. */
@@ -127,6 +128,7 @@ type PageHeaderProp = {
127
128
  title: TitleProp;
128
129
  description?: SubtitleProp;
129
130
  breadcrumb?: BreadcrumbProp;
131
+ linkComponent?: React.ElementType;
130
132
  actions?: ExtraProp;
131
133
  className?: ClassNameProp;
132
134
  };
@@ -1,9 +1,9 @@
1
- export { A as AppShellProp, I as InlineProp, P as PageContainerProp, d as PageHeaderProp, e as PageInsetProp, S as SidebarItemProp, f as SidebarProductProp, g as SidebarProp, h as SidebarSectionProp, i as StackProp, T as TopbarProductProp, j as TopbarProjectProp, k as TopbarProp } from '../../layout.prop-Baq9muDN.js';
1
+ export { A as AppShellProp, I as InlineProp, P as PageContainerProp, d as PageHeaderProp, e as PageInsetProp, S as SidebarItemProp, f as SidebarProductProp, g as SidebarProp, h as SidebarSectionProp, i as StackProp, T as TopbarProductProp, j as TopbarProjectProp, k as TopbarProp } from '../../layout.prop-DwJKI6ka.js';
2
2
  export { B as ButtonProp } from '../../general.prop-DoHDCRmL.js';
3
3
  export { A as AutocompleteOptionProp, a as AutocompleteProp, C as CalendarProp, b as CascaderProp, c as CheckboxGroupProp, d as CheckboxProp, f as ChoiceOptionProp, g as ColorPickerProp, D as DatePickerProp, k as DateRangePickerProp, l as FormFieldProp, I as InputProp, R as RadioGroupProp, m as RadioProp, S as SearchInputProp, s as ShowCheckedStrategyProp, t as SliderProp, u as SwitchProp, T as TextareaProp, v as TimePickerProp, w as TransferItemProp, x as TransferProp, y as TreeFieldNamesProp, z as TreeOptionProp, B as TreeSelectProp, G as UploadFileItemProp, H as UploadProp, K as UploadVariantProp } from '../../data-entry.prop-CDkOajPj.js';
4
4
  export { B as BadgeProp, D as DataTableProp, a as DescriptionsItemProp, b as DescriptionsProp, E as EmptyStateProp } from '../../data-display.prop-Cf2p9QC4.js';
5
5
  export { A as AlertActionsProp, a as AlertContentProp, b as AlertDescriptionProp, d as AlertProp, e as AlertQueryErrorProp, f as AlertTitleProp, D as DialogConfirmProp, S as SkeletonRowsProp } from '../../feedback.prop-BR5JOpPl.js';
6
- export { D as DataStateProp, I as InfiniteQueryHelpers, a as InfiniteQueryStateProp, M as MutationFeedbackProp, P as PrefetchLinkProp, Q as QueryRefetchButtonProp } from '../../query.prop-DuODxsiU.js';
6
+ export { D as DataStateProp, I as InfiniteQueryHelpers, a as InfiniteQueryStateProp, M as MutationFeedbackProp, P as PrefetchLinkProp, Q as QueryRefetchButtonProp } from '../../query.prop-BDdz9L1G.js';
7
7
  export { F as FilterBarProp, a as FilterGroupProp, P as PaginationProp, S as StepItemProp, b as StepStatusProp, c as StepsProp, T as TabItemProp, d as TabsProp } from '../../navigation.prop-8DgElO0c.js';
8
8
  export { A as AppContextValue, a as AppProviderProp, D as DateFormatPickerProp, L as LocalePickerProp, T as TimeFormatPickerProp, b as TimezonePickerProp } from '../../app.prop-DnIXFzLi.js';
9
9
  export { F as FieldErrorMessageProp, a as FormFieldControlProp, b as FormRootProp, U as UseZodFormOptionsProp, c as UseZodFormReturnProp, Z as ZodSchemaProp } from '../../form.prop-Bc6r6JJW.js';
@@ -4,12 +4,12 @@ export { D as DensityProp, G as GapProp, P as PageContainerVariantProp, a as Pag
4
4
  export { A as AlertVariantProp, B as ButtonSizeProp, a as ButtonVariantProp, C as ColumnAlignProp, b as ConfirmVariantProp, S as SizeProp, c as SortDirectionProp, d as SortStateProp, T as ToneProp } from '../interaction.prop-DSFizzP6.js';
5
5
  export { B as BreadcrumbItem, B as BreadcrumbItemProp, a as BreadcrumbProp } from '../navigation.prop-BKlxd-j7.js';
6
6
  export { C as ColumnDef, C as ColumnDefProp, G as GetRowIdProp, H as HasActiveFiltersProp, O as OnClearFiltersProp, a as OnRowClickProp, b as OnSearchChangeProp, c as OnSelectChangeProp, d as OnSortChangeProp, e as OnTableDensityChangeProp, S as SelectedIdsProp } from '../data.prop-DMYMNl6L.js';
7
- export { A as AppShellProp, I as InlineProp, I as InlineProps, P as PageContainerProp, P as PageContainerProps, d as PageHeaderProp, e as PageInsetProp, S as SidebarItemProp, f as SidebarProductProp, g as SidebarProp, h as SidebarSectionProp, i as StackProp, i as StackProps, T as TopbarProductProp, j as TopbarProjectProp, k as TopbarProp } from '../layout.prop-Baq9muDN.js';
7
+ export { A as AppShellProp, I as InlineProp, I as InlineProps, P as PageContainerProp, P as PageContainerProps, d as PageHeaderProp, e as PageInsetProp, S as SidebarItemProp, f as SidebarProductProp, g as SidebarProp, h as SidebarSectionProp, i as StackProp, i as StackProps, T as TopbarProductProp, j as TopbarProjectProp, k as TopbarProp } from '../layout.prop-DwJKI6ka.js';
8
8
  export { B as ButtonProp, B as ButtonProps } from '../general.prop-DoHDCRmL.js';
9
9
  export { A as AutocompleteOptionProp, a as AutocompleteProp, C as CalendarProp, b as CascaderProp, c as CheckboxGroupProp, d as CheckboxProp, f as ChoiceOptionProp, g as ColorPickerProp, D as DatePickerProp, k as DateRangePickerProp, l as FormFieldProp, I as InputProp, R as RadioGroupProp, m as RadioProp, S as SearchInputProp, s as ShowCheckedStrategyProp, t as SliderProp, u as SwitchProp, T as TextareaProp, v as TimePickerProp, w as TransferItemProp, x as TransferProp, y as TreeFieldNamesProp, z as TreeOptionProp, B as TreeSelectProp, G as UploadFileItemProp, H as UploadProp, K as UploadVariantProp } from '../data-entry.prop-CDkOajPj.js';
10
10
  export { B as BadgeProp, D as DataTableProp, a as DescriptionsItemProp, b as DescriptionsProp, E as EmptyStateProp } from '../data-display.prop-Cf2p9QC4.js';
11
11
  export { A as AlertActionsProp, a as AlertContentProp, b as AlertDescriptionProp, d as AlertProp, e as AlertQueryErrorProp, f as AlertTitleProp, D as DialogConfirmProp, S as SkeletonRowsProp } from '../feedback.prop-BR5JOpPl.js';
12
- export { D as DataStateProp, I as InfiniteQueryHelpers, a as InfiniteQueryStateProp, M as MutationFeedbackProp, P as PrefetchLinkProp, Q as QueryRefetchButtonProp } from '../query.prop-DuODxsiU.js';
12
+ export { D as DataStateProp, I as InfiniteQueryHelpers, a as InfiniteQueryStateProp, M as MutationFeedbackProp, P as PrefetchLinkProp, Q as QueryRefetchButtonProp } from '../query.prop-BDdz9L1G.js';
13
13
  export { F as FilterBarProp, a as FilterGroupProp, P as PaginationProp, S as StepItemProp, b as StepStatusProp, c as StepsProp, T as TabItemProp, d as TabsProp } from '../navigation.prop-8DgElO0c.js';
14
14
  export { A as AppContextValue, a as AppProviderProp, D as DateFormatPickerProp, L as LocalePickerProp, T as TimeFormatPickerProp, b as TimezonePickerProp } from '../app.prop-DnIXFzLi.js';
15
15
  export { F as FieldErrorMessageProp, a as FormFieldControlProp, b as FormRootProp, U as UseZodFormOptionsProp, c as UseZodFormReturnProp, Z as ZodSchemaProp } from '../form.prop-Bc6r6JJW.js';
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { UseMutationResult, UseQueryResult, UseInfiniteQueryResult, InfiniteData, QueryKey } from '@tanstack/react-query';
2
+ import { UseQueryResult, UseInfiniteQueryResult, InfiniteData, UseMutationResult, QueryKey } from '@tanstack/react-query';
3
3
  import { LinkProps } from 'react-router-dom';
4
4
  import { B as ButtonProp } from './general.prop-DoHDCRmL.js';
5
5
  import { H as HandlerProp, a as ClassNameProp } from './shared.prop-BsNSXeqD.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@godxjp/ui",
3
- "version": "8.3.0",
3
+ "version": "9.0.0",
4
4
  "type": "module",
5
5
  "description": "@godxjp/ui — shared React UI framework (shadcn + Radix + Tailwind v4).",
6
6
  "files": [
@@ -267,12 +267,13 @@
267
267
  "test": "vitest run",
268
268
  "test:watch": "vitest",
269
269
  "test:coverage": "vitest run --coverage",
270
- "verify": "pnpm typecheck && pnpm lint && pnpm format && pnpm check:prop-vocabulary && pnpm check:token-tiers && pnpm check:mcp-sync && pnpm check:mcp-orphans && pnpm test",
271
- "verify:release": "pnpm typecheck && pnpm lint && pnpm check:prop-vocabulary && pnpm check:token-tiers && pnpm check:mcp-sync && pnpm check:mcp-orphans && pnpm build && pnpm test",
270
+ "verify": "pnpm typecheck && pnpm lint && pnpm format && pnpm build && pnpm check:core-isolation && pnpm check:prop-vocabulary && pnpm check:token-tiers && pnpm check:mcp-sync && pnpm check:mcp-orphans && pnpm test",
271
+ "verify:release": "pnpm typecheck && pnpm lint && pnpm build && pnpm check:core-isolation && pnpm check:prop-vocabulary && pnpm check:token-tiers && pnpm check:mcp-sync && pnpm check:mcp-orphans && pnpm test",
272
272
  "check:mcp-sync": "node scripts/check-mcp-sync.mjs",
273
273
  "check:mcp-orphans": "node scripts/check-mcp-orphans.mjs",
274
274
  "check:prop-vocabulary": "node scripts/check-prop-vocabulary.mjs",
275
275
  "check:token-tiers": "node scripts/check-token-tiers.mjs",
276
+ "check:core-isolation": "node scripts/check-core-isolation.mjs",
276
277
  "release": "node scripts/release.mjs",
277
278
  "preview": "node preview/scripts/kill-port.mjs && vite --config preview/vite.config.ts --port 6008 --strictPort",
278
279
  "preview:build": "vite build --config preview/vite.config.ts",
@@ -1,71 +0,0 @@
1
- import { FormField } from './chunk-F7PG4OEV.js';
2
- import { cn } from './chunk-U7N2A7A3.js';
3
- import { useForm, FormProvider, useFormContext, Controller } from 'react-hook-form';
4
- import { zodResolver } from '@hookform/resolvers/zod';
5
- import { jsx } from 'react/jsx-runtime';
6
-
7
- function useZodForm(schema, options) {
8
- return useForm({
9
- ...options,
10
- // zodResolver + Zod 4 inference gap — runtime types are correct.
11
- resolver: zodResolver(schema)
12
- });
13
- }
14
- function FormRoot({
15
- form,
16
- onSubmit,
17
- children,
18
- className,
19
- id
20
- }) {
21
- return /* @__PURE__ */ jsx(FormProvider, { ...form, children: /* @__PURE__ */ jsx(
22
- "form",
23
- {
24
- id,
25
- className: cn("ui-stack-md", className),
26
- onSubmit: (event) => {
27
- void form.handleSubmit((values) => onSubmit(values))(event);
28
- },
29
- noValidate: true,
30
- children
31
- }
32
- ) });
33
- }
34
- function FormFieldControl({
35
- name,
36
- label,
37
- required,
38
- helper,
39
- className,
40
- children
41
- }) {
42
- const { control } = useFormContext();
43
- return /* @__PURE__ */ jsx(
44
- Controller,
45
- {
46
- name,
47
- control,
48
- render: ({ field, fieldState }) => /* @__PURE__ */ jsx(
49
- FormField,
50
- {
51
- id: String(name),
52
- label,
53
- required,
54
- helper,
55
- error: fieldState.error?.message,
56
- className,
57
- children: children({
58
- id: String(name),
59
- name: field.name,
60
- value: field.value,
61
- onChange: field.onChange,
62
- onBlur: field.onBlur,
63
- ref: field.ref
64
- })
65
- }
66
- )
67
- }
68
- );
69
- }
70
-
71
- export { FormFieldControl, FormRoot, useZodForm };