@iclips/ui 2.0.3 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/MIGRATION-v3.md +244 -0
  2. package/dist/alert-theme.css +20 -79
  3. package/dist/components/ui/charts/donut-chart.cjs +1 -1
  4. package/dist/components/ui/charts/donut-chart.cjs.map +1 -1
  5. package/dist/components/ui/charts/donut-chart.js +39 -60
  6. package/dist/components/ui/charts/donut-chart.js.map +1 -1
  7. package/dist/components/ui/charts/kpi-card.cjs +1 -1
  8. package/dist/components/ui/charts/kpi-card.cjs.map +1 -1
  9. package/dist/components/ui/charts/kpi-card.js +19 -19
  10. package/dist/components/ui/charts/kpi-card.js.map +1 -1
  11. package/dist/components/ui/data/comment-system.cjs +1 -1
  12. package/dist/components/ui/data/comment-system.cjs.map +1 -1
  13. package/dist/components/ui/data/comment-system.js +67 -67
  14. package/dist/components/ui/data/comment-system.js.map +1 -1
  15. package/dist/components/ui/data/data-table.cjs +1 -1
  16. package/dist/components/ui/data/data-table.cjs.map +1 -1
  17. package/dist/components/ui/data/data-table.js +112 -101
  18. package/dist/components/ui/data/data-table.js.map +1 -1
  19. package/dist/components/ui/data/editorial-calendar.cjs +1 -1
  20. package/dist/components/ui/data/editorial-calendar.cjs.map +1 -1
  21. package/dist/components/ui/data/editorial-calendar.js +291 -291
  22. package/dist/components/ui/data/editorial-calendar.js.map +1 -1
  23. package/dist/components/ui/data/filter-builder.cjs +1 -1
  24. package/dist/components/ui/data/filter-builder.cjs.map +1 -1
  25. package/dist/components/ui/data/filter-builder.js +1 -1
  26. package/dist/components/ui/data/filter-builder.js.map +1 -1
  27. package/dist/components/ui/feedback/empty-state.cjs +1 -1
  28. package/dist/components/ui/feedback/empty-state.cjs.map +1 -1
  29. package/dist/components/ui/feedback/empty-state.js +14 -14
  30. package/dist/components/ui/feedback/empty-state.js.map +1 -1
  31. package/dist/components/ui/feedback/toast.cjs +1 -1
  32. package/dist/components/ui/feedback/toast.cjs.map +1 -1
  33. package/dist/components/ui/feedback/toast.js +53 -22
  34. package/dist/components/ui/feedback/toast.js.map +1 -1
  35. package/dist/components/ui/forms/calendar.cjs +1 -1
  36. package/dist/components/ui/forms/calendar.cjs.map +1 -1
  37. package/dist/components/ui/forms/calendar.js +16 -16
  38. package/dist/components/ui/forms/calendar.js.map +1 -1
  39. package/dist/components/ui/forms/combobox.cjs +1 -1
  40. package/dist/components/ui/forms/combobox.cjs.map +1 -1
  41. package/dist/components/ui/forms/combobox.js +78 -76
  42. package/dist/components/ui/forms/combobox.js.map +1 -1
  43. package/dist/components/ui/forms/file-attachment-list.cjs +1 -1
  44. package/dist/components/ui/forms/file-attachment-list.cjs.map +1 -1
  45. package/dist/components/ui/forms/file-attachment-list.js +4 -4
  46. package/dist/components/ui/forms/file-attachment-list.js.map +1 -1
  47. package/dist/components/ui/forms/file-upload-zone.cjs +2 -2
  48. package/dist/components/ui/forms/file-upload-zone.cjs.map +1 -1
  49. package/dist/components/ui/forms/file-upload-zone.js +55 -49
  50. package/dist/components/ui/forms/file-upload-zone.js.map +1 -1
  51. package/dist/components/ui/forms/form.cjs +1 -1
  52. package/dist/components/ui/forms/form.cjs.map +1 -1
  53. package/dist/components/ui/forms/form.js +11 -11
  54. package/dist/components/ui/forms/form.js.map +1 -1
  55. package/dist/components/ui/forms/input-validation.cjs +1 -1
  56. package/dist/components/ui/forms/input-validation.cjs.map +1 -1
  57. package/dist/components/ui/forms/input-validation.js +20 -20
  58. package/dist/components/ui/forms/input-validation.js.map +1 -1
  59. package/dist/components/ui/forms/multi-select.cjs +1 -1
  60. package/dist/components/ui/forms/multi-select.cjs.map +1 -1
  61. package/dist/components/ui/forms/multi-select.js +69 -67
  62. package/dist/components/ui/forms/multi-select.js.map +1 -1
  63. package/dist/components/ui/forms/radio-group.cjs +1 -1
  64. package/dist/components/ui/forms/radio-group.cjs.map +1 -1
  65. package/dist/components/ui/forms/radio-group.js +19 -19
  66. package/dist/components/ui/forms/radio-group.js.map +1 -1
  67. package/dist/components/ui/forms/social-button.cjs +1 -1
  68. package/dist/components/ui/forms/social-button.cjs.map +1 -1
  69. package/dist/components/ui/forms/social-button.js +6 -6
  70. package/dist/components/ui/forms/social-button.js.map +1 -1
  71. package/dist/components/ui/forms/toggle.cjs +1 -1
  72. package/dist/components/ui/forms/toggle.cjs.map +1 -1
  73. package/dist/components/ui/forms/toggle.js +7 -7
  74. package/dist/components/ui/forms/toggle.js.map +1 -1
  75. package/dist/components/ui/navigation/navigation-menu.cjs +1 -1
  76. package/dist/components/ui/navigation/navigation-menu.cjs.map +1 -1
  77. package/dist/components/ui/navigation/navigation-menu.js +14 -14
  78. package/dist/components/ui/navigation/navigation-menu.js.map +1 -1
  79. package/dist/components/ui/navigation/sidebar.cjs +1 -1
  80. package/dist/components/ui/navigation/sidebar.cjs.map +1 -1
  81. package/dist/components/ui/navigation/sidebar.js +44 -44
  82. package/dist/components/ui/navigation/sidebar.js.map +1 -1
  83. package/dist/components/ui/overlays/context-menu.cjs +1 -1
  84. package/dist/components/ui/overlays/context-menu.cjs.map +1 -1
  85. package/dist/components/ui/overlays/context-menu.js +1 -1
  86. package/dist/components/ui/overlays/context-menu.js.map +1 -1
  87. package/dist/components/ui/overlays/dropdown-menu.cjs +1 -1
  88. package/dist/components/ui/overlays/dropdown-menu.cjs.map +1 -1
  89. package/dist/components/ui/overlays/dropdown-menu.js +5 -5
  90. package/dist/components/ui/overlays/dropdown-menu.js.map +1 -1
  91. package/dist/components/ui/overlays/menubar.cjs +1 -1
  92. package/dist/components/ui/overlays/menubar.cjs.map +1 -1
  93. package/dist/components/ui/overlays/menubar.js +29 -29
  94. package/dist/components/ui/overlays/menubar.js.map +1 -1
  95. package/dist/components/ui/overlays/tooltip.cjs +1 -1
  96. package/dist/components/ui/overlays/tooltip.cjs.map +1 -1
  97. package/dist/components/ui/overlays/tooltip.js +12 -12
  98. package/dist/components/ui/overlays/tooltip.js.map +1 -1
  99. package/dist/components/ui/primitives/avatar.cjs +1 -1
  100. package/dist/components/ui/primitives/avatar.cjs.map +1 -1
  101. package/dist/components/ui/primitives/avatar.js +20 -27
  102. package/dist/components/ui/primitives/avatar.js.map +1 -1
  103. package/dist/components/ui/primitives/badge.cjs +1 -1
  104. package/dist/components/ui/primitives/badge.cjs.map +1 -1
  105. package/dist/components/ui/primitives/badge.js +13 -13
  106. package/dist/components/ui/primitives/badge.js.map +1 -1
  107. package/dist/components/ui/primitives/button.cjs +1 -1
  108. package/dist/components/ui/primitives/button.cjs.map +1 -1
  109. package/dist/components/ui/primitives/button.js +11 -8
  110. package/dist/components/ui/primitives/button.js.map +1 -1
  111. package/dist/index.cjs +1 -1
  112. package/dist/index.css +1 -1
  113. package/dist/index.d.cts +3 -3
  114. package/dist/index.d.ts +3 -3
  115. package/dist/index.js +34 -35
  116. package/dist/index.js.map +1 -1
  117. package/dist/preset.css +1 -2
  118. package/dist/toast-theme.css +100 -64
  119. package/dist/tokens.css +59 -159
  120. package/package.json +5 -3
  121. package/scripts/check-colors.mjs +208 -0
@@ -1,160 +1,171 @@
1
- import { jsxs as g, jsx as i } from "react/jsx-runtime";
1
+ import { jsxs as y, jsx as i } from "react/jsx-runtime";
2
2
  import { useCallback as S } from "react";
3
- import { Table as X, TableHeader as Y, TableRow as s, TableHead as Z, TableBody as C, TableCell as y } from "./table.js";
4
- import { TablePagination as u } from "./table-pagination.js";
5
- import { Skeleton as f } from "../primitives/skeleton.js";
3
+ import { Table as V, TableHeader as W, TableRow as d, TableHead as X, TableBody as Y, TableCell as m } from "./table.js";
4
+ import { TablePagination as Z } from "./table-pagination.js";
5
+ import { Skeleton as C } from "../primitives/skeleton.js";
6
6
  import { ArrowUpDown as v } from "lucide-react";
7
7
  import { useDataTable as aa } from "../../../hooks/use-data-table.js";
8
8
  import { useDataTableFilters as ea } from "../../../hooks/use-data-table-filters.js";
9
- import { cn as m } from "../utils.js";
9
+ import { cn as c } from "../utils.js";
10
10
  import { FilterBar as ta } from "./filter-bar.js";
11
11
  import { DataTableToolbar as ia } from "./data-table-toolbar.js";
