@gbmtech/aurora-ui 0.2.57 → 0.2.59

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/dist/cjs/components/alert-dialog.cjs.map +1 -1
  2. package/dist/cjs/components/autocomplete/autocomplete-content.cjs.map +1 -1
  3. package/dist/cjs/components/autocomplete/autocomplete-context.cjs.map +1 -1
  4. package/dist/cjs/components/autocomplete/autocomplete-empty.cjs.map +1 -1
  5. package/dist/cjs/components/autocomplete/autocomplete-input.cjs.map +1 -1
  6. package/dist/cjs/components/autocomplete/autocomplete-item.cjs.map +1 -1
  7. package/dist/cjs/components/autocomplete/autocomplete-list.cjs.map +1 -1
  8. package/dist/cjs/components/autocomplete/autocomplete.cjs.map +1 -1
  9. package/dist/cjs/components/autocomplete/index.cjs +2 -1
  10. package/dist/cjs/components/autocomplete/index.cjs.map +1 -0
  11. package/dist/cjs/components/avatar.cjs.map +1 -1
  12. package/dist/cjs/components/badge.cjs.map +1 -1
  13. package/dist/cjs/components/breadcrumb.cjs.map +1 -1
  14. package/dist/cjs/components/button.cjs.map +1 -1
  15. package/dist/cjs/components/calendar.cjs.map +1 -1
  16. package/dist/cjs/components/checkbox.cjs.map +1 -1
  17. package/dist/cjs/components/combobox.cjs.map +1 -1
  18. package/dist/cjs/components/command.cjs.map +1 -1
  19. package/dist/cjs/components/context-menu.cjs.map +1 -1
  20. package/dist/cjs/components/data-table/data-table-action-bar.cjs.map +1 -1
  21. package/dist/cjs/components/data-table/data-table-advanced-toolbar.cjs.map +1 -1
  22. package/dist/cjs/components/data-table/data-table-column-header.cjs.map +1 -1
  23. package/dist/cjs/components/data-table/data-table-date-filter.cjs.map +1 -1
  24. package/dist/cjs/components/data-table/data-table-faceted-filter.cjs.map +1 -1
  25. package/dist/cjs/components/data-table/data-table-filter-list.cjs.map +1 -1
  26. package/dist/cjs/components/data-table/data-table-filter-menu.cjs.map +1 -1
  27. package/dist/cjs/components/data-table/data-table-pagination.cjs.map +1 -1
  28. package/dist/cjs/components/data-table/data-table-range-filter.cjs.map +1 -1
  29. package/dist/cjs/components/data-table/data-table-skeleton.cjs.map +1 -1
  30. package/dist/cjs/components/data-table/data-table-slider-filter.cjs.map +1 -1
  31. package/dist/cjs/components/data-table/data-table-sort-list.cjs.map +1 -1
  32. package/dist/cjs/components/data-table/data-table-toolbar.cjs.map +1 -1
  33. package/dist/cjs/components/data-table/data-table-view-options.cjs.map +1 -1
  34. package/dist/cjs/components/data-table/data-table.cjs.map +1 -1
  35. package/dist/cjs/components/data-table/index.cjs +2 -1
  36. package/dist/cjs/components/data-table/index.cjs.map +1 -0
  37. package/dist/cjs/components/date-picker-with-range.cjs.map +1 -1
  38. package/dist/cjs/components/date-picker.cjs.map +1 -1
  39. package/dist/cjs/components/date-time-picker-with-range.cjs.map +1 -1
  40. package/dist/cjs/components/date-time-picker.cjs.map +1 -1
  41. package/dist/cjs/components/dialog.cjs.map +1 -1
  42. package/dist/cjs/components/dropdown-menu.cjs.map +1 -1
  43. package/dist/cjs/components/faceted.cjs.map +1 -1
  44. package/dist/cjs/components/form.cjs.map +1 -1
  45. package/dist/cjs/components/icons/rumo.cjs.map +1 -1
  46. package/dist/cjs/components/icons/vli.cjs.map +1 -1
  47. package/dist/cjs/components/input-otp.cjs.map +1 -1
  48. package/dist/cjs/components/input-password.cjs.map +1 -1
  49. package/dist/cjs/components/input.cjs.map +1 -1
  50. package/dist/cjs/components/label.cjs.map +1 -1
  51. package/dist/cjs/components/mask-input.cjs.map +1 -1
  52. package/dist/cjs/components/multi-select.cjs.map +1 -1
  53. package/dist/cjs/components/page-layout/index.cjs.map +1 -1
  54. package/dist/cjs/components/page-layout/page-layout-breadcrumb.cjs.map +1 -1
  55. package/dist/cjs/components/page-layout/page-layout-content.cjs.map +1 -1
  56. package/dist/cjs/components/page-layout/page-layout-header.cjs.map +1 -1
  57. package/dist/cjs/components/page-layout/page-layout-root.cjs.map +1 -1
  58. package/dist/cjs/components/page-layout/page-layout-title.cjs.map +1 -1
  59. package/dist/cjs/components/pagination.cjs.map +1 -1
  60. package/dist/cjs/components/popover.cjs.map +1 -1
  61. package/dist/cjs/components/radio-group.cjs.map +1 -1
  62. package/dist/cjs/components/scroll-area.cjs.map +1 -1
  63. package/dist/cjs/components/select.cjs.map +1 -1
  64. package/dist/cjs/components/separator.cjs.map +1 -1
  65. package/dist/cjs/components/sheet/index.cjs +2 -1
  66. package/dist/cjs/components/sheet/index.cjs.map +1 -0
  67. package/dist/cjs/components/sheet/sheet-content-variants.cjs.map +1 -1
  68. package/dist/cjs/components/sheet/sheet.cjs.map +1 -1
  69. package/dist/cjs/components/sidebar/app-layout.cjs.map +1 -1
  70. package/dist/cjs/components/sidebar/index.cjs +2 -1
  71. package/dist/cjs/components/sidebar/index.cjs.map +1 -0
  72. package/dist/cjs/components/sidebar/intl/messages.cjs.map +1 -1
  73. package/dist/cjs/components/sidebar/logo.cjs.map +1 -1
  74. package/dist/cjs/components/sidebar/nav-modules.cjs.map +1 -1
  75. package/dist/cjs/components/sidebar/nav-sub-item.cjs.map +1 -1
  76. package/dist/cjs/components/sidebar/nav-user.cjs.map +1 -1
  77. package/dist/cjs/components/sidebar/sidebar-icons.cjs.map +1 -1
  78. package/dist/cjs/components/sidebar/sidebar.cjs.map +1 -1
  79. package/dist/cjs/components/skeleton.cjs.map +1 -1
  80. package/dist/cjs/components/slider.cjs.map +1 -1
  81. package/dist/cjs/components/sortable.cjs.map +1 -1
  82. package/dist/cjs/components/spinner.cjs.map +1 -1
  83. package/dist/cjs/components/switch.cjs.map +1 -1
  84. package/dist/cjs/components/table-expandable.cjs.map +1 -1
  85. package/dist/cjs/components/table.cjs.map +1 -1
  86. package/dist/cjs/components/tabs/index.cjs.map +1 -1
  87. package/dist/cjs/components/tabs/tabs-content.cjs.map +1 -1
  88. package/dist/cjs/components/tabs/tabs-list.cjs.map +1 -1
  89. package/dist/cjs/components/tabs/tabs-root.cjs.map +1 -1
  90. package/dist/cjs/components/tabs/tabs-trigger.cjs.map +1 -1
  91. package/dist/cjs/components/textarea.cjs.map +1 -1
  92. package/dist/cjs/components/time-picker-input.cjs.map +1 -1
  93. package/dist/cjs/components/time-picker.cjs.map +1 -1
  94. package/dist/cjs/components/title.cjs.map +1 -1
  95. package/dist/cjs/components/tokens-grid.cjs.map +1 -1
  96. package/dist/cjs/components/tooltip.cjs.map +1 -1
  97. package/dist/cjs/hooks/use-callback-ref.cjs.map +1 -1
  98. package/dist/cjs/hooks/use-data-table.cjs.map +1 -1
  99. package/dist/cjs/hooks/use-debounce.cjs.map +1 -1
  100. package/dist/cjs/hooks/use-debounced-callback.cjs.map +1 -1
  101. package/dist/cjs/hooks/use-mobile.cjs.map +1 -1
  102. package/dist/cjs/index.cjs +2 -1
  103. package/dist/cjs/index.cjs.map +1 -0
  104. package/dist/cjs/lib/composition.cjs.map +1 -1
  105. package/dist/cjs/lib/data-table-config.cjs.map +1 -1
  106. package/dist/cjs/lib/data-table.cjs.map +1 -1
  107. package/dist/cjs/lib/format.cjs.map +1 -1
  108. package/dist/cjs/lib/id.cjs.map +1 -1
  109. package/dist/cjs/lib/index.cjs +2 -1
  110. package/dist/cjs/lib/index.cjs.map +1 -0
  111. package/dist/cjs/lib/parsers.cjs.map +1 -1
  112. package/dist/cjs/lib/utils.cjs.map +1 -1
  113. package/dist/cjs/primitive/input.cjs.map +1 -1
  114. package/dist/cjs/tokens/colors.cjs.map +1 -1
  115. package/dist/cjs/tokens/index.cjs +2 -1
  116. package/dist/cjs/tokens/index.cjs.map +1 -0
  117. package/dist/cjs/types/data-table.cjs +2 -1
  118. package/dist/cjs/types/data-table.cjs.map +1 -0
  119. package/dist/cjs/types/index.cjs +2 -1
  120. package/dist/cjs/types/index.cjs.map +1 -0
  121. package/dist/cjs/types/module.cjs +2 -1
  122. package/dist/cjs/types/module.cjs.map +1 -0
  123. package/dist/cjs/types/user.cjs +2 -1
  124. package/dist/cjs/types/user.cjs.map +1 -0
  125. package/dist/cjs/utils/phosphor-icon-map.cjs.map +1 -1
  126. package/dist/cjs/utils/time-picker.cjs.map +1 -1
  127. package/dist/esm/components/calendar.js.map +1 -1
  128. package/dist/esm/components/data-table/data-table-date-filter.js.map +1 -1
  129. package/dist/esm/components/data-table/data-table-faceted-filter.js.map +1 -1
  130. package/dist/esm/components/data-table/data-table-filter-list.js.map +1 -1
  131. package/dist/esm/components/data-table/data-table-filter-menu.js.map +1 -1
  132. package/dist/esm/components/data-table/data-table-range-filter.js.map +1 -1
  133. package/dist/esm/components/data-table/data-table-slider-filter.js.map +1 -1
  134. package/dist/esm/components/data-table/index.js +1 -1
  135. package/dist/esm/components/date-time-picker-with-range.js.map +1 -1
  136. package/dist/esm/components/faceted.js.map +1 -1
  137. package/dist/esm/components/form.js.map +1 -1
  138. package/dist/esm/components/pagination.js.map +1 -1
  139. package/dist/esm/components/sidebar/intl/messages.js.map +1 -1
  140. package/dist/esm/components/sidebar/nav-user.js.map +1 -1
  141. package/dist/esm/components/sidebar/sidebar.d.ts.map +1 -1
  142. package/dist/esm/components/sidebar/sidebar.js.map +1 -1
  143. package/dist/esm/components/sortable.js.map +1 -1
  144. package/dist/esm/components/spinner.js.map +1 -1
  145. package/dist/esm/components/table-expandable.js.map +1 -1
  146. package/dist/esm/hooks/use-mobile.js.map +1 -1
  147. package/dist/esm/index.d.ts +1 -0
  148. package/dist/esm/index.d.ts.map +1 -1
  149. package/dist/esm/index.js +1 -1
  150. package/dist/esm/lib/data-table.js.map +1 -1
  151. package/dist/esm/lib/id.js.map +1 -1
  152. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"components\\date-time-picker-with-range.js","sources":["webpack://@gbmtech/aurora-ui/./src/components/date-time-picker-with-range.tsx"],"sourcesContent":["\r\n\r\nimport { CalendarBlank, X } from '@phosphor-icons/react/dist/ssr'\r\nimport { format } from 'date-fns'\r\nimport { useState } from 'react'\r\nimport { DateRange } from 'react-day-picker'\r\n\r\nimport { cn } from '../lib/utils'\r\nimport { Button } from './button'\r\nimport { Calendar } from './calendar'\r\nimport { Popover, PopoverContent, PopoverTrigger } from './popover'\r\nimport { TimePicker } from './time-picker'\r\n\r\ninterface DateTimePickerWithRangeProps {\r\n startDate?: Date\r\n endDate?: Date\r\n placeholder?: string\r\n className?: string\r\n disabled?: boolean\r\n onChange?: (date: DateRange | undefined) => void\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Component: DateTimePickerWithRange\r\n * -------------------------------------------------------------------------- */\r\n\r\nfunction DateTimePickerWithRange({\r\n startDate,\r\n endDate,\r\n onChange,\r\n placeholder,\r\n className,\r\n disabled = false,\r\n}: DateTimePickerWithRangeProps) {\r\n const [dateRange, setDateRange] = useState<DateRange | undefined>({\r\n from: startDate,\r\n to: endDate,\r\n })\r\n\r\n const handleDateChange = (newRange: Partial<DateRange> | undefined) => {\r\n if (!newRange) {\r\n setDateRange(undefined)\r\n onChange?.(undefined)\r\n return\r\n }\r\n\r\n setDateRange({\r\n from: newRange.from ?? dateRange?.from,\r\n to: newRange.to,\r\n })\r\n onChange?.({\r\n from: newRange.from ?? dateRange?.from,\r\n to: newRange.to,\r\n })\r\n }\r\n\r\n return (\r\n <Popover>\r\n <PopoverTrigger asChild>\r\n <Button\r\n id=\"date\"\r\n variant=\"secondary\"\r\n className={cn(\r\n 'h-12 min-w-96 justify-between px-4 text-left font-normal',\r\n !dateRange?.from && !dateRange?.to && 'text-gray-400',\r\n className\r\n )}\r\n disabled={disabled}\r\n >\r\n {dateRange?.from ? (\r\n dateRange.to ? (\r\n `${format(dateRange.from, 'dd/MM/yyyy HH:mm')} - ${format(dateRange.to, 'dd/MM/yyyy HH:mm')}`\r\n ) : (\r\n format(dateRange.from, 'dd/MM/yyyy HH:mm')\r\n )\r\n ) : (\r\n <span>{placeholder || 'Selecione o período'}</span>\r\n )}\r\n <CalendarBlank size={20} className=\"ml-2 text-gray-600\" />\r\n </Button>\r\n </PopoverTrigger>\r\n <PopoverContent className=\"w-auto p-0\">\r\n <Calendar\r\n mode=\"range\"\r\n selected={dateRange}\r\n onSelect={handleDateChange}\r\n numberOfMonths={2}\r\n />\r\n <div className=\"flex flex-col border-stroke border-t p-3\">\r\n <div className=\"flex justify-between gap-4\">\r\n <TimePicker\r\n onTimeChange={date =>\r\n handleDateChange({ ...dateRange, from: date })\r\n }\r\n date={dateRange?.from}\r\n />\r\n <TimePicker\r\n onTimeChange={date =>\r\n handleDateChange({ ...dateRange, to: date })\r\n }\r\n date={dateRange?.to}\r\n />\r\n </div>\r\n </div>\r\n <div className=\"flex flex-1 justify-center\">\r\n <Button\r\n variant=\"secondary\"\r\n className=\"flex h-12 flex-1\"\r\n onClick={() => handleDateChange(undefined)}\r\n >\r\n <X size={12} /> Clear\r\n </Button>\r\n </div>\r\n </PopoverContent>\r\n </Popover>\r\n )\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Exports\r\n * -------------------------------------------------------------------------- */\r\n\r\nexport { DateTimePickerWithRange }\r\n"],"names":["DateTimePickerWithRange","startDate","endDate","onChange","placeholder","className","disabled","dateRange","setDateRange","useState","handleDateChange","newRange","undefined","Popover","PopoverTrigger","Button","cn","format","CalendarBlank","PopoverContent","Calendar","TimePicker","date","X"],"mappings":";0SA0BA,SAASA,EAAwB,CAC/BC,UAAAA,CAAS,CACTC,QAAAA,CAAO,CACPC,SAAAA,CAAQ,CACRC,YAAAA,CAAW,CACXC,UAAAA,CAAS,CACTC,SAAAA,EAAW,EAAK,CACa,EAC7B,GAAM,CAACC,EAAWC,EAAa,CAAGC,GAAAA,EAAAA,QAAAA,EAAgC,CAChE,KAAMR,EACN,GAAIC,CACN,GAEMQ,EAAmB,IACvB,GAAI,CAACC,EAAU,CACbH,EAAaI,KAAAA,GACbT,IAAWS,KAAAA,GACX,MACF,CAEAJ,EAAa,CACX,KAAMG,EAAS,IAAI,EAAIJ,GAAW,KAClC,GAAII,EAAS,EAAE,GAEjBR,IAAW,CACT,KAAMQ,EAAS,IAAI,EAAIJ,GAAW,KAClC,GAAII,EAAS,EAAE,EAEnB,EAEA,MACE,WAACE,EAAAA,OAAOA,CAAAA,C,UACN,UAACC,EAAAA,cAAcA,CAAAA,CAAC,QAAO,G,SACrB,WAACC,EAAAA,MAAMA,CAAAA,CACL,GAAG,OACH,QAAQ,YACR,UAAWC,GAAAA,EAAAA,EAAAA,EACT,2DACA,CAACT,GAAW,MAAQ,CAACA,GAAW,IAAM,gBACtCF,GAEF,SAAUC,E,UAETC,GAAW,KACVA,EAAU,EAAE,CACV,CAAC,EAAEU,GAAAA,EAAAA,MAAAA,EAAOV,EAAU,IAAI,CAAE,oBAAoB,GAAG,EAAEU,GAAAA,EAAAA,MAAAA,EAAOV,EAAU,EAAE,CAAE,oBAAoB,CAAC,CAE7FU,GAAAA,EAAAA,MAAAA,EAAOV,EAAU,IAAI,CAAE,oBAGzB,UAAC,Q,SAAMH,GAAe,wB,GAExB,UAACc,EAAAA,aAAaA,CAAAA,CAAC,KAAM,GAAI,UAAU,oB,QAGvC,WAACC,EAAAA,cAAcA,CAAAA,CAAC,UAAU,a,UACxB,UAACC,EAAAA,QAAQA,CAAAA,CACP,KAAK,QACL,SAAUb,EACV,SAAUG,EACV,eAAgB,C,GAElB,UAAC,OAAI,UAAU,2C,SACb,WAAC,OAAI,UAAU,6B,UACb,UAACW,EAAAA,UAAUA,CAAAA,CACT,aAAcC,GACZZ,EAAiB,CAAE,GAAGH,CAAS,CAAE,KAAMe,CAAK,GAE9C,KAAMf,GAAW,I,GAEnB,UAACc,EAAAA,UAAUA,CAAAA,CACT,aAAcC,GACZZ,EAAiB,CAAE,GAAGH,CAAS,CAAE,GAAIe,CAAK,GAE5C,KAAMf,GAAW,E,QAIvB,UAAC,OAAI,UAAU,6B,SACb,WAACQ,EAAAA,MAAMA,CAAAA,CACL,QAAQ,YACR,UAAU,mBACV,QAAS,IAAML,EAAiBE,KAAAA,G,UAEhC,UAACW,EAAAA,CAACA,CAAAA,CAAC,KAAM,E,GAAM,S,UAM3B,Q"}
