This commit enhances the Detail, MetadataLabel, MetadataLink, MetadataSeparator, and MetadataTagListItem components by refining their styles and structure. Changes include adjustments to class names for better responsiveness, removal of unnecessary elements, and updates to button and heading styles for improved consistency and visual appeal.
This commit modifies the AccessoryDropdown component by importing ChevronDown alongside ChevronsUpDown, updating the button's width and height, and refining the icon size. Additionally, it changes the dropdown item type from ListDropdownItemProps to DropdownItemProps for better type consistency. The DropdownItem component has been updated to remove the CheckIcon, and the command input has had the SearchIcon removed for a cleaner design.
This commit updates the basic styles for the Grid component. Specifically, it sets:
- Horizontal padding to 16px
- Content size to 115x115px (not sure if this is correct)
- Border for content in each item
- Left align text
- 4px margin below content, no margin between title and subtitle
- 8px vertical gap, 10px horizontal gap
- 4px gap between section header and contents (implemented with `-mb-1`)
This commit dynamically switches between two Raycast logos depending on light/dark mode. To accomplish this, the base ActionBar component had to accept a title of type Snippet.
This commit changes the header styles to alignw ith Raycast. Specifically, it sets:
- Text to "Search for apps and commands..."
- Height to 60px
- Horizontal padding to 16px
- Text size to `text-lg`
This commit introduces a new `HeaderInput.svelte` component to standardize the appearance and behavior of all header-level inputs across the application. updates the inputs in views like the command palette, extensions store, clipboard history, and file search, removing duplicated styles and ensuring a consistent user interface. It also exports the InputProps type from the input component to be used in HeaderInput.
This commit moves the separator to be the last element in its parent, using `order-[n]` classes to maintain the original order. This way, we can attach "peer" classes to the buttons, allowing the separator to disappear when any peer button is hovered (`peer-hover:opacity-0`).
In the future, this may lead to weird issues with the divs not being exactly the same as the buttons. If this is the case, we may have to pass down the class. However, it should be "good enough" for now.
This commit updates the layout to be the same as Raycast. In particular:
- Sets height to 40px
- Horizontal padding to 12px**
** - we only set the padding to 8px because the button padding will make up for the other 4px. We may have to update the left padding in the future.
This size is intended for Raycast's action buttons at the bottom right. Specifically, it has a left margin of 8px (for text) and a right margin of 4px (for keyboard shortcut). It also has a height of 28px.
This commit updates the spacing for the list and list item components. In particular, it sets:
- left and right margin to 8px
- x-padding to 8px
- height to 48px
- border radius to ~6-7px
- horizontal spacing to 12px
This commit moves the current plugin details, previously in api/index.ts, to the state.ts file. This way, it can be accessed in the cache.ts file, which uses it as the "namespace", used to create the cache data directory.
Originally, we had the whole key `.toUpperCase()`, resulting in shortcuts like "Ctrl + ENTER". This changes the behavior to say "Ctrl + Enter", while keeping the capitalization of single characters (e.g. "Ctrl + B")
This commit introduces a global `actionBus` to decouple the "Enter" key press event from the specific action's implementation. As a result, all action-related logic is now consolidated within `Action.svelte`, which determines its own role (primary/secondary) by observing the global `uiStore`. This ensures that pressing Enter correctly executes the full root action (e.g., copying to clipboard, opening a URL) and its associated listener, which was previously a bug.
This commit introduces the `FOCUS_ELEMENT` and `RESET_ELEMENT` message schemas and implements corresponding focus and reset functionalities in form components. The imperative bus is utilized to handle these commands, allowing for improved interaction with form elements like TextField, TextArea, and Dropdown.
It also fixes the `onSubmit` logic to pass the values of the form as a single argument, a mapping from IDs to values, as defined in the documentation.
This commit accomplishes two things. First of all, it updates the logic in `ui.svelte.ts` to look for the action panel in the root of the Form component. Second, it adds the `Action.SubmitForm` component.
Previously, we were trying to pass the raw event, which gets serialized as `{isTrusted: true}`. This commit serializes it into the `FormEvent` type as defined in @raycast/api. It directly provides the type, target.id, and target.value. It uses a Zod schema for the value, translated directly from the FormValue_2 type in @raycast/api.
Now that our extension list has migrated to virtualization, the previously used scroll tracking did not work. This commit adds props to ExtensionListView and BaseList to add the onscroll event listener as well as a bindable reference to the VList.
This commit introduces a new `keyboard.ts` module that defines key equivalents, modifiers, and common keyboard shortcuts for the application. The `Keyboard` object is exported for use in other parts of the codebase, enhancing keyboard navigation capabilities.
This commit introduces the `Storable` trait to standardize the conversion of database rows into application data structures. It refactors existing manager implementations (`AiUsageManager`, `FrecencyManager`, `QuicklinkManager`, `SnippetManager`) to utilize the new `query` and `execute` methods in the `Store` struct.
This commit replaces the ListSectionProps schema with the new ViewSectionProps schema in the base view component, ensuring consistency in prop handling for header sections. Additionally, it removes the unused GridSectionProps schema reference, streamlining the code.
This refactoring centralizes duplicated prop schemas for UI components like Dropdowns, Metadata, and Sections into canonical files. It reduces redundant schemas across `list.ts`, `grid.ts`, and `form.ts`.
This commit introduces a generic `Store` struct to handle all common database operations, such as connection management and schema initialization. All existing manager structs (`QuicklinkManager`, `SnippetManager`, `FrecencyManager`, `ClipboardHistoryManager`, `AiUsageManager`) have been refactored to use this new abstraction.
Introduces a new global `focusManager` store to handle focus transitions declaratively across the application. This new system solves a bug where focus would incorrectly return to a menu's trigger button on close, instead of the main search input. By having components request and release focus from a central stack, we ensure focus is always managed predictably, improving keyboard navigation.
Previously, the width was determined mostly by the contents, meaning each menu basically had its own width. This changes that to add a `w-80` class to the content.
Previously, the logic for displaying keyboard shortcuts was all over the place. This commit creates a single KeyboardShortcut component that is responsible for displaying it. It slightly changes some styles in the Kbd component, and also adds the Tauri `os` plugin to determine whether to display Mac symbols or Windows names. It also maps cmd to Ctrl on Windows.
This commit adds new actions to the command palette's action bar for calculator items, including options to copy answers and place them in the search bar. The setSearchText function is also introduced for the "put answer in search bar" action.
Previously, the main page would hide the window regardless of whether the command palette search bar had any contents or not. This commit changes the behavior to clear the search bar instead, when applicable, *otherwise* close the window.