@gbmtech/aurora-ui 0.2.58 → 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 (147) 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/sortable.js.map +1 -1
  142. package/dist/esm/components/spinner.js.map +1 -1
  143. package/dist/esm/components/table-expandable.js.map +1 -1
  144. package/dist/esm/hooks/use-mobile.js.map +1 -1
  145. package/dist/esm/lib/data-table.js.map +1 -1
  146. package/dist/esm/lib/id.js.map +1 -1
  147. 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":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"components\\table-expandable.js","sources":["webpack://@gbmtech/aurora-ui/./src/components/table-expandable.tsx"],"sourcesContent":["import { CaretDown } from '@phosphor-icons/react'\r\nimport { Slot } from '@radix-ui/react-slot'\r\nimport { AnimatePresence, motion } from 'framer-motion'\r\nimport React, { useState } from 'react'\r\n\r\nimport { cn } from '../lib/utils'\r\n\r\ntype ExpandableTableRowWrapperProps = React.HTMLAttributes<HTMLDivElement> & {\r\n children: [React.ReactNode, React.ReactNode]\r\n /**\r\n * Number of columns the content will occupy when expanded\r\n * Not counting the icon column that comes by default\r\n */\r\n contentColSpan: number\r\n isExpanded?: boolean\r\n onToggleExpand?: VoidFunction\r\n}\r\n\r\n/**\r\n * A wrapper for expandable table rows.\r\n *\r\n * @param children - The first must be of type ExpandableTableRow and the second any component, such as a div.\r\n * @param contentColSpan - Number of columns the content will occupy when expanded (excluding the default icon column).\r\n */\r\nconst ExpandableTableRowWrapper = React.forwardRef<\r\n HTMLDivElement,\r\n ExpandableTableRowWrapperProps\r\n>(({ children, contentColSpan, isExpanded, onToggleExpand }) => {\r\n const [internalIsExpanded, setInternalIsExpanded] = useState(false)\r\n const [Row, Content] = children\r\n\r\n const expanded = isExpanded !== undefined ? isExpanded : internalIsExpanded\r\n const toggleExpand = () => {\r\n if (onToggleExpand) {\r\n onToggleExpand()\r\n } else {\r\n setInternalIsExpanded(prev => !prev)\r\n }\r\n }\r\n\r\n const sumOfColspanAndIconColumn = contentColSpan + 1\r\n\r\n return (\r\n <>\r\n <Slot onClick={toggleExpand} data-expanded={expanded}>\r\n {Row}\r\n </Slot>\r\n <ExpandableTableRowContent\r\n colSpan={sumOfColspanAndIconColumn}\r\n aria-colspan={sumOfColspanAndIconColumn}\r\n isExpanded={expanded}\r\n >\r\n {Content}\r\n </ExpandableTableRowContent>\r\n </>\r\n )\r\n})\r\nExpandableTableRowWrapper.displayName = 'ExpandableTableRowWrapper'\r\n\r\ntype ExpandableTableRowProps = React.HTMLAttributes<HTMLTableRowElement> & {\r\n showIcon?: boolean\r\n 'data-expanded'?: boolean\r\n}\r\n\r\nconst ExpandableTableRow = React.forwardRef<\r\n HTMLTableRowElement,\r\n ExpandableTableRowProps\r\n>(({ className, children, showIcon = true, ...props }, ref) => (\r\n <tr\r\n ref={ref}\r\n className={cn(\r\n 'cursor-pointer border-y transition-colors last:border-y-0 hover:bg-stroke/30 data-[state=selected]:bg-gray-100',\r\n className\r\n )}\r\n {...props}\r\n >\r\n <td\r\n className={cn('w-12 p-4 align-middle [&:has([role=checkbox])]:pr-0', {})}\r\n >\r\n <motion.div\r\n initial={{ rotate: 0 }}\r\n animate={{ rotate: props['data-expanded'] ? -180 : 0 }}\r\n transition={{ duration: 0.3 }}\r\n className='w-min origin-center'\r\n >\r\n <CaretDown\r\n size={16}\r\n weight=\"bold\"\r\n className={cn('text-gbm-dark', { 'text-transparent': !showIcon })}\r\n />\r\n </motion.div>\r\n </td>\r\n {children}\r\n </tr>\r\n))\r\nExpandableTableRow.displayName = 'ExpandableTableRow'\r\n\r\ntype ExpandableTableRowContentProps =\r\n React.TdHTMLAttributes<HTMLTableCellElement> & {\r\n isExpanded: boolean\r\n }\r\n\r\nconst ExpandableTableRowContent = React.forwardRef<\r\n HTMLTableCellElement,\r\n ExpandableTableRowContentProps\r\n>(({ className, isExpanded, ...props }, ref) => (\r\n <AnimatePresence initial={false}>\r\n {isExpanded && (\r\n <motion.tr\r\n key=\"expandable-row\"\r\n className={cn('border-y', className)}\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n exit={{ opacity: 0 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n <td colSpan={props.colSpan}>\r\n <motion.div\r\n initial={{ height: 0, opacity: 0 }}\r\n animate={{ height: 'auto', opacity: 1 }}\r\n exit={{ height: 0, opacity: 0 }}\r\n transition={{\r\n height: { duration: 0.3, ease: 'linear' },\r\n opacity: { duration: 0.2 },\r\n }}\r\n className=\"overflow-hidden\"\r\n >\r\n <div ref={ref}>{props.children}</div>\r\n </motion.div>\r\n </td>\r\n </motion.tr>\r\n )}\r\n </AnimatePresence>\r\n))\r\nExpandableTableRowContent.displayName = 'ExpandableTableRowContent'\r\n\r\nexport type {\r\n ExpandableTableRowWrapperProps,\r\n ExpandableTableRowProps,\r\n ExpandableTableRowContentProps,\r\n}\r\nexport { ExpandableTableRowWrapper, ExpandableTableRow }\r\n"],"names":["ExpandableTableRowWrapper","React","children","contentColSpan","isExpanded","onToggleExpand","internalIsExpanded","setInternalIsExpanded","useState","Row","Content","expanded","undefined","sumOfColspanAndIconColumn","Slot","prev","ExpandableTableRowContent","ExpandableTableRow","className","showIcon","props","ref","cn","motion","CaretDown","AnimatePresence"],"mappings":"6MAwBA,IAAMA,EAA4BC,EAAAA,OAAAA,CAAAA,UAAgB,CAGhD,CAAC,CAAEC,SAAAA,CAAQ,CAAEC,eAAAA,CAAc,CAAEC,WAAAA,CAAU,CAAEC,eAAAA,CAAc,CAAE,IACzD,GAAM,CAACC,EAAoBC,EAAsB,CAAGC,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS,IACvD,CAACC,EAAKC,EAAQ,CAAGR,EAEjBS,EAAWP,AAAeQ,KAAAA,IAAfR,EAA2BA,EAAaE,EASnDO,EAA4BV,EAAiB,EAEnD,MACE,uB,UACE,UAACW,EAAAA,IAAIA,CAAAA,CAAC,QAZW,KACfT,EACFA,IAEAE,EAAsBQ,AAAAA,GAAQ,CAACA,EAEnC,EAMiC,gBAAeJ,E,SACzCF,C,GAEH,UAACO,EAAAA,CACC,QAASH,EACT,eAAcA,EACd,WAAYF,E,SAEXD,C,KAIT,EACAV,CAAAA,EAA0B,WAAW,CAAG,4BAOxC,IAAMiB,EAAqBhB,EAAAA,OAAAA,CAAAA,UAAgB,CAGzC,CAAC,CAAEiB,UAAAA,CAAS,CAAEhB,SAAAA,CAAQ,CAAEiB,SAAAA,EAAW,EAAI,CAAE,GAAGC,EAAO,CAAEC,IACrD,WAAC,MACC,IAAKA,EACL,UAAWC,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EACT,iHACAJ,GAED,GAAGE,CAAK,C,UAET,UAAC,MACC,UAAWE,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAG,sDAAuD,CAAC,G,SAEtE,UAACC,EAAAA,MAAAA,CAAAA,GAAU,EACT,QAAS,CAAE,OAAQ,CAAE,EACrB,QAAS,CAAE,OAAQH,CAAK,CAAC,gBAAgB,CAAG,KAAO,CAAE,EACrD,WAAY,CAAE,SAAU,EAAI,EAC5B,UAAU,sB,SAEV,UAACI,EAAAA,SAASA,CAAAA,CACR,KAAM,GACN,OAAO,OACP,UAAWF,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAG,gBAAiB,CAAE,mBAAoB,CAACH,CAAS,E,OAIpEjB,E,GAGLe,CAAAA,EAAmB,WAAW,CAAG,qBAOjC,IAAMD,EAA4Bf,EAAAA,OAAAA,CAAAA,UAAgB,CAGhD,CAAC,CAAEiB,UAAAA,CAAS,CAAEd,WAAAA,CAAU,CAAE,GAAGgB,EAAO,CAAEC,IACtC,UAACI,EAAAA,eAAeA,CAAAA,CAAC,QAAS,G,SACvBrB,GACC,UAACmB,EAAAA,MAAAA,CAAAA,EAAS,EAER,UAAWD,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAG,WAAYJ,GAC1B,QAAS,CAAE,QAAS,CAAE,EACtB,QAAS,CAAE,QAAS,CAAE,EACtB,KAAM,CAAE,QAAS,CAAE,EACnB,WAAY,CAAE,SAAU,EAAI,E,SAE5B,UAAC,MAAG,QAASE,EAAM,OAAO,C,SACxB,UAACG,EAAAA,MAAAA,CAAAA,GAAU,EACT,QAAS,CAAE,OAAQ,EAAG,QAAS,CAAE,EACjC,QAAS,CAAE,OAAQ,OAAQ,QAAS,CAAE,EACtC,KAAM,CAAE,OAAQ,EAAG,QAAS,CAAE,EAC9B,WAAY,CACV,OAAQ,CAAE,SAAU,GAAK,KAAM,QAAS,EACxC,QAAS,CAAE,SAAU,EAAI,CAC3B,EACA,UAAU,kB,SAEV,UAAC,OAAI,IAAKF,E,SAAMD,EAAM,QAAQ,A,QAlB9B,iB,GAyBZJ,CAAAA,EAA0B,WAAW,CAAG,mC"}
