@gbmtech/aurora-ui 0.2.57 → 0.2.59
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/alert-dialog.cjs.map +1 -1
- package/dist/cjs/components/autocomplete/autocomplete-content.cjs.map +1 -1
- package/dist/cjs/components/autocomplete/autocomplete-context.cjs.map +1 -1
- package/dist/cjs/components/autocomplete/autocomplete-empty.cjs.map +1 -1
- package/dist/cjs/components/autocomplete/autocomplete-input.cjs.map +1 -1
- package/dist/cjs/components/autocomplete/autocomplete-item.cjs.map +1 -1
- package/dist/cjs/components/autocomplete/autocomplete-list.cjs.map +1 -1
- package/dist/cjs/components/autocomplete/autocomplete.cjs.map +1 -1
- package/dist/cjs/components/autocomplete/index.cjs +2 -1
- package/dist/cjs/components/autocomplete/index.cjs.map +1 -0
- package/dist/cjs/components/avatar.cjs.map +1 -1
- package/dist/cjs/components/badge.cjs.map +1 -1
- package/dist/cjs/components/breadcrumb.cjs.map +1 -1
- package/dist/cjs/components/button.cjs.map +1 -1
- package/dist/cjs/components/calendar.cjs.map +1 -1
- package/dist/cjs/components/checkbox.cjs.map +1 -1
- package/dist/cjs/components/combobox.cjs.map +1 -1
- package/dist/cjs/components/command.cjs.map +1 -1
- package/dist/cjs/components/context-menu.cjs.map +1 -1
- package/dist/cjs/components/data-table/data-table-action-bar.cjs.map +1 -1
- package/dist/cjs/components/data-table/data-table-advanced-toolbar.cjs.map +1 -1
- package/dist/cjs/components/data-table/data-table-column-header.cjs.map +1 -1
- package/dist/cjs/components/data-table/data-table-date-filter.cjs.map +1 -1
- package/dist/cjs/components/data-table/data-table-faceted-filter.cjs.map +1 -1
- package/dist/cjs/components/data-table/data-table-filter-list.cjs.map +1 -1
- package/dist/cjs/components/data-table/data-table-filter-menu.cjs.map +1 -1
- package/dist/cjs/components/data-table/data-table-pagination.cjs.map +1 -1
- package/dist/cjs/components/data-table/data-table-range-filter.cjs.map +1 -1
- package/dist/cjs/components/data-table/data-table-skeleton.cjs.map +1 -1
- package/dist/cjs/components/data-table/data-table-slider-filter.cjs.map +1 -1
- package/dist/cjs/components/data-table/data-table-sort-list.cjs.map +1 -1
- package/dist/cjs/components/data-table/data-table-toolbar.cjs.map +1 -1
- package/dist/cjs/components/data-table/data-table-view-options.cjs.map +1 -1
- package/dist/cjs/components/data-table/data-table.cjs.map +1 -1
- package/dist/cjs/components/data-table/index.cjs +2 -1
- package/dist/cjs/components/data-table/index.cjs.map +1 -0
- package/dist/cjs/components/date-picker-with-range.cjs.map +1 -1
- package/dist/cjs/components/date-picker.cjs.map +1 -1
- package/dist/cjs/components/date-time-picker-with-range.cjs.map +1 -1
- package/dist/cjs/components/date-time-picker.cjs.map +1 -1
- package/dist/cjs/components/dialog.cjs.map +1 -1
- package/dist/cjs/components/dropdown-menu.cjs.map +1 -1
- package/dist/cjs/components/faceted.cjs.map +1 -1
- package/dist/cjs/components/form.cjs.map +1 -1
- package/dist/cjs/components/icons/rumo.cjs.map +1 -1
- package/dist/cjs/components/icons/vli.cjs.map +1 -1
- package/dist/cjs/components/input-otp.cjs.map +1 -1
- package/dist/cjs/components/input-password.cjs.map +1 -1
- package/dist/cjs/components/input.cjs.map +1 -1
- package/dist/cjs/components/label.cjs.map +1 -1
- package/dist/cjs/components/mask-input.cjs.map +1 -1
- package/dist/cjs/components/multi-select.cjs.map +1 -1
- package/dist/cjs/components/page-layout/index.cjs.map +1 -1
- package/dist/cjs/components/page-layout/page-layout-breadcrumb.cjs.map +1 -1
- package/dist/cjs/components/page-layout/page-layout-content.cjs.map +1 -1
- package/dist/cjs/components/page-layout/page-layout-header.cjs.map +1 -1
- package/dist/cjs/components/page-layout/page-layout-root.cjs.map +1 -1
- package/dist/cjs/components/page-layout/page-layout-title.cjs.map +1 -1
- package/dist/cjs/components/pagination.cjs.map +1 -1
- package/dist/cjs/components/popover.cjs.map +1 -1
- package/dist/cjs/components/radio-group.cjs.map +1 -1
- package/dist/cjs/components/scroll-area.cjs.map +1 -1
- package/dist/cjs/components/select.cjs.map +1 -1
- package/dist/cjs/components/separator.cjs.map +1 -1
- package/dist/cjs/components/sheet/index.cjs +2 -1
- package/dist/cjs/components/sheet/index.cjs.map +1 -0
- package/dist/cjs/components/sheet/sheet-content-variants.cjs.map +1 -1
- package/dist/cjs/components/sheet/sheet.cjs.map +1 -1
- package/dist/cjs/components/sidebar/app-layout.cjs.map +1 -1
- package/dist/cjs/components/sidebar/index.cjs +2 -1
- package/dist/cjs/components/sidebar/index.cjs.map +1 -0
- package/dist/cjs/components/sidebar/intl/messages.cjs.map +1 -1
- package/dist/cjs/components/sidebar/logo.cjs.map +1 -1
- package/dist/cjs/components/sidebar/nav-modules.cjs.map +1 -1
- package/dist/cjs/components/sidebar/nav-sub-item.cjs.map +1 -1
- package/dist/cjs/components/sidebar/nav-user.cjs.map +1 -1
- package/dist/cjs/components/sidebar/sidebar-icons.cjs.map +1 -1
- package/dist/cjs/components/sidebar/sidebar.cjs.map +1 -1
- package/dist/cjs/components/skeleton.cjs.map +1 -1
- package/dist/cjs/components/slider.cjs.map +1 -1
- package/dist/cjs/components/sortable.cjs.map +1 -1
- package/dist/cjs/components/spinner.cjs.map +1 -1
- package/dist/cjs/components/switch.cjs.map +1 -1
- package/dist/cjs/components/table-expandable.cjs.map +1 -1
- package/dist/cjs/components/table.cjs.map +1 -1
- package/dist/cjs/components/tabs/index.cjs.map +1 -1
- package/dist/cjs/components/tabs/tabs-content.cjs.map +1 -1
- package/dist/cjs/components/tabs/tabs-list.cjs.map +1 -1
- package/dist/cjs/components/tabs/tabs-root.cjs.map +1 -1
- package/dist/cjs/components/tabs/tabs-trigger.cjs.map +1 -1
- package/dist/cjs/components/textarea.cjs.map +1 -1
- package/dist/cjs/components/time-picker-input.cjs.map +1 -1
- package/dist/cjs/components/time-picker.cjs.map +1 -1
- package/dist/cjs/components/title.cjs.map +1 -1
- package/dist/cjs/components/tokens-grid.cjs.map +1 -1
- package/dist/cjs/components/tooltip.cjs.map +1 -1
- package/dist/cjs/hooks/use-callback-ref.cjs.map +1 -1
- package/dist/cjs/hooks/use-data-table.cjs.map +1 -1
- package/dist/cjs/hooks/use-debounce.cjs.map +1 -1
- package/dist/cjs/hooks/use-debounced-callback.cjs.map +1 -1
- package/dist/cjs/hooks/use-mobile.cjs.map +1 -1
- package/dist/cjs/index.cjs +2 -1
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/cjs/lib/composition.cjs.map +1 -1
- package/dist/cjs/lib/data-table-config.cjs.map +1 -1
- package/dist/cjs/lib/data-table.cjs.map +1 -1
- package/dist/cjs/lib/format.cjs.map +1 -1
- package/dist/cjs/lib/id.cjs.map +1 -1
- package/dist/cjs/lib/index.cjs +2 -1
- package/dist/cjs/lib/index.cjs.map +1 -0
- package/dist/cjs/lib/parsers.cjs.map +1 -1
- package/dist/cjs/lib/utils.cjs.map +1 -1
- package/dist/cjs/primitive/input.cjs.map +1 -1
- package/dist/cjs/tokens/colors.cjs.map +1 -1
- package/dist/cjs/tokens/index.cjs +2 -1
- package/dist/cjs/tokens/index.cjs.map +1 -0
- package/dist/cjs/types/data-table.cjs +2 -1
- package/dist/cjs/types/data-table.cjs.map +1 -0
- package/dist/cjs/types/index.cjs +2 -1
- package/dist/cjs/types/index.cjs.map +1 -0
- package/dist/cjs/types/module.cjs +2 -1
- package/dist/cjs/types/module.cjs.map +1 -0
- package/dist/cjs/types/user.cjs +2 -1
- package/dist/cjs/types/user.cjs.map +1 -0
- package/dist/cjs/utils/phosphor-icon-map.cjs.map +1 -1
- package/dist/cjs/utils/time-picker.cjs.map +1 -1
- package/dist/esm/components/calendar.js.map +1 -1
- package/dist/esm/components/data-table/data-table-date-filter.js.map +1 -1
- package/dist/esm/components/data-table/data-table-faceted-filter.js.map +1 -1
- package/dist/esm/components/data-table/data-table-filter-list.js.map +1 -1
- package/dist/esm/components/data-table/data-table-filter-menu.js.map +1 -1
- package/dist/esm/components/data-table/data-table-range-filter.js.map +1 -1
- package/dist/esm/components/data-table/data-table-slider-filter.js.map +1 -1
- package/dist/esm/components/data-table/index.js +1 -1
- package/dist/esm/components/date-time-picker-with-range.js.map +1 -1
- package/dist/esm/components/faceted.js.map +1 -1
- package/dist/esm/components/form.js.map +1 -1
- package/dist/esm/components/pagination.js.map +1 -1
- package/dist/esm/components/sidebar/intl/messages.js.map +1 -1
- package/dist/esm/components/sidebar/nav-user.js.map +1 -1
- package/dist/esm/components/sidebar/sidebar.d.ts.map +1 -1
- package/dist/esm/components/sidebar/sidebar.js.map +1 -1
- package/dist/esm/components/sortable.js.map +1 -1
- package/dist/esm/components/spinner.js.map +1 -1
- package/dist/esm/components/table-expandable.js.map +1 -1
- package/dist/esm/hooks/use-mobile.js.map +1 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/lib/data-table.js.map +1 -1
- package/dist/esm/lib/id.js.map +1 -1
- 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,
|
|
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,
|
|
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,
|
|
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,
|
|
1
|
+
{"version":3,"file":"components\\sidebar\\nav-user.js","sources":["webpack://@gbmtech/aurora-ui/./src/components/sidebar/nav-user.tsx"],"sourcesContent":["\n\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n} from '@/components/dropdown-menu'\nimport { ChevronsUpDown, Languages, LogOut, UserRound } from 'lucide-react'\n\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/avatar'\nimport type { User } from '@/types/user'\nimport messages from './intl/messages'\nimport {\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n useSidebar,\n} from './sidebar'\n\ninterface NavUser {\n user: User\n}\n\nexport function NavUser({ user }: NavUser) {\n const { isMobile, lang } = useSidebar()\n\n return (\n <SidebarMenu>\n <SidebarMenuItem>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <SidebarMenuButton\n size=\"lg\"\n className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n >\n <Avatar className=\"size-8 rounded-lg group-data-[collapsible=icon]:size-10\">\n <AvatarImage src={undefined} alt={user.name} />\n <AvatarFallback className=\"rounded-lg\">\n <UserRound className=\"size-4\" />\n </AvatarFallback>\n </Avatar>\n <div className=\"grid flex-1 text-left text-sm leading-tight\">\n <span className=\"truncate font-medium\">{user.name}</span>\n <span className=\"truncate text-gbm-gray text-xs\">\n {user.email}\n </span>\n </div>\n <ChevronsUpDown className=\"ml-auto size-4\" />\n </SidebarMenuButton>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n className=\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\"\n side={isMobile ? 'bottom' : 'right'}\n align=\"end\"\n sideOffset={4}\n >\n <DropdownMenuLabel className=\"p-0 font-normal\">\n <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n <Avatar className=\"h-8 w-8 rounded-lg\">\n <AvatarImage src={undefined} alt={user.name} />\n <AvatarFallback className=\"rounded-lg\">\n <UserRound className=\"size-4\" />\n </AvatarFallback>\n </Avatar>\n <div className=\"grid flex-1 text-left text-sm leading-tight\">\n <span className=\"truncate font-semibold\">{user.name}</span>\n <span className=\"truncate text-xs\">{user.email}</span>\n </div>\n </div>\n </DropdownMenuLabel>\n <DropdownMenuGroup>\n <DropdownMenuSub>\n <DropdownMenuSubTrigger>\n <Languages className=\"mr-2 size-4\" />\n {messages[lang].language}\n </DropdownMenuSubTrigger>\n <DropdownMenuSubContent>\n <DropdownMenuItem className=\"gap-2\">\n <img src=\"/brazil.svg\" alt=\"\" />\n PT-BR\n </DropdownMenuItem>\n <DropdownMenuItem className=\"gap-2\">\n <img src=\"/united-states.svg\" alt=\"\" />\n EN-US\n </DropdownMenuItem>\n <DropdownMenuItem className=\"gap-2\">\n <img src=\"/spain.svg\" alt=\"\" />\n ES\n </DropdownMenuItem>\n </DropdownMenuSubContent>\n </DropdownMenuSub>\n </DropdownMenuGroup>\n <DropdownMenuSeparator />\n <DropdownMenuItem asChild>\n <a href=\"/api/auth/sign-out\">\n <LogOut className=\"mr-2 size-4\" />\n {messages[lang]['sign-out']}\n </a>\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </SidebarMenuItem>\n </SidebarMenu>\n )\n}\n"],"names":["NavUser","user","isMobile","lang","useSidebar","SidebarMenu","SidebarMenuItem","DropdownMenu","DropdownMenuTrigger","SidebarMenuButton","Avatar","AvatarImage","undefined","AvatarFallback","UserRound","ChevronsUpDown","DropdownMenuContent","DropdownMenuLabel","DropdownMenuGroup","DropdownMenuSub","DropdownMenuSubTrigger","Languages","messages","DropdownMenuSubContent","DropdownMenuItem","DropdownMenuSeparator","LogOut"],"mappings":";4MA8BO,SAASA,EAAQ,CAAEC,KAAAA,CAAI,CAAW,EACvC,GAAM,CAAEC,SAAAA,CAAQ,CAAEC,KAAAA,CAAI,CAAE,CAAGC,GAAAA,EAAAA,UAAAA,IAE3B,MACE,UAACC,EAAAA,WAAWA,CAAAA,C,SACV,UAACC,EAAAA,eAAeA,CAAAA,C,SACd,WAACC,EAAAA,YAAYA,CAAAA,C,UACX,UAACC,EAAAA,mBAAmBA,CAAAA,CAAC,QAAO,G,SAC1B,WAACC,EAAAA,iBAAiBA,CAAAA,CAChB,KAAK,KACL,UAAU,uF,UAEV,WAACC,EAAAA,MAAMA,CAAAA,CAAC,UAAU,0D,UAChB,UAACC,EAAAA,WAAWA,CAAAA,CAAC,IAAKC,OAAW,IAAKX,EAAK,IAAI,GAC3C,UAACY,EAAAA,cAAcA,CAAAA,CAAC,UAAU,a,SACxB,UAACC,EAAAA,SAASA,CAAAA,CAAC,UAAU,Q,QAGzB,WAAC,OAAI,UAAU,8C,UACb,UAAC,QAAK,UAAU,uB,SAAwBb,EAAK,IAAI,GACjD,UAAC,QAAK,UAAU,iC,SACbA,EAAK,KAAK,MAGf,UAACc,EAAAA,cAAcA,CAAAA,CAAC,UAAU,gB,QAG9B,WAACC,EAAAA,mBAAmBA,CAAAA,CAClB,UAAU,8DACV,KAAMd,EAAW,SAAW,QAC5B,MAAM,MACN,WAAY,E,UAEZ,UAACe,EAAAA,iBAAiBA,CAAAA,CAAC,UAAU,kB,SAC3B,WAAC,OAAI,UAAU,wD,UACb,WAACP,EAAAA,MAAMA,CAAAA,CAAC,UAAU,qB,UAChB,UAACC,EAAAA,WAAWA,CAAAA,CAAC,IAAKC,OAAW,IAAKX,EAAK,IAAI,GAC3C,UAACY,EAAAA,cAAcA,CAAAA,CAAC,UAAU,a,SACxB,UAACC,EAAAA,SAASA,CAAAA,CAAC,UAAU,Q,QAGzB,WAAC,OAAI,UAAU,8C,UACb,UAAC,QAAK,UAAU,yB,SAA0Bb,EAAK,IAAI,GACnD,UAAC,QAAK,UAAU,mB,SAAoBA,EAAK,KAAK,WAIpD,UAACiB,EAAAA,iBAAiBA,CAAAA,C,SAChB,WAACC,EAAAA,eAAeA,CAAAA,C,UACd,WAACC,EAAAA,sBAAsBA,CAAAA,C,UACrB,UAACC,EAAAA,SAASA,CAAAA,CAAC,UAAU,a,GACpBC,EAAAA,OAAQ,CAACnB,EAAK,CAAC,QAAQ,C,GAE1B,WAACoB,EAAAA,sBAAsBA,CAAAA,C,UACrB,WAACC,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,Q,UAC1B,UAAC,OAAI,IAAI,cAAc,IAAI,E,GAAK,Q,GAGlC,WAACA,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,Q,UAC1B,UAAC,OAAI,IAAI,qBAAqB,IAAI,E,GAAK,Q,GAGzC,WAACA,EAAAA,gBAAgBA,CAAAA,CAAC,UAAU,Q,UAC1B,UAAC,OAAI,IAAI,aAAa,IAAI,E,GAAK,K,WAMvC,UAACC,EAAAA,qBAAqBA,CAAAA,CAAAA,GACtB,UAACD,EAAAA,gBAAgBA,CAAAA,CAAC,QAAO,G,SACvB,WAAC,KAAE,KAAK,qB,UACN,UAACE,EAAAA,MAAMA,CAAAA,CAAC,UAAU,a,GACjBJ,EAAAA,OAAQ,CAACnB,EAAK,CAAC,WAAW,C,cAQ3C,Q"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../../../src/components/sidebar/sidebar.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,EAAE,YAAY,EAAU,MAAM,OAAO,CAAA;AAE5C,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AASxC,OAAO,EAEL,cAAc,EAGf,MAAM,YAAY,CAAA;AASnB,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,UAAU,GAAG,WAAW,CAAA;IAC/B,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IAChC,UAAU,EAAE,OAAO,CAAA;IACnB,aAAa,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACtC,QAAQ,EAAE,OAAO,CAAA;IACjB,aAAa,EAAE,MAAM,IAAI,CAAA;IACzB,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAAA;CAC/B,CAAA;AAID,iBAAS,UAAU,
|
|
1
|
+
{"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../../../src/components/sidebar/sidebar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components\\sidebar\\sidebar.js","sources":["webpack://@gbmtech/aurora-ui/./src/components/sidebar/sidebar.tsx"],"sourcesContent":["\n\nimport { Slot } from '@radix-ui/react-slot'\nimport * as React from 'react'\n\nimport { useIsMobile } from '@/hooks/use-mobile'\nimport { VariantProps, cn, tv } from '@/lib'\nimport { PanelLeftIcon } from 'lucide-react'\nimport { Button } from '../button'\nimport { Separator } from '../separator'\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from '../sheet'\nimport { Skeleton } from '../skeleton'\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from '../tooltip'\n\nconst SIDEBAR_COOKIE_NAME = 'gbm_sidebar_open'\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = '16rem'\nconst SIDEBAR_WIDTH_MOBILE = '18rem'\nconst SIDEBAR_WIDTH_ICON = '4.5rem'\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'b'\n\ntype SidebarContextProps = {\n state: 'expanded' | 'collapsed'\n open: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n isMobile: boolean\n toggleSidebar: () => void\n lang: 'pt-br' | 'en-us' | 'es'\n}\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext)\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.')\n }\n\n return context\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n lang = 'pt-br',\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n lang?: 'pt-br' | 'en-us' | 'es'\n}) {\n const isMobile = useIsMobile()\n const [openMobile, setOpenMobile] = React.useState(false)\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen)\n const open = openProp ?? _open\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === 'function' ? value(open) : value\n if (setOpenProp) {\n setOpenProp(openState)\n } else {\n _setOpen(openState)\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n },\n [setOpenProp, open]\n )\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile(open => !open) : setOpen(open => !open)\n }, [isMobile, setOpen, setOpenMobile])\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener('keydown', handleKeyDown)\n return () => window.removeEventListener('keydown', handleKeyDown)\n }, [toggleSidebar])\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? 'expanded' : 'collapsed'\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n lang,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n )\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH,\n '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n 'group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar',\n className\n )}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n )\n}\n\nfunction Sidebar({\n side = 'left',\n variant = 'sidebar',\n collapsible = 'icon',\n className,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n side?: 'left' | 'right'\n variant?: 'sidebar' | 'floating' | 'inset'\n collapsible?: 'offcanvas' | 'icon' | 'none'\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n if (collapsible === 'none') {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n 'flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground',\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n )\n }\n\n return (\n <div\n className=\"group peer hidden text-sidebar-foreground md:block\"\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n 'relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear',\n 'group-data-[collapsible=offcanvas]:w-0',\n 'group-data-[side=right]:rotate-180',\n variant === 'floating' || variant === 'inset'\n ? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)'\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n 'fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex',\n side === 'left'\n ? 'left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]'\n : 'right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]',\n // Adjust the padding for floating and inset variants.\n variant === 'floating' || variant === 'inset'\n ? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l',\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className=\"flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow-sm\"\n >\n {children}\n </div>\n </div>\n </div>\n )\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn('size-7', className)}\n onClick={event => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<'main'>) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n 'relative flex w-full flex-1 flex-col bg-background',\n 'md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2 md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn(\n 'flex flex-col gap-2 p-5 group-data-[collapsible=icon]:p-4',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn(\n 'flex flex-col gap-2 p-5 group-data-[collapsible=icon]:p-4',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn('mx-2 w-auto bg-sidebar-border', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n 'flex min-h-0 flex-1 flex-col gap-2 overflow-y-auto group-data-[collapsible=icon]:overflow-hidden',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn(\n 'relative flex w-full min-w-0 flex-col px-5 group-data-[collapsible=icon]:p-4',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'div'> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : 'div'\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n 'flex h-8 shrink-0 items-center rounded-md px-2 font-medium text-sidebar-foreground/70 text-xs outline-hidden ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',\n 'group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn('flex w-full min-w-0 flex-col gap-1', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn('group/menu-item relative', className)}\n {...props}\n />\n )\n}\n\nconst sidebarMenuButtonVariants = tv({\n base: 'peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-10! group-data-[collapsible=icon]:p-2.5! group-data-[collapsible=icon]:gap-3 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 group-data-[collapsible=icon]:[&>svg]:size-5',\n variants: {\n variant: {\n default: 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n outline:\n 'bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]',\n },\n size: {\n default: 'text-sm',\n sm: 'h-7 text-xs',\n lg: 'h-12 text-sm group-data-[collapsible=icon]:p-0!',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n})\n\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = 'default',\n size = 'default',\n tooltip,\n className,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean\n isActive?: boolean\n tooltip?: string | React.ComponentProps<typeof TooltipContent>\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? Slot : 'button'\n const { isMobile, state } = useSidebar()\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n )\n\n if (!tooltip) {\n return button\n }\n\n if (typeof tooltip === 'string') {\n tooltip = {\n children: tooltip,\n }\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== 'collapsed' || isMobile}\n {...tooltip}\n />\n </Tooltip>\n )\n}\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean\n showOnHover?: boolean\n}) {\n const Comp = asChild ? Slot : 'button'\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n 'absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-hidden ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:-inset-2 after:absolute md:after:hidden',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n showOnHover &&\n 'group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<'div'> & {\n showIcon?: boolean\n}) {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`\n }, [])\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn('flex h-8 items-center gap-2 rounded-md px-2', className)}\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n '--skeleton-width': width,\n } as React.CSSProperties\n }\n />\n </div>\n )\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n 'ml-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-sidebar-border border-l py-0.5 pl-2.5',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn('group/menu-sub-item relative', className)}\n {...props}\n />\n )\n}\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n}\n"],"names":["SidebarContext","React","useSidebar","context","Error","SidebarProvider","defaultOpen","openProp","setOpenProp","className","style","lang","children","props","isMobile","useIsMobile","openMobile","setOpenMobile","_open","_setOpen","open","setOpen","value","openState","document","toggleSidebar","handleKeyDown","event","window","state","contextValue","TooltipProvider","cn","Sidebar","side","variant","collapsible","Sheet","SheetContent","SheetHeader","SheetTitle","SheetDescription","SidebarTrigger","onClick","Button","PanelLeftIcon","SidebarInset","SidebarHeader","SidebarFooter","SidebarSeparator","Separator","SidebarContent","SidebarGroup","SidebarGroupLabel","asChild","Comp","Slot","SidebarMenu","SidebarMenuItem","sidebarMenuButtonVariants","tv","SidebarMenuButton","isActive","size","tooltip","button","Tooltip","TooltipTrigger","TooltipContent","SidebarMenuAction","showOnHover","SidebarMenuSkeleton","showIcon","width","Math","Skeleton","SidebarMenuSub","SidebarMenuSubItem"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"components\\sidebar\\sidebar.js","sources":["webpack://@gbmtech/aurora-ui/./src/components/sidebar/sidebar.tsx"],"sourcesContent":["\n\nimport { Slot } from '@radix-ui/react-slot'\nimport * as React from 'react'\n\nimport { useIsMobile } from '@/hooks/use-mobile'\nimport { VariantProps, cn, tv } from '@/lib'\nimport { PanelLeftIcon } from 'lucide-react'\nimport { Button } from '../button'\nimport { Separator } from '../separator'\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from '../sheet'\nimport { Skeleton } from '../skeleton'\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from '../tooltip'\n\nconst SIDEBAR_COOKIE_NAME = 'gbm_sidebar_open'\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = '16rem'\nconst SIDEBAR_WIDTH_MOBILE = '18rem'\nconst SIDEBAR_WIDTH_ICON = '4.5rem'\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'b'\n\ntype SidebarContextProps = {\n state: 'expanded' | 'collapsed'\n open: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n isMobile: boolean\n toggleSidebar: () => void\n lang: 'pt-br' | 'en-us' | 'es'\n}\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext)\n\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.')\n }\n\n return context\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n lang = 'pt-br',\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n lang?: 'pt-br' | 'en-us' | 'es'\n}) {\n const isMobile = useIsMobile()\n const [openMobile, setOpenMobile] = React.useState(false)\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen)\n const open = openProp ?? _open\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === 'function' ? value(open) : value\n if (setOpenProp) {\n setOpenProp(openState)\n } else {\n _setOpen(openState)\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n },\n [setOpenProp, open]\n )\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile(open => !open) : setOpen(open => !open)\n }, [isMobile, setOpen, setOpenMobile])\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener('keydown', handleKeyDown)\n return () => window.removeEventListener('keydown', handleKeyDown)\n }, [toggleSidebar])\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? 'expanded' : 'collapsed'\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n lang,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n )\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH,\n '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n 'group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar',\n className\n )}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n )\n}\n\nfunction Sidebar({\n side = 'left',\n variant = 'sidebar',\n collapsible = 'icon',\n className,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n side?: 'left' | 'right'\n variant?: 'sidebar' | 'floating' | 'inset'\n collapsible?: 'offcanvas' | 'icon' | 'none'\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n if (collapsible === 'none') {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n 'flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground',\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n )\n }\n\n return (\n <div\n className=\"group peer hidden text-sidebar-foreground md:block\"\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n 'relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear',\n 'group-data-[collapsible=offcanvas]:w-0',\n 'group-data-[side=right]:rotate-180',\n variant === 'floating' || variant === 'inset'\n ? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)'\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n 'fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex',\n side === 'left'\n ? 'left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]'\n : 'right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]',\n // Adjust the padding for floating and inset variants.\n variant === 'floating' || variant === 'inset'\n ? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l',\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className=\"flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow-sm\"\n >\n {children}\n </div>\n </div>\n </div>\n )\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn('size-7', className)}\n onClick={event => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<'main'>) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n 'relative flex w-full flex-1 flex-col bg-background',\n 'md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2 md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn(\n 'flex flex-col gap-2 p-5 group-data-[collapsible=icon]:p-4',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn(\n 'flex flex-col gap-2 p-5 group-data-[collapsible=icon]:p-4',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn('mx-2 w-auto bg-sidebar-border', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n 'flex min-h-0 flex-1 flex-col gap-2 overflow-y-auto group-data-[collapsible=icon]:overflow-hidden',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn(\n 'relative flex w-full min-w-0 flex-col px-5 group-data-[collapsible=icon]:p-4',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'div'> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : 'div'\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n 'flex h-8 shrink-0 items-center rounded-md px-2 font-medium text-sidebar-foreground/70 text-xs outline-hidden ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',\n 'group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn('flex w-full min-w-0 flex-col gap-1', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn('group/menu-item relative', className)}\n {...props}\n />\n )\n}\n\nconst sidebarMenuButtonVariants = tv({\n base: 'peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-10! group-data-[collapsible=icon]:p-2.5! group-data-[collapsible=icon]:gap-3 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 group-data-[collapsible=icon]:[&>svg]:size-5',\n variants: {\n variant: {\n default: 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n outline:\n 'bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]',\n },\n size: {\n default: 'text-sm',\n sm: 'h-7 text-xs',\n lg: 'h-12 text-sm group-data-[collapsible=icon]:p-0!',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n})\n\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = 'default',\n size = 'default',\n tooltip,\n className,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean\n isActive?: boolean\n tooltip?: string | React.ComponentProps<typeof TooltipContent>\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? Slot : 'button'\n const { isMobile, state } = useSidebar()\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n )\n\n if (!tooltip) {\n return button\n }\n\n if (typeof tooltip === 'string') {\n tooltip = {\n children: tooltip,\n }\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== 'collapsed' || isMobile}\n {...tooltip}\n />\n </Tooltip>\n )\n}\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean\n showOnHover?: boolean\n}) {\n const Comp = asChild ? Slot : 'button'\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n 'absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-hidden ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:-inset-2 after:absolute md:after:hidden',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n showOnHover &&\n 'group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<'div'> & {\n showIcon?: boolean\n}) {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`\n }, [])\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn('flex h-8 items-center gap-2 rounded-md px-2', className)}\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n '--skeleton-width': width,\n } as React.CSSProperties\n }\n />\n </div>\n )\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n 'ml-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-sidebar-border border-l py-0.5 pl-2.5',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn('group/menu-sub-item relative', className)}\n {...props}\n />\n )\n}\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n}\n"],"names":["SidebarContext","React","useSidebar","context","Error","SidebarProvider","defaultOpen","openProp","setOpenProp","className","style","lang","children","props","isMobile","useIsMobile","openMobile","setOpenMobile","_open","_setOpen","open","setOpen","value","openState","document","toggleSidebar","handleKeyDown","event","window","state","contextValue","TooltipProvider","cn","Sidebar","side","variant","collapsible","Sheet","SheetContent","SheetHeader","SheetTitle","SheetDescription","SidebarTrigger","onClick","Button","PanelLeftIcon","SidebarInset","SidebarHeader","SidebarFooter","SidebarSeparator","Separator","SidebarContent","SidebarGroup","SidebarGroupLabel","asChild","Comp","Slot","SidebarMenu","SidebarMenuItem","sidebarMenuButtonVariants","tv","SidebarMenuButton","isActive","size","tooltip","button","Tooltip","TooltipTrigger","TooltipContent","SidebarMenuAction","showOnHover","SidebarMenuSkeleton","showIcon","width","Math","Skeleton","SidebarMenuSub","SidebarMenuSubItem"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components\\sortable.js","sources":["webpack://@gbmtech/aurora-ui/./src/components/sortable.tsx"],"sourcesContent":["\r\n\r\nimport {\r\n type Announcements,\r\n DndContext,\r\n type DndContextProps,\r\n type DragEndEvent,\r\n DragOverlay,\r\n type DraggableSyntheticListeners,\r\n type DropAnimation,\r\n KeyboardSensor,\r\n MouseSensor,\r\n type ScreenReaderInstructions,\r\n TouchSensor,\r\n type UniqueIdentifier,\r\n closestCenter,\r\n closestCorners,\r\n defaultDropAnimationSideEffects,\r\n useSensor,\r\n useSensors,\r\n} from '@dnd-kit/core'\r\nimport {\r\n restrictToHorizontalAxis,\r\n restrictToParentElement,\r\n restrictToVerticalAxis,\r\n} from '@dnd-kit/modifiers'\r\nimport {\r\n SortableContext,\r\n type SortableContextProps,\r\n arrayMove,\r\n horizontalListSortingStrategy,\r\n sortableKeyboardCoordinates,\r\n useSortable,\r\n verticalListSortingStrategy,\r\n} from '@dnd-kit/sortable'\r\nimport { CSS } from '@dnd-kit/utilities'\r\nimport { Slot } from '@radix-ui/react-slot'\r\nimport * as React from 'react'\r\n\r\nimport { composeEventHandlers, useComposedRefs } from '@/lib/composition'\r\nimport { cn } from '@/lib/utils'\r\nimport * as ReactDOM from 'react-dom'\r\n\r\nconst orientationConfig = {\r\n vertical: {\r\n modifiers: [restrictToVerticalAxis, restrictToParentElement],\r\n strategy: verticalListSortingStrategy,\r\n collisionDetection: closestCenter,\r\n },\r\n horizontal: {\r\n modifiers: [restrictToHorizontalAxis, restrictToParentElement],\r\n strategy: horizontalListSortingStrategy,\r\n collisionDetection: closestCenter,\r\n },\r\n mixed: {\r\n modifiers: [restrictToParentElement],\r\n strategy: undefined,\r\n collisionDetection: closestCorners,\r\n },\r\n}\r\n\r\nconst ROOT_NAME = 'Sortable'\r\nconst CONTENT_NAME = 'SortableContent'\r\nconst ITEM_NAME = 'SortableItem'\r\nconst ITEM_HANDLE_NAME = 'SortableItemHandle'\r\nconst OVERLAY_NAME = 'SortableOverlay'\r\n\r\nconst SORTABLE_ERRORS = {\r\n [ROOT_NAME]: `\\`${ROOT_NAME}\\` components must be within \\`${ROOT_NAME}\\``,\r\n [CONTENT_NAME]: `\\`${CONTENT_NAME}\\` must be within \\`${ROOT_NAME}\\``,\r\n [ITEM_NAME]: `\\`${ITEM_NAME}\\` must be within \\`${CONTENT_NAME}\\``,\r\n [ITEM_HANDLE_NAME]: `\\`${ITEM_HANDLE_NAME}\\` must be within \\`${ITEM_NAME}\\``,\r\n [OVERLAY_NAME]: `\\`${OVERLAY_NAME}\\` must be within \\`${ROOT_NAME}\\``,\r\n} as const\r\n\r\ninterface SortableRootContextValue<T> {\r\n id: string\r\n items: UniqueIdentifier[]\r\n modifiers: DndContextProps['modifiers']\r\n strategy: SortableContextProps['strategy']\r\n activeId: UniqueIdentifier | null\r\n setActiveId: (id: UniqueIdentifier | null) => void\r\n getItemValue: (item: T) => UniqueIdentifier\r\n flatCursor: boolean\r\n}\r\n\r\nconst SortableRootContext =\r\n React.createContext<SortableRootContextValue<unknown> | null>(null)\r\nSortableRootContext.displayName = ROOT_NAME\r\n\r\nfunction useSortableContext(name: keyof typeof SORTABLE_ERRORS) {\r\n const context = React.useContext(SortableRootContext)\r\n if (!context) {\r\n throw new Error(SORTABLE_ERRORS[name])\r\n }\r\n return context\r\n}\r\n\r\ninterface GetItemValue<T> {\r\n /**\r\n * Callback that returns a unique identifier for each sortable item. Required for array of objects.\r\n * @example getItemValue={(item) => item.id}\r\n */\r\n getItemValue: (item: T) => UniqueIdentifier\r\n}\r\n\r\ntype SortableProps<T> = DndContextProps & {\r\n value: T[]\r\n onValueChange?: (items: T[]) => void\r\n onMove?: (\r\n event: DragEndEvent & { activeIndex: number; overIndex: number }\r\n ) => void\r\n strategy?: SortableContextProps['strategy']\r\n orientation?: 'vertical' | 'horizontal' | 'mixed'\r\n flatCursor?: boolean\r\n} & (T extends object ? GetItemValue<T> : Partial<GetItemValue<T>>)\r\n\r\nfunction Sortable<T>(props: SortableProps<T>) {\r\n const {\r\n value,\r\n onValueChange,\r\n collisionDetection,\r\n modifiers,\r\n strategy,\r\n onMove,\r\n orientation = 'vertical',\r\n flatCursor = false,\r\n getItemValue: getItemValueProp,\r\n accessibility,\r\n ...sortableProps\r\n } = props\r\n const id = React.useId()\r\n const [activeId, setActiveId] = React.useState<UniqueIdentifier | null>(null)\r\n\r\n const sensors = useSensors(\r\n useSensor(MouseSensor),\r\n useSensor(TouchSensor),\r\n useSensor(KeyboardSensor, {\r\n coordinateGetter: sortableKeyboardCoordinates,\r\n })\r\n )\r\n const config = React.useMemo(\r\n () => orientationConfig[orientation],\r\n [orientation]\r\n )\r\n\r\n const getItemValue = React.useCallback(\r\n (item: T): UniqueIdentifier => {\r\n if (typeof item === 'object' && !getItemValueProp) {\r\n throw new Error('getItemValue is required when using array of objects.')\r\n }\r\n return getItemValueProp\r\n ? getItemValueProp(item)\r\n : (item as UniqueIdentifier)\r\n },\r\n [getItemValueProp]\r\n )\r\n\r\n const items = React.useMemo(() => {\r\n return value.map(item => getItemValue(item))\r\n }, [value, getItemValue])\r\n\r\n const onDragEnd = React.useCallback(\r\n (event: DragEndEvent) => {\r\n const { active, over } = event\r\n if (over && active.id !== over?.id) {\r\n const activeIndex = value.findIndex(\r\n item => getItemValue(item) === active.id\r\n )\r\n const overIndex = value.findIndex(\r\n item => getItemValue(item) === over.id\r\n )\r\n\r\n if (onMove) {\r\n onMove({ ...event, activeIndex, overIndex })\r\n } else {\r\n onValueChange?.(arrayMove(value, activeIndex, overIndex))\r\n }\r\n }\r\n setActiveId(null)\r\n },\r\n [value, onValueChange, onMove, getItemValue]\r\n )\r\n\r\n const announcements: Announcements = React.useMemo(\r\n () => ({\r\n onDragStart({ active }) {\r\n const activeValue = active.id.toString()\r\n return `Grabbed sortable item \"${activeValue}\". Current position is ${active.data.current?.sortable.index + 1} of ${value.length}. Use arrow keys to move, space to drop.`\r\n },\r\n onDragOver({ active, over }) {\r\n if (over) {\r\n const overIndex = over.data.current?.sortable.index ?? 0\r\n const activeIndex = active.data.current?.sortable.index ?? 0\r\n const moveDirection = overIndex > activeIndex ? 'down' : 'up'\r\n const activeValue = active.id.toString()\r\n return `Sortable item \"${activeValue}\" moved ${moveDirection} to position ${overIndex + 1} of ${value.length}.`\r\n }\r\n return 'Sortable item is no longer over a droppable area. Press escape to cancel.'\r\n },\r\n onDragEnd({ active, over }) {\r\n const activeValue = active.id.toString()\r\n if (over) {\r\n const overIndex = over.data.current?.sortable.index ?? 0\r\n return `Sortable item \"${activeValue}\" dropped at position ${overIndex + 1} of ${value.length}.`\r\n }\r\n return `Sortable item \"${activeValue}\" dropped. No changes were made.`\r\n },\r\n onDragCancel({ active }) {\r\n const activeIndex = active.data.current?.sortable.index ?? 0\r\n const activeValue = active.id.toString()\r\n return `Sorting cancelled. Sortable item \"${activeValue}\" returned to position ${activeIndex + 1} of ${value.length}.`\r\n },\r\n onDragMove({ active, over }) {\r\n if (over) {\r\n const overIndex = over.data.current?.sortable.index ?? 0\r\n const activeIndex = active.data.current?.sortable.index ?? 0\r\n const moveDirection = overIndex > activeIndex ? 'down' : 'up'\r\n const activeValue = active.id.toString()\r\n return `Sortable item \"${activeValue}\" is moving ${moveDirection} to position ${overIndex + 1} of ${value.length}.`\r\n }\r\n return 'Sortable item is no longer over a droppable area. Press escape to cancel.'\r\n },\r\n }),\r\n [value]\r\n )\r\n\r\n const screenReaderInstructions: ScreenReaderInstructions = React.useMemo(\r\n () => ({\r\n draggable: `\r\n To pick up a sortable item, press space or enter.\r\n While dragging, use the ${orientation === 'vertical' ? 'up and down' : orientation === 'horizontal' ? 'left and right' : 'arrow'} keys to move the item.\r\n Press space or enter again to drop the item in its new position, or press escape to cancel.\r\n `,\r\n }),\r\n [orientation]\r\n )\r\n\r\n const contextValue = React.useMemo(\r\n () => ({\r\n id,\r\n items,\r\n modifiers: modifiers ?? config.modifiers,\r\n strategy: strategy ?? config.strategy,\r\n activeId,\r\n setActiveId,\r\n getItemValue,\r\n flatCursor,\r\n }),\r\n [\r\n id,\r\n items,\r\n modifiers,\r\n strategy,\r\n config.modifiers,\r\n config.strategy,\r\n activeId,\r\n getItemValue,\r\n flatCursor,\r\n ]\r\n )\r\n\r\n return (\r\n <SortableRootContext.Provider\r\n value={contextValue as SortableRootContextValue<unknown>}\r\n >\r\n <DndContext\r\n collisionDetection={collisionDetection ?? config.collisionDetection}\r\n modifiers={modifiers ?? config.modifiers}\r\n sensors={sensors}\r\n {...sortableProps}\r\n id={id}\r\n onDragStart={composeEventHandlers(\r\n sortableProps.onDragStart,\r\n ({ active }) => setActiveId(active.id)\r\n )}\r\n onDragEnd={composeEventHandlers(sortableProps.onDragEnd, onDragEnd)}\r\n onDragCancel={composeEventHandlers(sortableProps.onDragCancel, () =>\r\n setActiveId(null)\r\n )}\r\n accessibility={{\r\n announcements,\r\n screenReaderInstructions,\r\n ...accessibility,\r\n }}\r\n />\r\n </SortableRootContext.Provider>\r\n )\r\n}\r\n\r\nconst SortableContentContext = React.createContext<boolean>(false)\r\nSortableContentContext.displayName = CONTENT_NAME\r\n\r\ninterface SortableContentProps extends React.ComponentPropsWithoutRef<'div'> {\r\n strategy?: SortableContextProps['strategy']\r\n children: React.ReactNode\r\n asChild?: boolean\r\n withoutSlot?: boolean\r\n}\r\n\r\nconst SortableContent = React.forwardRef<HTMLDivElement, SortableContentProps>(\r\n (props, forwardedRef) => {\r\n const {\r\n strategy: strategyProp,\r\n asChild,\r\n withoutSlot,\r\n children,\r\n ...contentProps\r\n } = props\r\n const context = useSortableContext(CONTENT_NAME)\r\n\r\n const ContentPrimitive = asChild ? Slot : 'div'\r\n\r\n return (\r\n <SortableContentContext.Provider value={true}>\r\n <SortableContext\r\n items={context.items}\r\n strategy={strategyProp ?? context.strategy}\r\n >\r\n {withoutSlot ? (\r\n children\r\n ) : (\r\n <ContentPrimitive {...contentProps} ref={forwardedRef}>\r\n {children}\r\n </ContentPrimitive>\r\n )}\r\n </SortableContext>\r\n </SortableContentContext.Provider>\r\n )\r\n }\r\n)\r\nSortableContent.displayName = CONTENT_NAME\r\n\r\ninterface SortableItemContextValue {\r\n id: string\r\n attributes: React.HTMLAttributes<HTMLElement>\r\n listeners: DraggableSyntheticListeners | undefined\r\n setActivatorNodeRef: (node: HTMLElement | null) => void\r\n isDragging?: boolean\r\n disabled?: boolean\r\n}\r\n\r\nconst SortableItemContext =\r\n React.createContext<SortableItemContextValue | null>(null)\r\nSortableItemContext.displayName = ITEM_NAME\r\n\r\ninterface SortableItemProps extends React.ComponentPropsWithoutRef<'div'> {\r\n value: UniqueIdentifier\r\n asHandle?: boolean\r\n asChild?: boolean\r\n disabled?: boolean\r\n}\r\n\r\nconst SortableItem = React.forwardRef<HTMLDivElement, SortableItemProps>(\r\n (props, forwardedRef) => {\r\n const {\r\n value,\r\n style,\r\n asHandle,\r\n asChild,\r\n disabled,\r\n className,\r\n ...itemProps\r\n } = props\r\n const inSortableContent = React.useContext(SortableContentContext)\r\n const inSortableOverlay = React.useContext(SortableOverlayContext)\r\n\r\n if (!inSortableContent && !inSortableOverlay) {\r\n throw new Error(SORTABLE_ERRORS[ITEM_NAME])\r\n }\r\n\r\n if (value === '') {\r\n throw new Error(`\\`${ITEM_NAME}\\` value cannot be an empty string`)\r\n }\r\n\r\n const context = useSortableContext(ITEM_NAME)\r\n const id = React.useId()\r\n const {\r\n attributes,\r\n listeners,\r\n setNodeRef,\r\n setActivatorNodeRef,\r\n transform,\r\n transition,\r\n isDragging,\r\n } = useSortable({ id: value, disabled })\r\n\r\n const composedRef = useComposedRefs(forwardedRef, node => {\r\n if (disabled) return\r\n setNodeRef(node)\r\n if (asHandle) setActivatorNodeRef(node)\r\n })\r\n\r\n const composedStyle = React.useMemo<React.CSSProperties>(() => {\r\n return {\r\n transform: CSS.Translate.toString(transform),\r\n transition,\r\n ...style,\r\n }\r\n }, [transform, transition, style])\r\n\r\n const itemContext = React.useMemo<SortableItemContextValue>(\r\n () => ({\r\n id,\r\n attributes,\r\n listeners,\r\n setActivatorNodeRef,\r\n isDragging,\r\n disabled,\r\n }),\r\n [id, attributes, listeners, setActivatorNodeRef, isDragging, disabled]\r\n )\r\n\r\n const ItemPrimitive = asChild ? Slot : 'div'\r\n\r\n return (\r\n <SortableItemContext.Provider value={itemContext}>\r\n <ItemPrimitive\r\n id={id}\r\n data-dragging={isDragging ? '' : undefined}\r\n {...itemProps}\r\n {...(asHandle ? attributes : {})}\r\n {...(asHandle ? listeners : {})}\r\n tabIndex={disabled ? undefined : 0}\r\n ref={composedRef}\r\n style={composedStyle}\r\n className={cn(\r\n 'focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1',\r\n {\r\n 'touch-none select-none': asHandle,\r\n 'cursor-default': context.flatCursor,\r\n 'data-dragging:cursor-grabbing': !context.flatCursor,\r\n 'cursor-grab': !isDragging && asHandle && !context.flatCursor,\r\n 'opacity-50': isDragging,\r\n 'pointer-events-none opacity-50': disabled,\r\n },\r\n className\r\n )}\r\n />\r\n </SortableItemContext.Provider>\r\n )\r\n }\r\n)\r\nSortableItem.displayName = ITEM_NAME\r\n\r\ninterface SortableItemHandleProps\r\n extends React.ComponentPropsWithoutRef<'button'> {\r\n asChild?: boolean\r\n}\r\n\r\nconst SortableItemHandle = React.forwardRef<\r\n HTMLButtonElement,\r\n SortableItemHandleProps\r\n>((props, forwardedRef) => {\r\n const { asChild, disabled, className, ...itemHandleProps } = props\r\n const itemContext = React.useContext(SortableItemContext)\r\n if (!itemContext) {\r\n throw new Error(SORTABLE_ERRORS[ITEM_HANDLE_NAME])\r\n }\r\n const context = useSortableContext(ITEM_HANDLE_NAME)\r\n\r\n const isDisabled = disabled ?? itemContext.disabled\r\n\r\n const composedRef = useComposedRefs(forwardedRef, node => {\r\n if (!isDisabled) return\r\n itemContext.setActivatorNodeRef(node)\r\n })\r\n\r\n const HandlePrimitive = asChild ? Slot : 'button'\r\n\r\n return (\r\n <HandlePrimitive\r\n type=\"button\"\r\n aria-controls={itemContext.id}\r\n data-dragging={itemContext.isDragging ? '' : undefined}\r\n {...itemHandleProps}\r\n {...itemContext.attributes}\r\n {...itemContext.listeners}\r\n ref={composedRef}\r\n className={cn(\r\n 'select-none disabled:pointer-events-none disabled:opacity-50',\r\n context.flatCursor\r\n ? 'cursor-default'\r\n : 'cursor-grab data-dragging:cursor-grabbing',\r\n className\r\n )}\r\n disabled={isDisabled}\r\n />\r\n )\r\n})\r\nSortableItemHandle.displayName = ITEM_HANDLE_NAME\r\n\r\nconst SortableOverlayContext = React.createContext(false)\r\nSortableOverlayContext.displayName = OVERLAY_NAME\r\n\r\nconst dropAnimation: DropAnimation = {\r\n sideEffects: defaultDropAnimationSideEffects({\r\n styles: {\r\n active: {\r\n opacity: '0.4',\r\n },\r\n },\r\n }),\r\n}\r\n\r\ninterface SortableOverlayProps\r\n extends Omit<React.ComponentPropsWithoutRef<typeof DragOverlay>, 'children'> {\r\n container?: Element | DocumentFragment | null\r\n children?:\r\n | ((params: { value: UniqueIdentifier }) => React.ReactNode)\r\n | React.ReactNode\r\n}\r\n\r\nfunction SortableOverlay(props: SortableOverlayProps) {\r\n const { container: containerProp, children, ...overlayProps } = props\r\n const context = useSortableContext(OVERLAY_NAME)\r\n\r\n const [mounted, setMounted] = React.useState(false)\r\n React.useLayoutEffect(() => setMounted(true), [])\r\n\r\n const container =\r\n containerProp ?? (mounted ? globalThis.document?.body : null)\r\n\r\n if (!container) return null\r\n\r\n return ReactDOM.createPortal(\r\n <DragOverlay\r\n dropAnimation={dropAnimation}\r\n modifiers={context.modifiers}\r\n className={cn(!context.flatCursor && 'cursor-grabbing')}\r\n {...overlayProps}\r\n >\r\n <SortableOverlayContext.Provider value={true}>\r\n {context.activeId\r\n ? typeof children === 'function'\r\n ? children({ value: context.activeId })\r\n : children\r\n : null}\r\n </SortableOverlayContext.Provider>\r\n </DragOverlay>,\r\n container\r\n )\r\n}\r\n\r\nconst Root = Sortable\r\nconst Content = SortableContent\r\nconst Item = SortableItem\r\nconst ItemHandle = SortableItemHandle\r\nconst Overlay = SortableOverlay\r\n\r\nexport {\r\n Root,\r\n Content,\r\n Item,\r\n ItemHandle,\r\n Overlay,\r\n //\r\n Sortable,\r\n SortableContent,\r\n SortableItem,\r\n SortableItemHandle,\r\n SortableOverlay,\r\n}\r\n"],"names":["orientationConfig","restrictToVerticalAxis","restrictToParentElement","verticalListSortingStrategy","closestCenter","restrictToHorizontalAxis","horizontalListSortingStrategy","undefined","closestCorners","ROOT_NAME","CONTENT_NAME","ITEM_NAME","ITEM_HANDLE_NAME","OVERLAY_NAME","SORTABLE_ERRORS","SortableRootContext","React","useSortableContext","name","context","Error","Sortable","props","value","onValueChange","collisionDetection","modifiers","strategy","onMove","orientation","flatCursor","getItemValueProp","accessibility","sortableProps","id","activeId","setActiveId","sensors","useSensors","useSensor","MouseSensor","TouchSensor","KeyboardSensor","sortableKeyboardCoordinates","config","getItemValue","item","items","onDragEnd","event","active","over","activeIndex","overIndex","arrayMove","announcements","activeValue","screenReaderInstructions","contextValue","DndContext","composeEventHandlers","SortableContentContext","SortableContent","forwardedRef","strategyProp","asChild","withoutSlot","children","contentProps","ContentPrimitive","Slot","SortableContext","SortableItemContext","SortableItem","style","asHandle","disabled","className","itemProps","inSortableContent","inSortableOverlay","SortableOverlayContext","attributes","listeners","setNodeRef","setActivatorNodeRef","transform","transition","isDragging","useSortable","composedRef","useComposedRefs","node","composedStyle","CSS","itemContext","ItemPrimitive","cn","SortableItemHandle","itemHandleProps","isDisabled","HandlePrimitive","dropAnimation","defaultDropAnimationSideEffects","SortableOverlay","containerProp","overlayProps","mounted","setMounted","container","globalThis","ReactDOM","DragOverlay","Root","Content","Item","ItemHandle","Overlay"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"components\\sortable.js","sources":["webpack://@gbmtech/aurora-ui/./src/components/sortable.tsx"],"sourcesContent":["\r\n\r\nimport {\r\n type Announcements,\r\n DndContext,\r\n type DndContextProps,\r\n type DragEndEvent,\r\n DragOverlay,\r\n type DraggableSyntheticListeners,\r\n type DropAnimation,\r\n KeyboardSensor,\r\n MouseSensor,\r\n type ScreenReaderInstructions,\r\n TouchSensor,\r\n type UniqueIdentifier,\r\n closestCenter,\r\n closestCorners,\r\n defaultDropAnimationSideEffects,\r\n useSensor,\r\n useSensors,\r\n} from '@dnd-kit/core'\r\nimport {\r\n restrictToHorizontalAxis,\r\n restrictToParentElement,\r\n restrictToVerticalAxis,\r\n} from '@dnd-kit/modifiers'\r\nimport {\r\n SortableContext,\r\n type SortableContextProps,\r\n arrayMove,\r\n horizontalListSortingStrategy,\r\n sortableKeyboardCoordinates,\r\n useSortable,\r\n verticalListSortingStrategy,\r\n} from '@dnd-kit/sortable'\r\nimport { CSS } from '@dnd-kit/utilities'\r\nimport { Slot } from '@radix-ui/react-slot'\r\nimport * as React from 'react'\r\n\r\nimport { composeEventHandlers, useComposedRefs } from '@/lib/composition'\r\nimport { cn } from '@/lib/utils'\r\nimport * as ReactDOM from 'react-dom'\r\n\r\nconst orientationConfig = {\r\n vertical: {\r\n modifiers: [restrictToVerticalAxis, restrictToParentElement],\r\n strategy: verticalListSortingStrategy,\r\n collisionDetection: closestCenter,\r\n },\r\n horizontal: {\r\n modifiers: [restrictToHorizontalAxis, restrictToParentElement],\r\n strategy: horizontalListSortingStrategy,\r\n collisionDetection: closestCenter,\r\n },\r\n mixed: {\r\n modifiers: [restrictToParentElement],\r\n strategy: undefined,\r\n collisionDetection: closestCorners,\r\n },\r\n}\r\n\r\nconst ROOT_NAME = 'Sortable'\r\nconst CONTENT_NAME = 'SortableContent'\r\nconst ITEM_NAME = 'SortableItem'\r\nconst ITEM_HANDLE_NAME = 'SortableItemHandle'\r\nconst OVERLAY_NAME = 'SortableOverlay'\r\n\r\nconst SORTABLE_ERRORS = {\r\n [ROOT_NAME]: `\\`${ROOT_NAME}\\` components must be within \\`${ROOT_NAME}\\``,\r\n [CONTENT_NAME]: `\\`${CONTENT_NAME}\\` must be within \\`${ROOT_NAME}\\``,\r\n [ITEM_NAME]: `\\`${ITEM_NAME}\\` must be within \\`${CONTENT_NAME}\\``,\r\n [ITEM_HANDLE_NAME]: `\\`${ITEM_HANDLE_NAME}\\` must be within \\`${ITEM_NAME}\\``,\r\n [OVERLAY_NAME]: `\\`${OVERLAY_NAME}\\` must be within \\`${ROOT_NAME}\\``,\r\n} as const\r\n\r\ninterface SortableRootContextValue<T> {\r\n id: string\r\n items: UniqueIdentifier[]\r\n modifiers: DndContextProps['modifiers']\r\n strategy: SortableContextProps['strategy']\r\n activeId: UniqueIdentifier | null\r\n setActiveId: (id: UniqueIdentifier | null) => void\r\n getItemValue: (item: T) => UniqueIdentifier\r\n flatCursor: boolean\r\n}\r\n\r\nconst SortableRootContext =\r\n React.createContext<SortableRootContextValue<unknown> | null>(null)\r\nSortableRootContext.displayName = ROOT_NAME\r\n\r\nfunction useSortableContext(name: keyof typeof SORTABLE_ERRORS) {\r\n const context = React.useContext(SortableRootContext)\r\n if (!context) {\r\n throw new Error(SORTABLE_ERRORS[name])\r\n }\r\n return context\r\n}\r\n\r\ninterface GetItemValue<T> {\r\n /**\r\n * Callback that returns a unique identifier for each sortable item. Required for array of objects.\r\n * @example getItemValue={(item) => item.id}\r\n */\r\n getItemValue: (item: T) => UniqueIdentifier\r\n}\r\n\r\ntype SortableProps<T> = DndContextProps & {\r\n value: T[]\r\n onValueChange?: (items: T[]) => void\r\n onMove?: (\r\n event: DragEndEvent & { activeIndex: number; overIndex: number }\r\n ) => void\r\n strategy?: SortableContextProps['strategy']\r\n orientation?: 'vertical' | 'horizontal' | 'mixed'\r\n flatCursor?: boolean\r\n} & (T extends object ? GetItemValue<T> : Partial<GetItemValue<T>>)\r\n\r\nfunction Sortable<T>(props: SortableProps<T>) {\r\n const {\r\n value,\r\n onValueChange,\r\n collisionDetection,\r\n modifiers,\r\n strategy,\r\n onMove,\r\n orientation = 'vertical',\r\n flatCursor = false,\r\n getItemValue: getItemValueProp,\r\n accessibility,\r\n ...sortableProps\r\n } = props\r\n const id = React.useId()\r\n const [activeId, setActiveId] = React.useState<UniqueIdentifier | null>(null)\r\n\r\n const sensors = useSensors(\r\n useSensor(MouseSensor),\r\n useSensor(TouchSensor),\r\n useSensor(KeyboardSensor, {\r\n coordinateGetter: sortableKeyboardCoordinates,\r\n })\r\n )\r\n const config = React.useMemo(\r\n () => orientationConfig[orientation],\r\n [orientation]\r\n )\r\n\r\n const getItemValue = React.useCallback(\r\n (item: T): UniqueIdentifier => {\r\n if (typeof item === 'object' && !getItemValueProp) {\r\n throw new Error('getItemValue is required when using array of objects.')\r\n }\r\n return getItemValueProp\r\n ? getItemValueProp(item)\r\n : (item as UniqueIdentifier)\r\n },\r\n [getItemValueProp]\r\n )\r\n\r\n const items = React.useMemo(() => {\r\n return value.map(item => getItemValue(item))\r\n }, [value, getItemValue])\r\n\r\n const onDragEnd = React.useCallback(\r\n (event: DragEndEvent) => {\r\n const { active, over } = event\r\n if (over && active.id !== over?.id) {\r\n const activeIndex = value.findIndex(\r\n item => getItemValue(item) === active.id\r\n )\r\n const overIndex = value.findIndex(\r\n item => getItemValue(item) === over.id\r\n )\r\n\r\n if (onMove) {\r\n onMove({ ...event, activeIndex, overIndex })\r\n } else {\r\n onValueChange?.(arrayMove(value, activeIndex, overIndex))\r\n }\r\n }\r\n setActiveId(null)\r\n },\r\n [value, onValueChange, onMove, getItemValue]\r\n )\r\n\r\n const announcements: Announcements = React.useMemo(\r\n () => ({\r\n onDragStart({ active }) {\r\n const activeValue = active.id.toString()\r\n return `Grabbed sortable item \"${activeValue}\". Current position is ${active.data.current?.sortable.index + 1} of ${value.length}. Use arrow keys to move, space to drop.`\r\n },\r\n onDragOver({ active, over }) {\r\n if (over) {\r\n const overIndex = over.data.current?.sortable.index ?? 0\r\n const activeIndex = active.data.current?.sortable.index ?? 0\r\n const moveDirection = overIndex > activeIndex ? 'down' : 'up'\r\n const activeValue = active.id.toString()\r\n return `Sortable item \"${activeValue}\" moved ${moveDirection} to position ${overIndex + 1} of ${value.length}.`\r\n }\r\n return 'Sortable item is no longer over a droppable area. Press escape to cancel.'\r\n },\r\n onDragEnd({ active, over }) {\r\n const activeValue = active.id.toString()\r\n if (over) {\r\n const overIndex = over.data.current?.sortable.index ?? 0\r\n return `Sortable item \"${activeValue}\" dropped at position ${overIndex + 1} of ${value.length}.`\r\n }\r\n return `Sortable item \"${activeValue}\" dropped. No changes were made.`\r\n },\r\n onDragCancel({ active }) {\r\n const activeIndex = active.data.current?.sortable.index ?? 0\r\n const activeValue = active.id.toString()\r\n return `Sorting cancelled. Sortable item \"${activeValue}\" returned to position ${activeIndex + 1} of ${value.length}.`\r\n },\r\n onDragMove({ active, over }) {\r\n if (over) {\r\n const overIndex = over.data.current?.sortable.index ?? 0\r\n const activeIndex = active.data.current?.sortable.index ?? 0\r\n const moveDirection = overIndex > activeIndex ? 'down' : 'up'\r\n const activeValue = active.id.toString()\r\n return `Sortable item \"${activeValue}\" is moving ${moveDirection} to position ${overIndex + 1} of ${value.length}.`\r\n }\r\n return 'Sortable item is no longer over a droppable area. Press escape to cancel.'\r\n },\r\n }),\r\n [value]\r\n )\r\n\r\n const screenReaderInstructions: ScreenReaderInstructions = React.useMemo(\r\n () => ({\r\n draggable: `\r\n To pick up a sortable item, press space or enter.\r\n While dragging, use the ${orientation === 'vertical' ? 'up and down' : orientation === 'horizontal' ? 'left and right' : 'arrow'} keys to move the item.\r\n Press space or enter again to drop the item in its new position, or press escape to cancel.\r\n `,\r\n }),\r\n [orientation]\r\n )\r\n\r\n const contextValue = React.useMemo(\r\n () => ({\r\n id,\r\n items,\r\n modifiers: modifiers ?? config.modifiers,\r\n strategy: strategy ?? config.strategy,\r\n activeId,\r\n setActiveId,\r\n getItemValue,\r\n flatCursor,\r\n }),\r\n [\r\n id,\r\n items,\r\n modifiers,\r\n strategy,\r\n config.modifiers,\r\n config.strategy,\r\n activeId,\r\n getItemValue,\r\n flatCursor,\r\n ]\r\n )\r\n\r\n return (\r\n <SortableRootContext.Provider\r\n value={contextValue as SortableRootContextValue<unknown>}\r\n >\r\n <DndContext\r\n collisionDetection={collisionDetection ?? config.collisionDetection}\r\n modifiers={modifiers ?? config.modifiers}\r\n sensors={sensors}\r\n {...sortableProps}\r\n id={id}\r\n onDragStart={composeEventHandlers(\r\n sortableProps.onDragStart,\r\n ({ active }) => setActiveId(active.id)\r\n )}\r\n onDragEnd={composeEventHandlers(sortableProps.onDragEnd, onDragEnd)}\r\n onDragCancel={composeEventHandlers(sortableProps.onDragCancel, () =>\r\n setActiveId(null)\r\n )}\r\n accessibility={{\r\n announcements,\r\n screenReaderInstructions,\r\n ...accessibility,\r\n }}\r\n />\r\n </SortableRootContext.Provider>\r\n )\r\n}\r\n\r\nconst SortableContentContext = React.createContext<boolean>(false)\r\nSortableContentContext.displayName = CONTENT_NAME\r\n\r\ninterface SortableContentProps extends React.ComponentPropsWithoutRef<'div'> {\r\n strategy?: SortableContextProps['strategy']\r\n children: React.ReactNode\r\n asChild?: boolean\r\n withoutSlot?: boolean\r\n}\r\n\r\nconst SortableContent = React.forwardRef<HTMLDivElement, SortableContentProps>(\r\n (props, forwardedRef) => {\r\n const {\r\n strategy: strategyProp,\r\n asChild,\r\n withoutSlot,\r\n children,\r\n ...contentProps\r\n } = props\r\n const context = useSortableContext(CONTENT_NAME)\r\n\r\n const ContentPrimitive = asChild ? Slot : 'div'\r\n\r\n return (\r\n <SortableContentContext.Provider value={true}>\r\n <SortableContext\r\n items={context.items}\r\n strategy={strategyProp ?? context.strategy}\r\n >\r\n {withoutSlot ? (\r\n children\r\n ) : (\r\n <ContentPrimitive {...contentProps} ref={forwardedRef}>\r\n {children}\r\n </ContentPrimitive>\r\n )}\r\n </SortableContext>\r\n </SortableContentContext.Provider>\r\n )\r\n }\r\n)\r\nSortableContent.displayName = CONTENT_NAME\r\n\r\ninterface SortableItemContextValue {\r\n id: string\r\n attributes: React.HTMLAttributes<HTMLElement>\r\n listeners: DraggableSyntheticListeners | undefined\r\n setActivatorNodeRef: (node: HTMLElement | null) => void\r\n isDragging?: boolean\r\n disabled?: boolean\r\n}\r\n\r\nconst SortableItemContext =\r\n React.createContext<SortableItemContextValue | null>(null)\r\nSortableItemContext.displayName = ITEM_NAME\r\n\r\ninterface SortableItemProps extends React.ComponentPropsWithoutRef<'div'> {\r\n value: UniqueIdentifier\r\n asHandle?: boolean\r\n asChild?: boolean\r\n disabled?: boolean\r\n}\r\n\r\nconst SortableItem = React.forwardRef<HTMLDivElement, SortableItemProps>(\r\n (props, forwardedRef) => {\r\n const {\r\n value,\r\n style,\r\n asHandle,\r\n asChild,\r\n disabled,\r\n className,\r\n ...itemProps\r\n } = props\r\n const inSortableContent = React.useContext(SortableContentContext)\r\n const inSortableOverlay = React.useContext(SortableOverlayContext)\r\n\r\n if (!inSortableContent && !inSortableOverlay) {\r\n throw new Error(SORTABLE_ERRORS[ITEM_NAME])\r\n }\r\n\r\n if (value === '') {\r\n throw new Error(`\\`${ITEM_NAME}\\` value cannot be an empty string`)\r\n }\r\n\r\n const context = useSortableContext(ITEM_NAME)\r\n const id = React.useId()\r\n const {\r\n attributes,\r\n listeners,\r\n setNodeRef,\r\n setActivatorNodeRef,\r\n transform,\r\n transition,\r\n isDragging,\r\n } = useSortable({ id: value, disabled })\r\n\r\n const composedRef = useComposedRefs(forwardedRef, node => {\r\n if (disabled) return\r\n setNodeRef(node)\r\n if (asHandle) setActivatorNodeRef(node)\r\n })\r\n\r\n const composedStyle = React.useMemo<React.CSSProperties>(() => {\r\n return {\r\n transform: CSS.Translate.toString(transform),\r\n transition,\r\n ...style,\r\n }\r\n }, [transform, transition, style])\r\n\r\n const itemContext = React.useMemo<SortableItemContextValue>(\r\n () => ({\r\n id,\r\n attributes,\r\n listeners,\r\n setActivatorNodeRef,\r\n isDragging,\r\n disabled,\r\n }),\r\n [id, attributes, listeners, setActivatorNodeRef, isDragging, disabled]\r\n )\r\n\r\n const ItemPrimitive = asChild ? Slot : 'div'\r\n\r\n return (\r\n <SortableItemContext.Provider value={itemContext}>\r\n <ItemPrimitive\r\n id={id}\r\n data-dragging={isDragging ? '' : undefined}\r\n {...itemProps}\r\n {...(asHandle ? attributes : {})}\r\n {...(asHandle ? listeners : {})}\r\n tabIndex={disabled ? undefined : 0}\r\n ref={composedRef}\r\n style={composedStyle}\r\n className={cn(\r\n 'focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1',\r\n {\r\n 'touch-none select-none': asHandle,\r\n 'cursor-default': context.flatCursor,\r\n 'data-dragging:cursor-grabbing': !context.flatCursor,\r\n 'cursor-grab': !isDragging && asHandle && !context.flatCursor,\r\n 'opacity-50': isDragging,\r\n 'pointer-events-none opacity-50': disabled,\r\n },\r\n className\r\n )}\r\n />\r\n </SortableItemContext.Provider>\r\n )\r\n }\r\n)\r\nSortableItem.displayName = ITEM_NAME\r\n\r\ninterface SortableItemHandleProps\r\n extends React.ComponentPropsWithoutRef<'button'> {\r\n asChild?: boolean\r\n}\r\n\r\nconst SortableItemHandle = React.forwardRef<\r\n HTMLButtonElement,\r\n SortableItemHandleProps\r\n>((props, forwardedRef) => {\r\n const { asChild, disabled, className, ...itemHandleProps } = props\r\n const itemContext = React.useContext(SortableItemContext)\r\n if (!itemContext) {\r\n throw new Error(SORTABLE_ERRORS[ITEM_HANDLE_NAME])\r\n }\r\n const context = useSortableContext(ITEM_HANDLE_NAME)\r\n\r\n const isDisabled = disabled ?? itemContext.disabled\r\n\r\n const composedRef = useComposedRefs(forwardedRef, node => {\r\n if (!isDisabled) return\r\n itemContext.setActivatorNodeRef(node)\r\n })\r\n\r\n const HandlePrimitive = asChild ? Slot : 'button'\r\n\r\n return (\r\n <HandlePrimitive\r\n type=\"button\"\r\n aria-controls={itemContext.id}\r\n data-dragging={itemContext.isDragging ? '' : undefined}\r\n {...itemHandleProps}\r\n {...itemContext.attributes}\r\n {...itemContext.listeners}\r\n ref={composedRef}\r\n className={cn(\r\n 'select-none disabled:pointer-events-none disabled:opacity-50',\r\n context.flatCursor\r\n ? 'cursor-default'\r\n : 'cursor-grab data-dragging:cursor-grabbing',\r\n className\r\n )}\r\n disabled={isDisabled}\r\n />\r\n )\r\n})\r\nSortableItemHandle.displayName = ITEM_HANDLE_NAME\r\n\r\nconst SortableOverlayContext = React.createContext(false)\r\nSortableOverlayContext.displayName = OVERLAY_NAME\r\n\r\nconst dropAnimation: DropAnimation = {\r\n sideEffects: defaultDropAnimationSideEffects({\r\n styles: {\r\n active: {\r\n opacity: '0.4',\r\n },\r\n },\r\n }),\r\n}\r\n\r\ninterface SortableOverlayProps\r\n extends Omit<React.ComponentPropsWithoutRef<typeof DragOverlay>, 'children'> {\r\n container?: Element | DocumentFragment | null\r\n children?:\r\n | ((params: { value: UniqueIdentifier }) => React.ReactNode)\r\n | React.ReactNode\r\n}\r\n\r\nfunction SortableOverlay(props: SortableOverlayProps) {\r\n const { container: containerProp, children, ...overlayProps } = props\r\n const context = useSortableContext(OVERLAY_NAME)\r\n\r\n const [mounted, setMounted] = React.useState(false)\r\n React.useLayoutEffect(() => setMounted(true), [])\r\n\r\n const container =\r\n containerProp ?? (mounted ? globalThis.document?.body : null)\r\n\r\n if (!container) return null\r\n\r\n return ReactDOM.createPortal(\r\n <DragOverlay\r\n dropAnimation={dropAnimation}\r\n modifiers={context.modifiers}\r\n className={cn(!context.flatCursor && 'cursor-grabbing')}\r\n {...overlayProps}\r\n >\r\n <SortableOverlayContext.Provider value={true}>\r\n {context.activeId\r\n ? typeof children === 'function'\r\n ? children({ value: context.activeId })\r\n : children\r\n : null}\r\n </SortableOverlayContext.Provider>\r\n </DragOverlay>,\r\n container\r\n )\r\n}\r\n\r\nconst Root = Sortable\r\nconst Content = SortableContent\r\nconst Item = SortableItem\r\nconst ItemHandle = SortableItemHandle\r\nconst Overlay = SortableOverlay\r\n\r\nexport {\r\n Root,\r\n Content,\r\n Item,\r\n ItemHandle,\r\n Overlay,\r\n //\r\n Sortable,\r\n SortableContent,\r\n SortableItem,\r\n SortableItemHandle,\r\n SortableOverlay,\r\n}\r\n"],"names":["orientationConfig","restrictToVerticalAxis","restrictToParentElement","verticalListSortingStrategy","closestCenter","restrictToHorizontalAxis","horizontalListSortingStrategy","undefined","closestCorners","ROOT_NAME","CONTENT_NAME","ITEM_NAME","ITEM_HANDLE_NAME","OVERLAY_NAME","SORTABLE_ERRORS","SortableRootContext","React","useSortableContext","name","context","Error","Sortable","props","value","onValueChange","collisionDetection","modifiers","strategy","onMove","orientation","flatCursor","getItemValueProp","accessibility","sortableProps","id","activeId","setActiveId","sensors","useSensors","useSensor","MouseSensor","TouchSensor","KeyboardSensor","sortableKeyboardCoordinates","config","getItemValue","item","items","onDragEnd","event","active","over","activeIndex","overIndex","arrayMove","announcements","activeValue","screenReaderInstructions","contextValue","DndContext","composeEventHandlers","SortableContentContext","SortableContent","forwardedRef","strategyProp","asChild","withoutSlot","children","contentProps","ContentPrimitive","Slot","SortableContext","SortableItemContext","SortableItem","style","asHandle","disabled","className","itemProps","inSortableContent","inSortableOverlay","SortableOverlayContext","attributes","listeners","setNodeRef","setActivatorNodeRef","transform","transition","isDragging","useSortable","composedRef","useComposedRefs","node","composedStyle","CSS","itemContext","ItemPrimitive","cn","SortableItemHandle","itemHandleProps","isDisabled","HandlePrimitive","dropAnimation","defaultDropAnimationSideEffects","SortableOverlay","containerProp","overlayProps","mounted","setMounted","container","globalThis","ReactDOM","DragOverlay","Root","Content","Item","ItemHandle","Overlay"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components\\spinner.js","sources":["webpack://@gbmtech/aurora-ui/./src/components/spinner.tsx"],"sourcesContent":["import { VisuallyHidden } from '@radix-ui/react-visually-hidden'\r\nimport type { CSSProperties, ComponentProps, ReactNode } from 'react'\r\n\r\nimport { cn } from '../lib/utils'\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Component: Spinner\r\n * -------------------------------------------------------------------------- */\r\n\r\nconst SPINNER_COUNT = 8\r\n\r\nfunction Spinner({\r\n children,\r\n className,\r\n loading = true,\r\n ...props\r\n}: ComponentProps<'span'> & {\r\n loading?: boolean\r\n}): ReactNode {\r\n if (!loading) {\r\n return children\r\n }\r\n\r\n const spinner = (\r\n <span\r\n className={cn(\r\n 'relative flex size-4 items-center justify-center opacity-60',\r\n className\r\n )}\r\n {...props}\r\n >\r\n {Array.from({ length: SPINNER_COUNT }, (_, i) => (\r\n <span\r\n key={i}\r\n className={cn(\r\n 'before:fade-out-25 before:animation-repeat-infinite before:animation-delay-(--spinner-delay) before:animation-duration-(--spinner-duration) absolute h-full rotate-(--spinner-rotate) before:block before:h-1/3 before:w-full before:animate-out before:rounded-full before:bg-current'\r\n )}\r\n style={\r\n {\r\n '--spinner-delay': `-${((SPINNER_COUNT - i) * 100).toString()}ms`,\r\n '--spinner-duration': `${(SPINNER_COUNT * 100).toString()}ms`,\r\n '--spinner-rotate': `${((360 / SPINNER_COUNT) * i).toString()}deg`,\r\n width: `${(100 / SPINNER_COUNT).toString()}%`,\r\n } as CSSProperties\r\n }\r\n />\r\n ))}\r\n </span>\r\n )\r\n\r\n if (children === undefined) {\r\n return spinner\r\n }\r\n\r\n return (\r\n <span className=\"relative\">\r\n <span aria-hidden className=\"invisible contents\">\r\n {children}\r\n </span>\r\n <VisuallyHidden>{children}</VisuallyHidden>\r\n <span className=\"absolute inset-0 flex items-center justify-center\">\r\n {spinner}\r\n </span>\r\n </span>\r\n )\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Exports\r\n * -------------------------------------------------------------------------- */\r\n\r\nexport { Spinner }\r\n"],"names":["Spinner","children","className","loading","props","spinner","cn","Array","_","i","SPINNER_COUNT","undefined","VisuallyHidden"],"mappings":"wHAWA,SAASA,EAAQ,CACfC,SAAAA,CAAQ,CACRC,UAAAA,CAAS,CACTC,QAAAA,EAAU,EAAI,CACd,GAAGC,EAGJ,EACC,GAAI,CAACD,EACH,OAAOF,EAGT,IAAMI,EACJ,UAAC,QACC,UAAWC,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EACT,8DACAJ,GAED,GAAGE,CAAK,C,SAERG,MAAM,IAAI,CAAC,CAAE,OAtBE,CAsBoB,EAAG,CAACC,EAAGC,IACzC,UAAC,QAEC,UAAWH,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EACT,0RAEF,MACE,CACE,kBAAmB,CAAC,CAAC,EAAG,AAACI,CAAAA,
|
|
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"}
|