@uselets/ui 2.0.2 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -0
- package/dist/checkbox-group-context-HDVxTNPi.js +2 -0
- package/dist/checkbox-group-context-HDVxTNPi.js.map +1 -0
- package/dist/combobox-styles-CZ0aJayc.js +2 -0
- package/dist/combobox-styles-CZ0aJayc.js.map +1 -0
- package/dist/components/autocomplete.d.ts +46 -0
- package/dist/components/autocomplete.js +2 -0
- package/dist/components/autocomplete.js.map +1 -0
- package/dist/components/badge.js +1 -1
- package/dist/components/button.js +1 -1
- package/dist/components/checkbox-group.d.ts +19 -0
- package/dist/components/checkbox-group.js +2 -0
- package/dist/components/checkbox-group.js.map +1 -0
- package/dist/components/checkbox.d.ts +2 -2
- package/dist/components/checkbox.js +1 -1
- package/dist/components/checkbox.js.map +1 -1
- package/dist/components/combobox.js +1 -1
- package/dist/components/combobox.js.map +1 -1
- package/dist/components/command.js +1 -1
- package/dist/components/data-table.js +1 -1
- package/dist/components/dropzone.js +1 -1
- package/dist/components/dropzone.js.map +1 -1
- package/dist/components/field.js +1 -1
- package/dist/components/mask-input.d.ts +1 -1
- package/dist/components/mask-input.js +1 -1
- package/dist/components/meter.d.ts +21 -0
- package/dist/components/meter.js +2 -0
- package/dist/components/meter.js.map +1 -0
- package/dist/components/number-field.js +1 -1
- package/dist/components/phone-input.js +1 -1
- package/dist/components/progress.js +1 -1
- package/dist/components/progress.js.map +1 -1
- package/dist/components/radio-group.js +1 -1
- package/dist/components/ring-progress.js +1 -1
- package/dist/components/sidebar.d.ts +1 -1
- package/dist/components/sidebar.js +1 -1
- package/dist/components/sidebar.js.map +1 -1
- package/dist/components/stepper.js +1 -1
- package/dist/components/stepper.js.map +1 -1
- package/dist/components/switch.js +1 -1
- package/dist/components/toggle.js +1 -1
- package/dist/components/toolbar.d.ts +30 -0
- package/dist/components/toolbar.js +2 -0
- package/dist/components/toolbar.js.map +1 -0
- package/dist/index.d.ts +20 -16
- package/dist/index.js +1 -1
- package/dist/skills/uselets-ui/SKILL.md +3 -3
- package/dist/skills/uselets-ui/references/component-catalog.md +14 -2
- package/dist/skills/uselets-ui/references/package-guide.md +3 -3
- package/package.json +9 -9
- package/skills/uselets-ui/SKILL.md +3 -3
- package/skills/uselets-ui/references/component-catalog.md +14 -2
- package/skills/uselets-ui/references/package-guide.md +3 -3
package/README.md
CHANGED
|
@@ -269,6 +269,7 @@ Every component has a [Storybook](https://storybook.uselets.com) page with live
|
|
|
269
269
|
| [UnstyledButton][unstyledbutton] | Button with reset styles and a focus ring |
|
|
270
270
|
| [ButtonGroup][buttongroup] | Groups buttons together |
|
|
271
271
|
| [Toggle][toggle], [ToggleGroup][togglegroup] | Pressable toggles (`multiple` for several pressed) |
|
|
272
|
+
| [Toolbar][toolbar] | Action bar with arrow-key navigation; `ToolbarButton` takes `Button` styles |
|
|
272
273
|
|
|
273
274
|
**Forms**
|
|
274
275
|
|
|
@@ -282,7 +283,9 @@ Every component has a [Storybook](https://storybook.uselets.com) page with live
|
|
|
282
283
|
| [InputOTP][inputotp] | One-time code input |
|
|
283
284
|
| [Select][select], [NativeSelect][nativeselect] | Custom select (`items` maps values to labels); native `<select>` |
|
|
284
285
|
| [Combobox][combobox] | Searchable select, with chips for multiple values |
|
|
286
|
+
| [Autocomplete][autocomplete] | Free-text input with suggestions (search, address) |
|
|
285
287
|
| [Checkbox][checkbox], [RadioGroup][radiogroup], [Switch][switch] | Choice controls with built-in `label` and `description` |
|
|
288
|
+
| [CheckboxGroup][checkboxgroup] | Shared value for several checkboxes, with an optional "select all" parent |
|
|
286
289
|
| [Slider][slider] | Single value or range |
|
|
287
290
|
| [Calendar][calendar], [DateRangePicker][daterangepicker] | Date calendar; range picker with presets and apply/reset |
|
|
288
291
|
| [Dropzone][dropzone] | File upload with validation and retries (`useDropzone`) |
|
|
@@ -316,6 +319,7 @@ Every component has a [Storybook](https://storybook.uselets.com) page with live
|
|
|
316
319
|
| [Alert][alert] | Inline message (`default` or `destructive`) |
|
|
317
320
|
| [Toast][toast] | `Toaster` + `toast()` |
|
|
318
321
|
| [Progress][progress], [RingProgress][ringprogress] | Linear and circular progress (`value` 0–100) |
|
|
322
|
+
| [Meter][meter] | Measurement within a known range (usage, capacity, share of a total) |
|
|
319
323
|
| [Spinner][spinner], [Skeleton][skeleton] | Loading indicator; loading placeholder |
|
|
320
324
|
| [Empty][empty] | Empty state |
|
|
321
325
|
|
|
@@ -361,6 +365,7 @@ Exported from the package root and from `@uselets/ui/hooks/<name>`.
|
|
|
361
365
|
[alertdialog]: https://storybook.uselets.com/?path=/docs/components-overlay-alertdialog--docs
|
|
362
366
|
[anchor]: https://storybook.uselets.com/?path=/docs/components-typography-anchor--docs
|
|
363
367
|
[areachart]: https://storybook.uselets.com/?path=/docs/components-charts-areachart--docs
|
|
368
|
+
[autocomplete]: https://storybook.uselets.com/?path=/docs/components-forms-autocomplete--docs
|
|
364
369
|
[avatar]: https://storybook.uselets.com/?path=/docs/components-data-display-avatar--docs
|
|
365
370
|
[badge]: https://storybook.uselets.com/?path=/docs/components-data-display-badge--docs
|
|
366
371
|
[barchart]: https://storybook.uselets.com/?path=/docs/components-charts-barchart--docs
|
|
@@ -373,6 +378,7 @@ Exported from the package root and from `@uselets/ui/hooks/<name>`.
|
|
|
373
378
|
[carousel]: https://storybook.uselets.com/?path=/docs/components-layout-carousel--docs
|
|
374
379
|
[center]: https://storybook.uselets.com/?path=/docs/components-layout-center--docs
|
|
375
380
|
[checkbox]: https://storybook.uselets.com/?path=/docs/components-forms-checkbox--docs
|
|
381
|
+
[checkboxgroup]: https://storybook.uselets.com/?path=/docs/components-forms-checkboxgroup--docs
|
|
376
382
|
[code]: https://storybook.uselets.com/?path=/docs/components-typography-code--docs
|
|
377
383
|
[collapsible]: https://storybook.uselets.com/?path=/docs/components-layout-collapsible--docs
|
|
378
384
|
[combobox]: https://storybook.uselets.com/?path=/docs/components-forms-combobox--docs
|
|
@@ -402,6 +408,7 @@ Exported from the package root and from `@uselets/ui/hooks/<name>`.
|
|
|
402
408
|
[logo]: https://storybook.uselets.com/?path=/docs/components-media-logo--docs
|
|
403
409
|
[marker]: https://storybook.uselets.com/?path=/docs/components-layout-marker--docs
|
|
404
410
|
[maskinput]: https://storybook.uselets.com/?path=/docs/components-forms-maskinput--docs
|
|
411
|
+
[meter]: https://storybook.uselets.com/?path=/docs/components-feedback-meter--docs
|
|
405
412
|
[nativeselect]: https://storybook.uselets.com/?path=/docs/components-forms-native-select--docs
|
|
406
413
|
[navigationmenu]: https://storybook.uselets.com/?path=/docs/components-navigation-navigationmenu--docs
|
|
407
414
|
[numberfield]: https://storybook.uselets.com/?path=/docs/components-forms-number-field--docs
|
|
@@ -433,6 +440,7 @@ Exported from the package root and from `@uselets/ui/hooks/<name>`.
|
|
|
433
440
|
[toast]: https://storybook.uselets.com/?path=/docs/components-feedback-toast--docs
|
|
434
441
|
[toggle]: https://storybook.uselets.com/?path=/docs/components-button-toggle--docs
|
|
435
442
|
[togglegroup]: https://storybook.uselets.com/?path=/docs/components-button-togglegroup--docs
|
|
443
|
+
[toolbar]: https://storybook.uselets.com/?path=/docs/components-button-toolbar--docs
|
|
436
444
|
[tooltip]: https://storybook.uselets.com/?path=/docs/components-overlay-tooltip--docs
|
|
437
445
|
[unstyledbutton]: https://storybook.uselets.com/?path=/docs/components-button-unstyledbutton--docs
|
|
438
446
|
[usebreakpoint]: https://storybook.uselets.com/?path=/docs/hooks-browser-usebreakpoint--docs
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkbox-group-context-HDVxTNPi.js","names":["CheckboxGroupContext","createContext"],"sources":["../src/utils/checkbox-group-context.ts"],"sourcesContent":["import { createContext } from 'react'\n\nimport type { UIColor } from '../lib/color'\n\ntype CheckboxGroupContextValue = {\n // The `Field` control id claimed by the enclosing `CheckboxGroup`. Checkboxes must not reuse it (every one\n // would share one id); a checkbox only takes a Field control id when it sits in its own nested `Field`.\n fieldControlId: string | undefined\n color: UIColor\n}\n\nexport const CheckboxGroupContext = createContext<CheckboxGroupContextValue | null>(null)\n"],"mappings":"A,sCAWA,MAAaA,EAAuBC,EAAgD,IAAI,E"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{cn as e}from"./lib/utils.js";const t=e(`group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+(--spacing(7)))] origin-(--transform-origin) overflow-hidden rounded-lg bg-popover/70 text-popover-foreground shadow-md ring-1 ring-foreground/10`,`before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150`,`data-[chips=true]:min-w-(--anchor-width)`,`duration-100 animate-none! data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95`,`data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2`,`*:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none`,`**:data-[slot$=-item]:focus:bg-foreground/10 **:data-[slot$=-item]:data-highlighted:bg-foreground/10 **:data-[slot$=-separator]:bg-foreground/5 **:data-[slot$=-trigger]:focus:bg-foreground/10 **:data-[slot$=-trigger]:aria-expanded:bg-foreground/10!`,`**:data-[variant=destructive]:focus:bg-foreground/10! **:data-[variant=destructive]:text-accent-foreground! **:data-[variant=destructive]:**:text-accent-foreground!`),n=e(`no-scrollbar max-h-[min(calc(--spacing(72)-(--spacing(9))),calc(var(--available-height)-(--spacing(9))))] scroll-py-1 overflow-y-auto overscroll-contain p-1`,`data-empty:p-0`),r=e(`relative flex w-full cursor-default items-center gap-2 rounded-md py-1 pl-1.5 text-sm outline-hidden select-none`,`[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,`data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground`,`data-disabled:pointer-events-none data-disabled:opacity-50`),i=e(`px-2 py-1.5 text-xs text-muted-foreground`),a=e(`hidden w-full justify-center py-2 text-center text-sm text-muted-foreground`,`group-data-empty/combobox-content:flex`),o=e(`-mx-1 my-1 h-px bg-border`);export{t as a,n as i,i as n,o,r,a as t};
|
|
2
|
+
//# sourceMappingURL=combobox-styles-CZ0aJayc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combobox-styles-CZ0aJayc.js","names":["comboboxPopupClassName","cn","comboboxListClassName","comboboxItemClassName","comboboxGroupLabelClassName","comboboxEmptyClassName","comboboxSeparatorClassName"],"sources":["../src/utils/combobox-styles.ts"],"sourcesContent":["import { cn } from '../lib/utils'\n\n// Classes shared by `Combobox` and `Autocomplete`, which render the same Base UI popup parts.\n\nexport const comboboxPopupClassName = cn(\n 'group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+(--spacing(7)))] origin-(--transform-origin) overflow-hidden rounded-lg bg-popover/70 text-popover-foreground shadow-md ring-1 ring-foreground/10',\n 'before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150',\n 'data-[chips=true]:min-w-(--anchor-width)',\n 'duration-100 animate-none! data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95',\n 'data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n '*:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none',\n '**:data-[slot$=-item]:focus:bg-foreground/10 **:data-[slot$=-item]:data-highlighted:bg-foreground/10 **:data-[slot$=-separator]:bg-foreground/5 **:data-[slot$=-trigger]:focus:bg-foreground/10 **:data-[slot$=-trigger]:aria-expanded:bg-foreground/10!',\n '**:data-[variant=destructive]:focus:bg-foreground/10! **:data-[variant=destructive]:text-accent-foreground! **:data-[variant=destructive]:**:text-accent-foreground!'\n)\n\nexport const comboboxListClassName = cn(\n 'no-scrollbar max-h-[min(calc(--spacing(72)-(--spacing(9))),calc(var(--available-height)-(--spacing(9))))] scroll-py-1 overflow-y-auto overscroll-contain p-1',\n 'data-empty:p-0'\n)\n\n// Without the end padding: `Combobox` reserves room for its check indicator, `Autocomplete` has none.\nexport const comboboxItemClassName = cn(\n 'relative flex w-full cursor-default items-center gap-2 rounded-md py-1 pl-1.5 text-sm outline-hidden select-none',\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n 'data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground',\n 'data-disabled:pointer-events-none data-disabled:opacity-50'\n)\n\nexport const comboboxGroupLabelClassName = cn('px-2 py-1.5 text-xs text-muted-foreground')\n\nexport const comboboxEmptyClassName = cn(\n 'hidden w-full justify-center py-2 text-center text-sm text-muted-foreground',\n 'group-data-empty/combobox-content:flex'\n)\n\nexport const comboboxSeparatorClassName = cn('-mx-1 my-1 h-px bg-border')\n"],"mappings":"A,oCAIA,MAAaA,EAAyBC,EACpC,4RACA,uJACA,2CACA,kKACA,yPACA,mNACA,2PACA,sKACF,EAEaC,EAAwBD,EACnC,+JACA,gBACF,EAGaE,EAAwBF,EACnC,mHACA,oFACA,+IACA,4DACF,EAEaG,EAA8BH,EAAG,2CAA2C,EAE5EI,EAAyBJ,EACpC,8EACA,wCACF,EAEaK,EAA6BL,EAAG,2BAA2B,E"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { t as __name } from "../rolldown-runtime-BhWHdk3m.js";
|
|
2
|
+
import { t as AsChildPrimitiveProps } from "../as-child-T9W73ZYU.js";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { Autocomplete as Autocomplete$1 } from "@base-ui/react/autocomplete";
|
|
5
|
+
export type AutocompleteProps<ItemValue = unknown> = Autocomplete$1.Root.Props<ItemValue>;
|
|
6
|
+
export type AutocompleteInputProps = Omit<Autocomplete$1.Input.Props, 'render' | 'className'> & {
|
|
7
|
+
/** Classes for the input group that wraps the input and its buttons. */
|
|
8
|
+
className?: string;
|
|
9
|
+
/** Icon shown at the start of the input. */
|
|
10
|
+
icon?: React.ReactNode;
|
|
11
|
+
/**
|
|
12
|
+
* Shows a button that opens the list of suggestions.
|
|
13
|
+
* @default false
|
|
14
|
+
*/
|
|
15
|
+
showTrigger?: boolean;
|
|
16
|
+
/** Replaces the icon of the trigger button. */
|
|
17
|
+
triggerIcon?: React.ReactNode;
|
|
18
|
+
/**
|
|
19
|
+
* Shows a button that clears the typed text.
|
|
20
|
+
* @default false
|
|
21
|
+
*/
|
|
22
|
+
showClear?: boolean;
|
|
23
|
+
};
|
|
24
|
+
export type AutocompleteContentProps = AsChildPrimitiveProps<typeof Autocomplete$1.Popup> & Pick<Autocomplete$1.Positioner.Props, 'side' | 'align' | 'sideOffset' | 'alignOffset' | 'anchor' | 'positionMethod' | 'collisionBoundary' | 'collisionPadding' | 'sticky' | 'arrowPadding' | 'disableAnchorTracking' | 'collisionAvoidance'> & Pick<Autocomplete$1.Portal.Props, 'container' | 'keepMounted'>;
|
|
25
|
+
export type AutocompleteListProps = AsChildPrimitiveProps<typeof Autocomplete$1.List>;
|
|
26
|
+
export type AutocompleteItemProps = AsChildPrimitiveProps<typeof Autocomplete$1.Item>;
|
|
27
|
+
export type AutocompleteGroupProps = AsChildPrimitiveProps<typeof Autocomplete$1.Group>;
|
|
28
|
+
export type AutocompleteLabelProps = AsChildPrimitiveProps<typeof Autocomplete$1.GroupLabel>;
|
|
29
|
+
export type AutocompleteCollectionProps = Autocomplete$1.Collection.Props;
|
|
30
|
+
export type AutocompleteEmptyProps = AsChildPrimitiveProps<typeof Autocomplete$1.Empty>;
|
|
31
|
+
export type AutocompleteStatusProps = AsChildPrimitiveProps<typeof Autocomplete$1.Status>;
|
|
32
|
+
export type AutocompleteSeparatorProps = AsChildPrimitiveProps<typeof Autocomplete$1.Separator>;
|
|
33
|
+
declare const Autocomplete: typeof Autocomplete$1.Root;
|
|
34
|
+
declare const useAutocompleteFilter: typeof import("@base-ui/react/internals/filter").getFilter;
|
|
35
|
+
declare function AutocompleteInput({ className, children, disabled, icon, id, showTrigger, triggerIcon, showClear, ...props }: AutocompleteInputProps): React.JSX.Element;
|
|
36
|
+
declare function AutocompleteContent({ className, asChild, children, side, sideOffset, align, alignOffset, anchor, container, keepMounted, positionMethod, collisionBoundary, collisionPadding, sticky, arrowPadding, disableAnchorTracking, collisionAvoidance, ...props }: AutocompleteContentProps): React.JSX.Element;
|
|
37
|
+
declare function AutocompleteList({ className, asChild, children, ...props }: AutocompleteListProps): React.JSX.Element;
|
|
38
|
+
declare function AutocompleteItem({ className, asChild, children, ...props }: AutocompleteItemProps): React.JSX.Element;
|
|
39
|
+
declare function AutocompleteGroup({ className, asChild, children, ...props }: AutocompleteGroupProps): React.JSX.Element;
|
|
40
|
+
declare function AutocompleteLabel({ className, asChild, children, ...props }: AutocompleteLabelProps): React.JSX.Element;
|
|
41
|
+
declare function AutocompleteCollection({ ...props }: AutocompleteCollectionProps): React.JSX.Element;
|
|
42
|
+
declare function AutocompleteEmpty({ className, asChild, children, ...props }: AutocompleteEmptyProps): React.JSX.Element;
|
|
43
|
+
declare function AutocompleteStatus({ className, asChild, children, ...props }: AutocompleteStatusProps): React.JSX.Element;
|
|
44
|
+
declare function AutocompleteSeparator({ className, asChild, children, ...props }: AutocompleteSeparatorProps): React.JSX.Element;
|
|
45
|
+
export { Autocomplete, AutocompleteCollection, AutocompleteContent, AutocompleteEmpty, AutocompleteGroup, AutocompleteInput, AutocompleteItem, AutocompleteLabel, AutocompleteList, AutocompleteSeparator, AutocompleteStatus, useAutocompleteFilter };
|
|
46
|
+
//# sourceMappingURL=autocomplete.d.ts.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import"../rolldown-runtime-BhWHdk3m.js";import{toAsChildRenderProps as e}from"../lib/as-child.js";import{cn as t}from"../lib/utils.js";import{a as n,i as r,n as i,o as a,r as o,t as s}from"../combobox-styles-CZ0aJayc.js";import{t as c}from"../resolve-class-name-BurP8ngI.js";import{useFieldControlId as l}from"./field.js";import{InputGroup as u,InputGroupAddon as d,InputGroupButton as f,InputGroupInput as p}from"./input-group.js";import{IconSelector as m,IconX as h}from"@tabler/icons-react";import{jsx as g,jsxs as _}from"react/jsx-runtime";import{Autocomplete as v}from"@base-ui/react/autocomplete";const y=v.Root,b=v.useFilter;function AutocompleteInput({className:e,children:n,disabled:r=!1,icon:i,id:a,showTrigger:o=!1,triggerIcon:s=/* @__PURE__ */ g(m,{className:`pointer-events-none size-4 text-muted-foreground`}),showClear:c=!1,...y}){let b=l(a);return/* @__PURE__ */ _(u,{"data-slot":`autocomplete-input`,className:t(`w-auto`,e),children:[i&&/* @__PURE__ */ g(d,{align:`inline-start`,children:i}),/* @__PURE__ */ g(v.Input,{id:b,render:/* @__PURE__ */ g(p,{disabled:r}),...y}),(o||c)&&/* @__PURE__ */ _(d,{align:`inline-end`,children:[c&&/* @__PURE__ */ g(v.Clear,{"data-slot":`autocomplete-clear`,render:/* @__PURE__ */ g(f,{variant:`ghost`,size:`icon-xs`}),disabled:r,children:/* @__PURE__ */ g(h,{className:`pointer-events-none`})}),o&&/* @__PURE__ */ g(v.Trigger,{"data-slot":`autocomplete-trigger`,render:/* @__PURE__ */ g(f,{variant:`ghost`,size:`icon-xs`}),className:`group-has-data-[slot=autocomplete-clear]/input-group:hidden data-pressed:bg-transparent`,disabled:r,children:s})]}),n]})}function AutocompleteContent({className:r,asChild:i,children:a,side:o=`bottom`,sideOffset:s=6,align:l=`start`,alignOffset:u=0,anchor:d,container:f,keepMounted:p,positionMethod:m=`absolute`,collisionBoundary:h,collisionPadding:_,sticky:y,arrowPadding:b,disableAnchorTracking:x,collisionAvoidance:S,...C}){return/* @__PURE__ */ g(v.Portal,{container:f,keepMounted:p,children:/* @__PURE__ */ g(v.Positioner,{side:o,sideOffset:s,align:l,alignOffset:u,anchor:d,positionMethod:m,collisionBoundary:h,collisionPadding:_,sticky:y,arrowPadding:b,disableAnchorTracking:x,collisionAvoidance:S,className:`isolate z-50`,children:/* @__PURE__ */ g(v.Popup,{"data-slot":`autocomplete-content`,className:e=>t(n,c(r,e)),...C,...e(i,a)})})})}function AutocompleteList({className:n,asChild:i,children:a,...o}){return/* @__PURE__ */ g(v.List,{"data-slot":`autocomplete-list`,className:e=>t(r,c(n,e)),...o,...e(i,a)})}function AutocompleteItem({className:n,asChild:r,children:i,...a}){return/* @__PURE__ */ g(v.Item,{"data-slot":`autocomplete-item`,className:e=>t(o,`pr-2`,c(n,e)),...a,...e(r,i)})}function AutocompleteGroup({className:n,asChild:r,children:i,...a}){return/* @__PURE__ */ g(v.Group,{"data-slot":`autocomplete-group`,className:e=>t(c(n,e)),...a,...e(r,i)})}function AutocompleteLabel({className:n,asChild:r,children:a,...o}){return/* @__PURE__ */ g(v.GroupLabel,{"data-slot":`autocomplete-label`,className:e=>t(i,c(n,e)),...o,...e(r,a)})}function AutocompleteCollection({...e}){return/* @__PURE__ */ g(v.Collection,{"data-slot":`autocomplete-collection`,...e})}function AutocompleteEmpty({className:n,asChild:r,children:i,...a}){return/* @__PURE__ */ g(v.Empty,{"data-slot":`autocomplete-empty`,className:e=>t(s,c(n,e)),...a,...e(r,i)})}function AutocompleteStatus({className:n,asChild:r,children:i,...a}){return/* @__PURE__ */ g(v.Status,{"data-slot":`autocomplete-status`,className:e=>t(`flex items-center gap-2 px-2 py-1.5 text-sm text-muted-foreground empty:m-0 empty:p-0`,c(n,e)),...a,...e(r,i)})}function AutocompleteSeparator({className:n,asChild:r,children:i,...o}){return/* @__PURE__ */ g(v.Separator,{"data-slot":`autocomplete-separator`,className:e=>t(a,c(n,e)),...o,...e(r,i)})}export{y as Autocomplete,AutocompleteCollection,AutocompleteContent,AutocompleteEmpty,AutocompleteGroup,AutocompleteInput,AutocompleteItem,AutocompleteLabel,AutocompleteList,AutocompleteSeparator,AutocompleteStatus,b as useAutocompleteFilter};
|
|
2
|
+
//# sourceMappingURL=autocomplete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autocomplete.js","names":["AutocompletePrimitive","comboboxPopupClassName","comboboxListClassName","comboboxGroupLabelClassName","comboboxSeparatorClassName","comboboxItemClassName","comboboxEmptyClassName","resolveClassName","Autocomplete$1","Autocomplete","useAutocompleteFilter","IconSelector","props","fieldControlId","useFieldControlId","id","InputGroup","cn","className","icon","InputGroupAddon","InputGroupInput","showTrigger","showClear","InputGroupButton","IconX","triggerIcon","children","state","toAsChildRenderProps","asChild"],"sources":["../../src/components/autocomplete.tsx"],"sourcesContent":["import type * as React from 'react'\n\nimport { Autocomplete as AutocompletePrimitive } from '@base-ui/react/autocomplete'\nimport { IconSelector, IconX } from '@tabler/icons-react'\n\nimport { type AsChildPrimitiveProps, toAsChildRenderProps } from '../lib/as-child'\nimport { cn } from '../lib/utils'\nimport {\n comboboxEmptyClassName,\n comboboxGroupLabelClassName,\n comboboxItemClassName,\n comboboxListClassName,\n comboboxPopupClassName,\n comboboxSeparatorClassName\n} from '../utils/combobox-styles'\nimport { resolveClassName } from '../utils/resolve-class-name'\nimport { useFieldControlId } from './field'\nimport { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput } from './input-group'\n\nexport type AutocompleteProps<ItemValue = unknown> = AutocompletePrimitive.Root.Props<ItemValue>\n\nexport type AutocompleteInputProps = Omit<AutocompletePrimitive.Input.Props, 'render' | 'className'> & {\n /** Classes for the input group that wraps the input and its buttons. */\n className?: string\n /** Icon shown at the start of the input. */\n icon?: React.ReactNode\n /**\n * Shows a button that opens the list of suggestions.\n * @default false\n */\n showTrigger?: boolean\n /** Replaces the icon of the trigger button. */\n triggerIcon?: React.ReactNode\n /**\n * Shows a button that clears the typed text.\n * @default false\n */\n showClear?: boolean\n}\n\nexport type AutocompleteContentProps = AsChildPrimitiveProps<typeof AutocompletePrimitive.Popup> &\n Pick<\n AutocompletePrimitive.Positioner.Props,\n | 'side'\n | 'align'\n | 'sideOffset'\n | 'alignOffset'\n | 'anchor'\n | 'positionMethod'\n | 'collisionBoundary'\n | 'collisionPadding'\n | 'sticky'\n | 'arrowPadding'\n | 'disableAnchorTracking'\n | 'collisionAvoidance'\n > &\n Pick<AutocompletePrimitive.Portal.Props, 'container' | 'keepMounted'>\n\nexport type AutocompleteListProps = AsChildPrimitiveProps<typeof AutocompletePrimitive.List>\n\nexport type AutocompleteItemProps = AsChildPrimitiveProps<typeof AutocompletePrimitive.Item>\n\nexport type AutocompleteGroupProps = AsChildPrimitiveProps<typeof AutocompletePrimitive.Group>\n\nexport type AutocompleteLabelProps = AsChildPrimitiveProps<typeof AutocompletePrimitive.GroupLabel>\n\nexport type AutocompleteCollectionProps = AutocompletePrimitive.Collection.Props\n\nexport type AutocompleteEmptyProps = AsChildPrimitiveProps<typeof AutocompletePrimitive.Empty>\n\nexport type AutocompleteStatusProps = AsChildPrimitiveProps<typeof AutocompletePrimitive.Status>\n\nexport type AutocompleteSeparatorProps = AsChildPrimitiveProps<typeof AutocompletePrimitive.Separator>\n\nconst Autocomplete = AutocompletePrimitive.Root\n\nconst useAutocompleteFilter = AutocompletePrimitive.useFilter\n\nfunction AutocompleteInput({\n className,\n children,\n disabled = false,\n icon,\n id,\n showTrigger = false,\n triggerIcon = <IconSelector className=\"pointer-events-none size-4 text-muted-foreground\" />,\n showClear = false,\n ...props\n}: AutocompleteInputProps) {\n const fieldControlId = useFieldControlId(id)\n\n return (\n <InputGroup data-slot=\"autocomplete-input\" className={cn('w-auto', className)}>\n {icon && <InputGroupAddon align=\"inline-start\">{icon}</InputGroupAddon>}\n <AutocompletePrimitive.Input id={fieldControlId} render={<InputGroupInput disabled={disabled} />} {...props} />\n {(showTrigger || showClear) && (\n <InputGroupAddon align=\"inline-end\">\n {showClear && (\n <AutocompletePrimitive.Clear\n data-slot=\"autocomplete-clear\"\n render={<InputGroupButton variant=\"ghost\" size=\"icon-xs\" />}\n disabled={disabled}\n >\n <IconX className=\"pointer-events-none\" />\n </AutocompletePrimitive.Clear>\n )}\n {showTrigger && (\n <AutocompletePrimitive.Trigger\n data-slot=\"autocomplete-trigger\"\n render={<InputGroupButton variant=\"ghost\" size=\"icon-xs\" />}\n className=\"group-has-data-[slot=autocomplete-clear]/input-group:hidden data-pressed:bg-transparent\"\n disabled={disabled}\n >\n {triggerIcon}\n </AutocompletePrimitive.Trigger>\n )}\n </InputGroupAddon>\n )}\n {children}\n </InputGroup>\n )\n}\n\nfunction AutocompleteContent({\n className,\n asChild,\n children,\n side = 'bottom',\n sideOffset = 6,\n align = 'start',\n alignOffset = 0,\n anchor,\n container,\n keepMounted,\n positionMethod = 'absolute',\n collisionBoundary,\n collisionPadding,\n sticky,\n arrowPadding,\n disableAnchorTracking,\n collisionAvoidance,\n ...props\n}: AutocompleteContentProps) {\n return (\n <AutocompletePrimitive.Portal container={container} keepMounted={keepMounted}>\n <AutocompletePrimitive.Positioner\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n anchor={anchor}\n positionMethod={positionMethod}\n collisionBoundary={collisionBoundary}\n collisionPadding={collisionPadding}\n sticky={sticky}\n arrowPadding={arrowPadding}\n disableAnchorTracking={disableAnchorTracking}\n collisionAvoidance={collisionAvoidance}\n className=\"isolate z-50\"\n >\n <AutocompletePrimitive.Popup\n data-slot=\"autocomplete-content\"\n className={(state) => cn(comboboxPopupClassName, resolveClassName(className, state))}\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n </AutocompletePrimitive.Positioner>\n </AutocompletePrimitive.Portal>\n )\n}\n\nfunction AutocompleteList({ className, asChild, children, ...props }: AutocompleteListProps) {\n return (\n <AutocompletePrimitive.List\n data-slot=\"autocomplete-list\"\n className={(state) => cn(comboboxListClassName, resolveClassName(className, state))}\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nfunction AutocompleteItem({ className, asChild, children, ...props }: AutocompleteItemProps) {\n return (\n <AutocompletePrimitive.Item\n data-slot=\"autocomplete-item\"\n className={(state) => cn(comboboxItemClassName, 'pr-2', resolveClassName(className, state))}\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nfunction AutocompleteGroup({ className, asChild, children, ...props }: AutocompleteGroupProps) {\n return (\n <AutocompletePrimitive.Group\n data-slot=\"autocomplete-group\"\n className={(state) => cn(resolveClassName(className, state))}\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nfunction AutocompleteLabel({ className, asChild, children, ...props }: AutocompleteLabelProps) {\n return (\n <AutocompletePrimitive.GroupLabel\n data-slot=\"autocomplete-label\"\n className={(state) => cn(comboboxGroupLabelClassName, resolveClassName(className, state))}\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nfunction AutocompleteCollection({ ...props }: AutocompleteCollectionProps) {\n return <AutocompletePrimitive.Collection data-slot=\"autocomplete-collection\" {...props} />\n}\n\nfunction AutocompleteEmpty({ className, asChild, children, ...props }: AutocompleteEmptyProps) {\n return (\n <AutocompletePrimitive.Empty\n data-slot=\"autocomplete-empty\"\n className={(state) => cn(comboboxEmptyClassName, resolveClassName(className, state))}\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nfunction AutocompleteStatus({ className, asChild, children, ...props }: AutocompleteStatusProps) {\n return (\n <AutocompletePrimitive.Status\n data-slot=\"autocomplete-status\"\n className={(state) =>\n cn(\n 'flex items-center gap-2 px-2 py-1.5 text-sm text-muted-foreground empty:m-0 empty:p-0',\n resolveClassName(className, state)\n )\n }\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nfunction AutocompleteSeparator({ className, asChild, children, ...props }: AutocompleteSeparatorProps) {\n return (\n <AutocompletePrimitive.Separator\n data-slot=\"autocomplete-separator\"\n className={(state) => cn(comboboxSeparatorClassName, resolveClassName(className, state))}\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nexport {\n Autocomplete,\n AutocompleteCollection,\n AutocompleteContent,\n AutocompleteEmpty,\n AutocompleteGroup,\n AutocompleteInput,\n AutocompleteItem,\n AutocompleteLabel,\n AutocompleteList,\n AutocompleteSeparator,\n AutocompleteStatus,\n useAutocompleteFilter\n}\n"],"mappings":"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"}
|
package/dist/components/badge.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"../rolldown-runtime-BhWHdk3m.js";import{useAsChild as e}from"../lib/as-child.js";import{
|
|
1
|
+
import"../rolldown-runtime-BhWHdk3m.js";import{useAsChild as e}from"../lib/as-child.js";import{badgeColorVariants as t}from"../lib/badge.js";import{cn as n}from"../lib/utils.js";import{cva as r}from"class-variance-authority";const i=r(`group/badge inline-flex w-fit items-center justify-center overflow-hidden border border-transparent font-semibold whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none`,{variants:{size:{xs:`h-4 gap-0.5 px-1.5 text-[10px] rounded-[4px] [&>svg]:size-2.5! has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1`,sm:`h-4.5 gap-0.5 px-2 text-[11px] rounded-[5px] [&>svg]:size-2.5! has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5`,md:`h-5 gap-1 px-2 py-0.5 text-xs rounded-[6px] [&>svg]:size-3! has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5`,lg:`h-6 gap-1 px-2.5 text-xs rounded-[7px] [&>svg]:size-3.5! has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2`,xl:`h-7 gap-1.5 px-3 text-sm rounded-[8px] [&>svg]:size-4! has-data-[icon=inline-end]:pr-2.5 has-data-[icon=inline-start]:pl-2.5`},variant:{solid:`bg-(--badge-solid) text-(--badge-solid-foreground) [a]:hover:opacity-90`,secondary:`border-border bg-background text-foreground [a]:hover:bg-muted dark:border-input dark:bg-input/30 dark:[a]:hover:bg-input/50`,outline:`border-(--badge-outline-border) text-(--badge-outline-foreground) [a]:hover:bg-(--badge-soft) [a]:hover:text-(--badge-soft-foreground)`,subtle:`bg-(--badge-soft) text-(--badge-soft-foreground) [a]:hover:bg-(--badge-soft-hover)`},color:t},defaultVariants:{size:`md`,variant:`solid`,color:`primary`}});function Badge({className:t,size:r=`md`,variant:a=`solid`,color:o=`primary`,...s}){return e(`span`,{"data-slot":`badge`,"data-size":r,"data-variant":a,"data-color":o,className:n(i({size:r,variant:a,color:o}),t),...s})}export{Badge,i as badgeVariants};
|
|
2
2
|
//# sourceMappingURL=badge.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"../rolldown-runtime-BhWHdk3m.js";import{useAsChild as e}from"../lib/as-child.js";import{
|
|
1
|
+
import"../rolldown-runtime-BhWHdk3m.js";import{useAsChild as e}from"../lib/as-child.js";import{buttonColorVariants as t}from"../lib/button.js";import{cn as n}from"../lib/utils.js";import{Spinner as r}from"./spinner.js";import*as i from"react";import{Fragment as a,jsx as o,jsxs as s}from"react/jsx-runtime";import{cva as c}from"class-variance-authority";const l=c(`focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 relative rounded-full border border-transparent bg-clip-padding text-sm font-semibold focus-visible:ring-3 aria-invalid:ring-3 [&_svg:not([class*='size-'])]:size-4 inline-flex items-center justify-center whitespace-nowrap transition-all [&_svg]:transition-colors disabled:pointer-events-none disabled:opacity-50 disabled:data-[loading=true]:pointer-events-auto disabled:data-[loading=true]:cursor-not-allowed disabled:data-[loading=true]:opacity-100 aria-disabled:pointer-events-none aria-disabled:opacity-50 aria-disabled:data-[loading=true]:pointer-events-auto aria-disabled:data-[loading=true]:cursor-not-allowed aria-disabled:data-[loading=true]:opacity-100 [&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 outline-none group/button select-none`,{variants:{variant:{solid:`bg-(--button-solid) text-(--button-solid-foreground) hover:bg-(--button-solid-hover) data-[loading=true]:hover:bg-(--button-solid)`,secondary:`border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50`,outline:`border-(--button-outline-border) bg-transparent text-(--button-outline-foreground) hover:bg-(--button-solid) hover:text-(--button-solid-foreground) hover:[&_svg]:text-(--button-solid-foreground) data-[loading=true]:hover:bg-transparent data-[loading=true]:hover:text-(--button-outline-foreground) data-[loading=true]:hover:[&_svg]:text-(--button-outline-foreground) aria-expanded:bg-(--button-solid) aria-expanded:text-(--button-solid-foreground) aria-expanded:[&_svg]:text-(--button-solid-foreground)`,subtle:`bg-(--button-soft) text-(--button-soft-foreground) hover:bg-(--button-soft-hover) hover:text-(--button-soft-foreground) data-[loading=true]:hover:bg-(--button-soft) data-[loading=true]:hover:text-(--button-soft-foreground) aria-expanded:bg-(--button-soft-hover) aria-expanded:text-(--button-soft-foreground)`,ghost:`text-(--button-ghost-foreground) hover:bg-(--button-ghost-hover) hover:text-(--button-ghost-foreground) data-[loading=true]:hover:bg-transparent data-[loading=true]:hover:text-(--button-ghost-foreground) aria-expanded:bg-(--button-ghost-hover) aria-expanded:text-(--button-ghost-foreground)`,link:`text-(--button-link-foreground) underline-offset-4 hover:underline data-[loading=true]:hover:no-underline`},color:t,size:{xs:`h-7 gap-1 px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3`,sm:`h-8 gap-1 px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5`,md:`h-9 gap-1.5 px-2.5 in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2`,lg:`h-10 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3`,xl:`h-11 gap-2 px-3 has-data-[icon=inline-end]:pr-4 has-data-[icon=inline-start]:pl-4`,icon:`size-9`,"icon-xs":`size-7 in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3`,"icon-sm":`size-8 in-data-[slot=button-group]:rounded-lg`,"icon-lg":`size-10`,"icon-xl":`size-11`}},defaultVariants:{variant:`solid`,color:`primary`,size:`md`}});function renderLoadingContent(e){return/* @__PURE__ */ s(a,{children:[/* @__PURE__ */ o(`span`,{className:`invisible inline-flex items-center gap-[inherit]`,children:e}),/* @__PURE__ */ o(`span`,{className:`absolute inset-0 inline-flex items-center justify-center`,children:/* @__PURE__ */ o(r,{})})]})}function Button({children:t,className:r,variant:a=`solid`,color:o=`primary`,size:s=`md`,asChild:c=!1,disabled:u,loading:d=!1,onClick:f,...p}){let m=u||d,h=c&&m,g=t;if(d&&c){let e=i.Children.only(t);g=i.cloneElement(e,void 0,renderLoadingContent(e.props.children))}else d&&(g=renderLoadingContent(t));return e(`button`,{asChild:c,type:c?void 0:`button`,"data-slot":`button`,"data-variant":a,"data-color":o,"data-size":s,"data-loading":d,"aria-busy":d?!0:void 0,"aria-disabled":h?!0:void 0,disabled:c?void 0:m,onClick:h?e=>e.preventDefault():f,className:n(l({variant:a,color:o,size:s,className:r})),...p,children:g})}export{Button,l as buttonVariants};
|
|
2
2
|
//# sourceMappingURL=button.js.map
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { t as __name } from "../rolldown-runtime-BhWHdk3m.js";
|
|
2
|
+
import { t as AsChildPrimitiveProps } from "../as-child-T9W73ZYU.js";
|
|
3
|
+
import { UIColor } from "../lib/color.js";
|
|
4
|
+
import { CheckboxGroup as CheckboxGroup$1 } from "@base-ui/react/checkbox-group";
|
|
5
|
+
export type CheckboxGroupProps = AsChildPrimitiveProps<typeof CheckboxGroup$1> & {
|
|
6
|
+
/**
|
|
7
|
+
* Palette family for every checkbox in the group; `color` on a `Checkbox` overrides it.
|
|
8
|
+
* @default 'primary'
|
|
9
|
+
*/
|
|
10
|
+
color?: UIColor;
|
|
11
|
+
/**
|
|
12
|
+
* Lays the checkboxes out in a column or in a wrapping row.
|
|
13
|
+
* @default 'vertical'
|
|
14
|
+
*/
|
|
15
|
+
orientation?: 'vertical' | 'horizontal';
|
|
16
|
+
};
|
|
17
|
+
declare function CheckboxGroup({ className, color, orientation, asChild, children, 'aria-invalid': ariaInvalid, ...props }: CheckboxGroupProps): import("react").JSX.Element;
|
|
18
|
+
export { CheckboxGroup };
|
|
19
|
+
//# sourceMappingURL=checkbox-group.d.ts.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import"../rolldown-runtime-BhWHdk3m.js";import{toAsChildRenderProps as e}from"../lib/as-child.js";import{cn as t}from"../lib/utils.js";import{t as n}from"../checkbox-group-context-HDVxTNPi.js";import{t as r}from"../resolve-class-name-BurP8ngI.js";import{useFieldControlId as i,useFieldInvalid as a,useFieldLabelId as o}from"./field.js";import{useMemo as s}from"react";import{jsx as c}from"react/jsx-runtime";import{cva as l}from"class-variance-authority";import{CheckboxGroup as u}from"@base-ui/react/checkbox-group";const d=l(`flex`,{variants:{orientation:{vertical:`flex-col gap-2`,horizontal:`flex-row flex-wrap gap-x-4 gap-y-2`}},defaultVariants:{orientation:`vertical`}});function CheckboxGroup({className:l,color:f=`primary`,orientation:p=`vertical`,asChild:m,children:h,"aria-invalid":g,..._}){let v=i(),y=o(),b=a(g),x=s(()=>({fieldControlId:v,color:f}),[v,f]);return/* @__PURE__ */ c(n.Provider,{value:x,children:/* @__PURE__ */ c(u,{"data-slot":`checkbox-group`,"data-color":f,"data-orientation":p,"aria-labelledby":y,"aria-invalid":b,className:e=>t(d({orientation:p}),r(l,e)),..._,...e(m,h)})})}export{CheckboxGroup};
|
|
2
|
+
//# sourceMappingURL=checkbox-group.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkbox-group.js","names":["CheckboxGroupPrimitive","CheckboxGroupContext","resolveClassName","CheckboxGroup$1","checkboxGroupVariants","cva","ariaInvalid","props","fieldControlId","useFieldControlId","fieldLabelId","useFieldLabelId","invalid","useFieldInvalid","contextValue","useMemo","color","orientation","cn","className","state","toAsChildRenderProps","asChild","children"],"sources":["../../src/components/checkbox-group.tsx"],"sourcesContent":["import { useMemo } from 'react'\n\nimport { CheckboxGroup as CheckboxGroupPrimitive } from '@base-ui/react/checkbox-group'\nimport { cva } from 'class-variance-authority'\n\nimport { type AsChildPrimitiveProps, toAsChildRenderProps } from '../lib/as-child'\nimport type { UIColor } from '../lib/color'\nimport { cn } from '../lib/utils'\nimport { CheckboxGroupContext } from '../utils/checkbox-group-context'\nimport { resolveClassName } from '../utils/resolve-class-name'\nimport { useFieldControlId, useFieldInvalid, useFieldLabelId } from './field'\n\nconst checkboxGroupVariants = cva('flex', {\n variants: {\n orientation: {\n vertical: 'flex-col gap-2',\n horizontal: 'flex-row flex-wrap gap-x-4 gap-y-2'\n }\n },\n defaultVariants: {\n orientation: 'vertical'\n }\n})\n\nexport type CheckboxGroupProps = AsChildPrimitiveProps<typeof CheckboxGroupPrimitive> & {\n /**\n * Palette family for every checkbox in the group; `color` on a `Checkbox` overrides it.\n * @default 'primary'\n */\n color?: UIColor\n /**\n * Lays the checkboxes out in a column or in a wrapping row.\n * @default 'vertical'\n */\n orientation?: 'vertical' | 'horizontal'\n}\n\nfunction CheckboxGroup({\n className,\n color = 'primary',\n orientation = 'vertical',\n asChild,\n children,\n 'aria-invalid': ariaInvalid,\n ...props\n}: CheckboxGroupProps) {\n const fieldControlId = useFieldControlId()\n const fieldLabelId = useFieldLabelId()\n const invalid = useFieldInvalid(ariaInvalid)\n const contextValue = useMemo(() => ({ fieldControlId, color }), [fieldControlId, color])\n\n return (\n <CheckboxGroupContext.Provider value={contextValue}>\n <CheckboxGroupPrimitive\n data-slot=\"checkbox-group\"\n data-color={color}\n data-orientation={orientation}\n aria-labelledby={fieldLabelId}\n aria-invalid={invalid}\n className={(state) => cn(checkboxGroupVariants({ orientation }), resolveClassName(className, state))}\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n </CheckboxGroupContext.Provider>\n )\n}\n\nexport { CheckboxGroup }\n"],"mappings":"A,qgBAYA,MAAMI,EAAwBC,EAAI,OAAQ,CACxC,SAAU,CACR,YAAa,CACX,SAAU,iBACV,WAAY,oCACd,CACF,EACA,gBAAiB,CACf,YAAa,UACf,CACF,CAAC,EAeD,SAAS,cAAc,CACrB,YACA,QAAQ,UACR,cAAc,WACd,UACA,WACA,eAAgBC,EAChB,GAAGC,GACkB,CACrB,IAAMC,EAAiBC,EAAkB,EACnCC,EAAeC,EAAgB,EAC/BC,EAAUC,EAAgBP,CAAW,EACrCQ,EAAeC,OAAe,CAAE,iBAAgB,OAAM,GAAI,CAACP,EAAgBQ,CAAK,CAAC,EAEvF,MACE,kBAACf,EAAqB,SAAtB,CAA+B,MAAOa,EACpC,SAAA,kBAACd,EAAD,CACE,YAAU,iBACV,aAAYgB,EACZ,mBAAkBC,EAClB,kBAAiBP,EACjB,eAAcE,EACd,UAAY,GAAUM,EAAGd,EAAsB,CAAE,aAAY,CAAC,EAAGF,EAAiBiB,EAAWC,CAAK,CAAC,EACnG,GAAIb,EACJ,GAAIc,EAAqBC,EAASC,CAAQ,CAC3C,CAAA,CAC4B,CAAA,CAEnC,C"}
|
|
@@ -11,7 +11,7 @@ declare const checkboxVariants: (props?: ({
|
|
|
11
11
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
12
12
|
export type CheckboxProps = Omit<React.ComponentProps<typeof Checkbox$1.Root>, 'render'> & VariantProps<typeof checkboxVariants> & {
|
|
13
13
|
/**
|
|
14
|
-
* Palette family used when checked.
|
|
14
|
+
* Palette family used when checked. Inside a `CheckboxGroup`, the group's `color` is used instead of the default.
|
|
15
15
|
* @default 'primary'
|
|
16
16
|
*/
|
|
17
17
|
color?: UIColor;
|
|
@@ -24,6 +24,6 @@ export type CheckboxProps = Omit<React.ComponentProps<typeof Checkbox$1.Root>, '
|
|
|
24
24
|
/** Props for the rendered description. */
|
|
25
25
|
descriptionProps?: Omit<React.ComponentProps<'p'>, 'children'>;
|
|
26
26
|
};
|
|
27
|
-
declare function Checkbox({ className, color, id, label, labelProps, description, descriptionProps, size, 'aria-invalid': ariaInvalid, ...props }: CheckboxProps): React.JSX.Element;
|
|
27
|
+
declare function Checkbox({ className, color: colorProp, id, label, labelProps, description, descriptionProps, size, 'aria-invalid': ariaInvalid, ...props }: CheckboxProps): React.JSX.Element;
|
|
28
28
|
export { Checkbox };
|
|
29
29
|
//# sourceMappingURL=checkbox.d.ts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"../rolldown-runtime-BhWHdk3m.js";import{
|
|
1
|
+
import"../rolldown-runtime-BhWHdk3m.js";import{selectionControlColorVariants as e}from"../lib/color.js";import{cn as t}from"../lib/utils.js";import{t as n}from"../checkbox-group-context-HDVxTNPi.js";import{t as r}from"../resolve-class-name-BurP8ngI.js";import{useFieldControlId as i,useFieldInvalid as a}from"./field.js";import{Label as o}from"./label.js";import{IconCheck as s,IconMinus as c}from"@tabler/icons-react";import{useContext as l,useId as u}from"react";import{jsx as d,jsxs as f}from"react/jsx-runtime";import{cva as p}from"class-variance-authority";import{Checkbox as m}from"@base-ui/react/checkbox";const h=p(`border-input dark:data-unchecked:bg-input/30 data-checked:bg-(--selection-control) data-checked:text-(--selection-control-foreground) data-checked:border-(--selection-control) focus-visible:border-ring focus-visible:ring-ring/50 flex items-center justify-center border transition-colors group-has-disabled/field:opacity-50 focus-visible:ring-3 peer relative shrink-0 outline-none after:absolute after:-inset-x-3 after:-inset-y-2 data-disabled:cursor-not-allowed data-disabled:opacity-50`,{variants:{color:e,size:{sm:`size-3.5 rounded-[3px] [&_[data-slot=checkbox-indicator]>svg]:size-3`,md:`size-4 rounded-[4px] [&_[data-slot=checkbox-indicator]>svg]:size-3.5`,lg:`size-5 rounded-[5px] [&_[data-slot=checkbox-indicator]>svg]:size-4`}},defaultVariants:{color:`primary`,size:`md`}}),g=p(``,{variants:{size:{sm:`text-xs`,md:`text-sm`,lg:`text-lg`}},defaultVariants:{size:`md`}}),_=p(`text-muted-foreground text-left leading-normal font-normal [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary`,{variants:{size:{sm:`text-xs`,md:`text-xs`,lg:`text-sm`}},defaultVariants:{size:`md`}});function Checkbox({className:e,color:p,id:v,label:y,labelProps:b,description:x,descriptionProps:S,size:C=`md`,"aria-invalid":w,...T}){let E=u(),D=l(n),O=p??D?.color??`primary`,k=i(v),A=v===void 0&&D!==null&&k===D.fieldControlId?void 0:k,j=a(w),M=y!==void 0,N=A??(M?E:void 0),{className:P,...F}=b??{},I=u(),L=x!==void 0,{className:R,...z}=S??{},B=L?z.id??I:void 0,V=/* @__PURE__ */ d(m.Root,{"data-slot":`checkbox`,"data-color":O,"data-size":C,id:N,"aria-describedby":B,"aria-invalid":j,className:n=>t(h({color:O,size:C}),r(e,n)),...T,children:/* @__PURE__ */ f(m.Indicator,{"data-slot":`checkbox-indicator`,className:`grid place-content-center text-current transition-none`,children:[/* @__PURE__ */ d(s,{className:`block in-data-indeterminate:hidden`}),/* @__PURE__ */ d(c,{className:`hidden in-data-indeterminate:block`})]})});return!M&&!L?V:/* @__PURE__ */ f(`div`,{"data-slot":`checkbox-field`,className:`grid grid-cols-[auto_1fr] items-center justify-items-start gap-x-2 gap-y-0.5`,children:[V,M&&/* @__PURE__ */ d(o,{...F,htmlFor:N,className:t(g({size:C}),P),children:y}),L&&/* @__PURE__ */ d(`p`,{"data-slot":`checkbox-description`,...z,id:B,className:t(`col-start-2`,_({size:C}),R),children:x})]})}export{Checkbox};
|
|
2
2
|
//# sourceMappingURL=checkbox.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkbox.js","names":["CheckboxPrimitive","Checkbox$1","checkboxVariants","cva","selectionControlColorVariants","checkboxLabelVariants","checkboxDescriptionVariants","ariaInvalid","props","generatedId","useId","fieldControlId","useFieldControlId","id","invalid","useFieldInvalid","hasLabel","label","resolvedId","labelClassName","labelRootProps","labelProps","descriptionId","hasDescription","description","descriptionClassName","descriptionRootProps","descriptionProps","resolvedDescriptionId","checkbox","
|
|
1
|
+
{"version":3,"file":"checkbox.js","names":["CheckboxPrimitive","CheckboxGroupContext","resolveClassName","Checkbox$1","checkboxVariants","cva","selectionControlColorVariants","checkboxLabelVariants","checkboxDescriptionVariants","colorProp","ariaInvalid","props","generatedId","useId","group","useContext","color","fieldControlId","useFieldControlId","id","ownFieldControlId","invalid","useFieldInvalid","hasLabel","label","resolvedId","labelClassName","labelRootProps","labelProps","descriptionId","hasDescription","description","descriptionClassName","descriptionRootProps","descriptionProps","resolvedDescriptionId","checkbox","size","cn","className","state","IconCheck","IconMinus","Label"],"sources":["../../src/components/checkbox.tsx"],"sourcesContent":["import type * as React from 'react'\nimport { type ReactNode, useContext, useId } from 'react'\n\nimport { Checkbox as CheckboxPrimitive } from '@base-ui/react/checkbox'\nimport { IconCheck, IconMinus } from '@tabler/icons-react'\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nimport type { UIColor } from '../lib/color'\nimport { selectionControlColorVariants } from '../lib/color'\nimport { cn } from '../lib/utils'\nimport { CheckboxGroupContext } from '../utils/checkbox-group-context'\nimport { resolveClassName } from '../utils/resolve-class-name'\nimport { useFieldControlId, useFieldInvalid } from './field'\nimport { Label, type LabelProps } from './label'\n\nconst checkboxVariants = cva(\n 'border-input dark:data-unchecked:bg-input/30 data-checked:bg-(--selection-control) data-checked:text-(--selection-control-foreground) data-checked:border-(--selection-control) focus-visible:border-ring focus-visible:ring-ring/50 flex items-center justify-center border transition-colors group-has-disabled/field:opacity-50 focus-visible:ring-3 peer relative shrink-0 outline-none after:absolute after:-inset-x-3 after:-inset-y-2 data-disabled:cursor-not-allowed data-disabled:opacity-50',\n {\n variants: {\n color: selectionControlColorVariants,\n size: {\n sm: 'size-3.5 rounded-[3px] [&_[data-slot=checkbox-indicator]>svg]:size-3',\n md: 'size-4 rounded-[4px] [&_[data-slot=checkbox-indicator]>svg]:size-3.5',\n lg: 'size-5 rounded-[5px] [&_[data-slot=checkbox-indicator]>svg]:size-4'\n }\n },\n defaultVariants: {\n color: 'primary',\n size: 'md'\n }\n }\n)\n\nconst checkboxLabelVariants = cva('', {\n variants: {\n size: {\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-lg'\n }\n },\n defaultVariants: {\n size: 'md'\n }\n})\n\nconst checkboxDescriptionVariants = cva(\n 'text-muted-foreground text-left leading-normal font-normal [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary',\n {\n variants: {\n size: {\n sm: 'text-xs',\n md: 'text-xs',\n lg: 'text-sm'\n }\n },\n defaultVariants: {\n size: 'md'\n }\n }\n)\n\nexport type CheckboxProps = Omit<React.ComponentProps<typeof CheckboxPrimitive.Root>, 'render'> &\n VariantProps<typeof checkboxVariants> & {\n /**\n * Palette family used when checked. Inside a `CheckboxGroup`, the group's `color` is used instead of the default.\n * @default 'primary'\n */\n color?: UIColor\n /** Label rendered next to the checkbox and linked to it. */\n label?: ReactNode\n /** Props for the rendered label. */\n labelProps?: Omit<LabelProps, 'children' | 'htmlFor'>\n /** Helper text rendered below the label. */\n description?: ReactNode\n /** Props for the rendered description. */\n descriptionProps?: Omit<React.ComponentProps<'p'>, 'children'>\n }\n\nfunction Checkbox({\n className,\n color: colorProp,\n id,\n label,\n labelProps,\n description,\n descriptionProps,\n size = 'md',\n 'aria-invalid': ariaInvalid,\n ...props\n}: CheckboxProps) {\n const generatedId = useId()\n const group = useContext(CheckboxGroupContext)\n const color = colorProp ?? group?.color ?? 'primary'\n const fieldControlId = useFieldControlId(id)\n const ownFieldControlId =\n id === undefined && group !== null && fieldControlId === group.fieldControlId ? undefined : fieldControlId\n const invalid = useFieldInvalid(ariaInvalid)\n const hasLabel = label !== undefined\n const resolvedId = ownFieldControlId ?? (hasLabel ? generatedId : undefined)\n const { className: labelClassName, ...labelRootProps } = labelProps ?? {}\n const descriptionId = useId()\n const hasDescription = description !== undefined\n const { className: descriptionClassName, ...descriptionRootProps } = descriptionProps ?? {}\n const resolvedDescriptionId = hasDescription ? (descriptionRootProps.id ?? descriptionId) : undefined\n\n const checkbox = (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n data-color={color}\n data-size={size}\n id={resolvedId}\n aria-describedby={resolvedDescriptionId}\n aria-invalid={invalid}\n className={(state) => cn(checkboxVariants({ color, size }), resolveClassName(className, state))}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"grid place-content-center text-current transition-none\"\n >\n <IconCheck className=\"block in-data-indeterminate:hidden\" />\n <IconMinus className=\"hidden in-data-indeterminate:block\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n\n if (!hasLabel && !hasDescription) {\n return checkbox\n }\n\n return (\n <div\n data-slot=\"checkbox-field\"\n className=\"grid grid-cols-[auto_1fr] items-center justify-items-start gap-x-2 gap-y-0.5\"\n >\n {checkbox}\n {hasLabel && (\n <Label {...labelRootProps} htmlFor={resolvedId} className={cn(checkboxLabelVariants({ size }), labelClassName)}>\n {label}\n </Label>\n )}\n {hasDescription && (\n <p\n data-slot=\"checkbox-description\"\n {...descriptionRootProps}\n id={resolvedDescriptionId}\n className={cn('col-start-2', checkboxDescriptionVariants({ size }), descriptionClassName)}\n >\n {description}\n </p>\n )}\n </div>\n )\n}\n\nexport { Checkbox }\n"],"mappings":"A,qmBAeA,MAAMI,EAAmBC,EACvB,yeACA,CACE,SAAU,CACR,MAAOC,EACP,KAAM,CACJ,GAAI,uEACJ,GAAI,uEACJ,GAAI,oEACN,CACF,EACA,gBAAiB,CACf,MAAO,UACP,KAAM,IACR,CACF,CACF,EAEMC,EAAwBF,EAAI,GAAI,CACpC,SAAU,CACR,KAAM,CACJ,GAAI,UACJ,GAAI,UACJ,GAAI,SACN,CACF,EACA,gBAAiB,CACf,KAAM,IACR,CACF,CAAC,EAEKG,EAA8BH,EAClC,+HACA,CACE,SAAU,CACR,KAAM,CACJ,GAAI,UACJ,GAAI,UACJ,GAAI,SACN,CACF,EACA,gBAAiB,CACf,KAAM,IACR,CACF,CACF,EAmBA,SAAS,SAAS,CAChB,YACA,MAAOI,EACP,KACA,QACA,aACA,cACA,mBACA,OAAO,KACP,eAAgBC,EAChB,GAAGC,GACa,CAChB,IAAMC,EAAcC,EAAM,EACpBC,EAAQC,EAAWd,CAAoB,EACvCe,EAAQP,GAAaK,GAAO,OAAS,UACrCG,EAAiBC,EAAkBC,CAAE,EACrCC,EACJD,IAAO,IAAA,IAAaL,IAAU,MAAQG,IAAmBH,EAAM,eAAiB,IAAA,GAAYG,EACxFI,EAAUC,EAAgBZ,CAAW,EACrCa,EAAWC,IAAU,IAAA,GACrBC,EAAaL,IAAsBG,EAAWX,EAAc,IAAA,IAC5D,CAAE,UAAWc,EAAgB,GAAGC,GAAmBC,GAAc,CAAC,EAClEC,EAAgBhB,EAAM,EACtBiB,EAAiBC,IAAgB,IAAA,GACjC,CAAE,UAAWC,EAAsB,GAAGC,GAAyBC,GAAoB,CAAC,EACpFC,EAAwBL,EAAkBG,EAAqB,IAAMJ,EAAiB,IAAA,GAEtFO,EACJ,kBAACpC,EAAkB,KAAnB,CACE,YAAU,WACV,aAAYgB,EACZ,YAAWqB,EACX,GAAIZ,EACJ,mBAAkBU,EAClB,eAAcd,EACd,UAAY,GAAUiB,EAAGlC,EAAiB,CAAE,QAAO,MAAK,CAAC,EAAGF,EAAiBqC,EAAWC,CAAK,CAAC,EAC9F,GAAI7B,EAEJ,SAAA,kBAACX,EAAkB,UAAnB,CACE,YAAU,qBACV,UAAU,yDAFZ,SAAA,CAIE,kBAACyC,EAAD,CAAW,UAAU,oCAAsC,CAAA,EAC3D,kBAACC,EAAD,CAAW,UAAU,oCAAsC,CAAA,CAChC,C,EACP,CAAA,EAO1B,MAJI,CAACnB,GAAY,CAACO,EACTM,EAIP,kBAAC,MAAD,CACE,YAAU,iBACV,UAAU,+EAFZ,SAAA,CAIGA,EACAb,GACC,kBAACoB,EAAD,CAAO,GAAIhB,EAAgB,QAASF,EAAY,UAAWa,EAAG/B,EAAsB,CAAE,MAAK,CAAC,EAAGmB,CAAc,EAC1G,SAAAF,CACI,CAAA,EAERM,GACC,kBAAC,IAAD,CACE,YAAU,uBACV,GAAIG,EACJ,GAAIE,EACJ,UAAWG,EAAG,cAAe9B,EAA4B,CAAE,MAAK,CAAC,EAAGwB,CAAoB,EAEvF,SAAAD,CACA,CAAA,CAEF,C,EAET,C"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"../rolldown-runtime-BhWHdk3m.js";import{toAsChildRenderProps as e}from"../lib/as-child.js";import{cn as t}from"../lib/utils.js";import{t as
|
|
1
|
+
import"../rolldown-runtime-BhWHdk3m.js";import{toAsChildRenderProps as e}from"../lib/as-child.js";import{cn as t}from"../lib/utils.js";import{a as n,i as r,n as i,o as a,r as o,t as s}from"../combobox-styles-CZ0aJayc.js";import{t as c}from"../resolve-class-name-BurP8ngI.js";import{Button as l}from"./button.js";import{useFieldControlId as u,useFieldInvalid as d}from"./field.js";import{InputGroup as f,InputGroupAddon as p,InputGroupButton as m,InputGroupInput as h}from"./input-group.js";import{IconCheck as g,IconSelector as _,IconX as v}from"@tabler/icons-react";import*as y from"react";import{jsx as b,jsxs as x}from"react/jsx-runtime";import{Combobox as S}from"@base-ui/react/combobox";const C=S.Root;function ComboboxValue({...e}){return/* @__PURE__ */ b(S.Value,{"data-slot":`combobox-value`,...e})}function ComboboxTrigger({className:n,children:r,icon:i=/* @__PURE__ */ b(_,{className:`pointer-events-none size-4 text-muted-foreground`}),asChild:a,...o}){return/* @__PURE__ */ x(S.Trigger,{"data-slot":`combobox-trigger`,className:e=>t(`[&_svg:not([class*='size-'])]:size-4`,c(n,e)),...o,...e(a,r),children:[!a&&r,!a&&i]})}function ComboboxClear({className:e,...n}){return/* @__PURE__ */ b(S.Clear,{"data-slot":`combobox-clear`,render:/* @__PURE__ */ b(m,{variant:`ghost`,size:`icon-xs`}),className:n=>t(c(e,n)),...n,children:/* @__PURE__ */ b(v,{className:`pointer-events-none`})})}function ComboboxInput({className:e,children:n,disabled:r=!1,icon:i,id:a,showTrigger:o=!0,showClear:s=!1,triggerIcon:c,...l}){let d=u(a);return/* @__PURE__ */ x(f,{className:t(`w-auto`,e),children:[i&&/* @__PURE__ */ b(p,{align:`inline-start`,children:i}),/* @__PURE__ */ b(S.Input,{id:d,render:/* @__PURE__ */ b(h,{disabled:r}),...l}),/* @__PURE__ */ x(p,{align:`inline-end`,children:[o&&/* @__PURE__ */ b(m,{size:`icon-xs`,variant:`ghost`,asChild:!0,"data-slot":`input-group-button`,className:`group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent`,disabled:r,children:/* @__PURE__ */ b(ComboboxTrigger,{icon:c})}),s&&/* @__PURE__ */ b(ComboboxClear,{disabled:r})]}),n]})}function ComboboxContent({className:r,asChild:i,children:a,side:o=`bottom`,sideOffset:s=6,align:l=`start`,alignOffset:u=0,anchor:d,container:f,keepMounted:p,positionMethod:m=`absolute`,collisionBoundary:h,collisionPadding:g,sticky:_,arrowPadding:v,disableAnchorTracking:y,collisionAvoidance:x,...C}){return/* @__PURE__ */ b(S.Portal,{container:f,keepMounted:p,children:/* @__PURE__ */ b(S.Positioner,{side:o,sideOffset:s,align:l,alignOffset:u,anchor:d,positionMethod:m,collisionBoundary:h,collisionPadding:g,sticky:_,arrowPadding:v,disableAnchorTracking:y,collisionAvoidance:x,className:`isolate z-50`,children:/* @__PURE__ */ b(S.Popup,{"data-slot":`combobox-content`,"data-chips":!!d,className:e=>t(n,c(r,e)),...C,...e(i,a)})})})}function ComboboxList({className:n,asChild:i,children:a,...o}){return/* @__PURE__ */ b(S.List,{"data-slot":`combobox-list`,className:e=>t(r,c(n,e)),...o,...e(i,a)})}function ComboboxItem({className:n,children:r,asChild:i,...a}){return/* @__PURE__ */ x(S.Item,{"data-slot":`combobox-item`,className:e=>t(o,`pr-8`,c(n,e)),...a,...e(i,r),children:[!i&&r,!i&&/* @__PURE__ */ b(S.ItemIndicator,{render:/* @__PURE__ */ b(`span`,{className:`pointer-events-none absolute right-2 flex size-4 items-center justify-center`}),children:/* @__PURE__ */ b(g,{className:`pointer-events-none`})})]})}function ComboboxGroup({className:n,asChild:r,children:i,...a}){return/* @__PURE__ */ b(S.Group,{"data-slot":`combobox-group`,className:e=>t(c(n,e)),...a,...e(r,i)})}function ComboboxLabel({className:n,asChild:r,children:a,...o}){return/* @__PURE__ */ b(S.GroupLabel,{"data-slot":`combobox-label`,className:e=>t(i,c(n,e)),...o,...e(r,a)})}function ComboboxCollection({...e}){return/* @__PURE__ */ b(S.Collection,{"data-slot":`combobox-collection`,...e})}function ComboboxEmpty({className:n,asChild:r,children:i,...a}){return/* @__PURE__ */ b(S.Empty,{"data-slot":`combobox-empty`,className:e=>t(s,c(n,e)),...a,...e(r,i)})}function ComboboxSeparator({className:n,asChild:r,children:i,...o}){return/* @__PURE__ */ b(S.Separator,{"data-slot":`combobox-separator`,className:e=>t(a,c(n,e)),...o,...e(r,i)})}function ComboboxChips({className:n,children:r,showClear:i=!1,asChild:a,...o}){return/* @__PURE__ */ x(S.Chips,{"data-slot":`combobox-chips`,className:e=>t(`flex min-h-8 overflow-hidden flex-wrap items-center gap-1 rounded-lg border border-input bg-transparent bg-clip-padding px-2.5 py-1 text-sm transition-colors focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/50 has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1 dark:bg-input/30 dark:has-aria-invalid:border-destructive/50 dark:has-aria-invalid:ring-destructive/40`,c(n,e)),...o,...e(a,r),children:[!a&&r,i&&!a&&/* @__PURE__ */ b(S.Clear,{"data-slot":`combobox-chips-clear`,render:/* @__PURE__ */ b(l,{variant:`ghost`,color:`zinc`,size:`icon-xs`}),className:`shrink-0 self-center size-5`,children:/* @__PURE__ */ b(v,{className:`pointer-events-none`})})]})}function ComboboxChip({className:n,children:r,showRemove:i=!0,asChild:a,...o}){return/* @__PURE__ */ x(S.Chip,{"data-slot":`combobox-chip`,className:e=>t(`flex h-[calc(--spacing(5.25))] w-fit text-left max-w-full items-center justify-start gap-1 rounded-sm bg-muted px-1.5 text-xs font-medium whitespace-nowrap text-foreground has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pr-0`,c(n,e)),...o,...e(a,r),children:[!a&&/* @__PURE__ */ b(`span`,{className:`flex-1 truncate`,children:r}),i&&!a&&/* @__PURE__ */ b(S.ChipRemove,{render:/* @__PURE__ */ b(l,{variant:`ghost`,color:`zinc`,size:`icon-xs`}),className:`-ml-1 opacity-50 shrink-0 hover:opacity-100`,"data-slot":`combobox-chip-remove`,children:/* @__PURE__ */ b(v,{className:`pointer-events-none`})})]})}function ComboboxChipsInput({className:e,id:n,"aria-invalid":r,...i}){let a=u(n),o=d(r);return/* @__PURE__ */ b(S.Input,{id:a,"aria-invalid":o,"data-slot":`combobox-chip-input`,className:n=>t(`min-w-16 flex-1 outline-none`,c(e,n)),...i})}function useComboboxAnchor(){return y.useRef(null)}export{C as Combobox,ComboboxChip,ComboboxChips,ComboboxChipsInput,ComboboxClear,ComboboxCollection,ComboboxContent,ComboboxEmpty,ComboboxGroup,ComboboxInput,ComboboxItem,ComboboxLabel,ComboboxList,ComboboxSeparator,ComboboxTrigger,ComboboxValue,useComboboxAnchor};
|
|
2
2
|
//# sourceMappingURL=combobox.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combobox.js","names":["ComboboxPrimitive","resolveClassName","React","Combobox$1","Combobox","props","IconSelector","cn","className","state","toAsChildRenderProps","asChild","children","icon","InputGroupButton","IconX","fieldControlId","useFieldControlId","id","InputGroup","InputGroupAddon","InputGroupInput","showTrigger","triggerIcon","showClear","anchor","IconCheck","Button","showRemove","ariaInvalid","invalid","useFieldInvalid"],"sources":["../../src/components/combobox.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { Combobox as ComboboxPrimitive } from '@base-ui/react/combobox'\nimport { IconCheck, IconSelector, IconX } from '@tabler/icons-react'\n\nimport { type AsChildPrimitiveProps, toAsChildRenderProps } from '../lib/as-child'\nimport { cn } from '../lib/utils'\nimport { resolveClassName } from '../utils/resolve-class-name'\nimport { Button } from './button'\nimport { useFieldControlId, useFieldInvalid } from './field'\nimport { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput } from './input-group'\n\nexport type ComboboxProps<Value = unknown, Multiple extends boolean | undefined = false> = ComboboxPrimitive.Root.Props<\n Value,\n Multiple\n>\n\nexport type ComboboxValueProps = ComboboxPrimitive.Value.Props\n\nexport type ComboboxTriggerProps = AsChildPrimitiveProps<typeof ComboboxPrimitive.Trigger> & {\n /** Icon of the trigger button. Defaults to an up/down chevron. */\n icon?: React.ReactNode\n}\n\nexport type ComboboxClearProps = Omit<ComboboxPrimitive.Clear.Props, 'render'>\n\nexport type ComboboxInputProps = Omit<ComboboxPrimitive.Input.Props, 'render' | 'className'> & {\n /** Classes for the input group that wraps the input and its buttons. */\n className?: string\n /** Icon shown at the start of the input. */\n icon?: React.ReactNode\n /** Replaces the icon of the trigger button. */\n triggerIcon?: React.ReactNode\n /**\n * Shows the button that opens the list.\n * @default true\n */\n showTrigger?: boolean\n /**\n * Shows a button that clears the value.\n * @default false\n */\n showClear?: boolean\n}\n\nexport type ComboboxContentProps = AsChildPrimitiveProps<typeof ComboboxPrimitive.Popup> &\n Pick<\n ComboboxPrimitive.Positioner.Props,\n | 'side'\n | 'align'\n | 'sideOffset'\n | 'alignOffset'\n | 'anchor'\n | 'positionMethod'\n | 'collisionBoundary'\n | 'collisionPadding'\n | 'sticky'\n | 'arrowPadding'\n | 'disableAnchorTracking'\n | 'collisionAvoidance'\n > &\n Pick<ComboboxPrimitive.Portal.Props, 'container' | 'keepMounted'>\n\nexport type ComboboxListProps = AsChildPrimitiveProps<typeof ComboboxPrimitive.List>\n\nexport type ComboboxItemProps = AsChildPrimitiveProps<typeof ComboboxPrimitive.Item>\n\nexport type ComboboxGroupProps = AsChildPrimitiveProps<typeof ComboboxPrimitive.Group>\n\nexport type ComboboxLabelProps = AsChildPrimitiveProps<typeof ComboboxPrimitive.GroupLabel>\n\nexport type ComboboxCollectionProps = ComboboxPrimitive.Collection.Props\n\nexport type ComboboxEmptyProps = AsChildPrimitiveProps<typeof ComboboxPrimitive.Empty>\n\nexport type ComboboxSeparatorProps = AsChildPrimitiveProps<typeof ComboboxPrimitive.Separator>\n\nexport type ComboboxChipsProps = AsChildPrimitiveProps<typeof ComboboxPrimitive.Chips> & {\n /**\n * Shows a button that removes all chips.\n * @default false\n */\n showClear?: boolean\n}\n\nexport type ComboboxChipProps = AsChildPrimitiveProps<typeof ComboboxPrimitive.Chip> & {\n /**\n * Shows the button that removes this chip.\n * @default true\n */\n showRemove?: boolean\n}\n\nexport type ComboboxChipsInputProps = Omit<ComboboxPrimitive.Input.Props, 'render'>\n\nconst Combobox = ComboboxPrimitive.Root\n\nfunction ComboboxValue({ ...props }: ComboboxValueProps) {\n return <ComboboxPrimitive.Value data-slot=\"combobox-value\" {...props} />\n}\n\nfunction ComboboxTrigger({\n className,\n children,\n icon = <IconSelector className=\"pointer-events-none size-4 text-muted-foreground\" />,\n asChild,\n ...props\n}: ComboboxTriggerProps) {\n return (\n <ComboboxPrimitive.Trigger\n data-slot=\"combobox-trigger\"\n className={(state) => cn(\"[&_svg:not([class*='size-'])]:size-4\", resolveClassName(className, state))}\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n >\n {!asChild && children}\n {!asChild && icon}\n </ComboboxPrimitive.Trigger>\n )\n}\n\nfunction ComboboxClear({ className, ...props }: ComboboxClearProps) {\n return (\n <ComboboxPrimitive.Clear\n data-slot=\"combobox-clear\"\n render={<InputGroupButton variant=\"ghost\" size=\"icon-xs\" />}\n className={(state) => cn(resolveClassName(className, state))}\n {...props}\n >\n <IconX className=\"pointer-events-none\" />\n </ComboboxPrimitive.Clear>\n )\n}\n\nfunction ComboboxInput({\n className,\n children,\n disabled = false,\n icon,\n id,\n showTrigger = true,\n showClear = false,\n triggerIcon,\n ...props\n}: ComboboxInputProps) {\n const fieldControlId = useFieldControlId(id)\n\n return (\n <InputGroup className={cn('w-auto', className)}>\n {icon && <InputGroupAddon align=\"inline-start\">{icon}</InputGroupAddon>}\n <ComboboxPrimitive.Input id={fieldControlId} render={<InputGroupInput disabled={disabled} />} {...props} />\n <InputGroupAddon align=\"inline-end\">\n {showTrigger && (\n <InputGroupButton\n size=\"icon-xs\"\n variant=\"ghost\"\n asChild\n data-slot=\"input-group-button\"\n className=\"group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent\"\n disabled={disabled}\n >\n <ComboboxTrigger icon={triggerIcon} />\n </InputGroupButton>\n )}\n {showClear && <ComboboxClear disabled={disabled} />}\n </InputGroupAddon>\n {children}\n </InputGroup>\n )\n}\n\nfunction ComboboxContent({\n className,\n asChild,\n children,\n side = 'bottom',\n sideOffset = 6,\n align = 'start',\n alignOffset = 0,\n anchor,\n container,\n keepMounted,\n positionMethod = 'absolute',\n collisionBoundary,\n collisionPadding,\n sticky,\n arrowPadding,\n disableAnchorTracking,\n collisionAvoidance,\n ...props\n}: ComboboxContentProps) {\n return (\n <ComboboxPrimitive.Portal container={container} keepMounted={keepMounted}>\n <ComboboxPrimitive.Positioner\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n anchor={anchor}\n positionMethod={positionMethod}\n collisionBoundary={collisionBoundary}\n collisionPadding={collisionPadding}\n sticky={sticky}\n arrowPadding={arrowPadding}\n disableAnchorTracking={disableAnchorTracking}\n collisionAvoidance={collisionAvoidance}\n className=\"isolate z-50\"\n >\n <ComboboxPrimitive.Popup\n data-slot=\"combobox-content\"\n data-chips={!!anchor}\n className={(state) =>\n cn(\n 'group/combobox-content max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+(--spacing(7)))] origin-(--transform-origin) overflow-hidden rounded-lg text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[chips=true]:min-w-(--anchor-width) data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 animate-none! relative bg-popover/70 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 **:data-[slot$=-item]:focus:bg-foreground/10 **:data-[slot$=-item]:data-highlighted:bg-foreground/10 **:data-[slot$=-separator]:bg-foreground/5 **:data-[slot$=-trigger]:focus:bg-foreground/10 **:data-[slot$=-trigger]:aria-expanded:bg-foreground/10! **:data-[variant=destructive]:focus:bg-foreground/10! **:data-[variant=destructive]:text-accent-foreground! **:data-[variant=destructive]:**:text-accent-foreground!',\n resolveClassName(className, state)\n )\n }\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n </ComboboxPrimitive.Positioner>\n </ComboboxPrimitive.Portal>\n )\n}\n\nfunction ComboboxList({ className, asChild, children, ...props }: ComboboxListProps) {\n return (\n <ComboboxPrimitive.List\n data-slot=\"combobox-list\"\n className={(state) =>\n cn(\n 'no-scrollbar max-h-[min(calc(--spacing(72)-(--spacing(9))),calc(var(--available-height)-(--spacing(9))))] scroll-py-1 overflow-y-auto overscroll-contain p-1 data-empty:p-0',\n resolveClassName(className, state)\n )\n }\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nfunction ComboboxItem({ className, children, asChild, ...props }: ComboboxItemProps) {\n return (\n <ComboboxPrimitive.Item\n data-slot=\"combobox-item\"\n className={(state) =>\n cn(\n \"relative flex w-full cursor-default items-center gap-2 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n resolveClassName(className, state)\n )\n }\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n >\n {!asChild && children}\n {!asChild && (\n <ComboboxPrimitive.ItemIndicator\n render={<span className=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\" />}\n >\n <IconCheck className=\"pointer-events-none\" />\n </ComboboxPrimitive.ItemIndicator>\n )}\n </ComboboxPrimitive.Item>\n )\n}\n\nfunction ComboboxGroup({ className, asChild, children, ...props }: ComboboxGroupProps) {\n return (\n <ComboboxPrimitive.Group\n data-slot=\"combobox-group\"\n className={(state) => cn(resolveClassName(className, state))}\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nfunction ComboboxLabel({ className, asChild, children, ...props }: ComboboxLabelProps) {\n return (\n <ComboboxPrimitive.GroupLabel\n data-slot=\"combobox-label\"\n className={(state) => cn('px-2 py-1.5 text-xs text-muted-foreground', resolveClassName(className, state))}\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nfunction ComboboxCollection({ ...props }: ComboboxCollectionProps) {\n return <ComboboxPrimitive.Collection data-slot=\"combobox-collection\" {...props} />\n}\n\nfunction ComboboxEmpty({ className, asChild, children, ...props }: ComboboxEmptyProps) {\n return (\n <ComboboxPrimitive.Empty\n data-slot=\"combobox-empty\"\n className={(state) =>\n cn(\n 'hidden w-full justify-center py-2 text-center text-sm text-muted-foreground group-data-empty/combobox-content:flex',\n resolveClassName(className, state)\n )\n }\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nfunction ComboboxSeparator({ className, asChild, children, ...props }: ComboboxSeparatorProps) {\n return (\n <ComboboxPrimitive.Separator\n data-slot=\"combobox-separator\"\n className={(state) => cn('-mx-1 my-1 h-px bg-border', resolveClassName(className, state))}\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nfunction ComboboxChips({ className, children, showClear = false, asChild, ...props }: ComboboxChipsProps) {\n return (\n <ComboboxPrimitive.Chips\n data-slot=\"combobox-chips\"\n className={(state) =>\n cn(\n 'flex min-h-8 overflow-hidden flex-wrap items-center gap-1 rounded-lg border border-input bg-transparent bg-clip-padding px-2.5 py-1 text-sm transition-colors focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/50 has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1 dark:bg-input/30 dark:has-aria-invalid:border-destructive/50 dark:has-aria-invalid:ring-destructive/40',\n resolveClassName(className, state)\n )\n }\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n >\n {!asChild && children}\n {showClear && !asChild && (\n <ComboboxPrimitive.Clear\n data-slot=\"combobox-chips-clear\"\n render={<Button variant=\"ghost\" color=\"zinc\" size=\"icon-xs\" />}\n className=\"shrink-0 self-center size-5\"\n >\n <IconX className=\"pointer-events-none\" />\n </ComboboxPrimitive.Clear>\n )}\n </ComboboxPrimitive.Chips>\n )\n}\n\nfunction ComboboxChip({ className, children, showRemove = true, asChild, ...props }: ComboboxChipProps) {\n return (\n <ComboboxPrimitive.Chip\n data-slot=\"combobox-chip\"\n className={(state) =>\n cn(\n 'flex h-[calc(--spacing(5.25))] w-fit text-left max-w-full items-center justify-start gap-1 rounded-sm bg-muted px-1.5 text-xs font-medium whitespace-nowrap text-foreground has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pr-0',\n resolveClassName(className, state)\n )\n }\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n >\n {!asChild && <span className=\"flex-1 truncate\">{children}</span>}\n {showRemove && !asChild && (\n <ComboboxPrimitive.ChipRemove\n render={<Button variant=\"ghost\" color=\"zinc\" size=\"icon-xs\" />}\n className=\"-ml-1 opacity-50 shrink-0 hover:opacity-100\"\n data-slot=\"combobox-chip-remove\"\n >\n <IconX className=\"pointer-events-none\" />\n </ComboboxPrimitive.ChipRemove>\n )}\n </ComboboxPrimitive.Chip>\n )\n}\n\nfunction ComboboxChipsInput({ className, id, 'aria-invalid': ariaInvalid, ...props }: ComboboxChipsInputProps) {\n const fieldControlId = useFieldControlId(id)\n const invalid = useFieldInvalid(ariaInvalid)\n\n return (\n <ComboboxPrimitive.Input\n id={fieldControlId}\n aria-invalid={invalid}\n data-slot=\"combobox-chip-input\"\n className={(state) => cn('min-w-16 flex-1 outline-none', resolveClassName(className, state))}\n {...props}\n />\n )\n}\n\nfunction useComboboxAnchor() {\n return React.useRef<HTMLDivElement | null>(null)\n}\n\nexport {\n Combobox,\n ComboboxChip,\n ComboboxChips,\n ComboboxChipsInput,\n ComboboxClear,\n ComboboxCollection,\n ComboboxContent,\n ComboboxEmpty,\n ComboboxGroup,\n ComboboxInput,\n ComboboxItem,\n ComboboxLabel,\n ComboboxList,\n ComboboxSeparator,\n ComboboxTrigger,\n ComboboxValue,\n useComboboxAnchor\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"combobox.js","names":["ComboboxPrimitive","comboboxPopupClassName","comboboxListClassName","comboboxGroupLabelClassName","comboboxSeparatorClassName","comboboxItemClassName","comboboxEmptyClassName","resolveClassName","React","Combobox$1","Combobox","props","IconSelector","cn","className","state","toAsChildRenderProps","asChild","children","icon","InputGroupButton","IconX","fieldControlId","useFieldControlId","id","InputGroup","InputGroupAddon","InputGroupInput","showTrigger","triggerIcon","showClear","anchor","IconCheck","Button","showRemove","ariaInvalid","invalid","useFieldInvalid"],"sources":["../../src/components/combobox.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { Combobox as ComboboxPrimitive } from '@base-ui/react/combobox'\nimport { IconCheck, IconSelector, IconX } from '@tabler/icons-react'\n\nimport { type AsChildPrimitiveProps, toAsChildRenderProps } from '../lib/as-child'\nimport { cn } from '../lib/utils'\nimport {\n comboboxEmptyClassName,\n comboboxGroupLabelClassName,\n comboboxItemClassName,\n comboboxListClassName,\n comboboxPopupClassName,\n comboboxSeparatorClassName\n} from '../utils/combobox-styles'\nimport { resolveClassName } from '../utils/resolve-class-name'\nimport { Button } from './button'\nimport { useFieldControlId, useFieldInvalid } from './field'\nimport { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput } from './input-group'\n\nexport type ComboboxProps<Value = unknown, Multiple extends boolean | undefined = false> = ComboboxPrimitive.Root.Props<\n Value,\n Multiple\n>\n\nexport type ComboboxValueProps = ComboboxPrimitive.Value.Props\n\nexport type ComboboxTriggerProps = AsChildPrimitiveProps<typeof ComboboxPrimitive.Trigger> & {\n /** Icon of the trigger button. Defaults to an up/down chevron. */\n icon?: React.ReactNode\n}\n\nexport type ComboboxClearProps = Omit<ComboboxPrimitive.Clear.Props, 'render'>\n\nexport type ComboboxInputProps = Omit<ComboboxPrimitive.Input.Props, 'render' | 'className'> & {\n /** Classes for the input group that wraps the input and its buttons. */\n className?: string\n /** Icon shown at the start of the input. */\n icon?: React.ReactNode\n /** Replaces the icon of the trigger button. */\n triggerIcon?: React.ReactNode\n /**\n * Shows the button that opens the list.\n * @default true\n */\n showTrigger?: boolean\n /**\n * Shows a button that clears the value.\n * @default false\n */\n showClear?: boolean\n}\n\nexport type ComboboxContentProps = AsChildPrimitiveProps<typeof ComboboxPrimitive.Popup> &\n Pick<\n ComboboxPrimitive.Positioner.Props,\n | 'side'\n | 'align'\n | 'sideOffset'\n | 'alignOffset'\n | 'anchor'\n | 'positionMethod'\n | 'collisionBoundary'\n | 'collisionPadding'\n | 'sticky'\n | 'arrowPadding'\n | 'disableAnchorTracking'\n | 'collisionAvoidance'\n > &\n Pick<ComboboxPrimitive.Portal.Props, 'container' | 'keepMounted'>\n\nexport type ComboboxListProps = AsChildPrimitiveProps<typeof ComboboxPrimitive.List>\n\nexport type ComboboxItemProps = AsChildPrimitiveProps<typeof ComboboxPrimitive.Item>\n\nexport type ComboboxGroupProps = AsChildPrimitiveProps<typeof ComboboxPrimitive.Group>\n\nexport type ComboboxLabelProps = AsChildPrimitiveProps<typeof ComboboxPrimitive.GroupLabel>\n\nexport type ComboboxCollectionProps = ComboboxPrimitive.Collection.Props\n\nexport type ComboboxEmptyProps = AsChildPrimitiveProps<typeof ComboboxPrimitive.Empty>\n\nexport type ComboboxSeparatorProps = AsChildPrimitiveProps<typeof ComboboxPrimitive.Separator>\n\nexport type ComboboxChipsProps = AsChildPrimitiveProps<typeof ComboboxPrimitive.Chips> & {\n /**\n * Shows a button that removes all chips.\n * @default false\n */\n showClear?: boolean\n}\n\nexport type ComboboxChipProps = AsChildPrimitiveProps<typeof ComboboxPrimitive.Chip> & {\n /**\n * Shows the button that removes this chip.\n * @default true\n */\n showRemove?: boolean\n}\n\nexport type ComboboxChipsInputProps = Omit<ComboboxPrimitive.Input.Props, 'render'>\n\nconst Combobox = ComboboxPrimitive.Root\n\nfunction ComboboxValue({ ...props }: ComboboxValueProps) {\n return <ComboboxPrimitive.Value data-slot=\"combobox-value\" {...props} />\n}\n\nfunction ComboboxTrigger({\n className,\n children,\n icon = <IconSelector className=\"pointer-events-none size-4 text-muted-foreground\" />,\n asChild,\n ...props\n}: ComboboxTriggerProps) {\n return (\n <ComboboxPrimitive.Trigger\n data-slot=\"combobox-trigger\"\n className={(state) => cn(\"[&_svg:not([class*='size-'])]:size-4\", resolveClassName(className, state))}\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n >\n {!asChild && children}\n {!asChild && icon}\n </ComboboxPrimitive.Trigger>\n )\n}\n\nfunction ComboboxClear({ className, ...props }: ComboboxClearProps) {\n return (\n <ComboboxPrimitive.Clear\n data-slot=\"combobox-clear\"\n render={<InputGroupButton variant=\"ghost\" size=\"icon-xs\" />}\n className={(state) => cn(resolveClassName(className, state))}\n {...props}\n >\n <IconX className=\"pointer-events-none\" />\n </ComboboxPrimitive.Clear>\n )\n}\n\nfunction ComboboxInput({\n className,\n children,\n disabled = false,\n icon,\n id,\n showTrigger = true,\n showClear = false,\n triggerIcon,\n ...props\n}: ComboboxInputProps) {\n const fieldControlId = useFieldControlId(id)\n\n return (\n <InputGroup className={cn('w-auto', className)}>\n {icon && <InputGroupAddon align=\"inline-start\">{icon}</InputGroupAddon>}\n <ComboboxPrimitive.Input id={fieldControlId} render={<InputGroupInput disabled={disabled} />} {...props} />\n <InputGroupAddon align=\"inline-end\">\n {showTrigger && (\n <InputGroupButton\n size=\"icon-xs\"\n variant=\"ghost\"\n asChild\n data-slot=\"input-group-button\"\n className=\"group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent\"\n disabled={disabled}\n >\n <ComboboxTrigger icon={triggerIcon} />\n </InputGroupButton>\n )}\n {showClear && <ComboboxClear disabled={disabled} />}\n </InputGroupAddon>\n {children}\n </InputGroup>\n )\n}\n\nfunction ComboboxContent({\n className,\n asChild,\n children,\n side = 'bottom',\n sideOffset = 6,\n align = 'start',\n alignOffset = 0,\n anchor,\n container,\n keepMounted,\n positionMethod = 'absolute',\n collisionBoundary,\n collisionPadding,\n sticky,\n arrowPadding,\n disableAnchorTracking,\n collisionAvoidance,\n ...props\n}: ComboboxContentProps) {\n return (\n <ComboboxPrimitive.Portal container={container} keepMounted={keepMounted}>\n <ComboboxPrimitive.Positioner\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n anchor={anchor}\n positionMethod={positionMethod}\n collisionBoundary={collisionBoundary}\n collisionPadding={collisionPadding}\n sticky={sticky}\n arrowPadding={arrowPadding}\n disableAnchorTracking={disableAnchorTracking}\n collisionAvoidance={collisionAvoidance}\n className=\"isolate z-50\"\n >\n <ComboboxPrimitive.Popup\n data-slot=\"combobox-content\"\n data-chips={!!anchor}\n className={(state) => cn(comboboxPopupClassName, resolveClassName(className, state))}\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n </ComboboxPrimitive.Positioner>\n </ComboboxPrimitive.Portal>\n )\n}\n\nfunction ComboboxList({ className, asChild, children, ...props }: ComboboxListProps) {\n return (\n <ComboboxPrimitive.List\n data-slot=\"combobox-list\"\n className={(state) => cn(comboboxListClassName, resolveClassName(className, state))}\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nfunction ComboboxItem({ className, children, asChild, ...props }: ComboboxItemProps) {\n return (\n <ComboboxPrimitive.Item\n data-slot=\"combobox-item\"\n className={(state) => cn(comboboxItemClassName, 'pr-8', resolveClassName(className, state))}\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n >\n {!asChild && children}\n {!asChild && (\n <ComboboxPrimitive.ItemIndicator\n render={<span className=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\" />}\n >\n <IconCheck className=\"pointer-events-none\" />\n </ComboboxPrimitive.ItemIndicator>\n )}\n </ComboboxPrimitive.Item>\n )\n}\n\nfunction ComboboxGroup({ className, asChild, children, ...props }: ComboboxGroupProps) {\n return (\n <ComboboxPrimitive.Group\n data-slot=\"combobox-group\"\n className={(state) => cn(resolveClassName(className, state))}\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nfunction ComboboxLabel({ className, asChild, children, ...props }: ComboboxLabelProps) {\n return (\n <ComboboxPrimitive.GroupLabel\n data-slot=\"combobox-label\"\n className={(state) => cn(comboboxGroupLabelClassName, resolveClassName(className, state))}\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nfunction ComboboxCollection({ ...props }: ComboboxCollectionProps) {\n return <ComboboxPrimitive.Collection data-slot=\"combobox-collection\" {...props} />\n}\n\nfunction ComboboxEmpty({ className, asChild, children, ...props }: ComboboxEmptyProps) {\n return (\n <ComboboxPrimitive.Empty\n data-slot=\"combobox-empty\"\n className={(state) => cn(comboboxEmptyClassName, resolveClassName(className, state))}\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nfunction ComboboxSeparator({ className, asChild, children, ...props }: ComboboxSeparatorProps) {\n return (\n <ComboboxPrimitive.Separator\n data-slot=\"combobox-separator\"\n className={(state) => cn(comboboxSeparatorClassName, resolveClassName(className, state))}\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nfunction ComboboxChips({ className, children, showClear = false, asChild, ...props }: ComboboxChipsProps) {\n return (\n <ComboboxPrimitive.Chips\n data-slot=\"combobox-chips\"\n className={(state) =>\n cn(\n 'flex min-h-8 overflow-hidden flex-wrap items-center gap-1 rounded-lg border border-input bg-transparent bg-clip-padding px-2.5 py-1 text-sm transition-colors focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/50 has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1 dark:bg-input/30 dark:has-aria-invalid:border-destructive/50 dark:has-aria-invalid:ring-destructive/40',\n resolveClassName(className, state)\n )\n }\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n >\n {!asChild && children}\n {showClear && !asChild && (\n <ComboboxPrimitive.Clear\n data-slot=\"combobox-chips-clear\"\n render={<Button variant=\"ghost\" color=\"zinc\" size=\"icon-xs\" />}\n className=\"shrink-0 self-center size-5\"\n >\n <IconX className=\"pointer-events-none\" />\n </ComboboxPrimitive.Clear>\n )}\n </ComboboxPrimitive.Chips>\n )\n}\n\nfunction ComboboxChip({ className, children, showRemove = true, asChild, ...props }: ComboboxChipProps) {\n return (\n <ComboboxPrimitive.Chip\n data-slot=\"combobox-chip\"\n className={(state) =>\n cn(\n 'flex h-[calc(--spacing(5.25))] w-fit text-left max-w-full items-center justify-start gap-1 rounded-sm bg-muted px-1.5 text-xs font-medium whitespace-nowrap text-foreground has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pr-0',\n resolveClassName(className, state)\n )\n }\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n >\n {!asChild && <span className=\"flex-1 truncate\">{children}</span>}\n {showRemove && !asChild && (\n <ComboboxPrimitive.ChipRemove\n render={<Button variant=\"ghost\" color=\"zinc\" size=\"icon-xs\" />}\n className=\"-ml-1 opacity-50 shrink-0 hover:opacity-100\"\n data-slot=\"combobox-chip-remove\"\n >\n <IconX className=\"pointer-events-none\" />\n </ComboboxPrimitive.ChipRemove>\n )}\n </ComboboxPrimitive.Chip>\n )\n}\n\nfunction ComboboxChipsInput({ className, id, 'aria-invalid': ariaInvalid, ...props }: ComboboxChipsInputProps) {\n const fieldControlId = useFieldControlId(id)\n const invalid = useFieldInvalid(ariaInvalid)\n\n return (\n <ComboboxPrimitive.Input\n id={fieldControlId}\n aria-invalid={invalid}\n data-slot=\"combobox-chip-input\"\n className={(state) => cn('min-w-16 flex-1 outline-none', resolveClassName(className, state))}\n {...props}\n />\n )\n}\n\nfunction useComboboxAnchor() {\n return React.useRef<HTMLDivElement | null>(null)\n}\n\nexport {\n Combobox,\n ComboboxChip,\n ComboboxChips,\n ComboboxChipsInput,\n ComboboxClear,\n ComboboxCollection,\n ComboboxContent,\n ComboboxEmpty,\n ComboboxGroup,\n ComboboxInput,\n ComboboxItem,\n ComboboxLabel,\n ComboboxList,\n ComboboxSeparator,\n ComboboxTrigger,\n ComboboxValue,\n useComboboxAnchor\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"../rolldown-runtime-BhWHdk3m.js";import{cn as e}from"../lib/utils.js";import{
|
|
1
|
+
import"../rolldown-runtime-BhWHdk3m.js";import{cn as e}from"../lib/utils.js";import{Dialog as t,DialogContent as n,DialogDescription as r,DialogHeader as i,DialogTitle as a}from"./dialog.js";import{useFieldControlId as o}from"./field.js";import{InputGroup as s,InputGroupAddon as c}from"./input-group.js";import{IconCheck as l,IconSearch as u}from"@tabler/icons-react";import{jsx as d,jsxs as f}from"react/jsx-runtime";import{Command as p}from"cmdk";function Command({className:t,...n}){return/* @__PURE__ */ d(p,{"data-slot":`command`,className:e(`flex size-full flex-col overflow-hidden rounded-xl! bg-popover p-1 text-popover-foreground`,t),...n})}function CommandDialog({title:o=`Command Palette`,description:s=`Search for a command to run...`,children:c,className:l,showCloseButton:u=!1,size:p=`sm`,...m}){return/* @__PURE__ */ f(t,{size:p,...m,children:[/* @__PURE__ */ f(i,{className:`sr-only`,children:[/* @__PURE__ */ d(a,{children:o}),/* @__PURE__ */ d(r,{children:s})]}),/* @__PURE__ */ d(n,{className:e(`top-1/3 translate-y-0 overflow-hidden rounded-xl! p-0`,l),showCloseButton:u,children:c})]})}function CommandInput({className:t,id:n,...r}){let i=o(n);return/* @__PURE__ */ d(`div`,{"data-slot":`command-input-wrapper`,className:`p-1 pb-0`,children:/* @__PURE__ */ f(s,{className:e(`h-8! rounded-lg! border-input/30 bg-input/30 shadow-none!`,`*:data-[slot=input-group-addon]:pl-2!`),children:[/* @__PURE__ */ d(p.Input,{id:i,"data-slot":`command-input`,className:e(`w-full text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50`,t),...r}),/* @__PURE__ */ d(c,{children:/* @__PURE__ */ d(u,{className:`size-4 shrink-0 opacity-50`})})]})})}function CommandList({className:t,...n}){return/* @__PURE__ */ d(p.List,{"data-slot":`command-list`,className:e(`no-scrollbar max-h-72 scroll-py-1 overflow-x-hidden overflow-y-auto outline-none`,t),...n})}function CommandEmpty({className:t,...n}){return/* @__PURE__ */ d(p.Empty,{"data-slot":`command-empty`,className:e(`py-6 text-center text-sm`,t),...n})}function CommandGroup({className:t,...n}){return/* @__PURE__ */ d(p.Group,{"data-slot":`command-group`,className:e(`overflow-hidden p-1 text-foreground`,`**:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5`,`**:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium`,`**:[[cmdk-group-heading]]:text-muted-foreground`,t),...n})}function CommandSeparator({className:t,...n}){return/* @__PURE__ */ d(p.Separator,{"data-slot":`command-separator`,className:e(`-mx-1 h-px bg-border`,t),...n})}function CommandItem({className:t,children:n,...r}){return/* @__PURE__ */ f(p.Item,{"data-slot":`command-item`,className:e(`group/command-item relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none`,`in-data-[slot=dialog-content]:rounded-lg!`,`data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50`,`data-selected:bg-muted data-selected:text-foreground data-selected:*:[svg]:text-foreground`,`[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,t),...r,children:[n,/* @__PURE__ */ d(l,{className:e(`ml-auto opacity-0`,`group-has-data-[slot=command-shortcut]/command-item:hidden`,`group-data-[checked=true]/command-item:opacity-100`)})]})}function CommandShortcut({className:t,...n}){return/* @__PURE__ */ d(`span`,{"data-slot":`command-shortcut`,className:e(`ml-auto text-xs tracking-widest text-muted-foreground group-data-selected/command-item:text-foreground`,t),...n})}export{Command,CommandDialog,CommandEmpty,CommandGroup,CommandInput,CommandItem,CommandList,CommandSeparator,CommandShortcut};
|
|
2
2
|
//# sourceMappingURL=command.js.map
|