@chai-ui/react 0.10.0 → 0.11.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/DESIGN.md CHANGED
@@ -60,6 +60,11 @@ use these names: `Results`, `Compare`, `ModelPicker`,
60
60
  8. **Only show what's real.** Show cost only when the engine reports it.
61
61
  Don't show model rankings or leaderboard positions you can't keep up to
62
62
  date. Don't show a control the selected model can't honor.
63
+ 9. **Say where the bar is docked.** A `Composer` fixed to the bottom of
64
+ the screen gets `menuPlacement="above"`, one fixed to the top
65
+ `menuPlacement="below"`, so its menus always open into the page. Leave
66
+ it out for a bar in the page flow: `"auto"` picks the side with room
67
+ each time a menu opens.
63
68
 
64
69
  ### In Vue
65
70
 
@@ -155,6 +160,7 @@ Rules:
155
160
  | No use case picked | The prompt is a text request and gets a text reply | Set `defaultUseCase` if your app's default should be image or video |
156
161
  | Voice input | A mic left of submit; while recording, a live waveform replaces the prompt and the mic becomes stop; the transcript is added to the prompt, never sent; submit hides until it's in; inline messages for a blocked or missing mic | Pass `voiceInput={{ model: "fal-ai/wizper" }}` (any Fal speech-to-text model, through your `/api/chai/fal` route) or `voiceInput={{ transcribe }}` for another provider. Chai never picks the model. |
157
162
  | Create world | Two prompts, Environment (required) and Character (optional), each with its own Enhance; a frame rate menu from the models' `frameRates`; submit waits for an environment and says so | Add `"create-world"` to `attachMenuActions`, pass your world models, `character` + `onCharacterChange`, and route `engineByKind.world` to your world engine. Show the world in your own viewer. |
163
+ | Create speech, Create music | The attach menu's audio group, under a divider; speech asks for the words to speak, music for a description; Enhance keeps a speech script's words and only makes them read aloud well; once one model is picked, a Voice menu from its `voices` (speech), or a multi-select Genre menu from the picked models' `genres` (music, written into the prompt) | Add `"create-speech"` / `"create-music"` to `attachMenuActions`, set `CREATE_SPEECH_USE_CASE` / `CREATE_MUSIC_USE_CASE` on the pick, pass your audio models (with `voices` or `genres`) and `engineByKind.audio`, and wire `speechVoice` / `genres`. No duration, instrumental or reference-audio controls yet |
158
164
  | Result pending | `ResultCard` shows a spinner for `queued` / `running` | Nothing. `useComposer` sets the status. |
159
165
  | Long text answer | `ResultCard` keeps line breaks, scrolls past 400px with a visible scrollbar, and follows streaming text unless the person scrolls up | Change the height with `textMaxHeight` if needed |
160
166
  | Text streaming in | `ResultCard` renders partial text with a caret, marked `aria-busy` | Use an engine that calls `onText` (OpenRouter does, and so does the mock text engine). `useComposer` wires it. |
package/README.md CHANGED
@@ -12,8 +12,8 @@
12
12
 
13
13
  # @chai-ui/react
14
14
 
15
- React components for the input and output surfaces of generative-media
16
- apps. Everything here is controlled — you own the state, these components
15
+ Chai UI for React: drop-in components for the input and output surfaces of
16
+ generative-media apps. Everything here is controlled — you own the state, these components
17
17
  render it and tell you when it changes.
18
18
 
19
19
  Building with it, or pointing a coding agent at it? Read
@@ -186,6 +186,21 @@ If routing can't run (no `ChaiProvider`, a failed reasoning call, an
186
186
  unlisted reply), the request runs on the first listed model and
187
187
  `onRoutingFallback` says why.
188
188
 
189
+ ### Where the bar sits: `menuPlacement`
190
+
191
+ Every menu in the bar (the `+` menu, Model, Aspect ratio, Voice, Genre,
192
+ Frame rate) opens the same way. Tell `Composer` where the bar is docked:
193
+
194
+ ```tsx
195
+ <Composer menuPlacement="above" {...props} /> // docked to the bottom of the screen, like a chat app
196
+ <Composer menuPlacement="below" {...props} /> // docked to the top
197
+ ```
198
+
199
+ Leave it out (`"auto"`) for a bar that sits in the page: each menu is
200
+ measured when it opens and goes below if it fits, else above if that fits,
201
+ else toward the side with more room, so it's never cut off by the edge of
202
+ the screen.
203
+
189
204
  ## What else this package ships
190
205
 
191
206
  - **`MediaAnalyzer`** — drop in an image, video, or audio clip and get a
@@ -373,7 +388,7 @@ const model = SUGGESTED_EDIT_MODELS.find((m) => m.id === modelId) ?? SUGGESTED_E
373
388
  // ...your other Composer props
374
389
  useCase={useCase}
375
390
  onAttachMenuSelect={(action) => {
376
- if (action === "edit-media") setUseCase(EDIT_IMAGE_USE_CASE);
391
+ if (action === "edit-image") setUseCase(EDIT_IMAGE_USE_CASE);
377
392
  }}
378
393
  regions={edit?.regions}
379
394
  onRegionsChange={edit?.onRegionsChange}
@@ -1,8 +1,8 @@
1
1
  import * as React from "react";
2
- import { type ComposerAttachMenuAction, type ComposerPromptField, type VoiceInputConfig } from "@chai-ui/core";
2
+ import { type ComposerAttachMenuAction, type ComposerPromptField, type MenuPlacement, type VoiceInputConfig } from "@chai-ui/core";
3
3
  import type { EditRegion, GenerationUseCase, ModelOption, ParameterOption, OutputKind } from "@chai-ui/core";
4
4
  import type { ComposerAttachment, ComposerSubmitPayload, ComposerUseCase } from "@chai-ui/core";
