@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.
- package/README.md +84 -0
- package/dist/components/Accordion/Accordion.js +2 -3
- package/dist/components/AlertDialog/AlertDialog.js +2 -3
- package/dist/components/AspectRatio/AspectRatio.js +0 -1
- package/dist/components/Avatar/Avatar.js +1 -2
- package/dist/components/Checkbox/Checkbox.js +0 -1
- package/dist/components/Collapsible/Collapsible.js +2 -3
- package/dist/components/ContextMenu/ContextMenu.js +2 -3
- package/dist/components/Dialog/Dialog.js +2 -3
- package/dist/components/DropdownMenu/DropdownMenu.js +2 -3
- package/dist/components/HoverCard/HoverCard.js +2 -3
- package/dist/components/Label/Label.js +0 -1
- package/dist/components/Menubar/Menubar.js +2 -3
- package/dist/components/NavigationMenu/NavigationMenu.js +2 -3
- package/dist/components/Popover/Popover.js +2 -3
- package/dist/components/Progress/Progress.js +0 -1
- package/dist/components/RadioGroup/RadioGroup.js +2 -3
- package/dist/components/ScrollArea/ScrollArea.js +0 -1
- package/dist/components/Select/Select.js +2 -3
- package/dist/components/Separator/Separator.js +0 -1
- package/dist/components/Slider/Slider.js +1 -2
- package/dist/components/Switch/Switch.js +1 -2
- package/dist/components/Tabs/Tabs.js +2 -3
- package/dist/components/Toggle/Toggle.js +1 -2
- package/dist/components/ToggleGroup/ToggleGroup.js +2 -3
- package/dist/components/Toolbar/Toolbar.js +0 -1
- package/dist/components/Tooltip/Tooltip.js +2 -3
- package/dist/components/VisuallyHidden/VisuallyHidden.js +0 -1
- package/dist/index.js +0 -1
- package/package.json +46 -1
- package/dist/components/Accordion/Accordion.js.map +0 -1
- package/dist/components/AlertDialog/AlertDialog.js.map +0 -1
- package/dist/components/AspectRatio/AspectRatio.js.map +0 -1
- package/dist/components/Avatar/Avatar.js.map +0 -1
- package/dist/components/Checkbox/Checkbox.js.map +0 -1
- package/dist/components/Collapsible/Collapsible.js.map +0 -1
- package/dist/components/ContextMenu/ContextMenu.js.map +0 -1
- package/dist/components/Dialog/Dialog.js.map +0 -1
- package/dist/components/DropdownMenu/DropdownMenu.js.map +0 -1
- package/dist/components/HoverCard/HoverCard.js.map +0 -1
- package/dist/components/Label/Label.js.map +0 -1
- package/dist/components/Menubar/Menubar.js.map +0 -1
- package/dist/components/NavigationMenu/NavigationMenu.js.map +0 -1
- package/dist/components/Popover/Popover.js.map +0 -1
- package/dist/components/Progress/Progress.js.map +0 -1
- package/dist/components/RadioGroup/RadioGroup.js.map +0 -1
- package/dist/components/ScrollArea/ScrollArea.js.map +0 -1
- package/dist/components/Select/Select.js.map +0 -1
- package/dist/components/Separator/Separator.js.map +0 -1
- package/dist/components/Slider/Slider.js.map +0 -1
- package/dist/components/Switch/Switch.js.map +0 -1
- package/dist/components/Tabs/Tabs.js.map +0 -1
- package/dist/components/Toggle/Toggle.js.map +0 -1
- package/dist/components/ToggleGroup/ToggleGroup.js.map +0 -1
- package/dist/components/Toolbar/Toolbar.js.map +0 -1
- package/dist/components/Tooltip/Tooltip.js.map +0 -1
- package/dist/components/VisuallyHidden/VisuallyHidden.js.map +0 -1
- 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 {
|
|
2
|
-
import { createContext, splitProps, createSignal
|
|
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 {
|
|
2
|
-
import { createContext, splitProps, createSignal, onMount, createEffect, onCleanup
|
|
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
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createComponent, template, spread, mergeProps, insert, memo } from "solid-js/web";
|
|
2
|
-
import {
|
|
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
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { createContext, splitProps,
|
|
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 {
|
|
2
|
-
import { createContext, splitProps,
|
|
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 {
|
|
2
|
-
import { createContext, splitProps, createSignal, onMount, createEffect, onCleanup
|
|
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 {
|
|
2
|
-
import { createContext, splitProps,
|
|
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 {
|
|
2
|
-
import { createContext, splitProps,
|
|
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
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { createContext, splitProps,
|
|
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 {
|
|
2
|
-
import { createContext, splitProps,
|
|
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 {
|
|
2
|
-
import { createContext, splitProps,
|
|
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
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { createContext, splitProps, createSignal
|
|
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
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { createContext, splitProps,
|
|
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
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
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 {
|
|
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 {
|
|
2
|
-
import { createContext, splitProps, createSignal
|
|
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 {
|
|
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 {
|
|
2
|
-
import { createContext, splitProps, createSignal
|
|
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
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { createContext, splitProps,
|
|
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
|
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ensolid/radix",
|
|
3
|
-
"version": "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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"}
|