@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.
Files changed (33) hide show
  1. package/dist/components/Accordion/Accordion.d.ts +9 -0
  2. package/dist/components/Accordion/Accordion.js +89 -0
  3. package/dist/components/Accordion/Accordion.module.css.js +8 -0
  4. package/dist/components/Accordion/AccordionStateContext.d.ts +2 -0
  5. package/dist/components/Accordion/AccordionStateContext.js +7 -0
  6. package/dist/components/Accordion/components/AccordionDetails/AccordionDetails.d.ts +2 -0
  7. package/dist/components/Accordion/components/AccordionDetails/AccordionDetails.js +55 -0
  8. package/dist/components/Accordion/components/AccordionDetails/AccordionDetails.module.css.js +8 -0
  9. package/dist/components/Accordion/components/AccordionDetails/AccordionDetailsContext.d.ts +2 -0
  10. package/dist/components/Accordion/components/AccordionDetails/AccordionDetailsContext.js +7 -0
  11. package/dist/components/Accordion/components/AccordionDetails/index.d.ts +3 -0
  12. package/dist/components/Accordion/components/AccordionDetails/types.d.ts +14 -0
  13. package/dist/components/Accordion/components/AccordionGroup/AccordionGroup.d.ts +2 -0
  14. package/dist/components/Accordion/components/AccordionGroup/AccordionGroup.js +31 -0
  15. package/dist/components/Accordion/components/AccordionGroup/AccordionGroup.module.css.js +8 -0
  16. package/dist/components/Accordion/components/AccordionGroup/AccordionGroupContext.d.ts +2 -0
  17. package/dist/components/Accordion/components/AccordionGroup/AccordionGroupContext.js +5 -0
  18. package/dist/components/Accordion/components/AccordionGroup/index.d.ts +3 -0
  19. package/dist/components/Accordion/components/AccordionGroup/types.d.ts +7 -0
  20. package/dist/components/Accordion/components/AccordionSummary/AccordionSummary.d.ts +4 -0
  21. package/dist/components/Accordion/components/AccordionSummary/AccordionSummary.js +80 -0
  22. package/dist/components/Accordion/components/AccordionSummary/AccordionSummary.module.css.js +24 -0
  23. package/dist/components/Accordion/components/AccordionSummary/AccordionSummaryContext.d.ts +2 -0
  24. package/dist/components/Accordion/components/AccordionSummary/AccordionSummaryContext.js +7 -0
  25. package/dist/components/Accordion/components/AccordionSummary/index.d.ts +3 -0
  26. package/dist/components/Accordion/components/AccordionSummary/types.d.ts +25 -0
  27. package/dist/components/Accordion/components/index.d.ts +3 -0
  28. package/dist/components/Accordion/index.d.ts +4 -0
  29. package/dist/components/Accordion/types.d.ts +8 -0
  30. package/dist/components/index.d.ts +1 -0
  31. package/dist/index.js +9 -0
  32. package/dist/style.css +98 -0
  33. 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,8 @@
1
+ const base = "kbq-accordion-3163a3";
2
+ const s = {
3
+ base
4
+ };
5
+ export {
6
+ base,
7
+ s as default
8
+ };
@@ -0,0 +1,2 @@
1
+ import type { DisclosureState } from '@koobiq/react-primitives';
2
+ export declare const AccordionStateContext: import("react").Context<DisclosureState>;
@@ -0,0 +1,7 @@
1
+ import { createContext } from "react";
2
+ const AccordionStateContext = createContext(
3
+ {}
4
+ );
5
+ export {
6
+ AccordionStateContext
7
+ };
@@ -0,0 +1,2 @@
1
+ import type { AccordionDetailsProps } from './index';
2
+ export declare const AccordionDetails: import("react").ForwardRefExoticComponent<Omit<AccordionDetailsProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
@@ -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,8 @@
1
+ const base = "kbq-accordiondetails-639d82";
2
+ const s = {
3
+ base
4
+ };
5
+ export {
6
+ base,
7
+ s as default
8
+ };
@@ -0,0 +1,2 @@
1
+ import type { ContextValue } from '@koobiq/react-primitives';
2
+ export declare const AccordionDetailsContext: import("react").Context<ContextValue<import("react").HTMLAttributes<HTMLElement>, HTMLDivElement>>;
@@ -0,0 +1,7 @@
1
+ import { createContext } from "react";
2
+ const AccordionDetailsContext = createContext(
3
+ null
4
+ );
5
+ export {
6
+ AccordionDetailsContext
7
+ };
@@ -0,0 +1,3 @@
1
+ export * from './AccordionDetails';
2
+ export * from './AccordionDetailsContext';
3
+ export * from './types';
@@ -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,2 @@
1
+ import type { AccordionGroupProps } from './index';
2
+ export declare const AccordionGroup: import("react").ForwardRefExoticComponent<Omit<AccordionGroupProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
@@ -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,8 @@
1
+ const base = "kbq-accordiongroup-35d80f";
2
+ const s = {
3
+ base
4
+ };
5
+ export {
6
+ base,
7
+ s as default
8
+ };
@@ -0,0 +1,2 @@
1
+ import type { DisclosureGroupState } from '@koobiq/react-primitives';
2
+ export declare const AccordionGroupStateContext: import("react").Context<DisclosureGroupState | null>;
@@ -0,0 +1,5 @@
1
+ import { createContext } from "react";
2
+ const AccordionGroupStateContext = createContext(null);
3
+ export {
4
+ AccordionGroupStateContext
5
+ };
@@ -0,0 +1,3 @@
1
+ export * from './AccordionGroup';
2
+ export * from './AccordionGroupContext';
3
+ export * from './types';
@@ -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,2 @@
1
+ import type { ContextValue } from '@koobiq/react-primitives';
2
+ export declare const AccordionSummaryContext: import("react").Context<ContextValue<import("@react-types/button").AriaButtonProps<"button">, HTMLButtonElement>>;
@@ -0,0 +1,7 @@
1
+ import { createContext } from "react";
2
+ const AccordionSummaryContext = createContext(
3
+ null
4
+ );
5
+ export {
6
+ AccordionSummaryContext
7
+ };
@@ -0,0 +1,3 @@
1
+ export * from './AccordionSummary';
2
+ export * from './AccordionSummaryContext';
3
+ export * from './types';
@@ -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,3 @@
1
+ export * from './AccordionSummary';
2
+ export * from './AccordionDetails';
3
+ export * from './AccordionGroup';
@@ -0,0 +1,4 @@
1
+ export * from './Accordion';
2
+ export * from './components/AccordionGroup';
3
+ export * from './AccordionStateContext';
4
+ export * from './types';
@@ -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.21.1",
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/logger": "0.21.1",
32
- "@koobiq/react-core": "0.21.1",
33
- "@koobiq/react-primitives": "0.21.1",
34
- "@koobiq/react-icons": "0.21.1"
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",