Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ A name that is not one of these is ignored: the server logs it and drops `interf
- **Radii.** A tighter scale taken from Click UI's `border.radii`: controls, menus, popovers, tooltips, tabs, the composer's action buttons and `sm` through `lg` at `0.25rem`, surfaces and `xl`/`2xl` at `0.5rem`, large surfaces and `3xl` at `0.75rem`.
- **Borders.** Decorative outlines on controls and chips and the hairlines inside stroked surfaces are hidden (`chromeBorderAlpha` and `insetBorderAlpha` at `0`), so surfaces are separated by fill; field edges and the neutral button's border stay. Destructive actions use the `soft` style.
- **Shadows.** Click UI's single elevation shadow on every raised surface, menus and dragged items, at 0.15 opacity in light mode and 0.6 in dark, with a hairline shadow for the `2xs` through `sm` steps. Tooltips have no shadow.
- **Controls.** Buttons and fields are 2rem tall, controls are padded `1rem` with a `0.5rem` icon gap and a regular (`400`) label weight. Fields are filled (`fieldFillStyle: fill`) and swap their edge color on focus (`fieldFocusStyle: border`); labels are `0.75rem` at weight `500`. Disabled controls use the `fill` style with their own disabled colors, the switch is a compact 2rem by 1rem, and table rows get a 1px rule.
- **Controls.** Buttons and fields are 2rem tall, including the sign-in field and submit button (this theme sets `authFieldHeight` and `authButtonHeight` to `2rem`, where the defaults are `2.75rem` and `3rem`), controls are padded `1rem` with a `0.5rem` icon gap and a regular (`400`) label weight. Fields are filled (`fieldFillStyle: fill`) and swap their edge color on focus (`fieldFocusStyle: border`); labels are `0.75rem` at weight `500`. Disabled controls use the `fill` style with their own disabled colors, the switch is a compact 2rem by 1rem, and table rows get a 1px rule.
- **Dialogs.** A 1px edge, `2rem` side padding, and titles at `1.25rem`, weight `700`, in the Inter stack. Every dialog scrim is at 0.75 opacity.
- **Fonts.** The UI font stays Inter. Code uses Click UI's mono stack, `"Inconsolata", Consolas, "SFMono Regular", monospace`; LibreChat bundles Inconsolata. Headings ask for Basier Square first, which is not bundled, so they render in Inter unless the viewer has it installed.

Expand Down Expand Up @@ -215,6 +215,11 @@ Appearance values are set **per mode**, and a mode without them uses the default
| `iconButtonSizeSm` | Width and height of the `icon-sm` Button | `2rem` |
| `fieldHeight` | Height of form fields | `2.5rem` |
| `fieldHeightLg` | Height of large form fields, such as title inputs | `3rem` |
| `authFieldHeight` | Height of the floating-label fields on the sign-in pages | `2.75rem` |
| `authButtonHeight` | Height of the sign-in pages' submit buttons | `3rem` |
| `authControlRadius` | Corner radius of the sign-in fields and submit buttons; follows `radius2xl` when unset | `1rem` |
| `authActionHeight` | Height of the other sign-in actions, the two-factor verify and password-reset continue buttons; when unset, follows `authButtonHeight` if the theme sets it and `buttonHeight` otherwise, so the default matches `buttonHeight` | `2.5rem` |
| `authActionRadius` | Corner radius of those other sign-in actions; when unset, follows `authControlRadius` if the theme sets it and `radiusLg` otherwise, so the default matches `radiusLg` | `0.5rem` |
| `fieldPaddingY` | Vertical padding of form fields | `0.5rem` |
| `fieldFocusStyle` | How a focused field shows focus: `ring` draws the focus ring, `border` swaps the field's edge to `rgb-border-field-focus` | `ring` |
| `fieldFillStyle` | Whether fields stay `transparent` or paint `rgb-field-fill` (`fill`) | `transparent` |
Expand Down Expand Up @@ -286,7 +291,7 @@ The defaults reproduce LibreChat's look, so a theme that sets none of these keys
Accepted values:

- **Radii, `controlHeight`, `controlPaddingX`, `buttonPaddingX`, `controlGap`, `buttonHeight`, `buttonHeightSm`, `fieldHeight`, `fieldPaddingY`, spacing, tooltip padding and text size, text and label sizes, and the dialog lengths (`dialogStroke`, `dialogPaddingX`, `dialogHeaderGap`, `dialogTitleSize`):** `0`, or a number in `px`, `rem` or `em` (such as `0.25rem`), or a single `calc()` of two such lengths (such as `calc(0.5rem - 2px)`).
- **`buttonHeightXs`, `buttonHeightLg`, `buttonHeightCompact`, `iconButtonSizeSm` and `fieldHeightLg`:** a length in `px` or `rem` of at least `24px` (`1.5rem`), the minimum pointer target size.
- **`buttonHeightXs`, `buttonHeightLg`, `buttonHeightCompact`, `iconButtonSizeSm`, `fieldHeightLg`, `authFieldHeight`, `authButtonHeight` and `authActionHeight`:** a length in `px` or `rem` of at least `24px` (`1.5rem`), the minimum pointer target size.
- **`iconSize`:** `12px` to `20px` (`0.75rem` to `1.25rem`). **`iconSizeMd`:** `20px` to `24px`. **`iconSizeLg`:** `16px` to `32px`. **`checkboxSize`:** `16px` to `24px`. **`listMaxHeight`:** `128px` to `640px` (`8rem` to `40rem`). Each is a length in `px` or `rem`.
- **`tabMinWidth` and `listMinWidth`:** `0`, or a length in `px` or `rem`.
- **`switchWidth` and `switchHeight`:** a positive length in `px` or `rem`. Both must use the same unit (a side you leave out uses its `rem` default), the width must exceed the height so the knob can travel, and the height must clear the 4px track border (more than `4px`, or at least `0.5rem`).
Expand Down
Loading