@koobiq/react-components 0.21.1 → 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/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'>;
|
|
@@ -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-
|
|
34
|
-
"@koobiq/react-
|
|
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",
|