@cryptlex/web-components 6.7.9 → 6.7.10

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 (233) hide show
  1. package/dist/components/alert.d.ts +2 -2
  2. package/dist/components/alert.js +2 -2
  3. package/dist/components/alert.js.map +1 -1
  4. package/dist/components/autocomplete.js +2 -2
  5. package/dist/components/autocomplete.js.map +1 -1
  6. package/dist/components/avatar.d.ts +1 -1
  7. package/dist/components/avatar.js +2 -2
  8. package/dist/components/avatar.js.map +1 -1
  9. package/dist/components/badge.d.ts +2 -2
  10. package/dist/components/badge.js +2 -2
  11. package/dist/components/badge.js.map +1 -1
  12. package/dist/components/breadcrumbs.d.ts +5 -5
  13. package/dist/components/breadcrumbs.js +2 -2
  14. package/dist/components/breadcrumbs.js.map +1 -1
  15. package/dist/components/button.d.ts +3 -3
  16. package/dist/components/button.js +2 -2
  17. package/dist/components/button.js.map +1 -1
  18. package/dist/components/calendar.d.ts +7 -7
  19. package/dist/components/calendar.js +2 -2
  20. package/dist/components/calendar.js.map +1 -1
  21. package/dist/components/card.d.ts +6 -6
  22. package/dist/components/card.js +2 -2
  23. package/dist/components/card.js.map +1 -1
  24. package/dist/components/charts.d.ts +8 -8
  25. package/dist/components/charts.js +2 -2
  26. package/dist/components/charts.js.map +1 -1
  27. package/dist/components/checkbox.d.ts +2 -2
  28. package/dist/components/checkbox.js +2 -2
  29. package/dist/components/checkbox.js.map +1 -1
  30. package/dist/components/code-block.d.ts +1 -1
  31. package/dist/components/code-block.js +2 -2
  32. package/dist/components/code-block.js.map +1 -1
  33. package/dist/components/copy-button.d.ts +1 -1
  34. package/dist/components/copy-button.js +2 -2
  35. package/dist/components/copy-button.js.map +1 -1
  36. package/dist/components/data-table-filter.d.ts +1 -1
  37. package/dist/components/data-table-filter.js +1 -2
  38. package/dist/components/data-table.d.ts +11 -86
  39. package/dist/components/data-table.js +1 -2
  40. package/dist/components/date-picker.d.ts +3 -3
  41. package/dist/components/date-picker.js +2 -2
  42. package/dist/components/date-picker.js.map +1 -1
  43. package/dist/components/datefield.d.ts +4 -4
  44. package/dist/components/datefield.js +2 -2
  45. package/dist/components/datefield.js.map +1 -1
  46. package/dist/components/dialog.d.ts +8 -8
  47. package/dist/components/dialog.js +2 -2
  48. package/dist/components/dialog.js.map +1 -1
  49. package/dist/components/disclosure.d.ts +4 -4
  50. package/dist/components/disclosure.js +2 -2
  51. package/dist/components/disclosure.js.map +1 -1
  52. package/dist/components/divider.d.ts +2 -2
  53. package/dist/components/divider.js +2 -2
  54. package/dist/components/divider.js.map +1 -1
  55. package/dist/components/duration-field.d.ts +2 -2
  56. package/dist/components/duration-field.js +2 -2
  57. package/dist/components/duration-field.js.map +1 -1
  58. package/dist/components/file-trigger.d.ts +1 -1
  59. package/dist/components/file-trigger.js +2 -2
  60. package/dist/components/file-trigger.js.map +1 -1
  61. package/dist/components/form.d.ts +11 -11
  62. package/dist/components/form.js +2 -2
  63. package/dist/components/form.js.map +1 -1
  64. package/dist/components/icons.js +1 -2
  65. package/dist/components/id-search.d.ts +5 -5
  66. package/dist/components/id-search.js +2 -2
  67. package/dist/components/id-search.js.map +1 -1
  68. package/dist/components/kbd.d.ts +1 -1
  69. package/dist/components/kbd.js +2 -2
  70. package/dist/components/kbd.js.map +1 -1
  71. package/dist/components/list-box.d.ts +3 -3
  72. package/dist/components/list-box.js +2 -2
  73. package/dist/components/list-box.js.map +1 -1
  74. package/dist/components/loader.d.ts +1 -1
  75. package/dist/components/loader.js +2 -2
  76. package/dist/components/loader.js.map +1 -1
  77. package/dist/components/menu.d.ts +7 -7
  78. package/dist/components/menu.js +2 -2
  79. package/dist/components/menu.js.map +1 -1
  80. package/dist/components/multi-select.d.ts +2 -2
  81. package/dist/components/multi-select.js +2 -2
  82. package/dist/components/multi-select.js.map +1 -1
  83. package/dist/components/numberfield.d.ts +5 -5
  84. package/dist/components/numberfield.js +2 -2
  85. package/dist/components/numberfield.js.map +1 -1
  86. package/dist/components/object-table.d.ts +1 -1
  87. package/dist/components/object-table.js +2 -2
  88. package/dist/components/object-table.js.map +1 -1
  89. package/dist/components/offline-request-file-input.d.ts +2 -2
  90. package/dist/components/offline-request-file-input.js +2 -2
  91. package/dist/components/offline-request-file-input.js.map +1 -1
  92. package/dist/components/otpfield.d.ts +1 -1
  93. package/dist/components/otpfield.js +2 -2
  94. package/dist/components/otpfield.js.map +1 -1
  95. package/dist/components/popover.d.ts +2 -2
  96. package/dist/components/popover.js +2 -2
  97. package/dist/components/popover.js.map +1 -1
  98. package/dist/components/progress-bar.d.ts +1 -1
  99. package/dist/components/progress-bar.js +2 -2
  100. package/dist/components/progress-bar.js.map +1 -1
  101. package/dist/components/searchfield.d.ts +1 -1
  102. package/dist/components/searchfield.js +2 -2
  103. package/dist/components/searchfield.js.map +1 -1
  104. package/dist/components/select-options.js +2 -2
  105. package/dist/components/select-options.js.map +1 -1
  106. package/dist/components/select.d.ts +5 -5
  107. package/dist/components/select.js +2 -2
  108. package/dist/components/select.js.map +1 -1
  109. package/dist/components/sidebar.d.ts +20 -20
  110. package/dist/components/sidebar.js +2 -2
  111. package/dist/components/sidebar.js.map +1 -1
  112. package/dist/components/skeleton.d.ts +1 -1
  113. package/dist/components/skeleton.js +2 -2
  114. package/dist/components/skeleton.js.map +1 -1
  115. package/dist/components/steps.d.ts +1 -1
  116. package/dist/components/steps.js +2 -2
  117. package/dist/components/steps.js.map +1 -1
  118. package/dist/components/table-of-contents.d.ts +1 -1
  119. package/dist/components/table-of-contents.js +2 -2
  120. package/dist/components/table-of-contents.js.map +1 -1
  121. package/dist/components/table.d.ts +8 -8
  122. package/dist/components/table.js +2 -2
  123. package/dist/components/table.js.map +1 -1
  124. package/dist/components/tabs.d.ts +4 -4
  125. package/dist/components/tabs.js +2 -2
  126. package/dist/components/tabs.js.map +1 -1
  127. package/dist/components/tag-group.d.ts +2 -2
  128. package/dist/components/tag-group.js +2 -2
  129. package/dist/components/tag-group.js.map +1 -1
  130. package/dist/components/textfield.d.ts +2 -2
  131. package/dist/components/textfield.js +2 -2
  132. package/dist/components/textfield.js.map +1 -1
  133. package/dist/components/timeline.d.ts +6 -6
  134. package/dist/components/timeline.js +2 -2
  135. package/dist/components/timeline.js.map +1 -1
  136. package/dist/components/toast.d.ts +1 -1
  137. package/dist/components/toast.js +2 -2
  138. package/dist/components/toast.js.map +1 -1
  139. package/dist/components/tooltip.d.ts +2 -2
  140. package/dist/components/tooltip.js +2 -2
  141. package/dist/components/tooltip.js.map +1 -1
  142. package/dist/data-table-filter.js +2 -0
  143. package/dist/data-table-filter.js.map +1 -0
  144. package/dist/icons.js +2 -0
  145. package/dist/icons.js.map +1 -0
  146. package/dist/stories/atoms/color.stories.d.ts +11 -0
  147. package/dist/stories/atoms/icons.stories.d.ts +11 -0
  148. package/dist/stories/atoms/type.stories.d.ts +13 -0
  149. package/dist/stories/components/alert.stories.d.ts +11 -0
  150. package/dist/stories/components/avatar.stories.d.ts +6 -0
  151. package/dist/stories/components/badge.stories.d.ts +6 -0
  152. package/dist/stories/components/breadcrumbs.stories.d.ts +5 -0
  153. package/dist/stories/components/button.stories.d.ts +6 -0
  154. package/dist/stories/components/calendar.stories.d.ts +10 -0
  155. package/dist/stories/components/card.stories.d.ts +9 -0
  156. package/dist/stories/components/code-block.stories.d.ts +12 -0
  157. package/dist/stories/components/copy-button.stories.d.ts +6 -0
  158. package/dist/stories/components/date-range-picker.stories.d.ts +23 -0
  159. package/dist/stories/components/datepicker.stories.d.ts +23 -0
  160. package/dist/stories/components/dialog.stories.d.ts +5 -0
  161. package/dist/stories/components/divider.stories.d.ts +13 -0
  162. package/dist/stories/components/file-trigger.stories.d.ts +10 -0
  163. package/dist/stories/components/kbd.stories.d.ts +49 -0
  164. package/dist/stories/components/loader.stories.d.ts +12 -0
  165. package/dist/stories/components/offline-request-file-upload.stories.d.ts +10 -0
  166. package/dist/stories/components/progress-bar.stories.d.ts +15 -0
  167. package/dist/stories/components/sheet.stories.d.ts +15 -0
  168. package/dist/stories/components/skeleton.stories.d.ts +10 -0
  169. package/dist/stories/components/tabs.stories.d.ts +12 -0
  170. package/dist/stories/components/tag-group.stories.d.ts +8 -0
  171. package/dist/stories/components/timeline.stories.d.ts +6 -0
  172. package/dist/stories/components/timepicker.stories.d.ts +23 -0
  173. package/dist/stories/components/toast.stories.d.ts +12 -0
  174. package/dist/stories/components/tooltip.stories.d.ts +9 -0
  175. package/dist/stories/examples/autocomplete.stories.d.ts +11 -0
  176. package/dist/stories/examples/charts.stories.d.ts +11 -0
  177. package/dist/stories/examples/data-table.stories.d.ts +9 -0
  178. package/dist/stories/examples/key-value-card.stories.d.ts +42 -0
  179. package/dist/stories/examples/sidebar.stories.d.ts +32 -0
  180. package/dist/stories/examples/table-of-contents.stories.d.ts +6 -0
  181. package/dist/stories/inputs/form.stories.d.ts +6 -0
  182. package/dist/stories/inputs/id-search.stories.d.ts +8 -0
  183. package/dist/stories/inputs/otp-field.stories.d.ts +6 -0
  184. package/dist/stories/inputs/textfield.stories.d.ts +8 -0
  185. package/dist/stories/story-commons.d.ts +3 -0
  186. package/dist/stories/utilities/resource-formatter.stories.d.ts +7 -0
  187. package/dist/utilities/auth.js +2 -2
  188. package/dist/utilities/auth.js.map +1 -1
  189. package/dist/utilities/countries.d.ts +1 -1
  190. package/dist/utilities/countries.js +2 -2
  191. package/dist/utilities/countries.js.map +1 -1
  192. package/dist/utilities/ctx-client.d.ts +1 -1
  193. package/dist/utilities/ctx-client.js +2 -2
  194. package/dist/utilities/ctx-client.js.map +1 -1
  195. package/dist/utilities/date.js +2 -2
  196. package/dist/utilities/date.js.map +1 -1
  197. package/dist/utilities/duration.js +2 -2
  198. package/dist/utilities/duration.js.map +1 -1
  199. package/dist/utilities/empty-option.js +2 -2
  200. package/dist/utilities/empty-option.js.map +1 -1
  201. package/dist/utilities/errors.js +2 -2
  202. package/dist/utilities/errors.js.map +1 -1
  203. package/dist/utilities/form-context.js +2 -2
  204. package/dist/utilities/form-context.js.map +1 -1
  205. package/dist/utilities/form-hook.js +2 -2
  206. package/dist/utilities/form-hook.js.map +1 -1
  207. package/dist/utilities/form.js +2 -2
  208. package/dist/utilities/form.js.map +1 -1
  209. package/dist/utilities/highlight-code.js +2 -2
  210. package/dist/utilities/highlight-code.js.map +1 -1
  211. package/dist/utilities/normalize-arrays.js +2 -2
  212. package/dist/utilities/normalize-arrays.js.map +1 -1
  213. package/dist/utilities/numbers.js +2 -2
  214. package/dist/utilities/numbers.js.map +1 -1
  215. package/dist/utilities/resources.d.ts +1 -1
  216. package/dist/utilities/resources.js +2 -2
  217. package/dist/utilities/resources.js.map +1 -1
  218. package/dist/utilities/shiki.js +2 -2
  219. package/dist/utilities/shiki.js.map +1 -1
  220. package/dist/utilities/string.js +2 -2
  221. package/dist/utilities/string.js.map +1 -1
  222. package/dist/utilities/theme.js +2 -2
  223. package/dist/utilities/theme.js.map +1 -1
  224. package/dist/utilities/use-code-highlight.js +2 -2
  225. package/dist/utilities/use-code-highlight.js.map +1 -1
  226. package/dist/utilities/use-mobile.js +2 -2
  227. package/dist/utilities/use-mobile.js.map +1 -1
  228. package/dist/utilities/validators.js +2 -2
  229. package/dist/utilities/validators.js.map +1 -1
  230. package/package.json +40 -40
  231. package/dist/components/data-table-filter.js.map +0 -1
  232. package/dist/components/data-table.js.map +0 -1
  233. package/dist/components/icons.js.map +0 -1
@@ -13,12 +13,12 @@ export declare const labelVariants: (props?: import('class-variance-authority/ty
13
13
  * @param props - All other props from AriaLabelProps
14
14
  * @returns A styled label element
15
15
  */
16
- export declare function FormFieldLabel({ className, ...props }: AriaLabelProps): import("react/jsx-runtime").JSX.Element;
16
+ export declare function FormFieldLabel({ className, ...props }: AriaLabelProps): import("react").JSX.Element;
17
17
  /**
18
18
  * A form field description component that provides additional context or help text.
19
19
  * Automatically includes an info icon and uses the "description" slot for accessibility.
20
20
  */
21
- export declare function FormFieldDescription({ className, children, ...props }: AriaTextProps): import("react/jsx-runtime").JSX.Element;
21
+ export declare function FormFieldDescription({ className, children, ...props }: AriaTextProps): import("react").JSX.Element;
22
22
  /**
23
23
  * A form field error component that displays validation error messages.
24
24
  *
@@ -27,7 +27,7 @@ export declare function FormFieldDescription({ className, children, ...props }:
27
27
  * This approach needs further discussion and exploration.
28
28
  *
29
29
  */
30
- export declare function FormFieldError({ className, children, ...props }: React.ComponentPropsWithRef<'label'>): import("react/jsx-runtime").JSX.Element;
30
+ export declare function FormFieldError({ className, children, ...props }: React.ComponentPropsWithRef<'label'>): import("react").JSX.Element;
31
31
  /**
32
32
  * Class variance authority variants for field groups.
33
33
  * Provides styling variants for different types of form field containers.
@@ -45,7 +45,7 @@ export interface GroupProps extends AriaGroupProps, VariantProps<typeof fieldGro
45
45
  * A field group component that wraps form inputs with consistent styling.
46
46
  * Supports different variants for various use cases.
47
47
  */
48
- export declare function FieldGroup({ className, variant, ...props }: GroupProps): import("react/jsx-runtime").JSX.Element;
48
+ export declare function FieldGroup({ className, variant, ...props }: GroupProps): import("react").JSX.Element;
49
49
  /**
50
50
  * Props for the FormField component.
51
51
  * Defines the structure for form field configuration.
@@ -69,27 +69,27 @@ export type FormFieldProps = {
69
69
  */
70
70
  export declare function FormField({ label, description, errorMessage, children, requiredIndicator, htmlFor, }: FormFieldProps & {
71
71
  children: React.ReactNode;
72
- }): import("react/jsx-runtime").JSX.Element;
72
+ }): import("react").JSX.Element;
73
73
  /**
74
74
  * A button component designed to be used within form fields.
75
75
  * Styled to fit nicely alongside form inputs with ghost styling.
76
76
  */
77
- export declare function FormFieldButton({ className, ...props }: AriaButtonProps): import("react/jsx-runtime").JSX.Element;
77
+ export declare function FormFieldButton({ className, ...props }: AriaButtonProps): import("react").JSX.Element;
78
78
  /**
79
79
  * A form component that prevents default form submission and handles submit events.
80
80
  * All forms in this application are controlled components, not pure HTML forms.
81
81
  */
82
- export declare function Form({ className, onSubmit, ...props }: React.ComponentProps<'form'>): import("react/jsx-runtime").JSX.Element;
82
+ export declare function Form({ className, onSubmit, ...props }: React.ComponentProps<'form'>): import("react").JSX.Element;
83
83
  /**
84
84
  * A section component for organizing form content into logical groups.
85
85
  * Provides consistent spacing and visual separation between form sections.
86
86
  */
