@xjur-ui/react 1.0.0 → 1.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/.turbo/turbo-build.log +63 -57
- package/CHANGELOG.md +18 -0
- package/dist/components/avatar.d.ts +11 -0
- package/dist/components/avatar.js +58 -0
- package/dist/components/badge.d.ts +13 -0
- package/dist/components/{ui/input/message.js → badge.js} +30 -47
- package/dist/components/{ui/button.d.ts → button.d.ts} +2 -2
- package/dist/components/{ui/button.js → button.js} +9 -6
- package/dist/components/calendar.d.ts +11 -0
- package/dist/components/calendar.js +751 -0
- package/dist/components/checkbox.d.ts +8 -0
- package/dist/components/{ui/input/root.js → checkbox.js} +69 -79
- package/dist/components/chip.d.ts +24 -0
- package/dist/components/chip.js +255 -0
- package/dist/components/collapsible.d.ts +8 -0
- package/dist/components/collapsible.js +41 -0
- package/dist/components/date-picker.d.ts +20 -0
- package/dist/components/date-picker.js +232 -0
- package/dist/components/divider.d.ts +7 -0
- package/dist/components/divider.js +28 -0
- package/dist/components/dropdown-menu.d.ts +22 -0
- package/dist/components/dropdown-menu.js +294 -0
- package/dist/components/{resources/icons.d.ts → icon.d.ts} +11 -2
- package/dist/components/{ui/icon.js → icon.js} +20 -5
- package/dist/components/input.d.ts +32 -0
- package/dist/components/input.js +315 -0
- package/dist/components/list.d.ts +25 -0
- package/dist/components/{ui/input/content.js → list.js} +83 -87
- package/dist/components/{ui/logo.d.ts → logo.d.ts} +2 -2
- package/dist/components/{ui/logo.js → logo.js} +5 -5
- package/dist/components/{ui/otp-input.js → otp-input.js} +1 -1
- package/dist/components/radio.d.ts +10 -0
- package/dist/components/{ui/input/label.js → radio.js} +68 -77
- package/dist/components/search-input.d.ts +17 -0
- package/dist/components/search-input.js +274 -0
- package/dist/components/select.d.ts +33 -0
- package/dist/components/select.js +550 -0
- package/dist/components/sheet.d.ts +19 -0
- package/dist/components/sheet.js +251 -0
- package/dist/components/switch.d.ts +7 -0
- package/dist/components/switch.js +36 -0
- package/dist/components/tabs.d.ts +11 -0
- package/dist/components/tabs.js +54 -0
- package/dist/components/tag.d.ts +18 -0
- package/dist/components/tag.js +189 -0
- package/dist/components/{ui/typography.d.ts → typography.d.ts} +4 -4
- package/dist/components/{ui/typography.js → typography.js} +1 -1
- package/dist/index.css +1233 -62
- package/dist/index.d.ts +2 -17
- package/dist/index.js +0 -788
- package/eslint.config.js +8 -1
- package/package.json +41 -10
- package/src/components/avatar.tsx +53 -0
- package/src/components/badge.tsx +40 -0
- package/src/components/{ui/button.tsx → button.tsx} +7 -5
- package/src/components/calendar.tsx +123 -0
- package/src/components/checkbox.tsx +57 -0
- package/src/components/chip.tsx +109 -0
- package/src/components/collapsible.tsx +35 -0
- package/src/components/date-picker.tsx +160 -0
- package/src/components/divider.tsx +23 -0
- package/src/components/dropdown-menu.tsx +101 -0
- package/src/components/{ui/icon.tsx → icon.tsx} +1 -1
- package/src/components/input.tsx +256 -0
- package/src/components/list.tsx +111 -0
- package/src/components/radio.tsx +74 -0
- package/src/components/search-input.tsx +112 -0
- package/src/components/select.tsx +240 -0
- package/src/components/sheet.tsx +141 -0
- package/src/components/switch.tsx +31 -0
- package/src/components/tabs.tsx +53 -0
- package/src/components/tag.tsx +91 -0
- package/src/index.css +4 -1
- package/src/index.ts +0 -1
- package/src/{components/resources → resources}/icons.ts +16 -1
- package/src/resources/input-mask.ts +91 -0
- package/dist/components/resources/icons.js +0 -133
- package/dist/components/resources/logo/horizontal.d.ts +0 -12
- package/dist/components/resources/logo/horizontal.js +0 -107
- package/dist/components/resources/logo/icon.d.ts +0 -12
- package/dist/components/resources/logo/icon.js +0 -79
- package/dist/components/resources/logo/index.d.ts +0 -4
- package/dist/components/resources/logo/index.js +0 -291
- package/dist/components/resources/logo/vertical.d.ts +0 -12
- package/dist/components/resources/logo/vertical.js +0 -107
- package/dist/components/ui/accordion.d.ts +0 -5
- package/dist/components/ui/accordion.js +0 -8
- package/dist/components/ui/icon.d.ts +0 -12
- package/dist/components/ui/index.d.ts +0 -17
- package/dist/components/ui/index.js +0 -788
- package/dist/components/ui/input/content.d.ts +0 -9
- package/dist/components/ui/input/index.d.ts +0 -12
- package/dist/components/ui/input/index.js +0 -335
- package/dist/components/ui/input/label.d.ts +0 -12
- package/dist/components/ui/input/message.d.ts +0 -10
- package/dist/components/ui/input/root.d.ts +0 -18
- package/dist/components/ui/input/slot.d.ts +0 -10
- package/dist/components/ui/input/slot.js +0 -20
- package/dist/components/ui/input/text.d.ts +0 -10
- package/dist/components/ui/input/text.js +0 -195
- package/src/components/ui/accordion.tsx +0 -3
- package/src/components/ui/index.ts +0 -13
- package/src/components/ui/input/content.tsx +0 -59
- package/src/components/ui/input/index.ts +0 -6
- package/src/components/ui/input/label.tsx +0 -41
- package/src/components/ui/input/message.tsx +0 -37
- package/src/components/ui/input/root.tsx +0 -57
- package/src/components/ui/input/slot.tsx +0 -21
- package/src/components/ui/input/text.tsx +0 -69
- /package/dist/components/{ui/otp-input.d.ts → otp-input.d.ts} +0 -0
- /package/src/components/{ui/logo.tsx → logo.tsx} +0 -0
- /package/src/components/{ui/otp-input.tsx → otp-input.tsx} +0 -0
- /package/src/components/{ui/typography.tsx → typography.tsx} +0 -0
- /package/src/{components/resources → resources}/logo/horizontal.tsx +0 -0
- /package/src/{components/resources → resources}/logo/icon.tsx +0 -0
- /package/src/{components/resources → resources}/logo/index.ts +0 -0
- /package/src/{components/resources → resources}/logo/vertical.tsx +0 -0
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
// src/components/date-picker.tsx
|
|
2
|
+
import * as RadixPopover from "@radix-ui/react-popover";
|
|
3
|
+
import { cx } from "@xjur-ui/util";
|
|
4
|
+
|
|
5
|
+
// src/components/typography.tsx
|
|
6
|
+
import { Slot } from "@radix-ui/react-slot";
|
|
7
|
+
import { cva } from "@xjur-ui/util";
|
|
8
|
+
import { memo } from "react";
|
|
9
|
+
import { jsx } from "react/jsx-runtime";
|
|
10
|
+
var typographyVariants = cva("", {
|
|
11
|
+
variants: {
|
|
12
|
+
variant: {
|
|
13
|
+
body: "",
|
|
14
|
+
label: "",
|
|
15
|
+
title: "",
|
|
16
|
+
headline: ""
|
|
17
|
+
},
|
|
18
|
+
size: {
|
|
19
|
+
"sm-2x": "",
|
|
20
|
+
"sm-1x": "",
|
|
21
|
+
sm: "",
|
|
22
|
+
md: "",
|
|
23
|
+
lg: ""
|
|
24
|
+
},
|
|
25
|
+
weight: {
|
|
26
|
+
thin: "font-thin",
|
|
27
|
+
extraLight: "font-extralight",
|
|
28
|
+
light: "font-light",
|
|
29
|
+
normal: "font-normal",
|
|
30
|
+
medium: "font-medium",
|
|
31
|
+
semibold: "font-semibold",
|
|
32
|
+
bold: "font-bold",
|
|
33
|
+
extraBold: "font-extrabold",
|
|
34
|
+
black: "font-black"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
compoundVariants: [
|
|
38
|
+
{ variant: "body", size: "sm-1x", class: "text-size-body-sm-1x" },
|
|
39
|
+
{ variant: "body", size: "sm", class: "text-size-body-sm" },
|
|
40
|
+
{ variant: "body", size: "md", class: "text-size-body-md" },
|
|
41
|
+
{ variant: "body", size: "lg", class: "text-size-body-lg" },
|
|
42
|
+
{ variant: "label", size: "sm-2x", class: "text-size-label-sm-2x" },
|
|
43
|
+
{ variant: "label", size: "sm-1x", class: "text-size-label-sm-1x" },
|
|
44
|
+
{ variant: "label", size: "sm", class: "text-size-label-sm" },
|
|
45
|
+
{ variant: "label", size: "md", class: "text-size-label-md" },
|
|
46
|
+
{ variant: "label", size: "lg", class: "text-size-label-lg" },
|
|
47
|
+
{ variant: "title", size: "sm", class: "text-size-title-sm" },
|
|
48
|
+
{ variant: "title", size: "md", class: "text-size-title-md" },
|
|
49
|
+
{ variant: "title", size: "lg", class: "text-size-title-lg" },
|
|
50
|
+
{ variant: "headline", size: "sm", class: "text-size-headline-sm" },
|
|
51
|
+
{ variant: "headline", size: "md", class: "text-size-headline-md" },
|
|
52
|
+
{ variant: "headline", size: "lg", class: "text-size-headline-lg" }
|
|
53
|
+
],
|
|
54
|
+
defaultVariants: {
|
|
55
|
+
variant: "body",
|
|
56
|
+
size: "md",
|
|
57
|
+
weight: "normal"
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
var Typography = memo(
|
|
61
|
+
({
|
|
62
|
+
variant,
|
|
63
|
+
size,
|
|
64
|
+
weight,
|
|
65
|
+
asChild,
|
|
66
|
+
className,
|
|
67
|
+
...props
|
|
68
|
+
}) => {
|
|
69
|
+
const Component = asChild ? Slot : "span";
|
|
70
|
+
return /* @__PURE__ */ jsx(
|
|
71
|
+
Component,
|
|
72
|
+
{
|
|
73
|
+
className: typographyVariants({ variant, size, weight, className }),
|
|
74
|
+
...props
|
|
75
|
+
}
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
);
|
|
79
|
+
Typography.displayName = "Typography";
|
|
80
|
+
|
|
81
|
+
// src/components/date-picker.tsx
|
|
82
|
+
import { Fragment, jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
83
|
+
function DatePickerRoot(props) {
|
|
84
|
+
return /* @__PURE__ */ jsx2(RadixPopover.Root, { ...props });
|
|
85
|
+
}
|
|
86
|
+
function DatePickerTrigger({
|
|
87
|
+
className,
|
|
88
|
+
...props
|
|
89
|
+
}) {
|
|
90
|
+
return /* @__PURE__ */ jsx2(
|
|
91
|
+
RadixPopover.Trigger,
|
|
92
|
+
{
|
|
93
|
+
className: cx(
|
|
94
|
+
className,
|
|
95
|
+
"group h-large-4x rounded-small-1x gap-small py-small_1x-alt px-small relative flex w-full cursor-pointer items-center",
|
|
96
|
+
"bg-layer-2-idle border-border-layer-2 hover:border-border-layer-3 border",
|
|
97
|
+
"data-[state=open]:border-primary-idle data-[state=open]:shadow-focus-primary",
|
|
98
|
+
"has-[input:not(:placeholder-shown)]:text-primary-idle",
|
|
99
|
+
"has-[input:not(:placeholder-shown)]:border-primary-idle"
|
|
100
|
+
),
|
|
101
|
+
...props
|
|
102
|
+
}
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
function DatePickerContent({
|
|
106
|
+
className,
|
|
107
|
+
sideOffset = 5,
|
|
108
|
+
side = "bottom",
|
|
109
|
+
align = "start",
|
|
110
|
+
...props
|
|
111
|
+
}) {
|
|
112
|
+
return /* @__PURE__ */ jsx2(RadixPopover.Portal, { children: /* @__PURE__ */ jsx2(
|
|
113
|
+
RadixPopover.Content,
|
|
114
|
+
{
|
|
115
|
+
align,
|
|
116
|
+
className: cx(
|
|
117
|
+
className,
|
|
118
|
+
"group z-10 max-h-[var(--radix-popover-content-available-height)] max-w-[var(--radix-popover-content-available-width)] min-w-[var(--radix-popover-trigger-width)]"
|
|
119
|
+
),
|
|
120
|
+
side,
|
|
121
|
+
sideOffset,
|
|
122
|
+
...props
|
|
123
|
+
}
|
|
124
|
+
) });
|
|
125
|
+
}
|
|
126
|
+
function DatePickerValue({
|
|
127
|
+
className,
|
|
128
|
+
displayValue = "",
|
|
129
|
+
value,
|
|
130
|
+
...props
|
|
131
|
+
}) {
|
|
132
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
133
|
+
!!displayValue && /* @__PURE__ */ jsx2(Typography, { className: "text-neutral-dark group-has-[div[data-slot=date-picker-left-slot]]:pl-large-1x", children: displayValue }),
|
|
134
|
+
/* @__PURE__ */ jsx2(
|
|
135
|
+
"input",
|
|
136
|
+
{
|
|
137
|
+
...props,
|
|
138
|
+
"aria-readonly": true,
|
|
139
|
+
className: cx("pointer-events-none", className),
|
|
140
|
+
hidden: true,
|
|
141
|
+
placeholder: props.placeholder ?? " ",
|
|
142
|
+
readOnly: true,
|
|
143
|
+
value: value ?? ""
|
|
144
|
+
}
|
|
145
|
+
)
|
|
146
|
+
] });
|
|
147
|
+
}
|
|
148
|
+
function DatePickerLabel({
|
|
149
|
+
className,
|
|
150
|
+
htmlFor,
|
|
151
|
+
children,
|
|
152
|
+
...props
|
|
153
|
+
}) {
|
|
154
|
+
return /* @__PURE__ */ jsx2(
|
|
155
|
+
Typography,
|
|
156
|
+
{
|
|
157
|
+
asChild: true,
|
|
158
|
+
className: cx(
|
|
159
|
+
"inline-block max-w-full truncate text-left font-normal",
|
|
160
|
+
"left-small right-small pointer-events-none absolute top-1/2 -translate-y-1/2",
|
|
161
|
+
"ease transition-all duration-250",
|
|
162
|
+
// Content Open
|
|
163
|
+
"group-data-[state=open]:text-primary-idle",
|
|
164
|
+
"group-data-[state=open]:-top-[3px]",
|
|
165
|
+
"group-data-[state=open]:text-size-label-sm-1x",
|
|
166
|
+
"group-data-[state=open]:font-medium",
|
|
167
|
+
// Filled
|
|
168
|
+
"group-has-[input:not(:placeholder-shown)]:text-primary-idle",
|
|
169
|
+
"group-has-[input:not(:placeholder-shown)]:-top-[3px]",
|
|
170
|
+
"group-has-[input:not(:placeholder-shown)]:text-size-label-sm-1x",
|
|
171
|
+
"group-has-[input:not(:placeholder-shown)]:font-medium",
|
|
172
|
+
// If has left slot
|
|
173
|
+
"group-has-[div[data-slot=date-picker-left-slot]]:left-large-4x",
|
|
174
|
+
"group-has-[div[data-slot=date-picker-left-slot]]:group-data-[state=open]:left-small",
|
|
175
|
+
"group-has-[div[data-slot=date-picker-left-slot]]:group-has-[input:not(:placeholder-shown)]:left-small",
|
|
176
|
+
// If has right slot
|
|
177
|
+
"group-has-[div[data-slot=date-picker-right-slot]]:right-large-4x",
|
|
178
|
+
"group-has-[div[data-slot=date-picker-right-slot]]:group-data-[state=open]:right-small",
|
|
179
|
+
"group-has-[div[data-slot=date-picker-right-slot]]:group-has-[input:not(:placeholder-shown)]:right-small",
|
|
180
|
+
// Animate
|
|
181
|
+
"group-data-[state=open]:animate-in",
|
|
182
|
+
"group-data-[state=closed]:animate-out",
|
|
183
|
+
"group-has-[input:not(:placeholder-shown)]:animate-out",
|
|
184
|
+
className
|
|
185
|
+
),
|
|
186
|
+
weight: "medium",
|
|
187
|
+
...props,
|
|
188
|
+
children: /* @__PURE__ */ jsx2("label", { htmlFor, children: /* @__PURE__ */ jsx2("span", { className: "bg-layer-2-idle rounded-small-1x max-w-full", children }) })
|
|
189
|
+
}
|
|
190
|
+
);
|
|
191
|
+
}
|
|
192
|
+
function DatePickerLeftSlot({
|
|
193
|
+
className,
|
|
194
|
+
...props
|
|
195
|
+
}) {
|
|
196
|
+
return /* @__PURE__ */ jsx2(
|
|
197
|
+
"div",
|
|
198
|
+
{
|
|
199
|
+
...props,
|
|
200
|
+
className: cx(
|
|
201
|
+
className,
|
|
202
|
+
"left-small absolute top-1/2 flex -translate-y-1/2 items-center justify-center"
|
|
203
|
+
),
|
|
204
|
+
"data-slot": "date-picker-left-slot"
|
|
205
|
+
}
|
|
206
|
+
);
|
|
207
|
+
}
|
|
208
|
+
function DatePickerRightSlot({
|
|
209
|
+
className,
|
|
210
|
+
...props
|
|
211
|
+
}) {
|
|
212
|
+
return /* @__PURE__ */ jsx2(
|
|
213
|
+
"div",
|
|
214
|
+
{
|
|
215
|
+
...props,
|
|
216
|
+
className: cx(
|
|
217
|
+
className,
|
|
218
|
+
"right-small absolute top-1/2 flex -translate-y-1/2 items-center justify-center"
|
|
219
|
+
),
|
|
220
|
+
"data-slot": "date-picker-right-slot"
|
|
221
|
+
}
|
|
222
|
+
);
|
|
223
|
+
}
|
|
224
|
+
export {
|
|
225
|
+
DatePickerContent,
|
|
226
|
+
DatePickerLabel,
|
|
227
|
+
DatePickerLeftSlot,
|
|
228
|
+
DatePickerRightSlot,
|
|
229
|
+
DatePickerRoot,
|
|
230
|
+
DatePickerTrigger,
|
|
231
|
+
DatePickerValue
|
|
232
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import * as SeparatorPrimitive from '@radix-ui/react-separator';
|
|
4
|
+
|
|
5
|
+
declare function Divider({ className, orientation, decorative, ...props }: React.ComponentProps<typeof SeparatorPrimitive.Root>): react_jsx_runtime.JSX.Element;
|
|
6
|
+
|
|
7
|
+
export { Divider };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// src/components/divider.tsx
|
|
2
|
+
import "react";
|
|
3
|
+
import * as SeparatorPrimitive from "@radix-ui/react-separator";
|
|
4
|
+
import { cx } from "@xjur-ui/util";
|
|
5
|
+
import { jsx } from "react/jsx-runtime";
|
|
6
|
+
function Divider({
|
|
7
|
+
className,
|
|
8
|
+
orientation = "horizontal",
|
|
9
|
+
decorative = true,
|
|
10
|
+
...props
|
|
11
|
+
}) {
|
|
12
|
+
return /* @__PURE__ */ jsx(
|
|
13
|
+
SeparatorPrimitive.Root,
|
|
14
|
+
{
|
|
15
|
+
className: cx(
|
|
16
|
+
"bg-border-layer-2 shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",
|
|
17
|
+
className
|
|
18
|
+
),
|
|
19
|
+
"data-slot": "separator",
|
|
20
|
+
decorative,
|
|
21
|
+
orientation,
|
|
22
|
+
...props
|
|
23
|
+
}
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
export {
|
|
27
|
+
Divider
|
|
28
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
|
|
4
|
+
import { ListContent, ListHeader, ListHeaderTitle, ListItem } from './list.js';
|
|
5
|
+
import { Typography } from './typography.js';
|
|
6
|
+
import { Divider } from './divider.js';
|
|
7
|
+
import 'class-variance-authority/types';
|
|
8
|
+
import '@xjur-ui/util';
|
|
9
|
+
import '@radix-ui/react-separator';
|
|
10
|
+
|
|
11
|
+
declare function DropdownMenuRoot({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Root>): react_jsx_runtime.JSX.Element;
|
|
12
|
+
declare function DropdownMenuPortal({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>): react_jsx_runtime.JSX.Element;
|
|
13
|
+
declare function DropdownMenuTrigger({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>): react_jsx_runtime.JSX.Element;
|
|
14
|
+
declare function DropdownMenuContent({ className, sideOffset, align, side, children, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Content>): react_jsx_runtime.JSX.Element;
|
|
15
|
+
declare function DropdownMenuList({ ...props }: React.ComponentProps<typeof ListContent>): react_jsx_runtime.JSX.Element;
|
|
16
|
+
declare function DropdownMenuHeader({ ...props }: React.ComponentProps<typeof ListHeader>): react_jsx_runtime.JSX.Element;
|
|
17
|
+
declare function DropdownMenuHeaderTitle({ ...props }: React.ComponentProps<typeof ListHeaderTitle>): react_jsx_runtime.JSX.Element;
|
|
18
|
+
declare function DropdownMenuItem({ className, ...props }: React.ComponentProps<typeof ListItem>): react_jsx_runtime.JSX.Element;
|
|
19
|
+
declare function DropdownMenuItemText({ ...props }: React.ComponentProps<typeof Typography>): react_jsx_runtime.JSX.Element;
|
|
20
|
+
declare function DropdownMenuItemDivider({ ...props }: React.ComponentProps<typeof Divider>): react_jsx_runtime.JSX.Element;
|
|
21
|
+
|
|
22
|
+
export { DropdownMenuContent, DropdownMenuHeader, DropdownMenuHeaderTitle, DropdownMenuItem, DropdownMenuItemDivider, DropdownMenuItemText, DropdownMenuList, DropdownMenuPortal, DropdownMenuRoot, DropdownMenuTrigger };
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
// src/components/dropdown-menu.tsx
|
|
2
|
+
import "react";
|
|
3
|
+
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
|
4
|
+
import { cx as cx3 } from "@xjur-ui/util";
|
|
5
|
+
|
|
6
|
+
// src/components/list.tsx
|
|
7
|
+
import { Slot as Slot2 } from "@radix-ui/react-slot";
|
|
8
|
+
import { cx, cva as cva2 } from "@xjur-ui/util";
|
|
9
|
+
|
|
10
|
+
// src/components/typography.tsx
|
|
11
|
+
import { Slot } from "@radix-ui/react-slot";
|
|
12
|
+
import { cva } from "@xjur-ui/util";
|
|
13
|
+
import { memo } from "react";
|
|
14
|
+
import { jsx } from "react/jsx-runtime";
|
|
15
|
+
var typographyVariants = cva("", {
|
|
16
|
+
variants: {
|
|
17
|
+
variant: {
|
|
18
|
+
body: "",
|
|
19
|
+
label: "",
|
|
20
|
+
title: "",
|
|
21
|
+
headline: ""
|
|
22
|
+
},
|
|
23
|
+
size: {
|
|
24
|
+
"sm-2x": "",
|
|
25
|
+
"sm-1x": "",
|
|
26
|
+
sm: "",
|
|
27
|
+
md: "",
|
|
28
|
+
lg: ""
|
|
29
|
+
},
|
|
30
|
+
weight: {
|
|
31
|
+
thin: "font-thin",
|
|
32
|
+
extraLight: "font-extralight",
|
|
33
|
+
light: "font-light",
|
|
34
|
+
normal: "font-normal",
|
|
35
|
+
medium: "font-medium",
|
|
36
|
+
semibold: "font-semibold",
|
|
37
|
+
bold: "font-bold",
|
|
38
|
+
extraBold: "font-extrabold",
|
|
39
|
+
black: "font-black"
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
compoundVariants: [
|
|
43
|
+
{ variant: "body", size: "sm-1x", class: "text-size-body-sm-1x" },
|
|
44
|
+
{ variant: "body", size: "sm", class: "text-size-body-sm" },
|
|
45
|
+
{ variant: "body", size: "md", class: "text-size-body-md" },
|
|
46
|
+
{ variant: "body", size: "lg", class: "text-size-body-lg" },
|
|
47
|
+
{ variant: "label", size: "sm-2x", class: "text-size-label-sm-2x" },
|
|
48
|
+
{ variant: "label", size: "sm-1x", class: "text-size-label-sm-1x" },
|
|
49
|
+
{ variant: "label", size: "sm", class: "text-size-label-sm" },
|
|
50
|
+
{ variant: "label", size: "md", class: "text-size-label-md" },
|
|
51
|
+
{ variant: "label", size: "lg", class: "text-size-label-lg" },
|
|
52
|
+
{ variant: "title", size: "sm", class: "text-size-title-sm" },
|
|
53
|
+
{ variant: "title", size: "md", class: "text-size-title-md" },
|
|
54
|
+
{ variant: "title", size: "lg", class: "text-size-title-lg" },
|
|
55
|
+
{ variant: "headline", size: "sm", class: "text-size-headline-sm" },
|
|
56
|
+
{ variant: "headline", size: "md", class: "text-size-headline-md" },
|
|
57
|
+
{ variant: "headline", size: "lg", class: "text-size-headline-lg" }
|
|
58
|
+
],
|
|
59
|
+
defaultVariants: {
|
|
60
|
+
variant: "body",
|
|
61
|
+
size: "md",
|
|
62
|
+
weight: "normal"
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
var Typography = memo(
|
|
66
|
+
({
|
|
67
|
+
variant,
|
|
68
|
+
size,
|
|
69
|
+
weight,
|
|
70
|
+
asChild,
|
|
71
|
+
className,
|
|
72
|
+
...props
|
|
73
|
+
}) => {
|
|
74
|
+
const Component = asChild ? Slot : "span";
|
|
75
|
+
return /* @__PURE__ */ jsx(
|
|
76
|
+
Component,
|
|
77
|
+
{
|
|
78
|
+
className: typographyVariants({ variant, size, weight, className }),
|
|
79
|
+
...props
|
|
80
|
+
}
|
|
81
|
+
);
|
|
82
|
+
}
|
|
83
|
+
);
|
|
84
|
+
Typography.displayName = "Typography";
|
|
85
|
+
|
|
86
|
+
// src/components/list.tsx
|
|
87
|
+
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
88
|
+
function ListRoot({
|
|
89
|
+
className,
|
|
90
|
+
asChild,
|
|
91
|
+
...props
|
|
92
|
+
}) {
|
|
93
|
+
const Comp = asChild ? Slot2 : "div";
|
|
94
|
+
return /* @__PURE__ */ jsx2(
|
|
95
|
+
Comp,
|
|
96
|
+
{
|
|
97
|
+
...props,
|
|
98
|
+
className: cx(
|
|
99
|
+
className,
|
|
100
|
+
"rounded-small scrollbar-hide bg-layer-2-idle border-border-layer-2 shadow-elevation-3 z-10 max-h-[400px] list-none overflow-y-auto border"
|
|
101
|
+
)
|
|
102
|
+
}
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
function ListHeader({
|
|
106
|
+
className,
|
|
107
|
+
asChild,
|
|
108
|
+
...props
|
|
109
|
+
}) {
|
|
110
|
+
const Comp = asChild ? Slot2 : "div";
|
|
111
|
+
return /* @__PURE__ */ jsx2(Comp, { ...props, className: cx(className, "px-small pt-small-1x") });
|
|
112
|
+
}
|
|
113
|
+
function ListHeaderTitle({
|
|
114
|
+
variant = "label",
|
|
115
|
+
size = "sm",
|
|
116
|
+
weight = "medium",
|
|
117
|
+
className,
|
|
118
|
+
...props
|
|
119
|
+
}) {
|
|
120
|
+
return /* @__PURE__ */ jsx2(
|
|
121
|
+
Typography,
|
|
122
|
+
{
|
|
123
|
+
className: cx(className, "text-neutral-placeholder"),
|
|
124
|
+
size,
|
|
125
|
+
variant,
|
|
126
|
+
weight,
|
|
127
|
+
...props
|
|
128
|
+
}
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
function ListContent({
|
|
132
|
+
className,
|
|
133
|
+
asChild,
|
|
134
|
+
...props
|
|
135
|
+
}) {
|
|
136
|
+
const Comp = asChild ? Slot2 : "ul";
|
|
137
|
+
return /* @__PURE__ */ jsx2(
|
|
138
|
+
Comp,
|
|
139
|
+
{
|
|
140
|
+
...props,
|
|
141
|
+
className: cx("gap-small-1x p-small flex flex-col", className)
|
|
142
|
+
}
|
|
143
|
+
);
|
|
144
|
+
}
|
|
145
|
+
var variants = cva2(
|
|
146
|
+
[
|
|
147
|
+
"py-medium px-small flex items-center gap-small rounded-small-1x",
|
|
148
|
+
"bg-layer-2-idle text-neutral-dark",
|
|
149
|
+
"hover:bg-layer-2-hover transition-colors duration-100 ease-out",
|
|
150
|
+
"active:bg-layer-2-pressed"
|
|
151
|
+
],
|
|
152
|
+
{
|
|
153
|
+
variants: {
|
|
154
|
+
size: {
|
|
155
|
+
md: "h-large-4x",
|
|
156
|
+
lg: "h-large-7x"
|
|
157
|
+
},
|
|
158
|
+
isActive: {
|
|
159
|
+
true: "bg-primary-alt-active text-primary-label-active hover:bg-primary-alt-hover active:bg-primary-alt-pressed"
|
|
160
|
+
}
|
|
161
|
+
},
|
|
162
|
+
defaultVariants: {
|
|
163
|
+
size: "md",
|
|
164
|
+
isActive: false
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
);
|
|
168
|
+
function ListItem({
|
|
169
|
+
className,
|
|
170
|
+
size,
|
|
171
|
+
isActive,
|
|
172
|
+
asChild,
|
|
173
|
+
...props
|
|
174
|
+
}) {
|
|
175
|
+
const Comp = asChild ? Slot2 : "li";
|
|
176
|
+
return /* @__PURE__ */ jsx2(Comp, { ...props, className: cx(variants({ size, isActive }), className) });
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// src/components/divider.tsx
|
|
180
|
+
import "react";
|
|
181
|
+
import * as SeparatorPrimitive from "@radix-ui/react-separator";
|
|
182
|
+
import { cx as cx2 } from "@xjur-ui/util";
|
|
183
|
+
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
184
|
+
function Divider({
|
|
185
|
+
className,
|
|
186
|
+
orientation = "horizontal",
|
|
187
|
+
decorative = true,
|
|
188
|
+
...props
|
|
189
|
+
}) {
|
|
190
|
+
return /* @__PURE__ */ jsx3(
|
|
191
|
+
SeparatorPrimitive.Root,
|
|
192
|
+
{
|
|
193
|
+
className: cx2(
|
|
194
|
+
"bg-border-layer-2 shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",
|
|
195
|
+
className
|
|
196
|
+
),
|
|
197
|
+
"data-slot": "separator",
|
|
198
|
+
decorative,
|
|
199
|
+
orientation,
|
|
200
|
+
...props
|
|
201
|
+
}
|
|
202
|
+
);
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
// src/components/dropdown-menu.tsx
|
|
206
|
+
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
207
|
+
function DropdownMenuRoot({
|
|
208
|
+
...props
|
|
209
|
+
}) {
|
|
210
|
+
return /* @__PURE__ */ jsx4(DropdownMenuPrimitive.Root, { "data-slot": "dropdown-menu", ...props });
|
|
211
|
+
}
|
|
212
|
+
function DropdownMenuPortal({
|
|
213
|
+
...props
|
|
214
|
+
}) {
|
|
215
|
+
return /* @__PURE__ */ jsx4(DropdownMenuPrimitive.Portal, { "data-slot": "dropdown-menu-portal", ...props });
|
|
216
|
+
}
|
|
217
|
+
function DropdownMenuTrigger({
|
|
218
|
+
...props
|
|
219
|
+
}) {
|
|
220
|
+
return /* @__PURE__ */ jsx4(
|
|
221
|
+
DropdownMenuPrimitive.Trigger,
|
|
222
|
+
{
|
|
223
|
+
"data-slot": "dropdown-menu-trigger",
|
|
224
|
+
...props
|
|
225
|
+
}
|
|
226
|
+
);
|
|
227
|
+
}
|
|
228
|
+
function DropdownMenuContent({
|
|
229
|
+
className,
|
|
230
|
+
sideOffset = 4,
|
|
231
|
+
align = "start",
|
|
232
|
+
side = "bottom",
|
|
233
|
+
children,
|
|
234
|
+
...props
|
|
235
|
+
}) {
|
|
236
|
+
return /* @__PURE__ */ jsx4(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx4(
|
|
237
|
+
DropdownMenuPrimitive.Content,
|
|
238
|
+
{
|
|
239
|
+
align,
|
|
240
|
+
className: cx3(
|
|
241
|
+
"group z-10 max-h-[var(--radix-popover-content-available-height)] max-w-[var(--radix-popover-trigger-width)] min-w-[240px]",
|
|
242
|
+
className
|
|
243
|
+
),
|
|
244
|
+
"data-slot": "dropdown-menu-content",
|
|
245
|
+
side,
|
|
246
|
+
sideOffset,
|
|
247
|
+
...props,
|
|
248
|
+
children: /* @__PURE__ */ jsx4(ListRoot, { children })
|
|
249
|
+
}
|
|
250
|
+
) });
|
|
251
|
+
}
|
|
252
|
+
function DropdownMenuList({
|
|
253
|
+
...props
|
|
254
|
+
}) {
|
|
255
|
+
return /* @__PURE__ */ jsx4(ListContent, { ...props });
|
|
256
|
+
}
|
|
257
|
+
function DropdownMenuHeader({
|
|
258
|
+
...props
|
|
259
|
+
}) {
|
|
260
|
+
return /* @__PURE__ */ jsx4(ListHeader, { ...props });
|
|
261
|
+
}
|
|
262
|
+
function DropdownMenuHeaderTitle({
|
|
263
|
+
...props
|
|
264
|
+
}) {
|
|
265
|
+
return /* @__PURE__ */ jsx4(ListHeaderTitle, { ...props });
|
|
266
|
+
}
|
|
267
|
+
function DropdownMenuItem({
|
|
268
|
+
className,
|
|
269
|
+
...props
|
|
270
|
+
}) {
|
|
271
|
+
return /* @__PURE__ */ jsx4(ListItem, { className: cx3(className, "cursor-pointer"), ...props });
|
|
272
|
+
}
|
|
273
|
+
function DropdownMenuItemText({
|
|
274
|
+
...props
|
|
275
|
+
}) {
|
|
276
|
+
return /* @__PURE__ */ jsx4(Typography, { ...props });
|
|
277
|
+
}
|
|
278
|
+
function DropdownMenuItemDivider({
|
|
279
|
+
...props
|
|
280
|
+
}) {
|
|
281
|
+
return /* @__PURE__ */ jsx4(Divider, { ...props });
|
|
282
|
+
}
|
|
283
|
+
export {
|
|
284
|
+
DropdownMenuContent,
|
|
285
|
+
DropdownMenuHeader,
|
|
286
|
+
DropdownMenuHeaderTitle,
|
|
287
|
+
DropdownMenuItem,
|
|
288
|
+
DropdownMenuItemDivider,
|
|
289
|
+
DropdownMenuItemText,
|
|
290
|
+
DropdownMenuList,
|
|
291
|
+
DropdownMenuPortal,
|
|
292
|
+
DropdownMenuRoot,
|
|
293
|
+
DropdownMenuTrigger
|
|
294
|
+
};
|
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { ComponentProps } from 'react';
|
|
3
|
+
|
|
4
|
+
declare const icons: readonly ["account_balance", "ad_units", "add_a_photo", "add", "adjust", "archive", "arrow_downward_alt", "arrow_downward", "arrow_drop_down", "arrow_drop_up", "arrow_split", "arrow_upward_alt", "arrow_upward", "attach_file", "attach_money", "autorenew", "brightness_1", "calendar_today", "call", "chat_bubble", "check_circle", "check", "chevron_left", "chevron_right", "close", "collapse_all", "contacts", "content_copy", "dangerous", "dashboard", "delete", "download", "draft", "drafts", "drag_handle", "drag_indicator", "edit_document", "edit_square", "edit", "error", "expand_all", "file_export", "filter_alt", "filter_list", "first_page", "flag_2", "folder_open", "folder", "format_bold", "format_italic", "format_italic", "format_size", "format_strikethrough", "gavel", "group", "headphones", "help", "hourglass_bottom", "imagesmode", "import_contacts", "inbox", "info", "inventory_2", "keep", "keep", "keyboard_arrow_down", "keyboard_arrow_up", "keyboard_return", "label_off", "label", "last_page", "left_panel_close", "left_panel_open", "link_off", "link", "linked_services", "list", "location_on", "lock", "logout", "mail", "menu", "mic", "more_vert", "notifications", "numbers", "person_add", "person_off", "person", "play_circle", "progress_activity", "question_mark", "radio_button_unchecked", "refresh", "remove", "reply", "right_panel_close", "right_panel_open", "schedule", "search", "sell", "send", "settings", "share", "smart_display", "star", "star", "swap_vert", "thumb_down", "thumb_up", "tune", "unarchive", "undo", "upload", "verified_user", "videocam", "view_list", "view_module", "view_object_track", "visibility_off", "visibility", "warning", "wifi_2_bar", "wifi_off", "wifi", "work", "workspaces", "article", "id_card", "badge", "home", "save", "code", "favorite", "analytics", "reports", "event", "account_circle", "history", "security", "bar_chart", "category"];
|
|
2
5
|
type IconType = (typeof icons)[number];
|
|
3
6
|
|
|
4
|
-
|
|
7
|
+
type IconProps = {
|
|
8
|
+
name: IconType;
|
|
9
|
+
filled?: boolean;
|
|
10
|
+
} & ComponentProps<'span'>;
|
|
11
|
+
declare function Icon({ className, filled, name, ...props }: IconProps): react_jsx_runtime.JSX.Element;
|
|
12
|
+
|
|
13
|
+
export { Icon, type IconProps, type IconType, icons };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
// src/components/
|
|
1
|
+
// src/components/icon.tsx
|
|
2
2
|
import { cx } from "@xjur-ui/util";
|
|
3
3
|
|
|
4
|
-
// src/
|
|
4
|
+
// src/resources/icons.ts
|
|
5
5
|
var icons = [
|
|
6
6
|
"account_balance",
|
|
7
7
|
"ad_units",
|
|
@@ -129,10 +129,25 @@ var icons = [
|
|
|
129
129
|
"wifi_off",
|
|
130
130
|
"wifi",
|
|
131
131
|
"work",
|
|
132
|
-
"workspaces"
|
|
132
|
+
"workspaces",
|
|
133
|
+
"article",
|
|
134
|
+
"id_card",
|
|
135
|
+
"badge",
|
|
136
|
+
"home",
|
|
137
|
+
"save",
|
|
138
|
+
"code",
|
|
139
|
+
"favorite",
|
|
140
|
+
"analytics",
|
|
141
|
+
"reports",
|
|
142
|
+
"event",
|
|
143
|
+
"account_circle",
|
|
144
|
+
"history",
|
|
145
|
+
"security",
|
|
146
|
+
"bar_chart",
|
|
147
|
+
"category"
|
|
133
148
|
];
|
|
134
149
|
|
|
135
|
-
// src/components/
|
|
150
|
+
// src/components/icon.tsx
|
|
136
151
|
import { jsx } from "react/jsx-runtime";
|
|
137
152
|
function Icon({ className, filled = false, name, ...props }) {
|
|
138
153
|
return /* @__PURE__ */ jsx(
|
|
@@ -141,7 +156,7 @@ function Icon({ className, filled = false, name, ...props }) {
|
|
|
141
156
|
...props,
|
|
142
157
|
className: cx(
|
|
143
158
|
"material-symbols-outlined",
|
|
144
|
-
"text-size-body-lg
|
|
159
|
+
"text-size-body-lg",
|
|
145
160
|
className
|
|
146
161
|
),
|
|
147
162
|
style: {
|