analytica-frontend-lib 1.0.58 → 1.0.59

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.d.mts CHANGED
@@ -25,6 +25,7 @@ export { default as DropdownMenu, DropdownMenuContent, DropdownMenuItem, Dropdow
25
25
  export { default as Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from './Select/index.mjs';
26
26
  export { default as Menu, MenuContent, MenuItem, MenuOverflow, MenuSeparator } from './Menu/index.mjs';
27
27
  export { CardActivesResults, CardPerformance, CardProgress, CardQuestions, CardResults, CardStatus, CardTopic } from './Card/index.mjs';
28
+ export { Skeleton, SkeletonCard, SkeletonCircle, SkeletonList, SkeletonRectangle, SkeletonRounded, SkeletonTable, SkeletonText } from './Skeleton/index.mjs';
28
29
  import 'react/jsx-runtime';
29
30
  import 'react';
30
31
  import 'zustand';
package/dist/index.d.ts CHANGED
@@ -25,6 +25,7 @@ export { default as DropdownMenu, DropdownMenuContent, DropdownMenuItem, Dropdow
25
25
  export { default as Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from './Select/index.js';
26
26
  export { default as Menu, MenuContent, MenuItem, MenuOverflow, MenuSeparator } from './Menu/index.js';
27
27
  export { CardActivesResults, CardPerformance, CardProgress, CardQuestions, CardResults, CardStatus, CardTopic } from './Card/index.js';
28
+ export { Skeleton, SkeletonCard, SkeletonCircle, SkeletonList, SkeletonRectangle, SkeletonRounded, SkeletonTable, SkeletonText } from './Skeleton/index.js';
28
29
  import 'react/jsx-runtime';
29
30
  import 'react';
30
31
  import 'zustand';
package/dist/index.js CHANGED
@@ -63,6 +63,14 @@ __export(src_exports, {
63
63
  SelectTrigger: () => SelectTrigger,
64
64
  SelectValue: () => SelectValue,
65
65
  SelectionButton: () => SelectionButton_default,
66
+ Skeleton: () => Skeleton,
67
+ SkeletonCard: () => SkeletonCard,
68
+ SkeletonCircle: () => SkeletonCircle,
69
+ SkeletonList: () => SkeletonList,
70
+ SkeletonRectangle: () => SkeletonRectangle,
71
+ SkeletonRounded: () => SkeletonRounded,
72
+ SkeletonTable: () => SkeletonTable,
73
+ SkeletonText: () => SkeletonText,
66
74
  Stepper: () => Stepper_default,
67
75
  Table: () => Table_default,
68
76
  Text: () => Text_default,
@@ -3973,6 +3981,58 @@ var Menu_default = Menu;
3973
3981
  var import_react14 = require("react");
3974
3982
  var import_phosphor_react13 = require("phosphor-react");
3975
3983
  var import_jsx_runtime26 = require("react/jsx-runtime");
3984
+ var CARD_BASE_CLASSES = {
3985
+ default: "w-full bg-background border border-border-50 rounded-xl",
3986
+ compact: "w-full bg-background border border-border-50 rounded-lg",
3987
+ minimal: "w-full bg-background border border-border-100 rounded-md"
3988
+ };
3989
+ var CARD_PADDING_CLASSES = {
3990
+ none: "",
3991
+ small: "p-2",
3992
+ medium: "p-4",
3993
+ large: "p-6"
3994
+ };
3995
+ var CARD_MIN_HEIGHT_CLASSES = {
3996
+ none: "",
3997
+ small: "min-h-16",
3998
+ medium: "min-h-20",
3999
+ large: "min-h-24"
4000
+ };
4001
+ var CARD_LAYOUT_CLASSES = {
4002
+ horizontal: "flex flex-row",
4003
+ vertical: "flex flex-col"
4004
+ };
4005
+ var CARD_CURSOR_CLASSES = {
4006
+ default: "",
4007
+ pointer: "cursor-pointer"
4008
+ };
4009
+ var CardBase = (0, import_react14.forwardRef)(
4010
+ ({
4011
+ children,
4012
+ variant = "default",
4013
+ layout = "horizontal",
4014
+ padding = "medium",
4015
+ minHeight = "medium",
4016
+ cursor = "default",
4017
+ className = "",
4018
+ ...props
4019
+ }, ref) => {
4020
+ const baseClasses = CARD_BASE_CLASSES[variant];
4021
+ const paddingClasses = CARD_PADDING_CLASSES[padding];
4022
+ const minHeightClasses = CARD_MIN_HEIGHT_CLASSES[minHeight];
4023
+ const layoutClasses = CARD_LAYOUT_CLASSES[layout];
4024
+ const cursorClasses = CARD_CURSOR_CLASSES[cursor];
4025
+ const combinedClasses = [
4026
+ baseClasses,
4027
+ paddingClasses,
4028
+ minHeightClasses,
4029
+ layoutClasses,
4030
+ cursorClasses,
4031
+ className
4032
+ ].filter(Boolean).join(" ");
4033
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { ref, className: combinedClasses, ...props, children });
4034
+ }
4035
+ );
3976
4036
  var ACTION_CARD_CLASSES = {
3977
4037
  warning: "bg-warning-background",
3978
4038
  success: "bg-success-300",
@@ -4035,7 +4095,7 @@ var CardActivesResults = (0, import_react14.forwardRef)(
4035
4095
  children: icon
4036
4096
  }
4037
4097
  ),
4038
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("p", { className: "text-text-800 font-medium uppercase text-2xs", children: title }),
4098
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Text_default, { size: "2xs", weight: "medium", className: "text-text-800 uppercase", children: title }),
4039
4099
  /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("p", { className: `text-lg font-bold ${actionSubTitleClasses}`, children: subTitle })
4040
4100
  ]
4041
4101
  }
@@ -4068,13 +4128,13 @@ var CardQuestions = (0, import_react14.forwardRef)(
4068
4128
  const stateLabel = isDone ? "Realizado" : "N\xE3o Realizado";
4069
4129
  const buttonLabel = isDone ? "Ver Quest\xE3o" : "Responder";
4070
4130
  return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
4071
- "div",
4131
+ CardBase,
4072
4132
  {
4073
4133
  ref,
4074
- className: `
4075
- w-full flex flex-row justify-between rounded-xl p-4 gap-4 bg-background border border-border-50
4076
- ${className}
4077
- `,
4134
+ layout: "horizontal",
4135
+ padding: "medium",
4136
+ minHeight: "medium",
4137
+ className: `justify-between gap-4 ${className}`,
4078
4138
  ...props,
4079
4139
  children: [
4080
4140
  /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("section", { className: "flex flex-col gap-1", children: [
@@ -4134,35 +4194,48 @@ var CardProgress = (0, import_react14.forwardRef)(
4134
4194
  /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("p", { className: "text-text-600", children: endDate })
4135
4195
  ] })
4136
4196
  ] }),
4137
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
4138
- ProgressBar_default,
4139
- {
4140
- size: "medium",
4141
- showPercentage: true,
4142
- value: progress,
4143
- "data-testid": "progress-bar"
4144
- }
4145
- )
4197
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("span", { className: "grid grid-cols-[1fr_auto] items-center gap-2", children: [
4198
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
4199
+ ProgressBar_default,
4200
+ {
4201
+ size: "small",
4202
+ value: progress,
4203
+ "data-testid": "progress-bar"
4204
+ }
4205
+ ),
4206
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
4207
+ Text_default,
4208
+ {
4209
+ size: "xs",
4210
+ weight: "medium",
4211
+ className: `text-text-950 leading-none tracking-normal text-center flex-none`,
4212
+ children: [
4213
+ Math.round(progress),
4214
+ "%"
4215
+ ]
4216
+ }
4217
+ )
4218
+ ] })
4146
4219
  ] }),
