@sakaniui/react 0.12.0 → 0.14.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/AGENTS.md +14 -0
- package/CHANGELOG.md +91 -0
- package/dist/TopBar-BsEWtJKj.cjs +1 -0
- package/dist/{TopBar-DRGud3JP.js → TopBar-DyQIMFAq.js} +697 -610
- package/dist/blocks.cjs +2 -2
- package/dist/blocks.mjs +2085 -2085
- package/dist/building-warehouse-BUtjAEPH.cjs +1 -0
- package/dist/{file-text-CuRYymVv.js → building-warehouse-_n8EvYUt.js} +15 -21
- package/dist/components/CommandMenu/CommandMenu.d.ts +175 -0
- package/dist/components/CommandMenu/index.d.ts +2 -0
- package/dist/components/Input/Input.d.ts +12 -0
- package/dist/components/Textarea/Textarea.d.ts +15 -0
- package/dist/emoji-index.json +1 -1
- package/dist/{help-circle-BufsknPE.js → help-circle-qEEVeIea.js} +15 -9
- package/dist/help-circle-rtL4juBJ.cjs +1 -0
- package/dist/icon-index.json +1 -1
- package/dist/icons.cjs +1 -1
- package/dist/icons.mjs +3932 -3932
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.mjs +2675 -1700
- package/dist/lib/AiGlow.d.ts +8 -0
- package/dist/lib/SakaniLogo.d.ts +2 -0
- package/dist/{logout-Mc5-u8cG.js → logout-BLSXL3qV.js} +4 -4
- package/dist/logout-pQUABnfO.cjs +1 -0
- package/dist/manifest.json +686 -21
- package/dist/style.css +1 -1
- package/dist/tokens.css +5 -0
- package/package.json +1 -1
- package/dist/TopBar-Dd_xHXBv.cjs +0 -1
- package/dist/file-text-B2rmiOJD.cjs +0 -1
- package/dist/help-circle-C1LENUMu.cjs +0 -1
- package/dist/logout-g8G9uxDa.cjs +0 -1
package/dist/manifest.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 6,
|
|
3
3
|
"name": "@sakaniui/react",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.14.0",
|
|
5
5
|
"description": "Machine-readable contract of the SakaniUI React library, generated from its TypeScript source.",
|
|
6
6
|
"docs": "https://www.sakaniui.com",
|
|
7
7
|
"guide": "https://www.sakaniui.com/llms-full.txt",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"@sakaniui/react/emoji": "Fluent Emoji (full colour): EmojiName, one module each (1594 emoji, 311 with skin tones)."
|
|
25
25
|
},
|
|
26
26
|
"conventions": {
|
|
27
|
-
"version": "This manifest describes @sakaniui/react@0.
|
|
27
|
+
"version": "This manifest describes @sakaniui/react@0.14.0. Each component has `since`, the first release that contained it; a prop added later has its own `since`, and a value added later is listed in the prop's `valuesSince`. If the project has an older version installed, anything newer than that does not exist there.",
|
|
28
28
|
"acceptsNativeProps": "Components forward native HTML attributes (className, style, aria-*, event handlers) to their root element unless a prop says otherwise; only the props that are specific to SakaniUI are listed here.",
|
|
29
29
|
"accessibleName": "When `contract.requiresAccessibleName` is true, a required prop (aria-label, aria-labelledby or an alt text) is the only thing that names the control or image. Do not omit it.",
|
|
30
30
|
"tokens": "Use only the token names listed under `tokens`. Colour tokens follow the theme (the `.dark` class flips them); do not hard-code colours.",
|
|
@@ -195,7 +195,7 @@
|
|
|
195
195
|
"wrap"
|
|
196
196
|
],
|
|
197
197
|
"tokens": {
|
|
198
|
-
"count":
|
|
198
|
+
"count": 235,
|
|
199
199
|
"groups": {
|
|
200
200
|
"bp": {
|
|
201
201
|
"--bp-sm": "640px",
|
|
@@ -281,6 +281,8 @@
|
|
|
281
281
|
"--color-chart-purple": "#9179D6",
|
|
282
282
|
"--color-chart-gold": "#DCA84F",
|
|
283
283
|
"--color-chart-green": "#12B76A",
|
|
284
|
+
"--color-blue-700": "#33619F",
|
|
285
|
+
"--color-violet-500": "#9179D6",
|
|
284
286
|
"--color-code-keyword": "#7B4BD9",
|
|
285
287
|
"--color-code-string": "#16A34A",
|
|
286
288
|
"--color-bg-canvas": "var(--color-neutral-50)",
|
|
@@ -341,7 +343,9 @@
|
|
|
341
343
|
"--space-16": "16px",
|
|
342
344
|
"--space-20": "20px",
|
|
343
345
|
"--space-24": "24px",
|
|
346
|
+
"--space-28": "28px",
|
|
344
347
|
"--space-32": "32px",
|
|
348
|
+
"--space-36": "36px",
|
|
345
349
|
"--space-40": "40px",
|
|
346
350
|
"--space-48": "48px",
|
|
347
351
|
"--space-64": "64px",
|
|
@@ -459,7 +463,7 @@
|
|
|
459
463
|
}
|
|
460
464
|
},
|
|
461
465
|
"counts": {
|
|
462
|
-
"components":
|
|
466
|
+
"components": 142,
|
|
463
467
|
"blocks": 42,
|
|
464
468
|
"utilities": 10
|
|
465
469
|
},
|
|
@@ -2220,7 +2224,6 @@
|
|
|
2220
2224
|
"done",
|
|
2221
2225
|
"working"
|
|
2222
2226
|
],
|
|
2223
|
-
"default": "done",
|
|
2224
2227
|
"description": "Adds the working line under the steps: \"working\" (sparkle, shimmer) or \"done\" (\"Worked for 11.2s\")."
|
|
2225
2228
|
},
|
|
2226
2229
|
{
|
|
@@ -2324,7 +2327,8 @@
|
|
|
2324
2327
|
"name": "accent",
|
|
2325
2328
|
"type": "string",
|
|
2326
2329
|
"required": false,
|
|
2327
|
-
"description": "Colour of the spark that runs into the step while it is active. Defaults to the icon's brand colour when it is a logo from `sourceLogo()`."
|
|
2330
|
+
"description": "Colour of the spark that runs into the step while it is active. Defaults to the icon's brand colour when it is a logo from `sourceLogo()`.",
|
|
2331
|
+
"since": "0.13.0"
|
|
2328
2332
|
},
|
|
2329
2333
|
{
|
|
2330
2334
|
"name": "sources",
|
|
@@ -2750,6 +2754,579 @@
|
|
|
2750
2754
|
"tag input"
|
|
2751
2755
|
]
|
|
2752
2756
|
},
|
|
2757
|
+
{
|
|
2758
|
+
"name": "CommandMenu",
|
|
2759
|
+
"kind": "component",
|
|
2760
|
+
"category": "Composite",
|
|
2761
|
+
"import": "@sakaniui/react",
|
|
2762
|
+
"summary": "A ⌘K search and command palette: a field, scope tabs, grouped results (the matched letters in the strong weight), a footer of key hints, and loading, no-results and error states. Pass `groups` of `items` and handle `onSelect`; it filters as you type unless `filter={false}`. ⌘K opens it, ↑ ↓ move, ↵ chooses, ⌘↵ asks AI (with `onAskAI`), Tab switches scope, esc clears then closes. `variant=\"simple\"` is just the field, one group and the key hints.",
|
|
2763
|
+
"props": [
|
|
2764
|
+
{
|
|
2765
|
+
"name": "open",
|
|
2766
|
+
"type": "boolean",
|
|
2767
|
+
"required": false,
|
|
2768
|
+
"description": "Controlled open state."
|
|
2769
|
+
},
|
|
2770
|
+
{
|
|
2771
|
+
"name": "defaultOpen",
|
|
2772
|
+
"type": "boolean",
|
|
2773
|
+
"required": false,
|
|
2774
|
+
"default": false,
|
|
2775
|
+
"description": "Initial open state when uncontrolled."
|
|
2776
|
+
},
|
|
2777
|
+
{
|
|
2778
|
+
"name": "onOpenChange",
|
|
2779
|
+
"type": "((open: boolean) => void)",
|
|
2780
|
+
"required": false
|
|
2781
|
+
},
|
|
2782
|
+
{
|
|
2783
|
+
"name": "hotkey",
|
|
2784
|
+
"type": "string | false",
|
|
2785
|
+
"required": false,
|
|
2786
|
+
"default": "k",
|
|
2787
|
+
"description": "The key that opens it with ⌘ / Ctrl. `false` turns the shortcut off. Defaults to \"k\"."
|
|
2788
|
+
},
|
|
2789
|
+
{
|
|
2790
|
+
"name": "variant",
|
|
2791
|
+
"type": "\"default\" | \"simple\"",
|
|
2792
|
+
"required": false,
|
|
2793
|
+
"values": [
|
|
2794
|
+
"default",
|
|
2795
|
+
"simple"
|
|
2796
|
+
],
|
|
2797
|
+
"default": "default",
|
|
2798
|
+
"description": "\"default\" has scopes and a workspace footer; \"simple\" is just the field, the rows and the key hints."
|
|
2799
|
+
},
|
|
2800
|
+
{
|
|
2801
|
+
"name": "query",
|
|
2802
|
+
"type": "string",
|
|
2803
|
+
"required": false,
|
|
2804
|
+
"description": "The field's text (controlled)."
|
|
2805
|
+
},
|
|
2806
|
+
{
|
|
2807
|
+
"name": "defaultQuery",
|
|
2808
|
+
"type": "string",
|
|
2809
|
+
"required": false,
|
|
2810
|
+
"default": ""
|
|
2811
|
+
},
|
|
2812
|
+
{
|
|
2813
|
+
"name": "onQueryChange",
|
|
2814
|
+
"type": "((query: string) => void)",
|
|
2815
|
+
"required": false
|
|
2816
|
+
},
|
|
2817
|
+
{
|
|
2818
|
+
"name": "placeholder",
|
|
2819
|
+
"type": "string",
|
|
2820
|
+
"required": false,
|
|
2821
|
+
"default": "Search or ask anything…"
|
|
2822
|
+
},
|
|
2823
|
+
{
|
|
2824
|
+
"name": "groups",
|
|
2825
|
+
"type": "CommandMenuGroup[]",
|
|
2826
|
+
"required": true,
|
|
2827
|
+
"description": "Results, in groups.",
|
|
2828
|
+
"shape": {
|
|
2829
|
+
"type": "CommandMenuGroup",
|
|
2830
|
+
"collection": "array",
|
|
2831
|
+
"fields": [
|
|
2832
|
+
{
|
|
2833
|
+
"name": "id",
|
|
2834
|
+
"type": "string",
|
|
2835
|
+
"required": true
|
|
2836
|
+
},
|
|
2837
|
+
{
|
|
2838
|
+
"name": "label",
|
|
2839
|
+
"type": "string",
|
|
2840
|
+
"required": false,
|
|
2841
|
+
"description": "The small heading above the items."
|
|
2842
|
+
},
|
|
2843
|
+
{
|
|
2844
|
+
"name": "action",
|
|
2845
|
+
"type": "{ label: string; onClick: () => void; }",
|
|
2846
|
+
"required": false,
|
|
2847
|
+
"description": "A link on the right of the heading, e.g. \"See all\"."
|
|
2848
|
+
},
|
|
2849
|
+
{
|
|
2850
|
+
"name": "items",
|
|
2851
|
+
"type": "CommandMenuItem[]",
|
|
2852
|
+
"required": true
|
|
2853
|
+
}
|
|
2854
|
+
]
|
|
2855
|
+
}
|
|
2856
|
+
},
|
|
2857
|
+
{
|
|
2858
|
+
"name": "filter",
|
|
2859
|
+
"type": "boolean | ((item: CommandMenuItem, query: string) => boolean)",
|
|
2860
|
+
"required": false,
|
|
2861
|
+
"default": true,
|
|
2862
|
+
"description": "Filter the groups by the query, scope and tokens here. Pass a function to match your own way, or `false` to show `groups` as given. Defaults to true."
|
|
2863
|
+
},
|
|
2864
|
+
{
|
|
2865
|
+
"name": "highlightMatches",
|
|
2866
|
+
"type": "boolean",
|
|
2867
|
+
"required": false,
|
|
2868
|
+
"default": true,
|
|
2869
|
+
"description": "Wrap the matched letters of each label in the strong weight. Defaults to true."
|
|
2870
|
+
},
|
|
2871
|
+
{
|
|
2872
|
+
"name": "state",
|
|
2873
|
+
"type": "\"loading\" | \"ready\" | \"error\"",
|
|
2874
|
+
"required": false,
|
|
2875
|
+
"values": [
|
|
2876
|
+
"loading",
|
|
2877
|
+
"ready",
|
|
2878
|
+
"error"
|
|
2879
|
+
],
|
|
2880
|
+
"default": "ready",
|
|
2881
|
+
"description": "\"loading\" shows skeleton rows, \"error\" the error message."
|
|
2882
|
+
},
|
|
2883
|
+
{
|
|
2884
|
+
"name": "onSelect",
|
|
2885
|
+
"type": "((item: CommandMenuItem) => void)",
|
|
2886
|
+
"required": false,
|
|
2887
|
+
"description": "Called when an item is chosen (click or ↵)."
|
|
2888
|
+
},
|
|
2889
|
+
{
|
|
2890
|
+
"name": "closeOnSelect",
|
|
2891
|
+
"type": "boolean",
|
|
2892
|
+
"required": false,
|
|
2893
|
+
"default": true,
|
|
2894
|
+
"description": "Close the menu when an item is chosen. Defaults to true."
|
|
2895
|
+
},
|
|
2896
|
+
{
|
|
2897
|
+
"name": "scopes",
|
|
2898
|
+
"type": "CommandMenuScope[]",
|
|
2899
|
+
"required": false,
|
|
2900
|
+
"description": "Scope tabs under the field (not shown in the simple variant).",
|
|
2901
|
+
"shape": {
|
|
2902
|
+
"type": "CommandMenuScope",
|
|
2903
|
+
"collection": "array",
|
|
2904
|
+
"fields": [
|
|
2905
|
+
{
|
|
2906
|
+
"name": "value",
|
|
2907
|
+
"type": "string",
|
|
2908
|
+
"required": true,
|
|
2909
|
+
"description": "\"all\" is the unfiltered scope."
|
|
2910
|
+
},
|
|
2911
|
+
{
|
|
2912
|
+
"name": "label",
|
|
2913
|
+
"type": "string",
|
|
2914
|
+
"required": true
|
|
2915
|
+
},
|
|
2916
|
+
{
|
|
2917
|
+
"name": "count",
|
|
2918
|
+
"type": "number | null",
|
|
2919
|
+
"required": false,
|
|
2920
|
+
"description": "The count shown on the tab. Computed from the items when you leave it out (and `filter` is on); `null` shows no count."
|
|
2921
|
+
}
|
|
2922
|
+
]
|
|
2923
|
+
}
|
|
2924
|
+
},
|
|
2925
|
+
{
|
|
2926
|
+
"name": "scope",
|
|
2927
|
+
"type": "string",
|
|
2928
|
+
"required": false
|
|
2929
|
+
},
|
|
2930
|
+
{
|
|
2931
|
+
"name": "defaultScope",
|
|
2932
|
+
"type": "string",
|
|
2933
|
+
"required": false
|
|
2934
|
+
},
|
|
2935
|
+
{
|
|
2936
|
+
"name": "onScopeChange",
|
|
2937
|
+
"type": "((scope: string) => void)",
|
|
2938
|
+
"required": false
|
|
2939
|
+
},
|
|
2940
|
+
{
|
|
2941
|
+
"name": "filters",
|
|
2942
|
+
"type": "CommandMenuFilter[]",
|
|
2943
|
+
"required": false,
|
|
2944
|
+
"description": "Filter tokens shown in the field.",
|
|
2945
|
+
"shape": {
|
|
2946
|
+
"type": "CommandMenuFilter",
|
|
2947
|
+
"collection": "array",
|
|
2948
|
+
"fields": [
|
|
2949
|
+
{
|
|
2950
|
+
"name": "id",
|
|
2951
|
+
"type": "string",
|
|
2952
|
+
"required": true
|
|
2953
|
+
},
|
|
2954
|
+
{
|
|
2955
|
+
"name": "label",
|
|
2956
|
+
"type": "string",
|
|
2957
|
+
"required": true,
|
|
2958
|
+
"description": "Shown in the token, e.g. \"People\" or \"team: Design\"."
|
|
2959
|
+
},
|
|
2960
|
+
{
|
|
2961
|
+
"name": "value",
|
|
2962
|
+
"type": "string",
|
|
2963
|
+
"required": false,
|
|
2964
|
+
"description": "What `tags` are matched against. Defaults to the label."
|
|
2965
|
+
},
|
|
2966
|
+
{
|
|
2967
|
+
"name": "icon",
|
|
2968
|
+
"type": "IconComponent",
|
|
2969
|
+
"required": false
|
|
2970
|
+
}
|
|
2971
|
+
]
|
|
2972
|
+
}
|
|
2973
|
+
},
|
|
2974
|
+
{
|
|
2975
|
+
"name": "onFiltersChange",
|
|
2976
|
+
"type": "((filters: CommandMenuFilter[]) => void)",
|
|
2977
|
+
"required": false
|
|
2978
|
+
},
|
|
2979
|
+
{
|
|
2980
|
+
"name": "filterKeys",
|
|
2981
|
+
"type": "string[]",
|
|
2982
|
+
"required": false,
|
|
2983
|
+
"description": "Typing `key:value` and a space turns it into a token for these keys, e.g. [\"team\", \"status\"]."
|
|
2984
|
+
},
|
|
2985
|
+
{
|
|
2986
|
+
"name": "onAskAI",
|
|
2987
|
+
"type": "((query: string) => void)",
|
|
2988
|
+
"required": false,
|
|
2989
|
+
"description": "Adds ⌘↵ and the \"Ask AI\" hint; called with the current query."
|
|
2990
|
+
},
|
|
2991
|
+
{
|
|
2992
|
+
"name": "answer",
|
|
2993
|
+
"type": "ReactNode",
|
|
2994
|
+
"required": false,
|
|
2995
|
+
"description": "Shown above the results (an answer card, a Chain of Thought)."
|
|
2996
|
+
},
|
|
2997
|
+
{
|
|
2998
|
+
"name": "renderPreview",
|
|
2999
|
+
"type": "((item: CommandMenuItem) => ReactNode)",
|
|
3000
|
+
"required": false,
|
|
3001
|
+
"description": "Shows a preview pane beside the list for the active item. Return null for no pane."
|
|
3002
|
+
},
|
|
3003
|
+
{
|
|
3004
|
+
"name": "previewActions",
|
|
3005
|
+
"type": "ReactNode | ((item: CommandMenuItem) => ReactNode)",
|
|
3006
|
+
"required": false,
|
|
3007
|
+
"description": "Buttons or links pinned to the bottom of the detail pane. They stay put while the content above changes from row to row (only `renderPreview`'s content cross-fades); pass a function to read the previewed row. Hidden when a row has no preview.",
|
|
3008
|
+
"since": "0.14.0"
|
|
3009
|
+
},
|
|
3010
|
+
{
|
|
3011
|
+
"name": "previewEmpty",
|
|
3012
|
+
"type": "ReactNode",
|
|
3013
|
+
"required": false,
|
|
3014
|
+
"default": "Nothing to preview for this result",
|
|
3015
|
+
"description": "Shown in the detail pane when the active row has nothing to preview (`renderPreview` returned nothing).",
|
|
3016
|
+
"since": "0.14.0"
|
|
3017
|
+
},
|
|
3018
|
+
{
|
|
3019
|
+
"name": "emptyTitle",
|
|
3020
|
+
"type": "ReactNode",
|
|
3021
|
+
"required": false,
|
|
3022
|
+
"description": "The \"No results\" message."
|
|
3023
|
+
},
|
|
3024
|
+
{
|
|
3025
|
+
"name": "emptyDescription",
|
|
3026
|
+
"type": "ReactNode",
|
|
3027
|
+
"required": false
|
|
3028
|
+
},
|
|
3029
|
+
{
|
|
3030
|
+
"name": "suggestions",
|
|
3031
|
+
"type": "CommandMenuSuggestion[]",
|
|
3032
|
+
"required": false,
|
|
3033
|
+
"description": "Quick fixes under the empty message, e.g. \"Did you mean invoice?\".",
|
|
3034
|
+
"shape": {
|
|
3035
|
+
"type": "CommandMenuSuggestion",
|
|
3036
|
+
"collection": "array",
|
|
3037
|
+
"fields": [
|
|
3038
|
+
{
|
|
3039
|
+
"name": "label",
|
|
3040
|
+
"type": "string",
|
|
3041
|
+
"required": true
|
|
3042
|
+
},
|
|
3043
|
+
{
|
|
3044
|
+
"name": "icon",
|
|
3045
|
+
"type": "IconComponent",
|
|
3046
|
+
"required": false
|
|
3047
|
+
},
|
|
3048
|
+
{
|
|
3049
|
+
"name": "iconPosition",
|
|
3050
|
+
"type": "\"start\" | \"end\"",
|
|
3051
|
+
"required": false,
|
|
3052
|
+
"description": "Where the icon sits: before the label (default) or after it (e.g. the × on \"Remove the Files filter\")."
|
|
3053
|
+
},
|
|
3054
|
+
{
|
|
3055
|
+
"name": "emphasis",
|
|
3056
|
+
"type": "string",
|
|
3057
|
+
"required": false,
|
|
3058
|
+
"description": "A word inside `label` to set in the strong weight (\"invoice\" in \"Did you mean invoice?\")."
|
|
3059
|
+
},
|
|
3060
|
+
{
|
|
3061
|
+
"name": "onSelect",
|
|
3062
|
+
"type": "() => void",
|
|
3063
|
+
"required": true
|
|
3064
|
+
}
|
|
3065
|
+
]
|
|
3066
|
+
}
|
|
3067
|
+
},
|
|
3068
|
+
{
|
|
3069
|
+
"name": "fallbackGroups",
|
|
3070
|
+
"type": "CommandMenuGroup[]",
|
|
3071
|
+
"required": false,
|
|
3072
|
+
"description": "Shown under the empty or error message, and navigable like any group (e.g. \"Try instead\").",
|
|
3073
|
+
"shape": {
|
|
3074
|
+
"type": "CommandMenuGroup",
|
|
3075
|
+
"collection": "array",
|
|
3076
|
+
"fields": [
|
|
3077
|
+
{
|
|
3078
|
+
"name": "id",
|
|
3079
|
+
"type": "string",
|
|
3080
|
+
"required": true
|
|
3081
|
+
},
|
|
3082
|
+
{
|
|
3083
|
+
"name": "label",
|
|
3084
|
+
"type": "string",
|
|
3085
|
+
"required": false,
|
|
3086
|
+
"description": "The small heading above the items."
|
|
3087
|
+
},
|
|
3088
|
+
{
|
|
3089
|
+
"name": "action",
|
|
3090
|
+
"type": "{ label: string; onClick: () => void; }",
|
|
3091
|
+
"required": false,
|
|
3092
|
+
"description": "A link on the right of the heading, e.g. \"See all\"."
|
|
3093
|
+
},
|
|
3094
|
+
{
|
|
3095
|
+
"name": "items",
|
|
3096
|
+
"type": "CommandMenuItem[]",
|
|
3097
|
+
"required": true
|
|
3098
|
+
}
|
|
3099
|
+
]
|
|
3100
|
+
}
|
|
3101
|
+
},
|
|
3102
|
+
{
|
|
3103
|
+
"name": "errorTitle",
|
|
3104
|
+
"type": "ReactNode",
|
|
3105
|
+
"required": false,
|
|
3106
|
+
"default": "Search is unavailable"
|
|
3107
|
+
},
|
|
3108
|
+
{
|
|
3109
|
+
"name": "errorDescription",
|
|
3110
|
+
"type": "ReactNode",
|
|
3111
|
+
"required": false
|
|
3112
|
+
},
|
|
3113
|
+
{
|
|
3114
|
+
"name": "onRetry",
|
|
3115
|
+
"type": "(() => void)",
|
|
3116
|
+
"required": false
|
|
3117
|
+
},
|
|
3118
|
+
{
|
|
3119
|
+
"name": "onReport",
|
|
3120
|
+
"type": "(() => void)",
|
|
3121
|
+
"required": false,
|
|
3122
|
+
"description": "A second, quieter action beside \"Try again\" in the error state (\"Report\").",
|
|
3123
|
+
"since": "0.14.0"
|
|
3124
|
+
},
|
|
3125
|
+
{
|
|
3126
|
+
"name": "retryLabel",
|
|
3127
|
+
"type": "ReactNode",
|
|
3128
|
+
"required": false,
|
|
3129
|
+
"default": "Try again",
|
|
3130
|
+
"since": "0.14.0"
|
|
3131
|
+
},
|
|
3132
|
+
{
|
|
3133
|
+
"name": "reportLabel",
|
|
3134
|
+
"type": "ReactNode",
|
|
3135
|
+
"required": false,
|
|
3136
|
+
"default": "Report",
|
|
3137
|
+
"since": "0.14.0"
|
|
3138
|
+
},
|
|
3139
|
+
{
|
|
3140
|
+
"name": "workspace",
|
|
3141
|
+
"type": "ReactNode",
|
|
3142
|
+
"required": false,
|
|
3143
|
+
"description": "The workspace switcher in the footer (default variant)."
|
|
3144
|
+
},
|
|
3145
|
+
{
|
|
3146
|
+
"name": "hideFooter",
|
|
3147
|
+
"type": "boolean",
|
|
3148
|
+
"required": false,
|
|
3149
|
+
"default": false,
|
|
3150
|
+
"description": "Hide the footer of key hints."
|
|
3151
|
+
},
|
|
3152
|
+
{
|
|
3153
|
+
"name": "aria-label",
|
|
3154
|
+
"type": "string",
|
|
3155
|
+
"required": false,
|
|
3156
|
+
"default": "Command menu",
|
|
3157
|
+
"description": "Accessible name of the dialog. Defaults to \"Command menu\"."
|
|
3158
|
+
},
|
|
3159
|
+
{
|
|
3160
|
+
"name": "className",
|
|
3161
|
+
"type": "string",
|
|
3162
|
+
"required": false
|
|
3163
|
+
}
|
|
3164
|
+
],
|
|
3165
|
+
"contract": {
|
|
3166
|
+
"requiredProps": [
|
|
3167
|
+
"groups"
|
|
3168
|
+
],
|
|
3169
|
+
"requiresAccessibleName": false
|
|
3170
|
+
},
|
|
3171
|
+
"since": "0.13.0",
|
|
3172
|
+
"example": "import { CommandMenu } from '@sakaniui/react';\n\n<CommandMenu groups={[{ id: \"item-1\", items: [{ id: \"item-1\", label: \"Label\" }] }]} />",
|
|
3173
|
+
"recipes": [
|
|
3174
|
+
{
|
|
3175
|
+
"title": "A ⌘K search over your pages, people and actions",
|
|
3176
|
+
"description": "CommandMenu is controlled by you for what it shows and what happens: pass `groups` of `items`, handle `onSelect`, and give the menu `scopes` for the tabs. It opens on ⌘K by itself (`open` / `onOpenChange` to control it) and filters as you type. For results from a server pass `filter={false}`, set `state=\"loading\"` while you wait, and render the groups you got back. Put a `CommandMenuTrigger` in your top bar. Give every item a `label`; add `shortcut` for key hints and `description` or `meta` for context.",
|
|
3177
|
+
"code": "import React from 'react';\nimport { CommandMenu, CommandMenuTrigger } from '@sakaniui/react';\nimport { IconSettings, IconPlus } from '@sakaniui/react/icons';\n\nconst GROUPS = [\n {\n id: 'pages', label: 'Pages',\n items: [{ id: 'settings', type: 'page' as const, label: 'Settings', description: 'Workspace', icon: IconSettings }],\n },\n {\n id: 'actions', label: 'Actions',\n items: [{ id: 'new', type: 'action' as const, label: 'Create project', icon: IconPlus, shortcut: ['⌘', 'N'] }],\n },\n];\n\nexport const Example = () => {\n const [open, setOpen] = React.useState(false);\n return (\n <>\n <CommandMenuTrigger onClick={() => setOpen(true)} />\n <CommandMenu\n open={open}\n onOpenChange={setOpen}\n groups={GROUPS}\n scopes={[{ value: 'all', label: 'All' }, { value: 'pages', label: 'Pages' }, { value: 'actions', label: 'Actions' }]}\n onSelect={(item) => console.log(item.id)}\n />\n </>\n );\n};"
|
|
3178
|
+
}
|
|
3179
|
+
],
|
|
3180
|
+
"aliases": [
|
|
3181
|
+
"command palette",
|
|
3182
|
+
"command bar",
|
|
3183
|
+
"cmd k",
|
|
3184
|
+
"cmdk",
|
|
3185
|
+
"search modal",
|
|
3186
|
+
"global search",
|
|
3187
|
+
"spotlight",
|
|
3188
|
+
"quick actions",
|
|
3189
|
+
"omnibar",
|
|
3190
|
+
"search palette",
|
|
3191
|
+
"advanced search",
|
|
3192
|
+
"quick switcher",
|
|
3193
|
+
"command k"
|
|
3194
|
+
]
|
|
3195
|
+
},
|
|
3196
|
+
{
|
|
3197
|
+
"name": "CommandMenuAnswer",
|
|
3198
|
+
"kind": "component",
|
|
3199
|
+
"category": "Composite",
|
|
3200
|
+
"import": "@sakaniui/react",
|
|
3201
|
+
"summary": "An answer card for the CommandMenu's Ask AI state: the answer text, its sources as chips, and a follow-up. Pass it as the menu's `answer`.",
|
|
3202
|
+
"props": [
|
|
3203
|
+
{
|
|
3204
|
+
"name": "title",
|
|
3205
|
+
"type": "string",
|
|
3206
|
+
"required": false,
|
|
3207
|
+
"default": "SakaniUI AI"
|
|
3208
|
+
},
|
|
3209
|
+
{
|
|
3210
|
+
"name": "status",
|
|
3211
|
+
"type": "string",
|
|
3212
|
+
"required": false,
|
|
3213
|
+
"description": "e.g. \"Thought for 2.4s\". With `stream` it appears once the text has been written."
|
|
3214
|
+
},
|
|
3215
|
+
{
|
|
3216
|
+
"name": "children",
|
|
3217
|
+
"type": "ReactNode",
|
|
3218
|
+
"required": true,
|
|
3219
|
+
"description": "The answer text."
|
|
3220
|
+
},
|
|
3221
|
+
{
|
|
3222
|
+
"name": "stream",
|
|
3223
|
+
"type": "boolean",
|
|
3224
|
+
"required": false,
|
|
3225
|
+
"description": "Writes the answer in word by word, the way a chat reply arrives, and brings in the sources and the follow-up once it is written. Needs `children` to be a plain string; reduced motion shows it at once.",
|
|
3226
|
+
"since": "0.14.0"
|
|
3227
|
+
},
|
|
3228
|
+
{
|
|
3229
|
+
"name": "onStreamEnd",
|
|
3230
|
+
"type": "(() => void)",
|
|
3231
|
+
"required": false,
|
|
3232
|
+
"description": "Called once when the text has been written (or at once when it is not streamed).",
|
|
3233
|
+
"since": "0.14.0"
|
|
3234
|
+
},
|
|
3235
|
+
{
|
|
3236
|
+
"name": "sources",
|
|
3237
|
+
"type": "{ label: string; icon?: IconComponent; }[]",
|
|
3238
|
+
"required": false,
|
|
3239
|
+
"description": "Sources as chips under the answer.",
|
|
3240
|
+
"shape": {
|
|
3241
|
+
"type": "{ label: string; icon?: IconComponent | undefined; }",
|
|
3242
|
+
"collection": "array",
|
|
3243
|
+
"fields": [
|
|
3244
|
+
{
|
|
3245
|
+
"name": "label",
|
|
3246
|
+
"type": "string",
|
|
3247
|
+
"required": true
|
|
3248
|
+
},
|
|
3249
|
+
{
|
|
3250
|
+
"name": "icon",
|
|
3251
|
+
"type": "IconComponent",
|
|
3252
|
+
"required": false
|
|
3253
|
+
}
|
|
3254
|
+
]
|
|
3255
|
+
}
|
|
3256
|
+
},
|
|
3257
|
+
{
|
|
3258
|
+
"name": "onFollowUp",
|
|
3259
|
+
"type": "(() => void)",
|
|
3260
|
+
"required": false,
|
|
3261
|
+
"description": "Adds an \"Ask a follow-up\" button."
|
|
3262
|
+
},
|
|
3263
|
+
{
|
|
3264
|
+
"name": "onOpenInChat",
|
|
3265
|
+
"type": "(() => void)",
|
|
3266
|
+
"required": false,
|
|
3267
|
+
"description": "Adds an \"Open in chat\" hint with ⌘↵."
|
|
3268
|
+
},
|
|
3269
|
+
{
|
|
3270
|
+
"name": "onCopy",
|
|
3271
|
+
"type": "(() => void)",
|
|
3272
|
+
"required": false
|
|
3273
|
+
},
|
|
3274
|
+
{
|
|
3275
|
+
"name": "className",
|
|
3276
|
+
"type": "string",
|
|
3277
|
+
"required": false
|
|
3278
|
+
}
|
|
3279
|
+
],
|
|
3280
|
+
"contract": {
|
|
3281
|
+
"requiredProps": [
|
|
3282
|
+
"children"
|
|
3283
|
+
],
|
|
3284
|
+
"requiresAccessibleName": false
|
|
3285
|
+
},
|
|
3286
|
+
"since": "0.13.0",
|
|
3287
|
+
"example": "import { CommandMenuAnswer } from '@sakaniui/react';\n\n<CommandMenuAnswer>Label</CommandMenuAnswer>",
|
|
3288
|
+
"aliases": [
|
|
3289
|
+
"ai answer",
|
|
3290
|
+
"answer card",
|
|
3291
|
+
"search answer"
|
|
3292
|
+
]
|
|
3293
|
+
},
|
|
3294
|
+
{
|
|
3295
|
+
"name": "CommandMenuTrigger",
|
|
3296
|
+
"kind": "component",
|
|
3297
|
+
"category": "Composite",
|
|
3298
|
+
"import": "@sakaniui/react",
|
|
3299
|
+
"summary": "The ⌘K pill that opens a CommandMenu, for a top bar or sidebar. A button: give it `onClick`.",
|
|
3300
|
+
"props": [
|
|
3301
|
+
{
|
|
3302
|
+
"name": "placeholder",
|
|
3303
|
+
"type": "string",
|
|
3304
|
+
"required": false,
|
|
3305
|
+
"default": "Search or ask anything…",
|
|
3306
|
+
"description": "The text in the pill. Defaults to \"Search or jump to…\"."
|
|
3307
|
+
},
|
|
3308
|
+
{
|
|
3309
|
+
"name": "shortcut",
|
|
3310
|
+
"type": "string[]",
|
|
3311
|
+
"required": false,
|
|
3312
|
+
"default": "['⌘', 'K']",
|
|
3313
|
+
"description": "The key caps on the right. Defaults to [\"⌘\", \"K\"]."
|
|
3314
|
+
}
|
|
3315
|
+
],
|
|
3316
|
+
"contract": {
|
|
3317
|
+
"requiredProps": [],
|
|
3318
|
+
"requiresAccessibleName": false
|
|
3319
|
+
},
|
|
3320
|
+
"since": "0.13.0",
|
|
3321
|
+
"example": "import { CommandMenuTrigger } from '@sakaniui/react';\n\n<CommandMenuTrigger />",
|
|
3322
|
+
"aliases": [
|
|
3323
|
+
"search button",
|
|
3324
|
+
"cmd k trigger",
|
|
3325
|
+
"search pill",
|
|
3326
|
+
"search trigger",
|
|
3327
|
+
"command trigger"
|
|
3328
|
+
]
|
|
3329
|
+
},
|
|
2753
3330
|
{
|
|
2754
3331
|
"name": "ConversationItem",
|
|
2755
3332
|
"kind": "component",
|
|
@@ -2943,12 +3520,12 @@
|
|
|
2943
3520
|
"props": [
|
|
2944
3521
|
{
|
|
2945
3522
|
"name": "type",
|
|
2946
|
-
"type": "\"
|
|
3523
|
+
"type": "\"error\" | \"no-data\" | \"no-results\"",
|
|
2947
3524
|
"required": false,
|
|
2948
3525
|
"values": [
|
|
3526
|
+
"error",
|
|
2949
3527
|
"no-data",
|
|
2950
|
-
"no-results"
|
|
2951
|
-
"error"
|
|
3528
|
+
"no-results"
|
|
2952
3529
|
],
|
|
2953
3530
|
"default": "no-data"
|
|
2954
3531
|
},
|
|
@@ -3651,6 +4228,45 @@
|
|
|
3651
4228
|
"name": "trailingIcon",
|
|
3652
4229
|
"type": "ReactNode",
|
|
3653
4230
|
"required": false
|
|
4231
|
+
},
|
|
4232
|
+
{
|
|
4233
|
+
"name": "variant",
|
|
4234
|
+
"type": "\"default\" | \"ai\"",
|
|
4235
|
+
"required": false,
|
|
4236
|
+
"values": [
|
|
4237
|
+
"default",
|
|
4238
|
+
"ai"
|
|
4239
|
+
],
|
|
4240
|
+
"default": "default",
|
|
4241
|
+
"description": "\"ai\" is the prompt box of an AI product: a pill with a 16px field, action slots and a light around the border. Defaults to \"default\".",
|
|
4242
|
+
"since": "0.14.0"
|
|
4243
|
+
},
|
|
4244
|
+
{
|
|
4245
|
+
"name": "glow",
|
|
4246
|
+
"type": "\"off\" | \"pulse\" | \"focus\"",
|
|
4247
|
+
"required": false,
|
|
4248
|
+
"values": [
|
|
4249
|
+
"off",
|
|
4250
|
+
"pulse",
|
|
4251
|
+
"focus"
|
|
4252
|
+
],
|
|
4253
|
+
"default": "pulse",
|
|
4254
|
+
"description": "variant=\"ai\": the light that sweeps clockwise around the border. \"pulse\" (default) sweeps every 2.5s while idle and once each time the field takes focus; \"focus\" sweeps only on focus; \"off\" draws none. Reduced motion draws none.",
|
|
4255
|
+
"since": "0.14.0"
|
|
4256
|
+
},
|
|
4257
|
+
{
|
|
4258
|
+
"name": "leading",
|
|
4259
|
+
"type": "ReactNode",
|
|
4260
|
+
"required": false,
|
|
4261
|
+
"description": "variant=\"ai\": actions before the field, such as an attach button. Interactive content is fine here (unlike `leadingIcon`).",
|
|
4262
|
+
"since": "0.14.0"
|
|
4263
|
+
},
|
|
4264
|
+
{
|
|
4265
|
+
"name": "trailing",
|
|
4266
|
+
"type": "ReactNode",
|
|
4267
|
+
"required": false,
|
|
4268
|
+
"description": "variant=\"ai\": actions after the field, such as a mic and a send button.",
|
|
4269
|
+
"since": "0.14.0"
|
|
3654
4270
|
}
|
|
3655
4271
|
],
|
|
3656
4272
|
"contract": {
|
|
@@ -4434,13 +5050,13 @@
|
|
|
4434
5050
|
"description": "Returns the item located at the specified index."
|
|
4435
5051
|
},
|
|
4436
5052
|
{
|
|
4437
|
-
"name": "__@iterator@
|
|
5053
|
+
"name": "__@iterator@15637",
|
|
4438
5054
|
"type": "() => ArrayIterator<number>",
|
|
4439
5055
|
"required": true,
|
|
4440
5056
|
"description": "Iterator"
|
|
4441
5057
|
},
|
|
4442
5058
|
{
|
|
4443
|
-
"name": "__@unscopables@
|
|
5059
|
+
"name": "__@unscopables@15667",
|
|
4444
5060
|
"type": "{ [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; at?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; }",
|
|
4445
5061
|
"required": true,
|
|
4446
5062
|
"description": "Is an object whose properties have the value 'true' when they will be absent when used in a 'with' statement."
|
|
@@ -5016,13 +5632,13 @@
|
|
|
5016
5632
|
"description": "Returns the item located at the specified index."
|
|
5017
5633
|
},
|
|
5018
5634
|
{
|
|
5019
|
-
"name": "__@iterator@
|
|
5635
|
+
"name": "__@iterator@15637",
|
|
5020
5636
|
"type": "() => ArrayIterator<number>",
|
|
5021
5637
|
"required": true,
|
|
5022
5638
|
"description": "Iterator"
|
|
5023
5639
|
},
|
|
5024
5640
|
{
|
|
5025
|
-
"name": "__@unscopables@
|
|
5641
|
+
"name": "__@unscopables@15667",
|
|
5026
5642
|
"type": "{ [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; at?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; }",
|
|
5027
5643
|
"required": true,
|
|
5028
5644
|
"description": "Is an object whose properties have the value 'true' when they will be absent when used in a 'with' statement."
|
|
@@ -5406,13 +6022,13 @@
|
|
|
5406
6022
|
"description": "Returns the item located at the specified index."
|
|
5407
6023
|
},
|
|
5408
6024
|
{
|
|
5409
|
-
"name": "__@iterator@
|
|
6025
|
+
"name": "__@iterator@15637",
|
|
5410
6026
|
"type": "() => ArrayIterator<number>",
|
|
5411
6027
|
"required": true,
|
|
5412
6028
|
"description": "Iterator"
|
|
5413
6029
|
},
|
|
5414
6030
|
{
|
|
5415
|
-
"name": "__@unscopables@
|
|
6031
|
+
"name": "__@unscopables@15667",
|
|
5416
6032
|
"type": "{ [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; at?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; }",
|
|
5417
6033
|
"required": true,
|
|
5418
6034
|
"description": "Is an object whose properties have the value 'true' when they will be absent when used in a 'with' statement."
|
|
@@ -5713,13 +6329,13 @@
|
|
|
5713
6329
|
"description": "Returns the item located at the specified index."
|
|
5714
6330
|
},
|
|
5715
6331
|
{
|
|
5716
|
-
"name": "__@iterator@
|
|
6332
|
+
"name": "__@iterator@15637",
|
|
5717
6333
|
"type": "() => ArrayIterator<number>",
|
|
5718
6334
|
"required": true,
|
|
5719
6335
|
"description": "Iterator"
|
|
5720
6336
|
},
|
|
5721
6337
|
{
|
|
5722
|
-
"name": "__@unscopables@
|
|
6338
|
+
"name": "__@unscopables@15667",
|
|
5723
6339
|
"type": "{ [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; at?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; }",
|
|
5724
6340
|
"required": true,
|
|
5725
6341
|
"description": "Is an object whose properties have the value 'true' when they will be absent when used in a 'with' statement."
|
|
@@ -8293,7 +8909,7 @@
|
|
|
8293
8909
|
],
|
|
8294
8910
|
"requiresAccessibleName": false
|
|
8295
8911
|
},
|
|
8296
|
-
"since": "0.
|
|
8912
|
+
"since": "0.13.0",
|
|
8297
8913
|
"example": "import { SourceLogo } from '@sakaniui/react';\n\n<SourceLogo name=\"x\" />",
|
|
8298
8914
|
"aliases": [
|
|
8299
8915
|
"brand logo",
|
|
@@ -9387,6 +10003,53 @@
|
|
|
9387
10003
|
"name": "error",
|
|
9388
10004
|
"type": "string",
|
|
9389
10005
|
"required": false
|
|
10006
|
+
},
|
|
10007
|
+
{
|
|
10008
|
+
"name": "variant",
|
|
10009
|
+
"type": "\"default\" | \"ai\"",
|
|
10010
|
+
"required": false,
|
|
10011
|
+
"values": [
|
|
10012
|
+
"default",
|
|
10013
|
+
"ai"
|
|
10014
|
+
],
|
|
10015
|
+
"default": "default",
|
|
10016
|
+
"description": "\"ai\" is the prompt box of an AI product: a 16px-radius box, a 16px field that grows with the text, an actions row and a light around the border. Defaults to \"default\".",
|
|
10017
|
+
"since": "0.14.0"
|
|
10018
|
+
},
|
|
10019
|
+
{
|
|
10020
|
+
"name": "glow",
|
|
10021
|
+
"type": "\"off\" | \"pulse\" | \"focus\"",
|
|
10022
|
+
"required": false,
|
|
10023
|
+
"values": [
|
|
10024
|
+
"off",
|
|
10025
|
+
"pulse",
|
|
10026
|
+
"focus"
|
|
10027
|
+
],
|
|
10028
|
+
"default": "pulse",
|
|
10029
|
+
"description": "variant=\"ai\": the light that sweeps clockwise around the border. \"pulse\" (default) sweeps every 2.5s while idle and once each time the field takes focus; \"focus\" sweeps only on focus; \"off\" draws none. Reduced motion draws none.",
|
|
10030
|
+
"since": "0.14.0"
|
|
10031
|
+
},
|
|
10032
|
+
{
|
|
10033
|
+
"name": "leading",
|
|
10034
|
+
"type": "ReactNode",
|
|
10035
|
+
"required": false,
|
|
10036
|
+
"description": "variant=\"ai\": actions on the left of the row under the field, such as an attach button.",
|
|
10037
|
+
"since": "0.14.0"
|
|
10038
|
+
},
|
|
10039
|
+
{
|
|
10040
|
+
"name": "trailing",
|
|
10041
|
+
"type": "ReactNode",
|
|
10042
|
+
"required": false,
|
|
10043
|
+
"description": "variant=\"ai\": actions on the right of that row, such as a mic and a send button.",
|
|
10044
|
+
"since": "0.14.0"
|
|
10045
|
+
},
|
|
10046
|
+
{
|
|
10047
|
+
"name": "maxRows",
|
|
10048
|
+
"type": "number",
|
|
10049
|
+
"required": false,
|
|
10050
|
+
"default": 8,
|
|
10051
|
+
"description": "variant=\"ai\": the most lines the field grows to before it scrolls. Defaults to 8.",
|
|
10052
|
+
"since": "0.14.0"
|
|
9390
10053
|
}
|
|
9391
10054
|
],
|
|
9392
10055
|
"contract": {
|
|
@@ -10034,7 +10697,7 @@
|
|
|
10034
10697
|
"done",
|
|
10035
10698
|
"working"
|
|
10036
10699
|
],
|
|
10037
|
-
"default": "
|
|
10700
|
+
"default": "working",
|
|
10038
10701
|
"description": "\"working\" shows a sparkle and a shimmering label; \"done\" shows a check. Defaults to \"working\"."
|
|
10039
10702
|
},
|
|
10040
10703
|
{
|
|
@@ -13156,12 +13819,14 @@
|
|
|
13156
13819
|
{
|
|
13157
13820
|
"name": "sourceLogo",
|
|
13158
13821
|
"kind": "helper",
|
|
13159
|
-
"import": "@sakaniui/react"
|
|
13822
|
+
"import": "@sakaniui/react",
|
|
13823
|
+
"since": "0.13.0"
|
|
13160
13824
|
},
|
|
13161
13825
|
{
|
|
13162
13826
|
"name": "sourceLogoNames",
|
|
13163
13827
|
"kind": "helper",
|
|
13164
|
-
"import": "@sakaniui/react"
|
|
13828
|
+
"import": "@sakaniui/react",
|
|
13829
|
+
"since": "0.13.0"
|
|
13165
13830
|
},
|
|
13166
13831
|
{
|
|
13167
13832
|
"name": "syncLiquidBackdrop",
|