87
- export declare function FormSection({ className, ...props }: React.ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
87
+ export declare function FormSection({ className, ...props }: React.ComponentProps<'div'>): import("react").JSX.Element;
88
88
  /**
89
89
  * A title component for form sections.
90
90
  */
91
- export declare function FormSectionTitle({ className, ...props }: React.ComponentProps<'h2'>): import("react/jsx-runtime").JSX.Element;
92
- export declare function FormActionFooter({ className, ...props }: React.ComponentProps<'nav'>): import("react/jsx-runtime").JSX.Element;
91
+ export declare function FormSectionTitle({ className, ...props }: React.ComponentProps<'h2'>): import("react").JSX.Element;
92
+ export declare function FormActionFooter({ className, ...props }: React.ComponentProps<'nav'>): import("react").JSX.Element;
93
93
  export declare function FormLayout({ className, preview, ...props }: React.ComponentProps<'div'> & {
94
94
  preview?: React.ReactNode;
95
- }): import("react/jsx-runtime").JSX.Element;
95
+ }): import("react").JSX.Element;
@@ -1,2 +1,2 @@
1
- "use client";import{jsxs as a,Fragment as d,jsx as r}from"react/jsx-runtime";import{cva as l}from"class-variance-authority";import{Group as u,composeRenderProps as c,Label as f,Text as p,Button as g}from"react-aria-components";import{classNames as n}from"../utilities/theme.js";import{Card as b,CardHeader as x,CardTitle as h}from"./card.js";import{IcInfo as v,IcError as F}from"./icons.js";import"clsx";import"@icons-pack/react-simple-icons";import"react";const N=l(["select-none body-sm font-medium leading-none","disabled-muted","group-data-[invalid]:text-destructive"]);function y({className:t,...e}){return r(f,{className:n(N(),t),...e})}function k({className:t,children:e,...i}){return a(p,{className:n("body-sm text-muted leading-tight",t),...i,slot:"description",children:[e,r(v,{className:"inline size-2 align-text-top ms-0.5"})]})}function w({className:t,children:e,...i}){return a("label",{role:"alert",className:n("body-sm leading-tight text-destructive duration-150 animate-in transition-transform slide-in-from-top-5 fade-in",t),...i,children:[e,r(F,{className:"inline size-2 align-text-top ms-0.5"})]})}const j=l("",{variants:{variant:{default:["relative flex w-full items-center overflow-hidden border border-input bg-surface-primary input-dim ring-offset-surface-secondary placeholder:text-muted-foreground","focus-ring focus-visible:border-stroke-active","disabled-muted"],ghost:""}},defaultVariants:{variant:"default"}});function B({className:t,variant:e,...i}){return r(u,{className:c(t,o=>n(j({variant:e}),o)),...i})}function D({label:t,description:e,errorMessage:i,children:o,requiredIndicator:m,htmlFor:s}){return a(d,{children:[t&&a(y,{htmlFor:s,children:[t,m&&r("sup",{className:"text-destructive",children:"*"})]}),o,e&&r(k,{children:e}),i&&r(w,{htmlFor:s,children:i})]})}function A({className:t,...e}){return r(g,{className:c(t,i=>n("btn btn-ghost h-input px-2 -me-2",i)),...e})}function H({className:t,onSubmit:e,...i}){return r("form",{className:n(t),onSubmit:o=>{o.preventDefault(),document?.activeElement?.blur(),e?.(o)},...i})}function P({className:t,...e}){return r(b,{className:n("gap-input bg-surface-tertiary",t),...e})}function R({className:t,...e}){return r(x,{children:r(h,{className:n(t,"!body-base text-muted"),...e})})}function q({className:t,...e}){return r("nav",{className:n("flex items-center justify-end bg-surface-tertiary sticky bottom-0 z-50 py-icon px-icon border-t",t),...e})}function J({className:t,preview:e,...i}){return a("div",{className:"flex flex-col gap-icon lg:flex-row lg:items-start",children:[r("div",{className:n("grid grid-cols-1 gap-input mt-icon my-header w-full max-w-3xl",t),...i}),e&&r("div",{className:"lg:sticky lg:top-header lg:shrink-0",children:e})]})}export{B as FieldGroup,H as Form,q as FormActionFooter,D as FormField,A as FormFieldButton,k as FormFieldDescription,w as FormFieldError,y as FormFieldLabel,J as FormLayout,P as FormSection,R as FormSectionTitle,j as fieldGroupVariants,N as labelVariants};
2
- //# sourceMappingURL=form.js.map
1
+ "use client";import{classNames as e}from"../utilities/theme.js";import{D as t,H as n}from"../icons.js";import{Card as r,CardHeader as i,CardTitle as a}from"./card.js";import{Fragment as o,jsx as s,jsxs as c}from"react/jsx-runtime";import{cva as l}from"class-variance-authority";import{Button as u,Group as d,Label as f,Text as p,composeRenderProps as m}from"react-aria-components";var h=l([`select-none body-sm font-medium leading-none`,`disabled-muted`,`group-data-[invalid]:text-destructive`]);function g({className:t,...n}){return s(f,{className:e(h(),t),...n})}function _({className:t,children:r,...i}){return c(p,{className:e(`body-sm text-muted leading-tight`,t),...i,slot:`description`,children:[r,s(n,{className:`inline size-2 align-text-top ms-0.5`})]})}function v({className:n,children:r,...i}){return c(`label`,{role:`alert`,className:e(`body-sm leading-tight text-destructive duration-150 animate-in transition-transform slide-in-from-top-5 fade-in`,n),...i,children:[r,s(t,{className:`inline size-2 align-text-top ms-0.5`})]})}var y=l(``,{variants:{variant:{default:[`relative flex w-full items-center overflow-hidden border border-input bg-surface-primary input-dim ring-offset-surface-secondary placeholder:text-muted-foreground`,`focus-ring focus-visible:border-stroke-active`,`disabled-muted`],ghost:``}},defaultVariants:{variant:`default`}});function b({className:t,variant:n,...r}){return s(d,{className:m(t,t=>e(y({variant:n}),t)),...r})}function x({label:e,description:t,errorMessage:n,children:r,requiredIndicator:i,htmlFor:a}){return c(o,{children:[e&&c(g,{htmlFor:a,children:[e,i&&s(`sup`,{className:`text-destructive`,children:`*`})]}),r,t&&s(_,{children:t}),n&&s(v,{htmlFor:a,children:n})]})}function S({className:t,...n}){return s(u,{className:m(t,t=>e(`btn btn-ghost h-input px-2 -me-2`,t)),...n})}function C({className:t,onSubmit:n,...r}){return s(`form`,{className:e(t),onSubmit:e=>{e.preventDefault(),(document?.activeElement)?.blur(),n?.(e)},...r})}function w({className:t,...n}){return s(r,{className:e(`gap-input bg-surface-tertiary`,t),...n})}function T({className:t,...n}){return s(i,{children:s(a,{className:e(t,`!body-base text-muted`),...n})})}function E({className:t,...n}){return s(`nav`,{className:e(`flex items-center justify-end bg-surface-tertiary sticky bottom-0 z-50 py-icon px-icon border-t`,t),...n})}function D({className:t,preview:n,...r}){return c(`div`,{className:`flex flex-col gap-icon lg:flex-row lg:items-start`,children:[s(`div`,{className:e(`grid grid-cols-1 gap-input mt-icon my-header w-full max-w-3xl`,t),...r}),n&&s(`div`,{className:`lg:sticky lg:top-header lg:shrink-0`,children:n})]})}export{b as FieldGroup,C as Form,E as FormActionFooter,x as FormField,S as FormFieldButton,_ as FormFieldDescription,v as FormFieldError,g as FormFieldLabel,D as FormLayout,w as FormSection,T as FormSectionTitle,y as fieldGroupVariants,h as labelVariants};
2
+ //# sourceMappingURL=form.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"form.js","sources":["../../lib/components/form.tsx"],"sourcesContent":["'use client';\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport {\n Button as AriaButton,\n ButtonProps as AriaButtonProps,\n Group as AriaGroup,\n GroupProps as AriaGroupProps,\n Label as AriaLabel,\n LabelProps as AriaLabelProps,\n Text as AriaText,\n TextProps as AriaTextProps,\n composeRenderProps,\n} from 'react-aria-components';\n\nimport { classNames } from '../utilities/theme';\nimport { Card, CardHeader, CardTitle } from './card';\nimport { IcError, IcInfo } from './icons';\n\n/**\n * Class variance authority variants for form field labels.\n * Provides styling for different states including disabled and invalid.\n */\nexport const labelVariants = cva([\n 'select-none body-sm font-medium leading-none',\n /* Disabled */\n 'disabled-muted',\n /* Invalid */\n 'group-data-[invalid]:text-destructive',\n]);\n\n/**\n * A form field label component that extends React Aria's Label component.\n * Applies consistent styling for form labels including disabled and invalid states.\n *\n * @param className - Optional additional CSS classes to apply\n * @param props - All other props from AriaLabelProps\n * @returns A styled label element\n */\nexport function FormFieldLabel({ className, ...props }: AriaLabelProps) {\n return <AriaLabel className={classNames(labelVariants(), className)} {...props} />;\n}\n\n/**\n * A form field description component that provides additional context or help text.\n * Automatically includes an info icon and uses the \"description\" slot for accessibility.\n */\nexport function FormFieldDescription({ className, children, ...props }: AriaTextProps) {\n return (\n <AriaText className={classNames('body-sm text-muted leading-tight', className)} {...props} slot=\"description\">\n {children}\n <IcInfo className=\"inline size-2 align-text-top ms-0.5\" />\n </AriaText>\n );\n}\n/**\n * A form field error component that displays validation error messages.\n *\n * @remarks\n * Currently uses a div instead of AriaFieldError to avoid overlap with Tanstack Form.\n * This approach needs further discussion and exploration.\n *\n */\nexport function FormFieldError({ className, children, ...props }: React.ComponentPropsWithRef<'label'>) {\n return (\n <label\n role=\"alert\"\n className={classNames(\n 'body-sm leading-tight text-destructive duration-150 animate-in transition-transform slide-in-from-top-5 fade-in',\n className\n )}\n {...props}\n >\n {children}\n <IcError className=\"inline size-2 align-text-top ms-0.5\" />\n </label>\n );\n}\n\n/**\n * Class variance authority variants for field groups.\n * Provides styling variants for different types of form field containers.\n */\nexport const fieldGroupVariants = cva('', {\n variants: {\n variant: {\n default: [\n 'relative flex w-full items-center overflow-hidden border border-input bg-surface-primary input-dim ring-offset-surface-secondary placeholder:text-muted-foreground',\n /* Focus Within */\n 'focus-ring focus-visible:border-stroke-active',\n /* Disabled */\n 'disabled-muted',\n ],\n ghost: '',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\n/**\n * Props interface for FieldGroup component.\n * Extends AriaGroupProps with variant styling options.\n */\nexport interface GroupProps extends AriaGroupProps, VariantProps<typeof fieldGroupVariants> {}\n\n/**\n * A field group component that wraps form inputs with consistent styling.\n * Supports different variants for various use cases.\n */\nexport function FieldGroup({ className, variant, ...props }: GroupProps) {\n return (\n <AriaGroup\n className={composeRenderProps(className, className =>\n classNames(fieldGroupVariants({ variant }), className)\n )}\n {...props}\n />\n );\n}\n\n/**\n * Props for the FormField component.\n * Defines the structure for form field configuration.\n */\nexport type FormFieldProps = {\n /** Optional label text for the form field */\n label?: React.ReactNode;\n /** Optional description or help text */\n description?: React.ReactNode;\n /** Optional error message to display */\n errorMessage?: string;\n /** Show required indicator on field label */\n requiredIndicator?: boolean;\n /** Not defining the htmlFor on labels will lead to accessibilty warnings */\n htmlFor?: string;\n};\n\n/**\n * A wrapper component for form fields that provides consistent layout and styling.\n * Automatically renders label, children, description, and error message in the correct order.\n * @returns A complete form field with all associated elements\n */\nexport function FormField({\n label,\n description,\n errorMessage,\n children,\n requiredIndicator,\n htmlFor,\n}: FormFieldProps & {\n children: React.ReactNode;\n}) {\n return (\n <>\n {label && (\n <FormFieldLabel htmlFor={htmlFor}>\n {label}\n {requiredIndicator && <sup className=\"text-destructive\">*</sup>}\n </FormFieldLabel>\n )}\n {children}\n {description && <FormFieldDescription>{description}</FormFieldDescription>}\n {errorMessage && <FormFieldError htmlFor={htmlFor}>{errorMessage}</FormFieldError>}\n </>\n );\n}\n\n/**\n * A button component designed to be used within form fields.\n * Styled to fit nicely alongside form inputs with ghost styling.\n */\nexport function FormFieldButton({ className, ...props }: AriaButtonProps) {\n return (\n <AriaButton\n className={composeRenderProps(className, className =>\n classNames('btn btn-ghost h-input px-2 -me-2', className)\n )}\n {...props}\n />\n );\n}\n\n/**\n * A form component that prevents default form submission and handles submit events.\n * All forms in this application are controlled components, not pure HTML forms.\n */\nexport function Form({ className, onSubmit, ...props }: React.ComponentProps<'form'>) {\n return (\n <form\n className={classNames(className)}\n onSubmit={e => {\n // None of the forms in our applications are pure HTML forms.\n e.preventDefault();\n\n // Blur the active input field.\n (document?.activeElement as HTMLElement)?.blur();\n\n // If onSubmit is provided, call it.\n onSubmit?.(e);\n }}\n {...props}\n />\n );\n}\n\n/**\n * A section component for organizing form content into logical groups.\n * Provides consistent spacing and visual separation between form sections.\n */\nexport function FormSection({ className, ...props }: React.ComponentProps<'div'>) {\n return <Card className={classNames('gap-input bg-surface-tertiary', className)} {...props} />;\n}\n\n/**\n * A title component for form sections.\n */\nexport function FormSectionTitle({ className, ...props }: React.ComponentProps<'h2'>) {\n return (\n <CardHeader>\n <CardTitle className={classNames(className, '!body-base text-muted')} {...props} />\n </CardHeader>\n );\n}\n\nexport function FormActionFooter({ className, ...props }: React.ComponentProps<'nav'>) {\n return (\n <nav\n className={classNames(\n 'flex items-center justify-end bg-surface-tertiary sticky bottom-0 z-50 py-icon px-icon border-t',\n className\n )}\n {...props}\n />\n );\n}\n\nexport function FormLayout({\n className,\n preview,\n ...props\n}: React.ComponentProps<'div'> & { preview?: React.ReactNode }) {\n return (\n <div className=\"flex flex-col gap-icon lg:flex-row lg:items-start\">\n <div\n className={classNames('grid grid-cols-1 gap-input mt-icon my-header w-full max-w-3xl', className)}\n {...props}\n />\n {preview && <div className=\"lg:sticky lg:top-header lg:shrink-0\">{preview}</div>}\n </div>\n );\n}\n"],"names":["labelVariants","cva","FormFieldLabel","className","props","jsx","AriaLabel","classNames","FormFieldDescription","children","jsxs","AriaText","IcInfo","FormFieldError","IcError","fieldGroupVariants","FieldGroup","variant","AriaGroup","composeRenderProps","FormField","label","description","errorMessage","requiredIndicator","htmlFor","Fragment","FormFieldButton","AriaButton","Form","onSubmit","e","FormSection","Card","FormSectionTitle","CardHeader","CardTitle","FormActionFooter","FormLayout","preview"],"mappings":"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"}
1
+ {"version":3,"file":"form.js","names":[],"sources":["../../lib/components/form.tsx"],"sourcesContent":["'use client';\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport {\n Button as AriaButton,\n ButtonProps as AriaButtonProps,\n Group as AriaGroup,\n GroupProps as AriaGroupProps,\n Label as AriaLabel,\n LabelProps as AriaLabelProps,\n Text as AriaText,\n TextProps as AriaTextProps,\n composeRenderProps,\n} from 'react-aria-components';\n\nimport { classNames } from '../utilities/theme';\nimport { Card, CardHeader, CardTitle } from './card';\nimport { IcError, IcInfo } from './icons';\n\n/**\n * Class variance authority variants for form field labels.\n * Provides styling for different states including disabled and invalid.\n */\nexport const labelVariants = cva([\n 'select-none body-sm font-medium leading-none',\n /* Disabled */\n 'disabled-muted',\n /* Invalid */\n 'group-data-[invalid]:text-destructive',\n]);\n\n/**\n * A form field label component that extends React Aria's Label component.\n * Applies consistent styling for form labels including disabled and invalid states.\n *\n * @param className - Optional additional CSS classes to apply\n * @param props - All other props from AriaLabelProps\n * @returns A styled label element\n */\nexport function FormFieldLabel({ className, ...props }: AriaLabelProps) {\n return <AriaLabel className={classNames(labelVariants(), className)} {...props} />;\n}\n\n/**\n * A form field description component that provides additional context or help text.\n * Automatically includes an info icon and uses the \"description\" slot for accessibility.\n */\nexport function FormFieldDescription({ className, children, ...props }: AriaTextProps) {\n return (\n <AriaText className={classNames('body-sm text-muted leading-tight', className)} {...props} slot=\"description\">\n {children}\n <IcInfo className=\"inline size-2 align-text-top ms-0.5\" />\n </AriaText>\n );\n}\n/**\n * A form field error component that displays validation error messages.\n *\n * @remarks\n * Currently uses a div instead of AriaFieldError to avoid overlap with Tanstack Form.\n * This approach needs further discussion and exploration.\n *\n */\nexport function FormFieldError({ className, children, ...props }: React.ComponentPropsWithRef<'label'>) {\n return (\n <label\n role=\"alert\"\n className={classNames(\n 'body-sm leading-tight text-destructive duration-150 animate-in transition-transform slide-in-from-top-5 fade-in',\n className\n )}\n {...props}\n >\n {children}\n <IcError className=\"inline size-2 align-text-top ms-0.5\" />\n </label>\n );\n}\n\n/**\n * Class variance authority variants for field groups.\n * Provides styling variants for different types of form field containers.\n */\nexport const fieldGroupVariants = cva('', {\n variants: {\n variant: {\n default: [\n 'relative flex w-full items-center overflow-hidden border border-input bg-surface-primary input-dim ring-offset-surface-secondary placeholder:text-muted-foreground',\n /* Focus Within */\n 'focus-ring focus-visible:border-stroke-active',\n /* Disabled */\n 'disabled-muted',\n ],\n ghost: '',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\n/**\n * Props interface for FieldGroup component.\n * Extends AriaGroupProps with variant styling options.\n */\nexport interface GroupProps extends AriaGroupProps, VariantProps<typeof fieldGroupVariants> {}\n\n/**\n * A field group component that wraps form inputs with consistent styling.\n * Supports different variants for various use cases.\n */\nexport function FieldGroup({ className, variant, ...props }: GroupProps) {\n return (\n <AriaGroup\n className={composeRenderProps(className, className =>\n classNames(fieldGroupVariants({ variant }), className)\n )}\n {...props}\n />\n );\n}\n\n/**\n * Props for the FormField component.\n * Defines the structure for form field configuration.\n */\nexport type FormFieldProps = {\n /** Optional label text for the form field */\n label?: React.ReactNode;\n /** Optional description or help text */\n description?: React.ReactNode;\n /** Optional error message to display */\n errorMessage?: string;\n /** Show required indicator on field label */\n requiredIndicator?: boolean;\n /** Not defining the htmlFor on labels will lead to accessibilty warnings */\n htmlFor?: string;\n};\n\n/**\n * A wrapper component for form fields that provides consistent layout and styling.\n * Automatically renders label, children, description, and error message in the correct order.\n * @returns A complete form field with all associated elements\n */\nexport function FormField({\n label,\n description,\n errorMessage,\n children,\n requiredIndicator,\n htmlFor,\n}: FormFieldProps & {\n children: React.ReactNode;\n}) {\n return (\n <>\n {label && (\n <FormFieldLabel htmlFor={htmlFor}>\n {label}\n {requiredIndicator && <sup className=\"text-destructive\">*</sup>}\n </FormFieldLabel>\n )}\n {children}\n {description && <FormFieldDescription>{description}</FormFieldDescription>}\n {errorMessage && <FormFieldError htmlFor={htmlFor}>{errorMessage}</FormFieldError>}\n </>\n );\n}\n\n/**\n * A button component designed to be used within form fields.\n * Styled to fit nicely alongside form inputs with ghost styling.\n */\nexport function FormFieldButton({ className, ...props }: AriaButtonProps) {\n return (\n <AriaButton\n className={composeRenderProps(className, className =>\n classNames('btn btn-ghost h-input px-2 -me-2', className)\n )}\n {...props}\n />\n );\n}\n\n/**\n * A form component that prevents default form submission and handles submit events.\n * All forms in this application are controlled components, not pure HTML forms.\n */\nexport function Form({ className, onSubmit, ...props }: React.ComponentProps<'form'>) {\n return (\n <form\n className={classNames(className)}\n onSubmit={e => {\n // None of the forms in our applications are pure HTML forms.\n e.preventDefault();\n\n // Blur the active input field.\n (document?.activeElement as HTMLElement)?.blur();\n\n // If onSubmit is provided, call it.\n onSubmit?.(e);\n }}\n {...props}\n />\n );\n}\n\n/**\n * A section component for organizing form content into logical groups.\n * Provides consistent spacing and visual separation between form sections.\n */\nexport function FormSection({ className, ...props }: React.ComponentProps<'div'>) {\n return <Card className={classNames('gap-input bg-surface-tertiary', className)} {...props} />;\n}\n\n/**\n * A title component for form sections.\n */\nexport function FormSectionTitle({ className, ...props }: React.ComponentProps<'h2'>) {\n return (\n <CardHeader>\n <CardTitle className={classNames(className, '!body-base text-muted')} {...props} />\n </CardHeader>\n );\n}\n\nexport function FormActionFooter({ className, ...props }: React.ComponentProps<'nav'>) {\n return (\n <nav\n className={classNames(\n 'flex items-center justify-end bg-surface-tertiary sticky bottom-0 z-50 py-icon px-icon border-t',\n className\n )}\n {...props}\n />\n );\n}\n\nexport function FormLayout({\n className,\n preview,\n ...props\n}: React.ComponentProps<'div'> & { preview?: React.ReactNode }) {\n return (\n <div className=\"flex flex-col gap-icon lg:flex-row lg:items-start\">\n <div\n className={classNames('grid grid-cols-1 gap-input mt-icon my-header w-full max-w-3xl', className)}\n {...props}\n />\n {preview && <div className=\"lg:sticky lg:top-header lg:shrink-0\">{preview}</div>}\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1 @@
1
- import{jsxs as x,jsx as i}from"react/jsx-runtime";import{SiAndroid as m,SiApple as w,SiIos as g,SiLinux as u,SiMacos as I}from"@icons-pack/react-simple-icons";import{forwardRef as s,createElement as d}from"react";const f=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),N=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(c,o,n)=>n?n.toUpperCase():o.toLowerCase()),k=t=>{const c=N(t);return c.charAt(0).toUpperCase()+c.slice(1)},r=(...t)=>t.filter((c,o,n)=>!!c&&c.trim()!==""&&n.indexOf(c)===o).join(" ").trim(),$=t=>{for(const c in t)if(c.startsWith("aria-")||c==="role"||c==="title")return!0};var b={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const j=s(({color:t="currentColor",size:c=24,strokeWidth:o=2,absoluteStrokeWidth:n,className:h="",children:a,iconNode:l,...y},M)=>d("svg",{ref:M,...b,width:c,height:c,stroke:t,strokeWidth:n?Number(o)*24/Number(c):o,className:r("lucide",h),...!a&&!$(y)&&{"aria-hidden":"true"},...y},[...l.map(([_,v])=>d(_,v)),...Array.isArray(a)?a:[a]]));const e=(t,c)=>{const o=s(({className:n,...h},a)=>d(j,{ref:a,iconNode:c,className:r(`lucide-${f(k(t))}`,`lucide-${t}`,n),...h}));return o.displayName=k(t),o};const q=[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]],C=e("activity",q);const z=[["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}],["path",{d:"M6 8h.01",key:"x9i8wu"}],["path",{d:"M10 8h.01",key:"1r9ogq"}],["path",{d:"M14 8h.01",key:"1primd"}]],A=e("app-window-mac",z);const H=[["path",{d:"m3 16 4 4 4-4",key:"1co6wj"}],["path",{d:"M7 20V4",key:"1yoxec"}],["path",{d:"M11 4h4",key:"6d7r33"}],["path",{d:"M11 8h7",key:"djye34"}],["path",{d:"M11 12h10",key:"1438ji"}]],L=e("arrow-down-narrow-wide",H);const V=[["path",{d:"M12 17V3",key:"1cwfxf"}],["path",{d:"m6 11 6 6 6-6",key:"12ii2o"}],["path",{d:"M19 21H5",key:"150jfl"}]],S=e("arrow-down-to-line",V);const D=[["path",{d:"m3 16 4 4 4-4",key:"1co6wj"}],["path",{d:"M7 20V4",key:"1yoxec"}],["path",{d:"M11 4h10",key:"1w87gc"}],["path",{d:"M11 8h7",key:"djye34"}],["path",{d:"M11 12h4",key:"q8tih4"}]],F=e("arrow-down-wide-narrow",D);const P=[["path",{d:"m21 16-4 4-4-4",key:"f6ql7i"}],["path",{d:"M17 20V4",key:"1ejh1v"}],["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}]],R=e("arrow-up-down",P);const E=[["path",{d:"M12 17h1.5",key:"1gkc67"}],["path",{d:"M12 22h1.5",key:"1my7sn"}],["path",{d:"M12 2h1.5",key:"19tvb7"}],["path",{d:"M17.5 22H19a1 1 0 0 0 1-1",key:"10akbh"}],["path",{d:"M17.5 2H19a1 1 0 0 1 1 1v1.5",key:"1vrfjs"}],["path",{d:"M20 14v3h-2.5",key:"1naeju"}],["path",{d:"M20 8.5V10",key:"1ctpfu"}],["path",{d:"M4 10V8.5",key:"1o3zg5"}],["path",{d:"M4 19.5V14",key:"ob81pf"}],["path",{d:"M4 4.5A2.5 2.5 0 0 1 6.5 2H8",key:"s8vcyb"}],["path",{d:"M8 22H6.5a1 1 0 0 1 0-5H8",key:"1cu73q"}]],Z=e("book-dashed",E);const U=[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20",key:"k3hazp"}]],B=e("book",U);const O=[["path",{d:"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z",key:"lc1i9w"}],["path",{d:"m7 16.5-4.74-2.85",key:"1o9zyk"}],["path",{d:"m7 16.5 5-3",key:"va8pkn"}],["path",{d:"M7 16.5v5.17",key:"jnp8gn"}],["path",{d:"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z",key:"8zsnat"}],["path",{d:"m17 16.5-5-3",key:"8arw3v"}],["path",{d:"m17 16.5 4.74-2.85",key:"8rfmw"}],["path",{d:"M17 16.5v5.17",key:"k6z78m"}],["path",{d:"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z",key:"1xygjf"}],["path",{d:"M12 8 7.26 5.15",key:"1vbdud"}],["path",{d:"m12 8 4.74-2.85",key:"3rx089"}],["path",{d:"M12 13.5V8",key:"1io7kd"}]],T=e("boxes",O);const W=[["path",{d:"M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1",key:"ezmyqa"}],["path",{d:"M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1",key:"e1hn23"}]],G=e("braces",W);const K=[["path",{d:"M12 9v1.258",key:"iwpddn"}],["path",{d:"M16 3v5.46",key:"d7ew98"}],["path",{d:"M21 9.118V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h5.75",key:"137t5x"}],["path",{d:"M22 17.5c0 2.499-1.75 3.749-3.83 4.474a.5.5 0 0 1-.335-.005c-2.085-.72-3.835-1.97-3.835-4.47V14a.5.5 0 0 1 .5-.499c1 0 2.25-.6 3.12-1.36a.6.6 0 0 1 .76-.001c.875.765 2.12 1.36 3.12 1.36a.5.5 0 0 1 .5.5z",key:"16j3tf"}],["path",{d:"M3 15h7",key:"1qldh6"}],["path",{d:"M3 9h12.142",key:"1yjd6m"}],["path",{d:"M8 15v6",key:"1stoo3"}],["path",{d:"M8 3v6",key:"vlvjmk"}]],X=e("brick-wall-shield",K);const J=[["path",{d:"M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z",key:"1b4qmf"}],["path",{d:"M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2",key:"i71pzd"}],["path",{d:"M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2",key:"10jefs"}],["path",{d:"M10 6h4",key:"1itunk"}],["path",{d:"M10 10h4",key:"tcdvrf"}],["path",{d:"M10 14h4",key:"kelpxr"}],["path",{d:"M10 18h4",key:"1ulq68"}]],Q=e("building-2",J);const Y=[["path",{d:"M12 10h.01",key:"1nrarc"}],["path",{d:"M12 14h.01",key:"1etili"}],["path",{d:"M12 6h.01",key:"1vi96p"}],["path",{d:"M16 10h.01",key:"1m94wz"}],["path",{d:"M16 14h.01",key:"1gbofw"}],["path",{d:"M16 6h.01",key:"1x0f13"}],["path",{d:"M8 10h.01",key:"19clt8"}],["path",{d:"M8 14h.01",key:"6423bh"}],["path",{d:"M8 6h.01",key:"1dz90k"}],["path",{d:"M9 22v-3a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v3",key:"cabbwy"}],["rect",{x:"4",y:"2",width:"16",height:"20",rx:"2",key:"1uxh74"}]],e1=e("building",Y);const c1=[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]],t1=e("calendar",c1);const o1=[["path",{d:"M12 16v5",key:"zza2cw"}],["path",{d:"M16 14v7",key:"1g90b9"}],["path",{d:"M20 10v11",key:"1iqoj0"}],["path",{d:"m22 3-8.646 8.646a.5.5 0 0 1-.708 0L9.354 8.354a.5.5 0 0 0-.707 0L2 15",key:"1fw8x9"}],["path",{d:"M4 18v3",key:"1yp0dc"}],["path",{d:"M8 14v7",key:"n3cwzv"}]],n1=e("chart-no-axes-combined",o1);const a1=[["path",{d:"M18 6 7 17l-5-5",key:"116fxf"}],["path",{d:"m22 10-7.5 7.5L13 16",key:"ke71qq"}]],h1=e("check-check",a1);const d1=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],s1=e("check",d1);const y1=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],i1=e("chevron-down",y1);const k1=[["path",{d:"m17 18-6-6 6-6",key:"1yerx2"}],["path",{d:"M7 6v12",key:"1p53r6"}]],r1=e("chevron-first",k1);const p1=[["path",{d:"m7 18 6-6-6-6",key:"lwmzdw"}],["path",{d:"M17 6v12",key:"1o0aio"}]],l1=e("chevron-last",p1);const M1=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],_1=e("chevron-left",M1);const v1=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],x1=e("chevron-right",v1);const m1=[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]],w1=e("chevron-up",m1);const g1=[["path",{d:"M12 12h.01",key:"1mp3jc"}],["path",{d:"M16 12h.01",key:"1l6xoz"}],["path",{d:"m17 7 5 5-5 5",key:"1xlxn0"}],["path",{d:"m7 7-5 5 5 5",key:"19njba"}],["path",{d:"M8 12h.01",key:"czm47f"}]],u1=e("chevrons-left-right-ellipsis",g1);const I1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M8 12h8",key:"1wcyev"}],["path",{d:"M12 8v8",key:"napkw2"}]],f1=e("circle-plus",I1);const N1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}],["path",{d:"M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662",key:"154egf"}]],$1=e("circle-user",N1);const b1=[["path",{d:"M12 13v8l-4-4",key:"1f5nwf"}],["path",{d:"m12 21 4-4",key:"1lfcce"}],["path",{d:"M4.393 15.269A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.436 8.284",key:"ui1hmy"}]],j1=e("cloud-download",b1);const q1=[["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M5.782 5.782A7 7 0 0 0 9 19h8.5a4.5 4.5 0 0 0 1.307-.193",key:"yfwify"}],["path",{d:"M21.532 16.5A4.5 4.5 0 0 0 17.5 10h-1.79A7.008 7.008 0 0 0 10 5.07",key:"jlfiyv"}]],C1=e("cloud-off",q1);const z1=[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]],A1=e("code-xml",z1);const H1=[["circle",{cx:"8",cy:"8",r:"6",key:"3yglwk"}],["path",{d:"M18.09 10.37A6 6 0 1 1 10.34 18",key:"t5s6rm"}],["path",{d:"M7 6h1v4",key:"1obek4"}],["path",{d:"m16.71 13.88.7.71-2.82 2.82",key:"1rbuyh"}]],L1=e("coins",H1);const V1=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"M15 3v18",key:"14nvp0"}]],S1=e("columns-3",V1);const D1=[["rect",{x:"2",y:"6",width:"20",height:"8",rx:"1",key:"1estib"}],["path",{d:"M17 14v7",key:"7m2elx"}],["path",{d:"M7 14v7",key:"1cm7wv"}],["path",{d:"M17 3v3",key:"1v4jwn"}],["path",{d:"M7 3v3",key:"7o6guu"}],["path",{d:"M10 14 2.3 6.3",key:"1023jk"}],["path",{d:"m14 6 7.7 7.7",key:"1s8pl2"}],["path",{d:"m8 6 8 8",key:"hl96qh"}]],F1=e("construction",D1);const P1=[["path",{d:"M22 7.7c0-.6-.4-1.2-.8-1.5l-6.3-3.9a1.72 1.72 0 0 0-1.7 0l-10.3 6c-.5.2-.9.8-.9 1.4v6.6c0 .5.4 1.2.8 1.5l6.3 3.9a1.72 1.72 0 0 0 1.7 0l10.3-6c.5-.3.9-1 .9-1.5Z",key:"1t2lqe"}],["path",{d:"M10 21.9V14L2.1 9.1",key:"o7czzq"}],["path",{d:"m10 14 11.9-6.9",key:"zm5e20"}],["path",{d:"M14 19.8v-8.1",key:"159ecu"}],["path",{d:"M18 17.5V9.4",key:"11uown"}]],R1=e("container",P1);const E1=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],Z1=e("copy",E1);const U1=[["circle",{cx:"12",cy:"12",r:"8",key:"46899m"}],["line",{x1:"3",x2:"6",y1:"3",y2:"6",key:"1jkytn"}],["line",{x1:"21",x2:"18",y1:"3",y2:"6",key:"14zfjt"}],["line",{x1:"3",x2:"6",y1:"21",y2:"18",key:"iusuec"}],["line",{x1:"21",x2:"18",y1:"21",y2:"18",key:"yj2dd7"}]],B1=e("currency",U1);const O1=[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]],T1=e("database",O1);const W1=[["circle",{cx:"12.1",cy:"12.1",r:"1",key:"18d7e5"}]],G1=e("dot",W1);const K1=[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"12",cy:"5",r:"1",key:"gxeob9"}],["circle",{cx:"12",cy:"19",r:"1",key:"lyex9k"}]],X1=e("ellipsis-vertical",K1);const J1=[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]],Q1=e("ellipsis",J1);const Y1=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],e2=e("external-link",Y1);const c2=[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],t2=e("eye",c2);const o2=[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M12 18v-6",key:"17g6i2"}],["path",{d:"m9 15 3 3 3-3",key:"1npd3o"}]],n2=e("file-down",o2);const a2=[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["circle",{cx:"10",cy:"16",r:"2",key:"4ckbqe"}],["path",{d:"m16 10-4.5 4.5",key:"7p3ebg"}],["path",{d:"m15 11 1 1",key:"1bsyx3"}]],h2=e("file-key",a2);const d2=[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}]],s2=e("file",d2);const y2=[["path",{d:"M15 2a2 2 0 0 1 1.414.586l4 4A2 2 0 0 1 21 8v7a2 2 0 0 1-2 2h-8a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2z",key:"1vo8kb"}],["path",{d:"M15 2v4a2 2 0 0 0 2 2h4",key:"sud9ri"}],["path",{d:"M5 7a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h8a2 2 0 0 0 1.732-1",key:"l4dndm"}]],i2=e("files",y2);const k2=[["path",{d:"M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4",key:"1nerag"}],["path",{d:"M14 13.12c0 2.38 0 6.38-1 8.88",key:"o46ks0"}],["path",{d:"M17.29 21.02c.12-.6.43-2.3.5-3.02",key:"ptglia"}],["path",{d:"M2 12a10 10 0 0 1 18-6",key:"ydlgp0"}],["path",{d:"M2 16h.01",key:"1gqxmh"}],["path",{d:"M21.8 16c.2-2 .131-5.354 0-6",key:"drycrb"}],["path",{d:"M5 19.5C5.5 18 6 15 6 12a6 6 0 0 1 .34-2",key:"1tidbn"}],["path",{d:"M8.65 22c.21-.66.45-1.32.57-2",key:"13wd9y"}],["path",{d:"M9 6.8a6 6 0 0 1 9 5.2v2",key:"1fr1j5"}]],p=e("fingerprint",k2);const r2=[["path",{d:"M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2",key:"18mbvz"}],["path",{d:"M6.453 15h11.094",key:"3shlmq"}],["path",{d:"M8.5 2h7",key:"csnxdl"}]],p2=e("flask-conical",r2);const l2=[["path",{d:"M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2Z",key:"1fr9dc"}],["path",{d:"M8 10v4",key:"tgpxqk"}],["path",{d:"M12 10v2",key:"hh53o1"}],["path",{d:"M16 10v6",key:"1d6xys"}]],M2=e("folder-kanban",l2);const _2=[["path",{d:"m12 14 4-4",key:"9kzdfg"}],["path",{d:"M3.34 19a10 10 0 1 1 17.32 0",key:"19p75a"}]],v2=e("gauge",_2);const x2=[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]],m2=e("grip-vertical",x2);const w2=[["path",{d:"m11 17 2 2a1 1 0 1 0 3-3",key:"efffak"}],["path",{d:"m14 14 2.5 2.5a1 1 0 1 0 3-3l-3.88-3.88a3 3 0 0 0-4.24 0l-.88.88a1 1 0 1 1-3-3l2.81-2.81a5.79 5.79 0 0 1 7.06-.87l.47.28a2 2 0 0 0 1.42.25L21 4",key:"9pr0kb"}],["path",{d:"m21 3 1 11h-2",key:"1tisrp"}],["path",{d:"M3 3 2 14l6.5 6.5a1 1 0 1 0 3-3",key:"1uvwmv"}],["path",{d:"M3 4h8",key:"1ep09j"}]],g2=e("handshake",w2);const u2=[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]],I2=e("hash",u2);const f2=[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"1d0kgt"}]],N2=e("house",f2);const $2=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]],b2=e("info",$2);const j2=[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"14",y:"3",rx:"1",key:"6d4xhi"}],["rect",{width:"7",height:"7",x:"14",y:"14",rx:"1",key:"nxv5o0"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}]],q2=e("layout-grid",j2);const C2=[["path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71",key:"1cjeqo"}],["path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71",key:"19qd67"}]],z2=e("link",C2);const A2=[["path",{d:"m3 17 2 2 4-4",key:"1jhpwq"}],["path",{d:"m3 7 2 2 4-4",key:"1obspn"}],["path",{d:"M13 6h8",key:"15sg57"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 18h8",key:"oe0vm4"}]],H2=e("list-checks",A2);const L2=[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M7 12h10",key:"b7w52i"}],["path",{d:"M10 18h4",key:"1ulq68"}]],V2=e("list-filter",L2);const S2=[["path",{d:"M21 12h-8",key:"1bmf0i"}],["path",{d:"M21 6H8",key:"1pqkrb"}],["path",{d:"M21 18h-8",key:"1tm79t"}],["path",{d:"M3 6v4c0 1.1.9 2 2 2h3",key:"1ywdgy"}],["path",{d:"M3 10v6c0 1.1.9 2 2 2h3",key:"2wc746"}]],D2=e("list-tree",S2);const F2=[["path",{d:"M12 2v4",key:"3427ic"}],["path",{d:"m16.2 7.8 2.9-2.9",key:"r700ao"}],["path",{d:"M18 12h4",key:"wj9ykh"}],["path",{d:"m16.2 16.2 2.9 2.9",key:"1bxg5t"}],["path",{d:"M12 18v4",key:"jadmvz"}],["path",{d:"m4.9 19.1 2.9-2.9",key:"bwix9q"}],["path",{d:"M2 12h4",key:"j09sii"}],["path",{d:"m4.9 4.9 2.9 2.9",key:"giyufr"}]],P2=e("loader",F2);const R2=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]],E2=e("lock",R2);const Z2=[["path",{d:"m10 17 5-5-5-5",key:"1bsop3"}],["path",{d:"M15 12H3",key:"6jk70r"}],["path",{d:"M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4",key:"u53s6r"}]],U2=e("log-in",Z2);const B2=[["path",{d:"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7",key:"132q7q"}],["rect",{x:"2",y:"4",width:"20",height:"16",rx:"2",key:"izxlao"}]],O2=e("mail",B2);const T2=[["path",{d:"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0",key:"1r0f0z"}],["path",{d:"M12 7v6",key:"lw1j43"}],["path",{d:"M9 10h6",key:"9gxzsh"}]],W2=e("map-pin-plus-inside",T2);const G2=[["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 18h16",key:"19g7jn"}],["path",{d:"M4 6h16",key:"1o0s65"}]],K2=e("menu",G2);const X2=[["path",{d:"M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719",key:"1sd12s"}]],J2=e("message-circle",X2);const Q2=[["path",{d:"M5 12h14",key:"1ays0h"}]],Y2=e("minus",Q2);const ee=[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]],ce=e("monitor",ee);const te=[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]],oe=e("network",te);const ne=[["path",{d:"M12 16h.01",key:"1drbdi"}],["path",{d:"M12 8v4",key:"1got3b"}],["path",{d:"M15.312 2a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586l-4.688-4.688A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2z",key:"1fd625"}]],ae=e("octagon-alert",ne);const he=[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",key:"1a0edw"}],["path",{d:"M12 22V12",key:"d0xqtd"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}]],de=e("package",he);const se=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]],ye=e("pen",se);const ie=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],ke=e("plus",ie);const re=[["path",{d:"M4 2v20l2-1 2 1 2-1 2 1 2-1 2 1 2-1 2 1V2l-2 1-2-1-2 1-2-1-2 1-2-1-2 1Z",key:"q3az6g"}],["path",{d:"M14 8H8",key:"1l3xfs"}],["path",{d:"M16 12H8",key:"1fr5h0"}],["path",{d:"M13 16H8",key:"wsln4y"}]],pe=e("receipt-text",re);const le=[["rect",{width:"20",height:"12",x:"2",y:"6",rx:"2",key:"9lu3g6"}],["path",{d:"M12 12h.01",key:"1mp3jc"}],["path",{d:"M17 12h.01",key:"1m0b6t"}],["path",{d:"M7 12h.01",key:"eqddd0"}]],Me=e("rectangle-ellipsis",le);const _e=[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8",key:"1p45f6"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}]],ve=e("rotate-cw",_e);const xe=[["circle",{cx:"6",cy:"19",r:"3",key:"1kj8tv"}],["path",{d:"M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15",key:"1d8sl"}],["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}]],me=e("route",xe);const we=[["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",key:"w68u3i"}],["path",{d:"M6.01 18H6",key:"19vcac"}],["path",{d:"M10.01 18H10",key:"uamcmx"}],["path",{d:"M15 10v4",key:"qjz1xs"}],["path",{d:"M17.84 7.17a4 4 0 0 0-5.66 0",key:"1rif40"}],["path",{d:"M20.66 4.34a8 8 0 0 0-11.31 0",key:"6a5xfq"}]],ge=e("router",we);const ue=[["path",{d:"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7",key:"1m0v6g"}],["path",{d:"M14 15H9v-5",key:"pi4jk9"}],["path",{d:"M16 3h5v5",key:"1806ms"}],["path",{d:"M21 3 9 15",key:"15kdhq"}]],Ie=e("scaling",ue);const fe=[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]],Ne=e("search",fe);const $e=[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],be=e("settings",$e);const je=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m4.243 5.21 14.39 12.472",key:"1c9a7c"}]],qe=e("shield-ban",je);const Ce=[["path",{d:"M22 2 2 22",key:"y4kqgn"}]],ze=e("slash",Ce);const Ae=[["path",{d:"M13.172 2a2 2 0 0 1 1.414.586l6.71 6.71a2.4 2.4 0 0 1 0 3.408l-4.592 4.592a2.4 2.4 0 0 1-3.408 0l-6.71-6.71A2 2 0 0 1 6 9.172V3a1 1 0 0 1 1-1z",key:"16rjxf"}],["path",{d:"M2 7v6.172a2 2 0 0 0 .586 1.414l6.71 6.71a2.4 2.4 0 0 0 3.191.193",key:"178nd4"}],["circle",{cx:"10.5",cy:"6.5",r:".5",fill:"currentColor",key:"12ikhr"}]],He=e("tags",Ae);const Le=[["line",{x1:"10",x2:"14",y1:"2",y2:"2",key:"14vaq8"}],["line",{x1:"12",x2:"15",y1:"14",y2:"11",key:"17fdiu"}],["circle",{cx:"12",cy:"14",r:"8",key:"1e1u0o"}]],Ve=e("timer",Le);const Se=[["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],De=e("trash",Se);const Fe=[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],Pe=e("triangle-alert",Fe);const Re=[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]],Ee=e("upload",Re);const Ze=[["path",{d:"M2 21a8 8 0 0 1 13.292-6",key:"bjp14o"}],["circle",{cx:"10",cy:"8",r:"5",key:"o932ke"}],["path",{d:"m16 19 2 2 4-4",key:"1b14m6"}]],Ue=e("user-round-check",Ze);const Be=[["circle",{cx:"12",cy:"8",r:"5",key:"1hypcn"}],["path",{d:"M20 21a8 8 0 0 0-16 0",key:"rfgkzh"}]],Oe=e("user-round",Be);const Te=[["path",{d:"M18 21a8 8 0 0 0-16 0",key:"3ypg7q"}],["circle",{cx:"10",cy:"8",r:"5",key:"o932ke"}],["path",{d:"M22 20c0-3.37-2-6.5-4-8a5 5 0 0 0-.45-8.3",key:"10s06x"}]],We=e("users-round",Te);const Ge=[["circle",{cx:"12",cy:"4.5",r:"2.5",key:"r5ysbb"}],["path",{d:"m10.2 6.3-3.9 3.9",key:"1nzqf6"}],["circle",{cx:"4.5",cy:"12",r:"2.5",key:"jydg6v"}],["path",{d:"M7 12h10",key:"b7w52i"}],["circle",{cx:"19.5",cy:"12",r:"2.5",key:"1piiel"}],["path",{d:"m13.8 17.7 3.9-3.9",key:"1wyg1y"}],["circle",{cx:"12",cy:"19.5",r:"2.5",key:"13o1pw"}]],Ke=e("waypoints",Ge);const Xe=[["path",{d:"M18 16.98h-5.99c-1.1 0-1.95.94-2.48 1.9A4 4 0 0 1 2 17c.01-.7.2-1.4.57-2",key:"q3hayz"}],["path",{d:"m6 17 3.13-5.78c.53-.97.1-2.18-.5-3.1a4 4 0 1 1 6.89-4.06",key:"1go1hn"}],["path",{d:"m12 6 3.13 5.73C15.66 12.7 16.9 13 18 13a4 4 0 0 1 0 8",key:"qlwsc0"}]],Je=e("webhook",Xe);const Qe=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],Ye=e("x",Qe),ac=I2,hc=f1,dc=j1,sc=ye,yc=De,ec=Ye,ic=ec,kc=ve,rc=He,pc=x1,lc=_1,Mc=w1,_c=i1,vc=ze,xc=r1,mc=l1,wc=ae,gc=Q1,uc=X1,Ic=s1,fc=Y2,Nc=G1,$c=V2,bc=t1,jc=L,qc=F,Cc=R,zc=S1,Ac=m2,Hc=b2,Lc=Ne,Vc=P2,Sc=e1,Dc=h2,Fc=Z,Pc=F1,Rc=ce,Ec=Oe,Zc=Q,Uc=qe,Bc=g2,Oc=We,Tc=de,Wc=W2,Gc=p,Kc=be,Xc=Je,Jc=O2,Qc=D2,Yc=N2,et=C,ct=pe,cc=Ke,tt=C1,ot=A1,nt=R1,at=u1,ht=cc,dt=U2,st=L1,yt=J2,it=B,kt=Ve,rt=v2,pt=Me,lt=E2,Mt=oe,_t=ge,vt=T1,xt=A,mt=Ie,wt=B1,gt=p,ut=M2,It=Z1,ft=e2,Nt=z2,$t=n1,bt=h1,jt=H2,qt=s2,Ct=i2,zt=me,At=T,Ht=S,Lt=$1,Vt=Ee,St=Pe,Dt=q2,Ft=K2,Pt=t2,Rt=ke,Et=Ue,Zt=X,Ut=p2,Bt=G,Ot=s(({size:t=24,color:c="currentColor",title:o,...n},h)=>x("svg",{ref:h,...n,width:t,height:t,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:[o&&i("title",{children:o}),i("path",{fill:c,d:"M0 0h11.377v11.372H0Zm12.623 0H24v11.372H12.623ZM0 12.623h11.377V24H0Zm12.623 0H24V24H12.623"})]})),Tt=I,Wt=u,Gt=g,Kt=m,Xt=w,Jt=n2;export{Gc as IcAccessToken,Sc as IcAccount,Rc as IcActivation,Wc as IcAddress,$t as IcAnalytics,ct as IcBilling,zt as IcChannel,Ic as IcCheck,ic as IcClose,ot as IcCode,zc as IcColumns,nt as IcContainer,It as IcCopy,hc as IcCreate,Bt as IcCustomAttribute,vt as IcDatabase,bc as IcDate,yc as IcDelete,it as IcDocumentation,Nc as IcDot,_c as IcDown,Ht as IcDownload,Jc as IcEmail,jt as IcEntitlementSet,Qc as IcEntitlements,Ut as IcEnvironment,wc as IcError,dc as IcExport,ft as IcExternalLink,Pt as IcEye,bt as IcFeature,qt as IcFile,Ct as IcFiles,$c as IcFilter,gt as IcFingerprint,xc as IcFirst,yt as IcForum,Ac as IcGrip,ac as IcHash,Yc as IcHome,Mt as IcHostedFloating,Hc as IcInfo,cc as IcIntergration,mc as IcLast,Dt as IcLayoutGrid,lc as IcLeft,_t as IcLexFloatServer,Dc as IcLicense,Fc as IcLicenseTemplate,wt as IcLicensingModel,Nt as IcLink,Vc as IcLoader,dt as IcLogin,et as IcLogs,Pc as IcMaintenancePolicy,Ft as IcMenu,rt as IcMeter,at as IcMigration,fc as IcMinus,gc as IcMoreHorizontal,uc as IcMoreVertical,Et as IcNamedUser,lt as IcNodeLocked,tt as IcOffline,Jt as IcOfflineActivation,Zc as IcOrganizations,Kt as IcOsAndroid,Xt as IcOsApple,Gt as IcOsIos,Wt as IcOsLinux,Tt as IcOsMacos,Ot as IcOsWindows,pt as IcPassword,At as IcPlatform,Rt as IcPlus,st as IcPricing,ut as IcProduct,Lt as IcProfile,Zt as IcProxy,kc as IcRefresh,Tc as IcRelease,ec as IcRemove,Bc as IcReseller,pc as IcRight,Uc as IcRoles,mt as IcScale,Lc as IcSearch,Kc as IcSettings,vc as IcSlash,jc as IcSortAsc,qc as IcSortDesc,Cc as IcSortNone,ht as IcSso,rc as IcTag,Oc as IcTeam,kt as IcTrial,Mc as IcUp,sc as IcUpdate,Vt as IcUpload,Ec as IcUser,St as IcWarning,xt as IcWebPortal,Xc as IcWebhook};
2
- //# sourceMappingURL=icons.js.map
1
+ import{$ as e,A as t,At as n,B as r,Bt as i,C as a,Ct as o,D as s,Dt as c,E as l,Et as u,F as d,Ft as f,G as p,Gt as m,H as h,Ht as g,I as _,It as v,J as y,Jt as b,K as x,Kt as S,L as C,Lt as w,M as T,Mt as E,N as D,Nt as O,O as k,Ot as A,P as j,Pt as M,Q as N,R as P,Rt as F,S as I,St as L,T as R,Tt as z,U as B,Ut as V,V as H,Vt as U,W,Wt as G,X as K,Y as q,Yt as J,Z as Y,_ as X,_t as Z,a as Q,at as $,b as ee,bt as te,c as ne,ct as re,d as ie,dt as ae,et as oe,f as se,ft as ce,g as le,gt as ue,h as de,ht as fe,i as pe,it as me,j as he,jt as ge,k as _e,kt as ve,l as ye,lt as be,m as xe,mt as Se,n as Ce,nt as we,o as Te,ot as Ee,p as De,pt as Oe,q as ke,qt as Ae,r as je,rt as Me,s as Ne,st as Pe,t as Fe,tt as Ie,u as Le,ut as Re,v as ze,vt as Be,w as Ve,wt as He,x as Ue,xt as We,y as Ge,yt as Ke,z as qe,zt as Je}from"../icons.js";export{Fe as IcAccessToken,Ce as IcAccount,je as IcActivation,pe as IcAddress,Q as IcAnalytics,Te as IcBilling,Ne as IcChannel,ne as IcCheck,ye as IcClose,Le as IcCode,ie as IcColumns,se as IcContainer,De as IcCopy,xe as IcCreate,de as IcCustomAttribute,le as IcDatabase,X as IcDate,ze as IcDelete,Ge as IcDocumentation,ee as IcDot,Ue as IcDown,I as IcDownload,a as IcEmail,Ve as IcEntitlementSet,R as IcEntitlements,l as IcEnvironment,s as IcError,k as IcExport,_e as IcExternalLink,t as IcEye,he as IcFeature,T as IcFile,D as IcFiles,j as IcFilter,d as IcFingerprint,_ as IcFirst,C as IcForum,P as IcGrip,qe as IcHash,r as IcHome,H as IcHostedFloating,h as IcInfo,B as IcIntergration,W as IcLast,p as IcLayoutGrid,x as IcLeft,ke as IcLexFloatServer,y as IcLicense,q as IcLicenseTemplate,K as IcLicensingModel,Y as IcLink,N as IcLoader,e as IcLogin,oe as IcLogs,Ie as IcMaintenancePolicy,we as IcMenu,Me as IcMeter,me as IcMigration,$ as IcMinus,Ee as IcMoreHorizontal,Pe as IcMoreVertical,re as IcNamedUser,be as IcNodeLocked,Re as IcOffline,ae as IcOfflineActivation,ce as IcOrganizations,Oe as IcOsAndroid,Se as IcOsApple,fe as IcOsIos,ue as IcOsLinux,Z as IcOsMacos,Be as IcOsWindows,Ke as IcPassword,te as IcPlatform,We as IcPlus,L as IcPricing,o as IcProduct,He as IcProfile,z as IcProxy,u as IcRefresh,c as IcRelease,A as IcRemove,ve as IcReseller,n as IcRight,ge as IcRoles,E as IcScale,O as IcSearch,M as IcSettings,f as IcSlash,v as IcSortAsc,w as IcSortDesc,F as IcSortNone,Je as IcSso,i as IcTag,U as IcTeam,g as IcTrial,V as IcUp,G as IcUpdate,m as IcUpload,S as IcUser,Ae as IcWarning,b as IcWebPortal,J as IcWebhook};
@@ -69,7 +69,7 @@ declare function BaseIdSearchInput<T extends BaseSearchableResource, V>({ label,
69
69
  /** Optional className to customize the trigger button styling. */
70
70
  className?: string;
71
71
  emptyOption?: EmptyOption;
72
- } & Omit<React.ComponentProps<typeof Menu>, 'items' | 'className'>): import("react/jsx-runtime").JSX.Element;
72
+ } & Omit<React.ComponentProps<typeof Menu>, 'items' | 'className'>): import("react").JSX.Element;
73
73
  /**
74
74
  * Single-selection ID search input.
75
75
  *
@@ -88,7 +88,7 @@ declare function BaseIdSearchInput<T extends BaseSearchableResource, V>({ label,
88
88
  * />
89
89
  *
90
90
  */
