@manafishrov/ui 1.3.0 → 1.3.2

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.
@@ -22,4 +22,4 @@ export declare const DatePickerDayView: Component;
22
22
  export declare const DatePickerMonthView: Component;
23
23
  export declare const DatePickerYearView: Component;
24
24
  export declare const DatePickerViews: Component;
25
- export declare const Calendar: Component<DatePickerPrimitive.RootProps>;
25
+ export declare const DatePickerCalendar: Component<DatePickerPrimitive.RootProps>;
@@ -2,8 +2,8 @@ import { createComponent as e, mergeProps as s, spread as v, insert as P, templa
2
2
  import { date_picker_exports as n } from "../node_modules/.bun/@ark-ui_solid@5.34.1_2e1854f049906f04/node_modules/@ark-ui/solid/dist/chunk/4V5X4XYS.js";
3
3
  import { splitProps as o, For as c } from "solid-js";
4
4
  import { cn as l } from "../node_modules/.bun/tailwind-variants@3.2.2_7ac958b541464b98/node_modules/tailwind-variants/dist/index.js";
5
- import y from "../_virtual/calendar-month.js";
6
- import D from "../_virtual/chevron-left.js";
5
+ import D from "../_virtual/calendar-month.js";
6
+ import y from "../_virtual/chevron-left.js";
7
7
  import T from "../_virtual/chevron-right.js";
8
8
  import { buttonVariants as i } from "./Button.js";
9
9
  var C = /* @__PURE__ */ k("<button>");
@@ -88,7 +88,7 @@ const z = (r) => {
88
88
  }
89
89
  }, a, {
90
90
  get children() {
91
- return t.children ?? e(y, {
91
+ return t.children ?? e(D, {
92
92
  class: "size-4"
93
93
  });
94
94
  }
@@ -117,7 +117,7 @@ const z = (r) => {
117
117
  }
118
118
  }, a, {
119
119
  get children() {
120
- return t.children ?? e(D, {
120
+ return t.children ?? e(y, {
121
121
  class: "size-4"
122
122
  });
123
123
  }
@@ -326,8 +326,8 @@ const z = (r) => {
326
326
  }
327
327
  }));
328
328
  export {
329
- X as Calendar,
330
329
  z as DatePicker,
330
+ X as DatePickerCalendar,
331
331
  _ as DatePickerContent,
332
332
  d as DatePickerContext,
333
333
  Q as DatePickerControl,
@@ -1 +1 @@
1
- {"version":3,"file":"DatePicker.js","sources":["../../src/components/DatePicker.tsx"],"sourcesContent":["import { DatePicker as DatePickerPrimitive } from '@ark-ui/solid/date-picker';\nimport { type Component, For, splitProps } from 'solid-js';\nimport { cn } from 'tailwind-variants';\nimport CalendarMonthIcon from '~icons/material-symbols/calendar-month';\nimport ChevronLeftIcon from '~icons/material-symbols/chevron-left';\nimport ChevronRightIcon from '~icons/material-symbols/chevron-right';\n\nimport { buttonVariants } from '@/components/Button';\nexport const DatePicker: Component<DatePickerPrimitive.RootProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return <DatePickerPrimitive.Root class={cn('flex w-full flex-col', local.class)} {...others} />;\n};\nexport const DatePickerContext = DatePickerPrimitive.Context,\n DatePickerRangeText = DatePickerPrimitive.RangeText,\n DatePickerView = DatePickerPrimitive.View,\n DatePickerViewTrigger = DatePickerPrimitive.ViewTrigger;\nexport const DatePickerTable: Component<DatePickerPrimitive.TableProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <DatePickerPrimitive.Table\n class={cn('space-y-1 w-full border-collapse', local.class)}\n {...others}\n />\n );\n};\nexport const DatePickerTableBody: Component<DatePickerPrimitive.TableBodyProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return <DatePickerPrimitive.TableBody class={cn('', local.class)} {...others} />;\n};\nexport const DatePickerTableCell: Component<DatePickerPrimitive.TableCellProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <DatePickerPrimitive.TableCell\n class={cn(\n 'text-sm p-0 relative text-center focus-within:relative focus-within:z-20 [&:has([data-selected])]:bg-accent first:[&:has([data-selected])]:rounded-l-md last:[&:has([data-selected])]:rounded-r-md',\n local.class,\n )}\n {...others}\n />\n );\n};\nexport const DatePickerTableHead: Component<DatePickerPrimitive.TableHeadProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return <DatePickerPrimitive.TableHead class={cn('', local.class)} {...others} />;\n};\nexport const DatePickerTableHeader: Component<DatePickerPrimitive.TableHeaderProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <DatePickerPrimitive.TableHeader\n class={cn('w-9 font-normal rounded-md text-[0.8rem] text-muted-foreground', local.class)}\n {...others}\n />\n );\n};\nexport const DatePickerTableRow: Component<DatePickerPrimitive.TableRowProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return <DatePickerPrimitive.TableRow class={cn('mt-2 flex w-full', local.class)} {...others} />;\n};\nexport const DatePickerLabel: Component<DatePickerPrimitive.LabelProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <DatePickerPrimitive.Label\n class={cn(\n 'mb-1.5 gap-2 text-sm font-medium flex items-center leading-none select-none group-data-disabled:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50',\n local.class,\n )}\n {...others}\n />\n );\n};\nexport const DatePickerControl: Component<DatePickerPrimitive.ControlProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return <DatePickerPrimitive.Control class={cn('gap-2 flex flex-row', local.class)} {...others} />;\n};\nexport const DatePickerInput: Component<DatePickerPrimitive.InputProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <DatePickerPrimitive.Input\n class={cn(\n 'h-9 px-3 py-2 text-sm file:text-sm file:font-medium shadow-sm flex w-full rounded-lg border border-input bg-background transition-colors file:border-0 file:bg-transparent placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 dark:bg-input/30 dark:hover:bg-input/50',\n local.class,\n )}\n {...others}\n />\n );\n};\nexport const DatePickerTrigger: Component<DatePickerPrimitive.TriggerProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'children']);\n return (\n <DatePickerPrimitive.Trigger\n class={cn(\n buttonVariants({ variant: 'outline', size: 'icon' }),\n 'size-9 p-0 font-normal',\n local.class,\n )}\n {...others}\n >\n {local.children ?? <CalendarMonthIcon class='size-4' />}\n </DatePickerPrimitive.Trigger>\n );\n};\nexport const DatePickerPositioner: Component<DatePickerPrimitive.PositionerProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return <DatePickerPrimitive.Positioner class={cn('isolate z-50', local.class)} {...others} />;\n};\nexport const DatePickerContent: Component<DatePickerPrimitive.ContentProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <DatePickerPrimitive.Content\n class={cn(\n 'w-72 p-3 shadow-md rounded-lg bg-popover text-popover-foreground ring-1 ring-foreground/10 outline-none data-[side=bottom]:slide-in-from-top-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-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95',\n local.class,\n )}\n {...others}\n />\n );\n};\nexport const DatePickerPrevTrigger: Component<DatePickerPrimitive.PrevTriggerProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'children']);\n return (\n <DatePickerPrimitive.PrevTrigger\n class={cn(\n buttonVariants({ variant: 'outline' }),\n 'size-7 p-0 left-1 absolute bg-transparent opacity-50 hover:opacity-100',\n local.class,\n )}\n {...others}\n >\n {local.children ?? <ChevronLeftIcon class='size-4' />}\n </DatePickerPrimitive.PrevTrigger>\n );\n};\nexport const DatePickerNextTrigger: Component<DatePickerPrimitive.NextTriggerProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'children']);\n return (\n <DatePickerPrimitive.NextTrigger\n class={cn(\n buttonVariants({ variant: 'outline' }),\n 'size-7 p-0 right-1 absolute bg-transparent opacity-50 hover:opacity-100',\n local.class,\n )}\n {...others}\n >\n {local.children ?? <ChevronRightIcon class='size-4' />}\n </DatePickerPrimitive.NextTrigger>\n );\n};\nexport const DatePickerTableCellTrigger: Component<DatePickerPrimitive.TableCellTriggerProps> = (\n props,\n) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <DatePickerPrimitive.TableCellTrigger\n class={cn(\n buttonVariants({ variant: 'ghost' }),\n 'size-9 p-0 font-normal data-selected:opacity-100',\n 'data-today:bg-accent data-today:text-accent-foreground',\n 'data-selected:bg-primary data-selected:text-primary-foreground data-selected:hover:bg-primary data-selected:hover:text-primary-foreground data-selected:focus:bg-primary data-selected:focus:text-primary-foreground',\n 'data-disabled:text-muted-foreground data-[disabled=true]:opacity-50',\n 'data-outside-range:text-muted-foreground data-outside-range:opacity-50',\n 'data-in-range:rounded-none data-in-range:bg-accent data-in-range:text-accent-foreground',\n 'data-range-end:rounded-r-md data-range-start:rounded-l-md',\n local.class,\n )}\n {...others}\n />\n );\n};\nexport const DatePickerViewControl: Component<DatePickerPrimitive.ViewControlProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'children']);\n return (\n <DatePickerPrimitive.ViewControl\n class={cn('pt-1 mb-4 px-8 relative flex items-center justify-center', local.class)}\n {...others}\n >\n <DatePickerPrevTrigger />\n <DatePickerViewTrigger\n asChild={(triggerProps) => (\n <button\n class={cn(buttonVariants({ variant: 'ghost' }), 'h-7 px-2 py-1 text-sm font-medium')}\n {...triggerProps()}\n >\n <DatePickerRangeText />\n </button>\n )}\n />\n <DatePickerNextTrigger />\n </DatePickerPrimitive.ViewControl>\n );\n};\nexport const DatePickerDayView: Component = () => (\n <DatePickerView view='day'>\n <DatePickerViewControl />\n <DatePickerTable>\n <DatePickerTableHead>\n <DatePickerTableRow>\n <DatePickerContext>\n {(api) => (\n <For each={api().weekDays}>\n {(weekDay) => (\n <DatePickerTableHeader aria-label={weekDay.narrow}>\n {weekDay.short}\n </DatePickerTableHeader>\n )}\n </For>\n )}\n </DatePickerContext>\n </DatePickerTableRow>\n </DatePickerTableHead>\n <DatePickerTableBody>\n <DatePickerContext>\n {(api) => (\n <For each={api().weeks}>\n {(week) => (\n <DatePickerTableRow>\n <For each={week}>\n {(day) => (\n <DatePickerTableCell value={day}>\n <DatePickerTableCellTrigger>{day.day}</DatePickerTableCellTrigger>\n </DatePickerTableCell>\n )}\n </For>\n </DatePickerTableRow>\n )}\n </For>\n )}\n </DatePickerContext>\n </DatePickerTableBody>\n </DatePickerTable>\n </DatePickerView>\n);\nexport const DatePickerMonthView: Component = () => (\n <DatePickerView view='month'>\n <DatePickerViewControl />\n <DatePickerTable>\n <DatePickerTableBody>\n <DatePickerContext>\n {(api) => (\n <For each={api().getMonthsGrid({ columns: 4, format: 'short' })}>\n {(months) => (\n <DatePickerTableRow class='gap-2 w-full'>\n <For each={months}>\n {(month) => (\n <DatePickerTableCell value={month.value} class='flex-1'>\n <DatePickerTableCellTrigger class='w-full'>\n {month.label}\n </DatePickerTableCellTrigger>\n </DatePickerTableCell>\n )}\n </For>\n </DatePickerTableRow>\n )}\n </For>\n )}\n </DatePickerContext>\n </DatePickerTableBody>\n </DatePickerTable>\n </DatePickerView>\n);\nexport const DatePickerYearView: Component = () => (\n <DatePickerView view='year'>\n <DatePickerViewControl />\n <DatePickerTable>\n <DatePickerTableBody>\n <DatePickerContext>\n {(api) => (\n <For each={api().getYearsGrid({ columns: 4 })}>\n {(years) => (\n <DatePickerTableRow class='gap-2 w-full'>\n <For each={years}>\n {(year) => (\n <DatePickerTableCell value={year.value} class='flex-1'>\n <DatePickerTableCellTrigger class='w-full'>\n {year.label}\n </DatePickerTableCellTrigger>\n </DatePickerTableCell>\n )}\n </For>\n </DatePickerTableRow>\n )}\n </For>\n )}\n </DatePickerContext>\n </DatePickerTableBody>\n </DatePickerTable>\n </DatePickerView>\n);\nexport const DatePickerViews: Component = () => [\n <DatePickerDayView />,\n <DatePickerMonthView />,\n <DatePickerYearView />,\n];\nexport const Calendar: Component<DatePickerPrimitive.RootProps> = (props) => (\n <DatePicker {...props} inline unmountOnExit={false}>\n <DatePickerContent class='border-none shadow-none ring-0'>\n <DatePickerViews />\n </DatePickerContent>\n </DatePicker>\n);\n"],"names":["DatePicker","props","local","others","splitProps","_$createComponent","DatePickerPrimitive","Root","_$mergeProps","cn","class","DatePickerContext","Context","DatePickerRangeText","RangeText","DatePickerView","View","DatePickerViewTrigger","ViewTrigger","DatePickerTable","Table","DatePickerTableBody","TableBody","DatePickerTableCell","TableCell","DatePickerTableHead","TableHead","DatePickerTableHeader","TableHeader","DatePickerTableRow","TableRow","DatePickerLabel","Label","DatePickerControl","Control","DatePickerInput","Input","DatePickerTrigger","Trigger","buttonVariants","variant","size","children","CalendarMonthIcon","DatePickerPositioner","Positioner","DatePickerContent","Content","DatePickerPrevTrigger","PrevTrigger","ChevronLeftIcon","DatePickerNextTrigger","NextTrigger","ChevronRightIcon","DatePickerTableCellTrigger","TableCellTrigger","DatePickerViewControl","ViewControl","asChild","triggerProps","_el$","_tmpl$","_$spread","_$insert","DatePickerDayView","view","api","For","each","weekDays","weekDay","narrow","short","weeks","week","day","value","DatePickerMonthView","getMonthsGrid","columns","format","months","month","label","DatePickerYearView","getYearsGrid","years","year","DatePickerViews","Calendar","inline","unmountOnExit"],"mappings":"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"}
1
+ {"version":3,"file":"DatePicker.js","sources":["../../src/components/DatePicker.tsx"],"sourcesContent":["import { DatePicker as DatePickerPrimitive } from '@ark-ui/solid/date-picker';\nimport { type Component, For, splitProps } from 'solid-js';\nimport { cn } from 'tailwind-variants';\nimport CalendarMonthIcon from '~icons/material-symbols/calendar-month';\nimport ChevronLeftIcon from '~icons/material-symbols/chevron-left';\nimport ChevronRightIcon from '~icons/material-symbols/chevron-right';\n\nimport { buttonVariants } from '@/components/Button';\nexport const DatePicker: Component<DatePickerPrimitive.RootProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return <DatePickerPrimitive.Root class={cn('flex w-full flex-col', local.class)} {...others} />;\n};\nexport const DatePickerContext = DatePickerPrimitive.Context,\n DatePickerRangeText = DatePickerPrimitive.RangeText,\n DatePickerView = DatePickerPrimitive.View,\n DatePickerViewTrigger = DatePickerPrimitive.ViewTrigger;\nexport const DatePickerTable: Component<DatePickerPrimitive.TableProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <DatePickerPrimitive.Table\n class={cn('space-y-1 w-full border-collapse', local.class)}\n {...others}\n />\n );\n};\nexport const DatePickerTableBody: Component<DatePickerPrimitive.TableBodyProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return <DatePickerPrimitive.TableBody class={cn('', local.class)} {...others} />;\n};\nexport const DatePickerTableCell: Component<DatePickerPrimitive.TableCellProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <DatePickerPrimitive.TableCell\n class={cn(\n 'text-sm p-0 relative text-center focus-within:relative focus-within:z-20 [&:has([data-selected])]:bg-accent first:[&:has([data-selected])]:rounded-l-md last:[&:has([data-selected])]:rounded-r-md',\n local.class,\n )}\n {...others}\n />\n );\n};\nexport const DatePickerTableHead: Component<DatePickerPrimitive.TableHeadProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return <DatePickerPrimitive.TableHead class={cn('', local.class)} {...others} />;\n};\nexport const DatePickerTableHeader: Component<DatePickerPrimitive.TableHeaderProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <DatePickerPrimitive.TableHeader\n class={cn('w-9 font-normal rounded-md text-[0.8rem] text-muted-foreground', local.class)}\n {...others}\n />\n );\n};\nexport const DatePickerTableRow: Component<DatePickerPrimitive.TableRowProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return <DatePickerPrimitive.TableRow class={cn('mt-2 flex w-full', local.class)} {...others} />;\n};\nexport const DatePickerLabel: Component<DatePickerPrimitive.LabelProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <DatePickerPrimitive.Label\n class={cn(\n 'mb-1.5 gap-2 text-sm font-medium flex items-center leading-none select-none group-data-disabled:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50',\n local.class,\n )}\n {...others}\n />\n );\n};\nexport const DatePickerControl: Component<DatePickerPrimitive.ControlProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return <DatePickerPrimitive.Control class={cn('gap-2 flex flex-row', local.class)} {...others} />;\n};\nexport const DatePickerInput: Component<DatePickerPrimitive.InputProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <DatePickerPrimitive.Input\n class={cn(\n 'h-9 px-3 py-2 text-sm file:text-sm file:font-medium shadow-sm flex w-full rounded-lg border border-input bg-background transition-colors file:border-0 file:bg-transparent placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 dark:bg-input/30 dark:hover:bg-input/50',\n local.class,\n )}\n {...others}\n />\n );\n};\nexport const DatePickerTrigger: Component<DatePickerPrimitive.TriggerProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'children']);\n return (\n <DatePickerPrimitive.Trigger\n class={cn(\n buttonVariants({ variant: 'outline', size: 'icon' }),\n 'size-9 p-0 font-normal',\n local.class,\n )}\n {...others}\n >\n {local.children ?? <CalendarMonthIcon class='size-4' />}\n </DatePickerPrimitive.Trigger>\n );\n};\nexport const DatePickerPositioner: Component<DatePickerPrimitive.PositionerProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return <DatePickerPrimitive.Positioner class={cn('isolate z-50', local.class)} {...others} />;\n};\nexport const DatePickerContent: Component<DatePickerPrimitive.ContentProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <DatePickerPrimitive.Content\n class={cn(\n 'w-72 p-3 shadow-md rounded-lg bg-popover text-popover-foreground ring-1 ring-foreground/10 outline-none data-[side=bottom]:slide-in-from-top-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-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95',\n local.class,\n )}\n {...others}\n />\n );\n};\nexport const DatePickerPrevTrigger: Component<DatePickerPrimitive.PrevTriggerProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'children']);\n return (\n <DatePickerPrimitive.PrevTrigger\n class={cn(\n buttonVariants({ variant: 'outline' }),\n 'size-7 p-0 left-1 absolute bg-transparent opacity-50 hover:opacity-100',\n local.class,\n )}\n {...others}\n >\n {local.children ?? <ChevronLeftIcon class='size-4' />}\n </DatePickerPrimitive.PrevTrigger>\n );\n};\nexport const DatePickerNextTrigger: Component<DatePickerPrimitive.NextTriggerProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'children']);\n return (\n <DatePickerPrimitive.NextTrigger\n class={cn(\n buttonVariants({ variant: 'outline' }),\n 'size-7 p-0 right-1 absolute bg-transparent opacity-50 hover:opacity-100',\n local.class,\n )}\n {...others}\n >\n {local.children ?? <ChevronRightIcon class='size-4' />}\n </DatePickerPrimitive.NextTrigger>\n );\n};\nexport const DatePickerTableCellTrigger: Component<DatePickerPrimitive.TableCellTriggerProps> = (\n props,\n) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <DatePickerPrimitive.TableCellTrigger\n class={cn(\n buttonVariants({ variant: 'ghost' }),\n 'size-9 p-0 font-normal data-selected:opacity-100',\n 'data-today:bg-accent data-today:text-accent-foreground',\n 'data-selected:bg-primary data-selected:text-primary-foreground data-selected:hover:bg-primary data-selected:hover:text-primary-foreground data-selected:focus:bg-primary data-selected:focus:text-primary-foreground',\n 'data-disabled:text-muted-foreground data-[disabled=true]:opacity-50',\n 'data-outside-range:text-muted-foreground data-outside-range:opacity-50',\n 'data-in-range:rounded-none data-in-range:bg-accent data-in-range:text-accent-foreground',\n 'data-range-end:rounded-r-md data-range-start:rounded-l-md',\n local.class,\n )}\n {...others}\n />\n );\n};\nexport const DatePickerViewControl: Component<DatePickerPrimitive.ViewControlProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'children']);\n return (\n <DatePickerPrimitive.ViewControl\n class={cn('pt-1 mb-4 px-8 relative flex items-center justify-center', local.class)}\n {...others}\n >\n <DatePickerPrevTrigger />\n <DatePickerViewTrigger\n asChild={(triggerProps) => (\n <button\n class={cn(buttonVariants({ variant: 'ghost' }), 'h-7 px-2 py-1 text-sm font-medium')}\n {...triggerProps()}\n >\n <DatePickerRangeText />\n </button>\n )}\n />\n <DatePickerNextTrigger />\n </DatePickerPrimitive.ViewControl>\n );\n};\nexport const DatePickerDayView: Component = () => (\n <DatePickerView view='day'>\n <DatePickerViewControl />\n <DatePickerTable>\n <DatePickerTableHead>\n <DatePickerTableRow>\n <DatePickerContext>\n {(api) => (\n <For each={api().weekDays}>\n {(weekDay) => (\n <DatePickerTableHeader aria-label={weekDay.narrow}>\n {weekDay.short}\n </DatePickerTableHeader>\n )}\n </For>\n )}\n </DatePickerContext>\n </DatePickerTableRow>\n </DatePickerTableHead>\n <DatePickerTableBody>\n <DatePickerContext>\n {(api) => (\n <For each={api().weeks}>\n {(week) => (\n <DatePickerTableRow>\n <For each={week}>\n {(day) => (\n <DatePickerTableCell value={day}>\n <DatePickerTableCellTrigger>{day.day}</DatePickerTableCellTrigger>\n </DatePickerTableCell>\n )}\n </For>\n </DatePickerTableRow>\n )}\n </For>\n )}\n </DatePickerContext>\n </DatePickerTableBody>\n </DatePickerTable>\n </DatePickerView>\n);\nexport const DatePickerMonthView: Component = () => (\n <DatePickerView view='month'>\n <DatePickerViewControl />\n <DatePickerTable>\n <DatePickerTableBody>\n <DatePickerContext>\n {(api) => (\n <For each={api().getMonthsGrid({ columns: 4, format: 'short' })}>\n {(months) => (\n <DatePickerTableRow class='gap-2 w-full'>\n <For each={months}>\n {(month) => (\n <DatePickerTableCell value={month.value} class='flex-1'>\n <DatePickerTableCellTrigger class='w-full'>\n {month.label}\n </DatePickerTableCellTrigger>\n </DatePickerTableCell>\n )}\n </For>\n </DatePickerTableRow>\n )}\n </For>\n )}\n </DatePickerContext>\n </DatePickerTableBody>\n </DatePickerTable>\n </DatePickerView>\n);\nexport const DatePickerYearView: Component = () => (\n <DatePickerView view='year'>\n <DatePickerViewControl />\n <DatePickerTable>\n <DatePickerTableBody>\n <DatePickerContext>\n {(api) => (\n <For each={api().getYearsGrid({ columns: 4 })}>\n {(years) => (\n <DatePickerTableRow class='gap-2 w-full'>\n <For each={years}>\n {(year) => (\n <DatePickerTableCell value={year.value} class='flex-1'>\n <DatePickerTableCellTrigger class='w-full'>\n {year.label}\n </DatePickerTableCellTrigger>\n </DatePickerTableCell>\n )}\n </For>\n </DatePickerTableRow>\n )}\n </For>\n )}\n </DatePickerContext>\n </DatePickerTableBody>\n </DatePickerTable>\n </DatePickerView>\n);\nexport const DatePickerViews: Component = () => [\n <DatePickerDayView />,\n <DatePickerMonthView />,\n <DatePickerYearView />,\n];\nexport const DatePickerCalendar: Component<DatePickerPrimitive.RootProps> = (props) => (\n <DatePicker {...props} inline unmountOnExit={false}>\n <DatePickerContent class='border-none shadow-none ring-0'>\n <DatePickerViews />\n </DatePickerContent>\n </DatePicker>\n);\n"],"names":["DatePicker","props","local","others","splitProps","_$createComponent","DatePickerPrimitive","Root","_$mergeProps","cn","class","DatePickerContext","Context","DatePickerRangeText","RangeText","DatePickerView","View","DatePickerViewTrigger","ViewTrigger","DatePickerTable","Table","DatePickerTableBody","TableBody","DatePickerTableCell","TableCell","DatePickerTableHead","TableHead","DatePickerTableHeader","TableHeader","DatePickerTableRow","TableRow","DatePickerLabel","Label","DatePickerControl","Control","DatePickerInput","Input","DatePickerTrigger","Trigger","buttonVariants","variant","size","children","CalendarMonthIcon","DatePickerPositioner","Positioner","DatePickerContent","Content","DatePickerPrevTrigger","PrevTrigger","ChevronLeftIcon","DatePickerNextTrigger","NextTrigger","ChevronRightIcon","DatePickerTableCellTrigger","TableCellTrigger","DatePickerViewControl","ViewControl","asChild","triggerProps","_el$","_tmpl$","_$spread","_$insert","DatePickerDayView","view","api","For","each","weekDays","weekDay","narrow","short","weeks","week","day","value","DatePickerMonthView","getMonthsGrid","columns","format","months","month","label","DatePickerYearView","getYearsGrid","years","year","DatePickerViews","DatePickerCalendar","inline","unmountOnExit"],"mappings":"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"}
@@ -4,7 +4,7 @@ import { Component, ComponentProps, JSXElement } from 'solid-js';
4
4
  import { VariantProps } from 'tailwind-variants';
5
5
  export { useFieldset } from '@ark-ui/solid/fieldset';
6
6
  export declare const FieldContext: (props: PrimitiveField.ContextProps) => import("solid-js").JSX.Element;
7
- export declare const FieldSet: Component<PrimitiveFieldset.RootProps>;
7
+ export declare const Fieldset: Component<PrimitiveFieldset.RootProps>;
8
8
  export type FieldLegendProps = PrimitiveFieldset.LegendProps & {
9
9
  variant?: 'legend' | 'label';
10
10
  };
@@ -254,9 +254,9 @@ export {
254
254
  N as FieldRequiredIndicator,
255
255
  K as FieldSelect,
256
256
  W as FieldSeparator,
257
- B as FieldSet,
258
257
  J as FieldTextarea,
259
258
  Q as FieldTitle,
259
+ B as Fieldset,
260
260
  L as fieldVariants,
261
261
  ee as useFieldset
262
262
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Field.js","sources":["../../src/components/Field.tsx"],"sourcesContent":["import { Field as PrimitiveField } from '@ark-ui/solid/field';\nimport { Fieldset as PrimitiveFieldset } from '@ark-ui/solid/fieldset';\nimport {\n type Component,\n type ComponentProps,\n createMemo,\n For,\n type JSXElement,\n Show,\n splitProps,\n} from 'solid-js';\nimport { type VariantProps, tv, cn } from 'tailwind-variants';\n\nimport { Separator } from '@/components/Separator';\n\nexport { useFieldset } from '@ark-ui/solid/fieldset';\nexport const FieldContext = PrimitiveField.Context;\n\nexport const FieldSet: Component<PrimitiveFieldset.RootProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'children']);\n return (\n <PrimitiveFieldset.Root\n data-slot='field-set'\n class={cn(\n 'gap-4 has-data-[slot=checkbox-group]:gap-3 has-data-[slot=radio-group]:gap-3 flex flex-col',\n local.class,\n )}\n {...others}\n >\n {local.children}\n </PrimitiveFieldset.Root>\n );\n};\n\nexport type FieldLegendProps = PrimitiveFieldset.LegendProps & {\n variant?: 'legend' | 'label';\n};\n\nexport const FieldLegend: Component<FieldLegendProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'variant', 'children']);\n return (\n <PrimitiveFieldset.Legend\n data-slot='field-legend'\n data-variant={local.variant ?? 'legend'}\n class={cn(\n 'mb-1.5 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base',\n local.class,\n )}\n {...others}\n >\n {local.children}\n </PrimitiveFieldset.Legend>\n );\n};\n\nexport const FieldGroup: Component<ComponentProps<'div'>> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <div\n data-slot='field-group'\n class={cn(\n 'gap-5 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4 group/field-group @container/field-group flex w-full flex-col',\n local.class,\n )}\n {...others}\n />\n );\n};\n\nexport const fieldVariants = tv({\n base: 'group/field flex w-full transition-colors data-[invalid=true]:text-destructive',\n variants: {\n orientation: {\n vertical: 'flex-col [&>*]:w-full [&>.sr-only]:w-auto',\n horizontal:\n 'gap-4 flex-row items-center has-data-[slot=field-content]:items-start [&>[data-slot=field-label]]:flex-auto has-data-[slot=field-content]:[&>[role=checkbox],[role=radio]]:mt-px',\n responsive:\n '@md/field-group:gap-4 @md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto @md/field-group:[&>[data-slot=field-label]]:flex-auto @md/field-group:has-data-[slot=field-content]:items-start @md/field-group:has-data-[slot=field-content]:[&>[role=checkbox],[role=radio]]:mt-px flex-col [&>*]:w-full [&>.sr-only]:w-auto',\n },\n },\n defaultVariants: {\n orientation: 'vertical',\n },\n});\n\nexport type FieldProps = PrimitiveField.RootProps & VariantProps<typeof fieldVariants>;\n\nexport const Field: Component<FieldProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'orientation', 'children']);\n return (\n <PrimitiveField.Root\n role='group'\n data-slot='field'\n data-orientation={local.orientation ?? 'vertical'}\n class={fieldVariants({ orientation: local.orientation, class: local.class })}\n {...others}\n >\n {local.children}\n </PrimitiveField.Root>\n );\n};\n\nexport const FieldContent: Component<ComponentProps<'div'>> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <div\n data-slot='field-content'\n class={cn('group/field-content leading-snug relative flex flex-1 flex-col', local.class)}\n {...others}\n />\n );\n};\nexport const FieldInput: Component<PrimitiveField.InputProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <PrimitiveField.Input\n data-slot='field-input'\n class={cn(\n 'min-w-0 text-base md:text-sm h-8 px-2.5 py-1 flex w-full rounded-lg border border-input bg-transparent transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 data-[invalid=true]:border-destructive data-[invalid=true]:ring-[3px] data-[invalid=true]:ring-destructive/20 data-[readonly=true]:cursor-default data-[readonly=true]:focus-visible:border-input data-[readonly=true]:focus-visible:ring-0 dark:bg-input/30 dark:disabled:bg-input/80 dark:data-[invalid=true]:border-destructive/50 dark:data-[invalid=true]:ring-destructive/40',\n local.class,\n )}\n {...others}\n />\n );\n};\n\nexport const FieldTextarea: Component<PrimitiveField.TextareaProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <PrimitiveField.Textarea\n data-slot='field-textarea'\n class={cn(\n 'min-w-0 text-base md:text-sm px-2.5 py-2 flex min-h-[80px] w-full rounded-lg border border-input bg-transparent transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 data-[invalid=true]:border-destructive data-[invalid=true]:ring-[3px] data-[invalid=true]:ring-destructive/20 data-[readonly=true]:cursor-default data-[readonly=true]:focus-visible:border-input data-[readonly=true]:focus-visible:ring-0 dark:bg-input/30 dark:disabled:bg-input/80 dark:data-[invalid=true]:border-destructive/50 dark:data-[invalid=true]:ring-destructive/40',\n local.class,\n )}\n {...others}\n />\n );\n};\n\nexport const FieldSelect: Component<PrimitiveField.SelectProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <PrimitiveField.Select\n data-slot='field-select'\n class={cn(\n 'min-w-0 text-base md:text-sm h-8 px-2.5 py-1 flex w-full rounded-lg border border-input bg-transparent transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 data-[invalid=true]:border-destructive data-[invalid=true]:ring-[3px] data-[invalid=true]:ring-destructive/20 data-[readonly=true]:cursor-default data-[readonly=true]:focus-visible:border-input data-[readonly=true]:focus-visible:ring-0 dark:bg-input/30 dark:disabled:bg-input/80 dark:data-[invalid=true]:border-destructive/50 dark:data-[invalid=true]:ring-destructive/40',\n local.class,\n )}\n {...others}\n />\n );\n};\n\nexport const FieldRequiredIndicator: Component<PrimitiveField.RequiredIndicatorProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'fallback', 'children']);\n return (\n <PrimitiveField.RequiredIndicator\n fallback={local.fallback ?? '*'}\n class={cn('text-sm font-medium leading-none text-destructive', local.class)}\n {...others}\n >\n {local.children}\n </PrimitiveField.RequiredIndicator>\n );\n};\n\nexport const FieldLabel: Component<PrimitiveField.LabelProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'children']);\n return (\n <PrimitiveField.Label\n data-slot='field-label'\n class={cn(\n 'group-data-[orientation=vertical]/field:mb-1.5',\n 'gap-2 text-sm font-medium flex items-center leading-none select-none group-data-disabled:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50',\n '*:data-[slot=field]:p-2.5 group/field-label peer/field-label leading-snug flex w-fit group-data-disabled/field:opacity-50 has-data-[slot=field]:rounded-lg has-data-[slot=field]:border has-[[data-state=checked]]:border-primary/30 has-[[data-state=checked]]:bg-primary/5 dark:has-[[data-state=checked]]:border-primary/20 dark:has-[[data-state=checked]]:bg-primary/10',\n 'has-data-[slot=field]:w-full has-data-[slot=field]:flex-col',\n local.class,\n )}\n {...others}\n >\n {local.children}\n </PrimitiveField.Label>\n );\n};\n\nexport const FieldTitle: Component<ComponentProps<'div'>> = (props) => {\n const [local, others] = splitProps(props, ['class', 'children']);\n return (\n <div\n data-slot='field-label'\n class={cn(\n 'group-data-[orientation=vertical]/field:mb-1.5',\n 'gap-2 text-sm font-medium leading-snug flex w-fit items-center group-data-disabled/field:opacity-50',\n local.class,\n )}\n {...others}\n >\n {local.children}\n </div>\n );\n};\n\nexport const FieldDescription: Component<PrimitiveField.HelperTextProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'children']);\n return (\n <PrimitiveField.HelperText\n data-slot='field-description'\n class={cn(\n 'text-sm [[data-variant=legend]+&]:-mt-1.5 leading-normal font-normal text-left text-muted-foreground group-has-data-[orientation=horizontal]/field:text-balance',\n '[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary',\n local.class,\n )}\n {...others}\n >\n {local.children}\n </PrimitiveField.HelperText>\n );\n};\n\nexport type FieldSeparatorProps = ComponentProps<'div'> & {\n children?: JSXElement;\n};\n\nexport const FieldSeparator: Component<FieldSeparatorProps> = (props) => {\n const [local, others] = splitProps(props, ['children', 'class']);\n return (\n <div\n data-slot='field-separator'\n data-content={Boolean(local.children)}\n class={cn(\n '-my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2 relative',\n local.class,\n )}\n {...others}\n >\n <Separator class='inset-0 absolute top-1/2' />\n <Show when={local.children}>\n <span\n class='px-2 relative mx-auto block w-fit bg-background text-muted-foreground'\n data-slot='field-separator-content'\n >\n {local.children}\n </span>\n </Show>\n </div>\n );\n};\n\nexport type FieldErrorProps = PrimitiveField.ErrorTextProps & {\n errors?: ({ message?: string } | string | undefined)[];\n};\n\nexport const FieldError: Component<FieldErrorProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'children', 'errors']);\n\n const uniqueErrors = createMemo(() => {\n const { errors } = local;\n if (!errors || errors.length === 0) {\n return [];\n }\n\n const messages: string[] = [];\n for (const error of errors) {\n if (typeof error === 'string') {\n messages.push(error);\n } else if (error && typeof error === 'object' && typeof error.message === 'string') {\n messages.push(error.message);\n }\n }\n\n return [...new Set(messages)];\n });\n\n return (\n <div class='mt-[3px] flex min-h-[0.875rem] flex-col justify-start'>\n <PrimitiveField.ErrorText\n data-slot='field-error'\n class={cn('font-medium text-[0.8rem] leading-[0.875rem] text-destructive', local.class)}\n {...others}\n >\n <Show\n when={local.children}\n fallback={\n <Show when={uniqueErrors().length > 0}>\n <Show when={uniqueErrors().length > 1} fallback={uniqueErrors().at(0)}>\n <ul class='ml-4 gap-1 flex list-disc flex-col'>\n <For each={uniqueErrors()}>{(error) => <li>{error}</li>}</For>\n </ul>\n </Show>\n </Show>\n }\n >\n {local.children}\n </Show>\n </PrimitiveField.ErrorText>\n </div>\n );\n};\n"],"names":["FieldContext","PrimitiveField","Context","FieldSet","props","local","others","splitProps","_$createComponent","PrimitiveFieldset","Root","_$mergeProps","cn","class","children","FieldLegend","Legend","variant","FieldGroup","_el$","_tmpl$","_$spread","fieldVariants","tv","base","variants","orientation","vertical","horizontal","responsive","defaultVariants","Field","role","FieldContent","_el$2","_tmpl$2","FieldInput","Input","FieldTextarea","Textarea","FieldSelect","Select","FieldRequiredIndicator","RequiredIndicator","fallback","FieldLabel","Label","FieldTitle","_el$3","_tmpl$3","_$insert","FieldDescription","HelperText","FieldSeparator","_el$4","_tmpl$5","Boolean","Separator","Show","when","_el$5","_tmpl$4","FieldError","uniqueErrors","createMemo","errors","length","messages","error","push","message","Set","_el$6","_tmpl$6","ErrorText","at","_el$7","_tmpl$7","For","each","_el$8","_tmpl$8"],"mappings":";;;;;;;;AAgBO,MAAMA,IAAeC,EAAeC,SAE9BC,IAAoDC,CAAAA,MAAU;AACzE,QAAM,CAACC,GAAOC,CAAM,IAAIC,EAAWH,GAAO,CAAC,SAAS,UAAU,CAAC;AAC/D,SAAAI,EACGC,EAAkBC,MAAIC,EAAA;AAAA,IAAA,aAAA;AAAA,IAAA,IAAA,QAAA;AAAA,aAEdC,EACL,8FACAP,EAAMQ,KACR;AAAA,IAAC;AAAA,EAAA,GACGP,GAAM;AAAA,IAAA,IAAAQ,WAAA;AAAA,aAETT,EAAMS;AAAAA,IAAQ;AAAA,EAAA,CAAA,CAAA;AAGrB,GAMaC,IAA4CX,CAAAA,MAAU;AACjE,QAAM,CAACC,GAAOC,CAAM,IAAIC,EAAWH,GAAO,CAAC,SAAS,WAAW,UAAU,CAAC;AAC1E,SAAAI,EACGC,EAAkBO,QAAML,EAAA;AAAA,IAAA,aAAA;AAAA,IAAA,IAAA,iBAAA;AAAA,aAETN,EAAMY,WAAW;AAAA,IAAQ;AAAA,IAAA,IAAA,QAAA;AAAA,aAChCL,EACL,mFACAP,EAAMQ,KACR;AAAA,IAAC;AAAA,EAAA,GACGP,GAAM;AAAA,IAAA,IAAAQ,WAAA;AAAA,aAETT,EAAMS;AAAAA,IAAQ;AAAA,EAAA,CAAA,CAAA;AAGrB,GAEaI,IAAgDd,CAAAA,MAAU;AACrE,QAAM,CAACC,GAAOC,CAAM,IAAIC,EAAWH,GAAO,CAAC,OAAO,CAAC;AACnD,UAAA,MAAA;AAAA,QAAAe,IAAAC,EAAAA;AAAAC,WAAAA,EAAAF,GAAAR,EAAA;AAAA,MAAA,IAAA,QAAA;AAAA,eAGWC,EACL,wIACAP,EAAMQ,KACR;AAAA,MAAC;AAAA,IAAA,GACGP,CAAM,GAAA,IAAA,EAAA,GAAAa;AAAAA,EAAA,GAAA;AAGhB,GAEaG,IAAgBC,EAAG;AAAA,EAC9BC,MAAM;AAAA,EACNC,UAAU;AAAA,IACRC,aAAa;AAAA,MACXC,UAAU;AAAA,MACVC,YACE;AAAA,MACFC,YACE;AAAA,IAAA;AAAA,EACJ;AAAA,EAEFC,iBAAiB;AAAA,IACfJ,aAAa;AAAA,EAAA;AAEjB,CAAC,GAIYK,IAAgC3B,CAAAA,MAAU;AACrD,QAAM,CAACC,GAAOC,CAAM,IAAIC,EAAWH,GAAO,CAAC,SAAS,eAAe,UAAU,CAAC;AAC9E,SAAAI,EACGP,EAAeS,MAAIC,EAAA;AAAA,IAClBqB,MAAI;AAAA,IAAA,aAAA;AAAA,IAAA,IAAA,qBAAA;AAAA,aAEc3B,EAAMqB,eAAe;AAAA,IAAU;AAAA,IAAA,IAAA,QAAA;AAAA,aAC1CJ,EAAc;AAAA,QAAEI,aAAarB,EAAMqB;AAAAA,QAAab,OAAOR,EAAMQ;AAAAA,MAAAA,CAAO;AAAA,IAAC;AAAA,EAAA,GACxEP,GAAM;AAAA,IAAA,IAAAQ,WAAA;AAAA,aAETT,EAAMS;AAAAA,IAAQ;AAAA,EAAA,CAAA,CAAA;AAGrB,GAEamB,IAAkD7B,CAAAA,MAAU;AACvE,QAAM,CAACC,GAAOC,CAAM,IAAIC,EAAWH,GAAO,CAAC,OAAO,CAAC;AACnD,UAAA,MAAA;AAAA,QAAA8B,IAAAC,EAAAA;AAAAd,WAAAA,EAAAa,GAAAvB,EAAA;AAAA,MAAA,IAAA,QAAA;AAAA,eAGWC,EAAG,kEAAkEP,EAAMQ,KAAK;AAAA,MAAC;AAAA,IAAA,GACpFP,CAAM,GAAA,IAAA,EAAA,GAAA4B;AAAAA,EAAA,GAAA;AAGhB,GACaE,IAAoDhC,CAAAA,MAAU;AACzE,QAAM,CAACC,GAAOC,CAAM,IAAIC,EAAWH,GAAO,CAAC,OAAO,CAAC;AACnD,SAAAI,EACGP,EAAeoC,OAAK1B,EAAA;AAAA,IAAA,aAAA;AAAA,IAAA,IAAA,QAAA;AAAA,aAEZC,EACL,8sBACAP,EAAMQ,KACR;AAAA,IAAC;AAAA,EAAA,GACGP,CAAM,CAAA;AAGhB,GAEagC,IAA0DlC,CAAAA,MAAU;AAC/E,QAAM,CAACC,GAAOC,CAAM,IAAIC,EAAWH,GAAO,CAAC,OAAO,CAAC;AACnD,SAAAI,EACGP,EAAesC,UAAQ5B,EAAA;AAAA,IAAA,aAAA;AAAA,IAAA,IAAA,QAAA;AAAA,aAEfC,EACL,utBACAP,EAAMQ,KACR;AAAA,IAAC;AAAA,EAAA,GACGP,CAAM,CAAA;AAGhB,GAEakC,IAAsDpC,CAAAA,MAAU;AAC3E,QAAM,CAACC,GAAOC,CAAM,IAAIC,EAAWH,GAAO,CAAC,OAAO,CAAC;AACnD,SAAAI,EACGP,EAAewC,QAAM9B,EAAA;AAAA,IAAA,aAAA;AAAA,IAAA,IAAA,QAAA;AAAA,aAEbC,EACL,8sBACAP,EAAMQ,KACR;AAAA,IAAC;AAAA,EAAA,GACGP,CAAM,CAAA;AAGhB,GAEaoC,IAA4EtC,CAAAA,MAAU;AACjG,QAAM,CAACC,GAAOC,CAAM,IAAIC,EAAWH,GAAO,CAAC,SAAS,YAAY,UAAU,CAAC;AAC3E,SAAAI,EACGP,EAAe0C,mBAAiBhC,EAAA;AAAA,IAAA,IAC/BiC,WAAQ;AAAA,aAAEvC,EAAMuC,YAAY;AAAA,IAAG;AAAA,IAAA,IAAA,QAAA;AAAA,aACxBhC,EAAG,qDAAqDP,EAAMQ,KAAK;AAAA,IAAC;AAAA,EAAA,GACvEP,GAAM;AAAA,IAAA,IAAAQ,WAAA;AAAA,aAETT,EAAMS;AAAAA,IAAQ;AAAA,EAAA,CAAA,CAAA;AAGrB,GAEa+B,IAAoDzC,CAAAA,MAAU;AACzE,QAAM,CAACC,GAAOC,CAAM,IAAIC,EAAWH,GAAO,CAAC,SAAS,UAAU,CAAC;AAC/D,SAAAI,EACGP,EAAe6C,OAAKnC,EAAA;AAAA,IAAA,aAAA;AAAA,IAAA,IAAA,QAAA;AAAA,aAEZC,EACL,kDACA,gNACA,gXACA,+DACAP,EAAMQ,KACR;AAAA,IAAC;AAAA,EAAA,GACGP,GAAM;AAAA,IAAA,IAAAQ,WAAA;AAAA,aAETT,EAAMS;AAAAA,IAAQ;AAAA,EAAA,CAAA,CAAA;AAGrB,GAEaiC,IAAgD3C,CAAAA,MAAU;AACrE,QAAM,CAACC,GAAOC,CAAM,IAAIC,EAAWH,GAAO,CAAC,SAAS,UAAU,CAAC;AAC/D,UAAA,MAAA;AAAA,QAAA4C,IAAAC,EAAAA;AAAA5B,WAAAA,EAAA2B,GAAArC,EAAA;AAAA,MAAA,IAAA,QAAA;AAAA,eAGWC,EACL,kDACA,uGACAP,EAAMQ,KACR;AAAA,MAAC;AAAA,IAAA,GACGP,CAAM,GAAA,IAAA,EAAA,GAAA4C,EAAAF,GAAA,MAET3C,EAAMS,QAAQ,GAAAkC;AAAAA,EAAA,GAAA;AAGrB,GAEaG,IAA+D/C,CAAAA,MAAU;AACpF,QAAM,CAACC,GAAOC,CAAM,IAAIC,EAAWH,GAAO,CAAC,SAAS,UAAU,CAAC;AAC/D,SAAAI,EACGP,EAAemD,YAAUzC,EAAA;AAAA,IAAA,aAAA;AAAA,IAAA,IAAA,QAAA;AAAA,aAEjBC,EACL,mKACA,qEACAP,EAAMQ,KACR;AAAA,IAAC;AAAA,EAAA,GACGP,GAAM;AAAA,IAAA,IAAAQ,WAAA;AAAA,aAETT,EAAMS;AAAAA,IAAQ;AAAA,EAAA,CAAA,CAAA;AAGrB,GAMauC,IAAkDjD,CAAAA,MAAU;AACvE,QAAM,CAACC,GAAOC,CAAM,IAAIC,EAAWH,GAAO,CAAC,YAAY,OAAO,CAAC;AAC/D,UAAA,MAAA;AAAA,QAAAkD,IAAAC,EAAAA;AAAAlC,WAAAA,EAAAiC,GAAA3C,EAAA;AAAA,MAAA,IAAA,iBAAA;AAAA,eAGkB6C,EAAQnD,EAAMS;AAAAA,MAAS;AAAA,MAAA,IAAA,QAAA;AAAA,eAC9BF,EACL,6EACAP,EAAMQ,KACR;AAAA,MAAC;AAAA,IAAA,GACGP,CAAM,GAAA,IAAA,EAAA,GAAA4C,EAAAI,GAAA9C,EAETiD,GAAS;AAAA,MAAA,OAAA;AAAA,IAAA,CAAA,GAAA,IAAA,GAAAP,EAAAI,GAAA9C,EACTkD,GAAI;AAAA,MAAA,IAACC,OAAI;AAAA,eAAEtD,EAAMS;AAAAA,MAAQ;AAAA,MAAA,IAAAA,WAAA;AAAA,YAAA8C,IAAAC,EAAAA;AAAAX,eAAAA,EAAAU,GAAA,MAKrBvD,EAAMS,QAAQ,GAAA8C;AAAAA,MAAA;AAAA,IAAA,CAAA,GAAA,IAAA,GAAAN;AAAAA,EAAA,GAAA;AAKzB,GAMaQ,IAA0C1D,CAAAA,MAAU;AAC/D,QAAM,CAACC,GAAOC,CAAM,IAAIC,EAAWH,GAAO,CAAC,SAAS,YAAY,QAAQ,CAAC,GAEnE2D,IAAeC,EAAW,MAAM;AACpC,UAAM;AAAA,MAAEC,QAAAA;AAAAA,IAAAA,IAAW5D;AACnB,QAAI,CAAC4D,KAAUA,EAAOC,WAAW;AAC/B,aAAO,CAAA;AAGT,UAAMC,IAAqB,CAAA;AAC3B,eAAWC,KAASH;AAClB,MAAI,OAAOG,KAAU,WACnBD,EAASE,KAAKD,CAAK,IACVA,KAAS,OAAOA,KAAU,YAAY,OAAOA,EAAME,WAAY,YACxEH,EAASE,KAAKD,EAAME,OAAO;AAI/B,WAAO,CAAC,GAAG,IAAIC,IAAIJ,CAAQ,CAAC;AAAA,EAC9B,CAAC;AAED,UAAA,MAAA;AAAA,QAAAK,IAAAC,EAAAA;AAAAvB,WAAAA,EAAAsB,GAAAhE,EAEKP,EAAeyE,WAAS/D,EAAA;AAAA,MAAA,aAAA;AAAA,MAAA,IAAA,QAAA;AAAA,eAEhBC,EAAG,iEAAiEP,EAAMQ,KAAK;AAAA,MAAC;AAAA,IAAA,GACnFP,GAAM;AAAA,MAAA,IAAAQ,WAAA;AAAA,eAAAN,EAETkD,GAAI;AAAA,UAAA,IACHC,OAAI;AAAA,mBAAEtD,EAAMS;AAAAA,UAAQ;AAAA,UAAA,IACpB8B,WAAQ;AAAA,mBAAApC,EACLkD,GAAI;AAAA,cAAA,IAACC,OAAI;AAAA,uBAAEI,EAAAA,EAAeG,SAAS;AAAA,cAAC;AAAA,cAAA,IAAApD,WAAA;AAAA,uBAAAN,EAClCkD,GAAI;AAAA,kBAAA,IAACC,OAAI;AAAA,2BAAEI,EAAAA,EAAeG,SAAS;AAAA,kBAAC;AAAA,kBAAA,IAAEtB,WAAQ;AAAA,2BAAEmB,EAAAA,EAAeY,GAAG,CAAC;AAAA,kBAAC;AAAA,kBAAA,IAAA7D,WAAA;AAAA,wBAAA8D,IAAAC,EAAAA;AAAA3B,2BAAAA,EAAA0B,GAAApE,EAEhEsE,GAAG;AAAA,sBAAA,IAACC,OAAI;AAAA,+BAAEhB,EAAAA;AAAAA,sBAAc;AAAA,sBAAAjD,UAAIsD,QAAK,MAAA;AAAA,4BAAAY,IAAAC,EAAAA;AAAA/B,+BAAAA,EAAA8B,GAAUZ,CAAK,GAAAY;AAAAA,sBAAA,GAAA;AAAA,oBAAA,CAAM,CAAA,GAAAJ;AAAAA,kBAAA;AAAA,gBAAA,CAAA;AAAA,cAAA;AAAA,YAAA,CAAA;AAAA,UAAA;AAAA,UAAA,IAAA9D,WAAA;AAAA,mBAM9DT,EAAMS;AAAAA,UAAQ;AAAA,QAAA,CAAA;AAAA,MAAA;AAAA,IAAA,CAAA,CAAA,CAAA,GAAA0D;AAAAA,EAAA,GAAA;AAKzB;"}
1
+ {"version":3,"file":"Field.js","sources":["../../src/components/Field.tsx"],"sourcesContent":["import { Field as PrimitiveField } from '@ark-ui/solid/field';\nimport { Fieldset as PrimitiveFieldset } from '@ark-ui/solid/fieldset';\nimport {\n type Component,\n type ComponentProps,\n createMemo,\n For,\n type JSXElement,\n Show,\n splitProps,\n} from 'solid-js';\nimport { type VariantProps, tv, cn } from 'tailwind-variants';\n\nimport { Separator } from '@/components/Separator';\n\nexport { useFieldset } from '@ark-ui/solid/fieldset';\nexport const FieldContext = PrimitiveField.Context;\n\nexport const Fieldset: Component<PrimitiveFieldset.RootProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'children']);\n return (\n <PrimitiveFieldset.Root\n data-slot='field-set'\n class={cn(\n 'gap-4 has-data-[slot=checkbox-group]:gap-3 has-data-[slot=radio-group]:gap-3 flex flex-col',\n local.class,\n )}\n {...others}\n >\n {local.children}\n </PrimitiveFieldset.Root>\n );\n};\n\nexport type FieldLegendProps = PrimitiveFieldset.LegendProps & {\n variant?: 'legend' | 'label';\n};\n\nexport const FieldLegend: Component<FieldLegendProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'variant', 'children']);\n return (\n <PrimitiveFieldset.Legend\n data-slot='field-legend'\n data-variant={local.variant ?? 'legend'}\n class={cn(\n 'mb-1.5 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base',\n local.class,\n )}\n {...others}\n >\n {local.children}\n </PrimitiveFieldset.Legend>\n );\n};\n\nexport const FieldGroup: Component<ComponentProps<'div'>> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <div\n data-slot='field-group'\n class={cn(\n 'gap-5 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4 group/field-group @container/field-group flex w-full flex-col',\n local.class,\n )}\n {...others}\n />\n );\n};\n\nexport const fieldVariants = tv({\n base: 'group/field flex w-full transition-colors data-[invalid=true]:text-destructive',\n variants: {\n orientation: {\n vertical: 'flex-col [&>*]:w-full [&>.sr-only]:w-auto',\n horizontal:\n 'gap-4 flex-row items-center has-data-[slot=field-content]:items-start [&>[data-slot=field-label]]:flex-auto has-data-[slot=field-content]:[&>[role=checkbox],[role=radio]]:mt-px',\n responsive:\n '@md/field-group:gap-4 @md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto @md/field-group:[&>[data-slot=field-label]]:flex-auto @md/field-group:has-data-[slot=field-content]:items-start @md/field-group:has-data-[slot=field-content]:[&>[role=checkbox],[role=radio]]:mt-px flex-col [&>*]:w-full [&>.sr-only]:w-auto',\n },\n },\n defaultVariants: {\n orientation: 'vertical',\n },\n});\n\nexport type FieldProps = PrimitiveField.RootProps & VariantProps<typeof fieldVariants>;\n\nexport const Field: Component<FieldProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'orientation', 'children']);\n return (\n <PrimitiveField.Root\n role='group'\n data-slot='field'\n data-orientation={local.orientation ?? 'vertical'}\n class={fieldVariants({ orientation: local.orientation, class: local.class })}\n {...others}\n >\n {local.children}\n </PrimitiveField.Root>\n );\n};\n\nexport const FieldContent: Component<ComponentProps<'div'>> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <div\n data-slot='field-content'\n class={cn('group/field-content leading-snug relative flex flex-1 flex-col', local.class)}\n {...others}\n />\n );\n};\nexport const FieldInput: Component<PrimitiveField.InputProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <PrimitiveField.Input\n data-slot='field-input'\n class={cn(\n 'min-w-0 text-base md:text-sm h-8 px-2.5 py-1 flex w-full rounded-lg border border-input bg-transparent transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 data-[invalid=true]:border-destructive data-[invalid=true]:ring-[3px] data-[invalid=true]:ring-destructive/20 data-[readonly=true]:cursor-default data-[readonly=true]:focus-visible:border-input data-[readonly=true]:focus-visible:ring-0 dark:bg-input/30 dark:disabled:bg-input/80 dark:data-[invalid=true]:border-destructive/50 dark:data-[invalid=true]:ring-destructive/40',\n local.class,\n )}\n {...others}\n />\n );\n};\n\nexport const FieldTextarea: Component<PrimitiveField.TextareaProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <PrimitiveField.Textarea\n data-slot='field-textarea'\n class={cn(\n 'min-w-0 text-base md:text-sm px-2.5 py-2 flex min-h-[80px] w-full rounded-lg border border-input bg-transparent transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 data-[invalid=true]:border-destructive data-[invalid=true]:ring-[3px] data-[invalid=true]:ring-destructive/20 data-[readonly=true]:cursor-default data-[readonly=true]:focus-visible:border-input data-[readonly=true]:focus-visible:ring-0 dark:bg-input/30 dark:disabled:bg-input/80 dark:data-[invalid=true]:border-destructive/50 dark:data-[invalid=true]:ring-destructive/40',\n local.class,\n )}\n {...others}\n />\n );\n};\n\nexport const FieldSelect: Component<PrimitiveField.SelectProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <PrimitiveField.Select\n data-slot='field-select'\n class={cn(\n 'min-w-0 text-base md:text-sm h-8 px-2.5 py-1 flex w-full rounded-lg border border-input bg-transparent transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 data-[invalid=true]:border-destructive data-[invalid=true]:ring-[3px] data-[invalid=true]:ring-destructive/20 data-[readonly=true]:cursor-default data-[readonly=true]:focus-visible:border-input data-[readonly=true]:focus-visible:ring-0 dark:bg-input/30 dark:disabled:bg-input/80 dark:data-[invalid=true]:border-destructive/50 dark:data-[invalid=true]:ring-destructive/40',\n local.class,\n )}\n {...others}\n />\n );\n};\n\nexport const FieldRequiredIndicator: Component<PrimitiveField.RequiredIndicatorProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'fallback', 'children']);\n return (\n <PrimitiveField.RequiredIndicator\n fallback={local.fallback ?? '*'}\n class={cn('text-sm font-medium leading-none text-destructive', local.class)}\n {...others}\n >\n {local.children}\n </PrimitiveField.RequiredIndicator>\n );\n};\n\nexport const FieldLabel: Component<PrimitiveField.LabelProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'children']);\n return (\n <PrimitiveField.Label\n data-slot='field-label'\n class={cn(\n 'group-data-[orientation=vertical]/field:mb-1.5',\n 'gap-2 text-sm font-medium flex items-center leading-none select-none group-data-disabled:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50',\n '*:data-[slot=field]:p-2.5 group/field-label peer/field-label leading-snug flex w-fit group-data-disabled/field:opacity-50 has-data-[slot=field]:rounded-lg has-data-[slot=field]:border has-[[data-state=checked]]:border-primary/30 has-[[data-state=checked]]:bg-primary/5 dark:has-[[data-state=checked]]:border-primary/20 dark:has-[[data-state=checked]]:bg-primary/10',\n 'has-data-[slot=field]:w-full has-data-[slot=field]:flex-col',\n local.class,\n )}\n {...others}\n >\n {local.children}\n </PrimitiveField.Label>\n );\n};\n\nexport const FieldTitle: Component<ComponentProps<'div'>> = (props) => {\n const [local, others] = splitProps(props, ['class', 'children']);\n return (\n <div\n data-slot='field-label'\n class={cn(\n 'group-data-[orientation=vertical]/field:mb-1.5',\n 'gap-2 text-sm font-medium leading-snug flex w-fit items-center group-data-disabled/field:opacity-50',\n local.class,\n )}\n {...others}\n >\n {local.children}\n </div>\n );\n};\n\nexport const FieldDescription: Component<PrimitiveField.HelperTextProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'children']);\n return (\n <PrimitiveField.HelperText\n data-slot='field-description'\n class={cn(\n 'text-sm [[data-variant=legend]+&]:-mt-1.5 leading-normal font-normal text-left text-muted-foreground group-has-data-[orientation=horizontal]/field:text-balance',\n '[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary',\n local.class,\n )}\n {...others}\n >\n {local.children}\n </PrimitiveField.HelperText>\n );\n};\n\nexport type FieldSeparatorProps = ComponentProps<'div'> & {\n children?: JSXElement;\n};\n\nexport const FieldSeparator: Component<FieldSeparatorProps> = (props) => {\n const [local, others] = splitProps(props, ['children', 'class']);\n return (\n <div\n data-slot='field-separator'\n data-content={Boolean(local.children)}\n class={cn(\n '-my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2 relative',\n local.class,\n )}\n {...others}\n >\n <Separator class='inset-0 absolute top-1/2' />\n <Show when={local.children}>\n <span\n class='px-2 relative mx-auto block w-fit bg-background text-muted-foreground'\n data-slot='field-separator-content'\n >\n {local.children}\n </span>\n </Show>\n </div>\n );\n};\n\nexport type FieldErrorProps = PrimitiveField.ErrorTextProps & {\n errors?: ({ message?: string } | string | undefined)[];\n};\n\nexport const FieldError: Component<FieldErrorProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'children', 'errors']);\n\n const uniqueErrors = createMemo(() => {\n const { errors } = local;\n if (!errors || errors.length === 0) {\n return [];\n }\n\n const messages: string[] = [];\n for (const error of errors) {\n if (typeof error === 'string') {\n messages.push(error);\n } else if (error && typeof error === 'object' && typeof error.message === 'string') {\n messages.push(error.message);\n }\n }\n\n return [...new Set(messages)];\n });\n\n return (\n <div class='mt-[3px] flex min-h-[0.875rem] flex-col justify-start'>\n <PrimitiveField.ErrorText\n data-slot='field-error'\n class={cn('font-medium text-[0.8rem] leading-[0.875rem] text-destructive', local.class)}\n {...others}\n >\n <Show\n when={local.children}\n fallback={\n <Show when={uniqueErrors().length > 0}>\n <Show when={uniqueErrors().length > 1} fallback={uniqueErrors().at(0)}>\n <ul class='ml-4 gap-1 flex list-disc flex-col'>\n <For each={uniqueErrors()}>{(error) => <li>{error}</li>}</For>\n </ul>\n </Show>\n </Show>\n }\n >\n {local.children}\n </Show>\n </PrimitiveField.ErrorText>\n </div>\n );\n};\n"],"names":["FieldContext","PrimitiveField","Context","Fieldset","props","local","others","splitProps","_$createComponent","PrimitiveFieldset","Root","_$mergeProps","cn","class","children","FieldLegend","Legend","variant","FieldGroup","_el$","_tmpl$","_$spread","fieldVariants","tv","base","variants","orientation","vertical","horizontal","responsive","defaultVariants","Field","role","FieldContent","_el$2","_tmpl$2","FieldInput","Input","FieldTextarea","Textarea","FieldSelect","Select","FieldRequiredIndicator","RequiredIndicator","fallback","FieldLabel","Label","FieldTitle","_el$3","_tmpl$3","_$insert","FieldDescription","HelperText","FieldSeparator","_el$4","_tmpl$5","Boolean","Separator","Show","when","_el$5","_tmpl$4","FieldError","uniqueErrors","createMemo","errors","length","messages","error","push","message","Set","_el$6","_tmpl$6","ErrorText","at","_el$7","_tmpl$7","For","each","_el$8","_tmpl$8"],"mappings":"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"}
@@ -24,5 +24,5 @@ export type MenuComboboxEmptyProps = ComponentProps<'div'> & {
24
24
  searchValue?: string;
25
25
  };