4147
4220
  vertical: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("p", { className: "text-sm text-text-800", children: subhead })
4148
4221
  };
4149
4222
  return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
4150
- "div",
4223
+ CardBase,
4151
4224
  {
4152
4225
  ref,
4153
- className: `
4154
- w-full flex border border-border-50 bg-background rounded-xl cursor-pointer
4155
- ${isHorizontal ? "flex-row h-20" : "flex-col"}
4156
- ${className}
4157
- `,
4226
+ layout: isHorizontal ? "horizontal" : "vertical",
4227
+ padding: "none",
4228
+ minHeight: "medium",
4229
+ cursor: "pointer",
4230
+ className: `${isHorizontal ? "h-20" : ""} ${className}`,
4158
4231
  ...props,
4159
4232
  children: [
4160
4233
  /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
4161
4234
  "div",
4162
4235
  {
4163
4236
  className: `
4164
- flex justify-center items-center [&>svg]:size-8 text-text-950
4165
- ${isHorizontal ? "w-20 h-full rounded-l-xl" : "min-h-[50px] w-full rounded-t-xl"}
4237
+ flex justify-center items-center [&>svg]:size-6 text-text-950
4238
+ ${isHorizontal ? "min-w-[80px] min-h-[80px] rounded-l-xl" : "min-h-[50px] w-full rounded-t-xl"}
4166
4239
  `,
4167
4240
  style: {
4168
4241
  backgroundColor: color
@@ -4178,7 +4251,7 @@ var CardProgress = (0, import_react14.forwardRef)(
4178
4251
  ${!isHorizontal && "gap-4"}
4179
4252
  `,
4180
4253
  children: [
4181
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("p", { className: "text-xs font-bold text-text-950", children: header }),
4254
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Text_default, { size: "sm", weight: "bold", className: "text-text-950", children: header }),
4182
4255
  contentComponent[direction]
4183
4256
  ]
4184
4257
  }
@@ -4198,18 +4271,43 @@ var CardTopic = (0, import_react14.forwardRef)(
4198
4271
  ...props
4199
4272
  }, ref) => {
4200
4273
  return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
4201
- "div",
4274
+ CardBase,
4202
4275
  {
4203
4276
  ref,
4204
- className: `cursor-pointer w-full py-2 px-4 flex flex-col justify-center gap-2 bg-background border border-border-50 rounded-xl min-h-20 ${className}`,
4277
+ layout: "vertical",
4278
+ padding: "small",
4279
+ minHeight: "medium",
4280
+ cursor: "pointer",
4281
+ className: `justify-center gap-2 py-2 px-4 ${className}`,
4205
4282
  ...props,
4206
4283
  children: [
4207
4284
  subHead && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "text-text-600 text-2xs flex flex-row gap-1", children: subHead.map((text, index) => /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_react14.Fragment, { children: [
4208
4285
  /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("p", { children: text }),
4209
4286
  index < subHead.length - 1 && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("p", { children: "\u2022" })
4210
4287
  ] }, `${text} - ${index}`)) }),
4211
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("p", { className: "text-xs text-text-950 font-bold", children: header }),
4212
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(ProgressBar_default, { showPercentage, value: progress })
4288
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("p", { className: "text-sm text-text-950 font-bold", children: header }),
4289
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("span", { className: "grid grid-cols-[1fr_auto] items-center gap-2", children: [
4290
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
4291
+ ProgressBar_default,
4292
+ {
4293
+ size: "small",
4294
+ value: progress,
4295
+ "data-testid": "progress-bar"
4296
+ }
4297
+ ),
4298
+ showPercentage && /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
4299
+ Text_default,
4300
+ {
4301
+ size: "xs",
4302
+ weight: "medium",
4303
+ className: `text-text-950 leading-none tracking-normal text-center flex-none`,
4304
+ children: [
4305
+ Math.round(progress),
4306
+ "%"
4307
+ ]
4308
+ }
4309
+ )
4310
+ ] })
4213
4311
  ]
4214
4312
  }
4215
4313
  );
@@ -4227,15 +4325,18 @@ var CardPerformance = (0, import_react14.forwardRef)(
4227
4325
  }, ref) => {
4228
4326
  const hasProgress = progress !== void 0;
4229
4327
  return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
4230
- "div",
4328
+ CardBase,
4231
4329
  {
4232
4330
  ref,
4233
- className: `w-full min-h-20.5 flex flex-row justify-between p-4 gap-2 bg-background border border-border-50 ${className}`,
4331
+ layout: "horizontal",
4332
+ padding: "medium",
4333
+ minHeight: "large",
4334
+ className: `justify-between gap-2 ${className}`,
4234
4335
  ...props,
4235
4336
  children: [
4236
4337
  /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "w-full flex flex-col justify-between gap-2", children: [
4237
4338
  /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "flex flex-row justify-between items-center", children: [
4238
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("p", { className: "text-md font-bold text-text-950", children: header }),
4339
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("p", { className: "text-lg font-bold text-text-950", children: header }),
4239
4340
  hasProgress && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
4240
4341
  Button_default,
4241
4342
  {
@@ -4274,13 +4375,13 @@ var CardResults = (0, import_react14.forwardRef)(
4274
4375
  }, ref) => {
4275
4376
  const isRow = direction == "row";
4276
4377
  return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
4277
- "div",
4378
+ CardBase,
4278
4379
  {
4279
4380
  ref,
4280
- className: `
4281
- w-full flex border border-border-50 bg-background rounded-xl min-h-20 flex-row items-center pr-4
4282
- ${className}
4283
- `,
4381
+ layout: "horizontal",
4382
+ padding: "none",
4383
+ minHeight: "medium",
4384
+ className: `items-center pr-4 ${className}`,
4284
4385
  ...props,
4285
4386
  children: [
4286
4387
  /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
@@ -4303,7 +4404,7 @@ var CardResults = (0, import_react14.forwardRef)(
4303
4404
  ${isRow ? "flex-row items-center" : "flex-col"}
4304
4405
  `,
4305
4406
  children: [
4306
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("p", { className: "text-xs font-bold text-text-950", children: header }),
4407
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("p", { className: "text-sm font-bold text-text-950", children: header }),
4307
4408
  /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("span", { className: "flex flex-row gap-1 items-center", children: [
4308
4409
  /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
4309
4410
  Badge_default,
@@ -4344,13 +4445,13 @@ var CardResults = (0, import_react14.forwardRef)(
4344
4445
  var CardStatus = (0, import_react14.forwardRef)(
4345
4446
  ({ header, className, status, ...props }, ref) => {
4346
4447
  return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
4347
- "div",
4448
+ CardBase,
4348
4449
  {
4349
4450
  ref,
4350
- className: `
4351
- w-full flex border border-border-50 bg-background rounded-xl min-h-20 flex-row items-center pr-4
4352
- ${className}
4353
- `,
4451
+ layout: "horizontal",
4452
+ padding: "none",
4453
+ minHeight: "medium",
4454
+ className: `items-center pr-4 ${className}`,
4354
4455
  ...props,
4355
4456
  children: [
4356
4457
  /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
@@ -4360,7 +4461,7 @@ var CardStatus = (0, import_react14.forwardRef)(
4360
4461
  p-4 flex justify-between w-full h-full flex-row items-center
4361
4462
  `,
4362
4463
  children: [
4363
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("p", { className: "text-xs font-bold text-text-950", children: header }),
4464
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("p", { className: "text-sm font-bold text-text-950", children: header }),
4364
4465
  status && /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("span", { className: "flex flex-row gap-1 items-center", children: [
4365
4466
  /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
4366
4467
  Badge_default,
@@ -4386,14 +4487,17 @@ var CardStatus = (0, import_react14.forwardRef)(
4386
4487
  var CardSettings = (0, import_react14.forwardRef)(
4387
4488
  ({ header, className, icon, ...props }, ref) => {
4388
4489
  return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
4389
- "div",
4490
+ CardBase,
4390
4491
  {
4391
4492
  ref,
4392
- className: `w-full p-2 flex flex-row items-center gap-2 text-text-700 bg-background rounded-xl ${className}`,
4493
+ layout: "horizontal",
4494
+ padding: "small",
4495
+ minHeight: "none",
4496
+ className: `border-none items-center gap-2 text-text-700 ${className}`,
4393
4497
  ...props,
4394
4498
  children: [
4395
4499
  /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "[&>svg]:size-6", children: icon }),
4396
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("p", { className: "w-full text-md", children: header }),
4500
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("p", { className: "w-full text-sm", children: header }),
4397
4501
  /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_phosphor_react13.CaretRight, { size: 24, className: "cursor-pointer" })
4398
4502
  ]
4399
4503
  }
@@ -4403,10 +4507,13 @@ var CardSettings = (0, import_react14.forwardRef)(
4403
4507
  var CardSupport = (0, import_react14.forwardRef)(
4404
4508
  ({ header, className, direction = "col", children, ...props }, ref) => {
4405
4509
  return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
4406
- "div",
4510
+ CardBase,
4407
4511
  {
4408
4512
  ref,
4409
- className: `w-full p-4 flex flex-row items-center gap-2 text-text-700 bg-background rounded-xl ${className}`,
4513
+ layout: "horizontal",
4514
+ padding: "medium",
4515
+ minHeight: "none",
4516
+ className: `border-none items-center gap-2 text-text-700 ${className}`,
4410
4517
  ...props,
4411
4518
  children: [
4412
4519
  /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
@@ -4416,7 +4523,7 @@ var CardSupport = (0, import_react14.forwardRef)(
4416
4523
  w-full flex ${direction == "col" ? "flex-col" : "flex-row items-center"} gap-2
4417
4524
  `,
4418
4525
  children: [
4419
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "w-full", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("p", { className: "text-xs text-text-950 font-bold", children: header }) }),
4526
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "w-full", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("p", { className: "text-sm text-text-950 font-bold", children: header }) }),
4420
4527
  /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "flex flex-row gap-1", children })
4421
4528
  ]
4422
4529
  }
@@ -4442,10 +4549,14 @@ var CardForum = (0, import_react14.forwardRef)(
4442
4549
  ...props
4443
4550
  }, ref) => {
4444
4551
  return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
4445
- "div",
4552
+ CardBase,
4446
4553
  {
4447
4554
  ref,
4448
- className: `w-auto h-auto p-4 rounded-lg flex flex-row gap-3 border border-border-100 bg-background ${className}`,
4555
+ layout: "horizontal",
4556
+ padding: "medium",
4557
+ minHeight: "none",
4558
+ variant: "minimal",
4559
+ className: `w-auto h-auto gap-3 ${className}`,
4449
4560
  ...props,
4450
4561
  children: [
4451
4562
  /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
@@ -4572,10 +4683,13 @@ var CardAudio = (0, import_react14.forwardRef)(
4572
4683
  return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_phosphor_react13.SpeakerHigh, {});
4573
4684
  };
4574
4685
  return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
4575
- "div",
4686
+ CardBase,
4576
4687
  {
4577
4688
  ref,
4578
- className: `w-auto h-14 p-4 flex flex-row bg-background items-center gap-2 ${className}`,
4689
+ layout: "horizontal",
4690
+ padding: "medium",
4691
+ minHeight: "none",
4692
+ className: `w-auto h-14 items-center gap-2 border-none ${className}`,
4579
4693
  ...props,
4580
4694
  children: [
4581
4695
  /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
@@ -4727,6 +4841,155 @@ var CardAudio = (0, import_react14.forwardRef)(
4727
4841
  );
4728
4842
  }
4729
4843
  );
4844
+
4845
+ // src/components/Skeleton/Skeleton.tsx
4846
+ var import_react15 = require("react");
4847
+ var import_jsx_runtime27 = require("react/jsx-runtime");
4848
+ var SKELETON_ANIMATION_CLASSES = {
4849
+ pulse: "animate-pulse",
4850
+ none: ""
4851
+ };
4852
+ var SKELETON_VARIANT_CLASSES = {
4853
+ text: "h-4 bg-background-200 rounded",
4854
+ circular: "bg-background-200 rounded-full",
4855
+ rectangular: "bg-background-200",
4856
+ rounded: "bg-background-200 rounded-lg"
4857
+ };
4858
+ var SPACING_CLASSES = {
4859
+ none: "",
4860
+ small: "space-y-1",
4861
+ medium: "space-y-2",
4862
+ large: "space-y-3"
4863
+ };
4864
+ var Skeleton = (0, import_react15.forwardRef)(
4865
+ ({
4866
+ variant = "text",
4867
+ width,
4868
+ height,
4869
+ animation = "pulse",
4870
+ lines = 1,
4871
+ spacing = "none",
4872
+ className = "",
4873
+ children,
4874
+ ...props
4875
+ }, ref) => {
4876
+ const animationClass = SKELETON_ANIMATION_CLASSES[animation];
4877
+ const variantClass = SKELETON_VARIANT_CLASSES[variant];
4878
+ const spacingClass = SPACING_CLASSES[spacing];
4879
+ const style = {
4880
+ width: typeof width === "number" ? `${width}px` : width,
4881
+ height: typeof height === "number" ? `${height}px` : height
4882
+ };
4883
+ if (variant === "text" && lines > 1) {
4884
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
4885
+ "div",
4886
+ {
4887
+ ref,
4888
+ className: `flex flex-col ${spacingClass} ${className}`,
4889
+ ...props,
4890
+ children: Array.from({ length: lines }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
4891
+ "div",
4892
+ {
4893
+ className: `${variantClass} ${animationClass}`,
4894
+ style: index === lines - 1 ? { width: "60%" } : void 0
4895
+ },
4896
+ index
4897
+ ))
4898
+ }
4899
+ );
4900
+ }
4901
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
4902
+ "div",
4903
+ {
4904
+ ref,
4905
+ className: `${variantClass} ${animationClass} ${className}`,
4906
+ style,
4907
+ ...props,
4908
+ children
4909
+ }
4910
+ );
4911
+ }
4912
+ );
4913
+ var SkeletonText = (0, import_react15.forwardRef)(
4914
+ (props, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Skeleton, { ref, variant: "text", ...props })
4915
+ );
4916
+ var SkeletonCircle = (0, import_react15.forwardRef)((props, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Skeleton, { ref, variant: "circular", ...props }));
4917
+ var SkeletonRectangle = (0, import_react15.forwardRef)((props, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Skeleton, { ref, variant: "rectangular", ...props }));
4918
+ var SkeletonRounded = (0, import_react15.forwardRef)((props, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Skeleton, { ref, variant: "rounded", ...props }));
4919
+ var SkeletonCard = (0, import_react15.forwardRef)(
4920
+ ({
4921
+ showAvatar = true,
4922
+ showTitle = true,
4923
+ showDescription = true,
4924
+ showActions = true,
4925
+ lines = 2,
4926
+ className = "",
4927
+ ...props
4928
+ }, ref) => {
4929
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
4930
+ "div",
4931
+ {
4932
+ ref,
4933
+ className: `w-full p-4 bg-background border border-border-200 rounded-lg ${className}`,
4934
+ ...props,
4935
+ children: [
4936
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "flex items-start space-x-3", children: [
4937
+ showAvatar && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(SkeletonCircle, { width: 40, height: 40 }),
4938
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "flex-1 space-y-2", children: [
4939
+ showTitle && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(SkeletonText, { width: "60%", height: 20 }),
4940
+ showDescription && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(SkeletonText, { lines, spacing: "small" })
4941
+ ] })
4942
+ ] }),
4943
+ showActions && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "flex justify-end space-x-2 mt-4", children: [
4944
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(SkeletonRectangle, { width: 80, height: 32 }),
4945
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(SkeletonRectangle, { width: 80, height: 32 })
4946
+ ] })
4947
+ ]
4948
+ }
4949
+ );
4950
+ }
4951
+ );
4952
+ var SkeletonList = (0, import_react15.forwardRef)(
4953
+ ({
4954
+ items = 3,
4955
+ showAvatar = true,
4956
+ showTitle = true,
4957
+ showDescription = true,
4958
+ lines = 1,
4959
+ className = "",
4960
+ ...props
4961
+ }, ref) => {
4962
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { ref, className: `space-y-3 ${className}`, ...props, children: Array.from({ length: items }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "flex items-start space-x-3 p-3", children: [
4963
+ showAvatar && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(SkeletonCircle, { width: 32, height: 32 }),
4964
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "flex-1 space-y-2", children: [
4965
+ showTitle && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(SkeletonText, { width: "40%", height: 16 }),
4966
+ showDescription && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(SkeletonText, { lines, spacing: "small" })
4967
+ ] })
4968
+ ] }, index)) });
4969
+ }
4970
+ );
4971
+ var SkeletonTable = (0, import_react15.forwardRef)(
4972
+ ({ rows = 5, columns = 4, showHeader = true, className = "", ...props }, ref) => {
4973
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { ref, className: `w-full ${className}`, ...props, children: [
4974
+ showHeader && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "flex space-x-2 mb-3", children: Array.from({ length: columns }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
4975
+ SkeletonText,
4976
+ {
4977
+ width: `${100 / columns}%`,
4978
+ height: 20
4979
+ },
4980
+ index
4981
+ )) }),
4982
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "space-y-2", children: Array.from({ length: rows }, (_, rowIndex) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "flex space-x-2", children: Array.from({ length: columns }, (_2, colIndex) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
4983
+ SkeletonText,
4984
+ {
4985
+ width: `${100 / columns}%`,
4986
+ height: 16
4987
+ },
4988
+ colIndex
4989
+ )) }, rowIndex)) })
4990
+ ] });
4991
+ }
4992
+ );
4730
4993
  // Annotate the CommonJS export names for ESM import in node:
4731
4994
  0 && (module.exports = {
4732
4995
  Alert,
@@ -4772,6 +5035,14 @@ var CardAudio = (0, import_react14.forwardRef)(
4772
5035
  SelectTrigger,
4773
5036
  SelectValue,
4774
5037
  SelectionButton,
5038
+ Skeleton,
5039
+ SkeletonCard,
5040
+ SkeletonCircle,
5041
+ SkeletonList,
5042
+ SkeletonRectangle,
5043
+ SkeletonRounded,
5044
+ SkeletonTable,
5045
+ SkeletonText,
4775
5046
  Stepper,
4776
5047
  Table,
4777
5048
  Text,