@oneplatformdev/ui 0.1.99-beta.26 → 0.1.99-beta.27

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 (157) hide show
  1. package/.storybook/Wrappers.js.map +1 -1
  2. package/Accordion/Accordion.js.map +1 -1
  3. package/Alert/Alert.js.map +1 -1
  4. package/Alert/alertVariants.js.map +1 -1
  5. package/AlertDialog/AlertDialog.js.map +1 -1
  6. package/AlertDialog/AlertDialog.stories.js +2 -3
  7. package/AlertDialog/AlertDialog.stories.js.map +1 -1
  8. package/AlertDialog/AlertDialogRoot.js +18 -19
  9. package/AlertDialog/AlertDialogRoot.js.map +1 -1
  10. package/AreaChart/AreaChart.js.map +1 -1
  11. package/Aside/Aside.js.map +1 -1
  12. package/Aside/AsideSidebar.js.map +1 -1
  13. package/AspectRatio/AspectRatio.js.map +1 -1
  14. package/Avatar/Avatar.js.map +1 -1
  15. package/Badge/Badge.js.map +1 -1
  16. package/Badge/badgeVariants.js.map +1 -1
  17. package/Breadcrumb/Breadcrumb.js.map +1 -1
  18. package/Button/Button.js +1 -2
  19. package/Button/Button.js.map +1 -1
  20. package/Button/Button.stories.js.map +1 -1
  21. package/Button/ButtonCounterBadge.js.map +1 -1
  22. package/Button/buttonVariants.js.map +1 -1
  23. package/ButtonIcon/ButtonIcon.js +18 -19
  24. package/ButtonIcon/ButtonIcon.js.map +1 -1
  25. package/ButtonIcon/ButtonIcon.stories.js.map +1 -1
  26. package/ButtonIcon/buttonIconVariants.js.map +1 -1
  27. package/CHANGELOG.md +1874 -1866
  28. package/Calendar/Calendar.js +0 -1
  29. package/Calendar/Calendar.js.map +1 -1
  30. package/Card/Card.js.map +1 -1
  31. package/Carousel/Carousel.js +6 -7
  32. package/Carousel/Carousel.js.map +1 -1
  33. package/Chart/Chart.js.map +1 -1
  34. package/Checkbox/Checkbox.js +17 -18
  35. package/Checkbox/Checkbox.js.map +1 -1
  36. package/Collapsible/Collapsible.js.map +1 -1
  37. package/Combobox/Combobox.js +30 -32
  38. package/Combobox/Combobox.js.map +1 -1
  39. package/Combobox/Combobox.stories.js.map +1 -1
  40. package/Combobox/ComboboxOptionItem.js +4 -4
  41. package/Combobox/ComboboxOptionItem.js.map +1 -1
  42. package/Combobox/ComboboxOptions.js +8 -9
  43. package/Combobox/ComboboxOptions.js.map +1 -1
  44. package/Command/Command.js +25 -26
  45. package/Command/Command.js.map +1 -1
  46. package/DataTable/DataTable.js +12 -13
  47. package/DataTable/DataTable.js.map +1 -1
  48. package/DataTable/DataTableColumnFilter.js +6 -7
  49. package/DataTable/DataTableColumnFilter.js.map +1 -1
  50. package/DataTable/useDataTable.d.ts +1 -1
  51. package/DataTable/useDataTable.js.map +1 -1
  52. package/DatePicker/DatePicker.js +12 -13
  53. package/DatePicker/DatePicker.js.map +1 -1
  54. package/Dialog/Dialog.js.map +1 -1
  55. package/Dialog/DialogOverlayScope.js.map +1 -1
  56. package/Drawer/Drawer.js.map +1 -1
  57. package/DropdownMenu/DropdownMenu.js.map +1 -1
  58. package/Dropzone/Dropzone.js.map +1 -1
  59. package/Dropzone/Dropzone.types.js.map +1 -1
  60. package/Dropzone/DropzoneFilePreview.js.map +1 -1
  61. package/Dropzone/DropzoneSinglePickPreview.js.map +1 -1
  62. package/Dropzone/DropzoneUtils.js.map +1 -1
  63. package/Form/Form.js +14 -15
  64. package/Form/Form.js.map +1 -1
  65. package/Form/FormRenderControl.d.ts.map +1 -1
  66. package/Form/FormRenderControl.js +26 -13
  67. package/Form/FormRenderControl.js.map +1 -1
  68. package/Form/FormRenderControl.types.d.ts +2 -1
  69. package/Form/FormRenderControl.types.d.ts.map +1 -1
  70. package/Form/FormTooltipButton.d.ts +6 -0
  71. package/Form/FormTooltipButton.d.ts.map +1 -0
  72. package/Form/FormTooltipButton.js +33 -0
  73. package/Form/FormTooltipButton.js.map +1 -0
  74. package/Form/Form_old.js +4 -5
  75. package/Form/Form_old.js.map +1 -1
  76. package/FormCheckbox/FormCheckbox.js +4 -4
  77. package/FormCheckbox/FormCheckbox.js.map +1 -1
  78. package/FormCombobox/FormCombobox.js +4 -4
  79. package/FormCombobox/FormCombobox.js.map +1 -1
  80. package/FormDatePicker/FormDatePicker.js +4 -4
  81. package/FormDatePicker/FormDatePicker.js.map +1 -1
  82. package/FormDropzone/FormDropzone.js +3 -3
  83. package/FormDropzone/FormDropzone.js.map +1 -1
  84. package/FormInput/FormInput.d.ts.map +1 -1
  85. package/FormInput/FormInput.js +22 -21
  86. package/FormInput/FormInput.js.map +1 -1
  87. package/FormRadio/FormRadio.js.map +1 -1
  88. package/FormSelect/FormSelect.js +22 -25
  89. package/FormSelect/FormSelect.js.map +1 -1
  90. package/FormTextarea/FormTextarea.js +4 -4
  91. package/FormTextarea/FormTextarea.js.map +1 -1
  92. package/Header/Header.js.map +1 -1
  93. package/HoverCard/HoverCard.js.map +1 -1
  94. package/Input/Input.js.map +1 -1
  95. package/Input/inputVariants.js.map +1 -1
  96. package/InputOTP/InputOTP.d.ts.map +1 -1
  97. package/InputOTP/InputOTP.js.map +1 -1
  98. package/LICENSE +21 -21
  99. package/Label/Label.js.map +1 -1
  100. package/Label/labelVariants.js.map +1 -1
  101. package/LazyLoader/LazyLoader.js +4 -5
  102. package/LazyLoader/LazyLoader.js.map +1 -1
  103. package/LoadedIcon/LoadedIcon.js.map +1 -1
  104. package/LoadingMask/LoadingMask.js.map +1 -1
  105. package/LoadingMask/RenderLoadingMask.js.map +1 -1
  106. package/LoadingProgress/LoadingProgress.js.map +1 -1
  107. package/LoadingProgress/loadingProgressVariants.js.map +1 -1
  108. package/Menubar/Menubar.js.map +1 -1
  109. package/NavigationMenu/NavigationMenu.js.map +1 -1
  110. package/NavigationMenu/navigationMenuVariants.js.map +1 -1
  111. package/Pagination/Pagination.js +0 -1
  112. package/Pagination/Pagination.js.map +1 -1
  113. package/Popover/Popover.js.map +1 -1
  114. package/Progress/Progress.js.map +1 -1
  115. package/README.md +7 -7
  116. package/Radio/Radio.js.map +1 -1
  117. package/RadioGroup/RadioGroup.js.map +1 -1
  118. package/Resizable/Resizable.js.map +1 -1
  119. package/Resizable/Resizable.stories.js.map +1 -1
  120. package/ScrollArea/ScrollArea.js.map +1 -1
  121. package/Search/Search.js +8 -8
  122. package/Search/Search.js.map +1 -1
  123. package/Search/Search.stories.js.map +1 -1
  124. package/Select/Select.js +6 -7
  125. package/Select/Select.js.map +1 -1
  126. package/Select/Select.stories.js.map +1 -1
  127. package/Select/SelectRoot.js.map +1 -1
  128. package/Separator/Separator.js.map +1 -1
  129. package/Sheet/Sheet.js.map +1 -1
  130. package/Sidebar/Sidebar.js +20 -21
  131. package/Sidebar/Sidebar.js.map +1 -1
  132. package/Skeleton/Skeleton.js.map +1 -1
  133. package/Slider/Slider.js.map +1 -1
  134. package/Sonner/Sonner.js.map +1 -1
  135. package/Switch/Switch.js.map +1 -1
  136. package/Table/Table.js.map +1 -1
  137. package/TablePagination/TablePagination.js +17 -21
  138. package/TablePagination/TablePagination.js.map +1 -1
  139. package/Tabs/Tabs.js.map +1 -1
  140. package/Tabs/TabsRoot.js.map +1 -1
  141. package/Textarea/Textarea.js.map +1 -1
  142. package/Textarea/Textarea.stories.js.map +1 -1
  143. package/Textarea/useAutosizeTextArea.js.map +1 -1
  144. package/Theme/ThemeModeToggle.js +3 -4
  145. package/Theme/ThemeModeToggle.js.map +1 -1
  146. package/Theme/ThemeProvider.js.map +1 -1
  147. package/Toast/Toast.js.map +1 -1
  148. package/Toast/toast.constants.js.map +1 -1
  149. package/Toast/toastVariants.js.map +1 -1
  150. package/Toast/useToast.js.map +1 -1
  151. package/Toaster/Toaster.js.map +1 -1
  152. package/Toggle/Toggle.js.map +1 -1
  153. package/ToggleGroup/ToggleGroup.js.map +1 -1
  154. package/Tooltip/Tooltip.js.map +1 -1
  155. package/Tooltip/TooltipRoot.js.map +1 -1
  156. package/index.js +278 -278
  157. package/package.json +4 -4
@@ -2,7 +2,6 @@ import { jsx as r } from "react/jsx-runtime";
2
2
  import { ChevronRight as i, ChevronLeft as l } from "lucide-react";
3
3
  import { DayPicker as m } from "react-day-picker";
4
4
  import { cn as e } from "@oneplatformdev/utils";
5
- import "../Button/Button.js";
6
5
  import { buttonVariants as o } from "../Button/buttonVariants.js";