26
26
  export declare const MenuComboboxEmpty: Component<MenuComboboxEmptyProps>;
27
- export type { MenuCheckboxItemData, MenuComboboxGroupedListProps, MenuComboboxListProps, MenuItemData, MenuItemGroupData, MenuRadioGroupData, MenuRadioItemData, MenuSeparatorData, } from './MenuComboboxList';
27
+ export type { MenuComboboxCheckboxItemData, MenuComboboxItemData, MenuComboboxItemGroupData, MenuComboboxRadioItemGroupData, MenuComboboxRadioItemData, MenuComboboxSeparatorData, MenuComboboxGroupedListProps, MenuComboboxListProps, } from './MenuComboboxList';
28
28
  export { MenuComboboxGroupedList, MenuComboboxList } from './MenuComboboxList';
@@ -1 +1 @@
1
- {"version":3,"file":"MenuCombobox.js","sources":["../../src/components/MenuCombobox.tsx"],"sourcesContent":["import { Menu as MenuPrimitive } from '@ark-ui/solid/menu';\nimport { type Component, type ComponentProps, splitProps } from 'solid-js';\nimport { cn } from 'tailwind-variants';\nimport CheckIcon from '~icons/material-symbols/check';\nimport ChevronRightIcon from '~icons/material-symbols/chevron-right';\nimport SearchIcon from '~icons/material-symbols/search';\n\nexport const MenuCombobox = MenuPrimitive.Root;\nexport const MenuComboboxTrigger = MenuPrimitive.Trigger;\nexport const MenuComboboxContext = MenuPrimitive.Context;\nexport const MenuComboboxItemGroup = MenuPrimitive.ItemGroup;\nexport const MenuComboboxItemText = MenuPrimitive.ItemText;\nexport const MenuComboboxRadioItemGroup = MenuPrimitive.RadioItemGroup;\n\nexport const MenuComboboxPositioner: Component<MenuPrimitive.PositionerProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <MenuPrimitive.Positioner\n data-slot='menu-combobox-positioner'\n class={cn('isolate z-50', local.class)}\n {...others}\n />\n );\n};\nexport const MenuComboboxContent: Component<MenuPrimitive.ContentProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <MenuPrimitive.Content\n data-slot='menu-combobox-content'\n class={cn(\n 'min-w-48 p-0 shadow-md isolate overflow-hidden rounded-md border bg-popover text-popover-foreground outline-none',\n 'data-[side=bottom]:slide-in-from-top-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-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95',\n local.class,\n )}\n {...others}\n />\n );\n};\nexport type MenuComboboxSearchInputProps = ComponentProps<'input'> & {\n onValueChange?: (value: string) => void;\n};\nexport const MenuComboboxSearchInput: Component<MenuComboboxSearchInputProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'onValueChange', 'value']);\n const handleInput = (inputEvent: InputEvent & { currentTarget: HTMLInputElement }): void => {\n if (typeof local.onValueChange === 'function') {\n local.onValueChange(inputEvent.currentTarget.value);\n }\n };\n return (\n <div data-slot='menu-combobox-search' class='gap-2 px-3 py-2 flex items-center border-b'>\n <SearchIcon class='size-4 shrink-0 text-muted-foreground' />\n <input\n type='text'\n class={cn(\n 'text-sm flex-1 bg-transparent outline-none placeholder:text-muted-foreground',\n local.class,\n )}\n onInput={handleInput}\n value={local.value}\n {...others}\n />\n </div>\n );\n};\nexport const MenuComboboxItem: Component<MenuPrimitive.ItemProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <MenuPrimitive.Item\n data-slot='menu-combobox-item'\n class={cn(\n 'px-3 py-2 text-sm mx-1 my-0.5 relative flex cursor-default items-center rounded-sm transition-colors outline-none select-none data-disabled:pointer-events-none data-highlighted:bg-accent data-highlighted:text-accent-foreground data-[disabled=true]:opacity-50',\n local.class,\n )}\n {...others}\n />\n );\n};\nexport const MenuComboboxTriggerItem: Component<MenuPrimitive.TriggerItemProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'children']);\n return (\n <MenuPrimitive.TriggerItem\n data-slot='menu-combobox-trigger-item'\n class={cn(\n 'px-3 py-2 text-sm mx-1 my-0.5 flex cursor-default items-center rounded-sm outline-none select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground',\n local.class,\n )}\n {...others}\n >\n {local.children}\n <ChevronRightIcon class='size-4 ml-auto' />\n </MenuPrimitive.TriggerItem>\n );\n};\nexport const MenuComboboxItemGroupLabel: Component<MenuPrimitive.ItemGroupLabelProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <MenuPrimitive.ItemGroupLabel\n data-slot='menu-combobox-item-group-label'\n class={cn('px-3 py-1.5 text-xs font-semibold text-muted-foreground', local.class)}\n {...others}\n />\n );\n};\nexport const MenuComboboxSeparator: Component<MenuPrimitive.SeparatorProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <MenuPrimitive.Separator\n data-slot='menu-combobox-separator'\n class={cn('-mx-1 my-1 h-px bg-muted', local.class)}\n {...others}\n />\n );\n};\nexport const MenuComboboxItemIndicator: Component<MenuPrimitive.ItemIndicatorProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'children']);\n return (\n <MenuPrimitive.ItemIndicator\n data-slot='menu-combobox-item-indicator'\n class={cn('right-3 size-3.5 absolute flex items-center justify-center', local.class)}\n {...others}\n >\n {local.children ?? <CheckIcon class='size-4' />}\n </MenuPrimitive.ItemIndicator>\n );\n};\nexport const MenuComboboxCheckboxItem: Component<MenuPrimitive.CheckboxItemProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'children']);\n return (\n <MenuPrimitive.CheckboxItem\n data-slot='menu-combobox-checkbox-item'\n class={cn(\n 'py-2 pr-3 pl-9 text-sm mx-1 my-0.5 relative flex cursor-default items-center rounded-sm transition-colors outline-none select-none data-disabled:pointer-events-none data-highlighted:bg-accent data-highlighted:text-accent-foreground data-[disabled=true]:opacity-50',\n local.class,\n )}\n {...others}\n >\n <MenuPrimitive.ItemIndicator class='left-3 size-3.5 absolute flex items-center justify-center'>\n <CheckIcon class='size-4' />\n </MenuPrimitive.ItemIndicator>\n <MenuPrimitive.ItemText>{local.children}</MenuPrimitive.ItemText>\n </MenuPrimitive.CheckboxItem>\n );\n};\nexport const MenuComboboxRadioItem: Component<MenuPrimitive.RadioItemProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'children']);\n return (\n <MenuPrimitive.RadioItem\n data-slot='menu-combobox-radio-item'\n class={cn(\n 'py-2 pr-3 pl-9 text-sm mx-1 my-0.5 relative flex cursor-default items-center rounded-sm transition-colors outline-none select-none data-disabled:pointer-events-none data-highlighted:bg-accent data-highlighted:text-accent-foreground data-[disabled=true]:opacity-50',\n local.class,\n )}\n {...others}\n >\n <MenuPrimitive.ItemIndicator class='left-3 size-3.5 absolute flex items-center justify-center'>\n <div class='size-2 rounded-full bg-current' />\n </MenuPrimitive.ItemIndicator>\n <MenuPrimitive.ItemText>{local.children}</MenuPrimitive.ItemText>\n </MenuPrimitive.RadioItem>\n );\n};\nexport const MenuComboboxShortcut: Component<ComponentProps<'span'>> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return <span class={cn('text-xs tracking-widest ml-auto opacity-60', local.class)} {...others} />;\n};\n\nexport type MenuComboboxEmptyProps = ComponentProps<'div'> & { searchValue?: string };\nexport const MenuComboboxEmpty: Component<MenuComboboxEmptyProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'searchValue']);\n return (\n <div\n data-slot='menu-combobox-empty'\n class={cn('py-6 text-sm text-center text-muted-foreground', local.class)}\n {...others}\n >\n No results found.\n </div>\n );\n};\nexport type {\n MenuCheckboxItemData,\n MenuComboboxGroupedListProps,\n MenuComboboxListProps,\n MenuItemData,\n MenuItemGroupData,\n MenuRadioGroupData,\n MenuRadioItemData,\n MenuSeparatorData,\n} from './MenuComboboxList';\nexport { MenuComboboxGroupedList, MenuComboboxList } from './MenuComboboxList';\n"],"names":["MenuCombobox","MenuPrimitive","Root","MenuComboboxTrigger","Trigger","MenuComboboxContext","Context","MenuComboboxItemGroup","ItemGroup","MenuComboboxItemText","ItemText","MenuComboboxRadioItemGroup","RadioItemGroup","MenuComboboxPositioner","props","local","others","splitProps","_$createComponent","Positioner","_$mergeProps","cn","class","MenuComboboxContent","Content","MenuComboboxSearchInput","handleInput","inputEvent","onValueChange","currentTarget","value","_el$","_tmpl$","_el$2","firstChild","_$insert","SearchIcon","$$input","_$spread","MenuComboboxItem","Item","MenuComboboxTriggerItem","TriggerItem","children","_$memo","ChevronRightIcon","MenuComboboxItemGroupLabel","ItemGroupLabel","MenuComboboxSeparator","Separator","MenuComboboxItemIndicator","ItemIndicator","CheckIcon","MenuComboboxCheckboxItem","CheckboxItem","MenuComboboxRadioItem","RadioItem","_tmpl$2","MenuComboboxShortcut","_el$4","_tmpl$3","MenuComboboxEmpty","_el$5","_tmpl$4","_$delegateEvents"],"mappings":"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"}
1
+ {"version":3,"file":"MenuCombobox.js","sources":["../../src/components/MenuCombobox.tsx"],"sourcesContent":["import { Menu as MenuPrimitive } from '@ark-ui/solid/menu';\nimport { type Component, type ComponentProps, splitProps } from 'solid-js';\nimport { cn } from 'tailwind-variants';\nimport CheckIcon from '~icons/material-symbols/check';\nimport ChevronRightIcon from '~icons/material-symbols/chevron-right';\nimport SearchIcon from '~icons/material-symbols/search';\n\nexport const MenuCombobox = MenuPrimitive.Root;\nexport const MenuComboboxTrigger = MenuPrimitive.Trigger;\nexport const MenuComboboxContext = MenuPrimitive.Context;\nexport const MenuComboboxItemGroup = MenuPrimitive.ItemGroup;\nexport const MenuComboboxItemText = MenuPrimitive.ItemText;\nexport const MenuComboboxRadioItemGroup = MenuPrimitive.RadioItemGroup;\n\nexport const MenuComboboxPositioner: Component<MenuPrimitive.PositionerProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <MenuPrimitive.Positioner\n data-slot='menu-combobox-positioner'\n class={cn('isolate z-50', local.class)}\n {...others}\n />\n );\n};\nexport const MenuComboboxContent: Component<MenuPrimitive.ContentProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <MenuPrimitive.Content\n data-slot='menu-combobox-content'\n class={cn(\n 'min-w-48 p-0 shadow-md isolate overflow-hidden rounded-md border bg-popover text-popover-foreground outline-none',\n 'data-[side=bottom]:slide-in-from-top-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-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95',\n local.class,\n )}\n {...others}\n />\n );\n};\nexport type MenuComboboxSearchInputProps = ComponentProps<'input'> & {\n onValueChange?: (value: string) => void;\n};\nexport const MenuComboboxSearchInput: Component<MenuComboboxSearchInputProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'onValueChange', 'value']);\n const handleInput = (inputEvent: InputEvent & { currentTarget: HTMLInputElement }): void => {\n if (typeof local.onValueChange === 'function') {\n local.onValueChange(inputEvent.currentTarget.value);\n }\n };\n return (\n <div data-slot='menu-combobox-search' class='gap-2 px-3 py-2 flex items-center border-b'>\n <SearchIcon class='size-4 shrink-0 text-muted-foreground' />\n <input\n type='text'\n class={cn(\n 'text-sm flex-1 bg-transparent outline-none placeholder:text-muted-foreground',\n local.class,\n )}\n onInput={handleInput}\n value={local.value}\n {...others}\n />\n </div>\n );\n};\nexport const MenuComboboxItem: Component<MenuPrimitive.ItemProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <MenuPrimitive.Item\n data-slot='menu-combobox-item'\n class={cn(\n 'px-3 py-2 text-sm mx-1 my-0.5 relative flex cursor-default items-center rounded-sm transition-colors outline-none select-none data-disabled:pointer-events-none data-highlighted:bg-accent data-highlighted:text-accent-foreground data-[disabled=true]:opacity-50',\n local.class,\n )}\n {...others}\n />\n );\n};\nexport const MenuComboboxTriggerItem: Component<MenuPrimitive.TriggerItemProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'children']);\n return (\n <MenuPrimitive.TriggerItem\n data-slot='menu-combobox-trigger-item'\n class={cn(\n 'px-3 py-2 text-sm mx-1 my-0.5 flex cursor-default items-center rounded-sm outline-none select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground',\n local.class,\n )}\n {...others}\n >\n {local.children}\n <ChevronRightIcon class='size-4 ml-auto' />\n </MenuPrimitive.TriggerItem>\n );\n};\nexport const MenuComboboxItemGroupLabel: Component<MenuPrimitive.ItemGroupLabelProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <MenuPrimitive.ItemGroupLabel\n data-slot='menu-combobox-item-group-label'\n class={cn('px-3 py-1.5 text-xs font-semibold text-muted-foreground', local.class)}\n {...others}\n />\n );\n};\nexport const MenuComboboxSeparator: Component<MenuPrimitive.SeparatorProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <MenuPrimitive.Separator\n data-slot='menu-combobox-separator'\n class={cn('-mx-1 my-1 h-px bg-muted', local.class)}\n {...others}\n />\n );\n};\nexport const MenuComboboxItemIndicator: Component<MenuPrimitive.ItemIndicatorProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'children']);\n return (\n <MenuPrimitive.ItemIndicator\n data-slot='menu-combobox-item-indicator'\n class={cn('right-3 size-3.5 absolute flex items-center justify-center', local.class)}\n {...others}\n >\n {local.children ?? <CheckIcon class='size-4' />}\n </MenuPrimitive.ItemIndicator>\n );\n};\nexport const MenuComboboxCheckboxItem: Component<MenuPrimitive.CheckboxItemProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'children']);\n return (\n <MenuPrimitive.CheckboxItem\n data-slot='menu-combobox-checkbox-item'\n class={cn(\n 'py-2 pr-3 pl-9 text-sm mx-1 my-0.5 relative flex cursor-default items-center rounded-sm transition-colors outline-none select-none data-disabled:pointer-events-none data-highlighted:bg-accent data-highlighted:text-accent-foreground data-[disabled=true]:opacity-50',\n local.class,\n )}\n {...others}\n >\n <MenuPrimitive.ItemIndicator class='left-3 size-3.5 absolute flex items-center justify-center'>\n <CheckIcon class='size-4' />\n </MenuPrimitive.ItemIndicator>\n <MenuPrimitive.ItemText>{local.children}</MenuPrimitive.ItemText>\n </MenuPrimitive.CheckboxItem>\n );\n};\nexport const MenuComboboxRadioItem: Component<MenuPrimitive.RadioItemProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'children']);\n return (\n <MenuPrimitive.RadioItem\n data-slot='menu-combobox-radio-item'\n class={cn(\n 'py-2 pr-3 pl-9 text-sm mx-1 my-0.5 relative flex cursor-default items-center rounded-sm transition-colors outline-none select-none data-disabled:pointer-events-none data-highlighted:bg-accent data-highlighted:text-accent-foreground data-[disabled=true]:opacity-50',\n local.class,\n )}\n {...others}\n >\n <MenuPrimitive.ItemIndicator class='left-3 size-3.5 absolute flex items-center justify-center'>\n <div class='size-2 rounded-full bg-current' />\n </MenuPrimitive.ItemIndicator>\n <MenuPrimitive.ItemText>{local.children}</MenuPrimitive.ItemText>\n </MenuPrimitive.RadioItem>\n );\n};\nexport const MenuComboboxShortcut: Component<ComponentProps<'span'>> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return <span class={cn('text-xs tracking-widest ml-auto opacity-60', local.class)} {...others} />;\n};\n\nexport type MenuComboboxEmptyProps = ComponentProps<'div'> & { searchValue?: string };\nexport const MenuComboboxEmpty: Component<MenuComboboxEmptyProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'searchValue']);\n return (\n <div\n data-slot='menu-combobox-empty'\n class={cn('py-6 text-sm text-center text-muted-foreground', local.class)}\n {...others}\n >\n No results found.\n </div>\n );\n};\nexport type {\n MenuComboboxCheckboxItemData,\n MenuComboboxItemData,\n MenuComboboxItemGroupData,\n MenuComboboxRadioItemGroupData,\n MenuComboboxRadioItemData,\n MenuComboboxSeparatorData,\n MenuComboboxGroupedListProps,\n MenuComboboxListProps,\n} from './MenuComboboxList';\nexport { MenuComboboxGroupedList, MenuComboboxList } from './MenuComboboxList';\n"],"names":["MenuCombobox","MenuPrimitive","Root","MenuComboboxTrigger","Trigger","MenuComboboxContext","Context","MenuComboboxItemGroup","ItemGroup","MenuComboboxItemText","ItemText","MenuComboboxRadioItemGroup","RadioItemGroup","MenuComboboxPositioner","props","local","others","splitProps","_$createComponent","Positioner","_$mergeProps","cn","class","MenuComboboxContent","Content","MenuComboboxSearchInput","handleInput","inputEvent","onValueChange","currentTarget","value","_el$","_tmpl$","_el$2","firstChild","_$insert","SearchIcon","$$input","_$spread","MenuComboboxItem","Item","MenuComboboxTriggerItem","TriggerItem","children","_$memo","ChevronRightIcon","MenuComboboxItemGroupLabel","ItemGroupLabel","MenuComboboxSeparator","Separator","MenuComboboxItemIndicator","ItemIndicator","CheckIcon","MenuComboboxCheckboxItem","CheckboxItem","MenuComboboxRadioItem","RadioItem","_tmpl$2","MenuComboboxShortcut","_el$4","_tmpl$3","MenuComboboxEmpty","_el$5","_tmpl$4","_$delegateEvents"],"mappings":";;;;;;;;;AAOO,MAAMA,IAAeC,EAAcC,MAC7BC,IAAsBF,EAAcG,SACpCC,IAAsBJ,EAAcK,SACpCC,IAAwBN,EAAcO,WACtCC,IAAuBR,EAAcS,UACrCC,IAA6BV,EAAcW,gBAE3CC,IAAoEC,CAAAA,MAAU;AACzF,QAAM,CAACC,GAAOC,CAAM,IAAIC,EAAWH,GAAO,CAAC,OAAO,CAAC;AACnD,SAAAI,EACGjB,EAAckB,YAAUC,EAAA;AAAA,IAAA,aAAA;AAAA,IAAA,IAAA,QAAA;AAAA,aAEhBC,EAAG,gBAAgBN,EAAMO,KAAK;AAAA,IAAC;AAAA,EAAA,GAClCN,CAAM,CAAA;AAGhB,GACaO,IAA8DT,CAAAA,MAAU;AACnF,QAAM,CAACC,GAAOC,CAAM,IAAIC,EAAWH,GAAO,CAAC,OAAO,CAAC;AACnD,SAAAI,EACGjB,EAAcuB,SAAOJ,EAAA;AAAA,IAAA,aAAA;AAAA,IAAA,IAAA,QAAA;AAAA,aAEbC,EACL,oHACA,oVACAN,EAAMO,KACR;AAAA,IAAC;AAAA,EAAA,GACGN,CAAM,CAAA;AAGhB,GAIaS,IAAoEX,CAAAA,MAAU;AACzF,QAAM,CAACC,GAAOC,CAAM,IAAIC,EAAWH,GAAO,CAAC,SAAS,iBAAiB,OAAO,CAAC,GACvEY,IAAcA,CAACC,MAAuE;AAC1F,IAAI,OAAOZ,EAAMa,iBAAkB,cACjCb,EAAMa,cAAcD,EAAWE,cAAcC,KAAK;AAAA,EAEtD;AACA,UAAA,MAAA;AAAA,QAAAC,IAAAC,EAAAA,GAAAC,IAAAF,EAAAG;AAAAC,WAAAA,EAAAJ,GAAAb,EAEKkB,GAAU;AAAA,MAAA,OAAA;AAAA,IAAA,CAAA,GAAAH,CAAA,GAAAA,EAAAI,UAOAX,GAAWY,EAAAL,GAAAb,EAAA;AAAA,MAAA,IAAA,QAAA;AAAA,eAJbC,EACL,gFACAN,EAAMO,KACR;AAAA,MAAC;AAAA,MAAA,IAEDQ,QAAK;AAAA,eAAEf,EAAMe;AAAAA,MAAK;AAAA,IAAA,GACdd,CAAM,GAAA,IAAA,EAAA,GAAAe;AAAAA,EAAA,GAAA;AAIlB,GACaQ,IAAwDzB,CAAAA,MAAU;AAC7E,QAAM,CAACC,GAAOC,CAAM,IAAIC,EAAWH,GAAO,CAAC,OAAO,CAAC;AACnD,SAAAI,EACGjB,EAAcuC,MAAIpB,EAAA;AAAA,IAAA,aAAA;AAAA,IAAA,IAAA,QAAA;AAAA,aAEVC,EACL,sQACAN,EAAMO,KACR;AAAA,IAAC;AAAA,EAAA,GACGN,CAAM,CAAA;AAGhB,GACayB,IAAsE3B,CAAAA,MAAU;AAC3F,QAAM,CAACC,GAAOC,CAAM,IAAIC,EAAWH,GAAO,CAAC,SAAS,UAAU,CAAC;AAC/D,SAAAI,EACGjB,EAAcyC,aAAWtB,EAAA;AAAA,IAAA,aAAA;AAAA,IAAA,IAAA,QAAA;AAAA,aAEjBC,EACL,yKACAN,EAAMO,KACR;AAAA,IAAC;AAAA,EAAA,GACGN,GAAM;AAAA,IAAA,IAAA2B,WAAA;AAAA,aAAA,CAAAC,QAET7B,EAAM4B,QAAQ,GAAAzB,EACd2B,GAAgB;AAAA,QAAA,OAAA;AAAA,MAAA,CAAA,CAAA;AAAA,IAAA;AAAA,EAAA,CAAA,CAAA;AAGvB,GACaC,IAA4EhC,CAAAA,MAAU;AACjG,QAAM,CAACC,GAAOC,CAAM,IAAIC,EAAWH,GAAO,CAAC,OAAO,CAAC;AACnD,SAAAI,EACGjB,EAAc8C,gBAAc3B,EAAA;AAAA,IAAA,aAAA;AAAA,IAAA,IAAA,QAAA;AAAA,aAEpBC,EAAG,2DAA2DN,EAAMO,KAAK;AAAA,IAAC;AAAA,EAAA,GAC7EN,CAAM,CAAA;AAGhB,GACagC,IAAkElC,CAAAA,MAAU;AACvF,QAAM,CAACC,GAAOC,CAAM,IAAIC,EAAWH,GAAO,CAAC,OAAO,CAAC;AACnD,SAAAI,EACGjB,EAAcgD,WAAS7B,EAAA;AAAA,IAAA,aAAA;AAAA,IAAA,IAAA,QAAA;AAAA,aAEfC,EAAG,4BAA4BN,EAAMO,KAAK;AAAA,IAAC;AAAA,EAAA,GAC9CN,CAAM,CAAA;AAGhB,GACakC,IAA0EpC,CAAAA,MAAU;AAC/F,QAAM,CAACC,GAAOC,CAAM,IAAIC,EAAWH,GAAO,CAAC,SAAS,UAAU,CAAC;AAC/D,SAAAI,EACGjB,EAAckD,eAAa/B,EAAA;AAAA,IAAA,aAAA;AAAA,IAAA,IAAA,QAAA;AAAA,aAEnBC,EAAG,8DAA8DN,EAAMO,KAAK;AAAA,IAAC;AAAA,EAAA,GAChFN,GAAM;AAAA,IAAA,IAAA2B,WAAA;AAAA,aAET5B,EAAM4B,YAAQzB,EAAKkC,GAAS;AAAA,QAAA,OAAA;AAAA,MAAA,CAAA;AAAA,IAAkB;AAAA,EAAA,CAAA,CAAA;AAGrD,GACaC,IAAwEvC,CAAAA,MAAU;AAC7F,QAAM,CAACC,GAAOC,CAAM,IAAIC,EAAWH,GAAO,CAAC,SAAS,UAAU,CAAC;AAC/D,SAAAI,EACGjB,EAAcqD,cAAYlC,EAAA;AAAA,IAAA,aAAA;AAAA,IAAA,IAAA,QAAA;AAAA,aAElBC,EACL,2QACAN,EAAMO,KACR;AAAA,IAAC;AAAA,EAAA,GACGN,GAAM;AAAA,IAAA,IAAA2B,WAAA;AAAA,aAAA,CAAAzB,EAETjB,EAAckD,eAAa;AAAA,QAAA,OAAA;AAAA,QAAA,IAAAR,WAAA;AAAA,iBAAAzB,EACzBkC,GAAS;AAAA,YAAA,OAAA;AAAA,UAAA,CAAA;AAAA,QAAA;AAAA,MAAA,CAAA,GAAAlC,EAEXjB,EAAcS,UAAQ;AAAA,QAAA,IAAAiC,WAAA;AAAA,iBAAE5B,EAAM4B;AAAAA,QAAQ;AAAA,MAAA,CAAA,CAAA;AAAA,IAAA;AAAA,EAAA,CAAA,CAAA;AAG7C,GACaY,IAAkEzC,CAAAA,MAAU;AACvF,QAAM,CAACC,GAAOC,CAAM,IAAIC,EAAWH,GAAO,CAAC,SAAS,UAAU,CAAC;AAC/D,SAAAI,EACGjB,EAAcuD,WAASpC,EAAA;AAAA,IAAA,aAAA;AAAA,IAAA,IAAA,QAAA;AAAA,aAEfC,EACL,2QACAN,EAAMO,KACR;AAAA,IAAC;AAAA,EAAA,GACGN,GAAM;AAAA,IAAA,IAAA2B,WAAA;AAAA,aAAA,CAAAzB,EAETjB,EAAckD,eAAa;AAAA,QAAA,OAAA;AAAA,QAAA,IAAAR,WAAA;AAAA,iBAAAc,EAAAA;AAAAA,QAAA;AAAA,MAAA,CAAA,GAAAvC,EAG3BjB,EAAcS,UAAQ;AAAA,QAAA,IAAAiC,WAAA;AAAA,iBAAE5B,EAAM4B;AAAAA,QAAQ;AAAA,MAAA,CAAA,CAAA;AAAA,IAAA;AAAA,EAAA,CAAA,CAAA;AAG7C,GACae,IAA2D5C,CAAAA,MAAU;AAChF,QAAM,CAACC,GAAOC,CAAM,IAAIC,EAAWH,GAAO,CAAC,OAAO,CAAC;AACnD,UAAA,MAAA;AAAA,QAAA6C,IAAAC,EAAAA;AAAAtB,WAAAA,EAAAqB,GAAAvC,EAAA;AAAA,MAAA,IAAA,QAAA;AAAA,eAAoBC,EAAG,8CAA8CN,EAAMO,KAAK;AAAA,MAAC;AAAA,IAAA,GAAMN,CAAM,GAAA,IAAA,EAAA,GAAA2C;AAAAA,EAAA,GAAA;AAC/F,GAGaE,IAAwD/C,CAAAA,MAAU;AAC7E,QAAM,CAACC,GAAOC,CAAM,IAAIC,EAAWH,GAAO,CAAC,SAAS,aAAa,CAAC;AAClE,UAAA,MAAA;AAAA,QAAAgD,IAAAC,EAAAA;AAAAzB,WAAAA,EAAAwB,GAAA1C,EAAA;AAAA,MAAA,IAAA,QAAA;AAAA,eAGWC,EAAG,kDAAkDN,EAAMO,KAAK;AAAA,MAAC;AAAA,IAAA,GACpEN,CAAM,GAAA,IAAA,EAAA,GAAA8C;AAAAA,EAAA,GAAA;AAKhB;AAW+EE,EAAA,CAAA,OAAA,CAAA;"}
@@ -1,42 +1,42 @@
1
1
  import { Component } from 'solid-js';
