@lv-x-software-house/x_view 1.2.7-dev.4 → 1.2.7-dev.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.js CHANGED
@@ -3989,7 +3989,6 @@ function XViewSidebar({
3989
3989
  const [questFilterStatus, setQuestFilterStatus] = (0, import_react3.useState)("");
3990
3990
  const [questFilterMilestone, setQuestFilterMilestone] = (0, import_react3.useState)("");
3991
3991
  const [isQuestLensLoading, setIsQuestLensLoading] = (0, import_react3.useState)(false);
3992
- const [isQuestLensMenuOpen, setIsQuestLensMenuOpen] = (0, import_react3.useState)(false);
3993
3992
  const [reshapeLayoutType, setReshapeLayoutType] = (0, import_react3.useState)("Star");
3994
3993
  const [reshapeColumnCount, setReshapeColumnCount] = (0, import_react3.useState)(4);
3995
3994
  const [reshapeCenterNodeId, setReshapeCenterNodeId] = (0, import_react3.useState)("");
@@ -4128,18 +4127,6 @@ function XViewSidebar({
4128
4127
  }
4129
4128
  return () => document.removeEventListener("mousedown", handleClickOutside);
4130
4129
  }, [isFilterMenuOpen, isTypeDropdownOpen]);
4131
- (0, import_react3.useEffect)(() => {
4132
- const handleClickOutsideQuest = (event) => {
4133
- if (questLensRef.current && !questLensRef.current.contains(event.target)) {
4134
- if (event.target.tagName.toLowerCase() === "select" || event.target.tagName.toLowerCase() === "option") return;
4135
- setIsQuestLensMenuOpen(false);
4136
- }
4137
- };
4138
- if (isQuestLensMenuOpen) {
4139
- document.addEventListener("mousedown", handleClickOutsideQuest);
4140
- }
4141
- return () => document.removeEventListener("mousedown", handleClickOutsideQuest);
4142
- }, [isQuestLensMenuOpen]);
4143
4130
  (0, import_react3.useEffect)(() => {
4144
4131
  const handleClickOutsideAnnexed = (event) => {
4145
4132
  if (annexedPanelRef.current && !annexedPanelRef.current.contains(event.target)) {
@@ -4298,7 +4285,7 @@ function XViewSidebar({
4298
4285
  }
4299
4286
  )
4300
4287
  )
4301
- ), /* @__PURE__ */ import_react3.default.createElement("h3", { className: "text-sm font-semibold text-indigo-100 uppercase tracking-wider" }, activeSubMenu === "reshape" ? "Reshape Lens" : "Integra\xE7\xF5es"), /* @__PURE__ */ import_react3.default.createElement(
4288
+ ), /* @__PURE__ */ import_react3.default.createElement("h3", { className: "text-sm font-semibold text-indigo-100 uppercase tracking-wider" }, activeSubMenu === "quest" ? "Quest Lens" : activeSubMenu === "reshape" ? "Reshape Lens" : "Integra\xE7\xF5es"), /* @__PURE__ */ import_react3.default.createElement(
4302
4289
  "button",
4303
4290
  {
4304
4291
  className: "ml-auto p-1.5 rounded-md text-slate-400 hover:text-white hover:bg-white/10 transition-colors hidden md:block",
@@ -4417,7 +4404,74 @@ function XViewSidebar({
4417
4404
  }
4418
4405
  )
4419
4406
  ) : "Selecionar Pasta no Drive"
4420
- ), /* @__PURE__ */ import_react3.default.createElement("p", { className: "text-[10px] text-slate-500 italic px-1 leading-relaxed" }, "Documentos criados nesta View ser\xE3o salvos na pasta selecionada acima.")))), activeSubMenu === "reshape" && /* @__PURE__ */ import_react3.default.createElement("div", { className: "space-y-6 animate-in fade-in slide-in-from-bottom-2 duration-500" }, /* @__PURE__ */ import_react3.default.createElement("div", { className: "space-y-2.5" }, /* @__PURE__ */ import_react3.default.createElement("label", { className: "text-[11px] uppercase text-slate-400 font-semibold tracking-wider ml-1 mb-1 block" }, "Layout Type"), /* @__PURE__ */ import_react3.default.createElement(
4407
+ ), /* @__PURE__ */ import_react3.default.createElement("p", { className: "text-[10px] text-slate-500 italic px-1 leading-relaxed" }, "Documentos criados nesta View ser\xE3o salvos na pasta selecionada acima.")))), activeSubMenu === "quest" && /* @__PURE__ */ import_react3.default.createElement("div", { className: "space-y-6 animate-in fade-in slide-in-from-bottom-2 duration-500" }, /* @__PURE__ */ import_react3.default.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ import_react3.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ import_react3.default.createElement("label", { className: "text-[11px] uppercase text-slate-400 font-semibold tracking-wider ml-1 block" }, "Respons\xE1vel"), /* @__PURE__ */ import_react3.default.createElement(
4408
+ CustomSelect,
4409
+ {
4410
+ value: questFilterAssignee,
4411
+ onChange: (val) => setQuestFilterAssignee(val),
4412
+ options: [
4413
+ { value: "", label: "Qualquer / Todos" },
4414
+ ...viewMembers.map((m) => ({ value: m.id, label: m.name || m.email }))
4415
+ ],
4416
+ placeholder: "Filtrar por respons\xE1vel"
4417
+ }
4418
+ )), /* @__PURE__ */ import_react3.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ import_react3.default.createElement("label", { className: "text-[11px] uppercase text-slate-400 font-semibold tracking-wider ml-1 block" }, "Status"), /* @__PURE__ */ import_react3.default.createElement(
4419
+ CustomSelect,
4420
+ {
4421
+ value: questFilterStatus,
4422
+ onChange: (val) => setQuestFilterStatus(val),
4423
+ options: [
4424
+ { value: "", label: "Padr\xE3o (Oculta Dones)" },
4425
+ { value: "all", label: "Mostrar Todos" },
4426
+ { value: "Backlog", label: "Backlog" },
4427
+ { value: "In Progress", label: "In Progress" },
4428
+ { value: "Review", label: "Review" },
4429
+ { value: "Done", label: "Done" }
4430
+ ],
4431
+ placeholder: "Filtrar por status"
4432
+ }
4433
+ )), /* @__PURE__ */ import_react3.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ import_react3.default.createElement("label", { className: "text-[11px] uppercase text-slate-400 font-semibold tracking-wider ml-1 block" }, "Milestone"), /* @__PURE__ */ import_react3.default.createElement(
4434
+ CustomSelect,
4435
+ {
4436
+ value: questFilterMilestone,
4437
+ onChange: (val) => setQuestFilterMilestone(val),
4438
+ options: [
4439
+ { value: "", label: "Todos os Milestones" },
4440
+ ...milestones.map((m) => ({ value: m.id, label: m.name }))
4441
+ ],
4442
+ placeholder: "Filtrar por marco"
4443
+ }
4444
+ ))), /* @__PURE__ */ import_react3.default.createElement("div", { className: "flex gap-3 pt-4 border-t border-white/10" }, /* @__PURE__ */ import_react3.default.createElement(
4445
+ "button",
4446
+ {
4447
+ onClick: () => {
4448
+ setQuestFilterAssignee("");
4449
+ setQuestFilterStatus("");
4450
+ setQuestFilterMilestone("");
4451
+ },
4452
+ className: "flex-1 py-3 bg-white/[0.03] hover:bg-white/[0.08] text-slate-400 hover:text-slate-200 text-[10px] font-black uppercase tracking-widest rounded-xl transition-all border border-white/5 active:scale-95"
4453
+ },
4454
+ "Limpar"
4455
+ ), /* @__PURE__ */ import_react3.default.createElement(
4456
+ "button",
4457
+ {
4458
+ disabled: isQuestLensLoading,
4459
+ onClick: async () => {
4460
+ setIsQuestLensLoading(true);
4461
+ try {
4462
+ await onActivateQuestLens({
4463
+ assigneeId: questFilterAssignee,
4464
+ status: questFilterStatus,
4465
+ milestoneId: questFilterMilestone
4466
+ });
4467
+ } finally {
4468
+ setIsQuestLensLoading(false);
4469
+ }
4470
+ },
4471
+ className: "flex-[2] py-3 bg-indigo-600 hover:bg-indigo-500 text-white text-[10px] font-black uppercase tracking-widest rounded-xl shadow-lg shadow-indigo-500/20 transition-all hover:scale-[1.02] active:scale-95 flex items-center justify-center gap-2 disabled:opacity-50"
4472
+ },
4473
+ isQuestLensLoading ? "Processando..." : "Aplicar Lens"
4474
+ ))), activeSubMenu === "reshape" && /* @__PURE__ */ import_react3.default.createElement("div", { className: "space-y-6 animate-in fade-in slide-in-from-bottom-2 duration-500" }, /* @__PURE__ */ import_react3.default.createElement("div", { className: "space-y-2.5" }, /* @__PURE__ */ import_react3.default.createElement("label", { className: "text-[11px] uppercase text-slate-400 font-semibold tracking-wider ml-1 mb-1 block" }, "Layout Type"), /* @__PURE__ */ import_react3.default.createElement(
4421
4475
  CustomSelect,
4422
4476
  {
4423
4477
  value: reshapeLayoutType,
@@ -4683,69 +4737,27 @@ function XViewSidebar({
4683
4737
  ))))), /* @__PURE__ */ import_react3.default.createElement("div", { className: "h-px bg-white/10" }), /* @__PURE__ */ import_react3.default.createElement("section", { className: "space-y-2" }, /* @__PURE__ */ import_react3.default.createElement("p", { className: "text-[11px] uppercase tracking-wider text-slate-400" }, "Lentes"), /* @__PURE__ */ import_react3.default.createElement("div", { className: "relative", ref: questLensRef }, /* @__PURE__ */ import_react3.default.createElement(
4684
4738
  "button",
4685
4739
  {
4686
- onClick: () => setIsQuestLensMenuOpen(!isQuestLensMenuOpen),
4687
- className: `${buttonBaseClass} ${isQuestLensMenuOpen || questFilterAssignee || questFilterStatus || questFilterMilestone ? "bg-indigo-500/30 border-indigo-400" : ""}`,
4688
- title: "Abrir filtros da Lente de Quests"
4689
- },
4690
- /* @__PURE__ */ import_react3.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react3.default.createElement("path", { d: "M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z" }), /* @__PURE__ */ import_react3.default.createElement("path", { d: "M9 12l2 2 4-4" })),
4691
- "Quest Lens",
4692
- (questFilterAssignee || questFilterStatus || questFilterMilestone) && /* @__PURE__ */ import_react3.default.createElement("span", { className: "ml-1 px-1.5 py-0.5 rounded-full bg-indigo-500 text-[9px] font-bold" }, "!")
4693
- ), isQuestLensMenuOpen && /* @__PURE__ */ import_react3.default.createElement("div", { className: "absolute left-0 bottom-full mb-2 w-full p-4 rounded-xl bg-slate-900 border border-white/10 shadow-2xl z-50 flex flex-col gap-4 animate-in fade-in slide-in-from-bottom-2 duration-200" }, /* @__PURE__ */ import_react3.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ import_react3.default.createElement("label", { className: "text-[10px] uppercase text-slate-400 font-bold tracking-widest" }, "Respons\xE1vel"), /* @__PURE__ */ import_react3.default.createElement(
4694
- "select",
4695
- {
4696
- value: questFilterAssignee,
4697
- onChange: (e) => setQuestFilterAssignee(e.target.value),
4698
- className: "w-full bg-slate-800 p-2 text-xs rounded border border-white/10 focus:outline-none focus:border-indigo-500/50 text-white appearance-none cursor-pointer"
4699
- },
4700
- /* @__PURE__ */ import_react3.default.createElement("option", { value: "" }, "Todos os Respons\xE1veis"),
4701
- viewMembers.map((m) => /* @__PURE__ */ import_react3.default.createElement("option", { key: m.id, value: m.id }, m.name || m.email))
4702
- )), /* @__PURE__ */ import_react3.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ import_react3.default.createElement("label", { className: "text-[10px] uppercase text-slate-400 font-bold tracking-widest" }, "Status"), /* @__PURE__ */ import_react3.default.createElement(
4703
- "select",
4704
- {
4705
- value: questFilterStatus,
4706
- onChange: (e) => setQuestFilterStatus(e.target.value),
4707
- className: "w-full bg-slate-800 p-2 text-xs rounded border border-white/10 focus:outline-none focus:border-indigo-500/50 text-white appearance-none cursor-pointer"
4708
- },
4709
- /* @__PURE__ */ import_react3.default.createElement("option", { value: "" }, "Todos (Exclui Done)"),
4710
- /* @__PURE__ */ import_react3.default.createElement("option", { value: "Backlog" }, "Backlog"),
4711
- /* @__PURE__ */ import_react3.default.createElement("option", { value: "In Progress" }, "In Progress"),
4712
- /* @__PURE__ */ import_react3.default.createElement("option", { value: "Review" }, "Review"),
4713
- /* @__PURE__ */ import_react3.default.createElement("option", { value: "Done" }, "Done")
4714
- )), /* @__PURE__ */ import_react3.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ import_react3.default.createElement("label", { className: "text-[10px] uppercase text-slate-400 font-bold tracking-widest" }, "Milestone"), /* @__PURE__ */ import_react3.default.createElement(
4715
- "select",
4716
- {
4717
- value: questFilterMilestone,
4718
- onChange: (e) => setQuestFilterMilestone(e.target.value),
4719
- className: "w-full bg-slate-800 p-2 text-xs rounded border border-white/10 focus:outline-none focus:border-indigo-500/50 text-white appearance-none cursor-pointer"
4720
- },
4721
- /* @__PURE__ */ import_react3.default.createElement("option", { value: "" }, "Todos os Milestones"),
4722
- (milestones || []).map((ms) => /* @__PURE__ */ import_react3.default.createElement("option", { key: ms.id, value: ms.id }, ms.name, " ", ms.status === "inactive" ? "(Inativo)" : ""))
4723
- )), /* @__PURE__ */ import_react3.default.createElement("div", { className: "flex gap-2 pt-1 border-t border-white/10 mt-2" }, /* @__PURE__ */ import_react3.default.createElement(
4724
- "button",
4725
- {
4726
- onClick: () => {
4727
- setQuestFilterAssignee("");
4728
- setQuestFilterStatus("");
4729
- setQuestFilterMilestone("");
4730
- },
4731
- className: "flex-1 py-2 bg-white/5 hover:bg-white/10 text-slate-300 text-[11px] font-medium rounded-lg transition-colors border border-white/5 mt-3"
4740
+ onClick: () => setActiveSubMenu(activeSubMenu === "quest" ? null : "quest"),
4741
+ className: `${buttonBaseClass} lens-button ${activeSubMenu === "quest" || questFilterAssignee || questFilterStatus || questFilterMilestone ? "bg-indigo-500/30 border-indigo-400" : ""}`
4732
4742
  },
4733
- "Limpar"
4734
- ), /* @__PURE__ */ import_react3.default.createElement(
4735
- "button",
4736
- {
4737
- onClick: () => {
4738
- onActivateQuestLens({
4739
- assigneeId: questFilterAssignee,
4740
- status: questFilterStatus,
4741
- milestoneId: questFilterMilestone
4742
- });
4743
- setIsQuestLensMenuOpen(false);
4743
+ /* @__PURE__ */ import_react3.default.createElement(
4744
+ "svg",
4745
+ {
4746
+ xmlns: "http://www.w3.org/2000/svg",
4747
+ width: "16",
4748
+ height: "16",
4749
+ viewBox: "0 0 24 24",
4750
+ fill: "none",
4751
+ stroke: "currentColor",
4752
+ strokeWidth: "2",
4753
+ strokeLinecap: "round",
4754
+ strokeLinejoin: "round"
4744
4755
  },
4745
- className: "flex-[2] py-2 bg-indigo-600 hover:bg-indigo-500 text-white text-[11px] font-bold rounded-lg shadow-lg shadow-indigo-500/20 transition-all hover:scale-[1.02] active:scale-95 mt-3"
4746
- },
4747
- "Aplicar Lente"
4748
- )))), /* @__PURE__ */ import_react3.default.createElement("div", { className: "relative" }, /* @__PURE__ */ import_react3.default.createElement(
4756
+ /* @__PURE__ */ import_react3.default.createElement("path", { d: "M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z" }),
4757
+ /* @__PURE__ */ import_react3.default.createElement("path", { d: "M9 12l2 2 4-4" })
4758
+ ),
4759
+ "Quests"
4760
+ )), /* @__PURE__ */ import_react3.default.createElement("div", { className: "relative" }, /* @__PURE__ */ import_react3.default.createElement(
4749
4761
  "button",
4750
4762
  {
4751
4763
  onClick: () => setActiveSubMenu(
package/dist/index.mjs CHANGED
@@ -3950,7 +3950,6 @@ function XViewSidebar({
3950
3950
  const [questFilterStatus, setQuestFilterStatus] = useState3("");
3951
3951
  const [questFilterMilestone, setQuestFilterMilestone] = useState3("");
3952
3952
  const [isQuestLensLoading, setIsQuestLensLoading] = useState3(false);
3953
- const [isQuestLensMenuOpen, setIsQuestLensMenuOpen] = useState3(false);
3954
3953
  const [reshapeLayoutType, setReshapeLayoutType] = useState3("Star");
3955
3954
  const [reshapeColumnCount, setReshapeColumnCount] = useState3(4);
3956
3955
  const [reshapeCenterNodeId, setReshapeCenterNodeId] = useState3("");
@@ -4089,18 +4088,6 @@ function XViewSidebar({
4089
4088
  }
4090
4089
  return () => document.removeEventListener("mousedown", handleClickOutside);
4091
4090
  }, [isFilterMenuOpen, isTypeDropdownOpen]);
4092
- useEffect2(() => {
4093
- const handleClickOutsideQuest = (event) => {
4094
- if (questLensRef.current && !questLensRef.current.contains(event.target)) {
4095
- if (event.target.tagName.toLowerCase() === "select" || event.target.tagName.toLowerCase() === "option") return;
4096
- setIsQuestLensMenuOpen(false);
4097
- }
4098
- };
4099
- if (isQuestLensMenuOpen) {
4100
- document.addEventListener("mousedown", handleClickOutsideQuest);
4101
- }
4102
- return () => document.removeEventListener("mousedown", handleClickOutsideQuest);
4103
- }, [isQuestLensMenuOpen]);
4104
4091
  useEffect2(() => {
4105
4092
  const handleClickOutsideAnnexed = (event) => {
4106
4093
  if (annexedPanelRef.current && !annexedPanelRef.current.contains(event.target)) {
@@ -4259,7 +4246,7 @@ function XViewSidebar({
4259
4246
  }
4260
4247
  )
4261
4248
  )
4262
- ), /* @__PURE__ */ React2.createElement("h3", { className: "text-sm font-semibold text-indigo-100 uppercase tracking-wider" }, activeSubMenu === "reshape" ? "Reshape Lens" : "Integra\xE7\xF5es"), /* @__PURE__ */ React2.createElement(
4249
+ ), /* @__PURE__ */ React2.createElement("h3", { className: "text-sm font-semibold text-indigo-100 uppercase tracking-wider" }, activeSubMenu === "quest" ? "Quest Lens" : activeSubMenu === "reshape" ? "Reshape Lens" : "Integra\xE7\xF5es"), /* @__PURE__ */ React2.createElement(
4263
4250
  "button",
4264
4251
  {
4265
4252
  className: "ml-auto p-1.5 rounded-md text-slate-400 hover:text-white hover:bg-white/10 transition-colors hidden md:block",
@@ -4378,7 +4365,74 @@ function XViewSidebar({
4378
4365
  }
4379
4366
  )
4380
4367
  ) : "Selecionar Pasta no Drive"
4381
- ), /* @__PURE__ */ React2.createElement("p", { className: "text-[10px] text-slate-500 italic px-1 leading-relaxed" }, "Documentos criados nesta View ser\xE3o salvos na pasta selecionada acima.")))), activeSubMenu === "reshape" && /* @__PURE__ */ React2.createElement("div", { className: "space-y-6 animate-in fade-in slide-in-from-bottom-2 duration-500" }, /* @__PURE__ */ React2.createElement("div", { className: "space-y-2.5" }, /* @__PURE__ */ React2.createElement("label", { className: "text-[11px] uppercase text-slate-400 font-semibold tracking-wider ml-1 mb-1 block" }, "Layout Type"), /* @__PURE__ */ React2.createElement(
4368
+ ), /* @__PURE__ */ React2.createElement("p", { className: "text-[10px] text-slate-500 italic px-1 leading-relaxed" }, "Documentos criados nesta View ser\xE3o salvos na pasta selecionada acima.")))), activeSubMenu === "quest" && /* @__PURE__ */ React2.createElement("div", { className: "space-y-6 animate-in fade-in slide-in-from-bottom-2 duration-500" }, /* @__PURE__ */ React2.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React2.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React2.createElement("label", { className: "text-[11px] uppercase text-slate-400 font-semibold tracking-wider ml-1 block" }, "Respons\xE1vel"), /* @__PURE__ */ React2.createElement(
4369
+ CustomSelect,
4370
+ {
4371
+ value: questFilterAssignee,
4372
+ onChange: (val) => setQuestFilterAssignee(val),
4373
+ options: [
4374
+ { value: "", label: "Qualquer / Todos" },
4375
+ ...viewMembers.map((m) => ({ value: m.id, label: m.name || m.email }))
4376
+ ],
4377
+ placeholder: "Filtrar por respons\xE1vel"
4378
+ }
4379
+ )), /* @__PURE__ */ React2.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React2.createElement("label", { className: "text-[11px] uppercase text-slate-400 font-semibold tracking-wider ml-1 block" }, "Status"), /* @__PURE__ */ React2.createElement(
4380
+ CustomSelect,
4381
+ {
4382
+ value: questFilterStatus,
4383
+ onChange: (val) => setQuestFilterStatus(val),
4384
+ options: [
4385
+ { value: "", label: "Padr\xE3o (Oculta Dones)" },
4386
+ { value: "all", label: "Mostrar Todos" },
4387
+ { value: "Backlog", label: "Backlog" },
4388
+ { value: "In Progress", label: "In Progress" },
4389
+ { value: "Review", label: "Review" },
4390
+ { value: "Done", label: "Done" }
4391
+ ],
4392
+ placeholder: "Filtrar por status"
4393
+ }
4394
+ )), /* @__PURE__ */ React2.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React2.createElement("label", { className: "text-[11px] uppercase text-slate-400 font-semibold tracking-wider ml-1 block" }, "Milestone"), /* @__PURE__ */ React2.createElement(
4395
+ CustomSelect,
4396
+ {
4397
+ value: questFilterMilestone,
4398
+ onChange: (val) => setQuestFilterMilestone(val),
4399
+ options: [
4400
+ { value: "", label: "Todos os Milestones" },
4401
+ ...milestones.map((m) => ({ value: m.id, label: m.name }))
4402
+ ],
4403
+ placeholder: "Filtrar por marco"
4404
+ }
4405
+ ))), /* @__PURE__ */ React2.createElement("div", { className: "flex gap-3 pt-4 border-t border-white/10" }, /* @__PURE__ */ React2.createElement(
4406
+ "button",
4407
+ {
4408
+ onClick: () => {
4409
+ setQuestFilterAssignee("");
4410
+ setQuestFilterStatus("");
4411
+ setQuestFilterMilestone("");
4412
+ },
4413
+ className: "flex-1 py-3 bg-white/[0.03] hover:bg-white/[0.08] text-slate-400 hover:text-slate-200 text-[10px] font-black uppercase tracking-widest rounded-xl transition-all border border-white/5 active:scale-95"
4414
+ },
4415
+ "Limpar"
4416
+ ), /* @__PURE__ */ React2.createElement(
4417
+ "button",
4418
+ {
4419
+ disabled: isQuestLensLoading,
4420
+ onClick: async () => {
4421
+ setIsQuestLensLoading(true);
4422
+ try {
4423
+ await onActivateQuestLens({
4424
+ assigneeId: questFilterAssignee,
4425
+ status: questFilterStatus,
4426
+ milestoneId: questFilterMilestone
4427
+ });
4428
+ } finally {
4429
+ setIsQuestLensLoading(false);
4430
+ }
4431
+ },
4432
+ className: "flex-[2] py-3 bg-indigo-600 hover:bg-indigo-500 text-white text-[10px] font-black uppercase tracking-widest rounded-xl shadow-lg shadow-indigo-500/20 transition-all hover:scale-[1.02] active:scale-95 flex items-center justify-center gap-2 disabled:opacity-50"
4433
+ },
4434
+ isQuestLensLoading ? "Processando..." : "Aplicar Lens"
4435
+ ))), activeSubMenu === "reshape" && /* @__PURE__ */ React2.createElement("div", { className: "space-y-6 animate-in fade-in slide-in-from-bottom-2 duration-500" }, /* @__PURE__ */ React2.createElement("div", { className: "space-y-2.5" }, /* @__PURE__ */ React2.createElement("label", { className: "text-[11px] uppercase text-slate-400 font-semibold tracking-wider ml-1 mb-1 block" }, "Layout Type"), /* @__PURE__ */ React2.createElement(
4382
4436
  CustomSelect,
4383
4437
  {
4384
4438
  value: reshapeLayoutType,
@@ -4644,69 +4698,27 @@ function XViewSidebar({
4644
4698
  ))))), /* @__PURE__ */ React2.createElement("div", { className: "h-px bg-white/10" }), /* @__PURE__ */ React2.createElement("section", { className: "space-y-2" }, /* @__PURE__ */ React2.createElement("p", { className: "text-[11px] uppercase tracking-wider text-slate-400" }, "Lentes"), /* @__PURE__ */ React2.createElement("div", { className: "relative", ref: questLensRef }, /* @__PURE__ */ React2.createElement(
4645
4699
  "button",
4646
4700
  {
4647
- onClick: () => setIsQuestLensMenuOpen(!isQuestLensMenuOpen),
4648
- className: `${buttonBaseClass} ${isQuestLensMenuOpen || questFilterAssignee || questFilterStatus || questFilterMilestone ? "bg-indigo-500/30 border-indigo-400" : ""}`,
4649
- title: "Abrir filtros da Lente de Quests"
4650
- },
4651
- /* @__PURE__ */ React2.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React2.createElement("path", { d: "M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z" }), /* @__PURE__ */ React2.createElement("path", { d: "M9 12l2 2 4-4" })),
4652
- "Quest Lens",
4653
- (questFilterAssignee || questFilterStatus || questFilterMilestone) && /* @__PURE__ */ React2.createElement("span", { className: "ml-1 px-1.5 py-0.5 rounded-full bg-indigo-500 text-[9px] font-bold" }, "!")
4654
- ), isQuestLensMenuOpen && /* @__PURE__ */ React2.createElement("div", { className: "absolute left-0 bottom-full mb-2 w-full p-4 rounded-xl bg-slate-900 border border-white/10 shadow-2xl z-50 flex flex-col gap-4 animate-in fade-in slide-in-from-bottom-2 duration-200" }, /* @__PURE__ */ React2.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React2.createElement("label", { className: "text-[10px] uppercase text-slate-400 font-bold tracking-widest" }, "Respons\xE1vel"), /* @__PURE__ */ React2.createElement(
4655
- "select",
4656
- {
4657
- value: questFilterAssignee,
4658
- onChange: (e) => setQuestFilterAssignee(e.target.value),
4659
- className: "w-full bg-slate-800 p-2 text-xs rounded border border-white/10 focus:outline-none focus:border-indigo-500/50 text-white appearance-none cursor-pointer"
4660
- },
4661
- /* @__PURE__ */ React2.createElement("option", { value: "" }, "Todos os Respons\xE1veis"),
4662
- viewMembers.map((m) => /* @__PURE__ */ React2.createElement("option", { key: m.id, value: m.id }, m.name || m.email))
4663
- )), /* @__PURE__ */ React2.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React2.createElement("label", { className: "text-[10px] uppercase text-slate-400 font-bold tracking-widest" }, "Status"), /* @__PURE__ */ React2.createElement(
4664
- "select",
4665
- {
4666
- value: questFilterStatus,
4667
- onChange: (e) => setQuestFilterStatus(e.target.value),
4668
- className: "w-full bg-slate-800 p-2 text-xs rounded border border-white/10 focus:outline-none focus:border-indigo-500/50 text-white appearance-none cursor-pointer"
4669
- },
4670
- /* @__PURE__ */ React2.createElement("option", { value: "" }, "Todos (Exclui Done)"),
4671
- /* @__PURE__ */ React2.createElement("option", { value: "Backlog" }, "Backlog"),
4672
- /* @__PURE__ */ React2.createElement("option", { value: "In Progress" }, "In Progress"),
4673
- /* @__PURE__ */ React2.createElement("option", { value: "Review" }, "Review"),
4674
- /* @__PURE__ */ React2.createElement("option", { value: "Done" }, "Done")
4675
- )), /* @__PURE__ */ React2.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React2.createElement("label", { className: "text-[10px] uppercase text-slate-400 font-bold tracking-widest" }, "Milestone"), /* @__PURE__ */ React2.createElement(
4676
- "select",
4677
- {
4678
- value: questFilterMilestone,
4679
- onChange: (e) => setQuestFilterMilestone(e.target.value),
4680
- className: "w-full bg-slate-800 p-2 text-xs rounded border border-white/10 focus:outline-none focus:border-indigo-500/50 text-white appearance-none cursor-pointer"
4681
- },
4682
- /* @__PURE__ */ React2.createElement("option", { value: "" }, "Todos os Milestones"),
4683
- (milestones || []).map((ms) => /* @__PURE__ */ React2.createElement("option", { key: ms.id, value: ms.id }, ms.name, " ", ms.status === "inactive" ? "(Inativo)" : ""))
4684
- )), /* @__PURE__ */ React2.createElement("div", { className: "flex gap-2 pt-1 border-t border-white/10 mt-2" }, /* @__PURE__ */ React2.createElement(
4685
- "button",
4686
- {
4687
- onClick: () => {
4688
- setQuestFilterAssignee("");
4689
- setQuestFilterStatus("");
4690
- setQuestFilterMilestone("");
4691
- },
4692
- className: "flex-1 py-2 bg-white/5 hover:bg-white/10 text-slate-300 text-[11px] font-medium rounded-lg transition-colors border border-white/5 mt-3"
4701
+ onClick: () => setActiveSubMenu(activeSubMenu === "quest" ? null : "quest"),
4702
+ className: `${buttonBaseClass} lens-button ${activeSubMenu === "quest" || questFilterAssignee || questFilterStatus || questFilterMilestone ? "bg-indigo-500/30 border-indigo-400" : ""}`
4693
4703
  },
4694
- "Limpar"
4695
- ), /* @__PURE__ */ React2.createElement(
4696
- "button",
4697
- {
4698
- onClick: () => {
4699
- onActivateQuestLens({
4700
- assigneeId: questFilterAssignee,
4701
- status: questFilterStatus,
4702
- milestoneId: questFilterMilestone
4703
- });
4704
- setIsQuestLensMenuOpen(false);
4704
+ /* @__PURE__ */ React2.createElement(
4705
+ "svg",
4706
+ {
4707
+ xmlns: "http://www.w3.org/2000/svg",
4708
+ width: "16",
4709
+ height: "16",
4710
+ viewBox: "0 0 24 24",
4711
+ fill: "none",
4712
+ stroke: "currentColor",
4713
+ strokeWidth: "2",
4714
+ strokeLinecap: "round",
4715
+ strokeLinejoin: "round"
4705
4716
  },
4706
- className: "flex-[2] py-2 bg-indigo-600 hover:bg-indigo-500 text-white text-[11px] font-bold rounded-lg shadow-lg shadow-indigo-500/20 transition-all hover:scale-[1.02] active:scale-95 mt-3"
4707
- },
4708
- "Aplicar Lente"
4709
- )))), /* @__PURE__ */ React2.createElement("div", { className: "relative" }, /* @__PURE__ */ React2.createElement(
4717
+ /* @__PURE__ */ React2.createElement("path", { d: "M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z" }),
4718
+ /* @__PURE__ */ React2.createElement("path", { d: "M9 12l2 2 4-4" })
4719
+ ),
4720
+ "Quests"
4721
+ )), /* @__PURE__ */ React2.createElement("div", { className: "relative" }, /* @__PURE__ */ React2.createElement(
4710
4722
  "button",
4711
4723
  {
4712
4724
  onClick: () => setActiveSubMenu(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lv-x-software-house/x_view",
3
- "version": "1.2.7-dev.4",
3
+ "version": "1.2.7-dev.5",
4
4
  "description": "Pacote privado contendo os componentes e lógica de renderização 3D do X View.",
5
5
  "author": "iv.x - Engenharia de Software - ivxsoftwarehouse@gmail.com",
6
6
  "license": "UNLICENSED",