7
6
  function u({
8
7
  className: n,
@@ -1 +1 @@
1
- {"version":3,"file":"Calendar.js","sources":["../../src/Calendar/Calendar.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { ChevronLeft, ChevronRight } from \"lucide-react\"\nimport { DayPicker } from \"react-day-picker\"\n\nimport { cn } from \"@oneplatformdev/utils\"\nimport { buttonVariants } from \"../Button\";\n\nexport type CalendarProps = React.ComponentProps<typeof DayPicker>\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n ...props\n}: CalendarProps) {\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\"p-3\", className)}\n classNames={{\n caption_dropdowns:\"flex flex-col gap-1\",\n months: \"flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0\",\n month: \"space-y-4\",\n caption: \"flex justify-center pt-1 relative items-center gap-4\",\n caption_label: \"text-sm font-medium hidden\",\n nav: \"space-x-1 flex items-center\",\n nav_button: cn(\n buttonVariants({ variant: \"outline-solid\" }),\n \"h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100\"\n ),\n nav_button_previous: \"absolute left-1\",\n nav_button_next: \"absolute right-1\",\n table: \"w-full border-collapse space-y-1\",\n head_row: \"flex\",\n head_cell:\n \"text-muted-foreground rounded-md w-8 font-normal text-[0.8rem]\",\n row: \"flex w-full mt-2\",\n cell: cn(\n \"relative p-0 text-center text-sm focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-accent [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected].day-range-end)]:rounded-r-md\",\n props.mode === \"range\"\n ? \"[&:has(>.day-range-end)]:rounded-r-md [&:has(>.day-range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md\"\n : \"[&:has([aria-selected])]:rounded-md\"\n ),\n day: cn(\n buttonVariants({ variant: \"ghost\" }),\n \"h-8 w-8 p-0 font-normal aria-selected:opacity-100\"\n ),\n day_range_start: \"day-range-start\",\n day_range_end: \"day-range-end\",\n day_selected:\n \"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground\",\n day_today: \"bg-accent text-accent-foreground\",\n day_outside:\n \"day-outside text-muted-foreground aria-selected:bg-accent/50 aria-selected:text-muted-foreground\",\n day_disabled: \"text-muted-foreground opacity-50\",\n day_range_middle:\n \"aria-selected:bg-accent aria-selected:text-accent-foreground\",\n day_hidden: \"invisible\",\n ...classNames,\n }}\n components={{\n IconLeft: ({ className, ...props }) => (\n <ChevronLeft className={cn(\"h-4 w-4\", className)} {...props} />\n ),\n IconRight: ({ className, ...props }) => (\n <ChevronRight className={cn(\"h-4 w-4\", className)} {...props} />\n ),\n }}\n {...props}\n />\n )\n}\nCalendar.displayName = \"Calendar\"\n\nexport { Calendar }\n"],"names":["Calendar","className","classNames","showOutsideDays","props","jsx","DayPicker","cn","buttonVariants","ChevronLeft","ChevronRight"],"mappings":";;;;;;AAWA,SAASA,EAAS;AAAA,EAChB,WAAAC;AAAA,EACA,YAAAC;AAAA,EACA,iBAAAC,IAAkB;AAAA,EAClB,GAAGC;AACL,GAAkB;AAChB,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,iBAAAH;AAAA,MACA,WAAWI,EAAG,OAAON,CAAS;AAAA,MAC9B,YAAY;AAAA,QACV,mBAAkB;AAAA,QAClB,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,eAAe;AAAA,QACf,KAAK;AAAA,QACL,YAAYM;AAAA,UACVC,EAAe,EAAE,SAAS,iBAAiB;AAAA,UAC3C;AAAA,QAAA;AAAA,QAEF,qBAAqB;AAAA,QACrB,iBAAiB;AAAA,QACjB,OAAO;AAAA,QACP,UAAU;AAAA,QACV,WACE;AAAA,QACF,KAAK;AAAA,QACL,MAAMD;AAAA,UACJ;AAAA,UACAH,EAAM,SAAS,UACX,yKACA;AAAA,QAAA;AAAA,QAEN,KAAKG;AAAA,UACHC,EAAe,EAAE,SAAS,SAAS;AAAA,UACnC;AAAA,QAAA;AAAA,QAEF,iBAAiB;AAAA,QACjB,eAAe;AAAA,QACf,cACE;AAAA,QACF,WAAW;AAAA,QACX,aACE;AAAA,QACF,cAAc;AAAA,QACd,kBACE;AAAA,QACF,YAAY;AAAA,QACZ,GAAGN;AAAA,MAAA;AAAA,MAEL,YAAY;AAAA,QACV,UAAU,CAAC,EAAE,WAAAD,GAAW,GAAGG,EAAAA,MACzB,gBAAAC,EAACI,GAAA,EAAY,WAAWF,EAAG,WAAWN,CAAS,GAAI,GAAGG,GAAO;AAAA,QAE/D,WAAW,CAAC,EAAE,WAAAH,GAAW,GAAGG,EAAAA,MAC1B,gBAAAC,EAACK,GAAA,EAAa,WAAWH,EAAG,WAAWN,CAAS,GAAI,GAAGG,EAAAA,CAAO;AAAA,MAAA;AAAA,MAGjE,GAAGA;AAAA,IAAA;AAAA,EAAA;AAGV;AACAJ,EAAS,cAAc;"}
1
+ {"version":3,"file":"Calendar.js","sources":["../../src/Calendar/Calendar.tsx"],"sourcesContent":["\"use client\"\r\n\r\nimport * as React from \"react\"\r\nimport { ChevronLeft, ChevronRight } from \"lucide-react\"\r\nimport { DayPicker } from \"react-day-picker\"\r\n\r\nimport { cn } from \"@oneplatformdev/utils\"\r\nimport { buttonVariants } from \"../Button\";\r\n\r\nexport type CalendarProps = React.ComponentProps<typeof DayPicker>\r\n\r\nfunction Calendar({\r\n className,\r\n classNames,\r\n showOutsideDays = true,\r\n ...props\r\n}: CalendarProps) {\r\n return (\r\n <DayPicker\r\n showOutsideDays={showOutsideDays}\r\n className={cn(\"p-3\", className)}\r\n classNames={{\r\n caption_dropdowns:\"flex flex-col gap-1\",\r\n months: \"flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0\",\r\n month: \"space-y-4\",\r\n caption: \"flex justify-center pt-1 relative items-center gap-4\",\r\n caption_label: \"text-sm font-medium hidden\",\r\n nav: \"space-x-1 flex items-center\",\r\n nav_button: cn(\r\n buttonVariants({ variant: \"outline-solid\" }),\r\n \"h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100\"\r\n ),\r\n nav_button_previous: \"absolute left-1\",\r\n nav_button_next: \"absolute right-1\",\r\n table: \"w-full border-collapse space-y-1\",\r\n head_row: \"flex\",\r\n head_cell:\r\n \"text-muted-foreground rounded-md w-8 font-normal text-[0.8rem]\",\r\n row: \"flex w-full mt-2\",\r\n cell: cn(\r\n \"relative p-0 text-center text-sm focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-accent [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected].day-range-end)]:rounded-r-md\",\r\n props.mode === \"range\"\r\n ? \"[&:has(>.day-range-end)]:rounded-r-md [&:has(>.day-range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md\"\r\n : \"[&:has([aria-selected])]:rounded-md\"\r\n ),\r\n day: cn(\r\n buttonVariants({ variant: \"ghost\" }),\r\n \"h-8 w-8 p-0 font-normal aria-selected:opacity-100\"\r\n ),\r\n day_range_start: \"day-range-start\",\r\n day_range_end: \"day-range-end\",\r\n day_selected:\r\n \"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground\",\r\n day_today: \"bg-accent text-accent-foreground\",\r\n day_outside:\r\n \"day-outside text-muted-foreground aria-selected:bg-accent/50 aria-selected:text-muted-foreground\",\r\n day_disabled: \"text-muted-foreground opacity-50\",\r\n day_range_middle:\r\n \"aria-selected:bg-accent aria-selected:text-accent-foreground\",\r\n day_hidden: \"invisible\",\r\n ...classNames,\r\n }}\r\n components={{\r\n IconLeft: ({ className, ...props }) => (\r\n <ChevronLeft className={cn(\"h-4 w-4\", className)} {...props} />\r\n ),\r\n IconRight: ({ className, ...props }) => (\r\n <ChevronRight className={cn(\"h-4 w-4\", className)} {...props} />\r\n ),\r\n }}\r\n {...props}\r\n />\r\n )\r\n}\r\nCalendar.displayName = \"Calendar\"\r\n\r\nexport { Calendar }\r\n"],"names":["Calendar","className","classNames","showOutsideDays","props","jsx","DayPicker","cn","buttonVariants","ChevronLeft","ChevronRight"],"mappings":";;;;;AAWA,SAASA,EAAS;AAAA,EAChB,WAAAC;AAAA,EACA,YAAAC;AAAA,EACA,iBAAAC,IAAkB;AAAA,EAClB,GAAGC;AACL,GAAkB;AAChB,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,iBAAAH;AAAA,MACA,WAAWI,EAAG,OAAON,CAAS;AAAA,MAC9B,YAAY;AAAA,QACV,mBAAkB;AAAA,QAClB,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,eAAe;AAAA,QACf,KAAK;AAAA,QACL,YAAYM;AAAA,UACVC,EAAe,EAAE,SAAS,iBAAiB;AAAA,UAC3C;AAAA,QAAA;AAAA,QAEF,qBAAqB;AAAA,QACrB,iBAAiB;AAAA,QACjB,OAAO;AAAA,QACP,UAAU;AAAA,QACV,WACE;AAAA,QACF,KAAK;AAAA,QACL,MAAMD;AAAA,UACJ;AAAA,UACAH,EAAM,SAAS,UACX,yKACA;AAAA,QAAA;AAAA,QAEN,KAAKG;AAAA,UACHC,EAAe,EAAE,SAAS,SAAS;AAAA,UACnC;AAAA,QAAA;AAAA,QAEF,iBAAiB;AAAA,QACjB,eAAe;AAAA,QACf,cACE;AAAA,QACF,WAAW;AAAA,QACX,aACE;AAAA,QACF,cAAc;AAAA,QACd,kBACE;AAAA,QACF,YAAY;AAAA,QACZ,GAAGN;AAAA,MAAA;AAAA,MAEL,YAAY;AAAA,QACV,UAAU,CAAC,EAAE,WAAAD,GAAW,GAAGG,EAAAA,MACzB,gBAAAC,EAACI,GAAA,EAAY,WAAWF,EAAG,WAAWN,CAAS,GAAI,GAAGG,GAAO;AAAA,QAE/D,WAAW,CAAC,EAAE,WAAAH,GAAW,GAAGG,EAAAA,MAC1B,gBAAAC,EAACK,GAAA,EAAa,WAAWH,EAAG,WAAWN,CAAS,GAAI,GAAGG,EAAAA,CAAO;AAAA,MAAA;AAAA,MAGjE,GAAGA;AAAA,IAAA;AAAA,EAAA;AAGV;AACAJ,EAAS,cAAc;"}
package/Card/Card.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Card.js","sources":["../../src/Card/Card.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { cn } from '@oneplatformdev/utils';\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'flex flex-col gap-1 p-2',\n 'rounded-2xl border border-border bg-card text-card-foreground shadow-none',\n className\n )}\n {...props}\n />\n));\nCard.displayName = \"Card\"\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n {...props}\n />\n))\nCardHeader.displayName = \"CardHeader\"\n\nconst CardTitle = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"font-semibold leading-none tracking-tight\", className)}\n {...props}\n />\n))\nCardTitle.displayName = \"CardTitle\"\n\nconst CardDescription = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nCardDescription.displayName = \"CardDescription\"\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n))\nCardContent.displayName = \"CardContent\"\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center p-6 pt-0\", className)}\n {...props}\n />\n))\nCardFooter.displayName = \"CardFooter\"\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\n"],"names":["Card","React","className","props","ref","jsx","cn","CardHeader","CardTitle","CardDescription","CardContent","CardFooter"],"mappings":";;;AAIA,MAAMA,IAAOC,EAAM,WAGjB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,WAAWE;AAAA,MACT;AAAA,MACA;AAAA,MACAJ;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,EAAA;AACN,CACD;AACDH,EAAK,cAAc;AAEnB,MAAMO,IAAaN,EAAM,WAGvB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,WAAWE,EAAG,iCAAiCJ,CAAS;AAAA,IACvD,GAAGC;AAAA,EAAA;AACN,CACD;AACDI,EAAW,cAAc;AAEzB,MAAMC,IAAYP,EAAM,WAGtB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,WAAWE,EAAG,6CAA6CJ,CAAS;AAAA,IACnE,GAAGC;AAAA,EAAA;AACN,CACD;AACDK,EAAU,cAAc;AAExB,MAAMC,IAAkBR,EAAM,WAG5B,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,WAAWE,EAAG,iCAAiCJ,CAAS;AAAA,IACvD,GAAGC;AAAA,EAAA;AACN,CACD;AACDM,EAAgB,cAAc;AAE9B,MAAMC,IAAcT,EAAM,WAGxB,CAAC,EAAE,WAAAC,GAAW,GAAGC,KAASC,wBACzB,OAAA,EAAI,KAAAA,GAAU,WAAWE,EAAG,YAAYJ,CAAS,GAAI,GAAGC,GAAO,CACjE;AACDO,EAAY,cAAc;AAE1B,MAAMC,IAAaV,EAAM,WAGvB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,WAAWE,EAAG,8BAA8BJ,CAAS;AAAA,IACpD,GAAGC;AAAA,EAAA;AACN,CACD;AACDQ,EAAW,cAAc;"}
1
+ {"version":3,"file":"Card.js","sources":["../../src/Card/Card.tsx"],"sourcesContent":["import * as React from 'react';\r\n\r\nimport { cn } from '@oneplatformdev/utils';\r\n\r\nconst Card = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n 'flex flex-col gap-1 p-2',\r\n 'rounded-2xl border border-border bg-card text-card-foreground shadow-none',\r\n className\r\n )}\r\n {...props}\r\n />\r\n));\r\nCard.displayName = \"Card\"\r\n\r\nconst CardHeader = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\r\n {...props}\r\n />\r\n))\r\nCardHeader.displayName = \"CardHeader\"\r\n\r\nconst CardTitle = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"font-semibold leading-none tracking-tight\", className)}\r\n {...props}\r\n />\r\n))\r\nCardTitle.displayName = \"CardTitle\"\r\n\r\nconst CardDescription = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"text-sm text-muted-foreground\", className)}\r\n {...props}\r\n />\r\n))\r\nCardDescription.displayName = \"CardDescription\"\r\n\r\nconst CardContent = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\r\n))\r\nCardContent.displayName = \"CardContent\"\r\n\r\nconst CardFooter = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"flex items-center p-6 pt-0\", className)}\r\n {...props}\r\n />\r\n))\r\nCardFooter.displayName = \"CardFooter\"\r\n\r\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\r\n"],"names":["Card","React","className","props","ref","jsx","cn","CardHeader","CardTitle","CardDescription","CardContent","CardFooter"],"mappings":";;;AAIA,MAAMA,IAAOC,EAAM,WAGjB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,WAAWE;AAAA,MACT;AAAA,MACA;AAAA,MACAJ;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,EAAA;AACN,CACD;AACDH,EAAK,cAAc;AAEnB,MAAMO,IAAaN,EAAM,WAGvB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,WAAWE,EAAG,iCAAiCJ,CAAS;AAAA,IACvD,GAAGC;AAAA,EAAA;AACN,CACD;AACDI,EAAW,cAAc;AAEzB,MAAMC,IAAYP,EAAM,WAGtB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,WAAWE,EAAG,6CAA6CJ,CAAS;AAAA,IACnE,GAAGC;AAAA,EAAA;AACN,CACD;AACDK,EAAU,cAAc;AAExB,MAAMC,IAAkBR,EAAM,WAG5B,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,WAAWE,EAAG,iCAAiCJ,CAAS;AAAA,IACvD,GAAGC;AAAA,EAAA;AACN,CACD;AACDM,EAAgB,cAAc;AAE9B,MAAMC,IAAcT,EAAM,WAGxB,CAAC,EAAE,WAAAC,GAAW,GAAGC,KAASC,wBACzB,OAAA,EAAI,KAAAA,GAAU,WAAWE,EAAG,YAAYJ,CAAS,GAAI,GAAGC,GAAO,CACjE;AACDO,EAAY,cAAc;AAE1B,MAAMC,IAAaV,EAAM,WAGvB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,WAAWE,EAAG,8BAA8BJ,CAAS;AAAA,IACpD,GAAGC;AAAA,EAAA;AACN,CACD;AACDQ,EAAW,cAAc;"}
@@ -3,11 +3,10 @@ import * as e from "react";
3
3
  import k from "embla-carousel-react";
4
4
  import { ArrowLeft as z, ArrowRight as g } from "lucide-react";
5
5
  import { cn as m } from "@oneplatformdev/utils";