91
- export declare function SingleIdSearchInput<T extends BaseSearchableResource>({ accessor, getItemLabel, ...props }: Omit<React.ComponentProps<typeof BaseIdSearchInput<T, string | null>>, 'onSelectionChange' | 'selectionMode' | 'selectedKeys' | 'renderLabel'>): import("react/jsx-runtime").JSX.Element;
91
+ export declare function SingleIdSearchInput<T extends BaseSearchableResource>({ accessor, getItemLabel, ...props }: Omit<React.ComponentProps<typeof BaseIdSearchInput<T, string | null>>, 'onSelectionChange' | 'selectionMode' | 'selectedKeys' | 'renderLabel'>): import("react").JSX.Element;
92
92
  /**
93
93
  * Multi-selection ID search input.
94
94
  *
@@ -109,7 +109,7 @@ export declare function SingleIdSearchInput<T extends BaseSearchableResource>({
109
109
  * @remarks
110
110
  * - The `renderLabel` joins selected item names with commas for compact display.
111
111
  */
112
- export declare function MultipleIdSearchInput<T extends BaseSearchableResource>({ accessor, getItemLabel, ...props }: Omit<React.ComponentProps<typeof BaseIdSearchInput<T, string[]>>, 'renderLabel' | 'onSelectionChange' | 'selectionMode' | 'selectedKeys'>): import("react/jsx-runtime").JSX.Element;
112
+ export declare function MultipleIdSearchInput<T extends BaseSearchableResource>({ accessor, getItemLabel, ...props }: Omit<React.ComponentProps<typeof BaseIdSearchInput<T, string[]>>, 'renderLabel' | 'onSelectionChange' | 'selectionMode' | 'selectedKeys'>): import("react").JSX.Element;
113
113
  /**
114
114
  * Form-integrated single-select ID input (field wrapper).
115
115
  *
@@ -122,7 +122,7 @@ export declare function MultipleIdSearchInput<T extends BaseSearchableResource>(
122
122
  * <TfSingleIdSearchInput name="ownerId" label="Owner" />
123
123
 
124
124
  */
