@parto-system-design/ui 1.0.4 → 1.0.5
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/dist/index.cjs +854 -577
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +65 -0
- package/dist/index.d.cts +27 -1
- package/dist/index.d.ts +27 -1
- package/dist/index.js +836 -563
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -4008,14 +4008,271 @@ function HoverCardContent({
|
|
|
4008
4008
|
) });
|
|
4009
4009
|
}
|
|
4010
4010
|
|
|
4011
|
-
// src/components/ui/input
|
|
4011
|
+
// src/components/ui/tag-input.tsx
|
|
4012
4012
|
import * as React14 from "react";
|
|
4013
|
+
import { X as X3 } from "lucide-react";
|
|
4013
4014
|
import { cva as cva7 } from "class-variance-authority";
|
|
4015
|
+
import { jsx as jsx35, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
4016
|
+
var tagInputVariants = cva7(
|
|
4017
|
+
"flex min-h-[38px] w-full flex-wrap gap-2 rounded-md border border-control bg-background px-3 py-2 text-sm ring-offset-background focus-within:ring-2 focus-within:ring-background-control focus-within:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
|
|
4018
|
+
{
|
|
4019
|
+
variants: {
|
|
4020
|
+
variant: {
|
|
4021
|
+
default: "bg-background",
|
|
4022
|
+
secondary: "bg-secondary"
|
|
4023
|
+
}
|
|
4024
|
+
},
|
|
4025
|
+
defaultVariants: {
|
|
4026
|
+
variant: "default"
|
|
4027
|
+
}
|
|
4028
|
+
}
|
|
4029
|
+
);
|
|
4030
|
+
var TagInput = React14.forwardRef(
|
|
4031
|
+
({
|
|
4032
|
+
className,
|
|
4033
|
+
variant,
|
|
4034
|
+
value: controlledValue,
|
|
4035
|
+
defaultValue,
|
|
4036
|
+
onChange,
|
|
4037
|
+
placeholder,
|
|
4038
|
+
disabled,
|
|
4039
|
+
maxTags,
|
|
4040
|
+
...props
|
|
4041
|
+
}, ref) => {
|
|
4042
|
+
const [value, setValue] = React14.useState(
|
|
4043
|
+
controlledValue || defaultValue || []
|
|
4044
|
+
);
|
|
4045
|
+
const [inputValue, setInputValue] = React14.useState("");
|
|
4046
|
+
const inputRef = React14.useRef(null);
|
|
4047
|
+
React14.useEffect(() => {
|
|
4048
|
+
if (controlledValue !== void 0) {
|
|
4049
|
+
setValue(controlledValue);
|
|
4050
|
+
}
|
|
4051
|
+
}, [controlledValue]);
|
|
4052
|
+
const handleKeyDown = (e) => {
|
|
4053
|
+
if (e.key === "Enter") {
|
|
4054
|
+
e.preventDefault();
|
|
4055
|
+
const newTag = inputValue.trim();
|
|
4056
|
+
if (newTag && !value.includes(newTag)) {
|
|
4057
|
+
if (maxTags && value.length >= maxTags) return;
|
|
4058
|
+
const newValue = [...value, newTag];
|
|
4059
|
+
if (controlledValue === void 0) {
|
|
4060
|
+
setValue(newValue);
|
|
4061
|
+
}
|
|
4062
|
+
onChange?.(newValue);
|
|
4063
|
+
setInputValue("");
|
|
4064
|
+
}
|
|
4065
|
+
} else if (e.key === "Backspace" && !inputValue && value.length > 0) {
|
|
4066
|
+
const newValue = value.slice(0, -1);
|
|
4067
|
+
if (controlledValue === void 0) {
|
|
4068
|
+
setValue(newValue);
|
|
4069
|
+
}
|
|
4070
|
+
onChange?.(newValue);
|
|
4071
|
+
}
|
|
4072
|
+
};
|
|
4073
|
+
const removeTag = (tagToRemove) => {
|
|
4074
|
+
const newValue = value.filter((tag) => tag !== tagToRemove);
|
|
4075
|
+
if (controlledValue === void 0) {
|
|
4076
|
+
setValue(newValue);
|
|
4077
|
+
}
|
|
4078
|
+
onChange?.(newValue);
|
|
4079
|
+
inputRef.current?.focus();
|
|
4080
|
+
};
|
|
4081
|
+
return /* @__PURE__ */ jsxs20(
|
|
4082
|
+
"div",
|
|
4083
|
+
{
|
|
4084
|
+
ref,
|
|
4085
|
+
className: cn(tagInputVariants({ variant }), className),
|
|
4086
|
+
onClick: () => inputRef.current?.focus(),
|
|
4087
|
+
...props,
|
|
4088
|
+
children: [
|
|
4089
|
+
value.map((tag) => /* @__PURE__ */ jsxs20(
|
|
4090
|
+
Badge,
|
|
4091
|
+
{
|
|
4092
|
+
variant: "secondary",
|
|
4093
|
+
className: "gap-1 pe-1 ps-2 h-7 hover:!bg-primary/20 hover:!text-primary transition-colors [&:hover_svg]:!text-primary",
|
|
4094
|
+
children: [
|
|
4095
|
+
tag,
|
|
4096
|
+
/* @__PURE__ */ jsxs20(
|
|
4097
|
+
"button",
|
|
4098
|
+
{
|
|
4099
|
+
type: "button",
|
|
4100
|
+
onClick: (e) => {
|
|
4101
|
+
e.stopPropagation();
|
|
4102
|
+
removeTag(tag);
|
|
4103
|
+
},
|
|
4104
|
+
className: "rounded-full outline-none ring-offset-background focus:ring-2 focus:ring-ring focus:ring-offset-2 hover:!bg-primary/20 transition-colors",
|
|
4105
|
+
disabled,
|
|
4106
|
+
children: [
|
|
4107
|
+
/* @__PURE__ */ jsx35(X3, { className: "h-3 w-3 text-muted-foreground" }),
|
|
4108
|
+
/* @__PURE__ */ jsxs20("span", { className: "sr-only", children: [
|
|
4109
|
+
"Remove ",
|
|
4110
|
+
tag
|
|
4111
|
+
] })
|
|
4112
|
+
]
|
|
4113
|
+
}
|
|
4114
|
+
)
|
|
4115
|
+
]
|
|
4116
|
+
},
|
|
4117
|
+
tag
|
|
4118
|
+
)),
|
|
4119
|
+
/* @__PURE__ */ jsx35(
|
|
4120
|
+
"input",
|
|
4121
|
+
{
|
|
4122
|
+
ref: inputRef,
|
|
4123
|
+
type: "text",
|
|
4124
|
+
value: inputValue,
|
|
4125
|
+
onChange: (e) => setInputValue(e.target.value),
|
|
4126
|
+
onKeyDown: handleKeyDown,
|
|
4127
|
+
className: "flex-1 bg-transparent outline-none placeholder:text-muted-foreground min-w-[120px] text-sm h-7",
|
|
4128
|
+
placeholder: value.length === 0 ? placeholder : void 0,
|
|
4129
|
+
disabled
|
|
4130
|
+
}
|
|
4131
|
+
)
|
|
4132
|
+
]
|
|
4133
|
+
}
|
|
4134
|
+
);
|
|
4135
|
+
}
|
|
4136
|
+
);
|
|
4137
|
+
TagInput.displayName = "TagInput";
|
|
4138
|
+
|
|
4139
|
+
// src/components/ui/hashtag-input.tsx
|
|
4140
|
+
import * as React15 from "react";
|
|
4141
|
+
import { X as X4 } from "lucide-react";
|
|
4142
|
+
import { cva as cva8 } from "class-variance-authority";
|
|
4143
|
+
import { jsx as jsx36, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
4144
|
+
var hashtagInputVariants = cva8(
|
|
4145
|
+
"flex min-h-[38px] w-full flex-wrap gap-2 rounded-md border border-control bg-background px-3 py-2 text-sm ring-offset-background focus-within:ring-2 focus-within:ring-background-control focus-within:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
|
|
4146
|
+
{
|
|
4147
|
+
variants: {
|
|
4148
|
+
variant: {
|
|
4149
|
+
default: "bg-background",
|
|
4150
|
+
secondary: "bg-secondary"
|
|
4151
|
+
}
|
|
4152
|
+
},
|
|
4153
|
+
defaultVariants: {
|
|
4154
|
+
variant: "default"
|
|
4155
|
+
}
|
|
4156
|
+
}
|
|
4157
|
+
);
|
|
4158
|
+
var HashtagInput = React15.forwardRef(
|
|
4159
|
+
({
|
|
4160
|
+
className,
|
|
4161
|
+
variant,
|
|
4162
|
+
value: controlledValue,
|
|
4163
|
+
defaultValue,
|
|
4164
|
+
onChange,
|
|
4165
|
+
placeholder,
|
|
4166
|
+
disabled,
|
|
4167
|
+
maxTags,
|
|
4168
|
+
...props
|
|
4169
|
+
}, ref) => {
|
|
4170
|
+
const [value, setValue] = React15.useState(
|
|
4171
|
+
controlledValue || defaultValue || []
|
|
4172
|
+
);
|
|
4173
|
+
const [inputValue, setInputValue] = React15.useState("");
|
|
4174
|
+
const inputRef = React15.useRef(null);
|
|
4175
|
+
React15.useEffect(() => {
|
|
4176
|
+
if (controlledValue !== void 0) {
|
|
4177
|
+
setValue(controlledValue);
|
|
4178
|
+
}
|
|
4179
|
+
}, [controlledValue]);
|
|
4180
|
+
const handleKeyDown = (e) => {
|
|
4181
|
+
if (e.key === "Enter") {
|
|
4182
|
+
e.preventDefault();
|
|
4183
|
+
const rawTag = inputValue.trim().replace(/^#/, "");
|
|
4184
|
+
if (rawTag && !value.includes(rawTag)) {
|
|
4185
|
+
if (maxTags && value.length >= maxTags) return;
|
|
4186
|
+
const newValue = [...value, rawTag];
|
|
4187
|
+
if (controlledValue === void 0) {
|
|
4188
|
+
setValue(newValue);
|
|
4189
|
+
}
|
|
4190
|
+
onChange?.(newValue);
|
|
4191
|
+
setInputValue("");
|
|
4192
|
+
}
|
|
4193
|
+
} else if (e.key === "Backspace" && !inputValue && value.length > 0) {
|
|
4194
|
+
const newValue = value.slice(0, -1);
|
|
4195
|
+
if (controlledValue === void 0) {
|
|
4196
|
+
setValue(newValue);
|
|
4197
|
+
}
|
|
4198
|
+
onChange?.(newValue);
|
|
4199
|
+
}
|
|
4200
|
+
};
|
|
4201
|
+
const removeTag = (tagToRemove) => {
|
|
4202
|
+
const newValue = value.filter((tag) => tag !== tagToRemove);
|
|
4203
|
+
if (controlledValue === void 0) {
|
|
4204
|
+
setValue(newValue);
|
|
4205
|
+
}
|
|
4206
|
+
onChange?.(newValue);
|
|
4207
|
+
inputRef.current?.focus();
|
|
4208
|
+
};
|
|
4209
|
+
return /* @__PURE__ */ jsxs21(
|
|
4210
|
+
"div",
|
|
4211
|
+
{
|
|
4212
|
+
ref,
|
|
4213
|
+
className: cn(hashtagInputVariants({ variant }), className),
|
|
4214
|
+
onClick: () => inputRef.current?.focus(),
|
|
4215
|
+
...props,
|
|
4216
|
+
children: [
|
|
4217
|
+
value.map((tag) => /* @__PURE__ */ jsxs21(
|
|
4218
|
+
Badge,
|
|
4219
|
+
{
|
|
4220
|
+
variant: "secondary",
|
|
4221
|
+
className: "gap-1 pe-1 ps-2 h-7 hover:!bg-primary/20 hover:!text-primary transition-colors [&:hover_svg]:!text-primary",
|
|
4222
|
+
children: [
|
|
4223
|
+
"#",
|
|
4224
|
+
tag,
|
|
4225
|
+
/* @__PURE__ */ jsxs21(
|
|
4226
|
+
"button",
|
|
4227
|
+
{
|
|
4228
|
+
type: "button",
|
|
4229
|
+
onClick: (e) => {
|
|
4230
|
+
e.stopPropagation();
|
|
4231
|
+
removeTag(tag);
|
|
4232
|
+
},
|
|
4233
|
+
className: "rounded-full outline-none ring-offset-background focus:ring-2 focus:ring-ring focus:ring-offset-2 hover:!bg-primary/20 transition-colors",
|
|
4234
|
+
disabled,
|
|
4235
|
+
children: [
|
|
4236
|
+
/* @__PURE__ */ jsx36(X4, { className: "h-3 w-3 text-muted-foreground" }),
|
|
4237
|
+
/* @__PURE__ */ jsxs21("span", { className: "sr-only", children: [
|
|
4238
|
+
"Remove ",
|
|
4239
|
+
tag
|
|
4240
|
+
] })
|
|
4241
|
+
]
|
|
4242
|
+
}
|
|
4243
|
+
)
|
|
4244
|
+
]
|
|
4245
|
+
},
|
|
4246
|
+
tag
|
|
4247
|
+
)),
|
|
4248
|
+
/* @__PURE__ */ jsx36(
|
|
4249
|
+
"input",
|
|
4250
|
+
{
|
|
4251
|
+
ref: inputRef,
|
|
4252
|
+
type: "text",
|
|
4253
|
+
value: inputValue,
|
|
4254
|
+
onChange: (e) => setInputValue(e.target.value),
|
|
4255
|
+
onKeyDown: handleKeyDown,
|
|
4256
|
+
className: "flex-1 bg-transparent outline-none placeholder:text-muted-foreground min-w-[120px] text-sm h-7",
|
|
4257
|
+
placeholder: value.length === 0 ? placeholder : void 0,
|
|
4258
|
+
disabled
|
|
4259
|
+
}
|
|
4260
|
+
)
|
|
4261
|
+
]
|
|
4262
|
+
}
|
|
4263
|
+
);
|
|
4264
|
+
}
|
|
4265
|
+
);
|
|
4266
|
+
HashtagInput.displayName = "HashtagInput";
|
|
4267
|
+
|
|
4268
|
+
// src/components/ui/input-group.tsx
|
|
4269
|
+
import * as React16 from "react";
|
|
4270
|
+
import { cva as cva9 } from "class-variance-authority";
|
|
4014
4271
|
|
|
4015
4272
|
// src/components/ui/textarea.tsx
|
|
4016
|
-
import { jsx as
|
|
4273
|
+
import { jsx as jsx37 } from "react/jsx-runtime";
|
|
4017
4274
|
function Textarea({ className, ...props }) {
|
|
4018
|
-
return /* @__PURE__ */
|
|
4275
|
+
return /* @__PURE__ */ jsx37(
|
|
4019
4276
|
"textarea",
|
|
4020
4277
|
{
|
|
4021
4278
|
"data-slot": "textarea",
|
|
@@ -4038,14 +4295,14 @@ function Textarea({ className, ...props }) {
|
|
|
4038
4295
|
}
|
|
4039
4296
|
|
|
4040
4297
|
// src/components/ui/input-group.tsx
|
|
4041
|
-
import { jsx as
|
|
4042
|
-
var InputGroupContext =
|
|
4298
|
+
import { jsx as jsx38 } from "react/jsx-runtime";
|
|
4299
|
+
var InputGroupContext = React16.createContext({});
|
|
4043
4300
|
function useInputGroup() {
|
|
4044
|
-
return
|
|
4301
|
+
return React16.useContext(InputGroupContext);
|
|
4045
4302
|
}
|
|
4046
4303
|
function InputGroup({ className, dir, ...props }) {
|
|
4047
|
-
const contextValue =
|
|
4048
|
-
return /* @__PURE__ */
|
|
4304
|
+
const contextValue = React16.useMemo(() => ({ dir }), [dir]);
|
|
4305
|
+
return /* @__PURE__ */ jsx38(InputGroupContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx38(
|
|
4049
4306
|
"div",
|
|
4050
4307
|
{
|
|
4051
4308
|
"data-slot": "input-group",
|
|
@@ -4070,7 +4327,7 @@ function InputGroup({ className, dir, ...props }) {
|
|
|
4070
4327
|
}
|
|
4071
4328
|
) });
|
|
4072
4329
|
}
|
|
4073
|
-
var inputGroupAddonVariants =
|
|
4330
|
+
var inputGroupAddonVariants = cva9(
|
|
4074
4331
|
"text-muted-foreground flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium select-none [&>svg:not([class*='size-'])]:size-4 [&>kbd]:rounded-[calc(var(--radius)-5px)] group-data-[disabled=true]/input-group:opacity-50",
|
|
4075
4332
|
{
|
|
4076
4333
|
variants: {
|
|
@@ -4091,7 +4348,7 @@ function InputGroupAddon({
|
|
|
4091
4348
|
align = "inline-start",
|
|
4092
4349
|
...props
|
|
4093
4350
|
}) {
|
|
4094
|
-
return /* @__PURE__ */
|
|
4351
|
+
return /* @__PURE__ */ jsx38(
|
|
4095
4352
|
"div",
|
|
4096
4353
|
{
|
|
4097
4354
|
role: "group",
|
|
@@ -4108,7 +4365,7 @@ function InputGroupAddon({
|
|
|
4108
4365
|
}
|
|
4109
4366
|
);
|
|
4110
4367
|
}
|
|
4111
|
-
var inputGroupButtonVariants =
|
|
4368
|
+
var inputGroupButtonVariants = cva9(
|
|
4112
4369
|
"text-sm shadow-none flex gap-2 items-center",
|
|
4113
4370
|
{
|
|
4114
4371
|
variants: {
|
|
@@ -4131,7 +4388,7 @@ function InputGroupButton({
|
|
|
4131
4388
|
size = "xs",
|
|
4132
4389
|
...props
|
|
4133
4390
|
}) {
|
|
4134
|
-
return /* @__PURE__ */
|
|
4391
|
+
return /* @__PURE__ */ jsx38(
|
|
4135
4392
|
Button,
|
|
4136
4393
|
{
|
|
4137
4394
|
type,
|
|
@@ -4143,7 +4400,7 @@ function InputGroupButton({
|
|
|
4143
4400
|
);
|
|
4144
4401
|
}
|
|
4145
4402
|
function InputGroupText({ className, ...props }) {
|
|
4146
|
-
return /* @__PURE__ */
|
|
4403
|
+
return /* @__PURE__ */ jsx38(
|
|
4147
4404
|
"span",
|
|
4148
4405
|
{
|
|
4149
4406
|
className: cn(
|
|
@@ -4164,7 +4421,7 @@ function InputGroupInput({
|
|
|
4164
4421
|
const { dir: contextDir } = useInputGroup();
|
|
4165
4422
|
const isLTRType = type === "url" || type === "email" || type === "tel" || type === "number" || props.inputMode === "numeric";
|
|
4166
4423
|
const dir = dirProp ?? contextDir ?? (isLTRType ? "ltr" : void 0);
|
|
4167
|
-
return /* @__PURE__ */
|
|
4424
|
+
return /* @__PURE__ */ jsx38(
|
|
4168
4425
|
Input,
|
|
4169
4426
|
{
|
|
4170
4427
|
"data-slot": "input-group-control",
|
|
@@ -4185,7 +4442,7 @@ function InputGroupTextarea({
|
|
|
4185
4442
|
className,
|
|
4186
4443
|
...props
|
|
4187
4444
|
}) {
|
|
4188
|
-
return /* @__PURE__ */
|
|
4445
|
+
return /* @__PURE__ */ jsx38(
|
|
4189
4446
|
Textarea,
|
|
4190
4447
|
{
|
|
4191
4448
|
"data-slot": "input-group-control",
|
|
@@ -4199,17 +4456,17 @@ function InputGroupTextarea({
|
|
|
4199
4456
|
}
|
|
4200
4457
|
|
|
4201
4458
|
// src/components/ui/input-otp.tsx
|
|
4202
|
-
import * as
|
|
4459
|
+
import * as React17 from "react";
|
|
4203
4460
|
import { OTPInput, OTPInputContext } from "input-otp";
|
|
4204
4461
|
import { MinusIcon } from "lucide-react";
|
|
4205
|
-
import { jsx as
|
|
4462
|
+
import { jsx as jsx39, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
4206
4463
|
function InputOTP({
|
|
4207
4464
|
className,
|
|
4208
4465
|
containerClassName,
|
|
4209
4466
|
dir = "ltr",
|
|
4210
4467
|
...props
|
|
4211
4468
|
}) {
|
|
4212
|
-
return /* @__PURE__ */
|
|
4469
|
+
return /* @__PURE__ */ jsx39("div", { dir: dir ?? "ltr", children: /* @__PURE__ */ jsx39(
|
|
4213
4470
|
OTPInput,
|
|
4214
4471
|
{
|
|
4215
4472
|
"data-slot": "input-otp",
|
|
@@ -4224,7 +4481,7 @@ function InputOTP({
|
|
|
4224
4481
|
) });
|
|
4225
4482
|
}
|
|
4226
4483
|
function InputOTPGroup({ className, ...props }) {
|
|
4227
|
-
return /* @__PURE__ */
|
|
4484
|
+
return /* @__PURE__ */ jsx39(
|
|
4228
4485
|
"div",
|
|
4229
4486
|
{
|
|
4230
4487
|
"data-slot": "input-otp-group",
|
|
@@ -4239,9 +4496,9 @@ function InputOTPSlot({
|
|
|
4239
4496
|
className,
|
|
4240
4497
|
...props
|
|
4241
4498
|
}) {
|
|
4242
|
-
const inputOTPContext =
|
|
4499
|
+
const inputOTPContext = React17.useContext(OTPInputContext);
|
|
4243
4500
|
const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};
|
|
4244
|
-
return /* @__PURE__ */
|
|
4501
|
+
return /* @__PURE__ */ jsxs22(
|
|
4245
4502
|
"div",
|
|
4246
4503
|
{
|
|
4247
4504
|
"data-slot": "input-otp-slot",
|
|
@@ -4254,36 +4511,36 @@ function InputOTPSlot({
|
|
|
4254
4511
|
...props,
|
|
4255
4512
|
children: [
|
|
4256
4513
|
char,
|
|
4257
|
-
hasFakeCaret && /* @__PURE__ */
|
|
4514
|
+
hasFakeCaret && /* @__PURE__ */ jsx39("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx39("div", { className: "animate-caret-blink bg-foreground h-4 w-px duration-1000" }) })
|
|
4258
4515
|
]
|
|
4259
4516
|
}
|
|
4260
4517
|
);
|
|
4261
4518
|
}
|
|
4262
4519
|
function InputOTPSeparator({ ...props }) {
|
|
4263
|
-
return /* @__PURE__ */
|
|
4520
|
+
return /* @__PURE__ */ jsx39(
|
|
4264
4521
|
"div",
|
|
4265
4522
|
{
|
|
4266
4523
|
"data-slot": "input-otp-separator",
|
|
4267
4524
|
role: "separator",
|
|
4268
4525
|
dir: "ltr",
|
|
4269
4526
|
...props,
|
|
4270
|
-
children: /* @__PURE__ */
|
|
4527
|
+
children: /* @__PURE__ */ jsx39(MinusIcon, {})
|
|
4271
4528
|
}
|
|
4272
4529
|
);
|
|
4273
4530
|
}
|
|
4274
4531
|
|
|
4275
4532
|
// src/components/ui/instagram-post.tsx
|
|
4276
|
-
import * as
|
|
4277
|
-
import { cva as
|
|
4533
|
+
import * as React19 from "react";
|
|
4534
|
+
import { cva as cva10 } from "class-variance-authority";
|
|
4278
4535
|
|
|
4279
4536
|
// src/components/ui/tooltip.tsx
|
|
4280
|
-
import * as
|
|
4537
|
+
import * as React18 from "react";
|
|
4281
4538
|
import * as TooltipPrimitive from "@radix-ui/react-tooltip";
|
|
4282
|
-
import { jsx as
|
|
4539
|
+
import { jsx as jsx40 } from "react/jsx-runtime";
|
|
4283
4540
|
var TooltipProvider = TooltipPrimitive.Provider;
|
|
4284
4541
|
var Tooltip = TooltipPrimitive.Root;
|
|
4285
4542
|
var TooltipTrigger = TooltipPrimitive.Trigger;
|
|
4286
|
-
var TooltipContent =
|
|
4543
|
+
var TooltipContent = React18.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx40(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx40(
|
|
4287
4544
|
TooltipPrimitive.Content,
|
|
4288
4545
|
{
|
|
4289
4546
|
ref,
|
|
@@ -4298,8 +4555,9 @@ var TooltipContent = React16.forwardRef(({ className, sideOffset = 4, ...props }
|
|
|
4298
4555
|
TooltipContent.displayName = TooltipPrimitive.Content.displayName;
|
|
4299
4556
|
|
|
4300
4557
|
// src/components/ui/instagram-post.tsx
|
|
4301
|
-
import {
|
|
4302
|
-
|
|
4558
|
+
import { ImageOff } from "lucide-react";
|
|
4559
|
+
import { Fragment as Fragment4, jsx as jsx41, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
4560
|
+
var instagramPostVariants = cva10(
|
|
4303
4561
|
"relative border bg-background-surface-100",
|
|
4304
4562
|
{
|
|
4305
4563
|
variants: {
|
|
@@ -4319,17 +4577,22 @@ function InstagramPostMedia({
|
|
|
4319
4577
|
variant = "vertical",
|
|
4320
4578
|
placeholderText = "No media available"
|
|
4321
4579
|
}) {
|
|
4580
|
+
const [imageError, setImageError] = React19.useState({});
|
|
4581
|
+
const handleImageError = (url) => {
|
|
4582
|
+
setImageError((prev) => ({ ...prev, [url]: true }));
|
|
4583
|
+
};
|
|
4584
|
+
const renderPlaceholder = () => /* @__PURE__ */ jsx41("div", { className: "w-full h-full flex items-center justify-center bg-muted/10 dark:bg-muted/5", children: /* @__PURE__ */ jsx41(ImageOff, { className: "size-12 text-muted-foreground/50" }) });
|
|
4322
4585
|
if (!media || media.length === 0) {
|
|
4323
|
-
return /* @__PURE__ */
|
|
4586
|
+
return /* @__PURE__ */ jsx41(
|
|
4324
4587
|
"div",
|
|
4325
4588
|
{
|
|
4326
4589
|
className: cn(
|
|
4327
4590
|
"flex items-center justify-center bg-muted/30",
|
|
4328
4591
|
variant === "vertical" ? "aspect-square" : "w-[20%] shrink-0 h-full min-h-[200px] -my-[1px] -ms-[1px]"
|
|
4329
4592
|
),
|
|
4330
|
-
children: /* @__PURE__ */
|
|
4331
|
-
/* @__PURE__ */
|
|
4332
|
-
/* @__PURE__ */
|
|
4593
|
+
children: /* @__PURE__ */ jsxs23("div", { className: "text-center p-4", children: [
|
|
4594
|
+
/* @__PURE__ */ jsx41(ImageOff, { className: "size-12 mx-auto mb-2 text-muted-foreground" }),
|
|
4595
|
+
/* @__PURE__ */ jsx41("p", { className: "text-sm text-muted-foreground", children: placeholderText })
|
|
4333
4596
|
] })
|
|
4334
4597
|
}
|
|
4335
4598
|
);
|
|
@@ -4337,27 +4600,29 @@ function InstagramPostMedia({
|
|
|
4337
4600
|
if (mediaType === "image" || media.length === 1 && media[0].type === "image") {
|
|
4338
4601
|
const item = media[0];
|
|
4339
4602
|
if (variant === "horizontal") {
|
|
4340
|
-
return /* @__PURE__ */
|
|
4341
|
-
/* @__PURE__ */
|
|
4342
|
-
/* @__PURE__ */
|
|
4603
|
+
return /* @__PURE__ */ jsxs23("div", { className: "w-[20%] shrink-0 relative overflow-hidden group cursor-pointer h-full -my-[1px] -ms-[1px] bg-muted/30", children: [
|
|
4604
|
+
/* @__PURE__ */ jsx41("div", { className: "absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-colors duration-300 z-10" }),
|
|
4605
|
+
imageError[item.url] ? renderPlaceholder() : /* @__PURE__ */ jsx41(
|
|
4343
4606
|
"img",
|
|
4344
4607
|
{
|
|
4345
4608
|
src: item.url,
|
|
4346
4609
|
alt: "Post media",
|
|
4347
|
-
className: "w-full h-full object-cover group-hover:scale-110 transition-transform duration-300"
|
|
4610
|
+
className: "w-full h-full object-cover group-hover:scale-110 transition-transform duration-300",
|
|
4611
|
+
onError: () => handleImageError(item.url)
|
|
4348
4612
|
}
|
|
4349
4613
|
)
|
|
4350
4614
|
] });
|
|
4351
4615
|
}
|
|
4352
4616
|
const ratio = getAspectRatio(item.aspectRatio || "1:1");
|
|
4353
|
-
return /* @__PURE__ */
|
|
4354
|
-
/* @__PURE__ */
|
|
4355
|
-
/* @__PURE__ */
|
|
4617
|
+
return /* @__PURE__ */ jsxs23("div", { className: "w-full relative overflow-hidden group cursor-pointer bg-muted/30", style: { aspectRatio: ratio }, children: [
|
|
4618
|
+
/* @__PURE__ */ jsx41("div", { className: "absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-colors duration-300 z-10" }),
|
|
4619
|
+
imageError[item.url] ? renderPlaceholder() : /* @__PURE__ */ jsx41(
|
|
4356
4620
|
"img",
|
|
4357
4621
|
{
|
|
4358
4622
|
src: item.url,
|
|
4359
4623
|
alt: "Post media",
|
|
4360
|
-
className: "w-full h-full object-cover group-hover:scale-110 transition-transform duration-300"
|
|
4624
|
+
className: "w-full h-full object-cover group-hover:scale-110 transition-transform duration-300",
|
|
4625
|
+
onError: () => handleImageError(item.url)
|
|
4361
4626
|
}
|
|
4362
4627
|
)
|
|
4363
4628
|
] });
|
|
@@ -4365,70 +4630,74 @@ function InstagramPostMedia({
|
|
|
4365
4630
|
if (mediaType === "video" || media.length === 1 && media[0].type === "video") {
|
|
4366
4631
|
const item = media[0];
|
|
4367
4632
|
if (variant === "horizontal") {
|
|
4368
|
-
return /* @__PURE__ */
|
|
4369
|
-
/* @__PURE__ */
|
|
4370
|
-
/* @__PURE__ */
|
|
4633
|
+
return /* @__PURE__ */ jsxs23("div", { className: "w-[20%] shrink-0 relative overflow-hidden group cursor-pointer h-full -my-[1px] -ms-[1px] bg-muted/30", children: [
|
|
4634
|
+
/* @__PURE__ */ jsx41("div", { className: "absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-colors duration-300 z-10" }),
|
|
4635
|
+
imageError[item.url] ? renderPlaceholder() : /* @__PURE__ */ jsx41(
|
|
4371
4636
|
"img",
|
|
4372
4637
|
{
|
|
4373
4638
|
src: item.url,
|
|
4374
4639
|
alt: "Post media",
|
|
4375
|
-
className: "w-full h-full object-cover group-hover:scale-110 transition-transform duration-300"
|
|
4640
|
+
className: "w-full h-full object-cover group-hover:scale-110 transition-transform duration-300",
|
|
4641
|
+
onError: () => handleImageError(item.url)
|
|
4376
4642
|
}
|
|
4377
4643
|
)
|
|
4378
4644
|
] });
|
|
4379
4645
|
}
|
|
4380
4646
|
const ratio = getAspectRatio(item.aspectRatio || "16:9");
|
|
4381
|
-
return /* @__PURE__ */
|
|
4382
|
-
/* @__PURE__ */
|
|
4383
|
-
/* @__PURE__ */
|
|
4647
|
+
return /* @__PURE__ */ jsxs23("div", { className: "w-full relative overflow-hidden group cursor-pointer bg-muted/30", style: { aspectRatio: ratio }, children: [
|
|
4648
|
+
/* @__PURE__ */ jsx41("div", { className: "absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-colors duration-300 z-10" }),
|
|
4649
|
+
imageError[item.url] ? renderPlaceholder() : /* @__PURE__ */ jsx41(
|
|
4384
4650
|
"img",
|
|
4385
4651
|
{
|
|
4386
4652
|
src: item.url,
|
|
4387
4653
|
alt: "Post media",
|
|
4388
|
-
className: "w-full h-full object-cover group-hover:scale-110 transition-transform duration-300"
|
|
4654
|
+
className: "w-full h-full object-cover group-hover:scale-110 transition-transform duration-300",
|
|
4655
|
+
onError: () => handleImageError(item.url)
|
|
4389
4656
|
}
|
|
4390
4657
|
)
|
|
4391
4658
|
] });
|
|
4392
4659
|
}
|
|
4393
4660
|
if (mediaType === "carousel" || media.length > 1) {
|
|
4394
4661
|
if (variant === "horizontal") {
|
|
4395
|
-
return /* @__PURE__ */
|
|
4396
|
-
/* @__PURE__ */
|
|
4397
|
-
/* @__PURE__ */
|
|
4398
|
-
/* @__PURE__ */
|
|
4662
|
+
return /* @__PURE__ */ jsx41("div", { className: "w-[20%] shrink-0 relative overflow-hidden group cursor-pointer h-full -my-[1px] -ms-[1px] bg-muted/30", children: /* @__PURE__ */ jsxs23(Carousel, { className: "w-full h-full", children: [
|
|
4663
|
+
/* @__PURE__ */ jsx41(CarouselContent, { className: "h-full", children: media.map((item, index) => /* @__PURE__ */ jsxs23(CarouselItem, { className: "h-full", children: [
|
|
4664
|
+
/* @__PURE__ */ jsx41("div", { className: "absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-colors duration-300 z-10" }),
|
|
4665
|
+
imageError[item.url] ? renderPlaceholder() : /* @__PURE__ */ jsx41(
|
|
4399
4666
|
"img",
|
|
4400
4667
|
{
|
|
4401
4668
|
src: item.url,
|
|
4402
4669
|
alt: `Post media ${index + 1}`,
|
|
4403
|
-
className: "w-full h-full object-cover group-hover:scale-110 transition-transform duration-300"
|
|
4670
|
+
className: "w-full h-full object-cover group-hover:scale-110 transition-transform duration-300",
|
|
4671
|
+
onError: () => handleImageError(item.url)
|
|
4404
4672
|
}
|
|
4405
4673
|
)
|
|
4406
4674
|
] }, index)) }),
|
|
4407
|
-
/* @__PURE__ */
|
|
4408
|
-
/* @__PURE__ */
|
|
4675
|
+
/* @__PURE__ */ jsx41(CarouselPrevious, { className: "ms-2" }),
|
|
4676
|
+
/* @__PURE__ */ jsx41(CarouselNext, { className: "me-2" })
|
|
4409
4677
|
] }) });
|
|
4410
4678
|
}
|
|
4411
|
-
return /* @__PURE__ */
|
|
4412
|
-
/* @__PURE__ */
|
|
4679
|
+
return /* @__PURE__ */ jsxs23(Carousel, { className: "w-full", children: [
|
|
4680
|
+
/* @__PURE__ */ jsx41(CarouselContent, { children: media.map((item, index) => /* @__PURE__ */ jsx41(CarouselItem, { children: /* @__PURE__ */ jsxs23(
|
|
4413
4681
|
"div",
|
|
4414
4682
|
{
|
|
4415
|
-
className: "w-full relative overflow-hidden group cursor-pointer",
|
|
4683
|
+
className: "w-full relative overflow-hidden group cursor-pointer bg-muted/30",
|
|
4416
4684
|
style: { aspectRatio: getAspectRatio(item.aspectRatio || (item.type === "video" ? "16:9" : "1:1")) },
|
|
4417
4685
|
children: [
|
|
4418
|
-
/* @__PURE__ */
|
|
4419
|
-
/* @__PURE__ */
|
|
4686
|
+
/* @__PURE__ */ jsx41("div", { className: "absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-colors duration-300 z-10" }),
|
|
4687
|
+
imageError[item.url] ? renderPlaceholder() : /* @__PURE__ */ jsx41(
|
|
4420
4688
|
"img",
|
|
4421
4689
|
{
|
|
4422
4690
|
src: item.url,
|
|
4423
4691
|
alt: `Post media ${index + 1}`,
|
|
4424
|
-
className: "w-full h-full object-cover group-hover:scale-110 transition-transform duration-300"
|
|
4692
|
+
className: "w-full h-full object-cover group-hover:scale-110 transition-transform duration-300",
|
|
4693
|
+
onError: () => handleImageError(item.url)
|
|
4425
4694
|
}
|
|
4426
4695
|
)
|
|
4427
4696
|
]
|
|
4428
4697
|
}
|
|
4429
4698
|
) }, index)) }),
|
|
4430
|
-
/* @__PURE__ */
|
|
4431
|
-
/* @__PURE__ */
|
|
4699
|
+
/* @__PURE__ */ jsx41(CarouselPrevious, { className: "ms-2" }),
|
|
4700
|
+
/* @__PURE__ */ jsx41(CarouselNext, { className: "me-2" })
|
|
4432
4701
|
] });
|
|
4433
4702
|
}
|
|
4434
4703
|
return null;
|
|
@@ -4448,10 +4717,10 @@ function InstagramPostCaption({
|
|
|
4448
4717
|
maxLines = 3,
|
|
4449
4718
|
variant = "vertical"
|
|
4450
4719
|
}) {
|
|
4451
|
-
const [isExpanded, setIsExpanded] =
|
|
4452
|
-
const [shouldShowMore, setShouldShowMore] =
|
|
4453
|
-
const textRef =
|
|
4454
|
-
|
|
4720
|
+
const [isExpanded, setIsExpanded] = React19.useState(false);
|
|
4721
|
+
const [shouldShowMore, setShouldShowMore] = React19.useState(false);
|
|
4722
|
+
const textRef = React19.useRef(null);
|
|
4723
|
+
React19.useEffect(() => {
|
|
4455
4724
|
if (variant === "vertical" && textRef.current && !isExpanded) {
|
|
4456
4725
|
const lineHeight = parseInt(window.getComputedStyle(textRef.current).lineHeight);
|
|
4457
4726
|
const maxHeight = lineHeight * maxLines;
|
|
@@ -4462,11 +4731,11 @@ function InstagramPostCaption({
|
|
|
4462
4731
|
}, [caption, maxLines, isExpanded, variant]);
|
|
4463
4732
|
if (!caption) return null;
|
|
4464
4733
|
const parsedCaption = parseCaption(caption);
|
|
4465
|
-
return /* @__PURE__ */
|
|
4734
|
+
return /* @__PURE__ */ jsxs23("div", { className: cn(
|
|
4466
4735
|
"px-4 py-2",
|
|
4467
4736
|
variant === "horizontal" && "overflow-visible"
|
|
4468
4737
|
), children: [
|
|
4469
|
-
/* @__PURE__ */
|
|
4738
|
+
/* @__PURE__ */ jsx41(
|
|
4470
4739
|
"p",
|
|
4471
4740
|
{
|
|
4472
4741
|
ref: textRef,
|
|
@@ -4483,7 +4752,7 @@ function InstagramPostCaption({
|
|
|
4483
4752
|
} : void 0,
|
|
4484
4753
|
children: parsedCaption.map((part, index) => {
|
|
4485
4754
|
if (part.type === "hashtag") {
|
|
4486
|
-
return /* @__PURE__ */
|
|
4755
|
+
return /* @__PURE__ */ jsx41(
|
|
4487
4756
|
"span",
|
|
4488
4757
|
{
|
|
4489
4758
|
className: "text-brand-link hover:underline cursor-pointer",
|
|
@@ -4493,7 +4762,7 @@ function InstagramPostCaption({
|
|
|
4493
4762
|
);
|
|
4494
4763
|
}
|
|
4495
4764
|
if (part.type === "mention") {
|
|
4496
|
-
return /* @__PURE__ */
|
|
4765
|
+
return /* @__PURE__ */ jsx41(
|
|
4497
4766
|
"span",
|
|
4498
4767
|
{
|
|
4499
4768
|
className: "text-brand-link hover:underline cursor-pointer font-medium",
|
|
@@ -4502,11 +4771,11 @@ function InstagramPostCaption({
|
|
|
4502
4771
|
index
|
|
4503
4772
|
);
|
|
4504
4773
|
}
|
|
4505
|
-
return /* @__PURE__ */
|
|
4774
|
+
return /* @__PURE__ */ jsx41("span", { children: part.text }, index);
|
|
4506
4775
|
})
|
|
4507
4776
|
}
|
|
4508
4777
|
),
|
|
4509
|
-
shouldShowMore && variant === "vertical" && /* @__PURE__ */
|
|
4778
|
+
shouldShowMore && variant === "vertical" && /* @__PURE__ */ jsx41(
|
|
4510
4779
|
"button",
|
|
4511
4780
|
{
|
|
4512
4781
|
onClick: () => setIsExpanded(!isExpanded),
|
|
@@ -4612,15 +4881,15 @@ function InstagramPostStats({
|
|
|
4612
4881
|
});
|
|
4613
4882
|
}
|
|
4614
4883
|
if (items.length === 0) return null;
|
|
4615
|
-
return /* @__PURE__ */
|
|
4884
|
+
return /* @__PURE__ */ jsx41(TooltipProvider, { children: /* @__PURE__ */ jsx41("div", { className: "px-4 py-2 flex items-center gap-4 text-sm text-foreground-light border-t border-border-default", dir: "ltr", children: items.map((item, index) => {
|
|
4616
4885
|
const Icon2 = item.icon;
|
|
4617
|
-
return /* @__PURE__ */
|
|
4618
|
-
/* @__PURE__ */
|
|
4619
|
-
/* @__PURE__ */
|
|
4620
|
-
/* @__PURE__ */
|
|
4621
|
-
/* @__PURE__ */
|
|
4886
|
+
return /* @__PURE__ */ jsxs23(Tooltip, { children: [
|
|
4887
|
+
/* @__PURE__ */ jsx41(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxs23("div", { className: "flex items-center gap-1.5 cursor-default", children: [
|
|
4888
|
+
/* @__PURE__ */ jsx41(Icon2, { className: "size-4" }),
|
|
4889
|
+
/* @__PURE__ */ jsx41("span", { className: item.isPostType ? "text-xs" : "", children: item.value }),
|
|
4890
|
+
/* @__PURE__ */ jsx41("span", { className: "sr-only", children: item.labelEn })
|
|
4622
4891
|
] }) }),
|
|
4623
|
-
/* @__PURE__ */
|
|
4892
|
+
/* @__PURE__ */ jsx41(TooltipContent, { children: /* @__PURE__ */ jsxs23("p", { children: [
|
|
4624
4893
|
item.label,
|
|
4625
4894
|
": ",
|
|
4626
4895
|
item.exactValue
|
|
@@ -4635,7 +4904,7 @@ function InstagramPostProfile({
|
|
|
4635
4904
|
}) {
|
|
4636
4905
|
if (!profile) return null;
|
|
4637
4906
|
const displayAvatarUrl = avatarUrl || profile.avatarUrl || profile.profilePicture;
|
|
4638
|
-
return /* @__PURE__ */
|
|
4907
|
+
return /* @__PURE__ */ jsxs23(
|
|
4639
4908
|
"div",
|
|
4640
4909
|
{
|
|
4641
4910
|
className: cn(
|
|
@@ -4644,13 +4913,13 @@ function InstagramPostProfile({
|
|
|
4644
4913
|
variant === "horizontal" && "pb-2"
|
|
4645
4914
|
),
|
|
4646
4915
|
children: [
|
|
4647
|
-
/* @__PURE__ */
|
|
4648
|
-
displayAvatarUrl && /* @__PURE__ */
|
|
4649
|
-
/* @__PURE__ */
|
|
4916
|
+
/* @__PURE__ */ jsxs23(Avatar, { className: "size-10", children: [
|
|
4917
|
+
displayAvatarUrl && /* @__PURE__ */ jsx41(AvatarImage, { src: displayAvatarUrl, alt: profile.username }),
|
|
4918
|
+
/* @__PURE__ */ jsx41(AvatarFallback, { children: profile.username.charAt(0).toUpperCase() })
|
|
4650
4919
|
] }),
|
|
4651
|
-
/* @__PURE__ */
|
|
4652
|
-
/* @__PURE__ */
|
|
4653
|
-
profile.fullName && /* @__PURE__ */
|
|
4920
|
+
/* @__PURE__ */ jsxs23("div", { className: "flex-1 min-w-0", children: [
|
|
4921
|
+
/* @__PURE__ */ jsx41("div", { className: "font-semibold text-sm truncate", children: profile.username }),
|
|
4922
|
+
profile.fullName && /* @__PURE__ */ jsx41("div", { className: "text-xs text-muted-foreground truncate", children: profile.fullName })
|
|
4654
4923
|
] })
|
|
4655
4924
|
]
|
|
4656
4925
|
}
|
|
@@ -4687,9 +4956,9 @@ function InstagramPostActions({
|
|
|
4687
4956
|
onAIAnalysis();
|
|
4688
4957
|
}
|
|
4689
4958
|
};
|
|
4690
|
-
return /* @__PURE__ */
|
|
4691
|
-
/* @__PURE__ */
|
|
4692
|
-
/* @__PURE__ */
|
|
4959
|
+
return /* @__PURE__ */ jsx41(TooltipProvider, { children: /* @__PURE__ */ jsxs23("div", { className: "absolute top-2 end-2 flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity z-10", children: [
|
|
4960
|
+
/* @__PURE__ */ jsxs23(Tooltip, { children: [
|
|
4961
|
+
/* @__PURE__ */ jsx41(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx41(
|
|
4693
4962
|
Button,
|
|
4694
4963
|
{
|
|
4695
4964
|
variant: "ghost",
|
|
@@ -4697,13 +4966,13 @@ function InstagramPostActions({
|
|
|
4697
4966
|
className: "size-8 bg-background/80 backdrop-blur-sm hover:bg-background",
|
|
4698
4967
|
onClick: handleCommentAnalyzer,
|
|
4699
4968
|
"aria-label": "Comment Analyzer",
|
|
4700
|
-
children: /* @__PURE__ */
|
|
4969
|
+
children: /* @__PURE__ */ jsx41(Icons.messageCircle, { className: "size-4" })
|
|
4701
4970
|
}
|
|
4702
4971
|
) }),
|
|
4703
|
-
/* @__PURE__ */
|
|
4972
|
+
/* @__PURE__ */ jsx41(TooltipContent, { children: /* @__PURE__ */ jsx41("p", { children: "\u062A\u062D\u0644\u06CC\u0644 \u06A9\u0627\u0645\u0646\u062A\u200C\u0647\u0627" }) })
|
|
4704
4973
|
] }),
|
|
4705
|
-
/* @__PURE__ */
|
|
4706
|
-
/* @__PURE__ */
|
|
4974
|
+
/* @__PURE__ */ jsxs23(Tooltip, { children: [
|
|
4975
|
+
/* @__PURE__ */ jsx41(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx41(
|
|
4707
4976
|
Button,
|
|
4708
4977
|
{
|
|
4709
4978
|
variant: "ghost",
|
|
@@ -4711,13 +4980,13 @@ function InstagramPostActions({
|
|
|
4711
4980
|
className: "size-8 bg-background/80 backdrop-blur-sm hover:bg-background",
|
|
4712
4981
|
onClick: handleBooster,
|
|
4713
4982
|
"aria-label": "Booster",
|
|
4714
|
-
children: /* @__PURE__ */
|
|
4983
|
+
children: /* @__PURE__ */ jsx41(Icons.rocket, { className: "size-4" })
|
|
4715
4984
|
}
|
|
4716
4985
|
) }),
|
|
4717
|
-
/* @__PURE__ */
|
|
4986
|
+
/* @__PURE__ */ jsx41(TooltipContent, { children: /* @__PURE__ */ jsx41("p", { children: "\u0628\u0648\u0633\u062A\u0631" }) })
|
|
4718
4987
|
] }),
|
|
4719
|
-
/* @__PURE__ */
|
|
4720
|
-
/* @__PURE__ */
|
|
4988
|
+
/* @__PURE__ */ jsxs23(Tooltip, { children: [
|
|
4989
|
+
/* @__PURE__ */ jsx41(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx41(
|
|
4721
4990
|
Button,
|
|
4722
4991
|
{
|
|
4723
4992
|
variant: "ghost",
|
|
@@ -4725,13 +4994,13 @@ function InstagramPostActions({
|
|
|
4725
4994
|
className: "size-8 bg-background/80 backdrop-blur-sm hover:bg-background",
|
|
4726
4995
|
onClick: handleAIAnalysis,
|
|
4727
4996
|
"aria-label": "AI Analysis",
|
|
4728
|
-
children: /* @__PURE__ */
|
|
4997
|
+
children: /* @__PURE__ */ jsx41(Icons.sparkles, { className: "size-4" })
|
|
4729
4998
|
}
|
|
4730
4999
|
) }),
|
|
4731
|
-
/* @__PURE__ */
|
|
5000
|
+
/* @__PURE__ */ jsx41(TooltipContent, { children: /* @__PURE__ */ jsx41("p", { children: "\u062A\u062D\u0644\u06CC\u0644 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06CC" }) })
|
|
4732
5001
|
] }),
|
|
4733
|
-
/* @__PURE__ */
|
|
4734
|
-
/* @__PURE__ */
|
|
5002
|
+
/* @__PURE__ */ jsxs23(Tooltip, { children: [
|
|
5003
|
+
/* @__PURE__ */ jsx41(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx41(
|
|
4735
5004
|
Button,
|
|
4736
5005
|
{
|
|
4737
5006
|
variant: "ghost",
|
|
@@ -4739,10 +5008,10 @@ function InstagramPostActions({
|
|
|
4739
5008
|
className: "size-8 bg-background/80 backdrop-blur-sm hover:bg-background",
|
|
4740
5009
|
onClick: handleOpenInstagram,
|
|
4741
5010
|
"aria-label": "Open on Instagram",
|
|
4742
|
-
children: /* @__PURE__ */
|
|
5011
|
+
children: /* @__PURE__ */ jsx41(Icons.instagram, { className: "size-4" })
|
|
4743
5012
|
}
|
|
4744
5013
|
) }),
|
|
4745
|
-
/* @__PURE__ */
|
|
5014
|
+
/* @__PURE__ */ jsx41(TooltipContent, { children: /* @__PURE__ */ jsx41("p", { children: "\u0628\u0627\u0632 \u06A9\u0631\u062F\u0646 \u062F\u0631 \u0627\u06CC\u0646\u0633\u062A\u0627\u06AF\u0631\u0627\u0645" }) })
|
|
4746
5015
|
] })
|
|
4747
5016
|
] }) });
|
|
4748
5017
|
}
|
|
@@ -4754,25 +5023,25 @@ function InstagramPostTime({
|
|
|
4754
5023
|
const relativeTime = formatRelativeTime(publishTime);
|
|
4755
5024
|
const absoluteTime = formatAbsoluteTime(publishTime);
|
|
4756
5025
|
if (timeFormat === "absolute") {
|
|
4757
|
-
return /* @__PURE__ */
|
|
4758
|
-
/* @__PURE__ */
|
|
4759
|
-
/* @__PURE__ */
|
|
5026
|
+
return /* @__PURE__ */ jsxs23("div", { className: "px-4 py-1 text-xs text-muted-foreground flex items-center gap-1.5", dir: "ltr", children: [
|
|
5027
|
+
/* @__PURE__ */ jsx41(Icons.clock, { className: "size-3" }),
|
|
5028
|
+
/* @__PURE__ */ jsx41("span", { children: absoluteTime })
|
|
4760
5029
|
] });
|
|
4761
5030
|
}
|
|
4762
|
-
return /* @__PURE__ */
|
|
5031
|
+
return /* @__PURE__ */ jsxs23(
|
|
4763
5032
|
"div",
|
|
4764
5033
|
{
|
|
4765
5034
|
className: "px-4 py-1 text-xs text-muted-foreground cursor-default flex items-center gap-1.5",
|
|
4766
5035
|
title: absoluteTime,
|
|
4767
5036
|
dir: "ltr",
|
|
4768
5037
|
children: [
|
|
4769
|
-
/* @__PURE__ */
|
|
4770
|
-
/* @__PURE__ */
|
|
5038
|
+
/* @__PURE__ */ jsx41(Icons.clock, { className: "size-3" }),
|
|
5039
|
+
/* @__PURE__ */ jsx41("span", { children: relativeTime })
|
|
4771
5040
|
]
|
|
4772
5041
|
}
|
|
4773
5042
|
);
|
|
4774
5043
|
}
|
|
4775
|
-
var InstagramPost =
|
|
5044
|
+
var InstagramPost = React19.forwardRef(
|
|
4776
5045
|
({
|
|
4777
5046
|
className,
|
|
4778
5047
|
variant = "vertical",
|
|
@@ -4803,7 +5072,7 @@ var InstagramPost = React17.forwardRef(
|
|
|
4803
5072
|
...props
|
|
4804
5073
|
}, ref) => {
|
|
4805
5074
|
const isVertical = variant === "vertical";
|
|
4806
|
-
return /* @__PURE__ */
|
|
5075
|
+
return /* @__PURE__ */ jsxs23(
|
|
4807
5076
|
"div",
|
|
4808
5077
|
{
|
|
4809
5078
|
ref,
|
|
@@ -4811,7 +5080,7 @@ var InstagramPost = React17.forwardRef(
|
|
|
4811
5080
|
dir,
|
|
4812
5081
|
...props,
|
|
4813
5082
|
children: [
|
|
4814
|
-
showActions && /* @__PURE__ */
|
|
5083
|
+
showActions && /* @__PURE__ */ jsx41(
|
|
4815
5084
|
InstagramPostActions,
|
|
4816
5085
|
{
|
|
4817
5086
|
showActions,
|
|
@@ -4822,9 +5091,9 @@ var InstagramPost = React17.forwardRef(
|
|
|
4822
5091
|
instagramUrl
|
|
4823
5092
|
}
|
|
4824
5093
|
),
|
|
4825
|
-
isVertical ? /* @__PURE__ */
|
|
4826
|
-
showProfile && /* @__PURE__ */
|
|
4827
|
-
/* @__PURE__ */
|
|
5094
|
+
isVertical ? /* @__PURE__ */ jsxs23(Fragment4, { children: [
|
|
5095
|
+
showProfile && /* @__PURE__ */ jsx41(InstagramPostProfile, { profile, variant: variant || "vertical", avatarUrl }),
|
|
5096
|
+
/* @__PURE__ */ jsx41("div", { className: "mt-2.5", children: /* @__PURE__ */ jsx41(
|
|
4828
5097
|
InstagramPostMedia,
|
|
4829
5098
|
{
|
|
4830
5099
|
media,
|
|
@@ -4833,7 +5102,7 @@ var InstagramPost = React17.forwardRef(
|
|
|
4833
5102
|
placeholderText
|
|
4834
5103
|
}
|
|
4835
5104
|
) }),
|
|
4836
|
-
/* @__PURE__ */
|
|
5105
|
+
/* @__PURE__ */ jsx41(
|
|
4837
5106
|
InstagramPostStats,
|
|
4838
5107
|
{
|
|
4839
5108
|
stats,
|
|
@@ -4845,16 +5114,16 @@ var InstagramPost = React17.forwardRef(
|
|
|
4845
5114
|
postType
|
|
4846
5115
|
}
|
|
4847
5116
|
),
|
|
4848
|
-
showCaption && /* @__PURE__ */
|
|
4849
|
-
/* @__PURE__ */
|
|
5117
|
+
showCaption && /* @__PURE__ */ jsx41(InstagramPostCaption, { caption, variant: variant || "vertical" }),
|
|
5118
|
+
/* @__PURE__ */ jsx41("div", { className: "mt-auto w-full", children: /* @__PURE__ */ jsx41(
|
|
4850
5119
|
InstagramPostTime,
|
|
4851
5120
|
{
|
|
4852
5121
|
publishTime,
|
|
4853
5122
|
timeFormat
|
|
4854
5123
|
}
|
|
4855
5124
|
) })
|
|
4856
|
-
] }) : /* @__PURE__ */
|
|
4857
|
-
/* @__PURE__ */
|
|
5125
|
+
] }) : /* @__PURE__ */ jsxs23(Fragment4, { children: [
|
|
5126
|
+
/* @__PURE__ */ jsx41(
|
|
4858
5127
|
InstagramPostMedia,
|
|
4859
5128
|
{
|
|
4860
5129
|
media,
|
|
@@ -4863,9 +5132,9 @@ var InstagramPost = React17.forwardRef(
|
|
|
4863
5132
|
placeholderText
|
|
4864
5133
|
}
|
|
4865
5134
|
),
|
|
4866
|
-
/* @__PURE__ */
|
|
4867
|
-
showProfile && /* @__PURE__ */
|
|
4868
|
-
/* @__PURE__ */
|
|
5135
|
+
/* @__PURE__ */ jsxs23("div", { className: "flex-1 flex flex-col min-w-0 overflow-hidden rounded-e-lg", children: [
|
|
5136
|
+
showProfile && /* @__PURE__ */ jsx41(InstagramPostProfile, { profile, variant: variant || "horizontal", avatarUrl }),
|
|
5137
|
+
/* @__PURE__ */ jsx41(
|
|
4869
5138
|
InstagramPostStats,
|
|
4870
5139
|
{
|
|
4871
5140
|
stats,
|
|
@@ -4877,8 +5146,8 @@ var InstagramPost = React17.forwardRef(
|
|
|
4877
5146
|
postType
|
|
4878
5147
|
}
|
|
4879
5148
|
),
|
|
4880
|
-
showCaption && /* @__PURE__ */
|
|
4881
|
-
/* @__PURE__ */
|
|
5149
|
+
showCaption && /* @__PURE__ */ jsx41(InstagramPostCaption, { caption, variant: variant || "horizontal" }),
|
|
5150
|
+
/* @__PURE__ */ jsx41("div", { className: "mt-auto w-full", children: /* @__PURE__ */ jsx41(
|
|
4882
5151
|
InstagramPostTime,
|
|
4883
5152
|
{
|
|
4884
5153
|
publishTime,
|
|
@@ -4895,9 +5164,9 @@ var InstagramPost = React17.forwardRef(
|
|
|
4895
5164
|
InstagramPost.displayName = "InstagramPost";
|
|
4896
5165
|
|
|
4897
5166
|
// src/components/ui/kbd.tsx
|
|
4898
|
-
import { jsx as
|
|
5167
|
+
import { jsx as jsx42 } from "react/jsx-runtime";
|
|
4899
5168
|
function Kbd({ className, ...props }) {
|
|
4900
|
-
return /* @__PURE__ */
|
|
5169
|
+
return /* @__PURE__ */ jsx42(
|
|
4901
5170
|
"kbd",
|
|
4902
5171
|
{
|
|
4903
5172
|
"data-slot": "kbd",
|
|
@@ -4912,7 +5181,7 @@ function Kbd({ className, ...props }) {
|
|
|
4912
5181
|
);
|
|
4913
5182
|
}
|
|
4914
5183
|
function KbdGroup({ className, ...props }) {
|
|
4915
|
-
return /* @__PURE__ */
|
|
5184
|
+
return /* @__PURE__ */ jsx42(
|
|
4916
5185
|
"kbd",
|
|
4917
5186
|
{
|
|
4918
5187
|
"data-slot": "kbd-group",
|
|
@@ -4925,12 +5194,12 @@ function KbdGroup({ className, ...props }) {
|
|
|
4925
5194
|
// src/components/ui/menubar.tsx
|
|
4926
5195
|
import * as MenubarPrimitive from "@radix-ui/react-menubar";
|
|
4927
5196
|
import { CheckIcon as CheckIcon4, ChevronRightIcon as ChevronRightIcon3, CircleIcon as CircleIcon3 } from "lucide-react";
|
|
4928
|
-
import { jsx as
|
|
5197
|
+
import { jsx as jsx43, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
4929
5198
|
function Menubar({
|
|
4930
5199
|
className,
|
|
4931
5200
|
...props
|
|
4932
5201
|
}) {
|
|
4933
|
-
return /* @__PURE__ */
|
|
5202
|
+
return /* @__PURE__ */ jsx43(
|
|
4934
5203
|
MenubarPrimitive.Root,
|
|
4935
5204
|
{
|
|
4936
5205
|
"data-slot": "menubar",
|
|
@@ -4945,28 +5214,28 @@ function Menubar({
|
|
|
4945
5214
|
function MenubarMenu({
|
|
4946
5215
|
...props
|
|
4947
5216
|
}) {
|
|
4948
|
-
return /* @__PURE__ */
|
|
5217
|
+
return /* @__PURE__ */ jsx43(MenubarPrimitive.Menu, { "data-slot": "menubar-menu", ...props });
|
|
4949
5218
|
}
|
|
4950
5219
|
function MenubarGroup({
|
|
4951
5220
|
...props
|
|
4952
5221
|
}) {
|
|
4953
|
-
return /* @__PURE__ */
|
|
5222
|
+
return /* @__PURE__ */ jsx43(MenubarPrimitive.Group, { "data-slot": "menubar-group", ...props });
|
|
4954
5223
|
}
|
|
4955
5224
|
function MenubarPortal({
|
|
4956
5225
|
...props
|
|
4957
5226
|
}) {
|
|
4958
|
-
return /* @__PURE__ */
|
|
5227
|
+
return /* @__PURE__ */ jsx43(MenubarPrimitive.Portal, { "data-slot": "menubar-portal", ...props });
|
|
4959
5228
|
}
|
|
4960
5229
|
function MenubarRadioGroup({
|
|
4961
5230
|
...props
|
|
4962
5231
|
}) {
|
|
4963
|
-
return /* @__PURE__ */
|
|
5232
|
+
return /* @__PURE__ */ jsx43(MenubarPrimitive.RadioGroup, { "data-slot": "menubar-radio-group", ...props });
|
|
4964
5233
|
}
|
|
4965
5234
|
function MenubarTrigger({
|
|
4966
5235
|
className,
|
|
4967
5236
|
...props
|
|
4968
5237
|
}) {
|
|
4969
|
-
return /* @__PURE__ */
|
|
5238
|
+
return /* @__PURE__ */ jsx43(
|
|
4970
5239
|
MenubarPrimitive.Trigger,
|
|
4971
5240
|
{
|
|
4972
5241
|
"data-slot": "menubar-trigger",
|
|
@@ -4985,7 +5254,7 @@ function MenubarContent({
|
|
|
4985
5254
|
sideOffset = 8,
|
|
4986
5255
|
...props
|
|
4987
5256
|
}) {
|
|
4988
|
-
return /* @__PURE__ */
|
|
5257
|
+
return /* @__PURE__ */ jsx43(MenubarPortal, { children: /* @__PURE__ */ jsx43(
|
|
4989
5258
|
MenubarPrimitive.Content,
|
|
4990
5259
|
{
|
|
4991
5260
|
"data-slot": "menubar-content",
|
|
@@ -5006,7 +5275,7 @@ function MenubarItem({
|
|
|
5006
5275
|
variant = "default",
|
|
5007
5276
|
...props
|
|
5008
5277
|
}) {
|
|
5009
|
-
return /* @__PURE__ */
|
|
5278
|
+
return /* @__PURE__ */ jsx43(
|
|
5010
5279
|
MenubarPrimitive.Item,
|
|
5011
5280
|
{
|
|
5012
5281
|
"data-slot": "menubar-item",
|
|
@@ -5026,7 +5295,7 @@ function MenubarCheckboxItem({
|
|
|
5026
5295
|
checked,
|
|
5027
5296
|
...props
|
|
5028
5297
|
}) {
|
|
5029
|
-
return /* @__PURE__ */
|
|
5298
|
+
return /* @__PURE__ */ jsxs24(
|
|
5030
5299
|
MenubarPrimitive.CheckboxItem,
|
|
5031
5300
|
{
|
|
5032
5301
|
"data-slot": "menubar-checkbox-item",
|
|
@@ -5037,7 +5306,7 @@ function MenubarCheckboxItem({
|
|
|
5037
5306
|
checked,
|
|
5038
5307
|
...props,
|
|
5039
5308
|
children: [
|
|
5040
|
-
/* @__PURE__ */
|
|
5309
|
+
/* @__PURE__ */ jsx43("span", { className: "pointer-events-none absolute start-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx43(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx43(CheckIcon4, { className: "size-4" }) }) }),
|
|
5041
5310
|
children
|
|
5042
5311
|
]
|
|
5043
5312
|
}
|
|
@@ -5048,7 +5317,7 @@ function MenubarRadioItem({
|
|
|
5048
5317
|
children,
|
|
5049
5318
|
...props
|
|
5050
5319
|
}) {
|
|
5051
|
-
return /* @__PURE__ */
|
|
5320
|
+
return /* @__PURE__ */ jsxs24(
|
|
5052
5321
|
MenubarPrimitive.RadioItem,
|
|
5053
5322
|
{
|
|
5054
5323
|
"data-slot": "menubar-radio-item",
|
|
@@ -5058,7 +5327,7 @@ function MenubarRadioItem({
|
|
|
5058
5327
|
),
|
|
5059
5328
|
...props,
|
|
5060
5329
|
children: [
|
|
5061
|
-
/* @__PURE__ */
|
|
5330
|
+
/* @__PURE__ */ jsx43("span", { className: "pointer-events-none absolute start-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx43(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx43(CircleIcon3, { className: "size-2 fill-current" }) }) }),
|
|
5062
5331
|
children
|
|
5063
5332
|
]
|
|
5064
5333
|
}
|
|
@@ -5069,7 +5338,7 @@ function MenubarLabel({
|
|
|
5069
5338
|
inset,
|
|
5070
5339
|
...props
|
|
5071
5340
|
}) {
|
|
5072
|
-
return /* @__PURE__ */
|
|
5341
|
+
return /* @__PURE__ */ jsx43(
|
|
5073
5342
|
MenubarPrimitive.Label,
|
|
5074
5343
|
{
|
|
5075
5344
|
"data-slot": "menubar-label",
|
|
@@ -5086,7 +5355,7 @@ function MenubarSeparator({
|
|
|
5086
5355
|
className,
|
|
5087
5356
|
...props
|
|
5088
5357
|
}) {
|
|
5089
|
-
return /* @__PURE__ */
|
|
5358
|
+
return /* @__PURE__ */ jsx43(
|
|
5090
5359
|
MenubarPrimitive.Separator,
|
|
5091
5360
|
{
|
|
5092
5361
|
"data-slot": "menubar-separator",
|
|
@@ -5099,7 +5368,7 @@ function MenubarShortcut({
|
|
|
5099
5368
|
className,
|
|
5100
5369
|
...props
|
|
5101
5370
|
}) {
|
|
5102
|
-
return /* @__PURE__ */
|
|
5371
|
+
return /* @__PURE__ */ jsx43(
|
|
5103
5372
|
"span",
|
|
5104
5373
|
{
|
|
5105
5374
|
"data-slot": "menubar-shortcut",
|
|
@@ -5114,7 +5383,7 @@ function MenubarShortcut({
|
|
|
5114
5383
|
function MenubarSub({
|
|
5115
5384
|
...props
|
|
5116
5385
|
}) {
|
|
5117
|
-
return /* @__PURE__ */
|
|
5386
|
+
return /* @__PURE__ */ jsx43(MenubarPrimitive.Sub, { "data-slot": "menubar-sub", ...props });
|
|
5118
5387
|
}
|
|
5119
5388
|
function MenubarSubTrigger({
|
|
5120
5389
|
className,
|
|
@@ -5122,7 +5391,7 @@ function MenubarSubTrigger({
|
|
|
5122
5391
|
children,
|
|
5123
5392
|
...props
|
|
5124
5393
|
}) {
|
|
5125
|
-
return /* @__PURE__ */
|
|
5394
|
+
return /* @__PURE__ */ jsxs24(
|
|
5126
5395
|
MenubarPrimitive.SubTrigger,
|
|
5127
5396
|
{
|
|
5128
5397
|
"data-slot": "menubar-sub-trigger",
|
|
@@ -5134,7 +5403,7 @@ function MenubarSubTrigger({
|
|
|
5134
5403
|
...props,
|
|
5135
5404
|
children: [
|
|
5136
5405
|
children,
|
|
5137
|
-
/* @__PURE__ */
|
|
5406
|
+
/* @__PURE__ */ jsx43(ChevronRightIcon3, { className: "ms-auto h-4 w-4 rtl:rotate-180" })
|
|
5138
5407
|
]
|
|
5139
5408
|
}
|
|
5140
5409
|
);
|
|
@@ -5143,7 +5412,7 @@ function MenubarSubContent({
|
|
|
5143
5412
|
className,
|
|
5144
5413
|
...props
|
|
5145
5414
|
}) {
|
|
5146
|
-
return /* @__PURE__ */
|
|
5415
|
+
return /* @__PURE__ */ jsx43(
|
|
5147
5416
|
MenubarPrimitive.SubContent,
|
|
5148
5417
|
{
|
|
5149
5418
|
"data-slot": "menubar-sub-content",
|
|
@@ -5157,14 +5426,14 @@ function MenubarSubContent({
|
|
|
5157
5426
|
}
|
|
5158
5427
|
|
|
5159
5428
|
// src/components/ui/metric-card.tsx
|
|
5160
|
-
import * as
|
|
5429
|
+
import * as React20 from "react";
|
|
5161
5430
|
import { ExternalLink, Info as Info2 } from "lucide-react";
|
|
5162
5431
|
import { format as format2 } from "date-fns";
|
|
5163
5432
|
|
|
5164
5433
|
// src/components/ui/skeleton.tsx
|
|
5165
|
-
import { jsx as
|
|
5434
|
+
import { jsx as jsx44 } from "react/jsx-runtime";
|
|
5166
5435
|
function Skeleton({ className, ...props }) {
|
|
5167
|
-
return /* @__PURE__ */
|
|
5436
|
+
return /* @__PURE__ */ jsx44(
|
|
5168
5437
|
"div",
|
|
5169
5438
|
{
|
|
5170
5439
|
"data-slot": "skeleton",
|
|
@@ -5175,25 +5444,25 @@ function Skeleton({ className, ...props }) {
|
|
|
5175
5444
|
}
|
|
5176
5445
|
|
|
5177
5446
|
// src/components/ui/metric-card.tsx
|
|
5178
|
-
import { Fragment as Fragment5, jsx as
|
|
5179
|
-
var MetricCard =
|
|
5447
|
+
import { Fragment as Fragment5, jsx as jsx45, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
5448
|
+
var MetricCard = React20.forwardRef(
|
|
5180
5449
|
({ className, isLoading, children, ...props }, ref) => {
|
|
5181
5450
|
if (isLoading) {
|
|
5182
|
-
return /* @__PURE__ */
|
|
5451
|
+
return /* @__PURE__ */ jsxs25(
|
|
5183
5452
|
Card,
|
|
5184
5453
|
{
|
|
5185
5454
|
ref,
|
|
5186
5455
|
className: cn("py-4 space-y-3", className),
|
|
5187
5456
|
...props,
|
|
5188
5457
|
children: [
|
|
5189
|
-
/* @__PURE__ */
|
|
5190
|
-
/* @__PURE__ */
|
|
5191
|
-
/* @__PURE__ */
|
|
5458
|
+
/* @__PURE__ */ jsx45(Skeleton, { className: "h-4 w-24" }),
|
|
5459
|
+
/* @__PURE__ */ jsx45(Skeleton, { className: "h-8 w-16" }),
|
|
5460
|
+
/* @__PURE__ */ jsx45(Skeleton, { className: "h-12 w-full" })
|
|
5192
5461
|
]
|
|
5193
5462
|
}
|
|
5194
5463
|
);
|
|
5195
5464
|
}
|
|
5196
|
-
return /* @__PURE__ */
|
|
5465
|
+
return /* @__PURE__ */ jsx45(
|
|
5197
5466
|
Card,
|
|
5198
5467
|
{
|
|
5199
5468
|
ref,
|
|
@@ -5205,9 +5474,9 @@ var MetricCard = React18.forwardRef(
|
|
|
5205
5474
|
}
|
|
5206
5475
|
);
|
|
5207
5476
|
MetricCard.displayName = "MetricCard";
|
|
5208
|
-
var MetricCardHeader =
|
|
5477
|
+
var MetricCardHeader = React20.forwardRef(
|
|
5209
5478
|
({ className, href, children, ...props }, ref) => {
|
|
5210
|
-
return /* @__PURE__ */
|
|
5479
|
+
return /* @__PURE__ */ jsxs25(
|
|
5211
5480
|
"div",
|
|
5212
5481
|
{
|
|
5213
5482
|
ref,
|
|
@@ -5215,14 +5484,14 @@ var MetricCardHeader = React18.forwardRef(
|
|
|
5215
5484
|
...props,
|
|
5216
5485
|
children: [
|
|
5217
5486
|
children,
|
|
5218
|
-
href && /* @__PURE__ */
|
|
5487
|
+
href && /* @__PURE__ */ jsx45(
|
|
5219
5488
|
"a",
|
|
5220
5489
|
{
|
|
5221
5490
|
href,
|
|
5222
5491
|
target: "_blank",
|
|
5223
5492
|
rel: "noopener noreferrer",
|
|
5224
5493
|
className: "text-foreground-lighter hover:text-foreground transition-colors",
|
|
5225
|
-
children: /* @__PURE__ */
|
|
5494
|
+
children: /* @__PURE__ */ jsx45(ExternalLink, { className: "h-3.5 w-3.5" })
|
|
5226
5495
|
}
|
|
5227
5496
|
)
|
|
5228
5497
|
]
|
|
@@ -5231,9 +5500,9 @@ var MetricCardHeader = React18.forwardRef(
|
|
|
5231
5500
|
}
|
|
5232
5501
|
);
|
|
5233
5502
|
MetricCardHeader.displayName = "MetricCardHeader";
|
|
5234
|
-
var MetricCardLabel =
|
|
5503
|
+
var MetricCardLabel = React20.forwardRef(
|
|
5235
5504
|
({ className, tooltip, icon, children, ...props }, ref) => {
|
|
5236
|
-
const label = /* @__PURE__ */
|
|
5505
|
+
const label = /* @__PURE__ */ jsx45(
|
|
5237
5506
|
"h3",
|
|
5238
5507
|
{
|
|
5239
5508
|
ref,
|
|
@@ -5242,28 +5511,28 @@ var MetricCardLabel = React18.forwardRef(
|
|
|
5242
5511
|
className
|
|
5243
5512
|
),
|
|
5244
5513
|
...props,
|
|
5245
|
-
children: /* @__PURE__ */
|
|
5246
|
-
icon && /* @__PURE__ */
|
|
5247
|
-
/* @__PURE__ */
|
|
5514
|
+
children: /* @__PURE__ */ jsxs25("span", { className: "flex items-center gap-1.5", children: [
|
|
5515
|
+
icon && /* @__PURE__ */ jsx45("span", { className: "flex-shrink-0", children: icon }),
|
|
5516
|
+
/* @__PURE__ */ jsx45("span", { children })
|
|
5248
5517
|
] })
|
|
5249
5518
|
}
|
|
5250
5519
|
);
|
|
5251
5520
|
if (tooltip) {
|
|
5252
|
-
return /* @__PURE__ */
|
|
5253
|
-
/* @__PURE__ */
|
|
5521
|
+
return /* @__PURE__ */ jsx45(TooltipProvider, { children: /* @__PURE__ */ jsxs25(Tooltip, { children: [
|
|
5522
|
+
/* @__PURE__ */ jsx45(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxs25("div", { className: "flex items-center gap-1.5 cursor-help", children: [
|
|
5254
5523
|
label,
|
|
5255
|
-
/* @__PURE__ */
|
|
5524
|
+
/* @__PURE__ */ jsx45(Info2, { className: "h-3.5 w-3.5 text-foreground-lighter" })
|
|
5256
5525
|
] }) }),
|
|
5257
|
-
/* @__PURE__ */
|
|
5526
|
+
/* @__PURE__ */ jsx45(TooltipContent, { children: /* @__PURE__ */ jsx45("p", { className: "max-w-xs", children: tooltip }) })
|
|
5258
5527
|
] }) });
|
|
5259
5528
|
}
|
|
5260
5529
|
return label;
|
|
5261
5530
|
}
|
|
5262
5531
|
);
|
|
5263
5532
|
MetricCardLabel.displayName = "MetricCardLabel";
|
|
5264
|
-
var MetricCardContent =
|
|
5533
|
+
var MetricCardContent = React20.forwardRef(
|
|
5265
5534
|
({ className, children, ...props }, ref) => {
|
|
5266
|
-
return /* @__PURE__ */
|
|
5535
|
+
return /* @__PURE__ */ jsx45(
|
|
5267
5536
|
"div",
|
|
5268
5537
|
{
|
|
5269
5538
|
ref,
|
|
@@ -5275,9 +5544,9 @@ var MetricCardContent = React18.forwardRef(
|
|
|
5275
5544
|
}
|
|
5276
5545
|
);
|
|
5277
5546
|
MetricCardContent.displayName = "MetricCardContent";
|
|
5278
|
-
var MetricCardValue =
|
|
5547
|
+
var MetricCardValue = React20.forwardRef(
|
|
5279
5548
|
({ className, children, ...props }, ref) => {
|
|
5280
|
-
return /* @__PURE__ */
|
|
5549
|
+
return /* @__PURE__ */ jsx45(
|
|
5281
5550
|
"div",
|
|
5282
5551
|
{
|
|
5283
5552
|
ref,
|
|
@@ -5289,7 +5558,7 @@ var MetricCardValue = React18.forwardRef(
|
|
|
5289
5558
|
}
|
|
5290
5559
|
);
|
|
5291
5560
|
MetricCardValue.displayName = "MetricCardValue";
|
|
5292
|
-
var MetricCardDifferential =
|
|
5561
|
+
var MetricCardDifferential = React20.forwardRef(
|
|
5293
5562
|
({ className, variant = "positive", children, ...props }, ref) => {
|
|
5294
5563
|
const childrenString = typeof children === "string" ? children : String(children);
|
|
5295
5564
|
const signMatch = childrenString.match(/^([+\-])|([+\-])$/);
|
|
@@ -5299,7 +5568,7 @@ var MetricCardDifferential = React18.forwardRef(
|
|
|
5299
5568
|
sign = signMatch[1] || signMatch[2] || "";
|
|
5300
5569
|
value = childrenString.replace(/^[+\-]|[+\-]$/, "").trim();
|
|
5301
5570
|
}
|
|
5302
|
-
return /* @__PURE__ */
|
|
5571
|
+
return /* @__PURE__ */ jsxs25(
|
|
5303
5572
|
"div",
|
|
5304
5573
|
{
|
|
5305
5574
|
ref,
|
|
@@ -5310,19 +5579,19 @@ var MetricCardDifferential = React18.forwardRef(
|
|
|
5310
5579
|
),
|
|
5311
5580
|
...props,
|
|
5312
5581
|
children: [
|
|
5313
|
-
/* @__PURE__ */
|
|
5314
|
-
sign && /* @__PURE__ */
|
|
5582
|
+
/* @__PURE__ */ jsx45("span", { children: value }),
|
|
5583
|
+
sign && /* @__PURE__ */ jsx45("span", { className: "inline-block", dir: "ltr", children: sign })
|
|
5315
5584
|
]
|
|
5316
5585
|
}
|
|
5317
5586
|
);
|
|
5318
5587
|
}
|
|
5319
5588
|
);
|
|
5320
5589
|
MetricCardDifferential.displayName = "MetricCardDifferential";
|
|
5321
|
-
var MetricCardSparkline =
|
|
5590
|
+
var MetricCardSparkline = React20.forwardRef(
|
|
5322
5591
|
({ data, dataKey, usePersianCalendar = false, className }, _ref) => {
|
|
5323
|
-
const [hoveredIndex, setHoveredIndex] =
|
|
5324
|
-
const [tooltipPosition, setTooltipPosition] =
|
|
5325
|
-
const containerRef =
|
|
5592
|
+
const [hoveredIndex, setHoveredIndex] = React20.useState(null);
|
|
5593
|
+
const [tooltipPosition, setTooltipPosition] = React20.useState({ x: 0, y: 0 });
|
|
5594
|
+
const containerRef = React20.useRef(null);
|
|
5326
5595
|
if (!data || data.length === 0) return null;
|
|
5327
5596
|
const values = data.map((item) => item[dataKey]);
|
|
5328
5597
|
const timestamps = data.map((item) => new Date(item.timestamp));
|
|
@@ -5348,7 +5617,7 @@ var MetricCardSparkline = React18.forwardRef(
|
|
|
5348
5617
|
areaPath += ` L ${points[0].x},${height}`;
|
|
5349
5618
|
areaPath += ` Z`;
|
|
5350
5619
|
const isPositive = values[values.length - 1] >= values[0];
|
|
5351
|
-
const gradientId =
|
|
5620
|
+
const gradientId = React20.useId();
|
|
5352
5621
|
const handleMouseMove = (e) => {
|
|
5353
5622
|
if (!containerRef.current) return;
|
|
5354
5623
|
const rect = containerRef.current.getBoundingClientRect();
|
|
@@ -5383,7 +5652,7 @@ var MetricCardSparkline = React18.forwardRef(
|
|
|
5383
5652
|
return format2(date, "MMM d");
|
|
5384
5653
|
}
|
|
5385
5654
|
};
|
|
5386
|
-
return /* @__PURE__ */
|
|
5655
|
+
return /* @__PURE__ */ jsxs25(
|
|
5387
5656
|
"div",
|
|
5388
5657
|
{
|
|
5389
5658
|
ref: containerRef,
|
|
@@ -5391,7 +5660,7 @@ var MetricCardSparkline = React18.forwardRef(
|
|
|
5391
5660
|
onMouseMove: handleMouseMove,
|
|
5392
5661
|
onMouseLeave: handleMouseLeave,
|
|
5393
5662
|
children: [
|
|
5394
|
-
/* @__PURE__ */
|
|
5663
|
+
/* @__PURE__ */ jsxs25(
|
|
5395
5664
|
"svg",
|
|
5396
5665
|
{
|
|
5397
5666
|
width: "100%",
|
|
@@ -5400,8 +5669,8 @@ var MetricCardSparkline = React18.forwardRef(
|
|
|
5400
5669
|
preserveAspectRatio: "none",
|
|
5401
5670
|
className: "overflow-visible",
|
|
5402
5671
|
children: [
|
|
5403
|
-
/* @__PURE__ */
|
|
5404
|
-
/* @__PURE__ */
|
|
5672
|
+
/* @__PURE__ */ jsx45("defs", { children: /* @__PURE__ */ jsxs25("linearGradient", { id: gradientId, x1: "0", x2: "0", y1: "0", y2: "1", children: [
|
|
5673
|
+
/* @__PURE__ */ jsx45(
|
|
5405
5674
|
"stop",
|
|
5406
5675
|
{
|
|
5407
5676
|
offset: "0%",
|
|
@@ -5412,7 +5681,7 @@ var MetricCardSparkline = React18.forwardRef(
|
|
|
5412
5681
|
)
|
|
5413
5682
|
}
|
|
5414
5683
|
),
|
|
5415
|
-
/* @__PURE__ */
|
|
5684
|
+
/* @__PURE__ */ jsx45(
|
|
5416
5685
|
"stop",
|
|
5417
5686
|
{
|
|
5418
5687
|
offset: "100%",
|
|
@@ -5424,14 +5693,14 @@ var MetricCardSparkline = React18.forwardRef(
|
|
|
5424
5693
|
}
|
|
5425
5694
|
)
|
|
5426
5695
|
] }) }),
|
|
5427
|
-
/* @__PURE__ */
|
|
5696
|
+
/* @__PURE__ */ jsx45(
|
|
5428
5697
|
"path",
|
|
5429
5698
|
{
|
|
5430
5699
|
d: areaPath,
|
|
5431
5700
|
fill: `url(#${gradientId})`
|
|
5432
5701
|
}
|
|
5433
5702
|
),
|
|
5434
|
-
/* @__PURE__ */
|
|
5703
|
+
/* @__PURE__ */ jsx45(
|
|
5435
5704
|
"path",
|
|
5436
5705
|
{
|
|
5437
5706
|
d: pathData,
|
|
@@ -5445,8 +5714,8 @@ var MetricCardSparkline = React18.forwardRef(
|
|
|
5445
5714
|
)
|
|
5446
5715
|
}
|
|
5447
5716
|
),
|
|
5448
|
-
hoveredIndex !== null && hoveredIndex < points.length - 1 && /* @__PURE__ */
|
|
5449
|
-
/* @__PURE__ */
|
|
5717
|
+
hoveredIndex !== null && hoveredIndex < points.length - 1 && /* @__PURE__ */ jsxs25(Fragment5, { children: [
|
|
5718
|
+
/* @__PURE__ */ jsx45(
|
|
5450
5719
|
"line",
|
|
5451
5720
|
{
|
|
5452
5721
|
x1: (points[hoveredIndex].x + points[hoveredIndex + 1].x) / 2,
|
|
@@ -5459,7 +5728,7 @@ var MetricCardSparkline = React18.forwardRef(
|
|
|
5459
5728
|
className: "text-foreground-lighter opacity-50"
|
|
5460
5729
|
}
|
|
5461
5730
|
),
|
|
5462
|
-
/* @__PURE__ */
|
|
5731
|
+
/* @__PURE__ */ jsx45(
|
|
5463
5732
|
"circle",
|
|
5464
5733
|
{
|
|
5465
5734
|
cx: (points[hoveredIndex].x + points[hoveredIndex + 1].x) / 2,
|
|
@@ -5473,7 +5742,7 @@ var MetricCardSparkline = React18.forwardRef(
|
|
|
5473
5742
|
)
|
|
5474
5743
|
}
|
|
5475
5744
|
),
|
|
5476
|
-
/* @__PURE__ */
|
|
5745
|
+
/* @__PURE__ */ jsx45(
|
|
5477
5746
|
"circle",
|
|
5478
5747
|
{
|
|
5479
5748
|
cx: (points[hoveredIndex].x + points[hoveredIndex + 1].x) / 2,
|
|
@@ -5489,7 +5758,7 @@ var MetricCardSparkline = React18.forwardRef(
|
|
|
5489
5758
|
]
|
|
5490
5759
|
}
|
|
5491
5760
|
),
|
|
5492
|
-
hoveredIndex !== null && hoveredIndex < points.length - 1 && /* @__PURE__ */
|
|
5761
|
+
hoveredIndex !== null && hoveredIndex < points.length - 1 && /* @__PURE__ */ jsx45(
|
|
5493
5762
|
"div",
|
|
5494
5763
|
{
|
|
5495
5764
|
className: "absolute z-50 pointer-events-none",
|
|
@@ -5497,9 +5766,9 @@ var MetricCardSparkline = React18.forwardRef(
|
|
|
5497
5766
|
left: `${tooltipPosition.x + 8}px`,
|
|
5498
5767
|
top: `${tooltipPosition.y - 40}px`
|
|
5499
5768
|
},
|
|
5500
|
-
children: /* @__PURE__ */
|
|
5501
|
-
/* @__PURE__ */
|
|
5502
|
-
/* @__PURE__ */
|
|
5769
|
+
children: /* @__PURE__ */ jsxs25("div", { className: "bg-background-surface-100 border border-border-default rounded-md shadow-lg px-2 py-1.5", children: [
|
|
5770
|
+
/* @__PURE__ */ jsx45("div", { className: "text-xs text-foreground-lighter", children: formatDate(points[hoveredIndex].timestamp) }),
|
|
5771
|
+
/* @__PURE__ */ jsx45("div", { className: "text-xs font-medium tabular-nums mt-0.5", children: points[hoveredIndex].value.toLocaleString(usePersianCalendar ? "fa-IR" : "en-US") })
|
|
5503
5772
|
] })
|
|
5504
5773
|
}
|
|
5505
5774
|
)
|
|
@@ -5512,15 +5781,15 @@ MetricCardSparkline.displayName = "MetricCardSparkline";
|
|
|
5512
5781
|
|
|
5513
5782
|
// src/components/ui/native-select.tsx
|
|
5514
5783
|
import { ChevronDownIcon as ChevronDownIcon3 } from "lucide-react";
|
|
5515
|
-
import { jsx as
|
|
5784
|
+
import { jsx as jsx46, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
5516
5785
|
function NativeSelect({ className, ...props }) {
|
|
5517
|
-
return /* @__PURE__ */
|
|
5786
|
+
return /* @__PURE__ */ jsxs26(
|
|
5518
5787
|
"div",
|
|
5519
5788
|
{
|
|
5520
5789
|
className: "group/native-select relative w-fit has-[select:disabled]:opacity-50",
|
|
5521
5790
|
"data-slot": "native-select-wrapper",
|
|
5522
5791
|
children: [
|
|
5523
|
-
/* @__PURE__ */
|
|
5792
|
+
/* @__PURE__ */ jsx46(
|
|
5524
5793
|
"select",
|
|
5525
5794
|
{
|
|
5526
5795
|
"data-slot": "native-select",
|
|
@@ -5542,7 +5811,7 @@ function NativeSelect({ className, ...props }) {
|
|
|
5542
5811
|
...props
|
|
5543
5812
|
}
|
|
5544
5813
|
),
|
|
5545
|
-
/* @__PURE__ */
|
|
5814
|
+
/* @__PURE__ */ jsx46(
|
|
5546
5815
|
ChevronDownIcon3,
|
|
5547
5816
|
{
|
|
5548
5817
|
className: "pointer-events-none absolute top-1/2 end-3 size-4 -translate-y-1/2 text-foreground-muted select-none",
|
|
@@ -5555,13 +5824,13 @@ function NativeSelect({ className, ...props }) {
|
|
|
5555
5824
|
);
|
|
5556
5825
|
}
|
|
5557
5826
|
function NativeSelectOption({ ...props }) {
|
|
5558
|
-
return /* @__PURE__ */
|
|
5827
|
+
return /* @__PURE__ */ jsx46("option", { "data-slot": "native-select-option", ...props });
|
|
5559
5828
|
}
|
|
5560
5829
|
function NativeSelectOptGroup({
|
|
5561
5830
|
className,
|
|
5562
5831
|
...props
|
|
5563
5832
|
}) {
|
|
5564
|
-
return /* @__PURE__ */
|
|
5833
|
+
return /* @__PURE__ */ jsx46(
|
|
5565
5834
|
"optgroup",
|
|
5566
5835
|
{
|
|
5567
5836
|
"data-slot": "native-select-optgroup",
|
|
@@ -5573,16 +5842,16 @@ function NativeSelectOptGroup({
|
|
|
5573
5842
|
|
|
5574
5843
|
// src/components/ui/navigation-menu.tsx
|
|
5575
5844
|
import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
|
|
5576
|
-
import { cva as
|
|
5845
|
+
import { cva as cva11 } from "class-variance-authority";
|
|
5577
5846
|
import { ChevronDownIcon as ChevronDownIcon4 } from "lucide-react";
|
|
5578
|
-
import { jsx as
|
|
5847
|
+
import { jsx as jsx47, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
5579
5848
|
function NavigationMenu({
|
|
5580
5849
|
className,
|
|
5581
5850
|
children,
|
|
5582
5851
|
viewport = true,
|
|
5583
5852
|
...props
|
|
5584
5853
|
}) {
|
|
5585
|
-
return /* @__PURE__ */
|
|
5854
|
+
return /* @__PURE__ */ jsxs27(
|
|
5586
5855
|
NavigationMenuPrimitive.Root,
|
|
5587
5856
|
{
|
|
5588
5857
|
"data-slot": "navigation-menu",
|
|
@@ -5594,7 +5863,7 @@ function NavigationMenu({
|
|
|
5594
5863
|
...props,
|
|
5595
5864
|
children: [
|
|
5596
5865
|
children,
|
|
5597
|
-
viewport && /* @__PURE__ */
|
|
5866
|
+
viewport && /* @__PURE__ */ jsx47(NavigationMenuViewport, {})
|
|
5598
5867
|
]
|
|
5599
5868
|
}
|
|
5600
5869
|
);
|
|
@@ -5603,7 +5872,7 @@ function NavigationMenuList({
|
|
|
5603
5872
|
className,
|
|
5604
5873
|
...props
|
|
5605
5874
|
}) {
|
|
5606
|
-
return /* @__PURE__ */
|
|
5875
|
+
return /* @__PURE__ */ jsx47(
|
|
5607
5876
|
NavigationMenuPrimitive.List,
|
|
5608
5877
|
{
|
|
5609
5878
|
"data-slot": "navigation-menu-list",
|
|
@@ -5619,7 +5888,7 @@ function NavigationMenuItem({
|
|
|
5619
5888
|
className,
|
|
5620
5889
|
...props
|
|
5621
5890
|
}) {
|
|
5622
|
-
return /* @__PURE__ */
|
|
5891
|
+
return /* @__PURE__ */ jsx47(
|
|
5623
5892
|
NavigationMenuPrimitive.Item,
|
|
5624
5893
|
{
|
|
5625
5894
|
"data-slot": "navigation-menu-item",
|
|
@@ -5628,7 +5897,7 @@ function NavigationMenuItem({
|
|
|
5628
5897
|
}
|
|
5629
5898
|
);
|
|
5630
5899
|
}
|
|
5631
|
-
var navigationMenuTriggerStyle =
|
|
5900
|
+
var navigationMenuTriggerStyle = cva11(
|
|
5632
5901
|
"group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=open]:hover:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:focus:bg-accent data-[state=open]:bg-accent/50 focus-visible:ring-ring/50 outline-none transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1"
|
|
5633
5902
|
);
|
|
5634
5903
|
function NavigationMenuTrigger({
|
|
@@ -5636,7 +5905,7 @@ function NavigationMenuTrigger({
|
|
|
5636
5905
|
children,
|
|
5637
5906
|
...props
|
|
5638
5907
|
}) {
|
|
5639
|
-
return /* @__PURE__ */
|
|
5908
|
+
return /* @__PURE__ */ jsxs27(
|
|
5640
5909
|
NavigationMenuPrimitive.Trigger,
|
|
5641
5910
|
{
|
|
5642
5911
|
"data-slot": "navigation-menu-trigger",
|
|
@@ -5645,7 +5914,7 @@ function NavigationMenuTrigger({
|
|
|
5645
5914
|
children: [
|
|
5646
5915
|
children,
|
|
5647
5916
|
" ",
|
|
5648
|
-
/* @__PURE__ */
|
|
5917
|
+
/* @__PURE__ */ jsx47(
|
|
5649
5918
|
ChevronDownIcon4,
|
|
5650
5919
|
{
|
|
5651
5920
|
className: "relative top-[1px] ms-1 size-3 transition duration-300 group-data-[state=open]:rotate-180",
|
|
@@ -5660,7 +5929,7 @@ function NavigationMenuContent({
|
|
|
5660
5929
|
className,
|
|
5661
5930
|
...props
|
|
5662
5931
|
}) {
|
|
5663
|
-
return /* @__PURE__ */
|
|
5932
|
+
return /* @__PURE__ */ jsx47(
|
|
5664
5933
|
NavigationMenuPrimitive.Content,
|
|
5665
5934
|
{
|
|
5666
5935
|
"data-slot": "navigation-menu-content",
|
|
@@ -5677,13 +5946,13 @@ function NavigationMenuViewport({
|
|
|
5677
5946
|
className,
|
|
5678
5947
|
...props
|
|
5679
5948
|
}) {
|
|
5680
|
-
return /* @__PURE__ */
|
|
5949
|
+
return /* @__PURE__ */ jsx47(
|
|
5681
5950
|
"div",
|
|
5682
5951
|
{
|
|
5683
5952
|
className: cn(
|
|
5684
5953
|
"absolute top-full start-0 isolate z-50 flex justify-center"
|
|
5685
5954
|
),
|
|
5686
|
-
children: /* @__PURE__ */
|
|
5955
|
+
children: /* @__PURE__ */ jsx47(
|
|
5687
5956
|
NavigationMenuPrimitive.Viewport,
|
|
5688
5957
|
{
|
|
5689
5958
|
"data-slot": "navigation-menu-viewport",
|
|
@@ -5701,7 +5970,7 @@ function NavigationMenuLink({
|
|
|
5701
5970
|
className,
|
|
5702
5971
|
...props
|
|
5703
5972
|
}) {
|
|
5704
|
-
return /* @__PURE__ */
|
|
5973
|
+
return /* @__PURE__ */ jsx47(
|
|
5705
5974
|
NavigationMenuPrimitive.Link,
|
|
5706
5975
|
{
|
|
5707
5976
|
"data-slot": "navigation-menu-link",
|
|
@@ -5717,7 +5986,7 @@ function NavigationMenuIndicator({
|
|
|
5717
5986
|
className,
|
|
5718
5987
|
...props
|
|
5719
5988
|
}) {
|
|
5720
|
-
return /* @__PURE__ */
|
|
5989
|
+
return /* @__PURE__ */ jsx47(
|
|
5721
5990
|
NavigationMenuPrimitive.Indicator,
|
|
5722
5991
|
{
|
|
5723
5992
|
"data-slot": "navigation-menu-indicator",
|
|
@@ -5726,22 +5995,22 @@ function NavigationMenuIndicator({
|
|
|
5726
5995
|
className
|
|
5727
5996
|
),
|
|
5728
5997
|
...props,
|
|
5729
|
-
children: /* @__PURE__ */
|
|
5998
|
+
children: /* @__PURE__ */ jsx47("div", { className: "bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm shadow-md" })
|
|
5730
5999
|
}
|
|
5731
6000
|
);
|
|
5732
6001
|
}
|
|
5733
6002
|
|
|
5734
6003
|
// src/components/ui/pagination.tsx
|
|
5735
|
-
import * as
|
|
6004
|
+
import * as React21 from "react";
|
|
5736
6005
|
import {
|
|
5737
6006
|
ChevronLeftIcon,
|
|
5738
6007
|
ChevronRightIcon as ChevronRightIcon4,
|
|
5739
6008
|
MoreHorizontalIcon
|
|
5740
6009
|
} from "lucide-react";
|
|
5741
|
-
import { Fragment as Fragment6, jsx as
|
|
5742
|
-
var PaginationDirectionContext =
|
|
6010
|
+
import { Fragment as Fragment6, jsx as jsx48, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
6011
|
+
var PaginationDirectionContext = React21.createContext("rtl");
|
|
5743
6012
|
function usePaginationDirection() {
|
|
5744
|
-
return
|
|
6013
|
+
return React21.useContext(PaginationDirectionContext);
|
|
5745
6014
|
}
|
|
5746
6015
|
function Pagination({
|
|
5747
6016
|
className,
|
|
@@ -5750,7 +6019,7 @@ function Pagination({
|
|
|
5750
6019
|
...props
|
|
5751
6020
|
}) {
|
|
5752
6021
|
const resolvedDir = dir ?? "rtl";
|
|
5753
|
-
return /* @__PURE__ */
|
|
6022
|
+
return /* @__PURE__ */ jsx48(PaginationDirectionContext.Provider, { value: resolvedDir, children: /* @__PURE__ */ jsx48(
|
|
5754
6023
|
"nav",
|
|
5755
6024
|
{
|
|
5756
6025
|
role: "navigation",
|
|
@@ -5768,7 +6037,7 @@ function PaginationContent({
|
|
|
5768
6037
|
...props
|
|
5769
6038
|
}) {
|
|
5770
6039
|
const dir = usePaginationDirection();
|
|
5771
|
-
return /* @__PURE__ */
|
|
6040
|
+
return /* @__PURE__ */ jsx48(
|
|
5772
6041
|
"ul",
|
|
5773
6042
|
{
|
|
5774
6043
|
"data-slot": "pagination-content",
|
|
@@ -5782,7 +6051,7 @@ function PaginationContent({
|
|
|
5782
6051
|
);
|
|
5783
6052
|
}
|
|
5784
6053
|
function PaginationItem({ ...props }) {
|
|
5785
|
-
return /* @__PURE__ */
|
|
6054
|
+
return /* @__PURE__ */ jsx48("li", { "data-slot": "pagination-item", ...props });
|
|
5786
6055
|
}
|
|
5787
6056
|
function PaginationLink({
|
|
5788
6057
|
className,
|
|
@@ -5793,7 +6062,7 @@ function PaginationLink({
|
|
|
5793
6062
|
}) {
|
|
5794
6063
|
const contextDir = usePaginationDirection();
|
|
5795
6064
|
const linkDir = dir ?? (contextDir === "rtl" ? "rtl" : "ltr");
|
|
5796
|
-
return /* @__PURE__ */
|
|
6065
|
+
return /* @__PURE__ */ jsx48(
|
|
5797
6066
|
"a",
|
|
5798
6067
|
{
|
|
5799
6068
|
"aria-current": isActive ? "page" : void 0,
|
|
@@ -5827,7 +6096,7 @@ function PaginationPrevious({
|
|
|
5827
6096
|
const isRTL = dir === "rtl";
|
|
5828
6097
|
const label = isRTL ? "\u0642\u0628\u0644\u06CC" : "Previous";
|
|
5829
6098
|
const Icon2 = isRTL ? ChevronRightIcon4 : ChevronLeftIcon;
|
|
5830
|
-
return /* @__PURE__ */
|
|
6099
|
+
return /* @__PURE__ */ jsxs28(
|
|
5831
6100
|
PaginationLink,
|
|
5832
6101
|
{
|
|
5833
6102
|
"aria-label": isRTL ? "\u0631\u0641\u062A\u0646 \u0628\u0647 \u0635\u0641\u062D\u0647 \u0642\u0628\u0644\u06CC" : "Go to previous page",
|
|
@@ -5839,8 +6108,8 @@ function PaginationPrevious({
|
|
|
5839
6108
|
dir: "ltr",
|
|
5840
6109
|
...props,
|
|
5841
6110
|
children: [
|
|
5842
|
-
/* @__PURE__ */
|
|
5843
|
-
/* @__PURE__ */
|
|
6111
|
+
/* @__PURE__ */ jsx48(Icon2, { className: "size-4" }),
|
|
6112
|
+
/* @__PURE__ */ jsx48("span", { className: "hidden sm:inline no-underline", children: label })
|
|
5844
6113
|
]
|
|
5845
6114
|
}
|
|
5846
6115
|
);
|
|
@@ -5853,7 +6122,7 @@ function PaginationNext({
|
|
|
5853
6122
|
const isRTL = dir === "rtl";
|
|
5854
6123
|
const label = isRTL ? "\u0628\u0639\u062F\u06CC" : "Next";
|
|
5855
6124
|
const Icon2 = isRTL ? ChevronLeftIcon : ChevronRightIcon4;
|
|
5856
|
-
return /* @__PURE__ */
|
|
6125
|
+
return /* @__PURE__ */ jsx48(
|
|
5857
6126
|
PaginationLink,
|
|
5858
6127
|
{
|
|
5859
6128
|
"aria-label": isRTL ? "\u0631\u0641\u062A\u0646 \u0628\u0647 \u0635\u0641\u062D\u0647 \u0628\u0639\u062F\u06CC" : "Go to next page",
|
|
@@ -5864,12 +6133,12 @@ function PaginationNext({
|
|
|
5864
6133
|
),
|
|
5865
6134
|
dir: "ltr",
|
|
5866
6135
|
...props,
|
|
5867
|
-
children: isRTL ? /* @__PURE__ */
|
|
5868
|
-
/* @__PURE__ */
|
|
5869
|
-
/* @__PURE__ */
|
|
5870
|
-
] }) : /* @__PURE__ */
|
|
5871
|
-
/* @__PURE__ */
|
|
5872
|
-
/* @__PURE__ */
|
|
6136
|
+
children: isRTL ? /* @__PURE__ */ jsxs28(Fragment6, { children: [
|
|
6137
|
+
/* @__PURE__ */ jsx48(Icon2, { className: "size-4" }),
|
|
6138
|
+
/* @__PURE__ */ jsx48("span", { className: "hidden sm:inline no-underline", children: label })
|
|
6139
|
+
] }) : /* @__PURE__ */ jsxs28(Fragment6, { children: [
|
|
6140
|
+
/* @__PURE__ */ jsx48("span", { className: "hidden sm:inline no-underline", children: label }),
|
|
6141
|
+
/* @__PURE__ */ jsx48(Icon2, { className: "size-4" })
|
|
5873
6142
|
] })
|
|
5874
6143
|
}
|
|
5875
6144
|
);
|
|
@@ -5878,7 +6147,7 @@ function PaginationEllipsis({
|
|
|
5878
6147
|
className,
|
|
5879
6148
|
...props
|
|
5880
6149
|
}) {
|
|
5881
|
-
return /* @__PURE__ */
|
|
6150
|
+
return /* @__PURE__ */ jsxs28(
|
|
5882
6151
|
"span",
|
|
5883
6152
|
{
|
|
5884
6153
|
"aria-hidden": true,
|
|
@@ -5886,15 +6155,15 @@ function PaginationEllipsis({
|
|
|
5886
6155
|
className: cn("flex size-9 items-center justify-center", className),
|
|
5887
6156
|
...props,
|
|
5888
6157
|
children: [
|
|
5889
|
-
/* @__PURE__ */
|
|
5890
|
-
/* @__PURE__ */
|
|
6158
|
+
/* @__PURE__ */ jsx48(MoreHorizontalIcon, { className: "size-4" }),
|
|
6159
|
+
/* @__PURE__ */ jsx48("span", { className: "sr-only", children: "More pages" })
|
|
5891
6160
|
]
|
|
5892
6161
|
}
|
|
5893
6162
|
);
|
|
5894
6163
|
}
|
|
5895
6164
|
|
|
5896
6165
|
// src/components/ui/pagination-controlled.tsx
|
|
5897
|
-
import { jsx as
|
|
6166
|
+
import { jsx as jsx49, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
5898
6167
|
function PaginationControlled({
|
|
5899
6168
|
currentPage,
|
|
5900
6169
|
totalPages,
|
|
@@ -5957,8 +6226,8 @@ function PaginationControlled({
|
|
|
5957
6226
|
const pageNumbers = generatePageNumbers();
|
|
5958
6227
|
const showFirstButton = showFirstLast && !pageNumbers.includes(1) && currentPage > 1;
|
|
5959
6228
|
const showLastButton = showFirstLast && !pageNumbers.includes(totalPages) && currentPage < totalPages;
|
|
5960
|
-
return /* @__PURE__ */
|
|
5961
|
-
showFirstButton && /* @__PURE__ */
|
|
6229
|
+
return /* @__PURE__ */ jsx49(Pagination, { className, dir, children: /* @__PURE__ */ jsxs29(PaginationContent, { children: [
|
|
6230
|
+
showFirstButton && /* @__PURE__ */ jsx49(PaginationItem, { children: /* @__PURE__ */ jsx49(
|
|
5962
6231
|
PaginationLink,
|
|
5963
6232
|
{
|
|
5964
6233
|
href: "#",
|
|
@@ -5969,7 +6238,7 @@ function PaginationControlled({
|
|
|
5969
6238
|
children: 1 .toLocaleString("fa-IR")
|
|
5970
6239
|
}
|
|
5971
6240
|
) }),
|
|
5972
|
-
showPrevNext && /* @__PURE__ */
|
|
6241
|
+
showPrevNext && /* @__PURE__ */ jsx49(PaginationItem, { children: /* @__PURE__ */ jsx49(
|
|
5973
6242
|
PaginationPrevious,
|
|
5974
6243
|
{
|
|
5975
6244
|
href: "#",
|
|
@@ -5982,9 +6251,9 @@ function PaginationControlled({
|
|
|
5982
6251
|
) }),
|
|
5983
6252
|
pageNumbers.map((page, index) => {
|
|
5984
6253
|
if (page === "ellipsis") {
|
|
5985
|
-
return /* @__PURE__ */
|
|
6254
|
+
return /* @__PURE__ */ jsx49(PaginationItem, { children: /* @__PURE__ */ jsx49(PaginationEllipsis, {}) }, `ellipsis-${index}`);
|
|
5986
6255
|
}
|
|
5987
|
-
return /* @__PURE__ */
|
|
6256
|
+
return /* @__PURE__ */ jsx49(PaginationItem, { children: /* @__PURE__ */ jsx49(
|
|
5988
6257
|
PaginationLink,
|
|
5989
6258
|
{
|
|
5990
6259
|
href: "#",
|
|
@@ -5997,7 +6266,7 @@ function PaginationControlled({
|
|
|
5997
6266
|
}
|
|
5998
6267
|
) }, page);
|
|
5999
6268
|
}),
|
|
6000
|
-
showPrevNext && /* @__PURE__ */
|
|
6269
|
+
showPrevNext && /* @__PURE__ */ jsx49(PaginationItem, { children: /* @__PURE__ */ jsx49(
|
|
6001
6270
|
PaginationNext,
|
|
6002
6271
|
{
|
|
6003
6272
|
href: "#",
|
|
@@ -6008,7 +6277,7 @@ function PaginationControlled({
|
|
|
6008
6277
|
className: currentPage === totalPages ? "pointer-events-none opacity-50" : ""
|
|
6009
6278
|
}
|
|
6010
6279
|
) }),
|
|
6011
|
-
showLastButton && /* @__PURE__ */
|
|
6280
|
+
showLastButton && /* @__PURE__ */ jsx49(PaginationItem, { children: /* @__PURE__ */ jsx49(
|
|
6012
6281
|
PaginationLink,
|
|
6013
6282
|
{
|
|
6014
6283
|
href: "#",
|
|
@@ -6023,8 +6292,8 @@ function PaginationControlled({
|
|
|
6023
6292
|
}
|
|
6024
6293
|
|
|
6025
6294
|
// src/components/ui/profile-card.tsx
|
|
6026
|
-
import * as
|
|
6027
|
-
import { jsx as
|
|
6295
|
+
import * as React22 from "react";
|
|
6296
|
+
import { jsx as jsx50, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
6028
6297
|
var formatFollowers2 = (count) => {
|
|
6029
6298
|
if (count >= 1e6) {
|
|
6030
6299
|
return `${(count / 1e6).toFixed(1).replace(/\.0$/, "")}M`;
|
|
@@ -6034,7 +6303,7 @@ var formatFollowers2 = (count) => {
|
|
|
6034
6303
|
}
|
|
6035
6304
|
return count.toString();
|
|
6036
6305
|
};
|
|
6037
|
-
var ProfileCard =
|
|
6306
|
+
var ProfileCard = React22.forwardRef(
|
|
6038
6307
|
({
|
|
6039
6308
|
className,
|
|
6040
6309
|
name,
|
|
@@ -6082,7 +6351,7 @@ var ProfileCard = React20.forwardRef(
|
|
|
6082
6351
|
transparent: "bg-transparent border border-border"
|
|
6083
6352
|
};
|
|
6084
6353
|
const currentSize = sizeClasses[size];
|
|
6085
|
-
return /* @__PURE__ */
|
|
6354
|
+
return /* @__PURE__ */ jsxs30(
|
|
6086
6355
|
"div",
|
|
6087
6356
|
{
|
|
6088
6357
|
ref,
|
|
@@ -6096,22 +6365,22 @@ var ProfileCard = React20.forwardRef(
|
|
|
6096
6365
|
onClick: onCardClick,
|
|
6097
6366
|
...props,
|
|
6098
6367
|
children: [
|
|
6099
|
-
/* @__PURE__ */
|
|
6100
|
-
/* @__PURE__ */
|
|
6101
|
-
/* @__PURE__ */
|
|
6102
|
-
] }) }) : avatarBorderVariant === "primary" ? /* @__PURE__ */
|
|
6103
|
-
/* @__PURE__ */
|
|
6104
|
-
/* @__PURE__ */
|
|
6105
|
-
] }) : /* @__PURE__ */
|
|
6106
|
-
/* @__PURE__ */
|
|
6107
|
-
/* @__PURE__ */
|
|
6368
|
+
/* @__PURE__ */ jsx50("div", { className: "relative flex-shrink-0", children: avatarBorderVariant === "gold" ? /* @__PURE__ */ jsx50("div", { className: "relative p-0.5 rounded-full bg-gradient-to-br from-amber-500 via-yellow-400 to-amber-500", children: /* @__PURE__ */ jsxs30(Avatar, { className: cn(currentSize.avatar, "ring-2 ring-background"), children: [
|
|
6369
|
+
/* @__PURE__ */ jsx50(AvatarImage, { src: avatarSrc, alt: avatarAlt || name }),
|
|
6370
|
+
/* @__PURE__ */ jsx50(AvatarFallback, { className: "bg-surface-300 text-foreground font-medium", children: initials || name.charAt(0) })
|
|
6371
|
+
] }) }) : avatarBorderVariant === "primary" ? /* @__PURE__ */ jsxs30(Avatar, { className: cn(currentSize.avatar, "ring-2 ring-offset-2 ring-offset-background ring-primary"), children: [
|
|
6372
|
+
/* @__PURE__ */ jsx50(AvatarImage, { src: avatarSrc, alt: avatarAlt || name }),
|
|
6373
|
+
/* @__PURE__ */ jsx50(AvatarFallback, { className: "bg-surface-300 text-foreground font-medium", children: initials || name.charAt(0) })
|
|
6374
|
+
] }) : /* @__PURE__ */ jsxs30(Avatar, { className: currentSize.avatar, children: [
|
|
6375
|
+
/* @__PURE__ */ jsx50(AvatarImage, { src: avatarSrc, alt: avatarAlt || name }),
|
|
6376
|
+
/* @__PURE__ */ jsx50(AvatarFallback, { className: "bg-surface-300 text-foreground font-medium", children: initials || name.charAt(0) })
|
|
6108
6377
|
] }) }),
|
|
6109
|
-
/* @__PURE__ */
|
|
6110
|
-
/* @__PURE__ */
|
|
6111
|
-
/* @__PURE__ */
|
|
6112
|
-
followers !== void 0 && /* @__PURE__ */
|
|
6113
|
-
followersIcon && /* @__PURE__ */
|
|
6114
|
-
/* @__PURE__ */
|
|
6378
|
+
/* @__PURE__ */ jsxs30("div", { className: "flex flex-col items-center gap-0.5 w-full", children: [
|
|
6379
|
+
/* @__PURE__ */ jsx50("h3", { className: cn("font-semibold text-foreground text-center", currentSize.name), children: name }),
|
|
6380
|
+
/* @__PURE__ */ jsx50("p", { className: cn("text-muted-foreground text-center", currentSize.username), children: username }),
|
|
6381
|
+
followers !== void 0 && /* @__PURE__ */ jsxs30("div", { className: cn("flex items-center gap-1.5 text-muted-foreground mt-0.5", currentSize.followers), children: [
|
|
6382
|
+
followersIcon && /* @__PURE__ */ jsx50("span", { className: cn("flex-shrink-0", currentSize.iconSize), children: followersIcon }),
|
|
6383
|
+
/* @__PURE__ */ jsx50("span", { className: "font-medium", children: formatFollowers2(followers) })
|
|
6115
6384
|
] })
|
|
6116
6385
|
] })
|
|
6117
6386
|
]
|
|
@@ -6122,9 +6391,9 @@ var ProfileCard = React20.forwardRef(
|
|
|
6122
6391
|
ProfileCard.displayName = "ProfileCard";
|
|
6123
6392
|
|
|
6124
6393
|
// src/components/ui/profile-info.tsx
|
|
6125
|
-
import * as
|
|
6126
|
-
import { jsx as
|
|
6127
|
-
var ProfileInfo =
|
|
6394
|
+
import * as React23 from "react";
|
|
6395
|
+
import { jsx as jsx51, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
6396
|
+
var ProfileInfo = React23.forwardRef(
|
|
6128
6397
|
({
|
|
6129
6398
|
className,
|
|
6130
6399
|
name,
|
|
@@ -6179,7 +6448,7 @@ var ProfileInfo = React21.forwardRef(
|
|
|
6179
6448
|
none: ""
|
|
6180
6449
|
};
|
|
6181
6450
|
const currentSize = sizeClasses[size];
|
|
6182
|
-
return /* @__PURE__ */
|
|
6451
|
+
return /* @__PURE__ */ jsxs31(
|
|
6183
6452
|
"div",
|
|
6184
6453
|
{
|
|
6185
6454
|
ref,
|
|
@@ -6193,24 +6462,24 @@ var ProfileInfo = React21.forwardRef(
|
|
|
6193
6462
|
onClick: onProfileClick,
|
|
6194
6463
|
...props,
|
|
6195
6464
|
children: [
|
|
6196
|
-
/* @__PURE__ */
|
|
6197
|
-
/* @__PURE__ */
|
|
6198
|
-
/* @__PURE__ */
|
|
6199
|
-
/* @__PURE__ */
|
|
6200
|
-
] }) }) : /* @__PURE__ */
|
|
6201
|
-
/* @__PURE__ */
|
|
6202
|
-
/* @__PURE__ */
|
|
6465
|
+
/* @__PURE__ */ jsxs31("div", { className: "flex items-center gap-4", children: [
|
|
6466
|
+
/* @__PURE__ */ jsx51("div", { className: "relative", children: avatarBorderVariant === "gold" ? /* @__PURE__ */ jsx51("div", { className: "relative p-0.5 rounded-full bg-gradient-to-br from-amber-500 via-yellow-400 to-amber-500", children: /* @__PURE__ */ jsxs31(Avatar, { className: cn(currentSize.avatar, "ring-2 ring-background"), children: [
|
|
6467
|
+
/* @__PURE__ */ jsx51(AvatarImage, { src: avatarSrc, alt: avatarAlt || name }),
|
|
6468
|
+
/* @__PURE__ */ jsx51(AvatarFallback, { className: "bg-surface-300 text-foreground font-medium", children: initials || name.charAt(0) })
|
|
6469
|
+
] }) }) : /* @__PURE__ */ jsxs31(Avatar, { className: cn(currentSize.avatar, borderClasses[avatarBorderVariant]), children: [
|
|
6470
|
+
/* @__PURE__ */ jsx51(AvatarImage, { src: avatarSrc, alt: avatarAlt || name }),
|
|
6471
|
+
/* @__PURE__ */ jsx51(AvatarFallback, { className: "bg-surface-300 text-foreground font-medium", children: initials || name.charAt(0) })
|
|
6203
6472
|
] }) }),
|
|
6204
|
-
/* @__PURE__ */
|
|
6205
|
-
/* @__PURE__ */
|
|
6206
|
-
/* @__PURE__ */
|
|
6207
|
-
infoText && /* @__PURE__ */
|
|
6208
|
-
infoIcon && /* @__PURE__ */
|
|
6209
|
-
/* @__PURE__ */
|
|
6473
|
+
/* @__PURE__ */ jsxs31("div", { className: "flex flex-col gap-1", children: [
|
|
6474
|
+
/* @__PURE__ */ jsx51("h3", { className: cn("font-semibold text-foreground", currentSize.name), children: name }),
|
|
6475
|
+
/* @__PURE__ */ jsx51("p", { className: cn("text-muted-foreground", currentSize.username), children: username }),
|
|
6476
|
+
infoText && /* @__PURE__ */ jsxs31("div", { className: cn("flex items-center gap-1.5 text-muted-foreground", currentSize.info), children: [
|
|
6477
|
+
infoIcon && /* @__PURE__ */ jsx51("span", { className: "flex-shrink-0", children: infoIcon }),
|
|
6478
|
+
/* @__PURE__ */ jsx51("span", { className: "font-medium", children: infoText })
|
|
6210
6479
|
] })
|
|
6211
6480
|
] })
|
|
6212
6481
|
] }),
|
|
6213
|
-
(actionIcon || onActionClick) && /* @__PURE__ */
|
|
6482
|
+
(actionIcon || onActionClick) && /* @__PURE__ */ jsx51(
|
|
6214
6483
|
Button,
|
|
6215
6484
|
{
|
|
6216
6485
|
variant: "ghost",
|
|
@@ -6221,7 +6490,7 @@ var ProfileInfo = React21.forwardRef(
|
|
|
6221
6490
|
onActionClick?.();
|
|
6222
6491
|
},
|
|
6223
6492
|
"aria-label": "\u0639\u0645\u0644\u06CC\u0627\u062A",
|
|
6224
|
-
children: actionIcon || /* @__PURE__ */
|
|
6493
|
+
children: actionIcon || /* @__PURE__ */ jsxs31(
|
|
6225
6494
|
"svg",
|
|
6226
6495
|
{
|
|
6227
6496
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -6234,9 +6503,9 @@ var ProfileInfo = React21.forwardRef(
|
|
|
6234
6503
|
strokeLinecap: "round",
|
|
6235
6504
|
strokeLinejoin: "round",
|
|
6236
6505
|
children: [
|
|
6237
|
-
/* @__PURE__ */
|
|
6238
|
-
/* @__PURE__ */
|
|
6239
|
-
/* @__PURE__ */
|
|
6506
|
+
/* @__PURE__ */ jsx51("circle", { cx: "12", cy: "12", r: "1" }),
|
|
6507
|
+
/* @__PURE__ */ jsx51("circle", { cx: "12", cy: "5", r: "1" }),
|
|
6508
|
+
/* @__PURE__ */ jsx51("circle", { cx: "12", cy: "19", r: "1" })
|
|
6240
6509
|
]
|
|
6241
6510
|
}
|
|
6242
6511
|
)
|
|
@@ -6250,9 +6519,9 @@ var ProfileInfo = React21.forwardRef(
|
|
|
6250
6519
|
ProfileInfo.displayName = "ProfileInfo";
|
|
6251
6520
|
|
|
6252
6521
|
// src/components/ui/engagement-rate.tsx
|
|
6253
|
-
import * as
|
|
6522
|
+
import * as React24 from "react";
|
|
6254
6523
|
import { TrendingUp, Users as Users2, UserCheck, Award, Crown } from "lucide-react";
|
|
6255
|
-
import { jsx as
|
|
6524
|
+
import { jsx as jsx52, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
6256
6525
|
var convertToLocalNumbers2 = (text, locale) => {
|
|
6257
6526
|
if (locale === "fa" || locale === "ar") {
|
|
6258
6527
|
const persianDigits = ["\u06F0", "\u06F1", "\u06F2", "\u06F3", "\u06F4", "\u06F5", "\u06F6", "\u06F7", "\u06F8", "\u06F9"];
|
|
@@ -6311,17 +6580,17 @@ var getGroupIcon = (group) => {
|
|
|
6311
6580
|
const iconClass = "w-12 h-12 text-primary";
|
|
6312
6581
|
switch (group) {
|
|
6313
6582
|
case "nano":
|
|
6314
|
-
return /* @__PURE__ */
|
|
6583
|
+
return /* @__PURE__ */ jsx52(Users2, { className: iconClass });
|
|
6315
6584
|
case "micro":
|
|
6316
|
-
return /* @__PURE__ */
|
|
6585
|
+
return /* @__PURE__ */ jsx52(UserCheck, { className: iconClass });
|
|
6317
6586
|
case "mid":
|
|
6318
|
-
return /* @__PURE__ */
|
|
6587
|
+
return /* @__PURE__ */ jsx52(TrendingUp, { className: iconClass });
|
|
6319
6588
|
case "macro":
|
|
6320
|
-
return /* @__PURE__ */
|
|
6589
|
+
return /* @__PURE__ */ jsx52(Award, { className: iconClass });
|
|
6321
6590
|
case "mega":
|
|
6322
|
-
return /* @__PURE__ */
|
|
6591
|
+
return /* @__PURE__ */ jsx52(Crown, { className: iconClass });
|
|
6323
6592
|
default:
|
|
6324
|
-
return /* @__PURE__ */
|
|
6593
|
+
return /* @__PURE__ */ jsx52(Users2, { className: iconClass });
|
|
6325
6594
|
}
|
|
6326
6595
|
};
|
|
6327
6596
|
var translations = {
|
|
@@ -6392,7 +6661,7 @@ var translations = {
|
|
|
6392
6661
|
mega: "Mega"
|
|
6393
6662
|
}
|
|
6394
6663
|
};
|
|
6395
|
-
var EngagementRate =
|
|
6664
|
+
var EngagementRate = React24.forwardRef(
|
|
6396
6665
|
({ className, currentRate, followers, locale = "fa", showCategoryCard = true, ...props }, ref) => {
|
|
6397
6666
|
const isRTL = locale === "fa" || locale === "ar";
|
|
6398
6667
|
const t = translations[locale];
|
|
@@ -6514,13 +6783,13 @@ var EngagementRate = React22.forwardRef(
|
|
|
6514
6783
|
return `${formatNumber2(1e3)} ${t.to} ${formatNumber2(1e4)} ${t.followers}`;
|
|
6515
6784
|
}
|
|
6516
6785
|
};
|
|
6517
|
-
return /* @__PURE__ */
|
|
6518
|
-
/* @__PURE__ */
|
|
6519
|
-
/* @__PURE__ */
|
|
6786
|
+
return /* @__PURE__ */ jsxs32("div", { ref, className: cn("space-y-4", className), dir: isRTL ? "rtl" : "ltr", ...props, children: [
|
|
6787
|
+
/* @__PURE__ */ jsxs32("div", { className: "text-center", children: [
|
|
6788
|
+
/* @__PURE__ */ jsxs32("div", { className: "text-4xl font-bold text-primary mb-2", children: [
|
|
6520
6789
|
convertToLocalNumbers2((currentRate * 100).toFixed(3), locale),
|
|
6521
6790
|
"%"
|
|
6522
6791
|
] }),
|
|
6523
|
-
currentRangeIndex !== -1 && /* @__PURE__ */
|
|
6792
|
+
currentRangeIndex !== -1 && /* @__PURE__ */ jsx52(
|
|
6524
6793
|
Badge,
|
|
6525
6794
|
{
|
|
6526
6795
|
className: "text-sm font-medium text-white border-0",
|
|
@@ -6529,13 +6798,13 @@ var EngagementRate = React22.forwardRef(
|
|
|
6529
6798
|
}
|
|
6530
6799
|
)
|
|
6531
6800
|
] }),
|
|
6532
|
-
/* @__PURE__ */
|
|
6533
|
-
/* @__PURE__ */
|
|
6534
|
-
/* @__PURE__ */
|
|
6535
|
-
/* @__PURE__ */
|
|
6801
|
+
/* @__PURE__ */ jsxs32("div", { className: "space-y-3", children: [
|
|
6802
|
+
/* @__PURE__ */ jsxs32("div", { className: "flex justify-between text-sm text-muted-foreground", children: [
|
|
6803
|
+
/* @__PURE__ */ jsx52("span", { children: isRTL ? t.excellent : t.low }),
|
|
6804
|
+
/* @__PURE__ */ jsx52("span", { children: isRTL ? t.low : t.excellent })
|
|
6536
6805
|
] }),
|
|
6537
|
-
/* @__PURE__ */
|
|
6538
|
-
/* @__PURE__ */
|
|
6806
|
+
/* @__PURE__ */ jsxs32("div", { className: "relative", children: [
|
|
6807
|
+
/* @__PURE__ */ jsx52("div", { className: "flex gap-1 h-6 rounded overflow-hidden", children: engagementRanges.map((range, index) => /* @__PURE__ */ jsx52(
|
|
6539
6808
|
"div",
|
|
6540
6809
|
{
|
|
6541
6810
|
className: "flex-1 transition-all duration-300 cursor-pointer group relative",
|
|
@@ -6556,35 +6825,35 @@ var EngagementRate = React22.forwardRef(
|
|
|
6556
6825
|
},
|
|
6557
6826
|
index
|
|
6558
6827
|
)) }),
|
|
6559
|
-
/* @__PURE__ */
|
|
6828
|
+
/* @__PURE__ */ jsx52(
|
|
6560
6829
|
"div",
|
|
6561
6830
|
{
|
|
6562
6831
|
className: "absolute -top-1 transform -translate-x-1/2 transition-all duration-500 z-10",
|
|
6563
6832
|
style: { left: `${adjustedTrianglePosition}%` },
|
|
6564
|
-
children: /* @__PURE__ */
|
|
6833
|
+
children: /* @__PURE__ */ jsx52(
|
|
6565
6834
|
"svg",
|
|
6566
6835
|
{
|
|
6567
6836
|
width: "20",
|
|
6568
6837
|
height: "14",
|
|
6569
6838
|
viewBox: "0 0 20 14",
|
|
6570
6839
|
className: "fill-white dark:fill-white drop-shadow-md transition-transform duration-300",
|
|
6571
|
-
children: /* @__PURE__ */
|
|
6840
|
+
children: /* @__PURE__ */ jsx52("path", { d: "M10 14L0 0H20L10 14Z" })
|
|
6572
6841
|
}
|
|
6573
6842
|
)
|
|
6574
6843
|
}
|
|
6575
6844
|
)
|
|
6576
6845
|
] })
|
|
6577
6846
|
] }),
|
|
6578
|
-
showCategoryCard && /* @__PURE__ */
|
|
6579
|
-
/* @__PURE__ */
|
|
6580
|
-
/* @__PURE__ */
|
|
6581
|
-
/* @__PURE__ */
|
|
6582
|
-
/* @__PURE__ */
|
|
6583
|
-
/* @__PURE__ */
|
|
6847
|
+
showCategoryCard && /* @__PURE__ */ jsx52("div", { className: "mt-6 bg-surface-100 rounded-lg border border-border p-5", children: /* @__PURE__ */ jsxs32("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-6", children: [
|
|
6848
|
+
/* @__PURE__ */ jsx52("div", { className: "flex items-center justify-center order-1 lg:order-1", children: /* @__PURE__ */ jsxs32("div", { className: "w-full h-full flex flex-col justify-center items-center text-center space-y-4", children: [
|
|
6849
|
+
/* @__PURE__ */ jsx52("div", { className: "mb-2", children: getGroupIcon(engagementData.groupKey) }),
|
|
6850
|
+
/* @__PURE__ */ jsxs32("div", { className: "space-y-2", children: [
|
|
6851
|
+
/* @__PURE__ */ jsx52("p", { className: "text-lg font-semibold", children: t.yourCategory }),
|
|
6852
|
+
/* @__PURE__ */ jsx52("p", { className: "text-3xl font-black text-primary", children: locale === "en" ? `${engagementData.group} ${t.influencer}` : `${engagementData.group} ${t.influencer}` })
|
|
6584
6853
|
] }),
|
|
6585
|
-
/* @__PURE__ */
|
|
6586
|
-
/* @__PURE__ */
|
|
6587
|
-
/* @__PURE__ */
|
|
6854
|
+
/* @__PURE__ */ jsxs32("div", { className: "space-y-2", children: [
|
|
6855
|
+
/* @__PURE__ */ jsx52("p", { className: "text-base font-medium text-muted-foreground", children: getFollowerRange() }),
|
|
6856
|
+
/* @__PURE__ */ jsxs32("p", { className: "text-xl font-bold", children: [
|
|
6588
6857
|
"(",
|
|
6589
6858
|
formatNumber2(followers),
|
|
6590
6859
|
" ",
|
|
@@ -6593,9 +6862,9 @@ var EngagementRate = React22.forwardRef(
|
|
|
6593
6862
|
] })
|
|
6594
6863
|
] })
|
|
6595
6864
|
] }) }),
|
|
6596
|
-
/* @__PURE__ */
|
|
6597
|
-
/* @__PURE__ */
|
|
6598
|
-
/* @__PURE__ */
|
|
6865
|
+
/* @__PURE__ */ jsxs32("div", { className: "space-y-3 order-2 lg:order-2", children: [
|
|
6866
|
+
/* @__PURE__ */ jsx52("h3", { className: "text-base font-semibold mb-3", children: locale === "en" ? `${engagementData.group} ${t.influencer} ${t.criteria}` : `${t.criteria} ${engagementData.group} ${t.influencer}` }),
|
|
6867
|
+
/* @__PURE__ */ jsx52("div", { className: "space-y-2.5", children: engagementRanges.map((range, index) => {
|
|
6599
6868
|
const isCurrentRange = index === currentRangeIndex;
|
|
6600
6869
|
const hexToRgb = (hex) => {
|
|
6601
6870
|
const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
|
|
@@ -6608,7 +6877,7 @@ var EngagementRate = React22.forwardRef(
|
|
|
6608
6877
|
const rgb = hexToRgb(range.color);
|
|
6609
6878
|
const bgColor = isCurrentRange && rgb ? `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, 0.1)` : "transparent";
|
|
6610
6879
|
const displayText = index === 0 ? convertToLocalNumbers2(`${range.min}% ${t.and}`, locale) : index === engagementRanges.length - 1 ? convertToLocalNumbers2(`${t.lessThan} ${range.max}%`, locale) : convertToLocalNumbers2(`${range.min}% ${t.to} ${range.max}%`, locale);
|
|
6611
|
-
return /* @__PURE__ */
|
|
6880
|
+
return /* @__PURE__ */ jsxs32(
|
|
6612
6881
|
"div",
|
|
6613
6882
|
{
|
|
6614
6883
|
className: cn(
|
|
@@ -6620,9 +6889,9 @@ var EngagementRate = React22.forwardRef(
|
|
|
6620
6889
|
borderColor: isCurrentRange ? range.color : void 0
|
|
6621
6890
|
},
|
|
6622
6891
|
children: [
|
|
6623
|
-
/* @__PURE__ */
|
|
6624
|
-
/* @__PURE__ */
|
|
6625
|
-
/* @__PURE__ */
|
|
6892
|
+
/* @__PURE__ */ jsxs32("div", { className: "flex items-center gap-2", children: [
|
|
6893
|
+
/* @__PURE__ */ jsx52("div", { className: "w-2.5 h-2.5 rounded-full", style: { backgroundColor: range.color } }),
|
|
6894
|
+
/* @__PURE__ */ jsxs32(
|
|
6626
6895
|
"span",
|
|
6627
6896
|
{
|
|
6628
6897
|
className: cn(
|
|
@@ -6631,7 +6900,7 @@ var EngagementRate = React22.forwardRef(
|
|
|
6631
6900
|
),
|
|
6632
6901
|
children: [
|
|
6633
6902
|
range.label,
|
|
6634
|
-
isCurrentRange && /* @__PURE__ */
|
|
6903
|
+
isCurrentRange && /* @__PURE__ */ jsxs32("span", { className: cn("text-xs font-normal text-muted-foreground", isRTL ? "mr-1" : "ml-1"), children: [
|
|
6635
6904
|
"(",
|
|
6636
6905
|
t.you,
|
|
6637
6906
|
")"
|
|
@@ -6640,7 +6909,7 @@ var EngagementRate = React22.forwardRef(
|
|
|
6640
6909
|
}
|
|
6641
6910
|
)
|
|
6642
6911
|
] }),
|
|
6643
|
-
/* @__PURE__ */
|
|
6912
|
+
/* @__PURE__ */ jsx52(
|
|
6644
6913
|
"span",
|
|
6645
6914
|
{
|
|
6646
6915
|
className: cn("text-sm font-semibold", !isCurrentRange && "text-muted-foreground"),
|
|
@@ -6661,8 +6930,8 @@ var EngagementRate = React22.forwardRef(
|
|
|
6661
6930
|
EngagementRate.displayName = "EngagementRate";
|
|
6662
6931
|
|
|
6663
6932
|
// src/components/ui/engagement-rate-bar.tsx
|
|
6664
|
-
import * as
|
|
6665
|
-
import { jsx as
|
|
6933
|
+
import * as React25 from "react";
|
|
6934
|
+
import { jsx as jsx53, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
6666
6935
|
var convertToLocalNumbers3 = (text, locale) => {
|
|
6667
6936
|
if (locale === "fa" || locale === "ar") {
|
|
6668
6937
|
const persianDigits = ["\u06F0", "\u06F1", "\u06F2", "\u06F3", "\u06F4", "\u06F5", "\u06F6", "\u06F7", "\u06F8", "\u06F9"];
|
|
@@ -6743,7 +7012,7 @@ var translations2 = {
|
|
|
6743
7012
|
low: "Low"
|
|
6744
7013
|
}
|
|
6745
7014
|
};
|
|
6746
|
-
var EngagementRateBar =
|
|
7015
|
+
var EngagementRateBar = React25.forwardRef(
|
|
6747
7016
|
({ className, currentRate, followers, locale = "fa", showHelperText = true, ...props }, ref) => {
|
|
6748
7017
|
const isRTL = locale === "fa" || locale === "ar";
|
|
6749
7018
|
const t = translations2[locale];
|
|
@@ -6838,7 +7107,7 @@ var EngagementRateBar = React23.forwardRef(
|
|
|
6838
7107
|
};
|
|
6839
7108
|
const trianglePosition = getTrianglePosition();
|
|
6840
7109
|
const adjustedTrianglePosition = isRTL ? 100 - trianglePosition : trianglePosition;
|
|
6841
|
-
return /* @__PURE__ */
|
|
7110
|
+
return /* @__PURE__ */ jsxs33(
|
|
6842
7111
|
"div",
|
|
6843
7112
|
{
|
|
6844
7113
|
ref,
|
|
@@ -6846,12 +7115,12 @@ var EngagementRateBar = React23.forwardRef(
|
|
|
6846
7115
|
dir: isRTL ? "rtl" : "ltr",
|
|
6847
7116
|
...props,
|
|
6848
7117
|
children: [
|
|
6849
|
-
/* @__PURE__ */
|
|
6850
|
-
/* @__PURE__ */
|
|
7118
|
+
/* @__PURE__ */ jsxs33("div", { className: "text-center", children: [
|
|
7119
|
+
/* @__PURE__ */ jsxs33("div", { className: "text-4xl font-bold text-primary mb-2", children: [
|
|
6851
7120
|
convertToLocalNumbers3((currentRate * 100).toFixed(3), locale),
|
|
6852
7121
|
"%"
|
|
6853
7122
|
] }),
|
|
6854
|
-
currentRangeIndex !== -1 && /* @__PURE__ */
|
|
7123
|
+
currentRangeIndex !== -1 && /* @__PURE__ */ jsx53(
|
|
6855
7124
|
Badge,
|
|
6856
7125
|
{
|
|
6857
7126
|
className: "text-sm font-medium text-white border-0",
|
|
@@ -6860,13 +7129,13 @@ var EngagementRateBar = React23.forwardRef(
|
|
|
6860
7129
|
}
|
|
6861
7130
|
)
|
|
6862
7131
|
] }),
|
|
6863
|
-
/* @__PURE__ */
|
|
6864
|
-
showHelperText && /* @__PURE__ */
|
|
6865
|
-
/* @__PURE__ */
|
|
6866
|
-
/* @__PURE__ */
|
|
7132
|
+
/* @__PURE__ */ jsxs33("div", { className: "space-y-3", children: [
|
|
7133
|
+
showHelperText && /* @__PURE__ */ jsxs33("div", { className: "flex justify-between text-sm text-muted-foreground", children: [
|
|
7134
|
+
/* @__PURE__ */ jsx53("span", { children: isRTL ? t.excellent : t.low }),
|
|
7135
|
+
/* @__PURE__ */ jsx53("span", { children: isRTL ? t.low : t.excellent })
|
|
6867
7136
|
] }),
|
|
6868
|
-
/* @__PURE__ */
|
|
6869
|
-
/* @__PURE__ */
|
|
7137
|
+
/* @__PURE__ */ jsxs33("div", { className: "relative", children: [
|
|
7138
|
+
/* @__PURE__ */ jsx53("div", { className: "flex gap-1 h-6 rounded overflow-hidden", children: engagementRanges.map((range, index) => /* @__PURE__ */ jsx53(
|
|
6870
7139
|
"div",
|
|
6871
7140
|
{
|
|
6872
7141
|
className: "flex-1 transition-all duration-300 cursor-pointer group relative",
|
|
@@ -6887,14 +7156,14 @@ var EngagementRateBar = React23.forwardRef(
|
|
|
6887
7156
|
},
|
|
6888
7157
|
index
|
|
6889
7158
|
)) }),
|
|
6890
|
-
/* @__PURE__ */
|
|
7159
|
+
/* @__PURE__ */ jsx53(
|
|
6891
7160
|
"div",
|
|
6892
7161
|
{
|
|
6893
7162
|
className: "absolute -top-2 transform -translate-x-1/2 transition-all duration-500 z-10",
|
|
6894
7163
|
style: { left: `${adjustedTrianglePosition}%` },
|
|
6895
|
-
children: /* @__PURE__ */
|
|
6896
|
-
/* @__PURE__ */
|
|
6897
|
-
/* @__PURE__ */
|
|
7164
|
+
children: /* @__PURE__ */ jsxs33("div", { className: "relative", children: [
|
|
7165
|
+
/* @__PURE__ */ jsx53("div", { className: "w-0 h-0 border-l-[20px] rotate-180 border-r-[20px] border-b-[24px] border-l-transparent border-r-transparent border-b-background transition-transform duration-300" }),
|
|
7166
|
+
/* @__PURE__ */ jsx53("div", { className: "w-0 h-0 border-l-[12px] rotate-180 border-r-[12px] border-b-[16px] border-l-transparent border-r-transparent border-b-foreground transition-transform duration-300 absolute top-[4px] left-1/2 transform -translate-x-1/2" })
|
|
6898
7167
|
] })
|
|
6899
7168
|
}
|
|
6900
7169
|
)
|
|
@@ -6909,9 +7178,9 @@ EngagementRateBar.displayName = "EngagementRateBar";
|
|
|
6909
7178
|
|
|
6910
7179
|
// src/components/ui/progress.tsx
|
|
6911
7180
|
import * as ProgressPrimitive from "@radix-ui/react-progress";
|
|
6912
|
-
import { cva as
|
|
6913
|
-
import { jsx as
|
|
6914
|
-
var progressVariants =
|
|
7181
|
+
import { cva as cva12 } from "class-variance-authority";
|
|
7182
|
+
import { jsx as jsx54, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
7183
|
+
var progressVariants = cva12(
|
|
6915
7184
|
"relative w-full overflow-hidden rounded-full bg-surface-300",
|
|
6916
7185
|
{
|
|
6917
7186
|
variants: {
|
|
@@ -6926,7 +7195,7 @@ var progressVariants = cva10(
|
|
|
6926
7195
|
}
|
|
6927
7196
|
}
|
|
6928
7197
|
);
|
|
6929
|
-
var progressIndicatorVariants =
|
|
7198
|
+
var progressIndicatorVariants = cva12(
|
|
6930
7199
|
"h-full w-full flex-1 transition-all origin-left rtl:origin-right",
|
|
6931
7200
|
{
|
|
6932
7201
|
variants: {
|
|
@@ -6954,19 +7223,19 @@ function Progress({
|
|
|
6954
7223
|
}) {
|
|
6955
7224
|
const clampedValue = Math.max(0, Math.min(100, value ?? 0));
|
|
6956
7225
|
const displayValue = `${Math.round(clampedValue)}%`;
|
|
6957
|
-
return /* @__PURE__ */
|
|
6958
|
-
(label || showValue) && /* @__PURE__ */
|
|
6959
|
-
label && /* @__PURE__ */
|
|
6960
|
-
showValue && /* @__PURE__ */
|
|
7226
|
+
return /* @__PURE__ */ jsxs34("div", { className: "w-full space-y-2", children: [
|
|
7227
|
+
(label || showValue) && /* @__PURE__ */ jsxs34("div", { className: "flex items-center justify-between text-sm", children: [
|
|
7228
|
+
label && /* @__PURE__ */ jsx54("span", { className: "text-foreground", children: label }),
|
|
7229
|
+
showValue && /* @__PURE__ */ jsx54("span", { className: "text-foreground-light font-medium", children: displayValue })
|
|
6961
7230
|
] }),
|
|
6962
|
-
/* @__PURE__ */
|
|
7231
|
+
/* @__PURE__ */ jsx54(
|
|
6963
7232
|
ProgressPrimitive.Root,
|
|
6964
7233
|
{
|
|
6965
7234
|
"data-slot": "progress",
|
|
6966
7235
|
className: cn(progressVariants({ size }), className),
|
|
6967
7236
|
value,
|
|
6968
7237
|
...props,
|
|
6969
|
-
children: /* @__PURE__ */
|
|
7238
|
+
children: /* @__PURE__ */ jsx54(
|
|
6970
7239
|
ProgressPrimitive.Indicator,
|
|
6971
7240
|
{
|
|
6972
7241
|
"data-slot": "progress-indicator",
|
|
@@ -6982,12 +7251,12 @@ function Progress({
|
|
|
6982
7251
|
// src/components/ui/radio-group.tsx
|
|
6983
7252
|
import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
|
|
6984
7253
|
import { CircleIcon as CircleIcon4 } from "lucide-react";
|
|
6985
|
-
import { jsx as
|
|
7254
|
+
import { jsx as jsx55 } from "react/jsx-runtime";
|
|
6986
7255
|
function RadioGroup4({
|
|
6987
7256
|
className,
|
|
6988
7257
|
...props
|
|
6989
7258
|
}) {
|
|
6990
|
-
return /* @__PURE__ */
|
|
7259
|
+
return /* @__PURE__ */ jsx55(
|
|
6991
7260
|
RadioGroupPrimitive.Root,
|
|
6992
7261
|
{
|
|
6993
7262
|
"data-slot": "radio-group",
|
|
@@ -7000,7 +7269,7 @@ function RadioGroupItem({
|
|
|
7000
7269
|
className,
|
|
7001
7270
|
...props
|
|
7002
7271
|
}) {
|
|
7003
|
-
return /* @__PURE__ */
|
|
7272
|
+
return /* @__PURE__ */ jsx55(
|
|
7004
7273
|
RadioGroupPrimitive.Item,
|
|
7005
7274
|
{
|
|
7006
7275
|
"data-slot": "radio-group-item",
|
|
@@ -7009,12 +7278,12 @@ function RadioGroupItem({
|
|
|
7009
7278
|
className
|
|
7010
7279
|
),
|
|
7011
7280
|
...props,
|
|
7012
|
-
children: /* @__PURE__ */
|
|
7281
|
+
children: /* @__PURE__ */ jsx55(
|
|
7013
7282
|
RadioGroupPrimitive.Indicator,
|
|
7014
7283
|
{
|
|
7015
7284
|
"data-slot": "radio-group-indicator",
|
|
7016
7285
|
className: "relative flex items-center justify-center",
|
|
7017
|
-
children: /* @__PURE__ */
|
|
7286
|
+
children: /* @__PURE__ */ jsx55(CircleIcon4, { className: "fill-brand absolute top-1/2 start-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rtl:translate-x-1/2" })
|
|
7018
7287
|
}
|
|
7019
7288
|
)
|
|
7020
7289
|
}
|
|
@@ -7022,14 +7291,14 @@ function RadioGroupItem({
|
|
|
7022
7291
|
}
|
|
7023
7292
|
|
|
7024
7293
|
// src/components/ui/radio-card.tsx
|
|
7025
|
-
import * as
|
|
7294
|
+
import * as React26 from "react";
|
|
7026
7295
|
import * as RadioGroupPrimitive2 from "@radix-ui/react-radio-group";
|
|
7027
|
-
import { jsx as
|
|
7028
|
-
var RadioCards =
|
|
7296
|
+
import { jsx as jsx56 } from "react/jsx-runtime";
|
|
7297
|
+
var RadioCards = React26.forwardRef(({ className, columns = 1, dir = "rtl", children, ...props }, ref) => {
|
|
7029
7298
|
const gridCols = typeof columns === "number" ? `grid-cols-${columns}` : Object.entries(columns).map(
|
|
7030
7299
|
([key, val]) => key === "initial" ? `grid-cols-${val}` : `${key}:grid-cols-${val}`
|
|
7031
7300
|
).join(" ");
|
|
7032
|
-
return /* @__PURE__ */
|
|
7301
|
+
return /* @__PURE__ */ jsx56(
|
|
7033
7302
|
RadioGroupPrimitive2.Root,
|
|
7034
7303
|
{
|
|
7035
7304
|
ref,
|
|
@@ -7042,8 +7311,8 @@ var RadioCards = React24.forwardRef(({ className, columns = 1, dir = "rtl", chil
|
|
|
7042
7311
|
);
|
|
7043
7312
|
});
|
|
7044
7313
|
RadioCards.displayName = "RadioCards";
|
|
7045
|
-
var RadioCardItem =
|
|
7046
|
-
return /* @__PURE__ */
|
|
7314
|
+
var RadioCardItem = React26.forwardRef(({ className, children, ...props }, ref) => {
|
|
7315
|
+
return /* @__PURE__ */ jsx56(
|
|
7047
7316
|
RadioGroupPrimitive2.Item,
|
|
7048
7317
|
{
|
|
7049
7318
|
ref,
|
|
@@ -7062,7 +7331,7 @@ var RadioCardItem = React24.forwardRef(({ className, children, ...props }, ref)
|
|
|
7062
7331
|
);
|
|
7063
7332
|
});
|
|
7064
7333
|
RadioCardItem.displayName = "RadioCardItem";
|
|
7065
|
-
var RadioCardTitle =
|
|
7334
|
+
var RadioCardTitle = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx56(
|
|
7066
7335
|
"h4",
|
|
7067
7336
|
{
|
|
7068
7337
|
ref,
|
|
@@ -7071,7 +7340,7 @@ var RadioCardTitle = React24.forwardRef(({ className, ...props }, ref) => /* @__
|
|
|
7071
7340
|
}
|
|
7072
7341
|
));
|
|
7073
7342
|
RadioCardTitle.displayName = "RadioCardTitle";
|
|
7074
|
-
var RadioCardDescription =
|
|
7343
|
+
var RadioCardDescription = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx56(
|
|
7075
7344
|
"p",
|
|
7076
7345
|
{
|
|
7077
7346
|
ref,
|
|
@@ -7084,12 +7353,12 @@ RadioCardDescription.displayName = "RadioCardDescription";
|
|
|
7084
7353
|
// src/components/ui/resizable.tsx
|
|
7085
7354
|
import { GripVerticalIcon } from "lucide-react";
|
|
7086
7355
|
import * as ResizablePrimitive from "react-resizable-panels";
|
|
7087
|
-
import { jsx as
|
|
7356
|
+
import { jsx as jsx57 } from "react/jsx-runtime";
|
|
7088
7357
|
function ResizablePanelGroup({
|
|
7089
7358
|
className,
|
|
7090
7359
|
...props
|
|
7091
7360
|
}) {
|
|
7092
|
-
return /* @__PURE__ */
|
|
7361
|
+
return /* @__PURE__ */ jsx57(
|
|
7093
7362
|
ResizablePrimitive.PanelGroup,
|
|
7094
7363
|
{
|
|
7095
7364
|
"data-slot": "resizable-panel-group",
|
|
@@ -7104,14 +7373,14 @@ function ResizablePanelGroup({
|
|
|
7104
7373
|
function ResizablePanel({
|
|
7105
7374
|
...props
|
|
7106
7375
|
}) {
|
|
7107
|
-
return /* @__PURE__ */
|
|
7376
|
+
return /* @__PURE__ */ jsx57(ResizablePrimitive.Panel, { "data-slot": "resizable-panel", ...props });
|
|
7108
7377
|
}
|
|
7109
7378
|
function ResizableHandle({
|
|
7110
7379
|
withHandle,
|
|
7111
7380
|
className,
|
|
7112
7381
|
...props
|
|
7113
7382
|
}) {
|
|
7114
|
-
return /* @__PURE__ */
|
|
7383
|
+
return /* @__PURE__ */ jsx57(
|
|
7115
7384
|
ResizablePrimitive.PanelResizeHandle,
|
|
7116
7385
|
{
|
|
7117
7386
|
"data-slot": "resizable-handle",
|
|
@@ -7120,27 +7389,27 @@ function ResizableHandle({
|
|
|
7120
7389
|
className
|
|
7121
7390
|
),
|
|
7122
7391
|
...props,
|
|
7123
|
-
children: withHandle && /* @__PURE__ */
|
|
7392
|
+
children: withHandle && /* @__PURE__ */ jsx57("div", { className: "bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border", children: /* @__PURE__ */ jsx57(GripVerticalIcon, { className: "size-2.5" }) })
|
|
7124
7393
|
}
|
|
7125
7394
|
);
|
|
7126
7395
|
}
|
|
7127
7396
|
|
|
7128
7397
|
// src/components/ui/scroll-area.tsx
|
|
7129
7398
|
import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
|
|
7130
|
-
import { jsx as
|
|
7399
|
+
import { jsx as jsx58, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
7131
7400
|
function ScrollArea({
|
|
7132
7401
|
className,
|
|
7133
7402
|
children,
|
|
7134
7403
|
...props
|
|
7135
7404
|
}) {
|
|
7136
|
-
return /* @__PURE__ */
|
|
7405
|
+
return /* @__PURE__ */ jsxs35(
|
|
7137
7406
|
ScrollAreaPrimitive.Root,
|
|
7138
7407
|
{
|
|
7139
7408
|
"data-slot": "scroll-area",
|
|
7140
7409
|
className: cn("relative", className),
|
|
7141
7410
|
...props,
|
|
7142
7411
|
children: [
|
|
7143
|
-
/* @__PURE__ */
|
|
7412
|
+
/* @__PURE__ */ jsx58(
|
|
7144
7413
|
ScrollAreaPrimitive.Viewport,
|
|
7145
7414
|
{
|
|
7146
7415
|
"data-slot": "scroll-area-viewport",
|
|
@@ -7148,8 +7417,8 @@ function ScrollArea({
|
|
|
7148
7417
|
children
|
|
7149
7418
|
}
|
|
7150
7419
|
),
|
|
7151
|
-
/* @__PURE__ */
|
|
7152
|
-
/* @__PURE__ */
|
|
7420
|
+
/* @__PURE__ */ jsx58(ScrollBar, {}),
|
|
7421
|
+
/* @__PURE__ */ jsx58(ScrollAreaPrimitive.Corner, {})
|
|
7153
7422
|
]
|
|
7154
7423
|
}
|
|
7155
7424
|
);
|
|
@@ -7159,7 +7428,7 @@ function ScrollBar({
|
|
|
7159
7428
|
orientation = "vertical",
|
|
7160
7429
|
...props
|
|
7161
7430
|
}) {
|
|
7162
|
-
return /* @__PURE__ */
|
|
7431
|
+
return /* @__PURE__ */ jsx58(
|
|
7163
7432
|
ScrollAreaPrimitive.ScrollAreaScrollbar,
|
|
7164
7433
|
{
|
|
7165
7434
|
"data-slot": "scroll-area-scrollbar",
|
|
@@ -7171,7 +7440,7 @@ function ScrollBar({
|
|
|
7171
7440
|
className
|
|
7172
7441
|
),
|
|
7173
7442
|
...props,
|
|
7174
|
-
children: /* @__PURE__ */
|
|
7443
|
+
children: /* @__PURE__ */ jsx58(
|
|
7175
7444
|
ScrollAreaPrimitive.ScrollAreaThumb,
|
|
7176
7445
|
{
|
|
7177
7446
|
"data-slot": "scroll-area-thumb",
|
|
@@ -7183,14 +7452,14 @@ function ScrollBar({
|
|
|
7183
7452
|
}
|
|
7184
7453
|
|
|
7185
7454
|
// src/components/ui/select.tsx
|
|
7186
|
-
import * as
|
|
7455
|
+
import * as React27 from "react";
|
|
7187
7456
|
import * as SelectPrimitive from "@radix-ui/react-select";
|
|
7188
7457
|
import { Check as Check2, ChevronDown as ChevronDown2, ChevronUp as ChevronUp2 } from "lucide-react";
|
|
7189
|
-
import { cva as
|
|
7190
|
-
import { jsx as
|
|
7458
|
+
import { cva as cva13 } from "class-variance-authority";
|
|
7459
|
+
import { jsx as jsx59, jsxs as jsxs36 } from "react/jsx-runtime";
|
|
7191
7460
|
var Select = SelectPrimitive.Root;
|
|
7192
7461
|
var SelectGroup = SelectPrimitive.Group;
|
|
7193
|
-
var SelectTriggerVariants =
|
|
7462
|
+
var SelectTriggerVariants = cva13("", {
|
|
7194
7463
|
variants: {
|
|
7195
7464
|
size: {
|
|
7196
7465
|
...SIZE_VARIANTS
|
|
@@ -7200,16 +7469,16 @@ var SelectTriggerVariants = cva11("", {
|
|
|
7200
7469
|
size: SIZE_VARIANTS_DEFAULT
|
|
7201
7470
|
}
|
|
7202
7471
|
});
|
|
7203
|
-
var SelectValue =
|
|
7472
|
+
var SelectValue = React27.forwardRef(({ placeholder, ...props }, ref) => /* @__PURE__ */ jsx59(
|
|
7204
7473
|
SelectPrimitive.Value,
|
|
7205
7474
|
{
|
|
7206
|
-
placeholder: typeof placeholder === "string" ? /* @__PURE__ */
|
|
7475
|
+
placeholder: typeof placeholder === "string" ? /* @__PURE__ */ jsx59("span", { children: placeholder }) : placeholder,
|
|
7207
7476
|
...props,
|
|
7208
7477
|
ref
|
|
7209
7478
|
}
|
|
7210
7479
|
));
|
|
7211
7480
|
SelectValue.displayName = SelectPrimitive.Value.displayName;
|
|
7212
|
-
var SelectTrigger =
|
|
7481
|
+
var SelectTrigger = React27.forwardRef(({ className, children, size, ...props }, ref) => /* @__PURE__ */ jsxs36(
|
|
7213
7482
|
SelectPrimitive.Trigger,
|
|
7214
7483
|
{
|
|
7215
7484
|
ref,
|
|
@@ -7224,12 +7493,12 @@ var SelectTrigger = React25.forwardRef(({ className, children, size, ...props },
|
|
|
7224
7493
|
...props,
|
|
7225
7494
|
children: [
|
|
7226
7495
|
children,
|
|
7227
|
-
/* @__PURE__ */
|
|
7496
|
+
/* @__PURE__ */ jsx59(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx59(ChevronDown2, { className: "h-4 w-4 text-foreground-lighter flex-shrink-0", strokeWidth: 1.5 }) })
|
|
7228
7497
|
]
|
|
7229
7498
|
}
|
|
7230
7499
|
));
|
|
7231
7500
|
SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
|
|
7232
|
-
var SelectScrollUpButton =
|
|
7501
|
+
var SelectScrollUpButton = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx59(
|
|
7233
7502
|
SelectPrimitive.ScrollUpButton,
|
|
7234
7503
|
{
|
|
7235
7504
|
ref,
|
|
@@ -7238,11 +7507,11 @@ var SelectScrollUpButton = React25.forwardRef(({ className, ...props }, ref) =>
|
|
|
7238
7507
|
className
|
|
7239
7508
|
),
|
|
7240
7509
|
...props,
|
|
7241
|
-
children: /* @__PURE__ */
|
|
7510
|
+
children: /* @__PURE__ */ jsx59(ChevronUp2, { className: "h-4 w-4" })
|
|
7242
7511
|
}
|
|
7243
7512
|
));
|
|
7244
7513
|
SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
|
|
7245
|
-
var SelectScrollDownButton =
|
|
7514
|
+
var SelectScrollDownButton = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx59(
|
|
7246
7515
|
SelectPrimitive.ScrollDownButton,
|
|
7247
7516
|
{
|
|
7248
7517
|
ref,
|
|
@@ -7251,11 +7520,11 @@ var SelectScrollDownButton = React25.forwardRef(({ className, ...props }, ref) =
|
|
|
7251
7520
|
className
|
|
7252
7521
|
),
|
|
7253
7522
|
...props,
|
|
7254
|
-
children: /* @__PURE__ */
|
|
7523
|
+
children: /* @__PURE__ */ jsx59(ChevronDown2, { className: "h-4 w-4" })
|
|
7255
7524
|
}
|
|
7256
7525
|
));
|
|
7257
7526
|
SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
|
|
7258
|
-
var SelectContent =
|
|
7527
|
+
var SelectContent = React27.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx59(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs36(
|
|
7259
7528
|
SelectPrimitive.Content,
|
|
7260
7529
|
{
|
|
7261
7530
|
ref,
|
|
@@ -7267,8 +7536,8 @@ var SelectContent = React25.forwardRef(({ className, children, position = "poppe
|
|
|
7267
7536
|
position,
|
|
7268
7537
|
...props,
|
|
7269
7538
|
children: [
|
|
7270
|
-
/* @__PURE__ */
|
|
7271
|
-
/* @__PURE__ */
|
|
7539
|
+
/* @__PURE__ */ jsx59(SelectScrollUpButton, {}),
|
|
7540
|
+
/* @__PURE__ */ jsx59(
|
|
7272
7541
|
SelectPrimitive.Viewport,
|
|
7273
7542
|
{
|
|
7274
7543
|
className: cn(
|
|
@@ -7278,12 +7547,12 @@ var SelectContent = React25.forwardRef(({ className, children, position = "poppe
|
|
|
7278
7547
|
children
|
|
7279
7548
|
}
|
|
7280
7549
|
),
|
|
7281
|
-
/* @__PURE__ */
|
|
7550
|
+
/* @__PURE__ */ jsx59(SelectScrollDownButton, {})
|
|
7282
7551
|
]
|
|
7283
7552
|
}
|
|
7284
7553
|
) }));
|
|
7285
7554
|
SelectContent.displayName = SelectPrimitive.Content.displayName;
|
|
7286
|
-
var SelectLabel =
|
|
7555
|
+
var SelectLabel = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx59(
|
|
7287
7556
|
SelectPrimitive.Label,
|
|
7288
7557
|
{
|
|
7289
7558
|
ref,
|
|
@@ -7295,7 +7564,7 @@ var SelectLabel = React25.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
7295
7564
|
}
|
|
7296
7565
|
));
|
|
7297
7566
|
SelectLabel.displayName = SelectPrimitive.Label.displayName;
|
|
7298
|
-
var SelectItem =
|
|
7567
|
+
var SelectItem = React27.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs36(
|
|
7299
7568
|
SelectPrimitive.Item,
|
|
7300
7569
|
{
|
|
7301
7570
|
ref,
|
|
@@ -7306,13 +7575,13 @@ var SelectItem = React25.forwardRef(({ className, children, ...props }, ref) =>
|
|
|
7306
7575
|
),
|
|
7307
7576
|
...props,
|
|
7308
7577
|
children: [
|
|
7309
|
-
/* @__PURE__ */
|
|
7310
|
-
/* @__PURE__ */
|
|
7578
|
+
/* @__PURE__ */ jsx59("span", { className: "absolute start-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx59(SelectPrimitive.ItemIndicator, { className: "h-3.5 w-3.5 bg-foreground rounded-full flex justify-center items-center", children: /* @__PURE__ */ jsx59(Check2, { className: "h-2 w-2 text-background-overlay", strokeWidth: 6 }) }) }),
|
|
7579
|
+
/* @__PURE__ */ jsx59(SelectPrimitive.ItemText, { children: typeof children === "string" ? /* @__PURE__ */ jsx59("span", { children }) : children })
|
|
7311
7580
|
]
|
|
7312
7581
|
}
|
|
7313
7582
|
));
|
|
7314
7583
|
SelectItem.displayName = SelectPrimitive.Item.displayName;
|
|
7315
|
-
var SelectSeparator =
|
|
7584
|
+
var SelectSeparator = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx59(
|
|
7316
7585
|
SelectPrimitive.Separator,
|
|
7317
7586
|
{
|
|
7318
7587
|
ref,
|
|
@@ -7325,30 +7594,30 @@ SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
|
|
|
7325
7594
|
// src/components/ui/sheet.tsx
|
|
7326
7595
|
import * as SheetPrimitive from "@radix-ui/react-dialog";
|
|
7327
7596
|
import { XIcon } from "lucide-react";
|
|
7328
|
-
import { jsx as
|
|
7597
|
+
import { jsx as jsx60, jsxs as jsxs37 } from "react/jsx-runtime";
|
|
7329
7598
|
function Sheet({ ...props }) {
|
|
7330
|
-
return /* @__PURE__ */
|
|
7599
|
+
return /* @__PURE__ */ jsx60(SheetPrimitive.Root, { "data-slot": "sheet", ...props });
|
|
7331
7600
|
}
|
|
7332
7601
|
function SheetTrigger({
|
|
7333
7602
|
...props
|
|
7334
7603
|
}) {
|
|
7335
|
-
return /* @__PURE__ */
|
|
7604
|
+
return /* @__PURE__ */ jsx60(SheetPrimitive.Trigger, { "data-slot": "sheet-trigger", ...props });
|
|
7336
7605
|
}
|
|
7337
7606
|
function SheetClose({
|
|
7338
7607
|
...props
|
|
7339
7608
|
}) {
|
|
7340
|
-
return /* @__PURE__ */
|
|
7609
|
+
return /* @__PURE__ */ jsx60(SheetPrimitive.Close, { "data-slot": "sheet-close", ...props });
|
|
7341
7610
|
}
|
|
7342
7611
|
function SheetPortal({
|
|
7343
7612
|
...props
|
|
7344
7613
|
}) {
|
|
7345
|
-
return /* @__PURE__ */
|
|
7614
|
+
return /* @__PURE__ */ jsx60(SheetPrimitive.Portal, { "data-slot": "sheet-portal", ...props });
|
|
7346
7615
|
}
|
|
7347
7616
|
function SheetOverlay({
|
|
7348
7617
|
className,
|
|
7349
7618
|
...props
|
|
7350
7619
|
}) {
|
|
7351
|
-
return /* @__PURE__ */
|
|
7620
|
+
return /* @__PURE__ */ jsx60(
|
|
7352
7621
|
SheetPrimitive.Overlay,
|
|
7353
7622
|
{
|
|
7354
7623
|
"data-slot": "sheet-overlay",
|
|
@@ -7366,9 +7635,9 @@ function SheetContent({
|
|
|
7366
7635
|
side = "right",
|
|
7367
7636
|
...props
|
|
7368
7637
|
}) {
|
|
7369
|
-
return /* @__PURE__ */
|
|
7370
|
-
/* @__PURE__ */
|
|
7371
|
-
/* @__PURE__ */
|
|
7638
|
+
return /* @__PURE__ */ jsxs37(SheetPortal, { children: [
|
|
7639
|
+
/* @__PURE__ */ jsx60(SheetOverlay, {}),
|
|
7640
|
+
/* @__PURE__ */ jsxs37(
|
|
7372
7641
|
SheetPrimitive.Content,
|
|
7373
7642
|
{
|
|
7374
7643
|
"data-slot": "sheet-content",
|
|
@@ -7383,9 +7652,9 @@ function SheetContent({
|
|
|
7383
7652
|
...props,
|
|
7384
7653
|
children: [
|
|
7385
7654
|
children,
|
|
7386
|
-
/* @__PURE__ */
|
|
7387
|
-
/* @__PURE__ */
|
|
7388
|
-
/* @__PURE__ */
|
|
7655
|
+
/* @__PURE__ */ jsxs37(SheetPrimitive.Close, { className: "absolute top-4 end-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-brand-default focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-selection data-[state=open]:text-foreground-muted", children: [
|
|
7656
|
+
/* @__PURE__ */ jsx60(XIcon, { className: "size-4" }),
|
|
7657
|
+
/* @__PURE__ */ jsx60("span", { className: "sr-only", children: "Close" })
|
|
7389
7658
|
] })
|
|
7390
7659
|
]
|
|
7391
7660
|
}
|
|
@@ -7393,7 +7662,7 @@ function SheetContent({
|
|
|
7393
7662
|
] });
|
|
7394
7663
|
}
|
|
7395
7664
|
function SheetHeader({ className, ...props }) {
|
|
7396
|
-
return /* @__PURE__ */
|
|
7665
|
+
return /* @__PURE__ */ jsx60(
|
|
7397
7666
|
"div",
|
|
7398
7667
|
{
|
|
7399
7668
|
"data-slot": "sheet-header",
|
|
@@ -7403,7 +7672,7 @@ function SheetHeader({ className, ...props }) {
|
|
|
7403
7672
|
);
|
|
7404
7673
|
}
|
|
7405
7674
|
function SheetFooter({ className, ...props }) {
|
|
7406
|
-
return /* @__PURE__ */
|
|
7675
|
+
return /* @__PURE__ */ jsx60(
|
|
7407
7676
|
"div",
|
|
7408
7677
|
{
|
|
7409
7678
|
"data-slot": "sheet-footer",
|
|
@@ -7416,7 +7685,7 @@ function SheetTitle({
|
|
|
7416
7685
|
className,
|
|
7417
7686
|
...props
|
|
7418
7687
|
}) {
|
|
7419
|
-
return /* @__PURE__ */
|
|
7688
|
+
return /* @__PURE__ */ jsx60(
|
|
7420
7689
|
SheetPrimitive.Title,
|
|
7421
7690
|
{
|
|
7422
7691
|
"data-slot": "sheet-title",
|
|
@@ -7429,7 +7698,7 @@ function SheetDescription({
|
|
|
7429
7698
|
className,
|
|
7430
7699
|
...props
|
|
7431
7700
|
}) {
|
|
7432
|
-
return /* @__PURE__ */
|
|
7701
|
+
return /* @__PURE__ */ jsx60(
|
|
7433
7702
|
SheetPrimitive.Description,
|
|
7434
7703
|
{
|
|
7435
7704
|
"data-slot": "sheet-description",
|
|
@@ -7440,17 +7709,17 @@ function SheetDescription({
|
|
|
7440
7709
|
}
|
|
7441
7710
|
|
|
7442
7711
|
// src/components/ui/sidebar.tsx
|
|
7443
|
-
import * as
|
|
7712
|
+
import * as React29 from "react";
|
|
7444
7713
|
import { Slot as Slot5 } from "@radix-ui/react-slot";
|
|
7445
|
-
import { cva as
|
|
7714
|
+
import { cva as cva14 } from "class-variance-authority";
|
|
7446
7715
|
import { PanelLeftIcon } from "lucide-react";
|
|
7447
7716
|
|
|
7448
7717
|
// src/hooks/use-mobile.ts
|
|
7449
|
-
import * as
|
|
7718
|
+
import * as React28 from "react";
|
|
7450
7719
|
var MOBILE_BREAKPOINT = 768;
|
|
7451
7720
|
function useIsMobile() {
|
|
7452
|
-
const [isMobile, setIsMobile] =
|
|
7453
|
-
|
|
7721
|
+
const [isMobile, setIsMobile] = React28.useState(void 0);
|
|
7722
|
+
React28.useEffect(() => {
|
|
7454
7723
|
const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
|
|
7455
7724
|
const onChange = () => {
|
|
7456
7725
|
setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
|
|
@@ -7463,16 +7732,16 @@ function useIsMobile() {
|
|
|
7463
7732
|
}
|
|
7464
7733
|
|
|
7465
7734
|
// src/components/ui/sidebar.tsx
|
|
7466
|
-
import { jsx as
|
|
7735
|
+
import { jsx as jsx61, jsxs as jsxs38 } from "react/jsx-runtime";
|
|
7467
7736
|
var SIDEBAR_COOKIE_NAME = "sidebar_state";
|
|
7468
7737
|
var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
|
|
7469
7738
|
var SIDEBAR_WIDTH = "16rem";
|
|
7470
7739
|
var SIDEBAR_WIDTH_MOBILE = "18rem";
|
|
7471
7740
|
var SIDEBAR_WIDTH_ICON = "3rem";
|
|
7472
7741
|
var SIDEBAR_KEYBOARD_SHORTCUT = "b";
|
|
7473
|
-
var SidebarContext =
|
|
7742
|
+
var SidebarContext = React29.createContext(null);
|
|
7474
7743
|
function useSidebar() {
|
|
7475
|
-
const context =
|
|
7744
|
+
const context = React29.useContext(SidebarContext);
|
|
7476
7745
|
if (!context) {
|
|
7477
7746
|
throw new Error("useSidebar must be used within a SidebarProvider.");
|
|
7478
7747
|
}
|
|
@@ -7488,10 +7757,10 @@ function SidebarProvider({
|
|
|
7488
7757
|
...props
|
|
7489
7758
|
}) {
|
|
7490
7759
|
const isMobile = useIsMobile();
|
|
7491
|
-
const [openMobile, setOpenMobile] =
|
|
7492
|
-
const [_open, _setOpen] =
|
|
7760
|
+
const [openMobile, setOpenMobile] = React29.useState(false);
|
|
7761
|
+
const [_open, _setOpen] = React29.useState(defaultOpen);
|
|
7493
7762
|
const open = openProp ?? _open;
|
|
7494
|
-
const setOpen =
|
|
7763
|
+
const setOpen = React29.useCallback(
|
|
7495
7764
|
(value) => {
|
|
7496
7765
|
const openState = typeof value === "function" ? value(open) : value;
|
|
7497
7766
|
if (setOpenProp) {
|
|
@@ -7503,10 +7772,10 @@ function SidebarProvider({
|
|
|
7503
7772
|
},
|
|
7504
7773
|
[setOpenProp, open]
|
|
7505
7774
|
);
|
|
7506
|
-
const toggleSidebar =
|
|
7775
|
+
const toggleSidebar = React29.useCallback(() => {
|
|
7507
7776
|
return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
|
|
7508
7777
|
}, [isMobile, setOpen, setOpenMobile]);
|
|
7509
|
-
|
|
7778
|
+
React29.useEffect(() => {
|
|
7510
7779
|
const handleKeyDown = (event) => {
|
|
7511
7780
|
if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
|
|
7512
7781
|
event.preventDefault();
|
|
@@ -7517,7 +7786,7 @@ function SidebarProvider({
|
|
|
7517
7786
|
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
7518
7787
|
}, [toggleSidebar]);
|
|
7519
7788
|
const state = open ? "expanded" : "collapsed";
|
|
7520
|
-
const contextValue =
|
|
7789
|
+
const contextValue = React29.useMemo(
|
|
7521
7790
|
() => ({
|
|
7522
7791
|
state,
|
|
7523
7792
|
open,
|
|
@@ -7529,7 +7798,7 @@ function SidebarProvider({
|
|
|
7529
7798
|
}),
|
|
7530
7799
|
[state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]
|
|
7531
7800
|
);
|
|
7532
|
-
return /* @__PURE__ */
|
|
7801
|
+
return /* @__PURE__ */ jsx61(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx61(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsx61(
|
|
7533
7802
|
"div",
|
|
7534
7803
|
{
|
|
7535
7804
|
"data-slot": "sidebar-wrapper",
|
|
@@ -7557,7 +7826,7 @@ function Sidebar({
|
|
|
7557
7826
|
}) {
|
|
7558
7827
|
const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
|
|
7559
7828
|
if (collapsible === "none") {
|
|
7560
|
-
return /* @__PURE__ */
|
|
7829
|
+
return /* @__PURE__ */ jsx61(
|
|
7561
7830
|
"div",
|
|
7562
7831
|
{
|
|
7563
7832
|
"data-slot": "sidebar",
|
|
@@ -7571,7 +7840,7 @@ function Sidebar({
|
|
|
7571
7840
|
);
|
|
7572
7841
|
}
|
|
7573
7842
|
if (isMobile) {
|
|
7574
|
-
return /* @__PURE__ */
|
|
7843
|
+
return /* @__PURE__ */ jsx61(Sheet, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ jsxs38(
|
|
7575
7844
|
SheetContent,
|
|
7576
7845
|
{
|
|
7577
7846
|
"data-sidebar": "sidebar",
|
|
@@ -7583,16 +7852,16 @@ function Sidebar({
|
|
|
7583
7852
|
},
|
|
7584
7853
|
side,
|
|
7585
7854
|
children: [
|
|
7586
|
-
/* @__PURE__ */
|
|
7587
|
-
/* @__PURE__ */
|
|
7588
|
-
/* @__PURE__ */
|
|
7855
|
+
/* @__PURE__ */ jsxs38(SheetHeader, { className: "sr-only", children: [
|
|
7856
|
+
/* @__PURE__ */ jsx61(SheetTitle, { children: "Sidebar" }),
|
|
7857
|
+
/* @__PURE__ */ jsx61(SheetDescription, { children: "Displays the mobile sidebar." })
|
|
7589
7858
|
] }),
|
|
7590
|
-
/* @__PURE__ */
|
|
7859
|
+
/* @__PURE__ */ jsx61("div", { className: "flex h-full w-full flex-col", children })
|
|
7591
7860
|
]
|
|
7592
7861
|
}
|
|
7593
7862
|
) });
|
|
7594
7863
|
}
|
|
7595
|
-
return /* @__PURE__ */
|
|
7864
|
+
return /* @__PURE__ */ jsxs38(
|
|
7596
7865
|
"div",
|
|
7597
7866
|
{
|
|
7598
7867
|
className: "group peer text-sidebar-foreground hidden md:block",
|
|
@@ -7602,7 +7871,7 @@ function Sidebar({
|
|
|
7602
7871
|
"data-side": side,
|
|
7603
7872
|
"data-slot": "sidebar",
|
|
7604
7873
|
children: [
|
|
7605
|
-
/* @__PURE__ */
|
|
7874
|
+
/* @__PURE__ */ jsx61(
|
|
7606
7875
|
"div",
|
|
7607
7876
|
{
|
|
7608
7877
|
"data-slot": "sidebar-gap",
|
|
@@ -7614,7 +7883,7 @@ function Sidebar({
|
|
|
7614
7883
|
)
|
|
7615
7884
|
}
|
|
7616
7885
|
),
|
|
7617
|
-
/* @__PURE__ */
|
|
7886
|
+
/* @__PURE__ */ jsx61(
|
|
7618
7887
|
"div",
|
|
7619
7888
|
{
|
|
7620
7889
|
"data-slot": "sidebar-container",
|
|
@@ -7626,7 +7895,7 @@ function Sidebar({
|
|
|
7626
7895
|
className
|
|
7627
7896
|
),
|
|
7628
7897
|
...props,
|
|
7629
|
-
children: /* @__PURE__ */
|
|
7898
|
+
children: /* @__PURE__ */ jsx61(
|
|
7630
7899
|
"div",
|
|
7631
7900
|
{
|
|
7632
7901
|
"data-sidebar": "sidebar",
|
|
@@ -7647,7 +7916,7 @@ function SidebarTrigger({
|
|
|
7647
7916
|
...props
|
|
7648
7917
|
}) {
|
|
7649
7918
|
const { toggleSidebar } = useSidebar();
|
|
7650
|
-
return /* @__PURE__ */
|
|
7919
|
+
return /* @__PURE__ */ jsxs38(
|
|
7651
7920
|
Button,
|
|
7652
7921
|
{
|
|
7653
7922
|
"data-sidebar": "trigger",
|
|
@@ -7661,15 +7930,15 @@ function SidebarTrigger({
|
|
|
7661
7930
|
},
|
|
7662
7931
|
...props,
|
|
7663
7932
|
children: [
|
|
7664
|
-
/* @__PURE__ */
|
|
7665
|
-
/* @__PURE__ */
|
|
7933
|
+
/* @__PURE__ */ jsx61(PanelLeftIcon, {}),
|
|
7934
|
+
/* @__PURE__ */ jsx61("span", { className: "sr-only", children: "Toggle Sidebar" })
|
|
7666
7935
|
]
|
|
7667
7936
|
}
|
|
7668
7937
|
);
|
|
7669
7938
|
}
|
|
7670
7939
|
function SidebarRail({ className, ...props }) {
|
|
7671
7940
|
const { toggleSidebar } = useSidebar();
|
|
7672
|
-
return /* @__PURE__ */
|
|
7941
|
+
return /* @__PURE__ */ jsx61(
|
|
7673
7942
|
"button",
|
|
7674
7943
|
{
|
|
7675
7944
|
"data-sidebar": "rail",
|
|
@@ -7692,7 +7961,7 @@ function SidebarRail({ className, ...props }) {
|
|
|
7692
7961
|
);
|
|
7693
7962
|
}
|
|
7694
7963
|
function SidebarInset({ className, ...props }) {
|
|
7695
|
-
return /* @__PURE__ */
|
|
7964
|
+
return /* @__PURE__ */ jsx61(
|
|
7696
7965
|
"main",
|
|
7697
7966
|
{
|
|
7698
7967
|
"data-slot": "sidebar-inset",
|
|
@@ -7709,7 +7978,7 @@ function SidebarInput({
|
|
|
7709
7978
|
className,
|
|
7710
7979
|
...props
|
|
7711
7980
|
}) {
|
|
7712
|
-
return /* @__PURE__ */
|
|
7981
|
+
return /* @__PURE__ */ jsx61(
|
|
7713
7982
|
Input,
|
|
7714
7983
|
{
|
|
7715
7984
|
"data-slot": "sidebar-input",
|
|
@@ -7720,7 +7989,7 @@ function SidebarInput({
|
|
|
7720
7989
|
);
|
|
7721
7990
|
}
|
|
7722
7991
|
function SidebarHeader({ className, ...props }) {
|
|
7723
|
-
return /* @__PURE__ */
|
|
7992
|
+
return /* @__PURE__ */ jsx61(
|
|
7724
7993
|
"div",
|
|
7725
7994
|
{
|
|
7726
7995
|
"data-slot": "sidebar-header",
|
|
@@ -7731,7 +8000,7 @@ function SidebarHeader({ className, ...props }) {
|
|
|
7731
8000
|
);
|
|
7732
8001
|
}
|
|
7733
8002
|
function SidebarFooter({ className, ...props }) {
|
|
7734
|
-
return /* @__PURE__ */
|
|
8003
|
+
return /* @__PURE__ */ jsx61(
|
|
7735
8004
|
"div",
|
|
7736
8005
|
{
|
|
7737
8006
|
"data-slot": "sidebar-footer",
|
|
@@ -7745,7 +8014,7 @@ function SidebarSeparator({
|
|
|
7745
8014
|
className,
|
|
7746
8015
|
...props
|
|
7747
8016
|
}) {
|
|
7748
|
-
return /* @__PURE__ */
|
|
8017
|
+
return /* @__PURE__ */ jsx61(
|
|
7749
8018
|
Separator,
|
|
7750
8019
|
{
|
|
7751
8020
|
"data-slot": "sidebar-separator",
|
|
@@ -7756,7 +8025,7 @@ function SidebarSeparator({
|
|
|
7756
8025
|
);
|
|
7757
8026
|
}
|
|
7758
8027
|
function SidebarContent({ className, ...props }) {
|
|
7759
|
-
return /* @__PURE__ */
|
|
8028
|
+
return /* @__PURE__ */ jsx61(
|
|
7760
8029
|
"div",
|
|
7761
8030
|
{
|
|
7762
8031
|
"data-slot": "sidebar-content",
|
|
@@ -7770,7 +8039,7 @@ function SidebarContent({ className, ...props }) {
|
|
|
7770
8039
|
);
|
|
7771
8040
|
}
|
|
7772
8041
|
function SidebarGroup({ className, ...props }) {
|
|
7773
|
-
return /* @__PURE__ */
|
|
8042
|
+
return /* @__PURE__ */ jsx61(
|
|
7774
8043
|
"div",
|
|
7775
8044
|
{
|
|
7776
8045
|
"data-slot": "sidebar-group",
|
|
@@ -7786,7 +8055,7 @@ function SidebarGroupLabel({
|
|
|
7786
8055
|
...props
|
|
7787
8056
|
}) {
|
|
7788
8057
|
const Comp = asChild ? Slot5 : "div";
|
|
7789
|
-
return /* @__PURE__ */
|
|
8058
|
+
return /* @__PURE__ */ jsx61(
|
|
7790
8059
|
Comp,
|
|
7791
8060
|
{
|
|
7792
8061
|
"data-slot": "sidebar-group-label",
|
|
@@ -7806,7 +8075,7 @@ function SidebarGroupAction({
|
|
|
7806
8075
|
...props
|
|
7807
8076
|
}) {
|
|
7808
8077
|
const Comp = asChild ? Slot5 : "button";
|
|
7809
|
-
return /* @__PURE__ */
|
|
8078
|
+
return /* @__PURE__ */ jsx61(
|
|
7810
8079
|
Comp,
|
|
7811
8080
|
{
|
|
7812
8081
|
"data-slot": "sidebar-group-action",
|
|
@@ -7826,7 +8095,7 @@ function SidebarGroupContent({
|
|
|
7826
8095
|
className,
|
|
7827
8096
|
...props
|
|
7828
8097
|
}) {
|
|
7829
|
-
return /* @__PURE__ */
|
|
8098
|
+
return /* @__PURE__ */ jsx61(
|
|
7830
8099
|
"div",
|
|
7831
8100
|
{
|
|
7832
8101
|
"data-slot": "sidebar-group-content",
|
|
@@ -7837,7 +8106,7 @@ function SidebarGroupContent({
|
|
|
7837
8106
|
);
|
|
7838
8107
|
}
|
|
7839
8108
|
function SidebarMenu({ className, ...props }) {
|
|
7840
|
-
return /* @__PURE__ */
|
|
8109
|
+
return /* @__PURE__ */ jsx61(
|
|
7841
8110
|
"ul",
|
|
7842
8111
|
{
|
|
7843
8112
|
"data-slot": "sidebar-menu",
|
|
@@ -7848,7 +8117,7 @@ function SidebarMenu({ className, ...props }) {
|
|
|
7848
8117
|
);
|
|
7849
8118
|
}
|
|
7850
8119
|
function SidebarMenuItem({ className, ...props }) {
|
|
7851
|
-
return /* @__PURE__ */
|
|
8120
|
+
return /* @__PURE__ */ jsx61(
|
|
7852
8121
|
"li",
|
|
7853
8122
|
{
|
|
7854
8123
|
"data-slot": "sidebar-menu-item",
|
|
@@ -7858,7 +8127,7 @@ function SidebarMenuItem({ className, ...props }) {
|
|
|
7858
8127
|
}
|
|
7859
8128
|
);
|
|
7860
8129
|
}
|
|
7861
|
-
var sidebarMenuButtonVariants =
|
|
8130
|
+
var sidebarMenuButtonVariants = cva14(
|
|
7862
8131
|
"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-start text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pe-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",
|
|
7863
8132
|
{
|
|
7864
8133
|
variants: {
|
|
@@ -7889,7 +8158,7 @@ function SidebarMenuButton({
|
|
|
7889
8158
|
}) {
|
|
7890
8159
|
const Comp = asChild ? Slot5 : "button";
|
|
7891
8160
|
const { isMobile, state } = useSidebar();
|
|
7892
|
-
const button = /* @__PURE__ */
|
|
8161
|
+
const button = /* @__PURE__ */ jsx61(
|
|
7893
8162
|
Comp,
|
|
7894
8163
|
{
|
|
7895
8164
|
"data-slot": "sidebar-menu-button",
|
|
@@ -7908,9 +8177,9 @@ function SidebarMenuButton({
|
|
|
7908
8177
|
children: tooltip
|
|
7909
8178
|
};
|
|
7910
8179
|
}
|
|
7911
|
-
return /* @__PURE__ */
|
|
7912
|
-
/* @__PURE__ */
|
|
7913
|
-
/* @__PURE__ */
|
|
8180
|
+
return /* @__PURE__ */ jsxs38(Tooltip, { children: [
|
|
8181
|
+
/* @__PURE__ */ jsx61(TooltipTrigger, { asChild: true, children: button }),
|
|
8182
|
+
/* @__PURE__ */ jsx61(
|
|
7914
8183
|
TooltipContent,
|
|
7915
8184
|
{
|
|
7916
8185
|
side: "right",
|
|
@@ -7928,7 +8197,7 @@ function SidebarMenuAction({
|
|
|
7928
8197
|
...props
|
|
7929
8198
|
}) {
|
|
7930
8199
|
const Comp = asChild ? Slot5 : "button";
|
|
7931
|
-
return /* @__PURE__ */
|
|
8200
|
+
return /* @__PURE__ */ jsx61(
|
|
7932
8201
|
Comp,
|
|
7933
8202
|
{
|
|
7934
8203
|
"data-slot": "sidebar-menu-action",
|
|
@@ -7952,7 +8221,7 @@ function SidebarMenuBadge({
|
|
|
7952
8221
|
className,
|
|
7953
8222
|
...props
|
|
7954
8223
|
}) {
|
|
7955
|
-
return /* @__PURE__ */
|
|
8224
|
+
return /* @__PURE__ */ jsx61(
|
|
7956
8225
|
"div",
|
|
7957
8226
|
{
|
|
7958
8227
|
"data-slot": "sidebar-menu-badge",
|
|
@@ -7975,10 +8244,10 @@ function SidebarMenuSkeleton({
|
|
|
7975
8244
|
showIcon = false,
|
|
7976
8245
|
...props
|
|
7977
8246
|
}) {
|
|
7978
|
-
const width =
|
|
8247
|
+
const width = React29.useMemo(() => {
|
|
7979
8248
|
return `${Math.floor(Math.random() * 40) + 50}%`;
|
|
7980
8249
|
}, []);
|
|
7981
|
-
return /* @__PURE__ */
|
|
8250
|
+
return /* @__PURE__ */ jsxs38(
|
|
7982
8251
|
"div",
|
|
7983
8252
|
{
|
|
7984
8253
|
"data-slot": "sidebar-menu-skeleton",
|
|
@@ -7986,14 +8255,14 @@ function SidebarMenuSkeleton({
|
|
|
7986
8255
|
className: cn("flex h-8 items-center gap-2 rounded-md px-2", className),
|
|
7987
8256
|
...props,
|
|
7988
8257
|
children: [
|
|
7989
|
-
showIcon && /* @__PURE__ */
|
|
8258
|
+
showIcon && /* @__PURE__ */ jsx61(
|
|
7990
8259
|
Skeleton,
|
|
7991
8260
|
{
|
|
7992
8261
|
className: "size-4 rounded-md",
|
|
7993
8262
|
"data-sidebar": "menu-skeleton-icon"
|
|
7994
8263
|
}
|
|
7995
8264
|
),
|
|
7996
|
-
/* @__PURE__ */
|
|
8265
|
+
/* @__PURE__ */ jsx61(
|
|
7997
8266
|
Skeleton,
|
|
7998
8267
|
{
|
|
7999
8268
|
className: "h-4 max-w-(--skeleton-width) flex-1",
|
|
@@ -8008,7 +8277,7 @@ function SidebarMenuSkeleton({
|
|
|
8008
8277
|
);
|
|
8009
8278
|
}
|
|
8010
8279
|
function SidebarMenuSub({ className, ...props }) {
|
|
8011
|
-
return /* @__PURE__ */
|
|
8280
|
+
return /* @__PURE__ */ jsx61(
|
|
8012
8281
|
"ul",
|
|
8013
8282
|
{
|
|
8014
8283
|
"data-slot": "sidebar-menu-sub",
|
|
@@ -8026,7 +8295,7 @@ function SidebarMenuSubItem({
|
|
|
8026
8295
|
className,
|
|
8027
8296
|
...props
|
|
8028
8297
|
}) {
|
|
8029
|
-
return /* @__PURE__ */
|
|
8298
|
+
return /* @__PURE__ */ jsx61(
|
|
8030
8299
|
"li",
|
|
8031
8300
|
{
|
|
8032
8301
|
"data-slot": "sidebar-menu-sub-item",
|
|
@@ -8044,7 +8313,7 @@ function SidebarMenuSubButton({
|
|
|
8044
8313
|
...props
|
|
8045
8314
|
}) {
|
|
8046
8315
|
const Comp = asChild ? Slot5 : "a";
|
|
8047
|
-
return /* @__PURE__ */
|
|
8316
|
+
return /* @__PURE__ */ jsx61(
|
|
8048
8317
|
Comp,
|
|
8049
8318
|
{
|
|
8050
8319
|
"data-slot": "sidebar-menu-sub-button",
|
|
@@ -8065,12 +8334,12 @@ function SidebarMenuSubButton({
|
|
|
8065
8334
|
}
|
|
8066
8335
|
|
|
8067
8336
|
// src/components/ui/slider.tsx
|
|
8068
|
-
import * as
|
|
8337
|
+
import * as React30 from "react";
|
|
8069
8338
|
import * as SliderPrimitive from "@radix-ui/react-slider";
|
|
8070
|
-
import { jsx as
|
|
8339
|
+
import { jsx as jsx62, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
8071
8340
|
function useDocumentDirection2() {
|
|
8072
|
-
const [direction, setDirection] =
|
|
8073
|
-
|
|
8341
|
+
const [direction, setDirection] = React30.useState("rtl");
|
|
8342
|
+
React30.useEffect(() => {
|
|
8074
8343
|
const getDirection = () => {
|
|
8075
8344
|
if (typeof document === "undefined") return "rtl";
|
|
8076
8345
|
const htmlDir = document.documentElement.getAttribute("dir");
|
|
@@ -8101,13 +8370,13 @@ function Slider({
|
|
|
8101
8370
|
dir,
|
|
8102
8371
|
...props
|
|
8103
8372
|
}) {
|
|
8104
|
-
const _values =
|
|
8373
|
+
const _values = React30.useMemo(
|
|
8105
8374
|
() => Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min, max],
|
|
8106
8375
|
[value, defaultValue, min, max]
|
|
8107
8376
|
);
|
|
8108
8377
|
const documentDir = useDocumentDirection2();
|
|
8109
8378
|
const resolvedDir = dir ?? documentDir;
|
|
8110
|
-
return /* @__PURE__ */
|
|
8379
|
+
return /* @__PURE__ */ jsxs39(
|
|
8111
8380
|
SliderPrimitive.Root,
|
|
8112
8381
|
{
|
|
8113
8382
|
"data-slot": "slider",
|
|
@@ -8122,14 +8391,14 @@ function Slider({
|
|
|
8122
8391
|
),
|
|
8123
8392
|
...props,
|
|
8124
8393
|
children: [
|
|
8125
|
-
/* @__PURE__ */
|
|
8394
|
+
/* @__PURE__ */ jsx62(
|
|
8126
8395
|
SliderPrimitive.Track,
|
|
8127
8396
|
{
|
|
8128
8397
|
"data-slot": "slider-track",
|
|
8129
8398
|
className: cn(
|
|
8130
8399
|
"bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5"
|
|
8131
8400
|
),
|
|
8132
|
-
children: /* @__PURE__ */
|
|
8401
|
+
children: /* @__PURE__ */ jsx62(
|
|
8133
8402
|
SliderPrimitive.Range,
|
|
8134
8403
|
{
|
|
8135
8404
|
"data-slot": "slider-range",
|
|
@@ -8140,7 +8409,7 @@ function Slider({
|
|
|
8140
8409
|
)
|
|
8141
8410
|
}
|
|
8142
8411
|
),
|
|
8143
|
-
Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */
|
|
8412
|
+
Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */ jsx62(
|
|
8144
8413
|
SliderPrimitive.Thumb,
|
|
8145
8414
|
{
|
|
8146
8415
|
"data-slot": "slider-thumb",
|
|
@@ -8164,12 +8433,12 @@ import {
|
|
|
8164
8433
|
import { useTheme } from "next-themes";
|
|
8165
8434
|
import { Toaster as Sonner } from "sonner";
|
|
8166
8435
|
import { toast } from "sonner";
|
|
8167
|
-
import { jsx as
|
|
8436
|
+
import { jsx as jsx63 } from "react/jsx-runtime";
|
|
8168
8437
|
var SONNER_DEFAULT_DURATION = 4e3;
|
|
8169
|
-
var StatusIconSuccess = () => /* @__PURE__ */
|
|
8170
|
-
var StatusIconInfo = () => /* @__PURE__ */
|
|
8171
|
-
var StatusIconWarning = () => /* @__PURE__ */
|
|
8172
|
-
var StatusIconError = () => /* @__PURE__ */
|
|
8438
|
+
var StatusIconSuccess = () => /* @__PURE__ */ jsx63("div", { className: "flex size-4 shrink-0 items-center justify-center rounded bg-brand-600 dark:bg-brand-500 p-0.5", children: /* @__PURE__ */ jsx63(CheckIcon5, { className: "size-3 text-white", strokeWidth: 3 }) });
|
|
8439
|
+
var StatusIconInfo = () => /* @__PURE__ */ jsx63("div", { className: "flex size-4 shrink-0 items-center justify-center rounded bg-foreground-lighter p-0.5", children: /* @__PURE__ */ jsx63(InfoIcon, { className: "size-3 text-background-surface-200" }) });
|
|
8440
|
+
var StatusIconWarning = () => /* @__PURE__ */ jsx63("div", { className: "flex size-4 shrink-0 items-center justify-center rounded bg-warning-600 dark:bg-warning-500 p-0.5", children: /* @__PURE__ */ jsx63(TriangleAlertIcon, { className: "size-3 text-white" }) });
|
|
8441
|
+
var StatusIconError = () => /* @__PURE__ */ jsx63("div", { className: "flex size-4 shrink-0 items-center justify-center rounded bg-destructive-600 dark:bg-destructive-500 p-0.5", children: /* @__PURE__ */ jsx63(XCircleIcon, { className: "size-3 text-white" }) });
|
|
8173
8442
|
var Toaster = ({
|
|
8174
8443
|
dir = "rtl",
|
|
8175
8444
|
position = "bottom-left",
|
|
@@ -8178,15 +8447,15 @@ var Toaster = ({
|
|
|
8178
8447
|
...props
|
|
8179
8448
|
}) => {
|
|
8180
8449
|
const { theme = "system" } = useTheme();
|
|
8181
|
-
return /* @__PURE__ */
|
|
8450
|
+
return /* @__PURE__ */ jsx63(
|
|
8182
8451
|
Sonner,
|
|
8183
8452
|
{
|
|
8184
8453
|
icons: {
|
|
8185
|
-
success: /* @__PURE__ */
|
|
8186
|
-
info: /* @__PURE__ */
|
|
8187
|
-
warning: /* @__PURE__ */
|
|
8188
|
-
error: /* @__PURE__ */
|
|
8189
|
-
loading: /* @__PURE__ */
|
|
8454
|
+
success: /* @__PURE__ */ jsx63(StatusIconSuccess, {}),
|
|
8455
|
+
info: /* @__PURE__ */ jsx63(StatusIconInfo, {}),
|
|
8456
|
+
warning: /* @__PURE__ */ jsx63(StatusIconWarning, {}),
|
|
8457
|
+
error: /* @__PURE__ */ jsx63(StatusIconError, {}),
|
|
8458
|
+
loading: /* @__PURE__ */ jsx63(Loader2Icon2, { className: "size-4 animate-spin" })
|
|
8190
8459
|
},
|
|
8191
8460
|
theme,
|
|
8192
8461
|
className: "toaster group pointer-events-auto",
|
|
@@ -8236,11 +8505,11 @@ var Toaster = ({
|
|
|
8236
8505
|
};
|
|
8237
8506
|
|
|
8238
8507
|
// src/components/ui/switch.tsx
|
|
8239
|
-
import * as
|
|
8508
|
+
import * as React31 from "react";
|
|
8240
8509
|
import * as SwitchPrimitive from "@radix-ui/react-switch";
|
|
8241
|
-
import { cva as
|
|
8242
|
-
import { jsx as
|
|
8243
|
-
var switchRootVariants =
|
|
8510
|
+
import { cva as cva15 } from "class-variance-authority";
|
|
8511
|
+
import { jsx as jsx64 } from "react/jsx-runtime";
|
|
8512
|
+
var switchRootVariants = cva15(
|
|
8244
8513
|
"peer inline-flex shrink-0 cursor-pointer items-center rounded-full border transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-brand data-[state=checked]:hover:bg-brand-600/90 data-[state=unchecked]:bg-control data-[state=unchecked]:hover:bg-border",
|
|
8245
8514
|
{
|
|
8246
8515
|
variants: {
|
|
@@ -8255,7 +8524,7 @@ var switchRootVariants = cva13(
|
|
|
8255
8524
|
}
|
|
8256
8525
|
}
|
|
8257
8526
|
);
|
|
8258
|
-
var switchThumbVariants =
|
|
8527
|
+
var switchThumbVariants = cva15(
|
|
8259
8528
|
"pointer-events-none block rounded-full bg-foreground-lighter data-[state=checked]:bg-white shadow-lg ring-0 transition-transform",
|
|
8260
8529
|
{
|
|
8261
8530
|
variants: {
|
|
@@ -8270,14 +8539,14 @@ var switchThumbVariants = cva13(
|
|
|
8270
8539
|
}
|
|
8271
8540
|
}
|
|
8272
8541
|
);
|
|
8273
|
-
var Switch =
|
|
8542
|
+
var Switch = React31.forwardRef(({ className, size, ...props }, ref) => /* @__PURE__ */ jsx64(
|
|
8274
8543
|
SwitchPrimitive.Root,
|
|
8275
8544
|
{
|
|
8276
8545
|
"data-slot": "switch",
|
|
8277
8546
|
className: cn(switchRootVariants({ size }), className),
|
|
8278
8547
|
...props,
|
|
8279
8548
|
ref,
|
|
8280
|
-
children: /* @__PURE__ */
|
|
8549
|
+
children: /* @__PURE__ */ jsx64(
|
|
8281
8550
|
SwitchPrimitive.Thumb,
|
|
8282
8551
|
{
|
|
8283
8552
|
"data-slot": "switch-thumb",
|
|
@@ -8289,14 +8558,14 @@ var Switch = React29.forwardRef(({ className, size, ...props }, ref) => /* @__PU
|
|
|
8289
8558
|
Switch.displayName = SwitchPrimitive.Root.displayName;
|
|
8290
8559
|
|
|
8291
8560
|
// src/components/ui/table.tsx
|
|
8292
|
-
import { jsx as
|
|
8561
|
+
import { jsx as jsx65 } from "react/jsx-runtime";
|
|
8293
8562
|
function Table({ className, ...props }) {
|
|
8294
|
-
return /* @__PURE__ */
|
|
8563
|
+
return /* @__PURE__ */ jsx65(
|
|
8295
8564
|
"div",
|
|
8296
8565
|
{
|
|
8297
8566
|
"data-slot": "table-container",
|
|
8298
8567
|
className: "relative w-full overflow-x-auto",
|
|
8299
|
-
children: /* @__PURE__ */
|
|
8568
|
+
children: /* @__PURE__ */ jsx65(
|
|
8300
8569
|
"table",
|
|
8301
8570
|
{
|
|
8302
8571
|
"data-slot": "table",
|
|
@@ -8308,7 +8577,7 @@ function Table({ className, ...props }) {
|
|
|
8308
8577
|
);
|
|
8309
8578
|
}
|
|
8310
8579
|
function TableHeader({ className, ...props }) {
|
|
8311
|
-
return /* @__PURE__ */
|
|
8580
|
+
return /* @__PURE__ */ jsx65(
|
|
8312
8581
|
"thead",
|
|
8313
8582
|
{
|
|
8314
8583
|
"data-slot": "table-header",
|
|
@@ -8318,7 +8587,7 @@ function TableHeader({ className, ...props }) {
|
|
|
8318
8587
|
);
|
|
8319
8588
|
}
|
|
8320
8589
|
function TableBody({ className, ...props }) {
|
|
8321
|
-
return /* @__PURE__ */
|
|
8590
|
+
return /* @__PURE__ */ jsx65(
|
|
8322
8591
|
"tbody",
|
|
8323
8592
|
{
|
|
8324
8593
|
"data-slot": "table-body",
|
|
@@ -8328,7 +8597,7 @@ function TableBody({ className, ...props }) {
|
|
|
8328
8597
|
);
|
|
8329
8598
|
}
|
|
8330
8599
|
function TableFooter({ className, ...props }) {
|
|
8331
|
-
return /* @__PURE__ */
|
|
8600
|
+
return /* @__PURE__ */ jsx65(
|
|
8332
8601
|
"tfoot",
|
|
8333
8602
|
{
|
|
8334
8603
|
"data-slot": "table-footer",
|
|
@@ -8341,7 +8610,7 @@ function TableFooter({ className, ...props }) {
|
|
|
8341
8610
|
);
|
|
8342
8611
|
}
|
|
8343
8612
|
function TableRow({ className, ...props }) {
|
|
8344
|
-
return /* @__PURE__ */
|
|
8613
|
+
return /* @__PURE__ */ jsx65(
|
|
8345
8614
|
"tr",
|
|
8346
8615
|
{
|
|
8347
8616
|
"data-slot": "table-row",
|
|
@@ -8354,7 +8623,7 @@ function TableRow({ className, ...props }) {
|
|
|
8354
8623
|
);
|
|
8355
8624
|
}
|
|
8356
8625
|
function TableHead({ className, ...props }) {
|
|
8357
|
-
return /* @__PURE__ */
|
|
8626
|
+
return /* @__PURE__ */ jsx65(
|
|
8358
8627
|
"th",
|
|
8359
8628
|
{
|
|
8360
8629
|
"data-slot": "table-head",
|
|
@@ -8367,7 +8636,7 @@ function TableHead({ className, ...props }) {
|
|
|
8367
8636
|
);
|
|
8368
8637
|
}
|
|
8369
8638
|
function TableCell({ className, ...props }) {
|
|
8370
|
-
return /* @__PURE__ */
|
|
8639
|
+
return /* @__PURE__ */ jsx65(
|
|
8371
8640
|
"td",
|
|
8372
8641
|
{
|
|
8373
8642
|
"data-slot": "table-cell",
|
|
@@ -8383,7 +8652,7 @@ function TableCaption({
|
|
|
8383
8652
|
className,
|
|
8384
8653
|
...props
|
|
8385
8654
|
}) {
|
|
8386
|
-
return /* @__PURE__ */
|
|
8655
|
+
return /* @__PURE__ */ jsx65(
|
|
8387
8656
|
"caption",
|
|
8388
8657
|
{
|
|
8389
8658
|
"data-slot": "table-caption",
|
|
@@ -8394,11 +8663,11 @@ function TableCaption({
|
|
|
8394
8663
|
}
|
|
8395
8664
|
|
|
8396
8665
|
// src/components/ui/tabs.tsx
|
|
8397
|
-
import * as
|
|
8666
|
+
import * as React32 from "react";
|
|
8398
8667
|
import * as TabsPrimitive from "@radix-ui/react-tabs";
|
|
8399
|
-
import { jsx as
|
|
8668
|
+
import { jsx as jsx66 } from "react/jsx-runtime";
|
|
8400
8669
|
var Tabs = TabsPrimitive.Root;
|
|
8401
|
-
var TabsList =
|
|
8670
|
+
var TabsList = React32.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx66(
|
|
8402
8671
|
TabsPrimitive.List,
|
|
8403
8672
|
{
|
|
8404
8673
|
ref,
|
|
@@ -8410,7 +8679,7 @@ var TabsList = React30.forwardRef(({ className, ...props }, ref) => /* @__PURE__
|
|
|
8410
8679
|
}
|
|
8411
8680
|
));
|
|
8412
8681
|
TabsList.displayName = TabsPrimitive.List.displayName;
|
|
8413
|
-
var TabsTrigger =
|
|
8682
|
+
var TabsTrigger = React32.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx66(
|
|
8414
8683
|
TabsPrimitive.Trigger,
|
|
8415
8684
|
{
|
|
8416
8685
|
ref,
|
|
@@ -8422,7 +8691,7 @@ var TabsTrigger = React30.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
8422
8691
|
}
|
|
8423
8692
|
));
|
|
8424
8693
|
TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
|
|
8425
|
-
var TabsContent =
|
|
8694
|
+
var TabsContent = React32.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx66(
|
|
8426
8695
|
TabsPrimitive.Content,
|
|
8427
8696
|
{
|
|
8428
8697
|
ref,
|
|
@@ -8437,9 +8706,9 @@ TabsContent.displayName = TabsPrimitive.Content.displayName;
|
|
|
8437
8706
|
|
|
8438
8707
|
// src/components/ui/toggle.tsx
|
|
8439
8708
|
import * as TogglePrimitive from "@radix-ui/react-toggle";
|
|
8440
|
-
import { cva as
|
|
8441
|
-
import { jsx as
|
|
8442
|
-
var toggleVariants =
|
|
8709
|
+
import { cva as cva16 } from "class-variance-authority";
|
|
8710
|
+
import { jsx as jsx67 } from "react/jsx-runtime";
|
|
8711
|
+
var toggleVariants = cva16(
|
|
8443
8712
|
"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-background-control focus-visible:ring-offset-2 transition-[color,box-shadow] whitespace-nowrap",
|
|
8444
8713
|
{
|
|
8445
8714
|
variants: {
|
|
@@ -8465,7 +8734,7 @@ function Toggle({
|
|
|
8465
8734
|
size,
|
|
8466
8735
|
...props
|
|
8467
8736
|
}) {
|
|
8468
|
-
return /* @__PURE__ */
|
|
8737
|
+
return /* @__PURE__ */ jsx67(
|
|
8469
8738
|
TogglePrimitive.Root,
|
|
8470
8739
|
{
|
|
8471
8740
|
"data-slot": "toggle",
|
|
@@ -8476,10 +8745,10 @@ function Toggle({
|
|
|
8476
8745
|
}
|
|
8477
8746
|
|
|
8478
8747
|
// src/components/ui/toggle-group.tsx
|
|
8479
|
-
import * as
|
|
8748
|
+
import * as React33 from "react";
|
|
8480
8749
|
import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
|
|
8481
|
-
import { jsx as
|
|
8482
|
-
var ToggleGroupContext =
|
|
8750
|
+
import { jsx as jsx68 } from "react/jsx-runtime";
|
|
8751
|
+
var ToggleGroupContext = React33.createContext({
|
|
8483
8752
|
size: "default",
|
|
8484
8753
|
variant: "default"
|
|
8485
8754
|
});
|
|
@@ -8490,13 +8759,13 @@ function ToggleGroup({
|
|
|
8490
8759
|
children,
|
|
8491
8760
|
...props
|
|
8492
8761
|
}) {
|
|
8493
|
-
return /* @__PURE__ */
|
|
8762
|
+
return /* @__PURE__ */ jsx68(
|
|
8494
8763
|
ToggleGroupPrimitive.Root,
|
|
8495
8764
|
{
|
|
8496
8765
|
"data-slot": "toggle-group",
|
|
8497
8766
|
className: cn("flex items-center justify-center gap-1", className),
|
|
8498
8767
|
...props,
|
|
8499
|
-
children: /* @__PURE__ */
|
|
8768
|
+
children: /* @__PURE__ */ jsx68(ToggleGroupContext.Provider, { value: { variant, size }, children })
|
|
8500
8769
|
}
|
|
8501
8770
|
);
|
|
8502
8771
|
}
|
|
@@ -8507,8 +8776,8 @@ function ToggleGroupItem({
|
|
|
8507
8776
|
size,
|
|
8508
8777
|
...props
|
|
8509
8778
|
}) {
|
|
8510
|
-
const context =
|
|
8511
|
-
return /* @__PURE__ */
|
|
8779
|
+
const context = React33.useContext(ToggleGroupContext);
|
|
8780
|
+
return /* @__PURE__ */ jsx68(
|
|
8512
8781
|
ToggleGroupPrimitive.Item,
|
|
8513
8782
|
{
|
|
8514
8783
|
"data-slot": "toggle-group-item",
|
|
@@ -8529,10 +8798,10 @@ function ToggleGroupItem({
|
|
|
8529
8798
|
import { ResponsiveLine } from "@nivo/line";
|
|
8530
8799
|
|
|
8531
8800
|
// src/hooks/use-root-styles.ts
|
|
8532
|
-
import { useEffect as
|
|
8801
|
+
import { useEffect as useEffect10, useMemo as useMemo7, useState as useState12 } from "react";
|
|
8533
8802
|
function useRootStyles() {
|
|
8534
|
-
const [version, setVersion] =
|
|
8535
|
-
|
|
8803
|
+
const [version, setVersion] = useState12(0);
|
|
8804
|
+
useEffect10(() => {
|
|
8536
8805
|
if (typeof window === "undefined" || !document?.documentElement) {
|
|
8537
8806
|
return;
|
|
8538
8807
|
}
|
|
@@ -8572,7 +8841,7 @@ function resolveCssColor(styles, variable, fallback) {
|
|
|
8572
8841
|
}
|
|
8573
8842
|
|
|
8574
8843
|
// src/components/charts/PartoLineChart.tsx
|
|
8575
|
-
import { jsx as
|
|
8844
|
+
import { jsx as jsx69 } from "react/jsx-runtime";
|
|
8576
8845
|
var FALLBACKS = {
|
|
8577
8846
|
foreground: "hsl(0 0% 98%)",
|
|
8578
8847
|
border: "hsl(0 0% 45%)",
|
|
@@ -8660,12 +8929,12 @@ function PartoLineChart({ className, ...props }) {
|
|
|
8660
8929
|
getColor("--chart-4", FALLBACKS.chart4),
|
|
8661
8930
|
getColor("--chart-5", FALLBACKS.chart5)
|
|
8662
8931
|
];
|
|
8663
|
-
return /* @__PURE__ */
|
|
8932
|
+
return /* @__PURE__ */ jsx69("div", { className, dir: "ltr", style: { position: "relative", width: "100%", height: "100%" }, children: /* @__PURE__ */ jsx69(ResponsiveLine, { theme: nivoTheme, colors: defaultColors, ...props }) });
|
|
8664
8933
|
}
|
|
8665
8934
|
|
|
8666
8935
|
// src/components/charts/PartoBarChart.tsx
|
|
8667
8936
|
import { ResponsiveBar } from "@nivo/bar";
|
|
8668
|
-
import { jsx as
|
|
8937
|
+
import { jsx as jsx70 } from "react/jsx-runtime";
|
|
8669
8938
|
var FALLBACKS2 = {
|
|
8670
8939
|
foreground: "hsl(0 0% 98%)",
|
|
8671
8940
|
border: "hsl(0 0% 45%)",
|
|
@@ -8743,12 +9012,12 @@ function PartoBarChart({ className, ...props }) {
|
|
|
8743
9012
|
getColor("--chart-4", FALLBACKS2.chart4),
|
|
8744
9013
|
getColor("--chart-5", FALLBACKS2.chart5)
|
|
8745
9014
|
];
|
|
8746
|
-
return /* @__PURE__ */
|
|
9015
|
+
return /* @__PURE__ */ jsx70("div", { className, dir: "ltr", style: { position: "relative", width: "100%", height: "100%" }, children: /* @__PURE__ */ jsx70(ResponsiveBar, { theme: nivoTheme, colors: defaultColors, ...props }) });
|
|
8747
9016
|
}
|
|
8748
9017
|
|
|
8749
9018
|
// src/components/charts/PartoPieChart.tsx
|
|
8750
9019
|
import { ResponsivePie } from "@nivo/pie";
|
|
8751
|
-
import { jsx as
|
|
9020
|
+
import { jsx as jsx71 } from "react/jsx-runtime";
|
|
8752
9021
|
var FALLBACKS3 = {
|
|
8753
9022
|
foreground: "hsl(0 0% 98%)",
|
|
8754
9023
|
popover: "hsl(0 0% 12%)",
|
|
@@ -8793,12 +9062,12 @@ function PartoPieChart({ className, ...props }) {
|
|
|
8793
9062
|
getColor("--chart-4", FALLBACKS3.chart4),
|
|
8794
9063
|
getColor("--chart-5", FALLBACKS3.chart5)
|
|
8795
9064
|
];
|
|
8796
|
-
return /* @__PURE__ */
|
|
9065
|
+
return /* @__PURE__ */ jsx71("div", { className, dir: "ltr", style: { position: "relative", width: "100%", height: "100%" }, children: /* @__PURE__ */ jsx71(ResponsivePie, { theme: nivoTheme, colors: defaultColors, ...props }) });
|
|
8797
9066
|
}
|
|
8798
9067
|
|
|
8799
9068
|
// src/components/charts/PartoHeatMap.tsx
|
|
8800
9069
|
import { ResponsiveHeatMap } from "@nivo/heatmap";
|
|
8801
|
-
import { jsx as
|
|
9070
|
+
import { jsx as jsx72, jsxs as jsxs40 } from "react/jsx-runtime";
|
|
8802
9071
|
var FALLBACKS4 = {
|
|
8803
9072
|
foreground: "hsl(0 0% 98%)",
|
|
8804
9073
|
border: "hsl(0 0% 45%)",
|
|
@@ -8925,16 +9194,16 @@ function PartoHeatMap({
|
|
|
8925
9194
|
}
|
|
8926
9195
|
};
|
|
8927
9196
|
const defaultValueFormat = (value) => formatNumber2(value);
|
|
8928
|
-
const defaultTooltip = ({ cell }) => /* @__PURE__ */
|
|
8929
|
-
/* @__PURE__ */
|
|
9197
|
+
const defaultTooltip = ({ cell }) => /* @__PURE__ */ jsxs40("div", { className: "bg-popover text-popover-foreground rounded-md shadow-lg px-3 py-2 border border-border min-w-[140px] text-center", children: [
|
|
9198
|
+
/* @__PURE__ */ jsxs40("div", { className: "font-semibold text-sm mb-1.5 whitespace-nowrap", children: [
|
|
8930
9199
|
formatWeekday(String(cell.serieId)),
|
|
8931
9200
|
" - ",
|
|
8932
9201
|
formatNumber2(cell.data.x)
|
|
8933
9202
|
] }),
|
|
8934
|
-
/* @__PURE__ */
|
|
9203
|
+
/* @__PURE__ */ jsxs40("div", { className: "text-xs whitespace-nowrap", children: [
|
|
8935
9204
|
isPersian ? "\u0634\u062F\u062A \u0641\u0639\u0627\u0644\u06CC\u062A" : "Activity",
|
|
8936
9205
|
": ",
|
|
8937
|
-
/* @__PURE__ */
|
|
9206
|
+
/* @__PURE__ */ jsx72("span", { className: "font-bold text-primary", children: formatNumber2(cell.value ?? 0) })
|
|
8938
9207
|
] })
|
|
8939
9208
|
] });
|
|
8940
9209
|
const processAxisConfig = (axisConfig) => {
|
|
@@ -8963,13 +9232,13 @@ function PartoHeatMap({
|
|
|
8963
9232
|
return formatWeekday(String(formatted));
|
|
8964
9233
|
}
|
|
8965
9234
|
} : null;
|
|
8966
|
-
return /* @__PURE__ */
|
|
9235
|
+
return /* @__PURE__ */ jsx72(
|
|
8967
9236
|
"div",
|
|
8968
9237
|
{
|
|
8969
9238
|
className,
|
|
8970
9239
|
dir: "ltr",
|
|
8971
9240
|
style: { position: "relative", width: "100%", height: "100%" },
|
|
8972
|
-
children: /* @__PURE__ */
|
|
9241
|
+
children: /* @__PURE__ */ jsx72(
|
|
8973
9242
|
ResponsiveHeatMap,
|
|
8974
9243
|
{
|
|
8975
9244
|
data,
|
|
@@ -9001,12 +9270,12 @@ function PartoHeatMap({
|
|
|
9001
9270
|
}
|
|
9002
9271
|
|
|
9003
9272
|
// src/components/charts/PartoWordCloud.tsx
|
|
9004
|
-
import * as
|
|
9273
|
+
import * as React34 from "react";
|
|
9005
9274
|
import { createPortal as createPortal3 } from "react-dom";
|
|
9006
9275
|
import { Wordcloud } from "@visx/wordcloud";
|
|
9007
9276
|
import { scaleLog } from "@visx/scale";
|
|
9008
9277
|
import { Text } from "@visx/text";
|
|
9009
|
-
import { jsx as
|
|
9278
|
+
import { jsx as jsx73, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
9010
9279
|
var FALLBACKS5 = {
|
|
9011
9280
|
primary: "hsl(12 76% 61%)"
|
|
9012
9281
|
};
|
|
@@ -9038,11 +9307,11 @@ function PartoWordCloud({
|
|
|
9038
9307
|
fontWeight = 600
|
|
9039
9308
|
}) {
|
|
9040
9309
|
const styles = useRootStyles();
|
|
9041
|
-
const [hovered, setHovered] =
|
|
9042
|
-
const containerRef =
|
|
9310
|
+
const [hovered, setHovered] = React34.useState(null);
|
|
9311
|
+
const containerRef = React34.useRef(null);
|
|
9043
9312
|
const getColor = (variable, fallback) => resolveCssColor(styles, variable, fallback);
|
|
9044
9313
|
const primaryColor = getColor("--primary", FALLBACKS5.primary);
|
|
9045
|
-
const formattedWords =
|
|
9314
|
+
const formattedWords = React34.useMemo(() => {
|
|
9046
9315
|
return words.map((word) => ({
|
|
9047
9316
|
...word,
|
|
9048
9317
|
text: formatHashtagDirection(word.text)
|
|
@@ -9069,7 +9338,7 @@ function PartoWordCloud({
|
|
|
9069
9338
|
color: primaryColor
|
|
9070
9339
|
});
|
|
9071
9340
|
};
|
|
9072
|
-
return /* @__PURE__ */
|
|
9341
|
+
return /* @__PURE__ */ jsxs41(
|
|
9073
9342
|
"div",
|
|
9074
9343
|
{
|
|
9075
9344
|
ref: containerRef,
|
|
@@ -9077,7 +9346,7 @@ function PartoWordCloud({
|
|
|
9077
9346
|
style: { position: "relative", width: "100%", height: "100%", display: "flex", alignItems: "center", justifyContent: "center" },
|
|
9078
9347
|
dir: "rtl",
|
|
9079
9348
|
children: [
|
|
9080
|
-
/* @__PURE__ */
|
|
9349
|
+
/* @__PURE__ */ jsx73("div", { style: { position: "relative", width, height, display: "flex", alignItems: "center", justifyContent: "center" }, children: /* @__PURE__ */ jsx73(
|
|
9081
9350
|
Wordcloud,
|
|
9082
9351
|
{
|
|
9083
9352
|
words: formattedWords,
|
|
@@ -9093,7 +9362,7 @@ function PartoWordCloud({
|
|
|
9093
9362
|
const originalData = formattedWords.find((item) => item.text === w.text);
|
|
9094
9363
|
const value = originalData?.value || 0;
|
|
9095
9364
|
if (!w.x || !w.y || !w.text) return null;
|
|
9096
|
-
return /* @__PURE__ */
|
|
9365
|
+
return /* @__PURE__ */ jsx73("g", { children: /* @__PURE__ */ jsx73(
|
|
9097
9366
|
Text,
|
|
9098
9367
|
{
|
|
9099
9368
|
fill: primaryColor,
|
|
@@ -9117,7 +9386,7 @@ function PartoWordCloud({
|
|
|
9117
9386
|
}
|
|
9118
9387
|
) }),
|
|
9119
9388
|
hovered && typeof document !== "undefined" && createPortal3(
|
|
9120
|
-
/* @__PURE__ */
|
|
9389
|
+
/* @__PURE__ */ jsx73(
|
|
9121
9390
|
"div",
|
|
9122
9391
|
{
|
|
9123
9392
|
className: "pointer-events-none fixed z-[9999]",
|
|
@@ -9127,14 +9396,14 @@ function PartoWordCloud({
|
|
|
9127
9396
|
top: `${hovered.y - 10}px`,
|
|
9128
9397
|
transform: "translate(-50%, -100%)"
|
|
9129
9398
|
},
|
|
9130
|
-
children: /* @__PURE__ */
|
|
9131
|
-
/* @__PURE__ */
|
|
9132
|
-
/* @__PURE__ */
|
|
9133
|
-
/* @__PURE__ */
|
|
9399
|
+
children: /* @__PURE__ */ jsxs41("div", { className: "grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl", dir: "rtl", children: [
|
|
9400
|
+
/* @__PURE__ */ jsxs41("div", { className: "flex items-center gap-2", children: [
|
|
9401
|
+
/* @__PURE__ */ jsx73("div", { className: "h-2.5 w-2.5 rounded-[2px]", style: { backgroundColor: hovered.color } }),
|
|
9402
|
+
/* @__PURE__ */ jsx73("span", { className: "font-medium", children: hovered.text })
|
|
9134
9403
|
] }),
|
|
9135
|
-
/* @__PURE__ */
|
|
9136
|
-
/* @__PURE__ */
|
|
9137
|
-
/* @__PURE__ */
|
|
9404
|
+
/* @__PURE__ */ jsxs41("div", { className: "flex items-center justify-between", children: [
|
|
9405
|
+
/* @__PURE__ */ jsx73("span", { className: "text-muted-foreground", children: "\u062A\u0639\u062F\u0627\u062F" }),
|
|
9406
|
+
/* @__PURE__ */ jsx73("span", { className: "font-mono font-medium tabular-nums", children: hovered.value.toLocaleString("fa-IR") })
|
|
9138
9407
|
] })
|
|
9139
9408
|
] })
|
|
9140
9409
|
}
|
|
@@ -9283,6 +9552,7 @@ export {
|
|
|
9283
9552
|
FormItem,
|
|
9284
9553
|
FormLabel,
|
|
9285
9554
|
FormMessage,
|
|
9555
|
+
HashtagInput,
|
|
9286
9556
|
HoverCard,
|
|
9287
9557
|
HoverCardContent,
|
|
9288
9558
|
HoverCardTrigger,
|
|
@@ -9431,6 +9701,7 @@ export {
|
|
|
9431
9701
|
TabsContent,
|
|
9432
9702
|
TabsList,
|
|
9433
9703
|
TabsTrigger,
|
|
9704
|
+
TagInput,
|
|
9434
9705
|
Textarea,
|
|
9435
9706
|
Toaster,
|
|
9436
9707
|
Toggle,
|
|
@@ -9458,9 +9729,11 @@ export {
|
|
|
9458
9729
|
getPersianWeekdayName,
|
|
9459
9730
|
getPersianYear,
|
|
9460
9731
|
getPersianYearsForDropdown,
|
|
9732
|
+
hashtagInputVariants,
|
|
9461
9733
|
instagramPostVariants,
|
|
9462
9734
|
jalaliToGregorian,
|
|
9463
9735
|
navigationMenuTriggerStyle,
|
|
9736
|
+
tagInputVariants,
|
|
9464
9737
|
toEnglishDigits,
|
|
9465
9738
|
toPersianDigits,
|
|
9466
9739
|
toast,
|