@powerhousedao/design-system 6.0.0-dev.192 → 6.0.0-dev.194

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.
Files changed (31) hide show
  1. package/dist/connect/index.js +1 -1
  2. package/dist/{connect-9ej7S5NE.js → connect-DAOux5MY.js} +256 -12
  3. package/dist/connect-DAOux5MY.js.map +1 -0
  4. package/dist/{enum-field-CSZlPqip.d.ts → enum-field-B0CAB18I.d.ts} +3 -3
  5. package/dist/{enum-field-CSZlPqip.d.ts.map → enum-field-B0CAB18I.d.ts.map} +1 -1
  6. package/dist/index-CeKkrAgh.d.ts.map +1 -1
  7. package/dist/{radio-group-field-DFgVrg3h.d.ts → radio-group-field-B6LrhnJT.d.ts} +2 -2
  8. package/dist/{radio-group-field-DFgVrg3h.d.ts.map → radio-group-field-B6LrhnJT.d.ts.map} +1 -1
  9. package/dist/rwa/index.d.ts +9 -9
  10. package/dist/rwa/index.d.ts.map +1 -1
  11. package/dist/rwa/index.js +1 -1
  12. package/dist/{search-autocomplete-BwP4baRe.d.ts → search-autocomplete-C8QQB3YW.d.ts} +2 -2
  13. package/dist/{search-autocomplete-BwP4baRe.d.ts.map → search-autocomplete-C8QQB3YW.d.ts.map} +1 -1
  14. package/dist/style.css +49 -0
  15. package/dist/{types-bVze9lWE.d.ts → types-BghCtHb5.d.ts} +12 -2
  16. package/dist/types-BghCtHb5.d.ts.map +1 -0
  17. package/dist/ui/components/enum-field/enum-field.d.ts +1 -1
  18. package/dist/ui/components/index.d.ts +6 -6
  19. package/dist/ui/components/radio-group-field/radio-group-field.d.ts +1 -1
  20. package/dist/ui/components/search-autocomplete/index.d.ts +4 -4
  21. package/dist/ui/components/search-autocomplete/search-autocomplete.d.ts +1 -1
  22. package/dist/ui/components/search-autocomplete/search-autocomplete.js +62 -40
  23. package/dist/ui/components/search-autocomplete/search-autocomplete.js.map +1 -1
  24. package/dist/ui/components/search-autocomplete/types.d.ts +2 -2
  25. package/dist/ui/components/search-autocomplete/use-search-autocomplete.d.ts +1 -1
  26. package/dist/ui/index.d.ts +6 -6
  27. package/dist/{use-search-autocomplete-pbku_c5c.d.ts → use-search-autocomplete-DNPhMdWQ.d.ts} +2 -2
  28. package/dist/{use-search-autocomplete-pbku_c5c.d.ts.map → use-search-autocomplete-DNPhMdWQ.d.ts.map} +1 -1
  29. package/package.json +5 -5
  30. package/dist/connect-9ej7S5NE.js.map +0 -1
  31. package/dist/types-bVze9lWE.d.ts.map +0 -1
@@ -6,7 +6,7 @@ import { useCallback, useState } from "react";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
7
7
  //#region src/ui/components/search-autocomplete/search-autocomplete.tsx