125
- export declare function TfSingleIdSearchInput<T extends BaseSearchableResource>({ isDisabled, ...props }: Omit<React.ComponentProps<typeof SingleIdSearchInput<T>>, 'value' | 'onChange' | 'onBlur'>): import("react/jsx-runtime").JSX.Element;
125
+ export declare function TfSingleIdSearchInput<T extends BaseSearchableResource>({ isDisabled, ...props }: Omit<React.ComponentProps<typeof SingleIdSearchInput<T>>, 'value' | 'onChange' | 'onBlur'>): import("react").JSX.Element;
126
126
  /**
127
127
  * Form-integrated multi-select ID input (field wrapper).
128
128
  *
@@ -135,5 +135,5 @@ export declare function TfSingleIdSearchInput<T extends BaseSearchableResource>(
135
135
  * <TfMultipleIdSearchInput name="reviewerIds" label="Reviewers" />
136
136
  *
137
137
  */
138
- export declare function TfMultipleIdSearchInput<T extends BaseSearchableResource>({ isDisabled, ...props }: Omit<React.ComponentProps<typeof MultipleIdSearchInput<T>>, 'value' | 'onChange'>): import("react/jsx-runtime").JSX.Element;
138
+ export declare function TfMultipleIdSearchInput<T extends BaseSearchableResource>({ isDisabled, ...props }: Omit<React.ComponentProps<typeof MultipleIdSearchInput<T>>, 'value' | 'onChange'>): import("react").JSX.Element;
139
139
  export {};
