@object-ui/components 17.5.0 → 17.7.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 (73) hide show
  1. package/CHANGELOG.md +10155 -0
  2. package/README.md +20 -10
  3. package/dist/custom/button-group.d.ts +2 -2
  4. package/dist/custom/character-count.d.ts +56 -0
  5. package/dist/custom/combobox.d.ts +2 -4
  6. package/dist/custom/config-field-renderer.d.ts +1 -1
  7. package/dist/custom/config-panel-renderer.d.ts +3 -3
  8. package/dist/custom/empty.d.ts +16 -4
  9. package/dist/custom/field.d.ts +1 -1
  10. package/dist/custom/filter-builder.d.ts +448 -36
  11. package/dist/custom/fullscreen-editor.d.ts +48 -2
  12. package/dist/custom/index.d.ts +27 -28
  13. package/dist/custom/item.d.ts +2 -2
  14. package/dist/custom/kbd.d.ts +1 -1
  15. package/dist/custom/mobile-dialog-content.d.ts +22 -1
  16. package/dist/custom/navigation-overlay.d.ts +105 -0
  17. package/dist/custom/refresh-indicator.d.ts +8 -2
  18. package/dist/custom/resizable.d.ts +1 -1
  19. package/dist/custom/view-states.d.ts +74 -1
  20. package/dist/debug/index.d.ts +2 -2
  21. package/dist/hooks/related-count-store.d.ts +26 -28
  22. package/dist/index.css +174 -364
  23. package/dist/index.d.ts +21 -21
  24. package/dist/index.js +7274 -6350
  25. package/dist/index.umd.cjs +12 -13
  26. package/dist/lib/close-label.d.ts +1 -2
  27. package/dist/lib/date-fns-locale.d.ts +41 -0
  28. package/dist/lib/form-control-dom-props.d.ts +77 -0
  29. package/dist/lib/lazy-icon.d.ts +32 -1
  30. package/dist/lib/lucide-record-icon-names.d.ts +30 -0
  31. package/dist/lib/slider-thumb.d.ts +86 -0
  32. package/dist/lib/utils.d.ts +113 -0
  33. package/dist/notifications/index.d.ts +5 -5
  34. package/dist/renderers/action/action-bar.d.ts +8 -36
  35. package/dist/renderers/action/action-button.d.ts +15 -4
  36. package/dist/renderers/action/action-group.d.ts +5 -4
  37. package/dist/renderers/action/action-icon.d.ts +12 -2
  38. package/dist/renderers/action/action-menu.d.ts +5 -2
  39. package/dist/renderers/action/auto-trigger.d.ts +19 -4
  40. package/dist/renderers/action/resolve-icon.d.ts +27 -2
  41. package/dist/renderers/action/static-params.d.ts +79 -0
  42. package/dist/renderers/action/visibility-gate.d.ts +11 -3
  43. package/dist/renderers/basic/elements.d.ts +6 -3
  44. package/dist/renderers/basic/html-elements.d.ts +8 -4
  45. package/dist/renderers/basic/readProps.d.ts +60 -0
  46. package/dist/renderers/complex/data-table.d.ts +31 -14
  47. package/dist/renderers/complex/dataTableBindDiagnostic.d.ts +187 -0
  48. package/dist/renderers/form/validationRuleKeys.d.ts +45 -0
  49. package/dist/renderers/layout/box.d.ts +8 -0
  50. package/dist/renderers/layout/containers.d.ts +1 -10
  51. package/dist/renderers/layout/react-page.d.ts +16 -2
  52. package/dist/renderers/navigation/sidebar.d.ts +31 -0
  53. package/dist/share/index.d.ts +2 -2
  54. package/dist/ui/badge.d.ts +1 -1
  55. package/dist/ui/button.d.ts +1 -1
  56. package/dist/ui/calendar.d.ts +3 -2
  57. package/dist/ui/carousel.d.ts +2 -2
  58. package/dist/ui/command.d.ts +8 -8
  59. package/dist/ui/form.d.ts +1 -1
  60. package/dist/ui/index.d.ts +46 -47
  61. package/dist/ui/input-otp.d.ts +2 -2
  62. package/dist/ui/pagination.d.ts +1 -1
  63. package/dist/ui/sheet.d.ts +1 -1
  64. package/dist/ui/sidebar.d.ts +4 -3
  65. package/dist/ui/slider.d.ts +2 -1
  66. package/package.json +17 -18
  67. package/dist/SchemaRenderer.d.ts +0 -4
  68. package/dist/custom/action-param-dialog.d.ts +0 -21
  69. package/dist/custom/export-progress-dialog.d.ts +0 -43
  70. package/dist/hooks/use-export-job.d.ts +0 -34
  71. package/dist/renderers/data-display/table.d.ts +0 -2
  72. package/dist/ui/chart.d.ts +0 -56
  73. package/dist/ui/toast.d.ts +0 -22