8
8
  const SearchAutocomplete = (props) => {
9
- const { fetchOptions, onSelect, selectLabel = "Select", selectingContent, placeholder = "Search...", disabled = false, loading: externalLoading = false, className, renderOption, debounceMs = 300 } = props;
9
+ const { fetchOptions, onSelect, selectLabel = "Select", selectingContent, placeholder = "Search...", disabled = false, loading: externalLoading = false, className, renderOption, renderRow, keepOpenSelector, debounceMs = 300 } = props;
10
10
  const { query, setQuery, results, isLoading, error, isOpen, setIsOpen, handleQueryChange } = useSearchAutocomplete({
11
11
  fetchOptions,
12
12
  debounceMs
@@ -78,46 +78,68 @@ const SearchAutocomplete = (props) => {
78
78
  }), /* @__PURE__ */ jsx(PopoverContent, {
79
79
  align: "start",
80
80
  onOpenAutoFocus: (e) => e.preventDefault(),
81
- onInteractOutside: () => setIsOpen(false),
82
- className: "max-h-60 overflow-y-auto p-1",
83
- children: results.map((option) => /* @__PURE__ */ jsxs("div", {
84
- className: "flex items-center justify-between gap-2 rounded-md px-2 py-1.5 hover:bg-gray-100",
85
- children: [renderOption ? /* @__PURE__ */ jsx("div", {
86
- className: "min-w-0 flex-1",
87
- children: renderOption(option)
88
- }) : /* @__PURE__ */ jsxs("div", {
89
- className: "min-w-0 flex-1",
90
- children: [
91
- /* @__PURE__ */ jsx("p", {
92
- className: "truncate text-sm font-medium text-gray-900",
93
- children: option.label
94
- }),
95
- option.version && /* @__PURE__ */ jsxs("p", {
96
- className: "truncate text-xs text-gray-500",
97
- children: ["v", option.version]
98
- }),
99
- option.description && /* @__PURE__ */ jsx("p", {
100
- className: "truncate text-xs text-gray-500",
101
- children: option.description
102
- }),
103
- option.meta && /* @__PURE__ */ jsx("p", {
104
- className: "truncate text-xs text-gray-400",
105
- children: option.meta
81
+ onInteractOutside: (e) => {
82
+ if (keepOpenSelector) {
83
+ if (e.target?.closest(keepOpenSelector)) {
84
+ e.preventDefault();
85
+ return;
86
+ }
87
+ }
88
+ setIsOpen(false);
89
+ },
90
+ className: "max-h-80 overflow-visible p-1",
91
+ children: /* @__PURE__ */ jsx("div", {
92
+ className: "max-h-80 overflow-y-auto",
93
+ children: results.map((option) => {
94
+ if (renderRow) return /* @__PURE__ */ jsx("div", {
95
+ className: "rounded-md",
96
+ children: renderRow(option, {
97
+ selectingValue,
98
+ selectLabel,
99
+ selectingContent,
100
+ handleSelect: (value) => void handleSelect(value)
106
101
  })
107
- ]
108
- }), selectingValue === option.value && selectingContent ? /* @__PURE__ */ jsx("div", {
109
- className: "flex shrink-0 items-center justify-center",
110
- children: selectingContent
111
- }) : option.disabled ? /* @__PURE__ */ jsx("span", {
112
- className: "shrink-0 rounded-md bg-gray-100 px-3 py-1 text-xs font-medium text-gray-500",
113
- children: option.disabledLabel ?? "Unavailable"
114
- }) : /* @__PURE__ */ jsx("button", {
115
- onClick: () => void handleSelect(option.value),
116
- disabled: selectingValue === option.value,
117
- className: "shrink-0 rounded-md bg-gray-900 px-3 py-1 text-xs font-medium text-white transition-colors hover:bg-gray-800 disabled:opacity-50",
118
- children: selectingValue === option.value ? "..." : selectLabel
119
- })]
120
- }, option.value))
102
+ }, option.value);
103
+ return /* @__PURE__ */ jsxs("div", {
104
+ className: "flex items-center justify-between gap-2 rounded-md px-2 py-1.5 hover:bg-gray-100",
105
+ children: [renderOption ? /* @__PURE__ */ jsx("div", {
106
+ className: "min-w-0 flex-1",
107
+ children: renderOption(option)
108
+ }) : /* @__PURE__ */ jsxs("div", {
109
+ className: "min-w-0 flex-1",
110
+ children: [
111
+ /* @__PURE__ */ jsx("p", {
112
+ className: "truncate text-sm font-medium text-gray-900",
113
+ children: option.label
114
+ }),
115
+ option.version && /* @__PURE__ */ jsxs("p", {
116
+ className: "truncate text-xs text-gray-500",
117
+ children: ["v", option.version]
118
+ }),
119
+ option.description && /* @__PURE__ */ jsx("p", {
120
+ className: "truncate text-xs text-gray-500",
121
+ children: option.description
122
+ }),
123
+ option.meta && /* @__PURE__ */ jsx("p", {
124
+ className: "truncate text-xs text-gray-400",
125
+ children: option.meta
126
+ })
127
+ ]
128
+ }), selectingValue === option.value && selectingContent ? /* @__PURE__ */ jsx("div", {
129
+ className: "flex shrink-0 items-center justify-center",
130
+ children: selectingContent
131
+ }) : option.disabled ? /* @__PURE__ */ jsx("span", {
132
+ className: "shrink-0 rounded-md bg-gray-100 px-3 py-1 text-xs font-medium text-gray-500",
133
+ children: option.disabledLabel ?? "Unavailable"
134
+ }) : /* @__PURE__ */ jsx("button", {
135
+ onClick: () => void handleSelect(option.value),
136
+ disabled: selectingValue === option.value,
137
+ className: "shrink-0 rounded-md bg-gray-900 px-3 py-1 text-xs font-medium text-white transition-colors hover:bg-gray-800 disabled:opacity-50",
138
+ children: selectingValue === option.value ? "..." : selectLabel
139
+ })]
140
+ }, option.value);
141
+ })
142
+ })
121
143
  })]
122
144
  }),
123
145
  loading && /* @__PURE__ */ jsx("p", {
@@ -1 +1 @@
1
- {"version":3,"file":"search-autocomplete.js","names":[],"sources":["../../../../src/ui/components/search-autocomplete/search-autocomplete.tsx"],"sourcesContent":["import { cn } from \"#design-system\";\nimport React, { useCallback, useState } from \"react\";\nimport { Input } from \"../input/input.js\";\nimport { Popover, PopoverAnchor, PopoverContent } from \"../popover/popover.js\";\nimport type { SearchAutocompleteProps } from \"./types.js\";\nimport { useSearchAutocomplete } from \"./use-search-autocomplete.js\";\n\nexport const SearchAutocomplete: React.FC<SearchAutocompleteProps> = (\n props,\n) => {\n const {\n fetchOptions,\n onSelect,\n selectLabel = \"Select\",\n selectingContent,\n placeholder = \"Search...\",\n disabled = false,\n loading: externalLoading = false,\n className,\n renderOption,\n debounceMs = 300,\n } = props;\n\n const {\n query,\n setQuery,\n results,\n isLoading,\n error,\n isOpen,\n setIsOpen,\n handleQueryChange,\n } = useSearchAutocomplete({ fetchOptions, debounceMs });\n\n const [selectingValue, setSelectingValue] = useState<string | null>(null);\n\n const handleInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n handleQueryChange(e.target.value);\n },\n [handleQueryChange],\n );\n\n const handleSelect = useCallback(\n async (value: string) => {\n setSelectingValue(value);\n try {\n await onSelect(value);\n setQuery(\"\");\n setIsOpen(false);\n } catch {\n // error handled by caller\n } finally {\n setSelectingValue(null);\n }\n },\n [onSelect, setQuery, setIsOpen],\n );\n\n const handleSubmit = useCallback(() => {\n if (query.trim()) {\n void handleSelect(query.trim());\n }\n }, [query, handleSelect]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n if (!fetchOptions && query.trim()) {\n handleSubmit();\n }\n }\n },\n [fetchOptions, query, handleSubmit],\n );\n\n const loading = isLoading || externalLoading;\n\n // Fallback: plain text input + submit when no fetchOptions\n if (!fetchOptions) {\n return (\n <div className={cn(\"flex items-center gap-2\", className)}>\n <Input\n value={query}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n disabled={disabled || selectingValue !== null}\n className=\"max-w-xs text-gray-700\"\n />\n <button\n onClick={handleSubmit}\n disabled={disabled || !query.trim() || selectingValue !== null}\n className=\"h-9 rounded-md bg-gray-900 px-4 text-sm font-semibold text-white transition-colors hover:bg-gray-800 disabled:cursor-not-allowed disabled:opacity-50\"\n >\n {selectLabel}\n </button>\n </div>\n );\n }\n\n return (\n <div className={cn(\"relative\", className)}>\n <Popover open={isOpen && results.length > 0} onOpenChange={setIsOpen}>\n <PopoverAnchor asChild>\n <Input\n value={query}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n disabled={disabled}\n className=\"max-w-xs text-gray-700\"\n />\n </PopoverAnchor>\n <PopoverContent\n align=\"start\"\n onOpenAutoFocus={(e) => e.preventDefault()}\n onInteractOutside={() => setIsOpen(false)}\n className=\"max-h-60 overflow-y-auto p-1\"\n >\n {results.map((option) => (\n <div\n key={option.value}\n className=\"flex items-center justify-between gap-2 rounded-md px-2 py-1.5 hover:bg-gray-100\"\n >\n {renderOption ? (\n <div className=\"min-w-0 flex-1\">{renderOption(option)}</div>\n ) : (\n <div className=\"min-w-0 flex-1\">\n <p className=\"truncate text-sm font-medium text-gray-900\">\n {option.label}\n </p>\n {option.version && (\n <p className=\"truncate text-xs text-gray-500\">\n v{option.version}\n </p>\n )}\n {option.description && (\n <p className=\"truncate text-xs text-gray-500\">\n {option.description}\n </p>\n )}\n {option.meta && (\n <p className=\"truncate text-xs text-gray-400\">\n {option.meta}\n </p>\n )}\n </div>\n )}\n {selectingValue === option.value && selectingContent ? (\n <div className=\"flex shrink-0 items-center justify-center\">\n {selectingContent}\n </div>\n ) : option.disabled ? (\n <span className=\"shrink-0 rounded-md bg-gray-100 px-3 py-1 text-xs font-medium text-gray-500\">\n {option.disabledLabel ?? \"Unavailable\"}\n </span>\n ) : (\n <button\n onClick={() => void handleSelect(option.value)}\n disabled={selectingValue === option.value}\n className=\"shrink-0 rounded-md bg-gray-900 px-3 py-1 text-xs font-medium text-white transition-colors hover:bg-gray-800 disabled:opacity-50\"\n >\n {selectingValue === option.value ? \"...\" : selectLabel}\n </button>\n )}\n </div>\n ))}\n </PopoverContent>\n </Popover>\n {loading && <p className=\"mt-1 text-xs text-gray-500\">Searching...</p>}\n {error && <p className=\"mt-1 text-xs text-red-600\">{error}</p>}\n {!loading &&\n !error &&\n query.trim() &&\n results.length === 0 &&\n !isOpen && (\n <p className=\"mt-1 text-xs text-gray-500\">No results found</p>\n )}\n </div>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"search-autocomplete.js","names":[],"sources":["../../../../src/ui/components/search-autocomplete/search-autocomplete.tsx"],"sourcesContent":["import { cn } from \"#design-system\";\nimport React, { useCallback, useState } from \"react\";\nimport { Input } from \"../input/input.js\";\nimport { Popover, PopoverAnchor, PopoverContent } from \"../popover/popover.js\";\nimport type { SearchAutocompleteProps } from \"./types.js\";\nimport { useSearchAutocomplete } from \"./use-search-autocomplete.js\";\n\nexport const SearchAutocomplete: React.FC<SearchAutocompleteProps> = (\n props,\n) => {\n const {\n fetchOptions,\n onSelect,\n selectLabel = \"Select\",\n selectingContent,\n placeholder = \"Search...\",\n disabled = false,\n loading: externalLoading = false,\n className,\n renderOption,\n renderRow,\n keepOpenSelector,\n debounceMs = 300,\n } = props;\n\n const {\n query,\n setQuery,\n results,\n isLoading,\n error,\n isOpen,\n setIsOpen,\n handleQueryChange,\n } = useSearchAutocomplete({ fetchOptions, debounceMs });\n\n const [selectingValue, setSelectingValue] = useState<string | null>(null);\n\n const handleInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n handleQueryChange(e.target.value);\n },\n [handleQueryChange],\n );\n\n const handleSelect = useCallback(\n async (value: string) => {\n setSelectingValue(value);\n try {\n await onSelect(value);\n setQuery(\"\");\n setIsOpen(false);\n } catch {\n // error handled by caller\n } finally {\n setSelectingValue(null);\n }\n },\n [onSelect, setQuery, setIsOpen],\n );\n\n const handleSubmit = useCallback(() => {\n if (query.trim()) {\n void handleSelect(query.trim());\n }\n }, [query, handleSelect]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n if (!fetchOptions && query.trim()) {\n handleSubmit();\n }\n }\n },\n [fetchOptions, query, handleSubmit],\n );\n\n const loading = isLoading || externalLoading;\n\n // Fallback: plain text input + submit when no fetchOptions\n if (!fetchOptions) {\n return (\n <div className={cn(\"flex items-center gap-2\", className)}>\n <Input\n value={query}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n disabled={disabled || selectingValue !== null}\n className=\"max-w-xs text-gray-700\"\n />\n <button\n onClick={handleSubmit}\n disabled={disabled || !query.trim() || selectingValue !== null}\n className=\"h-9 rounded-md bg-gray-900 px-4 text-sm font-semibold text-white transition-colors hover:bg-gray-800 disabled:cursor-not-allowed disabled:opacity-50\"\n >\n {selectLabel}\n </button>\n </div>\n );\n }\n\n return (\n <div className={cn(\"relative\", className)}>\n <Popover open={isOpen && results.length > 0} onOpenChange={setIsOpen}>\n <PopoverAnchor asChild>\n <Input\n value={query}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n disabled={disabled}\n className=\"max-w-xs text-gray-700\"\n />\n </PopoverAnchor>\n <PopoverContent\n align=\"start\"\n onOpenAutoFocus={(e) => e.preventDefault()}\n onInteractOutside={(e) => {\n if (keepOpenSelector) {\n const target = e.target as HTMLElement | null;\n if (target?.closest(keepOpenSelector)) {\n e.preventDefault();\n return;\n }\n }\n setIsOpen(false);\n }}\n className=\"max-h-80 overflow-visible p-1\"\n >\n <div className=\"max-h-80 overflow-y-auto\">\n {results.map((option) => {\n if (renderRow) {\n return (\n <div key={option.value} className=\"rounded-md\">\n {renderRow(option, {\n selectingValue,\n selectLabel,\n selectingContent,\n handleSelect: (value) => void handleSelect(value),\n })}\n </div>\n );\n }\n return (\n <div\n key={option.value}\n className=\"flex items-center justify-between gap-2 rounded-md px-2 py-1.5 hover:bg-gray-100\"\n >\n {renderOption ? (\n <div className=\"min-w-0 flex-1\">{renderOption(option)}</div>\n ) : (\n <div className=\"min-w-0 flex-1\">\n <p className=\"truncate text-sm font-medium text-gray-900\">\n {option.label}\n </p>\n {option.version && (\n <p className=\"truncate text-xs text-gray-500\">\n v{option.version}\n </p>\n )}\n {option.description && (\n <p className=\"truncate text-xs text-gray-500\">\n {option.description}\n </p>\n )}\n {option.meta && (\n <p className=\"truncate text-xs text-gray-400\">\n {option.meta}\n </p>\n )}\n </div>\n )}\n {selectingValue === option.value && selectingContent ? (\n <div className=\"flex shrink-0 items-center justify-center\">\n {selectingContent}\n </div>\n ) : option.disabled ? (\n <span className=\"shrink-0 rounded-md bg-gray-100 px-3 py-1 text-xs font-medium text-gray-500\">\n {option.disabledLabel ?? \"Unavailable\"}\n </span>\n ) : (\n <button\n onClick={() => void handleSelect(option.value)}\n disabled={selectingValue === option.value}\n className=\"shrink-0 rounded-md bg-gray-900 px-3 py-1 text-xs font-medium text-white transition-colors hover:bg-gray-800 disabled:opacity-50\"\n >\n {selectingValue === option.value ? \"...\" : selectLabel}\n </button>\n )}\n </div>\n );\n })}\n </div>\n </PopoverContent>\n </Popover>\n {loading && <p className=\"mt-1 text-xs text-gray-500\">Searching...</p>}\n {error && <p className=\"mt-1 text-xs text-red-600\">{error}</p>}\n {!loading &&\n !error &&\n query.trim() &&\n results.length === 0 &&\n !isOpen && (\n <p className=\"mt-1 text-xs text-gray-500\">No results found</p>\n )}\n </div>\n );\n};\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import { n as SearchAutocompleteProps, t as SearchAutocompleteOption } from "../../../types-bVze9lWE.js";
2
- export { SearchAutocompleteOption, SearchAutocompleteProps };
1
+ import { n as SearchAutocompleteProps, r as SearchAutocompleteRowContext, t as SearchAutocompleteOption } from "../../../types-BghCtHb5.js";
2
+ export { SearchAutocompleteOption, SearchAutocompleteProps, SearchAutocompleteRowContext };
@@ -1,2 +1,2 @@
1
- import { t as useSearchAutocomplete } from "../../../use-search-autocomplete-pbku_c5c.js";
1
+ import { t as useSearchAutocomplete } from "../../../use-search-autocomplete-DNPhMdWQ.js";
2
2
  export { useSearchAutocomplete };
@@ -5,9 +5,9 @@ import { n as CharacterCounterProps, t as CharacterCounter } from "../character-
5
5
  import { n as CheckboxValue, t as CheckboxBase } from "../checkbox-base-C0Sa2qHx.js";
6
6
  import { n as CheckboxProps, t as Checkbox } from "../checkbox-Bv_YDLcz.js";
7
7
  import { a as CommandItem, i as CommandInput, n as CommandEmpty, o as CommandList, r as CommandGroup, s as CommandLoading, t as Command } from "../command-Cl1OUbPV.js";
8
- import { n as RadioGroupFieldProps, t as RadioGroupField } from "../radio-group-field-DFgVrg3h.js";
8
+ import { n as RadioGroupFieldProps, t as RadioGroupField } from "../radio-group-field-B6LrhnJT.js";
9
9
  import { n as SelectFieldProps, r as SelectFieldRaw, t as SelectField } from "../select-field-C_81MbUi.js";
10
- import { n as EnumFieldProps, t as EnumField } from "../enum-field-CSZlPqip.js";
10
+ import { n as EnumFieldProps, t as EnumField } from "../enum-field-B0CAB18I.js";
11
11
  import { n as FormDescriptionProps, t as FormDescription } from "../form-description-BBEpOsuH.js";
12
12
  import { t as FormGroup } from "../form-group-D641xIKN.js";
13
13
  import { n as FormLabelProps, t as FormLabel } from "../form-label-Cc-YoYR-.js";
@@ -26,9 +26,9 @@ import { t as JsonViewer } from "../json-viewer-zv7cXvwi.js";
26
26
  import { i as PopoverTrigger, n as PopoverAnchor, r as PopoverContent, t as Popover } from "../popover-DRMntq2i.js";
27
27
  import { n as RadioGroup, t as CustomizableRadioGroupProps } from "../radio-group-GvfMKNQZ.js";
28
28
  import { n as RadioProps, t as Radio } from "../radio-BDfOgBkg.js";
29
- import { n as SearchAutocompleteProps, t as SearchAutocompleteOption } from "../types-bVze9lWE.js";
30
- import { t as SearchAutocomplete } from "../search-autocomplete-BwP4baRe.js";
31
- import { t as useSearchAutocomplete } from "../use-search-autocomplete-pbku_c5c.js";
29
+ import { n as SearchAutocompleteProps, r as SearchAutocompleteRowContext, t as SearchAutocompleteOption } from "../types-BghCtHb5.js";
30
+ import { t as SearchAutocomplete } from "../search-autocomplete-C8QQB3YW.js";
31
+ import { t as useSearchAutocomplete } from "../use-search-autocomplete-DNPhMdWQ.js";
32
32
  import { t as Content } from "../content-Dp_nWlIb.js";
33
33
  import { t as SelectedContent } from "../selected-content-CsFTuaAl.js";
34
34
  import { n as TextInputProps, t as TextInput } from "../text-input-w89uEGpc.js";
@@ -36,4 +36,4 @@ import { n as TextFieldProps, t as TextField } from "../text-field-CEhBGNfC.js";
36
36
  import { a as TooltipProps, i as TooltipContent, n as Root, o as Trigger, r as Tooltip, t as Provider } from "../tooltip-VNGD7wwV.js";
37
37
  import { t as ValueTransformer } from "../value-transformer-BRCYfgm2.js";
38
38
  import { n as withFieldValidation, t as ValidationOptions } from "../with-field-validation-C9GkWcIc.js";
39
- export { Amount, AmountCrypto, AmountCurrency, AmountFiat, AmountInputPropsGeneric, AmountPercentage, AmountValue, Button, ButtonProps, CharacterCounter, CharacterCounterProps, Checkbox, CheckboxBase, CheckboxProps, CheckboxValue, Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandLoading, Content, Currency, CurrencyTicker, CustomizableRadioGroupProps, DateFieldValue, DatePickerView, DiffMode, EnumField, EnumFieldProps, ErrorMessage, FieldErrorHandling, Form, FormDescription, FormDescriptionProps, FormGroup, FormLabel, FormLabelProps, FormMessage, FormMessageList, FormMessageProps, FormMessageType, FormServerErrorMessage, IdAutocomplete, IdAutocompleteInputContainer, IdAutocompleteInputContainerProps, IdAutocompleteList, IdAutocompleteListOption, IdAutocompleteListOptionProps, IdAutocompleteListProps, IdAutocompleteOption, IdAutocompleteProps, Input, InputBaseProps, InputProps, JsonViewer, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Radio, RadioGroup, RadioGroupField, RadioGroupFieldProps, RadioGroupProps, RadioProps, SearchAutocomplete, SearchAutocompleteOption, SearchAutocompleteProps, SelectBaseProps, SelectField, SelectFieldProps, SelectFieldRaw, SelectOption, SelectProps, SelectedContent, SplittedInputDiff, TextField, TextFieldProps, TextInput, TextInputProps, Tooltip, TooltipContent, TooltipProps, Provider as TooltipProvider, Root as TooltipRoot, Trigger as TooltipTrigger, TransformerObject, TransformerTrigger, TransformerType, ValidationOptions, ValidatorHandler, ValidatorResult, ValueTransformer, ValueTransformerFn, ValueTransformerProps, ViewMode, WeekStartDayNumber, WithDifference, buttonVariants, useIdAutocomplete, useSearchAutocomplete, withFieldValidation };
39
+ export { Amount, AmountCrypto, AmountCurrency, AmountFiat, AmountInputPropsGeneric, AmountPercentage, AmountValue, Button, ButtonProps, CharacterCounter, CharacterCounterProps, Checkbox, CheckboxBase, CheckboxProps, CheckboxValue, Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandLoading, Content, Currency, CurrencyTicker, CustomizableRadioGroupProps, DateFieldValue, DatePickerView, DiffMode, EnumField, EnumFieldProps, ErrorMessage, FieldErrorHandling, Form, FormDescription, FormDescriptionProps, FormGroup, FormLabel, FormLabelProps, FormMessage, FormMessageList, FormMessageProps, FormMessageType, FormServerErrorMessage, IdAutocomplete, IdAutocompleteInputContainer, IdAutocompleteInputContainerProps, IdAutocompleteList, IdAutocompleteListOption, IdAutocompleteListOptionProps, IdAutocompleteListProps, IdAutocompleteOption, IdAutocompleteProps, Input, InputBaseProps, InputProps, JsonViewer, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Radio, RadioGroup, RadioGroupField, RadioGroupFieldProps, RadioGroupProps, RadioProps, SearchAutocomplete, SearchAutocompleteOption, SearchAutocompleteProps, SearchAutocompleteRowContext, SelectBaseProps, SelectField, SelectFieldProps, SelectFieldRaw, SelectOption, SelectProps, SelectedContent, SplittedInputDiff, TextField, TextFieldProps, TextInput, TextInputProps, Tooltip, TooltipContent, TooltipProps, Provider as TooltipProvider, Root as TooltipRoot, Trigger as TooltipTrigger, TransformerObject, TransformerTrigger, TransformerType, ValidationOptions, ValidatorHandler, ValidatorResult, ValueTransformer, ValueTransformerFn, ValueTransformerProps, ViewMode, WeekStartDayNumber, WithDifference, buttonVariants, useIdAutocomplete, useSearchAutocomplete, withFieldValidation };
@@ -1,4 +1,4 @@
1
- import { t as SearchAutocompleteOption } from "./types-bVze9lWE.js";
1
+ import { t as SearchAutocompleteOption } from "./types-BghCtHb5.js";
2
2
  import * as react from "react";
3
3
 
4
4
  //#region src/ui/components/search-autocomplete/use-search-autocomplete.d.ts
@@ -18,4 +18,4 @@ declare function useSearchAutocomplete(options: UseSearchAutocompleteOptions): {
18
18
  };
19
19
  //#endregion
20
20
  export { useSearchAutocomplete as t };
21
- //# sourceMappingURL=use-search-autocomplete-pbku_c5c.d.ts.map
21
+ //# sourceMappingURL=use-search-autocomplete-DNPhMdWQ.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-search-autocomplete-pbku_c5c.d.ts","names":[],"sources":["../src/ui/components/search-autocomplete/use-search-autocomplete.ts"],"mappings":";;;;UAGU,4BAAA;EACR,YAAA,IAAgB,KAAA,aAAkB,OAAA,CAAQ,wBAAA;EAC1C,UAAA;AAAA;AAAA,iBAGc,qBAAA,CAAsB,OAAA,EAAS,4BAAA;;2BAA4B,KAAA,CAAA,cAAA"}
1
+ {"version":3,"file":"use-search-autocomplete-DNPhMdWQ.d.ts","names":[],"sources":["../src/ui/components/search-autocomplete/use-search-autocomplete.ts"],"mappings":";;;;UAGU,4BAAA;EACR,YAAA,IAAgB,KAAA,aAAkB,OAAA,CAAQ,wBAAA;EAC1C,UAAA;AAAA;AAAA,iBAGc,qBAAA,CAAsB,OAAA,EAAS,4BAAA;;2BAA4B,KAAA,CAAA,cAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@powerhousedao/design-system",
3
- "version": "6.0.0-dev.192",
3
+ "version": "6.0.0-dev.194",
4
4
  "description": "",
5
5
  "files": [
6
6
  "dist",
@@ -96,7 +96,7 @@
96
96
  "tsdown": "0.21.1",
97
97
  "vite": "8.0.8",
98
98
  "vitest": "4.1.1",
99
- "@powerhousedao/config": "6.0.0-dev.192"
99
+ "@powerhousedao/config": "6.0.0-dev.194"
100
100
  },
101
101
  "peerDependencies": {
102
102
  "react": ">=19.0.0",
@@ -131,9 +131,9 @@
131
131
  "tailwind-merge": "3.4.0",
132
132
  "tsx": "4.21.0",
133
133
  "usehooks-ts": "^3.1.1",
134
- "document-model": "6.0.0-dev.192",
135
- "@powerhousedao/reactor-browser": "6.0.0-dev.192",
136
- "@powerhousedao/shared": "6.0.0-dev.192"
134
+ "@powerhousedao/reactor-browser": "6.0.0-dev.194",
135
+ "@powerhousedao/shared": "6.0.0-dev.194",
136
+ "document-model": "6.0.0-dev.194"
137
137
  },
138
138
  "scripts": {
139
139
  "tsc": "tsc",