@@ -1,2 +1,2 @@
1
- "use client";import{jsx as n,jsxs as M}from"react/jsx-runtime";import{useQuery as K}from"@tanstack/react-query";import{useId as _,useState as D}from"react";import{Select as G,Autocomplete as P}from"react-aria-components";import{Loader as Q}from"./loader.js";import{Menu as k,MenuItem as z}from"./menu.js";import{PopoverTrigger as H}from"./popover.js";import{SearchField as J}from"./searchfield.js";import{useCtxClient as U}from"../utilities/ctx-client.js";import{getEmptyLabel as q,isEmptyValue as W}from"../utilities/empty-option.js";import{getFieldErrorMessage as y}from"../utilities/form.js";import{useFieldContext as T}from"../utilities/form-context.js";import{FormField as X}from"./form.js";import{SelectTrigger as Y,SelectPopover as Z}from"./select.js";import{TagGroup as $,Tag as O}from"./tag-group.js";import"../utilities/theme.js";import"clsx";import"./icons.js";import"@icons-pack/react-simple-icons";import"./list-box.js";import"./button.js";import"class-variance-authority";import"@tanstack/react-form";import"./card.js";function g(t){return t.name??t.displayName??""}function ee(t){return Array.isArray(t)&&t.every(r=>{if(!r||typeof r!="object"||!("id"in r)||typeof r.id!="string")return!1;const e="name"in r&&typeof r.name=="string",o="displayName"in r&&typeof r.displayName=="string";return e||o})}function E({label:t,description:r,errorMessage:e,requiredIndicator:o,isDisabled:h,isInvalid:a,onBlur:l,path:s,onChange:m,value:i,renderLabel:d,accessor:f,getItemLabel:S,defaultParams:p,className:V,emptyOption:A,...b}){if(s==="/v3/me")throw Error('Path "/v3/me" is not supported with IdSearch since it is not a searchable resource.');const L=_(),v=b.id||L,w=U(),C=S??g,B=c=>{const u=C(c);return typeof u=="string"?u:g(c)},[I,R]=D(""),{data:N,isError:x,isFetching:F,error:j}=K({queryKey:["get",s,I],queryFn:async()=>{const u=(await w.GET(s,{params:{query:{search:I,...p?.query,limit:50,page:1},path:{...p?.path}}})).data;return u&&ee(u)?u:[]}});return n("div",{className:"group form-field","data-invalid":a?"":void 0,children:n(X,{label:t,description:r,errorMessage:e,requiredIndicator:o,htmlFor:v,children:n(G,{isInvalid:a,children:M(H,{onOpenChange:c=>{c||l?.(i)},children:[n(Y,{id:v,isDisabled:h,className:V??"w-full",children:d(i,N,A)}),n(Z,{placement:"bottom start",children:M(P,{inputValue:I,onInputChange:R,children:[n(J,{className:"p-2",autoFocus:!0}),F&&n("div",{className:"p-input",children:n(Q,{className:"mx-auto"})}),!F&&!x&&n(k,{...b,className:"max-h-48",items:N,renderEmptyState:()=>n("div",{className:"body-sm p-2",children:"No results found."}),children:c=>{const u=c[f]??c.id;return n(z,{id:u,textValue:B(c),children:C(c)},u)}}),x&&n("div",{className:"text-destructive p-icon body-sm",children:j.message})]})})]})})})})}function re({accessor:t,getItemLabel:r,...e}){const o=e.value?[e.value]:[],h=r??g;return n(E,{accessor:t,getItemLabel:r,selectedKeys:o,onSelectionChange:a=>{const l=Array.from(a).filter(s=>typeof s=="string")[0];e.onChange(l)},renderLabel:(a,l,s)=>{if(s&&W(a))return q(s);const m=l?.find(i=>(i[t]??i.id)===a);return m?h(m):""},selectionMode:"single",...e})}function te({accessor:t,getItemLabel:r,...e}){const o=e.value,h=r??g;return n(E,{...e,accessor:t,getItemLabel:r,selectedKeys:o,onSelectionChange:a=>{const l=Array.from(a).filter(s=>typeof s=="string");e.onChange(l.length>0?l:[])},selectionMode:"multiple",className:"w-full h-auto items-start",renderLabel:(a,l,s)=>{if(s&&(!a||a.length===0))return q(s);const m=a??[];return n($,{onRemove:i=>e.onChange(m.filter(d=>!i.has(d))),items:m.map(i=>{const d=l?.find(p=>(p[t]??p.id)===i),f=d?h(d):i,S=typeof f=="string"?f:d?g(d):i;return{id:i,name:f,textValue:S}}),children:i=>n(O,{textValue:i.textValue,children:i.name},i.id)})}})}function qe({isDisabled:t,...r}){const e=T({disabled:t});return n(re,{requiredIndicator:e.isRequired,isDisabled:t||e.isSubmitting,value:e.state.value,onBlur:o=>e.handleBlur(),onChange:o=>e.handleChange(o),isInvalid:!!y(e),errorMessage:y(e),...r})}function Te({isDisabled:t,...r}){const e=T({disabled:t});return n(te,{requiredIndicator:e.isRequired,isDisabled:t||e.isSubmitting,value:e.state.value,onBlur:o=>e.handleBlur(),onChange:o=>e.handleChange(o),isInvalid:!!y(e),errorMessage:y(e),...r})}export{te as MultipleIdSearchInput,re as SingleIdSearchInput,Te as TfMultipleIdSearchInput,qe as TfSingleIdSearchInput};
2
- //# sourceMappingURL=id-search.js.map
1
+ "use client";import{getEmptyLabel as e,isEmptyValue as t}from"../utilities/empty-option.js";import{useCtxClient as n}from"../utilities/ctx-client.js";import{useFieldContext as r}from"../utilities/form-context.js";import{Loader as i}from"./loader.js";import{FormField as a}from"./form.js";import{getFieldErrorMessage as o}from"../utilities/form.js";import{PopoverTrigger as s}from"./popover.js";import{SelectPopover as c,SelectTrigger as l}from"./select.js";import{Menu as u,MenuItem as d}from"./menu.js";import{SearchField as f}from"./searchfield.js";import{Tag as p,TagGroup as m}from"./tag-group.js";import{useId as h,useState as g}from"react";import{jsx as _,jsxs as v}from"react/jsx-runtime";import{Autocomplete as y,Select as b}from"react-aria-components";import{useQuery as x}from"@tanstack/react-query";function S(e){return e.name??e.displayName??``}function C(e){return Array.isArray(e)&&e.every(e=>{if(!e||typeof e!=`object`||!(`id`in e)||typeof e.id!=`string`)return!1;let t=`name`in e&&typeof e.name==`string`,n=`displayName`in e&&typeof e.displayName==`string`;return t||n})}function w({label:e,description:t,errorMessage:r,requiredIndicator:o,isDisabled:p,isInvalid:m,onBlur:w,path:T,onChange:E,value:D,renderLabel:O,accessor:k,getItemLabel:A,defaultParams:j,className:M,emptyOption:N,...P}){if(T===`/v3/me`)throw Error(`Path "/v3/me" is not supported with IdSearch since it is not a searchable resource.`);let F=h(),I=P.id||F,L=n(),R=A??S,z=e=>{let t=R(e);return typeof t==`string`?t:S(e)},[B,V]=g(``),{data:H,isError:U,isFetching:W,error:G}=x({queryKey:[`get`,T,B],queryFn:async()=>{let e=(await L.GET(T,{params:{query:{search:B,...j?.query,limit:50,page:1},path:{...j?.path}}})).data;return e&&C(e)?e:[]}});return _(`div`,{className:`group form-field`,"data-invalid":m?``:void 0,children:_(a,{label:e,description:t,errorMessage:r,requiredIndicator:o,htmlFor:I,children:_(b,{isInvalid:m,children:v(s,{onOpenChange:e=>{e||w?.(D)},children:[_(l,{id:I,isDisabled:p,className:M??`w-full`,children:O(D,H,N)}),_(c,{placement:`bottom start`,children:v(y,{inputValue:B,onInputChange:V,children:[_(f,{className:`p-2`,autoFocus:!0}),W&&_(`div`,{className:`p-input`,children:_(i,{className:`mx-auto`})}),!W&&!U&&_(u,{...P,className:`max-h-48`,items:H,renderEmptyState:()=>_(`div`,{className:`body-sm p-2`,children:`No results found.`}),children:e=>{let t=e[k]??e.id;return _(d,{id:t,textValue:z(e),children:R(e)},t)}}),U&&_(`div`,{className:`text-destructive p-icon body-sm`,children:G.message})]})})]})})})})}function T({accessor:n,getItemLabel:r,...i}){let a=i.value?[i.value]:[],o=r??S;return _(w,{accessor:n,getItemLabel:r,selectedKeys:a,onSelectionChange:e=>{let t=Array.from(e).filter(e=>typeof e==`string`)[0];i.onChange(t)},renderLabel:(r,i,a)=>{if(a&&t(r))return e(a);let s=i?.find(e=>(e[n]??e.id)===r);return s?o(s):``},selectionMode:`single`,...i})}function E({accessor:t,getItemLabel:n,...r}){let i=r.value,a=n??S;return _(w,{...r,accessor:t,getItemLabel:n,selectedKeys:i,onSelectionChange:e=>{let t=Array.from(e).filter(e=>typeof e==`string`);r.onChange(t.length>0?t:[])},selectionMode:`multiple`,className:`w-full h-auto items-start`,renderLabel:(n,i,o)=>{if(o&&(!n||n.length===0))return e(o);let s=n??[];return _(m,{onRemove:e=>r.onChange(s.filter(t=>!e.has(t))),items:s.map(e=>{let n=i?.find(n=>(n[t]??n.id)===e),r=n?a(n):e;return{id:e,name:r,textValue:typeof r==`string`?r:n?S(n):e}}),children:e=>_(p,{textValue:e.textValue,children:e.name},e.id)})}})}function D({isDisabled:e,...t}){let n=r({disabled:e});return _(T,{requiredIndicator:n.isRequired,isDisabled:e||n.isSubmitting,value:n.state.value,onBlur:e=>n.handleBlur(),onChange:e=>n.handleChange(e),isInvalid:!!o(n),errorMessage:o(n),...t})}function O({isDisabled:e,...t}){let n=r({disabled:e});return _(E,{requiredIndicator:n.isRequired,isDisabled:e||n.isSubmitting,value:n.state.value,onBlur:e=>n.handleBlur(),onChange:e=>n.handleChange(e),isInvalid:!!o(n),errorMessage:o(n),...t})}export{E as MultipleIdSearchInput,T as SingleIdSearchInput,O as TfMultipleIdSearchInput,D as TfSingleIdSearchInput};
2
+ //# sourceMappingURL=id-search.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"id-search.js","sources":["../../lib/components/id-search.tsx"],"sourcesContent":["'use client';\nimport { useQuery } from '@tanstack/react-query';\nimport { useId, useState } from 'react';\nimport { Select as AriaSelect, Autocomplete } from 'react-aria-components';\n\nimport type { ClientPathsWithMethod } from 'openapi-fetch';\nimport { Loader } from '../components/loader';\nimport { Menu, MenuItem } from '../components/menu';\nimport { PopoverTrigger } from '../components/popover';\nimport { SearchField } from '../components/searchfield';\nimport { useCtxClient, type CtxClientType } from '../utilities/ctx-client';\nimport { getEmptyLabel, isEmptyValue, type EmptyOption } from '../utilities/empty-option';\nimport { getFieldErrorMessage } from '../utilities/form';\nimport { useFieldContext } from '../utilities/form-context';\nimport { FormField, type FormFieldProps } from './form';\nimport { SelectPopover, SelectTrigger } from './select';\nimport { Tag, TagGroup } from './tag-group';\n\n/**\n * Minimal resource shape used by the ID search inputs.\n * `id` is required; the label comes from `name` or `displayName`.\n *\n * @example\n * const user: BaseSearchableResource = { id: 'u_123', name: 'Nabeel Farooq' };\n * const product: BaseSearchableResource = { id: 'p_123', displayName: 'My Product' };\n */\ntype BaseSearchableResource = {\n /** Unique identifier used as the input value. */\n id: string;\n /** Human-readable label shown to users. */\n name?: string;\n displayName?: string;\n};\n\n/** Resources commonly expose either `name` or `displayName` as their human-readable label. */\nfunction getResourceLabel(item: BaseSearchableResource): string {\n return item.name ?? item.displayName ?? '';\n}\n\n/**\n * Type guard to check if a value is an array of searchable resources\n */\nfunction isSearchableResourceArray<T extends BaseSearchableResource>(value: unknown): value is T[] {\n return (\n Array.isArray(value) &&\n value.every(item => {\n if (!item || typeof item !== 'object' || !('id' in item) || typeof item.id !== 'string') return false;\n const hasName = 'name' in item && typeof item.name === 'string';\n const hasDisplayName = 'displayName' in item && typeof item.displayName === 'string';\n return hasName || hasDisplayName;\n })\n );\n}\n\n/**\n * - Generic, accessible ID-search building block.\n * - Search (powered by react-query)\n * - Renders an accessible Autocomplete + Menu listbox\n * - Exposes a controlled `value`/`onChange` contract so callers (and wrappers) can manage state\n *\n * @template T - resource type extending `BaseSearchableResource` (must have `id`; label is `name` or `displayName`)\n * @template V - controlled value type (e.g. `string` for single-select or `string[]` for multi-select)\n *\n * @param props - props object (see inline property JSDoc for the most important fields)\n *\n * @remarks\n * - Search is automatically handled based on the `resource` prop using the API client from context\n * - When the popover closes, `onBlur` (if provided) is called with the current `value`.\n * - `renderLabel` must convert `value` to a readable string for the control button.\n * - `defaultParams` can be used to pass additional query parameters to the search endpoint\n *\n * @example\n * <BaseIdSearchInput\n * label=\"Owner\"\n * resource=\"user\"\n * value={ownerId}\n * onChange={setOwnerId}\n * renderLabel={(v, data) => data?.find(d => d.id === v)?.name ?? v}\n * />\n *\n * @testing\n * - Ensure API client is provided via context; assert keyboard navigation, open/close behavior, and `onBlur` call on popover close.\n */\nfunction BaseIdSearchInput<T extends BaseSearchableResource, V>({\n label,\n description,\n errorMessage,\n requiredIndicator,\n isDisabled,\n isInvalid,\n onBlur,\n path,\n onChange,\n value,\n renderLabel,\n accessor,\n getItemLabel,\n defaultParams,\n className,\n emptyOption,\n ...props\n}: FormFieldProps & {\n path: ClientPathsWithMethod<CtxClientType, 'get'>;\n /** Disable interactions. */\n isDisabled?: boolean;\n /** Whether the field is invalid. */\n isInvalid?: boolean;\n /** Key used to access an alternate display accessor on item (kept for compatibility). */\n accessor: keyof BaseSearchableResource;\n getItemLabel?: (item: T) => React.ReactNode;\n /** Controlled value. */\n value: V;\n /** Called when popover closes or the field blurs with the current value. */\n onBlur?: (v: V) => void;\n /** Controlled change handler. */\n onChange: (v: V) => void;\n /** Render a human-readable label for the current value using the latest data. */\n renderLabel: (v: V, data: T[] | undefined, emptyOption?: EmptyOption) => string | React.ReactNode;\n /** Default parameters to include in the request. This is useful when using /v3/users?role='admin' or /v3/organizations/ID/user-groups */\n defaultParams?: Record<'path' | 'query', any>;\n /** Optional className to customize the trigger button styling. */\n className?: string;\n /* Optional empty option to show when value is empty. */\n emptyOption?: EmptyOption;\n} & Omit<React.ComponentProps<typeof Menu>, 'items' | 'className'>) {\n if (path === '/v3/me') {\n throw Error('Path \"/v3/me\" is not supported with IdSearch since it is not a searchable resource.');\n }\n\n const generatedId = useId();\n const fieldId = props.id || generatedId;\n const client = useCtxClient();\n const itemLabel = getItemLabel ?? getResourceLabel;\n // Typeahead/search needs a plain string; fall back to the plain name when the label is a styled ReactNode.\n const itemTextValue = (item: T): string => {\n const label = itemLabel(item);\n return typeof label === 'string' ? label : getResourceLabel(item);\n };\n\n const [search, _setSearch] = useState('');\n const { data, isError, isFetching, error } = useQuery({\n // This is the schema that openapi-react-query follows as of 0.5.1\n queryKey: ['get', path, search],\n queryFn: async (): Promise<T[]> => {\n const result = await client.GET(path, {\n params: {\n query: {\n search,\n ...defaultParams?.query,\n limit: 50,\n page: 1,\n },\n path: {\n ...defaultParams?.path,\n },\n },\n });\n\n // Type narrowing: result.data is inferred as never due to complex union types\n // We use unknown to bypass this and then validate with our type guard\n const responseData: unknown = result.data;\n if (responseData && isSearchableResourceArray<T>(responseData)) {\n return responseData;\n }\n return [];\n },\n });\n\n return (\n <div className=\"group form-field\" data-invalid={isInvalid ? '' : undefined}>\n <FormField {...{ label, description, errorMessage, requiredIndicator, htmlFor: fieldId }}>\n <AriaSelect isInvalid={isInvalid}>\n <PopoverTrigger\n onOpenChange={o => {\n if (!o) {\n // searchInputRef.current?.focus();\n onBlur?.(value);\n }\n }}\n >\n <SelectTrigger id={fieldId} isDisabled={isDisabled} className={className ?? 'w-full'}>\n {renderLabel(value, data, emptyOption)}\n </SelectTrigger>\n <SelectPopover placement=\"bottom start\">\n <Autocomplete inputValue={search} onInputChange={_setSearch}>\n <SearchField className={'p-2'} autoFocus />\n {isFetching && (\n <div className=\"p-input\">\n <Loader className=\"mx-auto\" />\n </div>\n )}\n {!isFetching && !isError && (\n <Menu\n {...props}\n className={'max-h-48'}\n items={data}\n renderEmptyState={() => <div className=\"body-sm p-2\">No results found.</div>}\n >\n {item => {\n const itemId = item[accessor] ?? item.id;\n return (\n <MenuItem key={itemId} id={itemId} textValue={itemTextValue(item)}>\n {itemLabel(item)}\n </MenuItem>\n );\n }}\n </Menu>\n )}\n {isError && <div className=\"text-destructive p-icon body-sm\">{error.message}</div>}\n </Autocomplete>\n </SelectPopover>\n </PopoverTrigger>\n </AriaSelect>\n </FormField>\n </div>\n );\n}\n\n/**\n * Single-selection ID search input.\n *\n * Thin, typed wrapper around `BaseIdSearchInput` specialized for the very common single-ID case.\n * Adapts the internal selection events into `onChange(id?: string)` and renders the selected label.\n *\n * @template T - resource type (extends BaseSearchableResource)\n *\n * @param props - Inherits `BaseIdSearchInput` props but uses `string[]` value type.\n *\n * @example\n * <SingleIdSearchInput\n * label=\"Reporter\"\n * value={reporterId}\n * onChange={setReporterId}\n * />\n *\n */\nexport function SingleIdSearchInput<T extends BaseSearchableResource>({\n accessor,\n getItemLabel,\n ...props\n}: Omit<\n React.ComponentProps<typeof BaseIdSearchInput<T, string | null>>,\n 'onSelectionChange' | 'selectionMode' | 'selectedKeys' | 'renderLabel'\n>) {\n const selectedKeys = props.value ? [props.value] : [];\n const itemLabel = getItemLabel ?? getResourceLabel;\n\n return (\n <BaseIdSearchInput\n accessor={accessor}\n getItemLabel={getItemLabel}\n selectedKeys={selectedKeys}\n onSelectionChange={e => {\n const val = Array.from(e).filter(v => typeof v === 'string')[0];\n props.onChange(val);\n }}\n renderLabel={(v, d, emptyOption) => {\n // If value is empty and emptyOption is set, show the empty label\n if (emptyOption && isEmptyValue(v)) {\n return getEmptyLabel(emptyOption);\n }\n // Match on the same field the value was derived from (accessor), not always `id`.\n const match = d?.find(di => (di[accessor] ?? di.id) === v);\n return match ? itemLabel(match) : '';\n }}\n selectionMode=\"single\"\n {...props}\n />\n );\n}\n\n/**\n * Multi-selection ID search input.\n *\n * Thin wrapper around `BaseIdSearchInput` for the multiple-ID (`string[]`) case.\n * Adapts internal selection events into `onChange(ids: string[])`.\n *\n * @template T - resource type (extends BaseSearchableResource)\n *\n * @param props - Inherits `BaseIdSearchInput` props but uses `string[]` value type.\n *\n * @example\n * <MultipleIdSearchInput\n * label=\"Reviewers\"\n * value={reviewerIds}\n * onChange={setReviewerIds}\n * />\n *\n * @remarks\n * - The `renderLabel` joins selected item names with commas for compact display.\n */\nexport function MultipleIdSearchInput<T extends BaseSearchableResource>({\n accessor,\n getItemLabel,\n ...props\n}: Omit<\n React.ComponentProps<typeof BaseIdSearchInput<T, string[]>>,\n 'renderLabel' | 'onSelectionChange' | 'selectionMode' | 'selectedKeys'\n>) {\n const selectedKeys = props.value;\n const itemLabel = getItemLabel ?? getResourceLabel;\n\n return (\n <BaseIdSearchInput\n {...props}\n accessor={accessor}\n getItemLabel={getItemLabel}\n selectedKeys={selectedKeys}\n onSelectionChange={e => {\n const vals = Array.from(e).filter(v => typeof v === 'string');\n props.onChange(vals.length > 0 ? vals : []);\n }}\n selectionMode=\"multiple\"\n className=\"w-full h-auto items-start\"\n renderLabel={(v, d, emptyOption) => {\n // If array is empty and emptyOption is set, show the empty label\n if (emptyOption && (!v || v.length === 0)) {\n return getEmptyLabel(emptyOption);\n }\n\n const values = v ?? [];\n return (\n <TagGroup\n onRemove={keys => props.onChange(values.filter(value => !keys.has(value)))}\n items={values.map(value => {\n // Match on the same field the value was derived from (accessor), not always `id`.\n const match = d?.find(di => (di[accessor] ?? di.id) === value);\n const name = match ? itemLabel(match) : value;\n const textValue = typeof name === 'string' ? name : match ? getResourceLabel(match) : value;\n return {\n id: value,\n name,\n textValue,\n };\n })}\n >\n {item => (\n <Tag key={item.id} textValue={item.textValue}>\n {item.name}\n </Tag>\n )}\n </TagGroup>\n );\n }}\n />\n );\n}\n\n/**\n * Form-integrated single-select ID input (field wrapper).\n *\n * Integrates `SingleIdSearchInput` into the form system using `useFieldContext`.\n * - wires `value`, `onChange`, and `onBlur`\n * - disables the control while the form is submitting\n * - surfaces field-level error messages\n *\n * @example\n * <TfSingleIdSearchInput name=\"ownerId\" label=\"Owner\" />\n \n */\nexport function TfSingleIdSearchInput<T extends BaseSearchableResource>({\n isDisabled,\n ...props\n}: Omit<React.ComponentProps<typeof SingleIdSearchInput<T>>, 'value' | 'onChange' | 'onBlur'>) {\n const field = useFieldContext<string | null>({ disabled: isDisabled });\n return (\n <SingleIdSearchInput\n requiredIndicator={field.isRequired}\n isDisabled={isDisabled || field.isSubmitting}\n value={field.state.value}\n onBlur={_ => field.handleBlur()}\n onChange={e => field.handleChange(e)}\n isInvalid={!!getFieldErrorMessage(field)}\n errorMessage={getFieldErrorMessage(field)}\n {...props}\n />\n );\n}\n\n/**\n * Form-integrated multi-select ID input (field wrapper).\n *\n * Integrates `MultipleIdSearchInput` into the form system using `useFieldContext`.\n * - wires `value`, `onChange`, and `onBlur`\n * - disables the control while the form is submitting\n * - surfaces field-level error messages\n *\n * @example\n * <TfMultipleIdSearchInput name=\"reviewerIds\" label=\"Reviewers\" />\n *\n */\nexport function TfMultipleIdSearchInput<T extends BaseSearchableResource>({\n isDisabled,\n ...props\n}: Omit<React.ComponentProps<typeof MultipleIdSearchInput<T>>, 'value' | 'onChange'>) {\n const field = useFieldContext<string[]>({ disabled: isDisabled });\n return (\n <MultipleIdSearchInput\n requiredIndicator={field.isRequired}\n isDisabled={isDisabled || field.isSubmitting}\n value={field.state.value}\n onBlur={_ => field.handleBlur()}\n onChange={e => field.handleChange(e)}\n isInvalid={!!getFieldErrorMessage(field)}\n errorMessage={getFieldErrorMessage(field)}\n {...props}\n />\n );\n}\n"],"names":["getResourceLabel","item","isSearchableResourceArray","value","hasName","hasDisplayName","BaseIdSearchInput","label","description","errorMessage","requiredIndicator","isDisabled","isInvalid","onBlur","path","onChange","renderLabel","accessor","getItemLabel","defaultParams","className","emptyOption","props","generatedId","useId","fieldId","client","useCtxClient","itemLabel","itemTextValue","search","_setSearch","useState","data","isError","isFetching","error","useQuery","responseData","jsx","FormField","AriaSelect","jsxs","PopoverTrigger","o","SelectTrigger","SelectPopover","Autocomplete","SearchField","Loader","Menu","itemId","MenuItem","SingleIdSearchInput","selectedKeys","e","val","v","d","isEmptyValue","getEmptyLabel","match","di","MultipleIdSearchInput","vals","values","TagGroup","keys","name","textValue","Tag","TfSingleIdSearchInput","field","useFieldContext","_","getFieldErrorMessage","TfMultipleIdSearchInput"],"mappings":"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"}
1
+ {"version":3,"file":"id-search.js","names":[],"sources":["../../lib/components/id-search.tsx"],"sourcesContent":["'use client';\nimport { useQuery } from '@tanstack/react-query';\nimport { useId, useState } from 'react';\nimport { Select as AriaSelect, Autocomplete } from 'react-aria-components';\n\nimport type { ClientPathsWithMethod } from 'openapi-fetch';\nimport { Loader } from '../components/loader';\nimport { Menu, MenuItem } from '../components/menu';\nimport { PopoverTrigger } from '../components/popover';\nimport { SearchField } from '../components/searchfield';\nimport { useCtxClient, type CtxClientType } from '../utilities/ctx-client';\nimport { getEmptyLabel, isEmptyValue, type EmptyOption } from '../utilities/empty-option';\nimport { getFieldErrorMessage } from '../utilities/form';\nimport { useFieldContext } from '../utilities/form-context';\nimport { FormField, type FormFieldProps } from './form';\nimport { SelectPopover, SelectTrigger } from './select';\nimport { Tag, TagGroup } from './tag-group';\n\n/**\n * Minimal resource shape used by the ID search inputs.\n * `id` is required; the label comes from `name` or `displayName`.\n *\n * @example\n * const user: BaseSearchableResource = { id: 'u_123', name: 'Nabeel Farooq' };\n * const product: BaseSearchableResource = { id: 'p_123', displayName: 'My Product' };\n */\ntype BaseSearchableResource = {\n /** Unique identifier used as the input value. */\n id: string;\n /** Human-readable label shown to users. */\n name?: string;\n displayName?: string;\n};\n\n/** Resources commonly expose either `name` or `displayName` as their human-readable label. */\nfunction getResourceLabel(item: BaseSearchableResource): string {\n return item.name ?? item.displayName ?? '';\n}\n\n/**\n * Type guard to check if a value is an array of searchable resources\n */\nfunction isSearchableResourceArray<T extends BaseSearchableResource>(value: unknown): value is T[] {\n return (\n Array.isArray(value) &&\n value.every(item => {\n if (!item || typeof item !== 'object' || !('id' in item) || typeof item.id !== 'string') return false;\n const hasName = 'name' in item && typeof item.name === 'string';\n const hasDisplayName = 'displayName' in item && typeof item.displayName === 'string';\n return hasName || hasDisplayName;\n })\n );\n}\n\n/**\n * - Generic, accessible ID-search building block.\n * - Search (powered by react-query)\n * - Renders an accessible Autocomplete + Menu listbox\n * - Exposes a controlled `value`/`onChange` contract so callers (and wrappers) can manage state\n *\n * @template T - resource type extending `BaseSearchableResource` (must have `id`; label is `name` or `displayName`)\n * @template V - controlled value type (e.g. `string` for single-select or `string[]` for multi-select)\n *\n * @param props - props object (see inline property JSDoc for the most important fields)\n *\n * @remarks\n * - Search is automatically handled based on the `resource` prop using the API client from context\n * - When the popover closes, `onBlur` (if provided) is called with the current `value`.\n * - `renderLabel` must convert `value` to a readable string for the control button.\n * - `defaultParams` can be used to pass additional query parameters to the search endpoint\n *\n * @example\n * <BaseIdSearchInput\n * label=\"Owner\"\n * resource=\"user\"\n * value={ownerId}\n * onChange={setOwnerId}\n * renderLabel={(v, data) => data?.find(d => d.id === v)?.name ?? v}\n * />\n *\n * @testing\n * - Ensure API client is provided via context; assert keyboard navigation, open/close behavior, and `onBlur` call on popover close.\n */\nfunction BaseIdSearchInput<T extends BaseSearchableResource, V>({\n label,\n description,\n errorMessage,\n requiredIndicator,\n isDisabled,\n isInvalid,\n onBlur,\n path,\n onChange,\n value,\n renderLabel,\n accessor,\n getItemLabel,\n defaultParams,\n className,\n emptyOption,\n ...props\n}: FormFieldProps & {\n path: ClientPathsWithMethod<CtxClientType, 'get'>;\n /** Disable interactions. */\n isDisabled?: boolean;\n /** Whether the field is invalid. */\n isInvalid?: boolean;\n /** Key used to access an alternate display accessor on item (kept for compatibility). */\n accessor: keyof BaseSearchableResource;\n getItemLabel?: (item: T) => React.ReactNode;\n /** Controlled value. */\n value: V;\n /** Called when popover closes or the field blurs with the current value. */\n onBlur?: (v: V) => void;\n /** Controlled change handler. */\n onChange: (v: V) => void;\n /** Render a human-readable label for the current value using the latest data. */\n renderLabel: (v: V, data: T[] | undefined, emptyOption?: EmptyOption) => string | React.ReactNode;\n /** Default parameters to include in the request. This is useful when using /v3/users?role='admin' or /v3/organizations/ID/user-groups */\n defaultParams?: Record<'path' | 'query', any>;\n /** Optional className to customize the trigger button styling. */\n className?: string;\n /* Optional empty option to show when value is empty. */\n emptyOption?: EmptyOption;\n} & Omit<React.ComponentProps<typeof Menu>, 'items' | 'className'>) {\n if (path === '/v3/me') {\n throw Error('Path \"/v3/me\" is not supported with IdSearch since it is not a searchable resource.');\n }\n\n const generatedId = useId();\n const fieldId = props.id || generatedId;\n const client = useCtxClient();\n const itemLabel = getItemLabel ?? getResourceLabel;\n // Typeahead/search needs a plain string; fall back to the plain name when the label is a styled ReactNode.\n const itemTextValue = (item: T): string => {\n const label = itemLabel(item);\n return typeof label === 'string' ? label : getResourceLabel(item);\n };\n\n const [search, _setSearch] = useState('');\n const { data, isError, isFetching, error } = useQuery({\n // This is the schema that openapi-react-query follows as of 0.5.1\n queryKey: ['get', path, search],\n queryFn: async (): Promise<T[]> => {\n const result = await client.GET(path, {\n params: {\n query: {\n search,\n ...defaultParams?.query,\n limit: 50,\n page: 1,\n },\n path: {\n ...defaultParams?.path,\n },\n },\n });\n\n // Type narrowing: result.data is inferred as never due to complex union types\n // We use unknown to bypass this and then validate with our type guard\n const responseData: unknown = result.data;\n if (responseData && isSearchableResourceArray<T>(responseData)) {\n return responseData;\n }\n return [];\n },\n });\n\n return (\n <div className=\"group form-field\" data-invalid={isInvalid ? '' : undefined}>\n <FormField {...{ label, description, errorMessage, requiredIndicator, htmlFor: fieldId }}>\n <AriaSelect isInvalid={isInvalid}>\n <PopoverTrigger\n onOpenChange={o => {\n if (!o) {\n // searchInputRef.current?.focus();\n onBlur?.(value);\n }\n }}\n >\n <SelectTrigger id={fieldId} isDisabled={isDisabled} className={className ?? 'w-full'}>\n {renderLabel(value, data, emptyOption)}\n </SelectTrigger>\n <SelectPopover placement=\"bottom start\">\n <Autocomplete inputValue={search} onInputChange={_setSearch}>\n <SearchField className={'p-2'} autoFocus />\n {isFetching && (\n <div className=\"p-input\">\n <Loader className=\"mx-auto\" />\n </div>\n )}\n {!isFetching && !isError && (\n <Menu\n {...props}\n className={'max-h-48'}\n items={data}\n renderEmptyState={() => <div className=\"body-sm p-2\">No results found.</div>}\n >\n {item => {\n const itemId = item[accessor] ?? item.id;\n return (\n <MenuItem key={itemId} id={itemId} textValue={itemTextValue(item)}>\n {itemLabel(item)}\n </MenuItem>\n );\n }}\n </Menu>\n )}\n {isError && <div className=\"text-destructive p-icon body-sm\">{error.message}</div>}\n </Autocomplete>\n </SelectPopover>\n </PopoverTrigger>\n </AriaSelect>\n </FormField>\n </div>\n );\n}\n\n/**\n * Single-selection ID search input.\n *\n * Thin, typed wrapper around `BaseIdSearchInput` specialized for the very common single-ID case.\n * Adapts the internal selection events into `onChange(id?: string)` and renders the selected label.\n *\n * @template T - resource type (extends BaseSearchableResource)\n *\n * @param props - Inherits `BaseIdSearchInput` props but uses `string[]` value type.\n *\n * @example\n * <SingleIdSearchInput\n * label=\"Reporter\"\n * value={reporterId}\n * onChange={setReporterId}\n * />\n *\n */\nexport function SingleIdSearchInput<T extends BaseSearchableResource>({\n accessor,\n getItemLabel,\n ...props\n}: Omit<\n React.ComponentProps<typeof BaseIdSearchInput<T, string | null>>,\n 'onSelectionChange' | 'selectionMode' | 'selectedKeys' | 'renderLabel'\n>) {\n const selectedKeys = props.value ? [props.value] : [];\n const itemLabel = getItemLabel ?? getResourceLabel;\n\n return (\n <BaseIdSearchInput\n accessor={accessor}\n getItemLabel={getItemLabel}\n selectedKeys={selectedKeys}\n onSelectionChange={e => {\n const val = Array.from(e).filter(v => typeof v === 'string')[0];\n props.onChange(val);\n }}\n renderLabel={(v, d, emptyOption) => {\n // If value is empty and emptyOption is set, show the empty label\n if (emptyOption && isEmptyValue(v)) {\n return getEmptyLabel(emptyOption);\n }\n // Match on the same field the value was derived from (accessor), not always `id`.\n const match = d?.find(di => (di[accessor] ?? di.id) === v);\n return match ? itemLabel(match) : '';\n }}\n selectionMode=\"single\"\n {...props}\n />\n );\n}\n\n/**\n * Multi-selection ID search input.\n *\n * Thin wrapper around `BaseIdSearchInput` for the multiple-ID (`string[]`) case.\n * Adapts internal selection events into `onChange(ids: string[])`.\n *\n * @template T - resource type (extends BaseSearchableResource)\n *\n * @param props - Inherits `BaseIdSearchInput` props but uses `string[]` value type.\n *\n * @example\n * <MultipleIdSearchInput\n * label=\"Reviewers\"\n * value={reviewerIds}\n * onChange={setReviewerIds}\n * />\n *\n * @remarks\n * - The `renderLabel` joins selected item names with commas for compact display.\n */\nexport function MultipleIdSearchInput<T extends BaseSearchableResource>({\n accessor,\n getItemLabel,\n ...props\n}: Omit<\n React.ComponentProps<typeof BaseIdSearchInput<T, string[]>>,\n 'renderLabel' | 'onSelectionChange' | 'selectionMode' | 'selectedKeys'\n>) {\n const selectedKeys = props.value;\n const itemLabel = getItemLabel ?? getResourceLabel;\n\n return (\n <BaseIdSearchInput\n {...props}\n accessor={accessor}\n getItemLabel={getItemLabel}\n selectedKeys={selectedKeys}\n onSelectionChange={e => {\n const vals = Array.from(e).filter(v => typeof v === 'string');\n props.onChange(vals.length > 0 ? vals : []);\n }}\n selectionMode=\"multiple\"\n className=\"w-full h-auto items-start\"\n renderLabel={(v, d, emptyOption) => {\n // If array is empty and emptyOption is set, show the empty label\n if (emptyOption && (!v || v.length === 0)) {\n return getEmptyLabel(emptyOption);\n }\n\n const values = v ?? [];\n return (\n <TagGroup\n onRemove={keys => props.onChange(values.filter(value => !keys.has(value)))}\n items={values.map(value => {\n // Match on the same field the value was derived from (accessor), not always `id`.\n const match = d?.find(di => (di[accessor] ?? di.id) === value);\n const name = match ? itemLabel(match) : value;\n const textValue = typeof name === 'string' ? name : match ? getResourceLabel(match) : value;\n return {\n id: value,\n name,\n textValue,\n };\n })}\n >\n {item => (\n <Tag key={item.id} textValue={item.textValue}>\n {item.name}\n </Tag>\n )}\n </TagGroup>\n );\n }}\n />\n );\n}\n\n/**\n * Form-integrated single-select ID input (field wrapper).\n *\n * Integrates `SingleIdSearchInput` into the form system using `useFieldContext`.\n * - wires `value`, `onChange`, and `onBlur`\n * - disables the control while the form is submitting\n * - surfaces field-level error messages\n *\n * @example\n * <TfSingleIdSearchInput name=\"ownerId\" label=\"Owner\" />\n \n */\nexport function TfSingleIdSearchInput<T extends BaseSearchableResource>({\n isDisabled,\n ...props\n}: Omit<React.ComponentProps<typeof SingleIdSearchInput<T>>, 'value' | 'onChange' | 'onBlur'>) {\n const field = useFieldContext<string | null>({ disabled: isDisabled });\n return (\n <SingleIdSearchInput\n requiredIndicator={field.isRequired}\n isDisabled={isDisabled || field.isSubmitting}\n value={field.state.value}\n onBlur={_ => field.handleBlur()}\n onChange={e => field.handleChange(e)}\n isInvalid={!!getFieldErrorMessage(field)}\n errorMessage={getFieldErrorMessage(field)}\n {...props}\n />\n );\n}\n\n/**\n * Form-integrated multi-select ID input (field wrapper).\n *\n * Integrates `MultipleIdSearchInput` into the form system using `useFieldContext`.\n * - wires `value`, `onChange`, and `onBlur`\n * - disables the control while the form is submitting\n * - surfaces field-level error messages\n *\n * @example\n * <TfMultipleIdSearchInput name=\"reviewerIds\" label=\"Reviewers\" />\n *\n */\nexport function TfMultipleIdSearchInput<T extends BaseSearchableResource>({\n isDisabled,\n ...props\n}: Omit<React.ComponentProps<typeof MultipleIdSearchInput<T>>, 'value' | 'onChange'>) {\n const field = useFieldContext<string[]>({ disabled: isDisabled });\n return (\n <MultipleIdSearchInput\n requiredIndicator={field.isRequired}\n isDisabled={isDisabled || field.isSubmitting}\n value={field.state.value}\n onBlur={_ => field.handleBlur()}\n onChange={e => field.handleChange(e)}\n isInvalid={!!getFieldErrorMessage(field)}\n errorMessage={getFieldErrorMessage(field)}\n {...props}\n />\n );\n}\n"],"mappings":"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"}
@@ -12,4 +12,4 @@ export interface KbdProps {
12
12
  isDisabled?: boolean;
13
13
  className?: string;
14
14
  }
