@koobiq/react-components 0.21.0 → 0.22.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.
- package/dist/components/Accordion/Accordion.d.ts +9 -0
- package/dist/components/Accordion/Accordion.js +89 -0
- package/dist/components/Accordion/Accordion.module.css.js +8 -0
- package/dist/components/Accordion/AccordionStateContext.d.ts +2 -0
- package/dist/components/Accordion/AccordionStateContext.js +7 -0
- package/dist/components/Accordion/components/AccordionDetails/AccordionDetails.d.ts +2 -0
- package/dist/components/Accordion/components/AccordionDetails/AccordionDetails.js +55 -0
- package/dist/components/Accordion/components/AccordionDetails/AccordionDetails.module.css.js +8 -0
- package/dist/components/Accordion/components/AccordionDetails/AccordionDetailsContext.d.ts +2 -0
- package/dist/components/Accordion/components/AccordionDetails/AccordionDetailsContext.js +7 -0
- package/dist/components/Accordion/components/AccordionDetails/index.d.ts +3 -0
- package/dist/components/Accordion/components/AccordionDetails/types.d.ts +14 -0
- package/dist/components/Accordion/components/AccordionGroup/AccordionGroup.d.ts +2 -0
- package/dist/components/Accordion/components/AccordionGroup/AccordionGroup.js +31 -0
- package/dist/components/Accordion/components/AccordionGroup/AccordionGroup.module.css.js +8 -0
- package/dist/components/Accordion/components/AccordionGroup/AccordionGroupContext.d.ts +2 -0
- package/dist/components/Accordion/components/AccordionGroup/AccordionGroupContext.js +5 -0
- package/dist/components/Accordion/components/AccordionGroup/index.d.ts +3 -0
- package/dist/components/Accordion/components/AccordionGroup/types.d.ts +7 -0
- package/dist/components/Accordion/components/AccordionSummary/AccordionSummary.d.ts +4 -0
- package/dist/components/Accordion/components/AccordionSummary/AccordionSummary.js +80 -0
- package/dist/components/Accordion/components/AccordionSummary/AccordionSummary.module.css.js +24 -0
- package/dist/components/Accordion/components/AccordionSummary/AccordionSummaryContext.d.ts +2 -0
- package/dist/components/Accordion/components/AccordionSummary/AccordionSummaryContext.js +7 -0
- package/dist/components/Accordion/components/AccordionSummary/index.d.ts +3 -0
- package/dist/components/Accordion/components/AccordionSummary/types.d.ts +25 -0
- package/dist/components/Accordion/components/index.d.ts +3 -0
- package/dist/components/Accordion/index.d.ts +4 -0
- package/dist/components/Accordion/types.d.ts +8 -0
- package/dist/components/Dialog/Dialog.js +2 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/index.js +9 -0
- package/dist/style.css +98 -0
- package/package.json +5 -5
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AccordionDetails, AccordionSummary } from './components';
|
|
2
|
+
import type { AccordionProps } from './types';
|
|
3
|
+
export declare const AccordionComponent: import("react").ForwardRefExoticComponent<Omit<AccordionProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
4
|
+
type CompoundedComponent = typeof AccordionComponent & {
|
|
5
|
+
Summary: typeof AccordionSummary;
|
|
6
|
+
Details: typeof AccordionDetails;
|
|
7
|
+
};
|
|
8
|
+
export declare const Accordion: CompoundedComponent;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef, useContext, useRef } from "react";
|
|
4
|
+
import { useId, clsx } from "@koobiq/react-core";
|
|
5
|
+
import { useDisclosureState, useDisclosure, Provider } from "@koobiq/react-primitives";
|
|
6
|
+
import { utilClasses } from "../../styles/utility.js";
|
|
7
|
+
import s from "./Accordion.module.css.js";
|
|
8
|
+
import { AccordionSummary } from "./components/AccordionSummary/AccordionSummary.js";
|
|
9
|
+
import { AccordionDetails } from "./components/AccordionDetails/AccordionDetails.js";
|
|
10
|
+
import { AccordionGroupStateContext } from "./components/AccordionGroup/AccordionGroupContext.js";
|
|
11
|
+
import { AccordionStateContext } from "./AccordionStateContext.js";
|
|
12
|
+
import { AccordionSummaryContext } from "./components/AccordionSummary/AccordionSummaryContext.js";
|
|
13
|
+
import { AccordionDetailsContext } from "./components/AccordionDetails/AccordionDetailsContext.js";
|
|
14
|
+
const textNormal = utilClasses.typography["text-normal"];
|
|
15
|
+
const AccordionComponent = forwardRef(
|
|
16
|
+
(props, ref) => {
|
|
17
|
+
const {
|
|
18
|
+
children,
|
|
19
|
+
className,
|
|
20
|
+
id: idProp,
|
|
21
|
+
defaultExpanded,
|
|
22
|
+
onExpandedChange,
|
|
23
|
+
isDisabled: isDisabledProp,
|
|
24
|
+
isExpanded: isExpandedProp,
|
|
25
|
+
...other
|
|
26
|
+
} = props;
|
|
27
|
+
const commonProps = {
|
|
28
|
+
children,
|
|
29
|
+
onExpandedChange,
|
|
30
|
+
defaultExpanded,
|
|
31
|
+
isDisabled: isDisabledProp,
|
|
32
|
+
isExpanded: isExpandedProp
|
|
33
|
+
};
|
|
34
|
+
const defaultId = useId();
|
|
35
|
+
const id = idProp || defaultId;
|
|
36
|
+
const groupState = useContext(AccordionGroupStateContext);
|
|
37
|
+
const isExpanded = groupState ? groupState.expandedKeys?.has(id) : isExpandedProp;
|
|
38
|
+
const state = useDisclosureState({
|
|
39
|
+
...commonProps,
|
|
40
|
+
isExpanded,
|
|
41
|
+
onExpandedChange(isExpanded2) {
|
|
42
|
+
if (groupState) {
|
|
43
|
+
groupState.toggleKey(id);
|
|
44
|
+
}
|
|
45
|
+
props.onExpandedChange?.(isExpanded2);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
const panelRef = useRef(null);
|
|
49
|
+
const triggerRef = useRef(null);
|
|
50
|
+
const isDisabled = isDisabledProp || groupState?.isDisabled || false;
|
|
51
|
+
const { buttonProps: triggerProps, panelProps } = useDisclosure(
|
|
52
|
+
{
|
|
53
|
+
...commonProps,
|
|
54
|
+
isExpanded,
|
|
55
|
+
isDisabled
|
|
56
|
+
},
|
|
57
|
+
state,
|
|
58
|
+
panelRef
|
|
59
|
+
);
|
|
60
|
+
return /* @__PURE__ */ jsx(
|
|
61
|
+
Provider,
|
|
62
|
+
{
|
|
63
|
+
values: [
|
|
64
|
+
[AccordionStateContext, state],
|
|
65
|
+
[AccordionSummaryContext, { ...triggerProps, ref: triggerRef }],
|
|
66
|
+
[AccordionDetailsContext, { ...panelProps, ref: panelRef }]
|
|
67
|
+
],
|
|
68
|
+
children: /* @__PURE__ */ jsx(
|
|
69
|
+
"div",
|
|
70
|
+
{
|
|
71
|
+
className: clsx(s.base, textNormal, className),
|
|
72
|
+
id: idProp,
|
|
73
|
+
...other,
|
|
74
|
+
ref,
|
|
75
|
+
children
|
|
76
|
+
}
|
|
77
|
+
)
|
|
78
|
+
}
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
);
|
|
82
|
+
AccordionComponent.displayName = "Accordion";
|
|
83
|
+
const Accordion = AccordionComponent;
|
|
84
|
+
Accordion.Summary = AccordionSummary;
|
|
85
|
+
Accordion.Details = AccordionDetails;
|
|
86
|
+
export {
|
|
87
|
+
Accordion,
|
|
88
|
+
AccordionComponent
|
|
89
|
+
};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef, useRef, useContext, useEffect } from "react";
|
|
4
|
+
import { useDOMRef, mergeProps, clsx } from "@koobiq/react-core";
|
|
5
|
+
import { useContextProps } from "@koobiq/react-primitives";
|
|
6
|
+
import { Transition } from "react-transition-group";
|
|
7
|
+
import s from "./AccordionDetails.module.css.js";
|
|
8
|
+
import { AccordionDetailsContext } from "./AccordionDetailsContext.js";
|
|
9
|
+
import { AccordionStateContext } from "../../AccordionStateContext.js";
|
|
10
|
+
const TRANSITION_TIMEOUT = 300;
|
|
11
|
+
const AccordionDetails = forwardRef((props, ref) => {
|
|
12
|
+
const { children, className, style, slotProps, unmountOnExit, ...other } = props;
|
|
13
|
+
const domRef = useDOMRef(ref);
|
|
14
|
+
const innerRef = useRef(null);
|
|
15
|
+
const [panelProps] = useContextProps({}, domRef, AccordionDetailsContext);
|
|
16
|
+
const { isExpanded } = useContext(AccordionStateContext);
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
if (!isExpanded) domRef?.current?.setAttribute("hidden", "until-found");
|
|
19
|
+
}, []);
|
|
20
|
+
const transitionProps = mergeProps(
|
|
21
|
+
{
|
|
22
|
+
timeout: TRANSITION_TIMEOUT,
|
|
23
|
+
onEnter: () => {
|
|
24
|
+
domRef?.current?.removeAttribute("hidden");
|
|
25
|
+
},
|
|
26
|
+
onExited: () => {
|
|
27
|
+
domRef?.current?.setAttribute("hidden", "until-found");
|
|
28
|
+
},
|
|
29
|
+
in: isExpanded,
|
|
30
|
+
nodeRef: domRef,
|
|
31
|
+
unmountOnExit
|
|
32
|
+
},
|
|
33
|
+
slotProps?.transition
|
|
34
|
+
);
|
|
35
|
+
return /* @__PURE__ */ jsx(Transition, { ...transitionProps, children: (transition) => /* @__PURE__ */ jsx(
|
|
36
|
+
"div",
|
|
37
|
+
{
|
|
38
|
+
ref: domRef,
|
|
39
|
+
...panelProps,
|
|
40
|
+
"data-transition": transition,
|
|
41
|
+
className: clsx(s.base, className),
|
|
42
|
+
style: {
|
|
43
|
+
"--accordion-details-block-size": `${innerRef.current?.clientHeight}px`,
|
|
44
|
+
"--accordion-details-duration": `${TRANSITION_TIMEOUT}ms`,
|
|
45
|
+
...style
|
|
46
|
+
},
|
|
47
|
+
...other,
|
|
48
|
+
children: /* @__PURE__ */ jsx("p", { ref: innerRef, children })
|
|
49
|
+
}
|
|
50
|
+
) });
|
|
51
|
+
});
|
|
52
|
+
AccordionDetails.displayName = "AccordionDetails";
|
|
53
|
+
export {
|
|
54
|
+
AccordionDetails
|
|
55
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ComponentRef, ReactNode } from 'react';
|
|
2
|
+
import type { ExtendableComponentPropsWithRef } from '@koobiq/react-core';
|
|
3
|
+
import type { TransitionProps } from 'react-transition-group/Transition';
|
|
4
|
+
export type AccordionDetailsRef = ComponentRef<'div'>;
|
|
5
|
+
export type AccordionDetailsProps = ExtendableComponentPropsWithRef<{
|
|
6
|
+
/** The content of the component. */
|
|
7
|
+
children?: ReactNode;
|
|
8
|
+
/** If `true`, unmounts the content when collapsed. */
|
|
9
|
+
unmountOnExit?: boolean;
|
|
10
|
+
/** The props used for each slot inside. */
|
|
11
|
+
slotProps?: {
|
|
12
|
+
transition?: Partial<TransitionProps<HTMLElement>>;
|
|
13
|
+
};
|
|
14
|
+
}, 'div'>;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from "react";
|
|
4
|
+
import { clsx } from "@koobiq/react-core";
|
|
5
|
+
import { useDisclosureGroupState } from "@koobiq/react-primitives";
|
|
6
|
+
import s from "./AccordionGroup.module.css.js";
|
|
7
|
+
import { AccordionGroupStateContext } from "./AccordionGroupContext.js";
|
|
8
|
+
const AccordionGroup = forwardRef((props, ref) => {
|
|
9
|
+
const {
|
|
10
|
+
children,
|
|
11
|
+
className,
|
|
12
|
+
isDisabled,
|
|
13
|
+
expandedKeys,
|
|
14
|
+
onExpandedChange,
|
|
15
|
+
defaultExpandedKeys,
|
|
16
|
+
allowsMultipleExpanded,
|
|
17
|
+
...other
|
|
18
|
+
} = props;
|
|
19
|
+
const state = useDisclosureGroupState({
|
|
20
|
+
isDisabled,
|
|
21
|
+
expandedKeys,
|
|
22
|
+
onExpandedChange,
|
|
23
|
+
defaultExpandedKeys,
|
|
24
|
+
allowsMultipleExpanded
|
|
25
|
+
});
|
|
26
|
+
return /* @__PURE__ */ jsx("div", { className: clsx(s.base, className), ...other, ref, children: /* @__PURE__ */ jsx(AccordionGroupStateContext.Provider, { value: state, children }) });
|
|
27
|
+
});
|
|
28
|
+
AccordionGroup.displayName = "AccordionGroup";
|
|
29
|
+
export {
|
|
30
|
+
AccordionGroup
|
|
31
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ComponentRef, ReactNode } from 'react';
|
|
2
|
+
import type { ExtendableComponentPropsWithRef } from '@koobiq/react-core';
|
|
3
|
+
import type { DisclosureGroupProps as AriaDisclosureGroupProps } from '@koobiq/react-primitives';
|
|
4
|
+
export type AccordionGroupProps = ExtendableComponentPropsWithRef<AriaDisclosureGroupProps & {
|
|
5
|
+
children?: ReactNode;
|
|
6
|
+
}, 'div'>;
|
|
7
|
+
export type AccordionGroupRef = ComponentRef<'div'>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type ComponentPropsWithRef, type ElementType } from 'react';
|
|
2
|
+
import { type AccordionSummaryProps } from './index';
|
|
3
|
+
export declare const AccordionSummary: import("@koobiq/react-core").PolyForwardComponent<"h3", AccordionSummaryProps, ElementType>;
|
|
4
|
+
export type DisclosureTriggerProps<As extends ElementType = 'h3'> = ComponentPropsWithRef<typeof AccordionSummary<As>>;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useContext } from "react";
|
|
4
|
+
import { polymorphicForwardRef, mergeProps, clsx } from "@koobiq/react-core";
|
|
5
|
+
import { IconChevronRight16 } from "@koobiq/react-icons";
|
|
6
|
+
import { useContextProps, Button } from "@koobiq/react-primitives";
|
|
7
|
+
import { utilClasses } from "../../../../styles/utility.js";
|
|
8
|
+
import { AccordionStateContext } from "../../AccordionStateContext.js";
|
|
9
|
+
import s from "./AccordionSummary.module.css.js";
|
|
10
|
+
import { AccordionSummaryContext } from "./AccordionSummaryContext.js";
|
|
11
|
+
import { AnimatedIcon } from "../../../AnimatedIcon/AnimatedIcon.js";
|
|
12
|
+
const textBig = utilClasses.typography["text-big"];
|
|
13
|
+
const AccordionSummary = polymorphicForwardRef((props, ref) => {
|
|
14
|
+
const {
|
|
15
|
+
className,
|
|
16
|
+
children,
|
|
17
|
+
as: Tag = "h3",
|
|
18
|
+
expandIcon: expandIconProp,
|
|
19
|
+
expandIconPlacement = "before-content",
|
|
20
|
+
hideExpandIcon,
|
|
21
|
+
slotProps,
|
|
22
|
+
...other
|
|
23
|
+
} = props;
|
|
24
|
+
const { isExpanded } = useContext(AccordionStateContext);
|
|
25
|
+
const [triggerPropsAria, triggerRef] = useContextProps(
|
|
26
|
+
{ children },
|
|
27
|
+
void 0,
|
|
28
|
+
AccordionSummaryContext
|
|
29
|
+
);
|
|
30
|
+
const expandIconProps = mergeProps(
|
|
31
|
+
{
|
|
32
|
+
className: s.expandIcon,
|
|
33
|
+
"data-expanded": isExpanded || void 0,
|
|
34
|
+
"aria-hidden": "true"
|
|
35
|
+
},
|
|
36
|
+
slotProps?.expandIcon
|
|
37
|
+
);
|
|
38
|
+
const triggerProps = mergeProps(
|
|
39
|
+
triggerPropsAria,
|
|
40
|
+
{
|
|
41
|
+
"data-slot": "trigger",
|
|
42
|
+
className: ({ isHovered, isDisabled }) => clsx(
|
|
43
|
+
s.trigger,
|
|
44
|
+
isHovered && s.hovered,
|
|
45
|
+
isDisabled && s.disabled,
|
|
46
|
+
s[expandIconPlacement]
|
|
47
|
+
),
|
|
48
|
+
ref: triggerRef
|
|
49
|
+
},
|
|
50
|
+
slotProps?.trigger
|
|
51
|
+
);
|
|
52
|
+
const expandIconDefault = /* @__PURE__ */ jsx(
|
|
53
|
+
AnimatedIcon,
|
|
54
|
+
{
|
|
55
|
+
icons: [/* @__PURE__ */ jsx(IconChevronRight16, {}, "expand-icon")],
|
|
56
|
+
directions: [0, 90],
|
|
57
|
+
activeIndex: +isExpanded
|
|
58
|
+
}
|
|
59
|
+
);
|
|
60
|
+
const expandIcon = hideExpandIcon ? null : /* @__PURE__ */ jsx("span", { ...expandIconProps, children: expandIconProp?.(isExpanded) ?? expandIconDefault });
|
|
61
|
+
return /* @__PURE__ */ jsx(
|
|
62
|
+
Tag,
|
|
63
|
+
{
|
|
64
|
+
className: clsx(s.base, textBig, className),
|
|
65
|
+
"data-expanded": isExpanded || void 0,
|
|
66
|
+
"data-expand-icon-placement": expandIconPlacement,
|
|
67
|
+
...other,
|
|
68
|
+
ref,
|
|
69
|
+
children: /* @__PURE__ */ jsxs(Button, { ...triggerProps, children: [
|
|
70
|
+
expandIconPlacement === "before-content" && expandIcon,
|
|
71
|
+
triggerProps?.children,
|
|
72
|
+
expandIconPlacement !== "before-content" && expandIcon
|
|
73
|
+
] })
|
|
74
|
+
}
|
|
75
|
+
);
|
|
76
|
+
});
|
|
77
|
+
AccordionSummary.displayName = "AccordionSummary";
|
|
78
|
+
export {
|
|
79
|
+
AccordionSummary
|
|
80
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
const base = "kbq-accordionsummary-17bfb5";
|
|
2
|
+
const trigger = "kbq-accordionsummary-trigger-8096e7";
|
|
3
|
+
const hovered = "kbq-accordionsummary-hovered-3a99cb";
|
|
4
|
+
const disabled = "kbq-accordionsummary-disabled-5a76af";
|
|
5
|
+
const separately = "kbq-accordionsummary-separately-f6c597";
|
|
6
|
+
const expandIcon = "kbq-accordionsummary-expandIcon-54a6fc";
|
|
7
|
+
const s = {
|
|
8
|
+
base,
|
|
9
|
+
trigger,
|
|
10
|
+
hovered,
|
|
11
|
+
disabled,
|
|
12
|
+
"after-content": "kbq-accordionsummary-after-content-58ad40",
|
|
13
|
+
separately,
|
|
14
|
+
expandIcon
|
|
15
|
+
};
|
|
16
|
+
export {
|
|
17
|
+
base,
|
|
18
|
+
s as default,
|
|
19
|
+
disabled,
|
|
20
|
+
expandIcon,
|
|
21
|
+
hovered,
|
|
22
|
+
separately,
|
|
23
|
+
trigger
|
|
24
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ComponentRef, ReactNode, ReactElement, ComponentPropsWithRef } from 'react';
|
|
2
|
+
import type { ButtonProps } from '@koobiq/react-primitives';
|
|
3
|
+
export type AccordionSummaryRef = ComponentRef<'h3'>;
|
|
4
|
+
export declare const accordionSummaryPropExpandIconPlacement: readonly ["before-content", "after-content", "separately"];
|
|
5
|
+
export type AccordionSummaryPropExpandIconPlacement = (typeof accordionSummaryPropExpandIconPlacement)[number];
|
|
6
|
+
export type AccordionSummaryProps = {
|
|
7
|
+
/** The content of the component. */
|
|
8
|
+
children?: ReactNode;
|
|
9
|
+
/** Additional CSS-classes. */
|
|
10
|
+
className?: string;
|
|
11
|
+
/** Renders a custom expand icon. Receives the current expanded state. */
|
|
12
|
+
expandIcon?: (isExpanded: boolean) => ReactElement;
|
|
13
|
+
/**
|
|
14
|
+
* Controls where the expand icon is placed relative to the content.
|
|
15
|
+
* @default 'before-content'
|
|
16
|
+
*/
|
|
17
|
+
expandIconPlacement?: AccordionSummaryPropExpandIconPlacement;
|
|
18
|
+
/** If `true`, hides the expand icon. */
|
|
19
|
+
hideExpandIcon?: boolean;
|
|
20
|
+
/** The props used for each slot inside. */
|
|
21
|
+
slotProps?: {
|
|
22
|
+
trigger?: Omit<ButtonProps, 'children'>;
|
|
23
|
+
expandIcon?: ComponentPropsWithRef<'span'>;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ComponentRef, ReactNode } from 'react';
|
|
2
|
+
import type { ExtendableComponentPropsWithRef } from '@koobiq/react-core';
|
|
3
|
+
import type { AriaDisclosureProps } from '@koobiq/react-primitives';
|
|
4
|
+
export type AccordionProps = ExtendableComponentPropsWithRef<AriaDisclosureProps & {
|
|
5
|
+
/** The content of the component. */
|
|
6
|
+
children?: ReactNode;
|
|
7
|
+
}, 'div'>;
|
|
8
|
+
export type AccordionRef = ComponentRef<'div'>;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { forwardRef, useEffect } from "react";
|
|
4
4
|
import { useBoolean, useDOMRef, mergeProps, clsx, useElementSize, useEventListener } from "@koobiq/react-core";
|
|
5
|
-
import { useDialog, Provider, ButtonContext } from "@koobiq/react-primitives";
|
|
5
|
+
import { useDialog, Provider, ButtonContext, DEFAULT_SLOT } from "@koobiq/react-primitives";
|
|
6
6
|
import { utilClasses } from "../../styles/utility.js";
|
|
7
7
|
import s from "./Dialog.module.css.js";
|
|
8
8
|
import { DialogBodyContext, DialogBody } from "./components/DialogBody.js";
|
|
@@ -56,6 +56,7 @@ const DialogComponent = forwardRef(
|
|
|
56
56
|
ButtonContext,
|
|
57
57
|
{
|
|
58
58
|
slots: {
|
|
59
|
+
[DEFAULT_SLOT]: {},
|
|
59
60
|
close: {
|
|
60
61
|
onPress: onClose
|
|
61
62
|
}
|
|
@@ -42,6 +42,7 @@ export * from './Tabs';
|
|
|
42
42
|
export * from './Autocomplete';
|
|
43
43
|
export * from './ToastProvider';
|
|
44
44
|
export * from './Breadcrumbs';
|
|
45
|
+
export * from './Accordion';
|
|
45
46
|
export * from './layout';
|
|
46
47
|
export { useListData, useAsyncList, type ListData, type ListOptions, type AsyncListData, type AsyncListOptions, type AsyncListLoadFunction, type AsyncListLoadOptions, type TimeValue, type DateValue, } from '@koobiq/react-primitives';
|
|
47
48
|
export { useRouter, useLocale, useFilter, type Locale, type SortDescriptor, type Selection, RouterProvider, useDateFormatter, } from '@koobiq/react-core';
|
package/dist/index.js
CHANGED
|
@@ -104,9 +104,18 @@ import { toastPlacement, toastPropStatus, toastStackDirection } from "./componen
|
|
|
104
104
|
import { Breadcrumbs } from "./components/Breadcrumbs/Breadcrumbs.js";
|
|
105
105
|
import { breadcrumbsPropOverflowMode, breadcrumbsPropSize } from "./components/Breadcrumbs/types.js";
|
|
106
106
|
import { BreadcrumbItem } from "./components/Breadcrumbs/components/BreadcrumbItem/BreadcrumbItem.js";
|
|
107
|
+
import { Accordion, AccordionComponent } from "./components/Accordion/Accordion.js";
|
|
108
|
+
import { AccordionGroup } from "./components/Accordion/components/AccordionGroup/AccordionGroup.js";
|
|
109
|
+
import { AccordionGroupStateContext } from "./components/Accordion/components/AccordionGroup/AccordionGroupContext.js";
|
|
110
|
+
import { AccordionStateContext } from "./components/Accordion/AccordionStateContext.js";
|
|
107
111
|
import { flex, flexPropAlignItems, flexPropDirection, flexPropFlex, flexPropGap, flexPropJustifyContent, flexPropOrder, flexPropWrap } from "./components/layout/flex/flex.js";
|
|
108
112
|
import { spacing, spacingGap } from "./components/layout/spacing/spacing.js";
|
|
109
113
|
export {
|
|
114
|
+
Accordion,
|
|
115
|
+
AccordionComponent,
|
|
116
|
+
AccordionGroup,
|
|
117
|
+
AccordionGroupStateContext,
|
|
118
|
+
AccordionStateContext,
|
|
110
119
|
Alert,
|
|
111
120
|
AnimatedIcon,
|
|
112
121
|
Autocomplete,
|
package/dist/style.css
CHANGED
|
@@ -5083,6 +5083,104 @@
|
|
|
5083
5083
|
letter-spacing: var(--kbq-typography-subheading-letter-spacing);
|
|
5084
5084
|
text-underline-offset: calc(( var(--kbq-typography-subheading-line-height) - var(--kbq-typography-subheading-font-size)) / 2);
|
|
5085
5085
|
}
|
|
5086
|
+
.kbq-accordion-3163a3 {
|
|
5087
|
+
--accordion-outline-width: var(--kbq-size-3xs);
|
|
5088
|
+
--accordion-outline-color: transparent;
|
|
5089
|
+
transition: outline-color var(--kbq-transition-default);
|
|
5090
|
+
outline-offset: calc(-1 * var(--accordion-outline-width));
|
|
5091
|
+
outline: var(--accordion-outline-width) solid var(--accordion-outline-color);
|
|
5092
|
+
flex-direction: column;
|
|
5093
|
+
display: flex;
|
|
5094
|
+
}
|
|
5095
|
+
|
|
5096
|
+
.kbq-accordion-3163a3:has([data-slot="trigger"][data-focus-visible="true"]) {
|
|
5097
|
+
--accordion-outline-color: var(--kbq-states-line-focus-theme);
|
|
5098
|
+
}
|
|
5099
|
+
.kbq-accordionsummary-17bfb5 {
|
|
5100
|
+
--accordion-summary-block-size: 36px;
|
|
5101
|
+
--accordion-summary-color: var(--kbq-foreground-contrast);
|
|
5102
|
+
--accordion-summary-expand-icon-color: var(--kbq-icon-contrast-fade);
|
|
5103
|
+
margin: unset;
|
|
5104
|
+
min-block-size: var(--accordion-summary-block-size);
|
|
5105
|
+
}
|
|
5106
|
+
|
|
5107
|
+
.kbq-accordionsummary-17bfb5 > * {
|
|
5108
|
+
cursor: pointer;
|
|
5109
|
+
}
|
|
5110
|
+
|
|
5111
|
+
.kbq-accordionsummary-17bfb5:has(:disabled) > * {
|
|
5112
|
+
cursor: not-allowed;
|
|
5113
|
+
}
|
|
5114
|
+
|
|
5115
|
+
.kbq-accordionsummary-trigger-8096e7 {
|
|
5116
|
+
inline-size: 100%;
|
|
5117
|
+
font: inherit;
|
|
5118
|
+
text-align: start;
|
|
5119
|
+
gap: var(--kbq-size-xxs);
|
|
5120
|
+
padding: var(--kbq-size-s);
|
|
5121
|
+
color: var(--accordion-summary-color);
|
|
5122
|
+
background: none;
|
|
5123
|
+
border: none;
|
|
5124
|
+
outline: none;
|
|
5125
|
+
display: flex;
|
|
5126
|
+
}
|
|
5127
|
+
|
|
5128
|
+
.kbq-accordionsummary-hovered-3a99cb {
|
|
5129
|
+
--accordion-summary-expand-icon-color: var(--kbq-icon-contrast);
|
|
5130
|
+
}
|
|
5131
|
+
|
|
5132
|
+
.kbq-accordionsummary-disabled-5a76af {
|
|
5133
|
+
--accordion-summary-color: var(--kbq-foreground-contrast-secondary);
|
|
5134
|
+
--accordion-summary-expand-icon-color: var(--kbq-states-icon-disabled);
|
|
5135
|
+
}
|
|
5136
|
+
|
|
5137
|
+
.kbq-accordionsummary-after-content-58ad40, .kbq-accordionsummary-separately-f6c597 {
|
|
5138
|
+
padding: var(--kbq-size-s) var(--kbq-size-m);
|
|
5139
|
+
}
|
|
5140
|
+
|
|
5141
|
+
.kbq-accordionsummary-separately-f6c597 .kbq-accordionsummary-expandIcon-54a6fc {
|
|
5142
|
+
margin-inline-start: auto;
|
|
5143
|
+
}
|
|
5144
|
+
|
|
5145
|
+
.kbq-accordionsummary-expandIcon-54a6fc {
|
|
5146
|
+
block-size: var(--kbq-size-xxl);
|
|
5147
|
+
inline-size: var(--kbq-size-xxl);
|
|
5148
|
+
color: var(--accordion-summary-expand-icon-color);
|
|
5149
|
+
transition: color var(--kbq-transition-default);
|
|
5150
|
+
flex-shrink: 0;
|
|
5151
|
+
justify-content: center;
|
|
5152
|
+
align-items: center;
|
|
5153
|
+
display: flex;
|
|
5154
|
+
}
|
|
5155
|
+
.kbq-accordiondetails-639d82 {
|
|
5156
|
+
--accordion-details-duration: .3s;
|
|
5157
|
+
--accordion-details-block-size: 0;
|
|
5158
|
+
--accordion-details-padding: 0 var(--kbq-size-m) var(--kbq-size-s) var(--kbq-size-m);
|
|
5159
|
+
opacity: 1;
|
|
5160
|
+
will-change: block-size;
|
|
5161
|
+
transition: block-size var(--kbq-transition-slow), opacity var(--kbq-transition-slow);
|
|
5162
|
+
transition-duration: var(--accordion-details-duration);
|
|
5163
|
+
overflow: hidden;
|
|
5164
|
+
}
|
|
5165
|
+
|
|
5166
|
+
.kbq-accordiondetails-639d82 > * {
|
|
5167
|
+
padding: var(--accordion-details-padding);
|
|
5168
|
+
margin: unset;
|
|
5169
|
+
}
|
|
5170
|
+
|
|
5171
|
+
.kbq-accordiondetails-639d82[data-transition="entering"], .kbq-accordiondetails-639d82[data-transition="entered"] {
|
|
5172
|
+
opacity: 1;
|
|
5173
|
+
block-size: var(--accordion-details-block-size);
|
|
5174
|
+
}
|
|
5175
|
+
|
|
5176
|
+
.kbq-accordiondetails-639d82[data-transition="exiting"], .kbq-accordiondetails-639d82[data-transition="exited"] {
|
|
5177
|
+
opacity: 0;
|
|
5178
|
+
block-size: 0;
|
|
5179
|
+
}
|
|
5180
|
+
.kbq-accordiongroup-35d80f {
|
|
5181
|
+
flex-direction: column;
|
|
5182
|
+
display: flex;
|
|
5183
|
+
}
|
|
5086
5184
|
.kbq-spacing-mbs_0-be7021 {
|
|
5087
5185
|
margin-block-start: 0;
|
|
5088
5186
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@koobiq/react-components",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.22.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -28,10 +28,10 @@
|
|
|
28
28
|
"@koobiq/design-tokens": "^3.15.0",
|
|
29
29
|
"@types/react-transition-group": "^4.4.12",
|
|
30
30
|
"react-transition-group": "^4.4.5",
|
|
31
|
-
"@koobiq/
|
|
32
|
-
"@koobiq/
|
|
33
|
-
"@koobiq/react-icons": "0.
|
|
34
|
-
"@koobiq/react-primitives": "0.
|
|
31
|
+
"@koobiq/react-core": "0.22.0",
|
|
32
|
+
"@koobiq/logger": "0.22.0",
|
|
33
|
+
"@koobiq/react-icons": "0.22.0",
|
|
34
|
+
"@koobiq/react-primitives": "0.22.0"
|
|
35
35
|
},
|
|
36
36
|
"peerDependencies": {
|
|
37
37
|
"@koobiq/design-tokens": "^3.15.0",
|