1
+ {"version":3,"file":"components\\table-expandable.js","sources":["webpack://@gbmtech/aurora-ui/./src/components/table-expandable.tsx"],"sourcesContent":["import { CaretDown } from '@phosphor-icons/react'\r\nimport { Slot } from '@radix-ui/react-slot'\r\nimport { AnimatePresence, motion } from 'framer-motion'\r\nimport React, { useState } from 'react'\r\n\r\nimport { cn } from '../lib/utils'\r\n\r\ntype ExpandableTableRowWrapperProps = React.HTMLAttributes<HTMLDivElement> & {\r\n children: [React.ReactNode, React.ReactNode]\r\n /**\r\n * Number of columns the content will occupy when expanded\r\n * Not counting the icon column that comes by default\r\n */\r\n contentColSpan: number\r\n isExpanded?: boolean\r\n onToggleExpand?: VoidFunction\r\n}\r\n\r\n/**\r\n * A wrapper for expandable table rows.\r\n *\r\n * @param children - The first must be of type ExpandableTableRow and the second any component, such as a div.\r\n * @param contentColSpan - Number of columns the content will occupy when expanded (excluding the default icon column).\r\n */\r\nconst ExpandableTableRowWrapper = React.forwardRef<\r\n HTMLDivElement,\r\n ExpandableTableRowWrapperProps\r\n>(({ children, contentColSpan, isExpanded, onToggleExpand }) => {\r\n const [internalIsExpanded, setInternalIsExpanded] = useState(false)\r\n const [Row, Content] = children\r\n\r\n const expanded = isExpanded !== undefined ? isExpanded : internalIsExpanded\r\n const toggleExpand = () => {\r\n if (onToggleExpand) {\r\n onToggleExpand()\r\n } else {\r\n setInternalIsExpanded(prev => !prev)\r\n }\r\n }\r\n\r\n const sumOfColspanAndIconColumn = contentColSpan + 1\r\n\r\n return (\r\n <>\r\n <Slot onClick={toggleExpand} data-expanded={expanded}>\r\n {Row}\r\n </Slot>\r\n <ExpandableTableRowContent\r\n colSpan={sumOfColspanAndIconColumn}\r\n aria-colspan={sumOfColspanAndIconColumn}\r\n isExpanded={expanded}\r\n >\r\n {Content}\r\n </ExpandableTableRowContent>\r\n </>\r\n )\r\n})\r\nExpandableTableRowWrapper.displayName = 'ExpandableTableRowWrapper'\r\n\r\ntype ExpandableTableRowProps = React.HTMLAttributes<HTMLTableRowElement> & {\r\n showIcon?: boolean\r\n 'data-expanded'?: boolean\r\n}\r\n\r\nconst ExpandableTableRow = React.forwardRef<\r\n HTMLTableRowElement,\r\n ExpandableTableRowProps\r\n>(({ className, children, showIcon = true, ...props }, ref) => (\r\n <tr\r\n ref={ref}\r\n className={cn(\r\n 'cursor-pointer border-y transition-colors last:border-y-0 hover:bg-stroke/30 data-[state=selected]:bg-gray-100',\r\n className\r\n )}\r\n {...props}\r\n >\r\n <td\r\n className={cn('w-12 p-4 align-middle [&:has([role=checkbox])]:pr-0', {})}\r\n >\r\n <motion.div\r\n initial={{ rotate: 0 }}\r\n animate={{ rotate: props['data-expanded'] ? -180 : 0 }}\r\n transition={{ duration: 0.3 }}\r\n className='w-min origin-center'\r\n >\r\n <CaretDown\r\n size={16}\r\n weight=\"bold\"\r\n className={cn('text-gbm-dark', { 'text-transparent': !showIcon })}\r\n />\r\n </motion.div>\r\n </td>\r\n {children}\r\n </tr>\r\n))\r\nExpandableTableRow.displayName = 'ExpandableTableRow'\r\n\r\ntype ExpandableTableRowContentProps =\r\n React.TdHTMLAttributes<HTMLTableCellElement> & {\r\n isExpanded: boolean\r\n }\r\n\r\nconst ExpandableTableRowContent = React.forwardRef<\r\n HTMLTableCellElement,\r\n ExpandableTableRowContentProps\r\n>(({ className, isExpanded, ...props }, ref) => (\r\n <AnimatePresence initial={false}>\r\n {isExpanded && (\r\n <motion.tr\r\n key=\"expandable-row\"\r\n className={cn('border-y', className)}\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n exit={{ opacity: 0 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n <td colSpan={props.colSpan}>\r\n <motion.div\r\n initial={{ height: 0, opacity: 0 }}\r\n animate={{ height: 'auto', opacity: 1 }}\r\n exit={{ height: 0, opacity: 0 }}\r\n transition={{\r\n height: { duration: 0.3, ease: 'linear' },\r\n opacity: { duration: 0.2 },\r\n }}\r\n className=\"overflow-hidden\"\r\n >\r\n <div ref={ref}>{props.children}</div>\r\n </motion.div>\r\n </td>\r\n </motion.tr>\r\n )}\r\n </AnimatePresence>\r\n))\r\nExpandableTableRowContent.displayName = 'ExpandableTableRowContent'\r\n\r\nexport type {\r\n ExpandableTableRowWrapperProps,\r\n ExpandableTableRowProps,\r\n ExpandableTableRowContentProps,\r\n}\r\nexport { ExpandableTableRowWrapper, ExpandableTableRow }\r\n"],"names":["ExpandableTableRowWrapper","React","children","contentColSpan","isExpanded","onToggleExpand","internalIsExpanded","setInternalIsExpanded","useState","Row","Content","expanded","undefined","sumOfColspanAndIconColumn","Slot","prev","ExpandableTableRowContent","ExpandableTableRow","className","showIcon","props","ref","cn","motion","CaretDown","AnimatePresence"],"mappings":"6MAwBA,IAAMA,EAA4BC,EAAAA,OAAAA,CAAAA,UAAgB,CAGhD,CAAC,CAAEC,SAAAA,CAAQ,CAAEC,eAAAA,CAAc,CAAEC,WAAAA,CAAU,CAAEC,eAAAA,CAAc,CAAE,IACzD,GAAM,CAACC,EAAoBC,EAAsB,CAAGC,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS,IACvD,CAACC,EAAKC,EAAQ,CAAGR,EAEjBS,EAAWP,AAAeQ,SAAfR,EAA2BA,EAAaE,EASnDO,EAA4BV,EAAiB,EAEnD,MACE,uB,UACE,UAACW,EAAAA,IAAIA,CAAAA,CAAC,QAZW,KACfT,EACFA,IAEAE,EAAsBQ,AAAAA,GAAQ,CAACA,EAEnC,EAMiC,gBAAeJ,E,SACzCF,C,GAEH,UAACO,EAAAA,CACC,QAASH,EACT,eAAcA,EACd,WAAYF,E,SAEXD,C,KAIT,EACAV,CAAAA,EAA0B,WAAW,CAAG,4BAOxC,IAAMiB,EAAqBhB,EAAAA,OAAAA,CAAAA,UAAgB,CAGzC,CAAC,CAAEiB,UAAAA,CAAS,CAAEhB,SAAAA,CAAQ,CAAEiB,SAAAA,EAAW,EAAI,CAAE,GAAGC,EAAO,CAAEC,IACrD,WAAC,MACC,IAAKA,EACL,UAAWC,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EACT,iHACAJ,GAED,GAAGE,CAAK,C,UAET,UAAC,MACC,UAAWE,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAG,sDAAuD,CAAC,G,SAEtE,UAACC,EAAAA,MAAAA,CAAAA,GAAU,EACT,QAAS,CAAE,OAAQ,CAAE,EACrB,QAAS,CAAE,OAAQH,CAAK,CAAC,gBAAgB,CAAG,KAAO,CAAE,EACrD,WAAY,CAAE,SAAU,EAAI,EAC5B,UAAU,sB,SAEV,UAACI,EAAAA,SAASA,CAAAA,CACR,KAAM,GACN,OAAO,OACP,UAAWF,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAG,gBAAiB,CAAE,mBAAoB,CAACH,CAAS,E,OAIpEjB,E,GAGLe,CAAAA,EAAmB,WAAW,CAAG,qBAOjC,IAAMD,EAA4Bf,EAAAA,OAAAA,CAAAA,UAAgB,CAGhD,CAAC,CAAEiB,UAAAA,CAAS,CAAEd,WAAAA,CAAU,CAAE,GAAGgB,EAAO,CAAEC,IACtC,UAACI,EAAAA,eAAeA,CAAAA,CAAC,QAAS,G,SACvBrB,GACC,UAACmB,EAAAA,MAAAA,CAAAA,EAAS,EAER,UAAWD,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAG,WAAYJ,GAC1B,QAAS,CAAE,QAAS,CAAE,EACtB,QAAS,CAAE,QAAS,CAAE,EACtB,KAAM,CAAE,QAAS,CAAE,EACnB,WAAY,CAAE,SAAU,EAAI,E,SAE5B,UAAC,MAAG,QAASE,EAAM,OAAO,C,SACxB,UAACG,EAAAA,MAAAA,CAAAA,GAAU,EACT,QAAS,CAAE,OAAQ,EAAG,QAAS,CAAE,EACjC,QAAS,CAAE,OAAQ,OAAQ,QAAS,CAAE,EACtC,KAAM,CAAE,OAAQ,EAAG,QAAS,CAAE,EAC9B,WAAY,CACV,OAAQ,CAAE,SAAU,GAAK,KAAM,QAAS,EACxC,QAAS,CAAE,SAAU,EAAI,CAC3B,EACA,UAAU,kB,SAEV,UAAC,OAAI,IAAKF,E,SAAMD,EAAM,QAAQ,A,QAlB9B,iB,GAyBZJ,CAAAA,EAA0B,WAAW,CAAG,mC"}
@@ -1 +1 @@
1
- {"version":3,"file":"hooks\\use-mobile.js","sources":["webpack://@gbmtech/aurora-ui/./src/hooks/use-mobile.ts"],"sourcesContent":["import { useEffect, useState } from 'react'\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = useState<boolean | undefined>(undefined)\n\n useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener('change', onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener('change', onChange)\n }, [])\n\n return !!isMobile\n}\n"],"names":["useIsMobile","isMobile","setIsMobile","useState","undefined","useEffect","mql","window","onChange"],"mappings":"wBAIO,SAASA,IACd,GAAM,CAACC,EAAUC,EAAY,CAAGC,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAA8BC,KAAAA,GAY9D,MAVAC,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EAAU,KACR,IAAMC,EAAMC,OAAO,UAAU,CAAC,sBACxBC,EAAW,KACfN,EAAYK,OAAO,UAAU,CART,IAStB,EAGA,OAFAD,EAAI,gBAAgB,CAAC,SAAUE,GAC/BN,EAAYK,OAAO,UAAU,CAXP,KAYf,IAAMD,EAAI,mBAAmB,CAAC,SAAUE,EACjD,EAAG,EAAE,EAEE,CAAC,CAACP,CACX,Q"}
1
+ {"version":3,"file":"hooks\\use-mobile.js","sources":["webpack://@gbmtech/aurora-ui/./src/hooks/use-mobile.ts"],"sourcesContent":["import { useEffect, useState } from 'react'\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = useState<boolean | undefined>(undefined)\n\n useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener('change', onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener('change', onChange)\n }, [])\n\n return !!isMobile\n}\n"],"names":["useIsMobile","isMobile","setIsMobile","useState","undefined","useEffect","mql","window","onChange"],"mappings":"wBAIO,SAASA,IACd,GAAM,CAACC,EAAUC,EAAY,CAAGC,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAA8BC,QAY9D,MAVAC,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EAAU,KACR,IAAMC,EAAMC,OAAO,UAAU,CAAC,sBACxBC,EAAW,KACfN,EAAYK,OAAO,UAAU,CART,IAStB,EAGA,OAFAD,EAAI,gBAAgB,CAAC,SAAUE,GAC/BN,EAAYK,OAAO,UAAU,CAXP,KAYf,IAAMD,EAAI,mBAAmB,CAAC,SAAUE,EACjD,EAAG,EAAE,EAEE,CAAC,CAACP,CACX,Q"}
@@ -1 +1 @@
1
- {"version":3,"file":"lib\\data-table.js","sources":["webpack://@gbmtech/aurora-ui/./src/lib/data-table.ts"],"sourcesContent":["import type {\r\n ExtendedColumnFilter,\r\n FilterOperator,\r\n FilterVariant,\r\n} from '@/types/data-table'\r\nimport type { Column } from '@tanstack/react-table'\r\n\r\nimport { dataTableConfig } from '@/lib/data-table-config'\r\n\r\nexport function getCommonPinningStyles<TData>({\r\n column,\r\n withBorder = false,\r\n}: {\r\n column: Column<TData>\r\n withBorder?: boolean\r\n}): React.CSSProperties {\r\n const isPinned = column.getIsPinned()\r\n const isLastLeftPinnedColumn =\r\n isPinned === 'left' && column.getIsLastColumn('left')\r\n const isFirstRightPinnedColumn =\r\n isPinned === 'right' && column.getIsFirstColumn('right')\r\n\r\n return {\r\n boxShadow: withBorder\r\n ? isLastLeftPinnedColumn\r\n ? '-4px 0 4px -4px hsl(var(--stroke)) inset'\r\n : isFirstRightPinnedColumn\r\n ? '4px 0 4px -4px hsl(var(--stroke)) inset'\r\n : undefined\r\n : undefined,\r\n left: isPinned === 'left' ? `${column.getStart('left')}px` : undefined,\r\n right: isPinned === 'right' ? `${column.getAfter('right')}px` : undefined,\r\n opacity: isPinned ? 0.97 : 1,\r\n position: isPinned ? 'sticky' : 'relative',\r\n background: isPinned ? 'hsl(var(--background))' : 'hsl(var(--background))',\r\n width: column.getSize(),\r\n zIndex: isPinned ? 1 : 0,\r\n }\r\n}\r\n\r\nexport function getFilterOperators(filterVariant: FilterVariant) {\r\n const operatorMap: Record<\r\n FilterVariant,\r\n { label: string; value: FilterOperator }[]\r\n > = {\r\n text: dataTableConfig.textOperators,\r\n number: dataTableConfig.numericOperators,\r\n range: dataTableConfig.numericOperators,\r\n date: dataTableConfig.dateOperators,\r\n dateRange: dataTableConfig.dateOperators,\r\n boolean: dataTableConfig.booleanOperators,\r\n select: dataTableConfig.selectOperators,\r\n multiSelect: dataTableConfig.multiSelectOperators,\r\n }\r\n\r\n return operatorMap[filterVariant] ?? dataTableConfig.textOperators\r\n}\r\n\r\nexport function getDefaultFilterOperator(filterVariant: FilterVariant) {\r\n const operators = getFilterOperators(filterVariant)\r\n\r\n return operators[0]?.value ?? (filterVariant === 'text' ? 'iLike' : 'eq')\r\n}\r\n\r\nexport function getValidFilters<TData>(\r\n filters: ExtendedColumnFilter<TData>[]\r\n): ExtendedColumnFilter<TData>[] {\r\n return filters.filter(\r\n filter =>\r\n filter.operator === 'isEmpty' ||\r\n filter.operator === 'isNotEmpty' ||\r\n (Array.isArray(filter.value)\r\n ? filter.value.length > 0\r\n : filter.value !== '' &&\r\n filter.value !== null &&\r\n filter.value !== undefined)\r\n )\r\n}\r\n"],"names":["getCommonPinningStyles","column","withBorder","isPinned","isLastLeftPinnedColumn","isFirstRightPinnedColumn","undefined","getFilterOperators","filterVariant","operatorMap","dataTableConfig","getDefaultFilterOperator","operators","getValidFilters","filters","filter","Array"],"mappings":"yCASO,SAASA,EAA8B,CAC5CC,OAAAA,CAAM,CACNC,WAAAA,EAAa,EAAK,CAInB,EACC,IAAMC,EAAWF,EAAO,WAAW,GAC7BG,EACJD,AAAa,SAAbA,GAAuBF,EAAO,eAAe,CAAC,QAC1CI,EACJF,AAAa,UAAbA,GAAwBF,EAAO,gBAAgB,CAAC,SAElD,MAAO,CACL,UAAWC,EACPE,EACE,2CACAC,EACE,0CACAC,KAAAA,EACJA,KAAAA,EACJ,KAAMH,AAAa,SAAbA,EAAsB,CAAC,EAAEF,EAAO,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAGK,KAAAA,EAC7D,MAAOH,AAAa,UAAbA,EAAuB,CAAC,EAAEF,EAAO,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAGK,KAAAA,EAChE,QAASH,EAAW,IAAO,EAC3B,SAAUA,EAAW,SAAW,WAChC,WAAuB,yBACvB,MAAOF,EAAO,OAAO,GACrB,OAAQE,GAAAA,CACV,CACF,CAEO,SAASI,EAAmBC,CAA4B,EAe7D,MAAOC,AAXH,EACF,KAAMC,EAAAA,eAAAA,CAAAA,aAA6B,CACnC,OAAQA,EAAAA,eAAAA,CAAAA,gBAAgC,CACxC,MAAOA,EAAAA,eAAAA,CAAAA,gBAAgC,CACvC,KAAMA,EAAAA,eAAAA,CAAAA,aAA6B,CACnC,UAAWA,EAAAA,eAAAA,CAAAA,aAA6B,CACxC,QAASA,EAAAA,eAAAA,CAAAA,gBAAgC,CACzC,OAAQA,EAAAA,eAAAA,CAAAA,eAA+B,CACvC,YAAaA,EAAAA,eAAAA,CAAAA,oBAAoC,AACnD,EAEkB,CAACF,EAAc,EAAIE,EAAAA,eAAAA,CAAAA,aAA6B,AACpE,CAEO,SAASC,EAAyBH,CAA4B,EACnE,IAAMI,EAAYL,EAAmBC,GAErC,OAAOI,CAAS,CAAC,EAAE,EAAE,OAAUJ,CAAAA,AAAkB,SAAlBA,EAA2B,QAAU,IAAG,CACzE,CAEO,SAASK,EACdC,CAAsC,EAEtC,OAAOA,EAAQ,MAAM,CACnBC,AAAAA,GACEA,AAAoB,YAApBA,EAAO,QAAQ,EACfA,AAAoB,eAApBA,EAAO,QAAQ,EACdC,CAAAA,MAAM,OAAO,CAACD,EAAO,KAAK,EACvBA,EAAO,KAAK,CAAC,MAAM,CAAG,EACtBA,AAAiB,KAAjBA,EAAO,KAAK,EACZA,AAAiB,OAAjBA,EAAO,KAAK,EACZA,AAAiBT,KAAAA,IAAjBS,EAAO,KAAK,AAAa,EAEnC,Q"}
1
+ {"version":3,"file":"lib\\data-table.js","sources":["webpack://@gbmtech/aurora-ui/./src/lib/data-table.ts"],"sourcesContent":["import type {\r\n ExtendedColumnFilter,\r\n FilterOperator,\r\n FilterVariant,\r\n} from '@/types/data-table'\r\nimport type { Column } from '@tanstack/react-table'\r\n\r\nimport { dataTableConfig } from '@/lib/data-table-config'\r\n\r\nexport function getCommonPinningStyles<TData>({\r\n column,\r\n withBorder = false,\r\n}: {\r\n column: Column<TData>\r\n withBorder?: boolean\r\n}): React.CSSProperties {\r\n const isPinned = column.getIsPinned()\r\n const isLastLeftPinnedColumn =\r\n isPinned === 'left' && column.getIsLastColumn('left')\r\n const isFirstRightPinnedColumn =\r\n isPinned === 'right' && column.getIsFirstColumn('right')\r\n\r\n return {\r\n boxShadow: withBorder\r\n ? isLastLeftPinnedColumn\r\n ? '-4px 0 4px -4px hsl(var(--stroke)) inset'\r\n : isFirstRightPinnedColumn\r\n ? '4px 0 4px -4px hsl(var(--stroke)) inset'\r\n : undefined\r\n : undefined,\r\n left: isPinned === 'left' ? `${column.getStart('left')}px` : undefined,\r\n right: isPinned === 'right' ? `${column.getAfter('right')}px` : undefined,\r\n opacity: isPinned ? 0.97 : 1,\r\n position: isPinned ? 'sticky' : 'relative',\r\n background: isPinned ? 'hsl(var(--background))' : 'hsl(var(--background))',\r\n width: column.getSize(),\r\n zIndex: isPinned ? 1 : 0,\r\n }\r\n}\r\n\r\nexport function getFilterOperators(filterVariant: FilterVariant) {\r\n const operatorMap: Record<\r\n FilterVariant,\r\n { label: string; value: FilterOperator }[]\r\n > = {\r\n text: dataTableConfig.textOperators,\r\n number: dataTableConfig.numericOperators,\r\n range: dataTableConfig.numericOperators,\r\n date: dataTableConfig.dateOperators,\r\n dateRange: dataTableConfig.dateOperators,\r\n boolean: dataTableConfig.booleanOperators,\r\n select: dataTableConfig.selectOperators,\r\n multiSelect: dataTableConfig.multiSelectOperators,\r\n }\r\n\r\n return operatorMap[filterVariant] ?? dataTableConfig.textOperators\r\n}\r\n\r\nexport function getDefaultFilterOperator(filterVariant: FilterVariant) {\r\n const operators = getFilterOperators(filterVariant)\r\n\r\n return operators[0]?.value ?? (filterVariant === 'text' ? 'iLike' : 'eq')\r\n}\r\n\r\nexport function getValidFilters<TData>(\r\n filters: ExtendedColumnFilter<TData>[]\r\n): ExtendedColumnFilter<TData>[] {\r\n return filters.filter(\r\n filter =>\r\n filter.operator === 'isEmpty' ||\r\n filter.operator === 'isNotEmpty' ||\r\n (Array.isArray(filter.value)\r\n ? filter.value.length > 0\r\n : filter.value !== '' &&\r\n filter.value !== null &&\r\n filter.value !== undefined)\r\n )\r\n}\r\n"],"names":["getCommonPinningStyles","column","withBorder","isPinned","isLastLeftPinnedColumn","isFirstRightPinnedColumn","undefined","getFilterOperators","filterVariant","operatorMap","dataTableConfig","getDefaultFilterOperator","operators","getValidFilters","filters","filter","Array"],"mappings":"yCASO,SAASA,EAA8B,CAC5CC,OAAAA,CAAM,CACNC,WAAAA,EAAa,EAAK,CAInB,EACC,IAAMC,EAAWF,EAAO,WAAW,GAC7BG,EACJD,AAAa,SAAbA,GAAuBF,EAAO,eAAe,CAAC,QAC1CI,EACJF,AAAa,UAAbA,GAAwBF,EAAO,gBAAgB,CAAC,SAElD,MAAO,CACL,UAAWC,EACPE,EACE,2CACAC,EACE,0CACAC,OACJA,OACJ,KAAMH,AAAa,SAAbA,EAAsB,CAAC,EAAEF,EAAO,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAGK,OAC7D,MAAOH,AAAa,UAAbA,EAAuB,CAAC,EAAEF,EAAO,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAGK,OAChE,QAASH,EAAW,IAAO,EAC3B,SAAUA,EAAW,SAAW,WAChC,WAAuB,yBACvB,MAAOF,EAAO,OAAO,GACrB,OAAQE,GAAAA,CACV,CACF,CAEO,SAASI,EAAmBC,CAA4B,EAe7D,MAAOC,AAXH,EACF,KAAMC,EAAAA,eAAAA,CAAAA,aAA6B,CACnC,OAAQA,EAAAA,eAAAA,CAAAA,gBAAgC,CACxC,MAAOA,EAAAA,eAAAA,CAAAA,gBAAgC,CACvC,KAAMA,EAAAA,eAAAA,CAAAA,aAA6B,CACnC,UAAWA,EAAAA,eAAAA,CAAAA,aAA6B,CACxC,QAASA,EAAAA,eAAAA,CAAAA,gBAAgC,CACzC,OAAQA,EAAAA,eAAAA,CAAAA,eAA+B,CACvC,YAAaA,EAAAA,eAAAA,CAAAA,oBAAoC,AACnD,EAEkB,CAACF,EAAc,EAAIE,EAAAA,eAAAA,CAAAA,aAA6B,AACpE,CAEO,SAASC,EAAyBH,CAA4B,EACnE,IAAMI,EAAYL,EAAmBC,GAErC,OAAOI,CAAS,CAAC,EAAE,EAAE,OAAUJ,CAAAA,AAAkB,SAAlBA,EAA2B,QAAU,IAAG,CACzE,CAEO,SAASK,EACdC,CAAsC,EAEtC,OAAOA,EAAQ,MAAM,CACnBC,AAAAA,GACEA,AAAoB,YAApBA,EAAO,QAAQ,EACfA,AAAoB,eAApBA,EAAO,QAAQ,EACdC,CAAAA,MAAM,OAAO,CAACD,EAAO,KAAK,EACvBA,EAAO,KAAK,CAAC,MAAM,CAAG,EACtBA,AAAiB,KAAjBA,EAAO,KAAK,EACZA,AAAiB,OAAjBA,EAAO,KAAK,EACZA,AAAiBT,SAAjBS,EAAO,KAAK,AAAa,EAEnC,Q"}
@@ -1 +1 @@
1
- {"version":3,"file":"lib\\id.js","sources":["webpack://@gbmtech/aurora-ui/./src/lib/id.ts"],"sourcesContent":["import { customAlphabet } from 'nanoid'\r\n\r\nconst prefixes: Record<string, unknown> = {}\r\n\r\ninterface GenerateIdOptions {\r\n length?: number\r\n separator?: string\r\n}\r\n\r\nexport function generateId(\r\n prefixOrOptions?: keyof typeof prefixes | GenerateIdOptions,\r\n inputOptions: GenerateIdOptions = {}\r\n) {\r\n const finalOptions =\r\n typeof prefixOrOptions === 'object' ? prefixOrOptions : inputOptions\r\n\r\n const prefix =\r\n typeof prefixOrOptions === 'object' ? undefined : prefixOrOptions\r\n\r\n const { length = 12, separator = '_' } = finalOptions\r\n const id = customAlphabet(\r\n '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',\r\n length\r\n )()\r\n\r\n return prefix ? `${prefixes[prefix]}${separator}${id}` : id\r\n}\r\n"],"names":["prefixes","generateId","prefixOrOptions","inputOptions","prefix","undefined","length","separator","id","customAlphabet"],"mappings":"yBAEA,IAAMA,EAAoC,CAAC,EAOpC,SAASC,EACdC,CAA2D,CAC3DC,EAAkC,CAAC,CAAC,EAKpC,IAAMC,EACJ,AAA2B,UAA3B,OAAOF,EAA+BG,KAAAA,EAAYH,EAE9C,CAAEI,OAAAA,EAAS,EAAE,CAAEC,UAAAA,EAAY,GAAG,CAAE,CALpC,AAA2B,UAA3B,OAAOL,EAA+BA,EAAkBC,EAMpDK,EAAKC,AAAAA,GAAAA,EAAAA,cAAAA,AAAAA,EACT,iEACAH,KAGF,OAAOF,EAAS,CAAC,EAAEJ,CAAQ,CAACI,EAAO,CAAC,EAAEG,EAAU,EAAEC,EAAG,CAAC,CAAGA,CAC3D,Q"}
1
+ {"version":3,"file":"lib\\id.js","sources":["webpack://@gbmtech/aurora-ui/./src/lib/id.ts"],"sourcesContent":["import { customAlphabet } from 'nanoid'\r\n\r\nconst prefixes: Record<string, unknown> = {}\r\n\r\ninterface GenerateIdOptions {\r\n length?: number\r\n separator?: string\r\n}\r\n\r\nexport function generateId(\r\n prefixOrOptions?: keyof typeof prefixes | GenerateIdOptions,\r\n inputOptions: GenerateIdOptions = {}\r\n) {\r\n const finalOptions =\r\n typeof prefixOrOptions === 'object' ? prefixOrOptions : inputOptions\r\n\r\n const prefix =\r\n typeof prefixOrOptions === 'object' ? undefined : prefixOrOptions\r\n\r\n const { length = 12, separator = '_' } = finalOptions\r\n const id = customAlphabet(\r\n '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',\r\n length\r\n )()\r\n\r\n return prefix ? `${prefixes[prefix]}${separator}${id}` : id\r\n}\r\n"],"names":["prefixes","generateId","prefixOrOptions","inputOptions","prefix","undefined","length","separator","id","customAlphabet"],"mappings":"yBAEA,IAAMA,EAAoC,CAAC,EAOpC,SAASC,EACdC,CAA2D,CAC3DC,EAAkC,CAAC,CAAC,EAKpC,IAAMC,EACJ,AAA2B,UAA3B,OAAOF,EAA+BG,OAAYH,EAE9C,CAAEI,OAAAA,EAAS,EAAE,CAAEC,UAAAA,EAAY,GAAG,CAAE,CALpC,AAA2B,UAA3B,OAAOL,EAA+BA,EAAkBC,EAMpDK,EAAKC,AAAAA,GAAAA,EAAAA,cAAAA,AAAAA,EACT,iEACAH,KAGF,OAAOF,EAAS,CAAC,EAAEJ,CAAQ,CAACI,EAAO,CAAC,EAAEG,EAAU,EAAEC,EAAG,CAAC,CAAGA,CAC3D,Q"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gbmtech/aurora-ui",
3
- "version": "0.2.58",
3
+ "version": "0.2.59",
4
4
  "main": "./dist/cjs/index.cjs",
5
5
  "module": "./dist/esm/index.js",
6
6
  "types": "./dist/types/index.d.ts",
@@ -33,7 +33,7 @@
33
33
  },
34
34
  "devDependencies": {
35
35
  "@rsbuild/plugin-react": "^1.3.0",
36
- "@rslib/core": "^0.6.7",
36
+ "@rslib/core": "^0.8.0",
37
37
  "@tailwindcss/postcss": "^4.1.4",
38
38
  "@types/node": "^22.14.1",
39
39
  "postcss": "^8.5.3",