@kushagradhawan/kookie-ui 0.1.69 → 0.1.71
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/cjs/components/_internal/shell-bottom.d.ts +2 -21
- package/dist/cjs/components/_internal/shell-bottom.d.ts.map +1 -1
- package/dist/cjs/components/_internal/shell-bottom.js +1 -1
- package/dist/cjs/components/_internal/shell-bottom.js.map +3 -3
- package/dist/cjs/components/_internal/shell-inspector.d.ts +10 -21
- package/dist/cjs/components/_internal/shell-inspector.d.ts.map +1 -1
- package/dist/cjs/components/_internal/shell-inspector.js +1 -1
- package/dist/cjs/components/_internal/shell-inspector.js.map +3 -3
- package/dist/cjs/components/_internal/shell-prop-helpers.d.ts +7 -0
- package/dist/cjs/components/_internal/shell-prop-helpers.d.ts.map +1 -0
- package/dist/cjs/components/_internal/shell-prop-helpers.js +2 -0
- package/dist/cjs/components/_internal/shell-prop-helpers.js.map +7 -0
- package/dist/cjs/components/_internal/shell-sidebar.d.ts +4 -21
- package/dist/cjs/components/_internal/shell-sidebar.d.ts.map +1 -1
- package/dist/cjs/components/_internal/shell-sidebar.js +1 -1
- package/dist/cjs/components/_internal/shell-sidebar.js.map +3 -3
- package/dist/cjs/components/chatbar.d.ts +12 -3
- package/dist/cjs/components/chatbar.d.ts.map +1 -1
- package/dist/cjs/components/chatbar.js +1 -1
- package/dist/cjs/components/chatbar.js.map +3 -3
- package/dist/cjs/components/schemas/shell.schema.d.ts +70 -70
- package/dist/cjs/components/shell.context.d.ts +1 -0
- package/dist/cjs/components/shell.context.d.ts.map +1 -1
- package/dist/cjs/components/shell.context.js.map +2 -2
- package/dist/cjs/components/shell.d.ts +6 -26
- package/dist/cjs/components/shell.d.ts.map +1 -1
- package/dist/cjs/components/shell.hooks.d.ts +19 -2
- package/dist/cjs/components/shell.hooks.d.ts.map +1 -1
- package/dist/cjs/components/shell.hooks.js +1 -1
- package/dist/cjs/components/shell.hooks.js.map +3 -3
- package/dist/cjs/components/shell.js +1 -1
- package/dist/cjs/components/shell.js.map +3 -3
- package/dist/cjs/components/shell.types.d.ts +21 -0
- package/dist/cjs/components/shell.types.d.ts.map +1 -1
- package/dist/cjs/components/shell.types.js +1 -1
- package/dist/cjs/components/shell.types.js.map +2 -2
- package/dist/esm/components/_internal/shell-bottom.d.ts +2 -21
- package/dist/esm/components/_internal/shell-bottom.d.ts.map +1 -1
- package/dist/esm/components/_internal/shell-bottom.js +1 -1
- package/dist/esm/components/_internal/shell-bottom.js.map +3 -3
- package/dist/esm/components/_internal/shell-inspector.d.ts +10 -21
- package/dist/esm/components/_internal/shell-inspector.d.ts.map +1 -1
- package/dist/esm/components/_internal/shell-inspector.js +1 -1
- package/dist/esm/components/_internal/shell-inspector.js.map +3 -3
- package/dist/esm/components/_internal/shell-prop-helpers.d.ts +7 -0
- package/dist/esm/components/_internal/shell-prop-helpers.d.ts.map +1 -0
- package/dist/esm/components/_internal/shell-prop-helpers.js +2 -0
- package/dist/esm/components/_internal/shell-prop-helpers.js.map +7 -0
- package/dist/esm/components/_internal/shell-sidebar.d.ts +4 -21
- package/dist/esm/components/_internal/shell-sidebar.d.ts.map +1 -1
- package/dist/esm/components/_internal/shell-sidebar.js +1 -1
- package/dist/esm/components/_internal/shell-sidebar.js.map +3 -3
- package/dist/esm/components/chatbar.d.ts +12 -3
- package/dist/esm/components/chatbar.d.ts.map +1 -1
- package/dist/esm/components/chatbar.js +1 -1
- package/dist/esm/components/chatbar.js.map +3 -3
- package/dist/esm/components/schemas/shell.schema.d.ts +70 -70
- package/dist/esm/components/shell.context.d.ts +1 -0
- package/dist/esm/components/shell.context.d.ts.map +1 -1
- package/dist/esm/components/shell.context.js.map +2 -2
- package/dist/esm/components/shell.d.ts +6 -26
- package/dist/esm/components/shell.d.ts.map +1 -1
- package/dist/esm/components/shell.hooks.d.ts +19 -2
- package/dist/esm/components/shell.hooks.d.ts.map +1 -1
- package/dist/esm/components/shell.hooks.js +1 -1
- package/dist/esm/components/shell.hooks.js.map +3 -3
- package/dist/esm/components/shell.js +1 -1
- package/dist/esm/components/shell.js.map +3 -3
- package/dist/esm/components/shell.types.d.ts +21 -0
- package/dist/esm/components/shell.types.d.ts.map +1 -1
- package/dist/esm/components/shell.types.js.map +2 -2
- package/package.json +1 -1
- package/schemas/base-button.json +1 -1
- package/schemas/button.json +1 -1
- package/schemas/icon-button.json +1 -1
- package/schemas/index.json +6 -6
- package/schemas/toggle-button.json +1 -1
- package/schemas/toggle-icon-button.json +1 -1
- package/src/components/_internal/shell-bottom.tsx +305 -321
- package/src/components/_internal/shell-inspector.tsx +310 -320
- package/src/components/_internal/shell-prop-helpers.ts +53 -0
- package/src/components/_internal/shell-sidebar.tsx +370 -384
- package/src/components/chatbar.tsx +22 -6
- package/src/components/shell.context.tsx +1 -0
- package/src/components/shell.hooks.ts +67 -2
- package/src/components/shell.tsx +186 -200
- package/src/components/shell.types.ts +23 -0
|
@@ -1121,13 +1121,28 @@ const RowEnd = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'
|
|
|
1121
1121
|
});
|
|
1122
1122
|
RowEnd.displayName = 'Chatbar.RowEnd';
|
|
1123
1123
|
|
|
1124
|
-
|
|
1124
|
+
type SendProps = Omit<IconButtonProps, 'aria-label' | 'aria-labelledby'> & {
|
|
1125
|
+
/** Optional override for accessible name. Defaults to "Send". */
|
|
1126
|
+
'aria-label'?: string;
|
|
1127
|
+
'aria-labelledby'?: string;
|
|
1125
1128
|
asChild?: boolean;
|
|
1126
1129
|
clearOnSend?: boolean;
|
|
1127
|
-
}
|
|
1130
|
+
};
|
|
1128
1131
|
|
|
1129
1132
|
const Send = React.forwardRef<HTMLButtonElement, SendProps>((props, forwardedRef) => {
|
|
1130
|
-
const {
|
|
1133
|
+
const {
|
|
1134
|
+
asChild,
|
|
1135
|
+
clearOnSend = true,
|
|
1136
|
+
disabled,
|
|
1137
|
+
children,
|
|
1138
|
+
className,
|
|
1139
|
+
style,
|
|
1140
|
+
size: sizeProp,
|
|
1141
|
+
variant: variantProp,
|
|
1142
|
+
'aria-label': ariaLabel,
|
|
1143
|
+
'aria-labelledby': ariaLabelledby,
|
|
1144
|
+
...buttonProps
|
|
1145
|
+
} = props;
|
|
1131
1146
|
const ctx = useChatbarContext();
|
|
1132
1147
|
|
|
1133
1148
|
const trimmed = ctx.value.trim();
|
|
@@ -1149,8 +1164,8 @@ const Send = React.forwardRef<HTMLButtonElement, SendProps>((props, forwardedRef
|
|
|
1149
1164
|
<IconButton
|
|
1150
1165
|
{...(buttonProps as any)}
|
|
1151
1166
|
ref={forwardedRef as any}
|
|
1152
|
-
size={ctx.size}
|
|
1153
|
-
variant={ctx.open ? 'solid' : 'ghost'}
|
|
1167
|
+
size={sizeProp ?? ctx.size}
|
|
1168
|
+
variant={variantProp ?? (ctx.open ? 'solid' : 'ghost')}
|
|
1154
1169
|
disabled={disabled || ctx.disabled || ctx.readOnly}
|
|
1155
1170
|
className={classNames('rt-ChatbarSend', className)}
|
|
1156
1171
|
style={{
|
|
@@ -1160,7 +1175,8 @@ const Send = React.forwardRef<HTMLButtonElement, SendProps>((props, forwardedRef
|
|
|
1160
1175
|
}}
|
|
1161
1176
|
asChild={asChild}
|
|
1162
1177
|
onClick={handleClick}
|
|
1163
|
-
aria-label={
|
|
1178
|
+
aria-label={ariaLabel ?? (ariaLabelledby ? undefined : 'Send')}
|
|
1179
|
+
aria-labelledby={ariaLabelledby}
|
|
1164
1180
|
>
|
|
1165
1181
|
{children ?? (
|
|
1166
1182
|
<svg
|
|
@@ -45,6 +45,7 @@ export interface ShellContextValue {
|
|
|
45
45
|
|
|
46
46
|
const ShellContext = React.createContext<ShellContextValue | null>(null);
|
|
47
47
|
|
|
48
|
+
/** @internal Shell root context. Prefer slice hooks (useSidebarMode, useShellActions, etc.). */
|
|
48
49
|
export function useShell() {
|
|
49
50
|
const ctx = React.useContext(ShellContext);
|
|
50
51
|
if (!ctx) throw new Error('Shell components must be used within <Shell.Root>');
|
|
@@ -3,7 +3,7 @@ import type { Breakpoint, PresentationValue, ResponsivePresentation } from './sh
|
|
|
3
3
|
import { _BREAKPOINTS } from './shell.types.js';
|
|
4
4
|
import { useShell } from './shell.context.js';
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
function useResponsivePresentation(presentation: ResponsivePresentation): PresentationValue {
|
|
7
7
|
const { currentBreakpoint } = useShell();
|
|
8
8
|
|
|
9
9
|
return React.useMemo(() => {
|
|
@@ -35,7 +35,7 @@ export function useResponsivePresentation(presentation: ResponsivePresentation):
|
|
|
35
35
|
* If no value is defined for the current breakpoint, search smaller breakpoints down to 'initial'.
|
|
36
36
|
* Returns undefined when passed a responsive map with no matching key across the chain.
|
|
37
37
|
*/
|
|
38
|
-
|
|
38
|
+
function useResponsiveValue<T>(value: T | Partial<Record<Breakpoint, T>> | undefined): T | undefined {
|
|
39
39
|
const { currentBreakpoint } = useShell();
|
|
40
40
|
|
|
41
41
|
return React.useMemo(() => {
|
|
@@ -64,3 +64,68 @@ export function useResponsiveValue<T>(value: T | Partial<Record<Breakpoint, T>>
|
|
|
64
64
|
return undefined;
|
|
65
65
|
}, [value, currentBreakpoint]);
|
|
66
66
|
}
|
|
67
|
+
|
|
68
|
+
type ResponsiveStateValue<T> = T | Partial<Record<Breakpoint, T>>;
|
|
69
|
+
|
|
70
|
+
interface UseResponsiveInitialStateOptions<T> {
|
|
71
|
+
controlledValue?: ResponsiveStateValue<T>;
|
|
72
|
+
defaultValue?: ResponsiveStateValue<T>;
|
|
73
|
+
currentValue: T;
|
|
74
|
+
setValue: (value: T) => void;
|
|
75
|
+
breakpointReady: boolean;
|
|
76
|
+
onInit?: (value: T) => void;
|
|
77
|
+
onResponsiveChange?: (value: T) => void;
|
|
78
|
+
controlledIsResponsive?: boolean;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
interface UseResponsiveInitialStateResult<T> {
|
|
82
|
+
resolvedControlled?: T;
|
|
83
|
+
resolvedDefault?: T;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function useResponsiveInitialState<T>({
|
|
87
|
+
controlledValue,
|
|
88
|
+
defaultValue,
|
|
89
|
+
currentValue,
|
|
90
|
+
setValue,
|
|
91
|
+
breakpointReady,
|
|
92
|
+
onInit,
|
|
93
|
+
onResponsiveChange,
|
|
94
|
+
controlledIsResponsive = false,
|
|
95
|
+
}: UseResponsiveInitialStateOptions<T>): UseResponsiveInitialStateResult<T> {
|
|
96
|
+
const resolvedControlled = useResponsiveValue(controlledValue);
|
|
97
|
+
const resolvedDefault = useResponsiveValue(defaultValue);
|
|
98
|
+
|
|
99
|
+
const lastControlledRef = React.useRef<T | undefined>(undefined);
|
|
100
|
+
React.useEffect(() => {
|
|
101
|
+
if (resolvedControlled === undefined) return;
|
|
102
|
+
lastControlledRef.current = resolvedControlled;
|
|
103
|
+
if (currentValue === resolvedControlled) {
|
|
104
|
+
if (controlledIsResponsive) {
|
|
105
|
+
onResponsiveChange?.(resolvedControlled);
|
|
106
|
+
}
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
setValue(resolvedControlled);
|
|
110
|
+
if (controlledIsResponsive) {
|
|
111
|
+
onResponsiveChange?.(resolvedControlled);
|
|
112
|
+
}
|
|
113
|
+
}, [resolvedControlled, currentValue, setValue, onResponsiveChange, controlledIsResponsive]);
|
|
114
|
+
|
|
115
|
+
const didInitRef = React.useRef(false);
|
|
116
|
+
React.useEffect(() => {
|
|
117
|
+
if (didInitRef.current) return;
|
|
118
|
+
if (!breakpointReady) return;
|
|
119
|
+
if (typeof controlledValue !== 'undefined') return;
|
|
120
|
+
if (resolvedDefault === undefined) return;
|
|
121
|
+
didInitRef.current = true;
|
|
122
|
+
if (currentValue !== resolvedDefault) {
|
|
123
|
+
setValue(resolvedDefault);
|
|
124
|
+
}
|
|
125
|
+
onInit?.(resolvedDefault);
|
|
126
|
+
}, [breakpointReady, controlledValue, resolvedDefault, currentValue, setValue, onInit]);
|
|
127
|
+
|
|
128
|
+
return { resolvedControlled, resolvedDefault };
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export { useResponsivePresentation, useResponsiveValue, useResponsiveInitialState };
|