12
- import { DataTableEmptyState as la } from "./data-table-empty-state.js";
13
- function ka({
12
+ import { DataTableEmptyState as na } from "./data-table-empty-state.js";
13
+ function ba({
14
14
  data: N,
15
15
  columns: o,
16
- searchPlaceholder: z = "Buscar...",
17
- searchableColumns: k,
18
- enableSearch: A = !0,
19
- filterFields: b = [],
20
- enableFilters: w = !1,
21
- initialFilters: x = [],
22
- pageSizeOptions: M = [5, 10, 20, 50],
23
- initialPageSize: B = 10,
24
- toolbarActions: I,
16
+ searchPlaceholder: x = "Buscar...",
17
+ searchableColumns: b,
18
+ enableSearch: z = !0,
19
+ filterFields: k = [],
20
+ enableFilters: A = !1,
21
+ initialFilters: w = [],
22
+ pageSizeOptions: u = [5, 10, 20, 50],
23
+ initialPageSize: j = 10,
24
+ toolbarActions: M,
25
25
  serverConfig: e,
26
- isLoading: O = !1,
27
- emptyState: j,
28
- emptyMessage: H,
26
+ isLoading: B = !1,
27
+ emptyState: I,
28
+ emptyMessage: O,
29
29
  // deprecated
30
- className: $
30
+ className: H
31
31
  }) {
32
32
  var T, D;
33
33
  const r = !!e, {
34
34
  data: P,
35
- state: l,
36
- handlers: h,
37
- getSortDirection: d
35
+ state: n,
36
+ handlers: s,
37
+ getSortDirection: h
38
38
  } = aa({
39
39
  data: N,
40
- initialPageSize: B,
40
+ initialPageSize: j,
41
41
  initialSort: { column: null, direction: null },
42
42
  serverMode: r,
43
43
  totalItems: e == null ? void 0 : e.totalItems,
44
44
  serverCurrentPage: e == null ? void 0 : e.currentPage,
45
45
  serverCurrentPageSize: e == null ? void 0 : e.currentPageSize
46
- }), E = k ? k[0] : ((T = o.find((a) => a.key === "nome" || a.key === "name" || a.key === "title" || a.key === "titulo")) == null ? void 0 : T.key) || ((D = o[0]) == null ? void 0 : D.key), {
46
+ }), $ = b ? b[0] : ((T = o.find((a) => a.key === "nome" || a.key === "name" || a.key === "title" || a.key === "titulo")) == null ? void 0 : T.key) || ((D = o[0]) == null ? void 0 : D.key), {
47
47
  searchQuery: F,
48
- handleSearchChange: Q,
49
- advancedFilters: c,
50
- setAdvancedFilters: R,
51
- filterDialogOpen: U,
52
- setFilterDialogOpen: _,
53
- activeFilterChips: q,
54
- handleApplyFilters: G,
55
- handleClearAllFilters: J,
56
- clearSearchAndFilters: K
48
+ handleSearchChange: f,
49
+ advancedFilters: p,
50
+ setAdvancedFilters: E,
51
+ filterDialogOpen: Q,
52
+ setFilterDialogOpen: R,
53
+ activeFilterChips: U,
54
+ handleApplyFilters: _,
55
+ handleClearAllFilters: q,
56
+ clearSearchAndFilters: G
57
57
  } = ea({
58
- initialFilters: x,
59
- filterFields: b,
58
+ initialFilters: w,
59
+ filterFields: k,
60
60
  isServerMode: r,
61
61
  serverConfig: e,
62
- handlers: h,
63
- defaultSearchColumn: E
64
- }), L = S(async (a) => {
62
+ handlers: s,
63
+ defaultSearchColumn: $
64
+ }), J = S(async (a) => {
65
65
  if (r && (e != null && e.onSortChange)) {
66
- const n = l.sort;
66
+ const l = n.sort;
67
67
  let t = "asc";
68
- n.column === a && (t = n.direction === "asc" ? "desc" : n.direction === "desc" ? null : "asc");
69
- const p = {
68
+ l.column === a && (t = l.direction === "asc" ? "desc" : l.direction === "desc" ? null : "asc");
69
+ const g = {
70
70
  column: t ? a : null,
71
71
  direction: t
72
72
  };
73
- h.onSort(a), await e.onSortChange(p);
73
+ s.onSort(a), await e.onSortChange(g);
74
74
  } else
75
- h.onSort(a);
76
- }, [r, e, l.sort, h]), V = S(async (a) => {
77
- r && (e != null && e.onPageChange) ? await e.onPageChange(a, l.pagination.pageSize) : l.pagination.onPageChange && l.pagination.onPageChange(a);
78
- }, [r, e, l.pagination]), W = S(async (a) => {
79
- r && (e != null && e.onPageChange) ? await e.onPageChange(1, a) : l.pagination.onPageSizeChange && l.pagination.onPageSizeChange(a);
80
- }, [r, e, l.pagination]);
81
- return /* @__PURE__ */ g("div", { className: m("space-y-4", $), children: [
75
+ s.onSort(a);
76
+ }, [r, e, n.sort, s]), K = S(async (a) => {
77
+ r && (e != null && e.onPageChange) ? await e.onPageChange(a, n.pagination.pageSize) : n.pagination.onPageChange && n.pagination.onPageChange(a);
78
+ }, [r, e, n.pagination]), L = S(async (a) => {
79
+ r && (e != null && e.onPageChange) ? await e.onPageChange(1, a) : n.pagination.onPageSizeChange && n.pagination.onPageSizeChange(a);
80
+ }, [r, e, n.pagination]);
81
+ return /* @__PURE__ */ y("div", { className: c("space-y-4", H), children: [
82
82
  /* @__PURE__ */ i(
83
83
  ia,
84
84
  {
85
- enableSearch: A,
86
- searchPlaceholder: z,
85
+ enableSearch: z,
86
+ searchPlaceholder: x,
87
87
  searchQuery: F,
88
- onSearchChange: Q,
89
- enableFilters: w,
90
- filterFields: b,
91
- advancedFilters: c,
92
- onAdvancedFiltersChange: R,
93
- filterDialogOpen: U,
94
- onFilterDialogOpenChange: _,
95
- onApplyFilters: G,
96
- toolbarActions: I
88
+ onSearchChange: f,
89
+ enableFilters: A,
90
+ filterFields: k,
91
+ advancedFilters: p,
92
+ onAdvancedFiltersChange: E,
93
+ filterDialogOpen: Q,
94
+ onFilterDialogOpenChange: R,
95
+ onApplyFilters: _,
96
+ toolbarActions: M
97
97
  }
98
98
  ),
99
- c.length > 0 && /* @__PURE__ */ i(
99
+ p.length > 0 && /* @__PURE__ */ i(
100
100
  ta,
101
101
  {
102
- activeFilters: q,
103
- onClearAll: J
102
+ activeFilters: U,
103
+ onClearAll: q
104
104
  }
105
105
  ),
106
- /* @__PURE__ */ i("div", { className: "rounded-md border overflow-x-auto", children: /* @__PURE__ */ g(X, { children: [
107
- /* @__PURE__ */ i(Y, { children: /* @__PURE__ */ i(s, { children: o.map((a) => /* @__PURE__ */ g(
108
- Z,
106
+ /* @__PURE__ */ i("div", { className: "rounded-md border overflow-x-auto", children: /* @__PURE__ */ y(V, { children: [
107
+ /* @__PURE__ */ i(W, { children: /* @__PURE__ */ i(d, { children: o.map((a) => /* @__PURE__ */ i(
108
+ X,
109
109
  {
110
- className: m(
111
- a.headerClassName,
112
- a.sortable && "cursor-pointer select-none hover:bg-muted/50 transition-colors",
113
- a.sortable && d(a.key) && "text-primary"
110
+ className: c(
111
+ a.sortable && "select-none p-0",
112
+ a.sortable && h(a.key) && "text-primary",
113
+ a.headerClassName
114
114
  ),
115
115
  style: { width: a.width },
116
- onClick: () => a.sortable && L(a.key),
117
- "aria-sort": a.sortable ? d(a.key) === "asc" ? "ascending" : d(a.key) === "desc" ? "descending" : "none" : void 0,
118
- children: [
119
- a.header,
120
- a.sortable && d(a.key) && /* @__PURE__ */ i(v, { className: "ml-2 h-4 w-4 inline" })
121
- ]
116
+ "aria-sort": a.sortable ? h(a.key) === "asc" ? "ascending" : h(a.key) === "desc" ? "descending" : "none" : void 0,
117
+ children: a.sortable ? /* @__PURE__ */ y(
118
+ "button",
119
+ {
120
+ type: "button",
121
+ onClick: () => J(a.key),
122
+ className: c(
123
+ "flex h-10 w-full items-center gap-2 px-2 text-left font-semibold whitespace-nowrap cursor-pointer hover:bg-muted/50 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset",
124
+ a.align === "right" && "justify-end text-right",
125
+ a.align === "center" && "justify-center text-center"
126
+ ),
127
+ children: [
128
+ a.header,
129
+ h(a.key) && /* @__PURE__ */ i(v, { className: "h-4 w-4 shrink-0" })
130
+ ]
131
+ }
132
+ ) : a.header
122
133
  },
123
134
  String(a.key)
124
135
  )) }) }),
125
- /* @__PURE__ */ i(C, { children: O ? (
136
+ /* @__PURE__ */ i(Y, { children: B ? (
126
137
  // SKELETON ROWS - limitar a max 15 para performance
127
- Array.from({ length: Math.min(l.pagination.pageSize, 15) }).map((a, n) => /* @__PURE__ */ i(s, { children: o.map((t, p) => /* @__PURE__ */ i(y, { className: t.className, children: /* @__PURE__ */ i(f, { className: "h-4 w-full" }) }, p)) }, `skeleton-${n}`))
138
+ Array.from({ length: Math.min(n.pagination.pageSize, 15) }).map((a, l) => /* @__PURE__ */ i(d, { children: o.map((t, g) => /* @__PURE__ */ i(m, { className: t.className, children: /* @__PURE__ */ i(C, { className: "h-4 w-full" }) }, g)) }, `skeleton-${l}`))
128
139
  ) : P.length > 0 ? (
129
140
  // DADOS NORMAIS
130
- P.map((a, n) => /* @__PURE__ */ i(s, { children: o.map((t) => /* @__PURE__ */ i(
131
- y,
141
+ P.map((a, l) => /* @__PURE__ */ i(d, { children: o.map((t) => /* @__PURE__ */ i(
142
+ m,
132
143
  {
133
- className: m(
144
+ className: c(
134
145
  t.className,
135
146
  t.align ? `text-${t.align}` : "text-left",
136
147
  t.onCellClick && "cursor-pointer hover:text-primary"
137
148
  ),
138
- onClick: t.onCellClick ? () => t.onCellClick(a[t.key], a, n) : void 0,
139
- children: t.render ? t.render(a[t.key], a, n) : a[t.key]
149
+ onClick: t.onCellClick ? () => t.onCellClick(a[t.key], a, l) : void 0,
150
+ children: t.render ? t.render(a[t.key], a, l) : a[t.key]
140
151
  },
141
152
  String(t.key)
142
- )) }, n))
153
+ )) }, l))
143
154
  ) : (
144
155
  // EMPTY STATE
145
- /* @__PURE__ */ i(s, { children: /* @__PURE__ */ i(
146
- y,
156
+ /* @__PURE__ */ i(d, { children: /* @__PURE__ */ i(
157
+ m,
147
158
  {
148
159
  colSpan: o.length,
149
160
  className: "h-64",
150
161
  children: /* @__PURE__ */ i(
151
- la,
162
+ na,
152
163
  {
153
- emptyState: j,
154
- emptyMessage: H,
155
- hasActiveFilters: c.length > 0,
164
+ emptyState: I,
165
+ emptyMessage: O,
166
+ hasActiveFilters: p.length > 0,
156
167
  hasSearch: F.trim().length > 0,
157
- onClearFilters: K
168
+ onClearFilters: G
158
169
  }
159
170
  )
160
171
  }
@@ -162,20 +173,20 @@ function ka({
162
173
  ) })
163
174
  ] }) }),
164
175
  /* @__PURE__ */ i(
165
- u,
176
+ Z,
166
177
  {
167
- currentPage: l.pagination.currentPage,
168
- totalPages: Math.ceil(l.pagination.totalItems / l.pagination.pageSize),
169
- pageSize: l.pagination.pageSize,
170
- totalItems: l.pagination.totalItems,
171
- onPageChange: V,
172
- onPageSizeChange: W,
173
- pageSizeOptions: M
178
+ currentPage: n.pagination.currentPage,
179
+ totalPages: Math.ceil(n.pagination.totalItems / n.pagination.pageSize),
180
+ pageSize: n.pagination.pageSize,
181
+ totalItems: n.pagination.totalItems,
182
+ onPageChange: K,
183
+ onPageSizeChange: L,
184
+ pageSizeOptions: u
174
185
  }
175
186
  )
176
187
  ] });
177
188
  }
178
189
  export {
179
- ka as DataTable
190
+ ba as DataTable
180
191
  };
181
192
  //# sourceMappingURL=data-table.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-table.js","sources":["../../../../src/components/ui/data/data-table.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"./table\";\nimport { TablePagination } from \"./table-pagination\";\nimport { Skeleton } from \"../primitives/skeleton\";\nimport { ArrowUpDown } from \"lucide-react\";\nimport { useDataTable } from \"../../../hooks/use-data-table\";\nimport { useDataTableFilters } from \"../../../hooks/use-data-table-filters\";\nimport { ColumnDef, SortConfig, ServerSideConfig, EmptyStateConfig } from \"./table-types\";\nimport { cn } from \"../utils\";\nimport { FilterBar } from \"./filter-bar\";\nimport { FilterCondition, FilterField } from \"./filter-builder\";\nimport { DataTableToolbar } from \"./data-table-toolbar\";\nimport { DataTableEmptyState } from \"./data-table-empty-state\";\n\ninterface DataTableProps<T extends object> {\n data: T[];\n columns: ColumnDef<T>[];\n\n // Configuração de busca\n searchPlaceholder?: string;\n searchableColumns?: (keyof T)[]; // Colunas que podem ser pesquisadas\n enableSearch?: boolean;\n\n // Configuração de filtros\n filterFields?: FilterField[]; // Campos de filtro avançado\n enableFilters?: boolean;\n initialFilters?: FilterCondition[]; // Filtros iniciais/externos\n\n // Paginação\n pageSizeOptions?: number[];\n initialPageSize?: number;\n\n // Conteúdo adicional da barra de ferramentas\n toolbarActions?: React.ReactNode;\n\n // Configuração server-side\n serverConfig?: ServerSideConfig<T>;\n\n // Estado de carregamento e vazio\n isLoading?: boolean;\n /**\n * Configuração do empty state.\n * Suporta tanto config completo (EmptyStateConfig) quanto string simples (retrocompatibilidade).\n */\n emptyState?: EmptyStateConfig | string;\n /** @deprecated Use emptyState ao invés de emptyMessage */\n emptyMessage?: string;\n\n className?: string;\n}\n\nexport function DataTable<T extends object>({\n data,\n columns,\n searchPlaceholder = \"Buscar...\",\n searchableColumns,\n enableSearch = true,\n filterFields = [],\n enableFilters = false,\n initialFilters = [],\n pageSizeOptions = [5, 10, 20, 50],\n initialPageSize = 10,\n toolbarActions,\n serverConfig,\n isLoading = false,\n emptyState,\n emptyMessage, // deprecated\n className,\n}: DataTableProps<T>) {\n // Detectar se está em modo server-side\n const isServerMode = !!serverConfig;\n const {\n data: processedData,\n state,\n handlers,\n getSortDirection,\n } = useDataTable({\n data,\n initialPageSize,\n initialSort: { column: null, direction: null },\n serverMode: isServerMode,\n totalItems: serverConfig?.totalItems,\n serverCurrentPage: serverConfig?.currentPage,\n serverCurrentPageSize: serverConfig?.currentPageSize,\n });\n\n // Auto-detect searchable column\n const defaultSearchColumn = searchableColumns\n ? searchableColumns[0]\n : (columns.find(c => c.key === \"nome\" || c.key === \"name\" || c.key === \"title\" || c.key === \"titulo\")?.key || columns[0]?.key);\n\n const {\n searchQuery,\n handleSearchChange,\n advancedFilters,\n setAdvancedFilters,\n filterDialogOpen,\n setFilterDialogOpen,\n activeFilterChips,\n handleApplyFilters,\n handleClearAllFilters,\n clearSearchAndFilters,\n } = useDataTableFilters<T>({\n initialFilters,\n filterFields,\n isServerMode,\n serverConfig,\n handlers,\n defaultSearchColumn,\n });\n\n // Handle sort - server-side aware\n const handleSort = useCallback(async (column: keyof T) => {\n if (isServerMode && serverConfig?.onSortChange) {\n // Calcular novo sortConfig\n const currentSort = state.sort;\n let newDirection: 'asc' | 'desc' | null = 'asc';\n\n if (currentSort.column === column) {\n newDirection = currentSort.direction === 'asc' ? 'desc' :\n currentSort.direction === 'desc' ? null : 'asc';\n }\n\n const newSortConfig: SortConfig<T> = {\n column: newDirection ? column : null,\n direction: newDirection\n };\n\n // Atualizar estado interno primeiro para mostrar indicador visual\n handlers.onSort(column);\n\n // Depois chamar callback do servidor\n await serverConfig.onSortChange(newSortConfig);\n } else {\n // Client-side: usar handler padrão\n handlers.onSort(column);\n }\n }, [isServerMode, serverConfig, state.sort, handlers]);\n\n // Handle page change - server-side aware\n const handlePageChange = useCallback(async (page: number) => {\n if (isServerMode && serverConfig?.onPageChange) {\n await serverConfig.onPageChange(page, state.pagination.pageSize);\n } else {\n // Client-side: usar handler padrão\n if (state.pagination.onPageChange) {\n state.pagination.onPageChange(page);\n }\n }\n }, [isServerMode, serverConfig, state.pagination]);\n\n // Handle page size change - server-side aware\n const handlePageSizeChange = useCallback(async (newSize: number) => {\n if (isServerMode && serverConfig?.onPageChange) {\n await serverConfig.onPageChange(1, newSize); // Reset para página 1\n } else {\n // Client-side: usar handler padrão\n if (state.pagination.onPageSizeChange) {\n state.pagination.onPageSizeChange(newSize);\n }\n }\n }, [isServerMode, serverConfig, state.pagination]);\n\n return (\n <div className={cn(\"space-y-4\", className)}>\n {/* Toolbar — only rendered when there is at least one visible element */}\n <DataTableToolbar\n enableSearch={enableSearch}\n searchPlaceholder={searchPlaceholder}\n searchQuery={searchQuery}\n onSearchChange={handleSearchChange}\n enableFilters={enableFilters}\n filterFields={filterFields}\n advancedFilters={advancedFilters}\n onAdvancedFiltersChange={setAdvancedFilters}\n filterDialogOpen={filterDialogOpen}\n onFilterDialogOpenChange={setFilterDialogOpen}\n onApplyFilters={handleApplyFilters}\n toolbarActions={toolbarActions}\n />\n\n {/* Active Filter Chips */}\n {advancedFilters.length > 0 && (\n <FilterBar\n activeFilters={activeFilterChips}\n onClearAll={handleClearAllFilters}\n />\n )}\n\n {/* Table */}\n <div className=\"rounded-md border overflow-x-auto\">\n <Table>\n <TableHeader>\n <TableRow>\n {columns.map((column) => (\n <TableHead\n key={String(column.key)}\n className={cn(\n column.headerClassName,\n column.sortable && \"cursor-pointer select-none hover:bg-muted/50 transition-colors\",\n column.sortable && getSortDirection(column.key) && \"text-primary\"\n )}\n style={{ width: column.width }}\n onClick={() => column.sortable && handleSort(column.key)}\n aria-sort={column.sortable ? (getSortDirection(column.key) === \"asc\" ? \"ascending\" : getSortDirection(column.key) === \"desc\" ? \"descending\" : \"none\") : undefined}\n >\n {column.header}\n {column.sortable && getSortDirection(column.key) && (\n <ArrowUpDown className=\"ml-2 h-4 w-4 inline\" />\n )}\n </TableHead>\n ))}\n </TableRow>\n </TableHeader>\n <TableBody>\n {isLoading ? (\n // SKELETON ROWS - limitar a max 15 para performance\n Array.from({ length: Math.min(state.pagination.pageSize, 15) }).map((_, i) => (\n <TableRow key={`skeleton-${i}`}>\n {columns.map((col, j) => (\n <TableCell key={j} className={col.className}>\n <Skeleton className=\"h-4 w-full\" />\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : processedData.length > 0 ? (\n // DADOS NORMAIS\n processedData.map((row, rowIndex) => (\n <TableRow key={rowIndex}>\n {columns.map((column) => (\n <TableCell\n key={String(column.key)}\n className={cn(\n column.className,\n column.align ? `text-${column.align}` : \"text-left\",\n column.onCellClick && \"cursor-pointer hover:text-primary\"\n )}\n onClick={column.onCellClick\n ? () => column.onCellClick!(row[column.key], row, rowIndex)\n : undefined}\n >\n {column.render\n ? column.render(row[column.key], row, rowIndex)\n : (row[column.key] as React.ReactNode)}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n // EMPTY STATE\n <TableRow>\n <TableCell\n colSpan={columns.length}\n className=\"h-64\"\n >\n <DataTableEmptyState\n emptyState={emptyState}\n emptyMessage={emptyMessage}\n hasActiveFilters={advancedFilters.length > 0}\n hasSearch={searchQuery.trim().length > 0}\n onClearFilters={clearSearchAndFilters}\n />\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </div>\n\n {/* Pagination */}\n <TablePagination\n currentPage={state.pagination.currentPage}\n totalPages={Math.ceil(state.pagination.totalItems / state.pagination.pageSize)}\n pageSize={state.pagination.pageSize}\n totalItems={state.pagination.totalItems}\n onPageChange={handlePageChange}\n onPageSizeChange={handlePageSizeChange}\n pageSizeOptions={pageSizeOptions}\n />\n </div>\n );\n}\n"],"names":["DataTable","data","columns","searchPlaceholder","searchableColumns","enableSearch","filterFields","enableFilters","initialFilters","pageSizeOptions","initialPageSize","toolbarActions","serverConfig","isLoading","emptyState","emptyMessage","className","isServerMode","processedData","state","handlers","getSortDirection","useDataTable","defaultSearchColumn","_a","c","_b","searchQuery","handleSearchChange","advancedFilters","setAdvancedFilters","filterDialogOpen","setFilterDialogOpen","activeFilterChips","handleApplyFilters","handleClearAllFilters","clearSearchAndFilters","useDataTableFilters","handleSort","useCallback","column","currentSort","newDirection","newSortConfig","handlePageChange","page","handlePageSizeChange","newSize","cn","jsx","DataTableToolbar","FilterBar","Table","TableHeader","TableRow","jsxs","TableHead","ArrowUpDown","TableBody","_","i","col","j","TableCell","Skeleton","row","rowIndex","DataTableEmptyState","TablePagination"],"mappings":"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"}
1
+ {"version":3,"file":"data-table.js","sources":["../../../../src/components/ui/data/data-table.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"./table\";\nimport { TablePagination } from \"./table-pagination\";\nimport { Skeleton } from \"../primitives/skeleton\";\nimport { ArrowUpDown } from \"lucide-react\";\nimport { useDataTable } from \"../../../hooks/use-data-table\";\nimport { useDataTableFilters } from \"../../../hooks/use-data-table-filters\";\nimport { ColumnDef, SortConfig, ServerSideConfig, EmptyStateConfig } from \"./table-types\";\nimport { cn } from \"../utils\";\nimport { FilterBar } from \"./filter-bar\";\nimport { FilterCondition, FilterField } from \"./filter-builder\";\nimport { DataTableToolbar } from \"./data-table-toolbar\";\nimport { DataTableEmptyState } from \"./data-table-empty-state\";\n\ninterface DataTableProps<T extends object> {\n data: T[];\n columns: ColumnDef<T>[];\n\n // Configuração de busca\n searchPlaceholder?: string;\n searchableColumns?: (keyof T)[]; // Colunas que podem ser pesquisadas\n enableSearch?: boolean;\n\n // Configuração de filtros\n filterFields?: FilterField[]; // Campos de filtro avançado\n enableFilters?: boolean;\n initialFilters?: FilterCondition[]; // Filtros iniciais/externos\n\n // Paginação\n pageSizeOptions?: number[];\n initialPageSize?: number;\n\n // Conteúdo adicional da barra de ferramentas\n toolbarActions?: React.ReactNode;\n\n // Configuração server-side\n serverConfig?: ServerSideConfig<T>;\n\n // Estado de carregamento e vazio\n isLoading?: boolean;\n /**\n * Configuração do empty state.\n * Suporta tanto config completo (EmptyStateConfig) quanto string simples (retrocompatibilidade).\n */\n emptyState?: EmptyStateConfig | string;\n /** @deprecated Use emptyState ao invés de emptyMessage */\n emptyMessage?: string;\n\n className?: string;\n}\n\nexport function DataTable<T extends object>({\n data,\n columns,\n searchPlaceholder = \"Buscar...\",\n searchableColumns,\n enableSearch = true,\n filterFields = [],\n enableFilters = false,\n initialFilters = [],\n pageSizeOptions = [5, 10, 20, 50],\n initialPageSize = 10,\n toolbarActions,\n serverConfig,\n isLoading = false,\n emptyState,\n emptyMessage, // deprecated\n className,\n}: DataTableProps<T>) {\n // Detectar se está em modo server-side\n const isServerMode = !!serverConfig;\n const {\n data: processedData,\n state,\n handlers,\n getSortDirection,\n } = useDataTable({\n data,\n initialPageSize,\n initialSort: { column: null, direction: null },\n serverMode: isServerMode,\n totalItems: serverConfig?.totalItems,\n serverCurrentPage: serverConfig?.currentPage,\n serverCurrentPageSize: serverConfig?.currentPageSize,\n });\n\n // Auto-detect searchable column\n const defaultSearchColumn = searchableColumns\n ? searchableColumns[0]\n : (columns.find(c => c.key === \"nome\" || c.key === \"name\" || c.key === \"title\" || c.key === \"titulo\")?.key || columns[0]?.key);\n\n const {\n searchQuery,\n handleSearchChange,\n advancedFilters,\n setAdvancedFilters,\n filterDialogOpen,\n setFilterDialogOpen,\n activeFilterChips,\n handleApplyFilters,\n handleClearAllFilters,\n clearSearchAndFilters,\n } = useDataTableFilters<T>({\n initialFilters,\n filterFields,\n isServerMode,\n serverConfig,\n handlers,\n defaultSearchColumn,\n });\n\n // Handle sort - server-side aware\n const handleSort = useCallback(async (column: keyof T) => {\n if (isServerMode && serverConfig?.onSortChange) {\n // Calcular novo sortConfig\n const currentSort = state.sort;\n let newDirection: 'asc' | 'desc' | null = 'asc';\n\n if (currentSort.column === column) {\n newDirection = currentSort.direction === 'asc' ? 'desc' :\n currentSort.direction === 'desc' ? null : 'asc';\n }\n\n const newSortConfig: SortConfig<T> = {\n column: newDirection ? column : null,\n direction: newDirection\n };\n\n // Atualizar estado interno primeiro para mostrar indicador visual\n handlers.onSort(column);\n\n // Depois chamar callback do servidor\n await serverConfig.onSortChange(newSortConfig);\n } else {\n // Client-side: usar handler padrão\n handlers.onSort(column);\n }\n }, [isServerMode, serverConfig, state.sort, handlers]);\n\n // Handle page change - server-side aware\n const handlePageChange = useCallback(async (page: number) => {\n if (isServerMode && serverConfig?.onPageChange) {\n await serverConfig.onPageChange(page, state.pagination.pageSize);\n } else {\n // Client-side: usar handler padrão\n if (state.pagination.onPageChange) {\n state.pagination.onPageChange(page);\n }\n }\n }, [isServerMode, serverConfig, state.pagination]);\n\n // Handle page size change - server-side aware\n const handlePageSizeChange = useCallback(async (newSize: number) => {\n if (isServerMode && serverConfig?.onPageChange) {\n await serverConfig.onPageChange(1, newSize); // Reset para página 1\n } else {\n // Client-side: usar handler padrão\n if (state.pagination.onPageSizeChange) {\n state.pagination.onPageSizeChange(newSize);\n }\n }\n }, [isServerMode, serverConfig, state.pagination]);\n\n return (\n <div className={cn(\"space-y-4\", className)}>\n {/* Toolbar — only rendered when there is at least one visible element */}\n <DataTableToolbar\n enableSearch={enableSearch}\n searchPlaceholder={searchPlaceholder}\n searchQuery={searchQuery}\n onSearchChange={handleSearchChange}\n enableFilters={enableFilters}\n filterFields={filterFields}\n advancedFilters={advancedFilters}\n onAdvancedFiltersChange={setAdvancedFilters}\n filterDialogOpen={filterDialogOpen}\n onFilterDialogOpenChange={setFilterDialogOpen}\n onApplyFilters={handleApplyFilters}\n toolbarActions={toolbarActions}\n />\n\n {/* Active Filter Chips */}\n {advancedFilters.length > 0 && (\n <FilterBar\n activeFilters={activeFilterChips}\n onClearAll={handleClearAllFilters}\n />\n )}\n\n {/* Table */}\n <div className=\"rounded-md border overflow-x-auto\">\n <Table>\n <TableHeader>\n <TableRow>\n {columns.map((column) => (\n <TableHead\n key={String(column.key)}\n className={cn(\n column.sortable && \"select-none p-0\",\n column.sortable && getSortDirection(column.key) && \"text-primary\",\n column.headerClassName\n )}\n style={{ width: column.width }}\n aria-sort={column.sortable ? (getSortDirection(column.key) === \"asc\" ? \"ascending\" : getSortDirection(column.key) === \"desc\" ? \"descending\" : \"none\") : undefined}\n >\n {column.sortable ? (\n <button\n type=\"button\"\n onClick={() => handleSort(column.key)}\n className={cn(\n \"flex h-10 w-full items-center gap-2 px-2 text-left font-semibold whitespace-nowrap cursor-pointer hover:bg-muted/50 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset\",\n column.align === \"right\" && \"justify-end text-right\",\n column.align === \"center\" && \"justify-center text-center\"\n )}\n >\n {column.header}\n {getSortDirection(column.key) && <ArrowUpDown className=\"h-4 w-4 shrink-0\" />}\n </button>\n ) : (\n column.header\n )}\n </TableHead>\n ))}\n </TableRow>\n </TableHeader>\n <TableBody>\n {isLoading ? (\n // SKELETON ROWS - limitar a max 15 para performance\n Array.from({ length: Math.min(state.pagination.pageSize, 15) }).map((_, i) => (\n <TableRow key={`skeleton-${i}`}>\n {columns.map((col, j) => (\n <TableCell key={j} className={col.className}>\n <Skeleton className=\"h-4 w-full\" />\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : processedData.length > 0 ? (\n // DADOS NORMAIS\n processedData.map((row, rowIndex) => (\n <TableRow key={rowIndex}>\n {columns.map((column) => (\n <TableCell\n key={String(column.key)}\n className={cn(\n column.className,\n column.align ? `text-${column.align}` : \"text-left\",\n column.onCellClick && \"cursor-pointer hover:text-primary\"\n )}\n onClick={column.onCellClick\n ? () => column.onCellClick!(row[column.key], row, rowIndex)\n : undefined}\n >\n {column.render\n ? column.render(row[column.key], row, rowIndex)\n : (row[column.key] as React.ReactNode)}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n // EMPTY STATE\n <TableRow>\n <TableCell\n colSpan={columns.length}\n className=\"h-64\"\n >\n <DataTableEmptyState\n emptyState={emptyState}\n emptyMessage={emptyMessage}\n hasActiveFilters={advancedFilters.length > 0}\n hasSearch={searchQuery.trim().length > 0}\n onClearFilters={clearSearchAndFilters}\n />\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </div>\n\n {/* Pagination */}\n <TablePagination\n currentPage={state.pagination.currentPage}\n totalPages={Math.ceil(state.pagination.totalItems / state.pagination.pageSize)}\n pageSize={state.pagination.pageSize}\n totalItems={state.pagination.totalItems}\n onPageChange={handlePageChange}\n onPageSizeChange={handlePageSizeChange}\n pageSizeOptions={pageSizeOptions}\n />\n </div>\n );\n}\n"],"names":["DataTable","data","columns","searchPlaceholder","searchableColumns","enableSearch","filterFields","enableFilters","initialFilters","pageSizeOptions","initialPageSize","toolbarActions","serverConfig","isLoading","emptyState","emptyMessage","className","isServerMode","processedData","state","handlers","getSortDirection","useDataTable","defaultSearchColumn","_a","c","_b","searchQuery","handleSearchChange","advancedFilters","setAdvancedFilters","filterDialogOpen","setFilterDialogOpen","activeFilterChips","handleApplyFilters","handleClearAllFilters","clearSearchAndFilters","useDataTableFilters","handleSort","useCallback","column","currentSort","newDirection","newSortConfig","handlePageChange","page","handlePageSizeChange","newSize","cn","jsx","DataTableToolbar","FilterBar","Table","TableHeader","TableRow","TableHead","jsxs","ArrowUpDown","TableBody","_","i","col","j","TableCell","Skeleton","row","rowIndex","DataTableEmptyState","TablePagination"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),w=require("react"),i=require("date-fns"),h=require("lucide-react"),f=require("../utils.cjs"),j=require("../primitives/button.cjs"),k=require("../primitives/avatar.cjs"),H=require("../primitives/badge.cjs"),D=require("../overlays/dialog.cjs"),A=require("../forms/toggle-group.cjs"),J=require("../layout/scroll-area.cjs"),C=require("react-dnd"),V=require("react-dnd-html5-backend"),M={TASK:"task"},F={instagram:h.Instagram,linkedin:h.Linkedin,facebook:h.Facebook,twitter:h.Twitter,youtube:h.Youtube,blog:h.Calendar,other:h.Calendar},E={idea:"bg-muted text-muted-foreground border-border",planned:"bg-info/10 text-info-emphasis border-info/20","in-progress":"bg-warning/10 text-warning-emphasis border-warning/20",approval:"bg-accent text-accent-foreground border-border",scheduled:"bg-success/10 text-success-emphasis border-success/20",published:"bg-foreground text-background border-foreground"},B=["bg-chart-2/15 border-chart-2/30 text-chart-2","bg-chart-3/15 border-chart-3/30 text-chart-3","bg-chart-1/15 border-chart-1/30 text-chart-1","bg-chart-4/15 border-chart-4/30 text-chart-4","bg-chart-5/15 border-chart-5/30 text-chart-5","bg-chart-8/15 border-chart-8/30 text-chart-8"],q=t=>{const s=t.split("").reduce((l,d)=>l+d.charCodeAt(0),0);return B[s%B.length]};function z({task:t,view:s="month",mode:l="editorial",onClick:d,style:c}){var N;const[{isDragging:a},n]=C.useDrag(()=>({type:M.TASK,item:{id:t.id,type:M.TASK},collect:g=>({isDragging:!!g.isDragging()})}),[t.id]),m=t.channel?F[t.channel]:h.Calendar,r=t.date?new Date(t.date):null,o=t.endDate?new Date(t.endDate):r?i.addHours(r,1):null,x=r?i.format(r,"HH:mm"):null,p=r&&o?`${i.format(r,"HH:mm")} - ${i.format(o,"HH:mm")}`:x;return l==="editorial"&&(s==="week"||s==="day")?e.jsxs("div",{ref:n,onClick:d,className:f.cn("relative group cursor-pointer bg-card border rounded-md shadow-sm hover:shadow-md transition-all mb-3 overflow-hidden",a?"opacity-50":"opacity-100",t.status==="published"?"border-l-2 border-l-foreground":"border-l-2 border-l-primary"),children:[e.jsxs("div",{className:"flex items-center justify-between px-3 py-2 border-b bg-muted/50",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(m,{size:14,className:"text-muted-foreground"}),x&&e.jsx("span",{className:"text-xs font-medium text-muted-foreground",children:x})]}),e.jsx("div",{className:"opacity-0 group-hover:opacity-100 text-muted-foreground cursor-grab",children:e.jsx(h.GripVertical,{size:14})})]}),t.imageUrl&&e.jsx("div",{className:"w-full aspect-video bg-muted relative border-b",children:e.jsx("img",{src:t.imageUrl,alt:"",className:"w-full h-full object-cover"})}),e.jsxs("div",{className:"p-3",children:[e.jsx("h4",{className:"text-sm font-medium text-foreground line-clamp-2 mb-2 leading-snug",children:t.title}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(H.Badge,{variant:"outline",className:f.cn("px-1.5 py-0 text-[10px] h-5 font-normal uppercase tracking-wide",E[t.status]),children:t.status}),t.assignees&&t.assignees.length>0&&e.jsx("div",{className:"flex -space-x-2",children:t.assignees.slice(0,2).map((g,v)=>e.jsxs(k.Avatar,{className:"w-5 h-5 border border-background",children:[e.jsx(k.AvatarImage,{src:g.avatar}),e.jsx(k.AvatarFallback,{className:"text-[8px]",children:g.name[0]})]},v))})]})]})]}):l==="editorial"&&s==="month"?e.jsxs("div",{ref:n,onClick:d,className:f.cn("relative group cursor-pointer bg-card border rounded-md shadow-sm hover:shadow-md transition-all mb-1 overflow-hidden flex items-center gap-2 p-1.5",a?"opacity-50":"opacity-100",t.status==="published"?"border-l-2 border-l-foreground":"border-l-2 border-l-primary"),children:[t.imageUrl&&e.jsx("div",{className:"w-8 h-8 flex-shrink-0 bg-muted rounded overflow-hidden",children:e.jsx("img",{src:t.imageUrl,alt:"",className:"w-full h-full object-cover"})}),e.jsx("div",{className:"min-w-0 flex-1",children:e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(m,{size:12,className:"text-muted-foreground"}),e.jsx("span",{className:"truncate font-medium text-xs",children:t.title})]})})]}):l==="execution"&&(s==="week"||s==="day")?e.jsxs("div",{ref:n,onClick:d,style:c,className:f.cn("absolute z-10 rounded-md border shadow-sm p-1.5 text-xs flex flex-col overflow-hidden hover:overflow-visible hover:h-auto! hover:min-h-[min-content] hover:z-50 transition-all cursor-pointer group",a?"opacity-50":"opacity-100",t.color||q(t.id)),children:[e.jsxs("div",{className:"flex items-center gap-1 mb-0.5 font-semibold opacity-75 text-[10px] leading-none",children:[e.jsx(h.Clock,{size:10}),e.jsx("span",{className:"truncate",children:p})]}),e.jsx("div",{className:"font-bold leading-tight mb-1 line-clamp-2 text-[11px]",children:t.title}),e.jsxs("div",{className:"mt-auto flex items-center justify-between pt-1",children:[e.jsx("div",{className:"flex -space-x-1.5",children:(N=t.assignees)==null?void 0:N.map((g,v)=>e.jsxs(k.Avatar,{className:"w-4 h-4 border border-background",children:[e.jsx(k.AvatarImage,{src:g.avatar}),e.jsx(k.AvatarFallback,{className:"text-[8px]",children:g.name[0]})]},v))}),t.status!=="published"&&e.jsx("div",{className:f.cn("w-2 h-2 rounded-full",E[t.status].split(" ")[1].replace("text-","bg-"))})]})]}):l==="execution"&&s==="month"?e.jsxs("div",{ref:n,onClick:d,className:f.cn("relative group cursor-pointer rounded px-2 py-1 mb-1 text-xs truncate font-medium transition-all",a?"opacity-50":"opacity-100",t.color||q(t.id).replace("bg-","bg-opacity-20 bg-")),children:[x," ",t.title]}):e.jsxs("div",{ref:n,onClick:d,className:f.cn("relative group cursor-pointer bg-card border rounded-md shadow-sm hover:shadow-md transition-all mb-2 p-2 flex items-start gap-3",a?"opacity-50":"opacity-100",l==="editorial"&&(t.status==="published"?"border-l-2 border-l-foreground":"border-l-2 border-l-primary")),children:[l==="editorial"&&t.imageUrl&&e.jsx("div",{className:"w-10 h-10 flex-shrink-0 bg-muted rounded overflow-hidden",children:e.jsx("img",{src:t.imageUrl,alt:"",className:"w-full h-full object-cover"})}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsxs("div",{className:"flex items-center gap-1.5 mb-1",children:[l==="editorial"&&e.jsx(m,{size:12,className:"text-muted-foreground"}),e.jsx("span",{className:"truncate font-medium text-sm",children:t.title})]}),e.jsx(H.Badge,{variant:"secondary",className:"text-[10px] h-4 px-1 py-0",children:t.status})]})]})}function Q({days:t,tasks:s,onDropTask:l,onTaskClick:d,onAddClick:c,view:a}){return e.jsx("div",{className:f.cn("grid h-full min-h-[calc(100vh-200px)] bg-muted/30",a==="week"?"grid-cols-7 divide-x":"grid-cols-1 border-x"),children:t.map(n=>{const m=s.filter(r=>r.date&&i.isSameDay(new Date(r.date),n)).sort((r,o)=>r.date&&o.date?new Date(r.date).getTime()-new Date(o.date).getTime():0);return e.jsx(X,{day:n,tasks:m,onDropTask:l,onTaskClick:d,onAddClick:c,isToday:i.isToday(n)},n.toISOString())})})}function X({day:t,tasks:s,onDropTask:l,onTaskClick:d,onAddClick:c,isToday:a}){const[{isOver:n},m]=C.useDrop(()=>({accept:M.TASK,drop:r=>l(r.id,t),collect:r=>({isOver:!!r.isOver()})}),[t,l]);return e.jsxs("div",{ref:m,className:f.cn("flex flex-col h-full min-h-0 transition-colors",n&&"bg-accent ring-inset ring-2 ring-ring"),children:[e.jsxs("div",{className:f.cn("p-2 text-center border-b bg-card sticky top-0 z-10",a&&"bg-accent/50"),children:[e.jsx("div",{className:"text-xs font-semibold uppercase text-muted-foreground mb-1",children:i.format(t,"EEE")}),e.jsx("div",{className:f.cn("w-8 h-8 rounded-full flex items-center justify-center mx-auto text-sm font-medium",a?"bg-primary text-primary-foreground":"text-foreground bg-muted"),children:i.format(t,"d")})]}),e.jsxs("div",{className:"flex-1 p-2 space-y-3 overflow-y-auto",children:[e.jsxs(j.Button,{variant:"outline",size:"sm",className:"w-full mb-2 justify-center px-1",onClick:()=>c(t),children:[e.jsx(h.Plus,{size:12,className:"flex-shrink-0"}),e.jsx("span",{className:"truncate ml-1.5 hidden xl:inline",children:"Add Post"}),e.jsx("span",{className:"truncate ml-1.5 inline xl:hidden",children:"Add"})]}),s.map(r=>e.jsx(z,{task:r,view:"week",mode:"editorial",onClick:()=>d(r)},r.id))]})]})}function Z({days:t,tasks:s,onDropTask:l,onTaskClick:d,onAddClick:c}){const a=Array.from({length:24},(n,m)=>m);return e.jsxs("div",{className:"flex h-full relative overflow-y-auto bg-card select-none",children:[e.jsxs("div",{className:"w-14 flex-shrink-0 border-r bg-card sticky left-0 z-30",children:[e.jsx("div",{className:"h-10 border-b bg-card sticky top-0 z-40 flex-shrink-0"})," ",a.map(n=>e.jsx("div",{className:"h-24 border-b text-right pr-2 pt-2 text-xs text-muted-foreground font-medium relative",children:e.jsx("span",{className:"-top-2.5 relative",children:i.format(i.setHours(new Date,n),"ha")})},n))]}),e.jsxs("div",{className:"flex flex-1 min-w-0 relative",children:[t.map((n,m)=>{const r=s.filter(o=>o.date&&i.isSameDay(new Date(o.date),n));return e.jsx(ee,{day:n,tasks:r,onDropTask:l,onTaskClick:d,onAddClick:c,isLast:m===t.length-1,HOURS:a},n.toISOString())}),e.jsxs("div",{className:"absolute inset-0 pointer-events-none z-0",children:[e.jsx("div",{className:"h-10 border-b bg-transparent"})," ",a.map(n=>e.jsx("div",{className:"h-24 border-b border-dashed border-border w-full"},n))]})]})]})}function ee({day:t,tasks:s,onDropTask:l,onTaskClick:d,onAddClick:c,isLast:a,HOURS:n}){const[{isOver:m},r]=C.useDrop(()=>({accept:M.TASK,drop:o=>{l(o.id,t)},collect:o=>({isOver:!!o.isOver()})}),[t,l]);return e.jsxs("div",{ref:r,className:f.cn("flex-1 relative min-w-[150px]",!a&&"border-r",m&&"bg-accent/50"),children:[e.jsx("div",{className:"sticky top-0 z-20 bg-card border-b h-10 flex items-center justify-center shadow-sm",children:e.jsxs("div",{className:"text-xs font-bold text-muted-foreground",children:[i.format(t,"EEE")," ",e.jsx("span",{className:f.cn("ml-1",i.isToday(t)&&"text-primary"),children:i.format(t,"d")})]})}),n.map(o=>e.jsx("div",{className:"h-24 w-full absolute hover:bg-muted/50 transition-colors cursor-pointer z-10",style:{top:`${o*96+40}px`},onClick:x=>{x.stopPropagation();const p=new Date(t);p.setHours(o,0),c(p)}},o)),s.map(o=>{const x=o.date?new Date(o.date):new Date,p=o.endDate?new Date(o.endDate):i.addHours(x,1),N=i.getHours(x),g=i.getMinutes(x);let v=i.differenceInMinutes(p,x);v<30&&(v=30);const S=N*96+g/60*96+40,I=v/60*96;return e.jsx(z,{task:o,view:"week",mode:"execution",onClick:()=>d(o),style:{top:`${S}px`,height:`${I}px`,left:"4px",right:"4px",position:"absolute"}},o.id)})]})}function $({days:t,tasks:s,currentDate:l,onDropTask:d,onTaskClick:c,onAddClick:a,mode:n}){return e.jsx("div",{className:"grid grid-cols-7 auto-rows-fr min-h-[800px]",children:t.map(m=>{const r=s.filter(o=>o.date&&i.isSameDay(new Date(o.date),m));return e.jsx(se,{date:m,tasks:r,isCurrentMonth:i.isSameMonth(m,l),onDropTask:d,onTaskClick:c,onAddClick:a,mode:n},m.toISOString())})})}function se({date:t,tasks:s,isCurrentMonth:l,onDropTask:d,onTaskClick:c,onAddClick:a,mode:n}){const[{isOver:m},r]=C.useDrop(()=>({accept:M.TASK,drop:x=>d(x.id,t),collect:x=>({isOver:!!x.isOver()})}),[t,d]),o=i.isToday(t);return e.jsxs("div",{ref:r,className:f.cn("min-h-[120px] border-b border-r p-2 relative transition-colors group flex flex-col",!l&&"bg-muted/50 text-muted-foreground",m&&"bg-accent ring-2 ring-inset ring-ring",o&&"bg-accent/30"),children:[e.jsxs("div",{className:"flex justify-between items-start mb-2",children:[e.jsx("span",{className:f.cn("text-sm font-medium rounded-full w-7 h-7 flex items-center justify-center",o?"bg-primary text-primary-foreground":"text-foreground"),children:i.format(t,"d")}),e.jsx(j.Button,{variant:"ghost",size:"icon",className:"h-6 w-6 opacity-0 group-hover:opacity-100 transition-opacity",onClick:()=>a(t),"aria-label":`Agendar publicação em ${i.format(t,"d/MM")}`,children:e.jsx(h.Plus,{size:14})})]}),e.jsx("div",{className:"flex-1 flex flex-col gap-1",children:s.map(x=>e.jsx(z,{task:x,view:"month",mode:n,onClick:()=>c(x)},x.id))})]})}function L({isOpen:t,onClose:s,task:l,onSave:d,isNew:c=!1}){const[a,n]=w.useState(l||{});w.useMemo(()=>{n(l||{})},[l]);const m=()=>{d(a),s()};return e.jsx(D.Dialog,{open:t,onOpenChange:r=>!r&&s(),children:e.jsxs(D.DialogContent,{className:"sm:max-w-[600px]",children:[e.jsxs(D.DialogHeader,{children:[e.jsx(D.DialogTitle,{children:c?"Create New Task":"Edit Task"}),e.jsx(D.DialogDescription,{children:c?"Enter the details for the new task below.":"Modify the details of the selected task."})]}),e.jsxs("div",{className:"grid gap-6 py-4",children:[e.jsxs("div",{className:"grid grid-cols-4 items-center gap-4",children:[e.jsx("label",{htmlFor:"title",className:"text-right text-sm font-medium",children:"Title"}),e.jsx("input",{id:"title",className:"col-span-3 flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",value:a.title||"",onChange:r=>n({...a,title:r.target.value}),placeholder:"e.g. New Feature Announcement"})]}),e.jsxs("div",{className:"grid grid-cols-4 items-center gap-4",children:[e.jsx("label",{className:"text-right text-sm font-medium",children:"Time"}),e.jsxs("div",{className:"col-span-3 flex gap-2 items-center",children:[e.jsx("input",{type:"date",className:"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm",value:a.date instanceof Date?i.format(a.date,"yyyy-MM-dd"):typeof a.date=="string"?a.date.split("T")[0]:"",onChange:r=>{const o=r.target.value,x=a.date instanceof Date?a.date:new Date,p=new Date(`${o}T${i.format(x,"HH:mm")}`);n({...a,date:p})}}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"at"}),e.jsx("input",{type:"time",className:"w-32 flex h-9 rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm",value:a.date instanceof Date?i.format(a.date,"HH:mm"):"09:00",onChange:r=>{const o=r.target.value,x=a.date instanceof Date?i.format(a.date,"yyyy-MM-dd"):i.format(new Date,"yyyy-MM-dd");n({...a,date:new Date(`${x}T${o}`)})}})]})]}),e.jsxs("div",{className:"grid grid-cols-4 items-center gap-4",children:[e.jsx("label",{htmlFor:"channel",className:"text-right text-sm font-medium",children:"Channel / Category"}),e.jsx("select",{id:"channel",className:"col-span-3 flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm",value:a.channel||"instagram",onChange:r=>n({...a,channel:r.target.value}),children:Object.keys(F).map(r=>e.jsx("option",{value:r,children:r.charAt(0).toUpperCase()+r.slice(1)},r))})]}),e.jsxs("div",{className:"grid grid-cols-4 items-center gap-4",children:[e.jsx("label",{htmlFor:"status",className:"text-right text-sm font-medium",children:"Status"}),e.jsx("select",{id:"status",className:"col-span-3 flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm",value:a.status||"idea",onChange:r=>n({...a,status:r.target.value}),children:Object.keys(E).map(r=>e.jsx("option",{value:r,children:r.charAt(0).toUpperCase()+r.slice(1)},r))})]}),e.jsxs("div",{className:"grid grid-cols-4 items-start gap-4",children:[e.jsx("label",{htmlFor:"description",className:"text-right text-sm font-medium pt-2",children:"Description"}),e.jsx("textarea",{id:"description",className:"col-span-3 flex min-h-[80px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",value:a.description||"",onChange:r=>n({...a,description:r.target.value}),placeholder:"Details about this post..."})]})]}),e.jsxs(D.DialogFooter,{children:[e.jsx(j.Button,{variant:"outline",onClick:s,children:"Cancel"}),e.jsx(j.Button,{onClick:m,children:"Save Changes"})]})]})})}function U({tasks:t,onTaskUpdate:s,onTaskCreate:l,defaultView:d="month"}){const[c,a]=w.useState(new Date),[n,m]=w.useState(d),[r,o]=w.useState(!0),[x,p]=w.useState(!1),[N,g]=w.useState(null),[v,S]=w.useState(!1),I=w.useMemo(()=>{let u,b;if(n==="month"){const O=i.startOfMonth(c),y=i.endOfMonth(O);u=i.startOfWeek(O),b=i.endOfWeek(y)}else n==="week"?(u=i.startOfWeek(c),b=i.endOfWeek(c)):(u=c,b=c);return i.eachDayOfInterval({start:u,end:b})},[c,n]),W=t.filter(u=>!u.date),Y=t.filter(u=>u.date);return{currentDate:c,view:n,setView:m,isSidebarOpen:r,setIsSidebarOpen:o,isModalOpen:x,setIsModalOpen:p,editingTask:N,isNewTask:v,calendarDays:I,unplannedTasks:W,scheduledTasks:Y,handlePrev:()=>{a(n==="month"?i.subMonths(c,1):n==="week"?i.addDays(c,-7):i.addDays(c,-1))},handleNext:()=>{a(n==="month"?i.addMonths(c,1):n==="week"?i.addDays(c,7):i.addDays(c,1))},handleToday:()=>a(new Date),handleDropTask:(u,b,O)=>{const y=t.find(T=>T.id===u);if(y){let T=new Date(b);if(n==="month"||O==="editorial")if(y.date){const P=new Date(y.date);T.setHours(P.getHours(),P.getMinutes())}else T.setHours(9,0);const _={...y,date:T};s(_)}},handleTaskClick:u=>{g(u),S(!1),p(!0)},handleAddClick:u=>{const b=u||new Date;i.getHours(b)===0&&i.getMinutes(b)===0&&b.setHours(9,0),g({date:b,status:"idea",channel:"instagram"}),S(!0),p(!0)},handleModalSave:u=>{v?l&&l(u):u.id&&s(u),p(!1)}}}function G({isOpen:t,setIsOpen:s,tasks:l,onAddClick:d,onTaskClick:c,mode:a}){return t?e.jsxs("div",{className:"w-72 border-r bg-muted/50 flex flex-col transition-all duration-300 flex-shrink-0",children:[e.jsxs("div",{className:"p-4 border-b bg-card flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h3",{className:"font-semibold text-sm text-foreground",children:"Backlog"}),e.jsx(H.Badge,{variant:"secondary",className:"bg-muted text-xs",children:l.length})]}),e.jsx(j.Button,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:()=>s(!1),"aria-label":"Recolher backlog",children:e.jsx(h.PanelLeftClose,{size:16})})]}),e.jsx("div",{className:"px-4 pt-3 bg-card pb-3 border-b space-y-2",children:e.jsxs(j.Button,{onClick:d,variant:"outline",size:"sm",className:"w-full justify-start pl-2",children:[e.jsx(h.Plus,{size:12,className:"mr-1.5"})," New Task"]})}),e.jsx(J.ScrollArea,{className:"flex-1 p-3",children:e.jsx("div",{className:"space-y-2",children:l.length===0?e.jsx("div",{className:"text-center py-10 px-4 border-2 border-dashed border-border rounded-lg",children:e.jsx("p",{className:"text-xs text-foreground/70",children:"Nenhum item sem agenda"})}):l.map(n=>e.jsx(z,{task:n,view:"backlog",mode:a,onClick:()=>c(n)},n.id))})})]}):e.jsxs("div",{className:"border-r bg-card flex flex-col items-center py-4 w-12 flex-shrink-0 cursor-pointer hover:bg-muted transition-colors",onClick:()=>s(!0),children:[e.jsx(h.PanelLeftOpen,{className:"text-muted-foreground mb-4",size:20}),e.jsx("div",{className:"flex-1 flex items-center justify-center min-h-0",children:e.jsx("div",{className:"whitespace-nowrap text-xs font-medium text-muted-foreground -rotate-90 transform",children:"BACKLOG"})}),e.jsx(H.Badge,{className:"mt-2 h-5 w-5 p-0 flex items-center justify-center rounded-full bg-primary text-[10px]",children:l.length})]})}function K({title:t,onPrev:s,onNext:l,onToday:d,onAdd:c,view:a,setView:n}){return e.jsxs("div",{className:"flex flex-col xl:flex-row items-center justify-between p-4 border-b gap-4 flex-shrink-0 bg-card",children:[e.jsxs("div",{className:"flex items-center gap-4 w-full xl:w-auto justify-between xl:justify-start",children:[e.jsxs("div",{className:"flex items-center border rounded-md bg-card shadow-sm",children:[e.jsx(j.Button,{variant:"ghost",size:"icon",onClick:s,className:"h-8 w-8 rounded-r-none","aria-label":"Anterior",children:e.jsx(h.ChevronLeft,{className:"h-4 w-4"})}),e.jsx(j.Button,{variant:"ghost",onClick:d,className:"h-8 px-3 rounded-none border-x text-sm font-medium hover:bg-muted",children:"Hoje"}),e.jsx(j.Button,{variant:"ghost",size:"icon",onClick:l,className:"h-8 w-8 rounded-l-none","aria-label":"Próximo",children:e.jsx(h.ChevronRight,{className:"h-4 w-4"})})]}),e.jsx("h2",{className:"text-lg font-bold text-foreground whitespace-nowrap",children:t})]}),e.jsxs("div",{className:"flex items-center gap-3 w-full xl:w-auto overflow-x-auto pb-1 xl:pb-0 justify-end",children:[e.jsxs(A.ToggleGroup,{type:"single",value:a,onValueChange:m=>m&&n(m),className:"flex-shrink-0","aria-label":"Visualização do calendário",children:[e.jsx(A.ToggleGroupItem,{value:"month",className:"text-xs",children:"Mês"}),e.jsx(A.ToggleGroupItem,{value:"week",className:"text-xs",children:"Semana"}),e.jsx(A.ToggleGroupItem,{value:"day",className:"text-xs",children:"Dia"})]}),e.jsxs(j.Button,{variant:"default",className:"h-9 px-4 flex-shrink-0",onClick:c,children:[e.jsx(h.Plus,{className:"mr-2 h-4 w-4"})," Criar"]})]})]})}function R({days:t}){return e.jsx("div",{className:"grid grid-cols-7 border-b bg-muted/50 flex-shrink-0 divide-x",children:t.slice(0,7).map((s,l)=>e.jsx("div",{className:"py-2 text-center group",children:e.jsx("div",{className:f.cn("text-xs font-semibold uppercase tracking-wider",i.isToday(s)?"text-primary":"text-foreground/70"),children:i.format(s,"EEE")})},l))})}function te(t){const s=U({...t,defaultView:"month"});return e.jsx(C.DndProvider,{backend:V.HTML5Backend,children:e.jsxs("div",{className:f.cn("flex h-[calc(100vh-100px)] bg-background border rounded-lg overflow-hidden shadow-sm",t.className),children:[e.jsx(G,{isOpen:s.isSidebarOpen,setIsOpen:s.setIsSidebarOpen,tasks:s.unplannedTasks,onAddClick:()=>s.handleAddClick(),onTaskClick:s.handleTaskClick,mode:"editorial"}),e.jsxs("div",{className:"flex-1 flex flex-col min-w-0 bg-card",children:[e.jsx(K,{title:s.view==="day"?i.format(s.currentDate,"MMM d, yyyy"):i.format(s.currentDate,"MMMM yyyy"),onPrev:s.handlePrev,onNext:s.handleNext,onToday:s.handleToday,onAdd:()=>s.handleAddClick(s.currentDate),view:s.view,setView:s.setView,mode:"editorial"}),s.view==="month"&&e.jsx(R,{days:s.calendarDays}),e.jsx("div",{className:"flex-1 overflow-hidden flex flex-col relative",children:s.view==="month"?e.jsx($,{days:s.calendarDays,tasks:s.scheduledTasks,currentDate:s.currentDate,onDropTask:(l,d)=>s.handleDropTask(l,d,"editorial"),onTaskClick:s.handleTaskClick,onAddClick:s.handleAddClick,mode:"editorial"}):e.jsx(Q,{days:s.calendarDays,tasks:s.scheduledTasks,onDropTask:(l,d)=>s.handleDropTask(l,d,"editorial"),onTaskClick:s.handleTaskClick,onAddClick:s.handleAddClick,view:s.view})})]}),s.isModalOpen&&e.jsx(L,{isOpen:s.isModalOpen,onClose:()=>s.setIsModalOpen(!1),task:s.editingTask||{},onSave:s.handleModalSave,isNew:s.isNewTask})]})})}function ae(t){const s=U({...t,defaultView:"week"});return e.jsx(C.DndProvider,{backend:V.HTML5Backend,children:e.jsxs("div",{className:f.cn("flex h-[calc(100vh-100px)] bg-background border rounded-lg overflow-hidden shadow-sm",t.className),children:[e.jsx(G,{isOpen:s.isSidebarOpen,setIsOpen:s.setIsSidebarOpen,tasks:s.unplannedTasks,onAddClick:()=>s.handleAddClick(),onTaskClick:s.handleTaskClick,mode:"execution"}),e.jsxs("div",{className:"flex-1 flex flex-col min-w-0 bg-card",children:[e.jsx(K,{title:s.view==="day"?i.format(s.currentDate,"MMM d, yyyy"):i.format(s.currentDate,"MMMM yyyy"),onPrev:s.handlePrev,onNext:s.handleNext,onToday:s.handleToday,onAdd:()=>s.handleAddClick(s.currentDate),view:s.view,setView:s.setView,mode:"execution"}),s.view==="month"&&e.jsx(R,{days:s.calendarDays}),e.jsx("div",{className:"flex-1 overflow-hidden flex flex-col relative",children:s.view==="month"?e.jsx($,{days:s.calendarDays,tasks:s.scheduledTasks,currentDate:s.currentDate,onDropTask:(l,d)=>s.handleDropTask(l,d,"execution"),onTaskClick:s.handleTaskClick,onAddClick:s.handleAddClick,mode:"execution"}):e.jsx(Z,{days:s.calendarDays,tasks:s.scheduledTasks,onDropTask:(l,d)=>s.handleDropTask(l,d,"execution"),onTaskClick:s.handleTaskClick,onAddClick:s.handleAddClick})})]}),s.isModalOpen&&e.jsx(L,{isOpen:s.isModalOpen,onClose:()=>s.setIsModalOpen(!1),task:s.editingTask||{},onSave:s.handleModalSave,isNew:s.isNewTask})]})})}exports.EditorialCalendar=te;exports.TaskCalendar=ae;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),w=require("react"),i=require("date-fns"),h=require("lucide-react"),f=require("../utils.cjs"),j=require("../primitives/button.cjs"),k=require("../primitives/avatar.cjs"),H=require("../primitives/badge.cjs"),D=require("../overlays/dialog.cjs"),A=require("../forms/toggle-group.cjs"),J=require("../layout/scroll-area.cjs"),C=require("react-dnd"),V=require("react-dnd-html5-backend"),M={TASK:"task"},_={instagram:h.Instagram,linkedin:h.Linkedin,facebook:h.Facebook,twitter:h.Twitter,youtube:h.Youtube,blog:h.Calendar,other:h.Calendar},P={idea:"bg-muted text-muted-foreground border-border",planned:"bg-info/10 text-info-emphasis border-info/20","in-progress":"bg-warning/10 text-warning-emphasis border-warning/20",approval:"bg-secondary text-secondary-foreground border-border",scheduled:"bg-success/10 text-success-emphasis border-success/20",published:"bg-foreground text-background border-foreground"},B=["bg-chart-2/15 border-chart-2/30 text-[color-mix(in_oklab,var(--chart-2)_45%,var(--foreground))]","bg-chart-3/15 border-chart-3/30 text-[color-mix(in_oklab,var(--chart-3)_45%,var(--foreground))]","bg-chart-1/15 border-chart-1/30 text-[color-mix(in_oklab,var(--chart-1)_45%,var(--foreground))]","bg-chart-4/15 border-chart-4/30 text-[color-mix(in_oklab,var(--chart-4)_45%,var(--foreground))]","bg-chart-5/15 border-chart-5/30 text-[color-mix(in_oklab,var(--chart-5)_45%,var(--foreground))]","bg-chart-8/15 border-chart-8/30 text-[color-mix(in_oklab,var(--chart-8)_45%,var(--foreground))]"],q=t=>{const s=t.split("").reduce((l,o)=>l+o.charCodeAt(0),0);return B[s%B.length]};function z({task:t,view:s="month",mode:l="editorial",onClick:o,style:c}){var N;const[{isDragging:r},n]=C.useDrag(()=>({type:M.TASK,item:{id:t.id,type:M.TASK},collect:p=>({isDragging:!!p.isDragging()})}),[t.id]),m=t.channel?_[t.channel]:h.Calendar,a=t.date?new Date(t.date):null,d=t.endDate?new Date(t.endDate):a?i.addHours(a,1):null,u=a?i.format(a,"HH:mm"):null,g=a&&d?`${i.format(a,"HH:mm")} - ${i.format(d,"HH:mm")}`:u;return l==="editorial"&&(s==="week"||s==="day")?e.jsxs("div",{ref:n,onClick:o,className:f.cn("relative group cursor-pointer bg-card border rounded-md shadow-sm hover:shadow-md transition-all mb-3 overflow-hidden",r?"opacity-50":"opacity-100",t.status==="published"?"border-l-2 border-l-foreground":"border-l-2 border-l-primary"),children:[e.jsxs("div",{className:"flex items-center justify-between px-3 py-2 border-b bg-muted/50",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(m,{size:14,className:"text-muted-foreground"}),u&&e.jsx("span",{className:"text-xs font-medium text-muted-foreground",children:u})]}),e.jsx("div",{className:"opacity-0 group-hover:opacity-100 text-muted-foreground cursor-grab",children:e.jsx(h.GripVertical,{size:14})})]}),t.imageUrl&&e.jsx("div",{className:"w-full aspect-video bg-muted relative border-b",children:e.jsx("img",{src:t.imageUrl,alt:"",className:"w-full h-full object-cover"})}),e.jsxs("div",{className:"p-3",children:[e.jsx("h4",{className:"text-sm font-medium text-foreground line-clamp-2 mb-2 leading-snug",children:t.title}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(H.Badge,{variant:"outline",className:f.cn("px-1.5 py-0 text-[10px] h-5 font-normal uppercase tracking-wide",P[t.status]),children:t.status}),t.assignees&&t.assignees.length>0&&e.jsx("div",{className:"flex -space-x-2",children:t.assignees.slice(0,2).map((p,v)=>e.jsxs(k.Avatar,{className:"w-5 h-5 border border-background",children:[e.jsx(k.AvatarImage,{src:p.avatar}),e.jsx(k.AvatarFallback,{className:"text-[8px]",children:p.name[0]})]},v))})]})]})]}):l==="editorial"&&s==="month"?e.jsxs("div",{ref:n,onClick:o,className:f.cn("relative group cursor-pointer bg-card border rounded-md shadow-sm hover:shadow-md transition-all mb-1 overflow-hidden flex items-center gap-2 p-1.5",r?"opacity-50":"opacity-100",t.status==="published"?"border-l-2 border-l-foreground":"border-l-2 border-l-primary"),children:[t.imageUrl&&e.jsx("div",{className:"w-8 h-8 flex-shrink-0 bg-muted rounded overflow-hidden",children:e.jsx("img",{src:t.imageUrl,alt:"",className:"w-full h-full object-cover"})}),e.jsx("div",{className:"min-w-0 flex-1",children:e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(m,{size:12,className:"text-muted-foreground"}),e.jsx("span",{className:"truncate font-medium text-xs",children:t.title})]})})]}):l==="execution"&&(s==="week"||s==="day")?e.jsxs("div",{ref:n,onClick:o,style:c,className:f.cn("absolute z-10 rounded-md border shadow-sm p-1.5 text-xs flex flex-col overflow-hidden hover:overflow-visible hover:h-auto! hover:min-h-[min-content] hover:z-50 transition-all cursor-pointer group",r?"opacity-50":"opacity-100",t.color||q(t.id)),children:[e.jsxs("div",{className:"flex items-center gap-1 mb-0.5 font-semibold text-[10px] leading-none",children:[e.jsx(h.Clock,{size:10}),e.jsx("span",{className:"truncate",children:g})]}),e.jsx("div",{className:"font-bold leading-tight mb-1 line-clamp-2 text-[11px]",children:t.title}),e.jsxs("div",{className:"mt-auto flex items-center justify-between pt-1",children:[e.jsx("div",{className:"flex -space-x-1.5",children:(N=t.assignees)==null?void 0:N.map((p,v)=>e.jsxs(k.Avatar,{className:"w-4 h-4 border border-background",children:[e.jsx(k.AvatarImage,{src:p.avatar}),e.jsx(k.AvatarFallback,{className:"text-[8px]",children:p.name[0]})]},v))}),t.status!=="published"&&e.jsx("div",{className:f.cn("w-2 h-2 rounded-full",P[t.status].split(" ")[1].replace("text-","bg-"))})]})]}):l==="execution"&&s==="month"?e.jsxs("div",{ref:n,onClick:o,className:f.cn("relative group cursor-pointer rounded px-2 py-1 mb-1 text-xs truncate font-medium transition-all",r?"opacity-50":"opacity-100",t.color||q(t.id).replace("bg-","bg-opacity-20 bg-")),children:[u," ",t.title]}):e.jsxs("div",{ref:n,onClick:o,className:f.cn("relative group cursor-pointer bg-card border rounded-md shadow-sm hover:shadow-md transition-all mb-2 p-2 flex items-start gap-3",r?"opacity-50":"opacity-100",l==="editorial"&&(t.status==="published"?"border-l-2 border-l-foreground":"border-l-2 border-l-primary")),children:[l==="editorial"&&t.imageUrl&&e.jsx("div",{className:"w-10 h-10 flex-shrink-0 bg-muted rounded overflow-hidden",children:e.jsx("img",{src:t.imageUrl,alt:"",className:"w-full h-full object-cover"})}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsxs("div",{className:"flex items-center gap-1.5 mb-1",children:[l==="editorial"&&e.jsx(m,{size:12,className:"text-muted-foreground"}),e.jsx("span",{className:"truncate font-medium text-sm",children:t.title})]}),e.jsx(H.Badge,{variant:"secondary",className:"text-[10px] h-4 px-1 py-0",children:t.status})]})]})}function Q({days:t,tasks:s,onDropTask:l,onTaskClick:o,onAddClick:c,view:r}){return e.jsx("div",{className:f.cn("grid h-full min-h-[calc(100vh-200px)] bg-muted/30",r==="week"?"grid-cols-7 divide-x":"grid-cols-1 border-x"),children:t.map(n=>{const m=s.filter(a=>a.date&&i.isSameDay(new Date(a.date),n)).sort((a,d)=>a.date&&d.date?new Date(a.date).getTime()-new Date(d.date).getTime():0);return e.jsx(X,{day:n,tasks:m,onDropTask:l,onTaskClick:o,onAddClick:c,isToday:i.isToday(n)},n.toISOString())})})}function X({day:t,tasks:s,onDropTask:l,onTaskClick:o,onAddClick:c,isToday:r}){const[{isOver:n},m]=C.useDrop(()=>({accept:M.TASK,drop:a=>l(a.id,t),collect:a=>({isOver:!!a.isOver()})}),[t,l]);return e.jsxs("div",{ref:m,className:f.cn("flex flex-col h-full min-h-0 transition-colors",n&&"bg-accent ring-inset ring-2 ring-ring"),children:[e.jsxs("div",{className:f.cn("p-2 text-center border-b bg-card sticky top-0 z-10",r&&"bg-accent/50"),children:[e.jsx("div",{className:"text-xs font-semibold uppercase text-muted-foreground mb-1",children:i.format(t,"EEE")}),e.jsx("div",{className:f.cn("w-8 h-8 rounded-full flex items-center justify-center mx-auto text-sm font-medium",r?"bg-primary text-primary-foreground":"text-foreground bg-muted"),children:i.format(t,"d")})]}),e.jsxs("div",{className:"flex-1 p-2 space-y-3 overflow-y-auto focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset",tabIndex:0,role:"group","aria-label":`Publicações de ${i.format(t,"PP")}`,children:[e.jsxs(j.Button,{variant:"outline",size:"sm",className:"w-full mb-2 justify-center px-1",onClick:()=>c(t),children:[e.jsx(h.Plus,{size:12,className:"flex-shrink-0"}),e.jsx("span",{className:"truncate ml-1.5 hidden xl:inline",children:"Add Post"}),e.jsx("span",{className:"truncate ml-1.5 inline xl:hidden",children:"Add"})]}),s.map(a=>e.jsx(z,{task:a,view:"week",mode:"editorial",onClick:()=>o(a)},a.id))]})]})}function Z({days:t,tasks:s,onDropTask:l,onTaskClick:o,onAddClick:c}){const r=Array.from({length:24},(n,m)=>m);return e.jsxs("div",{className:"flex h-full relative overflow-y-auto bg-card select-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset",tabIndex:0,role:"group","aria-label":"Linha do tempo de execução",children:[e.jsxs("div",{className:"w-14 flex-shrink-0 border-r bg-card sticky left-0 z-30",children:[e.jsx("div",{className:"h-10 border-b bg-card sticky top-0 z-40 flex-shrink-0"})," ",r.map(n=>e.jsx("div",{className:"h-24 border-b text-right pr-2 pt-2 text-xs text-muted-foreground font-medium relative",children:e.jsx("span",{className:"-top-2.5 relative",children:i.format(i.setHours(new Date,n),"ha")})},n))]}),e.jsxs("div",{className:"flex flex-1 min-w-0 relative",children:[t.map((n,m)=>{const a=s.filter(d=>d.date&&i.isSameDay(new Date(d.date),n));return e.jsx(ee,{day:n,tasks:a,onDropTask:l,onTaskClick:o,onAddClick:c,isLast:m===t.length-1,HOURS:r},n.toISOString())}),e.jsxs("div",{className:"absolute inset-0 pointer-events-none z-0",children:[e.jsx("div",{className:"h-10 border-b bg-transparent"})," ",r.map(n=>e.jsx("div",{className:"h-24 border-b border-dashed border-border w-full"},n))]})]})]})}function ee({day:t,tasks:s,onDropTask:l,onTaskClick:o,onAddClick:c,isLast:r,HOURS:n}){const[{isOver:m},a]=C.useDrop(()=>({accept:M.TASK,drop:d=>{l(d.id,t)},collect:d=>({isOver:!!d.isOver()})}),[t,l]);return e.jsxs("div",{ref:a,className:f.cn("flex-1 relative min-w-[150px]",!r&&"border-r",m&&"bg-accent/50"),children:[e.jsx("div",{className:"sticky top-0 z-20 bg-card border-b h-10 flex items-center justify-center shadow-sm",children:e.jsxs("div",{className:"text-xs font-bold text-muted-foreground",children:[i.format(t,"EEE")," ",e.jsx("span",{className:f.cn("ml-1",i.isToday(t)&&"text-primary"),children:i.format(t,"d")})]})}),n.map(d=>e.jsx("div",{className:"h-24 w-full absolute hover:bg-muted/50 transition-colors cursor-pointer z-10",style:{top:`${d*96+40}px`},onClick:u=>{u.stopPropagation();const g=new Date(t);g.setHours(d,0),c(g)}},d)),s.map(d=>{const u=d.date?new Date(d.date):new Date,g=d.endDate?new Date(d.endDate):i.addHours(u,1),N=i.getHours(u),p=i.getMinutes(u);let v=i.differenceInMinutes(g,u);v<30&&(v=30);const S=N*96+p/60*96+40,I=v/60*96;return e.jsx(z,{task:d,view:"week",mode:"execution",onClick:()=>o(d),style:{top:`${S}px`,height:`${I}px`,left:"4px",right:"4px",position:"absolute"}},d.id)})]})}function $({days:t,tasks:s,currentDate:l,onDropTask:o,onTaskClick:c,onAddClick:r,mode:n}){return e.jsx("div",{className:"grid grid-cols-7 auto-rows-fr min-h-[800px]",children:t.map(m=>{const a=s.filter(d=>d.date&&i.isSameDay(new Date(d.date),m));return e.jsx(se,{date:m,tasks:a,isCurrentMonth:i.isSameMonth(m,l),onDropTask:o,onTaskClick:c,onAddClick:r,mode:n},m.toISOString())})})}function se({date:t,tasks:s,isCurrentMonth:l,onDropTask:o,onTaskClick:c,onAddClick:r,mode:n}){const[{isOver:m},a]=C.useDrop(()=>({accept:M.TASK,drop:u=>o(u.id,t),collect:u=>({isOver:!!u.isOver()})}),[t,o]),d=i.isToday(t);return e.jsxs("div",{ref:a,className:f.cn("min-h-[120px] border-b border-r p-2 relative transition-colors group flex flex-col",!l&&"bg-muted/50 text-muted-foreground",m&&"bg-accent ring-2 ring-inset ring-ring",d&&"bg-accent/30"),children:[e.jsxs("div",{className:"flex justify-between items-start mb-2",children:[e.jsx("span",{className:f.cn("text-sm font-medium rounded-full w-7 h-7 flex items-center justify-center",d?"bg-primary text-primary-foreground":"text-foreground"),children:i.format(t,"d")}),e.jsx(j.Button,{variant:"ghost",size:"icon",className:"h-6 w-6 relative before:absolute before:-inset-1.5 before:content-[''] opacity-100 md:opacity-0 md:group-hover:opacity-100 md:group-focus-within:opacity-100 transition-opacity",onClick:()=>r(t),"aria-label":`Agendar publicação em ${i.format(t,"d/MM")}`,children:e.jsx(h.Plus,{size:14})})]}),e.jsx("div",{className:"flex-1 flex flex-col gap-1",children:s.map(u=>e.jsx(z,{task:u,view:"month",mode:n,onClick:()=>c(u)},u.id))})]})}function F({isOpen:t,onClose:s,task:l,onSave:o,isNew:c=!1}){const[r,n]=w.useState(l||{});w.useMemo(()=>{n(l||{})},[l]);const m=()=>{o(r),s()};return e.jsx(D.Dialog,{open:t,onOpenChange:a=>!a&&s(),children:e.jsxs(D.DialogContent,{className:"sm:max-w-[600px]",children:[e.jsxs(D.DialogHeader,{children:[e.jsx(D.DialogTitle,{children:c?"Create New Task":"Edit Task"}),e.jsx(D.DialogDescription,{children:c?"Enter the details for the new task below.":"Modify the details of the selected task."})]}),e.jsxs("div",{className:"grid gap-6 py-4",children:[e.jsxs("div",{className:"grid grid-cols-4 items-center gap-4",children:[e.jsx("label",{htmlFor:"title",className:"text-right text-sm font-medium",children:"Title"}),e.jsx("input",{id:"title",className:"col-span-3 flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",value:r.title||"",onChange:a=>n({...r,title:a.target.value}),placeholder:"e.g. New Feature Announcement"})]}),e.jsxs("div",{className:"grid grid-cols-4 items-center gap-4",children:[e.jsx("label",{className:"text-right text-sm font-medium",children:"Time"}),e.jsxs("div",{className:"col-span-3 flex gap-2 items-center",children:[e.jsx("input",{type:"date",className:"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm",value:r.date instanceof Date?i.format(r.date,"yyyy-MM-dd"):typeof r.date=="string"?r.date.split("T")[0]:"",onChange:a=>{const d=a.target.value,u=r.date instanceof Date?r.date:new Date,g=new Date(`${d}T${i.format(u,"HH:mm")}`);n({...r,date:g})}}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"at"}),e.jsx("input",{type:"time",className:"w-32 flex h-9 rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm",value:r.date instanceof Date?i.format(r.date,"HH:mm"):"09:00",onChange:a=>{const d=a.target.value,u=r.date instanceof Date?i.format(r.date,"yyyy-MM-dd"):i.format(new Date,"yyyy-MM-dd");n({...r,date:new Date(`${u}T${d}`)})}})]})]}),e.jsxs("div",{className:"grid grid-cols-4 items-center gap-4",children:[e.jsx("label",{htmlFor:"channel",className:"text-right text-sm font-medium",children:"Channel / Category"}),e.jsx("select",{id:"channel",className:"col-span-3 flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm",value:r.channel||"instagram",onChange:a=>n({...r,channel:a.target.value}),children:Object.keys(_).map(a=>e.jsx("option",{value:a,children:a.charAt(0).toUpperCase()+a.slice(1)},a))})]}),e.jsxs("div",{className:"grid grid-cols-4 items-center gap-4",children:[e.jsx("label",{htmlFor:"status",className:"text-right text-sm font-medium",children:"Status"}),e.jsx("select",{id:"status",className:"col-span-3 flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm",value:r.status||"idea",onChange:a=>n({...r,status:a.target.value}),children:Object.keys(P).map(a=>e.jsx("option",{value:a,children:a.charAt(0).toUpperCase()+a.slice(1)},a))})]}),e.jsxs("div",{className:"grid grid-cols-4 items-start gap-4",children:[e.jsx("label",{htmlFor:"description",className:"text-right text-sm font-medium pt-2",children:"Description"}),e.jsx("textarea",{id:"description",className:"col-span-3 flex min-h-[80px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",value:r.description||"",onChange:a=>n({...r,description:a.target.value}),placeholder:"Details about this post..."})]})]}),e.jsxs(D.DialogFooter,{children:[e.jsx(j.Button,{variant:"outline",onClick:s,children:"Cancel"}),e.jsx(j.Button,{onClick:m,children:"Save Changes"})]})]})})}function L({tasks:t,onTaskUpdate:s,onTaskCreate:l,defaultView:o="month"}){const[c,r]=w.useState(new Date),[n,m]=w.useState(o),[a,d]=w.useState(!0),[u,g]=w.useState(!1),[N,p]=w.useState(null),[v,S]=w.useState(!1),I=w.useMemo(()=>{let x,b;if(n==="month"){const O=i.startOfMonth(c),y=i.endOfMonth(O);x=i.startOfWeek(O),b=i.endOfWeek(y)}else n==="week"?(x=i.startOfWeek(c),b=i.endOfWeek(c)):(x=c,b=c);return i.eachDayOfInterval({start:x,end:b})},[c,n]),R=t.filter(x=>!x.date),W=t.filter(x=>x.date);return{currentDate:c,view:n,setView:m,isSidebarOpen:a,setIsSidebarOpen:d,isModalOpen:u,setIsModalOpen:g,editingTask:N,isNewTask:v,calendarDays:I,unplannedTasks:R,scheduledTasks:W,handlePrev:()=>{r(n==="month"?i.subMonths(c,1):n==="week"?i.addDays(c,-7):i.addDays(c,-1))},handleNext:()=>{r(n==="month"?i.addMonths(c,1):n==="week"?i.addDays(c,7):i.addDays(c,1))},handleToday:()=>r(new Date),handleDropTask:(x,b,O)=>{const y=t.find(T=>T.id===x);if(y){let T=new Date(b);if(n==="month"||O==="editorial")if(y.date){const E=new Date(y.date);T.setHours(E.getHours(),E.getMinutes())}else T.setHours(9,0);const Y={...y,date:T};s(Y)}},handleTaskClick:x=>{p(x),S(!1),g(!0)},handleAddClick:x=>{const b=x||new Date;i.getHours(b)===0&&i.getMinutes(b)===0&&b.setHours(9,0),p({date:b,status:"idea",channel:"instagram"}),S(!0),g(!0)},handleModalSave:x=>{v?l&&l(x):x.id&&s(x),g(!1)}}}function U({isOpen:t,setIsOpen:s,tasks:l,onAddClick:o,onTaskClick:c,mode:r}){return t?e.jsxs("div",{className:"w-72 border-r bg-muted/50 flex flex-col transition-all duration-300 flex-shrink-0",children:[e.jsxs("div",{className:"p-4 border-b bg-card flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h3",{className:"font-semibold text-sm text-foreground",children:"Backlog"}),e.jsx(H.Badge,{variant:"secondary",className:"bg-muted text-foreground text-xs",children:l.length})]}),e.jsx(j.Button,{variant:"ghost",size:"icon",className:"h-6 w-6 relative before:absolute before:-inset-1.5 before:content-['']",onClick:()=>s(!1),"aria-label":"Recolher backlog",children:e.jsx(h.PanelLeftClose,{size:16})})]}),e.jsx("div",{className:"px-4 pt-3 bg-card pb-3 border-b space-y-2",children:e.jsxs(j.Button,{onClick:o,variant:"outline",size:"sm",className:"w-full justify-start pl-2",children:[e.jsx(h.Plus,{size:12,className:"mr-1.5"})," New Task"]})}),e.jsx(J.ScrollArea,{className:"flex-1 p-3",children:e.jsx("div",{className:"space-y-2",children:l.length===0?e.jsx("div",{className:"text-center py-10 px-4 border-2 border-dashed border-border rounded-lg",children:e.jsx("p",{className:"text-xs text-foreground/70",children:"Nenhum item sem agenda"})}):l.map(n=>e.jsx(z,{task:n,view:"backlog",mode:r,onClick:()=>c(n)},n.id))})})]}):e.jsxs("div",{className:"border-r bg-card flex flex-col items-center py-4 w-12 flex-shrink-0 cursor-pointer hover:bg-muted transition-colors",onClick:()=>s(!0),children:[e.jsx(h.PanelLeftOpen,{className:"text-muted-foreground mb-4",size:20}),e.jsx("div",{className:"flex-1 flex items-center justify-center min-h-0",children:e.jsx("div",{className:"whitespace-nowrap text-xs font-medium text-muted-foreground -rotate-90 transform",children:"BACKLOG"})}),e.jsx(H.Badge,{className:"mt-2 h-5 w-5 p-0 flex items-center justify-center rounded-full bg-primary text-[10px]",children:l.length})]})}function G({title:t,onPrev:s,onNext:l,onToday:o,onAdd:c,view:r,setView:n}){return e.jsxs("div",{className:"flex flex-col xl:flex-row items-center justify-between p-4 border-b gap-4 flex-shrink-0 bg-card",children:[e.jsxs("div",{className:"flex items-center gap-4 w-full xl:w-auto justify-between xl:justify-start",children:[e.jsxs("div",{className:"flex items-center border rounded-md bg-card shadow-sm",children:[e.jsx(j.Button,{variant:"ghost",size:"icon",onClick:s,className:"h-8 w-8 rounded-r-none","aria-label":"Anterior",children:e.jsx(h.ChevronLeft,{className:"h-4 w-4"})}),e.jsx(j.Button,{variant:"ghost",onClick:o,className:"h-8 px-3 rounded-none border-x text-sm font-medium hover:bg-muted",children:"Hoje"}),e.jsx(j.Button,{variant:"ghost",size:"icon",onClick:l,className:"h-8 w-8 rounded-l-none","aria-label":"Próximo",children:e.jsx(h.ChevronRight,{className:"h-4 w-4"})})]}),e.jsx("h2",{className:"text-lg font-bold text-foreground whitespace-nowrap",children:t})]}),e.jsxs("div",{className:"flex items-center gap-3 w-full xl:w-auto overflow-x-auto pb-1 xl:pb-0 justify-end",children:[e.jsxs(A.ToggleGroup,{type:"single",value:r,onValueChange:m=>m&&n(m),className:"flex-shrink-0","aria-label":"Visualização do calendário",children:[e.jsx(A.ToggleGroupItem,{value:"month",className:"text-xs",children:"Mês"}),e.jsx(A.ToggleGroupItem,{value:"week",className:"text-xs",children:"Semana"}),e.jsx(A.ToggleGroupItem,{value:"day",className:"text-xs",children:"Dia"})]}),e.jsxs(j.Button,{variant:"default",className:"h-9 px-4 flex-shrink-0",onClick:c,children:[e.jsx(h.Plus,{className:"mr-2 h-4 w-4"})," Criar"]})]})]})}function K({days:t}){return e.jsx("div",{className:"grid grid-cols-7 border-b bg-muted/50 flex-shrink-0 divide-x",children:t.slice(0,7).map((s,l)=>e.jsx("div",{className:"py-2 text-center group",children:e.jsx("div",{className:f.cn("text-xs font-semibold uppercase tracking-wider",i.isToday(s)?"text-primary":"text-foreground/70"),children:i.format(s,"EEE")})},l))})}function te(t){const s=L({...t,defaultView:"month"});return e.jsx(C.DndProvider,{backend:V.HTML5Backend,children:e.jsxs("div",{className:f.cn("flex h-[calc(100vh-100px)] bg-background border rounded-lg overflow-hidden shadow-sm",t.className),children:[e.jsx(U,{isOpen:s.isSidebarOpen,setIsOpen:s.setIsSidebarOpen,tasks:s.unplannedTasks,onAddClick:()=>s.handleAddClick(),onTaskClick:s.handleTaskClick,mode:"editorial"}),e.jsxs("div",{className:"flex-1 flex flex-col min-w-0 bg-card",children:[e.jsx(G,{title:s.view==="day"?i.format(s.currentDate,"MMM d, yyyy"):i.format(s.currentDate,"MMMM yyyy"),onPrev:s.handlePrev,onNext:s.handleNext,onToday:s.handleToday,onAdd:()=>s.handleAddClick(s.currentDate),view:s.view,setView:s.setView,mode:"editorial"}),s.view==="month"&&e.jsx(K,{days:s.calendarDays}),e.jsx("div",{className:"flex-1 overflow-hidden flex flex-col relative",children:s.view==="month"?e.jsx($,{days:s.calendarDays,tasks:s.scheduledTasks,currentDate:s.currentDate,onDropTask:(l,o)=>s.handleDropTask(l,o,"editorial"),onTaskClick:s.handleTaskClick,onAddClick:s.handleAddClick,mode:"editorial"}):e.jsx(Q,{days:s.calendarDays,tasks:s.scheduledTasks,onDropTask:(l,o)=>s.handleDropTask(l,o,"editorial"),onTaskClick:s.handleTaskClick,onAddClick:s.handleAddClick,view:s.view})})]}),s.isModalOpen&&e.jsx(F,{isOpen:s.isModalOpen,onClose:()=>s.setIsModalOpen(!1),task:s.editingTask||{},onSave:s.handleModalSave,isNew:s.isNewTask})]})})}function re(t){const s=L({...t,defaultView:"week"});return e.jsx(C.DndProvider,{backend:V.HTML5Backend,children:e.jsxs("div",{className:f.cn("flex h-[calc(100vh-100px)] bg-background border rounded-lg overflow-hidden shadow-sm",t.className),children:[e.jsx(U,{isOpen:s.isSidebarOpen,setIsOpen:s.setIsSidebarOpen,tasks:s.unplannedTasks,onAddClick:()=>s.handleAddClick(),onTaskClick:s.handleTaskClick,mode:"execution"}),e.jsxs("div",{className:"flex-1 flex flex-col min-w-0 bg-card",children:[e.jsx(G,{title:s.view==="day"?i.format(s.currentDate,"MMM d, yyyy"):i.format(s.currentDate,"MMMM yyyy"),onPrev:s.handlePrev,onNext:s.handleNext,onToday:s.handleToday,onAdd:()=>s.handleAddClick(s.currentDate),view:s.view,setView:s.setView,mode:"execution"}),s.view==="month"&&e.jsx(K,{days:s.calendarDays}),e.jsx("div",{className:"flex-1 overflow-hidden flex flex-col relative",children:s.view==="month"?e.jsx($,{days:s.calendarDays,tasks:s.scheduledTasks,currentDate:s.currentDate,onDropTask:(l,o)=>s.handleDropTask(l,o,"execution"),onTaskClick:s.handleTaskClick,onAddClick:s.handleAddClick,mode:"execution"}):e.jsx(Z,{days:s.calendarDays,tasks:s.scheduledTasks,onDropTask:(l,o)=>s.handleDropTask(l,o,"execution"),onTaskClick:s.handleTaskClick,onAddClick:s.handleAddClick})})]}),s.isModalOpen&&e.jsx(F,{isOpen:s.isModalOpen,onClose:()=>s.setIsModalOpen(!1),task:s.editingTask||{},onSave:s.handleModalSave,isNew:s.isNewTask})]})})}exports.EditorialCalendar=te;exports.TaskCalendar=re;
2
2
  //# sourceMappingURL=editorial-calendar.cjs.map