2
- export type MenuItemData = {
2
+ export type MenuComboboxItemData = {
3
3
  value: string;
4
4
  label: string;
5
5
  disabled?: boolean;
6
6
  shortcut?: string;
7
7
  };
8
- export type MenuCheckboxItemData = {
8
+ export type MenuComboboxCheckboxItemData = {
9
9
  type: 'checkbox';
10
10
  value: string;
11
11
  label: string;
12
12
  checked?: boolean;
13
13
  disabled?: boolean;
14
14
  };
15
- export type MenuRadioItemData = {
15
+ export type MenuComboboxRadioItemData = {
16
16
  type: 'radio';
17
17
  value: string;
18
18
  label: string;
19
19
  disabled?: boolean;
20
20
  };
21
- export type MenuRadioGroupData = {
21
+ export type MenuComboboxRadioItemGroupData = {
22
22
  type: 'radio-group';
23
23
  value: string;
24
- items: MenuRadioItemData[];
24
+ items: MenuComboboxRadioItemData[];
25
25
  };
26
- export type MenuSeparatorData = {
26
+ export type MenuComboboxSeparatorData = {
27
27
  type: 'separator';
28
28
  };
29
- export type MenuItemGroupData = {
29
+ export type MenuComboboxItemGroupData = {
30
30
  label: string;
31
- items: (MenuItemData | MenuCheckboxItemData | MenuRadioGroupData | MenuSeparatorData)[];
31
+ items: (MenuComboboxItemData | MenuComboboxCheckboxItemData | MenuComboboxRadioItemGroupData | MenuComboboxSeparatorData)[];
32
32
  };
33
33
  export type MenuComboboxListProps = {
34
- items: MenuItemData[];
34
+ items: MenuComboboxItemData[];
35
35
  searchValue?: string;
36
36
  class?: string;
37
37
  };
38
38
  export type MenuComboboxGroupedListProps = {
39
- groups: MenuItemGroupData[];
39
+ groups: MenuComboboxItemGroupData[];
40
40
  searchValue?: string;
41
41
  class?: string;
42
42
  };
@@ -1 +1 @@
1
- {"version":3,"file":"MenuComboboxList.js","sources":["../../src/components/MenuComboboxList.tsx"],"sourcesContent":["import { type Component, type JSXElement, For, createMemo, splitProps } from 'solid-js';\nimport { cn } from 'tailwind-variants';\n\nimport {\n MenuComboboxCheckboxItem,\n MenuComboboxEmpty,\n MenuComboboxItem,\n MenuComboboxItemGroup,\n MenuComboboxItemGroupLabel,\n MenuComboboxRadioItem,\n MenuComboboxRadioItemGroup,\n MenuComboboxSeparator,\n MenuComboboxShortcut,\n} from '@/components/MenuCombobox';\n\nexport type MenuItemData = { value: string; label: string; disabled?: boolean; shortcut?: string };\nexport type MenuCheckboxItemData = {\n type: 'checkbox';\n value: string;\n label: string;\n checked?: boolean;\n disabled?: boolean;\n};\nexport type MenuRadioItemData = { type: 'radio'; value: string; label: string; disabled?: boolean };\nexport type MenuRadioGroupData = { type: 'radio-group'; value: string; items: MenuRadioItemData[] };\nexport type MenuSeparatorData = { type: 'separator' };\nexport type MenuItemGroupData = {\n label: string;\n items: (MenuItemData | MenuCheckboxItemData | MenuRadioGroupData | MenuSeparatorData)[];\n};\nexport type MenuComboboxListProps = { items: MenuItemData[]; searchValue?: string; class?: string };\nexport type MenuComboboxGroupedListProps = {\n groups: MenuItemGroupData[];\n searchValue?: string;\n class?: string;\n};\n\nconst hasShortcut = (shortcut?: string): boolean => typeof shortcut === 'string' && shortcut !== '';\nconst matchesSearch = (\n item: MenuItemData | MenuCheckboxItemData | MenuRadioItemData,\n search: string,\n): boolean =>\n item.label.toLowerCase().includes(search) || item.value.toLowerCase().includes(search);\n\nconst renderRadioItems = (items: MenuRadioItemData[]): JSXElement => (\n <For each={items}>\n {(radioItem) => (\n <MenuComboboxRadioItem value={radioItem.value} disabled={radioItem.disabled}>\n {radioItem.label}\n </MenuComboboxRadioItem>\n )}\n </For>\n);\n\nconst renderGroupedItem = (\n item: MenuItemData | MenuCheckboxItemData | MenuRadioGroupData | MenuSeparatorData,\n): JSXElement => {\n if (!('type' in item)) {\n return (\n <MenuComboboxItem value={item.value} disabled={item.disabled}>\n {item.label}\n {hasShortcut(item.shortcut) && <MenuComboboxShortcut>{item.shortcut}</MenuComboboxShortcut>}\n </MenuComboboxItem>\n );\n }\n if (item.type === 'separator') {\n return <MenuComboboxSeparator />;\n }\n if (item.type === 'checkbox') {\n return (\n <MenuComboboxCheckboxItem\n value={item.value}\n disabled={item.disabled}\n checked={item.checked ?? false}\n >\n {item.label}\n </MenuComboboxCheckboxItem>\n );\n }\n if (item.type === 'radio-group') {\n return (\n <MenuComboboxRadioItemGroup value={item.value}>\n {renderRadioItems(item.items)}\n </MenuComboboxRadioItemGroup>\n );\n }\n return <></>;\n};\n\ntype GroupFilterResult =\n | MenuItemData\n | MenuCheckboxItemData\n | MenuRadioGroupData\n | MenuSeparatorData;\n\nconst filterGroupItem = (\n item: MenuItemData | MenuCheckboxItemData | MenuRadioGroupData | MenuSeparatorData,\n search: string,\n): GroupFilterResult[] => {\n if (!('type' in item)) {\n return matchesSearch(item, search) ? [item] : [];\n }\n if (item.type === 'separator') {\n return [item];\n }\n if (item.type === 'checkbox') {\n return matchesSearch(item, search) ? [item] : [];\n }\n const filteredRadioItems = item.items.filter((radioItem) => matchesSearch(radioItem, search));\n return filteredRadioItems.length > 0 ? [{ ...item, items: filteredRadioItems }] : [];\n};\n\nconst GroupItems: Component<{ items: MenuItemGroupData['items'] }> = (props) => (\n <For each={props.items}>{(item) => renderGroupedItem(item)}</For>\n);\n\nconst GroupSection: Component<{ group: MenuItemGroupData; showSeparator: boolean }> = (props) => (\n <>\n {props.showSeparator && <MenuComboboxSeparator />}\n <MenuComboboxItemGroup>\n <MenuComboboxItemGroupLabel>{props.group.label}</MenuComboboxItemGroupLabel>\n <GroupItems items={props.group.items} />\n </MenuComboboxItemGroup>\n </>\n);\n\nexport const MenuComboboxList: Component<MenuComboboxListProps> = (props) => {\n const [local] = splitProps(props, ['items', 'searchValue', 'class']);\n const filteredItems = createMemo(() => {\n const search = (local.searchValue ?? '').toLowerCase().trim();\n return search === ''\n ? local.items\n : local.items.filter(\n (item) =>\n item.label.toLowerCase().includes(search) || item.value.toLowerCase().includes(search),\n );\n });\n const emptyProps = (): { searchValue: string } | Record<string, never> =>\n typeof local.searchValue === 'string' ? { searchValue: local.searchValue } : {};\n return (\n <div class={cn('p-1 max-h-64 overflow-y-auto', local.class)}>\n <For each={filteredItems()}>\n {(item) => (\n <MenuComboboxItem value={item.value} disabled={item.disabled}>\n {item.label}\n {hasShortcut(item.shortcut) && (\n <MenuComboboxShortcut>{item.shortcut}</MenuComboboxShortcut>\n )}\n </MenuComboboxItem>\n )}\n </For>\n {filteredItems().length === 0 && <MenuComboboxEmpty {...emptyProps()} />}\n </div>\n );\n};\n\nexport const MenuComboboxGroupedList: Component<MenuComboboxGroupedListProps> = (props) => {\n const [local] = splitProps(props, ['groups', 'searchValue', 'class']);\n const filteredGroups = createMemo(() => {\n const search = (local.searchValue ?? '').toLowerCase().trim();\n if (search === '') {\n return local.groups;\n }\n return local.groups\n .map((group) => {\n const filteredItems = group.items.flatMap((item) => filterGroupItem(item, search));\n if (filteredItems.length > 0) {\n return { ...group, items: filteredItems };\n }\n return false;\n })\n .filter((group): group is MenuItemGroupData => group !== false);\n });\n\n const emptyProps = (): { searchValue: string } | Record<string, never> =>\n typeof local.searchValue === 'string' ? { searchValue: local.searchValue } : {};\n return (\n <div class={cn('p-1 max-h-64 overflow-y-auto', local.class)}>\n <For each={filteredGroups()}>\n {(group, groupIndex) => <GroupSection group={group} showSeparator={groupIndex() > 0} />}\n </For>\n {filteredGroups().length === 0 && <MenuComboboxEmpty {...emptyProps()} />}\n </div>\n );\n};\n"],"names":["hasShortcut","shortcut","matchesSearch","item","search","label","toLowerCase","includes","value","renderRadioItems","items","_$createComponent","For","each","children","radioItem","MenuComboboxRadioItem","disabled","renderGroupedItem","type","MenuComboboxSeparator","MenuComboboxCheckboxItem","checked","MenuComboboxRadioItemGroup","MenuComboboxItem","_$memo","MenuComboboxShortcut","filterGroupItem","filteredRadioItems","filter","length","GroupItems","props","GroupSection","showSeparator","MenuComboboxItemGroup","MenuComboboxItemGroupLabel","group","MenuComboboxList","local","splitProps","filteredItems","createMemo","searchValue","trim","emptyProps","_el$","_tmpl$","_$insert","_c$","MenuComboboxEmpty","_$mergeProps","_$effect","_$className","cn","class","MenuComboboxGroupedList","filteredGroups","groups","map","flatMap","_el$2","groupIndex","_c$2"],"mappings":"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"}
1
+ {"version":3,"file":"MenuComboboxList.js","sources":["../../src/components/MenuComboboxList.tsx"],"sourcesContent":["import { type Component, type JSXElement, For, createMemo, splitProps } from 'solid-js';\nimport { cn } from 'tailwind-variants';\n\nimport {\n MenuComboboxCheckboxItem,\n MenuComboboxEmpty,\n MenuComboboxItem,\n MenuComboboxItemGroup,\n MenuComboboxItemGroupLabel,\n MenuComboboxRadioItem,\n MenuComboboxRadioItemGroup,\n MenuComboboxSeparator,\n MenuComboboxShortcut,\n} from '@/components/MenuCombobox';\n\nexport type MenuComboboxItemData = {\n value: string;\n label: string;\n disabled?: boolean;\n shortcut?: string;\n};\nexport type MenuComboboxCheckboxItemData = {\n type: 'checkbox';\n value: string;\n label: string;\n checked?: boolean;\n disabled?: boolean;\n};\nexport type MenuComboboxRadioItemData = {\n type: 'radio';\n value: string;\n label: string;\n disabled?: boolean;\n};\nexport type MenuComboboxRadioItemGroupData = {\n type: 'radio-group';\n value: string;\n items: MenuComboboxRadioItemData[];\n};\nexport type MenuComboboxSeparatorData = { type: 'separator' };\nexport type MenuComboboxItemGroupData = {\n label: string;\n items: (\n | MenuComboboxItemData\n | MenuComboboxCheckboxItemData\n | MenuComboboxRadioItemGroupData\n | MenuComboboxSeparatorData\n )[];\n};\n\nexport type MenuComboboxListProps = {\n items: MenuComboboxItemData[];\n searchValue?: string;\n class?: string;\n};\nexport type MenuComboboxGroupedListProps = {\n groups: MenuComboboxItemGroupData[];\n searchValue?: string;\n class?: string;\n};\n\nconst hasShortcut = (shortcut?: string): boolean => typeof shortcut === 'string' && shortcut !== '';\nconst matchesSearch = (\n item: MenuComboboxItemData | MenuComboboxCheckboxItemData | MenuComboboxRadioItemData,\n search: string,\n): boolean =>\n item.label.toLowerCase().includes(search) || item.value.toLowerCase().includes(search);\n\nconst renderRadioItems = (items: MenuComboboxRadioItemData[]): JSXElement => (\n <For each={items}>\n {(radioItem) => (\n <MenuComboboxRadioItem value={radioItem.value} disabled={radioItem.disabled}>\n {radioItem.label}\n </MenuComboboxRadioItem>\n )}\n </For>\n);\n\nconst renderGroupedItem = (\n item:\n | MenuComboboxItemData\n | MenuComboboxCheckboxItemData\n | MenuComboboxRadioItemGroupData\n | MenuComboboxSeparatorData,\n): JSXElement => {\n if (!('type' in item)) {\n return (\n <MenuComboboxItem value={item.value} disabled={item.disabled}>\n {item.label}\n {hasShortcut(item.shortcut) && <MenuComboboxShortcut>{item.shortcut}</MenuComboboxShortcut>}\n </MenuComboboxItem>\n );\n }\n if (item.type === 'separator') {\n return <MenuComboboxSeparator />;\n }\n if (item.type === 'checkbox') {\n return (\n <MenuComboboxCheckboxItem\n value={item.value}\n disabled={item.disabled}\n checked={item.checked ?? false}\n >\n {item.label}\n </MenuComboboxCheckboxItem>\n );\n }\n if (item.type === 'radio-group') {\n return (\n <MenuComboboxRadioItemGroup value={item.value}>\n {renderRadioItems(item.items)}\n </MenuComboboxRadioItemGroup>\n );\n }\n return <></>;\n};\n\ntype GroupFilterResult =\n | MenuComboboxItemData\n | MenuComboboxCheckboxItemData\n | MenuComboboxRadioItemGroupData\n | MenuComboboxSeparatorData;\n\nconst filterGroupItem = (\n item:\n | MenuComboboxItemData\n | MenuComboboxCheckboxItemData\n | MenuComboboxRadioItemGroupData\n | MenuComboboxSeparatorData,\n search: string,\n): GroupFilterResult[] => {\n if (!('type' in item)) {\n return matchesSearch(item, search) ? [item] : [];\n }\n if (item.type === 'separator') {\n return [item];\n }\n if (item.type === 'checkbox') {\n return matchesSearch(item, search) ? [item] : [];\n }\n const filteredRadioItems = item.items.filter((radioItem) => matchesSearch(radioItem, search));\n return filteredRadioItems.length > 0 ? [{ ...item, items: filteredRadioItems }] : [];\n};\n\nconst GroupItems: Component<{ items: MenuComboboxItemGroupData['items'] }> = (props) => (\n <For each={props.items}>{(item) => renderGroupedItem(item)}</For>\n);\n\nconst GroupSection: Component<{ group: MenuComboboxItemGroupData; showSeparator: boolean }> = (\n props,\n) => (\n <>\n {props.showSeparator && <MenuComboboxSeparator />}\n <MenuComboboxItemGroup>\n <MenuComboboxItemGroupLabel>{props.group.label}</MenuComboboxItemGroupLabel>\n <GroupItems items={props.group.items} />\n </MenuComboboxItemGroup>\n </>\n);\n\nexport const MenuComboboxList: Component<MenuComboboxListProps> = (props) => {\n const [local] = splitProps(props, ['items', 'searchValue', 'class']);\n const filteredItems = createMemo(() => {\n const search = (local.searchValue ?? '').toLowerCase().trim();\n return search === ''\n ? local.items\n : local.items.filter(\n (item) =>\n item.label.toLowerCase().includes(search) || item.value.toLowerCase().includes(search),\n );\n });\n const emptyProps = (): { searchValue: string } | Record<string, never> =>\n typeof local.searchValue === 'string' ? { searchValue: local.searchValue } : {};\n return (\n <div class={cn('p-1 max-h-64 overflow-y-auto', local.class)}>\n <For each={filteredItems()}>\n {(item) => (\n <MenuComboboxItem value={item.value} disabled={item.disabled}>\n {item.label}\n {hasShortcut(item.shortcut) && (\n <MenuComboboxShortcut>{item.shortcut}</MenuComboboxShortcut>\n )}\n </MenuComboboxItem>\n )}\n </For>\n {filteredItems().length === 0 && <MenuComboboxEmpty {...emptyProps()} />}\n </div>\n );\n};\n\nexport const MenuComboboxGroupedList: Component<MenuComboboxGroupedListProps> = (props) => {\n const [local] = splitProps(props, ['groups', 'searchValue', 'class']);\n const filteredGroups = createMemo(() => {\n const search = (local.searchValue ?? '').toLowerCase().trim();\n if (search === '') {\n return local.groups;\n }\n return local.groups\n .map((group) => {\n const filteredItems = group.items.flatMap((item) => filterGroupItem(item, search));\n if (filteredItems.length > 0) {\n return { ...group, items: filteredItems };\n }\n return false;\n })\n .filter((group): group is MenuComboboxItemGroupData => group !== false);\n });\n\n const emptyProps = (): { searchValue: string } | Record<string, never> =>\n typeof local.searchValue === 'string' ? { searchValue: local.searchValue } : {};\n return (\n <div class={cn('p-1 max-h-64 overflow-y-auto', local.class)}>\n <For each={filteredGroups()}>\n {(group, groupIndex) => <GroupSection group={group} showSeparator={groupIndex() > 0} />}\n </For>\n {filteredGroups().length === 0 && <MenuComboboxEmpty {...emptyProps()} />}\n </div>\n );\n};\n"],"names":["hasShortcut","shortcut","matchesSearch","item","search","label","toLowerCase","includes","value","renderRadioItems","items","_$createComponent","For","each","children","radioItem","MenuComboboxRadioItem","disabled","renderGroupedItem","type","MenuComboboxSeparator","MenuComboboxCheckboxItem","checked","MenuComboboxRadioItemGroup","MenuComboboxItem","_$memo","MenuComboboxShortcut","filterGroupItem","filteredRadioItems","filter","length","GroupItems","props","GroupSection","showSeparator","MenuComboboxItemGroup","MenuComboboxItemGroupLabel","group","MenuComboboxList","local","splitProps","filteredItems","createMemo","searchValue","trim","emptyProps","_el$","_tmpl$","_$insert","_c$","MenuComboboxEmpty","_$mergeProps","_$effect","_$className","cn","class","MenuComboboxGroupedList","filteredGroups","groups","map","flatMap","_el$2","groupIndex","_c$2"],"mappings":"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"}
@@ -1,81 +1,108 @@
1
- import { createComponent as e, Show as u } from "solid-js/web";
2
- import { Field as d, FieldLabel as a, FieldContent as o, FieldError as s, FieldDescription as g } from "../Field.js";
3
- import { NumberInput as m, NumberInputControl as h, NumberInputInput as p, NumberInputTriggers as c } from "../NumberInput.js";
4
- import { useFieldContext as b } from "./context.js";
5
- import { splitProps as f } from "solid-js";
6
- const v = (n) => {
7
- const t = b(), [r, l] = f(n, ["label", "description", "required", "disabled", "readOnly", "showTriggers"]);
8
- return e(d, {
9
- get invalid() {
10
- return t().state.meta.errors.length > 0;
1
+ import { createComponent as r, mergeProps as o, Show as d } from "solid-js/web";
2
+ import { Field as m, FieldLabel as g, FieldContent as c, FieldError as s, FieldDescription as h } from "../Field.js";
3
+ import { NumberInput as b, NumberInputControl as V, NumberInputInput as f, NumberInputTriggers as C } from "../NumberInput.js";
4
+ import { useFieldContext as N } from "./context.js";
5
+ import { splitProps as F, createSignal as I, createEffect as v } from "solid-js";
6
+ const a = (e) => typeof e != "number" || !Number.isFinite(e) ? "" : String(e), B = (e) => {
7
+ const [u, t] = I(a(e().state.value));
8
+ return v(() => {
9
+ t(a(e().state.value));
10
+ }), {
11
+ inputValue: u,
12
+ onValueChange: (l) => {
13
+ t(l.value);
11
14
  },
12
- get required() {
13
- return r.required ?? !1;
15
+ onValueCommit: (l) => {
16
+ t(l.value), Number.isFinite(l.valueAsNumber) && e().handleChange(l.valueAsNumber);
14
17
  },
15
- get disabled() {
16
- return r.disabled ?? !1;
17
- },
18
- get readOnly() {
19
- return r.readOnly ?? !1;
20
- },
21
- get children() {
22
- return [e(a, {
23
- get children() {
24
- return r.label;
25
- }
26
- }), e(o, {
27
- get children() {
28
- return [e(m, {
29
- get value() {
30
- return String(t().state.value);
31
- },
32
- onValueChange: (i) => {
33
- t().handleChange(i.valueAsNumber);
34
- },
35
- onBlur: () => {
36
- t().handleBlur();
37
- },
38
- get invalid() {
39
- return t().state.meta.errors.length > 0;
40
- },
41
- get disabled() {
42
- return r.disabled ?? !1;
43
- },
44
- get readOnly() {
45
- return r.readOnly ?? !1;
46
- },
47
- get required() {
48
- return r.required ?? !1;
49
- },
50
- get children() {
51
- return e(h, {
52
- get children() {
53
- return [e(p, l), e(u, {
54
- get when() {
55
- return r.showTriggers !== !1;
56
- },
57
- get children() {
58
- return e(c, {});
59
- }
60
- })];
61
- }
62
- });
63
- }
64
- }), e(s, {
65
- get errors() {
66
- return t().state.meta.errors;
67
- }
68
- }), e(g, {
69
- get children() {
70
- return r.description;
71
- }
72
- })];
73
- }
74
- })];
18
+ onBlur: () => {
19
+ t(a(e().state.value)), e().handleBlur();
75
20
  }
21
+ };
22
+ }, y = (e) => r(m, {
23
+ get invalid() {
24
+ return e.field().state.meta.errors.length > 0;
25
+ },
26
+ get required() {
27
+ return e.local.required ?? !1;
28
+ },
29
+ get disabled() {
30
+ return e.local.disabled ?? !1;
31
+ },
32
+ get readOnly() {
33
+ return e.local.readOnly ?? !1;
34
+ },
35
+ get children() {
36
+ return [r(g, {
37
+ get children() {
38
+ return e.local.label;
39
+ }
40
+ }), r(c, {
41
+ get children() {
42
+ return [r(b, {
43
+ get value() {
44
+ return e.inputValue();
45
+ },
46
+ get onValueChange() {
47
+ return e.onValueChange;
48
+ },
49
+ get onValueCommit() {
50
+ return e.onValueCommit;
51
+ },
52
+ get onBlur() {
53
+ return e.onBlur;
54
+ },
55
+ get invalid() {
56
+ return e.field().state.meta.errors.length > 0;
57
+ },
58
+ get disabled() {
59
+ return e.local.disabled ?? !1;
60
+ },
61
+ get readOnly() {
62
+ return e.local.readOnly ?? !1;
63
+ },
64
+ get required() {
65
+ return e.local.required ?? !1;
66
+ },
67
+ get children() {
68
+ return r(V, {
69
+ get children() {
70
+ return [r(f, o(() => e.others)), r(d, {
71
+ get when() {
72
+ return e.local.showTriggers !== !1;
73
+ },
74
+ get children() {
75
+ return r(C, {});
76
+ }
77
+ })];
78
+ }
79
+ });
80
+ }
81
+ }), r(s, {
82
+ get errors() {
83
+ return e.field().state.meta.errors;
84
+ }
85
+ }), r(h, {
86
+ get children() {
87
+ return e.local.description;
88
+ }
89
+ })];
90
+ }
91
+ })];
92
+ }
93
+ }), A = (e) => {
94
+ const u = N(), [t, i] = F(e, ["label", "description", "required", "disabled", "readOnly", "showTriggers"]), n = B(u);
95
+ return y({
96
+ field: u,
97
+ local: t,
98
+ others: i,
99
+ inputValue: n.inputValue,
100
+ onValueChange: n.onValueChange,
101
+ onValueCommit: n.onValueCommit,
102
+ onBlur: n.onBlur
76
103
  });
77
104
  };
78
105
  export {
79
- v as NumberInputField
106
+ A as NumberInputField
80
107
  };
81
108
  //# sourceMappingURL=NumberInputField.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NumberInputField.js","sources":["../../../src/components/form/NumberInputField.tsx"],"sourcesContent":["import type { Component, ComponentProps } from 'solid-js';\n\nimport { Field, FieldLabel, FieldContent, FieldError, FieldDescription } from '@/components/Field';\nimport {\n NumberInput,\n NumberInputControl,\n NumberInputInput,\n NumberInputTriggers,\n} from '@/components/NumberInput';\n\nimport { useFieldContext } from './context';\n\nexport type NumberInputFieldProps = ComponentProps<typeof NumberInputInput> & {\n label?: string;\n description?: string;\n showTriggers?: boolean;\n};\n\nexport const NumberInputField: Component<NumberInputFieldProps> = (props) => {\n const field = useFieldContext<number>();\n const [local, others] = splitProps(props, [\n 'label',\n 'description',\n 'required',\n 'disabled',\n 'readOnly',\n 'showTriggers',\n ]);\n\n return (\n <Field\n invalid={field().state.meta.errors.length > 0}\n required={local.required ?? false}\n disabled={local.disabled ?? false}\n readOnly={local.readOnly ?? false}\n >\n <FieldLabel>{local.label}</FieldLabel>\n <FieldContent>\n <NumberInput\n value={String(field().state.value)}\n onValueChange={(details) => {\n field().handleChange(details.valueAsNumber);\n }}\n onBlur={() => {\n field().handleBlur();\n }}\n invalid={field().state.meta.errors.length > 0}\n disabled={local.disabled ?? false}\n readOnly={local.readOnly ?? false}\n required={local.required ?? false}\n >\n <NumberInputControl>\n <NumberInputInput {...others} />\n <Show when={local.showTriggers !== false}>\n <NumberInputTriggers />\n </Show>\n </NumberInputControl>\n </NumberInput>\n <FieldError errors={field().state.meta.errors} />\n <FieldDescription>{local.description}</FieldDescription>\n </FieldContent>\n </Field>\n );\n};\n"],"names":["NumberInputField","props","field","useFieldContext","local","others","splitProps","_$createComponent","Field","invalid","state","meta","errors","length","required","disabled","readOnly","children","FieldLabel","label","FieldContent","NumberInput","value","String","onValueChange","details","handleChange","valueAsNumber","onBlur","handleBlur","NumberInputControl","NumberInputInput","_$Show","when","showTriggers","NumberInputTriggers","FieldError","FieldDescription","description"],"mappings":";;;;;AAkBO,MAAMA,IAAsDC,CAAAA,MAAU;AAC3E,QAAMC,IAAQC,EAAAA,GACR,CAACC,GAAOC,CAAM,IAAIC,EAAWL,GAAO,CACxC,SACA,eACA,YACA,YACA,YACA,cAAc,CACf;AAED,SAAAM,EACGC,GAAK;AAAA,IAAA,IACJC,UAAO;AAAA,aAAEP,EAAAA,EAAQQ,MAAMC,KAAKC,OAAOC,SAAS;AAAA,IAAC;AAAA,IAAA,IAC7CC,WAAQ;AAAA,aAAEV,EAAMU,YAAY;AAAA,IAAK;AAAA,IAAA,IACjCC,WAAQ;AAAA,aAAEX,EAAMW,YAAY;AAAA,IAAK;AAAA,IAAA,IACjCC,WAAQ;AAAA,aAAEZ,EAAMY,YAAY;AAAA,IAAK;AAAA,IAAA,IAAAC,WAAA;AAAA,aAAA,CAAAV,EAEhCW,GAAU;AAAA,QAAA,IAAAD,WAAA;AAAA,iBAAEb,EAAMe;AAAAA,QAAK;AAAA,MAAA,CAAA,GAAAZ,EACvBa,GAAY;AAAA,QAAA,IAAAH,WAAA;AAAA,iBAAA,CAAAV,EACVc,GAAW;AAAA,YAAA,IACVC,QAAK;AAAA,qBAAEC,OAAOrB,IAAQQ,MAAMY,KAAK;AAAA,YAAC;AAAA,YAClCE,eAAgBC,CAAAA,MAAY;AAC1BvB,cAAAA,IAAQwB,aAAaD,EAAQE,aAAa;AAAA,YAC5C;AAAA,YACAC,QAAQA,MAAM;AACZ1B,cAAAA,EAAAA,EAAQ2B,WAAAA;AAAAA,YACV;AAAA,YAAC,IACDpB,UAAO;AAAA,qBAAEP,EAAAA,EAAQQ,MAAMC,KAAKC,OAAOC,SAAS;AAAA,YAAC;AAAA,YAAA,IAC7CE,WAAQ;AAAA,qBAAEX,EAAMW,YAAY;AAAA,YAAK;AAAA,YAAA,IACjCC,WAAQ;AAAA,qBAAEZ,EAAMY,YAAY;AAAA,YAAK;AAAA,YAAA,IACjCF,WAAQ;AAAA,qBAAEV,EAAMU,YAAY;AAAA,YAAK;AAAA,YAAA,IAAAG,WAAA;AAAA,qBAAAV,EAEhCuB,GAAkB;AAAA,gBAAA,IAAAb,WAAA;AAAA,yBAAA,CAAAV,EAChBwB,GAAqB1B,CAAM,GAAAE,EAC3ByB,GAAI;AAAA,oBAAA,IAACC,OAAI;AAAA,6BAAE7B,EAAM8B,iBAAiB;AAAA,oBAAK;AAAA,oBAAA,IAAAjB,WAAA;AAAA,6BAAAV,EACrC4B,GAAmB,EAAA;AAAA,oBAAA;AAAA,kBAAA,CAAA,CAAA;AAAA,gBAAA;AAAA,cAAA,CAAA;AAAA,YAAA;AAAA,UAAA,CAAA,GAAA5B,EAIzB6B,GAAU;AAAA,YAAA,IAACxB,SAAM;AAAA,qBAAEV,EAAAA,EAAQQ,MAAMC,KAAKC;AAAAA,YAAM;AAAA,UAAA,CAAA,GAAAL,EAC5C8B,GAAgB;AAAA,YAAA,IAAApB,WAAA;AAAA,qBAAEb,EAAMkC;AAAAA,YAAW;AAAA,UAAA,CAAA,CAAA;AAAA,QAAA;AAAA,MAAA,CAAA,CAAA;AAAA,IAAA;AAAA,EAAA,CAAA;AAI5C;"}
1
+ {"version":3,"file":"NumberInputField.js","sources":["../../../src/components/form/NumberInputField.tsx"],"sourcesContent":["import type { Component, ComponentProps, JSX } from 'solid-js';\n\nimport { Field, FieldLabel, FieldContent, FieldError, FieldDescription } from '@/components/Field';\nimport {\n NumberInput,\n NumberInputControl,\n NumberInputInput,\n NumberInputTriggers,\n} from '@/components/NumberInput';\n\nimport { useFieldContext } from './context';\n\nexport type NumberInputFieldProps = ComponentProps<typeof NumberInputInput> & {\n label?: string;\n description?: string;\n showTriggers?: boolean;\n};\n\nconst toNumberInputValue = (value: number | undefined): string => {\n if (typeof value !== 'number' || !Number.isFinite(value)) {\n return '';\n }\n\n return String(value);\n};\n\ntype NumberInputFieldLocalProps = Pick<\n NumberInputFieldProps,\n 'label' | 'description' | 'required' | 'disabled' | 'readOnly' | 'showTriggers'\n>;\n\ntype RenderNumberInputFieldProps = {\n field: ReturnType<typeof useFieldContext<number>>;\n local: NumberInputFieldLocalProps;\n others: Omit<NumberInputFieldProps, keyof NumberInputFieldLocalProps>;\n inputValue: () => string;\n onValueChange: NonNullable<ComponentProps<typeof NumberInput>['onValueChange']>;\n onValueCommit: NonNullable<ComponentProps<typeof NumberInput>['onValueCommit']>;\n onBlur: () => void;\n};\n\ntype NumberInputFieldState = Pick<\n RenderNumberInputFieldProps,\n 'inputValue' | 'onValueChange' | 'onValueCommit' | 'onBlur'\n>;\n\nconst createNumberInputFieldState = (\n field: ReturnType<typeof useFieldContext<number>>,\n): NumberInputFieldState => {\n const [inputValue, setInputValue] = createSignal(toNumberInputValue(field().state.value));\n\n createEffect(() => {\n setInputValue(toNumberInputValue(field().state.value));\n });\n\n const onValueChange: NonNullable<ComponentProps<typeof NumberInput>['onValueChange']> = (\n details,\n ) => {\n setInputValue(details.value);\n };\n\n const onValueCommit: NonNullable<ComponentProps<typeof NumberInput>['onValueCommit']> = (\n details,\n ) => {\n setInputValue(details.value);\n\n if (!Number.isFinite(details.valueAsNumber)) {\n return;\n }\n\n field().handleChange(details.valueAsNumber);\n };\n\n const onBlur = (): void => {\n setInputValue(toNumberInputValue(field().state.value));\n field().handleBlur();\n };\n\n return {\n inputValue,\n onValueChange,\n onValueCommit,\n onBlur,\n };\n};\n\nconst renderNumberInputField = (props: RenderNumberInputFieldProps): JSX.Element => (\n <Field\n invalid={props.field().state.meta.errors.length > 0}\n required={props.local.required ?? false}\n disabled={props.local.disabled ?? false}\n readOnly={props.local.readOnly ?? false}\n >\n <FieldLabel>{props.local.label}</FieldLabel>\n <FieldContent>\n <NumberInput\n value={props.inputValue()}\n onValueChange={props.onValueChange}\n onValueCommit={props.onValueCommit}\n onBlur={props.onBlur}\n invalid={props.field().state.meta.errors.length > 0}\n disabled={props.local.disabled ?? false}\n readOnly={props.local.readOnly ?? false}\n required={props.local.required ?? false}\n >\n <NumberInputControl>\n <NumberInputInput {...props.others} />\n <Show when={props.local.showTriggers !== false}>\n <NumberInputTriggers />\n </Show>\n </NumberInputControl>\n </NumberInput>\n <FieldError errors={props.field().state.meta.errors} />\n <FieldDescription>{props.local.description}</FieldDescription>\n </FieldContent>\n </Field>\n);\n\nexport const NumberInputField: Component<NumberInputFieldProps> = (props) => {\n const field = useFieldContext<number>();\n const [local, others] = splitProps(props, [\n 'label',\n 'description',\n 'required',\n 'disabled',\n 'readOnly',\n 'showTriggers',\n ]);\n const state = createNumberInputFieldState(field);\n\n return renderNumberInputField({\n field,\n local,\n others,\n inputValue: state.inputValue,\n onValueChange: state.onValueChange,\n onValueCommit: state.onValueCommit,\n onBlur: state.onBlur,\n });\n};\n"],"names":["toNumberInputValue","value","Number","isFinite","String","createNumberInputFieldState","field","inputValue","setInputValue","createSignal","state","createEffect","onValueChange","details","onValueCommit","valueAsNumber","handleChange","onBlur","handleBlur","renderNumberInputField","props","_$createComponent","Field","invalid","meta","errors","length","required","local","disabled","readOnly","children","FieldLabel","label","FieldContent","NumberInput","NumberInputControl","NumberInputInput","_$mergeProps","others","_$Show","when","showTriggers","NumberInputTriggers","FieldError","FieldDescription","description","NumberInputField","useFieldContext","splitProps"],"mappings":"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"}
@@ -1,20 +1,23 @@
1
- import { createComponent as n, mergeProps as s } from "solid-js/web";
1
+ import { createComponent as s, mergeProps as n } from "solid-js/web";
2
2
  import { Button as a } from "../Button.js";
3
- import { useFormContext as m } from "./context.js";
4
- import { splitProps as d } from "solid-js";
5
- const p = (e) => {
6
- const t = m(), [o, r] = d(e, ["children", "loading", "disabled"]), i = () => t.state.isSubmitting || t.state.isValidating || (o.loading ?? !1);
7
- return n(a, s({
3
+ import { useFormContext as l } from "./context.js";
4
+ import { splitProps as m } from "solid-js";
5
+ const p = (r) => {
6
+ const e = l(), [t, o] = m(r, ["children", "loading", "disabled", "class"]), i = () => e.state.isSubmitting || e.state.isValidating || (t.loading ?? !1);
7
+ return s(a, n({
8
8
  type: "submit",
9
9
  get loading() {
10
10
  return i();
11
11
  },
12
12
  get disabled() {
13
- return o.disabled ?? !t.state.canSubmit;
13
+ return t.disabled ?? !e.state.canSubmit;
14
+ },
15
+ get class() {
16
+ return `min-w-24 ${t.class ?? ""}`;
14
17
  }
15
- }, r, {
18
+ }, o, {
16
19
  get children() {
17
- return o.children;
20
+ return t.children;
18
21
  }
19
22
  }));
20
23
  };
@@ -1 +1 @@
1
- {"version":3,"file":"SubmitButton.js","sources":["../../../src/components/form/SubmitButton.tsx"],"sourcesContent":["import type { Component, ComponentProps } from 'solid-js';\n\nimport { Button } from '@/components/Button';\n\nimport { useFormContext } from './context';\n\nexport type SubmitButtonProps = ComponentProps<typeof Button> & {\n loading?: boolean;\n};\n\nexport const SubmitButton: Component<SubmitButtonProps> = (props) => {\n const form = useFormContext();\n const [local, others] = splitProps(props, ['children', 'loading', 'disabled']);\n\n const isLoading = (): boolean =>\n form.state.isSubmitting || form.state.isValidating || (local.loading ?? false);\n\n return (\n <Button\n type='submit'\n loading={isLoading()}\n disabled={local.disabled ?? !form.state.canSubmit}\n {...others}\n >\n {local.children}\n </Button>\n );\n};\n"],"names":["SubmitButton","props","form","useFormContext","local","others","splitProps","isLoading","state","isSubmitting","isValidating","loading","_$createComponent","Button","_$mergeProps","type","disabled","canSubmit","children"],"mappings":";;;;AAUO,MAAMA,IAA8CC,CAAAA,MAAU;AACnE,QAAMC,IAAOC,EAAAA,GACP,CAACC,GAAOC,CAAM,IAAIC,EAAWL,GAAO,CAAC,YAAY,WAAW,UAAU,CAAC,GAEvEM,IAAYA,MAChBL,EAAKM,MAAMC,gBAAgBP,EAAKM,MAAME,iBAAiBN,EAAMO,WAAW;AAE1E,SAAAC,EACGC,GAAMC,EAAA;AAAA,IACLC,MAAI;AAAA,IAAA,IACJJ,UAAO;AAAA,aAAEJ,EAAAA;AAAAA,IAAW;AAAA,IAAA,IACpBS,WAAQ;AAAA,aAAEZ,EAAMY,YAAY,CAACd,EAAKM,MAAMS;AAAAA,IAAS;AAAA,EAAA,GAC7CZ,GAAM;AAAA,IAAA,IAAAa,WAAA;AAAA,aAETd,EAAMc;AAAAA,IAAQ;AAAA,EAAA,CAAA,CAAA;AAGrB;"}
1
+ {"version":3,"file":"SubmitButton.js","sources":["../../../src/components/form/SubmitButton.tsx"],"sourcesContent":["import type { Component, ComponentProps } from 'solid-js';\n\nimport { Button } from '@/components/Button';\n\nimport { useFormContext } from './context';\n\nexport type SubmitButtonProps = ComponentProps<typeof Button> & {\n loading?: boolean;\n};\n\nexport const SubmitButton: Component<SubmitButtonProps> = (props) => {\n const form = useFormContext();\n const [local, others] = splitProps(props, ['children', 'loading', 'disabled', 'class']);\n\n const isLoading = (): boolean =>\n form.state.isSubmitting || form.state.isValidating || (local.loading ?? false);\n\n return (\n <Button\n type='submit'\n loading={isLoading()}\n disabled={local.disabled ?? !form.state.canSubmit}\n class={`min-w-24 ${local.class ?? ''}`}\n {...others}\n >\n {local.children}\n </Button>\n );\n};\n"],"names":["SubmitButton","props","form","useFormContext","local","others","splitProps","isLoading","state","isSubmitting","isValidating","loading","_$createComponent","Button","_$mergeProps","type","disabled","canSubmit","class","children"],"mappings":";;;;AAUO,MAAMA,IAA8CC,CAAAA,MAAU;AACnE,QAAMC,IAAOC,EAAAA,GACP,CAACC,GAAOC,CAAM,IAAIC,EAAWL,GAAO,CAAC,YAAY,WAAW,YAAY,OAAO,CAAC,GAEhFM,IAAYA,MAChBL,EAAKM,MAAMC,gBAAgBP,EAAKM,MAAME,iBAAiBN,EAAMO,WAAW;AAE1E,SAAAC,EACGC,GAAMC,EAAA;AAAA,IACLC,MAAI;AAAA,IAAA,IACJJ,UAAO;AAAA,aAAEJ,EAAAA;AAAAA,IAAW;AAAA,IAAA,IACpBS,WAAQ;AAAA,aAAEZ,EAAMY,YAAY,CAACd,EAAKM,MAAMS;AAAAA,IAAS;AAAA,IAAA,IAAA,QAAA;AAAA,aAC1C,YAAYb,EAAMc,SAAS,EAAE;AAAA,IAAE;AAAA,EAAA,GAClCb,GAAM;AAAA,IAAA,IAAAc,WAAA;AAAA,aAETf,EAAMe;AAAAA,IAAQ;AAAA,EAAA,CAAA,CAAA;AAGrB;"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package",
3
3
  "name": "@manafishrov/ui",
4
- "version": "1.3.0",
4
+ "version": "1.3.2",
5
5
  "description": "Styled component library for Manafish interfaces ",
6
6
  "license": "AGPL-3.0-or-later",
7
7
  "repository": {
@@ -290,7 +290,7 @@ export const DatePickerViews: Component = () => [
290
290
  <DatePickerMonthView />,
291
291
  <DatePickerYearView />,
292
292
  ];
293
- export const Calendar: Component<DatePickerPrimitive.RootProps> = (props) => (
293
+ export const DatePickerCalendar: Component<DatePickerPrimitive.RootProps> = (props) => (
294
294
  <DatePicker {...props} inline unmountOnExit={false}>
295
295
  <DatePickerContent class='border-none shadow-none ring-0'>
296
296
  <DatePickerViews />
@@ -16,7 +16,7 @@ import { Separator } from '@/components/Separator';
16
16
  export { useFieldset } from '@ark-ui/solid/fieldset';
17
17
  export const FieldContext = PrimitiveField.Context;
18
18
 
19
- export const FieldSet: Component<PrimitiveFieldset.RootProps> = (props) => {
19
+ export const Fieldset: Component<PrimitiveFieldset.RootProps> = (props) => {
20
20
  const [local, others] = splitProps(props, ['class', 'children']);
21
21
  return (
22
22
  <PrimitiveFieldset.Root
@@ -178,13 +178,13 @@ export const MenuComboboxEmpty: Component<MenuComboboxEmptyProps> = (props) => {
178
178
  );
179
179
  };
180
180
  export type {
181
- MenuCheckboxItemData,
181
+ MenuComboboxCheckboxItemData,
182
+ MenuComboboxItemData,
183
+ MenuComboboxItemGroupData,
184
+ MenuComboboxRadioItemGroupData,
185
+ MenuComboboxRadioItemData,
186
+ MenuComboboxSeparatorData,
182
187
  MenuComboboxGroupedListProps,
183
188
  MenuComboboxListProps,
184
- MenuItemData,
185
- MenuItemGroupData,
186
- MenuRadioGroupData,
187
- MenuRadioItemData,
188
- MenuSeparatorData,
189
189
  } from './MenuComboboxList';
190
190
  export { MenuComboboxGroupedList, MenuComboboxList } from './MenuComboboxList';
@@ -13,36 +13,60 @@ import {
13
13
  MenuComboboxShortcut,
14
14
  } from '@/components/MenuCombobox';
15
15
 
16
- export type MenuItemData = { value: string; label: string; disabled?: boolean; shortcut?: string };
17
- export type MenuCheckboxItemData = {
16
+ export type MenuComboboxItemData = {
17
+ value: string;
18
+ label: string;
19
+ disabled?: boolean;
20
+ shortcut?: string;
21
+ };
22
+ export type MenuComboboxCheckboxItemData = {
18
23
  type: 'checkbox';
19
24
  value: string;
20
25
  label: string;
21
26
  checked?: boolean;
22
27
  disabled?: boolean;
23
28
  };
24
- export type MenuRadioItemData = { type: 'radio'; value: string; label: string; disabled?: boolean };
25
- export type MenuRadioGroupData = { type: 'radio-group'; value: string; items: MenuRadioItemData[] };
26
- export type MenuSeparatorData = { type: 'separator' };
27
- export type MenuItemGroupData = {
29
+ export type MenuComboboxRadioItemData = {
30
+ type: 'radio';
31
+ value: string;
32
+ label: string;
33
+ disabled?: boolean;
34
+ };
35
+ export type MenuComboboxRadioItemGroupData = {
36
+ type: 'radio-group';
37
+ value: string;
38
+ items: MenuComboboxRadioItemData[];
39
+ };
40
+ export type MenuComboboxSeparatorData = { type: 'separator' };
41
+ export type MenuComboboxItemGroupData = {
28
42
  label: string;
29
- items: (MenuItemData | MenuCheckboxItemData | MenuRadioGroupData | MenuSeparatorData)[];
43
+ items: (
44
+ | MenuComboboxItemData
45
+ | MenuComboboxCheckboxItemData
46
+ | MenuComboboxRadioItemGroupData
47
+ | MenuComboboxSeparatorData
48
+ )[];
49
+ };
50
+
51
+ export type MenuComboboxListProps = {
52
+ items: MenuComboboxItemData[];
53
+ searchValue?: string;
54
+ class?: string;
30
55
  };
31
- export type MenuComboboxListProps = { items: MenuItemData[]; searchValue?: string; class?: string };
32
56
  export type MenuComboboxGroupedListProps = {
33
- groups: MenuItemGroupData[];
57
+ groups: MenuComboboxItemGroupData[];
34
58
  searchValue?: string;
35
59
  class?: string;
36
60
  };
37
61
 
38
62
  const hasShortcut = (shortcut?: string): boolean => typeof shortcut === 'string' && shortcut !== '';
39
63
  const matchesSearch = (
40
- item: MenuItemData | MenuCheckboxItemData | MenuRadioItemData,
64
+ item: MenuComboboxItemData | MenuComboboxCheckboxItemData | MenuComboboxRadioItemData,
41
65
  search: string,
42
66
  ): boolean =>
43
67
  item.label.toLowerCase().includes(search) || item.value.toLowerCase().includes(search);
44
68
 
45
- const renderRadioItems = (items: MenuRadioItemData[]): JSXElement => (
69
+ const renderRadioItems = (items: MenuComboboxRadioItemData[]): JSXElement => (
46
70
  <For each={items}>
47
71
  {(radioItem) => (
48
72
  <MenuComboboxRadioItem value={radioItem.value} disabled={radioItem.disabled}>
@@ -53,7 +77,11 @@ const renderRadioItems = (items: MenuRadioItemData[]): JSXElement => (
53
77
  );
54
78
 
55
79
  const renderGroupedItem = (
56
- item: MenuItemData | MenuCheckboxItemData | MenuRadioGroupData | MenuSeparatorData,
80
+ item:
81
+ | MenuComboboxItemData
82
+ | MenuComboboxCheckboxItemData
83
+ | MenuComboboxRadioItemGroupData
84
+ | MenuComboboxSeparatorData,
57
85
  ): JSXElement => {
58
86
  if (!('type' in item)) {
59
87
  return (
@@ -88,13 +116,17 @@ const renderGroupedItem = (
88
116
  };
89
117
 
90
118
  type GroupFilterResult =
91
- | MenuItemData
92
- | MenuCheckboxItemData
93
- | MenuRadioGroupData
94
- | MenuSeparatorData;
119
+ | MenuComboboxItemData
120
+ | MenuComboboxCheckboxItemData
121
+ | MenuComboboxRadioItemGroupData
122
+ | MenuComboboxSeparatorData;
95
123
 
96
124
  const filterGroupItem = (
97
- item: MenuItemData | MenuCheckboxItemData | MenuRadioGroupData | MenuSeparatorData,
125
+ item:
126
+ | MenuComboboxItemData
127
+ | MenuComboboxCheckboxItemData
128
+ | MenuComboboxRadioItemGroupData
129
+ | MenuComboboxSeparatorData,
98
130
  search: string,
99
131
  ): GroupFilterResult[] => {
100
132
  if (!('type' in item)) {
@@ -110,11 +142,13 @@ const filterGroupItem = (
110
142
  return filteredRadioItems.length > 0 ? [{ ...item, items: filteredRadioItems }] : [];
111
143
  };
112
144
 
113
- const GroupItems: Component<{ items: MenuItemGroupData['items'] }> = (props) => (
145
+ const GroupItems: Component<{ items: MenuComboboxItemGroupData['items'] }> = (props) => (
114
146
  <For each={props.items}>{(item) => renderGroupedItem(item)}</For>
115
147
  );
116
148
 
117
- const GroupSection: Component<{ group: MenuItemGroupData; showSeparator: boolean }> = (props) => (
149
+ const GroupSection: Component<{ group: MenuComboboxItemGroupData; showSeparator: boolean }> = (
150
+ props,
151
+ ) => (
118
152
  <>
119
153
  {props.showSeparator && <MenuComboboxSeparator />}
120
154
  <MenuComboboxItemGroup>
@@ -169,7 +203,7 @@ export const MenuComboboxGroupedList: Component<MenuComboboxGroupedListProps> =
169
203
  }
170
204
  return false;
171
205
  })
172
- .filter((group): group is MenuItemGroupData => group !== false);
206
+ .filter((group): group is MenuComboboxItemGroupData => group !== false);
173
207
  });
174
208
 
175
209
  const emptyProps = (): { searchValue: string } | Record<string, never> =>
@@ -1,4 +1,4 @@
1
- import type { Component, ComponentProps } from 'solid-js';
1
+ import type { Component, ComponentProps, JSX } from 'solid-js';
2
2
 
3
3
  import { Field, FieldLabel, FieldContent, FieldError, FieldDescription } from '@/components/Field';
4
4
  import {
@@ -16,6 +16,106 @@ export type NumberInputFieldProps = ComponentProps<typeof NumberInputInput> & {
16
16
  showTriggers?: boolean;
17
17
  };
18
18
 
19
+ const toNumberInputValue = (value: number | undefined): string => {
20
+ if (typeof value !== 'number' || !Number.isFinite(value)) {
21
+ return '';
22
+ }
23
+
24
+ return String(value);
25
+ };
26
+
27
+ type NumberInputFieldLocalProps = Pick<
28
+ NumberInputFieldProps,
29
+ 'label' | 'description' | 'required' | 'disabled' | 'readOnly' | 'showTriggers'
30
+ >;
31
+
32
+ type RenderNumberInputFieldProps = {
33
+ field: ReturnType<typeof useFieldContext<number>>;
34
+ local: NumberInputFieldLocalProps;
35
+ others: Omit<NumberInputFieldProps, keyof NumberInputFieldLocalProps>;
36
+ inputValue: () => string;
37
+ onValueChange: NonNullable<ComponentProps<typeof NumberInput>['onValueChange']>;
38
+ onValueCommit: NonNullable<ComponentProps<typeof NumberInput>['onValueCommit']>;
39
+ onBlur: () => void;
40
+ };
41
+
42
+ type NumberInputFieldState = Pick<
43
+ RenderNumberInputFieldProps,
44
+ 'inputValue' | 'onValueChange' | 'onValueCommit' | 'onBlur'
45
+ >;
46
+
47
+ const createNumberInputFieldState = (
48
+ field: ReturnType<typeof useFieldContext<number>>,
49
+ ): NumberInputFieldState => {
50
+ const [inputValue, setInputValue] = createSignal(toNumberInputValue(field().state.value));
51
+
52
+ createEffect(() => {
53
+ setInputValue(toNumberInputValue(field().state.value));
54
+ });
55
+
56
+ const onValueChange: NonNullable<ComponentProps<typeof NumberInput>['onValueChange']> = (
57
+ details,
58
+ ) => {
59
+ setInputValue(details.value);
60
+ };
61
+
62
+ const onValueCommit: NonNullable<ComponentProps<typeof NumberInput>['onValueCommit']> = (
63
+ details,
64
+ ) => {
65
+ setInputValue(details.value);
66
+
67
+ if (!Number.isFinite(details.valueAsNumber)) {
68
+ return;
69
+ }
70
+
71
+ field().handleChange(details.valueAsNumber);
72
+ };
73
+
74
+ const onBlur = (): void => {
75
+ setInputValue(toNumberInputValue(field().state.value));
76
+ field().handleBlur();
77
+ };
78
+
79
+ return {
80
+ inputValue,
81
+ onValueChange,
82
+ onValueCommit,
83
+ onBlur,
84
+ };
85
+ };
86
+
87
+ const renderNumberInputField = (props: RenderNumberInputFieldProps): JSX.Element => (
88
+ <Field
89
+ invalid={props.field().state.meta.errors.length > 0}
90
+ required={props.local.required ?? false}
91
+ disabled={props.local.disabled ?? false}
92
+ readOnly={props.local.readOnly ?? false}
93
+ >
94
+ <FieldLabel>{props.local.label}</FieldLabel>
95
+ <FieldContent>
96
+ <NumberInput
97
+ value={props.inputValue()}
98
+ onValueChange={props.onValueChange}
99
+ onValueCommit={props.onValueCommit}
100
+ onBlur={props.onBlur}
101
+ invalid={props.field().state.meta.errors.length > 0}
102
+ disabled={props.local.disabled ?? false}
103
+ readOnly={props.local.readOnly ?? false}
104
+ required={props.local.required ?? false}
105
+ >
106
+ <NumberInputControl>
107
+ <NumberInputInput {...props.others} />
108
+ <Show when={props.local.showTriggers !== false}>
109
+ <NumberInputTriggers />
110
+ </Show>
111
+ </NumberInputControl>
112
+ </NumberInput>
113
+ <FieldError errors={props.field().state.meta.errors} />
114
+ <FieldDescription>{props.local.description}</FieldDescription>
115
+ </FieldContent>
116
+ </Field>
117
+ );
118
+
19
119
  export const NumberInputField: Component<NumberInputFieldProps> = (props) => {
20
120
  const field = useFieldContext<number>();
21
121
  const [local, others] = splitProps(props, [
@@ -26,39 +126,15 @@ export const NumberInputField: Component<NumberInputFieldProps> = (props) => {
26
126
  'readOnly',
27
127
  'showTriggers',
28
128
  ]);
129
+ const state = createNumberInputFieldState(field);
29
130
 
30
- return (
31
- <Field
32
- invalid={field().state.meta.errors.length > 0}
33
- required={local.required ?? false}
34
- disabled={local.disabled ?? false}
35
- readOnly={local.readOnly ?? false}
36
- >
37
- <FieldLabel>{local.label}</FieldLabel>
38
- <FieldContent>
39
- <NumberInput
40
- value={String(field().state.value)}
41
- onValueChange={(details) => {
42
- field().handleChange(details.valueAsNumber);
43
- }}
44
- onBlur={() => {
45
- field().handleBlur();
46
- }}
47
- invalid={field().state.meta.errors.length > 0}
48
- disabled={local.disabled ?? false}
49
- readOnly={local.readOnly ?? false}
50
- required={local.required ?? false}
51
- >
52
- <NumberInputControl>
53
- <NumberInputInput {...others} />
54
- <Show when={local.showTriggers !== false}>
55
- <NumberInputTriggers />
56
- </Show>
57
- </NumberInputControl>
58
- </NumberInput>
59
- <FieldError errors={field().state.meta.errors} />
60
- <FieldDescription>{local.description}</FieldDescription>
61
- </FieldContent>
62
- </Field>
63
- );
131
+ return renderNumberInputField({
132
+ field,
133
+ local,
134
+ others,
135
+ inputValue: state.inputValue,
136
+ onValueChange: state.onValueChange,
137
+ onValueCommit: state.onValueCommit,
138
+ onBlur: state.onBlur,
139
+ });
64
140
  };
@@ -10,7 +10,7 @@ export type SubmitButtonProps = ComponentProps<typeof Button> & {
10
10
 
11
11
  export const SubmitButton: Component<SubmitButtonProps> = (props) => {
12
12
  const form = useFormContext();
13
- const [local, others] = splitProps(props, ['children', 'loading', 'disabled']);
13
+ const [local, others] = splitProps(props, ['children', 'loading', 'disabled', 'class']);
14
14
 
15
15
  const isLoading = (): boolean =>
16
16
  form.state.isSubmitting || form.state.isValidating || (local.loading ?? false);
@@ -20,6 +20,7 @@ export const SubmitButton: Component<SubmitButtonProps> = (props) => {
20
20
  type='submit'
21
21
  loading={isLoading()}
22
22
  disabled={local.disabled ?? !form.state.canSubmit}
23
+ class={`min-w-24 ${local.class ?? ''}`}
23
24
  {...others}
24
25
  >
25
26
  {local.children}