@etus/ui 0.4.0-beta.3 → 0.4.0-beta.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.
Files changed (170) hide show
  1. package/dist/chunk-2HM5Z2YP.js +834 -0
  2. package/dist/chunk-2HM5Z2YP.js.map +1 -0
  3. package/dist/{chunk-LMTNDUIP.js → chunk-2Y7PQ6ZL.js} +4 -4
  4. package/dist/{chunk-LMTNDUIP.js.map → chunk-2Y7PQ6ZL.js.map} +1 -1
  5. package/dist/{chunk-SAKW2OKH.js → chunk-32IJQOUV.js} +15 -26
  6. package/dist/chunk-32IJQOUV.js.map +1 -0
  7. package/dist/{chunk-CXHA5D3I.js → chunk-33JGPMUW.js} +4 -4
  8. package/dist/{chunk-CXHA5D3I.js.map → chunk-33JGPMUW.js.map} +1 -1
  9. package/dist/{chunk-JLVL76SW.js → chunk-36XTKR3B.js} +4 -4
  10. package/dist/{chunk-JLVL76SW.js.map → chunk-36XTKR3B.js.map} +1 -1
  11. package/dist/{chunk-CUWQUGGB.js → chunk-4GQN76L7.js} +3 -3
  12. package/dist/{chunk-CUWQUGGB.js.map → chunk-4GQN76L7.js.map} +1 -1
  13. package/dist/{chunk-7BAL24EU.js → chunk-5XQIH6WM.js} +4 -4
  14. package/dist/{chunk-7BAL24EU.js.map → chunk-5XQIH6WM.js.map} +1 -1
  15. package/dist/chunk-5ZWFIDO2.js +3 -0
  16. package/dist/{chunk-NNOGFX66.js.map → chunk-5ZWFIDO2.js.map} +1 -1
  17. package/dist/{chunk-43SINRHH.js → chunk-AUCDXPWH.js} +5 -5
  18. package/dist/{chunk-43SINRHH.js.map → chunk-AUCDXPWH.js.map} +1 -1
  19. package/dist/{chunk-4HRQX2IA.js → chunk-AWYOWR5N.js} +3 -3
  20. package/dist/{chunk-4HRQX2IA.js.map → chunk-AWYOWR5N.js.map} +1 -1
  21. package/dist/{chunk-YTGYSNFR.js → chunk-B4ETIQOO.js} +4 -4
  22. package/dist/{chunk-YTGYSNFR.js.map → chunk-B4ETIQOO.js.map} +1 -1
  23. package/dist/{chunk-D5DM6GZB.js → chunk-D6TH3EGA.js} +12 -12
  24. package/dist/chunk-D6TH3EGA.js.map +1 -0
  25. package/dist/{chunk-ZJVZ3LQS.js → chunk-DDM2I5C6.js} +3 -3
  26. package/dist/{chunk-ZJVZ3LQS.js.map → chunk-DDM2I5C6.js.map} +1 -1
  27. package/dist/{chunk-3JIXCWJO.js → chunk-DDR24GOP.js} +3 -3
  28. package/dist/{chunk-3JIXCWJO.js.map → chunk-DDR24GOP.js.map} +1 -1
  29. package/dist/{chunk-GBTVAO4V.js → chunk-EGYWK2XX.js} +3 -3
  30. package/dist/{chunk-GBTVAO4V.js.map → chunk-EGYWK2XX.js.map} +1 -1
  31. package/dist/{chunk-CCUCWL6M.js → chunk-HT5XM6XK.js} +12 -7
  32. package/dist/chunk-HT5XM6XK.js.map +1 -0
  33. package/dist/{chunk-KNH7JW6E.js → chunk-IBVCSZCH.js} +3 -3
  34. package/dist/{chunk-KNH7JW6E.js.map → chunk-IBVCSZCH.js.map} +1 -1
  35. package/dist/{chunk-GLEKBJLR.js → chunk-ILAV2AZ4.js} +3 -3
  36. package/dist/{chunk-GLEKBJLR.js.map → chunk-ILAV2AZ4.js.map} +1 -1
  37. package/dist/{chunk-MDQFZEIC.js → chunk-J62TFQHR.js} +6 -6
  38. package/dist/chunk-J62TFQHR.js.map +1 -0
  39. package/dist/{chunk-AWWBBMMY.js → chunk-JKYB5QAP.js} +5 -5
  40. package/dist/{chunk-AWWBBMMY.js.map → chunk-JKYB5QAP.js.map} +1 -1
  41. package/dist/{chunk-UKC3Q6OA.js → chunk-JMZ4CO6R.js} +3 -3
  42. package/dist/{chunk-UKC3Q6OA.js.map → chunk-JMZ4CO6R.js.map} +1 -1
  43. package/dist/{chunk-VJITPUUS.js → chunk-JONTKXGK.js} +26 -24
  44. package/dist/chunk-JONTKXGK.js.map +1 -0
  45. package/dist/{chunk-POZNQWZE.js → chunk-KC6CHPT3.js} +4 -4
  46. package/dist/{chunk-POZNQWZE.js.map → chunk-KC6CHPT3.js.map} +1 -1
  47. package/dist/{chunk-4J6DHPYY.js → chunk-KPNNSUXM.js} +3 -3
  48. package/dist/{chunk-4J6DHPYY.js.map → chunk-KPNNSUXM.js.map} +1 -1
  49. package/dist/{chunk-RPV77BCQ.js → chunk-ONQCNOLU.js} +4 -9
  50. package/dist/chunk-ONQCNOLU.js.map +1 -0
  51. package/dist/{chunk-QSY52N3A.js → chunk-OWOVCGUZ.js} +3 -3
  52. package/dist/{chunk-QSY52N3A.js.map → chunk-OWOVCGUZ.js.map} +1 -1
  53. package/dist/{chunk-QWRHPNBY.js → chunk-QIETN4UU.js} +4 -4
  54. package/dist/{chunk-QWRHPNBY.js.map → chunk-QIETN4UU.js.map} +1 -1
  55. package/dist/{chunk-NWFRMVI2.js → chunk-QZWKXUZP.js} +3 -3
  56. package/dist/{chunk-NWFRMVI2.js.map → chunk-QZWKXUZP.js.map} +1 -1
  57. package/dist/{chunk-7QDWREVG.js → chunk-R4UOT76L.js} +3 -3
  58. package/dist/{chunk-7QDWREVG.js.map → chunk-R4UOT76L.js.map} +1 -1
  59. package/dist/{chunk-HIEOL77G.js → chunk-RVUO7SDG.js} +4 -4
  60. package/dist/{chunk-HIEOL77G.js.map → chunk-RVUO7SDG.js.map} +1 -1
  61. package/dist/{chunk-XPVKJIWY.js → chunk-SCGKQ5RE.js} +3 -3
  62. package/dist/{chunk-XPVKJIWY.js.map → chunk-SCGKQ5RE.js.map} +1 -1
  63. package/dist/{chunk-UCGT2IR4.js → chunk-SJSYKUCL.js} +3 -3
  64. package/dist/{chunk-UCGT2IR4.js.map → chunk-SJSYKUCL.js.map} +1 -1
  65. package/dist/{chunk-KOTCWE7V.js → chunk-TNROOKX3.js} +11 -4
  66. package/dist/chunk-TNROOKX3.js.map +1 -0
  67. package/dist/{chunk-PGTCXLGY.js → chunk-U6EOAIPK.js} +3 -3
  68. package/dist/chunk-U6EOAIPK.js.map +1 -0
  69. package/dist/{chunk-KXSJSLPJ.js → chunk-V7XHE25E.js} +4 -4
  70. package/dist/{chunk-KXSJSLPJ.js.map → chunk-V7XHE25E.js.map} +1 -1
  71. package/dist/{chunk-5ZKKXLPF.js → chunk-VPNFYQBL.js} +10 -15
  72. package/dist/chunk-VPNFYQBL.js.map +1 -0
  73. package/dist/{chunk-FUCQNVJL.js → chunk-XLTSCY22.js} +10 -7
  74. package/dist/chunk-XLTSCY22.js.map +1 -0
  75. package/dist/{chunk-K3J7YLL4.js → chunk-XOGMDABS.js} +5 -6
  76. package/dist/chunk-XOGMDABS.js.map +1 -0
  77. package/dist/{chunk-53RWD44Z.js → chunk-XRMKL43Y.js} +3 -3
  78. package/dist/{chunk-53RWD44Z.js.map → chunk-XRMKL43Y.js.map} +1 -1
  79. package/dist/{chunk-DZALMUQD.js → chunk-Y3BOERVB.js} +3 -3
  80. package/dist/{chunk-DZALMUQD.js.map → chunk-Y3BOERVB.js.map} +1 -1
  81. package/dist/{chunk-AV5YQ2Z4.js → chunk-Y7UFBSAD.js} +3 -3
  82. package/dist/{chunk-AV5YQ2Z4.js.map → chunk-Y7UFBSAD.js.map} +1 -1
  83. package/dist/{chunk-HNYBLROK.js → chunk-YP2ATSXP.js} +11 -28
  84. package/dist/chunk-YP2ATSXP.js.map +1 -0
  85. package/dist/{chunk-75QBUI2P.js → chunk-ZO2EKJZM.js} +16 -8
  86. package/dist/chunk-ZO2EKJZM.js.map +1 -0
  87. package/dist/{chunk-VOCA4KZB.js → chunk-ZS2WS5NJ.js} +4 -4
  88. package/dist/{chunk-VOCA4KZB.js.map → chunk-ZS2WS5NJ.js.map} +1 -1
  89. package/dist/components/advanced/Calendar/index.js +3 -3
  90. package/dist/components/advanced/EventCalendar/index.js +3 -3
  91. package/dist/components/advanced/FilterBuilder/index.js +3 -3
  92. package/dist/components/advanced/ReportBuilder/index.js +11 -0
  93. package/dist/components/advanced/ReportBuilder/index.js.map +1 -0
  94. package/dist/components/advanced/index.js +14 -10
  95. package/dist/components/data-display/Callout/index.js +1 -1
  96. package/dist/components/data-display/Carousel/index.js +3 -3
  97. package/dist/components/data-display/ChartCard/index.js +2 -2
  98. package/dist/components/data-display/DashboardFilterbar/index.js +5 -5
  99. package/dist/components/data-display/DataTable/FilterBuilder/index.js +3 -3
  100. package/dist/components/data-display/DataTable/index.js +5 -5
  101. package/dist/components/data-display/KPICard/index.js +3 -2
  102. package/dist/components/data-display/List/index.js +3 -3
  103. package/dist/components/data-display/SingleStat/index.js +1 -1
  104. package/dist/components/data-display/VirtualTable/index.js +2 -2
  105. package/dist/components/data-display/index.js +29 -29
  106. package/dist/components/feedback/AlertDialog/index.js +3 -3
  107. package/dist/components/feedback/ConfirmModal/index.js +4 -4
  108. package/dist/components/feedback/Notification/index.js +2 -2
  109. package/dist/components/feedback/index.js +8 -8
  110. package/dist/components/forms/DatePicker/index.js +4 -4
  111. package/dist/components/forms/DateRangePicker/index.js +4 -4
  112. package/dist/components/forms/Field/index.js +2 -2
  113. package/dist/components/forms/Form/index.js +2 -2
  114. package/dist/components/forms/InputGroup/index.js +4 -4
  115. package/dist/components/forms/InputOTPField/index.js +3 -3
  116. package/dist/components/forms/NativeSelect/index.js +1 -1
  117. package/dist/components/forms/TagsInput/index.js +2 -2
  118. package/dist/components/forms/Textarea/index.js +1 -1
  119. package/dist/components/forms/TextareaField/index.js +4 -4
  120. package/dist/components/forms/index.js +26 -26
  121. package/dist/components/index.js +105 -104
  122. package/dist/components/layout/index.js +3 -3
  123. package/dist/components/navigation/AccountSwitch/index.js +3 -3
  124. package/dist/components/navigation/Header/index.js +1 -1
  125. package/dist/components/navigation/MobileSidebar/index.js +2 -2
  126. package/dist/components/navigation/Pagination/index.js +3 -3
  127. package/dist/components/navigation/Sidebar/index.js +4 -4
  128. package/dist/components/navigation/index.js +10 -10
  129. package/dist/components/primitives/Avatar/index.js +1 -1
  130. package/dist/components/primitives/Badge/index.js +1 -1
  131. package/dist/components/primitives/Button/index.js +2 -2
  132. package/dist/components/primitives/ConfirmButton/index.js +4 -4
  133. package/dist/components/primitives/Label/index.js +1 -1
  134. package/dist/components/primitives/SplitButton/index.js +1 -1
  135. package/dist/components/primitives/index.js +17 -17
  136. package/dist/components/workflow/ApprovalFlow/index.js +4 -4
  137. package/dist/components/workflow/CommentSystem/index.js +5 -5
  138. package/dist/components/workflow/Dashboard/index.js +3 -3
  139. package/dist/components/workflow/DashboardBuilder/index.js +4 -4
  140. package/dist/components/workflow/KanbanBoard/index.js +4 -4
  141. package/dist/components/workflow/ReportGenerator/index.js +4 -4
  142. package/dist/components/workflow/Wizard/index.js +3 -3
  143. package/dist/components/workflow/index.js +15 -15
  144. package/dist/fonts/inter-OFL.txt +92 -0
  145. package/dist/fonts/inter-latin-400-normal.woff2 +0 -0
  146. package/dist/fonts/inter-latin-500-normal.woff2 +0 -0
  147. package/dist/fonts/inter-latin-600-normal.woff2 +0 -0
  148. package/dist/fonts/inter-latin-700-normal.woff2 +0 -0
  149. package/dist/fonts/jetbrains-mono-OFL.txt +93 -0
  150. package/dist/fonts/jetbrains-mono-latin-400-normal.woff2 +0 -0
  151. package/dist/fonts/jetbrains-mono-latin-500-normal.woff2 +0 -0
  152. package/dist/fonts/jetbrains-mono-latin-700-normal.woff2 +0 -0
  153. package/dist/index.d.ts +132 -33
  154. package/dist/index.js +105 -104
  155. package/dist/styles.css +291 -13
  156. package/package.json +2 -2
  157. package/dist/chunk-5ZKKXLPF.js.map +0 -1
  158. package/dist/chunk-75QBUI2P.js.map +0 -1
  159. package/dist/chunk-CCUCWL6M.js.map +0 -1
  160. package/dist/chunk-D5DM6GZB.js.map +0 -1
  161. package/dist/chunk-FUCQNVJL.js.map +0 -1
  162. package/dist/chunk-HNYBLROK.js.map +0 -1
  163. package/dist/chunk-K3J7YLL4.js.map +0 -1
  164. package/dist/chunk-KOTCWE7V.js.map +0 -1
  165. package/dist/chunk-MDQFZEIC.js.map +0 -1
  166. package/dist/chunk-NNOGFX66.js +0 -3
  167. package/dist/chunk-PGTCXLGY.js.map +0 -1
  168. package/dist/chunk-RPV77BCQ.js.map +0 -1
  169. package/dist/chunk-SAKW2OKH.js.map +0 -1
  170. package/dist/chunk-VJITPUUS.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/data-display/List/List.tsx"],"names":[],"mappings":"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","file":"chunk-KXSJSLPJ.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"../../primitives/Avatar\"\nimport { Badge } from \"../../primitives/Badge\"\nimport { SkeletonLoader } from \"../../primitives/SkeletonLoader\"\n\n// ============================================\n// TYPES\n// ============================================\ninterface ListItem {\n avatar?: string\n badge?: string\n description?: string\n disabled?: boolean\n id: string\n label: string\n onClick?: () => void\n}\n\n// ============================================\n// VARIANTS\n// ============================================\nconst listVariants = cva(\n \"flex flex-col bg-background text-foreground transition-colors duration-150\",\n {\n variants: {\n variant: {\n default: \"border border-border rounded-md\",\n flat: \"divide-y divide-border\",\n card: \"gap-4 flex-col\",\n minimal: \"divide-y divide-border border-0\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nconst listItemVariants = cva(\n \"group/list-item flex items-center text-sm transition-colors duration-150 outline-none\",\n {\n variants: {\n variant: {\n default: \"border-b border-border last:border-b-0\",\n flat: \"\",\n card: \"border border-border rounded-md bg-background\",\n minimal: \"\",\n },\n size: {\n sm: \"px-3 py-2 min-h-8 gap-2\",\n default: \"px-4 py-3 min-h-10 gap-3\",\n lg: \"px-5 py-4 min-h-12 gap-4\",\n },\n selectable: {\n true: \"cursor-pointer hover:bg-muted/50 focus-visible:bg-muted/50 focus-visible:ring-[3px] focus-visible:ring-ring/50\",\n false: \"\",\n },\n selected: {\n true: \"bg-muted\",\n false: \"\",\n },\n disabled: {\n true: \"opacity-50 cursor-not-allowed pointer-events-none\",\n false: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n selectable: false,\n selected: false,\n disabled: false,\n },\n }\n)\n\n// ============================================\n// LIST COMPONENT\n// ============================================\ntype ListProps = React.ComponentProps<\"ul\"> &\n VariantProps<typeof listVariants> & {\n items?: ListItem[]\n loading?: boolean\n multiple?: boolean\n onSelect?: (item: ListItem) => void\n selectable?: boolean\n }\n\nfunction List({\n className,\n variant = \"default\",\n items,\n selectable = false,\n multiple = false,\n loading = false,\n onSelect,\n children,\n ref,\n ...props\n}: ListProps) {\n const [selectedIds, setSelectedIds] = React.useState<Set<string>>(() => new Set())\n const [focusedIndex, setFocusedIndex] = React.useState<number>(-1)\n const itemRefsRef = React.useRef<Map<number, HTMLLIElement>>(new Map())\n\n const handleSelect = React.useCallback(\n (item: ListItem) => {\n if (item.disabled) return\n\n if (multiple) {\n setSelectedIds((prev) => {\n const newSet = new Set(prev)\n if (newSet.has(item.id)) {\n newSet.delete(item.id)\n } else {\n newSet.add(item.id)\n }\n return newSet\n })\n } else {\n setSelectedIds(new Set([item.id]))\n }\n\n onSelect?.(item)\n item.onClick?.()\n },\n [multiple, onSelect]\n )\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLUListElement>) => {\n if (!items || items.length === 0) return\n\n const enabledIndices = items\n .map((item, index) => (item.disabled ? -1 : index))\n .filter((i) => i !== -1)\n\n let newIndex = focusedIndex\n\n switch (e.key) {\n case \"ArrowDown\":\n e.preventDefault()\n if (focusedIndex === -1) {\n newIndex = enabledIndices[0] ?? -1\n } else {\n const currentEnabledPos = enabledIndices.indexOf(focusedIndex)\n const nextPos = Math.min(\n currentEnabledPos + 1,\n enabledIndices.length - 1\n )\n newIndex = enabledIndices[nextPos] ?? focusedIndex\n }\n break\n case \"ArrowUp\":\n e.preventDefault()\n if (focusedIndex === -1) {\n newIndex = enabledIndices[enabledIndices.length - 1] ?? -1\n } else {\n const currentEnabledPos = enabledIndices.indexOf(focusedIndex)\n const prevPos = Math.max(currentEnabledPos - 1, 0)\n newIndex = enabledIndices[prevPos] ?? focusedIndex\n }\n break\n case \"Enter\":\n case \" \":\n e.preventDefault()\n if (focusedIndex >= 0 && selectable && items[focusedIndex]) {\n handleSelect(items[focusedIndex])\n }\n break\n case \"Home\":\n e.preventDefault()\n newIndex = enabledIndices[0] ?? -1\n break\n case \"End\":\n e.preventDefault()\n newIndex = enabledIndices[enabledIndices.length - 1] ?? -1\n break\n }\n\n if (newIndex !== focusedIndex) {\n setFocusedIndex(newIndex)\n itemRefsRef.current.get(newIndex)?.focus()\n }\n },\n [items, focusedIndex, selectable, handleSelect]\n )\n\n // Loading skeleton\n if (loading) {\n return (\n <ul\n ref={ref}\n data-loading\n aria-busy=\"true\"\n aria-label=\"Loading list\"\n className={cn(listVariants({ variant }), className)}\n data-slot=\"list\"\n data-variant={variant}\n role=\"list\"\n {...props}\n >\n {[1, 2, 3].map((i) => (\n <li\n key={i}\n className={cn(listItemVariants({ variant, size: \"default\" }))}\n data-slot=\"list-item\"\n >\n <SkeletonLoader className=\"size-10 rounded-full\" />\n <div className=\"flex flex-1 flex-col gap-1\">\n <SkeletonLoader className=\"h-4 w-32\" />\n <SkeletonLoader className=\"h-3 w-24\" />\n </div>\n </li>\n ))}\n </ul>\n )\n }\n\n // Render with items prop\n if (items && items.length > 0) {\n return (\n <ul\n ref={ref}\n aria-label={props[\"aria-label\"]}\n className={cn(listVariants({ variant }), className)}\n data-slot=\"list\"\n data-variant={variant}\n role={selectable ? \"listbox\" : \"list\"}\n tabIndex={selectable ? 0 : undefined}\n onKeyDown={selectable ? handleKeyDown : undefined}\n {...props}\n >\n {items.map((item, index) => {\n const isSelected = selectedIds.has(item.id)\n const isFocused = focusedIndex === index\n\n return (\n <ListItemInternal\n key={item.id}\n ref={(el) => {\n if (el) {\n itemRefsRef.current.set(index, el)\n } else {\n itemRefsRef.current.delete(index)\n }\n }}\n tabIndex={\n selectable\n ? isFocused || (focusedIndex === -1 && index === 0)\n ? 0\n : -1\n : undefined\n }\n aria-disabled={item.disabled ? true : undefined}\n aria-selected={selectable ? isSelected : undefined}\n data-focused={isFocused ? true : undefined}\n data-selected={isSelected ? true : undefined}\n disabled={item.disabled}\n isFocused={isFocused}\n item={item}\n selectable={selectable}\n selected={isSelected}\n variant={variant}\n onClick={\n selectable && !item.disabled\n ? () => { handleSelect(item); }\n : undefined\n }\n />\n )\n })}\n </ul>\n )\n }\n\n // Render with children\n return (\n <ul\n ref={ref}\n aria-label={props[\"aria-label\"]}\n className={cn(listVariants({ variant }), className)}\n data-slot=\"list\"\n data-variant={variant}\n role=\"list\"\n {...props}\n >\n {children}\n </ul>\n )\n}\n\n// ============================================\n// INTERNAL LIST ITEM (for items prop rendering)\n// ============================================\ninterface ListItemInternalProps\n extends Omit<React.ComponentProps<\"li\">, \"onClick\"> {\n disabled?: boolean\n isFocused?: boolean\n item: ListItem\n onClick?: () => void\n selectable?: boolean\n selected?: boolean\n variant?: \"card\" | \"default\" | \"flat\" | \"minimal\" | null\n}\n\nfunction ListItemInternal({\n ref,\n item,\n variant = \"default\",\n selectable = false,\n selected = false,\n disabled = false,\n isFocused = false,\n onClick,\n className,\n ...props\n}: ListItemInternalProps & { ref?: React.Ref<HTMLLIElement | null> }) {\n return (\n <li\n ref={ref}\n className={cn(\n listItemVariants({\n variant,\n size: \"default\",\n selectable,\n selected,\n disabled,\n }),\n isFocused && \"ring-[3px] ring-ring/50\",\n className\n )}\n data-slot=\"list-item\"\n role={selectable ? \"option\" : undefined}\n onClick={onClick}\n {...props}\n >\n {item.avatar && (\n <Avatar className=\"size-10\" data-slot=\"list-item-avatar\">\n <AvatarImage alt={item.label} src={item.avatar} />\n <AvatarFallback>\n {item.label.slice(0, 2).toUpperCase()}\n </AvatarFallback>\n </Avatar>\n )}\n\n <div className=\"flex flex-1 flex-col gap-0.5\" data-slot=\"list-item-content\">\n <span className=\"font-medium leading-snug\">{item.label}</span>\n {item.description && (\n <span\n className=\"text-muted-foreground text-xs leading-normal\"\n data-slot=\"list-item-description\"\n >\n {item.description}\n </span>\n )}\n </div>\n\n {item.badge && (\n <div data-slot=\"list-item-actions\">\n <Badge color=\"muted\" type=\"pill-color\">{item.badge}</Badge>\n </div>\n )}\n </li>\n )\n }\n\n// ============================================\n// PUBLIC LIST ITEM COMPONENT\n// ============================================\ninterface ListItemProps extends Omit<React.ComponentProps<\"li\">, \"disabled\"> {\n disabled?: boolean\n selectable?: boolean\n selected?: boolean\n size?: \"default\" | \"lg\" | \"sm\"\n variant?: \"card\" | \"default\" | \"flat\" | \"minimal\"\n}\n\nfunction ListItem({\n className,\n variant = \"default\",\n size = \"default\",\n selectable = false,\n selected = false,\n disabled = false,\n ref,\n ...restProps\n}: ListItemProps) {\n return (\n <li\n ref={ref}\n className={cn(\n listItemVariants({ variant, size, selectable, selected, disabled }),\n className\n )}\n aria-disabled={disabled ? true : undefined}\n aria-selected={selectable ? selected : undefined}\n data-disabled={disabled ? true : undefined}\n data-selected={selected ? true : undefined}\n data-size={size}\n data-slot=\"list-item\"\n data-variant={variant}\n role={selectable ? \"option\" : undefined}\n tabIndex={selectable && !disabled ? 0 : undefined}\n {...restProps}\n />\n )\n}\n\n// ============================================\n// LIST ITEM CONTENT\n// ============================================\nfunction ListItemContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"flex flex-1 flex-col gap-0.5\", className)}\n data-slot=\"list-item-content\"\n {...props}\n />\n )\n}\n\n// ============================================\n// LIST ITEM ACTIONS\n// ============================================\nfunction ListItemActions({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"flex items-center gap-2\", className)}\n data-slot=\"list-item-actions\"\n {...props}\n />\n )\n}\n\n// ============================================\n// EXPORTS\n// ============================================\nexport {\n List,\n ListItem,\n ListItemActions,\n ListItemContent,\n listItemVariants,\n listVariants,\n}\nexport type { ListItemProps, ListItem as ListItemType, ListProps }\n"]}
