ajo-ui 0.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.
Files changed (103) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +126 -0
  3. package/dist/accordion.js +130 -0
  4. package/dist/avatar.js +54 -0
  5. package/dist/calendar.js +2 -0
  6. package/dist/carousel.js +239 -0
  7. package/dist/chart.js +790 -0
  8. package/dist/checkbox-group.js +70 -0
  9. package/dist/checkbox.js +77 -0
  10. package/dist/chunks/bar-CVafh6C1.js +99 -0
  11. package/dist/chunks/calendar-q8jZ8Cxr.js +1923 -0
  12. package/dist/chunks/collection-DtRB63U4.js +111 -0
  13. package/dist/chunks/data-table-DpkWv4y4.js +1039 -0
  14. package/dist/chunks/menu-B45IyHHC.js +704 -0
  15. package/dist/chunks/native-BJdhd9XJ.js +20 -0
  16. package/dist/chunks/popup-C8Bb3l_g.js +459 -0
  17. package/dist/chunks/popup-surface-BDCgtVU0.js +18 -0
  18. package/dist/chunks/position-D6_i_SRn.js +434 -0
  19. package/dist/chunks/virtual-list-B7hjGkjk.js +413 -0
  20. package/dist/collapsible.js +106 -0
  21. package/dist/command.js +263 -0
  22. package/dist/context-menu.js +112 -0
  23. package/dist/data-table.js +5 -0
  24. package/dist/dialog.js +207 -0
  25. package/dist/direction.js +22 -0
  26. package/dist/drawer.js +139 -0
  27. package/dist/field.js +26 -0
  28. package/dist/index.js +38 -0
  29. package/dist/input-date.js +994 -0
  30. package/dist/input-group.js +52 -0
  31. package/dist/input-otp.js +179 -0
  32. package/dist/menu.js +2 -0
  33. package/dist/menubar.js +236 -0
  34. package/dist/message-scroller.js +446 -0
  35. package/dist/navigation-menu.js +330 -0
  36. package/dist/popover.js +307 -0
  37. package/dist/progress.js +39 -0
  38. package/dist/radio-group.js +107 -0
  39. package/dist/resizable.js +172 -0
  40. package/dist/select.js +961 -0
  41. package/dist/sidebar.js +343 -0
  42. package/dist/slider.js +259 -0
  43. package/dist/switch.js +53 -0
  44. package/dist/tabs.js +182 -0
  45. package/dist/toast.js +492 -0
  46. package/dist/toggle-group.js +111 -0
  47. package/dist/toggle.js +52 -0
  48. package/dist/toolbar.js +127 -0
  49. package/dist/tooltip.js +196 -0
  50. package/dist/utils.js +104 -0
  51. package/dist/virtual-list.js +2 -0
  52. package/package.json +250 -0
  53. package/src/accordion.tsx +261 -0
  54. package/src/availability.ts +261 -0
  55. package/src/avatar.tsx +99 -0
  56. package/src/bar.ts +156 -0
  57. package/src/calendar.tsx +1441 -0
  58. package/src/carousel.tsx +424 -0
  59. package/src/chart.tsx +1194 -0
  60. package/src/checkbox-group.tsx +132 -0
  61. package/src/checkbox.tsx +130 -0
  62. package/src/collapsible.tsx +188 -0
  63. package/src/collection.ts +154 -0
  64. package/src/command.tsx +511 -0
  65. package/src/context-menu.tsx +233 -0
  66. package/src/data-table-contract.ts +143 -0
  67. package/src/data-table-model.ts +760 -0
  68. package/src/data-table.tsx +475 -0
  69. package/src/dialog.tsx +393 -0
  70. package/src/direction.tsx +45 -0
  71. package/src/drawer.tsx +251 -0
  72. package/src/field.tsx +61 -0
  73. package/src/index.ts +37 -0
  74. package/src/input-date.tsx +1539 -0
  75. package/src/input-group.tsx +142 -0
  76. package/src/input-otp.tsx +324 -0
  77. package/src/menu-cluster.ts +124 -0
  78. package/src/menu.tsx +1095 -0
  79. package/src/menubar.tsx +459 -0
  80. package/src/message-scroller.tsx +732 -0
  81. package/src/native.ts +26 -0
  82. package/src/navigation-menu.tsx +578 -0
  83. package/src/popover.tsx +519 -0
  84. package/src/popup-surface.tsx +31 -0
  85. package/src/popup.ts +569 -0
  86. package/src/position.ts +523 -0
  87. package/src/progress.tsx +70 -0
  88. package/src/radio-group.tsx +186 -0
  89. package/src/resizable.tsx +310 -0
  90. package/src/segments.ts +922 -0
  91. package/src/select.tsx +1501 -0
  92. package/src/sidebar.tsx +683 -0
  93. package/src/slider.tsx +424 -0
  94. package/src/switch.tsx +104 -0
  95. package/src/tabs.tsx +314 -0
  96. package/src/toast.tsx +923 -0
  97. package/src/toggle-group.tsx +249 -0
  98. package/src/toggle.tsx +91 -0
  99. package/src/toolbar.tsx +212 -0
  100. package/src/tooltip.tsx +359 -0
  101. package/src/utils.ts +204 -0
  102. package/src/virtual-list.tsx +205 -0
  103. package/src/virtual.ts +385 -0