15
- export declare function Kbd({ value, isDisabled, className }: KbdProps): import("react/jsx-runtime").JSX.Element;
15
+ export declare function Kbd({ value, isDisabled, className }: KbdProps): import("react").JSX.Element;
@@ -1,2 +1,2 @@
1
- "use client";import{jsx as t,jsxs as c}from"react/jsx-runtime";import{classNames as p}from"../utilities/theme.js";import"clsx";function d({value:e,isDisabled:r,className:s}){const a=Array.isArray(e)?e:[e];return t("div",{"aria-hidden":!0,className:p("inline-flex items-center gap-0.5 px-1 rounded-full py-0.5 body-sm leading-tight bg-neutral-2 text-accent whitespace-nowrap","transition-opacity duration-150",r&&"opacity-50",s),children:a.map((i,n)=>c("span",{className:"flex items-center gap-0.5",children:[t("span",{children:i}),n<a.length-1&&t("span",{className:"text-xs opacity-50",children:"+"})]},`${i}-${n}`))})}export{d as Kbd};
2
- //# sourceMappingURL=kbd.js.map
1
+ "use client";import{classNames as e}from"../utilities/theme.js";import{jsx as t,jsxs as n}from"react/jsx-runtime";function r({value:r,isDisabled:i,className:a}){let o=Array.isArray(r)?r:[r];return t(`div`,{"aria-hidden":!0,className:e(`inline-flex items-center gap-0.5 px-1 rounded-full py-0.5 body-sm leading-tight bg-neutral-2 text-accent whitespace-nowrap`,`transition-opacity duration-150`,i&&`opacity-50`,a),children:o.map((e,r)=>n(`span`,{className:`flex items-center gap-0.5`,children:[t(`span`,{children:e}),r<o.length-1&&t(`span`,{className:`text-xs opacity-50`,children:`+`})]},`${e}-${r}`))})}export{r as Kbd};
2
+ //# sourceMappingURL=kbd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"kbd.js","sources":["../../lib/components/kbd.tsx"],"sourcesContent":["'use client';\nimport { classNames } from '../utilities/theme';\n\n/**\n * Keyboard shortcut hint component that displays keyboard combinations.\n * @example\n * ```tsx\n * <Kbd value=\"⌘K\" />\n * <Kbd value={[\"Ctrl\", \"Shift\", \"P\"]} />\n * <Kbd value=\"⌘J\" isDisabled />\n * ```\n */\nexport interface KbdProps {\n value: string | string[];\n isDisabled?: boolean;\n className?: string;\n}\n\nexport function Kbd({ value, isDisabled, className }: KbdProps) {\n const keys = Array.isArray(value) ? value : [value];\n\n return (\n <div\n aria-hidden={true}\n className={classNames(\n 'inline-flex items-center gap-0.5 px-1 rounded-full py-0.5 body-sm leading-tight bg-neutral-2 text-accent whitespace-nowrap',\n 'transition-opacity duration-150',\n isDisabled && 'opacity-50',\n className\n )}\n >\n {keys.map((key, index) => (\n <span key={`${key}-${index}`} className=\"flex items-center gap-0.5\">\n <span>{key}</span>\n {index < keys.length - 1 && <span className=\"text-xs opacity-50\">+</span>}\n </span>\n ))}\n </div>\n );\n}\n"],"names":["Kbd","value","isDisabled","className","keys","jsx","classNames","key","index","jsxs"],"mappings":"+HAkBO,SAASA,EAAI,CAAE,MAAAC,EAAO,WAAAC,EAAY,UAAAC,GAAuB,CAC5D,MAAMC,EAAO,MAAM,QAAQH,CAAK,EAAIA,EAAQ,CAACA,CAAK,EAElD,OACII,EAAC,MAAA,CACG,cAAa,GACb,UAAWC,EACP,6HACA,kCACAJ,GAAc,aACdC,CAAA,EAGH,SAAAC,EAAK,IAAI,CAACG,EAAKC,IACZC,EAAC,OAAA,CAA6B,UAAU,4BACpC,SAAA,CAAAJ,EAAC,QAAM,SAAAE,CAAA,CAAI,EACVC,EAAQJ,EAAK,OAAS,KAAM,OAAA,CAAK,UAAU,qBAAqB,SAAA,GAAA,CAAC,CAAA,CAAA,EAF3D,GAAGG,CAAG,IAAIC,CAAK,EAG1B,CACH,CAAA,CAAA,CAGb"}
1
+ {"version":3,"file":"kbd.js","names":[],"sources":["../../lib/components/kbd.tsx"],"sourcesContent":["'use client';\nimport { classNames } from '../utilities/theme';\n\n/**\n * Keyboard shortcut hint component that displays keyboard combinations.\n * @example\n * ```tsx\n * <Kbd value=\"⌘K\" />\n * <Kbd value={[\"Ctrl\", \"Shift\", \"P\"]} />\n * <Kbd value=\"⌘J\" isDisabled />\n * ```\n */\nexport interface KbdProps {\n value: string | string[];\n isDisabled?: boolean;\n className?: string;\n}\n\nexport function Kbd({ value, isDisabled, className }: KbdProps) {\n const keys = Array.isArray(value) ? value : [value];\n\n return (\n <div\n aria-hidden={true}\n className={classNames(\n 'inline-flex items-center gap-0.5 px-1 rounded-full py-0.5 body-sm leading-tight bg-neutral-2 text-accent whitespace-nowrap',\n 'transition-opacity duration-150',\n isDisabled && 'opacity-50',\n className\n )}\n >\n {keys.map((key, index) => (\n <span key={`${key}-${index}`} className=\"flex items-center gap-0.5\">\n <span>{key}</span>\n {index < keys.length - 1 && <span className=\"text-xs opacity-50\">+</span>}\n </span>\n ))}\n </div>\n );\n}\n"],"mappings":"kHAkBA,SAAgB,EAAI,CAAE,QAAO,aAAY,aAAuB,CAC5D,IAAM,EAAO,MAAM,QAAQ,CAAK,EAAI,EAAQ,CAAC,CAAK,EAElD,OACI,EAAC,MAAD,CACI,cAAa,GACb,UAAW,EACP,6HACA,kCACA,GAAc,aACd,CACJ,EAEC,SAAA,EAAK,KAAK,EAAK,IACZ,EAAC,OAAD,CAA8B,UAAU,4BAAxC,SAAA,CACI,EAAC,OAAD,CAAA,SAAO,CAAU,CAAA,EAChB,EAAQ,EAAK,OAAS,GAAK,EAAC,OAAD,CAAM,UAAU,qBAAqB,SAAA,GAAO,CAAA,CACtE,CAHK,EAAA,GAAG,EAAI,GAAG,GAGf,CACT,CACA,CAAA,CAEb"}
@@ -1,5 +1,5 @@
1
1
  import { Collection as AriaCollection, Header as AriaHeader, ListBoxItemProps as AriaListBoxItemProps, ListBoxProps as AriaListBoxProps } from 'react-aria-components';