1
+ {"version":3,"sources":["../src/components/data-display/List/List.tsx"],"names":[],"mappings":"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","file":"chunk-V7XHE25E.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"../../primitives/Avatar\"\nimport { Badge } from \"../../primitives/Badge\"\nimport { SkeletonLoader } from \"../../primitives/SkeletonLoader\"\n\n// ============================================\n// TYPES\n// ============================================\ninterface ListItem {\n avatar?: string\n badge?: string\n description?: string\n disabled?: boolean\n id: string\n label: string\n onClick?: () => void\n}\n\n// ============================================\n// VARIANTS\n// ============================================\nconst listVariants = cva(\n \"flex flex-col bg-background text-foreground transition-colors duration-150\",\n {\n variants: {\n variant: {\n default: \"border border-border rounded-md\",\n flat: \"divide-y divide-border\",\n card: \"gap-4 flex-col\",\n minimal: \"divide-y divide-border border-0\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nconst listItemVariants = cva(\n \"group/list-item flex items-center text-sm transition-colors duration-150 outline-none\",\n {\n variants: {\n variant: {\n default: \"border-b border-border last:border-b-0\",\n flat: \"\",\n card: \"border border-border rounded-md bg-background\",\n minimal: \"\",\n },\n size: {\n sm: \"px-3 py-2 min-h-8 gap-2\",\n default: \"px-4 py-3 min-h-10 gap-3\",\n lg: \"px-5 py-4 min-h-12 gap-4\",\n },\n selectable: {\n true: \"cursor-pointer hover:bg-muted/50 focus-visible:bg-muted/50 focus-visible:ring-[3px] focus-visible:ring-ring/50\",\n false: \"\",\n },\n selected: {\n true: \"bg-muted\",\n false: \"\",\n },\n disabled: {\n true: \"opacity-50 cursor-not-allowed pointer-events-none\",\n false: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n selectable: false,\n selected: false,\n disabled: false,\n },\n }\n)\n\n// ============================================\n// LIST COMPONENT\n// ============================================\ntype ListProps = React.ComponentProps<\"ul\"> &\n VariantProps<typeof listVariants> & {\n items?: ListItem[]\n loading?: boolean\n multiple?: boolean\n onSelect?: (item: ListItem) => void\n selectable?: boolean\n }\n\nfunction List({\n className,\n variant = \"default\",\n items,\n selectable = false,\n multiple = false,\n loading = false,\n onSelect,\n children,\n ref,\n ...props\n}: ListProps) {\n const [selectedIds, setSelectedIds] = React.useState<Set<string>>(() => new Set())\n const [focusedIndex, setFocusedIndex] = React.useState<number>(-1)\n const itemRefsRef = React.useRef<Map<number, HTMLLIElement>>(new Map())\n\n const handleSelect = React.useCallback(\n (item: ListItem) => {\n if (item.disabled) return\n\n if (multiple) {\n setSelectedIds((prev) => {\n const newSet = new Set(prev)\n if (newSet.has(item.id)) {\n newSet.delete(item.id)\n } else {\n newSet.add(item.id)\n }\n return newSet\n })\n } else {\n setSelectedIds(new Set([item.id]))\n }\n\n onSelect?.(item)\n item.onClick?.()\n },\n [multiple, onSelect]\n )\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLUListElement>) => {\n if (!items || items.length === 0) return\n\n const enabledIndices = items\n .map((item, index) => (item.disabled ? -1 : index))\n .filter((i) => i !== -1)\n\n let newIndex = focusedIndex\n\n switch (e.key) {\n case \"ArrowDown\":\n e.preventDefault()\n if (focusedIndex === -1) {\n newIndex = enabledIndices[0] ?? -1\n } else {\n const currentEnabledPos = enabledIndices.indexOf(focusedIndex)\n const nextPos = Math.min(\n currentEnabledPos + 1,\n enabledIndices.length - 1\n )\n newIndex = enabledIndices[nextPos] ?? focusedIndex\n }\n break\n case \"ArrowUp\":\n e.preventDefault()\n if (focusedIndex === -1) {\n newIndex = enabledIndices[enabledIndices.length - 1] ?? -1\n } else {\n const currentEnabledPos = enabledIndices.indexOf(focusedIndex)\n const prevPos = Math.max(currentEnabledPos - 1, 0)\n newIndex = enabledIndices[prevPos] ?? focusedIndex\n }\n break\n case \"Enter\":\n case \" \":\n e.preventDefault()\n if (focusedIndex >= 0 && selectable && items[focusedIndex]) {\n handleSelect(items[focusedIndex])\n }\n break\n case \"Home\":\n e.preventDefault()\n newIndex = enabledIndices[0] ?? -1\n break\n case \"End\":\n e.preventDefault()\n newIndex = enabledIndices[enabledIndices.length - 1] ?? -1\n break\n }\n\n if (newIndex !== focusedIndex) {\n setFocusedIndex(newIndex)\n itemRefsRef.current.get(newIndex)?.focus()\n }\n },\n [items, focusedIndex, selectable, handleSelect]\n )\n\n // Loading skeleton\n if (loading) {\n return (\n <ul\n ref={ref}\n data-loading\n aria-busy=\"true\"\n aria-label=\"Loading list\"\n className={cn(listVariants({ variant }), className)}\n data-slot=\"list\"\n data-variant={variant}\n role=\"list\"\n {...props}\n >\n {[1, 2, 3].map((i) => (\n <li\n key={i}\n className={cn(listItemVariants({ variant, size: \"default\" }))}\n data-slot=\"list-item\"\n >\n <SkeletonLoader className=\"size-10 rounded-full\" />\n <div className=\"flex flex-1 flex-col gap-1\">\n <SkeletonLoader className=\"h-4 w-32\" />\n <SkeletonLoader className=\"h-3 w-24\" />\n </div>\n </li>\n ))}\n </ul>\n )\n }\n\n // Render with items prop\n if (items && items.length > 0) {\n return (\n <ul\n ref={ref}\n aria-label={props[\"aria-label\"]}\n className={cn(listVariants({ variant }), className)}\n data-slot=\"list\"\n data-variant={variant}\n role={selectable ? \"listbox\" : \"list\"}\n tabIndex={selectable ? 0 : undefined}\n onKeyDown={selectable ? handleKeyDown : undefined}\n {...props}\n >\n {items.map((item, index) => {\n const isSelected = selectedIds.has(item.id)\n const isFocused = focusedIndex === index\n\n return (\n <ListItemInternal\n key={item.id}\n ref={(el) => {\n if (el) {\n itemRefsRef.current.set(index, el)\n } else {\n itemRefsRef.current.delete(index)\n }\n }}\n tabIndex={\n selectable\n ? isFocused || (focusedIndex === -1 && index === 0)\n ? 0\n : -1\n : undefined\n }\n aria-disabled={item.disabled ? true : undefined}\n aria-selected={selectable ? isSelected : undefined}\n data-focused={isFocused ? true : undefined}\n data-selected={isSelected ? true : undefined}\n disabled={item.disabled}\n isFocused={isFocused}\n item={item}\n selectable={selectable}\n selected={isSelected}\n variant={variant}\n onClick={\n selectable && !item.disabled\n ? () => { handleSelect(item); }\n : undefined\n }\n />\n )\n })}\n </ul>\n )\n }\n\n // Render with children\n return (\n <ul\n ref={ref}\n aria-label={props[\"aria-label\"]}\n className={cn(listVariants({ variant }), className)}\n data-slot=\"list\"\n data-variant={variant}\n role=\"list\"\n {...props}\n >\n {children}\n </ul>\n )\n}\n\n// ============================================\n// INTERNAL LIST ITEM (for items prop rendering)\n// ============================================\ninterface ListItemInternalProps\n extends Omit<React.ComponentProps<\"li\">, \"onClick\"> {\n disabled?: boolean\n isFocused?: boolean\n item: ListItem\n onClick?: () => void\n selectable?: boolean\n selected?: boolean\n variant?: \"card\" | \"default\" | \"flat\" | \"minimal\" | null\n}\n\nfunction ListItemInternal({\n ref,\n item,\n variant = \"default\",\n selectable = false,\n selected = false,\n disabled = false,\n isFocused = false,\n onClick,\n className,\n ...props\n}: ListItemInternalProps & { ref?: React.Ref<HTMLLIElement | null> }) {\n return (\n <li\n ref={ref}\n className={cn(\n listItemVariants({\n variant,\n size: \"default\",\n selectable,\n selected,\n disabled,\n }),\n isFocused && \"ring-[3px] ring-ring/50\",\n className\n )}\n data-slot=\"list-item\"\n role={selectable ? \"option\" : undefined}\n onClick={onClick}\n {...props}\n >\n {item.avatar && (\n <Avatar className=\"size-10\" data-slot=\"list-item-avatar\">\n <AvatarImage alt={item.label} src={item.avatar} />\n <AvatarFallback>\n {item.label.slice(0, 2).toUpperCase()}\n </AvatarFallback>\n </Avatar>\n )}\n\n <div className=\"flex flex-1 flex-col gap-0.5\" data-slot=\"list-item-content\">\n <span className=\"font-medium leading-snug\">{item.label}</span>\n {item.description && (\n <span\n className=\"text-muted-foreground text-xs leading-normal\"\n data-slot=\"list-item-description\"\n >\n {item.description}\n </span>\n )}\n </div>\n\n {item.badge && (\n <div data-slot=\"list-item-actions\">\n <Badge color=\"muted\" type=\"pill-color\">{item.badge}</Badge>\n </div>\n )}\n </li>\n )\n }\n\n// ============================================\n// PUBLIC LIST ITEM COMPONENT\n// ============================================\ninterface ListItemProps extends Omit<React.ComponentProps<\"li\">, \"disabled\"> {\n disabled?: boolean\n selectable?: boolean\n selected?: boolean\n size?: \"default\" | \"lg\" | \"sm\"\n variant?: \"card\" | \"default\" | \"flat\" | \"minimal\"\n}\n\nfunction ListItem({\n className,\n variant = \"default\",\n size = \"default\",\n selectable = false,\n selected = false,\n disabled = false,\n ref,\n ...restProps\n}: ListItemProps) {\n return (\n <li\n ref={ref}\n className={cn(\n listItemVariants({ variant, size, selectable, selected, disabled }),\n className\n )}\n aria-disabled={disabled ? true : undefined}\n aria-selected={selectable ? selected : undefined}\n data-disabled={disabled ? true : undefined}\n data-selected={selected ? true : undefined}\n data-size={size}\n data-slot=\"list-item\"\n data-variant={variant}\n role={selectable ? \"option\" : undefined}\n tabIndex={selectable && !disabled ? 0 : undefined}\n {...restProps}\n />\n )\n}\n\n// ============================================\n// LIST ITEM CONTENT\n// ============================================\nfunction ListItemContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"flex flex-1 flex-col gap-0.5\", className)}\n data-slot=\"list-item-content\"\n {...props}\n />\n )\n}\n\n// ============================================\n// LIST ITEM ACTIONS\n// ============================================\nfunction ListItemActions({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"flex items-center gap-2\", className)}\n data-slot=\"list-item-actions\"\n {...props}\n />\n )\n}\n\n// ============================================\n// EXPORTS\n// ============================================\nexport {\n List,\n ListItem,\n ListItemActions,\n ListItemContent,\n listItemVariants,\n listVariants,\n}\nexport type { ListItemProps, ListItem as ListItemType, ListProps }\n"]}
@@ -6,20 +6,17 @@ var headerVariants = cva(
6
6
  [
7
7
  // Base styles
8
8
  "flex w-full items-center",
9
+ // Figma height model — min 64px (logo-only), hugs to 76px with nav/actions
10
+ "min-h-[var(--header-height)]",
9
11
  // Transition
10
12
  "transition-colors"
11
13
  ],
12
14
  {
13
15
  variants: {
14
16
  variant: {
15
- default: "bg-background border-b border-border",
17
+ default: "bg-[color:var(--header-root-bg)] border-b border-[color:var(--header-root-border-color)]",
16
18
  transparent: "bg-transparent",
17
- floating: "bg-background/80 backdrop-blur-sm border-b border-border/50 shadow-sm"
18
- },
19
- size: {
20
- sm: "h-12",
21
- md: "h-14",
22
- lg: "h-16"
19
+ floating: "bg-[color:var(--header-root-bg)]/80 backdrop-blur-sm border-b border-[color:var(--header-root-border-color)]/50 shadow-sm"
23
20
  },
24
21
  sticky: {
25
22
  true: "sticky top-0 z-[var(--header-sticky-z-index)]",
@@ -28,14 +25,13 @@ var headerVariants = cva(
28
25
  },
29
26
  defaultVariants: {
30
27
  variant: "default",
31
- size: "md",
32
28
  sticky: false
33
29
  }
34
30
  }
35
31
  );
36
32
  var headerContainerVariants = cva(
37
33
  [
38
- "flex w-full items-center gap-4 px-4"
34
+ "flex w-full items-center gap-4 px-[var(--header-root-padding-x)] py-[var(--header-root-padding-y)]"
39
35
  ],
40
36
  {
41
37
  variants: {
@@ -64,11 +60,11 @@ var headerBrandVariants = cva([
64
60
  "flex shrink-0 items-center gap-2"
65
61
  ]);
66
62
  var headerNavVariants = cva([
67
- "hidden md:flex items-center gap-1"
63
+ "hidden md:flex items-center gap-1 min-h-[var(--header-content-height)]"
68
64
  ]);
69
65
  var headerActionsVariants = cva(
70
66
  [
71
- "flex items-center gap-2"
67
+ "flex items-center gap-2 min-h-[var(--header-content-height)]"
72
68
  ],
73
69
  {
74
70
  variants: {
@@ -86,7 +82,6 @@ var headerActionsVariants = cva(
86
82
  function Header({
87
83
  className,
88
84
  variant = "default",
89
- size = "md",
90
85
  sticky = false,
91
86
  contained = false,
92
87
  layout = "default",
@@ -97,7 +92,7 @@ function Header({
97
92
  return /* @__PURE__ */ jsx(
98
93
  "header",
99
94
  {
100
- className: cn(headerVariants({ variant, size, sticky }), className),
95
+ className: cn(headerVariants({ variant, sticky }), className),
101
96
  "data-slot": "header",
102
97
  ...props,
103
98
  children: /* @__PURE__ */ jsx(
@@ -173,5 +168,5 @@ function HeaderActions({
173
168
  }
174
169
 
175
170
  export { Header, HeaderActions, HeaderBrand, HeaderNav, headerActionsVariants, headerBrandVariants, headerContainerVariants, headerNavVariants, headerVariants };
176
- //# sourceMappingURL=chunk-5ZKKXLPF.js.map
177
- //# sourceMappingURL=chunk-5ZKKXLPF.js.map
171
+ //# sourceMappingURL=chunk-VPNFYQBL.js.map
172
+ //# sourceMappingURL=chunk-VPNFYQBL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/navigation/Header/Header.variants.ts","../src/components/navigation/Header/Header.tsx"],"names":[],"mappings":"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","file":"chunk-VPNFYQBL.js","sourcesContent":["import { cva } from \"class-variance-authority\"\n\n/**\n * Header root variant styles\n *\n * Height follows the Figma auto-layout model (DES-1271): the root has a min\n * height of `--header-height` (64px — a logo-only header) and hugs to 76px\n * when a HeaderNav/HeaderActions row is present, because that row enforces\n * `--header-content-height` (36px) and the container adds `--header-root-padding-y`\n * (20px × 2). There is no `size` prop — the Figma component has no size axis.\n */\nexport const headerVariants = cva(\n [\n // Base styles\n \"flex w-full items-center\",\n // Figma height model — min 64px (logo-only), hugs to 76px with nav/actions\n \"min-h-[var(--header-height)]\",\n // Transition\n \"transition-colors\",\n ],\n {\n variants: {\n variant: {\n default:\n \"bg-[color:var(--header-root-bg)] border-b border-[color:var(--header-root-border-color)]\",\n transparent: \"bg-transparent\",\n floating:\n \"bg-[color:var(--header-root-bg)]/80 backdrop-blur-sm border-b border-[color:var(--header-root-border-color)]/50 shadow-sm\",\n },\n sticky: {\n true: \"sticky top-0 z-[var(--header-sticky-z-index)]\",\n false: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n sticky: false,\n },\n }\n)\n\n/**\n * Header container variant styles (inner wrapper)\n */\nexport const headerContainerVariants = cva(\n [\n \"flex w-full items-center gap-4 px-[var(--header-root-padding-x)] py-[var(--header-root-padding-y)]\",\n ],\n {\n variants: {\n contained: {\n true: \"mx-auto max-w-7xl\",\n false: \"\",\n },\n layout: {\n // Brand left, Nav middle, Actions right (default)\n default: \"justify-between\",\n // Brand center; Nav and Actions on sides if provided\n \"logo-centered\":\n \"justify-center [&>[data-slot=header-brand]]:order-2 [&>[data-slot=header-nav]]:order-1 [&>[data-slot=header-actions]]:order-3 [&>[data-slot=header-nav]]:flex-1 [&>[data-slot=header-actions]]:flex-1\",\n // Nav left, Brand right (mirror of default)\n \"links-left\":\n \"justify-between [&>[data-slot=header-brand]]:order-2 [&>[data-slot=header-nav]]:order-1 [&>[data-slot=header-actions]]:order-3\",\n // Brand + Nav clustered center, Actions right\n centered:\n \"[&>[data-slot=header-brand]]:flex-none [&>[data-slot=header-nav]]:flex-1 [&>[data-slot=header-nav]]:justify-center [&>[data-slot=header-actions]]:flex-none [&>[data-slot=header-actions]]:ml-auto\",\n },\n },\n defaultVariants: {\n contained: false,\n layout: \"default\",\n },\n }\n)\n\n/**\n * HeaderBrand variant styles\n */\nexport const headerBrandVariants = cva([\n \"flex shrink-0 items-center gap-2\",\n])\n\n/**\n * HeaderNav variant styles\n *\n * Enforces the Figma nav-row height (`--header-content-height` 36px) so a\n * header with navigation hugs to 76px regardless of whether the links are\n * plain text or buttons.\n */\nexport const headerNavVariants = cva([\n \"hidden md:flex items-center gap-1 min-h-[var(--header-content-height)]\",\n])\n\n/**\n * HeaderActions variant styles\n *\n * Enforces the Figma action-row height (`--header-content-height` 36px) so a\n * header with actions (e.g. the Mobile layout: logo + icons) hugs to 76px.\n */\nexport const headerActionsVariants = cva(\n [\n \"flex items-center gap-2 min-h-[var(--header-content-height)]\",\n ],\n {\n variants: {\n align: {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n },\n },\n defaultVariants: {\n align: \"end\",\n },\n }\n)\n","\"use client\"\n\nimport type {\n HeaderActionsProps,\n HeaderBrandProps,\n HeaderNavProps,\n HeaderProps,\n} from \"./Header.types\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n headerActionsVariants,\n headerBrandVariants,\n headerContainerVariants,\n headerNavVariants,\n headerVariants,\n} from \"./Header.variants\"\n\n/**\n * Header - A responsive header component for site navigation.\n *\n * Supports multiple visual variants, Figma layouts, and sticky positioning.\n * Height follows the Figma model: 64px for a logo-only header, 76px once a\n * HeaderNav/HeaderActions row is present (content-driven, no `size` prop).\n *\n * @example\n * <Header variant=\"default\" sticky>\n * <HeaderBrand asLink href=\"/\">Logo</HeaderBrand>\n * <HeaderNav>\n * <a href=\"/about\">About</a>\n * <a href=\"/contact\">Contact</a>\n * </HeaderNav>\n * <HeaderActions>\n * <Button>Sign In</Button>\n * </HeaderActions>\n * </Header>\n */\nfunction Header({\n className,\n variant = \"default\",\n sticky = false,\n contained = false,\n layout = \"default\",\n containerClassName,\n children,\n ...props\n}: HeaderProps) {\n return (\n <header\n className={cn(headerVariants({ variant, sticky }), className)}\n data-slot=\"header\"\n {...props}\n >\n <div\n className={cn(\n headerContainerVariants({ contained, layout }),\n containerClassName\n )}\n data-layout={layout}\n data-slot=\"header-container\"\n >\n {children}\n </div>\n </header>\n )\n}\n\n/**\n * HeaderBrand - Logo/brand area of the header.\n *\n * Can optionally render as a link when asLink is true.\n */\nfunction HeaderBrand({\n className,\n asLink = false,\n href = \"/\",\n children,\n ...props\n}: HeaderBrandProps) {\n if (asLink) {\n return (\n <a\n className={cn(headerBrandVariants(), className)}\n data-slot=\"header-brand\"\n href={href}\n {...(props as React.ComponentProps<\"a\">)}\n >\n {children}\n </a>\n )\n }\n\n return (\n <div\n className={cn(headerBrandVariants(), className)}\n data-slot=\"header-brand\"\n {...props}\n >\n {children}\n </div>\n )\n}\n\n/**\n * HeaderNav - Navigation container for header links.\n */\nfunction HeaderNav({ className, children, ...props }: HeaderNavProps) {\n return (\n <nav\n className={cn(headerNavVariants(), className)}\n data-slot=\"header-nav\"\n {...props}\n >\n {children}\n </nav>\n )\n}\n\n/**\n * HeaderActions - Actions container for buttons/controls.\n */\nfunction HeaderActions({\n className,\n align = \"end\",\n children,\n ...props\n}: HeaderActionsProps) {\n return (\n <div\n className={cn(headerActionsVariants({ align }), className)}\n data-slot=\"header-actions\"\n {...props}\n >\n {children}\n </div>\n )\n}\n\nexport { Header, HeaderActions, HeaderBrand, HeaderNav }\n"]}
@@ -1,5 +1,5 @@
1
1
  import { cn } from './chunk-HRNDJU7D.js';
2
- import { Lightbulb, CircleCheck, CircleX, TriangleAlert, Info, FileText } from 'lucide-react';
2
+ import { FileText, Lightbulb, CircleCheck, CircleX, TriangleAlert, Info } from 'lucide-react';
3
3
  import { cva } from 'class-variance-authority';
4
4
  import { jsx, jsxs } from 'react/jsx-runtime';
5
5
 
@@ -14,11 +14,12 @@ var calloutVariants = cva(
14
14
  warning: "bg-[color:var(--warning-subtle)] border-l-warning",
15
15
  error: "bg-[color:var(--destructive-subtle)] border-l-destructive",
16
16
  success: "bg-[color:var(--success-subtle)] border-l-success",
17
- tip: "bg-[color:var(--tip-bg)] border-l-tip"
17
+ tip: "bg-[color:var(--tip-bg)] border-l-tip",
18
+ transparent: "bg-transparent border-l-muted-foreground"
18
19
  },
19
20
  size: {
20
21
  sm: "p-[var(--callout-root-padding-sm)] text-[length:var(--callout-text-sm)]",
21
- md: "p-[var(--callout-root-padding-md)] text-[length:var(--callout-text-md)]",
22
+ md: "px-[var(--callout-root-padding-md)] py-[var(--callout-root-padding-sm)] text-[length:var(--callout-text-md)]",
22
23
  lg: "p-[var(--callout-root-padding-lg)] text-[length:var(--callout-text-lg)]"
23
24
  }
24
25
  },
@@ -34,7 +35,8 @@ var iconColorVariants = {
34
35
  warning: "text-warning",
35
36
  error: "text-destructive",
36
37
  success: "text-success",
37
- tip: "text-tip"
38
+ tip: "text-tip",
39
+ transparent: "text-muted-foreground"
38
40
  };
39
41
  var variantIcons = {
40
42
  default: FileText,
@@ -42,7 +44,8 @@ var variantIcons = {
42
44
  warning: TriangleAlert,
43
45
  error: CircleX,
44
46
  success: CircleCheck,
45
- tip: Lightbulb
47
+ tip: Lightbulb,
48
+ transparent: FileText
46
49
  };
47
50
  function Callout({
48
51
  children,
@@ -86,5 +89,5 @@ function Callout({
86
89
  }
87
90
 
88
91
  export { Callout, calloutVariants };
89
- //# sourceMappingURL=chunk-FUCQNVJL.js.map
90
- //# sourceMappingURL=chunk-FUCQNVJL.js.map
92
+ //# sourceMappingURL=chunk-XLTSCY22.js.map
93
+ //# sourceMappingURL=chunk-XLTSCY22.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/Callout/Callout.variants.ts","../src/components/data-display/Callout/Callout.tsx"],"names":[],"mappings":";;;;;AAQO,IAAM,eAAA,GAAkB,GAAA;AAAA;AAAA,EAE7B,yFAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,uCAAA;AAAA,QACT,IAAA,EAAM,6CAAA;AAAA,QACN,OAAA,EAAS,mDAAA;AAAA,QACT,KAAA,EAAO,2DAAA;AAAA,QACP,OAAA,EAAS,mDAAA;AAAA,QACT,GAAA,EAAK,uCAAA;AAAA,QACL,WAAA,EAAa;AAAA,OACf;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,yEAAA;AAAA,QACJ,EAAA,EAAI,8GAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ;AAKO,IAAM,iBAAA,GAA4C;AAAA,EACvD,OAAA,EAAS,uBAAA;AAAA,EACT,IAAA,EAAM,WAAA;AAAA,EACN,OAAA,EAAS,cAAA;AAAA,EACT,KAAA,EAAO,kBAAA;AAAA,EACP,OAAA,EAAS,cAAA;AAAA,EACT,GAAA,EAAK,UAAA;AAAA,EACL,WAAA,EAAa;AACf,CAAA;AChCA,IAAM,YAAA,GAAe;AAAA,EACnB,OAAA,EAAS,QAAA;AAAA,EACT,IAAA,EAAM,IAAA;AAAA,EACN,OAAA,EAAS,aAAA;AAAA,EACT,KAAA,EAAO,OAAA;AAAA,EACP,OAAA,EAAS,WAAA;AAAA,EACT,GAAA,EAAK,SAAA;AAAA,EACL,WAAA,EAAa;AACf,CAAA;AAWA,SAAS,OAAA,CAAQ;AAAA,EACf,QAAA;AAAA,EACA,SAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,IAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAiB;AACf,EAAA,MAAM,IAAA,GAAO,YAAA,CAAa,OAAA,IAAW,SAAS,CAAA;AAC9C,EAAA,MAAM,SAAA,GAAY,iBAAA,CAAkB,OAAA,IAAW,SAAS,CAAA;AAGxD,EAAA,MAAM,WACJ,IAAA,KAAS,OAAA,KAAY,OAAA,IAAW,OAAA,KAAY,YAAY,OAAA,GAAU,MAAA,CAAA;AAEpE,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAW,QAAA,KAAa,OAAA,GAAU,WAAA,GAAc,QAAA;AAAA,MAChD,SAAA,EAAW,GAAG,eAAA,CAAgB,EAAE,SAAS,IAAA,EAAM,GAAG,SAAS,CAAA;AAAA,MAC3D,aAAW,IAAA,IAAQ,IAAA;AAAA,MACnB,WAAA,EAAU,SAAA;AAAA,MACV,gBAAc,OAAA,IAAW,SAAA;AAAA,MACzB,IAAA,EAAM,QAAA;AAAA,MACL,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EACb,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,iBAAA,EAAmB,SAAS,CAAA,EAAG,WAAA,EAAU,cAAA,EAC1D,QAAA,EAAA,IAAA,oBAAQ,GAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,UAAS,CAAA,EACpC,CAAA;AAAA,wBACA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mBAAA,EACZ,QAAA,EAAA;AAAA,UAAA,KAAA,oBACC,GAAA;AAAA,YAAC,IAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAU,yCAAA;AAAA,cACV,WAAA,EAAU,eAAA;AAAA,cAET,QAAA,EAAA;AAAA;AAAA,WACH;AAAA,8BAED,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EAAwB,WAAA,EAAU,mBAC9C,QAAA,EACH;AAAA,SAAA,EACF;AAAA,OAAA,EACF;AAAA;AAAA,GACF;AAEJ","file":"chunk-XLTSCY22.js","sourcesContent":["// Callout/Callout.variants.ts\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * Callout style variants using CVA\n *\n * @see https://cva.style/docs\n */\nexport const calloutVariants = cva(\n // Base styles (always applied)\n \"rounded-[var(--callout-root-radius)] border-l-[length:var(--callout-root-border-width)]\",\n {\n variants: {\n variant: {\n default: \"bg-muted/50 border-l-muted-foreground\",\n info: \"bg-[color:var(--info-subtle)] border-l-info\",\n warning: \"bg-[color:var(--warning-subtle)] border-l-warning\",\n error: \"bg-[color:var(--destructive-subtle)] border-l-destructive\",\n success: \"bg-[color:var(--success-subtle)] border-l-success\",\n tip: \"bg-[color:var(--tip-bg)] border-l-tip\",\n transparent: \"bg-transparent border-l-muted-foreground\",\n },\n size: {\n sm: \"p-[var(--callout-root-padding-sm)] text-[length:var(--callout-text-sm)]\",\n md: \"px-[var(--callout-root-padding-md)] py-[var(--callout-root-padding-sm)] text-[length:var(--callout-text-md)]\",\n lg: \"p-[var(--callout-root-padding-lg)] text-[length:var(--callout-text-lg)]\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n }\n)\n\n/**\n * Icon color mapping by variant\n */\nexport const iconColorVariants: Record<string, string> = {\n default: \"text-muted-foreground\",\n info: \"text-info\",\n warning: \"text-warning\",\n error: \"text-destructive\",\n success: \"text-success\",\n tip: \"text-tip\",\n transparent: \"text-muted-foreground\",\n}\n\n// Export variant prop types\nexport type CalloutVariantProps = VariantProps<typeof calloutVariants>\n","import type { VariantProps } from \"class-variance-authority\"\n\nimport {\n CircleCheck,\n CircleX,\n FileText,\n Info,\n Lightbulb,\n TriangleAlert,\n} from \"lucide-react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { calloutVariants, iconColorVariants } from \"./Callout.variants\"\n\nconst variantIcons = {\n default: FileText,\n info: Info,\n warning: TriangleAlert,\n error: CircleX,\n success: CircleCheck,\n tip: Lightbulb,\n transparent: FileText,\n}\n\ninterface CalloutProps\n extends React.ComponentProps<\"div\">,\n VariantProps<typeof calloutVariants> {\n /** Custom icon to display (overrides variant icon) */\n icon?: React.ReactNode\n /** Title of the callout */\n title?: string\n}\n\nfunction Callout({\n children,\n className,\n icon,\n size,\n title,\n variant = \"default\",\n role,\n ...props\n}: CalloutProps) {\n const Icon = variantIcons[variant ?? \"default\"]\n const iconColor = iconColorVariants[variant ?? \"default\"]\n\n // Determine ARIA role based on variant\n const ariaRole =\n role ?? (variant === \"error\" || variant === \"warning\" ? \"alert\" : \"note\")\n\n return (\n <div\n aria-live={ariaRole === \"alert\" ? \"assertive\" : \"polite\"}\n className={cn(calloutVariants({ variant, size }), className)}\n data-size={size ?? \"md\"}\n data-slot=\"callout\"\n data-variant={variant ?? \"default\"}\n role={ariaRole}\n {...props}\n >\n <div className=\"flex gap-3\">\n <span className={cn(\"shrink-0 mt-0.5\", iconColor)} data-slot=\"callout-icon\">\n {icon ?? <Icon className=\"size-4\" />}\n </span>\n <div className=\"space-y-1 min-w-0\">\n {title && (\n <h5\n className=\"font-medium leading-none tracking-tight\"\n data-slot=\"callout-title\"\n >\n {title}\n </h5>\n )}\n <div className=\"text-muted-foreground\" data-slot=\"callout-content\">\n {children}\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nexport { Callout, calloutVariants }\nexport type { CalloutProps }\n"]}
@@ -27,12 +27,11 @@ var nativeSelectVariants = cva(
27
27
  variant: {
28
28
  default: "border-input shadow-xs",
29
29
  filled: "border-transparent bg-[color:var(--native-select-variant-filled-bg)]",
30
- flushed: "rounded-none border-x-0 border-t-0 border-b-input px-0 pr-7",
31
- unstyled: "border-0 bg-transparent p-0 pr-6 shadow-none focus-visible:ring-0"
30
+ flushed: "rounded-none border-x-0 border-t-0 border-b-input px-0 pr-7"
32
31
  }
33
32
  },
34
33
  defaultVariants: {
35
- size: "md",
34
+ size: "lg",
36
35
  variant: "default"
37
36
  }
38
37
  }
@@ -87,7 +86,7 @@ var nativeSelectWithLeftIconPadding = {
87
86
  };
88
87
  function NativeSelect({
89
88
  className,
90
- size = "md",
89
+ size = "lg",
91
90
  variant,
92
91
  leftIcon,
93
92
  ...props
@@ -149,5 +148,5 @@ function NativeSelectOptGroup({
149
148
  }
150
149
 
151
150
  export { NativeSelect, NativeSelectOptGroup, NativeSelectOption, nativeSelectIconVariants, nativeSelectLeftIconVariants, nativeSelectVariants, nativeSelectWithLeftIconPadding, nativeSelectWrapperVariants };
152
- //# sourceMappingURL=chunk-K3J7YLL4.js.map
153
- //# sourceMappingURL=chunk-K3J7YLL4.js.map
151
+ //# sourceMappingURL=chunk-XOGMDABS.js.map
152
+ //# sourceMappingURL=chunk-XOGMDABS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/forms/NativeSelect/NativeSelect.variants.ts","../src/components/forms/NativeSelect/NativeSelect.tsx"],"names":[],"mappings":"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","file":"chunk-XOGMDABS.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * NativeSelect variant styles using CVA\n */\nexport const nativeSelectVariants = cva(\n // Base styles\n [\n \"w-full min-w-0 appearance-none rounded-[var(--native-select-root-radius)] border bg-transparent transition-[color,box-shadow] outline-none\",\n \"placeholder:text-muted-foreground\",\n \"selection:bg-primary selection:text-primary-foreground\",\n \"dark:bg-input/30 dark:hover:bg-input/50\",\n \"disabled:pointer-events-none disabled:cursor-not-allowed\",\n \"focus-visible:border-[color:var(--native-select-root-border-focus)] focus-visible:ring-[color:var(--native-select-focus-ring-color)]/50 focus-visible:ring-[length:var(--native-select-focus-ring-width)]\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n ],\n {\n variants: {\n size: {\n xs: \"h-7 px-2 py-0.5 pr-7 text-xs\",\n sm: \"h-8 px-2.5 py-1 pr-8 text-sm\",\n md: \"h-9 px-3 py-1 pr-9 text-base md:text-sm\",\n lg: \"h-10 px-3.5 py-1.5 pr-10 text-base\",\n xl: \"h-12 px-4 py-2 pr-11 text-lg\",\n },\n variant: {\n default: \"border-input shadow-xs\",\n filled: \"border-transparent bg-[color:var(--native-select-variant-filled-bg)]\",\n flushed: \"rounded-none border-x-0 border-t-0 border-b-input px-0 pr-7\",\n },\n },\n defaultVariants: {\n size: \"lg\",\n variant: \"default\",\n },\n }\n)\n\n/**\n * Wrapper styles for the NativeSelect container\n */\nexport const nativeSelectWrapperVariants = cva(\n \"group/native-select relative w-fit has-[select:disabled]:opacity-50\",\n {\n variants: {},\n defaultVariants: {},\n }\n)\n\n/**\n * Icon styles based on size\n */\nexport const nativeSelectIconVariants = cva(\n \"text-muted-foreground pointer-events-none absolute top-1/2 -translate-y-1/2 opacity-50 select-none\",\n {\n variants: {\n size: {\n xs: \"right-2 size-3\",\n sm: \"right-2.5 size-3.5\",\n md: \"right-3 size-4\",\n lg: \"right-3.5 size-4\",\n xl: \"right-4 size-5\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\n/**\n * Left icon styles based on size\n */\nexport const nativeSelectLeftIconVariants = cva(\n \"text-muted-foreground pointer-events-none absolute top-1/2 -translate-y-1/2 opacity-70 select-none\",\n {\n variants: {\n size: {\n xs: \"left-2 size-3\",\n sm: \"left-2.5 size-3.5\",\n md: \"left-3 size-4\",\n lg: \"left-3.5 size-4\",\n xl: \"left-4 size-5\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\n/**\n * Additional padding-left when leftIcon is present\n */\nexport const nativeSelectWithLeftIconPadding: Record<NativeSelectSize, string> = {\n xs: \"pl-7\",\n sm: \"pl-8\",\n md: \"pl-9\",\n lg: \"pl-10\",\n xl: \"pl-11\",\n}\n\ntype NativeSelectSize = \"lg\" | \"md\" | \"sm\" | \"xl\" | \"xs\"\n\nexport type NativeSelectVariantProps = VariantProps<typeof nativeSelectVariants>\n","import type {\n NativeSelectOptGroupProps,\n NativeSelectOptionProps,\n NativeSelectProps,\n} from \"./NativeSelect.types\"\n\nimport { ChevronDownIcon } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n nativeSelectIconVariants,\n nativeSelectLeftIconVariants,\n nativeSelectVariants,\n nativeSelectWithLeftIconPadding,\n nativeSelectWrapperVariants,\n} from \"./NativeSelect.variants\"\n\nfunction NativeSelect({\n className,\n size = \"lg\",\n variant,\n leftIcon,\n ...props\n}: NativeSelectProps) {\n return (\n <div\n className={cn(nativeSelectWrapperVariants())}\n data-slot=\"native-select-wrapper\"\n >\n {leftIcon && (\n <span\n aria-hidden=\"true\"\n className={cn(nativeSelectLeftIconVariants({ size }))}\n data-slot=\"native-select-left-icon\"\n >\n {leftIcon}\n </span>\n )}\n <select\n className={cn(\n nativeSelectVariants({ size, variant }),\n leftIcon && nativeSelectWithLeftIconPadding[size],\n className\n )}\n data-slot=\"native-select\"\n {...props}\n />\n <ChevronDownIcon\n aria-hidden=\"true\"\n className={cn(nativeSelectIconVariants({ size }))}\n data-slot=\"native-select-icon\"\n />\n </div>\n )\n}\n\nfunction NativeSelectOption({ ...props }: NativeSelectOptionProps) {\n return <option data-slot=\"native-select-option\" {...props} />\n}\n\nfunction NativeSelectOptGroup({\n className,\n ...props\n}: NativeSelectOptGroupProps) {\n return (\n <optgroup\n className={cn(className)}\n data-slot=\"native-select-optgroup\"\n {...props}\n />\n )\n}\n\nexport { NativeSelect, NativeSelectOptGroup, NativeSelectOption }\n"]}
@@ -1,4 +1,4 @@
1
- import { AlertDialog, AlertDialogTrigger, AlertDialogContent, AlertDialogHeader, AlertDialogTitle, AlertDialogDescription, AlertDialogFooter, AlertDialogCancel, AlertDialogAction } from './chunk-KNH7JW6E.js';
1
+ import { AlertDialog, AlertDialogTrigger, AlertDialogContent, AlertDialogHeader, AlertDialogTitle, AlertDialogDescription, AlertDialogFooter, AlertDialogCancel, AlertDialogAction } from './chunk-IBVCSZCH.js';
2
2
  import { cn } from './chunk-HRNDJU7D.js';
3
3
  import 'react';
4
4
  import { jsxs, jsx } from 'react/jsx-runtime';
@@ -86,5 +86,5 @@ function ConfirmModal({
86
86
  }
87
87
 
88
88
  export { ConfirmModal };
89
- //# sourceMappingURL=chunk-53RWD44Z.js.map
90
- //# sourceMappingURL=chunk-53RWD44Z.js.map
89
+ //# sourceMappingURL=chunk-XRMKL43Y.js.map
90
+ //# sourceMappingURL=chunk-XRMKL43Y.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/feedback/ConfirmModal/ConfirmModal.tsx"],"names":[],"mappings":"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","file":"chunk-53RWD44Z.js","sourcesContent":["\"use client\"\n\nimport type {\n ConfirmModalProps,\n ConfirmModalSize,\n ConfirmModalVariant,\n} from \"./ConfirmModal.types\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n AlertDialogTrigger,\n} from \"../AlertDialog\"\n\nconst sizeClasses: Record<ConfirmModalSize, string> = {\n sm: \"sm:max-w-sm\",\n md: \"sm:max-w-md\",\n lg: \"sm:max-w-lg\",\n}\n\nconst confirmButtonVariants: Record<ConfirmModalVariant, string> = {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive: \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n warning: \"bg-warning text-warning-fg hover:bg-warning/90\",\n}\n\nconst fallbackDescription = \"Confirme esta ação para continuar.\"\n\n/**\n * ConfirmModal - Simplified confirmation dialog\n *\n * A wrapper over AlertDialog that provides a declarative API for confirmation dialogs.\n * Abstracts the complexity of AlertDialog subcomponents into a simple props interface.\n *\n * @example\n * ```tsx\n * // Basic usage with trigger\n * <ConfirmModal\n * trigger={<Button>Delete</Button>}\n * title=\"Delete item\"\n * description=\"This action cannot be undone.\"\n * variant=\"destructive\"\n * onConfirm={() => deleteItem()}\n * />\n *\n * // Controlled usage\n * <ConfirmModal\n * open={open}\n * onOpenChange={setOpen}\n * title=\"Confirm action\"\n * onConfirm={handleConfirm}\n * />\n * ```\n */\nfunction ConfirmModal({\n open,\n onOpenChange,\n defaultOpen = false,\n title = \"Confirmar\",\n description,\n icon,\n children,\n confirmLabel = \"Confirmar\",\n cancelLabel = \"Cancelar\",\n variant = \"default\",\n onConfirm,\n onCancel,\n loading = false,\n disabled = false,\n trigger,\n className,\n size = \"md\",\n}: ConfirmModalProps) {\n const isDisabled = loading || disabled\n const accessibleDescription = description ?? fallbackDescription\n\n const handleConfirm = (\n event: React.MouseEvent<HTMLButtonElement>\n ): void => {\n event.preventDefault()\n if (onConfirm) {\n void onConfirm()\n }\n }\n\n const handleCancel = (): void => {\n onCancel?.()\n onOpenChange?.(false)\n }\n\n return (\n <AlertDialog\n defaultOpen={defaultOpen}\n open={open}\n onOpenChange={onOpenChange}\n >\n {trigger && <AlertDialogTrigger asChild>{trigger}</AlertDialogTrigger>}\n <AlertDialogContent\n className={cn(sizeClasses[size], className)}\n data-slot=\"confirm-modal\"\n >\n <AlertDialogHeader>\n {icon && (\n <div className=\"mb-2\" data-slot=\"confirm-modal-icon\">\n {icon}\n </div>\n )}\n <AlertDialogTitle>{title}</AlertDialogTitle>\n <AlertDialogDescription className={description ? undefined : \"sr-only\"}>\n {accessibleDescription}\n </AlertDialogDescription>\n </AlertDialogHeader>\n {children && (\n <div data-slot=\"confirm-modal-content\">{children}</div>\n )}\n <AlertDialogFooter>\n <AlertDialogCancel disabled={isDisabled} onClick={handleCancel}>\n {cancelLabel}\n </AlertDialogCancel>\n <AlertDialogAction\n className={cn(confirmButtonVariants[variant])}\n disabled={isDisabled}\n onClick={handleConfirm}\n >\n {confirmLabel}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n )\n}\n\nexport { ConfirmModal }\n"]}
1
+ {"version":3,"sources":["../src/components/feedback/ConfirmModal/ConfirmModal.tsx"],"names":[],"mappings":"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","file":"chunk-XRMKL43Y.js","sourcesContent":["\"use client\"\n\nimport type {\n ConfirmModalProps,\n ConfirmModalSize,\n ConfirmModalVariant,\n} from \"./ConfirmModal.types\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n AlertDialogTrigger,\n} from \"../AlertDialog\"\n\nconst sizeClasses: Record<ConfirmModalSize, string> = {\n sm: \"sm:max-w-sm\",\n md: \"sm:max-w-md\",\n lg: \"sm:max-w-lg\",\n}\n\nconst confirmButtonVariants: Record<ConfirmModalVariant, string> = {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive: \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n warning: \"bg-warning text-warning-fg hover:bg-warning/90\",\n}\n\nconst fallbackDescription = \"Confirme esta ação para continuar.\"\n\n/**\n * ConfirmModal - Simplified confirmation dialog\n *\n * A wrapper over AlertDialog that provides a declarative API for confirmation dialogs.\n * Abstracts the complexity of AlertDialog subcomponents into a simple props interface.\n *\n * @example\n * ```tsx\n * // Basic usage with trigger\n * <ConfirmModal\n * trigger={<Button>Delete</Button>}\n * title=\"Delete item\"\n * description=\"This action cannot be undone.\"\n * variant=\"destructive\"\n * onConfirm={() => deleteItem()}\n * />\n *\n * // Controlled usage\n * <ConfirmModal\n * open={open}\n * onOpenChange={setOpen}\n * title=\"Confirm action\"\n * onConfirm={handleConfirm}\n * />\n * ```\n */\nfunction ConfirmModal({\n open,\n onOpenChange,\n defaultOpen = false,\n title = \"Confirmar\",\n description,\n icon,\n children,\n confirmLabel = \"Confirmar\",\n cancelLabel = \"Cancelar\",\n variant = \"default\",\n onConfirm,\n onCancel,\n loading = false,\n disabled = false,\n trigger,\n className,\n size = \"md\",\n}: ConfirmModalProps) {\n const isDisabled = loading || disabled\n const accessibleDescription = description ?? fallbackDescription\n\n const handleConfirm = (\n event: React.MouseEvent<HTMLButtonElement>\n ): void => {\n event.preventDefault()\n if (onConfirm) {\n void onConfirm()\n }\n }\n\n const handleCancel = (): void => {\n onCancel?.()\n onOpenChange?.(false)\n }\n\n return (\n <AlertDialog\n defaultOpen={defaultOpen}\n open={open}\n onOpenChange={onOpenChange}\n >\n {trigger && <AlertDialogTrigger asChild>{trigger}</AlertDialogTrigger>}\n <AlertDialogContent\n className={cn(sizeClasses[size], className)}\n data-slot=\"confirm-modal\"\n >\n <AlertDialogHeader>\n {icon && (\n <div className=\"mb-2\" data-slot=\"confirm-modal-icon\">\n {icon}\n </div>\n )}\n <AlertDialogTitle>{title}</AlertDialogTitle>\n <AlertDialogDescription className={description ? undefined : \"sr-only\"}>\n {accessibleDescription}\n </AlertDialogDescription>\n </AlertDialogHeader>\n {children && (\n <div data-slot=\"confirm-modal-content\">{children}</div>\n )}\n <AlertDialogFooter>\n <AlertDialogCancel disabled={isDisabled} onClick={handleCancel}>\n {cancelLabel}\n </AlertDialogCancel>\n <AlertDialogAction\n className={cn(confirmButtonVariants[variant])}\n disabled={isDisabled}\n onClick={handleConfirm}\n >\n {confirmLabel}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n )\n}\n\nexport { ConfirmModal }\n"]}
@@ -1,6 +1,6 @@
1
1
  import { Select, SelectTrigger, SelectValue, SelectContent, SelectItem } from './chunk-WBE6VQOO.js';
2
2
  import { TextInput } from './chunk-PWCMCMDN.js';
3
- import { Button } from './chunk-RPV77BCQ.js';
3
+ import { Button } from './chunk-ONQCNOLU.js';
4
4
  import { cn } from './chunk-HRNDJU7D.js';
5
5
  import { X, PlusCircle, Trash2 } from 'lucide-react';
6
6
  import * as React from 'react';
@@ -478,5 +478,5 @@ function FilterBuilder({
478
478
  FilterBuilder.displayName = "FilterBuilder";
479
479
 
480
480
  export { FilterBuilder, isFilterCondition, isFilterGroup };
481
- //# sourceMappingURL=chunk-DZALMUQD.js.map
482
- //# sourceMappingURL=chunk-DZALMUQD.js.map
481
+ //# sourceMappingURL=chunk-Y3BOERVB.js.map
482
+ //# sourceMappingURL=chunk-Y3BOERVB.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/data-display/DataTable/FilterBuilder/FilterBuilder.types.ts","../src/components/data-display/DataTable/FilterBuilder/FilterBuilder.tsx"],"names":["Fragment"],"mappings":"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","file":"chunk-DZALMUQD.js","sourcesContent":["/**\n * Filter operators for different field types\n */\nexport type FilterOperator =\n // Text operators\n | \"after\"\n | \"before\"\n | \"between\"\n | \"contains\"\n | \"dateBetween\"\n | \"endsWith\"\n | \"equals\"\n | \"gt\"\n // Number operators\n | \"gte\"\n | \"in\"\n | \"isEmpty\"\n | \"isNotEmpty\"\n | \"lt\"\n // Date operators\n | \"lte\"\n | \"notContains\"\n | \"notEquals\"\n // Select operators\n | \"notIn\"\n | \"startsWith\"\n\n/**\n * A single filter condition\n */\nexport interface FilterCondition {\n /** Column/field to filter on */\n column: string\n /** Unique identifier for the condition */\n id: string\n /** Comparison operator */\n operator: FilterOperator\n /** Primary value for comparison */\n value: unknown\n /** Secondary value for \"between\" operators */\n value2?: unknown\n}\n\n/**\n * A group of filter conditions with AND/OR logic\n */\nexport interface FilterGroup {\n /** Conditions or nested groups */\n conditions: (FilterCondition | FilterGroup)[]\n /** Unique identifier for the group */\n id: string\n /** Logical operator for combining conditions */\n logic: \"AND\" | \"OR\"\n}\n\n/**\n * A saved filter preset\n */\nexport interface FilterPreset {\n /** The filter configuration */\n filter: FilterGroup\n /** Unique identifier for the preset */\n id: string\n /** Display name for the preset */\n name: string\n}\n\n/**\n * Column configuration for the filter builder\n */\nexport interface FilterBuilderColumn {\n /** Column identifier */\n id: string\n /** Display label */\n label: string\n /** Options for select type columns */\n options?: string[]\n /** Data type for operator selection */\n type: \"date\" | \"number\" | \"select\" | \"text\"\n}\n\n/**\n * FilterBuilder component props\n */\nexport interface FilterBuilderProps {\n /** Additional CSS classes */\n className?: string\n /** Available columns for filtering */\n columns: FilterBuilderColumn[]\n /** Current filter configuration */\n filter: FilterGroup\n /** Callback to delete a preset */\n onDeletePreset?: (presetId: string) => void\n /** Callback when filter changes */\n onFilterChange: (filter: FilterGroup) => void\n /** Callback to save a new preset */\n onSavePreset?: (preset: FilterPreset) => void\n /** Saved filter presets */\n presets?: FilterPreset[]\n}\n\n/**\n * Type guard to check if an item is a FilterGroup\n */\nexport function isFilterGroup(\n item: FilterCondition | FilterGroup\n): item is FilterGroup {\n return \"logic\" in item && \"conditions\" in item\n}\n\n/**\n * Type guard to check if an item is a FilterCondition\n */\nexport function isFilterCondition(\n item: FilterCondition | FilterGroup\n): item is FilterCondition {\n return \"column\" in item && \"operator\" in item\n}\n","// FilterBuilder/FilterBuilder.tsx\n\"use client\"\n\nimport type {\n FilterBuilderColumn,\n FilterBuilderProps,\n FilterCondition,\n FilterGroup,\n FilterOperator,\n FilterPreset,\n} from \"./FilterBuilder.types\"\n\nimport { PlusCircle, Trash2, X } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../../lib/utils\"\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../../../forms/Select\"\nimport { TextInput } from \"../../../forms/TextInput\"\nimport { Button } from \"../../../primitives/Button\"\nimport { isFilterCondition, isFilterGroup } from \"./FilterBuilder.types\"\n\n// ============================================\n// CONSTANTS\n// ============================================\n\n/**\n * Operator labels for display\n */\nconst OPERATOR_LABELS: Record<FilterOperator, string> = {\n // Text\n contains: \"Contains\",\n notContains: \"Does not contain\",\n equals: \"Equals\",\n notEquals: \"Does not equal\",\n startsWith: \"Starts with\",\n endsWith: \"Ends with\",\n isEmpty: \"Is empty\",\n isNotEmpty: \"Is not empty\",\n // Number\n gt: \"Greater than\",\n gte: \"Greater than or equal\",\n lt: \"Less than\",\n lte: \"Less than or equal\",\n between: \"Between\",\n // Date\n before: \"Before\",\n after: \"After\",\n dateBetween: \"Date between\",\n // Select\n in: \"Is any of\",\n notIn: \"Is none of\",\n}\n\n/**\n * Operators available by column type\n */\nconst OPERATORS_BY_TYPE: Record<FilterBuilderColumn[\"type\"], FilterOperator[]> = {\n text: [\"contains\", \"notContains\", \"equals\", \"notEquals\", \"startsWith\", \"endsWith\", \"isEmpty\", \"isNotEmpty\"],\n number: [\"equals\", \"notEquals\", \"gt\", \"gte\", \"lt\", \"lte\", \"between\"],\n date: [\"equals\", \"notEquals\", \"before\", \"after\", \"dateBetween\"],\n select: [\"equals\", \"notEquals\", \"in\", \"notIn\"],\n}\n\n/**\n * Generate a unique ID\n */\nfunction generateId(): string {\n return Math.random().toString(36).slice(2, 11)\n}\n\n/**\n * Create an empty condition\n */\nfunction createEmptyCondition(columnId?: string): FilterCondition {\n return {\n id: generateId(),\n column: columnId ?? \"\",\n operator: \"contains\",\n value: \"\",\n }\n}\n\n/**\n * Create an empty group\n */\nfunction createEmptyGroup(): FilterGroup {\n return {\n id: generateId(),\n logic: \"AND\",\n conditions: [],\n }\n}\n\n// ============================================\n// FILTER CONDITION COMPONENT\n// ============================================\n\ninterface FilterConditionRowProps {\n columns: FilterBuilderColumn[]\n condition: FilterCondition\n onChange: (condition: FilterCondition) => void\n onRemove: () => void\n}\n\nfunction FilterConditionRow({\n condition,\n columns,\n onChange,\n onRemove,\n}: FilterConditionRowProps) {\n const selectedColumn = columns.find((col) => col.id === condition.column)\n const availableOperators = selectedColumn\n ? OPERATORS_BY_TYPE[selectedColumn.type]\n : OPERATORS_BY_TYPE.text\n\n const needsValue = ![\"isEmpty\", \"isNotEmpty\"].includes(condition.operator)\n const needsSecondValue = [\"between\", \"dateBetween\"].includes(condition.operator)\n\n const handleColumnChange = (columnId: string) => {\n const newColumn = columns.find((col) => col.id === columnId)\n const newOperators = newColumn\n ? OPERATORS_BY_TYPE[newColumn.type]\n : OPERATORS_BY_TYPE.text\n\n onChange({\n ...condition,\n column: columnId,\n operator: newOperators[0] ?? \"equals\",\n value: \"\",\n value2: undefined,\n })\n }\n\n const handleOperatorChange = (operator: string) => {\n onChange({\n ...condition,\n operator: operator as FilterOperator,\n value: [\"isEmpty\", \"isNotEmpty\"].includes(operator) ? \"\" : condition.value,\n value2: undefined,\n })\n }\n\n const handleValueChange = (value: string) => {\n onChange({ ...condition, value })\n }\n\n const handleValue2Change = (value2: string) => {\n onChange({ ...condition, value2 })\n }\n\n return (\n <div\n aria-label={`Filter condition: ${selectedColumn?.label ?? \"Select column\"}`}\n className=\"flex flex-wrap items-center gap-2\"\n data-slot=\"filter-condition\"\n role=\"group\"\n >\n {/* Column Select */}\n <Select value={condition.column} onValueChange={handleColumnChange}>\n <SelectTrigger\n aria-label=\"Column\"\n className=\"w-36\"\n size=\"sm\"\n >\n <SelectValue placeholder=\"Select column\" />\n </SelectTrigger>\n <SelectContent>\n {columns.map((col) => (\n <SelectItem key={col.id} value={col.id}>\n {col.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n\n {/* Operator Select */}\n {condition.column && (\n <Select value={condition.operator} onValueChange={handleOperatorChange}>\n <SelectTrigger\n aria-label=\"Operator\"\n className=\"w-40\"\n size=\"sm\"\n >\n <SelectValue placeholder=\"Select operator\" />\n </SelectTrigger>\n <SelectContent>\n {availableOperators.map((op) => (\n <SelectItem key={op} value={op}>\n {OPERATOR_LABELS[op]}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )}\n\n {/* Value Input */}\n {needsValue && condition.column && (\n selectedColumn?.type === \"select\" && selectedColumn.options ? (\n <Select\n value={condition.value as string}\n onValueChange={handleValueChange}\n >\n <SelectTrigger\n aria-label=\"Value\"\n className=\"w-36\"\n size=\"sm\"\n >\n <SelectValue placeholder=\"Select value\" />\n </SelectTrigger>\n <SelectContent>\n {selectedColumn.options.map((option) => (\n <SelectItem key={option} value={option}>\n {option}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n ) : (\n <TextInput\n aria-label=\"Value\"\n className=\"w-36\"\n placeholder=\"Enter value\"\n size=\"sm\"\n type={selectedColumn?.type === \"number\" ? \"number\" : selectedColumn?.type === \"date\" ? \"date\" : \"text\"}\n value={condition.value as string}\n onChange={(e) => { handleValueChange(e.target.value); }}\n />\n )\n )}\n\n {/* Second Value (for between operators) */}\n {needsSecondValue && condition.column && (\n <>\n <span className=\"text-sm text-[color:var(--text-muted)]\">and</span>\n <TextInput\n aria-label=\"Value\"\n className=\"w-36\"\n placeholder=\"Enter value\"\n size=\"sm\"\n type={selectedColumn?.type === \"number\" ? \"number\" : selectedColumn?.type === \"date\" ? \"date\" : \"text\"}\n value={typeof condition.value2 === \"string\" ? condition.value2 : typeof condition.value2 === \"number\" ? condition.value2.toString() : \"\"}\n onChange={(e) => { handleValue2Change(e.target.value); }}\n />\n </>\n )}\n\n {/* Remove Button */}\n <Button\n aria-label=\"Remove condition\"\n className=\"text-[color:var(--text-muted)] hover:text-[color:var(--text-destructive)]\"\n size=\"icon-sm\"\n type=\"button\"\n variant=\"ghost\"\n onClick={onRemove}\n >\n <X className=\"size-4\" />\n </Button>\n </div>\n )\n}\n\n// ============================================\n// FILTER GROUP COMPONENT\n// ============================================\n\ninterface FilterGroupComponentProps {\n columns: FilterBuilderColumn[]\n depth: number\n group: FilterGroup\n isRoot?: boolean\n onChange: (group: FilterGroup) => void\n onRemove?: () => void\n}\n\nfunction FilterGroupComponent({\n group,\n columns,\n depth,\n onChange,\n onRemove,\n isRoot = false,\n}: FilterGroupComponentProps) {\n const handleLogicToggle = () => {\n onChange({\n ...group,\n logic: group.logic === \"AND\" ? \"OR\" : \"AND\",\n })\n }\n\n const handleAddCondition = () => {\n const defaultColumn = columns[0]?.id ?? \"\"\n onChange({\n ...group,\n conditions: [...group.conditions, createEmptyCondition(defaultColumn)],\n })\n }\n\n const handleAddGroup = () => {\n onChange({\n ...group,\n conditions: [...group.conditions, createEmptyGroup()],\n })\n }\n\n const handleConditionChange = (index: number, item: FilterCondition | FilterGroup) => {\n const newConditions = [...group.conditions]\n newConditions[index] = item\n onChange({ ...group, conditions: newConditions })\n }\n\n const handleConditionRemove = (index: number) => {\n onChange({\n ...group,\n conditions: group.conditions.filter((_, i) => i !== index),\n })\n }\n\n return (\n <div\n className={cn(\n \"rounded-md border p-3\",\n isRoot\n ? \"border-[color:var(--border-default)] bg-[color:var(--surface-default)]\"\n : \"border-dashed border-[color:var(--border-muted)] bg-[color:var(--surface-muted)] ml-4\"\n )}\n aria-label={`Filter group with ${group.logic} logic`}\n data-slot=\"filter-group\"\n role=\"group\"\n >\n {/* Group Header */}\n <div className=\"mb-3 flex items-center gap-2\">\n {/* Logic Toggle */}\n <Button\n aria-label={group.logic}\n aria-pressed={group.logic === \"AND\"}\n className=\"min-w-16 font-medium\"\n size=\"sm\"\n type=\"button\"\n variant={group.logic === \"AND\" ? \"secondary-color\" : \"outline\"}\n onClick={handleLogicToggle}\n >\n {group.logic}\n </Button>\n\n {/* Remove Group Button */}\n {!isRoot && onRemove && (\n <Button\n aria-label=\"Remove group\"\n className=\"ml-auto text-[color:var(--text-muted)] hover:text-[color:var(--text-destructive)]\"\n size=\"icon-sm\"\n type=\"button\"\n variant=\"ghost\"\n onClick={onRemove}\n >\n <Trash2 className=\"size-4\" />\n </Button>\n )}\n </div>\n\n {/* Conditions */}\n <div className=\"space-y-2\">\n {group.conditions.length === 0 ? (\n <div className=\"py-4 text-center text-sm text-[color:var(--text-muted)]\">\n No conditions. Click &quot;Add Condition&quot; to create one.\n </div>\n ) : (\n group.conditions.map((item, index) => (\n <React.Fragment key={item.id}>\n {/* Logic label between conditions */}\n {index > 0 && (\n <div className=\"flex items-center gap-2 py-1\">\n <span className=\"text-xs font-medium uppercase text-[color:var(--text-muted)]\">\n {group.logic}\n </span>\n <div className=\"h-px flex-1 bg-[color:var(--border-muted)]\" />\n </div>\n )}\n\n {isFilterGroup(item) ? (\n <FilterGroupComponent\n columns={columns}\n depth={depth + 1}\n group={item}\n onChange={(updated) => { handleConditionChange(index, updated); }}\n onRemove={() => { handleConditionRemove(index); }}\n />\n ) : isFilterCondition(item) ? (\n <FilterConditionRow\n columns={columns}\n condition={item}\n onChange={(updated) => { handleConditionChange(index, updated); }}\n onRemove={() => { handleConditionRemove(index); }}\n />\n ) : null}\n </React.Fragment>\n ))\n )}\n </div>\n\n {/* Action Buttons */}\n <div className=\"mt-3 flex items-center gap-2\">\n <Button\n className=\"gap-1\"\n size=\"sm\"\n type=\"button\"\n variant=\"outline\"\n onClick={handleAddCondition}\n >\n <PlusCircle className=\"size-3\" />\n Add Condition\n </Button>\n\n <Button\n className=\"gap-1\"\n size=\"sm\"\n type=\"button\"\n variant=\"outline\"\n onClick={handleAddGroup}\n >\n <PlusCircle className=\"size-3\" />\n Add Group\n </Button>\n </div>\n </div>\n )\n}\n\n// ============================================\n// MAIN FILTER BUILDER COMPONENT\n// ============================================\n\n/**\n * FilterBuilder - Visual interface for building complex filter conditions\n *\n * Supports AND/OR logic with nested groups, multiple operators per field type,\n * and various value input types.\n *\n * @example\n * ```tsx\n * const columns = [\n * { id: \"name\", label: \"Name\", type: \"text\" },\n * { id: \"age\", label: \"Age\", type: \"number\" },\n * { id: \"status\", label: \"Status\", type: \"select\", options: [\"active\", \"inactive\"] },\n * ]\n *\n * <FilterBuilder\n * columns={columns}\n * filter={filter}\n * onFilterChange={setFilter}\n * />\n * ```\n */\nfunction FilterBuilder({\n className,\n columns,\n filter,\n onDeletePreset,\n onFilterChange,\n onSavePreset,\n presets,\n}: FilterBuilderProps) {\n const [presetName, setPresetName] = React.useState(\"\")\n const [showSaveInput, setShowSaveInput] = React.useState(false)\n\n const handleFilterChange = (updatedFilter: FilterGroup) => {\n onFilterChange(updatedFilter)\n }\n\n const handleSavePreset = () => {\n if (!onSavePreset || !presetName.trim()) return\n onSavePreset({\n id: Math.random().toString(36).slice(2, 11),\n name: presetName.trim(),\n filter: structuredClone(filter),\n })\n setPresetName(\"\")\n setShowSaveInput(false)\n }\n\n const handleLoadPreset = (preset: FilterPreset) => {\n onFilterChange(structuredClone(preset.filter))\n }\n\n return (\n <div\n aria-label=\"Filter builder\"\n className={cn(\"space-y-3\", className)}\n data-slot=\"filter-builder\"\n role=\"region\"\n >\n {/* Filter Presets */}\n {(presets && presets.length > 0) || onSavePreset ? (\n <div className=\"flex flex-wrap items-center gap-2\" data-slot=\"filter-presets\">\n {presets?.map((preset) => (\n <div key={preset.id} className=\"flex items-center gap-1\">\n <Button\n className=\"gap-1\"\n size=\"sm\"\n type=\"button\"\n variant=\"outline\"\n onClick={() => { handleLoadPreset(preset); }}\n >\n {preset.name}\n </Button>\n {onDeletePreset && (\n <Button\n aria-label={`Delete preset ${preset.name}`}\n size=\"icon-sm\"\n type=\"button\"\n variant=\"ghost\"\n onClick={() => { onDeletePreset(preset.id); }}\n >\n <X className=\"size-3\" />\n </Button>\n )}\n </div>\n ))}\n {onSavePreset && (\n showSaveInput ? (\n <div className=\"flex items-center gap-1\">\n <TextInput\n aria-label=\"Preset name\"\n className=\"h-7 w-32\"\n placeholder=\"Preset name\"\n size=\"sm\"\n value={presetName}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => { setPresetName(e.target.value); }}\n onKeyDown={(e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\") handleSavePreset()\n if (e.key === \"Escape\") { setShowSaveInput(false); setPresetName(\"\"); }\n }}\n />\n <Button\n disabled={!presetName.trim()}\n size=\"sm\"\n type=\"button\"\n variant=\"secondary-color\"\n onClick={handleSavePreset}\n >\n Save\n </Button>\n <Button\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n onClick={() => { setShowSaveInput(false); setPresetName(\"\"); }}\n >\n Cancel\n </Button>\n </div>\n ) : (\n <Button\n className=\"gap-1\"\n size=\"sm\"\n type=\"button\"\n variant=\"outline\"\n onClick={() => { setShowSaveInput(true); }}\n >\n <PlusCircle className=\"size-3\" />\n Save Preset\n </Button>\n )\n )}\n </div>\n ) : null}\n\n <FilterGroupComponent\n isRoot\n columns={columns}\n depth={0}\n group={filter}\n onChange={handleFilterChange}\n />\n </div>\n )\n}\n\nFilterBuilder.displayName = \"FilterBuilder\"\n\nexport { FilterBuilder }\n"]}
1
+ {"version":3,"sources":["../src/components/data-display/DataTable/FilterBuilder/FilterBuilder.types.ts","../src/components/data-display/DataTable/FilterBuilder/FilterBuilder.tsx"],"names":["Fragment"],"mappings":"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","file":"chunk-Y3BOERVB.js","sourcesContent":["/**\n * Filter operators for different field types\n */\nexport type FilterOperator =\n // Text operators\n | \"after\"\n | \"before\"\n | \"between\"\n | \"contains\"\n | \"dateBetween\"\n | \"endsWith\"\n | \"equals\"\n | \"gt\"\n // Number operators\n | \"gte\"\n | \"in\"\n | \"isEmpty\"\n | \"isNotEmpty\"\n | \"lt\"\n // Date operators\n | \"lte\"\n | \"notContains\"\n | \"notEquals\"\n // Select operators\n | \"notIn\"\n | \"startsWith\"\n\n/**\n * A single filter condition\n */\nexport interface FilterCondition {\n /** Column/field to filter on */\n column: string\n /** Unique identifier for the condition */\n id: string\n /** Comparison operator */\n operator: FilterOperator\n /** Primary value for comparison */\n value: unknown\n /** Secondary value for \"between\" operators */\n value2?: unknown\n}\n\n/**\n * A group of filter conditions with AND/OR logic\n */\nexport interface FilterGroup {\n /** Conditions or nested groups */\n conditions: (FilterCondition | FilterGroup)[]\n /** Unique identifier for the group */\n id: string\n /** Logical operator for combining conditions */\n logic: \"AND\" | \"OR\"\n}\n\n/**\n * A saved filter preset\n */\nexport interface FilterPreset {\n /** The filter configuration */\n filter: FilterGroup\n /** Unique identifier for the preset */\n id: string\n /** Display name for the preset */\n name: string\n}\n\n/**\n * Column configuration for the filter builder\n */\nexport interface FilterBuilderColumn {\n /** Column identifier */\n id: string\n /** Display label */\n label: string\n /** Options for select type columns */\n options?: string[]\n /** Data type for operator selection */\n type: \"date\" | \"number\" | \"select\" | \"text\"\n}\n\n/**\n * FilterBuilder component props\n */\nexport interface FilterBuilderProps {\n /** Additional CSS classes */\n className?: string\n /** Available columns for filtering */\n columns: FilterBuilderColumn[]\n /** Current filter configuration */\n filter: FilterGroup\n /** Callback to delete a preset */\n onDeletePreset?: (presetId: string) => void\n /** Callback when filter changes */\n onFilterChange: (filter: FilterGroup) => void\n /** Callback to save a new preset */\n onSavePreset?: (preset: FilterPreset) => void\n /** Saved filter presets */\n presets?: FilterPreset[]\n}\n\n/**\n * Type guard to check if an item is a FilterGroup\n */\nexport function isFilterGroup(\n item: FilterCondition | FilterGroup\n): item is FilterGroup {\n return \"logic\" in item && \"conditions\" in item\n}\n\n/**\n * Type guard to check if an item is a FilterCondition\n */\nexport function isFilterCondition(\n item: FilterCondition | FilterGroup\n): item is FilterCondition {\n return \"column\" in item && \"operator\" in item\n}\n","// FilterBuilder/FilterBuilder.tsx\n\"use client\"\n\nimport type {\n FilterBuilderColumn,\n FilterBuilderProps,\n FilterCondition,\n FilterGroup,\n FilterOperator,\n FilterPreset,\n} from \"./FilterBuilder.types\"\n\nimport { PlusCircle, Trash2, X } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../../lib/utils\"\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../../../forms/Select\"\nimport { TextInput } from \"../../../forms/TextInput\"\nimport { Button } from \"../../../primitives/Button\"\nimport { isFilterCondition, isFilterGroup } from \"./FilterBuilder.types\"\n\n// ============================================\n// CONSTANTS\n// ============================================\n\n/**\n * Operator labels for display\n */\nconst OPERATOR_LABELS: Record<FilterOperator, string> = {\n // Text\n contains: \"Contains\",\n notContains: \"Does not contain\",\n equals: \"Equals\",\n notEquals: \"Does not equal\",\n startsWith: \"Starts with\",\n endsWith: \"Ends with\",\n isEmpty: \"Is empty\",\n isNotEmpty: \"Is not empty\",\n // Number\n gt: \"Greater than\",\n gte: \"Greater than or equal\",\n lt: \"Less than\",\n lte: \"Less than or equal\",\n between: \"Between\",\n // Date\n before: \"Before\",\n after: \"After\",\n dateBetween: \"Date between\",\n // Select\n in: \"Is any of\",\n notIn: \"Is none of\",\n}\n\n/**\n * Operators available by column type\n */\nconst OPERATORS_BY_TYPE: Record<FilterBuilderColumn[\"type\"], FilterOperator[]> = {\n text: [\"contains\", \"notContains\", \"equals\", \"notEquals\", \"startsWith\", \"endsWith\", \"isEmpty\", \"isNotEmpty\"],\n number: [\"equals\", \"notEquals\", \"gt\", \"gte\", \"lt\", \"lte\", \"between\"],\n date: [\"equals\", \"notEquals\", \"before\", \"after\", \"dateBetween\"],\n select: [\"equals\", \"notEquals\", \"in\", \"notIn\"],\n}\n\n/**\n * Generate a unique ID\n */\nfunction generateId(): string {\n return Math.random().toString(36).slice(2, 11)\n}\n\n/**\n * Create an empty condition\n */\nfunction createEmptyCondition(columnId?: string): FilterCondition {\n return {\n id: generateId(),\n column: columnId ?? \"\",\n operator: \"contains\",\n value: \"\",\n }\n}\n\n/**\n * Create an empty group\n */\nfunction createEmptyGroup(): FilterGroup {\n return {\n id: generateId(),\n logic: \"AND\",\n conditions: [],\n }\n}\n\n// ============================================\n// FILTER CONDITION COMPONENT\n// ============================================\n\ninterface FilterConditionRowProps {\n columns: FilterBuilderColumn[]\n condition: FilterCondition\n onChange: (condition: FilterCondition) => void\n onRemove: () => void\n}\n\nfunction FilterConditionRow({\n condition,\n columns,\n onChange,\n onRemove,\n}: FilterConditionRowProps) {\n const selectedColumn = columns.find((col) => col.id === condition.column)\n const availableOperators = selectedColumn\n ? OPERATORS_BY_TYPE[selectedColumn.type]\n : OPERATORS_BY_TYPE.text\n\n const needsValue = ![\"isEmpty\", \"isNotEmpty\"].includes(condition.operator)\n const needsSecondValue = [\"between\", \"dateBetween\"].includes(condition.operator)\n\n const handleColumnChange = (columnId: string) => {\n const newColumn = columns.find((col) => col.id === columnId)\n const newOperators = newColumn\n ? OPERATORS_BY_TYPE[newColumn.type]\n : OPERATORS_BY_TYPE.text\n\n onChange({\n ...condition,\n column: columnId,\n operator: newOperators[0] ?? \"equals\",\n value: \"\",\n value2: undefined,\n })\n }\n\n const handleOperatorChange = (operator: string) => {\n onChange({\n ...condition,\n operator: operator as FilterOperator,\n value: [\"isEmpty\", \"isNotEmpty\"].includes(operator) ? \"\" : condition.value,\n value2: undefined,\n })\n }\n\n const handleValueChange = (value: string) => {\n onChange({ ...condition, value })\n }\n\n const handleValue2Change = (value2: string) => {\n onChange({ ...condition, value2 })\n }\n\n return (\n <div\n aria-label={`Filter condition: ${selectedColumn?.label ?? \"Select column\"}`}\n className=\"flex flex-wrap items-center gap-2\"\n data-slot=\"filter-condition\"\n role=\"group\"\n >\n {/* Column Select */}\n <Select value={condition.column} onValueChange={handleColumnChange}>\n <SelectTrigger\n aria-label=\"Column\"\n className=\"w-36\"\n size=\"sm\"\n >\n <SelectValue placeholder=\"Select column\" />\n </SelectTrigger>\n <SelectContent>\n {columns.map((col) => (\n <SelectItem key={col.id} value={col.id}>\n {col.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n\n {/* Operator Select */}\n {condition.column && (\n <Select value={condition.operator} onValueChange={handleOperatorChange}>\n <SelectTrigger\n aria-label=\"Operator\"\n className=\"w-40\"\n size=\"sm\"\n >\n <SelectValue placeholder=\"Select operator\" />\n </SelectTrigger>\n <SelectContent>\n {availableOperators.map((op) => (\n <SelectItem key={op} value={op}>\n {OPERATOR_LABELS[op]}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )}\n\n {/* Value Input */}\n {needsValue && condition.column && (\n selectedColumn?.type === \"select\" && selectedColumn.options ? (\n <Select\n value={condition.value as string}\n onValueChange={handleValueChange}\n >\n <SelectTrigger\n aria-label=\"Value\"\n className=\"w-36\"\n size=\"sm\"\n >\n <SelectValue placeholder=\"Select value\" />\n </SelectTrigger>\n <SelectContent>\n {selectedColumn.options.map((option) => (\n <SelectItem key={option} value={option}>\n {option}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n ) : (\n <TextInput\n aria-label=\"Value\"\n className=\"w-36\"\n placeholder=\"Enter value\"\n size=\"sm\"\n type={selectedColumn?.type === \"number\" ? \"number\" : selectedColumn?.type === \"date\" ? \"date\" : \"text\"}\n value={condition.value as string}\n onChange={(e) => { handleValueChange(e.target.value); }}\n />\n )\n )}\n\n {/* Second Value (for between operators) */}\n {needsSecondValue && condition.column && (\n <>\n <span className=\"text-sm text-[color:var(--text-muted)]\">and</span>\n <TextInput\n aria-label=\"Value\"\n className=\"w-36\"\n placeholder=\"Enter value\"\n size=\"sm\"\n type={selectedColumn?.type === \"number\" ? \"number\" : selectedColumn?.type === \"date\" ? \"date\" : \"text\"}\n value={typeof condition.value2 === \"string\" ? condition.value2 : typeof condition.value2 === \"number\" ? condition.value2.toString() : \"\"}\n onChange={(e) => { handleValue2Change(e.target.value); }}\n />\n </>\n )}\n\n {/* Remove Button */}\n <Button\n aria-label=\"Remove condition\"\n className=\"text-[color:var(--text-muted)] hover:text-[color:var(--text-destructive)]\"\n size=\"icon-sm\"\n type=\"button\"\n variant=\"ghost\"\n onClick={onRemove}\n >\n <X className=\"size-4\" />\n </Button>\n </div>\n )\n}\n\n// ============================================\n// FILTER GROUP COMPONENT\n// ============================================\n\ninterface FilterGroupComponentProps {\n columns: FilterBuilderColumn[]\n depth: number\n group: FilterGroup\n isRoot?: boolean\n onChange: (group: FilterGroup) => void\n onRemove?: () => void\n}\n\nfunction FilterGroupComponent({\n group,\n columns,\n depth,\n onChange,\n onRemove,\n isRoot = false,\n}: FilterGroupComponentProps) {\n const handleLogicToggle = () => {\n onChange({\n ...group,\n logic: group.logic === \"AND\" ? \"OR\" : \"AND\",\n })\n }\n\n const handleAddCondition = () => {\n const defaultColumn = columns[0]?.id ?? \"\"\n onChange({\n ...group,\n conditions: [...group.conditions, createEmptyCondition(defaultColumn)],\n })\n }\n\n const handleAddGroup = () => {\n onChange({\n ...group,\n conditions: [...group.conditions, createEmptyGroup()],\n })\n }\n\n const handleConditionChange = (index: number, item: FilterCondition | FilterGroup) => {\n const newConditions = [...group.conditions]\n newConditions[index] = item\n onChange({ ...group, conditions: newConditions })\n }\n\n const handleConditionRemove = (index: number) => {\n onChange({\n ...group,\n conditions: group.conditions.filter((_, i) => i !== index),\n })\n }\n\n return (\n <div\n className={cn(\n \"rounded-md border p-3\",\n isRoot\n ? \"border-[color:var(--border-default)] bg-[color:var(--surface-default)]\"\n : \"border-dashed border-[color:var(--border-muted)] bg-[color:var(--surface-muted)] ml-4\"\n )}\n aria-label={`Filter group with ${group.logic} logic`}\n data-slot=\"filter-group\"\n role=\"group\"\n >\n {/* Group Header */}\n <div className=\"mb-3 flex items-center gap-2\">\n {/* Logic Toggle */}\n <Button\n aria-label={group.logic}\n aria-pressed={group.logic === \"AND\"}\n className=\"min-w-16 font-medium\"\n size=\"sm\"\n type=\"button\"\n variant={group.logic === \"AND\" ? \"secondary-color\" : \"outline\"}\n onClick={handleLogicToggle}\n >\n {group.logic}\n </Button>\n\n {/* Remove Group Button */}\n {!isRoot && onRemove && (\n <Button\n aria-label=\"Remove group\"\n className=\"ml-auto text-[color:var(--text-muted)] hover:text-[color:var(--text-destructive)]\"\n size=\"icon-sm\"\n type=\"button\"\n variant=\"ghost\"\n onClick={onRemove}\n >\n <Trash2 className=\"size-4\" />\n </Button>\n )}\n </div>\n\n {/* Conditions */}\n <div className=\"space-y-2\">\n {group.conditions.length === 0 ? (\n <div className=\"py-4 text-center text-sm text-[color:var(--text-muted)]\">\n No conditions. Click &quot;Add Condition&quot; to create one.\n </div>\n ) : (\n group.conditions.map((item, index) => (\n <React.Fragment key={item.id}>\n {/* Logic label between conditions */}\n {index > 0 && (\n <div className=\"flex items-center gap-2 py-1\">\n <span className=\"text-xs font-medium uppercase text-[color:var(--text-muted)]\">\n {group.logic}\n </span>\n <div className=\"h-px flex-1 bg-[color:var(--border-muted)]\" />\n </div>\n )}\n\n {isFilterGroup(item) ? (\n <FilterGroupComponent\n columns={columns}\n depth={depth + 1}\n group={item}\n onChange={(updated) => { handleConditionChange(index, updated); }}\n onRemove={() => { handleConditionRemove(index); }}\n />\n ) : isFilterCondition(item) ? (\n <FilterConditionRow\n columns={columns}\n condition={item}\n onChange={(updated) => { handleConditionChange(index, updated); }}\n onRemove={() => { handleConditionRemove(index); }}\n />\n ) : null}\n </React.Fragment>\n ))\n )}\n </div>\n\n {/* Action Buttons */}\n <div className=\"mt-3 flex items-center gap-2\">\n <Button\n className=\"gap-1\"\n size=\"sm\"\n type=\"button\"\n variant=\"outline\"\n onClick={handleAddCondition}\n >\n <PlusCircle className=\"size-3\" />\n Add Condition\n </Button>\n\n <Button\n className=\"gap-1\"\n size=\"sm\"\n type=\"button\"\n variant=\"outline\"\n onClick={handleAddGroup}\n >\n <PlusCircle className=\"size-3\" />\n Add Group\n </Button>\n </div>\n </div>\n )\n}\n\n// ============================================\n// MAIN FILTER BUILDER COMPONENT\n// ============================================\n\n/**\n * FilterBuilder - Visual interface for building complex filter conditions\n *\n * Supports AND/OR logic with nested groups, multiple operators per field type,\n * and various value input types.\n *\n * @example\n * ```tsx\n * const columns = [\n * { id: \"name\", label: \"Name\", type: \"text\" },\n * { id: \"age\", label: \"Age\", type: \"number\" },\n * { id: \"status\", label: \"Status\", type: \"select\", options: [\"active\", \"inactive\"] },\n * ]\n *\n * <FilterBuilder\n * columns={columns}\n * filter={filter}\n * onFilterChange={setFilter}\n * />\n * ```\n */\nfunction FilterBuilder({\n className,\n columns,\n filter,\n onDeletePreset,\n onFilterChange,\n onSavePreset,\n presets,\n}: FilterBuilderProps) {\n const [presetName, setPresetName] = React.useState(\"\")\n const [showSaveInput, setShowSaveInput] = React.useState(false)\n\n const handleFilterChange = (updatedFilter: FilterGroup) => {\n onFilterChange(updatedFilter)\n }\n\n const handleSavePreset = () => {\n if (!onSavePreset || !presetName.trim()) return\n onSavePreset({\n id: Math.random().toString(36).slice(2, 11),\n name: presetName.trim(),\n filter: structuredClone(filter),\n })\n setPresetName(\"\")\n setShowSaveInput(false)\n }\n\n const handleLoadPreset = (preset: FilterPreset) => {\n onFilterChange(structuredClone(preset.filter))\n }\n\n return (\n <div\n aria-label=\"Filter builder\"\n className={cn(\"space-y-3\", className)}\n data-slot=\"filter-builder\"\n role=\"region\"\n >\n {/* Filter Presets */}\n {(presets && presets.length > 0) || onSavePreset ? (\n <div className=\"flex flex-wrap items-center gap-2\" data-slot=\"filter-presets\">\n {presets?.map((preset) => (\n <div key={preset.id} className=\"flex items-center gap-1\">\n <Button\n className=\"gap-1\"\n size=\"sm\"\n type=\"button\"\n variant=\"outline\"\n onClick={() => { handleLoadPreset(preset); }}\n >\n {preset.name}\n </Button>\n {onDeletePreset && (\n <Button\n aria-label={`Delete preset ${preset.name}`}\n size=\"icon-sm\"\n type=\"button\"\n variant=\"ghost\"\n onClick={() => { onDeletePreset(preset.id); }}\n >\n <X className=\"size-3\" />\n </Button>\n )}\n </div>\n ))}\n {onSavePreset && (\n showSaveInput ? (\n <div className=\"flex items-center gap-1\">\n <TextInput\n aria-label=\"Preset name\"\n className=\"h-7 w-32\"\n placeholder=\"Preset name\"\n size=\"sm\"\n value={presetName}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => { setPresetName(e.target.value); }}\n onKeyDown={(e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\") handleSavePreset()\n if (e.key === \"Escape\") { setShowSaveInput(false); setPresetName(\"\"); }\n }}\n />\n <Button\n disabled={!presetName.trim()}\n size=\"sm\"\n type=\"button\"\n variant=\"secondary-color\"\n onClick={handleSavePreset}\n >\n Save\n </Button>\n <Button\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n onClick={() => { setShowSaveInput(false); setPresetName(\"\"); }}\n >\n Cancel\n </Button>\n </div>\n ) : (\n <Button\n className=\"gap-1\"\n size=\"sm\"\n type=\"button\"\n variant=\"outline\"\n onClick={() => { setShowSaveInput(true); }}\n >\n <PlusCircle className=\"size-3\" />\n Save Preset\n </Button>\n )\n )}\n </div>\n ) : null}\n\n <FilterGroupComponent\n isRoot\n columns={columns}\n depth={0}\n group={filter}\n onChange={handleFilterChange}\n />\n </div>\n )\n}\n\nFilterBuilder.displayName = \"FilterBuilder\"\n\nexport { FilterBuilder }\n"]}
@@ -1,4 +1,4 @@
1
- import { Button } from './chunk-RPV77BCQ.js';
1
+ import { Button } from './chunk-ONQCNOLU.js';
2
2
  import { cn } from './chunk-HRNDJU7D.js';
3
3
  import { RefreshCw, X, LayoutGrid, Loader2 } from 'lucide-react';
4
4
  import { useId, useRef, useCallback, useEffect } from 'react';
@@ -511,5 +511,5 @@ function Dashboard({
511
511
  }
512
512
 
513
513
  export { Dashboard, DashboardEmptyState, DashboardErrorState, DashboardHeader, DashboardLoadingState, DashboardWidget, dashboardContentVariants, dashboardEmptyVariants, dashboardGridVariants, dashboardHeaderVariants, dashboardLoadingVariants, dashboardSidebarVariants, dashboardVariants, dashboardWidgetHeaderVariants, dashboardWidgetVariants };
514
- //# sourceMappingURL=chunk-AV5YQ2Z4.js.map
515
- //# sourceMappingURL=chunk-AV5YQ2Z4.js.map
514
+ //# sourceMappingURL=chunk-Y7UFBSAD.js.map
515
+ //# sourceMappingURL=chunk-Y7UFBSAD.js.map