package/dist/drawer.js ADDED
@@ -0,0 +1,139 @@
1
+ import { clx, withSlot } from "./utils.js";
2
+ import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from "./dialog.js";
3
+ import { callRef, move, statefulRootAttrs } from "ajo-cloves";
4
+ import { context } from "ajo/context";
5
+ import { jsx, jsxs } from "ajo/jsx-runtime";
6
+ //#region packages/ajo-ui/src/drawer.tsx
7
+ var DrawerContext = context({
8
+ drag: {
9
+ start: () => false,
10
+ get active() {
11
+ return false;
12
+ }
13
+ },
14
+ side: "right",
15
+ setPanel: () => {}
16
+ });
17
+ var DrawerRoot = function* () {
18
+ let side = "right";
19
+ let offset = 0;
20
+ let panel = null;
21
+ const reset = () => {
22
+ if (!panel) return;
23
+ panel.style.transform = "";
24
+ panel.style.transition = "";
25
+ panel.style.willChange = "";
26
+ };
27
+ const movePanel = (next) => {
28
+ if (!panel) return;
29
+ panel.style.transition = "none";
30
+ panel.style.transform = transform(next, side);
31
+ panel.style.willChange = "transform";
32
+ };
33
+ const drag = move(this, {
34
+ onStart: () => {
35
+ offset = 0;
36
+ },
37
+ onMove: (data) => {
38
+ const delta = side === "left" || side === "right" ? data.dx : data.dy;
39
+ offset = Math.max(0, side === "left" || side === "top" ? -delta : delta);
40
+ movePanel(offset);
41
+ },
42
+ onEnd: (data) => {
43
+ reset();
44
+ if (!data.canceled && offset > 72 && panel?.open) panel.close();
45
+ }
46
+ });
47
+ for (const args of this) {
48
+ side = args.side ?? "right";
49
+ DrawerContext({
50
+ drag,
51
+ side,
52
+ setPanel: (element) => panel = element
53
+ });
54
+ yield /* @__PURE__ */ jsx(Dialog, {
55
+ "data-slot": "drawer-dialog",
56
+ defaultOpen: args.defaultOpen,
57
+ modal: args.modal,
58
+ onOpenChange: args.onOpenChange,
59
+ open: args.open,
60
+ children: args.children
61
+ });
62
+ }
63
+ };
64
+ /** Unstyled edge panel provider built on native Dialog behavior. */
65
+ var Drawer = ({ children, class: classes, defaultOpen, modal, onOpenChange, open, side, ...attrs }) => /* @__PURE__ */ jsx(DrawerRoot, {
66
+ ...statefulRootAttrs(attrs),
67
+ defaultOpen,
68
+ modal,
69
+ onOpenChange,
70
+ open,
71
+ side,
72
+ "attr:class": classes,
73
+ "attr:data-slot": "drawer",
74
+ children
75
+ });
76
+ /** Unstyled button that opens the nearest Drawer. */
77
+ var DrawerTrigger = withSlot(DialogTrigger, "drawer-trigger");
78
+ /** Unstyled button that closes the nearest Drawer. */
79
+ var DrawerClose = withSlot(DialogClose, "drawer-close");
80
+ var transform = (offset, side) => {
81
+ if (side === "left") return `translateX(${-offset}px)`;
82
+ if (side === "right") return `translateX(${offset}px)`;
83
+ if (side === "top") return `translateY(${-offset}px)`;
84
+ return `translateY(${offset}px)`;
85
+ };
86
+ /** Unstyled native Drawer panel with optional drag and close controls. */
87
+ var DrawerContent = ({ children, class: classes, closeClass, closeIconClass, closeLabel = "Close", handle = false, handleClass, handleLabel = "Drag to close", ref, showCloseButton = true, sideClass, ...attrs }) => {
88
+ const drawer = DrawerContext();
89
+ const { side } = drawer;
90
+ let panel = null;
91
+ const reference = (element) => {
92
+ panel = element;
93
+ drawer.setPanel(element);
94
+ callRef(ref, element);
95
+ };
96
+ return /* @__PURE__ */ jsxs(DialogContent, {
97
+ ...attrs,
98
+ class: clx(sideClass?.[side], classes),
99
+ "data-side": side,
100
+ "data-slot": "drawer-content",
101
+ ref: reference,
102
+ children: [
103
+ handle ? /* @__PURE__ */ jsx("div", {
104
+ "aria-label": handleLabel,
105
+ class: handleClass,
106
+ "data-slot": "drawer-handle",
107
+ role: "button",
108
+ tabIndex: 0,
109
+ "set:onkeydown": (event) => {
110
+ if ((event.key === "Enter" || event.key === " ") && panel?.open) {
111
+ event.preventDefault();
112
+ panel.close();
113
+ }
114
+ },
115
+ "set:onpointerdown": (event) => drawer.drag.start(event)
116
+ }) : null,
117
+ children,
118
+ showCloseButton ? /* @__PURE__ */ jsx(DrawerClose, {
119
+ "aria-label": closeLabel,
120
+ class: closeClass,
121
+ children: /* @__PURE__ */ jsx("span", {
122
+ "aria-hidden": "true",
123
+ class: closeIconClass,
124
+ "data-slot": "drawer-close-icon"
125
+ })
126
+ }) : null
127
+ ]
128
+ });
129
+ };
130
+ /** Unstyled header area for Drawer title and description. */
131
+ var DrawerHeader = withSlot(DialogHeader, "drawer-header");
132
+ /** Unstyled footer area for Drawer actions. */
133
+ var DrawerFooter = withSlot(DialogFooter, "drawer-footer");
134
+ /** Accessible heading for DrawerContent. */
135
+ var DrawerTitle = withSlot(DialogTitle, "drawer-title");
136
+ /** Accessible description for DrawerContent. */
137
+ var DrawerDescription = withSlot(DialogDescription, "drawer-description");
138
+ //#endregion
139
+ export { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger };
package/dist/field.js ADDED
@@ -0,0 +1,26 @@
1
+ import { label, statefulRootAttrs } from "ajo-cloves";
2
+ import { context } from "ajo/context";
3
+ import { Fragment, jsx } from "ajo/jsx-runtime";
4
+ //#region packages/ajo-ui/src/field.tsx
5
+ /** Field context carrying label clove wiring to composed field parts. */
6
+ var FieldContext = context(null);
7
+ /** Unstyled behavior root for one field's label, description, and error wiring. */
8
+ var FieldRoot = function* (args) {
9
+ const view = label(this, { prefix: () => args.name });
10
+ for (const next of this) {
11
+ view.reset();
12
+ view.sync(Boolean(next.invalid));
13
+ FieldContext(view);
14
+ yield /* @__PURE__ */ jsx(Fragment, { children: next.children });
15
+ }
16
+ };
17
+ /** Unstyled field host with label, description, and error wiring. */
18
+ var Field = ({ children, invalid, name, ...attrs }) => /* @__PURE__ */ jsx(FieldRoot, {
19
+ ...statefulRootAttrs(attrs),
20
+ invalid,
21
+ name,
22
+ "attr:data-slot": "field",
23
+ children
24
+ });
25
+ //#endregion
26
+ export { Field, FieldContext };
package/dist/index.js ADDED
@@ -0,0 +1,38 @@
1
+ import { Collapsible, CollapsibleContent, CollapsibleContext, CollapsibleTrigger } from "./collapsible.js";
2
+ import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "./accordion.js";
3
+ import { Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage } from "./avatar.js";
4
+ import { n as CalendarDayButton, t as Calendar } from "./chunks/calendar-q8jZ8Cxr.js";
5
+ import { DirectionContext, DirectionProvider } from "./direction.js";
6
+ import { Carousel, CarouselContent, CarouselContext, CarouselItem, CarouselNext, CarouselPrevious } from "./carousel.js";
7
+ import { ChartArea, ChartBar, ChartContainer, ChartIdContext, ChartLegend, ChartLegendContent, ChartLine, ChartPie, ChartTooltip, ChartTooltipContent } from "./chart.js";
8
+ import { Checkbox } from "./checkbox.js";
9
+ import { CheckboxGroup, CheckboxGroupItem } from "./checkbox-group.js";
10
+ import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from "./dialog.js";
11
+ import { Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut } from "./command.js";
12
+ import { a as MenuItem, c as MenuRadioItem, d as MenuSub, f as MenuSubContent, i as MenuGroup, l as MenuSeparator, m as MenuTrigger, n as MenuCheckboxItem, o as MenuLabel, p as MenuSubTrigger, r as MenuContent, s as MenuRadioGroup, t as Menu, u as MenuShortcut } from "./chunks/menu-B45IyHHC.js";
13
+ import { ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger } from "./context-menu.js";
14
+ import { t as DataTable } from "./chunks/data-table-DpkWv4y4.js";
15
+ import { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea } from "./input-group.js";
16
+ import { Select, SelectChip, SelectChips, SelectChipsInput, SelectClear, SelectContent, SelectCreate, SelectEmpty, SelectGroup, SelectInput, SelectItem, SelectLabel, SelectList, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectStatus, SelectTrigger, SelectValue } from "./select.js";
17
+ import { Toolbar, ToolbarSeparator } from "./toolbar.js";
18
+ import { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger } from "./drawer.js";
19
+ import { Field, FieldContext } from "./field.js";
20
+ import { InputDate, InputDateCalendar, InputDateClear, InputDateContent, InputDateField, InputDatePresets, InputDateTime, InputDateTimeField, InputDateTrigger, InputTime } from "./input-date.js";
21
+ import { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS } from "./input-otp.js";
22
+ import { Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger } from "./menubar.js";
23
+ import { MessageScroller, MessageScrollerButton, MessageScrollerContent, MessageScrollerContext, MessageScrollerItem, MessageScrollerProvider, MessageScrollerViewport } from "./message-scroller.js";
24
+ import { NavigationMenu, NavigationMenuContent, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger } from "./navigation-menu.js";
25
+ import { Popover, PopoverAnchor, PopoverContent, PopoverTrigger } from "./popover.js";
26
+ import { Progress } from "./progress.js";
27
+ import { RadioGroup, RadioGroupItem } from "./radio-group.js";
28
+ import { ResizableContext, ResizableHandle, ResizablePanel, ResizablePanelGroup } from "./resizable.js";
29
+ import { Sidebar, SidebarContent, SidebarContext, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger } from "./sidebar.js";
30
+ import { Slider } from "./slider.js";
31
+ import { Switch } from "./switch.js";
32
+ import { Tabs, TabsContent, TabsList, TabsTrigger } from "./tabs.js";
33
+ import { Toggle } from "./toggle.js";
34
+ import { ToggleGroup, ToggleGroupContext, ToggleGroupItem } from "./toggle-group.js";
35
+ import { Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport, Toaster, clearToasts, dismissToast, toast, updateToast } from "./toast.js";
36
+ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "./tooltip.js";
37
+ import { t as VirtualList } from "./chunks/virtual-list-B7hjGkjk.js";
38
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, Calendar, CalendarDayButton, Carousel, CarouselContent, CarouselContext, CarouselItem, CarouselNext, CarouselPrevious, ChartArea, ChartBar, ChartContainer, ChartIdContext, ChartLegend, ChartLegendContent, ChartLine, ChartPie, ChartTooltip, ChartTooltipContent, Checkbox, CheckboxGroup, CheckboxGroupItem, Collapsible, CollapsibleContent, CollapsibleContext, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DataTable, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DirectionContext, DirectionProvider, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger, Field, FieldContext, InputDate, InputDateCalendar, InputDateClear, InputDateContent, InputDateField, InputDatePresets, InputDateTime, InputDateTimeField, InputDateTrigger, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, InputTime, Menu, MenuCheckboxItem, MenuContent, MenuGroup, MenuItem, MenuLabel, MenuRadioGroup, MenuRadioItem, MenuSeparator, MenuShortcut, MenuSub, MenuSubContent, MenuSubTrigger, MenuTrigger, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MessageScroller, MessageScrollerButton, MessageScrollerContent, MessageScrollerContext, MessageScrollerItem, MessageScrollerProvider, MessageScrollerViewport, NavigationMenu, NavigationMenuContent, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Progress, REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS, RadioGroup, RadioGroupItem, ResizableContext, ResizableHandle, ResizablePanel, ResizablePanelGroup, Select, SelectChip, SelectChips, SelectChipsInput, SelectClear, SelectContent, SelectCreate, SelectEmpty, SelectGroup, SelectInput, SelectItem, SelectLabel, SelectList, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectStatus, SelectTrigger, SelectValue, Sidebar, SidebarContent, SidebarContext, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Slider, Switch, Tabs, TabsContent, TabsList, TabsTrigger, Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport, Toaster, Toggle, ToggleGroup, ToggleGroupContext, ToggleGroupItem, Toolbar, ToolbarSeparator, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, VirtualList, clearToasts, dismissToast, toast, updateToast };