@koobiq/react-primitives 0.0.1-beta.2 → 0.0.1-beta.20

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.
@@ -2,7 +2,7 @@
2
2
  import { useFocusRing, useHover, mergeProps } from "@koobiq/react-core";
3
3
  import { useButton as useButton$1 } from "@react-aria/button";
4
4
  function useButton(props, ref) {
5
- const { onClick, onPress, disabled, ...otherProps } = props;
5
+ const { disabled, ...otherProps } = props;
6
6
  const {
7
7
  focusProps,
8
8
  isFocused: focused,
@@ -17,7 +17,6 @@ function useButton(props, ref) {
17
17
  const { buttonProps: commonButtonProps, isPressed: pressed } = useButton$1(
18
18
  {
19
19
  ...otherProps,
20
- onPress: onPress || onClick,
21
20
  isDisabled: disabled
22
21
  },
23
22
  ref
@@ -3,7 +3,6 @@ import type { ExtendableProps } from '@koobiq/react-core';
3
3
  import type { AriaLinkOptions } from '@react-aria/link';
4
4
  export type UseLinkProps = ExtendableProps<{
5
5
  disabled?: boolean;
6
- onClick?: AriaLinkOptions['onPress'];
7
6
  }, Omit<AriaLinkOptions, 'isDisabled'>>;
8
7
  export declare function useLink(props: UseLinkProps, ref: RefObject<HTMLElement | null>): {
9
8
  linkProps: import("@react-types/shared").DOMAttributes<import("@react-types/shared").FocusableElement>;
@@ -2,7 +2,7 @@
2
2
  import { useHover, useFocusRing, mergeProps } from "@koobiq/react-core";
3
3
  import { useLink as useLink$1 } from "@react-aria/link";
4
4
  function useLink(props, ref) {
5
- const { disabled, onClick, ...otherProps } = props;
5
+ const { disabled, ...otherProps } = props;
6
6
  const { hoverProps, isHovered } = useHover({
7
7
  ...otherProps,
8
8
  isDisabled: disabled
@@ -11,7 +11,6 @@ function useLink(props, ref) {
11
11
  const { linkProps: commonLinkProps, isPressed } = useLink$1(
12
12
  {
13
13
  ...otherProps,
14
- onPress: onClick,
15
14
  isDisabled: disabled
16
15
  },
17
16
  ref
@@ -26,7 +26,7 @@ const Button = polymorphicForwardRef(
26
26
  const { hovered, pressed, focused, focusVisible, buttonProps } = useButton(
27
27
  {
28
28
  ...commonProps,
29
- ...loading && {
29
+ ...(loading || disabled) && {
30
30
  onPress: void 0,
31
31
  onPressStart: void 0,
32
32
  onPressEnd: void 0,
@@ -69,6 +69,11 @@ const Button = polymorphicForwardRef(
69
69
  },
70
70
  ...buttonProps,
71
71
  ...renderProps,
72
+ "data-hovered": hovered,
73
+ "data-pressed": pressed,
74
+ "data-focused": focused,
75
+ "data-disabled": disabled,
76
+ "data-focus-visible": focusVisible,
72
77
  tabIndex: tabIndex || buttonProps.tabIndex,
73
78
  "aria-disabled": loading ? "true" : buttonProps["aria-disabled"],
74
79
  "aria-busy": loading,
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { createContext } from "react";
2
3
  const ButtonContext = createContext({});
3
4
  export {
@@ -1,3 +1,3 @@
1
- export declare const Checkbox: import("react").ForwardRefExoticComponent<Omit<import("../..").UseCheckboxProps, keyof import("../../utils").RenderProps<import("./types").CheckboxRenderProps> | "inputRef"> & import("../../utils").RenderProps<import("./types").CheckboxRenderProps> & {
1
+ export declare const Checkbox: import("react").ForwardRefExoticComponent<Omit<import("../..").UseCheckboxProps, keyof import("../..").RenderProps<import("./types").CheckboxRenderProps> | "inputRef"> & import("../..").RenderProps<import("./types").CheckboxRenderProps> & {
2
2
  inputRef?: import("react").RefObject<HTMLInputElement | null>;
3
3
  } & import("react").RefAttributes<HTMLLabelElement>>;
@@ -43,7 +43,7 @@ const Checkbox = forwardRef(
43
43
  const DOMProps = filterDOMProps(props);
44
44
  delete DOMProps.id;
45
45
  return /* @__PURE__ */ jsxs("label", { ...mergeProps(DOMProps, labelProps, renderProps), ref, children: [
46
- /* @__PURE__ */ jsx(VisuallyHidden, { children: /* @__PURE__ */ jsx("input", { ...inputProps, ref: domRef }) }),
46
+ /* @__PURE__ */ jsx(VisuallyHidden, { elementType: "span", children: /* @__PURE__ */ jsx("input", { ...inputProps, ref: domRef }) }),
47
47
  renderProps.children
48
48
  ] });
49
49
  }
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { createContext, useContext } from "react";
2
3
  const GroupContext = createContext({});
3
4
  const useGroupContext = () => useContext(GroupContext);
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { createContext, useContext } from "react";
2
3
  const InputContext = createContext({});
3
4
  const useInputContext = () => useContext(InputContext);
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { createContext } from "react";
2
3
  const LabelContext = createContext({});
3
4
  export {
@@ -5,9 +5,24 @@ import { useRenderProps } from "../../utils/index.js";
5
5
  import { useLink } from "../../behaviors/useLink.js";
6
6
  const Link = polymorphicForwardRef((props, ref) => {
7
7
  const { as: Tag = "a", ...commonProps } = props;
8
+ const { disabled } = commonProps;
8
9
  const domRef = useDOMRef(ref);
9
10
  const { hovered, pressed, focused, focusVisible, linkProps } = useLink(
10
- commonProps,
11
+ {
12
+ ...commonProps,
13
+ ...disabled && {
14
+ onPress: void 0,
15
+ onPressStart: void 0,
16
+ onPressEnd: void 0,
17
+ onPressChange: void 0,
18
+ onPressUp: void 0,
19
+ onKeyDown: void 0,
20
+ onKeyUp: void 0,
21
+ onClick: void 0,
22
+ href: void 0
23
+ },
24
+ disabled
25
+ },
11
26
  domRef
12
27
  );
13
28
  const renderValues = {
@@ -21,7 +36,15 @@ const Link = polymorphicForwardRef((props, ref) => {
21
36
  ...props,
22
37
  values: renderValues
23
38
  });
24
- return /* @__PURE__ */ jsx(Tag, { ...mergeProps(linkProps, renderProps), ref, children: renderProps.children });
39
+ return /* @__PURE__ */ jsx(
40
+ Tag,
41
+ {
42
+ ...mergeProps(linkProps, renderProps),
43
+ tabIndex: props.tabIndex || linkProps.tabIndex,
44
+ ref: domRef,
45
+ children: renderProps.children
46
+ }
47
+ );
25
48
  });
26
49
  Link.displayName = "Link";
27
50
  export {
@@ -8,4 +8,6 @@ export type LinkRenderProps = {
8
8
  disabled: boolean;
9
9
  focusVisible: boolean;
10
10
  };
11
- export type LinkBaseProps = ExtendableProps<RenderProps<LinkRenderProps>, UseLinkProps>;
11
+ export type LinkBaseProps = ExtendableProps<RenderProps<LinkRenderProps> & {
12
+ tabIndex?: number;
13
+ }, UseLinkProps>;
@@ -1 +1 @@
1
- export declare const NumberField: import("react").ForwardRefExoticComponent<Omit<import("../..").UseNumberFieldProps, keyof import("../../utils").RenderProps<import("./types").NumberFieldRenderProps>> & import("../../utils").RenderProps<import("./types").NumberFieldRenderProps> & import("react").RefAttributes<HTMLDivElement>>;
1
+ export declare const NumberField: import("react").ForwardRefExoticComponent<Omit<import("../..").UseNumberFieldProps, keyof import("../..").RenderProps<import("./types").NumberFieldRenderProps>> & import("../..").RenderProps<import("./types").NumberFieldRenderProps> & import("react").RefAttributes<HTMLDivElement>>;
@@ -1,3 +1,3 @@
1
- export declare const Radio: import("react").ForwardRefExoticComponent<Omit<import("../..").UseRadioProps, "inputRef" | keyof import("../../utils").RenderProps<import("./types").RadioRenderProps>> & import("../../utils").RenderProps<import("./types").RadioRenderProps> & {
1
+ export declare const Radio: import("react").ForwardRefExoticComponent<Omit<import("../..").UseRadioProps, "inputRef" | keyof import("../..").RenderProps<import("./types").RadioRenderProps>> & import("../..").RenderProps<import("./types").RadioRenderProps> & {
2
2
  inputRef?: import("react").RefObject<HTMLInputElement | null>;
3
3
  } & import("react").RefAttributes<HTMLLabelElement>>;
@@ -38,7 +38,7 @@ const Radio = forwardRef(
38
38
  const DOMProps = filterDOMProps(props);
39
39
  delete DOMProps.id;
40
40
  return /* @__PURE__ */ jsxs("label", { ...mergeProps(DOMProps, labelProps, renderProps), ref, children: [
41
- /* @__PURE__ */ jsx(VisuallyHidden, { children: /* @__PURE__ */ jsx("input", { ...inputProps, ref: domRef }) }),
41
+ /* @__PURE__ */ jsx(VisuallyHidden, { elementType: "span", children: /* @__PURE__ */ jsx("input", { ...inputProps, ref: domRef }) }),
42
42
  renderProps.children
43
43
  ] });
44
44
  }
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { createContext } from "react";
2
3
  const RadioContext = createContext(
3
4
  {}
@@ -1 +1 @@
1
- export declare const RadioGroup: import("react").ForwardRefExoticComponent<Omit<import("../..").UseRadioGroupProps, keyof import("../../utils").RenderProps<import("./types").RadioGroupRenderProps>> & import("../../utils").RenderProps<import("./types").RadioGroupRenderProps> & import("react").RefAttributes<HTMLDivElement>>;
1
+ export declare const RadioGroup: import("react").ForwardRefExoticComponent<Omit<import("../..").UseRadioGroupProps, keyof import("../..").RenderProps<import("./types").RadioGroupRenderProps>> & import("../..").RenderProps<import("./types").RadioGroupRenderProps> & import("react").RefAttributes<HTMLDivElement>>;
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { createContext } from "react";
2
3
  const TextContext = createContext({});
3
4
  export {
@@ -1 +1 @@
1
- export declare const TextField: import("react").ForwardRefExoticComponent<Omit<import("../..").UseTextFieldProps, keyof import("../../utils").RenderProps<import("./types").TextFieldRenderProps>> & import("../../utils").RenderProps<import("./types").TextFieldRenderProps> & import("react").RefAttributes<HTMLDivElement>>;
1
+ export declare const TextField: import("react").ForwardRefExoticComponent<Omit<import("../..").UseTextFieldProps, keyof import("../..").RenderProps<import("./types").TextFieldRenderProps>> & import("../..").RenderProps<import("./types").TextFieldRenderProps> & import("react").RefAttributes<HTMLDivElement>>;
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { createContext, useContext } from "react";
2
3
  const TextareaContext = createContext({});
3
4
  const useTextareaContext = () => useContext(TextareaContext);
@@ -1,3 +1,3 @@
1
- export declare const Toggle: import("react").ForwardRefExoticComponent<Omit<import("../..").UseToggleProps, "inputRef" | keyof import("../../utils").RenderProps<import("./types").ToggleRenderProps>> & import("../../utils").RenderProps<import("./types").ToggleRenderProps> & {
1
+ export declare const Toggle: import("react").ForwardRefExoticComponent<Omit<import("../..").UseToggleProps, "inputRef" | keyof import("../..").RenderProps<import("./types").ToggleRenderProps>> & import("../..").RenderProps<import("./types").ToggleRenderProps> & {
2
2
  inputRef?: import("react").RefObject<HTMLInputElement | null>;
3
3
  } & import("react").RefAttributes<HTMLLabelElement>>;
@@ -41,7 +41,7 @@ const Toggle = forwardRef(
41
41
  const DOMProps = filterDOMProps(props);
42
42
  delete DOMProps.id;
43
43
  return /* @__PURE__ */ jsxs("label", { ...mergeProps(DOMProps, labelProps, renderProps), ref, children: [
44
- /* @__PURE__ */ jsx(VisuallyHidden, { children: /* @__PURE__ */ jsx("input", { ...inputProps, ref: domRef }) }),
44
+ /* @__PURE__ */ jsx(VisuallyHidden, { elementType: "span", children: /* @__PURE__ */ jsx("input", { ...inputProps, ref: domRef }) }),
45
45
  renderProps.children
46
46
  ] });
47
47
  }
package/dist/index.d.ts CHANGED
@@ -1,15 +1,24 @@
1
+ import { useToggleButtonGroup, useToggleButtonGroupItem, type AriaToggleButtonGroupProps, type AriaToggleButtonGroupItemProps } from '@react-aria/button';
1
2
  import { useDialog, type AriaDialogProps } from '@react-aria/dialog';
2
3
  import { useLocale, I18nProvider, useLocalizedStringFormatter, type I18nProviderProps } from '@react-aria/i18n';
3
4
  import { useListBox, useOption, useListBoxSection, type AriaListBoxProps } from '@react-aria/listbox';
5
+ import { useMenu, useMenuItem, useMenuSection, useMenuTrigger, type AriaMenuOptions, type AriaMenuProps } from '@react-aria/menu';
4
6
  import { Overlay, usePopover, useModalOverlay, useOverlayTrigger, useOverlayPosition, type AriaModalOverlayProps } from '@react-aria/overlays';
7
+ import { useSelect, HiddenSelect } from '@react-aria/select';
8
+ import { useSeparator } from '@react-aria/separator';
5
9
  import { useTooltip, useTooltipTrigger } from '@react-aria/tooltip';
6
10
  import { Item, Section } from '@react-stately/collections';
7
11
  import { useListState, type ListState } from '@react-stately/list';
12
+ import { useMenuTriggerState } from '@react-stately/menu';
8
13
  import { useOverlayTriggerState, type OverlayTriggerState } from '@react-stately/overlays';
14
+ import { useSelectState } from '@react-stately/select';
15
+ import { useToggleGroupState, type ToggleGroupState } from '@react-stately/toggle';
9
16
  import type { TooltipTriggerProps } from '@react-stately/tooltip';
10
17
  import { useTooltipTriggerState } from '@react-stately/tooltip';
11
- import type { HoverEvent, Node, ItemProps, SectionProps, LinkDOMProps } from '@react-types/shared';
18
+ import { useTreeState, type TreeState } from '@react-stately/tree';
19
+ import type { Node, PressEvent, HoverEvent, ItemProps, SectionProps, LinkDOMProps, FocusableElement } from '@react-types/shared';
12
20
  export * from './behaviors/index.js';
13
21
  export * from './components/index.js';
14
- export { Overlay, useLocale, useDialog, useOption, usePopover, useListBox, useTooltip, I18nProvider, useListState, useModalOverlay, useOverlayTrigger, useTooltipTrigger, useListBoxSection, useOverlayPosition, useOverlayTriggerState, useTooltipTriggerState, useLocalizedStringFormatter, Item, Section, type ListState, type Node, type ItemProps, type LinkDOMProps, type SectionProps, type HoverEvent, type AriaDialogProps, type I18nProviderProps, type AriaListBoxProps, type TooltipTriggerProps, type OverlayTriggerState, type AriaModalOverlayProps, };
22
+ export { Item, Overlay, Section, useMenu, useLocale, useDialog, useOption, useSelect, usePopover, useListBox, useTooltip, useListState, HiddenSelect, I18nProvider, useMenuItem, useTreeState, useSeparator, useMenuSection, useMenuTrigger, useSelectState, useModalOverlay, useOverlayTrigger, useTooltipTrigger, useListBoxSection, useOverlayPosition, useMenuTriggerState, useToggleGroupState, useToggleButtonGroup, useOverlayTriggerState, useTooltipTriggerState, useToggleButtonGroupItem, useLocalizedStringFormatter, type Node, type TreeState, type ItemProps, type ListState, type PressEvent, type HoverEvent, type LinkDOMProps, type FocusableElement, type SectionProps, type ToggleGroupState, type AriaMenuProps, type AriaDialogProps, type AriaMenuOptions, type AriaListBoxProps, type I18nProviderProps, type TooltipTriggerProps, type OverlayTriggerState, type AriaModalOverlayProps, type AriaToggleButtonGroupProps, type AriaToggleButtonGroupItemProps, };
15
23
  export * from './types';
24
+ export * from './utils';
package/dist/index.js CHANGED
@@ -1,12 +1,21 @@
1
+ import { useToggleButtonGroup, useToggleButtonGroupItem } from "@react-aria/button";
1
2
  import { useDialog } from "@react-aria/dialog";
2
3
  import { I18nProvider, useLocale, useLocalizedStringFormatter } from "@react-aria/i18n";
3
4
  import { useListBox, useListBoxSection, useOption } from "@react-aria/listbox";
5
+ import { useMenu, useMenuItem, useMenuSection, useMenuTrigger } from "@react-aria/menu";
4
6
  import { Overlay, useModalOverlay, useOverlayPosition, useOverlayTrigger, usePopover } from "@react-aria/overlays";
7
+ import { HiddenSelect, useSelect } from "@react-aria/select";
8
+ import { useSeparator } from "@react-aria/separator";
5
9
  import { useTooltip, useTooltipTrigger } from "@react-aria/tooltip";
6
10
  import { Item, Section } from "@react-stately/collections";
7
11
  import { useListState } from "@react-stately/list";
12
+ import { useMenuTriggerState } from "@react-stately/menu";
8
13
  import { useOverlayTriggerState } from "@react-stately/overlays";
14
+ import { useSelectState } from "@react-stately/select";
15
+ import { useToggleGroupState } from "@react-stately/toggle";
9
16
  import { useTooltipTriggerState } from "@react-stately/tooltip";
17
+ import { useTreeState } from "@react-stately/tree";
18
+ import { Provider, removeDataAttributes, useRenderProps } from "./utils/index.js";
10
19
  import { useButton } from "./behaviors/useButton.js";
11
20
  import { useCheckbox } from "./behaviors/useCheckbox.js";
12
21
  import { useLink } from "./behaviors/useLink.js";
@@ -45,6 +54,7 @@ export {
45
54
  Checkbox,
46
55
  Group,
47
56
  GroupContext,
57
+ HiddenSelect,
48
58
  I18nProvider,
49
59
  Input,
50
60
  InputContext,
@@ -55,6 +65,7 @@ export {
55
65
  NumberField,
56
66
  Overlay,
57
67
  ProgressBar,
68
+ Provider,
58
69
  Radio,
59
70
  RadioContext,
60
71
  RadioGroup,
@@ -65,6 +76,7 @@ export {
65
76
  Textarea,
66
77
  TextareaContext,
67
78
  Toggle,
79
+ removeDataAttributes,
68
80
  useButton,
69
81
  useCheckbox,
70
82
  useDialog,
@@ -76,6 +88,11 @@ export {
76
88
  useListState,
77
89
  useLocale,
78
90
  useLocalizedStringFormatter,
91
+ useMenu,
92
+ useMenuItem,
93
+ useMenuSection,
94
+ useMenuTrigger,
95
+ useMenuTriggerState,
79
96
  useModalOverlay,
80
97
  useNumberField,
81
98
  useNumberFieldState,
@@ -88,10 +105,18 @@ export {
88
105
  useRadio,
89
106
  useRadioGroup,
90
107
  useRadioGroupState,
108
+ useRenderProps,
109
+ useSelect,
110
+ useSelectState,
111
+ useSeparator,
91
112
  useTextField,
92
113
  useTextareaContext,
93
114
  useToggle,
115
+ useToggleButtonGroup,
116
+ useToggleButtonGroupItem,
117
+ useToggleGroupState,
94
118
  useTooltip,
95
119
  useTooltipTrigger,
96
- useTooltipTriggerState
120
+ useTooltipTriggerState,
121
+ useTreeState
97
122
  };
package/dist/types.d.ts CHANGED
@@ -1,8 +1,11 @@
1
1
  import type { ElementType } from 'react';
2
2
  import type { AriaButtonOptions } from '@react-aria/button';
3
+ import type { AriaLinkOptions } from '@react-aria/link';
3
4
  export type ButtonOptions = Omit<AriaButtonOptions<ElementType>, 'isDisabled'> & {
4
5
  /** Whether the button is disabled. */
5
6
  disabled?: boolean;
6
- /** Handler that is called when the press is released over the target. */
7
- onClick?: AriaButtonOptions<ElementType>['onPress'];
7
+ };
8
+ export type LinkOptions = Omit<AriaLinkOptions, 'isDisabled'> & {
9
+ /** Whether the button is disabled. */
10
+ disabled?: boolean;
8
11
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@koobiq/react-primitives",
3
- "version": "0.0.1-beta.2",
3
+ "version": "0.0.1-beta.20",
4
4
  "main": "./dist/index.js",
5
5
  "types": "./dist/index.d.ts",
6
6
  "exports": {
@@ -9,6 +9,11 @@
9
9
  "default": "./dist/index.js"
10
10
  }
11
11
  },
12
+ "repository": {
13
+ "type": "git",
14
+ "directory": "packages/primitives",
15
+ "url": "git+https://github.com/koobiq/react-components.git"
16
+ },
12
17
  "type": "module",
13
18
  "files": [
14
19
  "dist"
@@ -24,22 +29,29 @@
24
29
  "@react-aria/i18n": "^3.12.4",
25
30
  "@react-aria/link": "^3.7.0",
26
31
  "@react-aria/listbox": "^3.14.2",
32
+ "@react-aria/menu": "^3.18.2",
27
33
  "@react-aria/numberfield": "^3.11.8",
28
34
  "@react-aria/overlays": "^3.23.4",
29
35
  "@react-aria/progress": "^3.4.17",
30
36
  "@react-aria/radio": "^3.10.9",
37
+ "@react-aria/select": "^3.15.3",
38
+ "@react-aria/separator": "^3.4.8",
31
39
  "@react-aria/textfield": "^3.14.0",
32
40
  "@react-aria/toggle": "^3.10.10",
33
41
  "@react-aria/tooltip": "^3.7.9",
34
42
  "@react-aria/visually-hidden": "^3.8.0",
35
43
  "@react-stately/collections": "^3.12.2",
36
44
  "@react-stately/list": "^3.12.0",
45
+ "@react-stately/menu": "^3.9.3",
37
46
  "@react-stately/numberfield": "^3.9.7",
38
47
  "@react-stately/overlays": "^3.6.11",
39
48
  "@react-stately/radio": "^3.10.8",
49
+ "@react-stately/select": "^3.6.11",
50
+ "@react-stately/toggle": "^3.7.0",
40
51
  "@react-stately/tooltip": "^3.4.13",
41
- "@koobiq/logger": "0.0.1-beta.2",
42
- "@koobiq/react-core": "0.0.1-beta.2"
52
+ "@react-stately/tree": "^3.8.9",
53
+ "@koobiq/logger": "0.0.1-beta.20",
54
+ "@koobiq/react-core": "0.0.1-beta.20"
43
55
  },
44
56
  "peerDependencies": {
45
57
  "react": "18.x || 19.x",