6
- import { Button as p } from "../Button/Button.js";
7
- import "../Button/buttonVariants.js";
8
- const w = e.createContext(null);
6
+ import { Button as w } from "../Button/Button.js";
7
+ const p = e.createContext(null);
9
8
  function C() {
10
- const o = e.useContext(w);
9
+ const o = e.useContext(p);
11
10
  if (!o)
12
11
  throw new Error("useCarousel must be used within a <Carousel />");
13
12
  return o;
@@ -48,7 +47,7 @@ const D = e.forwardRef(
48
47
  r?.off("select", d);
49
48
  };
50
49
  }, [r, d]), /* @__PURE__ */ s(
51
- w.Provider,
50
+ p.Provider,
52
51
  {
53
52
  value: {
54
53
  carouselRef: v,
@@ -114,7 +113,7 @@ I.displayName = "CarouselItem";
114
113
  const j = e.forwardRef(({ className: o, variant: l = "outline-solid", size: t = "icon", ...a }, c) => {
115
114
  const { orientation: i, scrollPrev: u, canScrollPrev: f } = C();
116
115
  return /* @__PURE__ */ x(
117
- p,
116
+ w,
118
117
  {
119
118
  ref: c,
120
119
  variant: l,
@@ -138,7 +137,7 @@ j.displayName = "CarouselPrevious";
138
137
  const A = e.forwardRef(({ className: o, variant: l = "outline-solid", size: t = "icon", ...a }, c) => {
139
138
  const { orientation: i, scrollNext: u, canScrollNext: f } = C();
140
139
  return /* @__PURE__ */ x(
141
- p,
140
+ w,
142
141
  {
143
142
  ref: c,
144
143
  variant: l,
@@ -1 +1 @@
1
- {"version":3,"file":"Carousel.js","sources":["../../src/Carousel/Carousel.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport useEmblaCarousel, {\n type UseEmblaCarouselType,\n} from \"embla-carousel-react\"\nimport { ArrowLeft, ArrowRight } from \"lucide-react\"\n\nimport { cn } from \"@oneplatformdev/utils\";\nimport { Button } from \"../Button\";\n\ntype CarouselApi = UseEmblaCarouselType[1]\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\ntype CarouselOptions = UseCarouselParameters[0]\ntype CarouselPlugin = UseCarouselParameters[1]\n\ntype CarouselProps = {\n opts?: CarouselOptions\n plugins?: CarouselPlugin\n orientation?: \"horizontal\" | \"vertical\"\n setApi?: (api: CarouselApi) => void\n}\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0]\n api: ReturnType<typeof useEmblaCarousel>[1]\n scrollPrev: () => void\n scrollNext: () => void\n canScrollPrev: boolean\n canScrollNext: boolean\n} & CarouselProps\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext)\n\n if (!context) {\n throw new Error(\"useCarousel must be used within a <Carousel />\")\n }\n\n return context\n}\n\nconst Carousel = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & CarouselProps\n>(\n (\n {\n orientation = \"horizontal\",\n opts,\n setApi,\n plugins,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n },\n plugins\n )\n const [canScrollPrev, setCanScrollPrev] = React.useState(false)\n const [canScrollNext, setCanScrollNext] = React.useState(false)\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) {\n return\n }\n\n setCanScrollPrev(api.canScrollPrev())\n setCanScrollNext(api.canScrollNext())\n }, [])\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev()\n }, [api])\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext()\n }, [api])\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"ArrowLeft\") {\n event.preventDefault()\n scrollPrev()\n } else if (event.key === \"ArrowRight\") {\n event.preventDefault()\n scrollNext()\n }\n },\n [scrollPrev, scrollNext]\n )\n\n React.useEffect(() => {\n if (!api || !setApi) {\n return\n }\n\n setApi(api)\n }, [api, setApi])\n\n React.useEffect(() => {\n if (!api) {\n return\n }\n\n onSelect(api)\n api.on(\"reInit\", onSelect)\n api.on(\"select\", onSelect)\n\n return () => {\n api?.off(\"select\", onSelect)\n }\n }, [api, onSelect])\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api: api,\n opts,\n orientation:\n orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <div\n ref={ref}\n onKeyDownCapture={handleKeyDown}\n className={cn(\"relative\", className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n )\n }\n)\nCarousel.displayName = \"Carousel\"\n\nconst CarouselContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const { carouselRef, orientation } = useCarousel()\n\n return (\n <div ref={carouselRef} className=\"overflow-hidden\">\n <div\n ref={ref}\n className={cn(\n \"flex\",\n orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\",\n className\n )}\n {...props}\n />\n </div>\n )\n})\nCarouselContent.displayName = \"CarouselContent\"\n\nconst CarouselItem = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const { orientation } = useCarousel()\n\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-roledescription=\"slide\"\n className={cn(\n \"min-w-0 shrink-0 grow-0 basis-full\",\n orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\n className\n )}\n {...props}\n />\n )\n})\nCarouselItem.displayName = \"CarouselItem\"\n\nconst CarouselPrevious = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<typeof Button>\n>(({ className, variant = \"outline-solid\", size = \"icon\", ...props }, ref) => {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel()\n\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\n \"absolute h-8 w-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"-left-12 top-1/2 -translate-y-1/2\"\n : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n >\n <ArrowLeft className=\"h-4 w-4\" />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n )\n})\nCarouselPrevious.displayName = \"CarouselPrevious\"\n\nconst CarouselNext = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<typeof Button>\n>(({ className, variant = \"outline-solid\", size = \"icon\", ...props }, ref) => {\n const { orientation, scrollNext, canScrollNext } = useCarousel()\n\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\n \"absolute h-8 w-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"-right-12 top-1/2 -translate-y-1/2\"\n : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n >\n <ArrowRight className=\"h-4 w-4\" />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n )\n})\nCarouselNext.displayName = \"CarouselNext\"\n\nexport {\n type CarouselApi,\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n}\n"],"names":["CarouselContext","React","useCarousel","context","Carousel","orientation","opts","setApi","plugins","className","children","props","ref","carouselRef","api","useEmblaCarousel","canScrollPrev","setCanScrollPrev","canScrollNext","setCanScrollNext","onSelect","scrollPrev","scrollNext","handleKeyDown","event","jsx","cn","CarouselContent","CarouselItem","CarouselPrevious","variant","size","jsxs","Button","ArrowLeft","CarouselNext","ArrowRight"],"mappings":"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"}
1
+ {"version":3,"file":"Carousel.js","sources":["../../src/Carousel/Carousel.tsx"],"sourcesContent":["\"use client\"\r\n\r\nimport * as React from \"react\"\r\nimport useEmblaCarousel, {\r\n type UseEmblaCarouselType,\r\n} from \"embla-carousel-react\"\r\nimport { ArrowLeft, ArrowRight } from \"lucide-react\"\r\n\r\nimport { cn } from \"@oneplatformdev/utils\";\r\nimport { Button } from \"../Button\";\r\n\r\ntype CarouselApi = UseEmblaCarouselType[1]\r\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\r\ntype CarouselOptions = UseCarouselParameters[0]\r\ntype CarouselPlugin = UseCarouselParameters[1]\r\n\r\ntype CarouselProps = {\r\n opts?: CarouselOptions\r\n plugins?: CarouselPlugin\r\n orientation?: \"horizontal\" | \"vertical\"\r\n setApi?: (api: CarouselApi) => void\r\n}\r\n\r\ntype CarouselContextProps = {\r\n carouselRef: ReturnType<typeof useEmblaCarousel>[0]\r\n api: ReturnType<typeof useEmblaCarousel>[1]\r\n scrollPrev: () => void\r\n scrollNext: () => void\r\n canScrollPrev: boolean\r\n canScrollNext: boolean\r\n} & CarouselProps\r\n\r\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\r\n\r\nfunction useCarousel() {\r\n const context = React.useContext(CarouselContext)\r\n\r\n if (!context) {\r\n throw new Error(\"useCarousel must be used within a <Carousel />\")\r\n }\r\n\r\n return context\r\n}\r\n\r\nconst Carousel = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement> & CarouselProps\r\n>(\r\n (\r\n {\r\n orientation = \"horizontal\",\r\n opts,\r\n setApi,\r\n plugins,\r\n className,\r\n children,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const [carouselRef, api] = useEmblaCarousel(\r\n {\r\n ...opts,\r\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\r\n },\r\n plugins\r\n )\r\n const [canScrollPrev, setCanScrollPrev] = React.useState(false)\r\n const [canScrollNext, setCanScrollNext] = React.useState(false)\r\n\r\n const onSelect = React.useCallback((api: CarouselApi) => {\r\n if (!api) {\r\n return\r\n }\r\n\r\n setCanScrollPrev(api.canScrollPrev())\r\n setCanScrollNext(api.canScrollNext())\r\n }, [])\r\n\r\n const scrollPrev = React.useCallback(() => {\r\n api?.scrollPrev()\r\n }, [api])\r\n\r\n const scrollNext = React.useCallback(() => {\r\n api?.scrollNext()\r\n }, [api])\r\n\r\n const handleKeyDown = React.useCallback(\r\n (event: React.KeyboardEvent<HTMLDivElement>) => {\r\n if (event.key === \"ArrowLeft\") {\r\n event.preventDefault()\r\n scrollPrev()\r\n } else if (event.key === \"ArrowRight\") {\r\n event.preventDefault()\r\n scrollNext()\r\n }\r\n },\r\n [scrollPrev, scrollNext]\r\n )\r\n\r\n React.useEffect(() => {\r\n if (!api || !setApi) {\r\n return\r\n }\r\n\r\n setApi(api)\r\n }, [api, setApi])\r\n\r\n React.useEffect(() => {\r\n if (!api) {\r\n return\r\n }\r\n\r\n onSelect(api)\r\n api.on(\"reInit\", onSelect)\r\n api.on(\"select\", onSelect)\r\n\r\n return () => {\r\n api?.off(\"select\", onSelect)\r\n }\r\n }, [api, onSelect])\r\n\r\n return (\r\n <CarouselContext.Provider\r\n value={{\r\n carouselRef,\r\n api: api,\r\n opts,\r\n orientation:\r\n orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\r\n scrollPrev,\r\n scrollNext,\r\n canScrollPrev,\r\n canScrollNext,\r\n }}\r\n >\r\n <div\r\n ref={ref}\r\n onKeyDownCapture={handleKeyDown}\r\n className={cn(\"relative\", className)}\r\n role=\"region\"\r\n aria-roledescription=\"carousel\"\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n </CarouselContext.Provider>\r\n )\r\n }\r\n)\r\nCarousel.displayName = \"Carousel\"\r\n\r\nconst CarouselContent = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => {\r\n const { carouselRef, orientation } = useCarousel()\r\n\r\n return (\r\n <div ref={carouselRef} className=\"overflow-hidden\">\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"flex\",\r\n orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n </div>\r\n )\r\n})\r\nCarouselContent.displayName = \"CarouselContent\"\r\n\r\nconst CarouselItem = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => {\r\n const { orientation } = useCarousel()\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"group\"\r\n aria-roledescription=\"slide\"\r\n className={cn(\r\n \"min-w-0 shrink-0 grow-0 basis-full\",\r\n orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n})\r\nCarouselItem.displayName = \"CarouselItem\"\r\n\r\nconst CarouselPrevious = React.forwardRef<\r\n HTMLButtonElement,\r\n React.ComponentProps<typeof Button>\r\n>(({ className, variant = \"outline-solid\", size = \"icon\", ...props }, ref) => {\r\n const { orientation, scrollPrev, canScrollPrev } = useCarousel()\r\n\r\n return (\r\n <Button\r\n ref={ref}\r\n variant={variant}\r\n size={size}\r\n className={cn(\r\n \"absolute h-8 w-8 rounded-full\",\r\n orientation === \"horizontal\"\r\n ? \"-left-12 top-1/2 -translate-y-1/2\"\r\n : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\r\n className\r\n )}\r\n disabled={!canScrollPrev}\r\n onClick={scrollPrev}\r\n {...props}\r\n >\r\n <ArrowLeft className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Previous slide</span>\r\n </Button>\r\n )\r\n})\r\nCarouselPrevious.displayName = \"CarouselPrevious\"\r\n\r\nconst CarouselNext = React.forwardRef<\r\n HTMLButtonElement,\r\n React.ComponentProps<typeof Button>\r\n>(({ className, variant = \"outline-solid\", size = \"icon\", ...props }, ref) => {\r\n const { orientation, scrollNext, canScrollNext } = useCarousel()\r\n\r\n return (\r\n <Button\r\n ref={ref}\r\n variant={variant}\r\n size={size}\r\n className={cn(\r\n \"absolute h-8 w-8 rounded-full\",\r\n orientation === \"horizontal\"\r\n ? \"-right-12 top-1/2 -translate-y-1/2\"\r\n : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\r\n className\r\n )}\r\n disabled={!canScrollNext}\r\n onClick={scrollNext}\r\n {...props}\r\n >\r\n <ArrowRight className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Next slide</span>\r\n </Button>\r\n )\r\n})\r\nCarouselNext.displayName = \"CarouselNext\"\r\n\r\nexport {\r\n type CarouselApi,\r\n Carousel,\r\n CarouselContent,\r\n CarouselItem,\r\n CarouselPrevious,\r\n CarouselNext,\r\n}\r\n"],"names":["CarouselContext","React","useCarousel","context","Carousel","orientation","opts","setApi","plugins","className","children","props","ref","carouselRef","api","useEmblaCarousel","canScrollPrev","setCanScrollPrev","canScrollNext","setCanScrollNext","onSelect","scrollPrev","scrollNext","handleKeyDown","event","jsx","cn","CarouselContent","CarouselItem","CarouselPrevious","variant","size","jsxs","Button","ArrowLeft","CarouselNext","ArrowRight"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Chart.js","sources":["../../src/Chart/Chart.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport * as RechartsPrimitive from \"recharts\"\n\nimport { cn } from \"@oneplatformdev/utils\";\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const\n\nexport type ChartConfig = {\n [k in string]: {\n label?: React.ReactNode\n icon?: React.ComponentType\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\n )\n}\n\ntype ChartContextProps = {\n config: ChartConfig\n}\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\n\nfunction useChart() {\n const context = React.useContext(ChartContext)\n\n if (!context) {\n throw new Error(\"useChart must be used within a <ChartContainer />\")\n }\n\n return context\n}\n\nconst ChartContainer = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n config: ChartConfig\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"]\n }\n>(({ id, className, children, config, ...props }, ref) => {\n const uniqueId = React.useId()\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-chart={chartId}\n ref={ref}\n className={cn(\n \"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-hidden [&_.recharts-surface]:outline-hidden\",\n className\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer>\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n )\n})\nChartContainer.displayName = \"Chart\"\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(\n ([, config]) => config.theme || config.color\n )\n\n if (!colorConfig.length) {\n return null\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n itemConfig.color\n return color ? ` --color-${key}: ${color};` : null\n })\n .join(\"\\n\")}\n}\n`\n )\n .join(\"\\n\"),\n }}\n />\n )\n}\n\nconst ChartTooltip = RechartsPrimitive.Tooltip\n\nconst ChartTooltipContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n React.ComponentProps<\"div\"> & {\n hideLabel?: boolean\n hideIndicator?: boolean\n indicator?: \"line\" | \"dot\" | \"dashed\"\n nameKey?: string\n labelKey?: string\n }\n>(\n (\n {\n active,\n payload,\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n },\n ref\n ) => {\n const { config } = useChart()\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null\n }\n\n const [item] = payload\n const key = `${labelKey || item.dataKey || item.name || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const value =\n !labelKey && typeof label === \"string\"\n ? config[label as keyof typeof config]?.label || label\n : itemConfig?.label\n\n if (labelFormatter) {\n return (\n <div className={cn(\"font-medium\", labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n )\n }\n\n if (!value) {\n return null\n }\n\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ])\n\n if (!active || !payload?.length) {\n return null\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\"\n\n return (\n <div\n ref={ref}\n className={cn(\n \"grid min-w-32 items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl\",\n className\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload.map((item, index) => {\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const indicatorColor = color || item.payload.fill || item.color\n\n return (\n <div\n key={item.dataKey}\n className={cn(\n \"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\",\n indicator === \"dot\" && \"items-center\"\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n \"shrink-0 rounded-[2px] border-border bg-(--color-bg)\",\n {\n \"h-2.5 w-2.5\": indicator === \"dot\",\n \"w-1\": indicator === \"line\",\n \"w-0 border-[1.5px] border-dashed bg-transparent\":\n indicator === \"dashed\",\n \"my-0.5\": nestLabel && indicator === \"dashed\",\n }\n )}\n style={\n {\n \"--color-bg\": indicatorColor,\n \"--color-border\": indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n \"flex flex-1 justify-between leading-none\",\n nestLabel ? \"items-end\" : \"items-center\"\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted-foreground\">\n {itemConfig?.label || item.name}\n </span>\n </div>\n {item.value && (\n <span className=\"font-mono font-medium tabular-nums text-foreground\">\n {item.value.toLocaleString()}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n }\n)\nChartTooltipContent.displayName = \"ChartTooltip\"\n\nconst ChartLegend = RechartsPrimitive.Legend\n\nconst ChartLegendContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> &\n Pick<RechartsPrimitive.LegendProps, \"payload\" | \"verticalAlign\"> & {\n hideIcon?: boolean\n nameKey?: string\n }\n>(\n (\n { className, hideIcon = false, payload, verticalAlign = \"bottom\", nameKey },\n ref\n ) => {\n const { config } = useChart()\n\n if (!payload?.length) {\n return null\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex items-center justify-center gap-4\",\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n className\n )}\n >\n {payload.map((item) => {\n const key = `${nameKey || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n\n return (\n <div\n key={item.value}\n className={cn(\n \"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\"\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n )\n })}\n </div>\n )\n }\n)\nChartLegendContent.displayName = \"ChartLegend\"\n\n// Helper to extract item config from a payload.\nfunction getPayloadConfigFromPayload(\n config: ChartConfig,\n payload: unknown,\n key: string\n) {\n if (typeof payload !== \"object\" || payload === null) {\n return undefined\n }\n\n const payloadPayload =\n \"payload\" in payload &&\n typeof payload.payload === \"object\" &&\n payload.payload !== null\n ? payload.payload\n : undefined\n\n let configLabelKey: string = key\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === \"string\"\n ) {\n configLabelKey = payload[key as keyof typeof payload] as string\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n ) {\n configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string\n }\n\n return configLabelKey in config\n ? config[configLabelKey]\n : config[key as keyof typeof config]\n}\n\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n}\n"],"names":["THEMES","ChartContext","React","useChart","context","ChartContainer","id","className","children","config","props","ref","uniqueId","chartId","jsxs","cn","jsx","ChartStyle","RechartsPrimitive","colorConfig","theme","prefix","key","itemConfig","color","ChartTooltip","ChartTooltipContent","active","payload","indicator","hideLabel","hideIndicator","label","labelFormatter","labelClassName","formatter","nameKey","labelKey","tooltipLabel","item","getPayloadConfigFromPayload","value","nestLabel","index","indicatorColor","Fragment","ChartLegend","ChartLegendContent","hideIcon","verticalAlign","payloadPayload","configLabelKey"],"mappings":";;;;AAQA,MAAMA,IAAS,EAAE,OAAO,IAAI,MAAM,QAAA,GAgB5BC,IAAeC,EAAM,cAAwC,IAAI;AAEvE,SAASC,IAAW;AAClB,QAAMC,IAAUF,EAAM,WAAWD,CAAY;AAE7C,MAAI,CAACG;AACH,UAAM,IAAI,MAAM,mDAAmD;AAGrE,SAAOA;AACT;AAEA,MAAMC,IAAiBH,EAAM,WAQ3B,CAAC,EAAE,IAAAI,GAAI,WAAAC,GAAW,UAAAC,GAAU,QAAAC,GAAQ,GAAGC,EAAA,GAASC,MAAQ;AACxD,QAAMC,IAAWV,EAAM,MAAA,GACjBW,IAAU,SAASP,KAAMM,EAAS,QAAQ,MAAM,EAAE,CAAC;AAEzD,2BACGX,EAAa,UAAb,EAAsB,OAAO,EAAE,QAAAQ,KAC9B,UAAA,gBAAAK;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,cAAYD;AAAA,MACZ,KAAAF;AAAA,MACA,WAAWI;AAAA,QACT;AAAA,QACAR;AAAA,MAAA;AAAA,MAED,GAAGG;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAM,EAACC,GAAA,EAAW,IAAIJ,GAAS,QAAAJ,EAAA,CAAgB;AAAA,QACzC,gBAAAO,EAACE,EAAkB,qBAAlB,EACE,UAAAV,EAAA,CACH;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAEJ;AAEJ,CAAC;AACDH,EAAe,cAAc;AAE7B,MAAMY,IAAa,CAAC,EAAE,IAAAX,GAAI,QAAAG,QAAkD;AAC1E,QAAMU,IAAc,OAAO,QAAQV,CAAM,EAAE;AAAA,IACzC,CAAC,CAAA,EAAGA,CAAM,MAAMA,EAAO,SAASA,EAAO;AAAA,EAAA;AAGzC,SAAKU,EAAY,SAKf,gBAAAH;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,yBAAyB;AAAA,QACvB,QAAQ,OAAO,QAAQhB,CAAM,EAC1B;AAAA,UACC,CAAC,CAACoB,GAAOC,CAAM,MAAM;AAAA,EAC/BA,CAAM,gBAAgBf,CAAE;AAAA,EACxBa,EACC,IAAI,CAAC,CAACG,GAAKC,CAAU,MAAM;AAC1B,kBAAMC,IACJD,EAAW,QAAQH,CAAsC,KACzDG,EAAW;AACb,mBAAOC,IAAQ,aAAaF,CAAG,KAAKE,CAAK,MAAM;AAAA,UACjD,CAAC,EACA,KAAK;AAAA,CAAI,CAAC;AAAA;AAAA;AAAA,QAAA,EAIF,KAAK;AAAA,CAAI;AAAA,MAAA;AAAA,IACd;AAAA,EAAA,IAtBK;AAyBX,GAEMC,IAAeP,EAAkB,SAEjCQ,IAAsBxB,EAAM;AAAA,EAWhC,CACE;AAAA,IACE,QAAAyB;AAAA,IACA,SAAAC;AAAA,IACA,WAAArB;AAAA,IACA,WAAAsB,IAAY;AAAA,IACZ,WAAAC,IAAY;AAAA,IACZ,eAAAC,IAAgB;AAAA,IAChB,OAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,WAAAC;AAAA,IACA,OAAAX;AAAA,IACA,SAAAY;AAAA,IACA,UAAAC;AAAA,EAAA,GAEF1B,MACG;AACH,UAAM,EAAE,QAAAF,EAAA,IAAWN,EAAA,GAEbmC,IAAepC,EAAM,QAAQ,MAAM;AACvC,UAAI4B,KAAa,CAACF,GAAS;AACzB,eAAO;AAGT,YAAM,CAACW,CAAI,IAAIX,GACTN,IAAM,GAAGe,KAAYE,EAAK,WAAWA,EAAK,QAAQ,OAAO,IACzDhB,IAAaiB,EAA4B/B,GAAQ8B,GAAMjB,CAAG,GAC1DmB,IACJ,CAACJ,KAAY,OAAOL,KAAU,WAC1BvB,EAAOuB,CAA4B,GAAG,SAASA,IAC/CT,GAAY;AAElB,aAAIU,IAEA,gBAAAjB,EAAC,OAAA,EAAI,WAAWD,EAAG,eAAemB,CAAc,GAC7C,UAAAD,EAAeQ,GAAOb,CAAO,EAAA,CAChC,IAICa,sBAIG,OAAA,EAAI,WAAW1B,EAAG,eAAemB,CAAc,GAAI,UAAAO,GAAM,IAHxD;AAAA,IAIX,GAAG;AAAA,MACDT;AAAA,MACAC;AAAA,MACAL;AAAA,MACAE;AAAA,MACAI;AAAA,MACAzB;AAAA,MACA4B;AAAA,IAAA,CACD;AAED,QAAI,CAACV,KAAU,CAACC,GAAS;AACvB,aAAO;AAGT,UAAMc,IAAYd,EAAQ,WAAW,KAAKC,MAAc;AAExD,WACE,gBAAAf;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAH;AAAA,QACA,WAAWI;AAAA,UACT;AAAA,UACAR;AAAA,QAAA;AAAA,QAGD,UAAA;AAAA,UAACmC,IAA2B,OAAfJ;AAAA,UACd,gBAAAtB,EAAC,SAAI,WAAU,gBACZ,YAAQ,IAAI,CAACuB,GAAMI,MAAU;AAC5B,kBAAMrB,IAAM,GAAGc,KAAWG,EAAK,QAAQA,EAAK,WAAW,OAAO,IACxDhB,IAAaiB,EAA4B/B,GAAQ8B,GAAMjB,CAAG,GAC1DsB,IAAiBpB,KAASe,EAAK,QAAQ,QAAQA,EAAK;AAE1D,mBACE,gBAAAvB;AAAA,cAAC;AAAA,cAAA;AAAA,gBAEC,WAAWD;AAAA,kBACT;AAAA,kBACAc,MAAc,SAAS;AAAA,gBAAA;AAAA,gBAGxB,eAAaU,GAAM,UAAU,UAAaA,EAAK,OAC9CJ,EAAUI,EAAK,OAAOA,EAAK,MAAMA,GAAMI,GAAOJ,EAAK,OAAO,IAE1D,gBAAAzB,EAAA+B,GAAA,EACG,UAAA;AAAA,kBAAAtB,GAAY,OACX,gBAAAP,EAACO,EAAW,MAAX,EAAgB,IAEjB,CAACQ,KACC,gBAAAf;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,WAAWD;AAAA,wBACT;AAAA,wBACA;AAAA,0BACE,eAAec,MAAc;AAAA,0BAC7B,OAAOA,MAAc;AAAA,0BACrB,mDACEA,MAAc;AAAA,0BAChB,UAAUa,KAAab,MAAc;AAAA,wBAAA;AAAA,sBACvC;AAAA,sBAEF,OACE;AAAA,wBACE,cAAce;AAAA,wBACd,kBAAkBA;AAAA,sBAAA;AAAA,oBACpB;AAAA,kBAAA;AAAA,kBAKR,gBAAA9B;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,WAAWC;AAAA,wBACT;AAAA,wBACA2B,IAAY,cAAc;AAAA,sBAAA;AAAA,sBAG5B,UAAA;AAAA,wBAAA,gBAAA5B,EAAC,OAAA,EAAI,WAAU,gBACZ,UAAA;AAAA,0BAAA4B,IAAYJ,IAAe;AAAA,4CAC3B,QAAA,EAAK,WAAU,yBACb,UAAAf,GAAY,SAASgB,EAAK,KAAA,CAC7B;AAAA,wBAAA,GACF;AAAA,wBACCA,EAAK,SACJ,gBAAAvB,EAAC,QAAA,EAAK,WAAU,sDACb,UAAAuB,EAAK,MAAM,eAAA,EAAe,CAC7B;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAEJ,EAAA,CACF;AAAA,cAAA;AAAA,cApDGA,EAAK;AAAA,YAAA;AAAA,UAwDhB,CAAC,EAAA,CACH;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF;AACAb,EAAoB,cAAc;AAElC,MAAMoB,IAAc5B,EAAkB,QAEhC6B,IAAqB7C,EAAM;AAAA,EAQ/B,CACE,EAAE,WAAAK,GAAW,UAAAyC,IAAW,IAAO,SAAApB,GAAS,eAAAqB,IAAgB,UAAU,SAAAb,EAAA,GAClEzB,MACG;AACH,UAAM,EAAE,QAAAF,EAAA,IAAWN,EAAA;AAEnB,WAAKyB,GAAS,SAKZ,gBAAAZ;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAL;AAAA,QACA,WAAWI;AAAA,UACT;AAAA,UACAkC,MAAkB,QAAQ,SAAS;AAAA,UACnC1C;AAAA,QAAA;AAAA,QAGD,UAAAqB,EAAQ,IAAI,CAACW,MAAS;AACrB,gBAAMjB,IAAM,GAAGc,KAAWG,EAAK,WAAW,OAAO,IAC3ChB,IAAaiB,EAA4B/B,GAAQ8B,GAAMjB,CAAG;AAEhE,iBACE,gBAAAR;AAAA,YAAC;AAAA,YAAA;AAAA,cAEC,WAAWC;AAAA,gBACT;AAAA,cAAA;AAAA,cAGD,UAAA;AAAA,gBAAAQ,GAAY,QAAQ,CAACyB,sBACnBzB,EAAW,MAAX,CAAA,CAAgB,IAEjB,gBAAAP;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,WAAU;AAAA,oBACV,OAAO;AAAA,sBACL,iBAAiBuB,EAAK;AAAA,oBAAA;AAAA,kBACxB;AAAA,gBAAA;AAAA,gBAGHhB,GAAY;AAAA,cAAA;AAAA,YAAA;AAAA,YAfRgB,EAAK;AAAA,UAAA;AAAA,QAkBhB,CAAC;AAAA,MAAA;AAAA,IAAA,IApCI;AAAA,EAuCX;AACF;AACAQ,EAAmB,cAAc;AAGjC,SAASP,EACP/B,GACAmB,GACAN,GACA;AACA,MAAI,OAAOM,KAAY,YAAYA,MAAY;AAC7C;AAGF,QAAMsB,IACJ,aAAatB,KACb,OAAOA,EAAQ,WAAY,YAC3BA,EAAQ,YAAY,OAChBA,EAAQ,UACR;AAEN,MAAIuB,IAAyB7B;AAE7B,SACEA,KAAOM,KACP,OAAOA,EAAQN,CAA2B,KAAM,WAEhD6B,IAAiBvB,EAAQN,CAA2B,IAEpD4B,KACA5B,KAAO4B,KACP,OAAOA,EAAe5B,CAAkC,KAAM,aAE9D6B,IAAiBD,EACf5B,CACF,IAGK6B,KAAkB1C,IACrBA,EAAO0C,CAAc,IACrB1C,EAAOa,CAA0B;AACvC;"}
1
+ {"version":3,"file":"Chart.js","sources":["../../src/Chart/Chart.tsx"],"sourcesContent":["\"use client\"\r\n\r\nimport * as React from \"react\"\r\nimport * as RechartsPrimitive from \"recharts\"\r\n\r\nimport { cn } from \"@oneplatformdev/utils\";\r\n\r\n// Format: { THEME_NAME: CSS_SELECTOR }\r\nconst THEMES = { light: \"\", dark: \".dark\" } as const\r\n\r\nexport type ChartConfig = {\r\n [k in string]: {\r\n label?: React.ReactNode\r\n icon?: React.ComponentType\r\n } & (\r\n | { color?: string; theme?: never }\r\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\r\n )\r\n}\r\n\r\ntype ChartContextProps = {\r\n config: ChartConfig\r\n}\r\n\r\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\r\n\r\nfunction useChart() {\r\n const context = React.useContext(ChartContext)\r\n\r\n if (!context) {\r\n throw new Error(\"useChart must be used within a <ChartContainer />\")\r\n }\r\n\r\n return context\r\n}\r\n\r\nconst ChartContainer = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<\"div\"> & {\r\n config: ChartConfig\r\n children: React.ComponentProps<\r\n typeof RechartsPrimitive.ResponsiveContainer\r\n >[\"children\"]\r\n }\r\n>(({ id, className, children, config, ...props }, ref) => {\r\n const uniqueId = React.useId()\r\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`\r\n\r\n return (\r\n <ChartContext.Provider value={{ config }}>\r\n <div\r\n data-chart={chartId}\r\n ref={ref}\r\n className={cn(\r\n \"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-hidden [&_.recharts-surface]:outline-hidden\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <ChartStyle id={chartId} config={config} />\r\n <RechartsPrimitive.ResponsiveContainer>\r\n {children}\r\n </RechartsPrimitive.ResponsiveContainer>\r\n </div>\r\n </ChartContext.Provider>\r\n )\r\n})\r\nChartContainer.displayName = \"Chart\"\r\n\r\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\r\n const colorConfig = Object.entries(config).filter(\r\n ([, config]) => config.theme || config.color\r\n )\r\n\r\n if (!colorConfig.length) {\r\n return null\r\n }\r\n\r\n return (\r\n <style\r\n dangerouslySetInnerHTML={{\r\n __html: Object.entries(THEMES)\r\n .map(\r\n ([theme, prefix]) => `\r\n${prefix} [data-chart=${id}] {\r\n${colorConfig\r\n .map(([key, itemConfig]) => {\r\n const color =\r\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\r\n itemConfig.color\r\n return color ? ` --color-${key}: ${color};` : null\r\n })\r\n .join(\"\\n\")}\r\n}\r\n`\r\n )\r\n .join(\"\\n\"),\r\n }}\r\n />\r\n )\r\n}\r\n\r\nconst ChartTooltip = RechartsPrimitive.Tooltip\r\n\r\nconst ChartTooltipContent = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\r\n React.ComponentProps<\"div\"> & {\r\n hideLabel?: boolean\r\n hideIndicator?: boolean\r\n indicator?: \"line\" | \"dot\" | \"dashed\"\r\n nameKey?: string\r\n labelKey?: string\r\n }\r\n>(\r\n (\r\n {\r\n active,\r\n payload,\r\n className,\r\n indicator = \"dot\",\r\n hideLabel = false,\r\n hideIndicator = false,\r\n label,\r\n labelFormatter,\r\n labelClassName,\r\n formatter,\r\n color,\r\n nameKey,\r\n labelKey,\r\n },\r\n ref\r\n ) => {\r\n const { config } = useChart()\r\n\r\n const tooltipLabel = React.useMemo(() => {\r\n if (hideLabel || !payload?.length) {\r\n return null\r\n }\r\n\r\n const [item] = payload\r\n const key = `${labelKey || item.dataKey || item.name || \"value\"}`\r\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\r\n const value =\r\n !labelKey && typeof label === \"string\"\r\n ? config[label as keyof typeof config]?.label || label\r\n : itemConfig?.label\r\n\r\n if (labelFormatter) {\r\n return (\r\n <div className={cn(\"font-medium\", labelClassName)}>\r\n {labelFormatter(value, payload)}\r\n </div>\r\n )\r\n }\r\n\r\n if (!value) {\r\n return null\r\n }\r\n\r\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>\r\n }, [\r\n label,\r\n labelFormatter,\r\n payload,\r\n hideLabel,\r\n labelClassName,\r\n config,\r\n labelKey,\r\n ])\r\n\r\n if (!active || !payload?.length) {\r\n return null\r\n }\r\n\r\n const nestLabel = payload.length === 1 && indicator !== \"dot\"\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"grid min-w-32 items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl\",\r\n className\r\n )}\r\n >\r\n {!nestLabel ? tooltipLabel : null}\r\n <div className=\"grid gap-1.5\">\r\n {payload.map((item, index) => {\r\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`\r\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\r\n const indicatorColor = color || item.payload.fill || item.color\r\n\r\n return (\r\n <div\r\n key={item.dataKey}\r\n className={cn(\r\n \"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\",\r\n indicator === \"dot\" && \"items-center\"\r\n )}\r\n >\r\n {formatter && item?.value !== undefined && item.name ? (\r\n formatter(item.value, item.name, item, index, item.payload)\r\n ) : (\r\n <>\r\n {itemConfig?.icon ? (\r\n <itemConfig.icon />\r\n ) : (\r\n !hideIndicator && (\r\n <div\r\n className={cn(\r\n \"shrink-0 rounded-[2px] border-border bg-(--color-bg)\",\r\n {\r\n \"h-2.5 w-2.5\": indicator === \"dot\",\r\n \"w-1\": indicator === \"line\",\r\n \"w-0 border-[1.5px] border-dashed bg-transparent\":\r\n indicator === \"dashed\",\r\n \"my-0.5\": nestLabel && indicator === \"dashed\",\r\n }\r\n )}\r\n style={\r\n {\r\n \"--color-bg\": indicatorColor,\r\n \"--color-border\": indicatorColor,\r\n } as React.CSSProperties\r\n }\r\n />\r\n )\r\n )}\r\n <div\r\n className={cn(\r\n \"flex flex-1 justify-between leading-none\",\r\n nestLabel ? \"items-end\" : \"items-center\"\r\n )}\r\n >\r\n <div className=\"grid gap-1.5\">\r\n {nestLabel ? tooltipLabel : null}\r\n <span className=\"text-muted-foreground\">\r\n {itemConfig?.label || item.name}\r\n </span>\r\n </div>\r\n {item.value && (\r\n <span className=\"font-mono font-medium tabular-nums text-foreground\">\r\n {item.value.toLocaleString()}\r\n </span>\r\n )}\r\n </div>\r\n </>\r\n )}\r\n </div>\r\n )\r\n })}\r\n </div>\r\n </div>\r\n )\r\n }\r\n)\r\nChartTooltipContent.displayName = \"ChartTooltip\"\r\n\r\nconst ChartLegend = RechartsPrimitive.Legend\r\n\r\nconst ChartLegendContent = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<\"div\"> &\r\n Pick<RechartsPrimitive.LegendProps, \"payload\" | \"verticalAlign\"> & {\r\n hideIcon?: boolean\r\n nameKey?: string\r\n }\r\n>(\r\n (\r\n { className, hideIcon = false, payload, verticalAlign = \"bottom\", nameKey },\r\n ref\r\n ) => {\r\n const { config } = useChart()\r\n\r\n if (!payload?.length) {\r\n return null\r\n }\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"flex items-center justify-center gap-4\",\r\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\r\n className\r\n )}\r\n >\r\n {payload.map((item) => {\r\n const key = `${nameKey || item.dataKey || \"value\"}`\r\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\r\n\r\n return (\r\n <div\r\n key={item.value}\r\n className={cn(\r\n \"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\"\r\n )}\r\n >\r\n {itemConfig?.icon && !hideIcon ? (\r\n <itemConfig.icon />\r\n ) : (\r\n <div\r\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\r\n style={{\r\n backgroundColor: item.color,\r\n }}\r\n />\r\n )}\r\n {itemConfig?.label}\r\n </div>\r\n )\r\n })}\r\n </div>\r\n )\r\n }\r\n)\r\nChartLegendContent.displayName = \"ChartLegend\"\r\n\r\n// Helper to extract item config from a payload.\r\nfunction getPayloadConfigFromPayload(\r\n config: ChartConfig,\r\n payload: unknown,\r\n key: string\r\n) {\r\n if (typeof payload !== \"object\" || payload === null) {\r\n return undefined\r\n }\r\n\r\n const payloadPayload =\r\n \"payload\" in payload &&\r\n typeof payload.payload === \"object\" &&\r\n payload.payload !== null\r\n ? payload.payload\r\n : undefined\r\n\r\n let configLabelKey: string = key\r\n\r\n if (\r\n key in payload &&\r\n typeof payload[key as keyof typeof payload] === \"string\"\r\n ) {\r\n configLabelKey = payload[key as keyof typeof payload] as string\r\n } else if (\r\n payloadPayload &&\r\n key in payloadPayload &&\r\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\r\n ) {\r\n configLabelKey = payloadPayload[\r\n key as keyof typeof payloadPayload\r\n ] as string\r\n }\r\n\r\n return configLabelKey in config\r\n ? config[configLabelKey]\r\n : config[key as keyof typeof config]\r\n}\r\n\r\nexport {\r\n ChartContainer,\r\n ChartTooltip,\r\n ChartTooltipContent,\r\n ChartLegend,\r\n ChartLegendContent,\r\n ChartStyle,\r\n}\r\n"],"names":["THEMES","ChartContext","React","useChart","context","ChartContainer","id","className","children","config","props","ref","uniqueId","chartId","jsxs","cn","jsx","ChartStyle","RechartsPrimitive","colorConfig","theme","prefix","key","itemConfig","color","ChartTooltip","ChartTooltipContent","active","payload","indicator","hideLabel","hideIndicator","label","labelFormatter","labelClassName","formatter","nameKey","labelKey","tooltipLabel","item","getPayloadConfigFromPayload","value","nestLabel","index","indicatorColor","Fragment","ChartLegend","ChartLegendContent","hideIcon","verticalAlign","payloadPayload","configLabelKey"],"mappings":"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"}
@@ -1,37 +1,36 @@
1
1
  import { jsx as r, jsxs as l } from "react/jsx-runtime";
2
- import * as c from "@radix-ui/react-checkbox";
2
+ import * as t from "@radix-ui/react-checkbox";
3
3
  import { MinusIcon as f, CheckIcon as p } from "lucide-react";
4
- import * as m from "react";
4
+ import * as n from "react";
5
5
  import { cn as i } from "@oneplatformdev/utils";
6
6
  import { Label as h } from "../Label/Label.js";
7
- import "../Label/labelVariants.js";
8
- const n = m.forwardRef(({ className: o, checked: s, indeterminate: e, ...a }, t) => {
9
- const d = e ? f : p;
7
+ const d = n.forwardRef(({ className: s, checked: o, indeterminate: e, ...a }, c) => {
8
+ const m = e ? f : p;
10
9
  return /* @__PURE__ */ r(
11
- c.Root,
10
+ t.Root,
12
11
  {
13
- ref: t,
12
+ ref: c,
14
13
  className: i(
15
14
  "peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow-sm focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",
16
- o
15
+ s
17
16
  ),
18
17
  ...a,
19
- checked: s ?? e,
18
+ checked: o ?? e,
20
19
  children: /* @__PURE__ */ r(
21
- c.Indicator,
20
+ t.Indicator,
22
21
  {
23
22
  className: i("flex items-center justify-center text-current"),
24
- children: /* @__PURE__ */ r(d, { className: "h-4 w-4" })
23
+ children: /* @__PURE__ */ r(m, { className: "h-4 w-4" })
25
24
  }
26
25
  )
27
26
  }
28
27
  );
29
28
  });
30
- n.displayName = c.Root.displayName;
31
- const u = m.forwardRef(({ label: o = "", children: s, labelProps: e, ...a }, t) => /* @__PURE__ */ l(
29
+ d.displayName = t.Root.displayName;
30
+ const u = n.forwardRef(({ label: s = "", children: o, labelProps: e, ...a }, c) => /* @__PURE__ */ l(
32
31
  h,
33
32
  {
34
- ref: t,
33
+ ref: c,
35
34
  ...e,
36
35
  className: i(
37
36
  "flex w-full items-start gap-3 font-normal py-3 cursor-pointer",
@@ -39,17 +38,17 @@ const u = m.forwardRef(({ label: o = "", children: s, labelProps: e, ...a }, t)
39
38
  ),
40
39
  style: e?.style,
41
40
  children: [
42
- /* @__PURE__ */ r(n, { ...a }),
41
+ /* @__PURE__ */ r(d, { ...a }),
43
42
  /* @__PURE__ */ l("div", { className: "flex flex-col w-full gap-3", children: [
44
- /* @__PURE__ */ r("span", { className: "flex flex-col justify-start leading-[16px]", children: o }),
45
- s
43
+ /* @__PURE__ */ r("span", { className: "flex flex-col justify-start leading-[16px]", children: s }),
44
+ o
46
45
  ] })
47
46
  ]
48
47
  }
49
48
  ));
50
49
  u.displayName = "CheckboxLabel";
51
50
  export {
52
- n as Checkbox,
51
+ d as Checkbox,
53
52
  u as CheckboxLabel
54
53
  };
55
54
  //# sourceMappingURL=Checkbox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.js","sources":["../../src/Checkbox/Checkbox.tsx"],"sourcesContent":["'use client';\n\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { CheckIcon, MinusIcon } from 'lucide-react';\nimport * as React from 'react';\n\nimport { cn } from '@oneplatformdev/utils';\nimport type { CheckboxLabelProps, CheckboxProps } from './Checkbox.types';\n\nimport { Label } from '../Label';\n\n// TODO: move to @oneplatformdev/ui/Checkbox\nconst Checkbox = React.forwardRef<\n\tReact.ElementRef<typeof CheckboxPrimitive.Root>,\n\tCheckboxProps\n>(({ className, checked, indeterminate, ...props }, ref) => {\n\tconst Icon = indeterminate ? MinusIcon : CheckIcon;\n\treturn (\n\t\t<CheckboxPrimitive.Root\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t\"peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow-sm focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t\tchecked={checked ?? indeterminate}\n\t\t>\n\t\t\t<CheckboxPrimitive.Indicator\n\t\t\t\tclassName={cn(\"flex items-center justify-center text-current\")}\n\t\t\t>\n\t\t\t\t<Icon className=\"h-4 w-4\"/>\n\t\t\t</CheckboxPrimitive.Indicator>\n\t\t</CheckboxPrimitive.Root>\n\t);\n});\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nconst CheckboxLabel = React.forwardRef<\n\tHTMLLabelElement,\n\tCheckboxLabelProps\n>(({ label = '', children, labelProps, ...rest }, ref) => {\n\treturn (\n\t\t<Label\n\t\t\tref={ref}\n\t\t\t{...labelProps}\n\t\t\tclassName={cn(\n\t\t\t\t'flex w-full items-start gap-3 font-normal py-3 cursor-pointer',\n\t\t\t\tlabelProps?.className,\n\t\t\t)}\n\t\t\tstyle={labelProps?.style}\n\t\t>\n\t\t\t<Checkbox {...rest}/>\n\t\t\t<div className='flex flex-col w-full gap-3'>\n\t\t\t\t<span className='flex flex-col justify-start leading-[16px]'>{label}</span>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</Label>\n\t);\n});\nCheckboxLabel.displayName = 'CheckboxLabel';\n\nexport { Checkbox, CheckboxLabel };\n"],"names":["Checkbox","React","className","checked","indeterminate","props","ref","Icon","MinusIcon","CheckIcon","jsx","CheckboxPrimitive","cn","CheckboxLabel","label","children","labelProps","rest","jsxs","Label"],"mappings":";;;;;;;AAYA,MAAMA,IAAWC,EAAM,WAGrB,CAAC,EAAE,WAAAC,GAAW,SAAAC,GAAS,eAAAC,GAAe,GAAGC,EAAA,GAASC,MAAQ;AAC3D,QAAMC,IAAOH,IAAgBI,IAAYC;AACzC,SACC,gBAAAC;AAAA,IAACC,EAAkB;AAAA,IAAlB;AAAA,MACA,KAAAL;AAAA,MACA,WAAWM;AAAA,QACV;AAAA,QACAV;AAAA,MAAA;AAAA,MAEA,GAAGG;AAAA,MACJ,SAASF,KAAWC;AAAA,MAEpB,UAAA,gBAAAM;AAAA,QAACC,EAAkB;AAAA,QAAlB;AAAA,UACA,WAAWC,EAAG,+CAA+C;AAAA,UAE7D,UAAA,gBAAAF,EAACH,GAAA,EAAK,WAAU,UAAA,CAAS;AAAA,QAAA;AAAA,MAAA;AAAA,IAC1B;AAAA,EAAA;AAGH,CAAC;AACDP,EAAS,cAAcW,EAAkB,KAAK;AAE9C,MAAME,IAAgBZ,EAAM,WAG1B,CAAC,EAAE,OAAAa,IAAQ,IAAI,UAAAC,GAAU,YAAAC,GAAY,GAAGC,EAAA,GAAQX,MAEhD,gBAAAY;AAAA,EAACC;AAAA,EAAA;AAAA,IACA,KAAAb;AAAA,IACC,GAAGU;AAAA,IACJ,WAAWJ;AAAA,MACV;AAAA,MACAI,GAAY;AAAA,IAAA;AAAA,IAEb,OAAOA,GAAY;AAAA,IAEnB,UAAA;AAAA,MAAA,gBAAAN,EAACV,GAAA,EAAU,GAAGiB,GAAK;AAAA,MACnB,gBAAAC,EAAC,OAAA,EAAI,WAAU,8BACd,UAAA;AAAA,QAAA,gBAAAR,EAAC,QAAA,EAAK,WAAU,8CAA8C,UAAAI,GAAM;AAAA,QACnEC;AAAA,MAAA,EAAA,CACF;AAAA,IAAA;AAAA,EAAA;AAAA,CAGF;AACDF,EAAc,cAAc;"}
1
+ {"version":3,"file":"Checkbox.js","sources":["../../src/Checkbox/Checkbox.tsx"],"sourcesContent":["'use client';\r\n\r\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\r\nimport { CheckIcon, MinusIcon } from 'lucide-react';\r\nimport * as React from 'react';\r\n\r\nimport { cn } from '@oneplatformdev/utils';\r\nimport type { CheckboxLabelProps, CheckboxProps } from './Checkbox.types';\r\n\r\nimport { Label } from '../Label';\r\n\r\n// TODO: move to @oneplatformdev/ui/Checkbox\r\nconst Checkbox = React.forwardRef<\r\n\tReact.ElementRef<typeof CheckboxPrimitive.Root>,\r\n\tCheckboxProps\r\n>(({ className, checked, indeterminate, ...props }, ref) => {\r\n\tconst Icon = indeterminate ? MinusIcon : CheckIcon;\r\n\treturn (\r\n\t\t<CheckboxPrimitive.Root\r\n\t\t\tref={ref}\r\n\t\t\tclassName={cn(\r\n\t\t\t\t\"peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow-sm focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\",\r\n\t\t\t\tclassName\r\n\t\t\t)}\r\n\t\t\t{...props}\r\n\t\t\tchecked={checked ?? indeterminate}\r\n\t\t>\r\n\t\t\t<CheckboxPrimitive.Indicator\r\n\t\t\t\tclassName={cn(\"flex items-center justify-center text-current\")}\r\n\t\t\t>\r\n\t\t\t\t<Icon className=\"h-4 w-4\"/>\r\n\t\t\t</CheckboxPrimitive.Indicator>\r\n\t\t</CheckboxPrimitive.Root>\r\n\t);\r\n});\r\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\r\n\r\nconst CheckboxLabel = React.forwardRef<\r\n\tHTMLLabelElement,\r\n\tCheckboxLabelProps\r\n>(({ label = '', children, labelProps, ...rest }, ref) => {\r\n\treturn (\r\n\t\t<Label\r\n\t\t\tref={ref}\r\n\t\t\t{...labelProps}\r\n\t\t\tclassName={cn(\r\n\t\t\t\t'flex w-full items-start gap-3 font-normal py-3 cursor-pointer',\r\n\t\t\t\tlabelProps?.className,\r\n\t\t\t)}\r\n\t\t\tstyle={labelProps?.style}\r\n\t\t>\r\n\t\t\t<Checkbox {...rest}/>\r\n\t\t\t<div className='flex flex-col w-full gap-3'>\r\n\t\t\t\t<span className='flex flex-col justify-start leading-[16px]'>{label}</span>\r\n\t\t\t\t{children}\r\n\t\t\t</div>\r\n\t\t</Label>\r\n\t);\r\n});\r\nCheckboxLabel.displayName = 'CheckboxLabel';\r\n\r\nexport { Checkbox, CheckboxLabel };\r\n"],"names":["Checkbox","React","className","checked","indeterminate","props","ref","Icon","MinusIcon","CheckIcon","jsx","CheckboxPrimitive","cn","CheckboxLabel","label","children","labelProps","rest","jsxs","Label"],"mappings":";;;;;;AAYA,MAAMA,IAAWC,EAAM,WAGrB,CAAC,EAAE,WAAAC,GAAW,SAAAC,GAAS,eAAAC,GAAe,GAAGC,EAAA,GAASC,MAAQ;AAC3D,QAAMC,IAAOH,IAAgBI,IAAYC;AACzC,SACC,gBAAAC;AAAA,IAACC,EAAkB;AAAA,IAAlB;AAAA,MACA,KAAAL;AAAA,MACA,WAAWM;AAAA,QACV;AAAA,QACAV;AAAA,MAAA;AAAA,MAEA,GAAGG;AAAA,MACJ,SAASF,KAAWC;AAAA,MAEpB,UAAA,gBAAAM;AAAA,QAACC,EAAkB;AAAA,QAAlB;AAAA,UACA,WAAWC,EAAG,+CAA+C;AAAA,UAE7D,UAAA,gBAAAF,EAACH,GAAA,EAAK,WAAU,UAAA,CAAS;AAAA,QAAA;AAAA,MAAA;AAAA,IAC1B;AAAA,EAAA;AAGH,CAAC;AACDP,EAAS,cAAcW,EAAkB,KAAK;AAE9C,MAAME,IAAgBZ,EAAM,WAG1B,CAAC,EAAE,OAAAa,IAAQ,IAAI,UAAAC,GAAU,YAAAC,GAAY,GAAGC,EAAA,GAAQX,MAEhD,gBAAAY;AAAA,EAACC;AAAA,EAAA;AAAA,IACA,KAAAb;AAAA,IACC,GAAGU;AAAA,IACJ,WAAWJ;AAAA,MACV;AAAA,MACAI,GAAY;AAAA,IAAA;AAAA,IAEb,OAAOA,GAAY;AAAA,IAEnB,UAAA;AAAA,MAAA,gBAAAN,EAACV,GAAA,EAAU,GAAGiB,GAAK;AAAA,MACnB,gBAAAC,EAAC,OAAA,EAAI,WAAU,8BACd,UAAA;AAAA,QAAA,gBAAAR,EAAC,QAAA,EAAK,WAAU,8CAA8C,UAAAI,GAAM;AAAA,QACnEC;AAAA,MAAA,EAAA,CACF;AAAA,IAAA;AAAA,EAAA;AAAA,CAGF;AACDF,EAAc,cAAc;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Collapsible.js","sources":["../../src/Collapsible/Collapsible.tsx"],"sourcesContent":["\"use client\"\n\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\"\n\nconst Collapsible = CollapsiblePrimitive.Root\n\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger\n\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\n"],"names":["Collapsible","CollapsiblePrimitive","CollapsibleTrigger","CollapsibleContent"],"mappings":";AAIA,MAAMA,IAAcC,EAAqB,MAEnCC,IAAqBD,EAAqB,oBAE1CE,IAAqBF,EAAqB;"}
1
+ {"version":3,"file":"Collapsible.js","sources":["../../src/Collapsible/Collapsible.tsx"],"sourcesContent":["\"use client\"\r\n\r\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\"\r\n\r\nconst Collapsible = CollapsiblePrimitive.Root\r\n\r\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger\r\n\r\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent\r\n\r\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\r\n"],"names":["Collapsible","CollapsiblePrimitive","CollapsibleTrigger","CollapsibleContent"],"mappings":";AAIA,MAAMA,IAAcC,EAAqB,MAEnCC,IAAqBD,EAAqB,oBAE1CE,IAAqBF,EAAqB;"}
@@ -1,28 +1,26 @@
1
1
  import { jsx as e, jsxs as d, Fragment as j } from "react/jsx-runtime";
2
2
  import { forwardRef as oe, useState as s, useCallback as p, useEffect as re, useMemo as M, useLayoutEffect as ae } from "react";
3
- import { LoadingMask as V } from "../LoadingMask/LoadingMask.js";
4
- import "../LoadingMask/RenderLoadingMask.js";
5
- import { Popover as ie, PopoverTrigger as se, PopoverContent as le } from "../Popover/Popover.js";
6
- import { Button as ce } from "../Button/Button.js";
7
- import "../Button/buttonVariants.js";
8
- import { Command as de, CommandInput as pe, CommandList as me, CommandGroup as fe, CommandEmpty as X, CommandItem as ue } from "../Command/Command.js";
9
3
  import { cn as R } from "@oneplatformdev/utils";
10
- import { useDebounceCallback as he } from "@oneplatformdev/hooks";
11
- import { X as ge, ChevronsUpDown as be } from "lucide-react";
12
- import { ComboboxOptions as ye } from "./ComboboxOptions.js";
4
+ import { useDebounceCallback as ie } from "@oneplatformdev/hooks";
5
+ import { X as se, ChevronsUpDown as le } from "lucide-react";
6
+ import { ComboboxOptions as ce } from "./ComboboxOptions.js";
7
+ import { Popover as de, PopoverTrigger as pe, PopoverContent as fe } from "../Popover/Popover.js";
8
+ import { Button as me } from "../Button/Button.js";
9
+ import { LoadingMask as V } from "../LoadingMask/LoadingMask.js";
10
+ import { Command as ue, CommandInput as he, CommandList as ge, CommandGroup as be, CommandEmpty as X, CommandItem as ye } from "../Command/Command.js";
13
11
  const ve = (S) => {
14
- const { value: m, flattenOptions: n = [], selectedOption: L } = S;
15
- if (!m) return "No value for render label";
16
- const v = [n.find((f) => String(f.value).toLowerCase() === String(m).toLowerCase()), L].filter(Boolean).map((f) => f.label).find(Boolean);
17
- return v || m;
18
- }, Ee = oe(
19
- (S, m) => {
12
+ const { value: f, flattenOptions: n = [], selectedOption: L } = S;
13
+ if (!f) return "No value for render label";
14
+ const v = [n.find((m) => String(m.value).toLowerCase() === String(f).toLowerCase()), L].filter(Boolean).map((m) => m.label).find(Boolean);
15
+ return v || f;
16
+ }, Pe = oe(
17
+ (S, f) => {
20
18
  const {
21
19
  value: n,
22
20
  onChange: L,
23
21
  placeholder: T,
24
22
  disabled: v,
25
- searchLabel: f = "Type to search...",
23
+ searchLabel: m = "Type to search...",
26
24
  fetchOptions: _,
27
25
  options: N,
28
26
  emptyLabel: A = "No options",
@@ -65,7 +63,7 @@ const ve = (S) => {
65
63
  } finally {
66
64
  c(!1);
67
65
  }
68
- }, [h]), Z = he(U, 1e3, {
66
+ }, [h]), Z = ie(U, 1e3, {
69
67
  leading: !1,
70
68
  trailing: !0
71
69
  }), $ = p((t) => {
@@ -99,16 +97,16 @@ const ve = (S) => {
99
97
  }, [k, g]);
100
98
  return ae(() => {
101
99
  te();
102
- }, []), /* @__PURE__ */ e("div", { className: "w-full", ref: m, children: /* @__PURE__ */ d(
103
- ie,
100
+ }, []), /* @__PURE__ */ e("div", { className: "w-full", ref: f, children: /* @__PURE__ */ d(
101
+ de,
104
102
  {
105
103
  open: l,
106
104
  onOpenChange: (t) => {
107
105
  B(t), t && Y();
108
106
  },
109
107
  children: [
110
- /* @__PURE__ */ e(se, { asChild: !0, className: "border-input", children: /* @__PURE__ */ e(
111
- ce,
108
+ /* @__PURE__ */ e(pe, { asChild: !0, className: "border-input", children: /* @__PURE__ */ e(
109
+ me,
112
110
  {
113
111
  color: "secondary",
114
112
  role: "combobox",
@@ -134,29 +132,29 @@ const ve = (S) => {
134
132
  onClick: (t) => {
135
133
  t.stopPropagation(), ee();
136
134
  },
137
- children: /* @__PURE__ */ e(ge, {})
135
+ children: /* @__PURE__ */ e(se, {})
138
136
  }
139
- ) : /* @__PURE__ */ e(be, { className: "opacity-50 w-4 h-4" })
137
+ ) : /* @__PURE__ */ e(le, { className: "opacity-50 w-4 h-4" })
140
138
  ] })
141
139
  }
142
140
  ) }),
143
141
  /* @__PURE__ */ e(
144
- le,
142
+ fe,
145
143
  {
146
144
  className: "w-(--radix-popper-anchor-width) max-w-none p-0",
147
145
  align: "start",
148
- children: /* @__PURE__ */ d(de, { shouldFilter: !1, children: [
146
+ children: /* @__PURE__ */ d(ue, { shouldFilter: !1, children: [
149
147
  /* @__PURE__ */ e(
150
- pe,
148
+ he,
151
149
  {
152
- placeholder: f,
150
+ placeholder: m,
153
151
  value: a,
154
152
  onValueChange: $
155
153
  }
156
154
  ),
157
155
  typeof I == "function" ? I(g) : I,
158
- /* @__PURE__ */ e(me, { children: /* @__PURE__ */ d(
159
- fe,
156
+ /* @__PURE__ */ e(ge, { children: /* @__PURE__ */ d(
157
+ be,
160
158
  {
161
159
  className: R(!r.length && "p-0 shadow-none"),
162
160
  children: [
@@ -167,7 +165,7 @@ const ve = (S) => {
167
165
  ] }) : /* @__PURE__ */ e(X, { children: A }) }),
168
166
  !o && /* @__PURE__ */ d(j, { children: [
169
167
  !!r.length && w && /* @__PURE__ */ e(
170
- ue,
168
+ ye,
171
169
  {
172
170
  asChild: !0,
173
171
  className: "w-full",
@@ -176,7 +174,7 @@ const ve = (S) => {
176
174
  "combobox-list-head-action"
177
175
  ),
178
176
  /* @__PURE__ */ e(
179
- ye,
177
+ ce,
180
178
  {
181
179
  value: n,
182
180
  options: r,
@@ -197,6 +195,6 @@ const ve = (S) => {
197
195
  }
198
196
  );
199
197
  export {
200
- Ee as Combobox
198
+ Pe as Combobox
201
199
  };
202
200
  //# sourceMappingURL=Combobox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Combobox.js","sources":["../../src/Combobox/Combobox.tsx"],"sourcesContent":["import {\n Dispatch,\n forwardRef, SetStateAction,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useState,\n} from 'react';\nimport { LoadingMask } from '../LoadingMask';\nimport { Popover, PopoverContent, PopoverTrigger } from '../Popover';\nimport { Button } from '../Button';\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from '../Command';\nimport { cn } from '@oneplatformdev/utils';\nimport { useDebounceCallback } from '@oneplatformdev/hooks';\nimport { ChevronsUpDown, X } from 'lucide-react';\nimport {\n ComboboxCallbackStateParams,\n ComboboxOption,\n ComboboxProps,\n} from './Combobox.types';\nimport { ComboboxOptions } from './ComboboxOptions'; // TODO: refactor next component | nlt code\n\n\nconst getSelectRenderLabel = (params: {\n value: ComboboxProps['value'];\n flattenOptions: ComboboxOption[];\n selectedOption?: ComboboxOption;\n}): string => {\n const { value, flattenOptions = [], selectedOption } = params;\n if(!value) return 'No value for render label';\n const flattenedOption = flattenOptions.find(o => String(o.value).toLowerCase() === String(value).toLowerCase());\n const label = [flattenedOption, selectedOption]\n .filter(Boolean)\n .map(o => o!.label)\n .find(Boolean);\n if(!label) return value;\n return label;\n}\n\n// TODO: refactor next component | nlt code\nexport const Combobox = forwardRef<HTMLDivElement, ComboboxProps>(\n (props, ref) => {\n const {\n value,\n onChange,\n placeholder,\n disabled,\n searchLabel = 'Type to search...',\n fetchOptions,\n options: itemOptions,\n emptyLabel = 'No options',\n emptyAction,\n commandInputAction,\n listHeadAction,\n onMount,\n } = props;\n const [initialLoading, setInitialLoading] = useState(false);\n const [open, setOpen] = useState(false);\n const [searchTerm, setSearchTerm] = useState('');\n const [selectedOption, setSelectedOption] = useState<ComboboxOption>();\n const [loading, setLoading] = useState(false);\n\n const [options, setOptionsDispatch] = useState<ComboboxOption[]>([]);\n const [flattenOptions, setFlattenOptions] = useState<ComboboxOption[]>([]);\n const setOptions: Dispatch<SetStateAction<ComboboxOption[]>> = useCallback((stater) => {\n const flatten = (next: ComboboxOption[]) => {\n const res: ComboboxOption[] = [];\n const walk = (nodes?: ComboboxOption[]) => {\n if (!nodes) return;\n for (const node of nodes) {\n res.push(node);\n if (node.items && node.items.length) walk(node.items);\n }\n };\n walk(next);\n setFlattenOptions((prev) => {\n const isIncludedInRes = res.find(o => !!value && String(o.value) === String(value));\n\n if(!isIncludedInRes) {\n const current = selectedOption || prev.find(o => !!value && String(o.value) === String(value))\n if(current) return [current, ...res];\n }\n\n return res;\n });\n }\n setOptionsDispatch((prev) => {\n const next: ComboboxOption[] = typeof stater === 'function' ? stater(prev) : stater;\n flatten(next);\n return next;\n });\n }, [selectedOption, value])\n\n useEffect(() => {\n itemOptions?.length && setOptions(itemOptions);\n }, [itemOptions]);\n\n const handlePopoverOpen = async () => {\n if (!open) {\n void getData();\n setSearchTerm('');\n }\n };\n\n const getData = useCallback(async (search?: string) => {\n setLoading(true);\n try {\n const fetchedOptions = await fetchOptions(search);\n setOptions(fetchedOptions);\n } catch (error) {\n console.error('Unexpected error while get option:', error);\n } finally {\n setLoading(false);\n }\n }, [setOptions]);\n\n const debouncedGetData = useDebounceCallback(getData, 1000, {\n leading: false,\n trailing: true,\n });\n\n const handleSearchChange = useCallback((value: string) => {\n setLoading(true);\n setSearchTerm(value);\n debouncedGetData(value);\n }, []);\n\n const onChangeOption = useCallback((option: ComboboxOption) => {\n onChange(option.value);\n setSelectedOption(option);\n setLoading(false);\n }, []);\n\n const handleClearSelection = useCallback(() => {\n onChangeOption({ value: '', label: '' });\n setSelectedOption(undefined);\n setLoading(false);\n }, []);\n\n const isSearchedEmptyList = useMemo(() => {\n return Boolean(searchTerm) && !options.length && !loading;\n }, [loading, options.length, searchTerm])\n\n const isEmptyList = useMemo(() => {\n return !options.length && !loading;\n }, [loading, options.length, searchTerm])\n\n const comboboxCallbackStateParams =\n useMemo((): ComboboxCallbackStateParams => {\n return {\n options,\n setOptions,\n selectedOption,\n setSelectedOption,\n search: searchTerm || '',\n setSearch: setSearchTerm,\n open,\n setOpen,\n loading,\n setLoading,\n isEmptyList,\n isSearchedEmptyList,\n };\n }, [loading, open, options, searchTerm, selectedOption, isEmptyList, isSearchedEmptyList, setOptions]);\n\n const runOnMount = useCallback(async () => {\n if (!onMount) return;\n setInitialLoading(true);\n try {\n await onMount(comboboxCallbackStateParams);\n } finally {\n setInitialLoading(false);\n }\n }, [onMount, comboboxCallbackStateParams]);\n\n useLayoutEffect(() => {\n runOnMount();\n }, []);\n\n return (\n <div className=\"w-full\" ref={ref}>\n <Popover\n open={open}\n onOpenChange={(newOpen) => {\n setOpen(newOpen);\n if (newOpen) handlePopoverOpen();\n }}\n >\n <PopoverTrigger asChild className=\"border-input\">\n <Button\n color='secondary'\n role=\"combobox\"\n aria-expanded={open}\n className={cn(\n 'relative w-full justify-between font-normal text-sm bg-transparent',\n 'border border-border',\n open && 'border-2 outline-hidden ring-1 ring-ring',\n 'focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring'\n )}\n disabled={disabled || initialLoading}\n >\n {initialLoading ? (\n <LoadingMask fullWidth />\n ) : (\n <>\n <span className=\"truncate max-w-[calc(100%-1.5rem)] overflow-hidden whitespace-nowrap\">\n {value\n ? getSelectRenderLabel({ value, flattenOptions, selectedOption })\n : <span className=\"text-gray-400\">{placeholder}</span>\n }\n </span>\n {value ? (\n <div\n className={cn(\n 'absolute top-0 right-1',\n 'flex items-center justify-center',\n 'w-9 aspect-square [&_svg]:size-5',\n 'opacity-50 cursor-pointer hover:opacity-100'\n )}\n onClick={(e) => {\n e.stopPropagation();\n handleClearSelection();\n }}\n >\n <X />\n </div>\n ) : (\n <ChevronsUpDown className=\"opacity-50 w-4 h-4\" />\n )}\n </>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent\n className=\"w-(--radix-popper-anchor-width) max-w-none p-0\"\n align=\"start\"\n >\n <Command shouldFilter={false}>\n <CommandInput\n placeholder={searchLabel}\n value={searchTerm}\n onValueChange={handleSearchChange}\n />\n {typeof commandInputAction === 'function'\n ? commandInputAction(comboboxCallbackStateParams)\n : commandInputAction}\n <CommandList>\n <CommandGroup\n className={cn(!options.length && 'p-0 shadow-none')}\n >\n {loading && <LoadingMask fullWidth />}\n {!loading && Boolean(searchTerm) && (\n <>\n {emptyAction ? (\n <CommandEmpty className=\"flex flex-col gap-3 py-5 px-3 items-center\">\n <span>{emptyLabel}</span>\n {typeof emptyAction === 'function'\n ? emptyAction(comboboxCallbackStateParams)\n : emptyAction}\n </CommandEmpty>\n ) : (\n <CommandEmpty>{emptyLabel}</CommandEmpty>\n )}\n </>\n )}\n {!loading && (\n <>\n {Boolean(options.length) && listHeadAction && (\n <CommandItem\n key='combobox-list-head-action'\n asChild\n className='w-full'\n >\n {typeof listHeadAction === 'function'\n ? listHeadAction(comboboxCallbackStateParams)\n : listHeadAction}\n </CommandItem>\n )}\n <ComboboxOptions\n value={value}\n options={options}\n onChangeOption={onChangeOption}\n setOpen={setOpen}\n />\n </>\n )}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </div>\n );\n }\n);\n"],"names":["getSelectRenderLabel","params","value","flattenOptions","selectedOption","label","o","Combobox","forwardRef","props","ref","onChange","placeholder","disabled","searchLabel","fetchOptions","itemOptions","emptyLabel","emptyAction","commandInputAction","listHeadAction","onMount","initialLoading","setInitialLoading","useState","open","setOpen","searchTerm","setSearchTerm","setSelectedOption","loading","setLoading","options","setOptionsDispatch","setFlattenOptions","setOptions","useCallback","stater","flatten","next","res","walk","nodes","node","prev","current","useEffect","handlePopoverOpen","getData","search","fetchedOptions","error","debouncedGetData","useDebounceCallback","handleSearchChange","onChangeOption","option","handleClearSelection","isSearchedEmptyList","useMemo","isEmptyList","comboboxCallbackStateParams","runOnMount","useLayoutEffect","jsx","jsxs","Popover","newOpen","PopoverTrigger","Button","cn","LoadingMask","Fragment","e","X","ChevronsUpDown","PopoverContent","Command","CommandInput","CommandList","CommandGroup","CommandEmpty","CommandItem","ComboboxOptions"],"mappings":"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"}
1
+ {"version":3,"file":"Combobox.js","sources":["../../src/Combobox/Combobox.tsx"],"sourcesContent":["import {\r\n Dispatch,\r\n forwardRef, SetStateAction,\r\n useCallback,\r\n useEffect,\r\n useLayoutEffect,\r\n useMemo,\r\n useState,\r\n} from 'react';\r\nimport { LoadingMask } from '../LoadingMask';\r\nimport { Popover, PopoverContent, PopoverTrigger } from '../Popover';\r\nimport { Button } from '../Button';\r\nimport {\r\n Command,\r\n CommandEmpty,\r\n CommandGroup,\r\n CommandInput,\r\n CommandItem,\r\n CommandList,\r\n} from '../Command';\r\nimport { cn } from '@oneplatformdev/utils';\r\nimport { useDebounceCallback } from '@oneplatformdev/hooks';\r\nimport { ChevronsUpDown, X } from 'lucide-react';\r\nimport {\r\n ComboboxCallbackStateParams,\r\n ComboboxOption,\r\n ComboboxProps,\r\n} from './Combobox.types';\r\nimport { ComboboxOptions } from './ComboboxOptions'; // TODO: refactor next component | nlt code\r\n\r\n\r\nconst getSelectRenderLabel = (params: {\r\n value: ComboboxProps['value'];\r\n flattenOptions: ComboboxOption[];\r\n selectedOption?: ComboboxOption;\r\n}): string => {\r\n const { value, flattenOptions = [], selectedOption } = params;\r\n if(!value) return 'No value for render label';\r\n const flattenedOption = flattenOptions.find(o => String(o.value).toLowerCase() === String(value).toLowerCase());\r\n const label = [flattenedOption, selectedOption]\r\n .filter(Boolean)\r\n .map(o => o!.label)\r\n .find(Boolean);\r\n if(!label) return value;\r\n return label;\r\n}\r\n\r\n// TODO: refactor next component | nlt code\r\nexport const Combobox = forwardRef<HTMLDivElement, ComboboxProps>(\r\n (props, ref) => {\r\n const {\r\n value,\r\n onChange,\r\n placeholder,\r\n disabled,\r\n searchLabel = 'Type to search...',\r\n fetchOptions,\r\n options: itemOptions,\r\n emptyLabel = 'No options',\r\n emptyAction,\r\n commandInputAction,\r\n listHeadAction,\r\n onMount,\r\n } = props;\r\n const [initialLoading, setInitialLoading] = useState(false);\r\n const [open, setOpen] = useState(false);\r\n const [searchTerm, setSearchTerm] = useState('');\r\n const [selectedOption, setSelectedOption] = useState<ComboboxOption>();\r\n const [loading, setLoading] = useState(false);\r\n\r\n const [options, setOptionsDispatch] = useState<ComboboxOption[]>([]);\r\n const [flattenOptions, setFlattenOptions] = useState<ComboboxOption[]>([]);\r\n const setOptions: Dispatch<SetStateAction<ComboboxOption[]>> = useCallback((stater) => {\r\n const flatten = (next: ComboboxOption[]) => {\r\n const res: ComboboxOption[] = [];\r\n const walk = (nodes?: ComboboxOption[]) => {\r\n if (!nodes) return;\r\n for (const node of nodes) {\r\n res.push(node);\r\n if (node.items && node.items.length) walk(node.items);\r\n }\r\n };\r\n walk(next);\r\n setFlattenOptions((prev) => {\r\n const isIncludedInRes = res.find(o => !!value && String(o.value) === String(value));\r\n\r\n if(!isIncludedInRes) {\r\n const current = selectedOption || prev.find(o => !!value && String(o.value) === String(value))\r\n if(current) return [current, ...res];\r\n }\r\n\r\n return res;\r\n });\r\n }\r\n setOptionsDispatch((prev) => {\r\n const next: ComboboxOption[] = typeof stater === 'function' ? stater(prev) : stater;\r\n flatten(next);\r\n return next;\r\n });\r\n }, [selectedOption, value])\r\n\r\n useEffect(() => {\r\n itemOptions?.length && setOptions(itemOptions);\r\n }, [itemOptions]);\r\n\r\n const handlePopoverOpen = async () => {\r\n if (!open) {\r\n void getData();\r\n setSearchTerm('');\r\n }\r\n };\r\n\r\n const getData = useCallback(async (search?: string) => {\r\n setLoading(true);\r\n try {\r\n const fetchedOptions = await fetchOptions(search);\r\n setOptions(fetchedOptions);\r\n } catch (error) {\r\n console.error('Unexpected error while get option:', error);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [setOptions]);\r\n\r\n const debouncedGetData = useDebounceCallback(getData, 1000, {\r\n leading: false,\r\n trailing: true,\r\n });\r\n\r\n const handleSearchChange = useCallback((value: string) => {\r\n setLoading(true);\r\n setSearchTerm(value);\r\n debouncedGetData(value);\r\n }, []);\r\n\r\n const onChangeOption = useCallback((option: ComboboxOption) => {\r\n onChange(option.value);\r\n setSelectedOption(option);\r\n setLoading(false);\r\n }, []);\r\n\r\n const handleClearSelection = useCallback(() => {\r\n onChangeOption({ value: '', label: '' });\r\n setSelectedOption(undefined);\r\n setLoading(false);\r\n }, []);\r\n\r\n const isSearchedEmptyList = useMemo(() => {\r\n return Boolean(searchTerm) && !options.length && !loading;\r\n }, [loading, options.length, searchTerm])\r\n\r\n const isEmptyList = useMemo(() => {\r\n return !options.length && !loading;\r\n }, [loading, options.length, searchTerm])\r\n\r\n const comboboxCallbackStateParams =\r\n useMemo((): ComboboxCallbackStateParams => {\r\n return {\r\n options,\r\n setOptions,\r\n selectedOption,\r\n setSelectedOption,\r\n search: searchTerm || '',\r\n setSearch: setSearchTerm,\r\n open,\r\n setOpen,\r\n loading,\r\n setLoading,\r\n isEmptyList,\r\n isSearchedEmptyList,\r\n };\r\n }, [loading, open, options, searchTerm, selectedOption, isEmptyList, isSearchedEmptyList, setOptions]);\r\n\r\n const runOnMount = useCallback(async () => {\r\n if (!onMount) return;\r\n setInitialLoading(true);\r\n try {\r\n await onMount(comboboxCallbackStateParams);\r\n } finally {\r\n setInitialLoading(false);\r\n }\r\n }, [onMount, comboboxCallbackStateParams]);\r\n\r\n useLayoutEffect(() => {\r\n runOnMount();\r\n }, []);\r\n\r\n return (\r\n <div className=\"w-full\" ref={ref}>\r\n <Popover\r\n open={open}\r\n onOpenChange={(newOpen) => {\r\n setOpen(newOpen);\r\n if (newOpen) handlePopoverOpen();\r\n }}\r\n >\r\n <PopoverTrigger asChild className=\"border-input\">\r\n <Button\r\n color='secondary'\r\n role=\"combobox\"\r\n aria-expanded={open}\r\n className={cn(\r\n 'relative w-full justify-between font-normal text-sm bg-transparent',\r\n 'border border-border',\r\n open && 'border-2 outline-hidden ring-1 ring-ring',\r\n 'focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring'\r\n )}\r\n disabled={disabled || initialLoading}\r\n >\r\n {initialLoading ? (\r\n <LoadingMask fullWidth />\r\n ) : (\r\n <>\r\n <span className=\"truncate max-w-[calc(100%-1.5rem)] overflow-hidden whitespace-nowrap\">\r\n {value\r\n ? getSelectRenderLabel({ value, flattenOptions, selectedOption })\r\n : <span className=\"text-gray-400\">{placeholder}</span>\r\n }\r\n </span>\r\n {value ? (\r\n <div\r\n className={cn(\r\n 'absolute top-0 right-1',\r\n 'flex items-center justify-center',\r\n 'w-9 aspect-square [&_svg]:size-5',\r\n 'opacity-50 cursor-pointer hover:opacity-100'\r\n )}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n handleClearSelection();\r\n }}\r\n >\r\n <X />\r\n </div>\r\n ) : (\r\n <ChevronsUpDown className=\"opacity-50 w-4 h-4\" />\r\n )}\r\n </>\r\n )}\r\n </Button>\r\n </PopoverTrigger>\r\n <PopoverContent\r\n className=\"w-(--radix-popper-anchor-width) max-w-none p-0\"\r\n align=\"start\"\r\n >\r\n <Command shouldFilter={false}>\r\n <CommandInput\r\n placeholder={searchLabel}\r\n value={searchTerm}\r\n onValueChange={handleSearchChange}\r\n />\r\n {typeof commandInputAction === 'function'\r\n ? commandInputAction(comboboxCallbackStateParams)\r\n : commandInputAction}\r\n <CommandList>\r\n <CommandGroup\r\n className={cn(!options.length && 'p-0 shadow-none')}\r\n >\r\n {loading && <LoadingMask fullWidth />}\r\n {!loading && Boolean(searchTerm) && (\r\n <>\r\n {emptyAction ? (\r\n <CommandEmpty className=\"flex flex-col gap-3 py-5 px-3 items-center\">\r\n <span>{emptyLabel}</span>\r\n {typeof emptyAction === 'function'\r\n ? emptyAction(comboboxCallbackStateParams)\r\n : emptyAction}\r\n </CommandEmpty>\r\n ) : (\r\n <CommandEmpty>{emptyLabel}</CommandEmpty>\r\n )}\r\n </>\r\n )}\r\n {!loading && (\r\n <>\r\n {Boolean(options.length) && listHeadAction && (\r\n <CommandItem\r\n key='combobox-list-head-action'\r\n asChild\r\n className='w-full'\r\n >\r\n {typeof listHeadAction === 'function'\r\n ? listHeadAction(comboboxCallbackStateParams)\r\n : listHeadAction}\r\n </CommandItem>\r\n )}\r\n <ComboboxOptions\r\n value={value}\r\n options={options}\r\n onChangeOption={onChangeOption}\r\n setOpen={setOpen}\r\n />\r\n </>\r\n )}\r\n </CommandGroup>\r\n </CommandList>\r\n </Command>\r\n </PopoverContent>\r\n </Popover>\r\n </div>\r\n );\r\n }\r\n);\r\n"],"names":["getSelectRenderLabel","params","value","flattenOptions","selectedOption","label","o","Combobox","forwardRef","props","ref","onChange","placeholder","disabled","searchLabel","fetchOptions","itemOptions","emptyLabel","emptyAction","commandInputAction","listHeadAction","onMount","initialLoading","setInitialLoading","useState","open","setOpen","searchTerm","setSearchTerm","setSelectedOption","loading","setLoading","options","setOptionsDispatch","setFlattenOptions","setOptions","useCallback","stater","flatten","next","res","walk","nodes","node","prev","current","useEffect","handlePopoverOpen","getData","search","fetchedOptions","error","debouncedGetData","useDebounceCallback","handleSearchChange","onChangeOption","option","handleClearSelection","isSearchedEmptyList","useMemo","isEmptyList","comboboxCallbackStateParams","runOnMount","useLayoutEffect","jsx","jsxs","Popover","newOpen","PopoverTrigger","Button","cn","LoadingMask","Fragment","e","X","ChevronsUpDown","PopoverContent","Command","CommandInput","CommandList","CommandGroup","CommandEmpty","CommandItem","ComboboxOptions"],"mappings":"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"}