@raycast/api 1.35.1 → 1.36.1

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/types/index.d.ts CHANGED
@@ -343,7 +343,7 @@ export declare interface ActionPanelSubmenuProps extends ActionPanel.Submenu.Pro
343
343
  declare interface ActionProps {
344
344
  /**
345
345
  * ID of the item.
346
- * @deprecated - This is an internal prop which not not have been exposed. You can safely remove it.
346
+ * @deprecated - This is an internal prop which should not have been exposed. You can safely remove it.
347
347
  */
348
348
  id?: string;
349
349
  /**
@@ -1468,6 +1468,11 @@ declare const Dropdown: ForwardRefExoticComponent<DropdownProps & RefAttributes<
1468
1468
  */
1469
1469
  declare const Dropdown_2: FunctionComponent<DropdownProps_2> & DropdownMembers_2;
1470
1470
 
1471
+ /**
1472
+ * See {@link Grid.Dropdown}
1473
+ */
1474
+ declare const Dropdown_3: FunctionComponent<DropdownProps_3> & DropdownMembers_3;
1475
+
1471
1476
  /**
1472
1477
  * See {@link Form.Dropdown.Item}
1473
1478
  */
@@ -1478,6 +1483,11 @@ declare const DropdownItem: FunctionComponent<DropdownItemProps>;
1478
1483
  */
1479
1484
  declare const DropdownItem_2: FunctionComponent<DropdownItemProps_2>;
1480
1485
 
1486
+ /**
1487
+ * See {@link Grid.Dropdown.Item}
1488
+ */
1489
+ declare const DropdownItem_3: FunctionComponent<DropdownItemProps_3>;
1490
+
1481
1491
  /**
1482
1492
  * See {@link Form.Dropdown.Item.Props}
1483
1493
  */
@@ -1513,6 +1523,22 @@ declare interface DropdownItemProps_2 {
1513
1523
  icon?: Image.ImageLike | undefined | null;
1514
1524
  }
1515
1525
 
1526
+ declare interface DropdownItemProps_3 {
1527
+ /**
1528
+ * Value of the dropdown item.
1529
+ * Make sure to assign each unique value for each item.
1530
+ */
1531
+ value: string;
1532
+ /**
1533
+ * The title displayed for the item.
1534
+ */
1535
+ title: string;
1536
+ /**
1537
+ * An optional icon displayed for the item.
1538
+ */
1539
+ icon?: Image.ImageLike | undefined | null;
1540
+ }
1541
+
1516
1542
  declare interface DropdownMembers {
1517
1543
  /**
1518
1544
  * Visually separated group of dropdown items.
@@ -1631,6 +1657,61 @@ declare interface DropdownMembers_2 {
1631
1657
  Item: typeof DropdownItem_2;
1632
1658
  }
1633
1659
 
1660
+ declare interface DropdownMembers_3 {
1661
+ /**
1662
+ * Visually separated group of dropdown items in a {@link Grid.Dropdown}.
1663
+ *
1664
+ * @remarks
1665
+ * Use sections to group related dropdown items together.
1666
+ *
1667
+ * @example
1668
+ * ```typescript
1669
+ * import { Grid } from "@raycast/api";
1670
+ *
1671
+ * export default function Command() {
1672
+ * return (
1673
+ * <Grid searchBarAccessory={
1674
+ * <Grid.Dropdown tooltip="Dropdown With Sections">
1675
+ * <Grid.Dropdown.Section title="First Section">
1676
+ * <Grid.Dropdown.Item title="One" value="one" />
1677
+ * </Grid.Dropdown.Section>
1678
+ * <Grid.Dropdown.Section title="Second Section">
1679
+ * <Grid.Dropdown.Item title="Two" value="two" />
1680
+ * </Grid.Dropdown.Section>
1681
+ * </Grid.Dropdown>
1682
+ * }>
1683
+ * <Grid.Item title="Item in the Main Grid">
1684
+ * </Grid>
1685
+ * );
1686
+ * }
1687
+ * ```
1688
+ */
1689
+ Section: typeof DropdownSection_3;
1690
+ /**
1691
+ * A dropdown item in a {@link Grid.Dropdown}
1692
+ *
1693
+ * @example
1694
+ * ```typescript
1695
+ * import { Grid } from "@raycast/api";
1696
+ *
1697
+ * export default function Command() {
1698
+ * return (
1699
+ * <Grid searchBarAccessory={
1700
+ * <Grid.Dropdown tooltip="Dropdown With Items">
1701
+ * <Grid.Dropdown.Item title="One" value="one" />
1702
+ * <Grid.Dropdown.Item title="Two" value="two" />
1703
+ * <Grid.Dropdown.Item title="Three" value="three" />
1704
+ * </Grid.Dropdown>
1705
+ * }>
1706
+ * <Grid.Item title="Item in the Main Grid">
1707
+ * </Grid>
1708
+ * );
1709
+ * }
1710
+ * ```
1711
+ */
1712
+ Item: typeof DropdownItem_3;
1713
+ }
1714
+
1634
1715
  /**
1635
1716
  * See {@link Form.Dropdown.Props}
1636
1717
  */
@@ -1683,6 +1764,48 @@ declare interface DropdownProps_2 {
1683
1764
  onChange?: (newValue: string) => void;
1684
1765
  }
1685
1766
 
1767
+ declare interface DropdownProps_3 {
1768
+ /**
1769
+ * ID of the dropdown.
1770
+ */
1771
+ id?: string;
1772
+ /**
1773
+ * Tooltip displayed when hovering the dropdown.
1774
+ */
1775
+ tooltip: string;
1776
+ /**
1777
+ * Placeholder text that will be shown in the dropdown search field.
1778
+ *
1779
+ * @defaultValue `"Search..."`
1780
+ */
1781
+ placeholder?: string;
1782
+ /**
1783
+ * Indicates whether the value of the dropdown should be persisted after selection, and restored next time the dropdown is rendered.
1784
+ */
1785
+ storeValue?: boolean | undefined;
1786
+ /**
1787
+ * The currently value of the dropdown.
1788
+ */
1789
+ value?: string;
1790
+ /**
1791
+ * The default value of the dropdown.
1792
+ * Keep in mind that `defaultValue` will be configured once per component lifecycle. This means that if a user changes the value, `defaultValue` won't be configured on re-rendering.
1793
+ *
1794
+ * **If you're using `storeValue` and configured it as `true` _and_ a {@link Grid.Dropdown.Item} with the same value exists, then it will be selected.**
1795
+ *
1796
+ * **If you configure `value` at the same time as `defaultValue`, the `value` will have precedence over `defaultValue`.**
1797
+ */
1798
+ defaultValue?: string;
1799
+ /**
1800
+ * Grid sections or items. If {@link Grid.Dropdown.Item} elements are specified, a default section is automatically created.
1801
+ */
1802
+ children?: ReactNode;
1803
+ /**
1804
+ * Callback triggered when the grid item selection changes.
1805
+ */
1806
+ onChange?: (newValue: string) => void;
1807
+ }
1808
+
1686
1809
  /**
1687
1810
  * Form.Dropdown Ref type.
1688
1811
  */
@@ -1698,6 +1821,11 @@ declare const DropdownSection: FunctionComponent<DropdownSectionProps>;
1698
1821
  */
1699
1822
  declare const DropdownSection_2: FunctionComponent<DropdownSectionProps_2>;
1700
1823
 
1824
+ /**
1825
+ * See {@link Grid.Dropdown.Section}
1826
+ */
1827
+ declare const DropdownSection_3: FunctionComponent<DropdownSectionProps_3>;
1828
+
1701
1829
  /**
1702
1830
  * See {@link Form.Dropdown.Section.Props}
1703
1831
  */
@@ -1723,6 +1851,17 @@ declare interface DropdownSectionProps_2 {
1723
1851
  title?: string;
1724
1852
  }
1725
1853
 
1854
+ declare interface DropdownSectionProps_3 {
1855
+ /**
1856
+ * The item elements of the section.
1857
+ */
1858
+ children?: ReactNode;
1859
+ /**
1860
+ * Title displayed above the section
1861
+ */
1862
+ title?: string;
1863
+ }
1864
+
1726
1865
  /**
1727
1866
  * @deprecated Use {@link Color.Dynamic} instead
1728
1867
  */
@@ -1730,6 +1869,8 @@ export declare type DynamicColor = Color.Dynamic;
1730
1869
 
1731
1870
  declare const EmptyView: FunctionComponent<EmptyViewProps>;
1732
1871
 
1872
+ declare const EmptyView_2: FunctionComponent<EmptyViewProps_2>;
1873
+
1733
1874
  declare interface EmptyViewProps extends ActionsInterface {
1734
1875
  /**
1735
1876
  * An icon displayed in the center of the EmptyView.
@@ -1749,6 +1890,25 @@ declare interface EmptyViewProps extends ActionsInterface {
1749
1890
  description?: string;
1750
1891
  }
1751
1892
 
1893
+ declare interface EmptyViewProps_2 extends ActionsInterface {
1894
+ /**
1895
+ * An icon displayed in the center of the EmptyView.
1896
+ *
1897
+ * @remarks
1898
+ * If an SVG is used, its longest side will be 128 pixels. Other images will be up/downscaled proportionally so that the longest side is between 64 and 256 pixels.
1899
+ * If not specified, Raycast's default `EmptyView` icon will be used.
1900
+ */
1901
+ icon?: Image.ImageLike | undefined | null;
1902
+ /**
1903
+ * The main title displayed for the Empty View.
1904
+ */
1905
+ title?: string;
1906
+ /**
1907
+ * An optional description for why the empty view is shown.
1908
+ */
1909
+ description?: string;
1910
+ }
1911
+
1752
1912
  /**
1753
1913
  * Holds data about the environment the command is running in. Use the global {@link environment} object to retrieve values.
1754
1914
  */
@@ -2523,6 +2683,7 @@ declare interface FormItemProps_2<T extends FormValue_2> {
2523
2683
  * The callback which will be triggered when the `value` of the item changes.
2524
2684
  */
2525
2685
  onChange?: (newValue: T) => void;
2686
+
2526
2687
  }
2527
2688
 
2528
2689
  /**
@@ -3284,6 +3445,330 @@ export declare function getSelectedFinderItems(): Promise<FileSystemItem[]>;
3284
3445
  */
3285
3446
  export declare function getSelectedText(): Promise<string>;
3286
3447
 
3448
+ /**
3449
+ * Displays {@link Grid.Section} or {@link Grid.Item}, optionally {@link Grid.Dropdown}.
3450
+ *
3451
+ * @remarks
3452
+ * The grid uses built-in filtering by indexing the title of grid items and additionally keywords.
3453
+ *
3454
+ * @example
3455
+ * ```typescript
3456
+ * import { Grid } from "@raycast/api";
3457
+ *
3458
+ * function DrinkDropdown(props: DrinkDropdownProps) {
3459
+ * const { isLoading = false, drinkTypes, onDrinkTypeChange } = props;
3460
+ * return (
3461
+ * <Grid.Dropdown
3462
+ * tooltip="Select Drink Type"
3463
+ * storeValue={true}
3464
+ * onChange={(newValue) => {
3465
+ * onDrinkTypeChange(newValue);
3466
+ * }}
3467
+ * >
3468
+ * <Grid.Dropdown.Section title="Alcoholic Beverages">
3469
+ * {drinkTypes.map((drinkType) => (
3470
+ * <Grid.Dropdown.Item key={drinkType.id} title={{ value: drinkType.name, tooltip: drinkType.definition }} value={drinkType.id} />
3471
+ * ))}
3472
+ * </Grid.Dropdown.Section>
3473
+ * </Grid.Dropdown>
3474
+ * );
3475
+ * }
3476
+ *
3477
+ * export default function Command() {
3478
+ * const drinkTypes = [
3479
+ * { id: 1, name: 'Beer', definition: "an alcoholic drink made from yeast-fermented malt flavoured with hops" },
3480
+ * { id: 2, name: 'Wine', definition: "an alcoholic drink made from fermented grape juice" }];
3481
+ * const onDrinkTypeChange = (newValue) => {
3482
+ * console.log(newValue);
3483
+ * }
3484
+ * return (
3485
+ * <Grid
3486
+ * navigationTitle="Search Beers"
3487
+ * searchBarPlaceholder="Search your favorite drink"
3488
+ * searchBarAccessory={<DrinkDropdown drinkTypes={drinkTypes} onDrinkTypeChange={onDrinkTypeChange} />}
3489
+ * >
3490
+ * <Grid.Item title="Augustiner Helles" />
3491
+ * <Grid.Item title="Camden Hells" />
3492
+ * <Grid.Item title="Leffe Blonde" />
3493
+ * <Grid.Item title="Sierra Nevada IPA" />
3494
+ * </Grid>
3495
+ * );
3496
+ * }
3497
+ * ```
3498
+ */
3499
+ export declare const Grid: FunctionComponent<GridProps> & GridMembers;
3500
+
3501
+ export declare namespace Grid {
3502
+ /**
3503
+ * Props of the {@link Grid} React component.
3504
+ */
3505
+ export type Props = GridProps;
3506
+ /**
3507
+ * Enum representing the amount of space there should be between a {@link Grid.Item}'s content and its borders.
3508
+ */
3509
+ export type Inset = GridInset;
3510
+ /**
3511
+ * Enum representing the number of items that should be displayed on a single row.
3512
+ */
3513
+ export type ItemSize = GridItemSize;
3514
+ export namespace EmptyView {
3515
+ export type Props = EmptyViewProps_2;
3516
+ }
3517
+ export namespace Dropdown {
3518
+ /**
3519
+ * Props of the {@link Grid.Dropdown} React component.
3520
+ */
3521
+ export type Props = DropdownProps_3;
3522
+ export namespace Item {
3523
+ /**
3524
+ * Props of the {@link Grid.Dropdown.Item} React component.
3525
+ */
3526
+ export type Props = DropdownItemProps_3;
3527
+ }
3528
+ export namespace Section {
3529
+ /**
3530
+ * Props of the {@link Grid.Dropdown.Section} React component.
3531
+ */
3532
+ export type Props = DropdownSectionProps_3;
3533
+ }
3534
+ }
3535
+ export namespace Item {
3536
+ /**
3537
+ * Props of the {@link Grid.Item} React component.
3538
+ */
3539
+ export type Props = ItemProps_2;
3540
+ }
3541
+ export namespace Section {
3542
+ /**
3543
+ * Props of the {@link Grid.Section} React component.
3544
+ */
3545
+ export type Props = SectionProps_3;
3546
+ }
3547
+ }
3548
+
3549
+ declare enum GridInset {
3550
+ Small = "sm",
3551
+ Medium = "md",
3552
+ Large = "lg"
3553
+ }
3554
+
3555
+ declare enum GridItemSize {
3556
+ Small = "small",
3557
+ Medium = "medium",
3558
+ Large = "large"
3559
+ }
3560
+
3561
+ declare interface GridMembers {
3562
+ /**
3563
+ * Enum representing the amount of space there should be between a {@link Grid.Item}'s content and its borders.
3564
+ */
3565
+ Inset: typeof GridInset;
3566
+ /**
3567
+ * Enum representing the size of the Grid's child {@link Grid.Item}s.
3568
+ */
3569
+ ItemSize: typeof GridItemSize;
3570
+ /**
3571
+ * A view to display when there aren't any items available. Use to greet users with a friendly message if the
3572
+ * extension requires user input before it can show any grid items e.g. when searching for a package, an article etc.
3573
+ *
3574
+ * @remarks
3575
+ * Raycast provides a default `EmptyView` that will be displayed if the {@link Grid} component either has no children,
3576
+ * or if it has children, but none of them match the query in the search bar. This too can be overridden by passing
3577
+ * an empty view alongside the other `Grid.Item`s.
3578
+ *
3579
+ * @example
3580
+ * ```typescript
3581
+ * import { useState } from "react";
3582
+ * import { Grid } from "@raycast/api";
3583
+ *
3584
+ * export default function CommandWithCustomEmptyState() {
3585
+ * const [state, setState] = useState({ searchText: "", items: [] });
3586
+ *
3587
+ * useEffect(() => {
3588
+ * // perform an API call that eventually populates `items`.
3589
+ * }, [state.searchText])
3590
+ *
3591
+ * return (
3592
+ * <Grid
3593
+ * onSearchTextChange={(newValue) =>
3594
+ * setState((previous) => ({ ...previous, searchText: newValue }))
3595
+ * }
3596
+ * >
3597
+ * {state.searchText === "" && state.items.length === 0 ? (
3598
+ * <Grid.EmptyView
3599
+ * icon={{ source: "https://placekitten.com/500/500" }}
3600
+ * title="Type something to get started"
3601
+ * />
3602
+ * ) : (
3603
+ * state.items.map((item) => <Grid.Item key={item} title={item} />)
3604
+ * )}
3605
+ * </Grid>
3606
+ * );
3607
+ * }
3608
+ * ```
3609
+ */
3610
+ EmptyView: typeof EmptyView_2;
3611
+ /**
3612
+ * A item in the {@link Grid}.
3613
+ *
3614
+ * @remarks
3615
+ * This is one of the foundational UI components of Raycast. A grid item represents a single entity. It can be a
3616
+ * GitHub pull request, a file, or anything else. You most likely want to perform actions on this item, so make it clear
3617
+ * to the user what this grid item is about.
3618
+ *
3619
+ * @example
3620
+ * ```typescript
3621
+ * import { Icon, Grid } from "@raycast/api";
3622
+ *
3623
+ * export default function Command() {
3624
+ * return (
3625
+ * <Grid>
3626
+ * <Grid.Item icon={Icon.Star} title="Augustiner Helles" subtitle="0,5 Liter" accessories={[{ text: "Germany" }]} />
3627
+ * </Grid>
3628
+ * );
3629
+ * }
3630
+ * ```
3631
+ */
3632
+ Item: typeof Item_2;
3633
+ /**
3634
+ * A group of related {@link Grid.Item}.
3635
+ *
3636
+ * @remarks
3637
+ * Sections are a great way to structure your grid. For example, group GitHub issues with the same status and order them by priority.
3638
+ * This way, users can quickly access what is most relevant.
3639
+ *
3640
+ * @example
3641
+ * ```typescript
3642
+ * import { Grid } from "@raycast/api";
3643
+ *
3644
+ * export default function Command() {
3645
+ * return (
3646
+ * <Grid>
3647
+ * <Grid.Section title="Lager">
3648
+ * <Grid.Item title="Camden Hells" />
3649
+ * </Grid.Section>
3650
+ * <Grid.Section title="IPA">
3651
+ * <Grid.Item title="Sierra Nevada IPA" />
3652
+ * </Grid.Section>
3653
+ * </Grid>
3654
+ * );
3655
+ * }
3656
+ * ```
3657
+ */
3658
+ Section: typeof Section_3;
3659
+ /**
3660
+ * A dropdown menu that will be shown in the right-hand-side of the search bar.
3661
+ *
3662
+ * @example
3663
+ * ```typescript
3664
+ * import { Grid } from "@raycast/api";
3665
+ *
3666
+ * function DrinkDropdown(props: DrinkDropdownProps) {
3667
+ * const { isLoading = false, drinkTypes, onDrinkTypeChange } = props;
3668
+ * return (
3669
+ * <Grid.Dropdown
3670
+ * tooltip="Select Drink Type"
3671
+ * disabled={isLoading}
3672
+ * storeValue={true}
3673
+ * onChange={(newValue) => {
3674
+ * onDrinkTypeChange(newValue);
3675
+ * }}
3676
+ * >
3677
+ * <Grid.Dropdown.Section title="Alcoholic Beverages">
3678
+ * {drinkTypes.map((drinkType) => (
3679
+ * <Grid.Dropdown.Item key={drinkType.id} title={drinkType.name} value={drinkType.id} />
3680
+ * ))}
3681
+ * </Grid.Dropdown.Section>
3682
+ * </Grid.Dropdown>
3683
+ * );
3684
+ * }
3685
+ *
3686
+ * export default function Command() {
3687
+ * const drinkTypes = [{ id: 1, name: 'Beer' }, { id: 2, name: 'Wine' }];
3688
+ * const onDrinkTypeChange = (newValue) => {
3689
+ * console.log(newValue);
3690
+ * }
3691
+ * return (
3692
+ * <Grid
3693
+ * navigationTitle="Search Beers"
3694
+ * searchBarPlaceholder="Search your favorite drink"
3695
+ * searchBarAccessory={<DrinkDropdown drinkTypes={drinkTypes} onDrinkTypeChange={onDrinkTypeChange} />}
3696
+ * >
3697
+ * <Grid.Item title="Augustiner Helles" />
3698
+ * <Grid.Item title="Camden Hells" />
3699
+ * <Grid.Item title="Leffe Blonde" />
3700
+ * <Grid.Item title="Sierra Nevada IPA" />
3701
+ * </Grid>
3702
+ * );
3703
+ * }
3704
+ * ```
3705
+ */
3706
+ Dropdown: typeof Dropdown_3;
3707
+ }
3708
+
3709
+ declare interface GridProps extends ActionsInterface, NavigationChildInterface {
3710
+ /**
3711
+ * Grid sections or items. If {@link Grid.Item} elements are specified, a default section is automatically created.
3712
+ */
3713
+ children?: ReactNode;
3714
+ /**
3715
+ * The number of items that should be displayed on a single row.
3716
+ *
3717
+ * @defaultValue {@link Grid.ItemSize.Medium}
3718
+ */
3719
+ itemSize?: Grid.ItemSize;
3720
+ /**
3721
+ * Indicates how much space there should be between a {@link Grid.Item}s' content and its borders.
3722
+ * The absolute value depends on the value of the `itemSize` prop.
3723
+ */
3724
+ inset?: Grid.Inset;
3725
+ /**
3726
+ * Callback triggered when the item selection in the grid changes.
3727
+ */
3728
+ onSelectionChange?: (id?: string) => void;
3729
+ /**
3730
+ * {@link Grid.Dropdown} that will be shown in the right-hand-side of the search bar.
3731
+ */
3732
+ searchBarAccessory?: ReactElement<DropdownProps_3> | undefined | null;
3733
+ /**
3734
+ * The text that will be displayed in the search bar.
3735
+ */
3736
+ searchText?: string;
3737
+ /**
3738
+ * Toggles Raycast filtering. When `true`, Raycast will use the query in the search bar to filter grid
3739
+ * items. When `false`, the extension needs to take care of the filtering.
3740
+ *
3741
+ * @remarks
3742
+ * Having this enabled when filtering items in the extension is unspecified behaviour.
3743
+ *
3744
+ * @defaultValue `false` when `onSearchTextChange` is specified, `true` otherwise.
3745
+ */
3746
+ enableFiltering?: boolean;
3747
+ /**
3748
+ * Placeholder text that will be shown in the search bar.
3749
+ *
3750
+ * @defaultValue `"Search value..."`
3751
+ */
3752
+ searchBarPlaceholder?: string;
3753
+ /**
3754
+ * Selects the item with the specified id.
3755
+ */
3756
+ selectedItemId?: string;
3757
+ /**
3758
+ * Defines whether the {@link Grid.Props.onSearchTextChange} will be triggered on every keyboard press or with a delay for throttling the events.
3759
+ * Recommended to set to `true` when using custom filtering logic with asynchronous operations (e.g. network requests).
3760
+ * @defaultValue `false`
3761
+ */
3762
+ throttle?: boolean;
3763
+ /**
3764
+ * Callback triggered when the search bar text changes.
3765
+ *
3766
+ * @remarks
3767
+ * Specifying this implicitly toggles `enableFiltering` to false. To enable native filtering when using `onSearchTextChange`, explicitly set `enableFiltering` to true.
3768
+ */
3769
+ onSearchTextChange?: (text: string) => void;
3770
+ }
3771
+
3287
3772
  /**
3288
3773
  * List of built-in icons that can be used for actions or list items.
3289
3774
  *
@@ -3538,6 +4023,11 @@ export declare type ImageSource = Image.Source;
3538
4023
  */
3539
4024
  declare const Item: FunctionComponent<ItemProps> & ItemMembers;
3540
4025
 
4026
+ /**
4027
+ * See {@link Grid.Item}
4028
+ */
4029
+ declare const Item_2: FunctionComponent<ItemProps_2>;
4030
+
3541
4031
  declare interface ItemAccessory {
3542
4032
  /**
3543
4033
  * An optional text that will be used as the label.
@@ -3633,6 +4123,41 @@ declare interface ItemProps extends ActionsInterface {
3633
4123
  detail?: ReactNode;
3634
4124
  }
3635
4125
 
4126
+ declare interface ItemProps_2 extends ActionsInterface {
4127
+ /**
4128
+ * ID of the item. This string is passed to the `onSelectionChange` handler of the {@link Grid} when the item is selected.
4129
+ * Make sure to assign each item a unique ID or a UUID will be auto generated.
4130
+ */
4131
+ id?: string;
4132
+ /**
4133
+ * An image, optionally with a tooltip, representing the content of the grid item.
4134
+ */
4135
+ content: Image.ImageLike | {
4136
+ value: Image.ImageLike;
4137
+ tooltip: string;
4138
+ };
4139
+ /**
4140
+ * The main title displayed for that item, optionally with a tooltip.
4141
+ */
4142
+ title?: string | {
4143
+ value: string;
4144
+ tooltip: string;
4145
+ };
4146
+ /**
4147
+ * An optional subtitle displayed next to the main title, optionally with a tooltip.
4148
+ */
4149
+ subtitle?: string | {
4150
+ value: string;
4151
+ tooltip: string;
4152
+ };
4153
+ /**
4154
+ * An optional property used for providing additional indexable strings for search.
4155
+ * When filtering the list in Raycast through the search bar, the keywords will be searched in addition to the title.
4156
+ */
4157
+ keywords?: string[];
4158
+ actions?: ReactNode | null;
4159
+ }
4160
+
3636
4161
  export declare namespace Keyboard {
3637
4162
  /**
3638
4163
  * A keyboard shortcut is defined by one or more modifier keys (command, control, etc.) and a single key equivalent (a character or special key).
@@ -4383,12 +4908,12 @@ declare interface NavigationChildInterface {
4383
4908
  export declare namespace OAuth {
4384
4909
  export namespace PKCEClient {
4385
4910
  /**
4386
- * The options for creating a new {@link PKCEClient}.
4911
+ * The options for creating a new {@link OAuth.PKCEClient}.
4387
4912
  */
4388
4913
  export interface Options {
4389
4914
  /**
4390
4915
  * The redirect method for the OAuth flow.
4391
- * Make sure to set this to the correct method for the provider, see {@link RedirectMethod} for more information.
4916
+ * Make sure to set this to the correct method for the provider, see {@link OAuth.RedirectMethod} for more information.
4392
4917
  */
4393
4918
  redirectMethod: RedirectMethod;
4394
4919
  /**
@@ -4438,37 +4963,37 @@ export declare namespace OAuth {
4438
4963
  constructor(options: PKCEClient.Options);
4439
4964
  /**
4440
4965
  * Creates an authorization request for the provided authorization endpoint, client ID, and scopes.
4441
- * You need to first create the authorization request before calling {@link authorize}.
4966
+ * You need to first create the authorization request before calling {@link OAuth.PKCEClient.authorize}.
4442
4967
  *
4443
4968
  * @remarks The generated code challenge for the PKCE request uses the S256 method.
4444
4969
  *
4445
- * @returns A promise for an {@link AuthorizationRequest} that you can use as input for {@link authorize}.
4970
+ * @returns A promise for an {@link OAuth.AuthorizationRequest} that you can use as input for {@link OAuth.PKCEClient.authorize}.
4446
4971
  */
4447
4972
  authorizationRequest(options: AuthorizationRequestOptions): Promise<AuthorizationRequest>;
4448
4973
  /**
4449
4974
  * Starts the authorization and shows the OAuth overlay in Raycast.
4450
- * As parameter you can either directly use the returned request from {@link authorizationRequest},
4451
- * or customize the URL by extracting parameters from {@link AuthorizationRequest} and providing your own URL via {@link AuthorizationOptions}.
4975
+ * As parameter you can either directly use the returned request from {@link OAuth.PKCEClient.authorizationRequest},
4976
+ * or customize the URL by extracting parameters from {@link OAuth.AuthorizationRequest} and providing your own URL via {@link AuthorizationOptions}.
4452
4977
  * Eventually the URL will be used to open the authorization page of the provider in the web browser.
4453
4978
  *
4454
- * @returns A promise for an {@link AuthorizationResponse}, which contains the authorization code needed for the token exchange.
4979
+ * @returns A promise for an {@link OAuth.AuthorizationResponse}, which contains the authorization code needed for the token exchange.
4455
4980
  * The promise is resolved when the user was redirected back from the provider's authorization page to the Raycast extension.
4456
4981
  */
4457
4982
  authorize(options: AuthorizationRequest | AuthorizationOptions): Promise<AuthorizationResponse>;
4458
4983
  private authorizationURL;
4459
4984
  /**
4460
- * Securely stores a {@link TokenSet} for the provider. Use this after fetching the access token from the provider.
4461
- * If the provider returns a a standard OAuth JSON token response, you can directly pass the {@link TokenResponse}.
4462
- * At a minimum, you need to set the {@link TokenSet.accessToken}, and typically you also set {@link TokenSet.refreshToken} and {@link TokenSet.isExpired}.
4985
+ * Securely stores a {@link OAuth.TokenSet} for the provider. Use this after fetching the access token from the provider.
4986
+ * If the provider returns a a standard OAuth JSON token response, you can directly pass the {@link OAuth.TokenResponse}.
4987
+ * At a minimum, you need to set the {@link OAuth.TokenSet.accessToken}, and typically you also set {@link OAuth.TokenSet.refreshToken} and {@link OAuth.TokenSet.isExpired}.
4463
4988
  * Raycast automatically shows a logout preference for the extension when a token set was saved.
4464
4989
  *
4465
- * @remarks If you want to make use of the convenience {@link TokenSet.isExpired} method, the property {@link TokenSet.expiresIn} must be configured.
4990
+ * @remarks If you want to make use of the convenience {@link OAuth.TokenSet.isExpired} method, the property {@link OAuth.TokenSet.expiresIn} must be configured.
4466
4991
  *
4467
4992
  * @returns A promise that resolves when the token set has been stored.
4468
4993
  */
4469
4994
  setTokens(options: TokenSetOptions | TokenResponse): Promise<void>;
4470
4995
  /**
4471
- * Retrieves the stored {@link TokenSet} for the client.
4996
+ * Retrieves the stored {@link OAuth.TokenSet} for the client.
4472
4997
  * You can use this to initially check whether the authorization flow should be initiated or
4473
4998
  * the user is already logged in and you might have to refresh the access token.
4474
4999
  *
@@ -4476,7 +5001,7 @@ export declare namespace OAuth {
4476
5001
  */
4477
5002
  getTokens(): Promise<TokenSet | undefined>;
4478
5003
  /**
4479
- * Removes the stored {@link TokenSet} for the client.
5004
+ * Removes the stored {@link OAuth.TokenSet} for the client.
4480
5005
  *
4481
5006
  * @remarks Raycast automatically shows a logout preference that removes the token set.
4482
5007
  * Use this method only if you need to provide an additional logout option in your extension or you want to remove the token set because of a migration.
@@ -4509,7 +5034,7 @@ export declare namespace OAuth {
4509
5034
  AppURI = "appURI"
4510
5035
  }
4511
5036
  /**
4512
- * The options for an authorization request via {@link PKCEClient.authorizationRequest}.
5037
+ * The options for an authorization request via {@link OAuth.PKCEClient.authorizationRequest}.
4513
5038
  */
4514
5039
  export interface AuthorizationRequestOptions {
4515
5040
  /**
@@ -4533,8 +5058,8 @@ export declare namespace OAuth {
4533
5058
  extraParameters?: Record<string, string>;
4534
5059
  }
4535
5060
  /**
4536
- * Values of {@link AuthorizationRequest}.
4537
- * The PKCE client automatically generates the values for you and returns them for {@link PKCEClient.authorizationRequest}.
5061
+ * Values of {@link OAuth.AuthorizationRequest}.
5062
+ * The PKCE client automatically generates the values for you and returns them for {@link OAuth.PKCEClient.authorizationRequest}.
4538
5063
  */
4539
5064
  export interface AuthorizationRequestURLParams {
4540
5065
  /**
@@ -4555,9 +5080,9 @@ export declare namespace OAuth {
4555
5080
  redirectURI: string;
4556
5081
  }
4557
5082
  /**
4558
- * The request returned by {@link PKCEClient.authorizationRequest}.
4559
- * Can be used as direct input to {@link PKCEClient.authorize}, or
4560
- * to extract parameters for constructing a custom URL in {@link AuthorizationOptions}.
5083
+ * The request returned by {@link OAuth.PKCEClient.authorizationRequest}.
5084
+ * Can be used as direct input to {@link OAuth.PKCEClient.authorize}, or
5085
+ * to extract parameters for constructing a custom URL in {@link OAuth.AuthorizationOptions}.
4561
5086
  */
4562
5087
  export interface AuthorizationRequest extends AuthorizationRequestURLParams {
4563
5088
  /**
@@ -4566,8 +5091,8 @@ export declare namespace OAuth {
4566
5091
  toURL(): string;
4567
5092
  }
4568
5093
  /**
4569
- * Options for customizing {@link PKCEClient.authorize}.
4570
- * You can use values from {@link AuthorizationRequest} to build your own URL.
5094
+ * Options for customizing {@link OAuth.PKCEClient.authorize}.
5095
+ * You can use values from {@link OAuth.AuthorizationRequest} to build your own URL.
4571
5096
  */
4572
5097
  export interface AuthorizationOptions {
4573
5098
  /**
@@ -4576,7 +5101,7 @@ export declare namespace OAuth {
4576
5101
  url: string;
4577
5102
  }
4578
5103
  /**
4579
- * The response returned by {@link PKCEClient.authorize}, containing the authorization code after the provider redirect.
5104
+ * The response returned by {@link OAuth.PKCEClient.authorize}, containing the authorization code after the provider redirect.
4580
5105
  * You can then exchange the authorization code for an access token using the provider's token endpoint.
4581
5106
  */
4582
5107
  export interface AuthorizationResponse {
@@ -4588,7 +5113,7 @@ export declare namespace OAuth {
4588
5113
  /**
4589
5114
  * Describes the TokenSet created from an OAuth provider's token response.
4590
5115
  * The `accessToken` is the only required parameter but typically OAuth providers also return a refresh token, an expires value, and the scope.
4591
- * Securely store a token set via {@link PKCEClient.setTokens} and retrieve it via {@link PKCEClient.getTokens}.
5116
+ * Securely store a token set via {@link OAuth.PKCEClient.setTokens} and retrieve it via {@link OAuth.PKCEClient.getTokens}.
4592
5117
  */
4593
5118
  export interface TokenSet {
4594
5119
  /**
@@ -4614,7 +5139,7 @@ export declare namespace OAuth {
4614
5139
  */
4615
5140
  scope?: string;
4616
5141
  /**
4617
- * The date when the token set was stored via {@link PKCEClient.setTokens}.
5142
+ * The date when the token set was stored via {@link OAuth.PKCEClient.setTokens}.
4618
5143
  */
4619
5144
  updatedAt: Date;
4620
5145
  /**
@@ -4625,7 +5150,7 @@ export declare namespace OAuth {
4625
5150
  isExpired(): boolean;
4626
5151
  }
4627
5152
  /**
4628
- * Options for a {@link TokenSet} to store via {@link PKCEClient.setTokens}.
5153
+ * Options for a {@link OAuth.TokenSet} to store via {@link OAuth.PKCEClient.setTokens}.
4629
5154
  */
4630
5155
  export interface TokenSetOptions {
4631
5156
  /**
@@ -4651,7 +5176,7 @@ export declare namespace OAuth {
4651
5176
  }
4652
5177
  /**
4653
5178
  * Defines the standard JSON response for an OAuth token request.
4654
- * The response can be directly used to store a {@link TokenSet} via {@link PKCEClient.setTokens}.
5179
+ * The response can be directly used to store a {@link OAuth.TokenSet} via {@link OAuth.PKCEClient.setTokens}.
4655
5180
  */
4656
5181
  export interface TokenResponse {
4657
5182
  /**
@@ -5132,6 +5657,11 @@ declare const Section: FunctionComponent<SectionProps>;
5132
5657
  */
5133
5658
  declare const Section_2: FunctionComponent<SectionProps_2>;
5134
5659
 
5660
+ /**
5661
+ * See {@link Grid.Section}
5662
+ */
5663
+ declare const Section_3: FunctionComponent<SectionProps_3>;
5664
+
5135
5665
  declare type SectionChildren = ReactElement<ActionProps> | ReactElement<ActionProps>[] | ReactElement<SubmenuProps> | Array<ReactElement<SubmenuProps>> | Array<ReactElement<SubmenuProps> | ReactElement<ActionProps>> | null;
5136
5666
 
5137
5667
  /**
@@ -5155,7 +5685,7 @@ declare interface SectionProps_2 {
5155
5685
  children?: ReactNode;
5156
5686
  /**
5157
5687
  * ID of the section.
5158
- * @deprecated - This is an internal prop which not not have been exposed. You can safely remove it.
5688
+ * @deprecated - This is an internal prop which should not have been exposed. You can safely remove it.
5159
5689
  */
5160
5690
  id?: string;
5161
5691
  /**
@@ -5168,6 +5698,21 @@ declare interface SectionProps_2 {
5168
5698
  subtitle?: string;
5169
5699
  }
5170
5700
 
5701
+ declare interface SectionProps_3 {
5702
+ /**
5703
+ * The {@link Grid.Item} elements of the section.
5704
+ */
5705
+ children?: ReactNode;
5706
+ /**
5707
+ * Title displayed above the section.
5708
+ */
5709
+ title?: string;
5710
+ /**
5711
+ * An optional subtitle displayed next to the title of the section.
5712
+ */
5713
+ subtitle?: string;
5714
+ }
5715
+
5171
5716
  /**
5172
5717
  * See {@link Form.Separator}
5173
5718
  */
@@ -5364,7 +5909,7 @@ declare type SubmenuChildren = ReactElement<SectionProps> | ReactElement<Section
5364
5909
  declare interface SubmenuProps {
5365
5910
  /**
5366
5911
  * ID of the submenu.
5367
- * @deprecated - This is an internal prop which not not have been exposed. You can safely remove it.
5912
+ * @deprecated - This is an internal prop which should not have been exposed. You can safely remove it.
5368
5913
  */
5369
5914
  id?: string;
5370
5915
  /**