2
2
  export declare const ListBoxCollection: typeof AriaCollection;
3
- export declare function ListBox<T extends object>({ className, ...props }: AriaListBoxProps<T>): import("react/jsx-runtime").JSX.Element;
4
- export declare function ListBoxItem<T extends object>({ className, children, ...props }: AriaListBoxItemProps<T>): import("react/jsx-runtime").JSX.Element;
5
- export declare function ListBoxHeader({ className, ...props }: React.ComponentProps<typeof AriaHeader>): import("react/jsx-runtime").JSX.Element;
3
+ export declare function ListBox<T extends object>({ className, ...props }: AriaListBoxProps<T>): import("react").JSX.Element;
4
+ export declare function ListBoxItem<T extends object>({ className, children, ...props }: AriaListBoxItemProps<T>): import("react").JSX.Element;
5
+ export declare function ListBoxHeader({ className, ...props }: React.ComponentProps<typeof AriaHeader>): import("react").JSX.Element;
@@ -1,2 +1,2 @@
1
- import{jsx as o,jsxs as n,Fragment as l}from"react/jsx-runtime";import{ListBoxItem as p,composeRenderProps as r,Collection as c,ListBox as u,Header as x}from"react-aria-components";import{classNames as a}from"../utilities/theme.js";import{IcCheck as d}from"./icons.js";import"clsx";import"@icons-pack/react-simple-icons";import"react";const j=c;function I({className:e,...t}){return o(u,{className:r(e,s=>a(s,"group overflow-auto border bg-surface-primary p-1 text-text-primary outline-none","data-[empty]:p-6 data-[empty]:text-center data-[empty]:body-sm")),...t})}function h({className:e,children:t,...s}){return o(p,{textValue:s.textValue||(typeof t=="string"?t:void 0),className:r(e,i=>a("btn btn-ghost justify-start input-dim relative w-full","data-[selection-mode]:pl-input",i)),...s,children:r(t,(i,m)=>n(l,{children:[m.isSelected&&o("span",{className:"absolute left-2 flex size-icon items-center justify-center",children:o(d,{className:"size-icon"})}),i]}))})}function v({className:e,...t}){return o(x,{className:a("py-1.5 pl-input pr-2 body font-semibold",e),...t})}export{I as ListBox,j as ListBoxCollection,v as ListBoxHeader,h as ListBoxItem};
2
- //# sourceMappingURL=list-box.js.map
1
+ import{classNames as e}from"../utilities/theme.js";import{c as t}from"../icons.js";import{Fragment as n,jsx as r,jsxs as i}from"react/jsx-runtime";import{Collection as a,Header as o,ListBox as s,ListBoxItem as c,composeRenderProps as l}from"react-aria-components";var u=a;function d({className:t,...n}){return r(s,{className:l(t,t=>e(t,`group overflow-auto border bg-surface-primary p-1 text-text-primary outline-none`,`data-[empty]:p-6 data-[empty]:text-center data-[empty]:body-sm`)),...n})}function f({className:a,children:o,...s}){return r(c,{textValue:s.textValue||(typeof o==`string`?o:void 0),className:l(a,t=>e(`btn btn-ghost justify-start input-dim relative w-full`,`data-[selection-mode]:pl-input`,t)),...s,children:l(o,(e,a)=>i(n,{children:[a.isSelected&&r(`span`,{className:`absolute left-2 flex size-icon items-center justify-center`,children:r(t,{className:`size-icon`})}),e]}))})}function p({className:t,...n}){return r(o,{className:e(`py-1.5 pl-input pr-2 body font-semibold`,t),...n})}export{d as ListBox,u as ListBoxCollection,p as ListBoxHeader,f as ListBoxItem};
2
+ //# sourceMappingURL=list-box.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"list-box.js","sources":["../../lib/components/list-box.tsx"],"sourcesContent":["import {\n Collection as AriaCollection,\n Header as AriaHeader,\n ListBox as AriaListBox,\n ListBoxItem as AriaListBoxItem,\n ListBoxItemProps as AriaListBoxItemProps,\n ListBoxProps as AriaListBoxProps,\n composeRenderProps,\n} from 'react-aria-components';\n\nimport { classNames } from '../utilities/theme';\nimport { IcCheck } from './icons';\n\nexport const ListBoxCollection = AriaCollection;\n\nexport function ListBox<T extends object>({ className, ...props }: AriaListBoxProps<T>) {\n return (\n <AriaListBox\n className={composeRenderProps(className, className =>\n classNames(\n className,\n 'group overflow-auto border bg-surface-primary p-1 text-text-primary outline-none',\n /* Empty */\n 'data-[empty]:p-6 data-[empty]:text-center data-[empty]:body-sm'\n )\n )}\n {...props}\n />\n );\n}\n\nexport function ListBoxItem<T extends object>({ className, children, ...props }: AriaListBoxItemProps<T>) {\n return (\n <AriaListBoxItem\n textValue={props.textValue || (typeof children === 'string' ? children : undefined)}\n className={composeRenderProps(className, className =>\n classNames(\n 'btn btn-ghost justify-start input-dim relative w-full',\n /* Selection */\n 'data-[selection-mode]:pl-input',\n className\n )\n )}\n {...props}\n >\n {composeRenderProps(children, (children, renderProps) => (\n <>\n {renderProps.isSelected && (\n <span className=\"absolute left-2 flex size-icon items-center justify-center\">\n <IcCheck className=\"size-icon\" />\n </span>\n )}\n {children}\n </>\n ))}\n </AriaListBoxItem>\n );\n}\n\nexport function ListBoxHeader({ className, ...props }: React.ComponentProps<typeof AriaHeader>) {\n return <AriaHeader className={classNames('py-1.5 pl-input pr-2 body font-semibold', className)} {...props} />;\n}\n"],"names":["ListBoxCollection","AriaCollection","ListBox","className","props","jsx","AriaListBox","composeRenderProps","classNames","ListBoxItem","children","AriaListBoxItem","renderProps","jsxs","Fragment","IcCheck","ListBoxHeader","AriaHeader"],"mappings":"+UAaO,MAAMA,EAAoBC,EAE1B,SAASC,EAA0B,CAAE,UAAAC,EAAW,GAAGC,GAA8B,CACpF,OACIC,EAACC,EAAA,CACG,UAAWC,EAAmBJ,EAAWA,GACrCK,EACIL,EACA,mFAEA,gEAAA,CACJ,EAEH,GAAGC,CAAA,CAAA,CAGhB,CAEO,SAASK,EAA8B,CAAE,UAAAN,EAAW,SAAAO,EAAU,GAAGN,GAAkC,CACtG,OACIC,EAACM,EAAA,CACG,UAAWP,EAAM,YAAc,OAAOM,GAAa,SAAWA,EAAW,QACzE,UAAWH,EAAmBJ,EAAWA,GACrCK,EACI,wDAEA,iCACAL,CAAA,CACJ,EAEH,GAAGC,EAEH,SAAAG,EAAmBG,EAAU,CAACA,EAAUE,IACrCC,EAAAC,EAAA,CACK,SAAA,CAAAF,EAAY,cACR,OAAA,CAAK,UAAU,6DACZ,SAAAP,EAACU,EAAA,CAAQ,UAAU,WAAA,CAAY,CAAA,CACnC,EAEHL,CAAA,EACL,CACH,CAAA,CAAA,CAGb,CAEO,SAASM,EAAc,CAAE,UAAAb,EAAW,GAAGC,GAAkD,CAC5F,OAAOC,EAACY,GAAW,UAAWT,EAAW,0CAA2CL,CAAS,EAAI,GAAGC,EAAO,CAC/G"}
1
+ {"version":3,"file":"list-box.js","names":[],"sources":["../../lib/components/list-box.tsx"],"sourcesContent":["import {\n Collection as AriaCollection,\n Header as AriaHeader,\n ListBox as AriaListBox,\n ListBoxItem as AriaListBoxItem,\n ListBoxItemProps as AriaListBoxItemProps,\n ListBoxProps as AriaListBoxProps,\n composeRenderProps,\n} from 'react-aria-components';\n\nimport { classNames } from '../utilities/theme';\nimport { IcCheck } from './icons';\n\nexport const ListBoxCollection = AriaCollection;\n\nexport function ListBox<T extends object>({ className, ...props }: AriaListBoxProps<T>) {\n return (\n <AriaListBox\n className={composeRenderProps(className, className =>\n classNames(\n className,\n 'group overflow-auto border bg-surface-primary p-1 text-text-primary outline-none',\n /* Empty */\n 'data-[empty]:p-6 data-[empty]:text-center data-[empty]:body-sm'\n )\n )}\n {...props}\n />\n );\n}\n\nexport function ListBoxItem<T extends object>({ className, children, ...props }: AriaListBoxItemProps<T>) {\n return (\n <AriaListBoxItem\n textValue={props.textValue || (typeof children === 'string' ? children : undefined)}\n className={composeRenderProps(className, className =>\n classNames(\n 'btn btn-ghost justify-start input-dim relative w-full',\n /* Selection */\n 'data-[selection-mode]:pl-input',\n className\n )\n )}\n {...props}\n >\n {composeRenderProps(children, (children, renderProps) => (\n <>\n {renderProps.isSelected && (\n <span className=\"absolute left-2 flex size-icon items-center justify-center\">\n <IcCheck className=\"size-icon\" />\n </span>\n )}\n {children}\n </>\n ))}\n </AriaListBoxItem>\n );\n}\n\nexport function ListBoxHeader({ className, ...props }: React.ComponentProps<typeof AriaHeader>) {\n return <AriaHeader className={classNames('py-1.5 pl-input pr-2 body font-semibold', className)} {...props} />;\n}\n"],"mappings":"wQAaA,IAAa,EAAoB,EAEjC,SAAgB,EAA0B,CAAE,YAAW,GAAG,GAA8B,CACpF,OACI,EAAC,EAAD,CACI,UAAW,EAAmB,EAAW,GACrC,EACI,EACA,mFAEA,gEACJ,CACJ,EACA,GAAI,CACP,CAAA,CAET,CAEA,SAAgB,EAA8B,CAAE,YAAW,WAAU,GAAG,GAAkC,CACtG,OACI,EAAC,EAAD,CACI,UAAW,EAAM,YAAc,OAAO,GAAa,SAAW,EAAW,IAAA,IACzE,UAAW,EAAmB,EAAW,GACrC,EACI,wDAEA,iCACA,CACJ,CACJ,EACA,GAAI,EAEH,SAAA,EAAmB,GAAW,EAAU,IACrC,EAAA,EAAA,CAAA,SAAA,CACK,EAAY,YACT,EAAC,OAAD,CAAM,UAAU,6DACZ,SAAA,EAAC,EAAD,CAAS,UAAU,WAAa,CAAA,CAC9B,CAAA,EAET,CACH,CAAA,CAAA,CACL,CACY,CAAA,CAEzB,CAEA,SAAgB,EAAc,CAAE,YAAW,GAAG,GAAkD,CAC5F,OAAO,EAAC,EAAD,CAAY,UAAW,EAAW,0CAA2C,CAAS,EAAG,GAAI,CAAQ,CAAA,CAChH"}
@@ -1,5 +1,5 @@
1
1
  interface LoaderProps {
2
2
  className?: string;
3
3
  }
