@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.
Files changed (117) hide show
  1. package/.turbo/turbo-build.log +63 -57
  2. package/CHANGELOG.md +18 -0
  3. package/dist/components/avatar.d.ts +11 -0
  4. package/dist/components/avatar.js +58 -0
  5. package/dist/components/badge.d.ts +13 -0
  6. package/dist/components/{ui/input/message.js → badge.js} +30 -47
  7. package/dist/components/{ui/button.d.ts → button.d.ts} +2 -2
  8. package/dist/components/{ui/button.js → button.js} +9 -6
  9. package/dist/components/calendar.d.ts +11 -0
  10. package/dist/components/calendar.js +751 -0
  11. package/dist/components/checkbox.d.ts +8 -0
  12. package/dist/components/{ui/input/root.js → checkbox.js} +69 -79
  13. package/dist/components/chip.d.ts +24 -0
  14. package/dist/components/chip.js +255 -0
  15. package/dist/components/collapsible.d.ts +8 -0
  16. package/dist/components/collapsible.js +41 -0
  17. package/dist/components/date-picker.d.ts +20 -0
  18. package/dist/components/date-picker.js +232 -0
  19. package/dist/components/divider.d.ts +7 -0
  20. package/dist/components/divider.js +28 -0
  21. package/dist/components/dropdown-menu.d.ts +22 -0
  22. package/dist/components/dropdown-menu.js +294 -0
  23. package/dist/components/{resources/icons.d.ts → icon.d.ts} +11 -2
  24. package/dist/components/{ui/icon.js → icon.js} +20 -5
  25. package/dist/components/input.d.ts +32 -0
  26. package/dist/components/input.js +315 -0
  27. package/dist/components/list.d.ts +25 -0
  28. package/dist/components/{ui/input/content.js → list.js} +83 -87
  29. package/dist/components/{ui/logo.d.ts → logo.d.ts} +2 -2
  30. package/dist/components/{ui/logo.js → logo.js} +5 -5
  31. package/dist/components/{ui/otp-input.js → otp-input.js} +1 -1
  32. package/dist/components/radio.d.ts +10 -0
  33. package/dist/components/{ui/input/label.js → radio.js} +68 -77
  34. package/dist/components/search-input.d.ts +17 -0
  35. package/dist/components/search-input.js +274 -0
  36. package/dist/components/select.d.ts +33 -0
  37. package/dist/components/select.js +550 -0
  38. package/dist/components/sheet.d.ts +19 -0
  39. package/dist/components/sheet.js +251 -0
  40. package/dist/components/switch.d.ts +7 -0
  41. package/dist/components/switch.js +36 -0
  42. package/dist/components/tabs.d.ts +11 -0
  43. package/dist/components/tabs.js +54 -0
  44. package/dist/components/tag.d.ts +18 -0
  45. package/dist/components/tag.js +189 -0
  46. package/dist/components/{ui/typography.d.ts → typography.d.ts} +4 -4
  47. package/dist/components/{ui/typography.js → typography.js} +1 -1
  48. package/dist/index.css +1233 -62
  49. package/dist/index.d.ts +2 -17
  50. package/dist/index.js +0 -788
  51. package/eslint.config.js +8 -1
  52. package/package.json +41 -10
  53. package/src/components/avatar.tsx +53 -0
  54. package/src/components/badge.tsx +40 -0
  55. package/src/components/{ui/button.tsx → button.tsx} +7 -5
  56. package/src/components/calendar.tsx +123 -0
  57. package/src/components/checkbox.tsx +57 -0
  58. package/src/components/chip.tsx +109 -0
  59. package/src/components/collapsible.tsx +35 -0
  60. package/src/components/date-picker.tsx +160 -0
  61. package/src/components/divider.tsx +23 -0
  62. package/src/components/dropdown-menu.tsx +101 -0
  63. package/src/components/{ui/icon.tsx → icon.tsx} +1 -1
  64. package/src/components/input.tsx +256 -0
  65. package/src/components/list.tsx +111 -0
  66. package/src/components/radio.tsx +74 -0
  67. package/src/components/search-input.tsx +112 -0
  68. package/src/components/select.tsx +240 -0
  69. package/src/components/sheet.tsx +141 -0
  70. package/src/components/switch.tsx +31 -0
  71. package/src/components/tabs.tsx +53 -0
  72. package/src/components/tag.tsx +91 -0
  73. package/src/index.css +4 -1
  74. package/src/index.ts +0 -1
  75. package/src/{components/resources → resources}/icons.ts +16 -1
  76. package/src/resources/input-mask.ts +91 -0
  77. package/dist/components/resources/icons.js +0 -133
  78. package/dist/components/resources/logo/horizontal.d.ts +0 -12
  79. package/dist/components/resources/logo/horizontal.js +0 -107
  80. package/dist/components/resources/logo/icon.d.ts +0 -12
  81. package/dist/components/resources/logo/icon.js +0 -79
  82. package/dist/components/resources/logo/index.d.ts +0 -4
  83. package/dist/components/resources/logo/index.js +0 -291
  84. package/dist/components/resources/logo/vertical.d.ts +0 -12
  85. package/dist/components/resources/logo/vertical.js +0 -107
  86. package/dist/components/ui/accordion.d.ts +0 -5
  87. package/dist/components/ui/accordion.js +0 -8
  88. package/dist/components/ui/icon.d.ts +0 -12
  89. package/dist/components/ui/index.d.ts +0 -17
  90. package/dist/components/ui/index.js +0 -788
  91. package/dist/components/ui/input/content.d.ts +0 -9
  92. package/dist/components/ui/input/index.d.ts +0 -12
  93. package/dist/components/ui/input/index.js +0 -335
  94. package/dist/components/ui/input/label.d.ts +0 -12
  95. package/dist/components/ui/input/message.d.ts +0 -10
  96. package/dist/components/ui/input/root.d.ts +0 -18
  97. package/dist/components/ui/input/slot.d.ts +0 -10
  98. package/dist/components/ui/input/slot.js +0 -20
  99. package/dist/components/ui/input/text.d.ts +0 -10
  100. package/dist/components/ui/input/text.js +0 -195
  101. package/src/components/ui/accordion.tsx +0 -3
  102. package/src/components/ui/index.ts +0 -13
  103. package/src/components/ui/input/content.tsx +0 -59
  104. package/src/components/ui/input/index.ts +0 -6
  105. package/src/components/ui/input/label.tsx +0 -41
  106. package/src/components/ui/input/message.tsx +0 -37
  107. package/src/components/ui/input/root.tsx +0 -57
  108. package/src/components/ui/input/slot.tsx +0 -21
  109. package/src/components/ui/input/text.tsx +0 -69
  110. /package/dist/components/{ui/otp-input.d.ts → otp-input.d.ts} +0 -0
  111. /package/src/components/{ui/logo.tsx → logo.tsx} +0 -0
  112. /package/src/components/{ui/otp-input.tsx → otp-input.tsx} +0 -0
  113. /package/src/components/{ui/typography.tsx → typography.tsx} +0 -0
  114. /package/src/{components/resources → resources}/logo/horizontal.tsx +0 -0
  115. /package/src/{components/resources → resources}/logo/icon.tsx +0 -0
  116. /package/src/{components/resources → resources}/logo/index.ts +0 -0
  117. /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
- 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"];
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
- export { type IconType, icons };
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/ui/icon.tsx
1
+ // src/components/icon.tsx
2
2
  import { cx } from "@xjur-ui/util";
3
3
 
4
- // src/components/resources/icons.ts
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/ui/icon.tsx
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 text-icon-neutral-3",
159
+ "text-size-body-lg",
145
160
  className
146
161
  ),
147
162
  style: {