@@ -21,11 +21,25 @@
21
21
  * - `React` — so authors can call hooks.
22
22
  * - the PUBLIC data blocks — `<ObjectGrid>`, `<ObjectForm>`, charts, metrics…
23
23
  * each as a prop-driven wrapper that renders via SchemaRenderer. Layout is
24
- * left to plain HTML + Tailwind (React's strength); only the data blocks
25
- * that can't be expressed in HTML are injected.
24
+ * left to plain HTML (React's strength); only the data blocks that can't be
25
+ * expressed in HTML are injected.
26
26
  * - `Block` — escape hatch: `<Block type="object-grid" .../>`.
27
27
  * - `useAdapter` — live data hook: query/create/update objects.
28
+ * - `useDataInvalidation` — the data-invalidation bus reader: a nonce that
29
+ * moves when a write to the named object is reported on the bus. A page
30
+ * names it in the effect that reads through `useAdapter`, so that read
31
+ * re-runs in place (objectui#10887).
28
32
  * - `data` / `variables` — page data + local variables, for convenience.
33
+ *
34
+ * Styling — page source is metadata, not build input. A react page styles with
35
+ * inline `style` objects using `hsl(var(--token))` theme colors; overlays render
36
+ * through `<ObjectForm formType="drawer"|"modal">` rather than a hand-rolled
37
+ * `fixed inset-0` backdrop. Do NOT author Tailwind utility classes in page
38
+ * `source`: `source` is runtime metadata, the console's Tailwind is compiled at
39
+ * build time by scanning the console's own `src`, and there is no safelist — an
40
+ * authored utility class silently produces no CSS. `os validate` reports it as
41
+ * `page-source-className-tailwind`. (ADR-0065; ADR-0080's 2026-06-30 amendment;
42
+ * see `content/docs/guide/react-pages.md`.)
29
43
  */
30
44
  import * as React from 'react';
31
45
  export declare const ReactKindPage: React.FC<{
@@ -6,3 +6,34 @@
6
6
  * LICENSE file in the root directory of this source tree.
7
7
  */
8
8
  export {};
9
+ /**
10
+ * ⛔ The ten `sidebar-*` node type keys are RETIRED (objectui#10859 batch 8,
11
+ * phase 2d, the seat's fork ruling on that card, by the objectui#10393 /
12
+ * objectui#8760 route): `sidebar-provider`, `sidebar-header`,
13
+ * `sidebar-content`, `sidebar-group`, `sidebar-menu`, `sidebar-menu-item`,
14
+ * `sidebar-menu-button`, `sidebar-footer`, `sidebar-inset` and
15
+ * `sidebar-trigger`. The shadcn components behind them (`SidebarProvider`,
16
+ * `SidebarHeader`, `SidebarMenuButton`, `SidebarTrigger` and the rest) stay
17
+ * exported from `../../ui` for JSX composition; only the node keys went.
18
+ *
19
+ * ## What was here, and why it went
20
+ *
21
+ * Ten registrations in the `ui` namespace, one per shadcn part, each storing
22
+ * `ui:KEY` and the bare `KEY` fallback. (Described rather than quoted: source
23
+ * readers such as `@object-ui/types`' node-slot test take a quoted call in a
24
+ * comment for a live one.) Nine rendered their child list into the matching
25
+ * shadcn part; `sidebar-group` also drew a resolved `label`,
26
+ * `sidebar-menu-button` passed `size` / `tooltip` through the form-control DOM
27
+ * declaration, and `sidebar-trigger` rendered the collapse button and no child
28
+ * list. No `@object-ui/types` arm claims any of them, so `objectui validate`
29
+ * refused each at `type` while the registry mounted it.
30
+ *
31
+ * ## Why unregistering is the whole retirement
32
+ *
33
+ * The mainstream ships one app-level sidebar region, not author-composable
34
+ * parts (the seat's ruling), and nothing wrote these nodes except the four
35
+ * `components-basic-sidebar` catalog documents, rewritten in the same change to
36
+ * the `sidebar` node above, which now supplies its own provider. Re-measured
37
+ * for phase 2d: 0 other producers in source, docs, examples or objectstack, and
38
+ * 0 runtime emission.
39
+ */
@@ -1,2 +1,2 @@
1
- export { ShareDialog, type ShareDialogProps, type ShareLink, type ShareLinkAudience, type ShareLinkPermission, } from './ShareDialog';
2
- export { default } from './ShareDialog';
1
+ export { ShareDialog, type ShareDialogProps, type ShareLink, type ShareLinkAudience, type ShareLinkPermission, } from './ShareDialog.js';
2
+ export { default } from './ShareDialog.js';
@@ -8,7 +8,7 @@ import { VariantProps } from 'class-variance-authority';
8
8
  */
9
9
  import * as React from "react";
10
10
  declare const badgeVariants: (props?: ({
11
- variant?: "default" | "destructive" | "outline" | "secondary" | null | undefined;
11
+ variant?: "default" | "secondary" | "outline" | "destructive" | null | undefined;
12
12
  } & import('class-variance-authority/types').ClassProp) | undefined) => string;
13
13
  export interface BadgeProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {
14
14
  }
@@ -8,7 +8,7 @@ import { VariantProps } from 'class-variance-authority';
8
8
  */
9
9
  import * as React from "react";
10
10
  declare const buttonVariants: (props?: ({
11
- variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
11
+ variant?: "link" | "default" | "secondary" | "outline" | "ghost" | "destructive" | null | undefined;
12
12
  size?: "default" | "sm" | "lg" | "icon" | null | undefined;
13
13
  } & import('class-variance-authority/types').ClassProp) | undefined) => string;
14
14
  export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
@@ -1,5 +1,6 @@
1
1
  import { DayButton, DayPicker } from 'react-day-picker';
2
- import { Button } from './button';
2
+ import { CalendarLocaleTagProps } from '../lib/date-fns-locale.js';
3
+ import { Button } from './button.js';
3
4
  /**
4
5
  * ObjectUI
5
6
  * Copyright (c) 2024-present ObjectStack Inc.
@@ -8,7 +9,7 @@ import { Button } from './button';
8
9
  * LICENSE file in the root directory of this source tree.
9
10
  */
10
11
  import * as React from "react";
11
- declare function Calendar({ className, classNames, showOutsideDays, captionLayout, buttonVariant, formatters, components, ...props }: React.ComponentProps<typeof DayPicker> & {
12
+ declare function Calendar({ className, classNames, showOutsideDays, captionLayout, buttonVariant, formatters, components, localeTag, ...props }: React.ComponentProps<typeof DayPicker> & CalendarLocaleTagProps & {
12
13
  buttonVariant?: React.ComponentProps<typeof Button>["variant"];
13
14
  }): React.JSX.Element;
14
15
  declare function CalendarDayButton({ className, day, modifiers, ...props }: React.ComponentProps<typeof DayButton>): React.JSX.Element;
@@ -20,6 +20,6 @@ type CarouselProps = {
20
20
  declare const Carousel: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & CarouselProps & React.RefAttributes<HTMLDivElement>>;
21
21
  declare const CarouselContent: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
22
22
  declare const CarouselItem: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
23
- declare const CarouselPrevious: React.ForwardRefExoticComponent<Omit<import('./button').ButtonProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
24
- declare const CarouselNext: React.ForwardRefExoticComponent<Omit<import('./button').ButtonProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
23
+ declare const CarouselPrevious: React.ForwardRefExoticComponent<Omit<import('./button.js').ButtonProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
24
+ declare const CarouselNext: React.ForwardRefExoticComponent<Omit<import('./button.js').ButtonProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
25
25
  export { type CarouselApi, Carousel, CarouselContent, CarouselItem, CarouselPrevious, CarouselNext, };
@@ -1,5 +1,5 @@
1
1
  import { DialogProps } from '@radix-ui/react-dialog';
2
- import { DialogContent } from './dialog';
2
+ import { DialogContent } from './dialog.js';
3
3
  /**
4
4
  * ObjectUI
5
5
  * Copyright (c) 2024-present ObjectStack Inc.
@@ -33,7 +33,7 @@ declare const Command: React.ForwardRefExoticComponent<Omit<{
33
33
  ref?: React.Ref<HTMLDivElement>;
34
34
  } & {
35
35
  asChild?: boolean;
36
- }, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & {
36
+ }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & {
37
37
  label?: string;
38
38
  shouldFilter?: boolean;
39
39
  filter?: (value: string, search: string, keywords?: string[]) => number;
@@ -49,7 +49,7 @@ declare const CommandInput: React.ForwardRefExoticComponent<Omit<Omit<Pick<Pick<
49
49
  ref?: React.Ref<HTMLInputElement>;
50
50
  } & {
51
51
  asChild?: boolean;
52
- }, "key" | "asChild" | keyof React.InputHTMLAttributes<HTMLInputElement>>, "type" | "onChange" | "value"> & {
52
+ }, "key" | "asChild" | keyof React.InputHTMLAttributes<HTMLInputElement>>, "type" | "value" | "onChange"> & {
53
53
  value?: string;
54
54
  onValueChange?: (search: string) => void;
55
55
  } & React.RefAttributes<HTMLInputElement>, "ref"> & React.RefAttributes<HTMLInputElement>>;
@@ -59,7 +59,7 @@ declare const CommandList: React.ForwardRefExoticComponent<Omit<{
59
59
  ref?: React.Ref<HTMLDivElement>;
60
60
  } & {
61
61
  asChild?: boolean;
62
- }, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & {
62
+ }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & {
63
63
  label?: string;
64
64
  } & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
65
65
  declare const CommandEmpty: React.ForwardRefExoticComponent<Omit<{
@@ -68,14 +68,14 @@ declare const CommandEmpty: React.ForwardRefExoticComponent<Omit<{
68
68
  ref?: React.Ref<HTMLDivElement>;
69
69
  } & {
70
70
  asChild?: boolean;
71
- }, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
71
+ }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
72
72
  declare const CommandGroup: React.ForwardRefExoticComponent<Omit<{
73
73
  children?: React.ReactNode;
74
74
  } & Omit<Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
75
75
  ref?: React.Ref<HTMLDivElement>;
76
76
  } & {
77
77
  asChild?: boolean;
78
- }, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild">, "heading" | "value"> & {
78
+ }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>>, "value" | "heading"> & {
79
79
  heading?: React.ReactNode;
80
80
  value?: string;
81
81
  forceMount?: boolean;
@@ -84,7 +84,7 @@ declare const CommandSeparator: React.ForwardRefExoticComponent<Omit<Pick<Pick<R
84
84
  ref?: React.Ref<HTMLDivElement>;
85
85
  } & {
86
86
  asChild?: boolean;
87
- }, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & {
87
+ }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & {
88
88
  alwaysRender?: boolean;
89
89
  } & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
90
90
  declare const CommandItem: React.ForwardRefExoticComponent<Omit<{
@@ -93,7 +93,7 @@ declare const CommandItem: React.ForwardRefExoticComponent<Omit<{
93
93
  ref?: React.Ref<HTMLDivElement>;
94
94
  } & {
95
95
  asChild?: boolean;
96
- }, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild">, "onSelect" | "disabled" | "value"> & {
96
+ }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>>, "disabled" | "value" | "onSelect"> & {
97
97
  disabled?: boolean;
98
98
  onSelect?: (value: string) => void;
99
99
  value?: string;
package/dist/ui/form.d.ts CHANGED
@@ -15,7 +15,7 @@ declare const useFormField: () => {
15
15
  isDirty: boolean;
16
16
  isTouched: boolean;
17
17
  isValidating: boolean;
18
- error?: import('react-hook-form').FieldError;
18
+ error?: import('react-hook-form').FieldError | undefined;
19
19
  id: string;
20
20
  name: string;
21
21
  formItemId: string;
@@ -5,50 +5,49 @@
5
5
  * This source code is licensed under the MIT license found in the
6
6
  * LICENSE file in the root directory of this source tree.
7
7
  */
8
- export * from './accordion';
9
- export * from './alert-dialog';
10
- export * from './alert';
11
- export * from './aspect-ratio';
12
- export * from './avatar';
13
- export * from './badge';
14
- export * from './breadcrumb';
15
- export * from './button';
16
- export * from './calendar';
17
- export * from './card';
18
- export * from './carousel';
19
- export * from './chart';
20
- export * from './checkbox';
21
- export * from './collapsible';
22
- export * from './command';
23
- export * from './context-menu';
24
- export * from './dialog';
25
- export * from './drawer';
26
- export * from './dropdown-menu';
27
- export * from './form';
28
- export * from './hover-card';
29
- export * from './input-otp';
30
- export * from './input';
31
- export * from './label';
32
- export * from './menubar';
33
- export * from './navigation-menu';
34
- export * from './pagination';
35
- export * from './popover';
36
- export * from './progress';
37
- export * from './radio-group';
38
- export * from './scroll-area';
39
- export * from './select';
40
- export * from './separator';
41
- export * from './sheet';
42
- export * from './sidebar';
43
- export * from './skeleton';
44
- export * from './slider';
45
- export * from './sonner';
46
- export { Toaster } from './sonner';
47
- export * from './switch';
48
- export * from './table';
49
- export * from './tabs';
50
- export * from './textarea';
51
- export * from './toggle-group';
52
- export * from './toggle';
53
- export * from './tooltip';
54
- export * from './typography';
8
+ export * from './accordion.js';
9
+ export * from './alert-dialog.js';
10
+ export * from './alert.js';
11
+ export * from './aspect-ratio.js';
12
+ export * from './avatar.js';
13
+ export * from './badge.js';
14
+ export * from './breadcrumb.js';
15
+ export * from './button.js';
16
+ export * from './calendar.js';
17
+ export * from './card.js';
18
+ export * from './carousel.js';
19
+ export * from './checkbox.js';
20
+ export * from './collapsible.js';
21
+ export * from './command.js';
22
+ export * from './context-menu.js';
23
+ export * from './dialog.js';
24
+ export * from './drawer.js';
25
+ export * from './dropdown-menu.js';
26
+ export * from './form.js';
27
+ export * from './hover-card.js';
28
+ export * from './input-otp.js';
29
+ export * from './input.js';
30
+ export * from './label.js';
31
+ export * from './menubar.js';
32
+ export * from './navigation-menu.js';
33
+ export * from './pagination.js';
34
+ export * from './popover.js';
35
+ export * from './progress.js';
36
+ export * from './radio-group.js';
37
+ export * from './scroll-area.js';
38
+ export * from './select.js';
39
+ export * from './separator.js';
40
+ export * from './sheet.js';
41
+ export * from './sidebar.js';
42
+ export * from './skeleton.js';
43
+ export * from './slider.js';
44
+ export * from './sonner.js';
45
+ export { Toaster } from './sonner.js';
46
+ export * from './switch.js';
47
+ export * from './table.js';
48
+ export * from './tabs.js';
49
+ export * from './textarea.js';
50
+ export * from './toggle-group.js';
51
+ export * from './toggle.js';
52
+ export * from './tooltip.js';
53
+ export * from './typography.js';
@@ -6,7 +6,7 @@
6
6
  * LICENSE file in the root directory of this source tree.
7
7
  */
8
8
  import * as React from "react";
9
- declare const InputOTP: React.ForwardRefExoticComponent<(Omit<Omit<React.InputHTMLAttributes<HTMLInputElement>, "onChange" | "value" | "maxLength" | "textAlign" | "onComplete" | "pushPasswordManagerStrategy" | "pasteTransformer" | "containerClassName" | "noScriptCSSFallback"> & {
9
+ declare const InputOTP: React.ForwardRefExoticComponent<(Omit<Omit<React.InputHTMLAttributes<HTMLInputElement>, "value" | "onChange" | "maxLength" | "textAlign" | "onComplete" | "pushPasswordManagerStrategy" | "pasteTransformer" | "containerClassName" | "noScriptCSSFallback"> & {
10
10
  value?: string;
11
11
  onChange?: (newValue: string) => unknown;
12
12
  maxLength: number;
@@ -19,7 +19,7 @@ declare const InputOTP: React.ForwardRefExoticComponent<(Omit<Omit<React.InputHT
19
19
  } & {
20
20
  render: (props: import('input-otp').RenderProps) => React.ReactNode;
21
21
  children?: never;
22
- } & React.RefAttributes<HTMLInputElement>, "ref"> | Omit<Omit<React.InputHTMLAttributes<HTMLInputElement>, "onChange" | "value" | "maxLength" | "textAlign" | "onComplete" | "pushPasswordManagerStrategy" | "pasteTransformer" | "containerClassName" | "noScriptCSSFallback"> & {
22
+ } & React.RefAttributes<HTMLInputElement>, "ref"> | Omit<Omit<React.InputHTMLAttributes<HTMLInputElement>, "value" | "onChange" | "maxLength" | "textAlign" | "onComplete" | "pushPasswordManagerStrategy" | "pasteTransformer" | "containerClassName" | "noScriptCSSFallback"> & {
23
23
  value?: string;
24
24
  onChange?: (newValue: string) => unknown;
25
25
  maxLength: number;
@@ -1,4 +1,4 @@
1
- import { ButtonProps } from './button';
1
+ import { ButtonProps } from './button.js';
2
2
  /**
3
3
  * ObjectUI
4
4
  * Copyright (c) 2024-present ObjectStack Inc.
@@ -14,7 +14,7 @@ declare const SheetClose: React.ForwardRefExoticComponent<SheetPrimitive.DialogC
14
14
  declare const SheetPortal: React.FC<SheetPrimitive.DialogPortalProps>;
15
15
  declare const SheetOverlay: React.ForwardRefExoticComponent<Omit<SheetPrimitive.DialogOverlayProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
16
16
  declare const sheetVariants: (props?: ({
17
- side?: "left" | "right" | "top" | "bottom" | null | undefined;
17
+ side?: "top" | "bottom" | "left" | "right" | null | undefined;
18
18
  } & import('class-variance-authority/types').ClassProp) | undefined) => string;
19
19
  interface SheetContentProps extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>, VariantProps<typeof sheetVariants> {
20
20
  hideOverlay?: boolean;
@@ -1,5 +1,5 @@
1
1
  import { VariantProps } from 'class-variance-authority';
2
- import { TooltipContent } from './tooltip';
2
+ import { TooltipContent } from './tooltip.js';
3
3
  /**
4
4
  * ObjectUI
5
5
  * Copyright (c) 2024-present ObjectStack Inc.
@@ -18,6 +18,7 @@ type SidebarContextProps = {
18
18
  toggleSidebar: () => void;
19
19
  };
20
20
  declare function useSidebar(): SidebarContextProps;
21
+ declare function useOptionalSidebar(): SidebarContextProps | null;
21
22
  declare const SidebarProvider: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement> & {
22
23
  defaultOpen?: boolean;
23
24
  open?: boolean;
@@ -28,7 +29,7 @@ declare const Sidebar: React.ForwardRefExoticComponent<Omit<React.ClassAttribute
28
29
  variant?: "sidebar" | "floating" | "inset";
29
30
  collapsible?: "offcanvas" | "icon" | "none";
30
31
  }, "ref"> & React.RefAttributes<HTMLDivElement>>;
31
- declare const SidebarTrigger: React.ForwardRefExoticComponent<Omit<import('./button').ButtonProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
32
+ declare const SidebarTrigger: React.ForwardRefExoticComponent<Omit<import('./button.js').ButtonProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
32
33
  declare const SidebarRail: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
33
34
  declare const SidebarInset: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
34
35
  declare const SidebarInput: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "ref"> & React.RefAttributes<HTMLInputElement>, "ref"> & React.RefAttributes<HTMLInputElement>>;
@@ -69,4 +70,4 @@ declare const SidebarMenuSubButton: React.ForwardRefExoticComponent<Omit<React.C
69
70
  size?: "sm" | "md";
70
71
  isActive?: boolean;
71
72
  }, "ref"> & React.RefAttributes<HTMLAnchorElement>>;
72
- export { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, useSidebar, };
73
+ export { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, useSidebar, useOptionalSidebar, };
@@ -1,3 +1,4 @@
1
+ import { SliderThumbPassThrough } from '../lib/slider-thumb.js';
1
2
  /**
2
3
  * ObjectUI
3
4
  * Copyright (c) 2024-present ObjectStack Inc.
@@ -7,5 +8,5 @@
7
8
  */
8
9
  import * as React from "react";
9
10
  import * as SliderPrimitive from "@radix-ui/react-slider";
10
- declare const Slider: React.ForwardRefExoticComponent<Omit<SliderPrimitive.SliderProps & React.RefAttributes<HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
11
+ declare const Slider: React.ForwardRefExoticComponent<Omit<SliderPrimitive.SliderProps & React.RefAttributes<HTMLSpanElement>, "ref"> & SliderThumbPassThrough & React.RefAttributes<HTMLSpanElement>>;
11
12
  export { Slider };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@object-ui/components",
3
- "version": "17.5.0",
3
+ "version": "17.7.0",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "Standard UI component library for Object UI, built with Shadcn UI + Tailwind CSS",
@@ -26,7 +26,7 @@
26
26
  "./style.css": "./dist/index.css"
27
27
  },
28
28
  "dependencies": {
29
- "@objectstack/spec": "^17.0.0-rc.6",
29
+ "@objectstack/spec": "^17.0.0",
30
30
  "@radix-ui/react-accordion": "^1.2.20",
31
31
  "@radix-ui/react-alert-dialog": "^1.1.23",
32
32
  "@radix-ui/react-aspect-ratio": "^1.1.15",
@@ -50,7 +50,6 @@
50
50
  "@radix-ui/react-slot": "^1.3.3",
51
51
  "@radix-ui/react-switch": "^1.3.7",
52
52
  "@radix-ui/react-tabs": "^1.1.21",
53
- "@radix-ui/react-toast": "^1.2.23",
54
53
  "@radix-ui/react-toggle": "^1.1.18",
55
54
  "@radix-ui/react-toggle-group": "^1.1.19",
56
55
  "@radix-ui/react-tooltip": "^1.2.16",
@@ -60,22 +59,21 @@
60
59
  "date-fns": "^4.4.0",
61
60
  "embla-carousel-react": "^8.6.0",
62
61
  "input-otp": "^1.4.2",
63
- "lucide-react": "^1.29.0",
62
+ "lucide-react": "^1.43.0",
64
63
  "next-themes": "^0.4.6",
65
64
  "react-day-picker": "^10.0.1",
66
- "react-hook-form": "^7.84.0",
65
+ "react-hook-form": "^7.85.0",
67
66
  "react-resizable-panels": "^4.12.2",
68
- "recharts": "3.10.1",
69
- "sonner": "^2.0.7",
67
+ "sonner": "^2.0.8",
70
68
  "tailwind-merge": "^3.6.0",
71
69
  "tailwindcss-animate": "^1.0.7",
72
70
  "vaul": "^1.1.2",
73
- "@object-ui/core": "17.5.0",
74
- "@object-ui/i18n": "17.5.0",
75
- "@object-ui/react": "17.5.0",
76
- "@object-ui/react-runtime": "17.5.0",
77
- "@object-ui/sdui-parser": "17.5.0",
78
- "@object-ui/types": "17.5.0"
71
+ "@object-ui/core": "17.7.0",
72
+ "@object-ui/i18n": "17.7.0",
73
+ "@object-ui/react-runtime": "17.7.0",
74
+ "@object-ui/react": "17.7.0",
75
+ "@object-ui/sdui-parser": "17.7.0",
76
+ "@object-ui/types": "17.7.0"
79
77
  },
80
78
  "peerDependencies": {
81
79
  "react": "^18.0.0 || ^19.0.0",
@@ -89,13 +87,15 @@
89
87
  "@types/react-dom": "19.2.4",
90
88
  "@vitejs/plugin-react": "^6.0.5",
91
89
  "autoprefixer": "^10.5.4",
90
+ "jsonc-parser": "^3.3.1",
92
91
  "postcss": "^8.5.26",
93
- "shadcn": "^4.16.2",
92
+ "shadcn": "^4.18.0",
94
93
  "tailwindcss": "^4.3.3",
95
94
  "typescript": "^6.0.3",
96
95
  "vite": "^8.2.1",
97
96
  "vite-plugin-dts": "^5.0.3",
98
- "zod": "^4.4.3"
97
+ "zod": "^4.4.3",
98
+ "@object-ui/test-support": "17.4.0"
99
99
  },
100
100
  "keywords": [
101
101
  "objectui",
@@ -121,9 +121,8 @@
121
121
  ],
122
122
  "scripts": {
123
123
  "build": "vite build && node scripts/build-css.mjs",
124
- "prebuild": "pnpm --filter @object-ui/types build && pnpm --filter @object-ui/core build && pnpm --filter @object-ui/react build",
125
- "pretest": "pnpm run prebuild",
126
- "test": "vitest run",
124
+ "test": "vitest run --root ../.. packages/components/",
125
+ "test:dist": "OBJECTUI_DIST_PINS=1 vitest run --root ../.. --config vitest.config.mts --project dist",
127
126
  "type-check": "tsc --noEmit && tsc -p tsconfig.test.json",
128
127
  "lint": "eslint ."
129
128
  }
@@ -1,4 +0,0 @@
1
- import { default as React } from 'react';
2
- export declare const SchemaRenderer: ({ schema }: {
3
- schema: any;
4
- }) => React.JSX.Element | null;
@@ -1,21 +0,0 @@
1
- import { default as React } from 'react';
2
- import { ActionParamDef } from '@object-ui/core';
3
- export interface ActionParamDialogProps {
4
- /** The param definitions to render */
5
- params: ActionParamDef[];
6
- /** Whether the dialog is open */
7
- open: boolean;
8
- /** Called when the user submits the form */
9
- onSubmit: (values: Record<string, any>) => void;
10
- /** Called when the user cancels */
11
- onCancel: () => void;
12
- /** Dialog title */
13
- title?: string;
14
- /** Dialog description */
15
- description?: string;
16
- }
17
- /**
18
- * ActionParamDialog renders a dialog with form fields for each ActionParam.
19
- * It collects user input and returns the values on submit.
20
- */
21
- export declare const ActionParamDialog: React.FC<ActionParamDialogProps>;
@@ -1,43 +0,0 @@
1
- import { UseExportJobReturn } from '../hooks/use-export-job';
2
- /**
3
- * ObjectUI
4
- * Copyright (c) 2024-present ObjectStack Inc.
5
- *
6
- * This source code is licensed under the MIT license found in the
7
- * LICENSE file in the root directory of this source tree.
8
- */
9
- /**
10
- * ExportProgressDialog — UI for the async export job lifecycle.
11
- *
12
- * Pair with `useExportJob` to render a progress bar (determinate when the
13
- * server reports `percentComplete`, indeterminate otherwise), a Cancel button
14
- * while the job is in flight, and a Download button when it completes.
15
- *
16
- * The dialog is fully controlled by the `job` returned from `useExportJob`;
17
- * pass `open`/`onOpenChange` to control its visibility (typically opened by
18
- * the same handler that calls `job.start(...)`).
19
- */
20
- import * as React from 'react';
21
- export interface ExportProgressDialogProps {
22
- /** Visibility, controlled. */
23
- open: boolean;
24
- /** Visibility setter. */
25
- onOpenChange: (open: boolean) => void;
26
- /** Job state object returned from `useExportJob`. */
27
- job: UseExportJobReturn;
28
- /** Optional title override (defaults to 'Exporting…'). */
29
- title?: string;
30
- /** Optional description override. */
31
- description?: string;
32
- /** Default download filename. */
33
- filename?: string;
34
- /** Show the Close button while the job is running. Default true. */
35
- allowCloseWhileRunning?: boolean;
36
- /** Optional className passthrough for the dialog content. */
37
- className?: string;
38
- /** Called after the user clicks Download (after the click resolves). */
39
- onAfterDownload?: () => void;
40
- /** Auto-close the dialog this many ms after a successful download. */
41
- closeAfterDownloadMs?: number;
42
- }
43
- export declare function ExportProgressDialog({ open, onOpenChange, job, title, description, filename, allowCloseWhileRunning, className, onAfterDownload, closeAfterDownloadMs, }: ExportProgressDialogProps): React.JSX.Element;
@@ -1,34 +0,0 @@
1
- import { DataSource, CreateExportJobRequest, ExportJobProgressInfo } from '@object-ui/types';
2
- export interface UseExportJobOptions {
3
- /** Data source providing the optional export-job methods. Required. */
4
- dataSource?: DataSource;
5
- /** Polling cadence while the job is in flight. Default 1500ms. */
6
- pollIntervalMs?: number;
7
- /** Maximum poll attempts before giving up (safety net). Default 600. */
8
- maxAttempts?: number;
9
- /** Called once the job reaches a terminal state. */
10
- onComplete?: (info: ExportJobProgressInfo) => void;
11
- /** Called when the job fails (any non-completed terminal state). */
12
- onError?: (error: Error, info?: ExportJobProgressInfo) => void;
13
- }
14
- export interface UseExportJobReturn {
15
- /** True when a job is in flight (pending/processing). */
16
- isRunning: boolean;
17
- /** Latest progress payload from the server. */
18
- progress: ExportJobProgressInfo | null;
19
- /** Latest terminal error (if any). */
20
- error: Error | null;
21
- /** Whether the data source supports async export (createExportJob present). */
22
- isSupported: boolean;
23
- /** Start a new export job. Returns the job id (or null when unsupported). */
24
- start: (resource: string, request: CreateExportJobRequest) => Promise<string | null>;
25
- /** Cancel the in-flight job (no-op when unsupported). */
26
- cancel: () => Promise<void>;
27
- /** Fetch a fresh download URL for the completed job. */
28
- getDownloadUrl: () => Promise<string | null>;
29
- /** Manually trigger a browser download for the completed job. */
30
- download: (filename?: string) => Promise<boolean>;
31
- /** Reset the local job state (clears progress + error). */
32
- reset: () => void;
33
- }
34
- export declare function useExportJob(opts?: UseExportJobOptions): UseExportJobReturn;
@@ -1,2 +0,0 @@
1
- import { default as React } from 'react';
2
- export declare const SimpleTableRenderer: ({ schema, className }: any) => React.JSX.Element;
@@ -1,56 +0,0 @@
1
- /**
2
- * ObjectUI
3
- * Copyright (c) 2024-present ObjectStack Inc.
4
- *
5
- * This source code is licensed under the MIT license found in the
6
- * LICENSE file in the root directory of this source tree.
7
- */
8
- import * as React from "react";
9
- import * as RechartsPrimitive from "recharts";
10
- declare const THEMES: {
11
- readonly light: "";
12
- readonly dark: ".dark";
13
- };
14
- export type ChartConfig = {
15
- [k in string]: {
16
- label?: React.ReactNode;
17
- icon?: React.ComponentType;
18
- } & ({
19
- color?: string;
20
- theme?: never;
21
- } | {
22
- color?: never;
23
- theme: Record<keyof typeof THEMES, string>;
24
- });
25
- };
26
- declare const ChartContainer: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement> & {
27
- config: ChartConfig;
28
- children: React.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>["children"];
29
- }, "ref"> & React.RefAttributes<HTMLDivElement>>;
30
- declare const ChartStyle: ({ id, config }: {
31
- id: string;
32
- config: ChartConfig;
33
- }) => React.JSX.Element | null;
34
- declare const ChartTooltip: typeof RechartsPrimitive.Tooltip;
35
- declare const ChartTooltipContent: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement> & {
36
- active?: boolean;
37
- payload?: any[];
38
- label?: string;
39
- hideLabel?: boolean;
40
- hideIndicator?: boolean;
41
- indicator?: "line" | "dot" | "dashed";
42
- nameKey?: string;
43
- labelKey?: string;
44
- labelFormatter?: (value: any, payload: any[]) => React.ReactNode;
45
- labelClassName?: string;
46
- formatter?: (value: any, name?: any, item?: any, index?: number, payload?: any) => React.ReactNode;
47
- color?: string;
48
- }, "ref"> & React.RefAttributes<HTMLDivElement>>;
49
- declare const ChartLegend: React.MemoExoticComponent<(outsideProps: RechartsPrimitive.LegendProps) => React.ReactPortal | null>;
50
- declare const ChartLegendContent: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement> & {
51
- payload?: any[];
52
- verticalAlign?: "top" | "bottom";
53
- hideIcon?: boolean;
54
- nameKey?: string;
55
- }, "ref"> & React.RefAttributes<HTMLDivElement>>;
56
- export { ChartContainer, ChartTooltip, ChartTooltipContent, ChartLegend, ChartLegendContent, ChartStyle, };