1
+ {"version":3,"file":"components\\date-time-picker-with-range.js","sources":["webpack://@gbmtech/aurora-ui/./src/components/date-time-picker-with-range.tsx"],"sourcesContent":["\r\n\r\nimport { CalendarBlank, X } from '@phosphor-icons/react/dist/ssr'\r\nimport { format } from 'date-fns'\r\nimport { useState } from 'react'\r\nimport { DateRange } from 'react-day-picker'\r\n\r\nimport { cn } from '../lib/utils'\r\nimport { Button } from './button'\r\nimport { Calendar } from './calendar'\r\nimport { Popover, PopoverContent, PopoverTrigger } from './popover'\r\nimport { TimePicker } from './time-picker'\r\n\r\ninterface DateTimePickerWithRangeProps {\r\n startDate?: Date\r\n endDate?: Date\r\n placeholder?: string\r\n className?: string\r\n disabled?: boolean\r\n onChange?: (date: DateRange | undefined) => void\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Component: DateTimePickerWithRange\r\n * -------------------------------------------------------------------------- */\r\n\r\nfunction DateTimePickerWithRange({\r\n startDate,\r\n endDate,\r\n onChange,\r\n placeholder,\r\n className,\r\n disabled = false,\r\n}: DateTimePickerWithRangeProps) {\r\n const [dateRange, setDateRange] = useState<DateRange | undefined>({\r\n from: startDate,\r\n to: endDate,\r\n })\r\n\r\n const handleDateChange = (newRange: Partial<DateRange> | undefined) => {\r\n if (!newRange) {\r\n setDateRange(undefined)\r\n onChange?.(undefined)\r\n return\r\n }\r\n\r\n setDateRange({\r\n from: newRange.from ?? dateRange?.from,\r\n to: newRange.to,\r\n })\r\n onChange?.({\r\n from: newRange.from ?? dateRange?.from,\r\n to: newRange.to,\r\n })\r\n }\r\n\r\n return (\r\n <Popover>\r\n <PopoverTrigger asChild>\r\n <Button\r\n id=\"date\"\r\n variant=\"secondary\"\r\n className={cn(\r\n 'h-12 min-w-96 justify-between px-4 text-left font-normal',\r\n !dateRange?.from && !dateRange?.to && 'text-gray-400',\r\n className\r\n )}\r\n disabled={disabled}\r\n >\r\n {dateRange?.from ? (\r\n dateRange.to ? (\r\n `${format(dateRange.from, 'dd/MM/yyyy HH:mm')} - ${format(dateRange.to, 'dd/MM/yyyy HH:mm')}`\r\n ) : (\r\n format(dateRange.from, 'dd/MM/yyyy HH:mm')\r\n )\r\n ) : (\r\n <span>{placeholder || 'Selecione o período'}</span>\r\n )}\r\n <CalendarBlank size={20} className=\"ml-2 text-gray-600\" />\r\n </Button>\r\n </PopoverTrigger>\r\n <PopoverContent className=\"w-auto p-0\">\r\n <Calendar\r\n mode=\"range\"\r\n selected={dateRange}\r\n onSelect={handleDateChange}\r\n numberOfMonths={2}\r\n />\r\n <div className=\"flex flex-col border-stroke border-t p-3\">\r\n <div className=\"flex justify-between gap-4\">\r\n <TimePicker\r\n onTimeChange={date =>\r\n handleDateChange({ ...dateRange, from: date })\r\n }\r\n date={dateRange?.from}\r\n />\r\n <TimePicker\r\n onTimeChange={date =>\r\n handleDateChange({ ...dateRange, to: date })\r\n }\r\n date={dateRange?.to}\r\n />\r\n </div>\r\n </div>\r\n <div className=\"flex flex-1 justify-center\">\r\n <Button\r\n variant=\"secondary\"\r\n className=\"flex h-12 flex-1\"\r\n onClick={() => handleDateChange(undefined)}\r\n >\r\n <X size={12} /> Clear\r\n </Button>\r\n </div>\r\n </PopoverContent>\r\n </Popover>\r\n )\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Exports\r\n * -------------------------------------------------------------------------- */\r\n\r\nexport { DateTimePickerWithRange }\r\n"],"names":["DateTimePickerWithRange","startDate","endDate","onChange","placeholder","className","disabled","dateRange","setDateRange","useState","handleDateChange","newRange","undefined","Popover","PopoverTrigger","Button","cn","format","CalendarBlank","PopoverContent","Calendar","TimePicker","date","X"],"mappings":";0SA0BA,SAASA,EAAwB,CAC/BC,UAAAA,CAAS,CACTC,QAAAA,CAAO,CACPC,SAAAA,CAAQ,CACRC,YAAAA,CAAW,CACXC,UAAAA,CAAS,CACTC,SAAAA,EAAW,EAAK,CACa,EAC7B,GAAM,CAACC,EAAWC,EAAa,CAAGC,GAAAA,EAAAA,QAAAA,EAAgC,CAChE,KAAMR,EACN,GAAIC,CACN,GAEMQ,EAAmB,IACvB,GAAI,CAACC,EAAU,CACbH,EAAaI,QACbT,IAAWS,QACX,MACF,CAEAJ,EAAa,CACX,KAAMG,EAAS,IAAI,EAAIJ,GAAW,KAClC,GAAII,EAAS,EAAE,GAEjBR,IAAW,CACT,KAAMQ,EAAS,IAAI,EAAIJ,GAAW,KAClC,GAAII,EAAS,EAAE,EAEnB,EAEA,MACE,WAACE,EAAAA,OAAOA,CAAAA,C,UACN,UAACC,EAAAA,cAAcA,CAAAA,CAAC,QAAO,G,SACrB,WAACC,EAAAA,MAAMA,CAAAA,CACL,GAAG,OACH,QAAQ,YACR,UAAWC,GAAAA,EAAAA,EAAAA,EACT,2DACA,CAACT,GAAW,MAAQ,CAACA,GAAW,IAAM,gBACtCF,GAEF,SAAUC,E,UAETC,GAAW,KACVA,EAAU,EAAE,CACV,CAAC,EAAEU,GAAAA,EAAAA,MAAAA,EAAOV,EAAU,IAAI,CAAE,oBAAoB,GAAG,EAAEU,GAAAA,EAAAA,MAAAA,EAAOV,EAAU,EAAE,CAAE,oBAAoB,CAAC,CAE7FU,GAAAA,EAAAA,MAAAA,EAAOV,EAAU,IAAI,CAAE,oBAGzB,UAAC,Q,SAAMH,GAAe,wB,GAExB,UAACc,EAAAA,aAAaA,CAAAA,CAAC,KAAM,GAAI,UAAU,oB,QAGvC,WAACC,EAAAA,cAAcA,CAAAA,CAAC,UAAU,a,UACxB,UAACC,EAAAA,QAAQA,CAAAA,CACP,KAAK,QACL,SAAUb,EACV,SAAUG,EACV,eAAgB,C,GAElB,UAAC,OAAI,UAAU,2C,SACb,WAAC,OAAI,UAAU,6B,UACb,UAACW,EAAAA,UAAUA,CAAAA,CACT,aAAcC,GACZZ,EAAiB,CAAE,GAAGH,CAAS,CAAE,KAAMe,CAAK,GAE9C,KAAMf,GAAW,I,GAEnB,UAACc,EAAAA,UAAUA,CAAAA,CACT,aAAcC,GACZZ,EAAiB,CAAE,GAAGH,CAAS,CAAE,GAAIe,CAAK,GAE5C,KAAMf,GAAW,E,QAIvB,UAAC,OAAI,UAAU,6B,SACb,WAACQ,EAAAA,MAAMA,CAAAA,CACL,QAAQ,YACR,UAAU,mBACV,QAAS,IAAML,EAAiBE,Q,UAEhC,UAACW,EAAAA,CAACA,CAAAA,CAAC,KAAM,E,GAAM,S,UAM3B,Q"}
@@ -1 +1 @@
1
- {"version":3,"file":"components\\faceted.js","sources":["webpack://@gbmtech/aurora-ui/./src/components/faceted.tsx"],"sourcesContent":["\r\n\r\nimport { CaretUpDown, Check } from '@phosphor-icons/react'\r\nimport * as React from 'react'\r\n\r\nimport { Badge } from '@/components/badge'\r\nimport {\r\n Command,\r\n CommandEmpty,\r\n CommandGroup,\r\n CommandInput,\r\n CommandItem,\r\n CommandList,\r\n CommandSeparator,\r\n} from '@/components/command'\r\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/popover'\r\nimport { cn } from '@/lib/utils'\r\n\r\ntype FacetedValue<Multiple extends boolean> = Multiple extends true\r\n ? string[]\r\n : string\r\n\r\ninterface FacetedContextValue<Multiple extends boolean = boolean> {\r\n value?: FacetedValue<Multiple>\r\n onItemSelect?: (value: string) => void\r\n multiple?: Multiple\r\n}\r\n\r\nconst FacetedContext = React.createContext<FacetedContextValue<boolean> | null>(\r\n null\r\n)\r\n\r\nfunction useFacetedContext(name: string) {\r\n const context = React.useContext(FacetedContext)\r\n if (!context) {\r\n throw new Error(`\\`${name}\\` must be within Faceted`)\r\n }\r\n return context\r\n}\r\n\r\ninterface FacetedProps<Multiple extends boolean = false>\r\n extends React.ComponentProps<typeof Popover> {\r\n value?: FacetedValue<Multiple>\r\n onValueChange?: (value: FacetedValue<Multiple> | undefined) => void\r\n children?: React.ReactNode\r\n multiple?: Multiple\r\n}\r\n\r\nfunction Faceted<Multiple extends boolean = false>(\r\n props: FacetedProps<Multiple>\r\n) {\r\n const {\r\n open: openProp,\r\n onOpenChange: onOpenChangeProp,\r\n value,\r\n onValueChange,\r\n children,\r\n multiple = false,\r\n ...facetedProps\r\n } = props\r\n\r\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(false)\r\n const isControlled = openProp !== undefined\r\n const open = isControlled ? openProp : uncontrolledOpen\r\n\r\n const onOpenChange = React.useCallback(\r\n (newOpen: boolean) => {\r\n if (!isControlled) {\r\n setUncontrolledOpen(newOpen)\r\n }\r\n onOpenChangeProp?.(newOpen)\r\n },\r\n [isControlled, onOpenChangeProp]\r\n )\r\n\r\n const onItemSelect = React.useCallback(\r\n (selectedValue: string) => {\r\n if (!onValueChange) return\r\n\r\n if (multiple) {\r\n const currentValue = (Array.isArray(value) ? value : []) as string[]\r\n const newValue = currentValue.includes(selectedValue)\r\n ? currentValue.filter(v => v !== selectedValue)\r\n : [...currentValue, selectedValue]\r\n onValueChange(newValue as FacetedValue<Multiple>)\r\n } else {\r\n if (value === selectedValue) {\r\n onValueChange(undefined)\r\n } else {\r\n onValueChange(selectedValue as FacetedValue<Multiple>)\r\n }\r\n\r\n requestAnimationFrame(() => onOpenChange(false))\r\n }\r\n },\r\n [multiple, value, onValueChange, onOpenChange]\r\n )\r\n\r\n const contextValue = React.useMemo<FacetedContextValue<typeof multiple>>(\r\n () => ({ value, onItemSelect, multiple }),\r\n [value, onItemSelect, multiple]\r\n )\r\n\r\n return (\r\n <FacetedContext.Provider value={contextValue}>\r\n <Popover open={open} onOpenChange={onOpenChange} {...facetedProps}>\r\n {children}\r\n </Popover>\r\n </FacetedContext.Provider>\r\n )\r\n}\r\n\r\nfunction FacetedTrigger(props: React.ComponentProps<typeof PopoverTrigger>) {\r\n const { className, children, ...triggerProps } = props\r\n\r\n return (\r\n <PopoverTrigger\r\n {...triggerProps}\r\n className={cn('justify-between text-left', className)}\r\n >\r\n {children}\r\n </PopoverTrigger>\r\n )\r\n}\r\n\r\ninterface FacetedBadgeListProps extends React.ComponentProps<'div'> {\r\n options?: { label: string; value: string }[]\r\n max?: number\r\n badgeClassName?: string\r\n placeholder?: string\r\n}\r\n\r\nfunction FacetedBadgeList(props: FacetedBadgeListProps) {\r\n const {\r\n options = [],\r\n max = 2,\r\n placeholder = 'Select options...',\r\n className,\r\n badgeClassName,\r\n ...badgeListProps\r\n } = props\r\n\r\n const context = useFacetedContext('FacetedBadgeList')\r\n const values = Array.isArray(context.value)\r\n ? context.value\r\n : ([context.value].filter(Boolean) as string[])\r\n\r\n const getLabel = React.useCallback(\r\n (value: string) => {\r\n const option = options.find(opt => opt.value === value)\r\n return option?.label ?? value\r\n },\r\n [options]\r\n )\r\n\r\n if (!values || values.length === 0) {\r\n return (\r\n <div\r\n {...badgeListProps}\r\n className=\"flex w-full items-center gap-1 text-muted-foreground\"\r\n >\r\n {placeholder}\r\n <CaretUpDown className=\"ml-auto size-4 shrink-0 opacity-50\" />\r\n </div>\r\n )\r\n }\r\n\r\n return (\r\n <div\r\n {...badgeListProps}\r\n className={cn('flex flex-wrap items-center gap-1', className)}\r\n >\r\n {values.length > max ? (\r\n <Badge\r\n variant=\"secondary\"\r\n className={cn('rounded-sm px-1 font-normal', badgeClassName)}\r\n >\r\n {values.length} selected\r\n </Badge>\r\n ) : (\r\n values.map(value => (\r\n <Badge\r\n key={value}\r\n variant=\"secondary\"\r\n className={cn('rounded-sm px-1 font-normal', badgeClassName)}\r\n >\r\n <span className=\"truncate\">{getLabel(value)}</span>\r\n </Badge>\r\n ))\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nfunction FacetedContent(props: React.ComponentProps<typeof PopoverContent>) {\r\n const { className, children, ...contentProps } = props\r\n\r\n return (\r\n <PopoverContent\r\n {...contentProps}\r\n align=\"start\"\r\n className={cn(\r\n 'w-[200px] origin-(--radix-popover-content-transform-origin) p-0',\r\n className\r\n )}\r\n >\r\n <Command>{children}</Command>\r\n </PopoverContent>\r\n )\r\n}\r\n\r\nconst FacetedInput = CommandInput\r\n\r\nconst FacetedList = CommandList\r\n\r\nconst FacetedEmpty = CommandEmpty\r\n\r\nconst FacetedGroup = CommandGroup\r\n\r\ninterface FacetedItemProps extends React.ComponentProps<typeof CommandItem> {\r\n value: string\r\n}\r\n\r\nfunction FacetedItem(props: FacetedItemProps) {\r\n const { value, onSelect, className, children, ...itemProps } = props\r\n const context = useFacetedContext('FacetedItem')\r\n\r\n const isSelected = context.multiple\r\n ? Array.isArray(context.value) && context.value.includes(value)\r\n : context.value === value\r\n\r\n const onItemSelect = React.useCallback(\r\n (currentValue: string) => {\r\n if (onSelect) {\r\n onSelect(currentValue)\r\n } else if (context.onItemSelect) {\r\n context.onItemSelect(currentValue)\r\n }\r\n },\r\n [onSelect, context.onItemSelect]\r\n )\r\n\r\n return (\r\n <CommandItem\r\n aria-selected={isSelected}\r\n data-selected={isSelected}\r\n className={cn('gap-2', className)}\r\n onSelect={() => onItemSelect(value)}\r\n {...itemProps}\r\n >\r\n <span\r\n className={cn(\r\n 'flex size-4 items-center justify-center rounded-sm border border-primary',\r\n isSelected\r\n ? 'bg-primary text-primary-foreground'\r\n : 'opacity-50 [&_svg]:invisible'\r\n )}\r\n >\r\n <Check className=\"size-4\" />\r\n </span>\r\n {children}\r\n </CommandItem>\r\n )\r\n}\r\n\r\nconst FacetedSeparator = CommandSeparator\r\n\r\nexport {\r\n Faceted,\r\n FacetedBadgeList,\r\n FacetedContent,\r\n FacetedEmpty,\r\n FacetedGroup,\r\n FacetedInput,\r\n FacetedItem,\r\n FacetedList,\r\n FacetedSeparator,\r\n FacetedTrigger,\r\n}\r\n"],"names":["FacetedContext","React","useFacetedContext","name","context","Error","Faceted","props","openProp","onOpenChangeProp","value","onValueChange","children","multiple","facetedProps","uncontrolledOpen","setUncontrolledOpen","isControlled","undefined","open","onOpenChange","newOpen","onItemSelect","selectedValue","currentValue","Array","v","requestAnimationFrame","contextValue","Popover","FacetedTrigger","className","triggerProps","PopoverTrigger","cn","FacetedBadgeList","options","max","placeholder","badgeClassName","badgeListProps","values","Boolean","getLabel","option","opt","Badge","CaretUpDown","FacetedContent","contentProps","PopoverContent","Command","FacetedInput","CommandInput","FacetedList","CommandList","FacetedEmpty","CommandEmpty","FacetedGroup","CommandGroup","FacetedItem","onSelect","itemProps","isSelected","CommandItem","Check","FacetedSeparator","CommandSeparator"],"mappings":"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"}
1
+ {"version":3,"file":"components\\faceted.js","sources":["webpack://@gbmtech/aurora-ui/./src/components/faceted.tsx"],"sourcesContent":["\r\n\r\nimport { CaretUpDown, Check } from '@phosphor-icons/react'\r\nimport * as React from 'react'\r\n\r\nimport { Badge } from '@/components/badge'\r\nimport {\r\n Command,\r\n CommandEmpty,\r\n CommandGroup,\r\n CommandInput,\r\n CommandItem,\r\n CommandList,\r\n CommandSeparator,\r\n} from '@/components/command'\r\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/popover'\r\nimport { cn } from '@/lib/utils'\r\n\r\ntype FacetedValue<Multiple extends boolean> = Multiple extends true\r\n ? string[]\r\n : string\r\n\r\ninterface FacetedContextValue<Multiple extends boolean = boolean> {\r\n value?: FacetedValue<Multiple>\r\n onItemSelect?: (value: string) => void\r\n multiple?: Multiple\r\n}\r\n\r\nconst FacetedContext = React.createContext<FacetedContextValue<boolean> | null>(\r\n null\r\n)\r\n\r\nfunction useFacetedContext(name: string) {\r\n const context = React.useContext(FacetedContext)\r\n if (!context) {\r\n throw new Error(`\\`${name}\\` must be within Faceted`)\r\n }\r\n return context\r\n}\r\n\r\ninterface FacetedProps<Multiple extends boolean = false>\r\n extends React.ComponentProps<typeof Popover> {\r\n value?: FacetedValue<Multiple>\r\n onValueChange?: (value: FacetedValue<Multiple> | undefined) => void\r\n children?: React.ReactNode\r\n multiple?: Multiple\r\n}\r\n\r\nfunction Faceted<Multiple extends boolean = false>(\r\n props: FacetedProps<Multiple>\r\n) {\r\n const {\r\n open: openProp,\r\n onOpenChange: onOpenChangeProp,\r\n value,\r\n onValueChange,\r\n children,\r\n multiple = false,\r\n ...facetedProps\r\n } = props\r\n\r\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(false)\r\n const isControlled = openProp !== undefined\r\n const open = isControlled ? openProp : uncontrolledOpen\r\n\r\n const onOpenChange = React.useCallback(\r\n (newOpen: boolean) => {\r\n if (!isControlled) {\r\n setUncontrolledOpen(newOpen)\r\n }\r\n onOpenChangeProp?.(newOpen)\r\n },\r\n [isControlled, onOpenChangeProp]\r\n )\r\n\r\n const onItemSelect = React.useCallback(\r\n (selectedValue: string) => {\r\n if (!onValueChange) return\r\n\r\n if (multiple) {\r\n const currentValue = (Array.isArray(value) ? value : []) as string[]\r\n const newValue = currentValue.includes(selectedValue)\r\n ? currentValue.filter(v => v !== selectedValue)\r\n : [...currentValue, selectedValue]\r\n onValueChange(newValue as FacetedValue<Multiple>)\r\n } else {\r\n if (value === selectedValue) {\r\n onValueChange(undefined)\r\n } else {\r\n onValueChange(selectedValue as FacetedValue<Multiple>)\r\n }\r\n\r\n requestAnimationFrame(() => onOpenChange(false))\r\n }\r\n },\r\n [multiple, value, onValueChange, onOpenChange]\r\n )\r\n\r\n const contextValue = React.useMemo<FacetedContextValue<typeof multiple>>(\r\n () => ({ value, onItemSelect, multiple }),\r\n [value, onItemSelect, multiple]\r\n )\r\n\r\n return (\r\n <FacetedContext.Provider value={contextValue}>\r\n <Popover open={open} onOpenChange={onOpenChange} {...facetedProps}>\r\n {children}\r\n </Popover>\r\n </FacetedContext.Provider>\r\n )\r\n}\r\n\r\nfunction FacetedTrigger(props: React.ComponentProps<typeof PopoverTrigger>) {\r\n const { className, children, ...triggerProps } = props\r\n\r\n return (\r\n <PopoverTrigger\r\n {...triggerProps}\r\n className={cn('justify-between text-left', className)}\r\n >\r\n {children}\r\n </PopoverTrigger>\r\n )\r\n}\r\n\r\ninterface FacetedBadgeListProps extends React.ComponentProps<'div'> {\r\n options?: { label: string; value: string }[]\r\n max?: number\r\n badgeClassName?: string\r\n placeholder?: string\r\n}\r\n\r\nfunction FacetedBadgeList(props: FacetedBadgeListProps) {\r\n const {\r\n options = [],\r\n max = 2,\r\n placeholder = 'Select options...',\r\n className,\r\n badgeClassName,\r\n ...badgeListProps\r\n } = props\r\n\r\n const context = useFacetedContext('FacetedBadgeList')\r\n const values = Array.isArray(context.value)\r\n ? context.value\r\n : ([context.value].filter(Boolean) as string[])\r\n\r\n const getLabel = React.useCallback(\r\n (value: string) => {\r\n const option = options.find(opt => opt.value === value)\r\n return option?.label ?? value\r\n },\r\n [options]\r\n )\r\n\r\n if (!values || values.length === 0) {\r\n return (\r\n <div\r\n {...badgeListProps}\r\n className=\"flex w-full items-center gap-1 text-muted-foreground\"\r\n >\r\n {placeholder}\r\n <CaretUpDown className=\"ml-auto size-4 shrink-0 opacity-50\" />\r\n </div>\r\n )\r\n }\r\n\r\n return (\r\n <div\r\n {...badgeListProps}\r\n className={cn('flex flex-wrap items-center gap-1', className)}\r\n >\r\n {values.length > max ? (\r\n <Badge\r\n variant=\"secondary\"\r\n className={cn('rounded-sm px-1 font-normal', badgeClassName)}\r\n >\r\n {values.length} selected\r\n </Badge>\r\n ) : (\r\n values.map(value => (\r\n <Badge\r\n key={value}\r\n variant=\"secondary\"\r\n className={cn('rounded-sm px-1 font-normal', badgeClassName)}\r\n >\r\n <span className=\"truncate\">{getLabel(value)}</span>\r\n </Badge>\r\n ))\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nfunction FacetedContent(props: React.ComponentProps<typeof PopoverContent>) {\r\n const { className, children, ...contentProps } = props\r\n\r\n return (\r\n <PopoverContent\r\n {...contentProps}\r\n align=\"start\"\r\n className={cn(\r\n 'w-[200px] origin-(--radix-popover-content-transform-origin) p-0',\r\n className\r\n )}\r\n >\r\n <Command>{children}</Command>\r\n </PopoverContent>\r\n )\r\n}\r\n\r\nconst FacetedInput = CommandInput\r\n\r\nconst FacetedList = CommandList\r\n\r\nconst FacetedEmpty = CommandEmpty\r\n\r\nconst FacetedGroup = CommandGroup\r\n\r\ninterface FacetedItemProps extends React.ComponentProps<typeof CommandItem> {\r\n value: string\r\n}\r\n\r\nfunction FacetedItem(props: FacetedItemProps) {\r\n const { value, onSelect, className, children, ...itemProps } = props\r\n const context = useFacetedContext('FacetedItem')\r\n\r\n const isSelected = context.multiple\r\n ? Array.isArray(context.value) && context.value.includes(value)\r\n : context.value === value\r\n\r\n const onItemSelect = React.useCallback(\r\n (currentValue: string) => {\r\n if (onSelect) {\r\n onSelect(currentValue)\r\n } else if (context.onItemSelect) {\r\n context.onItemSelect(currentValue)\r\n }\r\n },\r\n [onSelect, context.onItemSelect]\r\n )\r\n\r\n return (\r\n <CommandItem\r\n aria-selected={isSelected}\r\n data-selected={isSelected}\r\n className={cn('gap-2', className)}\r\n onSelect={() => onItemSelect(value)}\r\n {...itemProps}\r\n >\r\n <span\r\n className={cn(\r\n 'flex size-4 items-center justify-center rounded-sm border border-primary',\r\n isSelected\r\n ? 'bg-primary text-primary-foreground'\r\n : 'opacity-50 [&_svg]:invisible'\r\n )}\r\n >\r\n <Check className=\"size-4\" />\r\n </span>\r\n {children}\r\n </CommandItem>\r\n )\r\n}\r\n\r\nconst FacetedSeparator = CommandSeparator\r\n\r\nexport {\r\n Faceted,\r\n FacetedBadgeList,\r\n FacetedContent,\r\n FacetedEmpty,\r\n FacetedGroup,\r\n FacetedInput,\r\n FacetedItem,\r\n FacetedList,\r\n FacetedSeparator,\r\n FacetedTrigger,\r\n}\r\n"],"names":["FacetedContext","React","useFacetedContext","name","context","Error","Faceted","props","openProp","onOpenChangeProp","value","onValueChange","children","multiple","facetedProps","uncontrolledOpen","setUncontrolledOpen","isControlled","undefined","open","onOpenChange","newOpen","onItemSelect","selectedValue","currentValue","Array","v","requestAnimationFrame","contextValue","Popover","FacetedTrigger","className","triggerProps","PopoverTrigger","cn","FacetedBadgeList","options","max","placeholder","badgeClassName","badgeListProps","values","Boolean","getLabel","option","opt","Badge","CaretUpDown","FacetedContent","contentProps","PopoverContent","Command","FacetedInput","CommandInput","FacetedList","CommandList","FacetedEmpty","CommandEmpty","FacetedGroup","CommandGroup","FacetedItem","onSelect","itemProps","isSelected","CommandItem","Check","FacetedSeparator","CommandSeparator"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"components\\form.js","sources":["webpack://@gbmtech/aurora-ui/./src/components/form.tsx"],"sourcesContent":["\r\n\r\nimport type { Scope } from '@radix-ui/react-context'\r\nimport type { ComponentProps, JSX, ReactNode } from 'react'\r\nimport type {\r\n ControllerProps,\r\n FieldError,\r\n FieldPath,\r\n FieldValues,\r\n} from 'react-hook-form'\r\n\r\nimport { createContextScope } from '@radix-ui/react-context'\r\nimport { Slot } from '@radix-ui/react-slot'\r\nimport { useId } from 'react'\r\nimport {\r\n Controller,\r\n FormProvider,\r\n useFormContext,\r\n useFormState,\r\n} from 'react-hook-form'\r\n\r\nimport { Label } from '@/components/label'\r\nimport { cn } from '@/lib/utils'\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Component: Form\r\n * -------------------------------------------------------------------------- */\r\n\r\nconst Form = FormProvider\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Context: FormField\r\n * -------------------------------------------------------------------------- */\r\n\r\nconst FORM_FIELD_NAME = 'FormField'\r\n\r\ntype ScopedProps<P> = P & { __scopeFormField?: Scope }\r\n\r\nconst [createFormFieldContext, createFormFieldScope] =\r\n createContextScope(FORM_FIELD_NAME)\r\n\r\ninterface FormFieldContextValue<\r\n TFieldValues extends FieldValues = FieldValues,\r\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\r\n> {\r\n name: TName\r\n}\r\n\r\nconst [FormFieldContextProvider, useFormFieldContext] =\r\n createFormFieldContext<FormFieldContextValue>(FORM_FIELD_NAME)\r\n\r\nfunction useFormItem(\r\n consumerName: string,\r\n scope: Scope\r\n): {\r\n formDescriptionId: string\r\n formItemId: string\r\n formMessageId: string\r\n id: string\r\n invalid: boolean\r\n isDirty: boolean\r\n isTouched: boolean\r\n isValidating: boolean\r\n name: string\r\n error?: FieldError\r\n} {\r\n const { id } = useFormItemContext(consumerName, scope)\r\n const { name } = useFormFieldContext(consumerName, scope)\r\n const { getFieldState } = useFormContext()\r\n const formState = useFormState({ name })\r\n const fieldState = getFieldState(name, formState)\r\n\r\n return {\r\n id,\r\n name,\r\n formDescriptionId: `form-item-description-${id}`,\r\n formItemId: `form-item-${id}`,\r\n formMessageId: `form-item-message-${id}`,\r\n ...fieldState,\r\n }\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Component: FormField\r\n * -------------------------------------------------------------------------- */\r\n\r\nfunction FormField<\r\n TFieldValues extends FieldValues = FieldValues,\r\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\r\n>(\r\n formFieldProps: ScopedProps<ControllerProps<TFieldValues, TName>>\r\n): JSX.Element {\r\n const { __scopeFormField, ...props } = formFieldProps\r\n\r\n return (\r\n <FormFieldContextProvider name={props.name} scope={__scopeFormField}>\r\n <Controller {...props} />\r\n </FormFieldContextProvider>\r\n )\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Context: FormItem\r\n * -------------------------------------------------------------------------- */\r\n\r\nconst FORM_ITEM_NAME = 'FormItem'\r\n\r\ninterface FormItemContextValue {\r\n id: string\r\n}\r\n\r\nconst [FormItemContextProvider, useFormItemContext] =\r\n createFormFieldContext<FormItemContextValue>(FORM_ITEM_NAME)\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Component: FormItem\r\n * -------------------------------------------------------------------------- */\r\n\r\nfunction FormItem({\r\n __scopeFormField,\r\n className,\r\n ...props\r\n}: ScopedProps<ComponentProps<'div'>>): JSX.Element {\r\n const id = useId()\r\n\r\n return (\r\n <FormItemContextProvider id={id} scope={__scopeFormField}>\r\n <div\r\n className={cn('space-y-2', className)}\r\n data-slot=\"form-item\"\r\n {...props}\r\n />\r\n </FormItemContextProvider>\r\n )\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Component: FormLabel\r\n * -------------------------------------------------------------------------- */\r\n\r\nconst FORM_LABEL_NAME = 'FormLabel'\r\n\r\nfunction FormLabel({\r\n __scopeFormField,\r\n ...props\r\n}: ScopedProps<ComponentProps<typeof Label>>): JSX.Element {\r\n const { formItemId, error } = useFormItem(FORM_LABEL_NAME, __scopeFormField)\r\n\r\n return (\r\n <Label\r\n data-invalid={error ? true : undefined}\r\n data-slot=\"form-label\"\r\n htmlFor={formItemId}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Component: FormControl\r\n * -------------------------------------------------------------------------- */\r\n\r\nconst FORM_CONTROL_NAME = 'FormControl'\r\n\r\nfunction FormControl({\r\n __scopeFormField,\r\n ...props\r\n}: ScopedProps<ComponentProps<typeof Slot>>): JSX.Element {\r\n const { formDescriptionId, formItemId, formMessageId, error } = useFormItem(\r\n FORM_CONTROL_NAME,\r\n __scopeFormField\r\n )\r\n\r\n return (\r\n <Slot\r\n aria-describedby={\r\n error ? `${formDescriptionId} ${formMessageId}` : formDescriptionId\r\n }\r\n aria-invalid={Boolean(error)}\r\n data-slot=\"form-control\"\r\n id={formItemId}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Component: FormDescription\r\n * -------------------------------------------------------------------------- */\r\n\r\nfunction FormDescription({\r\n __scopeFormField,\r\n className,\r\n ...props\r\n}: ScopedProps<ComponentProps<'p'>>): JSX.Element {\r\n const { formDescriptionId } = useFormItem(FORM_MESSAGE_NAME, __scopeFormField)\r\n\r\n return (\r\n <p\r\n className={cn('text-muted-foreground text-xs', className)}\r\n data-slot=\"form-description\"\r\n id={formDescriptionId}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Component: FormMessage\r\n * -------------------------------------------------------------------------- */\r\n\r\nconst FORM_MESSAGE_NAME = 'FormMessage'\r\n\r\nfunction FormMessage({\r\n __scopeFormField,\r\n children,\r\n className,\r\n ...props\r\n}: ScopedProps<ComponentProps<'p'>>): ReactNode {\r\n const { formMessageId, error } = useFormItem(\r\n FORM_MESSAGE_NAME,\r\n __scopeFormField\r\n )\r\n const body = error?.message ? String(error.message) : children\r\n\r\n if (!body) {\r\n return null\r\n }\r\n\r\n return (\r\n <p\r\n className={cn(\r\n 'text-xs',\r\n error?.message ? 'font-medium text-error' : 'text-gray-600',\r\n className\r\n )}\r\n data-slot=\"form-message\"\r\n id={formMessageId}\r\n {...props}\r\n >\r\n {body}\r\n </p>\r\n )\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Exports\r\n * -------------------------------------------------------------------------- */\r\n\r\nexport {\r\n createFormFieldScope,\r\n Form,\r\n FormControl,\r\n FormDescription,\r\n FormField,\r\n FormItem,\r\n FormLabel,\r\n FormMessage,\r\n}\r\n"],"names":["Form","FormProvider","FORM_FIELD_NAME","createFormFieldContext","createFormFieldScope","createContextScope","FormFieldContextProvider","useFormFieldContext","useFormItem","consumerName","scope","id","useFormItemContext","name","getFieldState","useFormContext","formState","useFormState","fieldState","FormField","formFieldProps","__scopeFormField","props","Controller","FormItemContextProvider","FormItem","className","useId","cn","FormLabel","formItemId","error","Label","undefined","FormControl","formDescriptionId","formMessageId","Slot","Boolean","FormDescription","FORM_MESSAGE_NAME","FormMessage","children","body","String"],"mappings":"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"}
1
+ {"version":3,"file":"components\\form.js","sources":["webpack://@gbmtech/aurora-ui/./src/components/form.tsx"],"sourcesContent":["\r\n\r\nimport type { Scope } from '@radix-ui/react-context'\r\nimport type { ComponentProps, JSX, ReactNode } from 'react'\r\nimport type {\r\n ControllerProps,\r\n FieldError,\r\n FieldPath,\r\n FieldValues,\r\n} from 'react-hook-form'\r\n\r\nimport { createContextScope } from '@radix-ui/react-context'\r\nimport { Slot } from '@radix-ui/react-slot'\r\nimport { useId } from 'react'\r\nimport {\r\n Controller,\r\n FormProvider,\r\n useFormContext,\r\n useFormState,\r\n} from 'react-hook-form'\r\n\r\nimport { Label } from '@/components/label'\r\nimport { cn } from '@/lib/utils'\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Component: Form\r\n * -------------------------------------------------------------------------- */\r\n\r\nconst Form = FormProvider\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Context: FormField\r\n * -------------------------------------------------------------------------- */\r\n\r\nconst FORM_FIELD_NAME = 'FormField'\r\n\r\ntype ScopedProps<P> = P & { __scopeFormField?: Scope }\r\n\r\nconst [createFormFieldContext, createFormFieldScope] =\r\n createContextScope(FORM_FIELD_NAME)\r\n\r\ninterface FormFieldContextValue<\r\n TFieldValues extends FieldValues = FieldValues,\r\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\r\n> {\r\n name: TName\r\n}\r\n\r\nconst [FormFieldContextProvider, useFormFieldContext] =\r\n createFormFieldContext<FormFieldContextValue>(FORM_FIELD_NAME)\r\n\r\nfunction useFormItem(\r\n consumerName: string,\r\n scope: Scope\r\n): {\r\n formDescriptionId: string\r\n formItemId: string\r\n formMessageId: string\r\n id: string\r\n invalid: boolean\r\n isDirty: boolean\r\n isTouched: boolean\r\n isValidating: boolean\r\n name: string\r\n error?: FieldError\r\n} {\r\n const { id } = useFormItemContext(consumerName, scope)\r\n const { name } = useFormFieldContext(consumerName, scope)\r\n const { getFieldState } = useFormContext()\r\n const formState = useFormState({ name })\r\n const fieldState = getFieldState(name, formState)\r\n\r\n return {\r\n id,\r\n name,\r\n formDescriptionId: `form-item-description-${id}`,\r\n formItemId: `form-item-${id}`,\r\n formMessageId: `form-item-message-${id}`,\r\n ...fieldState,\r\n }\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Component: FormField\r\n * -------------------------------------------------------------------------- */\r\n\r\nfunction FormField<\r\n TFieldValues extends FieldValues = FieldValues,\r\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\r\n>(\r\n formFieldProps: ScopedProps<ControllerProps<TFieldValues, TName>>\r\n): JSX.Element {\r\n const { __scopeFormField, ...props } = formFieldProps\r\n\r\n return (\r\n <FormFieldContextProvider name={props.name} scope={__scopeFormField}>\r\n <Controller {...props} />\r\n </FormFieldContextProvider>\r\n )\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Context: FormItem\r\n * -------------------------------------------------------------------------- */\r\n\r\nconst FORM_ITEM_NAME = 'FormItem'\r\n\r\ninterface FormItemContextValue {\r\n id: string\r\n}\r\n\r\nconst [FormItemContextProvider, useFormItemContext] =\r\n createFormFieldContext<FormItemContextValue>(FORM_ITEM_NAME)\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Component: FormItem\r\n * -------------------------------------------------------------------------- */\r\n\r\nfunction FormItem({\r\n __scopeFormField,\r\n className,\r\n ...props\r\n}: ScopedProps<ComponentProps<'div'>>): JSX.Element {\r\n const id = useId()\r\n\r\n return (\r\n <FormItemContextProvider id={id} scope={__scopeFormField}>\r\n <div\r\n className={cn('space-y-2', className)}\r\n data-slot=\"form-item\"\r\n {...props}\r\n />\r\n </FormItemContextProvider>\r\n )\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Component: FormLabel\r\n * -------------------------------------------------------------------------- */\r\n\r\nconst FORM_LABEL_NAME = 'FormLabel'\r\n\r\nfunction FormLabel({\r\n __scopeFormField,\r\n ...props\r\n}: ScopedProps<ComponentProps<typeof Label>>): JSX.Element {\r\n const { formItemId, error } = useFormItem(FORM_LABEL_NAME, __scopeFormField)\r\n\r\n return (\r\n <Label\r\n data-invalid={error ? true : undefined}\r\n data-slot=\"form-label\"\r\n htmlFor={formItemId}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Component: FormControl\r\n * -------------------------------------------------------------------------- */\r\n\r\nconst FORM_CONTROL_NAME = 'FormControl'\r\n\r\nfunction FormControl({\r\n __scopeFormField,\r\n ...props\r\n}: ScopedProps<ComponentProps<typeof Slot>>): JSX.Element {\r\n const { formDescriptionId, formItemId, formMessageId, error } = useFormItem(\r\n FORM_CONTROL_NAME,\r\n __scopeFormField\r\n )\r\n\r\n return (\r\n <Slot\r\n aria-describedby={\r\n error ? `${formDescriptionId} ${formMessageId}` : formDescriptionId\r\n }\r\n aria-invalid={Boolean(error)}\r\n data-slot=\"form-control\"\r\n id={formItemId}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Component: FormDescription\r\n * -------------------------------------------------------------------------- */\r\n\r\nfunction FormDescription({\r\n __scopeFormField,\r\n className,\r\n ...props\r\n}: ScopedProps<ComponentProps<'p'>>): JSX.Element {\r\n const { formDescriptionId } = useFormItem(FORM_MESSAGE_NAME, __scopeFormField)\r\n\r\n return (\r\n <p\r\n className={cn('text-muted-foreground text-xs', className)}\r\n data-slot=\"form-description\"\r\n id={formDescriptionId}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Component: FormMessage\r\n * -------------------------------------------------------------------------- */\r\n\r\nconst FORM_MESSAGE_NAME = 'FormMessage'\r\n\r\nfunction FormMessage({\r\n __scopeFormField,\r\n children,\r\n className,\r\n ...props\r\n}: ScopedProps<ComponentProps<'p'>>): ReactNode {\r\n const { formMessageId, error } = useFormItem(\r\n FORM_MESSAGE_NAME,\r\n __scopeFormField\r\n )\r\n const body = error?.message ? String(error.message) : children\r\n\r\n if (!body) {\r\n return null\r\n }\r\n\r\n return (\r\n <p\r\n className={cn(\r\n 'text-xs',\r\n error?.message ? 'font-medium text-error' : 'text-gray-600',\r\n className\r\n )}\r\n data-slot=\"form-message\"\r\n id={formMessageId}\r\n {...props}\r\n >\r\n {body}\r\n </p>\r\n )\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Exports\r\n * -------------------------------------------------------------------------- */\r\n\r\nexport {\r\n createFormFieldScope,\r\n Form,\r\n FormControl,\r\n FormDescription,\r\n FormField,\r\n FormItem,\r\n FormLabel,\r\n FormMessage,\r\n}\r\n"],"names":["Form","FormProvider","FORM_FIELD_NAME","createFormFieldContext","createFormFieldScope","createContextScope","FormFieldContextProvider","useFormFieldContext","useFormItem","consumerName","scope","id","useFormItemContext","name","getFieldState","useFormContext","formState","useFormState","fieldState","FormField","formFieldProps","__scopeFormField","props","Controller","FormItemContextProvider","FormItem","className","useId","cn","FormLabel","formItemId","error","Label","undefined","FormControl","formDescriptionId","formMessageId","Slot","Boolean","FormDescription","FORM_MESSAGE_NAME","FormMessage","children","body","String"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"components\\pagination.js","sources":["webpack://@gbmtech/aurora-ui/./src/components/pagination.tsx"],"sourcesContent":["import {\r\n CaretLeft,\r\n CaretRight,\r\n DotsThree,\r\n} from '@phosphor-icons/react/dist/ssr'\r\nimport { ComponentProps, JSX } from 'react'\r\n\r\nimport { VariantProps, cn } from '../lib/utils'\r\nimport { buttonVariants } from './button'\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Component: Pagination\r\n * -------------------------------------------------------------------------- */\r\n\r\nfunction Pagination({\r\n className,\r\n ...props\r\n}: ComponentProps<'nav'>): JSX.Element {\r\n return (\r\n <nav\r\n aria-label=\"pagination\"\r\n className={cn('mx-auto flex w-full justify-center', className)}\r\n data-slot=\"pagination\"\r\n role=\"navigation\"\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Component: PaginationContent\r\n * -------------------------------------------------------------------------- */\r\n\r\nfunction PaginationContent({\r\n className,\r\n ...props\r\n}: ComponentProps<'ul'>): JSX.Element {\r\n return (\r\n <ul\r\n className={cn('flex flex-row items-center gap-1', className)}\r\n data-slot=\"pagination-content\"\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Component: PaginationItem\r\n * -------------------------------------------------------------------------- */\r\n\r\nfunction PaginationItem(props: ComponentProps<'li'>): JSX.Element {\r\n return <li data-slot=\"pagination-item\" {...props} />\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Component: PaginationLink\r\n * -------------------------------------------------------------------------- */\r\n\r\nfunction PaginationLink({\r\n children,\r\n className,\r\n isActive,\r\n size = 'icon',\r\n ...props\r\n}: ComponentProps<'a'> &\r\n Pick<VariantProps<typeof buttonVariants>, 'size'> & {\r\n isActive?: boolean\r\n }): JSX.Element {\r\n return (\r\n <a\r\n aria-current={isActive ? 'page' : undefined}\r\n className={buttonVariants({\r\n className,\r\n size,\r\n variant: isActive ? 'outline' : 'ghost',\r\n })}\r\n data-slot=\"pagination-link\"\r\n {...props}\r\n >\r\n {children}\r\n </a>\r\n )\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Component: PaginationPrevious\r\n * -------------------------------------------------------------------------- */\r\n\r\nfunction PaginationPrevious({\r\n ...props\r\n}: ComponentProps<'a'> &\r\n Pick<VariantProps<typeof buttonVariants>, 'size'> & {\r\n isActive?: boolean\r\n }): JSX.Element {\r\n return (\r\n <PaginationLink\r\n aria-label=\"Go to previous page\"\r\n data-slot=\"pagination-previous\"\r\n size=\"md\"\r\n {...props}\r\n >\r\n <CaretLeft className=\"size-4\" />\r\n <span>Previous</span>\r\n </PaginationLink>\r\n )\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Component: PaginationNext\r\n * -------------------------------------------------------------------------- */\r\n\r\nfunction PaginationNext({\r\n ...props\r\n}: ComponentProps<'a'> &\r\n Pick<VariantProps<typeof buttonVariants>, 'size'> & {\r\n isActive?: boolean\r\n }): JSX.Element {\r\n return (\r\n <PaginationLink\r\n aria-label=\"Go to next page\"\r\n data-slot=\"pagination-next\"\r\n size=\"md\"\r\n {...props}\r\n >\r\n <span>Next</span>\r\n <CaretRight />\r\n </PaginationLink>\r\n )\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Component: PaginationEllipsis\r\n * -------------------------------------------------------------------------- */\r\n\r\nfunction PaginationEllipsis({\r\n className,\r\n ...props\r\n}: ComponentProps<'span'>): JSX.Element {\r\n return (\r\n <span\r\n aria-hidden\r\n className={cn('flex size-10 items-center justify-center', className)}\r\n data-slot=\"pagination-ellipsis\"\r\n {...props}\r\n >\r\n <DotsThree className=\"size-4\" />\r\n <span className=\"sr-only\">More pages</span>\r\n </span>\r\n )\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Exports\r\n * -------------------------------------------------------------------------- */\r\n\r\nexport {\r\n Pagination,\r\n PaginationContent,\r\n PaginationLink,\r\n PaginationItem,\r\n PaginationPrevious,\r\n PaginationNext,\r\n PaginationEllipsis,\r\n}\r\n"],"names":["Pagination","className","props","cn","PaginationContent","PaginationItem","PaginationLink","children","isActive","size","undefined","buttonVariants","PaginationPrevious","CaretLeft","PaginationNext","CaretRight","PaginationEllipsis","DotsThree"],"mappings":"qJAcA,SAASA,EAAW,CAClBC,UAAAA,CAAS,CACT,GAAGC,EACmB,EACtB,MACE,UAAC,OACC,aAAW,aACX,UAAWC,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAG,qCAAsCF,GACpD,YAAU,aACV,KAAK,aACJ,GAAGC,CAAK,A,EAGf,CAMA,SAASE,EAAkB,CACzBH,UAAAA,CAAS,CACT,GAAGC,EACkB,EACrB,MACE,UAAC,MACC,UAAWC,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAG,mCAAoCF,GAClD,YAAU,qBACT,GAAGC,CAAK,A,EAGf,CAMA,SAASG,EAAeH,CAA2B,EACjD,MAAO,UAAC,MAAG,YAAU,kBAAmB,GAAGA,CAAK,A,EAClD,CAMA,SAASI,EAAe,CACtBC,SAAAA,CAAQ,CACRN,UAAAA,CAAS,CACTO,SAAAA,CAAQ,CACRC,KAAAA,EAAO,MAAM,CACb,GAAGP,EAIF,EACD,MACE,UAAC,KACC,eAAcM,EAAW,OAASE,KAAAA,EAClC,UAAWC,AAAAA,GAAAA,EAAAA,cAAAA,AAAAA,EAAe,CACxBV,UAAAA,EACAQ,KAAAA,EACA,QAASD,EAAW,UAAY,OAClC,GACA,YAAU,kBACT,GAAGN,CAAK,C,SAERK,C,EAGP,CAMA,SAASK,EAAmB,CAC1B,GAAGV,EAIF,EACD,MACE,WAACI,EAAAA,CACC,aAAW,sBACX,YAAU,sBACV,KAAK,KACJ,GAAGJ,CAAK,C,UAET,UAACW,EAAAA,SAASA,CAAAA,CAAC,UAAU,Q,GACrB,UAAC,Q,SAAK,U,KAGZ,CAMA,SAASC,EAAe,CACtB,GAAGZ,EAIF,EACD,MACE,WAACI,EAAAA,CACC,aAAW,kBACX,YAAU,kBACV,KAAK,KACJ,GAAGJ,CAAK,C,UAET,UAAC,Q,SAAK,M,GACN,UAACa,EAAAA,UAAUA,CAAAA,CAAAA,G,EAGjB,CAMA,SAASC,EAAmB,CAC1Bf,UAAAA,CAAS,CACT,GAAGC,EACoB,EACvB,MACE,WAAC,QACC,cAAW,GACX,UAAWC,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAG,2CAA4CF,GAC1D,YAAU,sBACT,GAAGC,CAAK,C,UAET,UAACe,EAAAA,SAASA,CAAAA,CAAC,UAAU,Q,GACrB,UAAC,QAAK,UAAU,U,SAAU,Y,KAGhC,Q"}
1
+ {"version":3,"file":"components\\pagination.js","sources":["webpack://@gbmtech/aurora-ui/./src/components/pagination.tsx"],"sourcesContent":["import {\r\n CaretLeft,\r\n CaretRight,\r\n DotsThree,\r\n} from '@phosphor-icons/react/dist/ssr'\r\nimport { ComponentProps, JSX } from 'react'\r\n\r\nimport { VariantProps, cn } from '../lib/utils'\r\nimport { buttonVariants } from './button'\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Component: Pagination\r\n * -------------------------------------------------------------------------- */\r\n\r\nfunction Pagination({\r\n className,\r\n ...props\r\n}: ComponentProps<'nav'>): JSX.Element {\r\n return (\r\n <nav\r\n aria-label=\"pagination\"\r\n className={cn('mx-auto flex w-full justify-center', className)}\r\n data-slot=\"pagination\"\r\n role=\"navigation\"\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Component: PaginationContent\r\n * -------------------------------------------------------------------------- */\r\n\r\nfunction PaginationContent({\r\n className,\r\n ...props\r\n}: ComponentProps<'ul'>): JSX.Element {\r\n return (\r\n <ul\r\n className={cn('flex flex-row items-center gap-1', className)}\r\n data-slot=\"pagination-content\"\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Component: PaginationItem\r\n * -------------------------------------------------------------------------- */\r\n\r\nfunction PaginationItem(props: ComponentProps<'li'>): JSX.Element {\r\n return <li data-slot=\"pagination-item\" {...props} />\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Component: PaginationLink\r\n * -------------------------------------------------------------------------- */\r\n\r\nfunction PaginationLink({\r\n children,\r\n className,\r\n isActive,\r\n size = 'icon',\r\n ...props\r\n}: ComponentProps<'a'> &\r\n Pick<VariantProps<typeof buttonVariants>, 'size'> & {\r\n isActive?: boolean\r\n }): JSX.Element {\r\n return (\r\n <a\r\n aria-current={isActive ? 'page' : undefined}\r\n className={buttonVariants({\r\n className,\r\n size,\r\n variant: isActive ? 'outline' : 'ghost',\r\n })}\r\n data-slot=\"pagination-link\"\r\n {...props}\r\n >\r\n {children}\r\n </a>\r\n )\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Component: PaginationPrevious\r\n * -------------------------------------------------------------------------- */\r\n\r\nfunction PaginationPrevious({\r\n ...props\r\n}: ComponentProps<'a'> &\r\n Pick<VariantProps<typeof buttonVariants>, 'size'> & {\r\n isActive?: boolean\r\n }): JSX.Element {\r\n return (\r\n <PaginationLink\r\n aria-label=\"Go to previous page\"\r\n data-slot=\"pagination-previous\"\r\n size=\"md\"\r\n {...props}\r\n >\r\n <CaretLeft className=\"size-4\" />\r\n <span>Previous</span>\r\n </PaginationLink>\r\n )\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Component: PaginationNext\r\n * -------------------------------------------------------------------------- */\r\n\r\nfunction PaginationNext({\r\n ...props\r\n}: ComponentProps<'a'> &\r\n Pick<VariantProps<typeof buttonVariants>, 'size'> & {\r\n isActive?: boolean\r\n }): JSX.Element {\r\n return (\r\n <PaginationLink\r\n aria-label=\"Go to next page\"\r\n data-slot=\"pagination-next\"\r\n size=\"md\"\r\n {...props}\r\n >\r\n <span>Next</span>\r\n <CaretRight />\r\n </PaginationLink>\r\n )\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Component: PaginationEllipsis\r\n * -------------------------------------------------------------------------- */\r\n\r\nfunction PaginationEllipsis({\r\n className,\r\n ...props\r\n}: ComponentProps<'span'>): JSX.Element {\r\n return (\r\n <span\r\n aria-hidden\r\n className={cn('flex size-10 items-center justify-center', className)}\r\n data-slot=\"pagination-ellipsis\"\r\n {...props}\r\n >\r\n <DotsThree className=\"size-4\" />\r\n <span className=\"sr-only\">More pages</span>\r\n </span>\r\n )\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Exports\r\n * -------------------------------------------------------------------------- */\r\n\r\nexport {\r\n Pagination,\r\n PaginationContent,\r\n PaginationLink,\r\n PaginationItem,\r\n PaginationPrevious,\r\n PaginationNext,\r\n PaginationEllipsis,\r\n}\r\n"],"names":["Pagination","className","props","cn","PaginationContent","PaginationItem","PaginationLink","children","isActive","size","undefined","buttonVariants","PaginationPrevious","CaretLeft","PaginationNext","CaretRight","PaginationEllipsis","DotsThree"],"mappings":"qJAcA,SAASA,EAAW,CAClBC,UAAAA,CAAS,CACT,GAAGC,EACmB,EACtB,MACE,UAAC,OACC,aAAW,aACX,UAAWC,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAG,qCAAsCF,GACpD,YAAU,aACV,KAAK,aACJ,GAAGC,CAAK,A,EAGf,CAMA,SAASE,EAAkB,CACzBH,UAAAA,CAAS,CACT,GAAGC,EACkB,EACrB,MACE,UAAC,MACC,UAAWC,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAG,mCAAoCF,GAClD,YAAU,qBACT,GAAGC,CAAK,A,EAGf,CAMA,SAASG,EAAeH,CAA2B,EACjD,MAAO,UAAC,MAAG,YAAU,kBAAmB,GAAGA,CAAK,A,EAClD,CAMA,SAASI,EAAe,CACtBC,SAAAA,CAAQ,CACRN,UAAAA,CAAS,CACTO,SAAAA,CAAQ,CACRC,KAAAA,EAAO,MAAM,CACb,GAAGP,EAIF,EACD,MACE,UAAC,KACC,eAAcM,EAAW,OAASE,OAClC,UAAWC,AAAAA,GAAAA,EAAAA,cAAAA,AAAAA,EAAe,CACxBV,UAAAA,EACAQ,KAAAA,EACA,QAASD,EAAW,UAAY,OAClC,GACA,YAAU,kBACT,GAAGN,CAAK,C,SAERK,C,EAGP,CAMA,SAASK,EAAmB,CAC1B,GAAGV,EAIF,EACD,MACE,WAACI,EAAAA,CACC,aAAW,sBACX,YAAU,sBACV,KAAK,KACJ,GAAGJ,CAAK,C,UAET,UAACW,EAAAA,SAASA,CAAAA,CAAC,UAAU,Q,GACrB,UAAC,Q,SAAK,U,KAGZ,CAMA,SAASC,EAAe,CACtB,GAAGZ,EAIF,EACD,MACE,WAACI,EAAAA,CACC,aAAW,kBACX,YAAU,kBACV,KAAK,KACJ,GAAGJ,CAAK,C,UAET,UAAC,Q,SAAK,M,GACN,UAACa,EAAAA,UAAUA,CAAAA,CAAAA,G,EAGjB,CAMA,SAASC,EAAmB,CAC1Bf,UAAAA,CAAS,CACT,GAAGC,EACoB,EACvB,MACE,WAAC,QACC,cAAW,GACX,UAAWC,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAG,2CAA4CF,GAC1D,YAAU,sBACT,GAAGC,CAAK,C,UAET,UAACe,EAAAA,SAASA,CAAAA,CAAC,UAAU,Q,GACrB,UAAC,QAAK,UAAU,U,SAAU,Y,KAGhC,Q"}
@@ -1 +1 @@
1
- {"version":3,"file":"components\\sidebar\\intl\\messages.js","sources":["webpack://@gbmtech/aurora-ui/./src/components/sidebar/intl/messages.ts"],"sourcesContent":["export default {\n 'pt-br': {\n home: 'Página Inicial',\n modules: 'Módulos',\n language: 'Idioma',\n 'sign-out': 'Sair',\n },\n 'en-us': {\n home: 'Home',\n modules: 'Modules',\n language: 'Language',\n 'sign-out': 'Sign Out',\n },\n es: {\n home: 'Página de inicio',\n modules: 'Módulos',\n language: 'Idioma',\n 'sign-out': 'Desconectar',\n },\n}\n"],"names":[],"mappings":"AAAA,MAAe,CACb,QAAS,CACP,KAAM,oBACN,QAAS,aACT,SAAU,SACV,WAAY,MACd,EACA,QAAS,CACP,KAAM,OACN,QAAS,UACT,SAAU,WACV,WAAY,UACd,EACA,GAAI,CACF,KAAM,sBACN,QAAS,aACT,SAAU,SACV,WAAY,aACd,CACF,S"}
1
+ {"version":3,"file":"components\\sidebar\\intl\\messages.js","sources":["webpack://@gbmtech/aurora-ui/./src/components/sidebar/intl/messages.ts"],"sourcesContent":["export default {\n 'pt-br': {\n home: 'Página Inicial',\n modules: 'Módulos',\n language: 'Idioma',\n 'sign-out': 'Sair',\n },\n 'en-us': {\n home: 'Home',\n modules: 'Modules',\n language: 'Language',\n 'sign-out': 'Sign Out',\n },\n es: {\n home: 'Página de inicio',\n modules: 'Módulos',\n language: 'Idioma',\n 'sign-out': 'Desconectar',\n },\n}\n"],"names":["e"],"mappings":"AAAA,IAAAA,EAAe,CACb,QAAS,CACP,KAAM,oBACN,QAAS,aACT,SAAU,SACV,WAAY,MACd,EACA,QAAS,CACP,KAAM,OACN,QAAS,UACT,SAAU,WACV,WAAY,UACd,EACA,GAAI,CACF,KAAM,sBACN,QAAS,aACT,SAAU,SACV,WAAY,aACd,CACF,S"}
@@ -1 +1 @@
1
- {"version":3,"file":"components\\sidebar\\nav-user.js","sources":["webpack://@gbmtech/aurora-ui/./src/components/sidebar/nav-user.tsx"],"sourcesContent":["\n\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n} from '@/components/dropdown-menu'\nimport { ChevronsUpDown, Languages, LogOut, UserRound } from 'lucide-react'\n\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/avatar'\nimport type { User } from '@/types/user'\nimport messages from './intl/messages'\nimport {\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n useSidebar,\n} from './sidebar'\n\ninterface NavUser {\n user: User\n}\n\nexport function NavUser({ user }: NavUser) {\n const { isMobile, lang } = useSidebar()\n\n return (\n <SidebarMenu>\n <SidebarMenuItem>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <SidebarMenuButton\n size=\"lg\"\n className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n >\n <Avatar className=\"size-8 rounded-lg group-data-[collapsible=icon]:size-10\">\n <AvatarImage src={undefined} alt={user.name} />\n <AvatarFallback className=\"rounded-lg\">\n <UserRound className=\"size-4\" />\n </AvatarFallback>\n </Avatar>\n <div className=\"grid flex-1 text-left text-sm leading-tight\">\n <span className=\"truncate font-medium\">{user.name}</span>\n <span className=\"truncate text-gbm-gray text-xs\">\n {user.email}\n </span>\n </div>\n <ChevronsUpDown className=\"ml-auto size-4\" />\n </SidebarMenuButton>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n className=\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\"\n side={isMobile ? 'bottom' : 'right'}\n align=\"end\"\n sideOffset={4}\n >\n <DropdownMenuLabel className=\"p-0 font-normal\">\n <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n <Avatar className=\"h-8 w-8 rounded-lg\">\n <AvatarImage src={undefined} alt={user.name} />\n <AvatarFallback className=\"rounded-lg\">\n <UserRound className=\"size-4\" />\n </AvatarFallback>\n </Avatar>\n <div className=\"grid flex-1 text-left text-sm leading-tight\">\n <span className=\"truncate font-semibold\">{user.name}</span>\n <span className=\"truncate text-xs\">{user.email}</span>\n </div>\n </div>\n </DropdownMenuLabel>\n <DropdownMenuGroup>\n <DropdownMenuSub>\n <DropdownMenuSubTrigger>\n <Languages className=\"mr-2 size-4\" />\n {messages[lang].language}\n </DropdownMenuSubTrigger>\n <DropdownMenuSubContent>\n <DropdownMenuItem className=\"gap-2\">\n <img src=\"/brazil.svg\" alt=\"\" />\n PT-BR\n </DropdownMenuItem>\n <DropdownMenuItem className=\"gap-2\">\n <img src=\"/united-states.svg\" alt=\"\" />\n EN-US\n </DropdownMenuItem>\n <DropdownMenuItem className=\"gap-2\">\n <img src=\"/spain.svg\" alt=\"\" />\n ES\n </DropdownMenuItem>\n </DropdownMenuSubContent>\n </DropdownMenuSub>\n </DropdownMenuGroup>\n <DropdownMenuSeparator />\n <DropdownMenuItem asChild>\n <a href=\"/api/auth/sign-out\">\n <LogOut className=\"mr-2 size-4\" />\n {messages[lang]['sign-out']}\n </a>\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </SidebarMenuItem>\n </SidebarMenu>\n )\n}\n"],"names":["NavUser","user","isMobile","lang","useSidebar","SidebarMenu","SidebarMenuItem","DropdownMenu","DropdownMenuTrigger","SidebarMenuButton","Avatar","AvatarImage","undefined","AvatarFallback","UserRound","ChevronsUpDown","DropdownMenuContent","DropdownMenuLabel","DropdownMenuGroup","DropdownMenuSub","DropdownMenuSubTrigger","Languages","messages","DropdownMenuSubContent","DropdownMenuItem","DropdownMenuSeparator","LogOut"],"mappings":";4MA8BO,SAASA,EAAQ,CAAEC,KAAAA,CAAI,CAAW,EACvC,GAAM,CAAEC,SAAAA,CAAQ,CAAEC,KAAAA,CAAI,CAAE,CAAGC,GAAAA,EAAAA,UAAAA,IAE3B,MACE,UAACC,EAAAA,WAAWA,CAAAA,C,SACV,UAACC,EAAAA,eAAeA,CAAAA,C,SACd,WAACC,EAAAA,YAAYA,CAAAA,C,UACX,UAACC,EAAAA,mBAAmBA,CAAAA,CAAC,QAAO,G,SAC1B,WAACC,EAAAA,iBAAiBA,CAAAA,CAChB,KAAK,KACL,UAAU,uF,UAEV,WAACC,EAAAA,MAAMA,CAAAA,CAAC,UAAU,0D,UAChB,UAACC,EAAAA,WAAWA,CAAAA,CAAC,IAAKC,KAAAA,EAAW,IAAKX,EAAK,IAAI,GAC3C,UAACY,EAAAA,cAAcA,CAAAA,CAAC,UAAU,a,SACxB,UAACC,EAAAA,SAASA,CAAAA,CAAC,UAAU,Q,QAGzB,WAAC,OAAI,UAAU,8C,UACb,UAAC,QAAK,UAAU,uB,SAAwBb,EAAK,IAAI,GACjD,UAAC,QAAK,UAAU,iC,SACbA,EAAK,KAAK,MAGf,UAACc,EAAAA,cAAcA,CAAAA,CAAC,UAAU,gB,QAG9B,WAACC,EAAAA,mBAAmBA,CAAAA,CAClB,UAAU,8DACV,KAAMd,EAAW,SAAW,QAC5B,MAAM,MACN,WAAY,E,UAEZ,UAACe,EAAAA,iBAAiBA,CAAAA,CAAC,UAAU,kB,SAC3B,WAAC,OAAI,UAAU,wD,UACb,WAACP,EAAAA,MAAMA,CAAAA,CAAC,UAAU,qB,UAChB,UAACC,EAAAA,WAAWA,CAAAA,CAAC,IAAKC,KAAAA,EAAW,IAAKX,EAAK,IAAI,GAC3C,UAACY,EAAAA,cAAcA,CAAAA,CAAC,UAAU,a,SACxB,UAACC,EAAAA,SAASA,CAAAA,CAAC,UAAU,Q,QAGzB,WAAC,OAAI,UAAU,8C,UACb,UAAC,QAAK,UAAU,yB,SAA0Bb,EAAK,IAAI,GACnD,UAAC,QAAK,UAAU,mB,SAAoBA,EAAK,KAAK,WAIpD,UAACiB,EAAAA,iBAAiBA,CAAAA,C,SAChB,WAACC,EAAAA,eAAeA,CAAAA,C,UACd,WAACC,EAAAA,sBAAsBA,CAAAA,C,UACrB,UAACC,EAAAA,SAASA,CAAAA,CAAC,UAAU,a,GACpBC,EAAAA,OAAQ,CAACnB,EAAK,CAAC,QAAQ,C,GAE1B,WAACoB,EAAAA,sBAAsBA,CAAAA,C,UACrB,WAACC,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,Q,UAC1B,UAAC,OAAI,IAAI,cAAc,IAAI,E,GAAK,Q,GAGlC,WAACA,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,Q,UAC1B,UAAC,OAAI,IAAI,qBAAqB,IAAI,E,GAAK,Q,GAGzC,WAACA,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,Q,UAC1B,UAAC,OAAI,IAAI,aAAa,IAAI,E,GAAK,K,WAMvC,UAACC,EAAAA,qBAAqBA,CAAAA,CAAAA,GACtB,UAACD,EAAAA,gBAAgBA,CAAAA,CAAC,QAAO,G,SACvB,WAAC,KAAE,KAAK,qB,UACN,UAACE,EAAAA,MAAMA,CAAAA,CAAC,UAAU,a,GACjBJ,EAAAA,OAAQ,CAACnB,EAAK,CAAC,WAAW,C,cAQ3C,Q"}
1
+ {"version":3,"file":"components\\sidebar\\nav-user.js","sources":["webpack://@gbmtech/aurora-ui/./src/components/sidebar/nav-user.tsx"],"sourcesContent":["\n\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n} from '@/components/dropdown-menu'\nimport { ChevronsUpDown, Languages, LogOut, UserRound } from 'lucide-react'\n\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/avatar'\nimport type { User } from '@/types/user'\nimport messages from './intl/messages'\nimport {\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n useSidebar,\n} from './sidebar'\n\ninterface NavUser {\n user: User\n}\n\nexport function NavUser({ user }: NavUser) {\n const { isMobile, lang } = useSidebar()\n\n return (\n <SidebarMenu>\n <SidebarMenuItem>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <SidebarMenuButton\n size=\"lg\"\n className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n >\n <Avatar className=\"size-8 rounded-lg group-data-[collapsible=icon]:size-10\">\n <AvatarImage src={undefined} alt={user.name} />\n <AvatarFallback className=\"rounded-lg\">\n <UserRound className=\"size-4\" />\n </AvatarFallback>\n </Avatar>\n <div className=\"grid flex-1 text-left text-sm leading-tight\">\n <span className=\"truncate font-medium\">{user.name}</span>\n <span className=\"truncate text-gbm-gray text-xs\">\n {user.email}\n </span>\n </div>\n <ChevronsUpDown className=\"ml-auto size-4\" />\n </SidebarMenuButton>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n className=\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\"\n side={isMobile ? 'bottom' : 'right'}\n align=\"end\"\n sideOffset={4}\n >\n <DropdownMenuLabel className=\"p-0 font-normal\">\n <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n <Avatar className=\"h-8 w-8 rounded-lg\">\n <AvatarImage src={undefined} alt={user.name} />\n <AvatarFallback className=\"rounded-lg\">\n <UserRound className=\"size-4\" />\n </AvatarFallback>\n </Avatar>\n <div className=\"grid flex-1 text-left text-sm leading-tight\">\n <span className=\"truncate font-semibold\">{user.name}</span>\n <span className=\"truncate text-xs\">{user.email}</span>\n </div>\n </div>\n </DropdownMenuLabel>\n <DropdownMenuGroup>\n <DropdownMenuSub>\n <DropdownMenuSubTrigger>\n <Languages className=\"mr-2 size-4\" />\n {messages[lang].language}\n </DropdownMenuSubTrigger>\n <DropdownMenuSubContent>\n <DropdownMenuItem className=\"gap-2\">\n <img src=\"/brazil.svg\" alt=\"\" />\n PT-BR\n </DropdownMenuItem>\n <DropdownMenuItem className=\"gap-2\">\n <img src=\"/united-states.svg\" alt=\"\" />\n EN-US\n </DropdownMenuItem>\n <DropdownMenuItem className=\"gap-2\">\n <img src=\"/spain.svg\" alt=\"\" />\n ES\n </DropdownMenuItem>\n </DropdownMenuSubContent>\n </DropdownMenuSub>\n </DropdownMenuGroup>\n <DropdownMenuSeparator />\n <DropdownMenuItem asChild>\n <a href=\"/api/auth/sign-out\">\n <LogOut className=\"mr-2 size-4\" />\n {messages[lang]['sign-out']}\n </a>\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </SidebarMenuItem>\n </SidebarMenu>\n )\n}\n"],"names":["NavUser","user","isMobile","lang","useSidebar","SidebarMenu","SidebarMenuItem","DropdownMenu","DropdownMenuTrigger","SidebarMenuButton","Avatar","AvatarImage","undefined","AvatarFallback","UserRound","ChevronsUpDown","DropdownMenuContent","DropdownMenuLabel","DropdownMenuGroup","DropdownMenuSub","DropdownMenuSubTrigger","Languages","messages","DropdownMenuSubContent","DropdownMenuItem","DropdownMenuSeparator","LogOut"],"mappings":";4MA8BO,SAASA,EAAQ,CAAEC,KAAAA,CAAI,CAAW,EACvC,GAAM,CAAEC,SAAAA,CAAQ,CAAEC,KAAAA,CAAI,CAAE,CAAGC,GAAAA,EAAAA,UAAAA,IAE3B,MACE,UAACC,EAAAA,WAAWA,CAAAA,C,SACV,UAACC,EAAAA,eAAeA,CAAAA,C,SACd,WAACC,EAAAA,YAAYA,CAAAA,C,UACX,UAACC,EAAAA,mBAAmBA,CAAAA,CAAC,QAAO,G,SAC1B,WAACC,EAAAA,iBAAiBA,CAAAA,CAChB,KAAK,KACL,UAAU,uF,UAEV,WAACC,EAAAA,MAAMA,CAAAA,CAAC,UAAU,0D,UAChB,UAACC,EAAAA,WAAWA,CAAAA,CAAC,IAAKC,OAAW,IAAKX,EAAK,IAAI,GAC3C,UAACY,EAAAA,cAAcA,CAAAA,CAAC,UAAU,a,SACxB,UAACC,EAAAA,SAASA,CAAAA,CAAC,UAAU,Q,QAGzB,WAAC,OAAI,UAAU,8C,UACb,UAAC,QAAK,UAAU,uB,SAAwBb,EAAK,IAAI,GACjD,UAAC,QAAK,UAAU,iC,SACbA,EAAK,KAAK,MAGf,UAACc,EAAAA,cAAcA,CAAAA,CAAC,UAAU,gB,QAG9B,WAACC,EAAAA,mBAAmBA,CAAAA,CAClB,UAAU,8DACV,KAAMd,EAAW,SAAW,QAC5B,MAAM,MACN,WAAY,E,UAEZ,UAACe,EAAAA,iBAAiBA,CAAAA,CAAC,UAAU,kB,SAC3B,WAAC,OAAI,UAAU,wD,UACb,WAACP,EAAAA,MAAMA,CAAAA,CAAC,UAAU,qB,UAChB,UAACC,EAAAA,WAAWA,CAAAA,CAAC,IAAKC,OAAW,IAAKX,EAAK,IAAI,GAC3C,UAACY,EAAAA,cAAcA,CAAAA,CAAC,UAAU,a,SACxB,UAACC,EAAAA,SAASA,CAAAA,CAAC,UAAU,Q,QAGzB,WAAC,OAAI,UAAU,8C,UACb,UAAC,QAAK,UAAU,yB,SAA0Bb,EAAK,IAAI,GACnD,UAAC,QAAK,UAAU,mB,SAAoBA,EAAK,KAAK,WAIpD,UAACiB,EAAAA,iBAAiBA,CAAAA,C,SAChB,WAACC,EAAAA,eAAeA,CAAAA,C,UACd,WAACC,EAAAA,sBAAsBA,CAAAA,C,UACrB,UAACC,EAAAA,SAASA,CAAAA,CAAC,UAAU,a,GACpBC,EAAAA,OAAQ,CAACnB,EAAK,CAAC,QAAQ,C,GAE1B,WAACoB,EAAAA,sBAAsBA,CAAAA,C,UACrB,WAACC,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,Q,UAC1B,UAAC,OAAI,IAAI,cAAc,IAAI,E,GAAK,Q,GAGlC,WAACA,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,Q,UAC1B,UAAC,OAAI,IAAI,qBAAqB,IAAI,E,GAAK,Q,GAGzC,WAACA,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,Q,UAC1B,UAAC,OAAI,IAAI,aAAa,IAAI,E,GAAK,K,WAMvC,UAACC,EAAAA,qBAAqBA,CAAAA,CAAAA,GACtB,UAACD,EAAAA,gBAAgBA,CAAAA,CAAC,QAAO,G,SACvB,WAAC,KAAE,KAAK,qB,UACN,UAACE,EAAAA,MAAMA,CAAAA,CAAC,UAAU,a,GACjBJ,EAAAA,OAAQ,CAACnB,EAAK,CAAC,WAAW,C,cAQ3C,Q"}
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../../../src/components/sidebar/sidebar.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../../../src/components/sidebar/sidebar.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"components\\sidebar\\sidebar.js","sources":["webpack://@gbmtech/aurora-ui/./src/components/sidebar/sidebar.tsx"],"sourcesContent":["\n\nimport { Slot } from '@radix-ui/react-slot'\nimport * as React from 'react'\n\nimport { useIsMobile } from '@/hooks/use-mobile'\nimport { VariantProps, cn, tv } from '@/lib'\nimport { PanelLeftIcon } from 'lucide-react'\nimport { Button } from '../button'\nimport { Separator } from '../separator'\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from '../sheet'\nimport { Skeleton } from '../skeleton'\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from '../tooltip'\n\nconst SIDEBAR_COOKIE_NAME = 'gbm_sidebar_open'\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = '16rem'\nconst SIDEBAR_WIDTH_MOBILE = '18rem'\nconst SIDEBAR_WIDTH_ICON = '4.5rem'\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'b'\n\ntype SidebarContextProps = {\n state: 'expanded' | 'collapsed'\n open: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n isMobile: boolean\n toggleSidebar: () => void\n lang: 'pt-br' | 'en-us' | 'es'\n}\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext)\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.')\n }\n\n return context\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n lang = 'pt-br',\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n lang?: 'pt-br' | 'en-us' | 'es'\n}) {\n const isMobile = useIsMobile()\n const [openMobile, setOpenMobile] = React.useState(false)\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen)\n const open = openProp ?? _open\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === 'function' ? value(open) : value\n if (setOpenProp) {\n setOpenProp(openState)\n } else {\n _setOpen(openState)\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n },\n [setOpenProp, open]\n )\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile(open => !open) : setOpen(open => !open)\n }, [isMobile, setOpen, setOpenMobile])\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener('keydown', handleKeyDown)\n return () => window.removeEventListener('keydown', handleKeyDown)\n }, [toggleSidebar])\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? 'expanded' : 'collapsed'\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n lang,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n )\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH,\n '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n 'group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar',\n className\n )}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n )\n}\n\nfunction Sidebar({\n side = 'left',\n variant = 'sidebar',\n collapsible = 'icon',\n className,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n side?: 'left' | 'right'\n variant?: 'sidebar' | 'floating' | 'inset'\n collapsible?: 'offcanvas' | 'icon' | 'none'\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n if (collapsible === 'none') {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n 'flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground',\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n )\n }\n\n return (\n <div\n className=\"group peer hidden text-sidebar-foreground md:block\"\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n 'relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear',\n 'group-data-[collapsible=offcanvas]:w-0',\n 'group-data-[side=right]:rotate-180',\n variant === 'floating' || variant === 'inset'\n ? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)'\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n 'fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex',\n side === 'left'\n ? 'left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]'\n : 'right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]',\n // Adjust the padding for floating and inset variants.\n variant === 'floating' || variant === 'inset'\n ? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l',\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className=\"flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow-sm\"\n >\n {children}\n </div>\n </div>\n </div>\n )\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn('size-7', className)}\n onClick={event => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<'main'>) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n 'relative flex w-full flex-1 flex-col bg-background',\n 'md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2 md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn(\n 'flex flex-col gap-2 p-5 group-data-[collapsible=icon]:p-4',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn(\n 'flex flex-col gap-2 p-5 group-data-[collapsible=icon]:p-4',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn('mx-2 w-auto bg-sidebar-border', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n 'flex min-h-0 flex-1 flex-col gap-2 overflow-y-auto group-data-[collapsible=icon]:overflow-hidden',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn(\n 'relative flex w-full min-w-0 flex-col px-5 group-data-[collapsible=icon]:p-4',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'div'> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : 'div'\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n 'flex h-8 shrink-0 items-center rounded-md px-2 font-medium text-sidebar-foreground/70 text-xs outline-hidden ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',\n 'group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn('flex w-full min-w-0 flex-col gap-1', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn('group/menu-item relative', className)}\n {...props}\n />\n )\n}\n\nconst sidebarMenuButtonVariants = tv({\n base: 'peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-10! group-data-[collapsible=icon]:p-2.5! group-data-[collapsible=icon]:gap-3 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 group-data-[collapsible=icon]:[&>svg]:size-5',\n variants: {\n variant: {\n default: 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n outline:\n 'bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]',\n },\n size: {\n default: 'text-sm',\n sm: 'h-7 text-xs',\n lg: 'h-12 text-sm group-data-[collapsible=icon]:p-0!',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n})\n\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = 'default',\n size = 'default',\n tooltip,\n className,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean\n isActive?: boolean\n tooltip?: string | React.ComponentProps<typeof TooltipContent>\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? Slot : 'button'\n const { isMobile, state } = useSidebar()\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n )\n\n if (!tooltip) {\n return button\n }\n\n if (typeof tooltip === 'string') {\n tooltip = {\n children: tooltip,\n }\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== 'collapsed' || isMobile}\n {...tooltip}\n />\n </Tooltip>\n )\n}\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean\n showOnHover?: boolean\n}) {\n const Comp = asChild ? Slot : 'button'\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n 'absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-hidden ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:-inset-2 after:absolute md:after:hidden',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n showOnHover &&\n 'group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<'div'> & {\n showIcon?: boolean\n}) {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`\n }, [])\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn('flex h-8 items-center gap-2 rounded-md px-2', className)}\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n '--skeleton-width': width,\n } as React.CSSProperties\n }\n />\n </div>\n )\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n 'ml-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-sidebar-border border-l py-0.5 pl-2.5',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn('group/menu-sub-item relative', className)}\n {...props}\n />\n )\n}\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n}\n"],"names":["SidebarContext","React","useSidebar","context","Error","SidebarProvider","defaultOpen","openProp","setOpenProp","className","style","lang","children","props","isMobile","useIsMobile","openMobile","setOpenMobile","_open","_setOpen","open","setOpen","value","openState","document","toggleSidebar","handleKeyDown","event","window","state","contextValue","TooltipProvider","cn","Sidebar","side","variant","collapsible","Sheet","SheetContent","SheetHeader","SheetTitle","SheetDescription","SidebarTrigger","onClick","Button","PanelLeftIcon","SidebarInset","SidebarHeader","SidebarFooter","SidebarSeparator","Separator","SidebarContent","SidebarGroup","SidebarGroupLabel","asChild","Comp","Slot","SidebarMenu","SidebarMenuItem","sidebarMenuButtonVariants","tv","SidebarMenuButton","isActive","size","tooltip","button","Tooltip","TooltipTrigger","TooltipContent","SidebarMenuAction","showOnHover","SidebarMenuSkeleton","showIcon","width","Math","Skeleton","SidebarMenuSub","SidebarMenuSubItem"],"mappings":"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"}
1
+ {"version":3,"file":"components\\sidebar\\sidebar.js","sources":["webpack://@gbmtech/aurora-ui/./src/components/sidebar/sidebar.tsx"],"sourcesContent":["\n\nimport { Slot } from '@radix-ui/react-slot'\nimport * as React from 'react'\n\nimport { useIsMobile } from '@/hooks/use-mobile'\nimport { VariantProps, cn, tv } from '@/lib'\nimport { PanelLeftIcon } from 'lucide-react'\nimport { Button } from '../button'\nimport { Separator } from '../separator'\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from '../sheet'\nimport { Skeleton } from '../skeleton'\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from '../tooltip'\n\nconst SIDEBAR_COOKIE_NAME = 'gbm_sidebar_open'\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = '16rem'\nconst SIDEBAR_WIDTH_MOBILE = '18rem'\nconst SIDEBAR_WIDTH_ICON = '4.5rem'\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'b'\n\ntype SidebarContextProps = {\n state: 'expanded' | 'collapsed'\n open: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n isMobile: boolean\n toggleSidebar: () => void\n lang: 'pt-br' | 'en-us' | 'es'\n}\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext)\n\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.')\n }\n\n return context\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n lang = 'pt-br',\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n lang?: 'pt-br' | 'en-us' | 'es'\n}) {\n const isMobile = useIsMobile()\n const [openMobile, setOpenMobile] = React.useState(false)\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen)\n const open = openProp ?? _open\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === 'function' ? value(open) : value\n if (setOpenProp) {\n setOpenProp(openState)\n } else {\n _setOpen(openState)\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n },\n [setOpenProp, open]\n )\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile(open => !open) : setOpen(open => !open)\n }, [isMobile, setOpen, setOpenMobile])\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener('keydown', handleKeyDown)\n return () => window.removeEventListener('keydown', handleKeyDown)\n }, [toggleSidebar])\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? 'expanded' : 'collapsed'\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n lang,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n )\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH,\n '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n 'group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar',\n className\n )}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n )\n}\n\nfunction Sidebar({\n side = 'left',\n variant = 'sidebar',\n collapsible = 'icon',\n className,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n side?: 'left' | 'right'\n variant?: 'sidebar' | 'floating' | 'inset'\n collapsible?: 'offcanvas' | 'icon' | 'none'\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n if (collapsible === 'none') {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n 'flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground',\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n )\n }\n\n return (\n <div\n className=\"group peer hidden text-sidebar-foreground md:block\"\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n 'relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear',\n 'group-data-[collapsible=offcanvas]:w-0',\n 'group-data-[side=right]:rotate-180',\n variant === 'floating' || variant === 'inset'\n ? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)'\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n 'fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex',\n side === 'left'\n ? 'left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]'\n : 'right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]',\n // Adjust the padding for floating and inset variants.\n variant === 'floating' || variant === 'inset'\n ? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l',\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className=\"flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow-sm\"\n >\n {children}\n </div>\n </div>\n </div>\n )\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn('size-7', className)}\n onClick={event => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<'main'>) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n 'relative flex w-full flex-1 flex-col bg-background',\n 'md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2 md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn(\n 'flex flex-col gap-2 p-5 group-data-[collapsible=icon]:p-4',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn(\n 'flex flex-col gap-2 p-5 group-data-[collapsible=icon]:p-4',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn('mx-2 w-auto bg-sidebar-border', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n 'flex min-h-0 flex-1 flex-col gap-2 overflow-y-auto group-data-[collapsible=icon]:overflow-hidden',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn(\n 'relative flex w-full min-w-0 flex-col px-5 group-data-[collapsible=icon]:p-4',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'div'> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : 'div'\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n 'flex h-8 shrink-0 items-center rounded-md px-2 font-medium text-sidebar-foreground/70 text-xs outline-hidden ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',\n 'group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn('flex w-full min-w-0 flex-col gap-1', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn('group/menu-item relative', className)}\n {...props}\n />\n )\n}\n\nconst sidebarMenuButtonVariants = tv({\n base: 'peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-10! group-data-[collapsible=icon]:p-2.5! group-data-[collapsible=icon]:gap-3 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 group-data-[collapsible=icon]:[&>svg]:size-5',\n variants: {\n variant: {\n default: 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n outline:\n 'bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]',\n },\n size: {\n default: 'text-sm',\n sm: 'h-7 text-xs',\n lg: 'h-12 text-sm group-data-[collapsible=icon]:p-0!',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n})\n\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = 'default',\n size = 'default',\n tooltip,\n className,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean\n isActive?: boolean\n tooltip?: string | React.ComponentProps<typeof TooltipContent>\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? Slot : 'button'\n const { isMobile, state } = useSidebar()\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n )\n\n if (!tooltip) {\n return button\n }\n\n if (typeof tooltip === 'string') {\n tooltip = {\n children: tooltip,\n }\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== 'collapsed' || isMobile}\n {...tooltip}\n />\n </Tooltip>\n )\n}\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean\n showOnHover?: boolean\n}) {\n const Comp = asChild ? Slot : 'button'\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n 'absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-hidden ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:-inset-2 after:absolute md:after:hidden',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n showOnHover &&\n 'group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<'div'> & {\n showIcon?: boolean\n}) {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`\n }, [])\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn('flex h-8 items-center gap-2 rounded-md px-2', className)}\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n '--skeleton-width': width,\n } as React.CSSProperties\n }\n />\n </div>\n )\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n 'ml-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-sidebar-border border-l py-0.5 pl-2.5',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn('group/menu-sub-item relative', className)}\n {...props}\n />\n )\n}\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n}\n"],"names":["SidebarContext","React","useSidebar","context","Error","SidebarProvider","defaultOpen","openProp","setOpenProp","className","style","lang","children","props","isMobile","useIsMobile","openMobile","setOpenMobile","_open","_setOpen","open","setOpen","value","openState","document","toggleSidebar","handleKeyDown","event","window","state","contextValue","TooltipProvider","cn","Sidebar","side","variant","collapsible","Sheet","SheetContent","SheetHeader","SheetTitle","SheetDescription","SidebarTrigger","onClick","Button","PanelLeftIcon","SidebarInset","SidebarHeader","SidebarFooter","SidebarSeparator","Separator","SidebarContent","SidebarGroup","SidebarGroupLabel","asChild","Comp","Slot","SidebarMenu","SidebarMenuItem","sidebarMenuButtonVariants","tv","SidebarMenuButton","isActive","size","tooltip","button","Tooltip","TooltipTrigger","TooltipContent","SidebarMenuAction","showOnHover","SidebarMenuSkeleton","showIcon","width","Math","Skeleton","SidebarMenuSub","SidebarMenuSubItem"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"components\\sortable.js","sources":["webpack://@gbmtech/aurora-ui/./src/components/sortable.tsx"],"sourcesContent":["\r\n\r\nimport {\r\n type Announcements,\r\n DndContext,\r\n type DndContextProps,\r\n type DragEndEvent,\r\n DragOverlay,\r\n type DraggableSyntheticListeners,\r\n type DropAnimation,\r\n KeyboardSensor,\r\n MouseSensor,\r\n type ScreenReaderInstructions,\r\n TouchSensor,\r\n type UniqueIdentifier,\r\n closestCenter,\r\n closestCorners,\r\n defaultDropAnimationSideEffects,\r\n useSensor,\r\n useSensors,\r\n} from '@dnd-kit/core'\r\nimport {\r\n restrictToHorizontalAxis,\r\n restrictToParentElement,\r\n restrictToVerticalAxis,\r\n} from '@dnd-kit/modifiers'\r\nimport {\r\n SortableContext,\r\n type SortableContextProps,\r\n arrayMove,\r\n horizontalListSortingStrategy,\r\n sortableKeyboardCoordinates,\r\n useSortable,\r\n verticalListSortingStrategy,\r\n} from '@dnd-kit/sortable'\r\nimport { CSS } from '@dnd-kit/utilities'\r\nimport { Slot } from '@radix-ui/react-slot'\r\nimport * as React from 'react'\r\n\r\nimport { composeEventHandlers, useComposedRefs } from '@/lib/composition'\r\nimport { cn } from '@/lib/utils'\r\nimport * as ReactDOM from 'react-dom'\r\n\r\nconst orientationConfig = {\r\n vertical: {\r\n modifiers: [restrictToVerticalAxis, restrictToParentElement],\r\n strategy: verticalListSortingStrategy,\r\n collisionDetection: closestCenter,\r\n },\r\n horizontal: {\r\n modifiers: [restrictToHorizontalAxis, restrictToParentElement],\r\n strategy: horizontalListSortingStrategy,\r\n collisionDetection: closestCenter,\r\n },\r\n mixed: {\r\n modifiers: [restrictToParentElement],\r\n strategy: undefined,\r\n collisionDetection: closestCorners,\r\n },\r\n}\r\n\r\nconst ROOT_NAME = 'Sortable'\r\nconst CONTENT_NAME = 'SortableContent'\r\nconst ITEM_NAME = 'SortableItem'\r\nconst ITEM_HANDLE_NAME = 'SortableItemHandle'\r\nconst OVERLAY_NAME = 'SortableOverlay'\r\n\r\nconst SORTABLE_ERRORS = {\r\n [ROOT_NAME]: `\\`${ROOT_NAME}\\` components must be within \\`${ROOT_NAME}\\``,\r\n [CONTENT_NAME]: `\\`${CONTENT_NAME}\\` must be within \\`${ROOT_NAME}\\``,\r\n [ITEM_NAME]: `\\`${ITEM_NAME}\\` must be within \\`${CONTENT_NAME}\\``,\r\n [ITEM_HANDLE_NAME]: `\\`${ITEM_HANDLE_NAME}\\` must be within \\`${ITEM_NAME}\\``,\r\n [OVERLAY_NAME]: `\\`${OVERLAY_NAME}\\` must be within \\`${ROOT_NAME}\\``,\r\n} as const\r\n\r\ninterface SortableRootContextValue<T> {\r\n id: string\r\n items: UniqueIdentifier[]\r\n modifiers: DndContextProps['modifiers']\r\n strategy: SortableContextProps['strategy']\r\n activeId: UniqueIdentifier | null\r\n setActiveId: (id: UniqueIdentifier | null) => void\r\n getItemValue: (item: T) => UniqueIdentifier\r\n flatCursor: boolean\r\n}\r\n\r\nconst SortableRootContext =\r\n React.createContext<SortableRootContextValue<unknown> | null>(null)\r\nSortableRootContext.displayName = ROOT_NAME\r\n\r\nfunction useSortableContext(name: keyof typeof SORTABLE_ERRORS) {\r\n const context = React.useContext(SortableRootContext)\r\n if (!context) {\r\n throw new Error(SORTABLE_ERRORS[name])\r\n }\r\n return context\r\n}\r\n\r\ninterface GetItemValue<T> {\r\n /**\r\n * Callback that returns a unique identifier for each sortable item. Required for array of objects.\r\n * @example getItemValue={(item) => item.id}\r\n */\r\n getItemValue: (item: T) => UniqueIdentifier\r\n}\r\n\r\ntype SortableProps<T> = DndContextProps & {\r\n value: T[]\r\n onValueChange?: (items: T[]) => void\r\n onMove?: (\r\n event: DragEndEvent & { activeIndex: number; overIndex: number }\r\n ) => void\r\n strategy?: SortableContextProps['strategy']\r\n orientation?: 'vertical' | 'horizontal' | 'mixed'\r\n flatCursor?: boolean\r\n} & (T extends object ? GetItemValue<T> : Partial<GetItemValue<T>>)\r\n\r\nfunction Sortable<T>(props: SortableProps<T>) {\r\n const {\r\n value,\r\n onValueChange,\r\n collisionDetection,\r\n modifiers,\r\n strategy,\r\n onMove,\r\n orientation = 'vertical',\r\n flatCursor = false,\r\n getItemValue: getItemValueProp,\r\n accessibility,\r\n ...sortableProps\r\n } = props\r\n const id = React.useId()\r\n const [activeId, setActiveId] = React.useState<UniqueIdentifier | null>(null)\r\n\r\n const sensors = useSensors(\r\n useSensor(MouseSensor),\r\n useSensor(TouchSensor),\r\n useSensor(KeyboardSensor, {\r\n coordinateGetter: sortableKeyboardCoordinates,\r\n })\r\n )\r\n const config = React.useMemo(\r\n () => orientationConfig[orientation],\r\n [orientation]\r\n )\r\n\r\n const getItemValue = React.useCallback(\r\n (item: T): UniqueIdentifier => {\r\n if (typeof item === 'object' && !getItemValueProp) {\r\n throw new Error('getItemValue is required when using array of objects.')\r\n }\r\n return getItemValueProp\r\n ? getItemValueProp(item)\r\n : (item as UniqueIdentifier)\r\n },\r\n [getItemValueProp]\r\n )\r\n\r\n const items = React.useMemo(() => {\r\n return value.map(item => getItemValue(item))\r\n }, [value, getItemValue])\r\n\r\n const onDragEnd = React.useCallback(\r\n (event: DragEndEvent) => {\r\n const { active, over } = event\r\n if (over && active.id !== over?.id) {\r\n const activeIndex = value.findIndex(\r\n item => getItemValue(item) === active.id\r\n )\r\n const overIndex = value.findIndex(\r\n item => getItemValue(item) === over.id\r\n )\r\n\r\n if (onMove) {\r\n onMove({ ...event, activeIndex, overIndex })\r\n } else {\r\n onValueChange?.(arrayMove(value, activeIndex, overIndex))\r\n }\r\n }\r\n setActiveId(null)\r\n },\r\n [value, onValueChange, onMove, getItemValue]\r\n )\r\n\r\n const announcements: Announcements = React.useMemo(\r\n () => ({\r\n onDragStart({ active }) {\r\n const activeValue = active.id.toString()\r\n return `Grabbed sortable item \"${activeValue}\". Current position is ${active.data.current?.sortable.index + 1} of ${value.length}. Use arrow keys to move, space to drop.`\r\n },\r\n onDragOver({ active, over }) {\r\n if (over) {\r\n const overIndex = over.data.current?.sortable.index ?? 0\r\n const activeIndex = active.data.current?.sortable.index ?? 0\r\n const moveDirection = overIndex > activeIndex ? 'down' : 'up'\r\n const activeValue = active.id.toString()\r\n return `Sortable item \"${activeValue}\" moved ${moveDirection} to position ${overIndex + 1} of ${value.length}.`\r\n }\r\n return 'Sortable item is no longer over a droppable area. Press escape to cancel.'\r\n },\r\n onDragEnd({ active, over }) {\r\n const activeValue = active.id.toString()\r\n if (over) {\r\n const overIndex = over.data.current?.sortable.index ?? 0\r\n return `Sortable item \"${activeValue}\" dropped at position ${overIndex + 1} of ${value.length}.`\r\n }\r\n return `Sortable item \"${activeValue}\" dropped. No changes were made.`\r\n },\r\n onDragCancel({ active }) {\r\n const activeIndex = active.data.current?.sortable.index ?? 0\r\n const activeValue = active.id.toString()\r\n return `Sorting cancelled. Sortable item \"${activeValue}\" returned to position ${activeIndex + 1} of ${value.length}.`\r\n },\r\n onDragMove({ active, over }) {\r\n if (over) {\r\n const overIndex = over.data.current?.sortable.index ?? 0\r\n const activeIndex = active.data.current?.sortable.index ?? 0\r\n const moveDirection = overIndex > activeIndex ? 'down' : 'up'\r\n const activeValue = active.id.toString()\r\n return `Sortable item \"${activeValue}\" is moving ${moveDirection} to position ${overIndex + 1} of ${value.length}.`\r\n }\r\n return 'Sortable item is no longer over a droppable area. Press escape to cancel.'\r\n },\r\n }),\r\n [value]\r\n )\r\n\r\n const screenReaderInstructions: ScreenReaderInstructions = React.useMemo(\r\n () => ({\r\n draggable: `\r\n To pick up a sortable item, press space or enter.\r\n While dragging, use the ${orientation === 'vertical' ? 'up and down' : orientation === 'horizontal' ? 'left and right' : 'arrow'} keys to move the item.\r\n Press space or enter again to drop the item in its new position, or press escape to cancel.\r\n `,\r\n }),\r\n [orientation]\r\n )\r\n\r\n const contextValue = React.useMemo(\r\n () => ({\r\n id,\r\n items,\r\n modifiers: modifiers ?? config.modifiers,\r\n strategy: strategy ?? config.strategy,\r\n activeId,\r\n setActiveId,\r\n getItemValue,\r\n flatCursor,\r\n }),\r\n [\r\n id,\r\n items,\r\n modifiers,\r\n strategy,\r\n config.modifiers,\r\n config.strategy,\r\n activeId,\r\n getItemValue,\r\n flatCursor,\r\n ]\r\n )\r\n\r\n return (\r\n <SortableRootContext.Provider\r\n value={contextValue as SortableRootContextValue<unknown>}\r\n >\r\n <DndContext\r\n collisionDetection={collisionDetection ?? config.collisionDetection}\r\n modifiers={modifiers ?? config.modifiers}\r\n sensors={sensors}\r\n {...sortableProps}\r\n id={id}\r\n onDragStart={composeEventHandlers(\r\n sortableProps.onDragStart,\r\n ({ active }) => setActiveId(active.id)\r\n )}\r\n onDragEnd={composeEventHandlers(sortableProps.onDragEnd, onDragEnd)}\r\n onDragCancel={composeEventHandlers(sortableProps.onDragCancel, () =>\r\n setActiveId(null)\r\n )}\r\n accessibility={{\r\n announcements,\r\n screenReaderInstructions,\r\n ...accessibility,\r\n }}\r\n />\r\n </SortableRootContext.Provider>\r\n )\r\n}\r\n\r\nconst SortableContentContext = React.createContext<boolean>(false)\r\nSortableContentContext.displayName = CONTENT_NAME\r\n\r\ninterface SortableContentProps extends React.ComponentPropsWithoutRef<'div'> {\r\n strategy?: SortableContextProps['strategy']\r\n children: React.ReactNode\r\n asChild?: boolean\r\n withoutSlot?: boolean\r\n}\r\n\r\nconst SortableContent = React.forwardRef<HTMLDivElement, SortableContentProps>(\r\n (props, forwardedRef) => {\r\n const {\r\n strategy: strategyProp,\r\n asChild,\r\n withoutSlot,\r\n children,\r\n ...contentProps\r\n } = props\r\n const context = useSortableContext(CONTENT_NAME)\r\n\r\n const ContentPrimitive = asChild ? Slot : 'div'\r\n\r\n return (\r\n <SortableContentContext.Provider value={true}>\r\n <SortableContext\r\n items={context.items}\r\n strategy={strategyProp ?? context.strategy}\r\n >\r\n {withoutSlot ? (\r\n children\r\n ) : (\r\n <ContentPrimitive {...contentProps} ref={forwardedRef}>\r\n {children}\r\n </ContentPrimitive>\r\n )}\r\n </SortableContext>\r\n </SortableContentContext.Provider>\r\n )\r\n }\r\n)\r\nSortableContent.displayName = CONTENT_NAME\r\n\r\ninterface SortableItemContextValue {\r\n id: string\r\n attributes: React.HTMLAttributes<HTMLElement>\r\n listeners: DraggableSyntheticListeners | undefined\r\n setActivatorNodeRef: (node: HTMLElement | null) => void\r\n isDragging?: boolean\r\n disabled?: boolean\r\n}\r\n\r\nconst SortableItemContext =\r\n React.createContext<SortableItemContextValue | null>(null)\r\nSortableItemContext.displayName = ITEM_NAME\r\n\r\ninterface SortableItemProps extends React.ComponentPropsWithoutRef<'div'> {\r\n value: UniqueIdentifier\r\n asHandle?: boolean\r\n asChild?: boolean\r\n disabled?: boolean\r\n}\r\n\r\nconst SortableItem = React.forwardRef<HTMLDivElement, SortableItemProps>(\r\n (props, forwardedRef) => {\r\n const {\r\n value,\r\n style,\r\n asHandle,\r\n asChild,\r\n disabled,\r\n className,\r\n ...itemProps\r\n } = props\r\n const inSortableContent = React.useContext(SortableContentContext)\r\n const inSortableOverlay = React.useContext(SortableOverlayContext)\r\n\r\n if (!inSortableContent && !inSortableOverlay) {\r\n throw new Error(SORTABLE_ERRORS[ITEM_NAME])\r\n }\r\n\r\n if (value === '') {\r\n throw new Error(`\\`${ITEM_NAME}\\` value cannot be an empty string`)\r\n }\r\n\r\n const context = useSortableContext(ITEM_NAME)\r\n const id = React.useId()\r\n const {\r\n attributes,\r\n listeners,\r\n setNodeRef,\r\n setActivatorNodeRef,\r\n transform,\r\n transition,\r\n isDragging,\r\n } = useSortable({ id: value, disabled })\r\n\r\n const composedRef = useComposedRefs(forwardedRef, node => {\r\n if (disabled) return\r\n setNodeRef(node)\r\n if (asHandle) setActivatorNodeRef(node)\r\n })\r\n\r\n const composedStyle = React.useMemo<React.CSSProperties>(() => {\r\n return {\r\n transform: CSS.Translate.toString(transform),\r\n transition,\r\n ...style,\r\n }\r\n }, [transform, transition, style])\r\n\r\n const itemContext = React.useMemo<SortableItemContextValue>(\r\n () => ({\r\n id,\r\n attributes,\r\n listeners,\r\n setActivatorNodeRef,\r\n isDragging,\r\n disabled,\r\n }),\r\n [id, attributes, listeners, setActivatorNodeRef, isDragging, disabled]\r\n )\r\n\r\n const ItemPrimitive = asChild ? Slot : 'div'\r\n\r\n return (\r\n <SortableItemContext.Provider value={itemContext}>\r\n <ItemPrimitive\r\n id={id}\r\n data-dragging={isDragging ? '' : undefined}\r\n {...itemProps}\r\n {...(asHandle ? attributes : {})}\r\n {...(asHandle ? listeners : {})}\r\n tabIndex={disabled ? undefined : 0}\r\n ref={composedRef}\r\n style={composedStyle}\r\n className={cn(\r\n 'focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1',\r\n {\r\n 'touch-none select-none': asHandle,\r\n 'cursor-default': context.flatCursor,\r\n 'data-dragging:cursor-grabbing': !context.flatCursor,\r\n 'cursor-grab': !isDragging && asHandle && !context.flatCursor,\r\n 'opacity-50': isDragging,\r\n 'pointer-events-none opacity-50': disabled,\r\n },\r\n className\r\n )}\r\n />\r\n </SortableItemContext.Provider>\r\n )\r\n }\r\n)\r\nSortableItem.displayName = ITEM_NAME\r\n\r\ninterface SortableItemHandleProps\r\n extends React.ComponentPropsWithoutRef<'button'> {\r\n asChild?: boolean\r\n}\r\n\r\nconst SortableItemHandle = React.forwardRef<\r\n HTMLButtonElement,\r\n SortableItemHandleProps\r\n>((props, forwardedRef) => {\r\n const { asChild, disabled, className, ...itemHandleProps } = props\r\n const itemContext = React.useContext(SortableItemContext)\r\n if (!itemContext) {\r\n throw new Error(SORTABLE_ERRORS[ITEM_HANDLE_NAME])\r\n }\r\n const context = useSortableContext(ITEM_HANDLE_NAME)\r\n\r\n const isDisabled = disabled ?? itemContext.disabled\r\n\r\n const composedRef = useComposedRefs(forwardedRef, node => {\r\n if (!isDisabled) return\r\n itemContext.setActivatorNodeRef(node)\r\n })\r\n\r\n const HandlePrimitive = asChild ? Slot : 'button'\r\n\r\n return (\r\n <HandlePrimitive\r\n type=\"button\"\r\n aria-controls={itemContext.id}\r\n data-dragging={itemContext.isDragging ? '' : undefined}\r\n {...itemHandleProps}\r\n {...itemContext.attributes}\r\n {...itemContext.listeners}\r\n ref={composedRef}\r\n className={cn(\r\n 'select-none disabled:pointer-events-none disabled:opacity-50',\r\n context.flatCursor\r\n ? 'cursor-default'\r\n : 'cursor-grab data-dragging:cursor-grabbing',\r\n className\r\n )}\r\n disabled={isDisabled}\r\n />\r\n )\r\n})\r\nSortableItemHandle.displayName = ITEM_HANDLE_NAME\r\n\r\nconst SortableOverlayContext = React.createContext(false)\r\nSortableOverlayContext.displayName = OVERLAY_NAME\r\n\r\nconst dropAnimation: DropAnimation = {\r\n sideEffects: defaultDropAnimationSideEffects({\r\n styles: {\r\n active: {\r\n opacity: '0.4',\r\n },\r\n },\r\n }),\r\n}\r\n\r\ninterface SortableOverlayProps\r\n extends Omit<React.ComponentPropsWithoutRef<typeof DragOverlay>, 'children'> {\r\n container?: Element | DocumentFragment | null\r\n children?:\r\n | ((params: { value: UniqueIdentifier }) => React.ReactNode)\r\n | React.ReactNode\r\n}\r\n\r\nfunction SortableOverlay(props: SortableOverlayProps) {\r\n const { container: containerProp, children, ...overlayProps } = props\r\n const context = useSortableContext(OVERLAY_NAME)\r\n\r\n const [mounted, setMounted] = React.useState(false)\r\n React.useLayoutEffect(() => setMounted(true), [])\r\n\r\n const container =\r\n containerProp ?? (mounted ? globalThis.document?.body : null)\r\n\r\n if (!container) return null\r\n\r\n return ReactDOM.createPortal(\r\n <DragOverlay\r\n dropAnimation={dropAnimation}\r\n modifiers={context.modifiers}\r\n className={cn(!context.flatCursor && 'cursor-grabbing')}\r\n {...overlayProps}\r\n >\r\n <SortableOverlayContext.Provider value={true}>\r\n {context.activeId\r\n ? typeof children === 'function'\r\n ? children({ value: context.activeId })\r\n : children\r\n : null}\r\n </SortableOverlayContext.Provider>\r\n </DragOverlay>,\r\n container\r\n )\r\n}\r\n\r\nconst Root = Sortable\r\nconst Content = SortableContent\r\nconst Item = SortableItem\r\nconst ItemHandle = SortableItemHandle\r\nconst Overlay = SortableOverlay\r\n\r\nexport {\r\n Root,\r\n Content,\r\n Item,\r\n ItemHandle,\r\n Overlay,\r\n //\r\n Sortable,\r\n SortableContent,\r\n SortableItem,\r\n SortableItemHandle,\r\n SortableOverlay,\r\n}\r\n"],"names":["orientationConfig","restrictToVerticalAxis","restrictToParentElement","verticalListSortingStrategy","closestCenter","restrictToHorizontalAxis","horizontalListSortingStrategy","undefined","closestCorners","ROOT_NAME","CONTENT_NAME","ITEM_NAME","ITEM_HANDLE_NAME","OVERLAY_NAME","SORTABLE_ERRORS","SortableRootContext","React","useSortableContext","name","context","Error","Sortable","props","value","onValueChange","collisionDetection","modifiers","strategy","onMove","orientation","flatCursor","getItemValueProp","accessibility","sortableProps","id","activeId","setActiveId","sensors","useSensors","useSensor","MouseSensor","TouchSensor","KeyboardSensor","sortableKeyboardCoordinates","config","getItemValue","item","items","onDragEnd","event","active","over","activeIndex","overIndex","arrayMove","announcements","activeValue","screenReaderInstructions","contextValue","DndContext","composeEventHandlers","SortableContentContext","SortableContent","forwardedRef","strategyProp","asChild","withoutSlot","children","contentProps","ContentPrimitive","Slot","SortableContext","SortableItemContext","SortableItem","style","asHandle","disabled","className","itemProps","inSortableContent","inSortableOverlay","SortableOverlayContext","attributes","listeners","setNodeRef","setActivatorNodeRef","transform","transition","isDragging","useSortable","composedRef","useComposedRefs","node","composedStyle","CSS","itemContext","ItemPrimitive","cn","SortableItemHandle","itemHandleProps","isDisabled","HandlePrimitive","dropAnimation","defaultDropAnimationSideEffects","SortableOverlay","containerProp","overlayProps","mounted","setMounted","container","globalThis","ReactDOM","DragOverlay","Root","Content","Item","ItemHandle","Overlay"],"mappings":"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"}
1
+ {"version":3,"file":"components\\sortable.js","sources":["webpack://@gbmtech/aurora-ui/./src/components/sortable.tsx"],"sourcesContent":["\r\n\r\nimport {\r\n type Announcements,\r\n DndContext,\r\n type DndContextProps,\r\n type DragEndEvent,\r\n DragOverlay,\r\n type DraggableSyntheticListeners,\r\n type DropAnimation,\r\n KeyboardSensor,\r\n MouseSensor,\r\n type ScreenReaderInstructions,\r\n TouchSensor,\r\n type UniqueIdentifier,\r\n closestCenter,\r\n closestCorners,\r\n defaultDropAnimationSideEffects,\r\n useSensor,\r\n useSensors,\r\n} from '@dnd-kit/core'\r\nimport {\r\n restrictToHorizontalAxis,\r\n restrictToParentElement,\r\n restrictToVerticalAxis,\r\n} from '@dnd-kit/modifiers'\r\nimport {\r\n SortableContext,\r\n type SortableContextProps,\r\n arrayMove,\r\n horizontalListSortingStrategy,\r\n sortableKeyboardCoordinates,\r\n useSortable,\r\n verticalListSortingStrategy,\r\n} from '@dnd-kit/sortable'\r\nimport { CSS } from '@dnd-kit/utilities'\r\nimport { Slot } from '@radix-ui/react-slot'\r\nimport * as React from 'react'\r\n\r\nimport { composeEventHandlers, useComposedRefs } from '@/lib/composition'\r\nimport { cn } from '@/lib/utils'\r\nimport * as ReactDOM from 'react-dom'\r\n\r\nconst orientationConfig = {\r\n vertical: {\r\n modifiers: [restrictToVerticalAxis, restrictToParentElement],\r\n strategy: verticalListSortingStrategy,\r\n collisionDetection: closestCenter,\r\n },\r\n horizontal: {\r\n modifiers: [restrictToHorizontalAxis, restrictToParentElement],\r\n strategy: horizontalListSortingStrategy,\r\n collisionDetection: closestCenter,\r\n },\r\n mixed: {\r\n modifiers: [restrictToParentElement],\r\n strategy: undefined,\r\n collisionDetection: closestCorners,\r\n },\r\n}\r\n\r\nconst ROOT_NAME = 'Sortable'\r\nconst CONTENT_NAME = 'SortableContent'\r\nconst ITEM_NAME = 'SortableItem'\r\nconst ITEM_HANDLE_NAME = 'SortableItemHandle'\r\nconst OVERLAY_NAME = 'SortableOverlay'\r\n\r\nconst SORTABLE_ERRORS = {\r\n [ROOT_NAME]: `\\`${ROOT_NAME}\\` components must be within \\`${ROOT_NAME}\\``,\r\n [CONTENT_NAME]: `\\`${CONTENT_NAME}\\` must be within \\`${ROOT_NAME}\\``,\r\n [ITEM_NAME]: `\\`${ITEM_NAME}\\` must be within \\`${CONTENT_NAME}\\``,\r\n [ITEM_HANDLE_NAME]: `\\`${ITEM_HANDLE_NAME}\\` must be within \\`${ITEM_NAME}\\``,\r\n [OVERLAY_NAME]: `\\`${OVERLAY_NAME}\\` must be within \\`${ROOT_NAME}\\``,\r\n} as const\r\n\r\ninterface SortableRootContextValue<T> {\r\n id: string\r\n items: UniqueIdentifier[]\r\n modifiers: DndContextProps['modifiers']\r\n strategy: SortableContextProps['strategy']\r\n activeId: UniqueIdentifier | null\r\n setActiveId: (id: UniqueIdentifier | null) => void\r\n getItemValue: (item: T) => UniqueIdentifier\r\n flatCursor: boolean\r\n}\r\n\r\nconst SortableRootContext =\r\n React.createContext<SortableRootContextValue<unknown> | null>(null)\r\nSortableRootContext.displayName = ROOT_NAME\r\n\r\nfunction useSortableContext(name: keyof typeof SORTABLE_ERRORS) {\r\n const context = React.useContext(SortableRootContext)\r\n if (!context) {\r\n throw new Error(SORTABLE_ERRORS[name])\r\n }\r\n return context\r\n}\r\n\r\ninterface GetItemValue<T> {\r\n /**\r\n * Callback that returns a unique identifier for each sortable item. Required for array of objects.\r\n * @example getItemValue={(item) => item.id}\r\n */\r\n getItemValue: (item: T) => UniqueIdentifier\r\n}\r\n\r\ntype SortableProps<T> = DndContextProps & {\r\n value: T[]\r\n onValueChange?: (items: T[]) => void\r\n onMove?: (\r\n event: DragEndEvent & { activeIndex: number; overIndex: number }\r\n ) => void\r\n strategy?: SortableContextProps['strategy']\r\n orientation?: 'vertical' | 'horizontal' | 'mixed'\r\n flatCursor?: boolean\r\n} & (T extends object ? GetItemValue<T> : Partial<GetItemValue<T>>)\r\n\r\nfunction Sortable<T>(props: SortableProps<T>) {\r\n const {\r\n value,\r\n onValueChange,\r\n collisionDetection,\r\n modifiers,\r\n strategy,\r\n onMove,\r\n orientation = 'vertical',\r\n flatCursor = false,\r\n getItemValue: getItemValueProp,\r\n accessibility,\r\n ...sortableProps\r\n } = props\r\n const id = React.useId()\r\n const [activeId, setActiveId] = React.useState<UniqueIdentifier | null>(null)\r\n\r\n const sensors = useSensors(\r\n useSensor(MouseSensor),\r\n useSensor(TouchSensor),\r\n useSensor(KeyboardSensor, {\r\n coordinateGetter: sortableKeyboardCoordinates,\r\n })\r\n )\r\n const config = React.useMemo(\r\n () => orientationConfig[orientation],\r\n [orientation]\r\n )\r\n\r\n const getItemValue = React.useCallback(\r\n (item: T): UniqueIdentifier => {\r\n if (typeof item === 'object' && !getItemValueProp) {\r\n throw new Error('getItemValue is required when using array of objects.')\r\n }\r\n return getItemValueProp\r\n ? getItemValueProp(item)\r\n : (item as UniqueIdentifier)\r\n },\r\n [getItemValueProp]\r\n )\r\n\r\n const items = React.useMemo(() => {\r\n return value.map(item => getItemValue(item))\r\n }, [value, getItemValue])\r\n\r\n const onDragEnd = React.useCallback(\r\n (event: DragEndEvent) => {\r\n const { active, over } = event\r\n if (over && active.id !== over?.id) {\r\n const activeIndex = value.findIndex(\r\n item => getItemValue(item) === active.id\r\n )\r\n const overIndex = value.findIndex(\r\n item => getItemValue(item) === over.id\r\n )\r\n\r\n if (onMove) {\r\n onMove({ ...event, activeIndex, overIndex })\r\n } else {\r\n onValueChange?.(arrayMove(value, activeIndex, overIndex))\r\n }\r\n }\r\n setActiveId(null)\r\n },\r\n [value, onValueChange, onMove, getItemValue]\r\n )\r\n\r\n const announcements: Announcements = React.useMemo(\r\n () => ({\r\n onDragStart({ active }) {\r\n const activeValue = active.id.toString()\r\n return `Grabbed sortable item \"${activeValue}\". Current position is ${active.data.current?.sortable.index + 1} of ${value.length}. Use arrow keys to move, space to drop.`\r\n },\r\n onDragOver({ active, over }) {\r\n if (over) {\r\n const overIndex = over.data.current?.sortable.index ?? 0\r\n const activeIndex = active.data.current?.sortable.index ?? 0\r\n const moveDirection = overIndex > activeIndex ? 'down' : 'up'\r\n const activeValue = active.id.toString()\r\n return `Sortable item \"${activeValue}\" moved ${moveDirection} to position ${overIndex + 1} of ${value.length}.`\r\n }\r\n return 'Sortable item is no longer over a droppable area. Press escape to cancel.'\r\n },\r\n onDragEnd({ active, over }) {\r\n const activeValue = active.id.toString()\r\n if (over) {\r\n const overIndex = over.data.current?.sortable.index ?? 0\r\n return `Sortable item \"${activeValue}\" dropped at position ${overIndex + 1} of ${value.length}.`\r\n }\r\n return `Sortable item \"${activeValue}\" dropped. No changes were made.`\r\n },\r\n onDragCancel({ active }) {\r\n const activeIndex = active.data.current?.sortable.index ?? 0\r\n const activeValue = active.id.toString()\r\n return `Sorting cancelled. Sortable item \"${activeValue}\" returned to position ${activeIndex + 1} of ${value.length}.`\r\n },\r\n onDragMove({ active, over }) {\r\n if (over) {\r\n const overIndex = over.data.current?.sortable.index ?? 0\r\n const activeIndex = active.data.current?.sortable.index ?? 0\r\n const moveDirection = overIndex > activeIndex ? 'down' : 'up'\r\n const activeValue = active.id.toString()\r\n return `Sortable item \"${activeValue}\" is moving ${moveDirection} to position ${overIndex + 1} of ${value.length}.`\r\n }\r\n return 'Sortable item is no longer over a droppable area. Press escape to cancel.'\r\n },\r\n }),\r\n [value]\r\n )\r\n\r\n const screenReaderInstructions: ScreenReaderInstructions = React.useMemo(\r\n () => ({\r\n draggable: `\r\n To pick up a sortable item, press space or enter.\r\n While dragging, use the ${orientation === 'vertical' ? 'up and down' : orientation === 'horizontal' ? 'left and right' : 'arrow'} keys to move the item.\r\n Press space or enter again to drop the item in its new position, or press escape to cancel.\r\n `,\r\n }),\r\n [orientation]\r\n )\r\n\r\n const contextValue = React.useMemo(\r\n () => ({\r\n id,\r\n items,\r\n modifiers: modifiers ?? config.modifiers,\r\n strategy: strategy ?? config.strategy,\r\n activeId,\r\n setActiveId,\r\n getItemValue,\r\n flatCursor,\r\n }),\r\n [\r\n id,\r\n items,\r\n modifiers,\r\n strategy,\r\n config.modifiers,\r\n config.strategy,\r\n activeId,\r\n getItemValue,\r\n flatCursor,\r\n ]\r\n )\r\n\r\n return (\r\n <SortableRootContext.Provider\r\n value={contextValue as SortableRootContextValue<unknown>}\r\n >\r\n <DndContext\r\n collisionDetection={collisionDetection ?? config.collisionDetection}\r\n modifiers={modifiers ?? config.modifiers}\r\n sensors={sensors}\r\n {...sortableProps}\r\n id={id}\r\n onDragStart={composeEventHandlers(\r\n sortableProps.onDragStart,\r\n ({ active }) => setActiveId(active.id)\r\n )}\r\n onDragEnd={composeEventHandlers(sortableProps.onDragEnd, onDragEnd)}\r\n onDragCancel={composeEventHandlers(sortableProps.onDragCancel, () =>\r\n setActiveId(null)\r\n )}\r\n accessibility={{\r\n announcements,\r\n screenReaderInstructions,\r\n ...accessibility,\r\n }}\r\n />\r\n </SortableRootContext.Provider>\r\n )\r\n}\r\n\r\nconst SortableContentContext = React.createContext<boolean>(false)\r\nSortableContentContext.displayName = CONTENT_NAME\r\n\r\ninterface SortableContentProps extends React.ComponentPropsWithoutRef<'div'> {\r\n strategy?: SortableContextProps['strategy']\r\n children: React.ReactNode\r\n asChild?: boolean\r\n withoutSlot?: boolean\r\n}\r\n\r\nconst SortableContent = React.forwardRef<HTMLDivElement, SortableContentProps>(\r\n (props, forwardedRef) => {\r\n const {\r\n strategy: strategyProp,\r\n asChild,\r\n withoutSlot,\r\n children,\r\n ...contentProps\r\n } = props\r\n const context = useSortableContext(CONTENT_NAME)\r\n\r\n const ContentPrimitive = asChild ? Slot : 'div'\r\n\r\n return (\r\n <SortableContentContext.Provider value={true}>\r\n <SortableContext\r\n items={context.items}\r\n strategy={strategyProp ?? context.strategy}\r\n >\r\n {withoutSlot ? (\r\n children\r\n ) : (\r\n <ContentPrimitive {...contentProps} ref={forwardedRef}>\r\n {children}\r\n </ContentPrimitive>\r\n )}\r\n </SortableContext>\r\n </SortableContentContext.Provider>\r\n )\r\n }\r\n)\r\nSortableContent.displayName = CONTENT_NAME\r\n\r\ninterface SortableItemContextValue {\r\n id: string\r\n attributes: React.HTMLAttributes<HTMLElement>\r\n listeners: DraggableSyntheticListeners | undefined\r\n setActivatorNodeRef: (node: HTMLElement | null) => void\r\n isDragging?: boolean\r\n disabled?: boolean\r\n}\r\n\r\nconst SortableItemContext =\r\n React.createContext<SortableItemContextValue | null>(null)\r\nSortableItemContext.displayName = ITEM_NAME\r\n\r\ninterface SortableItemProps extends React.ComponentPropsWithoutRef<'div'> {\r\n value: UniqueIdentifier\r\n asHandle?: boolean\r\n asChild?: boolean\r\n disabled?: boolean\r\n}\r\n\r\nconst SortableItem = React.forwardRef<HTMLDivElement, SortableItemProps>(\r\n (props, forwardedRef) => {\r\n const {\r\n value,\r\n style,\r\n asHandle,\r\n asChild,\r\n disabled,\r\n className,\r\n ...itemProps\r\n } = props\r\n const inSortableContent = React.useContext(SortableContentContext)\r\n const inSortableOverlay = React.useContext(SortableOverlayContext)\r\n\r\n if (!inSortableContent && !inSortableOverlay) {\r\n throw new Error(SORTABLE_ERRORS[ITEM_NAME])\r\n }\r\n\r\n if (value === '') {\r\n throw new Error(`\\`${ITEM_NAME}\\` value cannot be an empty string`)\r\n }\r\n\r\n const context = useSortableContext(ITEM_NAME)\r\n const id = React.useId()\r\n const {\r\n attributes,\r\n listeners,\r\n setNodeRef,\r\n setActivatorNodeRef,\r\n transform,\r\n transition,\r\n isDragging,\r\n } = useSortable({ id: value, disabled })\r\n\r\n const composedRef = useComposedRefs(forwardedRef, node => {\r\n if (disabled) return\r\n setNodeRef(node)\r\n if (asHandle) setActivatorNodeRef(node)\r\n })\r\n\r\n const composedStyle = React.useMemo<React.CSSProperties>(() => {\r\n return {\r\n transform: CSS.Translate.toString(transform),\r\n transition,\r\n ...style,\r\n }\r\n }, [transform, transition, style])\r\n\r\n const itemContext = React.useMemo<SortableItemContextValue>(\r\n () => ({\r\n id,\r\n attributes,\r\n listeners,\r\n setActivatorNodeRef,\r\n isDragging,\r\n disabled,\r\n }),\r\n [id, attributes, listeners, setActivatorNodeRef, isDragging, disabled]\r\n )\r\n\r\n const ItemPrimitive = asChild ? Slot : 'div'\r\n\r\n return (\r\n <SortableItemContext.Provider value={itemContext}>\r\n <ItemPrimitive\r\n id={id}\r\n data-dragging={isDragging ? '' : undefined}\r\n {...itemProps}\r\n {...(asHandle ? attributes : {})}\r\n {...(asHandle ? listeners : {})}\r\n tabIndex={disabled ? undefined : 0}\r\n ref={composedRef}\r\n style={composedStyle}\r\n className={cn(\r\n 'focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1',\r\n {\r\n 'touch-none select-none': asHandle,\r\n 'cursor-default': context.flatCursor,\r\n 'data-dragging:cursor-grabbing': !context.flatCursor,\r\n 'cursor-grab': !isDragging && asHandle && !context.flatCursor,\r\n 'opacity-50': isDragging,\r\n 'pointer-events-none opacity-50': disabled,\r\n },\r\n className\r\n )}\r\n />\r\n </SortableItemContext.Provider>\r\n )\r\n }\r\n)\r\nSortableItem.displayName = ITEM_NAME\r\n\r\ninterface SortableItemHandleProps\r\n extends React.ComponentPropsWithoutRef<'button'> {\r\n asChild?: boolean\r\n}\r\n\r\nconst SortableItemHandle = React.forwardRef<\r\n HTMLButtonElement,\r\n SortableItemHandleProps\r\n>((props, forwardedRef) => {\r\n const { asChild, disabled, className, ...itemHandleProps } = props\r\n const itemContext = React.useContext(SortableItemContext)\r\n if (!itemContext) {\r\n throw new Error(SORTABLE_ERRORS[ITEM_HANDLE_NAME])\r\n }\r\n const context = useSortableContext(ITEM_HANDLE_NAME)\r\n\r\n const isDisabled = disabled ?? itemContext.disabled\r\n\r\n const composedRef = useComposedRefs(forwardedRef, node => {\r\n if (!isDisabled) return\r\n itemContext.setActivatorNodeRef(node)\r\n })\r\n\r\n const HandlePrimitive = asChild ? Slot : 'button'\r\n\r\n return (\r\n <HandlePrimitive\r\n type=\"button\"\r\n aria-controls={itemContext.id}\r\n data-dragging={itemContext.isDragging ? '' : undefined}\r\n {...itemHandleProps}\r\n {...itemContext.attributes}\r\n {...itemContext.listeners}\r\n ref={composedRef}\r\n className={cn(\r\n 'select-none disabled:pointer-events-none disabled:opacity-50',\r\n context.flatCursor\r\n ? 'cursor-default'\r\n : 'cursor-grab data-dragging:cursor-grabbing',\r\n className\r\n )}\r\n disabled={isDisabled}\r\n />\r\n )\r\n})\r\nSortableItemHandle.displayName = ITEM_HANDLE_NAME\r\n\r\nconst SortableOverlayContext = React.createContext(false)\r\nSortableOverlayContext.displayName = OVERLAY_NAME\r\n\r\nconst dropAnimation: DropAnimation = {\r\n sideEffects: defaultDropAnimationSideEffects({\r\n styles: {\r\n active: {\r\n opacity: '0.4',\r\n },\r\n },\r\n }),\r\n}\r\n\r\ninterface SortableOverlayProps\r\n extends Omit<React.ComponentPropsWithoutRef<typeof DragOverlay>, 'children'> {\r\n container?: Element | DocumentFragment | null\r\n children?:\r\n | ((params: { value: UniqueIdentifier }) => React.ReactNode)\r\n | React.ReactNode\r\n}\r\n\r\nfunction SortableOverlay(props: SortableOverlayProps) {\r\n const { container: containerProp, children, ...overlayProps } = props\r\n const context = useSortableContext(OVERLAY_NAME)\r\n\r\n const [mounted, setMounted] = React.useState(false)\r\n React.useLayoutEffect(() => setMounted(true), [])\r\n\r\n const container =\r\n containerProp ?? (mounted ? globalThis.document?.body : null)\r\n\r\n if (!container) return null\r\n\r\n return ReactDOM.createPortal(\r\n <DragOverlay\r\n dropAnimation={dropAnimation}\r\n modifiers={context.modifiers}\r\n className={cn(!context.flatCursor && 'cursor-grabbing')}\r\n {...overlayProps}\r\n >\r\n <SortableOverlayContext.Provider value={true}>\r\n {context.activeId\r\n ? typeof children === 'function'\r\n ? children({ value: context.activeId })\r\n : children\r\n : null}\r\n </SortableOverlayContext.Provider>\r\n </DragOverlay>,\r\n container\r\n )\r\n}\r\n\r\nconst Root = Sortable\r\nconst Content = SortableContent\r\nconst Item = SortableItem\r\nconst ItemHandle = SortableItemHandle\r\nconst Overlay = SortableOverlay\r\n\r\nexport {\r\n Root,\r\n Content,\r\n Item,\r\n ItemHandle,\r\n Overlay,\r\n //\r\n Sortable,\r\n SortableContent,\r\n SortableItem,\r\n SortableItemHandle,\r\n SortableOverlay,\r\n}\r\n"],"names":["orientationConfig","restrictToVerticalAxis","restrictToParentElement","verticalListSortingStrategy","closestCenter","restrictToHorizontalAxis","horizontalListSortingStrategy","undefined","closestCorners","ROOT_NAME","CONTENT_NAME","ITEM_NAME","ITEM_HANDLE_NAME","OVERLAY_NAME","SORTABLE_ERRORS","SortableRootContext","React","useSortableContext","name","context","Error","Sortable","props","value","onValueChange","collisionDetection","modifiers","strategy","onMove","orientation","flatCursor","getItemValueProp","accessibility","sortableProps","id","activeId","setActiveId","sensors","useSensors","useSensor","MouseSensor","TouchSensor","KeyboardSensor","sortableKeyboardCoordinates","config","getItemValue","item","items","onDragEnd","event","active","over","activeIndex","overIndex","arrayMove","announcements","activeValue","screenReaderInstructions","contextValue","DndContext","composeEventHandlers","SortableContentContext","SortableContent","forwardedRef","strategyProp","asChild","withoutSlot","children","contentProps","ContentPrimitive","Slot","SortableContext","SortableItemContext","SortableItem","style","asHandle","disabled","className","itemProps","inSortableContent","inSortableOverlay","SortableOverlayContext","attributes","listeners","setNodeRef","setActivatorNodeRef","transform","transition","isDragging","useSortable","composedRef","useComposedRefs","node","composedStyle","CSS","itemContext","ItemPrimitive","cn","SortableItemHandle","itemHandleProps","isDisabled","HandlePrimitive","dropAnimation","defaultDropAnimationSideEffects","SortableOverlay","containerProp","overlayProps","mounted","setMounted","container","globalThis","ReactDOM","DragOverlay","Root","Content","Item","ItemHandle","Overlay"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"components\\spinner.js","sources":["webpack://@gbmtech/aurora-ui/./src/components/spinner.tsx"],"sourcesContent":["import { VisuallyHidden } from '@radix-ui/react-visually-hidden'\r\nimport type { CSSProperties, ComponentProps, ReactNode } from 'react'\r\n\r\nimport { cn } from '../lib/utils'\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Component: Spinner\r\n * -------------------------------------------------------------------------- */\r\n\r\nconst SPINNER_COUNT = 8\r\n\r\nfunction Spinner({\r\n children,\r\n className,\r\n loading = true,\r\n ...props\r\n}: ComponentProps<'span'> & {\r\n loading?: boolean\r\n}): ReactNode {\r\n if (!loading) {\r\n return children\r\n }\r\n\r\n const spinner = (\r\n <span\r\n className={cn(\r\n 'relative flex size-4 items-center justify-center opacity-60',\r\n className\r\n )}\r\n {...props}\r\n >\r\n {Array.from({ length: SPINNER_COUNT }, (_, i) => (\r\n <span\r\n key={i}\r\n className={cn(\r\n 'before:fade-out-25 before:animation-repeat-infinite before:animation-delay-(--spinner-delay) before:animation-duration-(--spinner-duration) absolute h-full rotate-(--spinner-rotate) before:block before:h-1/3 before:w-full before:animate-out before:rounded-full before:bg-current'\r\n )}\r\n style={\r\n {\r\n '--spinner-delay': `-${((SPINNER_COUNT - i) * 100).toString()}ms`,\r\n '--spinner-duration': `${(SPINNER_COUNT * 100).toString()}ms`,\r\n '--spinner-rotate': `${((360 / SPINNER_COUNT) * i).toString()}deg`,\r\n width: `${(100 / SPINNER_COUNT).toString()}%`,\r\n } as CSSProperties\r\n }\r\n />\r\n ))}\r\n </span>\r\n )\r\n\r\n if (children === undefined) {\r\n return spinner\r\n }\r\n\r\n return (\r\n <span className=\"relative\">\r\n <span aria-hidden className=\"invisible contents\">\r\n {children}\r\n </span>\r\n <VisuallyHidden>{children}</VisuallyHidden>\r\n <span className=\"absolute inset-0 flex items-center justify-center\">\r\n {spinner}\r\n </span>\r\n </span>\r\n )\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Exports\r\n * -------------------------------------------------------------------------- */\r\n\r\nexport { Spinner }\r\n"],"names":["Spinner","children","className","loading","props","spinner","cn","Array","_","i","SPINNER_COUNT","undefined","VisuallyHidden"],"mappings":"wHAWA,SAASA,EAAQ,CACfC,SAAAA,CAAQ,CACRC,UAAAA,CAAS,CACTC,QAAAA,EAAU,EAAI,CACd,GAAGC,EAGJ,EACC,GAAI,CAACD,EACH,OAAOF,EAGT,IAAMI,EACJ,UAAC,QACC,UAAWC,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EACT,8DACAJ,GAED,GAAGE,CAAK,C,SAERG,MAAM,IAAI,CAAC,CAAE,OAtBE,CAsBoB,EAAG,CAACC,EAAGC,IACzC,UAAC,QAEC,UAAWH,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EACT,0RAEF,MACE,CACE,kBAAmB,CAAC,CAAC,EAAG,AAACI,CAAAA,CAAAA,AA9BjB,EA8BiCD,CAAAA,EAAK,GAAE,EAAG,QAAQ,GAAG,EAAE,CAAC,CACjE,qBAAsB,QACtB,mBAAoB,CAAC,EAAG,AAAC,IAAuBA,CAAAA,EAAG,QAAQ,GAAG,GAAG,CAAC,CAClE,MAAO,OACT,C,EAVGA,G,UAiBb,AAAIR,AAAaU,KAAAA,IAAbV,EACKI,EAIP,WAAC,QAAK,UAAU,W,UACd,UAAC,QAAK,cAAW,GAAC,UAAU,qB,SACzBJ,C,GAEH,UAACW,EAAAA,cAAcA,CAAAA,C,SAAEX,C,GACjB,UAAC,QAAK,UAAU,oD,SACbI,C,KAIT,Q"}
1
+ {"version":3,"file":"components\\spinner.js","sources":["webpack://@gbmtech/aurora-ui/./src/components/spinner.tsx"],"sourcesContent":["import { VisuallyHidden } from '@radix-ui/react-visually-hidden'\r\nimport type { CSSProperties, ComponentProps, ReactNode } from 'react'\r\n\r\nimport { cn } from '../lib/utils'\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Component: Spinner\r\n * -------------------------------------------------------------------------- */\r\n\r\nconst SPINNER_COUNT = 8\r\n\r\nfunction Spinner({\r\n children,\r\n className,\r\n loading = true,\r\n ...props\r\n}: ComponentProps<'span'> & {\r\n loading?: boolean\r\n}): ReactNode {\r\n if (!loading) {\r\n return children\r\n }\r\n\r\n const spinner = (\r\n <span\r\n className={cn(\r\n 'relative flex size-4 items-center justify-center opacity-60',\r\n className\r\n )}\r\n {...props}\r\n >\r\n {Array.from({ length: SPINNER_COUNT }, (_, i) => (\r\n <span\r\n key={i}\r\n className={cn(\r\n 'before:fade-out-25 before:animation-repeat-infinite before:animation-delay-(--spinner-delay) before:animation-duration-(--spinner-duration) absolute h-full rotate-(--spinner-rotate) before:block before:h-1/3 before:w-full before:animate-out before:rounded-full before:bg-current'\r\n )}\r\n style={\r\n {\r\n '--spinner-delay': `-${((SPINNER_COUNT - i) * 100).toString()}ms`,\r\n '--spinner-duration': `${(SPINNER_COUNT * 100).toString()}ms`,\r\n '--spinner-rotate': `${((360 / SPINNER_COUNT) * i).toString()}deg`,\r\n width: `${(100 / SPINNER_COUNT).toString()}%`,\r\n } as CSSProperties\r\n }\r\n />\r\n ))}\r\n </span>\r\n )\r\n\r\n if (children === undefined) {\r\n return spinner\r\n }\r\n\r\n return (\r\n <span className=\"relative\">\r\n <span aria-hidden className=\"invisible contents\">\r\n {children}\r\n </span>\r\n <VisuallyHidden>{children}</VisuallyHidden>\r\n <span className=\"absolute inset-0 flex items-center justify-center\">\r\n {spinner}\r\n </span>\r\n </span>\r\n )\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Exports\r\n * -------------------------------------------------------------------------- */\r\n\r\nexport { Spinner }\r\n"],"names":["Spinner","children","className","loading","props","spinner","cn","Array","_","i","SPINNER_COUNT","undefined","VisuallyHidden"],"mappings":"wHAWA,SAASA,EAAQ,CACfC,SAAAA,CAAQ,CACRC,UAAAA,CAAS,CACTC,QAAAA,EAAU,EAAI,CACd,GAAGC,EAGJ,EACC,GAAI,CAACD,EACH,OAAOF,EAGT,IAAMI,EACJ,UAAC,QACC,UAAWC,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EACT,8DACAJ,GAED,GAAGE,CAAK,C,SAERG,MAAM,IAAI,CAAC,CAAE,OAtBE,CAsBoB,EAAG,CAACC,EAAGC,IACzC,UAAC,QAEC,UAAWH,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EACT,0RAEF,MACE,CACE,kBAAmB,CAAC,CAAC,EAAG,AAACI,CAAAA,CA9BjB,EA8BiCD,CAAAA,EAAK,GAAE,EAAG,QAAQ,GAAG,EAAE,CAAC,CACjE,qBAAsB,QACtB,mBAAoB,CAAC,EAAG,AAAC,IAAuBA,CAAAA,EAAG,QAAQ,GAAG,GAAG,CAAC,CAClE,MAAO,OACT,C,EAVGA,G,UAiBb,AAAIR,AAAaU,SAAbV,EACKI,EAIP,WAAC,QAAK,UAAU,W,UACd,UAAC,QAAK,cAAW,GAAC,UAAU,qB,SACzBJ,C,GAEH,UAACW,EAAAA,cAAcA,CAAAA,C,SAAEX,C,GACjB,UAAC,QAAK,UAAU,oD,SACbI,C,KAIT,Q"}