4
- export declare function Loader({ className }: LoaderProps): import("react/jsx-runtime").JSX.Element;
4
+ export declare function Loader({ className }: LoaderProps): import("react").JSX.Element;
5
5
  export {};
@@ -1,2 +1,2 @@
1
- import{jsx as o}from"react/jsx-runtime";import{classNames as t}from"../utilities/theme.js";import{IcLoader as m}from"./icons.js";import"clsx";import"@icons-pack/react-simple-icons";import"react";function c({className:r}){return o(m,{className:t("animate-spin size-icon text-text-primary",r)})}export{c as Loader};
2
- //# sourceMappingURL=loader.js.map
1
+ import{classNames as e}from"../utilities/theme.js";import{Q as t}from"../icons.js";import{jsx as n}from"react/jsx-runtime";function r({className:r}){return n(t,{className:e(`animate-spin size-icon text-text-primary`,r)})}export{r as Loader};
2
+ //# sourceMappingURL=loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sources":["../../lib/components/loader.tsx"],"sourcesContent":["import { classNames } from '../utilities/theme';\nimport { IcLoader } from './icons';\n\ninterface LoaderProps {\n className?: string; // Define props interface\n}\n\nexport function Loader({ className }: LoaderProps) {\n return <IcLoader className={classNames(`animate-spin size-icon text-text-primary`, className)} />;\n}\n"],"names":["Loader","className","IcLoader","classNames"],"mappings":"mMAOO,SAASA,EAAO,CAAE,UAAAC,GAA0B,CAC/C,SAAQC,EAAA,CAAS,UAAWC,EAAW,2CAA4CF,CAAS,EAAG,CACnG"}
1
+ {"version":3,"file":"loader.js","names":[],"sources":["../../lib/components/loader.tsx"],"sourcesContent":["import { classNames } from '../utilities/theme';\nimport { IcLoader } from './icons';\n\ninterface LoaderProps {\n className?: string; // Define props interface\n}\n\nexport function Loader({ className }: LoaderProps) {\n return <IcLoader className={classNames(`animate-spin size-icon text-text-primary`, className)} />;\n}\n"],"mappings":"2HAOA,SAAgB,EAAO,CAAE,aAA0B,CAC/C,OAAO,EAAC,EAAD,CAAU,UAAW,EAAW,2CAA4C,CAAS,CAAI,CAAA,CACpG"}