@ensolid/radix 0.0.0 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/README.md +84 -0
  2. package/dist/components/Accordion/Accordion.js +2 -3
  3. package/dist/components/AlertDialog/AlertDialog.js +2 -3
  4. package/dist/components/AspectRatio/AspectRatio.js +0 -1
  5. package/dist/components/Avatar/Avatar.js +1 -2
  6. package/dist/components/Checkbox/Checkbox.js +0 -1
  7. package/dist/components/Collapsible/Collapsible.js +2 -3
  8. package/dist/components/ContextMenu/ContextMenu.js +2 -3
  9. package/dist/components/Dialog/Dialog.js +2 -3
  10. package/dist/components/DropdownMenu/DropdownMenu.js +2 -3
  11. package/dist/components/HoverCard/HoverCard.js +2 -3
  12. package/dist/components/Label/Label.js +0 -1
  13. package/dist/components/Menubar/Menubar.js +2 -3
  14. package/dist/components/NavigationMenu/NavigationMenu.js +2 -3
  15. package/dist/components/Popover/Popover.js +2 -3
  16. package/dist/components/Progress/Progress.js +0 -1
  17. package/dist/components/RadioGroup/RadioGroup.js +2 -3
  18. package/dist/components/ScrollArea/ScrollArea.js +0 -1
  19. package/dist/components/Select/Select.js +2 -3
  20. package/dist/components/Separator/Separator.js +0 -1
  21. package/dist/components/Slider/Slider.js +1 -2
  22. package/dist/components/Switch/Switch.js +1 -2
  23. package/dist/components/Tabs/Tabs.js +2 -3
  24. package/dist/components/Toggle/Toggle.js +1 -2
  25. package/dist/components/ToggleGroup/ToggleGroup.js +2 -3
  26. package/dist/components/Toolbar/Toolbar.js +0 -1
  27. package/dist/components/Tooltip/Tooltip.js +2 -3
  28. package/dist/components/VisuallyHidden/VisuallyHidden.js +0 -1
  29. package/dist/index.js +0 -1
  30. package/package.json +46 -1
  31. package/dist/components/Accordion/Accordion.js.map +0 -1
  32. package/dist/components/AlertDialog/AlertDialog.js.map +0 -1
  33. package/dist/components/AspectRatio/AspectRatio.js.map +0 -1
  34. package/dist/components/Avatar/Avatar.js.map +0 -1
  35. package/dist/components/Checkbox/Checkbox.js.map +0 -1
  36. package/dist/components/Collapsible/Collapsible.js.map +0 -1
  37. package/dist/components/ContextMenu/ContextMenu.js.map +0 -1
  38. package/dist/components/Dialog/Dialog.js.map +0 -1
  39. package/dist/components/DropdownMenu/DropdownMenu.js.map +0 -1
  40. package/dist/components/HoverCard/HoverCard.js.map +0 -1
  41. package/dist/components/Label/Label.js.map +0 -1
  42. package/dist/components/Menubar/Menubar.js.map +0 -1
  43. package/dist/components/NavigationMenu/NavigationMenu.js.map +0 -1
  44. package/dist/components/Popover/Popover.js.map +0 -1
  45. package/dist/components/Progress/Progress.js.map +0 -1
  46. package/dist/components/RadioGroup/RadioGroup.js.map +0 -1
  47. package/dist/components/ScrollArea/ScrollArea.js.map +0 -1
  48. package/dist/components/Select/Select.js.map +0 -1
  49. package/dist/components/Separator/Separator.js.map +0 -1
  50. package/dist/components/Slider/Slider.js.map +0 -1
  51. package/dist/components/Switch/Switch.js.map +0 -1
  52. package/dist/components/Tabs/Tabs.js.map +0 -1
  53. package/dist/components/Toggle/Toggle.js.map +0 -1
  54. package/dist/components/ToggleGroup/ToggleGroup.js.map +0 -1
  55. package/dist/components/Toolbar/Toolbar.js.map +0 -1
  56. package/dist/components/Tooltip/Tooltip.js.map +0 -1
  57. package/dist/components/VisuallyHidden/VisuallyHidden.js.map +0 -1
  58. package/dist/index.js.map +0 -1