5
- export { EDIT_IMAGE_USE_CASE, TEXT_USE_CASE, type ComposerAttachMenuAction, type ComposerAttachment, type ComposerPromptField, type ComposerSelection, type ComposerSubmitPayload, type ComposerUseCase, } from "@chai-ui/core";
5
+ export { CREATE_MUSIC_USE_CASE, CREATE_SPEECH_USE_CASE, EDIT_IMAGE_USE_CASE, TEXT_USE_CASE, type AudioUseCase, type ComposerAttachMenuAction, type ComposerAttachment, type ComposerPromptField, type ComposerSelection, type ComposerSubmitPayload, type ComposerUseCase, } from "@chai-ui/core";
6
6
  export interface ComposerProps {
7
7
  /** The prompt text. Controlled — Composer owns no text state of its own. */
8
8
  value: string;
@@ -23,7 +23,10 @@ export interface ComposerProps {
23
23
  * Builder opt-in, off by default: several use cases at once (e.g. an image
24
24
  * and a video from one prompt), at most one per kind. Uses `useCases`,
25
25
  * `onUseCasesChange` and `modelsByKind` instead of `useCase` and `models`;
26
- * the model menu shows one section per picked use case.
26
+ * the model menu shows one section per picked use case. Edit image and
27
+ * Create speech run alone: an edit works on one image, and speech's prompt
28
+ * is the words to say, which no other use case can share. Create music
29
+ * can join Image and Video.
27
30
  */
28
31
  multiSelectUseCases?: boolean;
29
32
  useCases?: ComposerUseCase[];
@@ -106,6 +109,20 @@ export interface ComposerProps {
106
109
  /** A world's frame rate menu, from the selected models' `ModelOption.frameRates`. */
107
110
  frameRate?: number | null;
108
111
  onFrameRateChange?: (value: number) => void;
112
+ /** Create speech's Voice menu, from the one picked model's `ModelOption.voices`. Not `voiceInput`, which is dictation. */
113
+ speechVoice?: string | null;
114
+ onSpeechVoiceChange?: (value: string) => void;
115
+ /** Create music's Genre menu, several at once, from the picked models' `ModelOption.genres`. */
116
+ genres?: string[];
117
+ onGenresChange?: (values: string[]) => void;
118
+ /**
119
+ * Which way the bar's menus open (the + menu, Model, Aspect ratio and the
120
+ * rest). `"above"` for a bar docked to the bottom of the screen, `"below"`
121
+ * for one docked to the top. `"auto"` (default) measures when a menu opens:
122
+ * below if it fits, else above if that fits, else toward the side with
123
+ * more room.
124
+ */
125
+ menuPlacement?: MenuPlacement;
109
126
  /** Fires with everything Composer tracks — see `ComposerSubmitPayload`. Also what retry calls, with the same payload, when `submitError` is set. */
110
127
  onSubmit: (payload: ComposerSubmitPayload) => void;
111
128
  /**
@@ -156,6 +173,10 @@ export interface ComposerProps {
156
173
  */
157
174
  voiceInput?: VoiceInputConfig;
158
175
  disabled?: boolean;
176
+ /** Extra class names for the root element, added after `chai-composer`. */
177
+ className?: string;
178
+ /** Inline styles for the root element, e.g. `{ maxWidth: 720 }` to size the bar. */
179
+ style?: React.CSSProperties;
159
180
  }
160
181
  /**
161
182
  * The `bar`-layout Composer —
@@ -167,5 +188,5 @@ export interface ComposerProps {
167
188
  * `control-*` semantic tokens, restylable per instance through the
168
189
  * `--chai-composer-*` custom properties in style.css.
169
190
  */
170
- export declare function Composer({ value, onChange, placeholder, promptLabel, attachments, onAttachmentsChange, onUnsupportedFile, useCase, onClearUseCase, defaultUseCase, multiSelectUseCases, useCases, onUseCasesChange, modelsByKind, multiSelectModels, modelIds, onModelIdsChange, models, modelId, onModelChange, autoSelectModel, showAutoSelectToggle, onAutoSelectModelChange, aspectRatios, aspectRatio, onAspectRatioChange, onEnhance, enhancing, character, onCharacterChange, frameRate, onFrameRateChange, onSubmit, submitError, submitDisabled, submitting, onAbort, onAttachMenuSelect, attachMenuActions, regions, onRegionsChange, voiceInput, disabled, }: ComposerProps): React.JSX.Element;
191
+ export declare function Composer({ value, onChange, placeholder, promptLabel, attachments, onAttachmentsChange, onUnsupportedFile, useCase, onClearUseCase, defaultUseCase, multiSelectUseCases, useCases, onUseCasesChange, modelsByKind, multiSelectModels, modelIds, onModelIdsChange, models, modelId, onModelChange, autoSelectModel, showAutoSelectToggle, onAutoSelectModelChange, aspectRatios, aspectRatio, onAspectRatioChange, onEnhance, enhancing, character, onCharacterChange, frameRate, onFrameRateChange, speechVoice, onSpeechVoiceChange, genres, onGenresChange, menuPlacement, onSubmit, submitError, submitDisabled, submitting, onAbort, onAttachMenuSelect, attachMenuActions, regions, onRegionsChange, voiceInput, disabled, className, style, }: ComposerProps): React.JSX.Element;
171
192
  //# sourceMappingURL=Composer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Composer.d.ts","sourceRoot":"","sources":["../src/Composer.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAWL,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACtB,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,WAAW,EAAE,eAAe,EAAa,UAAU,EAAE,MAAM,eAAe,CAAC;AAExH,OAAO,KAAK,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhG,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,GACrB,MAAM,eAAe,CAAC;AAUvB,MAAM,WAAW,aAAa;IAC5B,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,4FAA4F;IAC5F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qIAAqI;IACrI,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACnC,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,kBAAkB,EAAE,KAAK,IAAI,CAAC;IAC3D,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,mFAAmF;IACnF,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,uHAAuH;IACvH,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;IAC7B,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,IAAI,CAAC;IACrD,wHAAwH;IACxH,YAAY,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;IAC1D;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC3C;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,yGAAyG;IACzG,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC5C;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;;;OAOG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,2NAA2N;IAC3N,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnD;;;;OAIG;IACH,YAAY,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;IACzC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C;;;;;;;;;;;;;;;;;OAiBG;IACH,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,CAAC,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC1F,wIAAwI;IACxI,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,qFAAqF;IACrF,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,oJAAoJ;IACpJ,QAAQ,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACnD;;;;;;;;;;OAUG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,sJAAsJ;IACtJ,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uLAAuL;IACvL,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,wBAAwB,KAAK,IAAI,CAAC;IAChE;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,wBAAwB,EAAE,CAAC;IAC/C;;;OAGG;IACH,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IAC/C;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,QAAQ,EACR,WAAW,EACX,WAAW,EACX,WAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,OAAc,EACd,cAAc,EACd,cAA8B,EAC9B,mBAA2B,EAC3B,QAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,iBAAyB,EACzB,QAAa,EACb,gBAAgB,EAChB,MAAM,EACN,OAAc,EACd,aAAa,EACb,eAAuB,EACvB,oBAA4B,EAC5B,uBAAuB,EACvB,YAAY,EACZ,WAAkB,EAClB,mBAAmB,EACnB,SAAS,EACT,SAAiB,EACjB,SAAc,EACd,iBAAiB,EACjB,SAAgB,EAChB,iBAAiB,EACjB,QAAQ,EACR,WAAkB,EAClB,cAAc,EACd,UAAkB,EAClB,OAAO,EACP,kBAAkB,EAClB,iBAAiB,EACjB,OAAY,EACZ,eAAe,EACf,UAAU,EACV,QAAgB,GACjB,EAAE,aAAa,qBAyUf"}
1
+ {"version":3,"file":"Composer.d.ts","sourceRoot":"","sources":["../src/Composer.tsx"],"names":[],"mappings":"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"}
package/dist/Composer.js CHANGED
@@ -1,13 +1,13 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { AddIcon, ArrowForwardIcon, CloseSymbolIcon, StopIcon } from "./icons.js";
3
- import { useEffect, useId, useRef, useState, useSyncExternalStore } from "react";
3
+ import { useEffect, useId, useLayoutEffect, useRef, useState, useSyncExternalStore } from "react";
4
4
  import { createComponent } from "@lit/react";
5
5
  import * as React from "react";
6
6
  import { MdFab } from "@material/web/fab/fab.js";
7
- import { composerAttachmentsFromFiles, composerAttachMenuItems, composerView, createVoiceInput, enhanceRevealDurationMs, formatVoiceElapsed, VOICE_LEVEL_COUNT, MAX_ANIMATE_ENHANCE_LENGTH, regionColor, TEXT_USE_CASE, } from "@chai-ui/core";
7
+ import { composerAttachmentsFromFiles, composerAttachMenuItems, composerView, createVoiceInput, enhanceRevealDurationMs, formatVoiceElapsed, VOICE_LEVEL_COUNT, MAX_ANIMATE_ENHANCE_LENGTH, regionColor, TEXT_USE_CASE, menuOpensAbove, } from "@chai-ui/core";
8
8
  import { useLatest } from "./use-latest.js";
9
9
  import { SearchMenu } from "./primitives/SearchMenu.js";
10
- export { EDIT_IMAGE_USE_CASE, TEXT_USE_CASE, } from "@chai-ui/core";
10
+ export { CREATE_MUSIC_USE_CASE, CREATE_SPEECH_USE_CASE, EDIT_IMAGE_USE_CASE, TEXT_USE_CASE, } from "@chai-ui/core";
11
11
  /** See primitives/Toggle.tsx for why `createComponent` is used instead of raw JSX on custom-element tags. */
12
12
  const MdFabElement = createComponent({
13
13
  react: React,
@@ -25,7 +25,7 @@ const MdFabElement = createComponent({
25
25
  * `control-*` semantic tokens, restylable per instance through the
26
26
  * `--chai-composer-*` custom properties in style.css.
27
27
  */
28
- export function Composer({ value, onChange, placeholder, promptLabel, attachments = [], onAttachmentsChange, onUnsupportedFile, useCase = null, onClearUseCase, defaultUseCase = TEXT_USE_CASE, multiSelectUseCases = false, useCases = [], onUseCasesChange, modelsByKind, multiSelectModels = false, modelIds = [], onModelIdsChange, models, modelId = null, onModelChange, autoSelectModel = false, showAutoSelectToggle = false, onAutoSelectModelChange, aspectRatios, aspectRatio = null, onAspectRatioChange, onEnhance, enhancing = false, character = "", onCharacterChange, frameRate = null, onFrameRateChange, onSubmit, submitError = null, submitDisabled, submitting = false, onAbort, onAttachMenuSelect, attachMenuActions, regions = [], onRegionsChange, voiceInput, disabled = false, }) {
28
+ export function Composer({ value, onChange, placeholder, promptLabel, attachments = [], onAttachmentsChange, onUnsupportedFile, useCase = null, onClearUseCase, defaultUseCase = TEXT_USE_CASE, multiSelectUseCases = false, useCases = [], onUseCasesChange, modelsByKind, multiSelectModels = false, modelIds = [], onModelIdsChange, models, modelId = null, onModelChange, autoSelectModel = false, showAutoSelectToggle = false, onAutoSelectModelChange, aspectRatios, aspectRatio = null, onAspectRatioChange, onEnhance, enhancing = false, character = "", onCharacterChange, frameRate = null, onFrameRateChange, speechVoice = null, onSpeechVoiceChange, genres = [], onGenresChange, menuPlacement = "auto", onSubmit, submitError = null, submitDisabled, submitting = false, onAbort, onAttachMenuSelect, attachMenuActions, regions = [], onRegionsChange, voiceInput, disabled = false, className, style, }) {
29
29
  const view = composerView({
30
30
  value,
31
31
  placeholder,
@@ -46,6 +46,8 @@ export function Composer({ value, onChange, placeholder, promptLabel, attachment
46
46
  aspectRatio,
47
47
  character,
48
48
  frameRate,
49
+ speechVoice,
50
+ genres,
49
51
  submitError,
50
52
  submitDisabled,
51
53
  submitting,
@@ -113,9 +115,9 @@ export function Composer({ value, onChange, placeholder, promptLabel, attachment
113
115
  function handleRemoveAttachment(id) {
114
116
  onAttachmentsChange?.(attachments.filter((a) => a.id !== id));
115
117
  }
116
- return (_jsxs("div", { className: "chai-composer", children: [attachments.length > 0 && (_jsx("div", { className: "chai-composer__thumbnails", children: attachments.map((a) => (_jsx(ComposerThumbnail, { attachment: a, onRemove: onAttachmentsChange ? () => handleRemoveAttachment(a.id) : undefined }, a.id))) })), editing && regions.length > 0 && (_jsx("ul", { className: "chai-composer__regions", "aria-label": "Edit regions", children: regions.map((r) => (_jsx("li", { children: _jsx(RegionChip, { region: r, onRemove: onRegionsChange ? () => onRegionsChange(regions.filter((x) => x.id !== r.id)) : undefined, disabled: disabled }) }, r.id))) })), voiceInput && voice.state.status === "recording" ? (_jsx(VoiceWaveform, { levels: voice.state.levels, elapsedMs: voice.state.elapsedMs })) : view.world ? (_jsxs("div", { className: "chai-composer__world-fields", children: [_jsx(PromptField, { value: value, onChange: onChange, placeholder: view.placeholder, heading: "Environment", note: "(required)", hint: view.environmentHint, onEnhance: enhanceField("environment"), enhancing: enhancing && enhancingField === "environment", disabled: disabled }), onCharacterChange && (_jsx(PromptField, { value: character, onChange: onCharacterChange, placeholder: view.characterPlaceholder, heading: "Character", note: "(optional)", onEnhance: enhanceField("character"), enhancing: enhancing && enhancingField === "character", disabled: disabled }))] })) : (_jsx(PromptField, { value: value, onChange: onChange, placeholder: view.placeholder, label: promptLabel, onEnhance: enhanceField("prompt"), enhancing: enhancing, disabled: disabled })), submitError && (_jsxs("p", { className: "chai-composer__error", role: "alert", children: [_jsx(ErrorIcon, {}), submitError] })), voiceInput && voice.state.status === "error" && (_jsxs("p", { className: "chai-composer__error", role: "alert", children: [_jsx(ErrorIcon, {}), voice.state.error] })), _jsxs("div", { className: "chai-composer__controls", children: [_jsxs("div", { className: "chai-composer__controls-start", children: [menuItems.length > 0 && (_jsx(ComposerAttachMenu, { items: menuItems, onSelect: onAttachMenuSelect, onAddMediaFiles: handleFilesSelected, imagesOnly: editing, disabled: disabled })), view.pickedUseCases.map((u) => (_jsx(UseCaseChip, { useCase: u, onRemove: multiSelectUseCases
118
+ return (_jsxs("div", { className: className ? `chai-composer ${className}` : "chai-composer", style: style, children: [attachments.length > 0 && (_jsx("div", { className: "chai-composer__thumbnails", children: attachments.map((a) => (_jsx(ComposerThumbnail, { attachment: a, onRemove: onAttachmentsChange ? () => handleRemoveAttachment(a.id) : undefined }, a.id))) })), editing && regions.length > 0 && (_jsx("ul", { className: "chai-composer__regions", "aria-label": "Edit regions", children: regions.map((r) => (_jsx("li", { children: _jsx(RegionChip, { region: r, onRemove: onRegionsChange ? () => onRegionsChange(regions.filter((x) => x.id !== r.id)) : undefined, disabled: disabled }) }, r.id))) })), voiceInput && voice.state.status === "recording" ? (_jsx(VoiceWaveform, { levels: voice.state.levels, elapsedMs: voice.state.elapsedMs })) : view.world ? (_jsxs("div", { className: "chai-composer__world-fields", children: [_jsx(PromptField, { value: value, onChange: onChange, placeholder: view.placeholder, heading: "Environment", note: "(required)", hint: view.environmentHint, onEnhance: enhanceField("environment"), enhancing: enhancing && enhancingField === "environment", disabled: disabled }), onCharacterChange && (_jsx(PromptField, { value: character, onChange: onCharacterChange, placeholder: view.characterPlaceholder, heading: "Character", note: "(optional)", onEnhance: enhanceField("character"), enhancing: enhancing && enhancingField === "character", disabled: disabled }))] })) : (_jsx(PromptField, { value: value, onChange: onChange, placeholder: view.placeholder, label: promptLabel, onEnhance: enhanceField("prompt"), enhancing: enhancing, disabled: disabled })), submitError && (_jsxs("p", { className: "chai-composer__error", role: "alert", children: [_jsx(ErrorIcon, {}), submitError] })), voiceInput && voice.state.status === "error" && (_jsxs("p", { className: "chai-composer__error", role: "alert", children: [_jsx(ErrorIcon, {}), voice.state.error] })), _jsxs("div", { className: "chai-composer__controls", children: [_jsxs("div", { className: "chai-composer__controls-start", children: [menuItems.length > 0 && (_jsx(ComposerAttachMenu, { items: menuItems, onSelect: onAttachMenuSelect, onAddMediaFiles: handleFilesSelected, imagesOnly: editing, disabled: disabled, placement: menuPlacement })), view.pickedUseCases.map((u) => (_jsx(UseCaseChip, { useCase: u, onRemove: multiSelectUseCases
117
119
  ? onUseCasesChange && (() => onUseCasesChange(useCases.filter((x) => x.kind !== u.kind)))
118
- : onClearUseCase, disabled: disabled }, u.kind))), modelSections.length > 0 && view.canPickModel && (_jsx(SearchMenu, { ...(multiSelectUseCases
120
+ : onClearUseCase, disabled: disabled }, u.kind))), modelSections.length > 0 && view.canPickModel && (_jsx(SearchMenu, { placement: menuPlacement, ...(multiSelectUseCases
119
121
  ? { sections: modelSections.map((s) => ({ label: s.label, options: s.options })) }
120
122
  : { options: modelSections[0].options }), value: multiModel ? pickedModelIds : modelId, multiple: multiModel, toggleHeader: showAutoSelectToggle
121
123
  ? {
@@ -123,7 +125,14 @@ export function Composer({ value, onChange, placeholder, promptLabel, attachment
123
125
  value: autoSelectModel,
124
126
  onChange: (v) => onAutoSelectModelChange?.(v),
125
127
  }
126
- : undefined, triggerLabel: view.modelTriggerLabel, menuLabel: multiModel ? "Select models" : "Select model", onSelect: (opt) => toggleModel(opt.id), searchable: false, triggerVariant: "text", disabled: disabled || (autoSelectModel && !showAutoSelectToggle), panelWidth: showAutoSelectToggle ? 320 : undefined })), view.showAspectRatio && aspectOptions.length > 0 && onAspectRatioChange && (_jsx(SearchMenu, { options: aspectOptions.map((o) => ({ id: o.value, label: o.label })), value: offeredAspect, triggerLabel: view.selectedAspect?.label ?? "Aspect ratio", menuLabel: "Aspect ratio", onSelect: (opt) => onAspectRatioChange?.(opt.id), searchable: false, triggerVariant: "text", disabled: disabled })), view.frameRateOptions.length > 0 && onFrameRateChange && (_jsx(SearchMenu, { options: view.frameRateOptions.map((r) => ({ id: String(r), label: `${r}fps` })), value: view.offeredFrameRate == null ? null : String(view.offeredFrameRate), triggerLabel: view.offeredFrameRate == null ? "Frame rate" : `${view.offeredFrameRate}fps`, menuLabel: "Frame rate", onSelect: (opt) => onFrameRateChange(Number(opt.id)), searchable: false, triggerVariant: "text", disabled: disabled }))] }), _jsxs("div", { className: "chai-composer__controls-end", children: [voiceInput && _jsx(VoiceButton, { voice: voice, disabled: disabled }), !(voiceInput && (voice.state.status === "recording" || voice.state.status === "transcribing")) && (_jsx(MdFabElement, { className: "chai-composer__submit", size: "small", variant: "secondary", label: "", "data-ready": showStop || !isSubmitDisabled || undefined, "data-error": Boolean(submitError) || undefined, "data-stop": showStop || undefined, ...{
128
+ : undefined, triggerLabel: view.modelTriggerLabel, menuLabel: multiModel ? "Select models" : "Select model", onSelect: (opt) => toggleModel(opt.id), searchable: false, triggerVariant: "text", disabled: disabled || (autoSelectModel && !showAutoSelectToggle), panelWidth: showAutoSelectToggle ? 320 : undefined })), view.showAspectRatio && aspectOptions.length > 0 && onAspectRatioChange && (_jsx(SearchMenu, { placement: menuPlacement, options: aspectOptions.map((o) => ({ id: o.value, label: o.label })), value: offeredAspect, triggerLabel: view.selectedAspect?.label ?? "Aspect ratio", menuLabel: "Aspect ratio", onSelect: (opt) => onAspectRatioChange?.(opt.id), searchable: false, triggerVariant: "text", disabled: disabled })), view.voiceOptions.length > 0 && onSpeechVoiceChange && (_jsx(SearchMenu, { placement: menuPlacement, ...(view.voiceSections
129
+ ? {
130
+ sections: view.voiceSections.map((s) => ({
131
+ label: s.label,
132
+ options: s.options.map((v) => ({ id: v.value, label: v.label })),
133
+ })),
134
+ }
135
+ : { options: view.voiceOptions.map((v) => ({ id: v.value, label: v.label })) }), value: view.offeredVoice, triggerLabel: view.voiceTriggerLabel, menuLabel: "Voice", onSelect: (opt) => onSpeechVoiceChange(opt.id), searchable: view.voiceOptions.length > view.searchableAt, triggerVariant: "text", disabled: disabled })), view.genreOptions.length > 0 && onGenresChange && (_jsx(SearchMenu, { placement: menuPlacement, options: view.genreOptions.map((g) => ({ id: g.value, label: g.label })), value: view.offeredGenres, multiple: true, triggerLabel: view.genreTriggerLabel, menuLabel: "Genre", onSelect: (opt) => onGenresChange(view.toggledGenres(opt.id)), searchable: view.genreOptions.length > view.searchableAt, triggerVariant: "text", disabled: disabled })), view.frameRateOptions.length > 0 && onFrameRateChange && (_jsx(SearchMenu, { placement: menuPlacement, options: view.frameRateOptions.map((r) => ({ id: String(r), label: `${r}fps` })), value: view.offeredFrameRate == null ? null : String(view.offeredFrameRate), triggerLabel: view.offeredFrameRate == null ? "Frame rate" : `${view.offeredFrameRate}fps`, menuLabel: "Frame rate", onSelect: (opt) => onFrameRateChange(Number(opt.id)), searchable: false, triggerVariant: "text", disabled: disabled }))] }), _jsxs("div", { className: "chai-composer__controls-end", children: [voiceInput && _jsx(VoiceButton, { voice: voice, disabled: disabled }), !(voiceInput && (voice.state.status === "recording" || voice.state.status === "transcribing")) && (_jsx(MdFabElement, { className: "chai-composer__submit", size: "small", variant: "secondary", label: "", "data-ready": showStop || !isSubmitDisabled || undefined, "data-error": Boolean(submitError) || undefined, "data-stop": showStop || undefined, ...{
127
136
  ariaLabel: showStop ? "Stop" : submitError ? "Retry" : "Submit",
128
137
  ariaDisabled: showStop ? "false" : submitting ? "true" : isSubmitDisabled ? "true" : "false",
129
138
  }, onClick: () => {
@@ -275,7 +284,9 @@ const ATTACH_MENU_ICONS = {
275
284
  "create-image": _jsx(ImageIcon, {}),
276
285
  "create-video": _jsx(VideocamIcon, {}),
277
286
  "create-world": _jsx(GlobeIcon, {}),
278
- "edit-media": _jsx(ContentCutIcon, {}),
287
+ "edit-image": _jsx(ContentCutIcon, {}),
288
+ "create-speech": _jsx(VolumeUpIcon, {}),
289
+ "create-music": _jsx(MusicNoteIcon, {}),
279
290
  };
280
291
  /**
281
292
  * The "+" / "×" attach control (reference: Composer_01 "Menu open" state,
@@ -284,9 +295,18 @@ const ATTACH_MENU_ICONS = {
284
295
  * documents for its own panel (this needs to live inline under the trigger,
285
296
  * not `<md-menu>`'s corner-anchored popover model).
286
297
  */
287
- function ComposerAttachMenu({ items, onSelect, onAddMediaFiles, imagesOnly, disabled, }) {
298
+ function ComposerAttachMenu({ items, onSelect, onAddMediaFiles, imagesOnly, disabled, placement, }) {
288
299
  const [open, setOpen] = useState(false);
300
+ const [above, setAbove] = useState(false);
289
301
  const rootRef = useRef(null);
302
+ const menuRef = useRef(null);
303
+ // Up or down, before the first paint, so it never flashes on the wrong side.
304
+ useLayoutEffect(() => {
305
+ const menu = menuRef.current;
306
+ if (!open || !menu)
307
+ return;
308
+ setAbove(menuOpensAbove(placement, rootRef.current.getBoundingClientRect(), menu.offsetHeight, document.documentElement.clientHeight));
309
+ }, [open, placement]);
290
310
  const inputRef = useRef(null);
291
311
  useEffect(() => {
292
312
  if (!open)
@@ -312,7 +332,7 @@ function ComposerAttachMenu({ items, onSelect, onAddMediaFiles, imagesOnly, disa
312
332
  inputRef.current?.click();
313
333
  onSelect?.(action);
314
334
  }
315
- return (_jsxs("div", { className: "chai-composer__attach", ref: rootRef, children: [_jsx("button", { type: "button", className: `chai-composer__attach-toggle${open ? " chai-composer__attach-toggle--open" : ""}`, onClick: () => setOpen((v) => !v), disabled: disabled, "aria-expanded": open, "aria-haspopup": "menu", "aria-label": open ? "Close attach menu" : "Add media", children: open ? _jsx(CloseSymbolIcon, {}) : _jsx(AddIcon, {}) }), open && (_jsx("ul", { className: "chai-composer__attach-menu", role: "menu", children: items.map((item, i) => (_jsxs("li", { role: "none", children: [_jsxs("button", { type: "button", role: "menuitem", className: "chai-composer__attach-menu-item", onClick: () => handleItemClick(item.action), children: [_jsx("span", { className: "chai-composer__attach-menu-icon", children: ATTACH_MENU_ICONS[item.action] }), item.label] }), item.divider && i < items.length - 1 && _jsx("hr", { className: "chai-composer__attach-menu-divider", role: "separator" })] }, item.action))) })), _jsx("input", { ref: inputRef, type: "file", accept: imagesOnly ? "image/*" : "image/*,video/*,audio/*", multiple: !imagesOnly, hidden: true, disabled: disabled, onChange: (e) => {
335
+ return (_jsxs("div", { className: "chai-composer__attach", ref: rootRef, children: [_jsx("button", { type: "button", className: `chai-composer__attach-toggle${open ? " chai-composer__attach-toggle--open" : ""}`, onClick: () => setOpen((v) => !v), disabled: disabled, "aria-expanded": open, "aria-haspopup": "menu", "aria-label": open ? "Close attach menu" : "Add media", children: open ? _jsx(CloseSymbolIcon, {}) : _jsx(AddIcon, {}) }), open && (_jsx("ul", { ref: menuRef, className: `chai-composer__attach-menu${above ? " chai-composer__attach-menu--above" : ""}`, role: "menu", children: items.map((item, i) => (_jsxs("li", { role: "none", children: [_jsxs("button", { type: "button", role: "menuitem", className: "chai-composer__attach-menu-item", onClick: () => handleItemClick(item.action), children: [_jsx("span", { className: "chai-composer__attach-menu-icon", children: ATTACH_MENU_ICONS[item.action] }), item.label] }), item.divider && i < items.length - 1 && _jsx("hr", { className: "chai-composer__attach-menu-divider", role: "separator" })] }, item.action))) })), _jsx("input", { ref: inputRef, type: "file", accept: imagesOnly ? "image/*" : "image/*,video/*,audio/*", multiple: !imagesOnly, hidden: true, disabled: disabled, onChange: (e) => {
316
336
  onAddMediaFiles(e.target.files);
317
337
  e.target.value = "";
318
338
  } })] }));
@@ -349,7 +369,7 @@ function kindIcon(kind) {
349
369
  case "video":
350
370
  return _jsx(VideocamIcon, {});
351
371
  case "audio":
352
- return _jsx(AudioIcon, {});
372
+ return _jsx(MusicNoteIcon, {});
353
373
  default:
354
374
  return _jsx(ImageIcon, {});
355
375
  }
@@ -364,11 +384,11 @@ function kindIcon(kind) {
364
384
  // codebase's existing "trace and inline as a currentColor component"
365
385
  // convention). Fixes an earlier pass
366
386
  // that hand-approximated several of these (Add media/Create image/Create
367
- // video/Edit media's icons, plus/close/arrow) because `get_design_context`
387
+ // video/Edit image's icons, plus/close/arrow) because `get_design_context`
368
388
  // couldn't resolve their specific instance-swap nodes — those
369
389
  // approximations read as visibly off-brand, not real MD3, correctly
370
390
  // flagged and replaced with the genuine glyphs (add, close, arrow_forward,
371
- // attach_file, image, videocam, content_cut, music_note).
391
+ // attach_file, image, videocam, content_cut, music_note, volume_up).
372
392
  //
373
393
  // `OptimizeIcon` is the one exception, still traced exactly from the real
374
394
  // exported design asset ("Optimize_icon") — not a Material Symbol at all, this is CHAI's own "prompt
@@ -415,7 +435,10 @@ function VideocamIcon() {
415
435
  function ContentCutIcon() {
416
436
  return (_jsx("svg", { viewBox: "0 -960 960 960", "aria-hidden": "true", children: _jsx("path", { d: "M782-114 481-415 364-298q11 17 13.5 33t2.5 35q0 64-43 107T230-80q-64 0-107-43T80-230q0-64 43-107t107-43q18 0 35.5 5t36.5 15l116-116-118-118q-17 8-34.5 11t-35.5 3q-64 0-107-43T80-730q0-64 43-107t107-43q64 0 107 43t43 107q0 19-2.5 36T367-662l514 514v34h-99ZM599-527l-66-66 249-249h99v33L599-527ZM294-666q26-26 26-64t-26-64q-26-26-64-26t-64 26q-26 26-26 64t26 64q26 26 64 26t64-26Zm202.5 203.5Q502-468 502-476t-5.5-13.5Q491-495 483-495t-13.5 5.5Q464-484 464-476t5.5 13.5Q475-457 483-457t13.5-5.5ZM294-166q26-26 26-64t-26-64q-26-26-64-26t-64 26q-26 26-26 64t26 64q26 26 64 26t64-26Z", fill: "currentColor" }) }));
417
437
  }
418
- function AudioIcon() {
438
+ function MusicNoteIcon() {
419
439
  return (_jsx("svg", { viewBox: "0 -960 960 960", "aria-hidden": "true", children: _jsx("path", { d: "M286.5-163.5Q243-207 243-270t43.5-106.5Q330-420 393-420q28 0 50.5 8t39.5 22v-450h234v135H543v435q0 63-43.5 106.5T393-120q-63 0-106.5-43.5Z", fill: "currentColor" }) }));
420
440
  }
441
+ function VolumeUpIcon() {
442
+ return (_jsx("svg", { viewBox: "0 -960 960 960", "aria-hidden": "true", children: _jsx("path", { d: "M560-131v-62q97-28 158.5-107.5T780-481q0-101-61-181T560-769v-62q124 28 202 125.5T840-481q0 127-78 224.5T560-131ZM120-360v-240h160l200-200v640L280-360H120Zm420 48v-337q55 17 87.5 64T660-480q0 57-33 104t-87 64ZM420-648 307-540H180v120h127l113 109v-337Zm-94 168Z", fill: "currentColor" }) }));
443
+ }
421
444
  //# sourceMappingURL=Composer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Composer.js","sourceRoot":"","sources":["../src/Composer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Composer.js","sourceRoot":"","sources":["../src/Composer.tsx"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -6,6 +6,6 @@ export * from "./EditCard.js";
6
6
  export * from "./useComposer.js";
7
7
  export * from "./ChaiProvider.js";
8
8
  export * from "./useMediaAnalyzer.js";
9
- export { createFalEngine, createFalTranscriber, createOpenRouterEngine, createMockEngine, mockEngine, buildRegionEditPrompt, DEFAULT_MAX_REGIONS, PRECISE_EDIT_MODELS, ROUTING_MODEL_ID, GenerationError, DEFAULT_MEDIA_ANALYSIS_PROMPT_LENGTH, MEDIA_ANALYSIS_PROMPTS, MEDIA_ANALYSIS_PROMPT_LENGTHS, SUGGESTED_IMAGE_MODELS, SUGGESTED_TEXT_TO_VIDEO_MODELS, SUGGESTED_IMAGE_TO_VIDEO_MODELS, SUGGESTED_EDIT_MODELS, SUGGESTED_ANALYSIS_MODELS, suggestedModels, checkSuggestedModels, } from "@chai-ui/core";
10
- export type { DroppedMedia, EditRegion, Evaluation, GenerationEngine, GenerationUseCase, MediaAnalysisKind, MediaAnalysisPromptLength, MediaKind, ModelOption, OutputKind, Transcribe, VoiceClip, VoiceInputConfig, ParameterOption, RegionBox, RegionFormat, Request, Result, ResultStatus, Run, SuggestedModelProblem, SuggestedModelsCheck, FalInputFormat, Usage, } from "@chai-ui/core";
9
+ export { createFalEngine, createFalTranscriber, createOpenRouterEngine, createMockEngine, mockEngine, buildRegionEditPrompt, DEFAULT_MAX_REGIONS, PRECISE_EDIT_MODELS, ROUTING_MODEL_ID, GenerationError, DEFAULT_MEDIA_ANALYSIS_PROMPT_LENGTH, MEDIA_ANALYSIS_PROMPTS, MEDIA_ANALYSIS_PROMPT_LENGTHS, SUGGESTED_IMAGE_MODELS, SUGGESTED_TEXT_TO_VIDEO_MODELS, SUGGESTED_IMAGE_TO_VIDEO_MODELS, SUGGESTED_EDIT_MODELS, SUGGESTED_ANALYSIS_MODELS, suggestedModels, promptWithGenres, checkSuggestedModels, } from "@chai-ui/core";
10
+ export type { DroppedMedia, EditRegion, Evaluation, GenerationEngine, GenerationUseCase, MediaAnalysisKind, MediaAnalysisPromptLength, MediaKind, MenuPlacement, ModelOption, OutputKind, Transcribe, VoiceClip, VoiceInputConfig, VoiceOption, ParameterOption, RegionBox, RegionFormat, Request, Result, ResultStatus, Run, SuggestedModelProblem, SuggestedModelsCheck, FalInputFormat, Usage, } from "@chai-ui/core";
11
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AAItC,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,UAAU,EACV,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,oCAAoC,EACpC,sBAAsB,EACtB,6BAA6B,EAC7B,sBAAsB,EACtB,8BAA8B,EAC9B,+BAA+B,EAC/B,qBAAqB,EACrB,yBAAyB,EACzB,eAAe,EACf,oBAAoB,GACrB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,YAAY,EACZ,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,yBAAyB,EACzB,SAAS,EACT,WAAW,EACX,UAAU,EACV,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,YAAY,EACZ,OAAO,EACP,MAAM,EACN,YAAY,EACZ,GAAG,EACH,qBAAqB,EACrB,oBAAoB,EACpB,cAAc,EACd,KAAK,GACN,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AAItC,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,UAAU,EACV,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,oCAAoC,EACpC,sBAAsB,EACtB,6BAA6B,EAC7B,sBAAsB,EACtB,8BAA8B,EAC9B,+BAA+B,EAC/B,qBAAqB,EACrB,yBAAyB,EACzB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,YAAY,EACZ,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,yBAAyB,EACzB,SAAS,EACT,aAAa,EACb,WAAW,EACX,UAAU,EACV,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,SAAS,EACT,YAAY,EACZ,OAAO,EACP,MAAM,EACN,YAAY,EACZ,GAAG,EACH,qBAAqB,EACrB,oBAAoB,EACpB,cAAc,EACd,KAAK,GACN,MAAM,eAAe,CAAC"}
package/dist/index.js CHANGED
@@ -8,5 +8,5 @@ export * from "./ChaiProvider.js";
8
8
  export * from "./useMediaAnalyzer.js";
9
9
  // Re-export the core engines and types so a consumer typically only needs
10
10
  // to import from @chai-ui/react.
11
- export { createFalEngine, createFalTranscriber, createOpenRouterEngine, createMockEngine, mockEngine, buildRegionEditPrompt, DEFAULT_MAX_REGIONS, PRECISE_EDIT_MODELS, ROUTING_MODEL_ID, GenerationError, DEFAULT_MEDIA_ANALYSIS_PROMPT_LENGTH, MEDIA_ANALYSIS_PROMPTS, MEDIA_ANALYSIS_PROMPT_LENGTHS, SUGGESTED_IMAGE_MODELS, SUGGESTED_TEXT_TO_VIDEO_MODELS, SUGGESTED_IMAGE_TO_VIDEO_MODELS, SUGGESTED_EDIT_MODELS, SUGGESTED_ANALYSIS_MODELS, suggestedModels, checkSuggestedModels, } from "@chai-ui/core";
11
+ export { createFalEngine, createFalTranscriber, createOpenRouterEngine, createMockEngine, mockEngine, buildRegionEditPrompt, DEFAULT_MAX_REGIONS, PRECISE_EDIT_MODELS, ROUTING_MODEL_ID, GenerationError, DEFAULT_MEDIA_ANALYSIS_PROMPT_LENGTH, MEDIA_ANALYSIS_PROMPTS, MEDIA_ANALYSIS_PROMPT_LENGTHS, SUGGESTED_IMAGE_MODELS, SUGGESTED_TEXT_TO_VIDEO_MODELS, SUGGESTED_IMAGE_TO_VIDEO_MODELS, SUGGESTED_EDIT_MODELS, SUGGESTED_ANALYSIS_MODELS, suggestedModels, promptWithGenres, checkSuggestedModels, } from "@chai-ui/core";
12
12
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AAEtC,0EAA0E;AAC1E,iCAAiC;AACjC,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,UAAU,EACV,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,oCAAoC,EACpC,sBAAsB,EACtB,6BAA6B,EAC7B,sBAAsB,EACtB,8BAA8B,EAC9B,+BAA+B,EAC/B,qBAAqB,EACrB,yBAAyB,EACzB,eAAe,EACf,oBAAoB,GACrB,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AAEtC,0EAA0E;AAC1E,iCAAiC;AACjC,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,UAAU,EACV,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,oCAAoC,EACpC,sBAAsB,EACtB,6BAA6B,EAC7B,sBAAsB,EACtB,8BAA8B,EAC9B,+BAA+B,EAC/B,qBAAqB,EACrB,yBAAyB,EACzB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,eAAe,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import * as React from "react";
2
+ import { type MenuPlacement } from "@chai-ui/core";
2
3
  export interface SearchMenuOption {
3
4
  id: string;
4
5
  /** Shown on the trigger once this option is selected, and used for search-filtering. Keep this the short/canonical name. */
@@ -53,6 +54,8 @@ interface SearchMenuProps<T extends SearchMenuOption> {
53
54
  triggerVariant?: "outlined" | "text";
54
55
  /** Panel width in px (default 280) — widen for a menu whose option labels run long; anything still too long past that ellipsizes rather than wrapping or overflowing. */
55
56
  panelWidth?: number;
57
+ /** Which way the panel opens: `"auto"` (default) below when it fits, else above when that fits, else toward the side with more room. */
58
+ placement?: MenuPlacement;
56
59
  }
57
60
  /**
58
61
  * The searchable menu-button pattern behind every Model/option menu
@@ -64,6 +67,6 @@ interface SearchMenuProps<T extends SearchMenuOption> {
64
67
  * positioning model — same reasoning SegmentedButton documents for why it
65
68
  * isn't a `@material/web` custom element either.
66
69
  */
67
- export declare function SearchMenu<T extends SearchMenuOption>({ options, sections, toggleHeader, value, multiple, triggerLabel, menuLabel, onSelect, disabled, searchable, triggerVariant, panelWidth, }: SearchMenuProps<T>): React.JSX.Element;
70
+ export declare function SearchMenu<T extends SearchMenuOption>({ options, sections, toggleHeader, value, multiple, triggerLabel, menuLabel, onSelect, disabled, searchable, triggerVariant, panelWidth, placement, }: SearchMenuProps<T>): React.JSX.Element;
68
71
  export {};
69
72
  //# sourceMappingURL=SearchMenu.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SearchMenu.d.ts","sourceRoot":"","sources":["../../src/primitives/SearchMenu.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA4B/B,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,4HAA4H;IAC5H,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,uLAAuL;AACvL,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,gBAAgB;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,CAAC,EAAE,CAAC;CACd;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACnC;AAED,UAAU,eAAe,CAAC,CAAC,SAAS,gBAAgB;IAClD,0DAA0D;IAC1D,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;IACd,iKAAiK;IACjK,QAAQ,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;IAClC,YAAY,CAAC,EAAE,sBAAsB,CAAC;IACtC,uGAAuG;IACvG,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IAChC,0PAA0P;IAC1P,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wCAAwC;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mLAAmL;IACnL,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uKAAuK;IACvK,cAAc,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IACrC,yKAAyK;IACzK,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,gBAAgB,EAAE,EACrD,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,KAAK,EACL,QAAgB,EAChB,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,UAAiB,EACjB,cAA2B,EAC3B,UAAgB,GACjB,EAAE,eAAe,CAAC,CAAC,CAAC,qBA+KpB"}
1
+ {"version":3,"file":"SearchMenu.d.ts","sourceRoot":"","sources":["../../src/primitives/SearchMenu.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAuBnE,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,4HAA4H;IAC5H,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,uLAAuL;AACvL,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,gBAAgB;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,CAAC,EAAE,CAAC;CACd;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACnC;AAED,UAAU,eAAe,CAAC,CAAC,SAAS,gBAAgB;IAClD,0DAA0D;IAC1D,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;IACd,iKAAiK;IACjK,QAAQ,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;IAClC,YAAY,CAAC,EAAE,sBAAsB,CAAC;IACtC,uGAAuG;IACvG,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IAChC,0PAA0P;IAC1P,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wCAAwC;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mLAAmL;IACnL,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uKAAuK;IACvK,cAAc,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IACrC,yKAAyK;IACzK,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wIAAwI;IACxI,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,gBAAgB,EAAE,EACrD,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,KAAK,EACL,QAAgB,EAChB,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,UAAiB,EACjB,cAA2B,EAC3B,UAAgB,EAChB,SAAkB,GACnB,EAAE,eAAe,CAAC,CAAC,CAAC,qBAmLpB"}
@@ -6,6 +6,7 @@ import { MdOutlinedTextField } from "@material/web/textfield/outlined-text-field
6
6
  import { MdCheckbox } from "@material/web/checkbox/checkbox.js";
7
7
  import { Toggle } from "./Toggle.js";
8
8
  import { CheckIcon } from "../icons.js";
9
+ import { menuOpensAbove } from "@chai-ui/core";
9
10
  const MdOutlinedTextFieldElement = createComponent({
10
11
  react: React,
11
12
  tagName: "md-outlined-text-field",
@@ -35,8 +36,9 @@ const MdCheckboxElement = createComponent({
35
36
  * positioning model — same reasoning SegmentedButton documents for why it
36
37
  * isn't a `@material/web` custom element either.
37
38
  */
38
- export function SearchMenu({ options, sections, toggleHeader, value, multiple = false, triggerLabel, menuLabel, onSelect, disabled, searchable = true, triggerVariant = "outlined", panelWidth = 280, }) {
39
+ export function SearchMenu({ options, sections, toggleHeader, value, multiple = false, triggerLabel, menuLabel, onSelect, disabled, searchable = true, triggerVariant = "outlined", panelWidth = 280, placement = "auto", }) {
39
40
  const [open, setOpen] = useState(false);
41
+ const [above, setAbove] = useState(false);
40
42
  const [search, setSearch] = useState("");
41
43
  // Closing also clears the search, so the menu reopens on the full list.
42
44
  const close = useCallback(() => {
@@ -57,7 +59,10 @@ export function SearchMenu({ options, sections, toggleHeader, value, multiple =
57
59
  const over = rect.right - (document.documentElement.clientWidth - 16);
58
60
  if (over > 0)
59
61
  panel.style.left = `${-Math.min(over, Math.max(0, rect.left - 16))}px`;
60
- }, [open]);
62
+ // Up or down, before the first paint, so it never flashes on the wrong side.
63
+ const trigger = rootRef.current.getBoundingClientRect();
64
+ setAbove(menuOpensAbove(placement, trigger, panel.offsetHeight, document.documentElement.clientHeight));
65
+ }, [open, placement]);
61
66
  useEffect(() => {
62
67
  if (!open)
63
68
  return;
@@ -90,7 +95,7 @@ export function SearchMenu({ options, sections, toggleHeader, value, multiple =
90
95
  }, [options, sections, search]);
91
96
  const hasAnyOption = groups.some((g) => g.options.length > 0);
92
97
  const isSelected = (id) => (Array.isArray(value) ? value.includes(id) : id === value);
93
- return (_jsxs("div", { className: "chai-search-menu", ref: rootRef, children: [_jsxs("button", { type: "button", className: `${triggerVariant === "outlined" ? "chai-btn chai-btn--outlined" : "chai-search-menu__trigger--text"} chai-search-menu__trigger${open ? " chai-search-menu__trigger--open" : ""}`, disabled: disabled, "aria-expanded": open, onClick: () => (open ? close() : setOpen(true)), children: [_jsx("span", { className: "chai-search-menu__trigger-label", title: triggerLabel, children: triggerLabel }), _jsx("svg", { className: `chai-search-menu__chevron${open ? " chai-search-menu__chevron--open" : ""}`, viewBox: "0 -960 960 960", "aria-hidden": "true", children: _jsx("path", { d: "M480-344 240-584l43-43 197 197 197-197 43 43-240 240Z", fill: "currentColor" }) })] }), open && (_jsxs("div", { ref: panelRef, className: "chai-search-menu__panel", role: "group", "aria-label": menuLabel, style: { width: panelWidth }, children: [toggleHeader && (_jsxs("div", { className: "chai-search-menu__toggle-header", children: [_jsx("span", { className: "chai-search-menu__toggle-header-label", children: menuLabel }), _jsxs("span", { className: "chai-search-menu__toggle-header-row", children: [_jsx("span", { className: "chai-search-menu__toggle-header-text", children: toggleHeader.label }), _jsx(Toggle, { value: toggleHeader.value, onChange: toggleHeader.onChange, ariaLabel: toggleHeader.label })] })] })), searchable && (_jsxs(MdOutlinedTextFieldElement, { className: "chai-search-menu__search", label: menuLabel, placeholder: "Input", value: search, onInput: (e) => setSearch(e.target.value), children: [_jsx("span", { slot: "leading-icon", className: "chai-search-menu__search-icon", children: _jsxs("svg", { viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: [_jsx("circle", { cx: "11", cy: "11", r: "6.5", stroke: "currentColor", strokeWidth: "1.5" }), _jsx("path", { d: "m20 20-3.6-3.6", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" })] }) }), search && (_jsx("button", { type: "button", slot: "trailing-icon", className: "chai-search-menu__clear", "aria-label": "Clear search", onClick: () => setSearch(""), children: _jsxs("svg", { viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: [_jsx("circle", { cx: "12", cy: "12", r: "9", stroke: "currentColor", strokeWidth: "1.5" }), _jsx("path", { d: "m9 9 6 6m0-6-6 6", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" })] }) }))] })), _jsxs("ul", { className: "chai-search-menu__list", children: [groups.map((group, i) => (_jsxs("li", { children: [group.label && _jsx("p", { className: "chai-search-menu__section-label", children: group.label }), _jsx("ul", { className: "chai-search-menu__section-list", "aria-label": group.label || undefined, children: group.options.map((o) => (_jsx("li", { children: _jsxs("button", { type: "button", "aria-pressed": isSelected(o.id), disabled: toggleHeader?.value, className: `chai-search-menu__option${!multiple && isSelected(o.id) ? " chai-search-menu__option--selected" : ""}`, onClick: () => {
98
+ return (_jsxs("div", { className: "chai-search-menu", ref: rootRef, children: [_jsxs("button", { type: "button", className: `${triggerVariant === "outlined" ? "chai-btn chai-btn--outlined" : "chai-search-menu__trigger--text"} chai-search-menu__trigger${open ? " chai-search-menu__trigger--open" : ""}`, disabled: disabled, "aria-expanded": open, onClick: () => (open ? close() : setOpen(true)), children: [_jsx("span", { className: "chai-search-menu__trigger-label", title: triggerLabel, children: triggerLabel }), _jsx("svg", { className: `chai-search-menu__chevron${open ? " chai-search-menu__chevron--open" : ""}`, viewBox: "0 -960 960 960", "aria-hidden": "true", children: _jsx("path", { d: "M480-344 240-584l43-43 197 197 197-197 43 43-240 240Z", fill: "currentColor" }) })] }), open && (_jsxs("div", { ref: panelRef, className: `chai-search-menu__panel${above ? " chai-search-menu__panel--above" : ""}`, role: "group", "aria-label": menuLabel, style: { width: panelWidth }, children: [toggleHeader && (_jsxs("div", { className: "chai-search-menu__toggle-header", children: [_jsx("span", { className: "chai-search-menu__toggle-header-label", children: menuLabel }), _jsxs("span", { className: "chai-search-menu__toggle-header-row", children: [_jsx("span", { className: "chai-search-menu__toggle-header-text", children: toggleHeader.label }), _jsx(Toggle, { value: toggleHeader.value, onChange: toggleHeader.onChange, ariaLabel: toggleHeader.label })] })] })), searchable && (_jsxs(MdOutlinedTextFieldElement, { className: "chai-search-menu__search", label: menuLabel, placeholder: "Search", value: search, onInput: (e) => setSearch(e.target.value), children: [_jsx("span", { slot: "leading-icon", className: "chai-search-menu__search-icon", children: _jsxs("svg", { viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: [_jsx("circle", { cx: "11", cy: "11", r: "6.5", stroke: "currentColor", strokeWidth: "1.5" }), _jsx("path", { d: "m20 20-3.6-3.6", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" })] }) }), search && (_jsx("button", { type: "button", slot: "trailing-icon", className: "chai-search-menu__clear", "aria-label": "Clear search", onClick: () => setSearch(""), children: _jsxs("svg", { viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: [_jsx("circle", { cx: "12", cy: "12", r: "9", stroke: "currentColor", strokeWidth: "1.5" }), _jsx("path", { d: "m9 9 6 6m0-6-6 6", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" })] }) }))] })), _jsxs("ul", { className: "chai-search-menu__list", children: [groups.map((group, i) => (_jsxs("li", { children: [group.label && _jsx("p", { className: "chai-search-menu__section-label", children: group.label }), _jsx("ul", { className: "chai-search-menu__section-list", "aria-label": group.label || undefined, children: group.options.map((o) => (_jsx("li", { children: _jsxs("button", { type: "button", "aria-pressed": isSelected(o.id), disabled: toggleHeader?.value, className: `chai-search-menu__option${!multiple && isSelected(o.id) ? " chai-search-menu__option--selected" : ""}`, onClick: () => {
94
99
  onSelect(o);
95
100
  if (!multiple)
96
101
  close();
@@ -1 +1 @@
1
- {"version":3,"file":"SearchMenu.js","sourceRoot":"","sources":["../../src/primitives/SearchMenu.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SearchMenu.js","sourceRoot":"","sources":["../../src/primitives/SearchMenu.tsx"],"names":[],"mappings":"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"}
package/dist/style.css CHANGED
@@ -209,8 +209,17 @@
209
209
  gap: var(--chai-space-2);
210
210
  }
211
211
 
212
+ /* Opens upward: `placement="above"`, or `"auto"` with no room below. */
213
+ .chai-search-menu__panel--above {
214
+ top: auto;
215
+ bottom: calc(100% + 8px);
216
+ }
217
+
218
+ /* 44px tall, not Material's 56px: the field sits inside a compact menu. */
212
219
  .chai-search-menu__search {
213
220
  width: 100%;
221
+ --md-outlined-text-field-top-space: 10px;
222
+ --md-outlined-text-field-bottom-space: 10px;
214
223
  }
215
224
 
216
225
  .chai-search-menu__search-icon {
@@ -249,9 +258,13 @@
249
258
  border: none;
250
259
  border-radius: var(--chai-radius-sm);
251
260
  background: transparent;
252
- color: var(--chai-color-semantic-control-text-strong);
261
+ /* The same grey and 14px label type as the menu triggers and the rest
262
+ of the controls: 40px rows, the attach menu's density. */
263
+ color: var(--chai-color-semantic-control-text);
253
264
  font-family: var(--chai-type-family-material);
254
- font-size: var(--chai-type-size-body-large);
265
+ font-size: var(--chai-type-size-label-large);
266
+ line-height: var(--chai-type-leading-label-large);
267
+ letter-spacing: var(--chai-type-tracking-label-large);
255
268
  text-align: left;
256
269
  cursor: pointer;
257
270
  }
@@ -296,6 +309,9 @@
296
309
  .chai-search-menu__checkbox {
297
310
  flex: none;
298
311
  pointer-events: none;
312
+ /* 16px, not MD3's 18px, beside 14px labels. */
313
+ --md-checkbox-container-size: 16px;
314
+ --md-checkbox-icon-size: 16px;
299
315
  }
300
316
 
301
317
  .chai-search-menu__option svg {
@@ -339,11 +355,13 @@
339
355
  gap: var(--chai-space-3);
340
356
  }
341
357
 
358
+ /* The menu triggers' type: 14px medium, the controls' grey. */
342
359
  .chai-search-menu__toggle-header-text {
343
360
  font-family: var(--chai-type-family-material);
344
- font-size: var(--chai-type-size-body-large);
361
+ font-size: var(--chai-type-size-label-large);
345
362
  font-weight: var(--chai-type-weight-material-medium);
346
- color: var(--chai-color-semantic-control-text-strong);
363
+ letter-spacing: var(--chai-type-tracking-label-large);
364
+ color: var(--chai-color-semantic-control-text);
347
365
  }
348
366
 
349
367
  .chai-search-menu__empty {
@@ -870,18 +888,26 @@
870
888
  position: relative;
871
889
  }
872
890
 
891
+ /* A 40px rounded square, the size of the mic button's target, with
892
+ -8px margins so the 24px icon and the row's layout stay where they were. */
873
893
  .chai-composer__attach-toggle {
874
894
  display: flex;
875
895
  align-items: center;
876
896
  justify-content: center;
877
- width: 24px;
878
- height: 24px;
897
+ width: 40px;
898
+ height: 40px;
899
+ margin: -8px;
879
900
  padding: 0;
880
901
  border: none;
881
- border-radius: var(--chai-radius-full);
902
+ border-radius: var(--chai-radius-sm);
882
903
  background: transparent;
883
904
  color: var(--chai-composer-text);
884
905
  cursor: pointer;
906
+ transition: background-color var(--chai-motion-duration-fast) var(--chai-motion-easing-standard);
907
+ }
908
+
909
+ .chai-composer__attach-toggle:hover:not(:disabled) {
910
+ background: var(--chai-composer-hover);
885
911
  }
886
912
 
887
913
  .chai-composer__attach-toggle svg {
@@ -901,7 +927,7 @@
901
927
  .chai-composer__attach-menu {
902
928
  position: absolute;
903
929
  z-index: 10;
904
- bottom: calc(100% + 8px);
930
+ top: calc(100% + 8px);
905
931
  left: 0;
906
932
  min-width: 180px;
907
933
  margin: 0;
@@ -912,12 +938,21 @@
912
938
  box-shadow: var(--chai-shadow-menu);
913
939
  }
914
940
 
941
+ /* Opens upward: `menuPlacement="above"`, or `"auto"` with no room below. */
942
+ .chai-composer__attach-menu--above {
943
+ top: auto;
944
+ bottom: calc(100% + 8px);
945
+ }
946
+
947
+ /* MD3 menu density -2: 40px items (48px at density 0, 4px less per step),
948
+ so the longer menu with the audio group stays compact. */
915
949
  .chai-composer__attach-menu-item {
916
950
  display: flex;
917
951
  align-items: center;
918
952
  gap: var(--chai-space-3);
919
953
  width: 100%;
920
- padding: var(--chai-space-2) var(--chai-space-4);
954
+ min-height: 40px;
955
+ padding: 0 var(--chai-space-4);
921
956
  border: none;
922
957
  background: transparent;
923
958
  color: var(--chai-color-semantic-control-text-strong);
@@ -946,9 +981,9 @@
946
981
  height: 100%;
947
982
  }
948
983
 
949
- /* Reference: "Add media" (`MenuListItem1`) is the only item with a divider
950
- under it in the source (`showDivider: true`), separating the real
951
- attach action from the three generation-mode actions below it. */
984
+ /* Between menu groups (see `COMPOSER_ATTACH_MENU_ITEMS`): under "Add media",
985
+ separating the real attach action from the visual use cases, and above
986
+ the audio use cases. */
952
987
  .chai-composer__attach-menu-divider {
953
988
  margin: var(--chai-space-2) 0;
954
989
  border: none;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@chai-ui/react",
3
- "version": "0.10.0",
4
- "description": "CHAI UI React components — smart, drop-in UI for AI apps: Composer, Media Analyzer, Result Card, and the useComposer hook.",
3
+ "version": "0.11.0",
4
+ "description": "Chai UI React components — smart, drop-in UI for AI apps: Composer, Media Analyzer, Result Card, and the useComposer hook.",
5
5
  "license": "MIT",
6
6
  "author": "kazarazat",
7
7
  "homepage": "https://chai-ui.com",
@@ -14,6 +14,7 @@
14
14
  "url": "https://github.com/kazarazat/chai-ui/issues"
15
15
  },
16
16
  "keywords": [
17
+ "chai-ui",
17
18
  "ai",
18
19
  "generative-ai",
19
20
  "design-system",
@@ -48,8 +49,8 @@
48
49
  "@fontsource/roboto": "^5.3.0",
49
50
  "@lit/react": "^1.0.8",
50
51
  "@material/web": "^2.5.0",
51
- "@chai-ui/core": "0.10.0",
52
- "@chai-ui/tokens": "0.10.0"
52
+ "@chai-ui/core": "0.11.0",
53
+ "@chai-ui/tokens": "0.11.0"
53
54
  },
54
55
  "devDependencies": {
55
56
  "@material-symbols/svg-400": "^0.47.5",
package/src/Composer.tsx CHANGED
@@ -1,5 +1,5 @@
1
1
  import { AddIcon, ArrowForwardIcon, CloseSymbolIcon, StopIcon } from "./icons.js";
2
- import { useEffect, useId, useRef, useState, useSyncExternalStore, type ChangeEvent } from "react";
2
+ import { useEffect, useId, useLayoutEffect, useRef, useState, useSyncExternalStore, type ChangeEvent } from "react";
3
3
  import { createComponent } from "@lit/react";
4
4
  import * as React from "react";
5
5
  import { MdFab } from "@material/web/fab/fab.js";
@@ -14,8 +14,10 @@ import {
14
14
  MAX_ANIMATE_ENHANCE_LENGTH,
15
15
  regionColor,
16
16
  TEXT_USE_CASE,
17
+ menuOpensAbove,
17
18
  type ComposerAttachMenuAction,
18
19
  type ComposerPromptField,
20
+ type MenuPlacement,
19
21
  type VoiceInputConfig,
20
22
  } from "@chai-ui/core";
21
23
  import { useLatest } from "./use-latest.js";
@@ -24,8 +26,11 @@ import { SearchMenu } from "./primitives/SearchMenu.js";
24
26
  import type { ComposerAttachment, ComposerSubmitPayload, ComposerUseCase } from "@chai-ui/core";
25
27
 
26
28
  export {
29
+ CREATE_MUSIC_USE_CASE,
30
+ CREATE_SPEECH_USE_CASE,
27
31
  EDIT_IMAGE_USE_CASE,
28
32
  TEXT_USE_CASE,
33
+ type AudioUseCase,
29
34
  type ComposerAttachMenuAction,
30
35
  type ComposerAttachment,
31
36
  type ComposerPromptField,
@@ -62,7 +67,10 @@ export interface ComposerProps {
62
67
  * Builder opt-in, off by default: several use cases at once (e.g. an image
63
68
  * and a video from one prompt), at most one per kind. Uses `useCases`,
64
69
  * `onUseCasesChange` and `modelsByKind` instead of `useCase` and `models`;
65
- * the model menu shows one section per picked use case.
70
+ * the model menu shows one section per picked use case. Edit image and
71
+ * Create speech run alone: an edit works on one image, and speech's prompt
72
+ * is the words to say, which no other use case can share. Create music
73
+ * can join Image and Video.
66
74
  */
67
75
  multiSelectUseCases?: boolean;
68
76
  useCases?: ComposerUseCase[];
@@ -145,6 +153,20 @@ export interface ComposerProps {
145
153
  /** A world's frame rate menu, from the selected models' `ModelOption.frameRates`. */
146
154
  frameRate?: number | null;
147
155
  onFrameRateChange?: (value: number) => void;
156
+ /** Create speech's Voice menu, from the one picked model's `ModelOption.voices`. Not `voiceInput`, which is dictation. */
157
+ speechVoice?: string | null;
158
+ onSpeechVoiceChange?: (value: string) => void;
159
+ /** Create music's Genre menu, several at once, from the picked models' `ModelOption.genres`. */
160
+ genres?: string[];
161
+ onGenresChange?: (values: string[]) => void;
162
+ /**
163
+ * Which way the bar's menus open (the + menu, Model, Aspect ratio and the
164
+ * rest). `"above"` for a bar docked to the bottom of the screen, `"below"`
165
+ * for one docked to the top. `"auto"` (default) measures when a menu opens:
166
+ * below if it fits, else above if that fits, else toward the side with
167
+ * more room.
168
+ */
169
+ menuPlacement?: MenuPlacement;
148
170
  /** Fires with everything Composer tracks — see `ComposerSubmitPayload`. Also what retry calls, with the same payload, when `submitError` is set. */
149
171
  onSubmit: (payload: ComposerSubmitPayload) => void;
150
172
  /**
@@ -195,6 +217,10 @@ export interface ComposerProps {
195
217
  */
196
218
  voiceInput?: VoiceInputConfig;
197
219
  disabled?: boolean;
220
+ /** Extra class names for the root element, added after `chai-composer`. */
221
+ className?: string;
222
+ /** Inline styles for the root element, e.g. `{ maxWidth: 720 }` to size the bar. */
223
+ style?: React.CSSProperties;
198
224
  }
199
225
 
200
226
  /**
@@ -240,6 +266,11 @@ export function Composer({
240
266
  onCharacterChange,
241
267
  frameRate = null,
242
268
  onFrameRateChange,
269
+ speechVoice = null,
270
+ onSpeechVoiceChange,
271
+ genres = [],
272
+ onGenresChange,
273
+ menuPlacement = "auto",
243
274
  onSubmit,
244
275
  submitError = null,
245
276
  submitDisabled,
@@ -251,6 +282,8 @@ export function Composer({
251
282
  onRegionsChange,
252
283
  voiceInput,
253
284
  disabled = false,
285
+ className,
286
+ style,
254
287
  }: ComposerProps) {
255
288
  const view = composerView({
256
289
  value,
@@ -272,6 +305,8 @@ export function Composer({
272
305
  aspectRatio,
273
306
  character,
274
307
  frameRate,
308
+ speechVoice,
309
+ genres,
275
310
  submitError,
276
311
  submitDisabled,
277
312
  submitting,
@@ -343,7 +378,7 @@ export function Composer({
343
378
  }
344
379
 
345
380
  return (
346
- <div className="chai-composer">
381
+ <div className={className ? `chai-composer ${className}` : "chai-composer"} style={style}>
347
382
  {attachments.length > 0 && (
348
383
  <div className="chai-composer__thumbnails">
349
384
  {attachments.map((a) => (
@@ -433,6 +468,7 @@ export function Composer({
433
468
  onAddMediaFiles={handleFilesSelected}
434
469
  imagesOnly={editing}
435
470
  disabled={disabled}
471
+ placement={menuPlacement}
436
472
  />
437
473
  )}
438
474
 
@@ -457,6 +493,7 @@ export function Composer({
457
493
  itself while auto-select is on. */}
458
494
  {modelSections.length > 0 && view.canPickModel && (
459
495
  <SearchMenu
496
+ placement={menuPlacement}
460
497
  {...(multiSelectUseCases
461
498
  ? { sections: modelSections.map((s) => ({ label: s.label, options: s.options })) }
462
499
  : { options: modelSections[0]!.options })}
@@ -483,6 +520,7 @@ export function Composer({
483
520
 
484
521
  {view.showAspectRatio && aspectOptions.length > 0 && onAspectRatioChange && (
485
522
  <SearchMenu
523
+ placement={menuPlacement}
486
524
  options={aspectOptions.map((o) => ({ id: o.value, label: o.label }))}
487
525
  value={offeredAspect}
488
526
  triggerLabel={view.selectedAspect?.label ?? "Aspect ratio"}
@@ -494,8 +532,45 @@ export function Composer({
494
532
  />
495
533
  )}
496
534
 
535
+ {view.voiceOptions.length > 0 && onSpeechVoiceChange && (
536
+ <SearchMenu
537
+ placement={menuPlacement}
538
+ {...(view.voiceSections
539
+ ? {
540
+ sections: view.voiceSections.map((s) => ({
541
+ label: s.label,
542
+ options: s.options.map((v) => ({ id: v.value, label: v.label })),
543
+ })),
544
+ }
545
+ : { options: view.voiceOptions.map((v) => ({ id: v.value, label: v.label })) })}
546
+ value={view.offeredVoice}
547
+ triggerLabel={view.voiceTriggerLabel}
548
+ menuLabel="Voice"
549
+ onSelect={(opt) => onSpeechVoiceChange(opt.id)}
550
+ searchable={view.voiceOptions.length > view.searchableAt}
551
+ triggerVariant="text"
552
+ disabled={disabled}
553
+ />
554
+ )}
555
+
556
+ {view.genreOptions.length > 0 && onGenresChange && (
557
+ <SearchMenu
558
+ placement={menuPlacement}
559
+ options={view.genreOptions.map((g) => ({ id: g.value, label: g.label }))}
560
+ value={view.offeredGenres}
561
+ multiple
562
+ triggerLabel={view.genreTriggerLabel}
563
+ menuLabel="Genre"
564
+ onSelect={(opt) => onGenresChange(view.toggledGenres(opt.id))}
565
+ searchable={view.genreOptions.length > view.searchableAt}
566
+ triggerVariant="text"
567
+ disabled={disabled}
568
+ />
569
+ )}
570
+
497
571
  {view.frameRateOptions.length > 0 && onFrameRateChange && (
498
572
  <SearchMenu
573
+ placement={menuPlacement}
499
574
  options={view.frameRateOptions.map((r) => ({ id: String(r), label: `${r}fps` }))}
500
575
  value={view.offeredFrameRate == null ? null : String(view.offeredFrameRate)}
501
576
  triggerLabel={view.offeredFrameRate == null ? "Frame rate" : `${view.offeredFrameRate}fps`}
@@ -845,7 +920,9 @@ const ATTACH_MENU_ICONS: Record<ComposerAttachMenuAction, React.ReactNode> = {
845
920
  "create-image": <ImageIcon />,
846
921
  "create-video": <VideocamIcon />,
847
922
  "create-world": <GlobeIcon />,
848
- "edit-media": <ContentCutIcon />,
923
+ "edit-image": <ContentCutIcon />,
924
+ "create-speech": <VolumeUpIcon />,
925
+ "create-music": <MusicNoteIcon />,
849
926
  };
850
927
 
851
928
  /**
@@ -861,6 +938,7 @@ function ComposerAttachMenu({
861
938
  onAddMediaFiles,
862
939
  imagesOnly,
863
940
  disabled,
941
+ placement,
864
942
  }: {
865
943
  items: ReturnType<typeof composerAttachMenuItems>;
866
944
  onSelect?: (action: ComposerAttachMenuAction) => void;
@@ -868,9 +946,19 @@ function ComposerAttachMenu({
868
946
  /** Edit mode: one image file at a time. */
869
947
  imagesOnly?: boolean;
870
948
  disabled?: boolean;
949
+ placement: MenuPlacement;
871
950
  }) {
872
951
  const [open, setOpen] = useState(false);
952
+ const [above, setAbove] = useState(false);
873
953
  const rootRef = useRef<HTMLDivElement>(null);
954
+ const menuRef = useRef<HTMLUListElement>(null);
955
+
956
+ // Up or down, before the first paint, so it never flashes on the wrong side.
957
+ useLayoutEffect(() => {
958
+ const menu = menuRef.current;
959
+ if (!open || !menu) return;
960
+ setAbove(menuOpensAbove(placement, rootRef.current!.getBoundingClientRect(), menu.offsetHeight, document.documentElement.clientHeight));
961
+ }, [open, placement]);
874
962
  const inputRef = useRef<HTMLInputElement>(null);
875
963
 
876
964
  useEffect(() => {
@@ -910,7 +998,7 @@ function ComposerAttachMenu({
910
998
  </button>
911
999
 
912
1000
  {open && (
913
- <ul className="chai-composer__attach-menu" role="menu">
1001
+ <ul ref={menuRef} className={`chai-composer__attach-menu${above ? " chai-composer__attach-menu--above" : ""}`} role="menu">
914
1002
  {items.map((item, i) => (
915
1003
  <li key={item.action} role="none">
916
1004
  <button
@@ -1044,7 +1132,7 @@ function kindIcon(kind: MediaKind) {
1044
1132
  case "video":
1045
1133
  return <VideocamIcon />;
1046
1134
  case "audio":
1047
- return <AudioIcon />;
1135
+ return <MusicNoteIcon />;
1048
1136
  default:
1049
1137
  return <ImageIcon />;
1050
1138
  }
@@ -1060,11 +1148,11 @@ function kindIcon(kind: MediaKind) {
1060
1148
  // codebase's existing "trace and inline as a currentColor component"
1061
1149
  // convention). Fixes an earlier pass
1062
1150
  // that hand-approximated several of these (Add media/Create image/Create
1063
- // video/Edit media's icons, plus/close/arrow) because `get_design_context`
1151
+ // video/Edit image's icons, plus/close/arrow) because `get_design_context`
1064
1152
  // couldn't resolve their specific instance-swap nodes — those
1065
1153
  // approximations read as visibly off-brand, not real MD3, correctly
1066
1154
  // flagged and replaced with the genuine glyphs (add, close, arrow_forward,
1067
- // attach_file, image, videocam, content_cut, music_note).
1155
+ // attach_file, image, videocam, content_cut, music_note, volume_up).
1068
1156
  //
1069
1157
  // `OptimizeIcon` is the one exception, still traced exactly from the real
1070
1158
  // exported design asset ("Optimize_icon") — not a Material Symbol at all, this is CHAI's own "prompt
@@ -1194,7 +1282,7 @@ function ContentCutIcon() {
1194
1282
  );
1195
1283
  }
1196
1284
 
1197
- function AudioIcon() {
1285
+ function MusicNoteIcon() {
1198
1286
  return (
1199
1287
  <svg viewBox="0 -960 960 960" aria-hidden="true">
1200
1288
  <path
@@ -1204,3 +1292,14 @@ function AudioIcon() {
1204
1292
  </svg>
1205
1293
  );
1206
1294
  }
1295
+
1296
+ function VolumeUpIcon() {
1297
+ return (
1298
+ <svg viewBox="0 -960 960 960" aria-hidden="true">
1299
+ <path
1300
+ d="M560-131v-62q97-28 158.5-107.5T780-481q0-101-61-181T560-769v-62q124 28 202 125.5T840-481q0 127-78 224.5T560-131ZM120-360v-240h160l200-200v640L280-360H120Zm420 48v-337q55 17 87.5 64T660-480q0 57-33 104t-87 64ZM420-648 307-540H180v120h127l113 109v-337Zm-94 168Z"
1301
+ fill="currentColor"
1302
+ />
1303
+ </svg>
1304
+ );
1305
+ }
package/src/index.ts CHANGED
@@ -29,6 +29,7 @@ export {
29
29
  SUGGESTED_EDIT_MODELS,
30
30
  SUGGESTED_ANALYSIS_MODELS,
31
31
  suggestedModels,
32
+ promptWithGenres,
32
33
  checkSuggestedModels,
33
34
  } from "@chai-ui/core";
34
35
  export type {
@@ -40,11 +41,13 @@ export type {
40
41
  MediaAnalysisKind,
41
42
  MediaAnalysisPromptLength,
42
43
  MediaKind,
44
+ MenuPlacement,
43
45
  ModelOption,
44
46
  OutputKind,
45
47
  Transcribe,
46
48
  VoiceClip,
47
49
  VoiceInputConfig,
50
+ VoiceOption,
48
51
  ParameterOption,
49
52
  RegionBox,
50
53
  RegionFormat,
@@ -5,6 +5,7 @@ import { MdOutlinedTextField } from "@material/web/textfield/outlined-text-field
5
5
  import { MdCheckbox } from "@material/web/checkbox/checkbox.js";
6
6
  import { Toggle } from "./Toggle.js";
7
7
  import { CheckIcon } from "../icons.js";
8
+ import { menuOpensAbove, type MenuPlacement } from "@chai-ui/core";
8
9
 
9
10
  const MdOutlinedTextFieldElement = createComponent({
10
11
  react: React,
@@ -84,6 +85,8 @@ interface SearchMenuProps<T extends SearchMenuOption> {
84
85
  triggerVariant?: "outlined" | "text";
85
86
  /** Panel width in px (default 280) — widen for a menu whose option labels run long; anything still too long past that ellipsizes rather than wrapping or overflowing. */
86
87
  panelWidth?: number;
88
+ /** Which way the panel opens: `"auto"` (default) below when it fits, else above when that fits, else toward the side with more room. */
89
+ placement?: MenuPlacement;
87
90
  }
88
91
 
89
92
  /**
@@ -109,8 +112,10 @@ export function SearchMenu<T extends SearchMenuOption>({
109
112
  searchable = true,
110
113
  triggerVariant = "outlined",
111
114
  panelWidth = 280,
115
+ placement = "auto",
112
116
  }: SearchMenuProps<T>) {
113
117
  const [open, setOpen] = useState(false);
118
+ const [above, setAbove] = useState(false);
114
119
  const [search, setSearch] = useState("");
115
120
  // Closing also clears the search, so the menu reopens on the full list.
116
121
  const close = useCallback(() => {
@@ -130,7 +135,10 @@ export function SearchMenu<T extends SearchMenuOption>({
130
135
  const rect = panel.getBoundingClientRect();
131
136
  const over = rect.right - (document.documentElement.clientWidth - 16);
132
137
  if (over > 0) panel.style.left = `${-Math.min(over, Math.max(0, rect.left - 16))}px`;
133
- }, [open]);
138
+ // Up or down, before the first paint, so it never flashes on the wrong side.
139
+ const trigger = rootRef.current!.getBoundingClientRect();
140
+ setAbove(menuOpensAbove(placement, trigger, panel.offsetHeight, document.documentElement.clientHeight));
141
+ }, [open, placement]);
134
142
 
135
143
  useEffect(() => {
136
144
  if (!open) return;
@@ -195,7 +203,7 @@ export function SearchMenu<T extends SearchMenuOption>({
195
203
  {open && (
196
204
  <div
197
205
  ref={panelRef}
198
- className="chai-search-menu__panel"
206
+ className={`chai-search-menu__panel${above ? " chai-search-menu__panel--above" : ""}`}
199
207
  role="group"
200
208
  aria-label={menuLabel}
201
209
  style={{ width: panelWidth }}
@@ -213,7 +221,7 @@ export function SearchMenu<T extends SearchMenuOption>({
213
221
  <MdOutlinedTextFieldElement
214
222
  className="chai-search-menu__search"
215
223
  label={menuLabel}
216
- placeholder="Input"
224
+ placeholder="Search"
217
225
  value={search}
218
226
  onInput={(e) => setSearch((e.target as MdOutlinedTextField).value)}
219
227
  >
package/src/style.css CHANGED
@@ -209,8 +209,17 @@
209
209
  gap: var(--chai-space-2);
210
210
  }
211
211
 
212
+ /* Opens upward: `placement="above"`, or `"auto"` with no room below. */
213
+ .chai-search-menu__panel--above {
214
+ top: auto;
215
+ bottom: calc(100% + 8px);
216
+ }
217
+
218
+ /* 44px tall, not Material's 56px: the field sits inside a compact menu. */
212
219
  .chai-search-menu__search {
213
220
  width: 100%;
221
+ --md-outlined-text-field-top-space: 10px;
222
+ --md-outlined-text-field-bottom-space: 10px;
214
223
  }
215
224
 
216
225
  .chai-search-menu__search-icon {
@@ -249,9 +258,13 @@
249
258
  border: none;
250
259
  border-radius: var(--chai-radius-sm);
251
260
  background: transparent;
252
- color: var(--chai-color-semantic-control-text-strong);
261
+ /* The same grey and 14px label type as the menu triggers and the rest
262
+ of the controls: 40px rows, the attach menu's density. */
263
+ color: var(--chai-color-semantic-control-text);
253
264
  font-family: var(--chai-type-family-material);
254
- font-size: var(--chai-type-size-body-large);
265
+ font-size: var(--chai-type-size-label-large);
266
+ line-height: var(--chai-type-leading-label-large);
267
+ letter-spacing: var(--chai-type-tracking-label-large);
255
268
  text-align: left;
256
269
  cursor: pointer;
257
270
  }
@@ -296,6 +309,9 @@
296
309
  .chai-search-menu__checkbox {
297
310
  flex: none;
298
311
  pointer-events: none;
312
+ /* 16px, not MD3's 18px, beside 14px labels. */
313
+ --md-checkbox-container-size: 16px;
314
+ --md-checkbox-icon-size: 16px;
299
315
  }
300
316
 
301
317
  .chai-search-menu__option svg {
@@ -339,11 +355,13 @@
339
355
  gap: var(--chai-space-3);
340
356
  }
341
357
 
358
+ /* The menu triggers' type: 14px medium, the controls' grey. */
342
359
  .chai-search-menu__toggle-header-text {
343
360
  font-family: var(--chai-type-family-material);
344
- font-size: var(--chai-type-size-body-large);
361
+ font-size: var(--chai-type-size-label-large);
345
362
  font-weight: var(--chai-type-weight-material-medium);
346
- color: var(--chai-color-semantic-control-text-strong);
363
+ letter-spacing: var(--chai-type-tracking-label-large);
364
+ color: var(--chai-color-semantic-control-text);
347
365
  }
348
366
 
349
367
  .chai-search-menu__empty {
@@ -870,18 +888,26 @@
870
888
  position: relative;
871
889
  }
872
890
 
891
+ /* A 40px rounded square, the size of the mic button's target, with
892
+ -8px margins so the 24px icon and the row's layout stay where they were. */
873
893
  .chai-composer__attach-toggle {
874
894
  display: flex;
875
895
  align-items: center;
876
896
  justify-content: center;
877
- width: 24px;
878
- height: 24px;
897
+ width: 40px;
898
+ height: 40px;
899
+ margin: -8px;
879
900
  padding: 0;
880
901
  border: none;
881
- border-radius: var(--chai-radius-full);
902
+ border-radius: var(--chai-radius-sm);
882
903
  background: transparent;
883
904
  color: var(--chai-composer-text);
884
905
  cursor: pointer;
906
+ transition: background-color var(--chai-motion-duration-fast) var(--chai-motion-easing-standard);
907
+ }
908
+
909
+ .chai-composer__attach-toggle:hover:not(:disabled) {
910
+ background: var(--chai-composer-hover);
885
911
  }
886
912
 
887
913
  .chai-composer__attach-toggle svg {
@@ -901,7 +927,7 @@
901
927
  .chai-composer__attach-menu {
902
928
  position: absolute;
903
929
  z-index: 10;
904
- bottom: calc(100% + 8px);
930
+ top: calc(100% + 8px);
905
931
  left: 0;
906
932
  min-width: 180px;
907
933
  margin: 0;
@@ -912,12 +938,21 @@
912
938
  box-shadow: var(--chai-shadow-menu);
913
939
  }
914
940
 
941
+ /* Opens upward: `menuPlacement="above"`, or `"auto"` with no room below. */
942
+ .chai-composer__attach-menu--above {
943
+ top: auto;
944
+ bottom: calc(100% + 8px);
945
+ }
946
+
947
+ /* MD3 menu density -2: 40px items (48px at density 0, 4px less per step),
948
+ so the longer menu with the audio group stays compact. */
915
949
  .chai-composer__attach-menu-item {
916
950
  display: flex;
917
951
  align-items: center;
918
952
  gap: var(--chai-space-3);
919
953
  width: 100%;
920
- padding: var(--chai-space-2) var(--chai-space-4);
954
+ min-height: 40px;
955
+ padding: 0 var(--chai-space-4);
921
956
  border: none;
922
957
  background: transparent;
923
958
  color: var(--chai-color-semantic-control-text-strong);
@@ -946,9 +981,9 @@
946
981
  height: 100%;
947
982
  }
948
983
 
949
- /* Reference: "Add media" (`MenuListItem1`) is the only item with a divider
950
- under it in the source (`showDivider: true`), separating the real
951
- attach action from the three generation-mode actions below it. */
984
+ /* Between menu groups (see `COMPOSER_ATTACH_MENU_ITEMS`): under "Add media",
985
+ separating the real attach action from the visual use cases, and above
986
+ the audio use cases. */
952
987
  .chai-composer__attach-menu-divider {
953
988
  margin: var(--chai-space-2) 0;
954
989
  border: none;