@parto-system-design/ui 1.0.3 → 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 +865 -628
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +65 -3
- package/dist/index.d.cts +27 -1
- package/dist/index.d.ts +27 -1
- package/dist/index.js +847 -614
- 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,37 +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
|
|
4278
|
-
import ReactPlayer from "react-player";
|
|
4533
|
+
import * as React19 from "react";
|
|
4534
|
+
import { cva as cva10 } from "class-variance-authority";
|
|
4279
4535
|
|
|
4280
4536
|
// src/components/ui/tooltip.tsx
|
|
4281
|
-
import * as
|
|
4537
|
+
import * as React18 from "react";
|
|
4282
4538
|
import * as TooltipPrimitive from "@radix-ui/react-tooltip";
|
|
4283
|
-
import { jsx as
|
|
4539
|
+
import { jsx as jsx40 } from "react/jsx-runtime";
|
|
4284
4540
|
var TooltipProvider = TooltipPrimitive.Provider;
|
|
4285
4541
|
var Tooltip = TooltipPrimitive.Root;
|
|
4286
4542
|
var TooltipTrigger = TooltipPrimitive.Trigger;
|
|
4287
|
-
var TooltipContent =
|
|
4543
|
+
var TooltipContent = React18.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx40(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx40(
|
|
4288
4544
|
TooltipPrimitive.Content,
|
|
4289
4545
|
{
|
|
4290
4546
|
ref,
|
|
@@ -4299,8 +4555,9 @@ var TooltipContent = React16.forwardRef(({ className, sideOffset = 4, ...props }
|
|
|
4299
4555
|
TooltipContent.displayName = TooltipPrimitive.Content.displayName;
|
|
4300
4556
|
|
|
4301
4557
|
// src/components/ui/instagram-post.tsx
|
|
4302
|
-
import {
|
|
4303
|
-
|
|
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(
|
|
4304
4561
|
"relative border bg-background-surface-100",
|
|
4305
4562
|
{
|
|
4306
4563
|
variants: {
|
|
@@ -4320,17 +4577,22 @@ function InstagramPostMedia({
|
|
|
4320
4577
|
variant = "vertical",
|
|
4321
4578
|
placeholderText = "No media available"
|
|
4322
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" }) });
|
|
4323
4585
|
if (!media || media.length === 0) {
|
|
4324
|
-
return /* @__PURE__ */
|
|
4586
|
+
return /* @__PURE__ */ jsx41(
|
|
4325
4587
|
"div",
|
|
4326
4588
|
{
|
|
4327
4589
|
className: cn(
|
|
4328
4590
|
"flex items-center justify-center bg-muted/30",
|
|
4329
4591
|
variant === "vertical" ? "aspect-square" : "w-[20%] shrink-0 h-full min-h-[200px] -my-[1px] -ms-[1px]"
|
|
4330
4592
|
),
|
|
4331
|
-
children: /* @__PURE__ */
|
|
4332
|
-
/* @__PURE__ */
|
|
4333
|
-
/* @__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 })
|
|
4334
4596
|
] })
|
|
4335
4597
|
}
|
|
4336
4598
|
);
|
|
@@ -4338,27 +4600,29 @@ function InstagramPostMedia({
|
|
|
4338
4600
|
if (mediaType === "image" || media.length === 1 && media[0].type === "image") {
|
|
4339
4601
|
const item = media[0];
|
|
4340
4602
|
if (variant === "horizontal") {
|
|
4341
|
-
return /* @__PURE__ */
|
|
4342
|
-
/* @__PURE__ */
|
|
4343
|
-
/* @__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(
|
|
4344
4606
|
"img",
|
|
4345
4607
|
{
|
|
4346
4608
|
src: item.url,
|
|
4347
4609
|
alt: "Post media",
|
|
4348
|
-
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)
|
|
4349
4612
|
}
|
|
4350
4613
|
)
|
|
4351
4614
|
] });
|
|
4352
4615
|
}
|
|
4353
4616
|
const ratio = getAspectRatio(item.aspectRatio || "1:1");
|
|
4354
|
-
return /* @__PURE__ */
|
|
4355
|
-
/* @__PURE__ */
|
|
4356
|
-
/* @__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(
|
|
4357
4620
|
"img",
|
|
4358
4621
|
{
|
|
4359
4622
|
src: item.url,
|
|
4360
4623
|
alt: "Post media",
|
|
4361
|
-
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)
|
|
4362
4626
|
}
|
|
4363
4627
|
)
|
|
4364
4628
|
] });
|
|
@@ -4366,109 +4630,74 @@ function InstagramPostMedia({
|
|
|
4366
4630
|
if (mediaType === "video" || media.length === 1 && media[0].type === "video") {
|
|
4367
4631
|
const item = media[0];
|
|
4368
4632
|
if (variant === "horizontal") {
|
|
4369
|
-
return /* @__PURE__ */
|
|
4370
|
-
/* @__PURE__ */
|
|
4371
|
-
|
|
4372
|
-
|
|
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(
|
|
4636
|
+
"img",
|
|
4373
4637
|
{
|
|
4374
|
-
|
|
4375
|
-
|
|
4376
|
-
|
|
4377
|
-
|
|
4378
|
-
playing: false,
|
|
4379
|
-
light: true
|
|
4638
|
+
src: item.url,
|
|
4639
|
+
alt: "Post media",
|
|
4640
|
+
className: "w-full h-full object-cover group-hover:scale-110 transition-transform duration-300",
|
|
4641
|
+
onError: () => handleImageError(item.url)
|
|
4380
4642
|
}
|
|
4381
|
-
)
|
|
4643
|
+
)
|
|
4382
4644
|
] });
|
|
4383
4645
|
}
|
|
4384
4646
|
const ratio = getAspectRatio(item.aspectRatio || "16:9");
|
|
4385
|
-
return /* @__PURE__ */
|
|
4386
|
-
/* @__PURE__ */
|
|
4387
|
-
|
|
4388
|
-
|
|
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(
|
|
4650
|
+
"img",
|
|
4389
4651
|
{
|
|
4390
|
-
|
|
4391
|
-
|
|
4392
|
-
|
|
4393
|
-
|
|
4394
|
-
playing: false,
|
|
4395
|
-
light: true
|
|
4652
|
+
src: item.url,
|
|
4653
|
+
alt: "Post media",
|
|
4654
|
+
className: "w-full h-full object-cover group-hover:scale-110 transition-transform duration-300",
|
|
4655
|
+
onError: () => handleImageError(item.url)
|
|
4396
4656
|
}
|
|
4397
|
-
)
|
|
4657
|
+
)
|
|
4398
4658
|
] });
|
|
4399
4659
|
}
|
|
4400
4660
|
if (mediaType === "carousel" || media.length > 1) {
|
|
4401
4661
|
if (variant === "horizontal") {
|
|
4402
|
-
return /* @__PURE__ */
|
|
4403
|
-
/* @__PURE__ */
|
|
4404
|
-
/* @__PURE__ */
|
|
4405
|
-
/* @__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(
|
|
4406
4666
|
"img",
|
|
4407
4667
|
{
|
|
4408
4668
|
src: item.url,
|
|
4409
4669
|
alt: `Post media ${index + 1}`,
|
|
4410
|
-
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)
|
|
4411
4672
|
}
|
|
4412
4673
|
)
|
|
4413
|
-
] })
|
|
4414
|
-
|
|
4415
|
-
|
|
4416
|
-
ReactPlayer,
|
|
4417
|
-
{
|
|
4418
|
-
url: item.url,
|
|
4419
|
-
width: "100%",
|
|
4420
|
-
height: "100%",
|
|
4421
|
-
controls: true,
|
|
4422
|
-
playing: false,
|
|
4423
|
-
light: true
|
|
4424
|
-
}
|
|
4425
|
-
) })
|
|
4426
|
-
] }) }, index)) }),
|
|
4427
|
-
/* @__PURE__ */ jsx39(CarouselPrevious, { className: "ms-2" }),
|
|
4428
|
-
/* @__PURE__ */ jsx39(CarouselNext, { className: "me-2" })
|
|
4674
|
+
] }, index)) }),
|
|
4675
|
+
/* @__PURE__ */ jsx41(CarouselPrevious, { className: "ms-2" }),
|
|
4676
|
+
/* @__PURE__ */ jsx41(CarouselNext, { className: "me-2" })
|
|
4429
4677
|
] }) });
|
|
4430
4678
|
}
|
|
4431
|
-
return /* @__PURE__ */
|
|
4432
|
-
/* @__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(
|
|
4433
4681
|
"div",
|
|
4434
4682
|
{
|
|
4435
|
-
className: "w-full relative overflow-hidden group cursor-pointer",
|
|
4436
|
-
style: { aspectRatio: getAspectRatio(item.aspectRatio || "1:1") },
|
|
4683
|
+
className: "w-full relative overflow-hidden group cursor-pointer bg-muted/30",
|
|
4684
|
+
style: { aspectRatio: getAspectRatio(item.aspectRatio || (item.type === "video" ? "16:9" : "1:1")) },
|
|
4437
4685
|
children: [
|
|
4438
|
-
/* @__PURE__ */
|
|
4439
|
-
/* @__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(
|
|
4440
4688
|
"img",
|
|
4441
4689
|
{
|
|
4442
4690
|
src: item.url,
|
|
4443
4691
|
alt: `Post media ${index + 1}`,
|
|
4444
|
-
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)
|
|
4445
4694
|
}
|
|
4446
4695
|
)
|
|
4447
4696
|
]
|
|
4448
4697
|
}
|
|
4449
|
-
) : /* @__PURE__ */ jsxs21(
|
|
4450
|
-
"div",
|
|
4451
|
-
{
|
|
4452
|
-
className: "w-full relative overflow-hidden group cursor-pointer",
|
|
4453
|
-
style: { aspectRatio: getAspectRatio(item.aspectRatio || "16:9") },
|
|
4454
|
-
children: [
|
|
4455
|
-
/* @__PURE__ */ jsx39("div", { className: "absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-colors duration-300 z-10 pointer-events-none" }),
|
|
4456
|
-
/* @__PURE__ */ jsx39("div", { className: "w-full h-full group-hover:scale-110 transition-transform duration-300", children: /* @__PURE__ */ jsx39(
|
|
4457
|
-
ReactPlayer,
|
|
4458
|
-
{
|
|
4459
|
-
url: item.url,
|
|
4460
|
-
width: "100%",
|
|
4461
|
-
height: "100%",
|
|
4462
|
-
controls: true,
|
|
4463
|
-
playing: false,
|
|
4464
|
-
light: true
|
|
4465
|
-
}
|
|
4466
|
-
) })
|
|
4467
|
-
]
|
|
4468
|
-
}
|
|
4469
4698
|
) }, index)) }),
|
|
4470
|
-
/* @__PURE__ */
|
|
4471
|
-
/* @__PURE__ */
|
|
4699
|
+
/* @__PURE__ */ jsx41(CarouselPrevious, { className: "ms-2" }),
|
|
4700
|
+
/* @__PURE__ */ jsx41(CarouselNext, { className: "me-2" })
|
|
4472
4701
|
] });
|
|
4473
4702
|
}
|
|
4474
4703
|
return null;
|
|
@@ -4488,10 +4717,10 @@ function InstagramPostCaption({
|
|
|
4488
4717
|
maxLines = 3,
|
|
4489
4718
|
variant = "vertical"
|
|
4490
4719
|
}) {
|
|
4491
|
-
const [isExpanded, setIsExpanded] =
|
|
4492
|
-
const [shouldShowMore, setShouldShowMore] =
|
|
4493
|
-
const textRef =
|
|
4494
|
-
|
|
4720
|
+
const [isExpanded, setIsExpanded] = React19.useState(false);
|
|
4721
|
+
const [shouldShowMore, setShouldShowMore] = React19.useState(false);
|
|
4722
|
+
const textRef = React19.useRef(null);
|
|
4723
|
+
React19.useEffect(() => {
|
|
4495
4724
|
if (variant === "vertical" && textRef.current && !isExpanded) {
|
|
4496
4725
|
const lineHeight = parseInt(window.getComputedStyle(textRef.current).lineHeight);
|
|
4497
4726
|
const maxHeight = lineHeight * maxLines;
|
|
@@ -4502,11 +4731,11 @@ function InstagramPostCaption({
|
|
|
4502
4731
|
}, [caption, maxLines, isExpanded, variant]);
|
|
4503
4732
|
if (!caption) return null;
|
|
4504
4733
|
const parsedCaption = parseCaption(caption);
|
|
4505
|
-
return /* @__PURE__ */
|
|
4734
|
+
return /* @__PURE__ */ jsxs23("div", { className: cn(
|
|
4506
4735
|
"px-4 py-2",
|
|
4507
4736
|
variant === "horizontal" && "overflow-visible"
|
|
4508
4737
|
), children: [
|
|
4509
|
-
/* @__PURE__ */
|
|
4738
|
+
/* @__PURE__ */ jsx41(
|
|
4510
4739
|
"p",
|
|
4511
4740
|
{
|
|
4512
4741
|
ref: textRef,
|
|
@@ -4523,7 +4752,7 @@ function InstagramPostCaption({
|
|
|
4523
4752
|
} : void 0,
|
|
4524
4753
|
children: parsedCaption.map((part, index) => {
|
|
4525
4754
|
if (part.type === "hashtag") {
|
|
4526
|
-
return /* @__PURE__ */
|
|
4755
|
+
return /* @__PURE__ */ jsx41(
|
|
4527
4756
|
"span",
|
|
4528
4757
|
{
|
|
4529
4758
|
className: "text-brand-link hover:underline cursor-pointer",
|
|
@@ -4533,7 +4762,7 @@ function InstagramPostCaption({
|
|
|
4533
4762
|
);
|
|
4534
4763
|
}
|
|
4535
4764
|
if (part.type === "mention") {
|
|
4536
|
-
return /* @__PURE__ */
|
|
4765
|
+
return /* @__PURE__ */ jsx41(
|
|
4537
4766
|
"span",
|
|
4538
4767
|
{
|
|
4539
4768
|
className: "text-brand-link hover:underline cursor-pointer font-medium",
|
|
@@ -4542,11 +4771,11 @@ function InstagramPostCaption({
|
|
|
4542
4771
|
index
|
|
4543
4772
|
);
|
|
4544
4773
|
}
|
|
4545
|
-
return /* @__PURE__ */
|
|
4774
|
+
return /* @__PURE__ */ jsx41("span", { children: part.text }, index);
|
|
4546
4775
|
})
|
|
4547
4776
|
}
|
|
4548
4777
|
),
|
|
4549
|
-
shouldShowMore && variant === "vertical" && /* @__PURE__ */
|
|
4778
|
+
shouldShowMore && variant === "vertical" && /* @__PURE__ */ jsx41(
|
|
4550
4779
|
"button",
|
|
4551
4780
|
{
|
|
4552
4781
|
onClick: () => setIsExpanded(!isExpanded),
|
|
@@ -4652,15 +4881,15 @@ function InstagramPostStats({
|
|
|
4652
4881
|
});
|
|
4653
4882
|
}
|
|
4654
4883
|
if (items.length === 0) return null;
|
|
4655
|
-
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) => {
|
|
4656
4885
|
const Icon2 = item.icon;
|
|
4657
|
-
return /* @__PURE__ */
|
|
4658
|
-
/* @__PURE__ */
|
|
4659
|
-
/* @__PURE__ */
|
|
4660
|
-
/* @__PURE__ */
|
|
4661
|
-
/* @__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 })
|
|
4662
4891
|
] }) }),
|
|
4663
|
-
/* @__PURE__ */
|
|
4892
|
+
/* @__PURE__ */ jsx41(TooltipContent, { children: /* @__PURE__ */ jsxs23("p", { children: [
|
|
4664
4893
|
item.label,
|
|
4665
4894
|
": ",
|
|
4666
4895
|
item.exactValue
|
|
@@ -4675,7 +4904,7 @@ function InstagramPostProfile({
|
|
|
4675
4904
|
}) {
|
|
4676
4905
|
if (!profile) return null;
|
|
4677
4906
|
const displayAvatarUrl = avatarUrl || profile.avatarUrl || profile.profilePicture;
|
|
4678
|
-
return /* @__PURE__ */
|
|
4907
|
+
return /* @__PURE__ */ jsxs23(
|
|
4679
4908
|
"div",
|
|
4680
4909
|
{
|
|
4681
4910
|
className: cn(
|
|
@@ -4684,13 +4913,13 @@ function InstagramPostProfile({
|
|
|
4684
4913
|
variant === "horizontal" && "pb-2"
|
|
4685
4914
|
),
|
|
4686
4915
|
children: [
|
|
4687
|
-
/* @__PURE__ */
|
|
4688
|
-
displayAvatarUrl && /* @__PURE__ */
|
|
4689
|
-
/* @__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() })
|
|
4690
4919
|
] }),
|
|
4691
|
-
/* @__PURE__ */
|
|
4692
|
-
/* @__PURE__ */
|
|
4693
|
-
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 })
|
|
4694
4923
|
] })
|
|
4695
4924
|
]
|
|
4696
4925
|
}
|
|
@@ -4727,9 +4956,9 @@ function InstagramPostActions({
|
|
|
4727
4956
|
onAIAnalysis();
|
|
4728
4957
|
}
|
|
4729
4958
|
};
|
|
4730
|
-
return /* @__PURE__ */
|
|
4731
|
-
/* @__PURE__ */
|
|
4732
|
-
/* @__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(
|
|
4733
4962
|
Button,
|
|
4734
4963
|
{
|
|
4735
4964
|
variant: "ghost",
|
|
@@ -4737,13 +4966,13 @@ function InstagramPostActions({
|
|
|
4737
4966
|
className: "size-8 bg-background/80 backdrop-blur-sm hover:bg-background",
|
|
4738
4967
|
onClick: handleCommentAnalyzer,
|
|
4739
4968
|
"aria-label": "Comment Analyzer",
|
|
4740
|
-
children: /* @__PURE__ */
|
|
4969
|
+
children: /* @__PURE__ */ jsx41(Icons.messageCircle, { className: "size-4" })
|
|
4741
4970
|
}
|
|
4742
4971
|
) }),
|
|
4743
|
-
/* @__PURE__ */
|
|
4972
|
+
/* @__PURE__ */ jsx41(TooltipContent, { children: /* @__PURE__ */ jsx41("p", { children: "\u062A\u062D\u0644\u06CC\u0644 \u06A9\u0627\u0645\u0646\u062A\u200C\u0647\u0627" }) })
|
|
4744
4973
|
] }),
|
|
4745
|
-
/* @__PURE__ */
|
|
4746
|
-
/* @__PURE__ */
|
|
4974
|
+
/* @__PURE__ */ jsxs23(Tooltip, { children: [
|
|
4975
|
+
/* @__PURE__ */ jsx41(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx41(
|
|
4747
4976
|
Button,
|
|
4748
4977
|
{
|
|
4749
4978
|
variant: "ghost",
|
|
@@ -4751,13 +4980,13 @@ function InstagramPostActions({
|
|
|
4751
4980
|
className: "size-8 bg-background/80 backdrop-blur-sm hover:bg-background",
|
|
4752
4981
|
onClick: handleBooster,
|
|
4753
4982
|
"aria-label": "Booster",
|
|
4754
|
-
children: /* @__PURE__ */
|
|
4983
|
+
children: /* @__PURE__ */ jsx41(Icons.rocket, { className: "size-4" })
|
|
4755
4984
|
}
|
|
4756
4985
|
) }),
|
|
4757
|
-
/* @__PURE__ */
|
|
4986
|
+
/* @__PURE__ */ jsx41(TooltipContent, { children: /* @__PURE__ */ jsx41("p", { children: "\u0628\u0648\u0633\u062A\u0631" }) })
|
|
4758
4987
|
] }),
|
|
4759
|
-
/* @__PURE__ */
|
|
4760
|
-
/* @__PURE__ */
|
|
4988
|
+
/* @__PURE__ */ jsxs23(Tooltip, { children: [
|
|
4989
|
+
/* @__PURE__ */ jsx41(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx41(
|
|
4761
4990
|
Button,
|
|
4762
4991
|
{
|
|
4763
4992
|
variant: "ghost",
|
|
@@ -4765,13 +4994,13 @@ function InstagramPostActions({
|
|
|
4765
4994
|
className: "size-8 bg-background/80 backdrop-blur-sm hover:bg-background",
|
|
4766
4995
|
onClick: handleAIAnalysis,
|
|
4767
4996
|
"aria-label": "AI Analysis",
|
|
4768
|
-
children: /* @__PURE__ */
|
|
4997
|
+
children: /* @__PURE__ */ jsx41(Icons.sparkles, { className: "size-4" })
|
|
4769
4998
|
}
|
|
4770
4999
|
) }),
|
|
4771
|
-
/* @__PURE__ */
|
|
5000
|
+
/* @__PURE__ */ jsx41(TooltipContent, { children: /* @__PURE__ */ jsx41("p", { children: "\u062A\u062D\u0644\u06CC\u0644 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06CC" }) })
|
|
4772
5001
|
] }),
|
|
4773
|
-
/* @__PURE__ */
|
|
4774
|
-
/* @__PURE__ */
|
|
5002
|
+
/* @__PURE__ */ jsxs23(Tooltip, { children: [
|
|
5003
|
+
/* @__PURE__ */ jsx41(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx41(
|
|
4775
5004
|
Button,
|
|
4776
5005
|
{
|
|
4777
5006
|
variant: "ghost",
|
|
@@ -4779,10 +5008,10 @@ function InstagramPostActions({
|
|
|
4779
5008
|
className: "size-8 bg-background/80 backdrop-blur-sm hover:bg-background",
|
|
4780
5009
|
onClick: handleOpenInstagram,
|
|
4781
5010
|
"aria-label": "Open on Instagram",
|
|
4782
|
-
children: /* @__PURE__ */
|
|
5011
|
+
children: /* @__PURE__ */ jsx41(Icons.instagram, { className: "size-4" })
|
|
4783
5012
|
}
|
|
4784
5013
|
) }),
|
|
4785
|
-
/* @__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" }) })
|
|
4786
5015
|
] })
|
|
4787
5016
|
] }) });
|
|
4788
5017
|
}
|
|
@@ -4794,25 +5023,25 @@ function InstagramPostTime({
|
|
|
4794
5023
|
const relativeTime = formatRelativeTime(publishTime);
|
|
4795
5024
|
const absoluteTime = formatAbsoluteTime(publishTime);
|
|
4796
5025
|
if (timeFormat === "absolute") {
|
|
4797
|
-
return /* @__PURE__ */
|
|
4798
|
-
/* @__PURE__ */
|
|
4799
|
-
/* @__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 })
|
|
4800
5029
|
] });
|
|
4801
5030
|
}
|
|
4802
|
-
return /* @__PURE__ */
|
|
5031
|
+
return /* @__PURE__ */ jsxs23(
|
|
4803
5032
|
"div",
|
|
4804
5033
|
{
|
|
4805
5034
|
className: "px-4 py-1 text-xs text-muted-foreground cursor-default flex items-center gap-1.5",
|
|
4806
5035
|
title: absoluteTime,
|
|
4807
5036
|
dir: "ltr",
|
|
4808
5037
|
children: [
|
|
4809
|
-
/* @__PURE__ */
|
|
4810
|
-
/* @__PURE__ */
|
|
5038
|
+
/* @__PURE__ */ jsx41(Icons.clock, { className: "size-3" }),
|
|
5039
|
+
/* @__PURE__ */ jsx41("span", { children: relativeTime })
|
|
4811
5040
|
]
|
|
4812
5041
|
}
|
|
4813
5042
|
);
|
|
4814
5043
|
}
|
|
4815
|
-
var InstagramPost =
|
|
5044
|
+
var InstagramPost = React19.forwardRef(
|
|
4816
5045
|
({
|
|
4817
5046
|
className,
|
|
4818
5047
|
variant = "vertical",
|
|
@@ -4843,7 +5072,7 @@ var InstagramPost = React17.forwardRef(
|
|
|
4843
5072
|
...props
|
|
4844
5073
|
}, ref) => {
|
|
4845
5074
|
const isVertical = variant === "vertical";
|
|
4846
|
-
return /* @__PURE__ */
|
|
5075
|
+
return /* @__PURE__ */ jsxs23(
|
|
4847
5076
|
"div",
|
|
4848
5077
|
{
|
|
4849
5078
|
ref,
|
|
@@ -4851,7 +5080,7 @@ var InstagramPost = React17.forwardRef(
|
|
|
4851
5080
|
dir,
|
|
4852
5081
|
...props,
|
|
4853
5082
|
children: [
|
|
4854
|
-
showActions && /* @__PURE__ */
|
|
5083
|
+
showActions && /* @__PURE__ */ jsx41(
|
|
4855
5084
|
InstagramPostActions,
|
|
4856
5085
|
{
|
|
4857
5086
|
showActions,
|
|
@@ -4862,9 +5091,9 @@ var InstagramPost = React17.forwardRef(
|
|
|
4862
5091
|
instagramUrl
|
|
4863
5092
|
}
|
|
4864
5093
|
),
|
|
4865
|
-
isVertical ? /* @__PURE__ */
|
|
4866
|
-
showProfile && /* @__PURE__ */
|
|
4867
|
-
/* @__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(
|
|
4868
5097
|
InstagramPostMedia,
|
|
4869
5098
|
{
|
|
4870
5099
|
media,
|
|
@@ -4873,7 +5102,7 @@ var InstagramPost = React17.forwardRef(
|
|
|
4873
5102
|
placeholderText
|
|
4874
5103
|
}
|
|
4875
5104
|
) }),
|
|
4876
|
-
/* @__PURE__ */
|
|
5105
|
+
/* @__PURE__ */ jsx41(
|
|
4877
5106
|
InstagramPostStats,
|
|
4878
5107
|
{
|
|
4879
5108
|
stats,
|
|
@@ -4885,16 +5114,16 @@ var InstagramPost = React17.forwardRef(
|
|
|
4885
5114
|
postType
|
|
4886
5115
|
}
|
|
4887
5116
|
),
|
|
4888
|
-
showCaption && /* @__PURE__ */
|
|
4889
|
-
/* @__PURE__ */
|
|
5117
|
+
showCaption && /* @__PURE__ */ jsx41(InstagramPostCaption, { caption, variant: variant || "vertical" }),
|
|
5118
|
+
/* @__PURE__ */ jsx41("div", { className: "mt-auto w-full", children: /* @__PURE__ */ jsx41(
|
|
4890
5119
|
InstagramPostTime,
|
|
4891
5120
|
{
|
|
4892
5121
|
publishTime,
|
|
4893
5122
|
timeFormat
|
|
4894
5123
|
}
|
|
4895
5124
|
) })
|
|
4896
|
-
] }) : /* @__PURE__ */
|
|
4897
|
-
/* @__PURE__ */
|
|
5125
|
+
] }) : /* @__PURE__ */ jsxs23(Fragment4, { children: [
|
|
5126
|
+
/* @__PURE__ */ jsx41(
|
|
4898
5127
|
InstagramPostMedia,
|
|
4899
5128
|
{
|
|
4900
5129
|
media,
|
|
@@ -4903,9 +5132,9 @@ var InstagramPost = React17.forwardRef(
|
|
|
4903
5132
|
placeholderText
|
|
4904
5133
|
}
|
|
4905
5134
|
),
|
|
4906
|
-
/* @__PURE__ */
|
|
4907
|
-
showProfile && /* @__PURE__ */
|
|
4908
|
-
/* @__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(
|
|
4909
5138
|
InstagramPostStats,
|
|
4910
5139
|
{
|
|
4911
5140
|
stats,
|
|
@@ -4917,8 +5146,8 @@ var InstagramPost = React17.forwardRef(
|
|
|
4917
5146
|
postType
|
|
4918
5147
|
}
|
|
4919
5148
|
),
|
|
4920
|
-
showCaption && /* @__PURE__ */
|
|
4921
|
-
/* @__PURE__ */
|
|
5149
|
+
showCaption && /* @__PURE__ */ jsx41(InstagramPostCaption, { caption, variant: variant || "horizontal" }),
|
|
5150
|
+
/* @__PURE__ */ jsx41("div", { className: "mt-auto w-full", children: /* @__PURE__ */ jsx41(
|
|
4922
5151
|
InstagramPostTime,
|
|
4923
5152
|
{
|
|
4924
5153
|
publishTime,
|
|
@@ -4935,9 +5164,9 @@ var InstagramPost = React17.forwardRef(
|
|
|
4935
5164
|
InstagramPost.displayName = "InstagramPost";
|
|
4936
5165
|
|
|
4937
5166
|
// src/components/ui/kbd.tsx
|
|
4938
|
-
import { jsx as
|
|
5167
|
+
import { jsx as jsx42 } from "react/jsx-runtime";
|
|
4939
5168
|
function Kbd({ className, ...props }) {
|
|
4940
|
-
return /* @__PURE__ */
|
|
5169
|
+
return /* @__PURE__ */ jsx42(
|
|
4941
5170
|
"kbd",
|
|
4942
5171
|
{
|
|
4943
5172
|
"data-slot": "kbd",
|
|
@@ -4952,7 +5181,7 @@ function Kbd({ className, ...props }) {
|
|
|
4952
5181
|
);
|
|
4953
5182
|
}
|
|
4954
5183
|
function KbdGroup({ className, ...props }) {
|
|
4955
|
-
return /* @__PURE__ */
|
|
5184
|
+
return /* @__PURE__ */ jsx42(
|
|
4956
5185
|
"kbd",
|
|
4957
5186
|
{
|
|
4958
5187
|
"data-slot": "kbd-group",
|
|
@@ -4965,12 +5194,12 @@ function KbdGroup({ className, ...props }) {
|
|
|
4965
5194
|
// src/components/ui/menubar.tsx
|
|
4966
5195
|
import * as MenubarPrimitive from "@radix-ui/react-menubar";
|
|
4967
5196
|
import { CheckIcon as CheckIcon4, ChevronRightIcon as ChevronRightIcon3, CircleIcon as CircleIcon3 } from "lucide-react";
|
|
4968
|
-
import { jsx as
|
|
5197
|
+
import { jsx as jsx43, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
4969
5198
|
function Menubar({
|
|
4970
5199
|
className,
|
|
4971
5200
|
...props
|
|
4972
5201
|
}) {
|
|
4973
|
-
return /* @__PURE__ */
|
|
5202
|
+
return /* @__PURE__ */ jsx43(
|
|
4974
5203
|
MenubarPrimitive.Root,
|
|
4975
5204
|
{
|
|
4976
5205
|
"data-slot": "menubar",
|
|
@@ -4985,28 +5214,28 @@ function Menubar({
|
|
|
4985
5214
|
function MenubarMenu({
|
|
4986
5215
|
...props
|
|
4987
5216
|
}) {
|
|
4988
|
-
return /* @__PURE__ */
|
|
5217
|
+
return /* @__PURE__ */ jsx43(MenubarPrimitive.Menu, { "data-slot": "menubar-menu", ...props });
|
|
4989
5218
|
}
|
|
4990
5219
|
function MenubarGroup({
|
|
4991
5220
|
...props
|
|
4992
5221
|
}) {
|
|
4993
|
-
return /* @__PURE__ */
|
|
5222
|
+
return /* @__PURE__ */ jsx43(MenubarPrimitive.Group, { "data-slot": "menubar-group", ...props });
|
|
4994
5223
|
}
|
|
4995
5224
|
function MenubarPortal({
|
|
4996
5225
|
...props
|
|
4997
5226
|
}) {
|
|
4998
|
-
return /* @__PURE__ */
|
|
5227
|
+
return /* @__PURE__ */ jsx43(MenubarPrimitive.Portal, { "data-slot": "menubar-portal", ...props });
|
|
4999
5228
|
}
|
|
5000
5229
|
function MenubarRadioGroup({
|
|
5001
5230
|
...props
|
|
5002
5231
|
}) {
|
|
5003
|
-
return /* @__PURE__ */
|
|
5232
|
+
return /* @__PURE__ */ jsx43(MenubarPrimitive.RadioGroup, { "data-slot": "menubar-radio-group", ...props });
|
|
5004
5233
|
}
|
|
5005
5234
|
function MenubarTrigger({
|
|
5006
5235
|
className,
|
|
5007
5236
|
...props
|
|
5008
5237
|
}) {
|
|
5009
|
-
return /* @__PURE__ */
|
|
5238
|
+
return /* @__PURE__ */ jsx43(
|
|
5010
5239
|
MenubarPrimitive.Trigger,
|
|
5011
5240
|
{
|
|
5012
5241
|
"data-slot": "menubar-trigger",
|
|
@@ -5025,7 +5254,7 @@ function MenubarContent({
|
|
|
5025
5254
|
sideOffset = 8,
|
|
5026
5255
|
...props
|
|
5027
5256
|
}) {
|
|
5028
|
-
return /* @__PURE__ */
|
|
5257
|
+
return /* @__PURE__ */ jsx43(MenubarPortal, { children: /* @__PURE__ */ jsx43(
|
|
5029
5258
|
MenubarPrimitive.Content,
|
|
5030
5259
|
{
|
|
5031
5260
|
"data-slot": "menubar-content",
|
|
@@ -5046,7 +5275,7 @@ function MenubarItem({
|
|
|
5046
5275
|
variant = "default",
|
|
5047
5276
|
...props
|
|
5048
5277
|
}) {
|
|
5049
|
-
return /* @__PURE__ */
|
|
5278
|
+
return /* @__PURE__ */ jsx43(
|
|
5050
5279
|
MenubarPrimitive.Item,
|
|
5051
5280
|
{
|
|
5052
5281
|
"data-slot": "menubar-item",
|
|
@@ -5066,7 +5295,7 @@ function MenubarCheckboxItem({
|
|
|
5066
5295
|
checked,
|
|
5067
5296
|
...props
|
|
5068
5297
|
}) {
|
|
5069
|
-
return /* @__PURE__ */
|
|
5298
|
+
return /* @__PURE__ */ jsxs24(
|
|
5070
5299
|
MenubarPrimitive.CheckboxItem,
|
|
5071
5300
|
{
|
|
5072
5301
|
"data-slot": "menubar-checkbox-item",
|
|
@@ -5077,7 +5306,7 @@ function MenubarCheckboxItem({
|
|
|
5077
5306
|
checked,
|
|
5078
5307
|
...props,
|
|
5079
5308
|
children: [
|
|
5080
|
-
/* @__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" }) }) }),
|
|
5081
5310
|
children
|
|
5082
5311
|
]
|
|
5083
5312
|
}
|
|
@@ -5088,7 +5317,7 @@ function MenubarRadioItem({
|
|
|
5088
5317
|
children,
|
|
5089
5318
|
...props
|
|
5090
5319
|
}) {
|
|
5091
|
-
return /* @__PURE__ */
|
|
5320
|
+
return /* @__PURE__ */ jsxs24(
|
|
5092
5321
|
MenubarPrimitive.RadioItem,
|
|
5093
5322
|
{
|
|
5094
5323
|
"data-slot": "menubar-radio-item",
|
|
@@ -5098,7 +5327,7 @@ function MenubarRadioItem({
|
|
|
5098
5327
|
),
|
|
5099
5328
|
...props,
|
|
5100
5329
|
children: [
|
|
5101
|
-
/* @__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" }) }) }),
|
|
5102
5331
|
children
|
|
5103
5332
|
]
|
|
5104
5333
|
}
|
|
@@ -5109,7 +5338,7 @@ function MenubarLabel({
|
|
|
5109
5338
|
inset,
|
|
5110
5339
|
...props
|
|
5111
5340
|
}) {
|
|
5112
|
-
return /* @__PURE__ */
|
|
5341
|
+
return /* @__PURE__ */ jsx43(
|
|
5113
5342
|
MenubarPrimitive.Label,
|
|
5114
5343
|
{
|
|
5115
5344
|
"data-slot": "menubar-label",
|
|
@@ -5126,7 +5355,7 @@ function MenubarSeparator({
|
|
|
5126
5355
|
className,
|
|
5127
5356
|
...props
|
|
5128
5357
|
}) {
|
|
5129
|
-
return /* @__PURE__ */
|
|
5358
|
+
return /* @__PURE__ */ jsx43(
|
|
5130
5359
|
MenubarPrimitive.Separator,
|
|
5131
5360
|
{
|
|
5132
5361
|
"data-slot": "menubar-separator",
|
|
@@ -5139,7 +5368,7 @@ function MenubarShortcut({
|
|
|
5139
5368
|
className,
|
|
5140
5369
|
...props
|
|
5141
5370
|
}) {
|
|
5142
|
-
return /* @__PURE__ */
|
|
5371
|
+
return /* @__PURE__ */ jsx43(
|
|
5143
5372
|
"span",
|
|
5144
5373
|
{
|
|
5145
5374
|
"data-slot": "menubar-shortcut",
|
|
@@ -5154,7 +5383,7 @@ function MenubarShortcut({
|
|
|
5154
5383
|
function MenubarSub({
|
|
5155
5384
|
...props
|
|
5156
5385
|
}) {
|
|
5157
|
-
return /* @__PURE__ */
|
|
5386
|
+
return /* @__PURE__ */ jsx43(MenubarPrimitive.Sub, { "data-slot": "menubar-sub", ...props });
|
|
5158
5387
|
}
|
|
5159
5388
|
function MenubarSubTrigger({
|
|
5160
5389
|
className,
|
|
@@ -5162,7 +5391,7 @@ function MenubarSubTrigger({
|
|
|
5162
5391
|
children,
|
|
5163
5392
|
...props
|
|
5164
5393
|
}) {
|
|
5165
|
-
return /* @__PURE__ */
|
|
5394
|
+
return /* @__PURE__ */ jsxs24(
|
|
5166
5395
|
MenubarPrimitive.SubTrigger,
|
|
5167
5396
|
{
|
|
5168
5397
|
"data-slot": "menubar-sub-trigger",
|
|
@@ -5174,7 +5403,7 @@ function MenubarSubTrigger({
|
|
|
5174
5403
|
...props,
|
|
5175
5404
|
children: [
|
|
5176
5405
|
children,
|
|
5177
|
-
/* @__PURE__ */
|
|
5406
|
+
/* @__PURE__ */ jsx43(ChevronRightIcon3, { className: "ms-auto h-4 w-4 rtl:rotate-180" })
|
|
5178
5407
|
]
|
|
5179
5408
|
}
|
|
5180
5409
|
);
|
|
@@ -5183,7 +5412,7 @@ function MenubarSubContent({
|
|
|
5183
5412
|
className,
|
|
5184
5413
|
...props
|
|
5185
5414
|
}) {
|
|
5186
|
-
return /* @__PURE__ */
|
|
5415
|
+
return /* @__PURE__ */ jsx43(
|
|
5187
5416
|
MenubarPrimitive.SubContent,
|
|
5188
5417
|
{
|
|
5189
5418
|
"data-slot": "menubar-sub-content",
|
|
@@ -5197,14 +5426,14 @@ function MenubarSubContent({
|
|
|
5197
5426
|
}
|
|
5198
5427
|
|
|
5199
5428
|
// src/components/ui/metric-card.tsx
|
|
5200
|
-
import * as
|
|
5429
|
+
import * as React20 from "react";
|
|
5201
5430
|
import { ExternalLink, Info as Info2 } from "lucide-react";
|
|
5202
5431
|
import { format as format2 } from "date-fns";
|
|
5203
5432
|
|
|
5204
5433
|
// src/components/ui/skeleton.tsx
|
|
5205
|
-
import { jsx as
|
|
5434
|
+
import { jsx as jsx44 } from "react/jsx-runtime";
|
|
5206
5435
|
function Skeleton({ className, ...props }) {
|
|
5207
|
-
return /* @__PURE__ */
|
|
5436
|
+
return /* @__PURE__ */ jsx44(
|
|
5208
5437
|
"div",
|
|
5209
5438
|
{
|
|
5210
5439
|
"data-slot": "skeleton",
|
|
@@ -5215,25 +5444,25 @@ function Skeleton({ className, ...props }) {
|
|
|
5215
5444
|
}
|
|
5216
5445
|
|
|
5217
5446
|
// src/components/ui/metric-card.tsx
|
|
5218
|
-
import { Fragment as Fragment5, jsx as
|
|
5219
|
-
var MetricCard =
|
|
5447
|
+
import { Fragment as Fragment5, jsx as jsx45, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
5448
|
+
var MetricCard = React20.forwardRef(
|
|
5220
5449
|
({ className, isLoading, children, ...props }, ref) => {
|
|
5221
5450
|
if (isLoading) {
|
|
5222
|
-
return /* @__PURE__ */
|
|
5451
|
+
return /* @__PURE__ */ jsxs25(
|
|
5223
5452
|
Card,
|
|
5224
5453
|
{
|
|
5225
5454
|
ref,
|
|
5226
5455
|
className: cn("py-4 space-y-3", className),
|
|
5227
5456
|
...props,
|
|
5228
5457
|
children: [
|
|
5229
|
-
/* @__PURE__ */
|
|
5230
|
-
/* @__PURE__ */
|
|
5231
|
-
/* @__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" })
|
|
5232
5461
|
]
|
|
5233
5462
|
}
|
|
5234
5463
|
);
|
|
5235
5464
|
}
|
|
5236
|
-
return /* @__PURE__ */
|
|
5465
|
+
return /* @__PURE__ */ jsx45(
|
|
5237
5466
|
Card,
|
|
5238
5467
|
{
|
|
5239
5468
|
ref,
|
|
@@ -5245,9 +5474,9 @@ var MetricCard = React18.forwardRef(
|
|
|
5245
5474
|
}
|
|
5246
5475
|
);
|
|
5247
5476
|
MetricCard.displayName = "MetricCard";
|
|
5248
|
-
var MetricCardHeader =
|
|
5477
|
+
var MetricCardHeader = React20.forwardRef(
|
|
5249
5478
|
({ className, href, children, ...props }, ref) => {
|
|
5250
|
-
return /* @__PURE__ */
|
|
5479
|
+
return /* @__PURE__ */ jsxs25(
|
|
5251
5480
|
"div",
|
|
5252
5481
|
{
|
|
5253
5482
|
ref,
|
|
@@ -5255,14 +5484,14 @@ var MetricCardHeader = React18.forwardRef(
|
|
|
5255
5484
|
...props,
|
|
5256
5485
|
children: [
|
|
5257
5486
|
children,
|
|
5258
|
-
href && /* @__PURE__ */
|
|
5487
|
+
href && /* @__PURE__ */ jsx45(
|
|
5259
5488
|
"a",
|
|
5260
5489
|
{
|
|
5261
5490
|
href,
|
|
5262
5491
|
target: "_blank",
|
|
5263
5492
|
rel: "noopener noreferrer",
|
|
5264
5493
|
className: "text-foreground-lighter hover:text-foreground transition-colors",
|
|
5265
|
-
children: /* @__PURE__ */
|
|
5494
|
+
children: /* @__PURE__ */ jsx45(ExternalLink, { className: "h-3.5 w-3.5" })
|
|
5266
5495
|
}
|
|
5267
5496
|
)
|
|
5268
5497
|
]
|
|
@@ -5271,9 +5500,9 @@ var MetricCardHeader = React18.forwardRef(
|
|
|
5271
5500
|
}
|
|
5272
5501
|
);
|
|
5273
5502
|
MetricCardHeader.displayName = "MetricCardHeader";
|
|
5274
|
-
var MetricCardLabel =
|
|
5503
|
+
var MetricCardLabel = React20.forwardRef(
|
|
5275
5504
|
({ className, tooltip, icon, children, ...props }, ref) => {
|
|
5276
|
-
const label = /* @__PURE__ */
|
|
5505
|
+
const label = /* @__PURE__ */ jsx45(
|
|
5277
5506
|
"h3",
|
|
5278
5507
|
{
|
|
5279
5508
|
ref,
|
|
@@ -5282,28 +5511,28 @@ var MetricCardLabel = React18.forwardRef(
|
|
|
5282
5511
|
className
|
|
5283
5512
|
),
|
|
5284
5513
|
...props,
|
|
5285
|
-
children: /* @__PURE__ */
|
|
5286
|
-
icon && /* @__PURE__ */
|
|
5287
|
-
/* @__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 })
|
|
5288
5517
|
] })
|
|
5289
5518
|
}
|
|
5290
5519
|
);
|
|
5291
5520
|
if (tooltip) {
|
|
5292
|
-
return /* @__PURE__ */
|
|
5293
|
-
/* @__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: [
|
|
5294
5523
|
label,
|
|
5295
|
-
/* @__PURE__ */
|
|
5524
|
+
/* @__PURE__ */ jsx45(Info2, { className: "h-3.5 w-3.5 text-foreground-lighter" })
|
|
5296
5525
|
] }) }),
|
|
5297
|
-
/* @__PURE__ */
|
|
5526
|
+
/* @__PURE__ */ jsx45(TooltipContent, { children: /* @__PURE__ */ jsx45("p", { className: "max-w-xs", children: tooltip }) })
|
|
5298
5527
|
] }) });
|
|
5299
5528
|
}
|
|
5300
5529
|
return label;
|
|
5301
5530
|
}
|
|
5302
5531
|
);
|
|
5303
5532
|
MetricCardLabel.displayName = "MetricCardLabel";
|
|
5304
|
-
var MetricCardContent =
|
|
5533
|
+
var MetricCardContent = React20.forwardRef(
|
|
5305
5534
|
({ className, children, ...props }, ref) => {
|
|
5306
|
-
return /* @__PURE__ */
|
|
5535
|
+
return /* @__PURE__ */ jsx45(
|
|
5307
5536
|
"div",
|
|
5308
5537
|
{
|
|
5309
5538
|
ref,
|
|
@@ -5315,9 +5544,9 @@ var MetricCardContent = React18.forwardRef(
|
|
|
5315
5544
|
}
|
|
5316
5545
|
);
|
|
5317
5546
|
MetricCardContent.displayName = "MetricCardContent";
|
|
5318
|
-
var MetricCardValue =
|
|
5547
|
+
var MetricCardValue = React20.forwardRef(
|
|
5319
5548
|
({ className, children, ...props }, ref) => {
|
|
5320
|
-
return /* @__PURE__ */
|
|
5549
|
+
return /* @__PURE__ */ jsx45(
|
|
5321
5550
|
"div",
|
|
5322
5551
|
{
|
|
5323
5552
|
ref,
|
|
@@ -5329,7 +5558,7 @@ var MetricCardValue = React18.forwardRef(
|
|
|
5329
5558
|
}
|
|
5330
5559
|
);
|
|
5331
5560
|
MetricCardValue.displayName = "MetricCardValue";
|
|
5332
|
-
var MetricCardDifferential =
|
|
5561
|
+
var MetricCardDifferential = React20.forwardRef(
|
|
5333
5562
|
({ className, variant = "positive", children, ...props }, ref) => {
|
|
5334
5563
|
const childrenString = typeof children === "string" ? children : String(children);
|
|
5335
5564
|
const signMatch = childrenString.match(/^([+\-])|([+\-])$/);
|
|
@@ -5339,7 +5568,7 @@ var MetricCardDifferential = React18.forwardRef(
|
|
|
5339
5568
|
sign = signMatch[1] || signMatch[2] || "";
|
|
5340
5569
|
value = childrenString.replace(/^[+\-]|[+\-]$/, "").trim();
|
|
5341
5570
|
}
|
|
5342
|
-
return /* @__PURE__ */
|
|
5571
|
+
return /* @__PURE__ */ jsxs25(
|
|
5343
5572
|
"div",
|
|
5344
5573
|
{
|
|
5345
5574
|
ref,
|
|
@@ -5350,19 +5579,19 @@ var MetricCardDifferential = React18.forwardRef(
|
|
|
5350
5579
|
),
|
|
5351
5580
|
...props,
|
|
5352
5581
|
children: [
|
|
5353
|
-
/* @__PURE__ */
|
|
5354
|
-
sign && /* @__PURE__ */
|
|
5582
|
+
/* @__PURE__ */ jsx45("span", { children: value }),
|
|
5583
|
+
sign && /* @__PURE__ */ jsx45("span", { className: "inline-block", dir: "ltr", children: sign })
|
|
5355
5584
|
]
|
|
5356
5585
|
}
|
|
5357
5586
|
);
|
|
5358
5587
|
}
|
|
5359
5588
|
);
|
|
5360
5589
|
MetricCardDifferential.displayName = "MetricCardDifferential";
|
|
5361
|
-
var MetricCardSparkline =
|
|
5590
|
+
var MetricCardSparkline = React20.forwardRef(
|
|
5362
5591
|
({ data, dataKey, usePersianCalendar = false, className }, _ref) => {
|
|
5363
|
-
const [hoveredIndex, setHoveredIndex] =
|
|
5364
|
-
const [tooltipPosition, setTooltipPosition] =
|
|
5365
|
-
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);
|
|
5366
5595
|
if (!data || data.length === 0) return null;
|
|
5367
5596
|
const values = data.map((item) => item[dataKey]);
|
|
5368
5597
|
const timestamps = data.map((item) => new Date(item.timestamp));
|
|
@@ -5388,7 +5617,7 @@ var MetricCardSparkline = React18.forwardRef(
|
|
|
5388
5617
|
areaPath += ` L ${points[0].x},${height}`;
|
|
5389
5618
|
areaPath += ` Z`;
|
|
5390
5619
|
const isPositive = values[values.length - 1] >= values[0];
|
|
5391
|
-
const gradientId =
|
|
5620
|
+
const gradientId = React20.useId();
|
|
5392
5621
|
const handleMouseMove = (e) => {
|
|
5393
5622
|
if (!containerRef.current) return;
|
|
5394
5623
|
const rect = containerRef.current.getBoundingClientRect();
|
|
@@ -5423,7 +5652,7 @@ var MetricCardSparkline = React18.forwardRef(
|
|
|
5423
5652
|
return format2(date, "MMM d");
|
|
5424
5653
|
}
|
|
5425
5654
|
};
|
|
5426
|
-
return /* @__PURE__ */
|
|
5655
|
+
return /* @__PURE__ */ jsxs25(
|
|
5427
5656
|
"div",
|
|
5428
5657
|
{
|
|
5429
5658
|
ref: containerRef,
|
|
@@ -5431,7 +5660,7 @@ var MetricCardSparkline = React18.forwardRef(
|
|
|
5431
5660
|
onMouseMove: handleMouseMove,
|
|
5432
5661
|
onMouseLeave: handleMouseLeave,
|
|
5433
5662
|
children: [
|
|
5434
|
-
/* @__PURE__ */
|
|
5663
|
+
/* @__PURE__ */ jsxs25(
|
|
5435
5664
|
"svg",
|
|
5436
5665
|
{
|
|
5437
5666
|
width: "100%",
|
|
@@ -5440,8 +5669,8 @@ var MetricCardSparkline = React18.forwardRef(
|
|
|
5440
5669
|
preserveAspectRatio: "none",
|
|
5441
5670
|
className: "overflow-visible",
|
|
5442
5671
|
children: [
|
|
5443
|
-
/* @__PURE__ */
|
|
5444
|
-
/* @__PURE__ */
|
|
5672
|
+
/* @__PURE__ */ jsx45("defs", { children: /* @__PURE__ */ jsxs25("linearGradient", { id: gradientId, x1: "0", x2: "0", y1: "0", y2: "1", children: [
|
|
5673
|
+
/* @__PURE__ */ jsx45(
|
|
5445
5674
|
"stop",
|
|
5446
5675
|
{
|
|
5447
5676
|
offset: "0%",
|
|
@@ -5452,7 +5681,7 @@ var MetricCardSparkline = React18.forwardRef(
|
|
|
5452
5681
|
)
|
|
5453
5682
|
}
|
|
5454
5683
|
),
|
|
5455
|
-
/* @__PURE__ */
|
|
5684
|
+
/* @__PURE__ */ jsx45(
|
|
5456
5685
|
"stop",
|
|
5457
5686
|
{
|
|
5458
5687
|
offset: "100%",
|
|
@@ -5464,14 +5693,14 @@ var MetricCardSparkline = React18.forwardRef(
|
|
|
5464
5693
|
}
|
|
5465
5694
|
)
|
|
5466
5695
|
] }) }),
|
|
5467
|
-
/* @__PURE__ */
|
|
5696
|
+
/* @__PURE__ */ jsx45(
|
|
5468
5697
|
"path",
|
|
5469
5698
|
{
|
|
5470
5699
|
d: areaPath,
|
|
5471
5700
|
fill: `url(#${gradientId})`
|
|
5472
5701
|
}
|
|
5473
5702
|
),
|
|
5474
|
-
/* @__PURE__ */
|
|
5703
|
+
/* @__PURE__ */ jsx45(
|
|
5475
5704
|
"path",
|
|
5476
5705
|
{
|
|
5477
5706
|
d: pathData,
|
|
@@ -5485,8 +5714,8 @@ var MetricCardSparkline = React18.forwardRef(
|
|
|
5485
5714
|
)
|
|
5486
5715
|
}
|
|
5487
5716
|
),
|
|
5488
|
-
hoveredIndex !== null && hoveredIndex < points.length - 1 && /* @__PURE__ */
|
|
5489
|
-
/* @__PURE__ */
|
|
5717
|
+
hoveredIndex !== null && hoveredIndex < points.length - 1 && /* @__PURE__ */ jsxs25(Fragment5, { children: [
|
|
5718
|
+
/* @__PURE__ */ jsx45(
|
|
5490
5719
|
"line",
|
|
5491
5720
|
{
|
|
5492
5721
|
x1: (points[hoveredIndex].x + points[hoveredIndex + 1].x) / 2,
|
|
@@ -5499,7 +5728,7 @@ var MetricCardSparkline = React18.forwardRef(
|
|
|
5499
5728
|
className: "text-foreground-lighter opacity-50"
|
|
5500
5729
|
}
|
|
5501
5730
|
),
|
|
5502
|
-
/* @__PURE__ */
|
|
5731
|
+
/* @__PURE__ */ jsx45(
|
|
5503
5732
|
"circle",
|
|
5504
5733
|
{
|
|
5505
5734
|
cx: (points[hoveredIndex].x + points[hoveredIndex + 1].x) / 2,
|
|
@@ -5513,7 +5742,7 @@ var MetricCardSparkline = React18.forwardRef(
|
|
|
5513
5742
|
)
|
|
5514
5743
|
}
|
|
5515
5744
|
),
|
|
5516
|
-
/* @__PURE__ */
|
|
5745
|
+
/* @__PURE__ */ jsx45(
|
|
5517
5746
|
"circle",
|
|
5518
5747
|
{
|
|
5519
5748
|
cx: (points[hoveredIndex].x + points[hoveredIndex + 1].x) / 2,
|
|
@@ -5529,7 +5758,7 @@ var MetricCardSparkline = React18.forwardRef(
|
|
|
5529
5758
|
]
|
|
5530
5759
|
}
|
|
5531
5760
|
),
|
|
5532
|
-
hoveredIndex !== null && hoveredIndex < points.length - 1 && /* @__PURE__ */
|
|
5761
|
+
hoveredIndex !== null && hoveredIndex < points.length - 1 && /* @__PURE__ */ jsx45(
|
|
5533
5762
|
"div",
|
|
5534
5763
|
{
|
|
5535
5764
|
className: "absolute z-50 pointer-events-none",
|
|
@@ -5537,9 +5766,9 @@ var MetricCardSparkline = React18.forwardRef(
|
|
|
5537
5766
|
left: `${tooltipPosition.x + 8}px`,
|
|
5538
5767
|
top: `${tooltipPosition.y - 40}px`
|
|
5539
5768
|
},
|
|
5540
|
-
children: /* @__PURE__ */
|
|
5541
|
-
/* @__PURE__ */
|
|
5542
|
-
/* @__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") })
|
|
5543
5772
|
] })
|
|
5544
5773
|
}
|
|
5545
5774
|
)
|
|
@@ -5552,15 +5781,15 @@ MetricCardSparkline.displayName = "MetricCardSparkline";
|
|
|
5552
5781
|
|
|
5553
5782
|
// src/components/ui/native-select.tsx
|
|
5554
5783
|
import { ChevronDownIcon as ChevronDownIcon3 } from "lucide-react";
|
|
5555
|
-
import { jsx as
|
|
5784
|
+
import { jsx as jsx46, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
5556
5785
|
function NativeSelect({ className, ...props }) {
|
|
5557
|
-
return /* @__PURE__ */
|
|
5786
|
+
return /* @__PURE__ */ jsxs26(
|
|
5558
5787
|
"div",
|
|
5559
5788
|
{
|
|
5560
5789
|
className: "group/native-select relative w-fit has-[select:disabled]:opacity-50",
|
|
5561
5790
|
"data-slot": "native-select-wrapper",
|
|
5562
5791
|
children: [
|
|
5563
|
-
/* @__PURE__ */
|
|
5792
|
+
/* @__PURE__ */ jsx46(
|
|
5564
5793
|
"select",
|
|
5565
5794
|
{
|
|
5566
5795
|
"data-slot": "native-select",
|
|
@@ -5582,7 +5811,7 @@ function NativeSelect({ className, ...props }) {
|
|
|
5582
5811
|
...props
|
|
5583
5812
|
}
|
|
5584
5813
|
),
|
|
5585
|
-
/* @__PURE__ */
|
|
5814
|
+
/* @__PURE__ */ jsx46(
|
|
5586
5815
|
ChevronDownIcon3,
|
|
5587
5816
|
{
|
|
5588
5817
|
className: "pointer-events-none absolute top-1/2 end-3 size-4 -translate-y-1/2 text-foreground-muted select-none",
|
|
@@ -5595,13 +5824,13 @@ function NativeSelect({ className, ...props }) {
|
|
|
5595
5824
|
);
|
|
5596
5825
|
}
|
|
5597
5826
|
function NativeSelectOption({ ...props }) {
|
|
5598
|
-
return /* @__PURE__ */
|
|
5827
|
+
return /* @__PURE__ */ jsx46("option", { "data-slot": "native-select-option", ...props });
|
|
5599
5828
|
}
|
|
5600
5829
|
function NativeSelectOptGroup({
|
|
5601
5830
|
className,
|
|
5602
5831
|
...props
|
|
5603
5832
|
}) {
|
|
5604
|
-
return /* @__PURE__ */
|
|
5833
|
+
return /* @__PURE__ */ jsx46(
|
|
5605
5834
|
"optgroup",
|
|
5606
5835
|
{
|
|
5607
5836
|
"data-slot": "native-select-optgroup",
|
|
@@ -5613,16 +5842,16 @@ function NativeSelectOptGroup({
|
|
|
5613
5842
|
|
|
5614
5843
|
// src/components/ui/navigation-menu.tsx
|
|
5615
5844
|
import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
|
|
5616
|
-
import { cva as
|
|
5845
|
+
import { cva as cva11 } from "class-variance-authority";
|
|
5617
5846
|
import { ChevronDownIcon as ChevronDownIcon4 } from "lucide-react";
|
|
5618
|
-
import { jsx as
|
|
5847
|
+
import { jsx as jsx47, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
5619
5848
|
function NavigationMenu({
|
|
5620
5849
|
className,
|
|
5621
5850
|
children,
|
|
5622
5851
|
viewport = true,
|
|
5623
5852
|
...props
|
|
5624
5853
|
}) {
|
|
5625
|
-
return /* @__PURE__ */
|
|
5854
|
+
return /* @__PURE__ */ jsxs27(
|
|
5626
5855
|
NavigationMenuPrimitive.Root,
|
|
5627
5856
|
{
|
|
5628
5857
|
"data-slot": "navigation-menu",
|
|
@@ -5634,7 +5863,7 @@ function NavigationMenu({
|
|
|
5634
5863
|
...props,
|
|
5635
5864
|
children: [
|
|
5636
5865
|
children,
|
|
5637
|
-
viewport && /* @__PURE__ */
|
|
5866
|
+
viewport && /* @__PURE__ */ jsx47(NavigationMenuViewport, {})
|
|
5638
5867
|
]
|
|
5639
5868
|
}
|
|
5640
5869
|
);
|
|
@@ -5643,7 +5872,7 @@ function NavigationMenuList({
|
|
|
5643
5872
|
className,
|
|
5644
5873
|
...props
|
|
5645
5874
|
}) {
|
|
5646
|
-
return /* @__PURE__ */
|
|
5875
|
+
return /* @__PURE__ */ jsx47(
|
|
5647
5876
|
NavigationMenuPrimitive.List,
|
|
5648
5877
|
{
|
|
5649
5878
|
"data-slot": "navigation-menu-list",
|
|
@@ -5659,7 +5888,7 @@ function NavigationMenuItem({
|
|
|
5659
5888
|
className,
|
|
5660
5889
|
...props
|
|
5661
5890
|
}) {
|
|
5662
|
-
return /* @__PURE__ */
|
|
5891
|
+
return /* @__PURE__ */ jsx47(
|
|
5663
5892
|
NavigationMenuPrimitive.Item,
|
|
5664
5893
|
{
|
|
5665
5894
|
"data-slot": "navigation-menu-item",
|
|
@@ -5668,7 +5897,7 @@ function NavigationMenuItem({
|
|
|
5668
5897
|
}
|
|
5669
5898
|
);
|
|
5670
5899
|
}
|
|
5671
|
-
var navigationMenuTriggerStyle =
|
|
5900
|
+
var navigationMenuTriggerStyle = cva11(
|
|
5672
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"
|
|
5673
5902
|
);
|
|
5674
5903
|
function NavigationMenuTrigger({
|
|
@@ -5676,7 +5905,7 @@ function NavigationMenuTrigger({
|
|
|
5676
5905
|
children,
|
|
5677
5906
|
...props
|
|
5678
5907
|
}) {
|
|
5679
|
-
return /* @__PURE__ */
|
|
5908
|
+
return /* @__PURE__ */ jsxs27(
|
|
5680
5909
|
NavigationMenuPrimitive.Trigger,
|
|
5681
5910
|
{
|
|
5682
5911
|
"data-slot": "navigation-menu-trigger",
|
|
@@ -5685,7 +5914,7 @@ function NavigationMenuTrigger({
|
|
|
5685
5914
|
children: [
|
|
5686
5915
|
children,
|
|
5687
5916
|
" ",
|
|
5688
|
-
/* @__PURE__ */
|
|
5917
|
+
/* @__PURE__ */ jsx47(
|
|
5689
5918
|
ChevronDownIcon4,
|
|
5690
5919
|
{
|
|
5691
5920
|
className: "relative top-[1px] ms-1 size-3 transition duration-300 group-data-[state=open]:rotate-180",
|
|
@@ -5700,7 +5929,7 @@ function NavigationMenuContent({
|
|
|
5700
5929
|
className,
|
|
5701
5930
|
...props
|
|
5702
5931
|
}) {
|
|
5703
|
-
return /* @__PURE__ */
|
|
5932
|
+
return /* @__PURE__ */ jsx47(
|
|
5704
5933
|
NavigationMenuPrimitive.Content,
|
|
5705
5934
|
{
|
|
5706
5935
|
"data-slot": "navigation-menu-content",
|
|
@@ -5717,13 +5946,13 @@ function NavigationMenuViewport({
|
|
|
5717
5946
|
className,
|
|
5718
5947
|
...props
|
|
5719
5948
|
}) {
|
|
5720
|
-
return /* @__PURE__ */
|
|
5949
|
+
return /* @__PURE__ */ jsx47(
|
|
5721
5950
|
"div",
|
|
5722
5951
|
{
|
|
5723
5952
|
className: cn(
|
|
5724
5953
|
"absolute top-full start-0 isolate z-50 flex justify-center"
|
|
5725
5954
|
),
|
|
5726
|
-
children: /* @__PURE__ */
|
|
5955
|
+
children: /* @__PURE__ */ jsx47(
|
|
5727
5956
|
NavigationMenuPrimitive.Viewport,
|
|
5728
5957
|
{
|
|
5729
5958
|
"data-slot": "navigation-menu-viewport",
|
|
@@ -5741,7 +5970,7 @@ function NavigationMenuLink({
|
|
|
5741
5970
|
className,
|
|
5742
5971
|
...props
|
|
5743
5972
|
}) {
|
|
5744
|
-
return /* @__PURE__ */
|
|
5973
|
+
return /* @__PURE__ */ jsx47(
|
|
5745
5974
|
NavigationMenuPrimitive.Link,
|
|
5746
5975
|
{
|
|
5747
5976
|
"data-slot": "navigation-menu-link",
|
|
@@ -5757,7 +5986,7 @@ function NavigationMenuIndicator({
|
|
|
5757
5986
|
className,
|
|
5758
5987
|
...props
|
|
5759
5988
|
}) {
|
|
5760
|
-
return /* @__PURE__ */
|
|
5989
|
+
return /* @__PURE__ */ jsx47(
|
|
5761
5990
|
NavigationMenuPrimitive.Indicator,
|
|
5762
5991
|
{
|
|
5763
5992
|
"data-slot": "navigation-menu-indicator",
|
|
@@ -5766,22 +5995,22 @@ function NavigationMenuIndicator({
|
|
|
5766
5995
|
className
|
|
5767
5996
|
),
|
|
5768
5997
|
...props,
|
|
5769
|
-
children: /* @__PURE__ */
|
|
5998
|
+
children: /* @__PURE__ */ jsx47("div", { className: "bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm shadow-md" })
|
|
5770
5999
|
}
|
|
5771
6000
|
);
|
|
5772
6001
|
}
|
|
5773
6002
|
|
|
5774
6003
|
// src/components/ui/pagination.tsx
|
|
5775
|
-
import * as
|
|
6004
|
+
import * as React21 from "react";
|
|
5776
6005
|
import {
|
|
5777
6006
|
ChevronLeftIcon,
|
|
5778
6007
|
ChevronRightIcon as ChevronRightIcon4,
|
|
5779
6008
|
MoreHorizontalIcon
|
|
5780
6009
|
} from "lucide-react";
|
|
5781
|
-
import { Fragment as Fragment6, jsx as
|
|
5782
|
-
var PaginationDirectionContext =
|
|
6010
|
+
import { Fragment as Fragment6, jsx as jsx48, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
6011
|
+
var PaginationDirectionContext = React21.createContext("rtl");
|
|
5783
6012
|
function usePaginationDirection() {
|
|
5784
|
-
return
|
|
6013
|
+
return React21.useContext(PaginationDirectionContext);
|
|
5785
6014
|
}
|
|
5786
6015
|
function Pagination({
|
|
5787
6016
|
className,
|
|
@@ -5790,7 +6019,7 @@ function Pagination({
|
|
|
5790
6019
|
...props
|
|
5791
6020
|
}) {
|
|
5792
6021
|
const resolvedDir = dir ?? "rtl";
|
|
5793
|
-
return /* @__PURE__ */
|
|
6022
|
+
return /* @__PURE__ */ jsx48(PaginationDirectionContext.Provider, { value: resolvedDir, children: /* @__PURE__ */ jsx48(
|
|
5794
6023
|
"nav",
|
|
5795
6024
|
{
|
|
5796
6025
|
role: "navigation",
|
|
@@ -5808,7 +6037,7 @@ function PaginationContent({
|
|
|
5808
6037
|
...props
|
|
5809
6038
|
}) {
|
|
5810
6039
|
const dir = usePaginationDirection();
|
|
5811
|
-
return /* @__PURE__ */
|
|
6040
|
+
return /* @__PURE__ */ jsx48(
|
|
5812
6041
|
"ul",
|
|
5813
6042
|
{
|
|
5814
6043
|
"data-slot": "pagination-content",
|
|
@@ -5822,7 +6051,7 @@ function PaginationContent({
|
|
|
5822
6051
|
);
|
|
5823
6052
|
}
|
|
5824
6053
|
function PaginationItem({ ...props }) {
|
|
5825
|
-
return /* @__PURE__ */
|
|
6054
|
+
return /* @__PURE__ */ jsx48("li", { "data-slot": "pagination-item", ...props });
|
|
5826
6055
|
}
|
|
5827
6056
|
function PaginationLink({
|
|
5828
6057
|
className,
|
|
@@ -5833,7 +6062,7 @@ function PaginationLink({
|
|
|
5833
6062
|
}) {
|
|
5834
6063
|
const contextDir = usePaginationDirection();
|
|
5835
6064
|
const linkDir = dir ?? (contextDir === "rtl" ? "rtl" : "ltr");
|
|
5836
|
-
return /* @__PURE__ */
|
|
6065
|
+
return /* @__PURE__ */ jsx48(
|
|
5837
6066
|
"a",
|
|
5838
6067
|
{
|
|
5839
6068
|
"aria-current": isActive ? "page" : void 0,
|
|
@@ -5867,7 +6096,7 @@ function PaginationPrevious({
|
|
|
5867
6096
|
const isRTL = dir === "rtl";
|
|
5868
6097
|
const label = isRTL ? "\u0642\u0628\u0644\u06CC" : "Previous";
|
|
5869
6098
|
const Icon2 = isRTL ? ChevronRightIcon4 : ChevronLeftIcon;
|
|
5870
|
-
return /* @__PURE__ */
|
|
6099
|
+
return /* @__PURE__ */ jsxs28(
|
|
5871
6100
|
PaginationLink,
|
|
5872
6101
|
{
|
|
5873
6102
|
"aria-label": isRTL ? "\u0631\u0641\u062A\u0646 \u0628\u0647 \u0635\u0641\u062D\u0647 \u0642\u0628\u0644\u06CC" : "Go to previous page",
|
|
@@ -5879,8 +6108,8 @@ function PaginationPrevious({
|
|
|
5879
6108
|
dir: "ltr",
|
|
5880
6109
|
...props,
|
|
5881
6110
|
children: [
|
|
5882
|
-
/* @__PURE__ */
|
|
5883
|
-
/* @__PURE__ */
|
|
6111
|
+
/* @__PURE__ */ jsx48(Icon2, { className: "size-4" }),
|
|
6112
|
+
/* @__PURE__ */ jsx48("span", { className: "hidden sm:inline no-underline", children: label })
|
|
5884
6113
|
]
|
|
5885
6114
|
}
|
|
5886
6115
|
);
|
|
@@ -5893,7 +6122,7 @@ function PaginationNext({
|
|
|
5893
6122
|
const isRTL = dir === "rtl";
|
|
5894
6123
|
const label = isRTL ? "\u0628\u0639\u062F\u06CC" : "Next";
|
|
5895
6124
|
const Icon2 = isRTL ? ChevronLeftIcon : ChevronRightIcon4;
|
|
5896
|
-
return /* @__PURE__ */
|
|
6125
|
+
return /* @__PURE__ */ jsx48(
|
|
5897
6126
|
PaginationLink,
|
|
5898
6127
|
{
|
|
5899
6128
|
"aria-label": isRTL ? "\u0631\u0641\u062A\u0646 \u0628\u0647 \u0635\u0641\u062D\u0647 \u0628\u0639\u062F\u06CC" : "Go to next page",
|
|
@@ -5904,12 +6133,12 @@ function PaginationNext({
|
|
|
5904
6133
|
),
|
|
5905
6134
|
dir: "ltr",
|
|
5906
6135
|
...props,
|
|
5907
|
-
children: isRTL ? /* @__PURE__ */
|
|
5908
|
-
/* @__PURE__ */
|
|
5909
|
-
/* @__PURE__ */
|
|
5910
|
-
] }) : /* @__PURE__ */
|
|
5911
|
-
/* @__PURE__ */
|
|
5912
|
-
/* @__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" })
|
|
5913
6142
|
] })
|
|
5914
6143
|
}
|
|
5915
6144
|
);
|
|
@@ -5918,7 +6147,7 @@ function PaginationEllipsis({
|
|
|
5918
6147
|
className,
|
|
5919
6148
|
...props
|
|
5920
6149
|
}) {
|
|
5921
|
-
return /* @__PURE__ */
|
|
6150
|
+
return /* @__PURE__ */ jsxs28(
|
|
5922
6151
|
"span",
|
|
5923
6152
|
{
|
|
5924
6153
|
"aria-hidden": true,
|
|
@@ -5926,15 +6155,15 @@ function PaginationEllipsis({
|
|
|
5926
6155
|
className: cn("flex size-9 items-center justify-center", className),
|
|
5927
6156
|
...props,
|
|
5928
6157
|
children: [
|
|
5929
|
-
/* @__PURE__ */
|
|
5930
|
-
/* @__PURE__ */
|
|
6158
|
+
/* @__PURE__ */ jsx48(MoreHorizontalIcon, { className: "size-4" }),
|
|
6159
|
+
/* @__PURE__ */ jsx48("span", { className: "sr-only", children: "More pages" })
|
|
5931
6160
|
]
|
|
5932
6161
|
}
|
|
5933
6162
|
);
|
|
5934
6163
|
}
|
|
5935
6164
|
|
|
5936
6165
|
// src/components/ui/pagination-controlled.tsx
|
|
5937
|
-
import { jsx as
|
|
6166
|
+
import { jsx as jsx49, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
5938
6167
|
function PaginationControlled({
|
|
5939
6168
|
currentPage,
|
|
5940
6169
|
totalPages,
|
|
@@ -5997,8 +6226,8 @@ function PaginationControlled({
|
|
|
5997
6226
|
const pageNumbers = generatePageNumbers();
|
|
5998
6227
|
const showFirstButton = showFirstLast && !pageNumbers.includes(1) && currentPage > 1;
|
|
5999
6228
|
const showLastButton = showFirstLast && !pageNumbers.includes(totalPages) && currentPage < totalPages;
|
|
6000
|
-
return /* @__PURE__ */
|
|
6001
|
-
showFirstButton && /* @__PURE__ */
|
|
6229
|
+
return /* @__PURE__ */ jsx49(Pagination, { className, dir, children: /* @__PURE__ */ jsxs29(PaginationContent, { children: [
|
|
6230
|
+
showFirstButton && /* @__PURE__ */ jsx49(PaginationItem, { children: /* @__PURE__ */ jsx49(
|
|
6002
6231
|
PaginationLink,
|
|
6003
6232
|
{
|
|
6004
6233
|
href: "#",
|
|
@@ -6009,7 +6238,7 @@ function PaginationControlled({
|
|
|
6009
6238
|
children: 1 .toLocaleString("fa-IR")
|
|
6010
6239
|
}
|
|
6011
6240
|
) }),
|
|
6012
|
-
showPrevNext && /* @__PURE__ */
|
|
6241
|
+
showPrevNext && /* @__PURE__ */ jsx49(PaginationItem, { children: /* @__PURE__ */ jsx49(
|
|
6013
6242
|
PaginationPrevious,
|
|
6014
6243
|
{
|
|
6015
6244
|
href: "#",
|
|
@@ -6022,9 +6251,9 @@ function PaginationControlled({
|
|
|
6022
6251
|
) }),
|
|
6023
6252
|
pageNumbers.map((page, index) => {
|
|
6024
6253
|
if (page === "ellipsis") {
|
|
6025
|
-
return /* @__PURE__ */
|
|
6254
|
+
return /* @__PURE__ */ jsx49(PaginationItem, { children: /* @__PURE__ */ jsx49(PaginationEllipsis, {}) }, `ellipsis-${index}`);
|
|
6026
6255
|
}
|
|
6027
|
-
return /* @__PURE__ */
|
|
6256
|
+
return /* @__PURE__ */ jsx49(PaginationItem, { children: /* @__PURE__ */ jsx49(
|
|
6028
6257
|
PaginationLink,
|
|
6029
6258
|
{
|
|
6030
6259
|
href: "#",
|
|
@@ -6037,7 +6266,7 @@ function PaginationControlled({
|
|
|
6037
6266
|
}
|
|
6038
6267
|
) }, page);
|
|
6039
6268
|
}),
|
|
6040
|
-
showPrevNext && /* @__PURE__ */
|
|
6269
|
+
showPrevNext && /* @__PURE__ */ jsx49(PaginationItem, { children: /* @__PURE__ */ jsx49(
|
|
6041
6270
|
PaginationNext,
|
|
6042
6271
|
{
|
|
6043
6272
|
href: "#",
|
|
@@ -6048,7 +6277,7 @@ function PaginationControlled({
|
|
|
6048
6277
|
className: currentPage === totalPages ? "pointer-events-none opacity-50" : ""
|
|
6049
6278
|
}
|
|
6050
6279
|
) }),
|
|
6051
|
-
showLastButton && /* @__PURE__ */
|
|
6280
|
+
showLastButton && /* @__PURE__ */ jsx49(PaginationItem, { children: /* @__PURE__ */ jsx49(
|
|
6052
6281
|
PaginationLink,
|
|
6053
6282
|
{
|
|
6054
6283
|
href: "#",
|
|
@@ -6063,8 +6292,8 @@ function PaginationControlled({
|
|
|
6063
6292
|
}
|
|
6064
6293
|
|
|
6065
6294
|
// src/components/ui/profile-card.tsx
|
|
6066
|
-
import * as
|
|
6067
|
-
import { jsx as
|
|
6295
|
+
import * as React22 from "react";
|
|
6296
|
+
import { jsx as jsx50, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
6068
6297
|
var formatFollowers2 = (count) => {
|
|
6069
6298
|
if (count >= 1e6) {
|
|
6070
6299
|
return `${(count / 1e6).toFixed(1).replace(/\.0$/, "")}M`;
|
|
@@ -6074,7 +6303,7 @@ var formatFollowers2 = (count) => {
|
|
|
6074
6303
|
}
|
|
6075
6304
|
return count.toString();
|
|
6076
6305
|
};
|
|
6077
|
-
var ProfileCard =
|
|
6306
|
+
var ProfileCard = React22.forwardRef(
|
|
6078
6307
|
({
|
|
6079
6308
|
className,
|
|
6080
6309
|
name,
|
|
@@ -6122,7 +6351,7 @@ var ProfileCard = React20.forwardRef(
|
|
|
6122
6351
|
transparent: "bg-transparent border border-border"
|
|
6123
6352
|
};
|
|
6124
6353
|
const currentSize = sizeClasses[size];
|
|
6125
|
-
return /* @__PURE__ */
|
|
6354
|
+
return /* @__PURE__ */ jsxs30(
|
|
6126
6355
|
"div",
|
|
6127
6356
|
{
|
|
6128
6357
|
ref,
|
|
@@ -6136,22 +6365,22 @@ var ProfileCard = React20.forwardRef(
|
|
|
6136
6365
|
onClick: onCardClick,
|
|
6137
6366
|
...props,
|
|
6138
6367
|
children: [
|
|
6139
|
-
/* @__PURE__ */
|
|
6140
|
-
/* @__PURE__ */
|
|
6141
|
-
/* @__PURE__ */
|
|
6142
|
-
] }) }) : avatarBorderVariant === "primary" ? /* @__PURE__ */
|
|
6143
|
-
/* @__PURE__ */
|
|
6144
|
-
/* @__PURE__ */
|
|
6145
|
-
] }) : /* @__PURE__ */
|
|
6146
|
-
/* @__PURE__ */
|
|
6147
|
-
/* @__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) })
|
|
6148
6377
|
] }) }),
|
|
6149
|
-
/* @__PURE__ */
|
|
6150
|
-
/* @__PURE__ */
|
|
6151
|
-
/* @__PURE__ */
|
|
6152
|
-
followers !== void 0 && /* @__PURE__ */
|
|
6153
|
-
followersIcon && /* @__PURE__ */
|
|
6154
|
-
/* @__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) })
|
|
6155
6384
|
] })
|
|
6156
6385
|
] })
|
|
6157
6386
|
]
|
|
@@ -6162,9 +6391,9 @@ var ProfileCard = React20.forwardRef(
|
|
|
6162
6391
|
ProfileCard.displayName = "ProfileCard";
|
|
6163
6392
|
|
|
6164
6393
|
// src/components/ui/profile-info.tsx
|
|
6165
|
-
import * as
|
|
6166
|
-
import { jsx as
|
|
6167
|
-
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(
|
|
6168
6397
|
({
|
|
6169
6398
|
className,
|
|
6170
6399
|
name,
|
|
@@ -6219,7 +6448,7 @@ var ProfileInfo = React21.forwardRef(
|
|
|
6219
6448
|
none: ""
|
|
6220
6449
|
};
|
|
6221
6450
|
const currentSize = sizeClasses[size];
|
|
6222
|
-
return /* @__PURE__ */
|
|
6451
|
+
return /* @__PURE__ */ jsxs31(
|
|
6223
6452
|
"div",
|
|
6224
6453
|
{
|
|
6225
6454
|
ref,
|
|
@@ -6233,24 +6462,24 @@ var ProfileInfo = React21.forwardRef(
|
|
|
6233
6462
|
onClick: onProfileClick,
|
|
6234
6463
|
...props,
|
|
6235
6464
|
children: [
|
|
6236
|
-
/* @__PURE__ */
|
|
6237
|
-
/* @__PURE__ */
|
|
6238
|
-
/* @__PURE__ */
|
|
6239
|
-
/* @__PURE__ */
|
|
6240
|
-
] }) }) : /* @__PURE__ */
|
|
6241
|
-
/* @__PURE__ */
|
|
6242
|
-
/* @__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) })
|
|
6243
6472
|
] }) }),
|
|
6244
|
-
/* @__PURE__ */
|
|
6245
|
-
/* @__PURE__ */
|
|
6246
|
-
/* @__PURE__ */
|
|
6247
|
-
infoText && /* @__PURE__ */
|
|
6248
|
-
infoIcon && /* @__PURE__ */
|
|
6249
|
-
/* @__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 })
|
|
6250
6479
|
] })
|
|
6251
6480
|
] })
|
|
6252
6481
|
] }),
|
|
6253
|
-
(actionIcon || onActionClick) && /* @__PURE__ */
|
|
6482
|
+
(actionIcon || onActionClick) && /* @__PURE__ */ jsx51(
|
|
6254
6483
|
Button,
|
|
6255
6484
|
{
|
|
6256
6485
|
variant: "ghost",
|
|
@@ -6261,7 +6490,7 @@ var ProfileInfo = React21.forwardRef(
|
|
|
6261
6490
|
onActionClick?.();
|
|
6262
6491
|
},
|
|
6263
6492
|
"aria-label": "\u0639\u0645\u0644\u06CC\u0627\u062A",
|
|
6264
|
-
children: actionIcon || /* @__PURE__ */
|
|
6493
|
+
children: actionIcon || /* @__PURE__ */ jsxs31(
|
|
6265
6494
|
"svg",
|
|
6266
6495
|
{
|
|
6267
6496
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -6274,9 +6503,9 @@ var ProfileInfo = React21.forwardRef(
|
|
|
6274
6503
|
strokeLinecap: "round",
|
|
6275
6504
|
strokeLinejoin: "round",
|
|
6276
6505
|
children: [
|
|
6277
|
-
/* @__PURE__ */
|
|
6278
|
-
/* @__PURE__ */
|
|
6279
|
-
/* @__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" })
|
|
6280
6509
|
]
|
|
6281
6510
|
}
|
|
6282
6511
|
)
|
|
@@ -6290,9 +6519,9 @@ var ProfileInfo = React21.forwardRef(
|
|
|
6290
6519
|
ProfileInfo.displayName = "ProfileInfo";
|
|
6291
6520
|
|
|
6292
6521
|
// src/components/ui/engagement-rate.tsx
|
|
6293
|
-
import * as
|
|
6522
|
+
import * as React24 from "react";
|
|
6294
6523
|
import { TrendingUp, Users as Users2, UserCheck, Award, Crown } from "lucide-react";
|
|
6295
|
-
import { jsx as
|
|
6524
|
+
import { jsx as jsx52, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
6296
6525
|
var convertToLocalNumbers2 = (text, locale) => {
|
|
6297
6526
|
if (locale === "fa" || locale === "ar") {
|
|
6298
6527
|
const persianDigits = ["\u06F0", "\u06F1", "\u06F2", "\u06F3", "\u06F4", "\u06F5", "\u06F6", "\u06F7", "\u06F8", "\u06F9"];
|
|
@@ -6351,17 +6580,17 @@ var getGroupIcon = (group) => {
|
|
|
6351
6580
|
const iconClass = "w-12 h-12 text-primary";
|
|
6352
6581
|
switch (group) {
|
|
6353
6582
|
case "nano":
|
|
6354
|
-
return /* @__PURE__ */
|
|
6583
|
+
return /* @__PURE__ */ jsx52(Users2, { className: iconClass });
|
|
6355
6584
|
case "micro":
|
|
6356
|
-
return /* @__PURE__ */
|
|
6585
|
+
return /* @__PURE__ */ jsx52(UserCheck, { className: iconClass });
|
|
6357
6586
|
case "mid":
|
|
6358
|
-
return /* @__PURE__ */
|
|
6587
|
+
return /* @__PURE__ */ jsx52(TrendingUp, { className: iconClass });
|
|
6359
6588
|
case "macro":
|
|
6360
|
-
return /* @__PURE__ */
|
|
6589
|
+
return /* @__PURE__ */ jsx52(Award, { className: iconClass });
|
|
6361
6590
|
case "mega":
|
|
6362
|
-
return /* @__PURE__ */
|
|
6591
|
+
return /* @__PURE__ */ jsx52(Crown, { className: iconClass });
|
|
6363
6592
|
default:
|
|
6364
|
-
return /* @__PURE__ */
|
|
6593
|
+
return /* @__PURE__ */ jsx52(Users2, { className: iconClass });
|
|
6365
6594
|
}
|
|
6366
6595
|
};
|
|
6367
6596
|
var translations = {
|
|
@@ -6432,7 +6661,7 @@ var translations = {
|
|
|
6432
6661
|
mega: "Mega"
|
|
6433
6662
|
}
|
|
6434
6663
|
};
|
|
6435
|
-
var EngagementRate =
|
|
6664
|
+
var EngagementRate = React24.forwardRef(
|
|
6436
6665
|
({ className, currentRate, followers, locale = "fa", showCategoryCard = true, ...props }, ref) => {
|
|
6437
6666
|
const isRTL = locale === "fa" || locale === "ar";
|
|
6438
6667
|
const t = translations[locale];
|
|
@@ -6554,13 +6783,13 @@ var EngagementRate = React22.forwardRef(
|
|
|
6554
6783
|
return `${formatNumber2(1e3)} ${t.to} ${formatNumber2(1e4)} ${t.followers}`;
|
|
6555
6784
|
}
|
|
6556
6785
|
};
|
|
6557
|
-
return /* @__PURE__ */
|
|
6558
|
-
/* @__PURE__ */
|
|
6559
|
-
/* @__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: [
|
|
6560
6789
|
convertToLocalNumbers2((currentRate * 100).toFixed(3), locale),
|
|
6561
6790
|
"%"
|
|
6562
6791
|
] }),
|
|
6563
|
-
currentRangeIndex !== -1 && /* @__PURE__ */
|
|
6792
|
+
currentRangeIndex !== -1 && /* @__PURE__ */ jsx52(
|
|
6564
6793
|
Badge,
|
|
6565
6794
|
{
|
|
6566
6795
|
className: "text-sm font-medium text-white border-0",
|
|
@@ -6569,13 +6798,13 @@ var EngagementRate = React22.forwardRef(
|
|
|
6569
6798
|
}
|
|
6570
6799
|
)
|
|
6571
6800
|
] }),
|
|
6572
|
-
/* @__PURE__ */
|
|
6573
|
-
/* @__PURE__ */
|
|
6574
|
-
/* @__PURE__ */
|
|
6575
|
-
/* @__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 })
|
|
6576
6805
|
] }),
|
|
6577
|
-
/* @__PURE__ */
|
|
6578
|
-
/* @__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(
|
|
6579
6808
|
"div",
|
|
6580
6809
|
{
|
|
6581
6810
|
className: "flex-1 transition-all duration-300 cursor-pointer group relative",
|
|
@@ -6596,35 +6825,35 @@ var EngagementRate = React22.forwardRef(
|
|
|
6596
6825
|
},
|
|
6597
6826
|
index
|
|
6598
6827
|
)) }),
|
|
6599
|
-
/* @__PURE__ */
|
|
6828
|
+
/* @__PURE__ */ jsx52(
|
|
6600
6829
|
"div",
|
|
6601
6830
|
{
|
|
6602
6831
|
className: "absolute -top-1 transform -translate-x-1/2 transition-all duration-500 z-10",
|
|
6603
6832
|
style: { left: `${adjustedTrianglePosition}%` },
|
|
6604
|
-
children: /* @__PURE__ */
|
|
6833
|
+
children: /* @__PURE__ */ jsx52(
|
|
6605
6834
|
"svg",
|
|
6606
6835
|
{
|
|
6607
6836
|
width: "20",
|
|
6608
6837
|
height: "14",
|
|
6609
6838
|
viewBox: "0 0 20 14",
|
|
6610
|
-
className: "fill-
|
|
6611
|
-
children: /* @__PURE__ */
|
|
6839
|
+
className: "fill-white dark:fill-white drop-shadow-md transition-transform duration-300",
|
|
6840
|
+
children: /* @__PURE__ */ jsx52("path", { d: "M10 14L0 0H20L10 14Z" })
|
|
6612
6841
|
}
|
|
6613
6842
|
)
|
|
6614
6843
|
}
|
|
6615
6844
|
)
|
|
6616
6845
|
] })
|
|
6617
6846
|
] }),
|
|
6618
|
-
showCategoryCard && /* @__PURE__ */
|
|
6619
|
-
/* @__PURE__ */
|
|
6620
|
-
/* @__PURE__ */
|
|
6621
|
-
/* @__PURE__ */
|
|
6622
|
-
/* @__PURE__ */
|
|
6623
|
-
/* @__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}` })
|
|
6624
6853
|
] }),
|
|
6625
|
-
/* @__PURE__ */
|
|
6626
|
-
/* @__PURE__ */
|
|
6627
|
-
/* @__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: [
|
|
6628
6857
|
"(",
|
|
6629
6858
|
formatNumber2(followers),
|
|
6630
6859
|
" ",
|
|
@@ -6633,9 +6862,9 @@ var EngagementRate = React22.forwardRef(
|
|
|
6633
6862
|
] })
|
|
6634
6863
|
] })
|
|
6635
6864
|
] }) }),
|
|
6636
|
-
/* @__PURE__ */
|
|
6637
|
-
/* @__PURE__ */
|
|
6638
|
-
/* @__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) => {
|
|
6639
6868
|
const isCurrentRange = index === currentRangeIndex;
|
|
6640
6869
|
const hexToRgb = (hex) => {
|
|
6641
6870
|
const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
|
|
@@ -6648,7 +6877,7 @@ var EngagementRate = React22.forwardRef(
|
|
|
6648
6877
|
const rgb = hexToRgb(range.color);
|
|
6649
6878
|
const bgColor = isCurrentRange && rgb ? `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, 0.1)` : "transparent";
|
|
6650
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);
|
|
6651
|
-
return /* @__PURE__ */
|
|
6880
|
+
return /* @__PURE__ */ jsxs32(
|
|
6652
6881
|
"div",
|
|
6653
6882
|
{
|
|
6654
6883
|
className: cn(
|
|
@@ -6660,9 +6889,9 @@ var EngagementRate = React22.forwardRef(
|
|
|
6660
6889
|
borderColor: isCurrentRange ? range.color : void 0
|
|
6661
6890
|
},
|
|
6662
6891
|
children: [
|
|
6663
|
-
/* @__PURE__ */
|
|
6664
|
-
/* @__PURE__ */
|
|
6665
|
-
/* @__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(
|
|
6666
6895
|
"span",
|
|
6667
6896
|
{
|
|
6668
6897
|
className: cn(
|
|
@@ -6671,7 +6900,7 @@ var EngagementRate = React22.forwardRef(
|
|
|
6671
6900
|
),
|
|
6672
6901
|
children: [
|
|
6673
6902
|
range.label,
|
|
6674
|
-
isCurrentRange && /* @__PURE__ */
|
|
6903
|
+
isCurrentRange && /* @__PURE__ */ jsxs32("span", { className: cn("text-xs font-normal text-muted-foreground", isRTL ? "mr-1" : "ml-1"), children: [
|
|
6675
6904
|
"(",
|
|
6676
6905
|
t.you,
|
|
6677
6906
|
")"
|
|
@@ -6680,7 +6909,7 @@ var EngagementRate = React22.forwardRef(
|
|
|
6680
6909
|
}
|
|
6681
6910
|
)
|
|
6682
6911
|
] }),
|
|
6683
|
-
/* @__PURE__ */
|
|
6912
|
+
/* @__PURE__ */ jsx52(
|
|
6684
6913
|
"span",
|
|
6685
6914
|
{
|
|
6686
6915
|
className: cn("text-sm font-semibold", !isCurrentRange && "text-muted-foreground"),
|
|
@@ -6701,8 +6930,8 @@ var EngagementRate = React22.forwardRef(
|
|
|
6701
6930
|
EngagementRate.displayName = "EngagementRate";
|
|
6702
6931
|
|
|
6703
6932
|
// src/components/ui/engagement-rate-bar.tsx
|
|
6704
|
-
import * as
|
|
6705
|
-
import { jsx as
|
|
6933
|
+
import * as React25 from "react";
|
|
6934
|
+
import { jsx as jsx53, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
6706
6935
|
var convertToLocalNumbers3 = (text, locale) => {
|
|
6707
6936
|
if (locale === "fa" || locale === "ar") {
|
|
6708
6937
|
const persianDigits = ["\u06F0", "\u06F1", "\u06F2", "\u06F3", "\u06F4", "\u06F5", "\u06F6", "\u06F7", "\u06F8", "\u06F9"];
|
|
@@ -6783,7 +7012,7 @@ var translations2 = {
|
|
|
6783
7012
|
low: "Low"
|
|
6784
7013
|
}
|
|
6785
7014
|
};
|
|
6786
|
-
var EngagementRateBar =
|
|
7015
|
+
var EngagementRateBar = React25.forwardRef(
|
|
6787
7016
|
({ className, currentRate, followers, locale = "fa", showHelperText = true, ...props }, ref) => {
|
|
6788
7017
|
const isRTL = locale === "fa" || locale === "ar";
|
|
6789
7018
|
const t = translations2[locale];
|
|
@@ -6878,7 +7107,7 @@ var EngagementRateBar = React23.forwardRef(
|
|
|
6878
7107
|
};
|
|
6879
7108
|
const trianglePosition = getTrianglePosition();
|
|
6880
7109
|
const adjustedTrianglePosition = isRTL ? 100 - trianglePosition : trianglePosition;
|
|
6881
|
-
return /* @__PURE__ */
|
|
7110
|
+
return /* @__PURE__ */ jsxs33(
|
|
6882
7111
|
"div",
|
|
6883
7112
|
{
|
|
6884
7113
|
ref,
|
|
@@ -6886,12 +7115,12 @@ var EngagementRateBar = React23.forwardRef(
|
|
|
6886
7115
|
dir: isRTL ? "rtl" : "ltr",
|
|
6887
7116
|
...props,
|
|
6888
7117
|
children: [
|
|
6889
|
-
/* @__PURE__ */
|
|
6890
|
-
/* @__PURE__ */
|
|
7118
|
+
/* @__PURE__ */ jsxs33("div", { className: "text-center", children: [
|
|
7119
|
+
/* @__PURE__ */ jsxs33("div", { className: "text-4xl font-bold text-primary mb-2", children: [
|
|
6891
7120
|
convertToLocalNumbers3((currentRate * 100).toFixed(3), locale),
|
|
6892
7121
|
"%"
|
|
6893
7122
|
] }),
|
|
6894
|
-
currentRangeIndex !== -1 && /* @__PURE__ */
|
|
7123
|
+
currentRangeIndex !== -1 && /* @__PURE__ */ jsx53(
|
|
6895
7124
|
Badge,
|
|
6896
7125
|
{
|
|
6897
7126
|
className: "text-sm font-medium text-white border-0",
|
|
@@ -6900,13 +7129,13 @@ var EngagementRateBar = React23.forwardRef(
|
|
|
6900
7129
|
}
|
|
6901
7130
|
)
|
|
6902
7131
|
] }),
|
|
6903
|
-
/* @__PURE__ */
|
|
6904
|
-
showHelperText && /* @__PURE__ */
|
|
6905
|
-
/* @__PURE__ */
|
|
6906
|
-
/* @__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 })
|
|
6907
7136
|
] }),
|
|
6908
|
-
/* @__PURE__ */
|
|
6909
|
-
/* @__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(
|
|
6910
7139
|
"div",
|
|
6911
7140
|
{
|
|
6912
7141
|
className: "flex-1 transition-all duration-300 cursor-pointer group relative",
|
|
@@ -6927,14 +7156,14 @@ var EngagementRateBar = React23.forwardRef(
|
|
|
6927
7156
|
},
|
|
6928
7157
|
index
|
|
6929
7158
|
)) }),
|
|
6930
|
-
/* @__PURE__ */
|
|
7159
|
+
/* @__PURE__ */ jsx53(
|
|
6931
7160
|
"div",
|
|
6932
7161
|
{
|
|
6933
7162
|
className: "absolute -top-2 transform -translate-x-1/2 transition-all duration-500 z-10",
|
|
6934
7163
|
style: { left: `${adjustedTrianglePosition}%` },
|
|
6935
|
-
children: /* @__PURE__ */
|
|
6936
|
-
/* @__PURE__ */
|
|
6937
|
-
/* @__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" })
|
|
6938
7167
|
] })
|
|
6939
7168
|
}
|
|
6940
7169
|
)
|
|
@@ -6949,9 +7178,9 @@ EngagementRateBar.displayName = "EngagementRateBar";
|
|
|
6949
7178
|
|
|
6950
7179
|
// src/components/ui/progress.tsx
|
|
6951
7180
|
import * as ProgressPrimitive from "@radix-ui/react-progress";
|
|
6952
|
-
import { cva as
|
|
6953
|
-
import { jsx as
|
|
6954
|
-
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(
|
|
6955
7184
|
"relative w-full overflow-hidden rounded-full bg-surface-300",
|
|
6956
7185
|
{
|
|
6957
7186
|
variants: {
|
|
@@ -6966,7 +7195,7 @@ var progressVariants = cva10(
|
|
|
6966
7195
|
}
|
|
6967
7196
|
}
|
|
6968
7197
|
);
|
|
6969
|
-
var progressIndicatorVariants =
|
|
7198
|
+
var progressIndicatorVariants = cva12(
|
|
6970
7199
|
"h-full w-full flex-1 transition-all origin-left rtl:origin-right",
|
|
6971
7200
|
{
|
|
6972
7201
|
variants: {
|
|
@@ -6994,19 +7223,19 @@ function Progress({
|
|
|
6994
7223
|
}) {
|
|
6995
7224
|
const clampedValue = Math.max(0, Math.min(100, value ?? 0));
|
|
6996
7225
|
const displayValue = `${Math.round(clampedValue)}%`;
|
|
6997
|
-
return /* @__PURE__ */
|
|
6998
|
-
(label || showValue) && /* @__PURE__ */
|
|
6999
|
-
label && /* @__PURE__ */
|
|
7000
|
-
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 })
|
|
7001
7230
|
] }),
|
|
7002
|
-
/* @__PURE__ */
|
|
7231
|
+
/* @__PURE__ */ jsx54(
|
|
7003
7232
|
ProgressPrimitive.Root,
|
|
7004
7233
|
{
|
|
7005
7234
|
"data-slot": "progress",
|
|
7006
7235
|
className: cn(progressVariants({ size }), className),
|
|
7007
7236
|
value,
|
|
7008
7237
|
...props,
|
|
7009
|
-
children: /* @__PURE__ */
|
|
7238
|
+
children: /* @__PURE__ */ jsx54(
|
|
7010
7239
|
ProgressPrimitive.Indicator,
|
|
7011
7240
|
{
|
|
7012
7241
|
"data-slot": "progress-indicator",
|
|
@@ -7022,12 +7251,12 @@ function Progress({
|
|
|
7022
7251
|
// src/components/ui/radio-group.tsx
|
|
7023
7252
|
import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
|
|
7024
7253
|
import { CircleIcon as CircleIcon4 } from "lucide-react";
|
|
7025
|
-
import { jsx as
|
|
7254
|
+
import { jsx as jsx55 } from "react/jsx-runtime";
|
|
7026
7255
|
function RadioGroup4({
|
|
7027
7256
|
className,
|
|
7028
7257
|
...props
|
|
7029
7258
|
}) {
|
|
7030
|
-
return /* @__PURE__ */
|
|
7259
|
+
return /* @__PURE__ */ jsx55(
|
|
7031
7260
|
RadioGroupPrimitive.Root,
|
|
7032
7261
|
{
|
|
7033
7262
|
"data-slot": "radio-group",
|
|
@@ -7040,7 +7269,7 @@ function RadioGroupItem({
|
|
|
7040
7269
|
className,
|
|
7041
7270
|
...props
|
|
7042
7271
|
}) {
|
|
7043
|
-
return /* @__PURE__ */
|
|
7272
|
+
return /* @__PURE__ */ jsx55(
|
|
7044
7273
|
RadioGroupPrimitive.Item,
|
|
7045
7274
|
{
|
|
7046
7275
|
"data-slot": "radio-group-item",
|
|
@@ -7049,12 +7278,12 @@ function RadioGroupItem({
|
|
|
7049
7278
|
className
|
|
7050
7279
|
),
|
|
7051
7280
|
...props,
|
|
7052
|
-
children: /* @__PURE__ */
|
|
7281
|
+
children: /* @__PURE__ */ jsx55(
|
|
7053
7282
|
RadioGroupPrimitive.Indicator,
|
|
7054
7283
|
{
|
|
7055
7284
|
"data-slot": "radio-group-indicator",
|
|
7056
7285
|
className: "relative flex items-center justify-center",
|
|
7057
|
-
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" })
|
|
7058
7287
|
}
|
|
7059
7288
|
)
|
|
7060
7289
|
}
|
|
@@ -7062,14 +7291,14 @@ function RadioGroupItem({
|
|
|
7062
7291
|
}
|
|
7063
7292
|
|
|
7064
7293
|
// src/components/ui/radio-card.tsx
|
|
7065
|
-
import * as
|
|
7294
|
+
import * as React26 from "react";
|
|
7066
7295
|
import * as RadioGroupPrimitive2 from "@radix-ui/react-radio-group";
|
|
7067
|
-
import { jsx as
|
|
7068
|
-
var RadioCards =
|
|
7296
|
+
import { jsx as jsx56 } from "react/jsx-runtime";
|
|
7297
|
+
var RadioCards = React26.forwardRef(({ className, columns = 1, dir = "rtl", children, ...props }, ref) => {
|
|
7069
7298
|
const gridCols = typeof columns === "number" ? `grid-cols-${columns}` : Object.entries(columns).map(
|
|
7070
7299
|
([key, val]) => key === "initial" ? `grid-cols-${val}` : `${key}:grid-cols-${val}`
|
|
7071
7300
|
).join(" ");
|
|
7072
|
-
return /* @__PURE__ */
|
|
7301
|
+
return /* @__PURE__ */ jsx56(
|
|
7073
7302
|
RadioGroupPrimitive2.Root,
|
|
7074
7303
|
{
|
|
7075
7304
|
ref,
|
|
@@ -7082,8 +7311,8 @@ var RadioCards = React24.forwardRef(({ className, columns = 1, dir = "rtl", chil
|
|
|
7082
7311
|
);
|
|
7083
7312
|
});
|
|
7084
7313
|
RadioCards.displayName = "RadioCards";
|
|
7085
|
-
var RadioCardItem =
|
|
7086
|
-
return /* @__PURE__ */
|
|
7314
|
+
var RadioCardItem = React26.forwardRef(({ className, children, ...props }, ref) => {
|
|
7315
|
+
return /* @__PURE__ */ jsx56(
|
|
7087
7316
|
RadioGroupPrimitive2.Item,
|
|
7088
7317
|
{
|
|
7089
7318
|
ref,
|
|
@@ -7102,7 +7331,7 @@ var RadioCardItem = React24.forwardRef(({ className, children, ...props }, ref)
|
|
|
7102
7331
|
);
|
|
7103
7332
|
});
|
|
7104
7333
|
RadioCardItem.displayName = "RadioCardItem";
|
|
7105
|
-
var RadioCardTitle =
|
|
7334
|
+
var RadioCardTitle = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx56(
|
|
7106
7335
|
"h4",
|
|
7107
7336
|
{
|
|
7108
7337
|
ref,
|
|
@@ -7111,7 +7340,7 @@ var RadioCardTitle = React24.forwardRef(({ className, ...props }, ref) => /* @__
|
|
|
7111
7340
|
}
|
|
7112
7341
|
));
|
|
7113
7342
|
RadioCardTitle.displayName = "RadioCardTitle";
|
|
7114
|
-
var RadioCardDescription =
|
|
7343
|
+
var RadioCardDescription = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx56(
|
|
7115
7344
|
"p",
|
|
7116
7345
|
{
|
|
7117
7346
|
ref,
|
|
@@ -7124,12 +7353,12 @@ RadioCardDescription.displayName = "RadioCardDescription";
|
|
|
7124
7353
|
// src/components/ui/resizable.tsx
|
|
7125
7354
|
import { GripVerticalIcon } from "lucide-react";
|
|
7126
7355
|
import * as ResizablePrimitive from "react-resizable-panels";
|
|
7127
|
-
import { jsx as
|
|
7356
|
+
import { jsx as jsx57 } from "react/jsx-runtime";
|
|
7128
7357
|
function ResizablePanelGroup({
|
|
7129
7358
|
className,
|
|
7130
7359
|
...props
|
|
7131
7360
|
}) {
|
|
7132
|
-
return /* @__PURE__ */
|
|
7361
|
+
return /* @__PURE__ */ jsx57(
|
|
7133
7362
|
ResizablePrimitive.PanelGroup,
|
|
7134
7363
|
{
|
|
7135
7364
|
"data-slot": "resizable-panel-group",
|
|
@@ -7144,14 +7373,14 @@ function ResizablePanelGroup({
|
|
|
7144
7373
|
function ResizablePanel({
|
|
7145
7374
|
...props
|
|
7146
7375
|
}) {
|
|
7147
|
-
return /* @__PURE__ */
|
|
7376
|
+
return /* @__PURE__ */ jsx57(ResizablePrimitive.Panel, { "data-slot": "resizable-panel", ...props });
|
|
7148
7377
|
}
|
|
7149
7378
|
function ResizableHandle({
|
|
7150
7379
|
withHandle,
|
|
7151
7380
|
className,
|
|
7152
7381
|
...props
|
|
7153
7382
|
}) {
|
|
7154
|
-
return /* @__PURE__ */
|
|
7383
|
+
return /* @__PURE__ */ jsx57(
|
|
7155
7384
|
ResizablePrimitive.PanelResizeHandle,
|
|
7156
7385
|
{
|
|
7157
7386
|
"data-slot": "resizable-handle",
|
|
@@ -7160,27 +7389,27 @@ function ResizableHandle({
|
|
|
7160
7389
|
className
|
|
7161
7390
|
),
|
|
7162
7391
|
...props,
|
|
7163
|
-
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" }) })
|
|
7164
7393
|
}
|
|
7165
7394
|
);
|
|
7166
7395
|
}
|
|
7167
7396
|
|
|
7168
7397
|
// src/components/ui/scroll-area.tsx
|
|
7169
7398
|
import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
|
|
7170
|
-
import { jsx as
|
|
7399
|
+
import { jsx as jsx58, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
7171
7400
|
function ScrollArea({
|
|
7172
7401
|
className,
|
|
7173
7402
|
children,
|
|
7174
7403
|
...props
|
|
7175
7404
|
}) {
|
|
7176
|
-
return /* @__PURE__ */
|
|
7405
|
+
return /* @__PURE__ */ jsxs35(
|
|
7177
7406
|
ScrollAreaPrimitive.Root,
|
|
7178
7407
|
{
|
|
7179
7408
|
"data-slot": "scroll-area",
|
|
7180
7409
|
className: cn("relative", className),
|
|
7181
7410
|
...props,
|
|
7182
7411
|
children: [
|
|
7183
|
-
/* @__PURE__ */
|
|
7412
|
+
/* @__PURE__ */ jsx58(
|
|
7184
7413
|
ScrollAreaPrimitive.Viewport,
|
|
7185
7414
|
{
|
|
7186
7415
|
"data-slot": "scroll-area-viewport",
|
|
@@ -7188,8 +7417,8 @@ function ScrollArea({
|
|
|
7188
7417
|
children
|
|
7189
7418
|
}
|
|
7190
7419
|
),
|
|
7191
|
-
/* @__PURE__ */
|
|
7192
|
-
/* @__PURE__ */
|
|
7420
|
+
/* @__PURE__ */ jsx58(ScrollBar, {}),
|
|
7421
|
+
/* @__PURE__ */ jsx58(ScrollAreaPrimitive.Corner, {})
|
|
7193
7422
|
]
|
|
7194
7423
|
}
|
|
7195
7424
|
);
|
|
@@ -7199,7 +7428,7 @@ function ScrollBar({
|
|
|
7199
7428
|
orientation = "vertical",
|
|
7200
7429
|
...props
|
|
7201
7430
|
}) {
|
|
7202
|
-
return /* @__PURE__ */
|
|
7431
|
+
return /* @__PURE__ */ jsx58(
|
|
7203
7432
|
ScrollAreaPrimitive.ScrollAreaScrollbar,
|
|
7204
7433
|
{
|
|
7205
7434
|
"data-slot": "scroll-area-scrollbar",
|
|
@@ -7211,7 +7440,7 @@ function ScrollBar({
|
|
|
7211
7440
|
className
|
|
7212
7441
|
),
|
|
7213
7442
|
...props,
|
|
7214
|
-
children: /* @__PURE__ */
|
|
7443
|
+
children: /* @__PURE__ */ jsx58(
|
|
7215
7444
|
ScrollAreaPrimitive.ScrollAreaThumb,
|
|
7216
7445
|
{
|
|
7217
7446
|
"data-slot": "scroll-area-thumb",
|
|
@@ -7223,14 +7452,14 @@ function ScrollBar({
|
|
|
7223
7452
|
}
|
|
7224
7453
|
|
|
7225
7454
|
// src/components/ui/select.tsx
|
|
7226
|
-
import * as
|
|
7455
|
+
import * as React27 from "react";
|
|
7227
7456
|
import * as SelectPrimitive from "@radix-ui/react-select";
|
|
7228
7457
|
import { Check as Check2, ChevronDown as ChevronDown2, ChevronUp as ChevronUp2 } from "lucide-react";
|
|
7229
|
-
import { cva as
|
|
7230
|
-
import { jsx as
|
|
7458
|
+
import { cva as cva13 } from "class-variance-authority";
|
|
7459
|
+
import { jsx as jsx59, jsxs as jsxs36 } from "react/jsx-runtime";
|
|
7231
7460
|
var Select = SelectPrimitive.Root;
|
|
7232
7461
|
var SelectGroup = SelectPrimitive.Group;
|
|
7233
|
-
var SelectTriggerVariants =
|
|
7462
|
+
var SelectTriggerVariants = cva13("", {
|
|
7234
7463
|
variants: {
|
|
7235
7464
|
size: {
|
|
7236
7465
|
...SIZE_VARIANTS
|
|
@@ -7240,16 +7469,16 @@ var SelectTriggerVariants = cva11("", {
|
|
|
7240
7469
|
size: SIZE_VARIANTS_DEFAULT
|
|
7241
7470
|
}
|
|
7242
7471
|
});
|
|
7243
|
-
var SelectValue =
|
|
7472
|
+
var SelectValue = React27.forwardRef(({ placeholder, ...props }, ref) => /* @__PURE__ */ jsx59(
|
|
7244
7473
|
SelectPrimitive.Value,
|
|
7245
7474
|
{
|
|
7246
|
-
placeholder: typeof placeholder === "string" ? /* @__PURE__ */
|
|
7475
|
+
placeholder: typeof placeholder === "string" ? /* @__PURE__ */ jsx59("span", { children: placeholder }) : placeholder,
|
|
7247
7476
|
...props,
|
|
7248
7477
|
ref
|
|
7249
7478
|
}
|
|
7250
7479
|
));
|
|
7251
7480
|
SelectValue.displayName = SelectPrimitive.Value.displayName;
|
|
7252
|
-
var SelectTrigger =
|
|
7481
|
+
var SelectTrigger = React27.forwardRef(({ className, children, size, ...props }, ref) => /* @__PURE__ */ jsxs36(
|
|
7253
7482
|
SelectPrimitive.Trigger,
|
|
7254
7483
|
{
|
|
7255
7484
|
ref,
|
|
@@ -7264,12 +7493,12 @@ var SelectTrigger = React25.forwardRef(({ className, children, size, ...props },
|
|
|
7264
7493
|
...props,
|
|
7265
7494
|
children: [
|
|
7266
7495
|
children,
|
|
7267
|
-
/* @__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 }) })
|
|
7268
7497
|
]
|
|
7269
7498
|
}
|
|
7270
7499
|
));
|
|
7271
7500
|
SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
|
|
7272
|
-
var SelectScrollUpButton =
|
|
7501
|
+
var SelectScrollUpButton = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx59(
|
|
7273
7502
|
SelectPrimitive.ScrollUpButton,
|
|
7274
7503
|
{
|
|
7275
7504
|
ref,
|
|
@@ -7278,11 +7507,11 @@ var SelectScrollUpButton = React25.forwardRef(({ className, ...props }, ref) =>
|
|
|
7278
7507
|
className
|
|
7279
7508
|
),
|
|
7280
7509
|
...props,
|
|
7281
|
-
children: /* @__PURE__ */
|
|
7510
|
+
children: /* @__PURE__ */ jsx59(ChevronUp2, { className: "h-4 w-4" })
|
|
7282
7511
|
}
|
|
7283
7512
|
));
|
|
7284
7513
|
SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
|
|
7285
|
-
var SelectScrollDownButton =
|
|
7514
|
+
var SelectScrollDownButton = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx59(
|
|
7286
7515
|
SelectPrimitive.ScrollDownButton,
|
|
7287
7516
|
{
|
|
7288
7517
|
ref,
|
|
@@ -7291,11 +7520,11 @@ var SelectScrollDownButton = React25.forwardRef(({ className, ...props }, ref) =
|
|
|
7291
7520
|
className
|
|
7292
7521
|
),
|
|
7293
7522
|
...props,
|
|
7294
|
-
children: /* @__PURE__ */
|
|
7523
|
+
children: /* @__PURE__ */ jsx59(ChevronDown2, { className: "h-4 w-4" })
|
|
7295
7524
|
}
|
|
7296
7525
|
));
|
|
7297
7526
|
SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
|
|
7298
|
-
var SelectContent =
|
|
7527
|
+
var SelectContent = React27.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx59(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs36(
|
|
7299
7528
|
SelectPrimitive.Content,
|
|
7300
7529
|
{
|
|
7301
7530
|
ref,
|
|
@@ -7307,8 +7536,8 @@ var SelectContent = React25.forwardRef(({ className, children, position = "poppe
|
|
|
7307
7536
|
position,
|
|
7308
7537
|
...props,
|
|
7309
7538
|
children: [
|
|
7310
|
-
/* @__PURE__ */
|
|
7311
|
-
/* @__PURE__ */
|
|
7539
|
+
/* @__PURE__ */ jsx59(SelectScrollUpButton, {}),
|
|
7540
|
+
/* @__PURE__ */ jsx59(
|
|
7312
7541
|
SelectPrimitive.Viewport,
|
|
7313
7542
|
{
|
|
7314
7543
|
className: cn(
|
|
@@ -7318,12 +7547,12 @@ var SelectContent = React25.forwardRef(({ className, children, position = "poppe
|
|
|
7318
7547
|
children
|
|
7319
7548
|
}
|
|
7320
7549
|
),
|
|
7321
|
-
/* @__PURE__ */
|
|
7550
|
+
/* @__PURE__ */ jsx59(SelectScrollDownButton, {})
|
|
7322
7551
|
]
|
|
7323
7552
|
}
|
|
7324
7553
|
) }));
|
|
7325
7554
|
SelectContent.displayName = SelectPrimitive.Content.displayName;
|
|
7326
|
-
var SelectLabel =
|
|
7555
|
+
var SelectLabel = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx59(
|
|
7327
7556
|
SelectPrimitive.Label,
|
|
7328
7557
|
{
|
|
7329
7558
|
ref,
|
|
@@ -7335,7 +7564,7 @@ var SelectLabel = React25.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
7335
7564
|
}
|
|
7336
7565
|
));
|
|
7337
7566
|
SelectLabel.displayName = SelectPrimitive.Label.displayName;
|
|
7338
|
-
var SelectItem =
|
|
7567
|
+
var SelectItem = React27.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs36(
|
|
7339
7568
|
SelectPrimitive.Item,
|
|
7340
7569
|
{
|
|
7341
7570
|
ref,
|
|
@@ -7346,13 +7575,13 @@ var SelectItem = React25.forwardRef(({ className, children, ...props }, ref) =>
|
|
|
7346
7575
|
),
|
|
7347
7576
|
...props,
|
|
7348
7577
|
children: [
|
|
7349
|
-
/* @__PURE__ */
|
|
7350
|
-
/* @__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 })
|
|
7351
7580
|
]
|
|
7352
7581
|
}
|
|
7353
7582
|
));
|
|
7354
7583
|
SelectItem.displayName = SelectPrimitive.Item.displayName;
|
|
7355
|
-
var SelectSeparator =
|
|
7584
|
+
var SelectSeparator = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx59(
|
|
7356
7585
|
SelectPrimitive.Separator,
|
|
7357
7586
|
{
|
|
7358
7587
|
ref,
|
|
@@ -7365,30 +7594,30 @@ SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
|
|
|
7365
7594
|
// src/components/ui/sheet.tsx
|
|
7366
7595
|
import * as SheetPrimitive from "@radix-ui/react-dialog";
|
|
7367
7596
|
import { XIcon } from "lucide-react";
|
|
7368
|
-
import { jsx as
|
|
7597
|
+
import { jsx as jsx60, jsxs as jsxs37 } from "react/jsx-runtime";
|
|
7369
7598
|
function Sheet({ ...props }) {
|
|
7370
|
-
return /* @__PURE__ */
|
|
7599
|
+
return /* @__PURE__ */ jsx60(SheetPrimitive.Root, { "data-slot": "sheet", ...props });
|
|
7371
7600
|
}
|
|
7372
7601
|
function SheetTrigger({
|
|
7373
7602
|
...props
|
|
7374
7603
|
}) {
|
|
7375
|
-
return /* @__PURE__ */
|
|
7604
|
+
return /* @__PURE__ */ jsx60(SheetPrimitive.Trigger, { "data-slot": "sheet-trigger", ...props });
|
|
7376
7605
|
}
|
|
7377
7606
|
function SheetClose({
|
|
7378
7607
|
...props
|
|
7379
7608
|
}) {
|
|
7380
|
-
return /* @__PURE__ */
|
|
7609
|
+
return /* @__PURE__ */ jsx60(SheetPrimitive.Close, { "data-slot": "sheet-close", ...props });
|
|
7381
7610
|
}
|
|
7382
7611
|
function SheetPortal({
|
|
7383
7612
|
...props
|
|
7384
7613
|
}) {
|
|
7385
|
-
return /* @__PURE__ */
|
|
7614
|
+
return /* @__PURE__ */ jsx60(SheetPrimitive.Portal, { "data-slot": "sheet-portal", ...props });
|
|
7386
7615
|
}
|
|
7387
7616
|
function SheetOverlay({
|
|
7388
7617
|
className,
|
|
7389
7618
|
...props
|
|
7390
7619
|
}) {
|
|
7391
|
-
return /* @__PURE__ */
|
|
7620
|
+
return /* @__PURE__ */ jsx60(
|
|
7392
7621
|
SheetPrimitive.Overlay,
|
|
7393
7622
|
{
|
|
7394
7623
|
"data-slot": "sheet-overlay",
|
|
@@ -7406,9 +7635,9 @@ function SheetContent({
|
|
|
7406
7635
|
side = "right",
|
|
7407
7636
|
...props
|
|
7408
7637
|
}) {
|
|
7409
|
-
return /* @__PURE__ */
|
|
7410
|
-
/* @__PURE__ */
|
|
7411
|
-
/* @__PURE__ */
|
|
7638
|
+
return /* @__PURE__ */ jsxs37(SheetPortal, { children: [
|
|
7639
|
+
/* @__PURE__ */ jsx60(SheetOverlay, {}),
|
|
7640
|
+
/* @__PURE__ */ jsxs37(
|
|
7412
7641
|
SheetPrimitive.Content,
|
|
7413
7642
|
{
|
|
7414
7643
|
"data-slot": "sheet-content",
|
|
@@ -7423,9 +7652,9 @@ function SheetContent({
|
|
|
7423
7652
|
...props,
|
|
7424
7653
|
children: [
|
|
7425
7654
|
children,
|
|
7426
|
-
/* @__PURE__ */
|
|
7427
|
-
/* @__PURE__ */
|
|
7428
|
-
/* @__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" })
|
|
7429
7658
|
] })
|
|
7430
7659
|
]
|
|
7431
7660
|
}
|
|
@@ -7433,7 +7662,7 @@ function SheetContent({
|
|
|
7433
7662
|
] });
|
|
7434
7663
|
}
|
|
7435
7664
|
function SheetHeader({ className, ...props }) {
|
|
7436
|
-
return /* @__PURE__ */
|
|
7665
|
+
return /* @__PURE__ */ jsx60(
|
|
7437
7666
|
"div",
|
|
7438
7667
|
{
|
|
7439
7668
|
"data-slot": "sheet-header",
|
|
@@ -7443,7 +7672,7 @@ function SheetHeader({ className, ...props }) {
|
|
|
7443
7672
|
);
|
|
7444
7673
|
}
|
|
7445
7674
|
function SheetFooter({ className, ...props }) {
|
|
7446
|
-
return /* @__PURE__ */
|
|
7675
|
+
return /* @__PURE__ */ jsx60(
|
|
7447
7676
|
"div",
|
|
7448
7677
|
{
|
|
7449
7678
|
"data-slot": "sheet-footer",
|
|
@@ -7456,7 +7685,7 @@ function SheetTitle({
|
|
|
7456
7685
|
className,
|
|
7457
7686
|
...props
|
|
7458
7687
|
}) {
|
|
7459
|
-
return /* @__PURE__ */
|
|
7688
|
+
return /* @__PURE__ */ jsx60(
|
|
7460
7689
|
SheetPrimitive.Title,
|
|
7461
7690
|
{
|
|
7462
7691
|
"data-slot": "sheet-title",
|
|
@@ -7469,7 +7698,7 @@ function SheetDescription({
|
|
|
7469
7698
|
className,
|
|
7470
7699
|
...props
|
|
7471
7700
|
}) {
|
|
7472
|
-
return /* @__PURE__ */
|
|
7701
|
+
return /* @__PURE__ */ jsx60(
|
|
7473
7702
|
SheetPrimitive.Description,
|
|
7474
7703
|
{
|
|
7475
7704
|
"data-slot": "sheet-description",
|
|
@@ -7480,17 +7709,17 @@ function SheetDescription({
|
|
|
7480
7709
|
}
|
|
7481
7710
|
|
|
7482
7711
|
// src/components/ui/sidebar.tsx
|
|
7483
|
-
import * as
|
|
7712
|
+
import * as React29 from "react";
|
|
7484
7713
|
import { Slot as Slot5 } from "@radix-ui/react-slot";
|
|
7485
|
-
import { cva as
|
|
7714
|
+
import { cva as cva14 } from "class-variance-authority";
|
|
7486
7715
|
import { PanelLeftIcon } from "lucide-react";
|
|
7487
7716
|
|
|
7488
7717
|
// src/hooks/use-mobile.ts
|
|
7489
|
-
import * as
|
|
7718
|
+
import * as React28 from "react";
|
|
7490
7719
|
var MOBILE_BREAKPOINT = 768;
|
|
7491
7720
|
function useIsMobile() {
|
|
7492
|
-
const [isMobile, setIsMobile] =
|
|
7493
|
-
|
|
7721
|
+
const [isMobile, setIsMobile] = React28.useState(void 0);
|
|
7722
|
+
React28.useEffect(() => {
|
|
7494
7723
|
const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
|
|
7495
7724
|
const onChange = () => {
|
|
7496
7725
|
setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
|
|
@@ -7503,16 +7732,16 @@ function useIsMobile() {
|
|
|
7503
7732
|
}
|
|
7504
7733
|
|
|
7505
7734
|
// src/components/ui/sidebar.tsx
|
|
7506
|
-
import { jsx as
|
|
7735
|
+
import { jsx as jsx61, jsxs as jsxs38 } from "react/jsx-runtime";
|
|
7507
7736
|
var SIDEBAR_COOKIE_NAME = "sidebar_state";
|
|
7508
7737
|
var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
|
|
7509
7738
|
var SIDEBAR_WIDTH = "16rem";
|
|
7510
7739
|
var SIDEBAR_WIDTH_MOBILE = "18rem";
|
|
7511
7740
|
var SIDEBAR_WIDTH_ICON = "3rem";
|
|
7512
7741
|
var SIDEBAR_KEYBOARD_SHORTCUT = "b";
|
|
7513
|
-
var SidebarContext =
|
|
7742
|
+
var SidebarContext = React29.createContext(null);
|
|
7514
7743
|
function useSidebar() {
|
|
7515
|
-
const context =
|
|
7744
|
+
const context = React29.useContext(SidebarContext);
|
|
7516
7745
|
if (!context) {
|
|
7517
7746
|
throw new Error("useSidebar must be used within a SidebarProvider.");
|
|
7518
7747
|
}
|
|
@@ -7528,10 +7757,10 @@ function SidebarProvider({
|
|
|
7528
7757
|
...props
|
|
7529
7758
|
}) {
|
|
7530
7759
|
const isMobile = useIsMobile();
|
|
7531
|
-
const [openMobile, setOpenMobile] =
|
|
7532
|
-
const [_open, _setOpen] =
|
|
7760
|
+
const [openMobile, setOpenMobile] = React29.useState(false);
|
|
7761
|
+
const [_open, _setOpen] = React29.useState(defaultOpen);
|
|
7533
7762
|
const open = openProp ?? _open;
|
|
7534
|
-
const setOpen =
|
|
7763
|
+
const setOpen = React29.useCallback(
|
|
7535
7764
|
(value) => {
|
|
7536
7765
|
const openState = typeof value === "function" ? value(open) : value;
|
|
7537
7766
|
if (setOpenProp) {
|
|
@@ -7543,10 +7772,10 @@ function SidebarProvider({
|
|
|
7543
7772
|
},
|
|
7544
7773
|
[setOpenProp, open]
|
|
7545
7774
|
);
|
|
7546
|
-
const toggleSidebar =
|
|
7775
|
+
const toggleSidebar = React29.useCallback(() => {
|
|
7547
7776
|
return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
|
|
7548
7777
|
}, [isMobile, setOpen, setOpenMobile]);
|
|
7549
|
-
|
|
7778
|
+
React29.useEffect(() => {
|
|
7550
7779
|
const handleKeyDown = (event) => {
|
|
7551
7780
|
if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
|
|
7552
7781
|
event.preventDefault();
|
|
@@ -7557,7 +7786,7 @@ function SidebarProvider({
|
|
|
7557
7786
|
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
7558
7787
|
}, [toggleSidebar]);
|
|
7559
7788
|
const state = open ? "expanded" : "collapsed";
|
|
7560
|
-
const contextValue =
|
|
7789
|
+
const contextValue = React29.useMemo(
|
|
7561
7790
|
() => ({
|
|
7562
7791
|
state,
|
|
7563
7792
|
open,
|
|
@@ -7569,7 +7798,7 @@ function SidebarProvider({
|
|
|
7569
7798
|
}),
|
|
7570
7799
|
[state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]
|
|
7571
7800
|
);
|
|
7572
|
-
return /* @__PURE__ */
|
|
7801
|
+
return /* @__PURE__ */ jsx61(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx61(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsx61(
|
|
7573
7802
|
"div",
|
|
7574
7803
|
{
|
|
7575
7804
|
"data-slot": "sidebar-wrapper",
|
|
@@ -7597,7 +7826,7 @@ function Sidebar({
|
|
|
7597
7826
|
}) {
|
|
7598
7827
|
const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
|
|
7599
7828
|
if (collapsible === "none") {
|
|
7600
|
-
return /* @__PURE__ */
|
|
7829
|
+
return /* @__PURE__ */ jsx61(
|
|
7601
7830
|
"div",
|
|
7602
7831
|
{
|
|
7603
7832
|
"data-slot": "sidebar",
|
|
@@ -7611,7 +7840,7 @@ function Sidebar({
|
|
|
7611
7840
|
);
|
|
7612
7841
|
}
|
|
7613
7842
|
if (isMobile) {
|
|
7614
|
-
return /* @__PURE__ */
|
|
7843
|
+
return /* @__PURE__ */ jsx61(Sheet, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ jsxs38(
|
|
7615
7844
|
SheetContent,
|
|
7616
7845
|
{
|
|
7617
7846
|
"data-sidebar": "sidebar",
|
|
@@ -7623,16 +7852,16 @@ function Sidebar({
|
|
|
7623
7852
|
},
|
|
7624
7853
|
side,
|
|
7625
7854
|
children: [
|
|
7626
|
-
/* @__PURE__ */
|
|
7627
|
-
/* @__PURE__ */
|
|
7628
|
-
/* @__PURE__ */
|
|
7855
|
+
/* @__PURE__ */ jsxs38(SheetHeader, { className: "sr-only", children: [
|
|
7856
|
+
/* @__PURE__ */ jsx61(SheetTitle, { children: "Sidebar" }),
|
|
7857
|
+
/* @__PURE__ */ jsx61(SheetDescription, { children: "Displays the mobile sidebar." })
|
|
7629
7858
|
] }),
|
|
7630
|
-
/* @__PURE__ */
|
|
7859
|
+
/* @__PURE__ */ jsx61("div", { className: "flex h-full w-full flex-col", children })
|
|
7631
7860
|
]
|
|
7632
7861
|
}
|
|
7633
7862
|
) });
|
|
7634
7863
|
}
|
|
7635
|
-
return /* @__PURE__ */
|
|
7864
|
+
return /* @__PURE__ */ jsxs38(
|
|
7636
7865
|
"div",
|
|
7637
7866
|
{
|
|
7638
7867
|
className: "group peer text-sidebar-foreground hidden md:block",
|
|
@@ -7642,7 +7871,7 @@ function Sidebar({
|
|
|
7642
7871
|
"data-side": side,
|
|
7643
7872
|
"data-slot": "sidebar",
|
|
7644
7873
|
children: [
|
|
7645
|
-
/* @__PURE__ */
|
|
7874
|
+
/* @__PURE__ */ jsx61(
|
|
7646
7875
|
"div",
|
|
7647
7876
|
{
|
|
7648
7877
|
"data-slot": "sidebar-gap",
|
|
@@ -7654,7 +7883,7 @@ function Sidebar({
|
|
|
7654
7883
|
)
|
|
7655
7884
|
}
|
|
7656
7885
|
),
|
|
7657
|
-
/* @__PURE__ */
|
|
7886
|
+
/* @__PURE__ */ jsx61(
|
|
7658
7887
|
"div",
|
|
7659
7888
|
{
|
|
7660
7889
|
"data-slot": "sidebar-container",
|
|
@@ -7666,7 +7895,7 @@ function Sidebar({
|
|
|
7666
7895
|
className
|
|
7667
7896
|
),
|
|
7668
7897
|
...props,
|
|
7669
|
-
children: /* @__PURE__ */
|
|
7898
|
+
children: /* @__PURE__ */ jsx61(
|
|
7670
7899
|
"div",
|
|
7671
7900
|
{
|
|
7672
7901
|
"data-sidebar": "sidebar",
|
|
@@ -7687,7 +7916,7 @@ function SidebarTrigger({
|
|
|
7687
7916
|
...props
|
|
7688
7917
|
}) {
|
|
7689
7918
|
const { toggleSidebar } = useSidebar();
|
|
7690
|
-
return /* @__PURE__ */
|
|
7919
|
+
return /* @__PURE__ */ jsxs38(
|
|
7691
7920
|
Button,
|
|
7692
7921
|
{
|
|
7693
7922
|
"data-sidebar": "trigger",
|
|
@@ -7701,15 +7930,15 @@ function SidebarTrigger({
|
|
|
7701
7930
|
},
|
|
7702
7931
|
...props,
|
|
7703
7932
|
children: [
|
|
7704
|
-
/* @__PURE__ */
|
|
7705
|
-
/* @__PURE__ */
|
|
7933
|
+
/* @__PURE__ */ jsx61(PanelLeftIcon, {}),
|
|
7934
|
+
/* @__PURE__ */ jsx61("span", { className: "sr-only", children: "Toggle Sidebar" })
|
|
7706
7935
|
]
|
|
7707
7936
|
}
|
|
7708
7937
|
);
|
|
7709
7938
|
}
|
|
7710
7939
|
function SidebarRail({ className, ...props }) {
|
|
7711
7940
|
const { toggleSidebar } = useSidebar();
|
|
7712
|
-
return /* @__PURE__ */
|
|
7941
|
+
return /* @__PURE__ */ jsx61(
|
|
7713
7942
|
"button",
|
|
7714
7943
|
{
|
|
7715
7944
|
"data-sidebar": "rail",
|
|
@@ -7732,7 +7961,7 @@ function SidebarRail({ className, ...props }) {
|
|
|
7732
7961
|
);
|
|
7733
7962
|
}
|
|
7734
7963
|
function SidebarInset({ className, ...props }) {
|
|
7735
|
-
return /* @__PURE__ */
|
|
7964
|
+
return /* @__PURE__ */ jsx61(
|
|
7736
7965
|
"main",
|
|
7737
7966
|
{
|
|
7738
7967
|
"data-slot": "sidebar-inset",
|
|
@@ -7749,7 +7978,7 @@ function SidebarInput({
|
|
|
7749
7978
|
className,
|
|
7750
7979
|
...props
|
|
7751
7980
|
}) {
|
|
7752
|
-
return /* @__PURE__ */
|
|
7981
|
+
return /* @__PURE__ */ jsx61(
|
|
7753
7982
|
Input,
|
|
7754
7983
|
{
|
|
7755
7984
|
"data-slot": "sidebar-input",
|
|
@@ -7760,7 +7989,7 @@ function SidebarInput({
|
|
|
7760
7989
|
);
|
|
7761
7990
|
}
|
|
7762
7991
|
function SidebarHeader({ className, ...props }) {
|
|
7763
|
-
return /* @__PURE__ */
|
|
7992
|
+
return /* @__PURE__ */ jsx61(
|
|
7764
7993
|
"div",
|
|
7765
7994
|
{
|
|
7766
7995
|
"data-slot": "sidebar-header",
|
|
@@ -7771,7 +8000,7 @@ function SidebarHeader({ className, ...props }) {
|
|
|
7771
8000
|
);
|
|
7772
8001
|
}
|
|
7773
8002
|
function SidebarFooter({ className, ...props }) {
|
|
7774
|
-
return /* @__PURE__ */
|
|
8003
|
+
return /* @__PURE__ */ jsx61(
|
|
7775
8004
|
"div",
|
|
7776
8005
|
{
|
|
7777
8006
|
"data-slot": "sidebar-footer",
|
|
@@ -7785,7 +8014,7 @@ function SidebarSeparator({
|
|
|
7785
8014
|
className,
|
|
7786
8015
|
...props
|
|
7787
8016
|
}) {
|
|
7788
|
-
return /* @__PURE__ */
|
|
8017
|
+
return /* @__PURE__ */ jsx61(
|
|
7789
8018
|
Separator,
|
|
7790
8019
|
{
|
|
7791
8020
|
"data-slot": "sidebar-separator",
|
|
@@ -7796,7 +8025,7 @@ function SidebarSeparator({
|
|
|
7796
8025
|
);
|
|
7797
8026
|
}
|
|
7798
8027
|
function SidebarContent({ className, ...props }) {
|
|
7799
|
-
return /* @__PURE__ */
|
|
8028
|
+
return /* @__PURE__ */ jsx61(
|
|
7800
8029
|
"div",
|
|
7801
8030
|
{
|
|
7802
8031
|
"data-slot": "sidebar-content",
|
|
@@ -7810,7 +8039,7 @@ function SidebarContent({ className, ...props }) {
|
|
|
7810
8039
|
);
|
|
7811
8040
|
}
|
|
7812
8041
|
function SidebarGroup({ className, ...props }) {
|
|
7813
|
-
return /* @__PURE__ */
|
|
8042
|
+
return /* @__PURE__ */ jsx61(
|
|
7814
8043
|
"div",
|
|
7815
8044
|
{
|
|
7816
8045
|
"data-slot": "sidebar-group",
|
|
@@ -7826,7 +8055,7 @@ function SidebarGroupLabel({
|
|
|
7826
8055
|
...props
|
|
7827
8056
|
}) {
|
|
7828
8057
|
const Comp = asChild ? Slot5 : "div";
|
|
7829
|
-
return /* @__PURE__ */
|
|
8058
|
+
return /* @__PURE__ */ jsx61(
|
|
7830
8059
|
Comp,
|
|
7831
8060
|
{
|
|
7832
8061
|
"data-slot": "sidebar-group-label",
|
|
@@ -7846,7 +8075,7 @@ function SidebarGroupAction({
|
|
|
7846
8075
|
...props
|
|
7847
8076
|
}) {
|
|
7848
8077
|
const Comp = asChild ? Slot5 : "button";
|
|
7849
|
-
return /* @__PURE__ */
|
|
8078
|
+
return /* @__PURE__ */ jsx61(
|
|
7850
8079
|
Comp,
|
|
7851
8080
|
{
|
|
7852
8081
|
"data-slot": "sidebar-group-action",
|
|
@@ -7866,7 +8095,7 @@ function SidebarGroupContent({
|
|
|
7866
8095
|
className,
|
|
7867
8096
|
...props
|
|
7868
8097
|
}) {
|
|
7869
|
-
return /* @__PURE__ */
|
|
8098
|
+
return /* @__PURE__ */ jsx61(
|
|
7870
8099
|
"div",
|
|
7871
8100
|
{
|
|
7872
8101
|
"data-slot": "sidebar-group-content",
|
|
@@ -7877,7 +8106,7 @@ function SidebarGroupContent({
|
|
|
7877
8106
|
);
|
|
7878
8107
|
}
|
|
7879
8108
|
function SidebarMenu({ className, ...props }) {
|
|
7880
|
-
return /* @__PURE__ */
|
|
8109
|
+
return /* @__PURE__ */ jsx61(
|
|
7881
8110
|
"ul",
|
|
7882
8111
|
{
|
|
7883
8112
|
"data-slot": "sidebar-menu",
|
|
@@ -7888,7 +8117,7 @@ function SidebarMenu({ className, ...props }) {
|
|
|
7888
8117
|
);
|
|
7889
8118
|
}
|
|
7890
8119
|
function SidebarMenuItem({ className, ...props }) {
|
|
7891
|
-
return /* @__PURE__ */
|
|
8120
|
+
return /* @__PURE__ */ jsx61(
|
|
7892
8121
|
"li",
|
|
7893
8122
|
{
|
|
7894
8123
|
"data-slot": "sidebar-menu-item",
|
|
@@ -7898,7 +8127,7 @@ function SidebarMenuItem({ className, ...props }) {
|
|
|
7898
8127
|
}
|
|
7899
8128
|
);
|
|
7900
8129
|
}
|
|
7901
|
-
var sidebarMenuButtonVariants =
|
|
8130
|
+
var sidebarMenuButtonVariants = cva14(
|
|
7902
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",
|
|
7903
8132
|
{
|
|
7904
8133
|
variants: {
|
|
@@ -7929,7 +8158,7 @@ function SidebarMenuButton({
|
|
|
7929
8158
|
}) {
|
|
7930
8159
|
const Comp = asChild ? Slot5 : "button";
|
|
7931
8160
|
const { isMobile, state } = useSidebar();
|
|
7932
|
-
const button = /* @__PURE__ */
|
|
8161
|
+
const button = /* @__PURE__ */ jsx61(
|
|
7933
8162
|
Comp,
|
|
7934
8163
|
{
|
|
7935
8164
|
"data-slot": "sidebar-menu-button",
|
|
@@ -7948,9 +8177,9 @@ function SidebarMenuButton({
|
|
|
7948
8177
|
children: tooltip
|
|
7949
8178
|
};
|
|
7950
8179
|
}
|
|
7951
|
-
return /* @__PURE__ */
|
|
7952
|
-
/* @__PURE__ */
|
|
7953
|
-
/* @__PURE__ */
|
|
8180
|
+
return /* @__PURE__ */ jsxs38(Tooltip, { children: [
|
|
8181
|
+
/* @__PURE__ */ jsx61(TooltipTrigger, { asChild: true, children: button }),
|
|
8182
|
+
/* @__PURE__ */ jsx61(
|
|
7954
8183
|
TooltipContent,
|
|
7955
8184
|
{
|
|
7956
8185
|
side: "right",
|
|
@@ -7968,7 +8197,7 @@ function SidebarMenuAction({
|
|
|
7968
8197
|
...props
|
|
7969
8198
|
}) {
|
|
7970
8199
|
const Comp = asChild ? Slot5 : "button";
|
|
7971
|
-
return /* @__PURE__ */
|
|
8200
|
+
return /* @__PURE__ */ jsx61(
|
|
7972
8201
|
Comp,
|
|
7973
8202
|
{
|
|
7974
8203
|
"data-slot": "sidebar-menu-action",
|
|
@@ -7992,7 +8221,7 @@ function SidebarMenuBadge({
|
|
|
7992
8221
|
className,
|
|
7993
8222
|
...props
|
|
7994
8223
|
}) {
|
|
7995
|
-
return /* @__PURE__ */
|
|
8224
|
+
return /* @__PURE__ */ jsx61(
|
|
7996
8225
|
"div",
|
|
7997
8226
|
{
|
|
7998
8227
|
"data-slot": "sidebar-menu-badge",
|
|
@@ -8015,10 +8244,10 @@ function SidebarMenuSkeleton({
|
|
|
8015
8244
|
showIcon = false,
|
|
8016
8245
|
...props
|
|
8017
8246
|
}) {
|
|
8018
|
-
const width =
|
|
8247
|
+
const width = React29.useMemo(() => {
|
|
8019
8248
|
return `${Math.floor(Math.random() * 40) + 50}%`;
|
|
8020
8249
|
}, []);
|
|
8021
|
-
return /* @__PURE__ */
|
|
8250
|
+
return /* @__PURE__ */ jsxs38(
|
|
8022
8251
|
"div",
|
|
8023
8252
|
{
|
|
8024
8253
|
"data-slot": "sidebar-menu-skeleton",
|
|
@@ -8026,14 +8255,14 @@ function SidebarMenuSkeleton({
|
|
|
8026
8255
|
className: cn("flex h-8 items-center gap-2 rounded-md px-2", className),
|
|
8027
8256
|
...props,
|
|
8028
8257
|
children: [
|
|
8029
|
-
showIcon && /* @__PURE__ */
|
|
8258
|
+
showIcon && /* @__PURE__ */ jsx61(
|
|
8030
8259
|
Skeleton,
|
|
8031
8260
|
{
|
|
8032
8261
|
className: "size-4 rounded-md",
|
|
8033
8262
|
"data-sidebar": "menu-skeleton-icon"
|
|
8034
8263
|
}
|
|
8035
8264
|
),
|
|
8036
|
-
/* @__PURE__ */
|
|
8265
|
+
/* @__PURE__ */ jsx61(
|
|
8037
8266
|
Skeleton,
|
|
8038
8267
|
{
|
|
8039
8268
|
className: "h-4 max-w-(--skeleton-width) flex-1",
|
|
@@ -8048,7 +8277,7 @@ function SidebarMenuSkeleton({
|
|
|
8048
8277
|
);
|
|
8049
8278
|
}
|
|
8050
8279
|
function SidebarMenuSub({ className, ...props }) {
|
|
8051
|
-
return /* @__PURE__ */
|
|
8280
|
+
return /* @__PURE__ */ jsx61(
|
|
8052
8281
|
"ul",
|
|
8053
8282
|
{
|
|
8054
8283
|
"data-slot": "sidebar-menu-sub",
|
|
@@ -8066,7 +8295,7 @@ function SidebarMenuSubItem({
|
|
|
8066
8295
|
className,
|
|
8067
8296
|
...props
|
|
8068
8297
|
}) {
|
|
8069
|
-
return /* @__PURE__ */
|
|
8298
|
+
return /* @__PURE__ */ jsx61(
|
|
8070
8299
|
"li",
|
|
8071
8300
|
{
|
|
8072
8301
|
"data-slot": "sidebar-menu-sub-item",
|
|
@@ -8084,7 +8313,7 @@ function SidebarMenuSubButton({
|
|
|
8084
8313
|
...props
|
|
8085
8314
|
}) {
|
|
8086
8315
|
const Comp = asChild ? Slot5 : "a";
|
|
8087
|
-
return /* @__PURE__ */
|
|
8316
|
+
return /* @__PURE__ */ jsx61(
|
|
8088
8317
|
Comp,
|
|
8089
8318
|
{
|
|
8090
8319
|
"data-slot": "sidebar-menu-sub-button",
|
|
@@ -8105,12 +8334,12 @@ function SidebarMenuSubButton({
|
|
|
8105
8334
|
}
|
|
8106
8335
|
|
|
8107
8336
|
// src/components/ui/slider.tsx
|
|
8108
|
-
import * as
|
|
8337
|
+
import * as React30 from "react";
|
|
8109
8338
|
import * as SliderPrimitive from "@radix-ui/react-slider";
|
|
8110
|
-
import { jsx as
|
|
8339
|
+
import { jsx as jsx62, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
8111
8340
|
function useDocumentDirection2() {
|
|
8112
|
-
const [direction, setDirection] =
|
|
8113
|
-
|
|
8341
|
+
const [direction, setDirection] = React30.useState("rtl");
|
|
8342
|
+
React30.useEffect(() => {
|
|
8114
8343
|
const getDirection = () => {
|
|
8115
8344
|
if (typeof document === "undefined") return "rtl";
|
|
8116
8345
|
const htmlDir = document.documentElement.getAttribute("dir");
|
|
@@ -8141,13 +8370,13 @@ function Slider({
|
|
|
8141
8370
|
dir,
|
|
8142
8371
|
...props
|
|
8143
8372
|
}) {
|
|
8144
|
-
const _values =
|
|
8373
|
+
const _values = React30.useMemo(
|
|
8145
8374
|
() => Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min, max],
|
|
8146
8375
|
[value, defaultValue, min, max]
|
|
8147
8376
|
);
|
|
8148
8377
|
const documentDir = useDocumentDirection2();
|
|
8149
8378
|
const resolvedDir = dir ?? documentDir;
|
|
8150
|
-
return /* @__PURE__ */
|
|
8379
|
+
return /* @__PURE__ */ jsxs39(
|
|
8151
8380
|
SliderPrimitive.Root,
|
|
8152
8381
|
{
|
|
8153
8382
|
"data-slot": "slider",
|
|
@@ -8162,14 +8391,14 @@ function Slider({
|
|
|
8162
8391
|
),
|
|
8163
8392
|
...props,
|
|
8164
8393
|
children: [
|
|
8165
|
-
/* @__PURE__ */
|
|
8394
|
+
/* @__PURE__ */ jsx62(
|
|
8166
8395
|
SliderPrimitive.Track,
|
|
8167
8396
|
{
|
|
8168
8397
|
"data-slot": "slider-track",
|
|
8169
8398
|
className: cn(
|
|
8170
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"
|
|
8171
8400
|
),
|
|
8172
|
-
children: /* @__PURE__ */
|
|
8401
|
+
children: /* @__PURE__ */ jsx62(
|
|
8173
8402
|
SliderPrimitive.Range,
|
|
8174
8403
|
{
|
|
8175
8404
|
"data-slot": "slider-range",
|
|
@@ -8180,7 +8409,7 @@ function Slider({
|
|
|
8180
8409
|
)
|
|
8181
8410
|
}
|
|
8182
8411
|
),
|
|
8183
|
-
Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */
|
|
8412
|
+
Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */ jsx62(
|
|
8184
8413
|
SliderPrimitive.Thumb,
|
|
8185
8414
|
{
|
|
8186
8415
|
"data-slot": "slider-thumb",
|
|
@@ -8204,12 +8433,12 @@ import {
|
|
|
8204
8433
|
import { useTheme } from "next-themes";
|
|
8205
8434
|
import { Toaster as Sonner } from "sonner";
|
|
8206
8435
|
import { toast } from "sonner";
|
|
8207
|
-
import { jsx as
|
|
8436
|
+
import { jsx as jsx63 } from "react/jsx-runtime";
|
|
8208
8437
|
var SONNER_DEFAULT_DURATION = 4e3;
|
|
8209
|
-
var StatusIconSuccess = () => /* @__PURE__ */
|
|
8210
|
-
var StatusIconInfo = () => /* @__PURE__ */
|
|
8211
|
-
var StatusIconWarning = () => /* @__PURE__ */
|
|
8212
|
-
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" }) });
|
|
8213
8442
|
var Toaster = ({
|
|
8214
8443
|
dir = "rtl",
|
|
8215
8444
|
position = "bottom-left",
|
|
@@ -8218,15 +8447,15 @@ var Toaster = ({
|
|
|
8218
8447
|
...props
|
|
8219
8448
|
}) => {
|
|
8220
8449
|
const { theme = "system" } = useTheme();
|
|
8221
|
-
return /* @__PURE__ */
|
|
8450
|
+
return /* @__PURE__ */ jsx63(
|
|
8222
8451
|
Sonner,
|
|
8223
8452
|
{
|
|
8224
8453
|
icons: {
|
|
8225
|
-
success: /* @__PURE__ */
|
|
8226
|
-
info: /* @__PURE__ */
|
|
8227
|
-
warning: /* @__PURE__ */
|
|
8228
|
-
error: /* @__PURE__ */
|
|
8229
|
-
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" })
|
|
8230
8459
|
},
|
|
8231
8460
|
theme,
|
|
8232
8461
|
className: "toaster group pointer-events-auto",
|
|
@@ -8276,11 +8505,11 @@ var Toaster = ({
|
|
|
8276
8505
|
};
|
|
8277
8506
|
|
|
8278
8507
|
// src/components/ui/switch.tsx
|
|
8279
|
-
import * as
|
|
8508
|
+
import * as React31 from "react";
|
|
8280
8509
|
import * as SwitchPrimitive from "@radix-ui/react-switch";
|
|
8281
|
-
import { cva as
|
|
8282
|
-
import { jsx as
|
|
8283
|
-
var switchRootVariants =
|
|
8510
|
+
import { cva as cva15 } from "class-variance-authority";
|
|
8511
|
+
import { jsx as jsx64 } from "react/jsx-runtime";
|
|
8512
|
+
var switchRootVariants = cva15(
|
|
8284
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",
|
|
8285
8514
|
{
|
|
8286
8515
|
variants: {
|
|
@@ -8295,7 +8524,7 @@ var switchRootVariants = cva13(
|
|
|
8295
8524
|
}
|
|
8296
8525
|
}
|
|
8297
8526
|
);
|
|
8298
|
-
var switchThumbVariants =
|
|
8527
|
+
var switchThumbVariants = cva15(
|
|
8299
8528
|
"pointer-events-none block rounded-full bg-foreground-lighter data-[state=checked]:bg-white shadow-lg ring-0 transition-transform",
|
|
8300
8529
|
{
|
|
8301
8530
|
variants: {
|
|
@@ -8310,14 +8539,14 @@ var switchThumbVariants = cva13(
|
|
|
8310
8539
|
}
|
|
8311
8540
|
}
|
|
8312
8541
|
);
|
|
8313
|
-
var Switch =
|
|
8542
|
+
var Switch = React31.forwardRef(({ className, size, ...props }, ref) => /* @__PURE__ */ jsx64(
|
|
8314
8543
|
SwitchPrimitive.Root,
|
|
8315
8544
|
{
|
|
8316
8545
|
"data-slot": "switch",
|
|
8317
8546
|
className: cn(switchRootVariants({ size }), className),
|
|
8318
8547
|
...props,
|
|
8319
8548
|
ref,
|
|
8320
|
-
children: /* @__PURE__ */
|
|
8549
|
+
children: /* @__PURE__ */ jsx64(
|
|
8321
8550
|
SwitchPrimitive.Thumb,
|
|
8322
8551
|
{
|
|
8323
8552
|
"data-slot": "switch-thumb",
|
|
@@ -8329,14 +8558,14 @@ var Switch = React29.forwardRef(({ className, size, ...props }, ref) => /* @__PU
|
|
|
8329
8558
|
Switch.displayName = SwitchPrimitive.Root.displayName;
|
|
8330
8559
|
|
|
8331
8560
|
// src/components/ui/table.tsx
|
|
8332
|
-
import { jsx as
|
|
8561
|
+
import { jsx as jsx65 } from "react/jsx-runtime";
|
|
8333
8562
|
function Table({ className, ...props }) {
|
|
8334
|
-
return /* @__PURE__ */
|
|
8563
|
+
return /* @__PURE__ */ jsx65(
|
|
8335
8564
|
"div",
|
|
8336
8565
|
{
|
|
8337
8566
|
"data-slot": "table-container",
|
|
8338
8567
|
className: "relative w-full overflow-x-auto",
|
|
8339
|
-
children: /* @__PURE__ */
|
|
8568
|
+
children: /* @__PURE__ */ jsx65(
|
|
8340
8569
|
"table",
|
|
8341
8570
|
{
|
|
8342
8571
|
"data-slot": "table",
|
|
@@ -8348,7 +8577,7 @@ function Table({ className, ...props }) {
|
|
|
8348
8577
|
);
|
|
8349
8578
|
}
|
|
8350
8579
|
function TableHeader({ className, ...props }) {
|
|
8351
|
-
return /* @__PURE__ */
|
|
8580
|
+
return /* @__PURE__ */ jsx65(
|
|
8352
8581
|
"thead",
|
|
8353
8582
|
{
|
|
8354
8583
|
"data-slot": "table-header",
|
|
@@ -8358,7 +8587,7 @@ function TableHeader({ className, ...props }) {
|
|
|
8358
8587
|
);
|
|
8359
8588
|
}
|
|
8360
8589
|
function TableBody({ className, ...props }) {
|
|
8361
|
-
return /* @__PURE__ */
|
|
8590
|
+
return /* @__PURE__ */ jsx65(
|
|
8362
8591
|
"tbody",
|
|
8363
8592
|
{
|
|
8364
8593
|
"data-slot": "table-body",
|
|
@@ -8368,7 +8597,7 @@ function TableBody({ className, ...props }) {
|
|
|
8368
8597
|
);
|
|
8369
8598
|
}
|
|
8370
8599
|
function TableFooter({ className, ...props }) {
|
|
8371
|
-
return /* @__PURE__ */
|
|
8600
|
+
return /* @__PURE__ */ jsx65(
|
|
8372
8601
|
"tfoot",
|
|
8373
8602
|
{
|
|
8374
8603
|
"data-slot": "table-footer",
|
|
@@ -8381,7 +8610,7 @@ function TableFooter({ className, ...props }) {
|
|
|
8381
8610
|
);
|
|
8382
8611
|
}
|
|
8383
8612
|
function TableRow({ className, ...props }) {
|
|
8384
|
-
return /* @__PURE__ */
|
|
8613
|
+
return /* @__PURE__ */ jsx65(
|
|
8385
8614
|
"tr",
|
|
8386
8615
|
{
|
|
8387
8616
|
"data-slot": "table-row",
|
|
@@ -8394,7 +8623,7 @@ function TableRow({ className, ...props }) {
|
|
|
8394
8623
|
);
|
|
8395
8624
|
}
|
|
8396
8625
|
function TableHead({ className, ...props }) {
|
|
8397
|
-
return /* @__PURE__ */
|
|
8626
|
+
return /* @__PURE__ */ jsx65(
|
|
8398
8627
|
"th",
|
|
8399
8628
|
{
|
|
8400
8629
|
"data-slot": "table-head",
|
|
@@ -8407,7 +8636,7 @@ function TableHead({ className, ...props }) {
|
|
|
8407
8636
|
);
|
|
8408
8637
|
}
|
|
8409
8638
|
function TableCell({ className, ...props }) {
|
|
8410
|
-
return /* @__PURE__ */
|
|
8639
|
+
return /* @__PURE__ */ jsx65(
|
|
8411
8640
|
"td",
|
|
8412
8641
|
{
|
|
8413
8642
|
"data-slot": "table-cell",
|
|
@@ -8423,7 +8652,7 @@ function TableCaption({
|
|
|
8423
8652
|
className,
|
|
8424
8653
|
...props
|
|
8425
8654
|
}) {
|
|
8426
|
-
return /* @__PURE__ */
|
|
8655
|
+
return /* @__PURE__ */ jsx65(
|
|
8427
8656
|
"caption",
|
|
8428
8657
|
{
|
|
8429
8658
|
"data-slot": "table-caption",
|
|
@@ -8434,11 +8663,11 @@ function TableCaption({
|
|
|
8434
8663
|
}
|
|
8435
8664
|
|
|
8436
8665
|
// src/components/ui/tabs.tsx
|
|
8437
|
-
import * as
|
|
8666
|
+
import * as React32 from "react";
|
|
8438
8667
|
import * as TabsPrimitive from "@radix-ui/react-tabs";
|
|
8439
|
-
import { jsx as
|
|
8668
|
+
import { jsx as jsx66 } from "react/jsx-runtime";
|
|
8440
8669
|
var Tabs = TabsPrimitive.Root;
|
|
8441
|
-
var TabsList =
|
|
8670
|
+
var TabsList = React32.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx66(
|
|
8442
8671
|
TabsPrimitive.List,
|
|
8443
8672
|
{
|
|
8444
8673
|
ref,
|
|
@@ -8450,7 +8679,7 @@ var TabsList = React30.forwardRef(({ className, ...props }, ref) => /* @__PURE__
|
|
|
8450
8679
|
}
|
|
8451
8680
|
));
|
|
8452
8681
|
TabsList.displayName = TabsPrimitive.List.displayName;
|
|
8453
|
-
var TabsTrigger =
|
|
8682
|
+
var TabsTrigger = React32.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx66(
|
|
8454
8683
|
TabsPrimitive.Trigger,
|
|
8455
8684
|
{
|
|
8456
8685
|
ref,
|
|
@@ -8462,7 +8691,7 @@ var TabsTrigger = React30.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
8462
8691
|
}
|
|
8463
8692
|
));
|
|
8464
8693
|
TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
|
|
8465
|
-
var TabsContent =
|
|
8694
|
+
var TabsContent = React32.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx66(
|
|
8466
8695
|
TabsPrimitive.Content,
|
|
8467
8696
|
{
|
|
8468
8697
|
ref,
|
|
@@ -8477,9 +8706,9 @@ TabsContent.displayName = TabsPrimitive.Content.displayName;
|
|
|
8477
8706
|
|
|
8478
8707
|
// src/components/ui/toggle.tsx
|
|
8479
8708
|
import * as TogglePrimitive from "@radix-ui/react-toggle";
|
|
8480
|
-
import { cva as
|
|
8481
|
-
import { jsx as
|
|
8482
|
-
var toggleVariants =
|
|
8709
|
+
import { cva as cva16 } from "class-variance-authority";
|
|
8710
|
+
import { jsx as jsx67 } from "react/jsx-runtime";
|
|
8711
|
+
var toggleVariants = cva16(
|
|
8483
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",
|
|
8484
8713
|
{
|
|
8485
8714
|
variants: {
|
|
@@ -8505,7 +8734,7 @@ function Toggle({
|
|
|
8505
8734
|
size,
|
|
8506
8735
|
...props
|
|
8507
8736
|
}) {
|
|
8508
|
-
return /* @__PURE__ */
|
|
8737
|
+
return /* @__PURE__ */ jsx67(
|
|
8509
8738
|
TogglePrimitive.Root,
|
|
8510
8739
|
{
|
|
8511
8740
|
"data-slot": "toggle",
|
|
@@ -8516,10 +8745,10 @@ function Toggle({
|
|
|
8516
8745
|
}
|
|
8517
8746
|
|
|
8518
8747
|
// src/components/ui/toggle-group.tsx
|
|
8519
|
-
import * as
|
|
8748
|
+
import * as React33 from "react";
|
|
8520
8749
|
import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
|
|
8521
|
-
import { jsx as
|
|
8522
|
-
var ToggleGroupContext =
|
|
8750
|
+
import { jsx as jsx68 } from "react/jsx-runtime";
|
|
8751
|
+
var ToggleGroupContext = React33.createContext({
|
|
8523
8752
|
size: "default",
|
|
8524
8753
|
variant: "default"
|
|
8525
8754
|
});
|
|
@@ -8530,13 +8759,13 @@ function ToggleGroup({
|
|
|
8530
8759
|
children,
|
|
8531
8760
|
...props
|
|
8532
8761
|
}) {
|
|
8533
|
-
return /* @__PURE__ */
|
|
8762
|
+
return /* @__PURE__ */ jsx68(
|
|
8534
8763
|
ToggleGroupPrimitive.Root,
|
|
8535
8764
|
{
|
|
8536
8765
|
"data-slot": "toggle-group",
|
|
8537
8766
|
className: cn("flex items-center justify-center gap-1", className),
|
|
8538
8767
|
...props,
|
|
8539
|
-
children: /* @__PURE__ */
|
|
8768
|
+
children: /* @__PURE__ */ jsx68(ToggleGroupContext.Provider, { value: { variant, size }, children })
|
|
8540
8769
|
}
|
|
8541
8770
|
);
|
|
8542
8771
|
}
|
|
@@ -8547,8 +8776,8 @@ function ToggleGroupItem({
|
|
|
8547
8776
|
size,
|
|
8548
8777
|
...props
|
|
8549
8778
|
}) {
|
|
8550
|
-
const context =
|
|
8551
|
-
return /* @__PURE__ */
|
|
8779
|
+
const context = React33.useContext(ToggleGroupContext);
|
|
8780
|
+
return /* @__PURE__ */ jsx68(
|
|
8552
8781
|
ToggleGroupPrimitive.Item,
|
|
8553
8782
|
{
|
|
8554
8783
|
"data-slot": "toggle-group-item",
|
|
@@ -8569,10 +8798,10 @@ function ToggleGroupItem({
|
|
|
8569
8798
|
import { ResponsiveLine } from "@nivo/line";
|
|
8570
8799
|
|
|
8571
8800
|
// src/hooks/use-root-styles.ts
|
|
8572
|
-
import { useEffect as
|
|
8801
|
+
import { useEffect as useEffect10, useMemo as useMemo7, useState as useState12 } from "react";
|
|
8573
8802
|
function useRootStyles() {
|
|
8574
|
-
const [version, setVersion] =
|
|
8575
|
-
|
|
8803
|
+
const [version, setVersion] = useState12(0);
|
|
8804
|
+
useEffect10(() => {
|
|
8576
8805
|
if (typeof window === "undefined" || !document?.documentElement) {
|
|
8577
8806
|
return;
|
|
8578
8807
|
}
|
|
@@ -8612,7 +8841,7 @@ function resolveCssColor(styles, variable, fallback) {
|
|
|
8612
8841
|
}
|
|
8613
8842
|
|
|
8614
8843
|
// src/components/charts/PartoLineChart.tsx
|
|
8615
|
-
import { jsx as
|
|
8844
|
+
import { jsx as jsx69 } from "react/jsx-runtime";
|
|
8616
8845
|
var FALLBACKS = {
|
|
8617
8846
|
foreground: "hsl(0 0% 98%)",
|
|
8618
8847
|
border: "hsl(0 0% 45%)",
|
|
@@ -8700,12 +8929,12 @@ function PartoLineChart({ className, ...props }) {
|
|
|
8700
8929
|
getColor("--chart-4", FALLBACKS.chart4),
|
|
8701
8930
|
getColor("--chart-5", FALLBACKS.chart5)
|
|
8702
8931
|
];
|
|
8703
|
-
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 }) });
|
|
8704
8933
|
}
|
|
8705
8934
|
|
|
8706
8935
|
// src/components/charts/PartoBarChart.tsx
|
|
8707
8936
|
import { ResponsiveBar } from "@nivo/bar";
|
|
8708
|
-
import { jsx as
|
|
8937
|
+
import { jsx as jsx70 } from "react/jsx-runtime";
|
|
8709
8938
|
var FALLBACKS2 = {
|
|
8710
8939
|
foreground: "hsl(0 0% 98%)",
|
|
8711
8940
|
border: "hsl(0 0% 45%)",
|
|
@@ -8783,12 +9012,12 @@ function PartoBarChart({ className, ...props }) {
|
|
|
8783
9012
|
getColor("--chart-4", FALLBACKS2.chart4),
|
|
8784
9013
|
getColor("--chart-5", FALLBACKS2.chart5)
|
|
8785
9014
|
];
|
|
8786
|
-
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 }) });
|
|
8787
9016
|
}
|
|
8788
9017
|
|
|
8789
9018
|
// src/components/charts/PartoPieChart.tsx
|
|
8790
9019
|
import { ResponsivePie } from "@nivo/pie";
|
|
8791
|
-
import { jsx as
|
|
9020
|
+
import { jsx as jsx71 } from "react/jsx-runtime";
|
|
8792
9021
|
var FALLBACKS3 = {
|
|
8793
9022
|
foreground: "hsl(0 0% 98%)",
|
|
8794
9023
|
popover: "hsl(0 0% 12%)",
|
|
@@ -8833,12 +9062,12 @@ function PartoPieChart({ className, ...props }) {
|
|
|
8833
9062
|
getColor("--chart-4", FALLBACKS3.chart4),
|
|
8834
9063
|
getColor("--chart-5", FALLBACKS3.chart5)
|
|
8835
9064
|
];
|
|
8836
|
-
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 }) });
|
|
8837
9066
|
}
|
|
8838
9067
|
|
|
8839
9068
|
// src/components/charts/PartoHeatMap.tsx
|
|
8840
9069
|
import { ResponsiveHeatMap } from "@nivo/heatmap";
|
|
8841
|
-
import { jsx as
|
|
9070
|
+
import { jsx as jsx72, jsxs as jsxs40 } from "react/jsx-runtime";
|
|
8842
9071
|
var FALLBACKS4 = {
|
|
8843
9072
|
foreground: "hsl(0 0% 98%)",
|
|
8844
9073
|
border: "hsl(0 0% 45%)",
|
|
@@ -8965,16 +9194,16 @@ function PartoHeatMap({
|
|
|
8965
9194
|
}
|
|
8966
9195
|
};
|
|
8967
9196
|
const defaultValueFormat = (value) => formatNumber2(value);
|
|
8968
|
-
const defaultTooltip = ({ cell }) => /* @__PURE__ */
|
|
8969
|
-
/* @__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: [
|
|
8970
9199
|
formatWeekday(String(cell.serieId)),
|
|
8971
9200
|
" - ",
|
|
8972
9201
|
formatNumber2(cell.data.x)
|
|
8973
9202
|
] }),
|
|
8974
|
-
/* @__PURE__ */
|
|
9203
|
+
/* @__PURE__ */ jsxs40("div", { className: "text-xs whitespace-nowrap", children: [
|
|
8975
9204
|
isPersian ? "\u0634\u062F\u062A \u0641\u0639\u0627\u0644\u06CC\u062A" : "Activity",
|
|
8976
9205
|
": ",
|
|
8977
|
-
/* @__PURE__ */
|
|
9206
|
+
/* @__PURE__ */ jsx72("span", { className: "font-bold text-primary", children: formatNumber2(cell.value ?? 0) })
|
|
8978
9207
|
] })
|
|
8979
9208
|
] });
|
|
8980
9209
|
const processAxisConfig = (axisConfig) => {
|
|
@@ -9003,13 +9232,13 @@ function PartoHeatMap({
|
|
|
9003
9232
|
return formatWeekday(String(formatted));
|
|
9004
9233
|
}
|
|
9005
9234
|
} : null;
|
|
9006
|
-
return /* @__PURE__ */
|
|
9235
|
+
return /* @__PURE__ */ jsx72(
|
|
9007
9236
|
"div",
|
|
9008
9237
|
{
|
|
9009
9238
|
className,
|
|
9010
9239
|
dir: "ltr",
|
|
9011
9240
|
style: { position: "relative", width: "100%", height: "100%" },
|
|
9012
|
-
children: /* @__PURE__ */
|
|
9241
|
+
children: /* @__PURE__ */ jsx72(
|
|
9013
9242
|
ResponsiveHeatMap,
|
|
9014
9243
|
{
|
|
9015
9244
|
data,
|
|
@@ -9041,12 +9270,12 @@ function PartoHeatMap({
|
|
|
9041
9270
|
}
|
|
9042
9271
|
|
|
9043
9272
|
// src/components/charts/PartoWordCloud.tsx
|
|
9044
|
-
import * as
|
|
9273
|
+
import * as React34 from "react";
|
|
9045
9274
|
import { createPortal as createPortal3 } from "react-dom";
|
|
9046
9275
|
import { Wordcloud } from "@visx/wordcloud";
|
|
9047
9276
|
import { scaleLog } from "@visx/scale";
|
|
9048
9277
|
import { Text } from "@visx/text";
|
|
9049
|
-
import { jsx as
|
|
9278
|
+
import { jsx as jsx73, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
9050
9279
|
var FALLBACKS5 = {
|
|
9051
9280
|
primary: "hsl(12 76% 61%)"
|
|
9052
9281
|
};
|
|
@@ -9078,11 +9307,11 @@ function PartoWordCloud({
|
|
|
9078
9307
|
fontWeight = 600
|
|
9079
9308
|
}) {
|
|
9080
9309
|
const styles = useRootStyles();
|
|
9081
|
-
const [hovered, setHovered] =
|
|
9082
|
-
const containerRef =
|
|
9310
|
+
const [hovered, setHovered] = React34.useState(null);
|
|
9311
|
+
const containerRef = React34.useRef(null);
|
|
9083
9312
|
const getColor = (variable, fallback) => resolveCssColor(styles, variable, fallback);
|
|
9084
9313
|
const primaryColor = getColor("--primary", FALLBACKS5.primary);
|
|
9085
|
-
const formattedWords =
|
|
9314
|
+
const formattedWords = React34.useMemo(() => {
|
|
9086
9315
|
return words.map((word) => ({
|
|
9087
9316
|
...word,
|
|
9088
9317
|
text: formatHashtagDirection(word.text)
|
|
@@ -9109,7 +9338,7 @@ function PartoWordCloud({
|
|
|
9109
9338
|
color: primaryColor
|
|
9110
9339
|
});
|
|
9111
9340
|
};
|
|
9112
|
-
return /* @__PURE__ */
|
|
9341
|
+
return /* @__PURE__ */ jsxs41(
|
|
9113
9342
|
"div",
|
|
9114
9343
|
{
|
|
9115
9344
|
ref: containerRef,
|
|
@@ -9117,7 +9346,7 @@ function PartoWordCloud({
|
|
|
9117
9346
|
style: { position: "relative", width: "100%", height: "100%", display: "flex", alignItems: "center", justifyContent: "center" },
|
|
9118
9347
|
dir: "rtl",
|
|
9119
9348
|
children: [
|
|
9120
|
-
/* @__PURE__ */
|
|
9349
|
+
/* @__PURE__ */ jsx73("div", { style: { position: "relative", width, height, display: "flex", alignItems: "center", justifyContent: "center" }, children: /* @__PURE__ */ jsx73(
|
|
9121
9350
|
Wordcloud,
|
|
9122
9351
|
{
|
|
9123
9352
|
words: formattedWords,
|
|
@@ -9133,7 +9362,7 @@ function PartoWordCloud({
|
|
|
9133
9362
|
const originalData = formattedWords.find((item) => item.text === w.text);
|
|
9134
9363
|
const value = originalData?.value || 0;
|
|
9135
9364
|
if (!w.x || !w.y || !w.text) return null;
|
|
9136
|
-
return /* @__PURE__ */
|
|
9365
|
+
return /* @__PURE__ */ jsx73("g", { children: /* @__PURE__ */ jsx73(
|
|
9137
9366
|
Text,
|
|
9138
9367
|
{
|
|
9139
9368
|
fill: primaryColor,
|
|
@@ -9157,7 +9386,7 @@ function PartoWordCloud({
|
|
|
9157
9386
|
}
|
|
9158
9387
|
) }),
|
|
9159
9388
|
hovered && typeof document !== "undefined" && createPortal3(
|
|
9160
|
-
/* @__PURE__ */
|
|
9389
|
+
/* @__PURE__ */ jsx73(
|
|
9161
9390
|
"div",
|
|
9162
9391
|
{
|
|
9163
9392
|
className: "pointer-events-none fixed z-[9999]",
|
|
@@ -9167,14 +9396,14 @@ function PartoWordCloud({
|
|
|
9167
9396
|
top: `${hovered.y - 10}px`,
|
|
9168
9397
|
transform: "translate(-50%, -100%)"
|
|
9169
9398
|
},
|
|
9170
|
-
children: /* @__PURE__ */
|
|
9171
|
-
/* @__PURE__ */
|
|
9172
|
-
/* @__PURE__ */
|
|
9173
|
-
/* @__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 })
|
|
9174
9403
|
] }),
|
|
9175
|
-
/* @__PURE__ */
|
|
9176
|
-
/* @__PURE__ */
|
|
9177
|
-
/* @__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") })
|
|
9178
9407
|
] })
|
|
9179
9408
|
] })
|
|
9180
9409
|
}
|
|
@@ -9323,6 +9552,7 @@ export {
|
|
|
9323
9552
|
FormItem,
|
|
9324
9553
|
FormLabel,
|
|
9325
9554
|
FormMessage,
|
|
9555
|
+
HashtagInput,
|
|
9326
9556
|
HoverCard,
|
|
9327
9557
|
HoverCardContent,
|
|
9328
9558
|
HoverCardTrigger,
|
|
@@ -9471,6 +9701,7 @@ export {
|
|
|
9471
9701
|
TabsContent,
|
|
9472
9702
|
TabsList,
|
|
9473
9703
|
TabsTrigger,
|
|
9704
|
+
TagInput,
|
|
9474
9705
|
Textarea,
|
|
9475
9706
|
Toaster,
|
|
9476
9707
|
Toggle,
|
|
@@ -9498,9 +9729,11 @@ export {
|
|
|
9498
9729
|
getPersianWeekdayName,
|
|
9499
9730
|
getPersianYear,
|
|
9500
9731
|
getPersianYearsForDropdown,
|
|
9732
|
+
hashtagInputVariants,
|
|
9501
9733
|
instagramPostVariants,
|
|
9502
9734
|
jalaliToGregorian,
|
|
9503
9735
|
navigationMenuTriggerStyle,
|
|
9736
|
+
tagInputVariants,
|
|
9504
9737
|
toEnglishDigits,
|
|
9505
9738
|
toPersianDigits,
|
|
9506
9739
|
toast,
|