package/README.md ADDED
@@ -0,0 +1,84 @@
1
+ # @ensolid/radix
2
+
3
+ A SolidJS port of [Radix UI Primitives](https://www.radix-ui.com/primitives).
4
+
5
+ Ensolid Radix is a library of unstyled, accessible UI primitives for SolidJS. It provides low-level components that handle the complex logic, accessibility, and state management of common UI patterns, allowing you to focus on your design and styles.
6
+
7
+ ## Installation
8
+
9
+ ```bash
10
+ pnpm add @ensolid/radix
11
+ ```
12
+
13
+ ## Features
14
+
15
+ - ✅ **Accessibility**: Built-in support for ARIA attributes and keyboard interaction.
16
+ - ✅ **Unstyled**: Completely unstyled, giving you full control over the appearance.
17
+ - ✅ **Reactive**: Built with SolidJS's fine-grained reactivity.
18
+ - ✅ **SSR Support**: Fully compatible with server-side rendering.
19
+ - ✅ **Tree Shakeable**: Import only what you need to keep your bundle size small.
20
+
21
+ ## Components
22
+
23
+ The following components are currently available:
24
+
25
+ - **Separator**
26
+ - **Label**
27
+ - **AspectRatio**
28
+ - **VisuallyHidden**
29
+ - **Checkbox**
30
+ - **Switch**
31
+ - **RadioGroup**
32
+ - **Select**
33
+ - **Slider**
34
+ - **Toggle**
35
+ - **ToggleGroup**
36
+ - **Tabs**
37
+ - **Accordion**
38
+ - **Collapsible**
39
+ - **ScrollArea**
40
+ - **Dialog**
41
+ - **AlertDialog**
42
+ - **Popover**
43
+ - **DropdownMenu**
44
+ - **Tooltip**
45
+ - **HoverCard**
46
+ - **ContextMenu**
47
+ - **Menubar**
48
+ - **Progress**
49
+ - **Avatar**
50
+
51
+ ## Usage Example
52
+
53
+ ```tsx
54
+ import { Dialog } from "@ensolid/radix";
55
+
56
+ function App() {
57
+ return (
58
+ <Dialog>
59
+ <Dialog.Trigger>Open Dialog</Dialog.Trigger>
60
+ <Dialog.Content>
61
+ <Dialog.Title>Title</Dialog.Title>
62
+ <Dialog.Description>Description</Dialog.Description>
63
+ <Dialog.Close>Close</Dialog.Close>
64
+ </Dialog.Content>
65
+ </Dialog>
66
+ );
67
+ }
68
+ ```
69
+
70
+ ### The `asChild` Property
71
+
72
+ Radix UI components use the `asChild` property to allow you to pass functionality to your own components.
73
+
74
+ ```tsx
75
+ <Dialog.Trigger asChild>
76
+ <button class="your-custom-class">Open</button>
77
+ </Dialog.Trigger>
78
+ ```
79
+
80
+ **Note**: Only Radix component `Trigger` subcomponents support `asChild`.
81
+
82
+ ## License
83
+
84
+ MIT
@@ -1,5 +1,5 @@
1
- import { delegateEvents, createComponent, template, spread, mergeProps, insert, memo } from "solid-js/web";
2
- import { createContext, splitProps, createSignal, useContext } from "solid-js";
1
+ import { createComponent, template, spread, mergeProps, insert, memo, delegateEvents } from "solid-js/web";
2
+ import { useContext, createContext, splitProps, createSignal } from "solid-js";
3
3
  var _tmpl$ = /* @__PURE__ */ template(`<div>`), _tmpl$2 = /* @__PURE__ */ template(`<button type=button>`);
4
4
  const AccordionContext = createContext();
5
5
  const AccordionItemContext = createContext();
@@ -190,4 +190,3 @@ export {
190
190
  useAccordionContext,
191
191
  useAccordionItemContext
192
192
  };
193
- //# sourceMappingURL=Accordion.js.map
@@ -1,5 +1,5 @@
1
- import { delegateEvents, isServer, createComponent, template, spread, mergeProps, insert, Portal } from "solid-js/web";
2
- import { createContext, splitProps, createSignal, onMount, createEffect, onCleanup, Show, useContext } from "solid-js";
1
+ import { template, spread, mergeProps, insert, createComponent, Portal, isServer, delegateEvents } from "solid-js/web";
2
+ import { useContext, createContext, splitProps, Show, createSignal, onMount, createEffect, onCleanup } from "solid-js";
3
3
  var _tmpl$ = /* @__PURE__ */ template(`<button type=button>`), _tmpl$2 = /* @__PURE__ */ template(`<div>`), _tmpl$3 = /* @__PURE__ */ template(`<div role=alertdialog aria-modal=true>`), _tmpl$4 = /* @__PURE__ */ template(`<h2>`), _tmpl$5 = /* @__PURE__ */ template(`<p>`);
4
4
  const AlertDialogContext = createContext();
5
5
  const useAlertDialogContext = () => {
@@ -232,4 +232,3 @@ export {
232
232
  AlertDialogTrigger,
233
233
  useAlertDialogContext
234
234
  };
235
- //# sourceMappingURL=AlertDialog.js.map
@@ -22,4 +22,3 @@ const AspectRatio = (props) => {
22
22
  export {
23
23
  AspectRatio
24
24
  };
25
- //# sourceMappingURL=AspectRatio.js.map
@@ -1,5 +1,5 @@
1
1
  import { createComponent, template, spread, mergeProps, insert, memo } from "solid-js/web";
2
- import { createContext, splitProps, createSignal, createEffect, Show, onCleanup, useContext } from "solid-js";
2
+ import { splitProps, createSignal, createContext, createEffect, Show, onCleanup, useContext } from "solid-js";
3
3
  var _tmpl$ = /* @__PURE__ */ template(`<div>`), _tmpl$2 = /* @__PURE__ */ template(`<img>`);
4
4
  const AvatarContext = createContext();
5
5
  const useAvatarContext = () => {
@@ -141,4 +141,3 @@ export {
141
141
  AvatarFallback,
142
142
  AvatarImage
143
143
  };
144
- //# sourceMappingURL=Avatar.js.map
@@ -46,4 +46,3 @@ const Checkbox = (props) => {
46
46
  export {
47
47
  Checkbox
48
48
  };
49
- //# sourceMappingURL=Checkbox.js.map
@@ -1,5 +1,5 @@
1
- import { delegateEvents, createComponent, template, spread, mergeProps, insert } from "solid-js/web";
2
- import { createContext, splitProps, createSignal, Show, useContext } from "solid-js";
1
+ import { template, spread, mergeProps, insert, createComponent, delegateEvents } from "solid-js/web";
2
+ import { useContext, createContext, splitProps, Show, createSignal } from "solid-js";
3
3
  var _tmpl$ = /* @__PURE__ */ template(`<div>`), _tmpl$2 = /* @__PURE__ */ template(`<button type=button aria-controls=collapsible-content>`), _tmpl$3 = /* @__PURE__ */ template(`<div id=collapsible-content>`);
4
4
  const CollapsibleContext = createContext();
5
5
  const useCollapsibleContext = () => {
@@ -107,4 +107,3 @@ export {
107
107
  CollapsibleTrigger,
108
108
  useCollapsibleContext
109
109
  };
110
- //# sourceMappingURL=Collapsible.js.map
@@ -1,5 +1,5 @@
1
- import { delegateEvents, isServer, createComponent, template, spread, mergeProps, insert, Portal, use } from "solid-js/web";
2
- import { createContext, splitProps, createSignal, createEffect, onCleanup, onMount, Show, useContext } from "solid-js";
1
+ import { template, spread, mergeProps, insert, isServer, createComponent, Portal, use, delegateEvents } from "solid-js/web";
2
+ import { useContext, createContext, splitProps, onMount, createEffect, Show, createSignal, onCleanup } from "solid-js";
3
3
  var _tmpl$ = /* @__PURE__ */ template(`<div>`), _tmpl$2 = /* @__PURE__ */ template(`<div role=menu>`), _tmpl$3 = /* @__PURE__ */ template(`<button type=button role=menuitem>`), _tmpl$4 = /* @__PURE__ */ template(`<div role=menuitem>`), _tmpl$5 = /* @__PURE__ */ template(`<hr role=separator>`);
4
4
  const ContextMenuContext = createContext();
5
5
  const useContextMenuContext = () => {
@@ -260,4 +260,3 @@ export {
260
260
  ContextMenuTrigger,
261
261
  useContextMenuContext
262
262
  };
263
- //# sourceMappingURL=ContextMenu.js.map
@@ -1,5 +1,5 @@
1
- import { delegateEvents, isServer, createComponent, template, spread, mergeProps, insert, Portal } from "solid-js/web";
2
- import { createContext, splitProps, createSignal, onMount, createEffect, onCleanup, Show, useContext } from "solid-js";
1
+ import { template, spread, mergeProps, insert, createComponent, Portal, isServer, delegateEvents } from "solid-js/web";
2
+ import { useContext, createContext, splitProps, Show, createSignal, onMount, createEffect, onCleanup } from "solid-js";
3
3
  var _tmpl$ = /* @__PURE__ */ template(`<button type=button>`), _tmpl$2 = /* @__PURE__ */ template(`<div>`), _tmpl$3 = /* @__PURE__ */ template(`<div role=dialog>`), _tmpl$4 = /* @__PURE__ */ template(`<h2>`), _tmpl$5 = /* @__PURE__ */ template(`<p>`);
4
4
  const DialogContext = createContext();
5
5
  const useDialogContext = () => {
@@ -215,4 +215,3 @@ export {
215
215
  DialogTrigger,
216
216
  useDialogContext
217
217
  };
218
- //# sourceMappingURL=Dialog.js.map
@@ -1,5 +1,5 @@
1
- import { delegateEvents, isServer, createComponent, template, spread, mergeProps, insert, Portal, use } from "solid-js/web";
2
- import { createContext, splitProps, createSignal, createEffect, onCleanup, onMount, Show, useContext } from "solid-js";
1
+ import { template, spread, mergeProps, insert, isServer, createComponent, Portal, use, delegateEvents } from "solid-js/web";
2
+ import { useContext, createContext, splitProps, onMount, createEffect, Show, createSignal, onCleanup } from "solid-js";
3
3
  var _tmpl$ = /* @__PURE__ */ template(`<button type=button>`), _tmpl$2 = /* @__PURE__ */ template(`<div role=menu style=top:0px;left:0px>`), _tmpl$3 = /* @__PURE__ */ template(`<div role=menuitem>`), _tmpl$4 = /* @__PURE__ */ template(`<div>`), _tmpl$5 = /* @__PURE__ */ template(`<div role=separator>`);
4
4
  const DropdownMenuContext = createContext();
5
5
  const useDropdownMenuContext = () => {
@@ -241,4 +241,3 @@ export {
241
241
  DropdownMenuTrigger,
242
242
  useDropdownMenuContext
243
243
  };
244
- //# sourceMappingURL=DropdownMenu.js.map
@@ -1,5 +1,5 @@
1
- import { createComponent, template, spread, mergeProps, insert, isServer, Portal, use } from "solid-js/web";
2
- import { createContext, splitProps, createSignal, onMount, onCleanup, createEffect, Show, useContext } from "solid-js";
1
+ import { template, spread, mergeProps, insert, isServer, createComponent, Portal, use } from "solid-js/web";
2
+ import { useContext, createContext, splitProps, onMount, onCleanup, createEffect, Show, createSignal } from "solid-js";
3
3
  var _tmpl$ = /* @__PURE__ */ template(`<div>`), _tmpl$2 = /* @__PURE__ */ template(`<div role=tooltip style=top:0px;left:0px>`);
4
4
  const HoverCardContext = createContext();
5
5
  const useHoverCardContext = () => {
@@ -196,4 +196,3 @@ export {
196
196
  HoverCardTrigger,
197
197
  useHoverCardContext
198
198
  };
199
- //# sourceMappingURL=HoverCard.js.map
@@ -20,4 +20,3 @@ const Label = (props) => {
20
20
  export {
21
21
  Label
22
22
  };
23
- //# sourceMappingURL=Label.js.map
@@ -1,5 +1,5 @@
1
- import { delegateEvents, isServer, createComponent, template, spread, mergeProps, insert, Portal, use } from "solid-js/web";
2
- import { createContext, splitProps, createSignal, createEffect, onCleanup, onMount, Show, useContext } from "solid-js";
1
+ import { template, spread, mergeProps, insert, createComponent, Portal, isServer, use, delegateEvents } from "solid-js/web";
2
+ import { useContext, createContext, splitProps, onMount, createEffect, Show, createSignal, onCleanup } from "solid-js";
3
3
  var _tmpl$ = /* @__PURE__ */ template(`<div role=menubar>`), _tmpl$2 = /* @__PURE__ */ template(`<div>`), _tmpl$3 = /* @__PURE__ */ template(`<button type=button role=menuitem>`), _tmpl$4 = /* @__PURE__ */ template(`<div role=menu style=top:0px;left:0px>`), _tmpl$5 = /* @__PURE__ */ template(`<hr role=separator>`);
4
4
  const MenubarContext = createContext();
5
5
  const useMenubarContext = () => {
@@ -296,4 +296,3 @@ export {
296
296
  MenubarTrigger,
297
297
  useMenubarContext
298
298
  };
299
- //# sourceMappingURL=Menubar.js.map
@@ -1,5 +1,5 @@
1
- import { delegateEvents, isServer, createComponent, template, spread, mergeProps, insert, setAttribute, Portal, use } from "solid-js/web";
2
- import { createContext, splitProps, createSignal, createEffect, onCleanup, onMount, Show, useContext } from "solid-js";
1
+ import { template, spread, mergeProps, insert, setAttribute, createComponent, Portal, isServer, use, delegateEvents } from "solid-js/web";
2
+ import { useContext, createContext, splitProps, onMount, createEffect, Show, createSignal, onCleanup } from "solid-js";
3
3
  var _tmpl$ = /* @__PURE__ */ template(`<nav role=navigation>`), _tmpl$2 = /* @__PURE__ */ template(`<ul role=list>`), _tmpl$3 = /* @__PURE__ */ template(`<li>`), _tmpl$4 = /* @__PURE__ */ template(`<button type=button>`), _tmpl$5 = /* @__PURE__ */ template(`<div role=menu style=top:0px;left:0px>`), _tmpl$6 = /* @__PURE__ */ template(`<a>`), _tmpl$7 = /* @__PURE__ */ template(`<div>`);
4
4
  const NavigationMenuContext = createContext();
5
5
  const useNavigationMenuContext = () => {
@@ -317,4 +317,3 @@ export {
317
317
  NavigationMenuViewport,
318
318
  useNavigationMenuContext
319
319
  };
320
- //# sourceMappingURL=NavigationMenu.js.map
@@ -1,5 +1,5 @@
1
- import { delegateEvents, isServer, createComponent, template, spread, mergeProps, insert, Portal, use } from "solid-js/web";
2
- import { createContext, splitProps, createSignal, createEffect, onCleanup, onMount, Show, useContext } from "solid-js";
1
+ import { template, spread, mergeProps, insert, isServer, createComponent, Portal, use, delegateEvents } from "solid-js/web";
2
+ import { useContext, createContext, splitProps, onMount, createEffect, Show, createSignal, onCleanup } from "solid-js";
3
3
  var _tmpl$ = /* @__PURE__ */ template(`<button type=button>`), _tmpl$2 = /* @__PURE__ */ template(`<div role=dialog style=top:0px;left:0px>`);
4
4
  const PopoverContext = createContext();
5
5
  const usePopoverContext = () => {
@@ -173,4 +173,3 @@ export {
173
173
  PopoverTrigger,
174
174
  usePopoverContext
175
175
  };
176
- //# sourceMappingURL=Popover.js.map
@@ -41,4 +41,3 @@ const Progress = (props) => {
41
41
  export {
42
42
  Progress
43
43
  };
44
- //# sourceMappingURL=Progress.js.map
@@ -1,5 +1,5 @@
1
- import { createComponent, template, spread, mergeProps, insert } from "solid-js/web";
2
- import { createContext, splitProps, createSignal, useContext } from "solid-js";
1
+ import { template, spread, mergeProps, createComponent, insert } from "solid-js/web";
2
+ import { useContext, createContext, splitProps, createSignal } from "solid-js";
3
3
  var _tmpl$ = /* @__PURE__ */ template(`<div role=radiogroup>`), _tmpl$2 = /* @__PURE__ */ template(`<input type=radio>`);
4
4
  const RadioGroupContext = createContext();
5
5
  const useRadioGroupContext = () => {
@@ -97,4 +97,3 @@ export {
97
97
  RadioGroupItem,
98
98
  useRadioGroupContext
99
99
  };
100
- //# sourceMappingURL=RadioGroup.js.map
@@ -88,4 +88,3 @@ export {
88
88
  ScrollAreaThumb,
89
89
  ScrollAreaViewport
90
90
  };
91
- //# sourceMappingURL=ScrollArea.js.map
@@ -1,5 +1,5 @@
1
- import { delegateEvents, isServer, createComponent, template, spread, mergeProps, insert, Portal, use } from "solid-js/web";
2
- import { createContext, splitProps, createSignal, createEffect, onCleanup, onMount, Show, useContext } from "solid-js";
1
+ import { template, spread, mergeProps, insert, isServer, createComponent, Portal, use, delegateEvents } from "solid-js/web";
2
+ import { useContext, createContext, splitProps, onMount, createEffect, Show, createSignal, onCleanup } from "solid-js";
3
3
  var _tmpl$ = /* @__PURE__ */ template(`<button type=button role=combobox>`), _tmpl$2 = /* @__PURE__ */ template(`<span>`), _tmpl$3 = /* @__PURE__ */ template(`<div role=listbox style=top:0px;left:0px>`), _tmpl$4 = /* @__PURE__ */ template(`<div role=option>`);
4
4
  const SelectContext = createContext();
5
5
  const useSelectContext = () => {
@@ -237,4 +237,3 @@ export {
237
237
  SelectValue,
238
238
  useSelectContext
239
239
  };
240
- //# sourceMappingURL=Select.js.map
@@ -27,4 +27,3 @@ const Separator = (props) => {
27
27
  export {
28
28
  Separator
29
29
  };
30
- //# sourceMappingURL=Separator.js.map
@@ -1,4 +1,4 @@
1
- import { delegateEvents, template, spread, mergeProps, effect, className, setAttribute } from "solid-js/web";
1
+ import { template, spread, mergeProps, effect, className, setAttribute, delegateEvents } from "solid-js/web";
2
2
  import { splitProps, createSignal } from "solid-js";
3
3
  var _tmpl$ = /* @__PURE__ */ template(`<div><input type=range class=w-full>`);
4
4
  const Slider = (props) => {
@@ -60,4 +60,3 @@ delegateEvents(["input"]);
60
60
  export {
61
61
  Slider
62
62
  };
63
- //# sourceMappingURL=Slider.js.map
@@ -1,4 +1,4 @@
1
- import { delegateEvents, template, spread, mergeProps } from "solid-js/web";
1
+ import { template, spread, mergeProps, delegateEvents } from "solid-js/web";
2
2
  import { splitProps, createSignal } from "solid-js";
3
3
  var _tmpl$ = /* @__PURE__ */ template(`<button type=button role=switch>`);
4
4
  const Switch = (props) => {
@@ -47,4 +47,3 @@ delegateEvents(["click"]);
47
47
  export {
48
48
  Switch
49
49
  };
50
- //# sourceMappingURL=Switch.js.map
@@ -1,5 +1,5 @@
1
- import { delegateEvents, createComponent, template, spread, mergeProps, insert, memo } from "solid-js/web";
2
- import { createContext, splitProps, createSignal, useContext } from "solid-js";
1
+ import { template, spread, mergeProps, insert, memo, createComponent, delegateEvents } from "solid-js/web";
2
+ import { useContext, createContext, splitProps, createSignal } from "solid-js";
3
3
  var _tmpl$ = /* @__PURE__ */ template(`<div>`), _tmpl$2 = /* @__PURE__ */ template(`<div role=tablist>`), _tmpl$3 = /* @__PURE__ */ template(`<button type=button role=tab>`), _tmpl$4 = /* @__PURE__ */ template(`<div role=tabpanel>`);
4
4
  const TabsContext = createContext();
5
5
  const useTabsContext = () => {
@@ -147,4 +147,3 @@ export {
147
147
  TabsTrigger,
148
148
  useTabsContext
149
149
  };
150
- //# sourceMappingURL=Tabs.js.map
@@ -1,4 +1,4 @@
1
- import { delegateEvents, template, spread, mergeProps, insert } from "solid-js/web";
1
+ import { template, spread, mergeProps, insert, delegateEvents } from "solid-js/web";
2
2
  import { splitProps, createSignal } from "solid-js";
3
3
  var _tmpl$ = /* @__PURE__ */ template(`<button type=button role=switch>`);
4
4
  const Toggle = (props) => {
@@ -48,4 +48,3 @@ delegateEvents(["click"]);
48
48
  export {
49
49
  Toggle
50
50
  };
51
- //# sourceMappingURL=Toggle.js.map
@@ -1,5 +1,5 @@
1
- import { delegateEvents, createComponent, template, spread, mergeProps, insert } from "solid-js/web";
2
- import { createContext, splitProps, createSignal, useContext } from "solid-js";
1
+ import { template, spread, mergeProps, insert, createComponent, delegateEvents } from "solid-js/web";
2
+ import { useContext, createContext, splitProps, createSignal } from "solid-js";
3
3
  var _tmpl$ = /* @__PURE__ */ template(`<div role=group>`), _tmpl$2 = /* @__PURE__ */ template(`<button type=button role=button>`);
4
4
  const ToggleGroupContext = createContext();
5
5
  const useToggleGroupContext = () => {
@@ -116,4 +116,3 @@ export {
116
116
  ToggleGroupItem,
117
117
  useToggleGroupContext
118
118
  };
119
- //# sourceMappingURL=ToggleGroup.js.map
@@ -107,4 +107,3 @@ export {
107
107
  ToolbarToggleGroup,
108
108
  ToolbarToggleItem
109
109
  };
110
- //# sourceMappingURL=Toolbar.js.map
@@ -1,5 +1,5 @@
1
- import { createComponent, template, spread, mergeProps, insert, isServer, Portal, use } from "solid-js/web";
2
- import { createContext, splitProps, createSignal, onMount, onCleanup, createEffect, Show, useContext } from "solid-js";
1
+ import { template, spread, mergeProps, insert, isServer, createComponent, Portal, use } from "solid-js/web";
2
+ import { useContext, createContext, splitProps, onMount, onCleanup, createEffect, Show, createSignal } from "solid-js";
3
3
  var _tmpl$ = /* @__PURE__ */ template(`<div>`), _tmpl$2 = /* @__PURE__ */ template(`<div role=tooltip style=top:0px;left:0px>`);
4
4
  const TooltipContext = createContext();
5
5
  const useTooltipContext = () => {
@@ -152,4 +152,3 @@ export {
152
152
  TooltipTrigger,
153
153
  useTooltipContext
154
154
  };
155
- //# sourceMappingURL=Tooltip.js.map
@@ -20,4 +20,3 @@ const VisuallyHidden = (props) => {
20
20
  export {
21
21
  VisuallyHidden
22
22
  };
23
- //# sourceMappingURL=VisuallyHidden.js.map
package/dist/index.js CHANGED
@@ -137,4 +137,3 @@ export {
137
137
  useToggleGroupContext,
138
138
  useTooltipContext
139
139
  };
140
- //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "@ensolid/radix",
3
- "version": "0.0.0",
3
+ "version": "0.0.2",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
8
+ "sideEffects": false,
8
9
  "publishConfig": {
9
10
  "access": "public"
10
11
  },
@@ -76,6 +77,50 @@
76
77
  "./Toggle": {
77
78
  "import": "./dist/components/Toggle/Toggle.js",
78
79
  "types": "./dist/components/Toggle/index.d.ts"
80
+ },
81
+ "./Avatar": {
82
+ "import": "./dist/components/Avatar/Avatar.js",
83
+ "types": "./dist/components/Avatar/index.d.ts"
84
+ },
85
+ "./Collapsible": {
86
+ "import": "./dist/components/Collapsible/Collapsible.js",
87
+ "types": "./dist/components/Collapsible/index.d.ts"
88
+ },
89
+ "./ContextMenu": {
90
+ "import": "./dist/components/ContextMenu/ContextMenu.js",
91
+ "types": "./dist/components/ContextMenu/index.d.ts"
92
+ },
93
+ "./HoverCard": {
94
+ "import": "./dist/components/HoverCard/HoverCard.js",
95
+ "types": "./dist/components/HoverCard/index.d.ts"
96
+ },
97
+ "./ScrollArea": {
98
+ "import": "./dist/components/ScrollArea/ScrollArea.js",
99
+ "types": "./dist/components/ScrollArea/index.d.ts"
100
+ },
101
+ "./ToggleGroup": {
102
+ "import": "./dist/components/ToggleGroup/ToggleGroup.js",
103
+ "types": "./dist/components/ToggleGroup/index.d.ts"
104
+ },
105
+ "./AspectRatio": {
106
+ "import": "./dist/components/AspectRatio/AspectRatio.js",
107
+ "types": "./dist/components/AspectRatio/index.d.ts"
108
+ },
109
+ "./VisuallyHidden": {
110
+ "import": "./dist/components/VisuallyHidden/VisuallyHidden.js",
111
+ "types": "./dist/components/VisuallyHidden/index.d.ts"
112
+ },
113
+ "./Menubar": {
114
+ "import": "./dist/components/Menubar/Menubar.js",
115
+ "types": "./dist/components/Menubar/index.d.ts"
116
+ },
117
+ "./Toolbar": {
118
+ "import": "./dist/components/Toolbar/Toolbar.js",
119
+ "types": "./dist/components/Toolbar/index.d.ts"
120
+ },
121
+ "./NavigationMenu": {
122
+ "import": "./dist/components/NavigationMenu/NavigationMenu.js",
123
+ "types": "./dist/components/NavigationMenu/index.d.ts"
79
124
  }
80
125
  },
81
126
  "files": [
@@ -1 +0,0 @@
1
- {"version":3,"file":"Accordion.js","sources":["../../../src/components/Accordion/Accordion.tsx"],"sourcesContent":["import { splitProps, createSignal, createContext, useContext } from 'solid-js';\nimport type { Component, JSX } from 'solid-js';\n\ninterface AccordionContextValue {\n value: () => string | string[] | undefined;\n setValue: (value: string) => void;\n type: 'single' | 'multiple';\n collapsible: boolean;\n isItemOpen: (itemValue: string) => boolean;\n}\n\nconst AccordionContext = createContext<AccordionContextValue>();\nconst AccordionItemContext = createContext<{ value: string; disabled?: boolean }>();\n\nexport const useAccordionContext = () => {\n const context = useContext(AccordionContext);\n if (!context) {\n throw new Error('Accordion components must be used within Accordion');\n }\n return context;\n};\n\nexport const useAccordionItemContext = () => {\n const context = useContext(AccordionItemContext);\n if (!context) {\n throw new Error('Accordion.Trigger and Accordion.Content must be used within Accordion.Item');\n }\n return context;\n};\n\nexport interface AccordionProps extends JSX.HTMLAttributes<HTMLDivElement> {\n /**\n * 当前打开的值(单个或数组)\n */\n value?: string | string[];\n /**\n * 默认打开的值\n */\n defaultValue?: string | string[];\n /**\n * 值变化回调\n */\n onValueChange?: (value: string | string[]) => void;\n /**\n * 类型:单个或多个\n * @default 'single'\n */\n type?: 'single' | 'multiple';\n /**\n * 是否可折叠(仅 single 类型)\n * @default false\n */\n collapsible?: boolean;\n /**\n * 子元素\n */\n children?: JSX.Element;\n}\n\nconst AccordionBase: Component<AccordionProps> = (props) => {\n const [local, others] = splitProps(props, [\n 'value',\n 'defaultValue',\n 'onValueChange',\n 'type',\n 'collapsible',\n 'class',\n 'children',\n ]);\n\n const type = () => local.type ?? 'single';\n const collapsible = () => local.collapsible ?? false;\n\n const [internalValue, setInternalValue] = createSignal<string | string[] | undefined>(\n local.value ?? local.defaultValue\n );\n\n const isControlled = () => local.value !== undefined;\n const value = () => (isControlled() ? local.value : internalValue());\n\n const handleValueChange = (itemValue: string) => {\n const currentValue = value();\n let newValue: string | string[];\n\n if (type() === 'single') {\n // 单个模式:如果点击的是已打开的项且可折叠,则关闭;否则打开该项\n if (collapsible() && currentValue === itemValue) {\n newValue = '';\n } else {\n newValue = itemValue;\n }\n } else {\n // 多个模式:切换该项的打开状态\n const currentArray = Array.isArray(currentValue) ? currentValue : currentValue ? [currentValue] : [];\n const index = currentArray.indexOf(itemValue);\n if (index > -1) {\n newValue = currentArray.filter((v) => v !== itemValue);\n } else {\n newValue = [...currentArray, itemValue];\n }\n }\n\n if (!isControlled()) {\n setInternalValue(newValue);\n }\n local.onValueChange?.(newValue);\n };\n\n const isItemOpen = (itemValue: string) => {\n const currentValue = value();\n if (type() === 'single') {\n return currentValue === itemValue;\n } else {\n const currentArray = Array.isArray(currentValue) ? currentValue : [];\n return currentArray.includes(itemValue);\n }\n };\n\n const contextValue: AccordionContextValue = {\n value,\n setValue: handleValueChange,\n type: type(),\n collapsible: collapsible(),\n isItemOpen,\n };\n\n return (\n <AccordionContext.Provider value={contextValue}>\n <div class={local.class} {...others}>\n {local.children}\n </div>\n </AccordionContext.Provider>\n );\n};\n\nexport interface AccordionComponent extends Component<AccordionProps> {\n Item: Component<AccordionItemProps>;\n Trigger: Component<AccordionTriggerProps>;\n Content: Component<AccordionContentProps>;\n}\n\nexport const Accordion = Object.assign(AccordionBase, {\n Item: null as unknown as Component<AccordionItemProps>,\n Trigger: null as unknown as Component<AccordionTriggerProps>,\n Content: null as unknown as Component<AccordionContentProps>,\n}) as AccordionComponent;\n\nexport interface AccordionItemProps extends JSX.HTMLAttributes<HTMLDivElement> {\n /**\n * 项的值\n */\n value: string;\n /**\n * 是否禁用\n * @default false\n */\n disabled?: boolean;\n /**\n * 子元素\n */\n children?: JSX.Element;\n}\n\nexport const AccordionItem: Component<AccordionItemProps> = (props) => {\n const [local, others] = splitProps(props, ['value', 'disabled', 'children', 'class']);\n const context = useAccordionContext();\n\n const isOpen = () => context.isItemOpen(local.value);\n\n const itemContext = {\n value: local.value,\n disabled: local.disabled,\n };\n\n return (\n <AccordionItemContext.Provider value={itemContext}>\n <div\n class={local.class}\n data-state={isOpen() ? 'open' : 'closed'}\n data-disabled={local.disabled ? '' : undefined}\n {...others}\n >\n {local.children}\n </div>\n </AccordionItemContext.Provider>\n );\n};\n\nexport interface AccordionTriggerProps extends JSX.ButtonHTMLAttributes<HTMLButtonElement> {\n /**\n * 子元素\n */\n children?: JSX.Element;\n}\n\nexport const AccordionTrigger: Component<AccordionTriggerProps> = (props) => {\n const [local, others] = splitProps(props, ['children', 'class', 'onClick']);\n const context = useAccordionContext();\n const itemContext = useAccordionItemContext();\n\n const isOpen = () => context.isItemOpen(itemContext.value);\n\n const handleClick: JSX.EventHandler<HTMLButtonElement, MouseEvent> = (e) => {\n if (typeof local.onClick === 'function') {\n local.onClick(e);\n }\n if (!itemContext.disabled) {\n context.setValue(itemContext.value);\n }\n };\n\n return (\n <button\n type=\"button\"\n class={local.class}\n onClick={handleClick}\n disabled={itemContext.disabled}\n aria-expanded={isOpen()}\n aria-controls={`accordion-content-${itemContext.value}`}\n data-state={isOpen() ? 'open' : 'closed'}\n data-disabled={itemContext.disabled ? '' : undefined}\n {...others}\n >\n {local.children}\n </button>\n );\n};\n\nexport interface AccordionContentProps extends JSX.HTMLAttributes<HTMLDivElement> {\n /**\n * 子元素\n */\n children?: JSX.Element;\n}\n\nexport const AccordionContent: Component<AccordionContentProps> = (props) => {\n const [local, others] = splitProps(props, ['children', 'class']);\n const context = useAccordionContext();\n const itemContext = useAccordionItemContext();\n\n const isOpen = () => context.isItemOpen(itemContext.value);\n\n return (\n <div\n id={`accordion-content-${itemContext.value}`}\n class={local.class}\n hidden={!isOpen()}\n data-state={isOpen() ? 'open' : 'closed'}\n {...others}\n >\n {isOpen() && local.children}\n </div>\n );\n};\n\nAccordion.Item = AccordionItem;\nAccordion.Trigger = AccordionTrigger;\nAccordion.Content = AccordionContent;\n\n"],"names":["AccordionContext","createContext","AccordionItemContext","useAccordionContext","context","useContext","Error","useAccordionItemContext","AccordionBase","props","local","others","splitProps","type","collapsible","internalValue","setInternalValue","createSignal","value","defaultValue","isControlled","undefined","handleValueChange","itemValue","currentValue","newValue","currentArray","Array","isArray","index","indexOf","filter","v","onValueChange","isItemOpen","includes","contextValue","setValue","_$createComponent","Provider","children","_el$","_tmpl$","_$spread","_$mergeProps","class","_$insert","Accordion","Object","assign","Item","Trigger","Content","AccordionItem","isOpen","itemContext","disabled","_el$2","AccordionTrigger","handleClick","e","onClick","_el$3","_tmpl$2","$$click","AccordionContent","_el$4","id","hidden","_c$","_$memo","_$delegateEvents"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"AlertDialog.js","sources":["../../../src/components/AlertDialog/AlertDialog.tsx"],"sourcesContent":["import {\n createContext,\n createEffect,\n createSignal,\n onCleanup,\n onMount,\n Show,\n splitProps,\n useContext,\n} from \"solid-js\";\nimport { Portal } from \"solid-js/web\";\nimport { isServer } from \"solid-js/web\";\nimport type { Component, JSX } from \"solid-js\";\n\ninterface AlertDialogContextValue {\n open: () => boolean;\n setOpen: (open: boolean) => void;\n}\n\nconst AlertDialogContext = createContext<AlertDialogContextValue>();\n\nexport const useAlertDialogContext = () => {\n const context = useContext(AlertDialogContext);\n if (!context) {\n throw new Error(\"AlertDialog components must be used within AlertDialog\");\n }\n return context;\n};\n\nexport interface AlertDialogProps extends JSX.HTMLAttributes<HTMLDivElement> {\n /**\n * 是否打开\n */\n open?: boolean;\n /**\n * 默认打开状态\n */\n defaultOpen?: boolean;\n /**\n * 打开状态变化回调\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * 子元素\n */\n children?: JSX.Element;\n}\n\nconst AlertDialogBase: Component<AlertDialogProps> = (props) => {\n const [local] = splitProps(props, [\n \"open\",\n \"defaultOpen\",\n \"onOpenChange\",\n \"children\",\n ]);\n\n const [internalOpen, setInternalOpen] = createSignal(\n local.open ?? local.defaultOpen ?? false,\n );\n\n const isControlled = () => local.open !== undefined;\n const open = () => (isControlled() ? local.open! : internalOpen());\n\n const handleOpenChange = (newOpen: boolean) => {\n if (!isControlled()) {\n setInternalOpen(newOpen);\n }\n local.onOpenChange?.(newOpen);\n };\n\n // ESC 键关闭\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\" && open()) {\n handleOpenChange(false);\n }\n };\n\n onMount(() => {\n if (!isServer && open()) {\n document.addEventListener(\"keydown\", handleKeyDown);\n document.body.style.overflow = \"hidden\";\n }\n });\n\n createEffect(() => {\n if (!isServer) {\n if (open()) {\n document.addEventListener(\"keydown\", handleKeyDown);\n document.body.style.overflow = \"hidden\";\n } else {\n document.removeEventListener(\"keydown\", handleKeyDown);\n document.body.style.overflow = \"\";\n }\n }\n });\n\n onCleanup(() => {\n if (!isServer) {\n document.removeEventListener(\"keydown\", handleKeyDown);\n document.body.style.overflow = \"\";\n }\n });\n\n const contextValue: AlertDialogContextValue = {\n open,\n setOpen: handleOpenChange,\n };\n\n return (\n <AlertDialogContext.Provider value={contextValue}>\n {local.children}\n </AlertDialogContext.Provider>\n );\n};\n\nexport interface AlertDialogComponent extends Component<AlertDialogProps> {\n Trigger: Component<AlertDialogTriggerProps>;\n Overlay: Component<AlertDialogOverlayProps>;\n Content: Component<AlertDialogContentProps>;\n Title: Component<AlertDialogTitleProps>;\n Description: Component<AlertDialogDescriptionProps>;\n Action: Component<AlertDialogActionProps>;\n Cancel: Component<AlertDialogCancelProps>;\n}\n\nexport const AlertDialog = Object.assign(AlertDialogBase, {\n Trigger: null as unknown as Component<AlertDialogTriggerProps>,\n Overlay: null as unknown as Component<AlertDialogOverlayProps>,\n Content: null as unknown as Component<AlertDialogContentProps>,\n Title: null as unknown as Component<AlertDialogTitleProps>,\n Description: null as unknown as Component<AlertDialogDescriptionProps>,\n Action: null as unknown as Component<AlertDialogActionProps>,\n Cancel: null as unknown as Component<AlertDialogCancelProps>,\n}) as AlertDialogComponent;\n\nexport interface AlertDialogTriggerProps\n extends JSX.ButtonHTMLAttributes<HTMLButtonElement> {\n /**\n * 子元素\n */\n children?: JSX.Element;\n /**\n * 是否作为子元素传递\n */\n asChild?: boolean;\n}\n\nexport const AlertDialogTrigger: Component<AlertDialogTriggerProps> = (\n props,\n) => {\n const [local, others] = splitProps(props, [\n \"children\",\n \"asChild\",\n \"class\",\n \"onClick\",\n ]);\n const context = useAlertDialogContext();\n\n const handleClick: JSX.EventHandler<HTMLButtonElement, MouseEvent> = (e) => {\n if (typeof local.onClick === \"function\") {\n local.onClick(e);\n }\n context.setOpen(true);\n };\n\n return (\n <button type=\"button\" class={local.class} onClick={handleClick} {...others}>\n {local.children}\n </button>\n );\n};\n\nexport interface AlertDialogContentProps\n extends JSX.HTMLAttributes<HTMLDivElement> {\n /**\n * 子元素\n */\n children?: JSX.Element;\n}\n\nexport interface AlertDialogOverlayProps\n extends JSX.HTMLAttributes<HTMLDivElement> {\n /**\n * 子元素\n */\n children?: JSX.Element;\n}\n\nexport const AlertDialogOverlay: Component<AlertDialogOverlayProps> = (\n props,\n) => {\n const [local, others] = splitProps(props, [\"children\", \"class\", \"onClick\"]);\n const context = useAlertDialogContext();\n\n const handleClick: JSX.EventHandler<HTMLDivElement, MouseEvent> = (e) => {\n if (typeof local.onClick === \"function\") {\n local.onClick(e);\n }\n // AlertDialog 不允许点击遮罩层关闭\n };\n\n return (\n <div\n class={local.class}\n data-state={context.open() ? \"open\" : \"closed\"}\n onClick={handleClick}\n {...others}\n >\n {local.children}\n </div>\n );\n};\n\nexport const AlertDialogContent: Component<AlertDialogContentProps> = (\n props,\n) => {\n const [local, others] = splitProps(props, [\"class\", \"children\"] as const);\n const context = useAlertDialogContext();\n\n return (\n <Show when={context.open()}>\n <Portal mount={!isServer ? document.body : undefined}>\n <AlertDialogOverlay class=\"fixed inset-0 z-50 bg-black/50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\" />\n <div\n class={local.class}\n role=\"alertdialog\"\n aria-modal=\"true\"\n data-state={context.open() ? \"open\" : \"closed\"}\n {...others}\n >\n {local.children}\n </div>\n </Portal>\n </Show>\n );\n};\n\nexport interface AlertDialogTitleProps\n extends JSX.HTMLAttributes<HTMLHeadingElement> {\n /**\n * 标题文本\n */\n children?: JSX.Element;\n}\n\nexport const AlertDialogTitle: Component<AlertDialogTitleProps> = (props) => {\n const [local, others] = splitProps(props, [\"children\", \"class\"] as const);\n\n return (\n <h2 class={local.class} {...others}>\n {local.children}\n </h2>\n );\n};\n\nexport interface AlertDialogDescriptionProps\n extends JSX.HTMLAttributes<HTMLParagraphElement> {\n /**\n * 描述文本\n */\n children?: JSX.Element;\n}\n\nexport const AlertDialogDescription: Component<AlertDialogDescriptionProps> = (\n props,\n) => {\n const [local, others] = splitProps(props, [\"children\", \"class\"] as const);\n\n return (\n <p class={local.class} {...others}>\n {local.children}\n </p>\n );\n};\n\nexport interface AlertDialogActionProps\n extends JSX.ButtonHTMLAttributes<HTMLButtonElement> {\n /**\n * 子元素\n */\n children?: JSX.Element;\n}\n\nexport const AlertDialogAction: Component<AlertDialogActionProps> = (props) => {\n const [local, others] = splitProps(\n props,\n [\"children\", \"class\", \"onClick\"] as const,\n );\n const context = useAlertDialogContext();\n\n const handleClick: JSX.EventHandler<HTMLButtonElement, MouseEvent> = (e) => {\n if (typeof local.onClick === \"function\") {\n local.onClick(e);\n }\n context.setOpen(false);\n };\n\n return (\n <button type=\"button\" class={local.class} onClick={handleClick} {...others}>\n {local.children}\n </button>\n );\n};\n\nexport interface AlertDialogCancelProps\n extends JSX.ButtonHTMLAttributes<HTMLButtonElement> {\n /**\n * 子元素\n */\n children?: JSX.Element;\n}\n\nexport const AlertDialogCancel: Component<AlertDialogCancelProps> = (props) => {\n const [local, others] = splitProps(\n props,\n [\"children\", \"class\", \"onClick\"] as const,\n );\n const context = useAlertDialogContext();\n\n const handleClick: JSX.EventHandler<HTMLButtonElement, MouseEvent> = (e) => {\n if (typeof local.onClick === \"function\") {\n local.onClick(e);\n }\n context.setOpen(false);\n };\n\n return (\n <button type=\"button\" class={local.class} onClick={handleClick} {...others}>\n {local.children}\n </button>\n );\n};\n\nAlertDialog.Trigger = AlertDialogTrigger;\nAlertDialog.Overlay = AlertDialogOverlay;\nAlertDialog.Content = AlertDialogContent;\nAlertDialog.Title = AlertDialogTitle;\nAlertDialog.Description = AlertDialogDescription;\nAlertDialog.Action = AlertDialogAction;\nAlertDialog.Cancel = AlertDialogCancel;\n"],"names":["AlertDialogContext","createContext","useAlertDialogContext","context","useContext","Error","AlertDialogBase","props","local","splitProps","internalOpen","setInternalOpen","createSignal","open","defaultOpen","isControlled","undefined","handleOpenChange","newOpen","onOpenChange","handleKeyDown","e","key","onMount","isServer","document","addEventListener","body","style","overflow","createEffect","removeEventListener","onCleanup","contextValue","setOpen","_$createComponent","Provider","value","children","AlertDialog","Object","assign","Trigger","Overlay","Content","Title","Description","Action","Cancel","AlertDialogTrigger","others","handleClick","onClick","_el$","_tmpl$","$$click","_$spread","_$mergeProps","class","_$insert","AlertDialogOverlay","_el$2","_tmpl$2","AlertDialogContent","Show","when","Portal","mount","_el$3","_tmpl$3","AlertDialogTitle","_el$4","_tmpl$4","AlertDialogDescription","_el$5","_tmpl$5","AlertDialogAction","_el$6","AlertDialogCancel","_el$7","_$delegateEvents"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"AspectRatio.js","sources":["../../../src/components/AspectRatio/AspectRatio.tsx"],"sourcesContent":["import { splitProps } from 'solid-js';\nimport type { Component, JSX } from 'solid-js';\n\nexport interface AspectRatioProps extends JSX.HTMLAttributes<HTMLDivElement> {\n /**\n * 宽高比\n * @default 1\n */\n ratio?: number;\n /**\n * 子元素\n */\n children?: JSX.Element;\n}\n\nexport const AspectRatio: Component<AspectRatioProps> = (props) => {\n const [local, others] = splitProps(props, ['ratio', 'class', 'children', 'style']);\n\n const ratio = () => local.ratio ?? 1;\n const paddingBottom = () => `${(1 / ratio()) * 100}%`;\n\n return (\n <div\n class={local.class}\n style={`position: relative; width: 100%; padding-bottom: ${paddingBottom()}; ${typeof local.style === 'string' ? local.style : ''}`}\n {...others}\n >\n <div\n style=\"position: absolute; top: 0; left: 0; width: 100%; height: 100%;\"\n >\n {local.children}\n </div>\n </div>\n );\n};\n\n"],"names":["AspectRatio","props","local","others","splitProps","ratio","paddingBottom","_el$","_tmpl$","_el$2","firstChild","_$spread","_$mergeProps","class","style","_$insert","children"],"mappings":";;;AAeO,MAAMA,cAA4CC,CAAAA,UAAU;AACjE,QAAM,CAACC,OAAOC,MAAM,IAAIC,WAAWH,OAAO,CAAC,SAAS,SAAS,YAAY,OAAO,CAAC;AAEjF,QAAMI,QAAQA,MAAMH,MAAMG,SAAS;AACnC,QAAMC,gBAAgBA,MAAM,GAAI,IAAID,MAAAA,IAAW,GAAG;AAElD,UAAA,MAAA;AAAA,QAAAE,OAAAC,OAAAA,GAAAC,QAAAF,KAAAG;AAAAC,WAAAJ,MAAAK,WAAA;AAAA,MAAA,KAAA,OAAA,IAAA;AAAA,eAEWV,MAAMW;AAAAA,MAAK;AAAA,MAAA,IAClBC,QAAK;AAAA,eAAE,oDAAoDR,cAAAA,CAAe,KAAK,OAAOJ,MAAMY,UAAU,WAAWZ,MAAMY,QAAQ,EAAE;AAAA,MAAE;AAAA,IAAA,GAC/HX,MAAM,GAAA,OAAA,IAAA;AAAAY,WAAAN,OAAA,MAKPP,MAAMc,QAAQ;AAAA,WAAAT;AAAAA,EAAA,GAAA;AAIvB;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Avatar.js","sources":["../../../src/components/Avatar/Avatar.tsx"],"sourcesContent":["import { splitProps, Show, createSignal, createContext, useContext, createEffect, onCleanup } from 'solid-js';\nimport type { Component, JSX } from 'solid-js';\n\ninterface AvatarContextValue {\n imageLoadingStatus: () => 'loading' | 'loaded' | 'error';\n setImageLoadingStatus: (status: 'loading' | 'loaded' | 'error') => void;\n}\n\nconst AvatarContext = createContext<AvatarContextValue>();\n\nconst useAvatarContext = () => {\n const context = useContext(AvatarContext);\n if (!context) {\n throw new Error('Avatar components must be used within Avatar');\n }\n return context;\n};\n\nexport interface AvatarProps extends JSX.HTMLAttributes<HTMLDivElement> {\n /**\n * 子元素\n */\n children?: JSX.Element;\n}\n\nexport interface AvatarComponent extends Component<AvatarProps> {\n Image: Component<AvatarImageProps>;\n Fallback: Component<AvatarFallbackProps>;\n}\n\nexport const AvatarBase: Component<AvatarProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'children']);\n const [imageLoadingStatus, setImageLoadingStatus] = createSignal<'loading' | 'loaded' | 'error'>('loading');\n\n const contextValue: AvatarContextValue = {\n imageLoadingStatus,\n setImageLoadingStatus,\n };\n\n return (\n <AvatarContext.Provider value={contextValue}>\n <div\n class={local.class}\n {...others}\n >\n {local.children}\n </div>\n </AvatarContext.Provider>\n );\n};\n\nexport const Avatar = Object.assign(AvatarBase, {\n Image: null as unknown as Component<AvatarImageProps>,\n Fallback: null as unknown as Component<AvatarFallbackProps>,\n}) as AvatarComponent;\n\nexport interface AvatarImageProps extends JSX.ImgHTMLAttributes<HTMLImageElement> {\n /**\n * 图片源地址\n */\n src?: string;\n /**\n * 图片加载失败时的替代文本\n */\n alt?: string;\n /**\n * 加载状态变化回调\n */\n onLoadingStatusChange?: (status: 'loading' | 'loaded' | 'error') => void;\n}\n\nexport const AvatarImage: Component<AvatarImageProps> = (props) => {\n const [local, others] = splitProps(props, [\n 'src',\n 'alt',\n 'class',\n 'onLoadingStatusChange',\n 'onLoad',\n 'onError',\n ]);\n const context = useAvatarContext();\n\n // 当 src 变化时,重置加载状态\n createEffect(() => {\n if (local.src) {\n context.setImageLoadingStatus('loading');\n }\n });\n\n const handleLoad: JSX.EventHandler<HTMLImageElement, Event> = (e) => {\n if (typeof local.onLoad === 'function') {\n local.onLoad(e);\n }\n context.setImageLoadingStatus('loaded');\n local.onLoadingStatusChange?.('loaded');\n };\n\n const handleError: JSX.EventHandler<HTMLImageElement, Event> = (e) => {\n if (typeof local.onError === 'function') {\n local.onError(e as any);\n }\n context.setImageLoadingStatus('error');\n local.onLoadingStatusChange?.('error');\n };\n\n return (\n <Show when={local.src && context.imageLoadingStatus() !== 'error'}>\n <img\n src={local.src}\n alt={local.alt}\n class={local.class}\n onLoad={handleLoad}\n onError={handleError}\n {...others}\n />\n </Show>\n );\n};\n\nexport interface AvatarFallbackProps extends JSX.HTMLAttributes<HTMLDivElement> {\n /**\n * 延迟显示时间(毫秒)\n * @default 0\n */\n delayMs?: number;\n /**\n * 子元素\n */\n children?: JSX.Element;\n}\n\nexport const AvatarFallback: Component<AvatarFallbackProps> = (props) => {\n const [local, others] = splitProps(props, ['delayMs', 'class', 'children']);\n const context = useAvatarContext();\n const [showFallback, setShowFallback] = createSignal(false);\n let timeoutId: number | undefined;\n\n // 根据加载状态和延迟时间决定是否显示 fallback\n createEffect(() => {\n const status = context.imageLoadingStatus();\n const delayMs = local.delayMs ?? 0;\n\n if (status === 'error') {\n // 如果加载失败,立即显示\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = undefined;\n }\n setShowFallback(true);\n } else if (status === 'loading') {\n // 如果正在加载,根据延迟时间决定\n if (delayMs === 0) {\n setShowFallback(true);\n } else if (delayMs > 0) {\n setShowFallback(false);\n timeoutId = setTimeout(() => {\n // 延迟后如果仍在加载,显示 fallback\n if (context.imageLoadingStatus() === 'loading') {\n setShowFallback(true);\n }\n }, delayMs) as unknown as number;\n }\n } else if (status === 'loaded') {\n // 如果已加载,隐藏 fallback\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = undefined;\n }\n setShowFallback(false);\n }\n });\n\n onCleanup(() => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n });\n\n return (\n <Show when={showFallback()}>\n <div\n class={local.class}\n {...others}\n >\n {local.children}\n </div>\n </Show>\n );\n};\n\nAvatar.Image = AvatarImage;\nAvatar.Fallback = AvatarFallback;\n\n"],"names":["AvatarContext","createContext","useAvatarContext","context","useContext","Error","AvatarBase","props","local","others","splitProps","imageLoadingStatus","setImageLoadingStatus","createSignal","contextValue","_$createComponent","Provider","value","children","_el$","_tmpl$","_$spread","_$mergeProps","class","_$insert","Avatar","Object","assign","Image","Fallback","AvatarImage","createEffect","src","handleLoad","e","onLoad","onLoadingStatusChange","handleError","onError","Show","when","_$memo","_el$2","_tmpl$2","addEventListener","alt","AvatarFallback","showFallback","setShowFallback","timeoutId","status","delayMs","clearTimeout","undefined","setTimeout","onCleanup","_el$3"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Checkbox.js","sources":["../../../src/components/Checkbox/Checkbox.tsx"],"sourcesContent":["import { createSignal, splitProps } from \"solid-js\";\nimport type { Component } from \"solid-js\";\nimport type { JSX } from \"solid-js\";\n\nexport interface CheckboxProps\n extends\n Omit<\n JSX.InputHTMLAttributes<HTMLInputElement>,\n \"checked\" | \"onChange\"\n > {\n /**\n * 是否选中\n */\n checked?: boolean;\n /**\n * 默认选中状态\n */\n defaultChecked?: boolean;\n /**\n * 选中状态变化回调\n */\n onCheckedChange?: (checked: boolean) => void;\n /**\n * 是否禁用\n * @default false\n */\n disabled?: boolean;\n /**\n * 是否必填\n * @default false\n */\n required?: boolean;\n}\n\nexport const Checkbox: Component<CheckboxProps> = (props) => {\n const [local, others] = splitProps(props, [\n \"checked\",\n \"defaultChecked\",\n \"onCheckedChange\",\n \"disabled\",\n \"required\",\n \"class\",\n \"id\",\n ]);\n\n const [internalChecked, setInternalChecked] = createSignal(\n local.checked ?? local.defaultChecked ?? false,\n );\n\n const isControlled = () => local.checked !== undefined;\n const checked = () => (isControlled() ? local.checked! : internalChecked());\n\n const handleChange = (e: Event) => {\n const target = e.currentTarget as HTMLInputElement;\n const newChecked = target.checked;\n\n if (!isControlled()) {\n setInternalChecked(newChecked);\n }\n\n local.onCheckedChange?.(newChecked);\n };\n\n return (\n <input\n type=\"checkbox\"\n id={local.id}\n checked={checked()}\n disabled={local.disabled}\n required={local.required}\n class={local.class}\n onChange={handleChange}\n data-state={checked() ? \"checked\" : \"unchecked\"}\n aria-checked={checked()}\n {...others}\n />\n );\n};\n"],"names":["Checkbox","props","local","others","splitProps","internalChecked","setInternalChecked","createSignal","checked","defaultChecked","isControlled","undefined","handleChange","e","target","currentTarget","newChecked","onCheckedChange","_el$","_tmpl$","addEventListener","_$spread","_$mergeProps","id","disabled","required","class"],"mappings":";;;AAkCO,MAAMA,WAAsCC,CAAAA,UAAU;AACzD,QAAM,CAACC,OAAOC,MAAM,IAAIC,WAAWH,OAAO,CACtC,WACA,kBACA,mBACA,YACA,YACA,SACA,IAAI,CACP;AAED,QAAM,CAACI,iBAAiBC,kBAAkB,IAAIC,aAC1CL,MAAMM,WAAWN,MAAMO,kBAAkB,KAC7C;AAEA,QAAMC,eAAeA,MAAMR,MAAMM,YAAYG;AAC7C,QAAMH,UAAUA,MAAOE,aAAAA,IAAiBR,MAAMM,UAAWH,gBAAAA;AAEzD,QAAMO,eAAeA,CAACC,MAAa;AAC/B,UAAMC,SAASD,EAAEE;AACjB,UAAMC,aAAaF,OAAON;AAE1B,QAAI,CAACE,gBAAgB;AACjBJ,yBAAmBU,UAAU;AAAA,IACjC;AAEAd,UAAMe,kBAAkBD,UAAU;AAAA,EACtC;AAEA,UAAA,MAAA;AAAA,QAAAE,OAAAC,OAAAA;AAAAD,SAAAE,iBAAA,UAQkBR,YAAY;AAAAS,WAAAH,MAAAI,WAAA;AAAA,MAAA,IALtBC,KAAE;AAAA,eAAErB,MAAMqB;AAAAA,MAAE;AAAA,MAAA,IACZf,UAAO;AAAA,eAAEA,QAAAA;AAAAA,MAAS;AAAA,MAAA,IAClBgB,WAAQ;AAAA,eAAEtB,MAAMsB;AAAAA,MAAQ;AAAA,MAAA,IACxBC,WAAQ;AAAA,eAAEvB,MAAMuB;AAAAA,MAAQ;AAAA,MAAA,KAAA,OAAA,IAAA;AAAA,eACjBvB,MAAMwB;AAAAA,MAAK;AAAA,MAAA,KAAA,YAAA,IAAA;AAAA,eAENlB,QAAAA,IAAY,YAAY;AAAA,MAAW;AAAA,MAAA,KAAA,cAAA,IAAA;AAAA,eACjCA,QAAAA;AAAAA,MAAS;AAAA,IAAA,GACnBL,MAAM,GAAA,OAAA,KAAA;AAAA,WAAAe;AAAAA,EAAA,GAAA;AAGtB;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Collapsible.js","sources":["../../../src/components/Collapsible/Collapsible.tsx"],"sourcesContent":["import { splitProps, createSignal, createContext, useContext, Show } from 'solid-js';\nimport type { Component, JSX } from 'solid-js';\n\ninterface CollapsibleContextValue {\n open: () => boolean;\n setOpen: (open: boolean) => void;\n}\n\nconst CollapsibleContext = createContext<CollapsibleContextValue>();\n\nexport const useCollapsibleContext = () => {\n const context = useContext(CollapsibleContext);\n if (!context) {\n throw new Error('Collapsible components must be used within Collapsible');\n }\n return context;\n};\n\nexport interface CollapsibleProps extends JSX.HTMLAttributes<HTMLDivElement> {\n /**\n * 是否打开\n */\n open?: boolean;\n /**\n * 默认打开状态\n */\n defaultOpen?: boolean;\n /**\n * 打开状态变化回调\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * 是否禁用\n * @default false\n */\n disabled?: boolean;\n /**\n * 子元素\n */\n children?: JSX.Element;\n}\n\nconst CollapsibleBase: Component<CollapsibleProps> = (props) => {\n const [local, others] = splitProps(props, [\n 'open',\n 'defaultOpen',\n 'onOpenChange',\n 'disabled',\n 'class',\n 'children',\n ]);\n\n const [internalOpen, setInternalOpen] = createSignal(\n local.open ?? local.defaultOpen ?? false\n );\n\n const isControlled = () => local.open !== undefined;\n const open = () => (isControlled() ? local.open! : internalOpen());\n\n const handleOpenChange = (newOpen: boolean) => {\n if (local.disabled) return;\n if (!isControlled()) {\n setInternalOpen(newOpen);\n }\n local.onOpenChange?.(newOpen);\n };\n\n const contextValue: CollapsibleContextValue = {\n open,\n setOpen: handleOpenChange,\n };\n\n return (\n <CollapsibleContext.Provider value={contextValue}>\n <div\n class={local.class}\n data-state={open() ? 'open' : 'closed'}\n data-disabled={local.disabled ? '' : undefined}\n {...others}\n >\n {local.children}\n </div>\n </CollapsibleContext.Provider>\n );\n};\n\nexport interface CollapsibleComponent extends Component<CollapsibleProps> {\n Trigger: Component<CollapsibleTriggerProps>;\n Content: Component<CollapsibleContentProps>;\n}\n\nexport const Collapsible = Object.assign(CollapsibleBase, {\n Trigger: null as unknown as Component<CollapsibleTriggerProps>,\n Content: null as unknown as Component<CollapsibleContentProps>,\n}) as CollapsibleComponent;\n\nexport interface CollapsibleTriggerProps extends JSX.ButtonHTMLAttributes<HTMLButtonElement> {\n /**\n * 子元素\n */\n children?: JSX.Element;\n /**\n * 是否作为子元素传递\n */\n asChild?: boolean;\n}\n\nexport const CollapsibleTrigger: Component<CollapsibleTriggerProps> = (props) => {\n const [local, others] = splitProps(props, ['children', 'asChild', 'class', 'onClick']);\n const context = useCollapsibleContext();\n\n const handleClick: JSX.EventHandler<HTMLButtonElement, MouseEvent> = (e) => {\n if (typeof local.onClick === 'function') {\n local.onClick(e);\n }\n context.setOpen(!context.open());\n };\n\n return (\n <button\n type=\"button\"\n class={local.class}\n onClick={handleClick}\n aria-expanded={context.open()}\n aria-controls=\"collapsible-content\"\n data-state={context.open() ? 'open' : 'closed'}\n {...others}\n >\n {local.children}\n </button>\n );\n};\n\nexport interface CollapsibleContentProps extends JSX.HTMLAttributes<HTMLDivElement> {\n /**\n * 子元素\n */\n children?: JSX.Element;\n}\n\nexport const CollapsibleContent: Component<CollapsibleContentProps> = (props) => {\n const [local, others] = splitProps(props, ['children', 'class']);\n const context = useCollapsibleContext();\n\n return (\n <Show when={context.open()}>\n <div\n id=\"collapsible-content\"\n class={local.class}\n data-state={context.open() ? 'open' : 'closed'}\n {...others}\n >\n {local.children}\n </div>\n </Show>\n );\n};\n\nCollapsible.Trigger = CollapsibleTrigger;\nCollapsible.Content = CollapsibleContent;\n\n"],"names":["CollapsibleContext","createContext","useCollapsibleContext","context","useContext","Error","CollapsibleBase","props","local","others","splitProps","internalOpen","setInternalOpen","createSignal","open","defaultOpen","isControlled","undefined","handleOpenChange","newOpen","disabled","onOpenChange","contextValue","setOpen","_$createComponent","Provider","value","children","_el$","_tmpl$","_$spread","_$mergeProps","class","_$insert","Collapsible","Object","assign","Trigger","Content","CollapsibleTrigger","handleClick","e","onClick","_el$2","_tmpl$2","$$click","CollapsibleContent","Show","when","_el$3","_tmpl$3","_$delegateEvents"],"mappings":"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"}