@uselets/ui 2.0.1 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -0
- package/dist/{as-child-Dxg3Xo1G.d.ts → as-child-T9W73ZYU.d.ts} +1 -3
- package/dist/{chart-B_6nC_ih.d.ts → chart-8rgtsk95.d.ts} +1 -3
- package/dist/checkbox-group-context-HDVxTNPi.js +2 -0
- package/dist/checkbox-group-context-HDVxTNPi.js.map +1 -0
- package/dist/cli/uselets.mjs.map +1 -1
- package/dist/combobox-styles-CZ0aJayc.js +2 -0
- package/dist/combobox-styles-CZ0aJayc.js.map +1 -0
- package/dist/components/accordion.d.ts +1 -3
- package/dist/components/accordion.js.map +1 -1
- package/dist/components/alert-dialog.d.ts +1 -3
- package/dist/components/alert-dialog.js.map +1 -1
- package/dist/components/alert.d.ts +0 -2
- package/dist/components/alert.js.map +1 -1
- package/dist/components/anchor.d.ts +1 -3
- package/dist/components/anchor.js.map +1 -1
- package/dist/components/area-chart.d.ts +1 -3
- package/dist/components/area-chart.js.map +1 -1
- package/dist/components/autocomplete.d.ts +46 -0
- package/dist/components/autocomplete.js +2 -0
- package/dist/components/autocomplete.js.map +1 -0
- package/dist/components/avatar.d.ts +1 -3
- package/dist/components/avatar.js.map +1 -1
- package/dist/components/badge.d.ts +1 -3
- package/dist/components/badge.js +1 -1
- package/dist/components/badge.js.map +1 -1
- package/dist/components/bar-chart.d.ts +1 -3
- package/dist/components/bar-chart.js.map +1 -1
- package/dist/components/bottom-nav.d.ts +1 -3
- package/dist/components/bottom-nav.js.map +1 -1
- package/dist/components/breadcrumb.d.ts +1 -3
- package/dist/components/breadcrumb.js.map +1 -1
- package/dist/components/button-group.d.ts +1 -3
- package/dist/components/button-group.js.map +1 -1
- package/dist/components/button.d.ts +1 -3
- package/dist/components/button.js +1 -1
- package/dist/components/button.js.map +1 -1
- package/dist/components/calendar.d.ts +0 -2
- package/dist/components/calendar.js +1 -1
- package/dist/components/calendar.js.map +1 -1
- package/dist/components/card.d.ts +0 -2
- package/dist/components/card.js.map +1 -1
- package/dist/components/carousel.d.ts +0 -2
- package/dist/components/carousel.js.map +1 -1
- package/dist/components/center.d.ts +0 -2
- package/dist/components/center.js.map +1 -1
- package/dist/components/chart.d.ts +1 -1
- package/dist/components/chart.js.map +1 -1
- package/dist/components/checkbox-group.d.ts +19 -0
- package/dist/components/checkbox-group.js +2 -0
- package/dist/components/checkbox-group.js.map +1 -0
- package/dist/components/checkbox.d.ts +2 -4
- package/dist/components/checkbox.js +1 -1
- package/dist/components/checkbox.js.map +1 -1
- package/dist/components/code.d.ts +0 -2
- package/dist/components/code.js.map +1 -1
- package/dist/components/collapsible.d.ts +1 -3
- package/dist/components/collapsible.js.map +1 -1
- package/dist/components/combobox.d.ts +1 -3
- package/dist/components/combobox.js +1 -1
- package/dist/components/combobox.js.map +1 -1
- package/dist/components/command.d.ts +0 -2
- package/dist/components/command.js +1 -1
- package/dist/components/command.js.map +1 -1
- package/dist/components/container.d.ts +0 -2
- package/dist/components/container.js.map +1 -1
- package/dist/components/data-table.d.ts +0 -2
- package/dist/components/data-table.js +1 -1
- package/dist/components/data-table.js.map +1 -1
- package/dist/components/date-range-picker.d.ts +0 -2
- package/dist/components/date-range-picker.js.map +1 -1
- package/dist/components/dialog.d.ts +1 -3
- package/dist/components/dialog.js.map +1 -1
- package/dist/components/direction.d.ts +0 -2
- package/dist/components/donut-chart.d.ts +0 -2
- package/dist/components/donut-chart.js.map +1 -1
- package/dist/components/drawer.d.ts +1 -3
- package/dist/components/drawer.js.map +1 -1
- package/dist/components/dropdown-menu.d.ts +1 -3
- package/dist/components/dropdown-menu.js.map +1 -1
- package/dist/components/dropzone.d.ts +0 -2
- package/dist/components/dropzone.js +1 -1
- package/dist/components/dropzone.js.map +1 -1
- package/dist/components/empty.d.ts +0 -2
- package/dist/components/empty.js.map +1 -1
- package/dist/components/field.d.ts +0 -2
- package/dist/components/field.js +1 -1
- package/dist/components/field.js.map +1 -1
- package/dist/components/flex.d.ts +0 -2
- package/dist/components/flex.js.map +1 -1
- package/dist/components/grid.d.ts +0 -2
- package/dist/components/grid.js.map +1 -1
- package/dist/components/group.d.ts +0 -2
- package/dist/components/group.js.map +1 -1
- package/dist/components/heading.d.ts +1 -3
- package/dist/components/heading.js.map +1 -1
- package/dist/components/hover-card.d.ts +1 -3
- package/dist/components/hover-card.js.map +1 -1
- package/dist/components/input-group.d.ts +0 -2
- package/dist/components/input-group.js.map +1 -1
- package/dist/components/input-otp.d.ts +0 -2
- package/dist/components/input-otp.js.map +1 -1
- package/dist/components/input.d.ts +0 -2
- package/dist/components/input.js.map +1 -1
- package/dist/components/kbd.d.ts +0 -2
- package/dist/components/kbd.js.map +1 -1
- package/dist/components/label.d.ts +1 -3
- package/dist/components/label.js.map +1 -1
- package/dist/components/list.d.ts +1 -3
- package/dist/components/list.js.map +1 -1
- package/dist/components/logo.d.ts +0 -2
- package/dist/components/marker.d.ts +1 -3
- package/dist/components/marker.js.map +1 -1
- package/dist/components/mask-input.d.ts +1 -3
- package/dist/components/mask-input.js +1 -1
- package/dist/components/mask-input.js.map +1 -1
- package/dist/components/meter.d.ts +21 -0
- package/dist/components/meter.js +2 -0
- package/dist/components/meter.js.map +1 -0
- package/dist/components/native-select.d.ts +0 -2
- package/dist/components/native-select.js.map +1 -1
- package/dist/components/navigation-menu.d.ts +1 -3
- package/dist/components/navigation-menu.js.map +1 -1
- package/dist/components/number-field.d.ts +1 -3
- package/dist/components/number-field.js +1 -1
- package/dist/components/number-field.js.map +1 -1
- package/dist/components/pagination.d.ts +0 -2
- package/dist/components/pagination.js.map +1 -1
- package/dist/components/phone-input.d.ts +0 -2
- package/dist/components/phone-input.js +1 -1
- package/dist/components/phone-input.js.map +1 -1
- package/dist/components/pie-chart.d.ts +1 -3
- package/dist/components/pie-chart.js.map +1 -1
- package/dist/components/popover.d.ts +1 -3
- package/dist/components/popover.js.map +1 -1
- package/dist/components/progress.d.ts +0 -2
- package/dist/components/progress.js +1 -1
- package/dist/components/progress.js.map +1 -1
- package/dist/components/radio-group.d.ts +0 -2
- package/dist/components/radio-group.js +1 -1
- package/dist/components/radio-group.js.map +1 -1
- package/dist/components/resizable.d.ts +0 -2
- package/dist/components/resizable.js.map +1 -1
- package/dist/components/ring-progress.d.ts +0 -2
- package/dist/components/ring-progress.js +1 -1
- package/dist/components/ring-progress.js.map +1 -1
- package/dist/components/scroll-area.d.ts +0 -2
- package/dist/components/scroll-area.js.map +1 -1
- package/dist/components/select.d.ts +1 -3
- package/dist/components/select.js.map +1 -1
- package/dist/components/separator.d.ts +1 -3
- package/dist/components/separator.js.map +1 -1
- package/dist/components/sidebar.d.ts +2 -4
- package/dist/components/sidebar.js +1 -1
- package/dist/components/sidebar.js.map +1 -1
- package/dist/components/simple-grid.d.ts +0 -2
- package/dist/components/simple-grid.js.map +1 -1
- package/dist/components/skeleton.d.ts +0 -2
- package/dist/components/skeleton.js.map +1 -1
- package/dist/components/slider.d.ts +0 -2
- package/dist/components/slider.js.map +1 -1
- package/dist/components/sonner.d.ts +0 -2
- package/dist/components/sonner.js.map +1 -1
- package/dist/components/spinner.d.ts +0 -2
- package/dist/components/spinner.js.map +1 -1
- package/dist/components/stack.d.ts +0 -2
- package/dist/components/stack.js.map +1 -1
- package/dist/components/stepper.d.ts +1 -3
- package/dist/components/stepper.js +1 -1
- package/dist/components/stepper.js.map +1 -1
- package/dist/components/switch.d.ts +0 -2
- package/dist/components/switch.js +1 -1
- package/dist/components/switch.js.map +1 -1
- package/dist/components/table.d.ts +0 -2
- package/dist/components/table.js.map +1 -1
- package/dist/components/tabs.d.ts +1 -3
- package/dist/components/tabs.js.map +1 -1
- package/dist/components/text.d.ts +1 -3
- package/dist/components/text.js.map +1 -1
- package/dist/components/textarea.d.ts +0 -2
- package/dist/components/textarea.js.map +1 -1
- package/dist/components/theme.d.ts +0 -2
- package/dist/components/theme.js.map +1 -1
- package/dist/components/timeline.d.ts +0 -2
- package/dist/components/timeline.js.map +1 -1
- package/dist/components/toggle-group.d.ts +1 -3
- package/dist/components/toggle-group.js.map +1 -1
- package/dist/components/toggle.d.ts +1 -3
- package/dist/components/toggle.js +1 -1
- package/dist/components/toggle.js.map +1 -1
- package/dist/components/toolbar.d.ts +30 -0
- package/dist/components/toolbar.js +2 -0
- package/dist/components/toolbar.js.map +1 -0
- package/dist/components/tooltip.d.ts +1 -3
- package/dist/components/tooltip.js.map +1 -1
- package/dist/components/unstyled-button.d.ts +1 -3
- package/dist/components/unstyled-button.js.map +1 -1
- package/dist/components/visibility.d.ts +0 -2
- package/dist/components/visibility.js.map +1 -1
- package/dist/hooks/use-breakpoint-value.d.ts +0 -2
- package/dist/hooks/use-breakpoint-value.js.map +1 -1
- package/dist/hooks/use-breakpoint.d.ts +0 -2
- package/dist/hooks/use-breakpoint.js.map +1 -1
- package/dist/hooks/use-disclosure.d.ts +0 -2
- package/dist/hooks/use-disclosure.js.map +1 -1
- package/dist/hooks/use-document-visibility.d.ts +0 -2
- package/dist/hooks/use-document-visibility.js.map +1 -1
- package/dist/hooks/use-hotkeys.d.ts +1 -1
- package/dist/hooks/use-idle.d.ts +0 -2
- package/dist/hooks/use-idle.js.map +1 -1
- package/dist/hooks/use-interval.d.ts +0 -2
- package/dist/hooks/use-interval.js.map +1 -1
- package/dist/hooks/use-local-storage.d.ts +0 -2
- package/dist/hooks/use-local-storage.js.map +1 -1
- package/dist/hooks/use-mask.d.ts +0 -2
- package/dist/hooks/use-mask.js.map +1 -1
- package/dist/hooks/use-mobile.d.ts +0 -2
- package/dist/hooks/use-mobile.js.map +1 -1
- package/dist/index.d.ts +21 -17
- package/dist/index.js +1 -1
- package/dist/lib/as-child.d.ts +1 -1
- package/dist/lib/as-child.js.map +1 -1
- package/dist/lib/badge.d.ts +0 -2
- package/dist/lib/badge.js.map +1 -1
- package/dist/lib/button.d.ts +0 -2
- package/dist/lib/button.js.map +1 -1
- package/dist/lib/color.d.ts +0 -2
- package/dist/lib/color.js.map +1 -1
- package/dist/lib/compose-refs.d.ts +0 -2
- package/dist/lib/compose-refs.js.map +1 -1
- package/dist/lib/progress.d.ts +0 -2
- package/dist/lib/progress.js.map +1 -1
- package/dist/lib/utils.d.ts +0 -2
- package/dist/lib/utils.js.map +1 -1
- package/dist/logo--R3_XDgA.js.map +1 -1
- package/dist/postcss.config.js.map +1 -1
- package/dist/resolve-class-name-BurP8ngI.js.map +1 -1
- package/dist/skills/uselets-ui/SKILL.md +3 -3
- package/dist/skills/uselets-ui/references/component-catalog.md +14 -2
- package/dist/skills/uselets-ui/references/package-guide.md +3 -3
- package/dist/{use-hotkeys-D1_TEIwN.d.ts → use-hotkeys-BVm0IGb8.d.ts} +1 -5
- package/dist/use-hotkeys-YDJmGWX6.js.map +1 -1
- package/package.json +14 -14
- package/skills/uselets-ui/SKILL.md +3 -3
- package/skills/uselets-ui/references/component-catalog.md +14 -2
- package/skills/uselets-ui/references/package-guide.md +3 -3
package/README.md
CHANGED
|
@@ -269,6 +269,7 @@ Every component has a [Storybook](https://storybook.uselets.com) page with live
|
|
|
269
269
|
| [UnstyledButton][unstyledbutton] | Button with reset styles and a focus ring |
|
|
270
270
|
| [ButtonGroup][buttongroup] | Groups buttons together |
|
|
271
271
|
| [Toggle][toggle], [ToggleGroup][togglegroup] | Pressable toggles (`multiple` for several pressed) |
|
|
272
|
+
| [Toolbar][toolbar] | Action bar with arrow-key navigation; `ToolbarButton` takes `Button` styles |
|
|
272
273
|
|
|
273
274
|
**Forms**
|
|
274
275
|
|
|
@@ -282,7 +283,9 @@ Every component has a [Storybook](https://storybook.uselets.com) page with live
|
|
|
282
283
|
| [InputOTP][inputotp] | One-time code input |
|
|
283
284
|
| [Select][select], [NativeSelect][nativeselect] | Custom select (`items` maps values to labels); native `<select>` |
|
|
284
285
|
| [Combobox][combobox] | Searchable select, with chips for multiple values |
|
|
286
|
+
| [Autocomplete][autocomplete] | Free-text input with suggestions (search, address) |
|
|
285
287
|
| [Checkbox][checkbox], [RadioGroup][radiogroup], [Switch][switch] | Choice controls with built-in `label` and `description` |
|
|
288
|
+
| [CheckboxGroup][checkboxgroup] | Shared value for several checkboxes, with an optional "select all" parent |
|
|
286
289
|
| [Slider][slider] | Single value or range |
|
|
287
290
|
| [Calendar][calendar], [DateRangePicker][daterangepicker] | Date calendar; range picker with presets and apply/reset |
|
|
288
291
|
| [Dropzone][dropzone] | File upload with validation and retries (`useDropzone`) |
|
|
@@ -316,6 +319,7 @@ Every component has a [Storybook](https://storybook.uselets.com) page with live
|
|
|
316
319
|
| [Alert][alert] | Inline message (`default` or `destructive`) |
|
|
317
320
|
| [Toast][toast] | `Toaster` + `toast()` |
|
|
318
321
|
| [Progress][progress], [RingProgress][ringprogress] | Linear and circular progress (`value` 0–100) |
|
|
322
|
+
| [Meter][meter] | Measurement within a known range (usage, capacity, share of a total) |
|
|
319
323
|
| [Spinner][spinner], [Skeleton][skeleton] | Loading indicator; loading placeholder |
|
|
320
324
|
| [Empty][empty] | Empty state |
|
|
321
325
|
|
|
@@ -361,6 +365,7 @@ Exported from the package root and from `@uselets/ui/hooks/<name>`.
|
|
|
361
365
|
[alertdialog]: https://storybook.uselets.com/?path=/docs/components-overlay-alertdialog--docs
|
|
362
366
|
[anchor]: https://storybook.uselets.com/?path=/docs/components-typography-anchor--docs
|
|
363
367
|
[areachart]: https://storybook.uselets.com/?path=/docs/components-charts-areachart--docs
|
|
368
|
+
[autocomplete]: https://storybook.uselets.com/?path=/docs/components-forms-autocomplete--docs
|
|
364
369
|
[avatar]: https://storybook.uselets.com/?path=/docs/components-data-display-avatar--docs
|
|
365
370
|
[badge]: https://storybook.uselets.com/?path=/docs/components-data-display-badge--docs
|
|
366
371
|
[barchart]: https://storybook.uselets.com/?path=/docs/components-charts-barchart--docs
|
|
@@ -373,6 +378,7 @@ Exported from the package root and from `@uselets/ui/hooks/<name>`.
|
|
|
373
378
|
[carousel]: https://storybook.uselets.com/?path=/docs/components-layout-carousel--docs
|
|
374
379
|
[center]: https://storybook.uselets.com/?path=/docs/components-layout-center--docs
|
|
375
380
|
[checkbox]: https://storybook.uselets.com/?path=/docs/components-forms-checkbox--docs
|
|
381
|
+
[checkboxgroup]: https://storybook.uselets.com/?path=/docs/components-forms-checkboxgroup--docs
|
|
376
382
|
[code]: https://storybook.uselets.com/?path=/docs/components-typography-code--docs
|
|
377
383
|
[collapsible]: https://storybook.uselets.com/?path=/docs/components-layout-collapsible--docs
|
|
378
384
|
[combobox]: https://storybook.uselets.com/?path=/docs/components-forms-combobox--docs
|
|
@@ -402,6 +408,7 @@ Exported from the package root and from `@uselets/ui/hooks/<name>`.
|
|
|
402
408
|
[logo]: https://storybook.uselets.com/?path=/docs/components-media-logo--docs
|
|
403
409
|
[marker]: https://storybook.uselets.com/?path=/docs/components-layout-marker--docs
|
|
404
410
|
[maskinput]: https://storybook.uselets.com/?path=/docs/components-forms-maskinput--docs
|
|
411
|
+
[meter]: https://storybook.uselets.com/?path=/docs/components-feedback-meter--docs
|
|
405
412
|
[nativeselect]: https://storybook.uselets.com/?path=/docs/components-forms-native-select--docs
|
|
406
413
|
[navigationmenu]: https://storybook.uselets.com/?path=/docs/components-navigation-navigationmenu--docs
|
|
407
414
|
[numberfield]: https://storybook.uselets.com/?path=/docs/components-forms-number-field--docs
|
|
@@ -433,6 +440,7 @@ Exported from the package root and from `@uselets/ui/hooks/<name>`.
|
|
|
433
440
|
[toast]: https://storybook.uselets.com/?path=/docs/components-feedback-toast--docs
|
|
434
441
|
[toggle]: https://storybook.uselets.com/?path=/docs/components-button-toggle--docs
|
|
435
442
|
[togglegroup]: https://storybook.uselets.com/?path=/docs/components-button-togglegroup--docs
|
|
443
|
+
[toolbar]: https://storybook.uselets.com/?path=/docs/components-button-toolbar--docs
|
|
436
444
|
[tooltip]: https://storybook.uselets.com/?path=/docs/components-overlay-tooltip--docs
|
|
437
445
|
[unstyledbutton]: https://storybook.uselets.com/?path=/docs/components-button-unstyledbutton--docs
|
|
438
446
|
[usebreakpoint]: https://storybook.uselets.com/?path=/docs/hooks-browser-usebreakpoint--docs
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { t as __name } from "./rolldown-runtime-BhWHdk3m.js";
|
|
2
2
|
import * as React from "react";
|
|
3
|
-
//#region src/lib/as-child.d.ts
|
|
4
3
|
type AsChildTag = keyof React.JSX.IntrinsicElements;
|
|
5
4
|
type AsChildProps<Tag extends AsChildTag> = React.ComponentProps<Tag> & {
|
|
6
5
|
/** Renders the child element instead of the default one, passing this component's props and behavior to it. */
|
|
@@ -36,6 +35,5 @@ declare function toAsChildRenderProps<Children>(asChild: boolean | undefined, ch
|
|
|
36
35
|
render?: React.ReactElement;
|
|
37
36
|
children?: Children;
|
|
38
37
|
};
|
|
39
|
-
//#endregion
|
|
40
38
|
export { useAsChild as i, AsChildProps as n, toAsChildRenderProps as r, AsChildPrimitiveProps as t };
|
|
41
|
-
//# sourceMappingURL=as-child-
|
|
39
|
+
//# sourceMappingURL=as-child-T9W73ZYU.d.ts.map
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { t as __name } from "./rolldown-runtime-BhWHdk3m.js";
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import * as RechartsPrimitive from "recharts";
|
|
4
|
-
//#region src/components/chart.d.ts
|
|
5
4
|
declare const THEMES: {
|
|
6
5
|
readonly light: '';
|
|
7
6
|
readonly dark: '.dark';
|
|
@@ -49,6 +48,5 @@ declare const ChartTooltip: typeof RechartsPrimitive.Tooltip;
|
|
|
49
48
|
declare function ChartTooltipContent({ active, payload, className, indicator, hideLabel, hideIndicator, label, labelFormatter, labelClassName, formatter, color, nameKey, labelKey }: ChartTooltipContentProps): React.JSX.Element | null;
|
|
50
49
|
declare const ChartLegend: React.MemoExoticComponent<(outsideProps: RechartsPrimitive.LegendProps) => React.ReactPortal | null>;
|
|
51
50
|
declare function ChartLegendContent({ className, hideIcon, payload, verticalAlign, nameKey }: ChartLegendContentProps): React.JSX.Element | null;
|
|
52
|
-
//#endregion
|
|
53
51
|
export { resolveChartColor as _, ChartContainerProps as a, ChartLegendContentProps as c, ChartStyleProps as d, ChartTooltip as f, DEFAULT_CHART_PALETTE as g, ChartTooltipProps as h, ChartContainer as i, ChartLegendProps as l, ChartTooltipContentProps as m, ChartColorKey as n, ChartLegend as o, ChartTooltipContent as p, ChartConfig as r, ChartLegendContent as s, CHART_COLOR_KEYS as t, ChartStyle as u };
|
|
54
|
-
//# sourceMappingURL=chart-
|
|
52
|
+
//# sourceMappingURL=chart-8rgtsk95.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkbox-group-context-HDVxTNPi.js","names":["CheckboxGroupContext","createContext"],"sources":["../src/utils/checkbox-group-context.ts"],"sourcesContent":["import { createContext } from 'react'\n\nimport type { UIColor } from '../lib/color'\n\ntype CheckboxGroupContextValue = {\n // The `Field` control id claimed by the enclosing `CheckboxGroup`. Checkboxes must not reuse it (every one\n // would share one id); a checkbox only takes a Field control id when it sits in its own nested `Field`.\n fieldControlId: string | undefined\n color: UIColor\n}\n\nexport const CheckboxGroupContext = createContext<CheckboxGroupContextValue | null>(null)\n"],"mappings":"A,sCAWA,MAAaA,EAAuBC,EAAgD,IAAI,E"}
|
package/dist/cli/uselets.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uselets.mjs","names":["fs","path","readline","ENTRY_FILE_CANDIDATES","TAILWIND_IMPORT_PATTERN","THEME_IMPORT_PATTERN","PACKAGE_SOURCE_PATTERN","buildPackageSource","cssDir","cssPath","relativeSource","updateGlobalCss","tailwindMatch","source","themeMatch","hasTheme","themeBeforeTailwind","imports","theme","lines","separator","insertAt","SKILL_NAME","FONT_PACKAGE","AGENT_TARGETS","ALL_AGENT_TARGETS","pathExists","targetPath","readJsonFile","filePath","findPackageRoot","currentDir","fileURLToPath","parentDir","resolveTargets","agent","hasDependency","packageJson","dependencyName","detectPackageManager","declaredManager","projectRoot","buildAddCommand","packageManager","dev","dependencies","runCommand","command","args","commandParts","child","spawn","reject","code","resolve","getPackageVersion","version","installMissingDependencies","packageRoot","projectPackageJson","runtimeDependencies","devDependencies","installSkill","sourcePath","installedPaths","target","targets","installedPath","createPrompt","promptTheme","defaultTheme","prompt","answer","promptCssPath","defaultCssPath","promptInstallSkill","ensurePostcssConfig","postcssPath","ensureGlobalCss","absoluteCssPath","updatedSource","detectEntryFile","candidate","promptEntryPath","resolveEntryPath","entryOption","logManualFontImportInstructions","reason","ensureFontImport","entryPath","absoluteEntryPath","directiveMatch","insertion","initProject","packageJsonPath","options","shouldInstallSkill","main","program","Command","Option","error"],"sources":["../../src/cli/init.ts","../../src/cli/uselets.ts"],"sourcesContent":["import path from 'node:path'\n\nexport type ThemeOption = 'max' | 'gomax'\n\nexport const ENTRY_FILE_CANDIDATES = [\n 'app/layout.tsx',\n 'app/layout.jsx',\n 'src/app/layout.tsx',\n 'src/app/layout.jsx',\n 'pages/_app.tsx',\n 'pages/_app.jsx',\n 'src/pages/_app.tsx',\n 'src/pages/_app.jsx',\n 'src/main.tsx',\n 'src/main.jsx',\n 'src/index.tsx',\n 'src/index.jsx'\n]\n\nconst TAILWIND_IMPORT_PATTERN = /^[ \\t]*@import\\s+['\"]tailwindcss['\"][^\\n]*$/m\nconst THEME_IMPORT_PATTERN = /@import\\s+['\"]@uselets\\/ui\\/themes\\/(?:max|gomax)\\.css['\"]/\nconst PACKAGE_SOURCE_PATTERN = /@source\\s+['\"][^'\"]*@uselets\\/ui\\/dist['\"]/\n\nexport function buildPackageSource(cssPath: string) {\n const cssDir = path.posix.dirname(cssPath.replaceAll(path.sep, path.posix.sep))\n const relativeSource = path.posix.relative(cssDir, 'node_modules/@uselets/ui/dist')\n\n return relativeSource.startsWith('.') ? relativeSource : `./${relativeSource}`\n}\n\nexport type GlobalCssUpdate = {\n // `null` when the file already has every import.\n source: string | null\n hasTheme: boolean\n // An existing theme import placed before `@import 'tailwindcss'` lets Tailwind's preflight override the theme's\n // base styles; the file is left as is, so the caller should warn about it.\n themeBeforeTailwind: boolean\n}\n\nexport function updateGlobalCss(source: string, theme: ThemeOption, cssPath: string): GlobalCssUpdate {\n const tailwindMatch = TAILWIND_IMPORT_PATTERN.exec(source)\n const themeMatch = THEME_IMPORT_PATTERN.exec(source)\n const hasTheme = themeMatch !== null\n const themeBeforeTailwind = hasTheme && tailwindMatch !== null && themeMatch.index < tailwindMatch.index\n const imports = []\n\n if (!hasTheme) {\n imports.push(`@import '@uselets/ui/themes/${theme}.css';`)\n }\n\n if (!PACKAGE_SOURCE_PATTERN.test(source)) {\n imports.push(`@source '${buildPackageSource(cssPath)}';`)\n }\n\n if (!tailwindMatch) {\n // The theme must come after Tailwind so its base layer wins over the preflight reset.\n const lines = [\"@import 'tailwindcss';\", ...imports]\n const separator = source.length > 0 && !source.startsWith('\\n') ? '\\n' : ''\n\n return { source: `${lines.join('\\n')}${separator}${source}`, hasTheme, themeBeforeTailwind }\n }\n\n if (imports.length === 0) {\n return { source: null, hasTheme, themeBeforeTailwind }\n }\n\n const insertAt = tailwindMatch.index + tailwindMatch[0].length\n\n return {\n source: `${source.slice(0, insertAt)}\\n${imports.join('\\n')}${source.slice(insertAt)}`,\n hasTheme,\n themeBeforeTailwind\n }\n}\n","#!/usr/bin/env node\n\nimport { spawn } from 'node:child_process'\nimport fs from 'node:fs/promises'\nimport path from 'node:path'\nimport readline from 'node:readline/promises'\nimport { fileURLToPath } from 'node:url'\n\nimport { Command, Option } from 'commander'\n\nimport { ENTRY_FILE_CANDIDATES, type ThemeOption, updateGlobalCss } from './init'\n\nconst SKILL_NAME = 'uselets-ui'\nconst DEFAULT_CSS_PATH = 'src/styles/globals.css'\nconst FONT_PACKAGE = '@fontsource-variable/inter'\nconst POSTCSS_CONFIG = \"export { default } from '@uselets/ui/postcss.config'\\n\"\nconst AGENT_TARGETS = {\n codex: path.join('.agents', 'skills', SKILL_NAME),\n claude: path.join('.claude', 'skills', SKILL_NAME)\n} as const\n\ntype AgentTarget = keyof typeof AGENT_TARGETS\ntype AgentOption = AgentTarget | 'all'\ntype PackageManager = 'bun' | 'pnpm' | 'yarn' | 'npm'\ntype PackageJson = {\n name?: string\n version?: string\n packageManager?: string\n dependencies?: Record<string, string>\n devDependencies?: Record<string, string>\n peerDependencies?: Record<string, string>\n optionalDependencies?: Record<string, string>\n}\ntype InitOptions = {\n theme?: ThemeOption\n css?: string\n entry?: string\n installSkill?: boolean\n}\n\nconst ALL_AGENT_TARGETS = Object.keys(AGENT_TARGETS) as AgentTarget[]\n\nasync function pathExists(targetPath: string) {\n try {\n await fs.access(targetPath)\n return true\n } catch {\n return false\n }\n}\n\nasync function readJsonFile<T>(filePath: string) {\n return JSON.parse(await fs.readFile(filePath, 'utf8')) as T\n}\n\nasync function findPackageRoot() {\n let currentDir = fileURLToPath(new URL('.', import.meta.url))\n\n while (true) {\n try {\n await fs.access(path.join(currentDir, 'package.json'))\n return currentDir\n } catch {\n const parentDir = path.dirname(currentDir)\n\n if (parentDir === currentDir) {\n throw new Error('Unable to resolve @uselets/ui package root')\n }\n\n currentDir = parentDir\n }\n }\n}\n\nfunction resolveTargets(agent: AgentOption) {\n return agent === 'all' ? ALL_AGENT_TARGETS : [agent]\n}\n\nfunction hasDependency(packageJson: PackageJson, dependencyName: string) {\n return Boolean(\n packageJson.dependencies?.[dependencyName] ||\n packageJson.devDependencies?.[dependencyName] ||\n packageJson.peerDependencies?.[dependencyName] ||\n packageJson.optionalDependencies?.[dependencyName]\n )\n}\n\nasync function detectPackageManager(projectRoot: string, packageJson: PackageJson): Promise<PackageManager> {\n const declaredManager = packageJson.packageManager?.split('@')[0]\n\n if (\n declaredManager === 'bun' ||\n declaredManager === 'pnpm' ||\n declaredManager === 'yarn' ||\n declaredManager === 'npm'\n ) {\n return declaredManager\n }\n\n if (await pathExists(path.join(projectRoot, 'bun.lock'))) {\n return 'bun'\n }\n\n if (await pathExists(path.join(projectRoot, 'pnpm-lock.yaml'))) {\n return 'pnpm'\n }\n\n if (await pathExists(path.join(projectRoot, 'yarn.lock'))) {\n return 'yarn'\n }\n\n if (await pathExists(path.join(projectRoot, 'package-lock.json'))) {\n return 'npm'\n }\n\n return 'npm'\n}\n\nfunction buildAddCommand(packageManager: PackageManager, dependencies: string[], dev: boolean) {\n switch (packageManager) {\n case 'bun':\n return ['bun', 'add', ...(dev ? ['-d'] : []), ...dependencies]\n case 'pnpm':\n return ['pnpm', 'add', ...(dev ? ['-D'] : []), ...dependencies]\n case 'yarn':\n return ['yarn', 'add', ...(dev ? ['-D'] : []), ...dependencies]\n case 'npm':\n return ['npm', 'install', ...(dev ? ['-D'] : []), ...dependencies]\n }\n}\n\nasync function runCommand(commandParts: string[], cwd: string) {\n const [command, ...args] = commandParts\n\n if (!command) {\n throw new Error('Missing command')\n }\n\n console.log(`Running: ${commandParts.join(' ')}`)\n\n await new Promise<void>((resolve, reject) => {\n const child = spawn(command, args, { cwd, stdio: 'inherit' })\n\n child.on('error', reject)\n child.on('close', (code) => {\n if (code === 0) {\n resolve()\n return\n }\n\n reject(new Error(`${command} exited with code ${code}`))\n })\n })\n}\n\nfunction getPackageVersion(packageJson: PackageJson, dependencyName: string) {\n const version = packageJson.dependencies?.[dependencyName] ?? packageJson.devDependencies?.[dependencyName]\n\n if (!version) {\n throw new Error(`Unable to find ${dependencyName} version in @uselets/ui package metadata`)\n }\n\n return version\n}\n\nasync function installMissingDependencies(projectRoot: string, projectPackageJson: PackageJson) {\n const packageRoot = await findPackageRoot()\n const packageJson = await readJsonFile<PackageJson>(path.join(packageRoot, 'package.json'))\n const packageManager = await detectPackageManager(projectRoot, projectPackageJson)\n const runtimeDependencies = []\n const devDependencies = []\n\n if (!packageJson.name || !packageJson.version) {\n throw new Error('Unable to resolve @uselets/ui package name and version')\n }\n\n if (!hasDependency(projectPackageJson, packageJson.name)) {\n runtimeDependencies.push(`${packageJson.name}@${packageJson.version}`)\n }\n\n if (!hasDependency(projectPackageJson, FONT_PACKAGE)) {\n runtimeDependencies.push(`${FONT_PACKAGE}@${getPackageVersion(packageJson, FONT_PACKAGE)}`)\n }\n\n if (!hasDependency(projectPackageJson, 'tailwindcss')) {\n devDependencies.push(`tailwindcss@${getPackageVersion(packageJson, 'tailwindcss')}`)\n }\n\n if (!hasDependency(projectPackageJson, '@tailwindcss/postcss')) {\n devDependencies.push(`@tailwindcss/postcss@${getPackageVersion(packageJson, '@tailwindcss/postcss')}`)\n }\n\n if (runtimeDependencies.length > 0) {\n await runCommand(buildAddCommand(packageManager, runtimeDependencies, false), projectRoot)\n } else {\n console.log('Runtime dependencies already declared.')\n }\n\n if (devDependencies.length > 0) {\n await runCommand(buildAddCommand(packageManager, devDependencies, true), projectRoot)\n } else {\n console.log('Tailwind dependencies already declared.')\n }\n}\n\nasync function installSkill(targets: AgentTarget[]) {\n const packageRoot = await findPackageRoot()\n const sourcePath = path.join(packageRoot, 'skills', SKILL_NAME)\n\n try {\n await fs.access(sourcePath)\n } catch {\n throw new Error(`Bundled skill not found at ${sourcePath}`)\n }\n\n const installedPaths = []\n\n for (const target of targets) {\n const targetPath = path.join(process.cwd(), AGENT_TARGETS[target])\n\n await fs.rm(targetPath, { recursive: true, force: true })\n await fs.mkdir(path.dirname(targetPath), { recursive: true })\n await fs.cp(sourcePath, targetPath, { recursive: true })\n\n installedPaths.push(targetPath)\n }\n\n console.log(`Installed ${SKILL_NAME} skill:`)\n\n for (const installedPath of installedPaths) {\n console.log(`- ${installedPath}`)\n }\n}\n\nasync function createPrompt() {\n return readline.createInterface({ input: process.stdin, output: process.stdout })\n}\n\nasync function promptTheme(defaultTheme: ThemeOption) {\n if (!process.stdin.isTTY) {\n return defaultTheme\n }\n\n const prompt = await createPrompt()\n\n try {\n while (true) {\n const answer = (await prompt.question(`Theme (max/gomax) [${defaultTheme}]: `)).trim().toLowerCase()\n\n if (!answer) {\n return defaultTheme\n }\n\n if (answer === 'max' || answer === 'gomax') {\n return answer\n }\n\n console.log('Please choose \"max\" or \"gomax\".')\n }\n } finally {\n prompt.close()\n }\n}\n\nasync function promptCssPath(defaultCssPath: string) {\n if (!process.stdin.isTTY) {\n return defaultCssPath\n }\n\n const prompt = await createPrompt()\n\n try {\n const answer = (await prompt.question(`Global CSS path [${defaultCssPath}]: `)).trim()\n return answer || defaultCssPath\n } finally {\n prompt.close()\n }\n}\n\nasync function promptInstallSkill() {\n if (!process.stdin.isTTY) {\n return false\n }\n\n const prompt = await createPrompt()\n\n try {\n while (true) {\n const answer = (await prompt.question('Install agent skill? (y/N): ')).trim().toLowerCase()\n\n if (!answer || answer === 'n' || answer === 'no') {\n return false\n }\n\n if (answer === 'y' || answer === 'yes') {\n return true\n }\n\n console.log('Please answer \"y\" or \"n\".')\n }\n } finally {\n prompt.close()\n }\n}\n\nasync function ensurePostcssConfig(projectRoot: string) {\n const postcssPath = path.join(projectRoot, 'postcss.config.mjs')\n\n if (await pathExists(postcssPath)) {\n console.log('Preserved existing postcss.config.mjs.')\n return\n }\n\n await fs.writeFile(postcssPath, POSTCSS_CONFIG)\n console.log('Created postcss.config.mjs.')\n}\n\nasync function ensureGlobalCss(projectRoot: string, cssPath: string, theme: ThemeOption) {\n const absoluteCssPath = path.resolve(projectRoot, cssPath)\n const existingSource = (await pathExists(absoluteCssPath)) ? await fs.readFile(absoluteCssPath, 'utf8') : ''\n const { source: updatedSource, hasTheme, themeBeforeTailwind } = updateGlobalCss(existingSource, theme, cssPath)\n\n if (hasTheme) {\n console.log('Preserved existing @uselets/ui theme import.')\n }\n\n if (themeBeforeTailwind) {\n console.warn(\n `Warning: the @uselets/ui theme import comes before @import 'tailwindcss' in ${cssPath}. Move it below so Tailwind's preflight doesn't override the theme's base styles.`\n )\n }\n\n if (updatedSource === null) {\n console.log(`Global CSS already configured at ${cssPath}.`)\n return\n }\n\n await fs.mkdir(path.dirname(absoluteCssPath), { recursive: true })\n await fs.writeFile(absoluteCssPath, updatedSource)\n console.log(`Updated global CSS at ${cssPath}.`)\n}\n\nasync function detectEntryFile(projectRoot: string) {\n for (const candidate of ENTRY_FILE_CANDIDATES) {\n if (await pathExists(path.join(projectRoot, candidate))) {\n return candidate\n }\n }\n\n return undefined\n}\n\nasync function promptEntryPath() {\n if (!process.stdin.isTTY) {\n return undefined\n }\n\n const prompt = await createPrompt()\n\n try {\n const answer = (await prompt.question('App entry file to import the font in (leave empty to skip): ')).trim()\n return answer || undefined\n } finally {\n prompt.close()\n }\n}\n\nasync function resolveEntryPath(projectRoot: string, entryOption?: string) {\n if (entryOption) {\n return entryOption\n }\n\n const detected = await detectEntryFile(projectRoot)\n\n if (detected) {\n return detected\n }\n\n return promptEntryPath()\n}\n\nfunction logManualFontImportInstructions(reason: string) {\n console.log(\n `${reason} Add \\`import '${FONT_PACKAGE}'\\` to your app's entry file (for example app/layout.tsx or src/main.tsx) to load the font.`\n )\n}\n\nasync function ensureFontImport(projectRoot: string, entryPath?: string) {\n if (!entryPath) {\n logManualFontImportInstructions('Could not detect an app entry file.')\n return\n }\n\n const absoluteEntryPath = path.resolve(projectRoot, entryPath)\n\n if (!(await pathExists(absoluteEntryPath))) {\n logManualFontImportInstructions(`Entry file ${entryPath} not found.`)\n return\n }\n\n const source = await fs.readFile(absoluteEntryPath, 'utf8')\n const importPattern = new RegExp(`import\\\\s+['\"]${FONT_PACKAGE}['\"]`)\n\n if (importPattern.test(source)) {\n console.log(`Font import already present in ${entryPath}.`)\n return\n }\n\n const directiveMatch = source.match(/^(['\"])use (?:client|server)\\1;?\\r?\\n/)\n const insertion = `import '${FONT_PACKAGE}'\\n`\n const updatedSource = directiveMatch\n ? source.slice(0, directiveMatch[0].length) + insertion + source.slice(directiveMatch[0].length)\n : insertion + source\n\n await fs.writeFile(absoluteEntryPath, updatedSource)\n console.log(`Added font import to ${entryPath}.`)\n}\n\nasync function initProject(options: InitOptions) {\n const projectRoot = process.cwd()\n const packageJsonPath = path.join(projectRoot, 'package.json')\n\n if (!(await pathExists(packageJsonPath))) {\n throw new Error('No package.json found in the current directory. Run uselets init from your project root.')\n }\n\n const projectPackageJson = await readJsonFile<PackageJson>(packageJsonPath)\n const theme = options.theme ?? (await promptTheme('max'))\n const cssPath = options.css ?? (await promptCssPath(DEFAULT_CSS_PATH))\n const entryPath = await resolveEntryPath(projectRoot, options.entry)\n const shouldInstallSkill = options.installSkill ?? (await promptInstallSkill())\n\n await installMissingDependencies(projectRoot, projectPackageJson)\n await ensurePostcssConfig(projectRoot)\n await ensureGlobalCss(projectRoot, cssPath, theme)\n await ensureFontImport(projectRoot, entryPath)\n\n if (shouldInstallSkill) {\n await installSkill(ALL_AGENT_TARGETS)\n }\n}\n\nasync function main() {\n const program = new Command()\n\n program.name('uselets').description('CLI for @uselets/ui').showHelpAfterError()\n\n program\n .command('skill')\n .description(`Reinstall the ${SKILL_NAME} agent skill`)\n .addOption(\n new Option('--agent <agent>', 'Target agent directory').choices(['codex', 'claude', 'all']).default('all')\n )\n .action(async (options: { agent: AgentOption }) => {\n await installSkill(resolveTargets(options.agent))\n })\n\n program\n .command('init')\n .description('Set up @uselets/ui in this project')\n .addOption(new Option('--theme <theme>', 'Theme to import').choices(['max', 'gomax']))\n .option('--css <path>', 'Global CSS file path')\n .option('--entry <path>', 'App entry file to import the font in (for example app/layout.tsx or src/main.tsx)')\n .option('--install-skill', 'Install the agent skill without prompting')\n .option('--no-install-skill', 'Skip the agent skill prompt and installation')\n .action(async (options: InitOptions) => {\n await initProject(options)\n })\n\n if (process.argv.length <= 2) {\n program.outputHelp()\n return\n }\n\n await program.parseAsync()\n}\n\nmain().catch((error: unknown) => {\n console.error(error instanceof Error ? error.message : error)\n process.exitCode = 1\n})\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"uselets.mjs","names":["fs","path","readline","ENTRY_FILE_CANDIDATES","TAILWIND_IMPORT_PATTERN","THEME_IMPORT_PATTERN","PACKAGE_SOURCE_PATTERN","buildPackageSource","cssDir","cssPath","relativeSource","updateGlobalCss","tailwindMatch","source","themeMatch","hasTheme","themeBeforeTailwind","imports","theme","lines","separator","insertAt","SKILL_NAME","FONT_PACKAGE","AGENT_TARGETS","ALL_AGENT_TARGETS","pathExists","targetPath","readJsonFile","filePath","findPackageRoot","currentDir","fileURLToPath","parentDir","resolveTargets","agent","hasDependency","packageJson","dependencyName","detectPackageManager","declaredManager","projectRoot","buildAddCommand","packageManager","dev","dependencies","runCommand","command","args","commandParts","child","spawn","reject","code","resolve","getPackageVersion","version","installMissingDependencies","packageRoot","projectPackageJson","runtimeDependencies","devDependencies","installSkill","sourcePath","installedPaths","target","targets","installedPath","createPrompt","promptTheme","defaultTheme","prompt","answer","promptCssPath","defaultCssPath","promptInstallSkill","ensurePostcssConfig","postcssPath","ensureGlobalCss","absoluteCssPath","updatedSource","detectEntryFile","candidate","promptEntryPath","resolveEntryPath","entryOption","logManualFontImportInstructions","reason","ensureFontImport","entryPath","absoluteEntryPath","directiveMatch","insertion","initProject","packageJsonPath","options","shouldInstallSkill","main","program","Command","Option","error"],"sources":["../../src/cli/init.ts","../../src/cli/uselets.ts"],"sourcesContent":["import path from 'node:path'\n\nexport type ThemeOption = 'max' | 'gomax'\n\nexport const ENTRY_FILE_CANDIDATES = [\n 'app/layout.tsx',\n 'app/layout.jsx',\n 'src/app/layout.tsx',\n 'src/app/layout.jsx',\n 'pages/_app.tsx',\n 'pages/_app.jsx',\n 'src/pages/_app.tsx',\n 'src/pages/_app.jsx',\n 'src/main.tsx',\n 'src/main.jsx',\n 'src/index.tsx',\n 'src/index.jsx'\n]\n\nconst TAILWIND_IMPORT_PATTERN = /^[ \\t]*@import\\s+['\"]tailwindcss['\"][^\\n]*$/m\nconst THEME_IMPORT_PATTERN = /@import\\s+['\"]@uselets\\/ui\\/themes\\/(?:max|gomax)\\.css['\"]/\nconst PACKAGE_SOURCE_PATTERN = /@source\\s+['\"][^'\"]*@uselets\\/ui\\/dist['\"]/\n\nexport function buildPackageSource(cssPath: string) {\n const cssDir = path.posix.dirname(cssPath.replaceAll(path.sep, path.posix.sep))\n const relativeSource = path.posix.relative(cssDir, 'node_modules/@uselets/ui/dist')\n\n return relativeSource.startsWith('.') ? relativeSource : `./${relativeSource}`\n}\n\nexport type GlobalCssUpdate = {\n // `null` when the file already has every import.\n source: string | null\n hasTheme: boolean\n // An existing theme import placed before `@import 'tailwindcss'` lets Tailwind's preflight override the theme's\n // base styles; the file is left as is, so the caller should warn about it.\n themeBeforeTailwind: boolean\n}\n\nexport function updateGlobalCss(source: string, theme: ThemeOption, cssPath: string): GlobalCssUpdate {\n const tailwindMatch = TAILWIND_IMPORT_PATTERN.exec(source)\n const themeMatch = THEME_IMPORT_PATTERN.exec(source)\n const hasTheme = themeMatch !== null\n const themeBeforeTailwind = hasTheme && tailwindMatch !== null && themeMatch.index < tailwindMatch.index\n const imports = []\n\n if (!hasTheme) {\n imports.push(`@import '@uselets/ui/themes/${theme}.css';`)\n }\n\n if (!PACKAGE_SOURCE_PATTERN.test(source)) {\n imports.push(`@source '${buildPackageSource(cssPath)}';`)\n }\n\n if (!tailwindMatch) {\n // The theme must come after Tailwind so its base layer wins over the preflight reset.\n const lines = [\"@import 'tailwindcss';\", ...imports]\n const separator = source.length > 0 && !source.startsWith('\\n') ? '\\n' : ''\n\n return { source: `${lines.join('\\n')}${separator}${source}`, hasTheme, themeBeforeTailwind }\n }\n\n if (imports.length === 0) {\n return { source: null, hasTheme, themeBeforeTailwind }\n }\n\n const insertAt = tailwindMatch.index + tailwindMatch[0].length\n\n return {\n source: `${source.slice(0, insertAt)}\\n${imports.join('\\n')}${source.slice(insertAt)}`,\n hasTheme,\n themeBeforeTailwind\n }\n}\n","#!/usr/bin/env node\n\nimport { spawn } from 'node:child_process'\nimport fs from 'node:fs/promises'\nimport path from 'node:path'\nimport readline from 'node:readline/promises'\nimport { fileURLToPath } from 'node:url'\n\nimport { Command, Option } from 'commander'\n\nimport { ENTRY_FILE_CANDIDATES, type ThemeOption, updateGlobalCss } from './init'\n\nconst SKILL_NAME = 'uselets-ui'\nconst DEFAULT_CSS_PATH = 'src/styles/globals.css'\nconst FONT_PACKAGE = '@fontsource-variable/inter'\nconst POSTCSS_CONFIG = \"export { default } from '@uselets/ui/postcss.config'\\n\"\nconst AGENT_TARGETS = {\n codex: path.join('.agents', 'skills', SKILL_NAME),\n claude: path.join('.claude', 'skills', SKILL_NAME)\n} as const\n\ntype AgentTarget = keyof typeof AGENT_TARGETS\ntype AgentOption = AgentTarget | 'all'\ntype PackageManager = 'bun' | 'pnpm' | 'yarn' | 'npm'\ntype PackageJson = {\n name?: string\n version?: string\n packageManager?: string\n dependencies?: Record<string, string>\n devDependencies?: Record<string, string>\n peerDependencies?: Record<string, string>\n optionalDependencies?: Record<string, string>\n}\ntype InitOptions = {\n theme?: ThemeOption\n css?: string\n entry?: string\n installSkill?: boolean\n}\n\nconst ALL_AGENT_TARGETS = Object.keys(AGENT_TARGETS) as AgentTarget[]\n\nasync function pathExists(targetPath: string) {\n try {\n await fs.access(targetPath)\n return true\n } catch {\n return false\n }\n}\n\nasync function readJsonFile<T>(filePath: string) {\n return JSON.parse(await fs.readFile(filePath, 'utf8')) as T\n}\n\nasync function findPackageRoot() {\n let currentDir = fileURLToPath(new URL('.', import.meta.url))\n\n while (true) {\n try {\n await fs.access(path.join(currentDir, 'package.json'))\n return currentDir\n } catch {\n const parentDir = path.dirname(currentDir)\n\n if (parentDir === currentDir) {\n throw new Error('Unable to resolve @uselets/ui package root')\n }\n\n currentDir = parentDir\n }\n }\n}\n\nfunction resolveTargets(agent: AgentOption) {\n return agent === 'all' ? ALL_AGENT_TARGETS : [agent]\n}\n\nfunction hasDependency(packageJson: PackageJson, dependencyName: string) {\n return Boolean(\n packageJson.dependencies?.[dependencyName] ||\n packageJson.devDependencies?.[dependencyName] ||\n packageJson.peerDependencies?.[dependencyName] ||\n packageJson.optionalDependencies?.[dependencyName]\n )\n}\n\nasync function detectPackageManager(projectRoot: string, packageJson: PackageJson): Promise<PackageManager> {\n const declaredManager = packageJson.packageManager?.split('@')[0]\n\n if (\n declaredManager === 'bun' ||\n declaredManager === 'pnpm' ||\n declaredManager === 'yarn' ||\n declaredManager === 'npm'\n ) {\n return declaredManager\n }\n\n if (await pathExists(path.join(projectRoot, 'bun.lock'))) {\n return 'bun'\n }\n\n if (await pathExists(path.join(projectRoot, 'pnpm-lock.yaml'))) {\n return 'pnpm'\n }\n\n if (await pathExists(path.join(projectRoot, 'yarn.lock'))) {\n return 'yarn'\n }\n\n if (await pathExists(path.join(projectRoot, 'package-lock.json'))) {\n return 'npm'\n }\n\n return 'npm'\n}\n\nfunction buildAddCommand(packageManager: PackageManager, dependencies: string[], dev: boolean) {\n switch (packageManager) {\n case 'bun':\n return ['bun', 'add', ...(dev ? ['-d'] : []), ...dependencies]\n case 'pnpm':\n return ['pnpm', 'add', ...(dev ? ['-D'] : []), ...dependencies]\n case 'yarn':\n return ['yarn', 'add', ...(dev ? ['-D'] : []), ...dependencies]\n case 'npm':\n return ['npm', 'install', ...(dev ? ['-D'] : []), ...dependencies]\n }\n}\n\nasync function runCommand(commandParts: string[], cwd: string) {\n const [command, ...args] = commandParts\n\n if (!command) {\n throw new Error('Missing command')\n }\n\n console.log(`Running: ${commandParts.join(' ')}`)\n\n await new Promise<void>((resolve, reject) => {\n const child = spawn(command, args, { cwd, stdio: 'inherit' })\n\n child.on('error', reject)\n child.on('close', (code) => {\n if (code === 0) {\n resolve()\n return\n }\n\n reject(new Error(`${command} exited with code ${code}`))\n })\n })\n}\n\nfunction getPackageVersion(packageJson: PackageJson, dependencyName: string) {\n const version = packageJson.dependencies?.[dependencyName] ?? packageJson.devDependencies?.[dependencyName]\n\n if (!version) {\n throw new Error(`Unable to find ${dependencyName} version in @uselets/ui package metadata`)\n }\n\n return version\n}\n\nasync function installMissingDependencies(projectRoot: string, projectPackageJson: PackageJson) {\n const packageRoot = await findPackageRoot()\n const packageJson = await readJsonFile<PackageJson>(path.join(packageRoot, 'package.json'))\n const packageManager = await detectPackageManager(projectRoot, projectPackageJson)\n const runtimeDependencies = []\n const devDependencies = []\n\n if (!packageJson.name || !packageJson.version) {\n throw new Error('Unable to resolve @uselets/ui package name and version')\n }\n\n if (!hasDependency(projectPackageJson, packageJson.name)) {\n runtimeDependencies.push(`${packageJson.name}@${packageJson.version}`)\n }\n\n if (!hasDependency(projectPackageJson, FONT_PACKAGE)) {\n runtimeDependencies.push(`${FONT_PACKAGE}@${getPackageVersion(packageJson, FONT_PACKAGE)}`)\n }\n\n if (!hasDependency(projectPackageJson, 'tailwindcss')) {\n devDependencies.push(`tailwindcss@${getPackageVersion(packageJson, 'tailwindcss')}`)\n }\n\n if (!hasDependency(projectPackageJson, '@tailwindcss/postcss')) {\n devDependencies.push(`@tailwindcss/postcss@${getPackageVersion(packageJson, '@tailwindcss/postcss')}`)\n }\n\n if (runtimeDependencies.length > 0) {\n await runCommand(buildAddCommand(packageManager, runtimeDependencies, false), projectRoot)\n } else {\n console.log('Runtime dependencies already declared.')\n }\n\n if (devDependencies.length > 0) {\n await runCommand(buildAddCommand(packageManager, devDependencies, true), projectRoot)\n } else {\n console.log('Tailwind dependencies already declared.')\n }\n}\n\nasync function installSkill(targets: AgentTarget[]) {\n const packageRoot = await findPackageRoot()\n const sourcePath = path.join(packageRoot, 'skills', SKILL_NAME)\n\n try {\n await fs.access(sourcePath)\n } catch {\n throw new Error(`Bundled skill not found at ${sourcePath}`)\n }\n\n const installedPaths = []\n\n for (const target of targets) {\n const targetPath = path.join(process.cwd(), AGENT_TARGETS[target])\n\n await fs.rm(targetPath, { recursive: true, force: true })\n await fs.mkdir(path.dirname(targetPath), { recursive: true })\n await fs.cp(sourcePath, targetPath, { recursive: true })\n\n installedPaths.push(targetPath)\n }\n\n console.log(`Installed ${SKILL_NAME} skill:`)\n\n for (const installedPath of installedPaths) {\n console.log(`- ${installedPath}`)\n }\n}\n\nasync function createPrompt() {\n return readline.createInterface({ input: process.stdin, output: process.stdout })\n}\n\nasync function promptTheme(defaultTheme: ThemeOption) {\n if (!process.stdin.isTTY) {\n return defaultTheme\n }\n\n const prompt = await createPrompt()\n\n try {\n while (true) {\n const answer = (await prompt.question(`Theme (max/gomax) [${defaultTheme}]: `)).trim().toLowerCase()\n\n if (!answer) {\n return defaultTheme\n }\n\n if (answer === 'max' || answer === 'gomax') {\n return answer\n }\n\n console.log('Please choose \"max\" or \"gomax\".')\n }\n } finally {\n prompt.close()\n }\n}\n\nasync function promptCssPath(defaultCssPath: string) {\n if (!process.stdin.isTTY) {\n return defaultCssPath\n }\n\n const prompt = await createPrompt()\n\n try {\n const answer = (await prompt.question(`Global CSS path [${defaultCssPath}]: `)).trim()\n return answer || defaultCssPath\n } finally {\n prompt.close()\n }\n}\n\nasync function promptInstallSkill() {\n if (!process.stdin.isTTY) {\n return false\n }\n\n const prompt = await createPrompt()\n\n try {\n while (true) {\n const answer = (await prompt.question('Install agent skill? (y/N): ')).trim().toLowerCase()\n\n if (!answer || answer === 'n' || answer === 'no') {\n return false\n }\n\n if (answer === 'y' || answer === 'yes') {\n return true\n }\n\n console.log('Please answer \"y\" or \"n\".')\n }\n } finally {\n prompt.close()\n }\n}\n\nasync function ensurePostcssConfig(projectRoot: string) {\n const postcssPath = path.join(projectRoot, 'postcss.config.mjs')\n\n if (await pathExists(postcssPath)) {\n console.log('Preserved existing postcss.config.mjs.')\n return\n }\n\n await fs.writeFile(postcssPath, POSTCSS_CONFIG)\n console.log('Created postcss.config.mjs.')\n}\n\nasync function ensureGlobalCss(projectRoot: string, cssPath: string, theme: ThemeOption) {\n const absoluteCssPath = path.resolve(projectRoot, cssPath)\n const existingSource = (await pathExists(absoluteCssPath)) ? await fs.readFile(absoluteCssPath, 'utf8') : ''\n const { source: updatedSource, hasTheme, themeBeforeTailwind } = updateGlobalCss(existingSource, theme, cssPath)\n\n if (hasTheme) {\n console.log('Preserved existing @uselets/ui theme import.')\n }\n\n if (themeBeforeTailwind) {\n console.warn(\n `Warning: the @uselets/ui theme import comes before @import 'tailwindcss' in ${cssPath}. Move it below so Tailwind's preflight doesn't override the theme's base styles.`\n )\n }\n\n if (updatedSource === null) {\n console.log(`Global CSS already configured at ${cssPath}.`)\n return\n }\n\n await fs.mkdir(path.dirname(absoluteCssPath), { recursive: true })\n await fs.writeFile(absoluteCssPath, updatedSource)\n console.log(`Updated global CSS at ${cssPath}.`)\n}\n\nasync function detectEntryFile(projectRoot: string) {\n for (const candidate of ENTRY_FILE_CANDIDATES) {\n if (await pathExists(path.join(projectRoot, candidate))) {\n return candidate\n }\n }\n\n return undefined\n}\n\nasync function promptEntryPath() {\n if (!process.stdin.isTTY) {\n return undefined\n }\n\n const prompt = await createPrompt()\n\n try {\n const answer = (await prompt.question('App entry file to import the font in (leave empty to skip): ')).trim()\n return answer || undefined\n } finally {\n prompt.close()\n }\n}\n\nasync function resolveEntryPath(projectRoot: string, entryOption?: string) {\n if (entryOption) {\n return entryOption\n }\n\n const detected = await detectEntryFile(projectRoot)\n\n if (detected) {\n return detected\n }\n\n return promptEntryPath()\n}\n\nfunction logManualFontImportInstructions(reason: string) {\n console.log(\n `${reason} Add \\`import '${FONT_PACKAGE}'\\` to your app's entry file (for example app/layout.tsx or src/main.tsx) to load the font.`\n )\n}\n\nasync function ensureFontImport(projectRoot: string, entryPath?: string) {\n if (!entryPath) {\n logManualFontImportInstructions('Could not detect an app entry file.')\n return\n }\n\n const absoluteEntryPath = path.resolve(projectRoot, entryPath)\n\n if (!(await pathExists(absoluteEntryPath))) {\n logManualFontImportInstructions(`Entry file ${entryPath} not found.`)\n return\n }\n\n const source = await fs.readFile(absoluteEntryPath, 'utf8')\n const importPattern = new RegExp(`import\\\\s+['\"]${FONT_PACKAGE}['\"]`)\n\n if (importPattern.test(source)) {\n console.log(`Font import already present in ${entryPath}.`)\n return\n }\n\n const directiveMatch = source.match(/^(['\"])use (?:client|server)\\1;?\\r?\\n/)\n const insertion = `import '${FONT_PACKAGE}'\\n`\n const updatedSource = directiveMatch\n ? source.slice(0, directiveMatch[0].length) + insertion + source.slice(directiveMatch[0].length)\n : insertion + source\n\n await fs.writeFile(absoluteEntryPath, updatedSource)\n console.log(`Added font import to ${entryPath}.`)\n}\n\nasync function initProject(options: InitOptions) {\n const projectRoot = process.cwd()\n const packageJsonPath = path.join(projectRoot, 'package.json')\n\n if (!(await pathExists(packageJsonPath))) {\n throw new Error('No package.json found in the current directory. Run uselets init from your project root.')\n }\n\n const projectPackageJson = await readJsonFile<PackageJson>(packageJsonPath)\n const theme = options.theme ?? (await promptTheme('max'))\n const cssPath = options.css ?? (await promptCssPath(DEFAULT_CSS_PATH))\n const entryPath = await resolveEntryPath(projectRoot, options.entry)\n const shouldInstallSkill = options.installSkill ?? (await promptInstallSkill())\n\n await installMissingDependencies(projectRoot, projectPackageJson)\n await ensurePostcssConfig(projectRoot)\n await ensureGlobalCss(projectRoot, cssPath, theme)\n await ensureFontImport(projectRoot, entryPath)\n\n if (shouldInstallSkill) {\n await installSkill(ALL_AGENT_TARGETS)\n }\n}\n\nasync function main() {\n const program = new Command()\n\n program.name('uselets').description('CLI for @uselets/ui').showHelpAfterError()\n\n program\n .command('skill')\n .description(`Reinstall the ${SKILL_NAME} agent skill`)\n .addOption(\n new Option('--agent <agent>', 'Target agent directory').choices(['codex', 'claude', 'all']).default('all')\n )\n .action(async (options: { agent: AgentOption }) => {\n await installSkill(resolveTargets(options.agent))\n })\n\n program\n .command('init')\n .description('Set up @uselets/ui in this project')\n .addOption(new Option('--theme <theme>', 'Theme to import').choices(['max', 'gomax']))\n .option('--css <path>', 'Global CSS file path')\n .option('--entry <path>', 'App entry file to import the font in (for example app/layout.tsx or src/main.tsx)')\n .option('--install-skill', 'Install the agent skill without prompting')\n .option('--no-install-skill', 'Skip the agent skill prompt and installation')\n .action(async (options: InitOptions) => {\n await initProject(options)\n })\n\n if (process.argv.length <= 2) {\n program.outputHelp()\n return\n }\n\n await program.parseAsync()\n}\n\nmain().catch((error: unknown) => {\n console.error(error instanceof Error ? error.message : error)\n process.exitCode = 1\n})\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{cn as e}from"./lib/utils.js";const t=e(`group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+(--spacing(7)))] origin-(--transform-origin) overflow-hidden rounded-lg bg-popover/70 text-popover-foreground shadow-md ring-1 ring-foreground/10`,`before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150`,`data-[chips=true]:min-w-(--anchor-width)`,`duration-100 animate-none! data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95`,`data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2`,`*:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none`,`**:data-[slot$=-item]:focus:bg-foreground/10 **:data-[slot$=-item]:data-highlighted:bg-foreground/10 **:data-[slot$=-separator]:bg-foreground/5 **:data-[slot$=-trigger]:focus:bg-foreground/10 **:data-[slot$=-trigger]:aria-expanded:bg-foreground/10!`,`**:data-[variant=destructive]:focus:bg-foreground/10! **:data-[variant=destructive]:text-accent-foreground! **:data-[variant=destructive]:**:text-accent-foreground!`),n=e(`no-scrollbar max-h-[min(calc(--spacing(72)-(--spacing(9))),calc(var(--available-height)-(--spacing(9))))] scroll-py-1 overflow-y-auto overscroll-contain p-1`,`data-empty:p-0`),r=e(`relative flex w-full cursor-default items-center gap-2 rounded-md py-1 pl-1.5 text-sm outline-hidden select-none`,`[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,`data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground`,`data-disabled:pointer-events-none data-disabled:opacity-50`),i=e(`px-2 py-1.5 text-xs text-muted-foreground`),a=e(`hidden w-full justify-center py-2 text-center text-sm text-muted-foreground`,`group-data-empty/combobox-content:flex`),o=e(`-mx-1 my-1 h-px bg-border`);export{t as a,n as i,i as n,o,r,a as t};
|
|
2
|
+
//# sourceMappingURL=combobox-styles-CZ0aJayc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combobox-styles-CZ0aJayc.js","names":["comboboxPopupClassName","cn","comboboxListClassName","comboboxItemClassName","comboboxGroupLabelClassName","comboboxEmptyClassName","comboboxSeparatorClassName"],"sources":["../src/utils/combobox-styles.ts"],"sourcesContent":["import { cn } from '../lib/utils'\n\n// Classes shared by `Combobox` and `Autocomplete`, which render the same Base UI popup parts.\n\nexport const comboboxPopupClassName = cn(\n 'group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+(--spacing(7)))] origin-(--transform-origin) overflow-hidden rounded-lg bg-popover/70 text-popover-foreground shadow-md ring-1 ring-foreground/10',\n 'before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150',\n 'data-[chips=true]:min-w-(--anchor-width)',\n 'duration-100 animate-none! data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95',\n 'data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n '*:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none',\n '**:data-[slot$=-item]:focus:bg-foreground/10 **:data-[slot$=-item]:data-highlighted:bg-foreground/10 **:data-[slot$=-separator]:bg-foreground/5 **:data-[slot$=-trigger]:focus:bg-foreground/10 **:data-[slot$=-trigger]:aria-expanded:bg-foreground/10!',\n '**:data-[variant=destructive]:focus:bg-foreground/10! **:data-[variant=destructive]:text-accent-foreground! **:data-[variant=destructive]:**:text-accent-foreground!'\n)\n\nexport const comboboxListClassName = cn(\n 'no-scrollbar max-h-[min(calc(--spacing(72)-(--spacing(9))),calc(var(--available-height)-(--spacing(9))))] scroll-py-1 overflow-y-auto overscroll-contain p-1',\n 'data-empty:p-0'\n)\n\n// Without the end padding: `Combobox` reserves room for its check indicator, `Autocomplete` has none.\nexport const comboboxItemClassName = cn(\n 'relative flex w-full cursor-default items-center gap-2 rounded-md py-1 pl-1.5 text-sm outline-hidden select-none',\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n 'data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground',\n 'data-disabled:pointer-events-none data-disabled:opacity-50'\n)\n\nexport const comboboxGroupLabelClassName = cn('px-2 py-1.5 text-xs text-muted-foreground')\n\nexport const comboboxEmptyClassName = cn(\n 'hidden w-full justify-center py-2 text-center text-sm text-muted-foreground',\n 'group-data-empty/combobox-content:flex'\n)\n\nexport const comboboxSeparatorClassName = cn('-mx-1 my-1 h-px bg-border')\n"],"mappings":"A,oCAIA,MAAaA,EAAyBC,EACpC,4RACA,uJACA,2CACA,kKACA,yPACA,mNACA,2PACA,sKACF,EAEaC,EAAwBD,EACnC,+JACA,gBACF,EAGaE,EAAwBF,EACnC,mHACA,oFACA,+IACA,4DACF,EAEaG,EAA8BH,EAAG,2CAA2C,EAE5EI,EAAyBJ,EACpC,8EACA,wCACF,EAEaK,EAA6BL,EAAG,2BAA2B,E"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { t as __name } from "../rolldown-runtime-BhWHdk3m.js";
|
|
2
|
-
import { t as AsChildPrimitiveProps } from "../as-child-
|
|
2
|
+
import { t as AsChildPrimitiveProps } from "../as-child-T9W73ZYU.js";
|
|
3
3
|
import { Accordion as Accordion$1 } from "@base-ui/react/accordion";
|
|
4
4
|
import * as React from "react";
|
|
5
|
-
//#region src/components/accordion.d.ts
|
|
6
5
|
export type AccordionProps = AsChildPrimitiveProps<typeof Accordion$1.Root>;
|
|
7
6
|
export type AccordionItemProps = AsChildPrimitiveProps<typeof Accordion$1.Item>;
|
|
8
7
|
export type AccordionTriggerProps = AsChildPrimitiveProps<typeof Accordion$1.Trigger>;
|
|
@@ -14,6 +13,5 @@ declare function Accordion({ className, asChild, children, ...props }: Accordion
|
|
|
14
13
|
declare function AccordionItem({ className, asChild, children, ...props }: AccordionItemProps): React.JSX.Element;
|
|
15
14
|
declare function AccordionTrigger({ className, children, asChild, ...props }: AccordionTriggerProps): React.JSX.Element;
|
|
16
15
|
declare function AccordionContent({ className, children, ...props }: AccordionContentProps): React.JSX.Element;
|
|
17
|
-
//#endregion
|
|
18
16
|
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger };
|
|
19
17
|
//# sourceMappingURL=accordion.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordion.js","names":["AccordionPrimitive","resolveClassName","Accordion$1","props","cn","className","state","toAsChildRenderProps","asChild","children","Fragment","IconChevronDown","IconChevronUp"],"sources":["../../src/components/accordion.tsx"],"sourcesContent":["import type * as React from 'react'\n\nimport { Accordion as AccordionPrimitive } from '@base-ui/react/accordion'\nimport { IconChevronDown, IconChevronUp } from '@tabler/icons-react'\n\nimport { type AsChildPrimitiveProps, toAsChildRenderProps } from '../lib/as-child'\nimport { cn } from '../lib/utils'\nimport { resolveClassName } from '../utils/resolve-class-name'\n\nexport type AccordionProps = AsChildPrimitiveProps<typeof AccordionPrimitive.Root>\n\nexport type AccordionItemProps = AsChildPrimitiveProps<typeof AccordionPrimitive.Item>\n\nexport type AccordionTriggerProps = AsChildPrimitiveProps<typeof AccordionPrimitive.Trigger>\n\nexport type AccordionContentProps = Omit<\n React.ComponentProps<typeof AccordionPrimitive.Panel>,\n 'render' | 'className'\n> & {\n /** Classes for the content wrapper inside the panel. */\n className?: string\n}\n\nfunction Accordion({ className, asChild, children, ...props }: AccordionProps) {\n return (\n <AccordionPrimitive.Root\n data-slot=\"accordion\"\n className={(state) => cn('flex w-full flex-col border rounded-sm', resolveClassName(className, state))}\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nfunction AccordionItem({ className, asChild, children, ...props }: AccordionItemProps) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={(state) => cn('not-last:border-b px-4', resolveClassName(className, state))}\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nfunction AccordionTrigger({ className, children, asChild, ...props }: AccordionTriggerProps) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={(state) =>\n cn(\n 'group/accordion-trigger relative flex flex-1 items-start justify-between rounded-lg border border-transparent py-2.5 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:after:border-ring data-disabled:pointer-events-none data-disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground',\n resolveClassName(className, state)\n )\n }\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n >\n {!asChild && children}\n {!asChild && (\n <>\n <IconChevronDown\n data-slot=\"accordion-trigger-icon\"\n className=\"pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden\"\n />\n <IconChevronUp\n data-slot=\"accordion-trigger-icon\"\n className=\"pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline\"\n />\n </>\n )}\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n}\n\nfunction AccordionContent({ className, children, ...props }: AccordionContentProps) {\n return (\n <AccordionPrimitive.Panel\n data-slot=\"accordion-content\"\n className=\"wrap-break-word overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up\"\n {...props}\n >\n <div\n className={cn(\n 'h-(--accordion-panel-height) pt-0 pb-2.5',\n 'data-starting-style:h-0 data-ending-style:h-0',\n className\n )}\n >\n {children}\n </div>\n </AccordionPrimitive.Panel>\n )\n}\n\nexport { Accordion, AccordionContent, AccordionItem, AccordionTrigger }\n"],"mappings":"2XAuBA,SAAS,UAAU,CAAE,YAAW,UAAS,WAAU,GAAGG,GAAyB,CAC7E,MACE,kBAACH,EAAmB,KAApB,CACE,YAAU,YACV,UAAY,GAAUI,EAAG,yCAA0CH,EAAiBI,EAAWC,CAAK,CAAC,EACrG,GAAIH,EACJ,GAAII,EAAqBC,EAASC,CAAQ,CAC3C,CAAA,CAEL,CAEA,SAAS,cAAc,CAAE,YAAW,UAAS,WAAU,GAAGN,GAA6B,CACrF,MACE,kBAACH,EAAmB,KAApB,CACE,YAAU,iBACV,UAAY,GAAUI,EAAG,yBAA0BH,EAAiBI,EAAWC,CAAK,CAAC,EACrF,GAAIH,EACJ,GAAII,EAAqBC,EAASC,CAAQ,CAC3C,CAAA,CAEL,CAEA,SAAS,iBAAiB,CAAE,YAAW,WAAU,UAAS,GAAGN,GAAgC,CAC3F,MACE,kBAACH,EAAmB,OAApB,CAA2B,UAAU,OACnC,SAAA,kBAACA,EAAmB,QAApB,CACE,YAAU,oBACV,UAAY,GACVI,EACE,6fACAH,EAAiBI,EAAWC,CAAK,CACnC,EAEF,GAAIH,EACJ,GAAII,EAAqBC,EAASC,CAAQ,EAT5C,SAAA,CAWG,CAACD,GAAWC,EACZ,CAACD,GACA,kBAAAE,EAAA,CAAA,SAAA,CACE,kBAACC,EAAD,CACE,YAAU,yBACV,UAAU,2EACX,CAAA,EACD,kBAACC,EAAD,CACE,YAAU,yBACV,UAAU,kFACX,CAAA,CACD,CAAA,CAAA,CAEsB,
|
|
1
|
+
{"version":3,"file":"accordion.js","names":["AccordionPrimitive","resolveClassName","Accordion$1","props","cn","className","state","toAsChildRenderProps","asChild","children","Fragment","IconChevronDown","IconChevronUp"],"sources":["../../src/components/accordion.tsx"],"sourcesContent":["import type * as React from 'react'\n\nimport { Accordion as AccordionPrimitive } from '@base-ui/react/accordion'\nimport { IconChevronDown, IconChevronUp } from '@tabler/icons-react'\n\nimport { type AsChildPrimitiveProps, toAsChildRenderProps } from '../lib/as-child'\nimport { cn } from '../lib/utils'\nimport { resolveClassName } from '../utils/resolve-class-name'\n\nexport type AccordionProps = AsChildPrimitiveProps<typeof AccordionPrimitive.Root>\n\nexport type AccordionItemProps = AsChildPrimitiveProps<typeof AccordionPrimitive.Item>\n\nexport type AccordionTriggerProps = AsChildPrimitiveProps<typeof AccordionPrimitive.Trigger>\n\nexport type AccordionContentProps = Omit<\n React.ComponentProps<typeof AccordionPrimitive.Panel>,\n 'render' | 'className'\n> & {\n /** Classes for the content wrapper inside the panel. */\n className?: string\n}\n\nfunction Accordion({ className, asChild, children, ...props }: AccordionProps) {\n return (\n <AccordionPrimitive.Root\n data-slot=\"accordion\"\n className={(state) => cn('flex w-full flex-col border rounded-sm', resolveClassName(className, state))}\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nfunction AccordionItem({ className, asChild, children, ...props }: AccordionItemProps) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={(state) => cn('not-last:border-b px-4', resolveClassName(className, state))}\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nfunction AccordionTrigger({ className, children, asChild, ...props }: AccordionTriggerProps) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={(state) =>\n cn(\n 'group/accordion-trigger relative flex flex-1 items-start justify-between rounded-lg border border-transparent py-2.5 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:after:border-ring data-disabled:pointer-events-none data-disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground',\n resolveClassName(className, state)\n )\n }\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n >\n {!asChild && children}\n {!asChild && (\n <>\n <IconChevronDown\n data-slot=\"accordion-trigger-icon\"\n className=\"pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden\"\n />\n <IconChevronUp\n data-slot=\"accordion-trigger-icon\"\n className=\"pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline\"\n />\n </>\n )}\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n}\n\nfunction AccordionContent({ className, children, ...props }: AccordionContentProps) {\n return (\n <AccordionPrimitive.Panel\n data-slot=\"accordion-content\"\n className=\"wrap-break-word overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up\"\n {...props}\n >\n <div\n className={cn(\n 'h-(--accordion-panel-height) pt-0 pb-2.5',\n 'data-starting-style:h-0 data-ending-style:h-0',\n className\n )}\n >\n {children}\n </div>\n </AccordionPrimitive.Panel>\n )\n}\n\nexport { Accordion, AccordionContent, AccordionItem, AccordionTrigger }\n"],"mappings":"A,2XAuBA,SAAS,UAAU,CAAE,YAAW,UAAS,WAAU,GAAGG,GAAyB,CAC7E,MACE,kBAACH,EAAmB,KAApB,CACE,YAAU,YACV,UAAY,GAAUI,EAAG,yCAA0CH,EAAiBI,EAAWC,CAAK,CAAC,EACrG,GAAIH,EACJ,GAAII,EAAqBC,EAASC,CAAQ,CAC3C,CAAA,CAEL,CAEA,SAAS,cAAc,CAAE,YAAW,UAAS,WAAU,GAAGN,GAA6B,CACrF,MACE,kBAACH,EAAmB,KAApB,CACE,YAAU,iBACV,UAAY,GAAUI,EAAG,yBAA0BH,EAAiBI,EAAWC,CAAK,CAAC,EACrF,GAAIH,EACJ,GAAII,EAAqBC,EAASC,CAAQ,CAC3C,CAAA,CAEL,CAEA,SAAS,iBAAiB,CAAE,YAAW,WAAU,UAAS,GAAGN,GAAgC,CAC3F,MACE,kBAACH,EAAmB,OAApB,CAA2B,UAAU,OACnC,SAAA,kBAACA,EAAmB,QAApB,CACE,YAAU,oBACV,UAAY,GACVI,EACE,6fACAH,EAAiBI,EAAWC,CAAK,CACnC,EAEF,GAAIH,EACJ,GAAII,EAAqBC,EAASC,CAAQ,EAT5C,SAAA,CAWG,CAACD,GAAWC,EACZ,CAACD,GACA,kBAAAE,EAAA,CAAA,SAAA,CACE,kBAACC,EAAD,CACE,YAAU,yBACV,UAAU,2EACX,CAAA,EACD,kBAACC,EAAD,CACE,YAAU,yBACV,UAAU,kFACX,CAAA,CACD,CAAA,CAAA,CAEsB,C,EACH,CAAA,CAE/B,CAEA,SAAS,iBAAiB,CAAE,YAAW,WAAU,GAAGT,GAAgC,CAClF,MACE,kBAACH,EAAmB,MAApB,CACE,YAAU,oBACV,UAAU,4GACV,GAAIG,EAEJ,SAAA,kBAAC,MAAD,CACE,UAAWC,EACT,2CACA,gDACAC,CACF,EAEC,UACE,CAAA,CACmB,CAAA,CAE9B,C"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { t as __name } from "../rolldown-runtime-BhWHdk3m.js";
|
|
2
|
-
import { t as AsChildPrimitiveProps } from "../as-child-
|
|
2
|
+
import { t as AsChildPrimitiveProps } from "../as-child-T9W73ZYU.js";
|
|
3
3
|
import { Button } from "./button.js";
|
|
4
4
|
import * as React from "react";
|
|
5
5
|
import { AlertDialog as AlertDialog$1 } from "@base-ui/react/alert-dialog";
|
|
6
|
-
//#region src/components/alert-dialog.d.ts
|
|
7
6
|
export type AlertDialogProps = React.ComponentProps<typeof AlertDialog$1.Root>;
|
|
8
7
|
export type AlertDialogTriggerProps = AsChildPrimitiveProps<typeof AlertDialog$1.Trigger>;
|
|
9
8
|
export type AlertDialogPortalProps = React.ComponentProps<typeof AlertDialog$1.Portal>;
|
|
@@ -36,6 +35,5 @@ declare function AlertDialogTitle({ className, asChild, children, ...props }: Al
|
|
|
36
35
|
declare function AlertDialogDescription({ className, asChild, children, ...props }: AlertDialogDescriptionProps): React.JSX.Element;
|
|
37
36
|
declare function AlertDialogAction({ className, variant, color, size, asChild, children, ...props }: AlertDialogActionProps): React.JSX.Element;
|
|
38
37
|
declare function AlertDialogCancel({ className, variant, color, size, asChild, children, ...props }: AlertDialogCancelProps): React.JSX.Element;
|
|
39
|
-
//#endregion
|
|
40
38
|
export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger };
|
|
41
39
|
//# sourceMappingURL=alert-dialog.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alert-dialog.js","names":["AlertDialogPrimitive","resolveClassName","AlertDialog$1","props","toAsChildRenderProps","asChild","children","cn","className","state","overlayProps","size","buttonProps","Button"],"sources":["../../src/components/alert-dialog.tsx"],"sourcesContent":["import type * as React from 'react'\n\nimport { AlertDialog as AlertDialogPrimitive } from '@base-ui/react/alert-dialog'\n\nimport { type AsChildPrimitiveProps, toAsChildRenderProps } from '../lib/as-child'\nimport { cn } from '../lib/utils'\nimport { resolveClassName } from '../utils/resolve-class-name'\nimport { Button } from './button'\n\nexport type AlertDialogProps = React.ComponentProps<typeof AlertDialogPrimitive.Root>\n\nexport type AlertDialogTriggerProps = AsChildPrimitiveProps<typeof AlertDialogPrimitive.Trigger>\n\nexport type AlertDialogPortalProps = React.ComponentProps<typeof AlertDialogPrimitive.Portal>\n\nexport type AlertDialogOverlayProps = AsChildPrimitiveProps<typeof AlertDialogPrimitive.Backdrop>\n\nexport type AlertDialogContentProps = AsChildPrimitiveProps<typeof AlertDialogPrimitive.Popup> &\n Pick<AlertDialogPortalProps, 'keepMounted'> & {\n /**\n * Width of the dialog; `md` also places `AlertDialogMedia` next to the text on larger screens.\n * @default 'md'\n */\n size?: 'sm' | 'md'\n /** Props passed to the overlay rendered behind the dialog. */\n overlayProps?: AlertDialogOverlayProps\n }\n\nexport type AlertDialogHeaderProps = React.ComponentProps<'div'>\n\nexport type AlertDialogFooterProps = React.ComponentProps<'div'>\n\nexport type AlertDialogMediaProps = React.ComponentProps<'div'>\n\nexport type AlertDialogTitleProps = AsChildPrimitiveProps<typeof AlertDialogPrimitive.Title>\n\nexport type AlertDialogDescriptionProps = AsChildPrimitiveProps<typeof AlertDialogPrimitive.Description>\n\nexport type AlertDialogActionProps = Omit<AsChildPrimitiveProps<typeof AlertDialogPrimitive.Close>, 'className'> &\n Pick<React.ComponentProps<typeof Button>, 'className' | 'variant' | 'color' | 'size'>\n\nexport type AlertDialogCancelProps = Omit<AsChildPrimitiveProps<typeof AlertDialogPrimitive.Close>, 'className'> &\n Pick<React.ComponentProps<typeof Button>, 'className' | 'variant' | 'color' | 'size'>\n\nfunction AlertDialog({ ...props }: AlertDialogProps) {\n return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />\n}\n\nfunction AlertDialogTrigger({ asChild, children, ...props }: AlertDialogTriggerProps) {\n return (\n <AlertDialogPrimitive.Trigger\n data-slot=\"alert-dialog-trigger\"\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nfunction AlertDialogPortal({ ...props }: AlertDialogPortalProps) {\n return <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n}\n\nfunction AlertDialogOverlay({ className, forceRender = true, asChild, children, ...props }: AlertDialogOverlayProps) {\n return (\n <AlertDialogPrimitive.Backdrop\n data-slot=\"alert-dialog-overlay\"\n forceRender={forceRender}\n className={(state) =>\n cn(\n 'fixed inset-0 z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0',\n resolveClassName(className, state)\n )\n }\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nfunction AlertDialogContent({\n className,\n size = 'md',\n overlayProps,\n keepMounted,\n asChild,\n children,\n ...props\n}: AlertDialogContentProps) {\n return (\n <AlertDialogPortal keepMounted={keepMounted}>\n <AlertDialogOverlay {...overlayProps} />\n <AlertDialogPrimitive.Popup\n data-slot=\"alert-dialog-content\"\n data-size={size}\n className={(state) =>\n cn(\n 'group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-background p-4 ring-1 ring-foreground/10 duration-100 outline-none data-[size=md]:max-w-xs data-[size=sm]:max-w-xs data-[size=md]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95',\n resolveClassName(className, state)\n )\n }\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n </AlertDialogPortal>\n )\n}\n\nfunction AlertDialogHeader({ className, ...props }: AlertDialogHeaderProps) {\n return (\n <div\n data-slot=\"alert-dialog-header\"\n className={cn(\n 'grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=md]/alert-dialog-content:place-items-start sm:group-data-[size=md]/alert-dialog-content:text-left sm:group-data-[size=md]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogFooter({ className, ...props }: AlertDialogFooterProps) {\n return (\n <div\n data-slot=\"alert-dialog-footer\"\n className={cn(\n '-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogMedia({ className, ...props }: AlertDialogMediaProps) {\n return (\n <div\n data-slot=\"alert-dialog-media\"\n className={cn(\n \"mb-2 inline-flex size-10 items-center justify-center rounded-md bg-muted sm:group-data-[size=md]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-6\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogTitle({ className, asChild, children, ...props }: AlertDialogTitleProps) {\n return (\n <AlertDialogPrimitive.Title\n data-slot=\"alert-dialog-title\"\n className={(state) =>\n cn(\n 'text-base font-medium sm:group-data-[size=md]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2',\n resolveClassName(className, state)\n )\n }\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nfunction AlertDialogDescription({ className, asChild, children, ...props }: AlertDialogDescriptionProps) {\n return (\n <AlertDialogPrimitive.Description\n data-slot=\"alert-dialog-description\"\n className={(state) =>\n cn(\n 'text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground',\n resolveClassName(className, state)\n )\n }\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nfunction AlertDialogAction({\n className,\n variant = 'solid',\n color = 'primary',\n size = 'md',\n asChild,\n children,\n ...props\n}: AlertDialogActionProps) {\n const buttonProps = { variant, color, size, className: cn(className) }\n\n // With `asChild`, the Button merges the close behavior into the consumer's element instead of a <button>.\n return (\n <AlertDialogPrimitive.Close\n data-slot=\"alert-dialog-action\"\n render={\n asChild ? (\n <Button {...buttonProps} asChild>\n {children}\n </Button>\n ) : (\n <Button {...buttonProps} />\n )\n }\n {...props}\n >\n {asChild ? undefined : children}\n </AlertDialogPrimitive.Close>\n )\n}\n\nfunction AlertDialogCancel({\n className,\n variant = 'outline',\n color = 'primary',\n size = 'md',\n asChild,\n children,\n ...props\n}: AlertDialogCancelProps) {\n const buttonProps = { variant, color, size, className: cn(className) }\n\n // With `asChild`, the Button merges the close behavior into the consumer's element instead of a <button>.\n return (\n <AlertDialogPrimitive.Close\n data-slot=\"alert-dialog-cancel\"\n render={\n asChild ? (\n <Button {...buttonProps} asChild>\n {children}\n </Button>\n ) : (\n <Button {...buttonProps} />\n )\n }\n {...props}\n >\n {asChild ? undefined : children}\n </AlertDialogPrimitive.Close>\n )\n}\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogMedia,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"alert-dialog.js","names":["AlertDialogPrimitive","resolveClassName","AlertDialog$1","props","toAsChildRenderProps","asChild","children","cn","className","state","overlayProps","size","buttonProps","Button"],"sources":["../../src/components/alert-dialog.tsx"],"sourcesContent":["import type * as React from 'react'\n\nimport { AlertDialog as AlertDialogPrimitive } from '@base-ui/react/alert-dialog'\n\nimport { type AsChildPrimitiveProps, toAsChildRenderProps } from '../lib/as-child'\nimport { cn } from '../lib/utils'\nimport { resolveClassName } from '../utils/resolve-class-name'\nimport { Button } from './button'\n\nexport type AlertDialogProps = React.ComponentProps<typeof AlertDialogPrimitive.Root>\n\nexport type AlertDialogTriggerProps = AsChildPrimitiveProps<typeof AlertDialogPrimitive.Trigger>\n\nexport type AlertDialogPortalProps = React.ComponentProps<typeof AlertDialogPrimitive.Portal>\n\nexport type AlertDialogOverlayProps = AsChildPrimitiveProps<typeof AlertDialogPrimitive.Backdrop>\n\nexport type AlertDialogContentProps = AsChildPrimitiveProps<typeof AlertDialogPrimitive.Popup> &\n Pick<AlertDialogPortalProps, 'keepMounted'> & {\n /**\n * Width of the dialog; `md` also places `AlertDialogMedia` next to the text on larger screens.\n * @default 'md'\n */\n size?: 'sm' | 'md'\n /** Props passed to the overlay rendered behind the dialog. */\n overlayProps?: AlertDialogOverlayProps\n }\n\nexport type AlertDialogHeaderProps = React.ComponentProps<'div'>\n\nexport type AlertDialogFooterProps = React.ComponentProps<'div'>\n\nexport type AlertDialogMediaProps = React.ComponentProps<'div'>\n\nexport type AlertDialogTitleProps = AsChildPrimitiveProps<typeof AlertDialogPrimitive.Title>\n\nexport type AlertDialogDescriptionProps = AsChildPrimitiveProps<typeof AlertDialogPrimitive.Description>\n\nexport type AlertDialogActionProps = Omit<AsChildPrimitiveProps<typeof AlertDialogPrimitive.Close>, 'className'> &\n Pick<React.ComponentProps<typeof Button>, 'className' | 'variant' | 'color' | 'size'>\n\nexport type AlertDialogCancelProps = Omit<AsChildPrimitiveProps<typeof AlertDialogPrimitive.Close>, 'className'> &\n Pick<React.ComponentProps<typeof Button>, 'className' | 'variant' | 'color' | 'size'>\n\nfunction AlertDialog({ ...props }: AlertDialogProps) {\n return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />\n}\n\nfunction AlertDialogTrigger({ asChild, children, ...props }: AlertDialogTriggerProps) {\n return (\n <AlertDialogPrimitive.Trigger\n data-slot=\"alert-dialog-trigger\"\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nfunction AlertDialogPortal({ ...props }: AlertDialogPortalProps) {\n return <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n}\n\nfunction AlertDialogOverlay({ className, forceRender = true, asChild, children, ...props }: AlertDialogOverlayProps) {\n return (\n <AlertDialogPrimitive.Backdrop\n data-slot=\"alert-dialog-overlay\"\n forceRender={forceRender}\n className={(state) =>\n cn(\n 'fixed inset-0 z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0',\n resolveClassName(className, state)\n )\n }\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nfunction AlertDialogContent({\n className,\n size = 'md',\n overlayProps,\n keepMounted,\n asChild,\n children,\n ...props\n}: AlertDialogContentProps) {\n return (\n <AlertDialogPortal keepMounted={keepMounted}>\n <AlertDialogOverlay {...overlayProps} />\n <AlertDialogPrimitive.Popup\n data-slot=\"alert-dialog-content\"\n data-size={size}\n className={(state) =>\n cn(\n 'group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-background p-4 ring-1 ring-foreground/10 duration-100 outline-none data-[size=md]:max-w-xs data-[size=sm]:max-w-xs data-[size=md]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95',\n resolveClassName(className, state)\n )\n }\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n </AlertDialogPortal>\n )\n}\n\nfunction AlertDialogHeader({ className, ...props }: AlertDialogHeaderProps) {\n return (\n <div\n data-slot=\"alert-dialog-header\"\n className={cn(\n 'grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=md]/alert-dialog-content:place-items-start sm:group-data-[size=md]/alert-dialog-content:text-left sm:group-data-[size=md]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogFooter({ className, ...props }: AlertDialogFooterProps) {\n return (\n <div\n data-slot=\"alert-dialog-footer\"\n className={cn(\n '-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogMedia({ className, ...props }: AlertDialogMediaProps) {\n return (\n <div\n data-slot=\"alert-dialog-media\"\n className={cn(\n \"mb-2 inline-flex size-10 items-center justify-center rounded-md bg-muted sm:group-data-[size=md]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-6\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogTitle({ className, asChild, children, ...props }: AlertDialogTitleProps) {\n return (\n <AlertDialogPrimitive.Title\n data-slot=\"alert-dialog-title\"\n className={(state) =>\n cn(\n 'text-base font-medium sm:group-data-[size=md]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2',\n resolveClassName(className, state)\n )\n }\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nfunction AlertDialogDescription({ className, asChild, children, ...props }: AlertDialogDescriptionProps) {\n return (\n <AlertDialogPrimitive.Description\n data-slot=\"alert-dialog-description\"\n className={(state) =>\n cn(\n 'text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground',\n resolveClassName(className, state)\n )\n }\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nfunction AlertDialogAction({\n className,\n variant = 'solid',\n color = 'primary',\n size = 'md',\n asChild,\n children,\n ...props\n}: AlertDialogActionProps) {\n const buttonProps = { variant, color, size, className: cn(className) }\n\n // With `asChild`, the Button merges the close behavior into the consumer's element instead of a <button>.\n return (\n <AlertDialogPrimitive.Close\n data-slot=\"alert-dialog-action\"\n render={\n asChild ? (\n <Button {...buttonProps} asChild>\n {children}\n </Button>\n ) : (\n <Button {...buttonProps} />\n )\n }\n {...props}\n >\n {asChild ? undefined : children}\n </AlertDialogPrimitive.Close>\n )\n}\n\nfunction AlertDialogCancel({\n className,\n variant = 'outline',\n color = 'primary',\n size = 'md',\n asChild,\n children,\n ...props\n}: AlertDialogCancelProps) {\n const buttonProps = { variant, color, size, className: cn(className) }\n\n // With `asChild`, the Button merges the close behavior into the consumer's element instead of a <button>.\n return (\n <AlertDialogPrimitive.Close\n data-slot=\"alert-dialog-cancel\"\n render={\n asChild ? (\n <Button {...buttonProps} asChild>\n {children}\n </Button>\n ) : (\n <Button {...buttonProps} />\n )\n }\n {...props}\n >\n {asChild ? undefined : children}\n </AlertDialogPrimitive.Close>\n )\n}\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogMedia,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger\n}\n"],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { t as __name } from "../rolldown-runtime-BhWHdk3m.js";
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import { VariantProps } from "class-variance-authority";
|
|
4
|
-
//#region src/components/alert.d.ts
|
|
5
4
|
declare const alertVariants: (props?: ({
|
|
6
5
|
variant?: "default" | "destructive" | null | undefined;
|
|
7
6
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
@@ -13,6 +12,5 @@ declare function Alert({ className, variant, ...props }: AlertProps): React.JSX.
|
|
|
13
12
|
declare function AlertTitle({ className, ...props }: AlertTitleProps): React.JSX.Element;
|
|
14
13
|
declare function AlertDescription({ className, ...props }: AlertDescriptionProps): React.JSX.Element;
|
|
15
14
|
declare function AlertAction({ className, ...props }: AlertActionProps): React.JSX.Element;
|
|
16
|
-
//#endregion
|
|
17
15
|
export { Alert, AlertAction, AlertDescription, AlertTitle };
|
|
18
16
|
//# sourceMappingURL=alert.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alert.js","names":["alertVariants","cva","props","cn","className"],"sources":["../../src/components/alert.tsx"],"sourcesContent":["import type * as React from 'react'\n\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nimport { cn } from '../lib/utils'\n\nconst alertVariants = cva(\n \"grid gap-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4 w-full relative group/alert\",\n {\n variants: {\n variant: {\n default: 'bg-card text-card-foreground',\n destructive: 'text-destructive bg-card *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current'\n }\n },\n defaultVariants: {\n variant: 'default'\n }\n }\n)\n\nexport type AlertProps = React.ComponentProps<'div'> & VariantProps<typeof alertVariants>\n\nexport type AlertTitleProps = React.ComponentProps<'div'>\n\nexport type AlertDescriptionProps = React.ComponentProps<'div'>\n\nexport type AlertActionProps = React.ComponentProps<'div'>\n\nfunction Alert({ className, variant, ...props }: AlertProps) {\n return <div data-slot=\"alert\" role=\"alert\" className={cn(alertVariants({ variant }), className)} {...props} />\n}\n\nfunction AlertTitle({ className, ...props }: AlertTitleProps) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n 'font-medium group-has-[>svg]/alert:col-start-2',\n '[&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDescription({ className, ...props }: AlertDescriptionProps) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n 'text-muted-foreground text-sm text-balance md:text-pretty [&_p:not(:last-child)]:mb-4',\n '[&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertAction({ className, ...props }: AlertActionProps) {\n return <div data-slot=\"alert-action\" className={cn('absolute top-2 right-2', className)} {...props} />\n}\n\nexport { Alert, AlertAction, AlertDescription, AlertTitle }\n"],"mappings":"oKAMA,MAAMA,EAAgBC,EACpB,4TACA,CACE,SAAU,CACR,QAAS,CACP,QAAS,+BACT,YAAa,mGACf,CACF,EACA,gBAAiB,CACf,QAAS,SACX,CACF,CACF,EAUA,SAAS,MAAM,CAAE,YAAW,UAAS,GAAGC,GAAqB,CAC3D,MAAO,kBAAC,MAAD,CAAK,YAAU,QAAQ,KAAK,QAAQ,UAAWC,EAAGH,EAAc,CAAE,SAAQ,CAAC,EAAGI,CAAS,EAAG,GAAIF,CAAQ,CAAA,CAC/G,CAEA,SAAS,WAAW,CAAE,YAAW,GAAGA,GAA0B,CAC5D,MACE,kBAAC,MAAD,CACE,YAAU,cACV,UAAWC,EACT,iDACA,uEACAC,CACF,EACA,GAAIF,CACL,CAAA,CAEL,CAEA,SAAS,iBAAiB,CAAE,YAAW,GAAGA,GAAgC,CACxE,MACE,kBAAC,MAAD,CACE,YAAU,oBACV,UAAWC,EACT,wFACA,uEACAC,CACF,EACA,GAAIF,CACL,CAAA,CAEL,CAEA,SAAS,YAAY,CAAE,YAAW,GAAGA,GAA2B,CAC9D,MAAO,kBAAC,MAAD,CAAK,YAAU,eAAe,UAAWC,EAAG,yBAA0BC,CAAS,EAAG,GAAIF,CAAQ,CAAA,CACvG"}
|
|
1
|
+
{"version":3,"file":"alert.js","names":["alertVariants","cva","props","cn","className"],"sources":["../../src/components/alert.tsx"],"sourcesContent":["import type * as React from 'react'\n\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nimport { cn } from '../lib/utils'\n\nconst alertVariants = cva(\n \"grid gap-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4 w-full relative group/alert\",\n {\n variants: {\n variant: {\n default: 'bg-card text-card-foreground',\n destructive: 'text-destructive bg-card *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current'\n }\n },\n defaultVariants: {\n variant: 'default'\n }\n }\n)\n\nexport type AlertProps = React.ComponentProps<'div'> & VariantProps<typeof alertVariants>\n\nexport type AlertTitleProps = React.ComponentProps<'div'>\n\nexport type AlertDescriptionProps = React.ComponentProps<'div'>\n\nexport type AlertActionProps = React.ComponentProps<'div'>\n\nfunction Alert({ className, variant, ...props }: AlertProps) {\n return <div data-slot=\"alert\" role=\"alert\" className={cn(alertVariants({ variant }), className)} {...props} />\n}\n\nfunction AlertTitle({ className, ...props }: AlertTitleProps) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n 'font-medium group-has-[>svg]/alert:col-start-2',\n '[&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDescription({ className, ...props }: AlertDescriptionProps) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n 'text-muted-foreground text-sm text-balance md:text-pretty [&_p:not(:last-child)]:mb-4',\n '[&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertAction({ className, ...props }: AlertActionProps) {\n return <div data-slot=\"alert-action\" className={cn('absolute top-2 right-2', className)} {...props} />\n}\n\nexport { Alert, AlertAction, AlertDescription, AlertTitle }\n"],"mappings":"A,oKAMA,MAAMA,EAAgBC,EACpB,4TACA,CACE,SAAU,CACR,QAAS,CACP,QAAS,+BACT,YAAa,mGACf,CACF,EACA,gBAAiB,CACf,QAAS,SACX,CACF,CACF,EAUA,SAAS,MAAM,CAAE,YAAW,UAAS,GAAGC,GAAqB,CAC3D,MAAO,kBAAC,MAAD,CAAK,YAAU,QAAQ,KAAK,QAAQ,UAAWC,EAAGH,EAAc,CAAE,SAAQ,CAAC,EAAGI,CAAS,EAAG,GAAIF,CAAQ,CAAA,CAC/G,CAEA,SAAS,WAAW,CAAE,YAAW,GAAGA,GAA0B,CAC5D,MACE,kBAAC,MAAD,CACE,YAAU,cACV,UAAWC,EACT,iDACA,uEACAC,CACF,EACA,GAAIF,CACL,CAAA,CAEL,CAEA,SAAS,iBAAiB,CAAE,YAAW,GAAGA,GAAgC,CACxE,MACE,kBAAC,MAAD,CACE,YAAU,oBACV,UAAWC,EACT,wFACA,uEACAC,CACF,EACA,GAAIF,CACL,CAAA,CAEL,CAEA,SAAS,YAAY,CAAE,YAAW,GAAGA,GAA2B,CAC9D,MAAO,kBAAC,MAAD,CAAK,YAAU,eAAe,UAAWC,EAAG,yBAA0BC,CAAS,EAAG,GAAIF,CAAQ,CAAA,CACvG,C"}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import { t as __name } from "../rolldown-runtime-BhWHdk3m.js";
|
|
2
|
-
import { n as AsChildProps } from "../as-child-
|
|
2
|
+
import { n as AsChildProps } from "../as-child-T9W73ZYU.js";
|
|
3
3
|
import { VariantProps } from "class-variance-authority";
|
|
4
|
-
//#region src/components/anchor.d.ts
|
|
5
4
|
declare const anchorVariants: (props?: ({
|
|
6
5
|
size?: "lg" | "md" | "sm" | "xl" | "xs" | null | undefined;
|
|
7
6
|
underline?: "always" | "hover" | "never" | "not-hover" | null | undefined;
|
|
8
7
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
9
8
|
export type AnchorProps = AsChildProps<'a'> & VariantProps<typeof anchorVariants>;
|
|
10
9
|
declare function Anchor({ className, size, underline, ...props }: AnchorProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
|
|
11
|
-
//#endregion
|
|
12
10
|
export { Anchor, anchorVariants };
|
|
13
11
|
//# sourceMappingURL=anchor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anchor.js","names":["anchorVariants","cva","props","useAsChild","size","underline","cn","className"],"sources":["../../src/components/anchor.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority'\n\nimport { type AsChildProps, useAsChild } from '../lib/as-child'\nimport { cn } from '../lib/utils'\n\nconst anchorVariants = cva(\n 'text-primary rounded-sm underline-offset-4 transition-colors outline-none hover:text-primary/80 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-3',\n {\n variants: {\n size: {\n xs: 'text-xs',\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n xl: 'text-xl'\n },\n underline: {\n always: 'underline',\n hover: 'no-underline hover:underline',\n never: 'no-underline',\n 'not-hover': 'underline hover:no-underline'\n }\n },\n defaultVariants: {\n size: 'md',\n underline: 'hover'\n }\n }\n)\n\nexport type AnchorProps = AsChildProps<'a'> & VariantProps<typeof anchorVariants>\n\nfunction Anchor({ className, size = 'md', underline = 'hover', ...props }: AnchorProps) {\n return useAsChild('a', {\n 'data-slot': 'anchor',\n 'data-size': size,\n 'data-underline': underline,\n className: cn(anchorVariants({ size, underline }), className),\n ...props\n })\n}\n\nexport { Anchor, anchorVariants }\n"],"mappings":"4KAKA,MAAMA,EAAiBC,EACrB,4KACA,CACE,SAAU,CACR,KAAM,CACJ,GAAI,UACJ,GAAI,UACJ,GAAI,YACJ,GAAI,UACJ,GAAI,SACN,EACA,UAAW,CACT,OAAQ,YACR,MAAO,+BACP,MAAO,eACP,YAAa,8BACf,CACF,EACA,gBAAiB,CACf,KAAM,KACN,UAAW,OACb,CACF,CACF,EAIA,SAAS,OAAO,CAAE,YAAW,OAAO,KAAM,YAAY,QAAS,GAAGC,GAAsB,CACtF,OAAOC,EAAW,IAAK,CACrB,YAAa,SACb,YAAaC,EACb,iBAAkBC,EAClB,UAAWC,EAAGN,EAAe,CAAE,OAAM,WAAU,CAAC,EAAGO,CAAS,EAC5D,GAAGL,CACL,CAAC,CACH"}
|
|
1
|
+
{"version":3,"file":"anchor.js","names":["anchorVariants","cva","props","useAsChild","size","underline","cn","className"],"sources":["../../src/components/anchor.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority'\n\nimport { type AsChildProps, useAsChild } from '../lib/as-child'\nimport { cn } from '../lib/utils'\n\nconst anchorVariants = cva(\n 'text-primary rounded-sm underline-offset-4 transition-colors outline-none hover:text-primary/80 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-3',\n {\n variants: {\n size: {\n xs: 'text-xs',\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n xl: 'text-xl'\n },\n underline: {\n always: 'underline',\n hover: 'no-underline hover:underline',\n never: 'no-underline',\n 'not-hover': 'underline hover:no-underline'\n }\n },\n defaultVariants: {\n size: 'md',\n underline: 'hover'\n }\n }\n)\n\nexport type AnchorProps = AsChildProps<'a'> & VariantProps<typeof anchorVariants>\n\nfunction Anchor({ className, size = 'md', underline = 'hover', ...props }: AnchorProps) {\n return useAsChild('a', {\n 'data-slot': 'anchor',\n 'data-size': size,\n 'data-underline': underline,\n className: cn(anchorVariants({ size, underline }), className),\n ...props\n })\n}\n\nexport { Anchor, anchorVariants }\n"],"mappings":"A,4KAKA,MAAMA,EAAiBC,EACrB,4KACA,CACE,SAAU,CACR,KAAM,CACJ,GAAI,UACJ,GAAI,UACJ,GAAI,YACJ,GAAI,UACJ,GAAI,SACN,EACA,UAAW,CACT,OAAQ,YACR,MAAO,+BACP,MAAO,eACP,YAAa,8BACf,CACF,EACA,gBAAiB,CACf,KAAM,KACN,UAAW,OACb,CACF,CACF,EAIA,SAAS,OAAO,CAAE,YAAW,OAAO,KAAM,YAAY,QAAS,GAAGC,GAAsB,CACtF,OAAOC,EAAW,IAAK,CACrB,YAAa,SACb,YAAaC,EACb,iBAAkBC,EAClB,UAAWC,EAAGN,EAAe,CAAE,OAAM,WAAU,CAAC,EAAGO,CAAS,EAC5D,GAAGL,CACL,CAAC,CACH,C"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { t as __name } from "../rolldown-runtime-BhWHdk3m.js";
|
|
2
|
-
import { c as ChartLegendContentProps, m as ChartTooltipContentProps, n as ChartColorKey } from "../chart-
|
|
2
|
+
import { c as ChartLegendContentProps, m as ChartTooltipContentProps, n as ChartColorKey } from "../chart-8rgtsk95.js";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
import { Area, AreaChart as AreaChart$1 } from "recharts";
|
|
5
|
-
//#region src/components/area-chart.d.ts
|
|
6
5
|
export type AreaChartSeries = {
|
|
7
6
|
/** Field of each `data` row holding this series’ values. Also the default label. */
|
|
8
7
|
name: string;
|
|
@@ -89,6 +88,5 @@ export type AreaChartProps = Omit<React.ComponentProps<'div'>, 'children'> & {
|
|
|
89
88
|
areaChartProps?: Omit<React.ComponentProps<typeof AreaChart$1>, 'data' | 'stackOffset'>;
|
|
90
89
|
};
|
|
91
90
|
declare function AreaChart({ className, data, series, dataKey, type, curveType, withXAxis, withYAxis, gridAxis, withDots, withTooltip, withLegend, connectNulls, unit, fillOpacity, strokeWidth, animationDuration, tooltipProps, legendProps, areaProps, areaChartProps, ...props }: AreaChartProps): React.JSX.Element;
|
|
92
|
-
//#endregion
|
|
93
91
|
export { AreaChart };
|
|
94
92
|
//# sourceMappingURL=area-chart.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"area-chart.js","names":["RechartsAreaChart","React","AreaChart$1","series","item","resolveChartColor","DEFAULT_CHART_PALETTE","index","acc","props","config","stackId","type","stackOffset","ChartContainer","cn","className","areaChartProps","gridAxis","CartesianGrid","withXAxis","XAxis","withYAxis","YAxis","value","unit","withTooltip","Tooltip","ChartTooltipContent","tooltipProps","withLegend","Legend","ChartLegendContent","legendProps","Area","curveType","withDots","animationDuration","areaProps"],"sources":["../../src/components/area-chart.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { Area, CartesianGrid, Legend, AreaChart as RechartsAreaChart, Tooltip, XAxis, YAxis } from 'recharts'\n\nimport { cn } from '../lib/utils'\nimport {\n type ChartColorKey,\n type ChartConfig,\n ChartContainer,\n ChartLegendContent,\n type ChartLegendContentProps,\n ChartTooltipContent,\n type ChartTooltipContentProps,\n DEFAULT_CHART_PALETTE,\n resolveChartColor\n} from './chart'\n\nexport type AreaChartSeries = {\n /** Field of each `data` row holding this series’ values. Also the default label. */\n name: string\n /** Name shown in the tooltip and legend. Defaults to `name`. */\n label?: string\n /** Any CSS color. Wins over `colorKey`. */\n color?: string\n /** Palette family, resolved to its semantic color `var(--{key})`. */\n colorKey?: ChartColorKey\n}\n\nexport type AreaChartType = 'default' | 'stacked' | 'percent' | 'split'\nexport type AreaChartCurveType = 'linear' | 'monotone' | 'natural' | 'step' | 'bump' | 'stepAfter' | 'stepBefore'\nexport type AreaChartGridAxis = 'none' | 'x' | 'y' | 'xy'\n\nexport type AreaChartProps = Omit<React.ComponentProps<'div'>, 'children'> & {\n /** Rows to plot. */\n data: Array<Record<string, unknown>>\n /** Series to draw, one per field of `data`. */\n series: AreaChartSeries[]\n /** Field of `data` used for the categories axis. */\n dataKey: string\n /**\n * `stacked` stacks the series, `percent` stacks them to 100%, `split` stacks them around a center line.\n * @default 'default'\n */\n type?: AreaChartType\n /**\n * Shape of the lines between points.\n * @default 'monotone'\n */\n curveType?: AreaChartCurveType\n /**\n * Shows the x axis.\n * @default true\n */\n withXAxis?: boolean\n /**\n * Shows the y axis.\n * @default true\n */\n withYAxis?: boolean\n /**\n * Grid lines to draw.\n * @default 'x'\n */\n gridAxis?: AreaChartGridAxis\n /**\n * Draws a dot on each point.\n * @default false\n */\n withDots?: boolean\n /**\n * Shows a tooltip on hover.\n * @default true\n */\n withTooltip?: boolean\n /**\n * Shows the legend.\n * @default false\n */\n withLegend?: boolean\n /** Connects the line across missing values. */\n connectNulls?: boolean\n /** Appended to the axis and tooltip values. */\n unit?: string\n /**\n * Opacity of the area fill.\n * @default 0.2\n */\n fillOpacity?: number\n /**\n * Width of the lines.\n * @default 2\n */\n strokeWidth?: number\n /** Animation length in ms. */\n animationDuration?: number\n /** Props for the tooltip content. */\n tooltipProps?: ChartTooltipContentProps\n /** Props for the legend content. */\n legendProps?: ChartLegendContentProps\n /** Props for each Recharts `<Area>`. */\n areaProps?: Partial<React.ComponentProps<typeof Area>>\n /** Props for the Recharts `<AreaChart>`. */\n areaChartProps?: Omit<React.ComponentProps<typeof RechartsAreaChart>, 'data' | 'stackOffset'>\n}\n\nfunction buildConfig(series: AreaChartSeries[]): ChartConfig {\n return series.reduce<ChartConfig>((acc, item, index) => {\n acc[item.name] = {\n label: item.label ?? item.name,\n color:\n item.color ?? resolveChartColor(item.colorKey) ?? DEFAULT_CHART_PALETTE[index % DEFAULT_CHART_PALETTE.length]\n }\n return acc\n }, {})\n}\n\nfunction AreaChart({\n className,\n data,\n series,\n dataKey,\n type = 'default',\n curveType = 'monotone',\n withXAxis = true,\n withYAxis = true,\n gridAxis = 'x',\n withDots = false,\n withTooltip = true,\n withLegend = false,\n connectNulls,\n unit,\n fillOpacity = 0.2,\n strokeWidth = 2,\n animationDuration,\n tooltipProps,\n legendProps,\n areaProps,\n areaChartProps,\n ...props\n}: AreaChartProps) {\n const config = React.useMemo(() => buildConfig(series), [series])\n const stackId = type === 'default' ? undefined : 'stack'\n const stackOffset = type === 'percent' ? 'expand' : type === 'split' ? 'silhouette' : undefined\n\n return (\n <ChartContainer data-slot=\"area-chart\" className={cn('w-full', className)} config={config} {...props}>\n <RechartsAreaChart {...areaChartProps} data={data} stackOffset={stackOffset}>\n {gridAxis !== 'none' && (\n <CartesianGrid\n vertical={gridAxis === 'y' || gridAxis === 'xy'}\n horizontal={gridAxis === 'x' || gridAxis === 'xy'}\n />\n )}\n {withXAxis && <XAxis dataKey={dataKey} tickLine={false} axisLine={false} tickMargin={8} />}\n {withYAxis && (\n <YAxis\n tickLine={false}\n axisLine={false}\n tickMargin={8}\n tickFormatter={\n type === 'percent'\n ? (value: number) => `${Math.round(value * 100)}%`\n : unit\n ? (value) => `${value}${unit}`\n : undefined\n }\n />\n )}\n {withTooltip && <Tooltip cursor={false} content={<ChartTooltipContent {...tooltipProps} />} />}\n {withLegend && <Legend content={<ChartLegendContent {...legendProps} />} />}\n {series.map((item) => (\n <Area\n key={item.name}\n type={curveType}\n dataKey={item.name}\n stackId={stackId}\n stroke={config[item.name]?.color}\n fill={config[item.name]?.color}\n fillOpacity={fillOpacity}\n strokeWidth={strokeWidth}\n dot={withDots}\n connectNulls={connectNulls}\n animationDuration={animationDuration}\n isAnimationActive={animationDuration !== 0}\n {...areaProps}\n />\n ))}\n </RechartsAreaChart>\n </ChartContainer>\n )\n}\n\nexport { AreaChart }\n"],"mappings":"uZAyGA,SAAS,YAAY,EAAwC,CAC3D,OAAOG,EAAO,QAAqB,EAAK,EAAM,KAC5C,EAAIC,EAAK,MAAQ,CACf,MAAOA,EAAK,OAASA,EAAK,KAC1B,MACEA,EAAK,OAASC,EAAkBD,EAAK,QAAQ,GAAKE,EAAsBC,EAAQD,EAAsB,OAC1G,EACOE,GACN,CAAC,CAAC,CACP,CAEA,SAAS,UAAU,CACjB,YACA,OACA,SACA,UACA,OAAO,UACP,YAAY,WACZ,YAAY,GACZ,YAAY,GACZ,WAAW,IACX,WAAW,GACX,cAAc,GACd,aAAa,GACb,eACA,OACA,cAAc,GACd,cAAc,EACd,oBACA,eACA,cACA,YACA,iBACA,GAAGC,GACc,CACjB,IAAMC,EAAST,EAAM,YAAc,YAAYE,CAAM,EAAG,CAACA,CAAM,CAAC,EAC1DQ,EAAUC,IAAS,UAAY,IAAA,GAAY,QAC3CC,EAAcD,IAAS,UAAY,SAAWA,IAAS,QAAU,aAAe,IAAA,GAEtF,MACE,kBAACE,EAAD,CAAgB,YAAU,aAAa,UAAWC,EAAG,SAAUC,CAAS,EAAW,SAAQ,GAAIP,EAC7F,SAAA,kBAACT,EAAD,CAAmB,GAAIiB,EAAsB,OAAmB,cAAhE,SAAA,CACGC,IAAa,QACZ,kBAACC,EAAD,CACE,SAAUD,IAAa,KAAOA,IAAa,KAC3C,WAAYA,IAAa,KAAOA,IAAa,IAC9C,CAAA,EAEFE,GAAa,kBAACC,EAAD,CAAgB,UAAS,SAAU,GAAO,SAAU,GAAO,WAAY,CAAI,CAAA,EACxFC,GACC,kBAACC,EAAD,CACE,SAAU,GACV,SAAU,GACV,WAAY,EACZ,cACEX,IAAS,UACJ,GAAkB,GAAG,KAAK,MAAMY,EAAQ,GAAG,EAAE,GAC9CC,EACG,GAAU,GAAGD,IAAQC,IACtB,IAAA,EAET,CAAA,EAEFC,GAAe,kBAACC,EAAD,CAAS,OAAQ,GAAO,QAAS,kBAACC,EAAD,CAAqB,GAAIC,CAAe,CAAA,CAAI,CAAA,EAC5FC,GAAc,kBAACC,EAAD,CAAQ,QAAS,kBAACC,EAAD,CAAoB,GAAIC,CAAc,CAAA,CAAI,CAAA,EACzE9B,EAAO,IAAK,GACX,kBAAC+B,EAAD,CAEE,KAAMC,EACN,QAAS/B,EAAK,KACL,UACT,OAAQM,EAAON,EAAK,KAAK,EAAE,MAC3B,KAAMM,EAAON,EAAK,KAAK,EAAE,MACZ,cACA,cACb,IAAKgC,EACS,eACK,oBACnB,kBAAmBC,IAAsB,EACzC,GAAIC,CACL,EAbMlC,EAAK,IAaX,CACF,CACgB,
|
|
1
|
+
{"version":3,"file":"area-chart.js","names":["RechartsAreaChart","React","AreaChart$1","series","item","resolveChartColor","DEFAULT_CHART_PALETTE","index","acc","props","config","stackId","type","stackOffset","ChartContainer","cn","className","areaChartProps","gridAxis","CartesianGrid","withXAxis","XAxis","withYAxis","YAxis","value","unit","withTooltip","Tooltip","ChartTooltipContent","tooltipProps","withLegend","Legend","ChartLegendContent","legendProps","Area","curveType","withDots","animationDuration","areaProps"],"sources":["../../src/components/area-chart.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { Area, CartesianGrid, Legend, AreaChart as RechartsAreaChart, Tooltip, XAxis, YAxis } from 'recharts'\n\nimport { cn } from '../lib/utils'\nimport {\n type ChartColorKey,\n type ChartConfig,\n ChartContainer,\n ChartLegendContent,\n type ChartLegendContentProps,\n ChartTooltipContent,\n type ChartTooltipContentProps,\n DEFAULT_CHART_PALETTE,\n resolveChartColor\n} from './chart'\n\nexport type AreaChartSeries = {\n /** Field of each `data` row holding this series’ values. Also the default label. */\n name: string\n /** Name shown in the tooltip and legend. Defaults to `name`. */\n label?: string\n /** Any CSS color. Wins over `colorKey`. */\n color?: string\n /** Palette family, resolved to its semantic color `var(--{key})`. */\n colorKey?: ChartColorKey\n}\n\nexport type AreaChartType = 'default' | 'stacked' | 'percent' | 'split'\nexport type AreaChartCurveType = 'linear' | 'monotone' | 'natural' | 'step' | 'bump' | 'stepAfter' | 'stepBefore'\nexport type AreaChartGridAxis = 'none' | 'x' | 'y' | 'xy'\n\nexport type AreaChartProps = Omit<React.ComponentProps<'div'>, 'children'> & {\n /** Rows to plot. */\n data: Array<Record<string, unknown>>\n /** Series to draw, one per field of `data`. */\n series: AreaChartSeries[]\n /** Field of `data` used for the categories axis. */\n dataKey: string\n /**\n * `stacked` stacks the series, `percent` stacks them to 100%, `split` stacks them around a center line.\n * @default 'default'\n */\n type?: AreaChartType\n /**\n * Shape of the lines between points.\n * @default 'monotone'\n */\n curveType?: AreaChartCurveType\n /**\n * Shows the x axis.\n * @default true\n */\n withXAxis?: boolean\n /**\n * Shows the y axis.\n * @default true\n */\n withYAxis?: boolean\n /**\n * Grid lines to draw.\n * @default 'x'\n */\n gridAxis?: AreaChartGridAxis\n /**\n * Draws a dot on each point.\n * @default false\n */\n withDots?: boolean\n /**\n * Shows a tooltip on hover.\n * @default true\n */\n withTooltip?: boolean\n /**\n * Shows the legend.\n * @default false\n */\n withLegend?: boolean\n /** Connects the line across missing values. */\n connectNulls?: boolean\n /** Appended to the axis and tooltip values. */\n unit?: string\n /**\n * Opacity of the area fill.\n * @default 0.2\n */\n fillOpacity?: number\n /**\n * Width of the lines.\n * @default 2\n */\n strokeWidth?: number\n /** Animation length in ms. */\n animationDuration?: number\n /** Props for the tooltip content. */\n tooltipProps?: ChartTooltipContentProps\n /** Props for the legend content. */\n legendProps?: ChartLegendContentProps\n /** Props for each Recharts `<Area>`. */\n areaProps?: Partial<React.ComponentProps<typeof Area>>\n /** Props for the Recharts `<AreaChart>`. */\n areaChartProps?: Omit<React.ComponentProps<typeof RechartsAreaChart>, 'data' | 'stackOffset'>\n}\n\nfunction buildConfig(series: AreaChartSeries[]): ChartConfig {\n return series.reduce<ChartConfig>((acc, item, index) => {\n acc[item.name] = {\n label: item.label ?? item.name,\n color:\n item.color ?? resolveChartColor(item.colorKey) ?? DEFAULT_CHART_PALETTE[index % DEFAULT_CHART_PALETTE.length]\n }\n return acc\n }, {})\n}\n\nfunction AreaChart({\n className,\n data,\n series,\n dataKey,\n type = 'default',\n curveType = 'monotone',\n withXAxis = true,\n withYAxis = true,\n gridAxis = 'x',\n withDots = false,\n withTooltip = true,\n withLegend = false,\n connectNulls,\n unit,\n fillOpacity = 0.2,\n strokeWidth = 2,\n animationDuration,\n tooltipProps,\n legendProps,\n areaProps,\n areaChartProps,\n ...props\n}: AreaChartProps) {\n const config = React.useMemo(() => buildConfig(series), [series])\n const stackId = type === 'default' ? undefined : 'stack'\n const stackOffset = type === 'percent' ? 'expand' : type === 'split' ? 'silhouette' : undefined\n\n return (\n <ChartContainer data-slot=\"area-chart\" className={cn('w-full', className)} config={config} {...props}>\n <RechartsAreaChart {...areaChartProps} data={data} stackOffset={stackOffset}>\n {gridAxis !== 'none' && (\n <CartesianGrid\n vertical={gridAxis === 'y' || gridAxis === 'xy'}\n horizontal={gridAxis === 'x' || gridAxis === 'xy'}\n />\n )}\n {withXAxis && <XAxis dataKey={dataKey} tickLine={false} axisLine={false} tickMargin={8} />}\n {withYAxis && (\n <YAxis\n tickLine={false}\n axisLine={false}\n tickMargin={8}\n tickFormatter={\n type === 'percent'\n ? (value: number) => `${Math.round(value * 100)}%`\n : unit\n ? (value) => `${value}${unit}`\n : undefined\n }\n />\n )}\n {withTooltip && <Tooltip cursor={false} content={<ChartTooltipContent {...tooltipProps} />} />}\n {withLegend && <Legend content={<ChartLegendContent {...legendProps} />} />}\n {series.map((item) => (\n <Area\n key={item.name}\n type={curveType}\n dataKey={item.name}\n stackId={stackId}\n stroke={config[item.name]?.color}\n fill={config[item.name]?.color}\n fillOpacity={fillOpacity}\n strokeWidth={strokeWidth}\n dot={withDots}\n connectNulls={connectNulls}\n animationDuration={animationDuration}\n isAnimationActive={animationDuration !== 0}\n {...areaProps}\n />\n ))}\n </RechartsAreaChart>\n </ChartContainer>\n )\n}\n\nexport { AreaChart }\n"],"mappings":"A,uZAyGA,SAAS,YAAY,EAAwC,CAC3D,OAAOG,EAAO,QAAqB,EAAK,EAAM,KAC5C,EAAIC,EAAK,MAAQ,CACf,MAAOA,EAAK,OAASA,EAAK,KAC1B,MACEA,EAAK,OAASC,EAAkBD,EAAK,QAAQ,GAAKE,EAAsBC,EAAQD,EAAsB,OAC1G,EACOE,GACN,CAAC,CAAC,CACP,CAEA,SAAS,UAAU,CACjB,YACA,OACA,SACA,UACA,OAAO,UACP,YAAY,WACZ,YAAY,GACZ,YAAY,GACZ,WAAW,IACX,WAAW,GACX,cAAc,GACd,aAAa,GACb,eACA,OACA,cAAc,GACd,cAAc,EACd,oBACA,eACA,cACA,YACA,iBACA,GAAGC,GACc,CACjB,IAAMC,EAAST,EAAM,YAAc,YAAYE,CAAM,EAAG,CAACA,CAAM,CAAC,EAC1DQ,EAAUC,IAAS,UAAY,IAAA,GAAY,QAC3CC,EAAcD,IAAS,UAAY,SAAWA,IAAS,QAAU,aAAe,IAAA,GAEtF,MACE,kBAACE,EAAD,CAAgB,YAAU,aAAa,UAAWC,EAAG,SAAUC,CAAS,EAAW,SAAQ,GAAIP,EAC7F,SAAA,kBAACT,EAAD,CAAmB,GAAIiB,EAAsB,OAAmB,cAAhE,SAAA,CACGC,IAAa,QACZ,kBAACC,EAAD,CACE,SAAUD,IAAa,KAAOA,IAAa,KAC3C,WAAYA,IAAa,KAAOA,IAAa,IAC9C,CAAA,EAEFE,GAAa,kBAACC,EAAD,CAAgB,UAAS,SAAU,GAAO,SAAU,GAAO,WAAY,CAAI,CAAA,EACxFC,GACC,kBAACC,EAAD,CACE,SAAU,GACV,SAAU,GACV,WAAY,EACZ,cACEX,IAAS,UACJ,GAAkB,GAAG,KAAK,MAAMY,EAAQ,GAAG,EAAE,GAC9CC,EACG,GAAU,GAAGD,IAAQC,IACtB,IAAA,EAET,CAAA,EAEFC,GAAe,kBAACC,EAAD,CAAS,OAAQ,GAAO,QAAS,kBAACC,EAAD,CAAqB,GAAIC,CAAe,CAAA,CAAI,CAAA,EAC5FC,GAAc,kBAACC,EAAD,CAAQ,QAAS,kBAACC,EAAD,CAAoB,GAAIC,CAAc,CAAA,CAAI,CAAA,EACzE9B,EAAO,IAAK,GACX,kBAAC+B,EAAD,CAEE,KAAMC,EACN,QAAS/B,EAAK,KACL,UACT,OAAQM,EAAON,EAAK,KAAK,EAAE,MAC3B,KAAMM,EAAON,EAAK,KAAK,EAAE,MACZ,cACA,cACb,IAAKgC,EACS,eACK,oBACnB,kBAAmBC,IAAsB,EACzC,GAAIC,CACL,EAbMlC,EAAK,IAaX,CACF,CACgB,C,EACL,CAAA,CAEpB,C"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { t as __name } from "../rolldown-runtime-BhWHdk3m.js";
|
|
2
|
+
import { t as AsChildPrimitiveProps } from "../as-child-T9W73ZYU.js";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { Autocomplete as Autocomplete$1 } from "@base-ui/react/autocomplete";
|
|
5
|
+
export type AutocompleteProps<ItemValue = unknown> = Autocomplete$1.Root.Props<ItemValue>;
|
|
6
|
+
export type AutocompleteInputProps = Omit<Autocomplete$1.Input.Props, 'render' | 'className'> & {
|
|
7
|
+
/** Classes for the input group that wraps the input and its buttons. */
|
|
8
|
+
className?: string;
|
|
9
|
+
/** Icon shown at the start of the input. */
|
|
10
|
+
icon?: React.ReactNode;
|
|
11
|
+
/**
|
|
12
|
+
* Shows a button that opens the list of suggestions.
|
|
13
|
+
* @default false
|
|
14
|
+
*/
|
|
15
|
+
showTrigger?: boolean;
|
|
16
|
+
/** Replaces the icon of the trigger button. */
|
|
17
|
+
triggerIcon?: React.ReactNode;
|
|
18
|
+
/**
|
|
19
|
+
* Shows a button that clears the typed text.
|
|
20
|
+
* @default false
|
|
21
|
+
*/
|
|
22
|
+
showClear?: boolean;
|
|
23
|
+
};
|
|
24
|
+
export type AutocompleteContentProps = AsChildPrimitiveProps<typeof Autocomplete$1.Popup> & Pick<Autocomplete$1.Positioner.Props, 'side' | 'align' | 'sideOffset' | 'alignOffset' | 'anchor' | 'positionMethod' | 'collisionBoundary' | 'collisionPadding' | 'sticky' | 'arrowPadding' | 'disableAnchorTracking' | 'collisionAvoidance'> & Pick<Autocomplete$1.Portal.Props, 'container' | 'keepMounted'>;
|
|
25
|
+
export type AutocompleteListProps = AsChildPrimitiveProps<typeof Autocomplete$1.List>;
|
|
26
|
+
export type AutocompleteItemProps = AsChildPrimitiveProps<typeof Autocomplete$1.Item>;
|
|
27
|
+
export type AutocompleteGroupProps = AsChildPrimitiveProps<typeof Autocomplete$1.Group>;
|
|
28
|
+
export type AutocompleteLabelProps = AsChildPrimitiveProps<typeof Autocomplete$1.GroupLabel>;
|
|
29
|
+
export type AutocompleteCollectionProps = Autocomplete$1.Collection.Props;
|
|
30
|
+
export type AutocompleteEmptyProps = AsChildPrimitiveProps<typeof Autocomplete$1.Empty>;
|
|
31
|
+
export type AutocompleteStatusProps = AsChildPrimitiveProps<typeof Autocomplete$1.Status>;
|
|
32
|
+
export type AutocompleteSeparatorProps = AsChildPrimitiveProps<typeof Autocomplete$1.Separator>;
|
|
33
|
+
declare const Autocomplete: typeof Autocomplete$1.Root;
|
|
34
|
+
declare const useAutocompleteFilter: typeof import("@base-ui/react/internals/filter").getFilter;
|
|
35
|
+
declare function AutocompleteInput({ className, children, disabled, icon, id, showTrigger, triggerIcon, showClear, ...props }: AutocompleteInputProps): React.JSX.Element;
|
|
36
|
+
declare function AutocompleteContent({ className, asChild, children, side, sideOffset, align, alignOffset, anchor, container, keepMounted, positionMethod, collisionBoundary, collisionPadding, sticky, arrowPadding, disableAnchorTracking, collisionAvoidance, ...props }: AutocompleteContentProps): React.JSX.Element;
|
|
37
|
+
declare function AutocompleteList({ className, asChild, children, ...props }: AutocompleteListProps): React.JSX.Element;
|
|
38
|
+
declare function AutocompleteItem({ className, asChild, children, ...props }: AutocompleteItemProps): React.JSX.Element;
|
|
39
|
+
declare function AutocompleteGroup({ className, asChild, children, ...props }: AutocompleteGroupProps): React.JSX.Element;
|
|
40
|
+
declare function AutocompleteLabel({ className, asChild, children, ...props }: AutocompleteLabelProps): React.JSX.Element;
|
|
41
|
+
declare function AutocompleteCollection({ ...props }: AutocompleteCollectionProps): React.JSX.Element;
|
|
42
|
+
declare function AutocompleteEmpty({ className, asChild, children, ...props }: AutocompleteEmptyProps): React.JSX.Element;
|
|
43
|
+
declare function AutocompleteStatus({ className, asChild, children, ...props }: AutocompleteStatusProps): React.JSX.Element;
|
|
44
|
+
declare function AutocompleteSeparator({ className, asChild, children, ...props }: AutocompleteSeparatorProps): React.JSX.Element;
|
|
45
|
+
export { Autocomplete, AutocompleteCollection, AutocompleteContent, AutocompleteEmpty, AutocompleteGroup, AutocompleteInput, AutocompleteItem, AutocompleteLabel, AutocompleteList, AutocompleteSeparator, AutocompleteStatus, useAutocompleteFilter };
|
|
46
|
+
//# sourceMappingURL=autocomplete.d.ts.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import"../rolldown-runtime-BhWHdk3m.js";import{toAsChildRenderProps as e}from"../lib/as-child.js";import{cn as t}from"../lib/utils.js";import{a as n,i as r,n as i,o as a,r as o,t as s}from"../combobox-styles-CZ0aJayc.js";import{t as c}from"../resolve-class-name-BurP8ngI.js";import{useFieldControlId as l}from"./field.js";import{InputGroup as u,InputGroupAddon as d,InputGroupButton as f,InputGroupInput as p}from"./input-group.js";import{IconSelector as m,IconX as h}from"@tabler/icons-react";import{jsx as g,jsxs as _}from"react/jsx-runtime";import{Autocomplete as v}from"@base-ui/react/autocomplete";const y=v.Root,b=v.useFilter;function AutocompleteInput({className:e,children:n,disabled:r=!1,icon:i,id:a,showTrigger:o=!1,triggerIcon:s=/* @__PURE__ */ g(m,{className:`pointer-events-none size-4 text-muted-foreground`}),showClear:c=!1,...y}){let b=l(a);return/* @__PURE__ */ _(u,{"data-slot":`autocomplete-input`,className:t(`w-auto`,e),children:[i&&/* @__PURE__ */ g(d,{align:`inline-start`,children:i}),/* @__PURE__ */ g(v.Input,{id:b,render:/* @__PURE__ */ g(p,{disabled:r}),...y}),(o||c)&&/* @__PURE__ */ _(d,{align:`inline-end`,children:[c&&/* @__PURE__ */ g(v.Clear,{"data-slot":`autocomplete-clear`,render:/* @__PURE__ */ g(f,{variant:`ghost`,size:`icon-xs`}),disabled:r,children:/* @__PURE__ */ g(h,{className:`pointer-events-none`})}),o&&/* @__PURE__ */ g(v.Trigger,{"data-slot":`autocomplete-trigger`,render:/* @__PURE__ */ g(f,{variant:`ghost`,size:`icon-xs`}),className:`group-has-data-[slot=autocomplete-clear]/input-group:hidden data-pressed:bg-transparent`,disabled:r,children:s})]}),n]})}function AutocompleteContent({className:r,asChild:i,children:a,side:o=`bottom`,sideOffset:s=6,align:l=`start`,alignOffset:u=0,anchor:d,container:f,keepMounted:p,positionMethod:m=`absolute`,collisionBoundary:h,collisionPadding:_,sticky:y,arrowPadding:b,disableAnchorTracking:x,collisionAvoidance:S,...C}){return/* @__PURE__ */ g(v.Portal,{container:f,keepMounted:p,children:/* @__PURE__ */ g(v.Positioner,{side:o,sideOffset:s,align:l,alignOffset:u,anchor:d,positionMethod:m,collisionBoundary:h,collisionPadding:_,sticky:y,arrowPadding:b,disableAnchorTracking:x,collisionAvoidance:S,className:`isolate z-50`,children:/* @__PURE__ */ g(v.Popup,{"data-slot":`autocomplete-content`,className:e=>t(n,c(r,e)),...C,...e(i,a)})})})}function AutocompleteList({className:n,asChild:i,children:a,...o}){return/* @__PURE__ */ g(v.List,{"data-slot":`autocomplete-list`,className:e=>t(r,c(n,e)),...o,...e(i,a)})}function AutocompleteItem({className:n,asChild:r,children:i,...a}){return/* @__PURE__ */ g(v.Item,{"data-slot":`autocomplete-item`,className:e=>t(o,`pr-2`,c(n,e)),...a,...e(r,i)})}function AutocompleteGroup({className:n,asChild:r,children:i,...a}){return/* @__PURE__ */ g(v.Group,{"data-slot":`autocomplete-group`,className:e=>t(c(n,e)),...a,...e(r,i)})}function AutocompleteLabel({className:n,asChild:r,children:a,...o}){return/* @__PURE__ */ g(v.GroupLabel,{"data-slot":`autocomplete-label`,className:e=>t(i,c(n,e)),...o,...e(r,a)})}function AutocompleteCollection({...e}){return/* @__PURE__ */ g(v.Collection,{"data-slot":`autocomplete-collection`,...e})}function AutocompleteEmpty({className:n,asChild:r,children:i,...a}){return/* @__PURE__ */ g(v.Empty,{"data-slot":`autocomplete-empty`,className:e=>t(s,c(n,e)),...a,...e(r,i)})}function AutocompleteStatus({className:n,asChild:r,children:i,...a}){return/* @__PURE__ */ g(v.Status,{"data-slot":`autocomplete-status`,className:e=>t(`flex items-center gap-2 px-2 py-1.5 text-sm text-muted-foreground empty:m-0 empty:p-0`,c(n,e)),...a,...e(r,i)})}function AutocompleteSeparator({className:n,asChild:r,children:i,...o}){return/* @__PURE__ */ g(v.Separator,{"data-slot":`autocomplete-separator`,className:e=>t(a,c(n,e)),...o,...e(r,i)})}export{y as Autocomplete,AutocompleteCollection,AutocompleteContent,AutocompleteEmpty,AutocompleteGroup,AutocompleteInput,AutocompleteItem,AutocompleteLabel,AutocompleteList,AutocompleteSeparator,AutocompleteStatus,b as useAutocompleteFilter};
|
|
2
|
+
//# sourceMappingURL=autocomplete.js.map
|