@atom-learning/components 6.0.0-beta.28 → 6.0.0-beta.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/dist/components/action-icon/ActionIcon.js +1 -1
  2. package/dist/components/action-icon/ActionIcon.js.map +1 -1
  3. package/dist/components/banner/banner-regular/BannerRegularActions.js +1 -1
  4. package/dist/components/banner/banner-regular/BannerRegularActions.js.map +1 -1
  5. package/dist/components/calendar/Calendar.js +1 -1
  6. package/dist/components/calendar/Calendar.js.map +1 -1
  7. package/dist/components/carousel/Carousel.d.ts +4 -7
  8. package/dist/components/carousel/CarouselSlider.d.ts +5 -7
  9. package/dist/components/carousel/CarouselSlider.js +1 -1
  10. package/dist/components/carousel/CarouselSlider.js.map +1 -1
  11. package/dist/components/checkbox-group/CheckboxGroupItem.js +1 -1
  12. package/dist/components/checkbox-group/CheckboxGroupItem.js.map +1 -1
  13. package/dist/components/chip/Chip.js +1 -1
  14. package/dist/components/chip/Chip.js.map +1 -1
  15. package/dist/components/data-table/DataTableContext.js +1 -1
  16. package/dist/components/data-table/DataTableContext.js.map +1 -1
  17. package/dist/components/data-table/DataTableHead.js +1 -1
  18. package/dist/components/data-table/DataTableHead.js.map +1 -1
  19. package/dist/components/data-table/DataTableMetaData.js +1 -1
  20. package/dist/components/data-table/DataTableMetaData.js.map +1 -1
  21. package/dist/components/data-table/DataTableRow.js +1 -1
  22. package/dist/components/data-table/DataTableRow.js.map +1 -1
  23. package/dist/components/data-table/DataTableRowSelectionCheckbox.js +1 -1
  24. package/dist/components/data-table/DataTableRowSelectionCheckbox.js.map +1 -1
  25. package/dist/components/data-table/DataTableSelectAllRowsCheckbox.js +1 -1
  26. package/dist/components/data-table/DataTableSelectAllRowsCheckbox.js.map +1 -1
  27. package/dist/components/data-table/DataTableTable.js +1 -1
  28. package/dist/components/data-table/DataTableTable.js.map +1 -1
  29. package/dist/components/data-table/getNewAsyncData.js +1 -1
  30. package/dist/components/data-table/getNewAsyncData.js.map +1 -1
  31. package/dist/components/data-table/pagination/Pagination.js +1 -1
  32. package/dist/components/data-table/pagination/Pagination.js.map +1 -1
  33. package/dist/components/markdown-content/MarkdownContent.js +1 -1
  34. package/dist/components/markdown-content/MarkdownContent.js.map +1 -1
  35. package/dist/components/markdown-content/components/MarkdownImage.js +1 -1
  36. package/dist/components/markdown-content/components/MarkdownImage.js.map +1 -1
  37. package/dist/components/markdown-content/components/MarkdownLink.js +1 -1
  38. package/dist/components/markdown-content/components/MarkdownLink.js.map +1 -1
  39. package/dist/components/navigation/NavigationMenu.js +1 -1
  40. package/dist/components/navigation/NavigationMenu.js.map +1 -1
  41. package/dist/components/number-input/NumberInput.js +1 -1
  42. package/dist/components/number-input/NumberInput.js.map +1 -1
  43. package/dist/components/progress-bar/ProgressBar.js +1 -1
  44. package/dist/components/progress-bar/ProgressBar.js.map +1 -1
  45. package/dist/components/segmented-control/SegmentedControlDescription.js +1 -1
  46. package/dist/components/segmented-control/SegmentedControlDescription.js.map +1 -1
  47. package/dist/components/segmented-control/SegmentedControlHeading.js +1 -1
  48. package/dist/components/segmented-control/SegmentedControlHeading.js.map +1 -1
  49. package/dist/components/slider/Slider.js +1 -1
  50. package/dist/components/slider/Slider.js.map +1 -1
  51. package/dist/components/slider/SliderSteps.js +1 -1
  52. package/dist/components/slider/SliderSteps.js.map +1 -1
  53. package/dist/components/slider/SliderValue.js +1 -1
  54. package/dist/components/slider/SliderValue.js.map +1 -1
  55. package/dist/components/stepper/StepperSteps.js +1 -1
  56. package/dist/components/stepper/StepperSteps.js.map +1 -1
  57. package/dist/components/table/TableStickyColumnsContainer.js +1 -1
  58. package/dist/components/table/TableStickyColumnsContainer.js.map +1 -1
  59. package/dist/components/table/useStickyColumnsCss.js +1 -1
  60. package/dist/components/table/useStickyColumnsCss.js.map +1 -1
  61. package/dist/components/toast/ToastProvider.js +1 -1
  62. package/dist/components/toast/ToastProvider.js.map +1 -1
  63. package/dist/components/video/Video.js +1 -1
  64. package/dist/components/video/Video.js.map +1 -1
  65. package/dist/docgen.json +1 -1
  66. package/dist/experiments/color-scheme/ColorScheme.config.js +1 -1
  67. package/dist/experiments/color-scheme/ColorScheme.config.js.map +1 -1
  68. package/dist/experiments/color-scheme/ColorScheme.js +1 -1
  69. package/dist/experiments/color-scheme/ColorScheme.js.map +1 -1
  70. package/dist/index.cjs.js +1 -1
  71. package/dist/index.cjs.js.map +1 -1
  72. package/dist/styled.js +1 -1
  73. package/dist/styled.js.map +1 -1
  74. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- import*as m from"@radix-ui/react-visually-hidden";import*as e from"react";import{Checkbox as s}from"../checkbox/Checkbox.js";import{Label as i}from"../label/Label.js";import{useDataTable as g}from"./DataTableContext.js";const b=({label:r="All rows selection"})=>{const{getIsAllPageRowsSelected:t,getIsSomePageRowsSelected:l,toggleAllPageRowsSelected:o,tableId:a}=g(),c=()=>l()?"indeterminate":!!t(),n=()=>l()?o(!1):o(!t());return e.createElement(e.Fragment,null,e.createElement(m.Root,null,e.createElement(i,{htmlFor:"".concat(a,"_all_rows_selection")},r)),e.createElement(s,{size:"lg",checked:c(),onCheckedChange:n,name:"".concat(a,"_allRowsSelection")}))};export{b as DataTableSelectAllRowsCheckbox};
1
+ import*as c from"@radix-ui/react-visually-hidden";import*as e from"react";import{Checkbox as s}from"../checkbox/Checkbox.js";import{Label as i}from"../label/Label.js";import{useDataTable as g}from"./DataTableContext.js";const b=({label:r="All rows selection"})=>{const{getIsAllPageRowsSelected:l,getIsSomePageRowsSelected:t,toggleAllPageRowsSelected:o,tableId:a}=g(),m=()=>t()?"indeterminate":!!l(),n=()=>t()?o(!1):o(!l());return e.createElement(e.Fragment,null,e.createElement(c.Root,null,e.createElement(i,{htmlFor:`${a}_all_rows_selection`},r)),e.createElement(s,{size:"lg",checked:m(),onCheckedChange:n,name:`${a}_allRowsSelection`}))};export{b as DataTableSelectAllRowsCheckbox};
2
2
  //# sourceMappingURL=DataTableSelectAllRowsCheckbox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataTableSelectAllRowsCheckbox.js","sources":["../../../src/components/data-table/DataTableSelectAllRowsCheckbox.tsx"],"sourcesContent":["import * as VisuallyHidden from '@radix-ui/react-visually-hidden'\nimport * as React from 'react'\n\nimport { Checkbox } from '../checkbox'\nimport { Label } from '../label'\nimport { useDataTable } from './DataTableContext'\n\nexport const DataTableSelectAllRowsCheckbox = ({\n label = 'All rows selection'\n}: {\n label?: string\n}) => {\n const {\n getIsAllPageRowsSelected,\n getIsSomePageRowsSelected,\n toggleAllPageRowsSelected,\n tableId\n } = useDataTable()\n\n const getCheckedState = () => {\n if (getIsSomePageRowsSelected()) return 'indeterminate'\n if (getIsAllPageRowsSelected()) return true\n return false\n }\n\n const updateCheckedState = () => {\n if (getIsSomePageRowsSelected()) {\n return toggleAllPageRowsSelected(false)\n }\n return toggleAllPageRowsSelected(!getIsAllPageRowsSelected())\n }\n\n return (\n <>\n <VisuallyHidden.Root>\n <Label htmlFor={`${tableId}_all_rows_selection`}>{label}</Label>\n </VisuallyHidden.Root>\n\n <Checkbox\n size=\"lg\"\n checked={getCheckedState()}\n onCheckedChange={updateCheckedState}\n name={`${tableId}_allRowsSelection`}\n />\n </>\n )\n}\n"],"names":["DataTableSelectAllRowsCheckbox","label","getIsAllPageRowsSelected","getIsSomePageRowsSelected","toggleAllPageRowsSelected","tableId","useDataTable","getCheckedState","updateCheckedState","React","VisuallyHidden","Label","Checkbox"],"mappings":"4NAOa,MAAAA,EAAiC,CAAC,CAC7C,MAAAC,EAAQ,oBACV,IAEM,CACJ,KAAM,CACJ,yBAAAC,EACA,0BAAAC,EACA,0BAAAC,EACA,QAAAC,CACF,EAAIC,EAAa,EAEXC,EAAkB,IAClBJ,IAAoC,gBACpC,CAAA,CAAAD,EAAyB,EAIzBM,EAAqB,IACrBL,IACKC,EAA0B,EAAK,EAEjCA,EAA0B,CAACF,GAA0B,EAG9D,OACEO,EAAA,cAAAA,EAAA,SAAA,KACEA,EAAA,cAACC,EAAe,KAAf,KACCD,EAAA,cAACE,EAAA,CAAM,QAAS,GAAG,OAAAN,EAAO,wBAAwBJ,CAAM,CAC1D,EAEAQ,EAAA,cAACG,EAAA,CACC,KAAK,KACL,QAASL,EAAgB,EACzB,gBAAiBC,EACjB,KAAM,GAAG,OAAAH,EAAO,mBAClB,CAAA,CAAA,CACF,CAEJ"}
1
+ {"version":3,"file":"DataTableSelectAllRowsCheckbox.js","sources":["../../../src/components/data-table/DataTableSelectAllRowsCheckbox.tsx"],"sourcesContent":["import * as VisuallyHidden from '@radix-ui/react-visually-hidden'\nimport * as React from 'react'\n\nimport { Checkbox } from '../checkbox'\nimport { Label } from '../label'\nimport { useDataTable } from './DataTableContext'\n\nexport const DataTableSelectAllRowsCheckbox = ({\n label = 'All rows selection'\n}: {\n label?: string\n}) => {\n const {\n getIsAllPageRowsSelected,\n getIsSomePageRowsSelected,\n toggleAllPageRowsSelected,\n tableId\n } = useDataTable()\n\n const getCheckedState = () => {\n if (getIsSomePageRowsSelected()) return 'indeterminate'\n if (getIsAllPageRowsSelected()) return true\n return false\n }\n\n const updateCheckedState = () => {\n if (getIsSomePageRowsSelected()) {\n return toggleAllPageRowsSelected(false)\n }\n return toggleAllPageRowsSelected(!getIsAllPageRowsSelected())\n }\n\n return (\n <>\n <VisuallyHidden.Root>\n <Label htmlFor={`${tableId}_all_rows_selection`}>{label}</Label>\n </VisuallyHidden.Root>\n\n <Checkbox\n size=\"lg\"\n checked={getCheckedState()}\n onCheckedChange={updateCheckedState}\n name={`${tableId}_allRowsSelection`}\n />\n </>\n )\n}\n"],"names":["DataTableSelectAllRowsCheckbox","label","getIsAllPageRowsSelected","getIsSomePageRowsSelected","toggleAllPageRowsSelected","tableId","useDataTable","getCheckedState","updateCheckedState","React","VisuallyHidden","Label","Checkbox"],"mappings":"4NAOa,MAAAA,EAAiC,CAAC,CAC7C,MAAAC,EAAQ,oBACV,IAEM,CACJ,KAAM,CACJ,yBAAAC,EACA,0BAAAC,EACA,0BAAAC,EACA,QAAAC,CACF,EAAIC,EAAAA,EAEEC,EAAkB,IAClBJ,IAAoC,gBACpC,CAAAD,CAAAA,EAAAA,EAIAM,EAAqB,IACrBL,EAA0B,EACrBC,EAA0B,EAAK,EAEjCA,EAA0B,CAACF,EAAAA,CAA0B,EAG9D,OACEO,EAAA,cAAAA,EAAA,cACEA,EAAA,cAACC,EAAe,KAAf,KACCD,EAAA,cAACE,EAAA,CAAM,QAAS,GAAGN,CAAO,uBAAwBJ,CAAM,CAC1D,EAEAQ,EAAA,cAACG,EAAA,CACC,KAAK,KACL,QAASL,IACT,gBAAiBC,EACjB,KAAM,GAAGH,CAAO,mBAClB,CAAA,CACF,CAEJ"}
@@ -1,2 +1,2 @@
1
- import A from"clsx";import*as t from"react";import{styled as B}from"../../styled.js";import{Table as L}from"../table/Table.js";import{DataTable as w}from"./DataTable.js";import{AsyncDataState as P}from"./DataTable.types.js";import{useDataTable as _}from"./DataTableContext.js";import{DataTableLoading as M}from"./DataTableLoading.js";const j=B("div",{base:["p-2","bg-white","rounded-xl"]}),q=({sortable:C,striped:g,theme:S="white",className:k,scrollOptions:e={numberOfStickyColumns:0,stickyHeaderOffset:0,hasStickyHeader:!1,showTotalInFirstColumn:!0,totalSuffix:"items"},rowAction:E,withContainer:O=!1,...v})=>{const{asyncDataState:x,getTotalRows:I,getCanSomeRowsExpand:m,rowSelection:f,enableRowSelection:d,tableId:T,setTablePosition:l}=_(),r=t.useRef(null),H=t.useRef(!1),a=t.useRef(!1),n=t.useMemo(()=>typeof window>"u"?null:window,[]);t.useEffect(()=>{if(!n||typeof IntersectionObserver>"u")return;const o=()=>{if(r.current){const s=r.current.getBoundingClientRect().top,i=r.current.getBoundingClientRect().bottom;l(u=>({...u,top:s,bottom:i}))}a.current=!1},c=()=>{a.current||(requestAnimationFrame(o),a.current=!0)};if(!r.current)return;const b=(e==null?void 0:e.stickyHeaderOffset)||0,F={rootMargin:"-".concat(b,"px 0px -").concat(b,"px 0px"),threshold:0},N=s=>{if(!s||s.length===0)return;const i=s[0];H.current=i.isIntersecting,n&&(i.isIntersecting?n==null||n.addEventListener("scroll",c):n==null||n.removeEventListener("scroll",c)),l(u=>({...u,isVisible:i.isIntersecting}))},h=new IntersectionObserver(N,F);return r.current&&(e.hasStickyHeader||Object.keys(f||{}).length>0)&&h.observe(r.current),()=>{h.disconnect(),n&&(n==null||n.removeEventListener("scroll",c))}},[f,e.hasStickyHeader,e==null?void 0:e.stickyHeaderOffset,n,l]);const p=x===P.PENDING,R=!p&&I()===0,D=()=>{let o=0;return m()&&d?o=2:(m()||d)&&(o=1),"".concat(T,"_").concat(o,"_control_columns")};if(R)return null;const y=t.createElement(L,{corners:"round",size:"lg",...v,ref:r,numberOfStickyColumns:e.numberOfStickyColumns,scrollContainerCls:e.scrollContainerCls,scrollContainerkey:D(),className:A(k,p&&["opacity-50","pointer-events-none","transition-opacity","duration-250","linear","delay-150"])},t.createElement(w.Head,{theme:S,sortable:C,isSticky:e.hasStickyHeader,stickyOffset:e.stickyHeaderOffset,className:e.headerCss,showTotalInFirstColumn:e.showTotalInFirstColumn,totalSuffix:e.totalSuffix}),t.createElement(w.Body,{striped:g,rowAction:E}));return t.createElement(t.Fragment,null,t.createElement(M,null),O?t.createElement(j,null,y):y)};export{q as DataTableTable};
1
+ import A from"clsx";import*as t from"react";import{styled as B}from"../../styled.js";import{Table as L}from"../table/Table.js";import{DataTable as w}from"./DataTable.js";import{AsyncDataState as P}from"./DataTable.types.js";import{useDataTable as _}from"./DataTableContext.js";import{DataTableLoading as M}from"./DataTableLoading.js";const j=B("div",{base:["p-2","bg-white","rounded-xl"]}),q=({sortable:C,striped:g,theme:S="white",className:k,scrollOptions:e={numberOfStickyColumns:0,stickyHeaderOffset:0,hasStickyHeader:!1,showTotalInFirstColumn:!0,totalSuffix:"items"},rowAction:E,withContainer:O=!1,...v})=>{const{asyncDataState:x,getTotalRows:I,getCanSomeRowsExpand:m,rowSelection:f,enableRowSelection:d,tableId:T,setTablePosition:l}=_(),n=t.useRef(null),H=t.useRef(!1),a=t.useRef(!1),r=t.useMemo(()=>typeof window>"u"?null:window,[]);t.useEffect(()=>{if(!r||typeof IntersectionObserver>"u")return;const o=()=>{if(n.current){const s=n.current.getBoundingClientRect().top,i=n.current.getBoundingClientRect().bottom;l(u=>({...u,top:s,bottom:i}))}a.current=!1},c=()=>{a.current||(requestAnimationFrame(o),a.current=!0)};if(!n.current)return;const b=(e==null?void 0:e.stickyHeaderOffset)||0,F={rootMargin:`-${b}px 0px -${b}px 0px`,threshold:0},N=s=>{if(!s||s.length===0)return;const i=s[0];H.current=i.isIntersecting,r&&(i.isIntersecting?r==null||r.addEventListener("scroll",c):r==null||r.removeEventListener("scroll",c)),l(u=>({...u,isVisible:i.isIntersecting}))},h=new IntersectionObserver(N,F);return n.current&&(e.hasStickyHeader||Object.keys(f||{}).length>0)&&h.observe(n.current),()=>{h.disconnect(),r&&(r==null||r.removeEventListener("scroll",c))}},[f,e.hasStickyHeader,e==null?void 0:e.stickyHeaderOffset,r,l]);const p=x===P.PENDING,R=!p&&I()===0,D=()=>{let o=0;return m()&&d?o=2:(m()||d)&&(o=1),`${T}_${o}_control_columns`};if(R)return null;const y=t.createElement(L,{corners:"round",size:"lg",...v,ref:n,numberOfStickyColumns:e.numberOfStickyColumns,scrollContainerCls:e.scrollContainerCls,scrollContainerkey:D(),className:A(k,p&&["opacity-50","pointer-events-none","transition-opacity","duration-250","linear","delay-150"])},t.createElement(w.Head,{theme:S,sortable:C,isSticky:e.hasStickyHeader,stickyOffset:e.stickyHeaderOffset,className:e.headerCss,showTotalInFirstColumn:e.showTotalInFirstColumn,totalSuffix:e.totalSuffix}),t.createElement(w.Body,{striped:g,rowAction:E}));return t.createElement(t.Fragment,null,t.createElement(M,null),O?t.createElement(j,null,y):y)};export{q as DataTableTable};
2
2
  //# sourceMappingURL=DataTableTable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataTableTable.js","sources":["../../../src/components/data-table/DataTableTable.tsx"],"sourcesContent":["import clsx from 'clsx'\nimport * as React from 'react'\n\nimport { styled } from '~/styled'\n\nimport { Table } from '../table'\nimport { TableBody } from '../table/TableBody'\nimport { DataTable } from './DataTable'\nimport { AsyncDataState } from './DataTable.types'\nimport { useDataTable } from './DataTableContext'\nimport { DataTableHead } from './DataTableHead'\nimport { DataTableLoading } from './DataTableLoading'\n\nconst TableContainer = styled('div', {\n base: ['p-2', 'bg-white', 'rounded-xl']\n})\n\nexport type DataTableTableProps = Omit<\n React.ComponentProps<typeof Table>,\n 'children' | 'numberOfStickyColumns'\n> &\n Partial<\n Pick<React.ComponentProps<typeof DataTableHead>, 'theme' | 'sortable'>\n > &\n Partial<Pick<React.ComponentProps<typeof TableBody>, 'striped'>> & {\n scrollOptions?: {\n hasStickyHeader?: boolean\n stickyHeaderOffset?: number\n headerCss?: string\n numberOfStickyColumns?: number\n scrollContainerCls?: string | string[]\n showTotalInFirstColumn?: boolean\n totalSuffix?: string\n }\n rowAction?: (row: Record<string, unknown>, event: React.MouseEvent) => void\n withContainer?: boolean\n }\n\nexport const DataTableTable = ({\n sortable,\n striped,\n theme = 'white',\n className,\n scrollOptions = {\n numberOfStickyColumns: 0,\n stickyHeaderOffset: 0,\n hasStickyHeader: false,\n showTotalInFirstColumn: true,\n totalSuffix: 'items'\n },\n rowAction,\n withContainer = false,\n ...props\n}: DataTableTableProps): JSX.Element | null => {\n const {\n asyncDataState,\n getTotalRows,\n getCanSomeRowsExpand,\n rowSelection,\n enableRowSelection,\n tableId,\n setTablePosition\n } = useDataTable()\n\n const tableRef = React.useRef<HTMLTableElement | null>(null)\n const isTableVisible = React.useRef(false)\n const isScrolling = React.useRef<boolean>(false)\n\n const scrollTarget = React.useMemo(() => {\n if (typeof window === 'undefined') return null\n return window\n }, [])\n\n React.useEffect(() => {\n if (!scrollTarget || typeof IntersectionObserver === 'undefined') {\n return\n }\n\n const updatePosition = () => {\n if (tableRef.current) {\n const tableTop = tableRef.current.getBoundingClientRect().top\n const tableBottom = tableRef.current.getBoundingClientRect().bottom\n\n setTablePosition((prevPosition) => ({\n ...prevPosition,\n top: tableTop,\n bottom: tableBottom\n }))\n }\n isScrolling.current = false\n }\n\n const handleScroll = () => {\n if (!isScrolling.current) {\n requestAnimationFrame(updatePosition)\n isScrolling.current = true\n }\n }\n\n if (!tableRef.current) return\n\n const observerOffset = scrollOptions?.stickyHeaderOffset || 0\n\n const observerOptions = {\n rootMargin: `-${observerOffset}px 0px -${observerOffset}px 0px`,\n threshold: 0\n }\n\n const handleTableIntersection = (entries: IntersectionObserverEntry[]) => {\n if (!entries || entries.length === 0) return\n const entry = entries[0]\n\n isTableVisible.current = entry.isIntersecting\n\n if (scrollTarget) {\n if (entry.isIntersecting) {\n // add scroll listener\n scrollTarget?.addEventListener('scroll', handleScroll)\n } else {\n // remove scroll listener\n scrollTarget?.removeEventListener('scroll', handleScroll)\n }\n }\n\n setTablePosition((prevPosition) => ({\n ...prevPosition,\n isVisible: entry.isIntersecting\n }))\n }\n\n const tableObserver = new IntersectionObserver(\n handleTableIntersection,\n observerOptions\n )\n\n //only track table position if we have a sticky header or bulk actions active\n if (\n tableRef.current &&\n (scrollOptions.hasStickyHeader ||\n Object.keys(rowSelection || {}).length > 0)\n ) {\n tableObserver.observe(tableRef.current)\n }\n\n return () => {\n tableObserver.disconnect()\n if (scrollTarget) {\n scrollTarget?.removeEventListener('scroll', handleScroll)\n }\n }\n }, [\n rowSelection,\n scrollOptions.hasStickyHeader,\n scrollOptions?.stickyHeaderOffset,\n scrollTarget,\n setTablePosition\n ])\n\n const isPending = asyncDataState === AsyncDataState.PENDING\n const isEmpty = !isPending && getTotalRows() === 0\n\n const buildScrollContainerKey = (): string => {\n let controlColumnCount = 0\n\n if (getCanSomeRowsExpand() && !!enableRowSelection) {\n controlColumnCount = 2\n } else if (getCanSomeRowsExpand() || !!enableRowSelection) {\n controlColumnCount = 1\n }\n\n return `${tableId}_${controlColumnCount}_control_columns`\n }\n\n if (isEmpty) return null\n\n const tableComponent = (\n <Table\n corners=\"round\"\n size=\"lg\"\n {...props}\n ref={tableRef}\n numberOfStickyColumns={scrollOptions.numberOfStickyColumns}\n scrollContainerCls={scrollOptions.scrollContainerCls}\n scrollContainerkey={buildScrollContainerKey()}\n className={clsx(\n className,\n isPending && [\n 'opacity-50',\n 'pointer-events-none',\n 'transition-opacity',\n 'duration-250',\n 'linear',\n 'delay-150'\n ]\n )}\n >\n <DataTable.Head\n theme={theme}\n sortable={sortable}\n isSticky={scrollOptions.hasStickyHeader}\n stickyOffset={scrollOptions.stickyHeaderOffset}\n className={scrollOptions.headerCss}\n showTotalInFirstColumn={scrollOptions.showTotalInFirstColumn}\n totalSuffix={scrollOptions.totalSuffix}\n />\n <DataTable.Body striped={striped} rowAction={rowAction} />\n </Table>\n )\n\n return (\n <>\n <DataTableLoading />\n {withContainer ? (\n <TableContainer>{tableComponent}</TableContainer>\n ) : (\n tableComponent\n )}\n </>\n )\n}\n"],"names":["TableContainer","styled","DataTableTable","sortable","striped","theme","className","scrollOptions","rowAction","withContainer","props","asyncDataState","getTotalRows","getCanSomeRowsExpand","rowSelection","enableRowSelection","tableId","setTablePosition","useDataTable","tableRef","React","isTableVisible","isScrolling","scrollTarget","updatePosition","tableTop","tableBottom","prevPosition","handleScroll","observerOffset","observerOptions","handleTableIntersection","entries","entry","tableObserver","isPending","AsyncDataState","isEmpty","buildScrollContainerKey","controlColumnCount","tableComponent","Table","clsx","DataTable","DataTableLoading"],"mappings":"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"}
1
+ {"version":3,"file":"DataTableTable.js","sources":["../../../src/components/data-table/DataTableTable.tsx"],"sourcesContent":["import clsx from 'clsx'\nimport * as React from 'react'\n\nimport { styled } from '~/styled'\n\nimport { Table } from '../table'\nimport { TableBody } from '../table/TableBody'\nimport { DataTable } from './DataTable'\nimport { AsyncDataState } from './DataTable.types'\nimport { useDataTable } from './DataTableContext'\nimport { DataTableHead } from './DataTableHead'\nimport { DataTableLoading } from './DataTableLoading'\n\nconst TableContainer = styled('div', {\n base: ['p-2', 'bg-white', 'rounded-xl']\n})\n\nexport type DataTableTableProps = Omit<\n React.ComponentProps<typeof Table>,\n 'children' | 'numberOfStickyColumns'\n> &\n Partial<\n Pick<React.ComponentProps<typeof DataTableHead>, 'theme' | 'sortable'>\n > &\n Partial<Pick<React.ComponentProps<typeof TableBody>, 'striped'>> & {\n scrollOptions?: {\n hasStickyHeader?: boolean\n stickyHeaderOffset?: number\n headerCss?: string\n numberOfStickyColumns?: number\n scrollContainerCls?: string | string[]\n showTotalInFirstColumn?: boolean\n totalSuffix?: string\n }\n rowAction?: (row: Record<string, unknown>, event: React.MouseEvent) => void\n withContainer?: boolean\n }\n\nexport const DataTableTable = ({\n sortable,\n striped,\n theme = 'white',\n className,\n scrollOptions = {\n numberOfStickyColumns: 0,\n stickyHeaderOffset: 0,\n hasStickyHeader: false,\n showTotalInFirstColumn: true,\n totalSuffix: 'items'\n },\n rowAction,\n withContainer = false,\n ...props\n}: DataTableTableProps): JSX.Element | null => {\n const {\n asyncDataState,\n getTotalRows,\n getCanSomeRowsExpand,\n rowSelection,\n enableRowSelection,\n tableId,\n setTablePosition\n } = useDataTable()\n\n const tableRef = React.useRef<HTMLTableElement | null>(null)\n const isTableVisible = React.useRef(false)\n const isScrolling = React.useRef<boolean>(false)\n\n const scrollTarget = React.useMemo(() => {\n if (typeof window === 'undefined') return null\n return window\n }, [])\n\n React.useEffect(() => {\n if (!scrollTarget || typeof IntersectionObserver === 'undefined') {\n return\n }\n\n const updatePosition = () => {\n if (tableRef.current) {\n const tableTop = tableRef.current.getBoundingClientRect().top\n const tableBottom = tableRef.current.getBoundingClientRect().bottom\n\n setTablePosition((prevPosition) => ({\n ...prevPosition,\n top: tableTop,\n bottom: tableBottom\n }))\n }\n isScrolling.current = false\n }\n\n const handleScroll = () => {\n if (!isScrolling.current) {\n requestAnimationFrame(updatePosition)\n isScrolling.current = true\n }\n }\n\n if (!tableRef.current) return\n\n const observerOffset = scrollOptions?.stickyHeaderOffset || 0\n\n const observerOptions = {\n rootMargin: `-${observerOffset}px 0px -${observerOffset}px 0px`,\n threshold: 0\n }\n\n const handleTableIntersection = (entries: IntersectionObserverEntry[]) => {\n if (!entries || entries.length === 0) return\n const entry = entries[0]\n\n isTableVisible.current = entry.isIntersecting\n\n if (scrollTarget) {\n if (entry.isIntersecting) {\n // add scroll listener\n scrollTarget?.addEventListener('scroll', handleScroll)\n } else {\n // remove scroll listener\n scrollTarget?.removeEventListener('scroll', handleScroll)\n }\n }\n\n setTablePosition((prevPosition) => ({\n ...prevPosition,\n isVisible: entry.isIntersecting\n }))\n }\n\n const tableObserver = new IntersectionObserver(\n handleTableIntersection,\n observerOptions\n )\n\n //only track table position if we have a sticky header or bulk actions active\n if (\n tableRef.current &&\n (scrollOptions.hasStickyHeader ||\n Object.keys(rowSelection || {}).length > 0)\n ) {\n tableObserver.observe(tableRef.current)\n }\n\n return () => {\n tableObserver.disconnect()\n if (scrollTarget) {\n scrollTarget?.removeEventListener('scroll', handleScroll)\n }\n }\n }, [\n rowSelection,\n scrollOptions.hasStickyHeader,\n scrollOptions?.stickyHeaderOffset,\n scrollTarget,\n setTablePosition\n ])\n\n const isPending = asyncDataState === AsyncDataState.PENDING\n const isEmpty = !isPending && getTotalRows() === 0\n\n const buildScrollContainerKey = (): string => {\n let controlColumnCount = 0\n\n if (getCanSomeRowsExpand() && !!enableRowSelection) {\n controlColumnCount = 2\n } else if (getCanSomeRowsExpand() || !!enableRowSelection) {\n controlColumnCount = 1\n }\n\n return `${tableId}_${controlColumnCount}_control_columns`\n }\n\n if (isEmpty) return null\n\n const tableComponent = (\n <Table\n corners=\"round\"\n size=\"lg\"\n {...props}\n ref={tableRef}\n numberOfStickyColumns={scrollOptions.numberOfStickyColumns}\n scrollContainerCls={scrollOptions.scrollContainerCls}\n scrollContainerkey={buildScrollContainerKey()}\n className={clsx(\n className,\n isPending && [\n 'opacity-50',\n 'pointer-events-none',\n 'transition-opacity',\n 'duration-250',\n 'linear',\n 'delay-150'\n ]\n )}\n >\n <DataTable.Head\n theme={theme}\n sortable={sortable}\n isSticky={scrollOptions.hasStickyHeader}\n stickyOffset={scrollOptions.stickyHeaderOffset}\n className={scrollOptions.headerCss}\n showTotalInFirstColumn={scrollOptions.showTotalInFirstColumn}\n totalSuffix={scrollOptions.totalSuffix}\n />\n <DataTable.Body striped={striped} rowAction={rowAction} />\n </Table>\n )\n\n return (\n <>\n <DataTableLoading />\n {withContainer ? (\n <TableContainer>{tableComponent}</TableContainer>\n ) : (\n tableComponent\n )}\n </>\n )\n}\n"],"names":["TableContainer","styled","DataTableTable","sortable","striped","theme","className","scrollOptions","rowAction","withContainer","props","asyncDataState","getTotalRows","getCanSomeRowsExpand","rowSelection","enableRowSelection","tableId","setTablePosition","useDataTable","tableRef","React","isTableVisible","isScrolling","scrollTarget","updatePosition","tableTop","tableBottom","prevPosition","handleScroll","observerOffset","observerOptions","handleTableIntersection","entries","entry","tableObserver","isPending","AsyncDataState","isEmpty","buildScrollContainerKey","controlColumnCount","tableComponent","Table","clsx","DataTable","DataTableLoading"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import c from"invariant";const h=e=>{if(e[0])return e[0].desc?"desc":"asc"},m=async(e,t,g,n,p)=>{var l,o,a,i,u,s;const{pageIndex:d,pageSize:y}=g,b={pageIndex:(l=t==null?void 0:t.pageIndex)!=null?l:d,pageSize:(o=t==null?void 0:t.pageSize)!=null?o:y,sortBy:(i=t==null?void 0:t.sortBy)!=null?i:(a=n[0])==null?void 0:a.id,sortDirection:(u=t==null?void 0:t.sortDirection)!=null?u:h(n),globalFilter:(s=t.globalFilter)!=null?s:p},r=await e(b);return c(Array.isArray(r==null?void 0:r.results),"The getAsyncData function must return an object with a property `result` which must be an array"),c(r&&Number.isInteger(r.total)&&r.total>=0,"The getAsyncData function must return an object with a property `total` which must be a positive integer or zero"),r};export{m as getNewAsyncData};
1
+ import n from"invariant";const p=e=>{if(e[0])return e[0].desc?"desc":"asc"},d=async(e,t,i,o,s)=>{var a;const{pageIndex:l,pageSize:u}=i,c={pageIndex:(t==null?void 0:t.pageIndex)??l,pageSize:(t==null?void 0:t.pageSize)??u,sortBy:(t==null?void 0:t.sortBy)??((a=o[0])==null?void 0:a.id),sortDirection:(t==null?void 0:t.sortDirection)??p(o),globalFilter:t.globalFilter??s},r=await e(c);return n(Array.isArray(r==null?void 0:r.results),"The getAsyncData function must return an object with a property `result` which must be an array"),n(r&&Number.isInteger(r.total)&&r.total>=0,"The getAsyncData function must return an object with a property `total` which must be a positive integer or zero"),r};export{d as getNewAsyncData};
2
2
  //# sourceMappingURL=getNewAsyncData.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getNewAsyncData.js","sources":["../../../src/components/data-table/getNewAsyncData.ts"],"sourcesContent":["import type {\n PaginationState,\n SortDirection,\n SortingState\n} from '@tanstack/react-table'\nimport invariant from 'invariant'\n\nimport type {\n TAsyncDataOptions,\n TAsyncDataResult,\n TGetAsyncData\n} from './DataTable.types'\n\nconst getSortDirection = (sorting: SortingState): SortDirection | undefined => {\n if (sorting[0]) {\n return sorting[0].desc ? 'desc' : 'asc'\n }\n return undefined\n}\n\nexport const getNewAsyncData = async (\n getAsyncData: TGetAsyncData,\n asyncDataOptions: Partial<TAsyncDataOptions>,\n paginationState: PaginationState,\n sorting: SortingState,\n globalFilter: string\n): Promise<TAsyncDataResult | undefined> => {\n const { pageIndex, pageSize } = paginationState\n const params = {\n pageIndex: asyncDataOptions?.pageIndex ?? pageIndex,\n pageSize: asyncDataOptions?.pageSize ?? pageSize,\n sortBy: asyncDataOptions?.sortBy ?? sorting[0]?.id,\n sortDirection: asyncDataOptions?.sortDirection ?? getSortDirection(sorting),\n globalFilter: asyncDataOptions.globalFilter ?? globalFilter\n }\n\n const newData = await getAsyncData(params)\n\n invariant(\n Array.isArray(newData?.results),\n 'The getAsyncData function must return an object with a property `result` which must be an array'\n )\n invariant(\n newData && Number.isInteger(newData.total) && newData.total >= 0,\n 'The getAsyncData function must return an object with a property `total` which must be a positive integer or zero'\n )\n\n return newData\n}\n"],"names":["getSortDirection","sorting","getNewAsyncData","getAsyncData","asyncDataOptions","paginationState","globalFilter","_a","_b","_c","_d","_e","_f","pageIndex","pageSize","params","newData","invariant"],"mappings":"yBAaA,MAAMA,EAAoBC,GAAqD,CAC7E,GAAIA,EAAQ,CAAC,EACX,OAAOA,EAAQ,CAAC,EAAE,KAAO,OAAS,KAGtC,EAEaC,EAAkB,MAC7BC,EACAC,EACAC,EACAJ,EACAK,IAC0C,CA1B5C,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EA2BE,KAAM,CAAE,UAAAC,EAAW,SAAAC,CAAS,EAAIT,EAC1BU,EAAS,CACb,WAAWR,EAAAH,GAAA,KAAA,OAAAA,EAAkB,YAAlB,KAAAG,EAA+BM,EAC1C,UAAUL,EAAAJ,GAAA,KAAAA,OAAAA,EAAkB,WAAlB,KAAAI,EAA8BM,EACxC,QAAQJ,EAAAN,GAAA,KAAA,OAAAA,EAAkB,SAAlB,KAAAM,GAA4BD,EAAAR,EAAQ,CAAC,IAAT,KAAAQ,OAAAA,EAAY,GAChD,eAAeE,EAAAP,GAAA,KAAAA,OAAAA,EAAkB,gBAAlB,KAAAO,EAAmCX,EAAiBC,CAAO,EAC1E,cAAcW,EAAAR,EAAiB,eAAjB,KAAAQ,EAAiCN,CACjD,EAEMU,EAAU,MAAMb,EAAaY,CAAM,EAEzC,OAAAE,EACE,MAAM,QAAQD,GAAA,KAAAA,OAAAA,EAAS,OAAO,EAC9B,iGACF,EACAC,EACED,GAAW,OAAO,UAAUA,EAAQ,KAAK,GAAKA,EAAQ,OAAS,EAC/D,kHACF,EAEOA,CACT"}
1
+ {"version":3,"file":"getNewAsyncData.js","sources":["../../../src/components/data-table/getNewAsyncData.ts"],"sourcesContent":["import type {\n PaginationState,\n SortDirection,\n SortingState\n} from '@tanstack/react-table'\nimport invariant from 'invariant'\n\nimport type {\n TAsyncDataOptions,\n TAsyncDataResult,\n TGetAsyncData\n} from './DataTable.types'\n\nconst getSortDirection = (sorting: SortingState): SortDirection | undefined => {\n if (sorting[0]) {\n return sorting[0].desc ? 'desc' : 'asc'\n }\n return undefined\n}\n\nexport const getNewAsyncData = async (\n getAsyncData: TGetAsyncData,\n asyncDataOptions: Partial<TAsyncDataOptions>,\n paginationState: PaginationState,\n sorting: SortingState,\n globalFilter: string\n): Promise<TAsyncDataResult | undefined> => {\n const { pageIndex, pageSize } = paginationState\n const params = {\n pageIndex: asyncDataOptions?.pageIndex ?? pageIndex,\n pageSize: asyncDataOptions?.pageSize ?? pageSize,\n sortBy: asyncDataOptions?.sortBy ?? sorting[0]?.id,\n sortDirection: asyncDataOptions?.sortDirection ?? getSortDirection(sorting),\n globalFilter: asyncDataOptions.globalFilter ?? globalFilter\n }\n\n const newData = await getAsyncData(params)\n\n invariant(\n Array.isArray(newData?.results),\n 'The getAsyncData function must return an object with a property `result` which must be an array'\n )\n invariant(\n newData && Number.isInteger(newData.total) && newData.total >= 0,\n 'The getAsyncData function must return an object with a property `total` which must be a positive integer or zero'\n )\n\n return newData\n}\n"],"names":["getSortDirection","sorting","getNewAsyncData","getAsyncData","asyncDataOptions","paginationState","globalFilter","_a","pageIndex","pageSize","params","newData","invariant"],"mappings":"yBAaA,MAAMA,EAAoBC,GAAqD,CAC7E,GAAIA,EAAQ,CAAC,EACX,OAAOA,EAAQ,CAAC,EAAE,KAAO,OAAS,KAGtC,EAEaC,EAAkB,MAC7BC,EACAC,EACAC,EACAJ,EACAK,IAC0C,CA1B5C,IAAAC,EA2BE,KAAM,CAAE,UAAAC,EAAW,SAAAC,CAAS,EAAIJ,EAC1BK,EAAS,CACb,WAAWN,GAAA,KAAAA,OAAAA,EAAkB,YAAaI,EAC1C,UAAUJ,GAAA,KAAA,OAAAA,EAAkB,WAAYK,EACxC,QAAQL,GAAA,KAAAA,OAAAA,EAAkB,WAAUG,EAAAN,EAAQ,CAAC,IAAT,KAAA,OAAAM,EAAY,IAChD,eAAeH,GAAA,YAAAA,EAAkB,gBAAiBJ,EAAiBC,CAAO,EAC1E,aAAcG,EAAiB,cAAgBE,CACjD,EAEMK,EAAU,MAAMR,EAAaO,CAAM,EAEzC,OAAAE,EACE,MAAM,QAAQD,GAAA,KAAAA,OAAAA,EAAS,OAAO,EAC9B,iGACF,EACAC,EACED,GAAW,OAAO,UAAUA,EAAQ,KAAK,GAAKA,EAAQ,OAAS,EAC/D,kHACF,EAEOA,CACT"}
@@ -1,2 +1,2 @@
1
- import*as e from"react";import{styled as S}from"../../../styled.js";import{Pagination as w}from"../../pagination/Pagination.js";import{Text as y}from"../../text/Text.js";import{AsyncDataState as E}from"../DataTable.types.js";import{useDataTable as b}from"../DataTableContext.js";const h=S("nav",{base:["flex","flex-col","justify-between","items-center","tabular-nums","flex-wrap","w-full","gap-4","mt-4","md:flex-row"]}),i=({colorScheme:c,...l})=>{const{applyPagination:a,getState:m,getRowModel:s,getPageCount:o,setPageIndex:g,getTotalRows:n,asyncDataState:p}=b();e.useEffect(()=>{a()},[a]);const{pagination:t}=m(),f=p!==E.PENDING&&n()===0,u=o()>1;if(f||!u)return null;const r=t.pageIndex*t.pageSize+1,P=r+s().rows.length-1,d=x=>{g(x-1)};return e.createElement(h,{...l},e.createElement(y,{size:"sm"},"".concat(r.toString()," - ").concat(P.toString()," of ").concat(n()," items")),e.createElement(w,{colorScheme:c,selectedPage:t.pageIndex+1,pagesCount:o(),onSelectedPageChange:d}))};i.displayName="Pagination";export{i as Pagination};
1
+ import*as e from"react";import{styled as S}from"../../../styled.js";import{Pagination as w}from"../../pagination/Pagination.js";import{Text as y}from"../../text/Text.js";import{AsyncDataState as E}from"../DataTable.types.js";import{useDataTable as $}from"../DataTableContext.js";const b=S("nav",{base:["flex","flex-col","justify-between","items-center","tabular-nums","flex-wrap","w-full","gap-4","mt-4","md:flex-row"]}),i=({colorScheme:l,...m})=>{const{applyPagination:a,getState:s,getRowModel:g,getPageCount:o,setPageIndex:c,getTotalRows:n,asyncDataState:p}=$();e.useEffect(()=>{a()},[a]);const{pagination:t}=s(),f=p!==E.PENDING&&n()===0,u=o()>1;if(f||!u)return null;const r=t.pageIndex*t.pageSize+1,P=r+g().rows.length-1,d=x=>{c(x-1)};return e.createElement(b,{...m},e.createElement(y,{size:"sm"},`${r.toString()} - ${P.toString()} of ${n()} items`),e.createElement(w,{colorScheme:l,selectedPage:t.pageIndex+1,pagesCount:o(),onSelectedPageChange:d}))};i.displayName="Pagination";export{i as Pagination};
2
2
  //# sourceMappingURL=Pagination.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Pagination.js","sources":["../../../../src/components/data-table/pagination/Pagination.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { styled } from '~/styled'\n\nimport { TcolorScheme } from '../../../experiments/color-scheme'\nimport { Pagination as PaginationComponent } from '../../pagination'\nimport { Text } from '../../text'\nimport { AsyncDataState } from '../DataTable.types'\nimport { useDataTable } from '../DataTableContext'\n\nconst StyledNav = styled('nav', {\n base: [\n 'flex',\n 'flex-col',\n 'justify-between',\n 'items-center',\n 'tabular-nums',\n 'flex-wrap',\n 'w-full',\n 'gap-4',\n 'mt-4',\n 'md:flex-row'\n ]\n})\n\ntype PaginationProps = React.ComponentProps<typeof StyledNav> & {\n colorScheme?: TcolorScheme\n}\n\n/** Applies pagination to parent DataTableProvider and renders UI to switch pages etc */\nexport const Pagination = ({ colorScheme, ...props }: PaginationProps) => {\n const {\n applyPagination,\n getState,\n getRowModel,\n getPageCount,\n setPageIndex,\n getTotalRows,\n asyncDataState\n } = useDataTable()\n\n React.useEffect(() => {\n applyPagination()\n }, [applyPagination])\n\n const { pagination: paginationState } = getState()\n const isPending = asyncDataState === AsyncDataState.PENDING\n const isEmpty = !isPending && getTotalRows() === 0\n\n // Show pagination only if total pages are more than 1\n const showPagination = getPageCount() > 1\n\n if (isEmpty || !showPagination) return null\n\n const recordsCountFrom =\n paginationState.pageIndex * paginationState.pageSize + 1\n const recordsCountTo = recordsCountFrom + getRowModel().rows.length - 1\n\n //indexing for the pagination component is 1 based\n const setPage = (index: number) => {\n setPageIndex(index - 1)\n }\n\n return (\n <StyledNav {...props}>\n <Text size=\"sm\">\n {`${recordsCountFrom.toString()} - ${recordsCountTo.toString()} of ${getTotalRows()} items`}\n </Text>\n <PaginationComponent\n colorScheme={colorScheme}\n selectedPage={paginationState.pageIndex + 1}\n pagesCount={getPageCount()}\n onSelectedPageChange={setPage}\n />\n </StyledNav>\n )\n}\n\nPagination.displayName = 'Pagination'\n"],"names":["StyledNav","styled","Pagination","colorScheme","props","applyPagination","getState","getRowModel","getPageCount","setPageIndex","getTotalRows","asyncDataState","useDataTable","React","paginationState","isEmpty","AsyncDataState","showPagination","recordsCountFrom","recordsCountTo","setPage","index","Text","PaginationComponent"],"mappings":"uRAUA,MAAMA,EAAYC,EAAO,MAAO,CAC9B,KAAM,CACJ,OACA,WACA,kBACA,eACA,eACA,YACA,SACA,QACA,OACA,aACF,CACF,CAAC,EAOYC,EAAa,CAAC,CAAE,YAAAC,EAAa,GAAGC,CAAM,IAAuB,CACxE,KAAM,CACJ,gBAAAC,EACA,SAAAC,EACA,YAAAC,EACA,aAAAC,EACA,aAAAC,EACA,aAAAC,EACA,eAAAC,CACF,EAAIC,IAEJC,EAAM,UAAU,IAAM,CACpBR,EACF,CAAA,EAAG,CAACA,CAAe,CAAC,EAEpB,KAAM,CAAE,WAAYS,CAAgB,EAAIR,EAAAA,EAElCS,EADYJ,IAAmBK,EAAe,SACtBN,EAAa,IAAM,EAG3CO,EAAiBT,EAAiB,EAAA,EAExC,GAAIO,GAAW,CAACE,EAAgB,OAAO,KAEvC,MAAMC,EACJJ,EAAgB,UAAYA,EAAgB,SAAW,EACnDK,EAAiBD,EAAmBX,EAAY,EAAE,KAAK,OAAS,EAGhEa,EAAWC,GAAkB,CACjCZ,EAAaY,EAAQ,CAAC,CACxB,EAEA,OACER,EAAA,cAACb,EAAA,CAAW,GAAGI,GACbS,EAAA,cAACS,EAAA,CAAK,KAAK,MACR,GAAG,OAAAJ,EAAiB,SAAS,EAAC,OAAM,OAAAC,EAAe,SAAU,EAAA,MAAA,EAAO,OAAAT,EAAa,EAAC,QACrF,CAAA,EACAG,EAAA,cAACU,EAAA,CACC,YAAapB,EACb,aAAcW,EAAgB,UAAY,EAC1C,WAAYN,IACZ,qBAAsBY,CAAAA,CACxB,CACF,CAEJ,EAEAlB,EAAW,YAAc"}
1
+ {"version":3,"file":"Pagination.js","sources":["../../../../src/components/data-table/pagination/Pagination.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { styled } from '~/styled'\n\nimport { TcolorScheme } from '../../../experiments/color-scheme'\nimport { Pagination as PaginationComponent } from '../../pagination'\nimport { Text } from '../../text'\nimport { AsyncDataState } from '../DataTable.types'\nimport { useDataTable } from '../DataTableContext'\n\nconst StyledNav = styled('nav', {\n base: [\n 'flex',\n 'flex-col',\n 'justify-between',\n 'items-center',\n 'tabular-nums',\n 'flex-wrap',\n 'w-full',\n 'gap-4',\n 'mt-4',\n 'md:flex-row'\n ]\n})\n\ntype PaginationProps = React.ComponentProps<typeof StyledNav> & {\n colorScheme?: TcolorScheme\n}\n\n/** Applies pagination to parent DataTableProvider and renders UI to switch pages etc */\nexport const Pagination = ({ colorScheme, ...props }: PaginationProps) => {\n const {\n applyPagination,\n getState,\n getRowModel,\n getPageCount,\n setPageIndex,\n getTotalRows,\n asyncDataState\n } = useDataTable()\n\n React.useEffect(() => {\n applyPagination()\n }, [applyPagination])\n\n const { pagination: paginationState } = getState()\n const isPending = asyncDataState === AsyncDataState.PENDING\n const isEmpty = !isPending && getTotalRows() === 0\n\n // Show pagination only if total pages are more than 1\n const showPagination = getPageCount() > 1\n\n if (isEmpty || !showPagination) return null\n\n const recordsCountFrom =\n paginationState.pageIndex * paginationState.pageSize + 1\n const recordsCountTo = recordsCountFrom + getRowModel().rows.length - 1\n\n //indexing for the pagination component is 1 based\n const setPage = (index: number) => {\n setPageIndex(index - 1)\n }\n\n return (\n <StyledNav {...props}>\n <Text size=\"sm\">\n {`${recordsCountFrom.toString()} - ${recordsCountTo.toString()} of ${getTotalRows()} items`}\n </Text>\n <PaginationComponent\n colorScheme={colorScheme}\n selectedPage={paginationState.pageIndex + 1}\n pagesCount={getPageCount()}\n onSelectedPageChange={setPage}\n />\n </StyledNav>\n )\n}\n\nPagination.displayName = 'Pagination'\n"],"names":["StyledNav","styled","Pagination","colorScheme","props","applyPagination","getState","getRowModel","getPageCount","setPageIndex","getTotalRows","asyncDataState","useDataTable","React","paginationState","isEmpty","AsyncDataState","showPagination","recordsCountFrom","recordsCountTo","setPage","index","Text","PaginationComponent"],"mappings":"uRAUA,MAAMA,EAAYC,EAAO,MAAO,CAC9B,KAAM,CACJ,OACA,WACA,kBACA,eACA,eACA,YACA,SACA,QACA,OACA,aACF,CACF,CAAC,EAOYC,EAAa,CAAC,CAAE,YAAAC,EAAa,GAAGC,CAAM,IAAuB,CACxE,KAAM,CACJ,gBAAAC,EACA,SAAAC,EACA,YAAAC,EACA,aAAAC,EACA,aAAAC,EACA,aAAAC,EACA,eAAAC,CACF,EAAIC,EAEJC,EAAAA,EAAM,UAAU,IAAM,CACpBR,GACF,EAAG,CAACA,CAAe,CAAC,EAEpB,KAAM,CAAE,WAAYS,CAAgB,EAAIR,EAAS,EAE3CS,EADYJ,IAAmBK,EAAe,SACtBN,EAAAA,IAAmB,EAG3CO,EAAiBT,EAAa,EAAI,EAExC,GAAIO,GAAW,CAACE,EAAgB,OAAO,KAEvC,MAAMC,EACJJ,EAAgB,UAAYA,EAAgB,SAAW,EACnDK,EAAiBD,EAAmBX,IAAc,KAAK,OAAS,EAGhEa,EAAWC,GAAkB,CACjCZ,EAAaY,EAAQ,CAAC,CACxB,EAEA,OACER,EAAA,cAACb,EAAA,CAAW,GAAGI,CAAAA,EACbS,EAAA,cAACS,EAAA,CAAK,KAAK,IAAA,EACR,GAAGJ,EAAiB,UAAU,MAAMC,EAAe,SAAU,CAAA,OAAOT,EAAa,CAAC,QACrF,EACAG,EAAA,cAACU,EAAA,CACC,YAAapB,EACb,aAAcW,EAAgB,UAAY,EAC1C,WAAYN,IACZ,qBAAsBY,CAAAA,CACxB,CACF,CAEJ,EAEAlB,EAAW,YAAc"}
@@ -1,2 +1,2 @@
1
- import s from"mdast-util-directive";import d from"mdast-util-from-markdown";import l from"micromark-extension-directive";import*as c from"react";import{styled as f}from"../../styled.js";import{Flex as w}from"../flex/Flex.js";import{MarkdownCode as k}from"./components/MarkdownCode.js";import{MarkdownEmphasis as h}from"./components/MarkdownEmphasis.js";import{MarkdownHeading as M}from"./components/MarkdownHeading.js";import{MarkdownInlineCode as x}from"./components/MarkdownInlineCode.js";import{MarkdownImage as u}from"./components/MarkdownImage.js";import{MarkdownLink as g}from"./components/MarkdownLink.js";import{MarkdownList as y}from"./components/MarkdownList.js";import{MarkdownListItem as C}from"./components/MarkdownListItem.js";import{MarkdownParagraph as E}from"./components/MarkdownParagraph.js";import{MarkdownStrong as I}from"./components/MarkdownStrong.js";import{MarkdownText as N}from"./components/MarkdownText.js";import{MarkdownThematicBreak as L}from"./components/MarkdownThematicBreak.js";const v=f(w,{base:["[&>h1]:max-w-[65ch]","[&>h2]:max-w-[65ch]","[&>h3]:max-w-[65ch]","[&>h4]:max-w-[65ch]","[&>p]:max-w-[75ch]","[&>ul]:max-w-[75ch]"]}),B={code:k,emphasis:h,heading:M,inlineCode:x,image:u,link:g,list:y,listItem:C,paragraph:E,strong:I,text:N,thematicBreak:L},H=o=>{var r,t;if((r=o.position)!=null&&r.start){const{line:a,column:m,offset:n}=(t=o.position)==null?void 0:t.start;return"".concat(o.type).concat(a).concat(m).concat(n)}return"".concat(o.type).concat(+new Date)},p=({content:o,customComponents:r={},className:t})=>{const a=d(o,{extensions:[l()],mdastExtensions:[s.fromMarkdown]}),m={...B,...r},n=e=>{const i=m[e.type];return i?c.createElement(i,{key:H(e),node:e,handleNode:n}):null};return c.createElement(v,{direction:"column",gap:5,className:t},a.children.map(n))};p.displayName="MarkdownContent";export{p as MarkdownContent};
1
+ import d from"mdast-util-directive";import l from"mdast-util-from-markdown";import c from"micromark-extension-directive";import*as p from"react";import{styled as f}from"../../styled.js";import{Flex as w}from"../flex/Flex.js";import{MarkdownCode as k}from"./components/MarkdownCode.js";import{MarkdownEmphasis as h}from"./components/MarkdownEmphasis.js";import{MarkdownHeading as M}from"./components/MarkdownHeading.js";import{MarkdownInlineCode as x}from"./components/MarkdownInlineCode.js";import{MarkdownImage as u}from"./components/MarkdownImage.js";import{MarkdownLink as g}from"./components/MarkdownLink.js";import{MarkdownList as $}from"./components/MarkdownList.js";import{MarkdownListItem as y}from"./components/MarkdownListItem.js";import{MarkdownParagraph as C}from"./components/MarkdownParagraph.js";import{MarkdownStrong as E}from"./components/MarkdownStrong.js";import{MarkdownText as I}from"./components/MarkdownText.js";import{MarkdownThematicBreak as N}from"./components/MarkdownThematicBreak.js";const L=f(w,{base:["[&>h1]:max-w-[65ch]","[&>h2]:max-w-[65ch]","[&>h3]:max-w-[65ch]","[&>h4]:max-w-[65ch]","[&>p]:max-w-[75ch]","[&>ul]:max-w-[75ch]"]}),v={code:k,emphasis:h,heading:M,inlineCode:x,image:u,link:g,list:$,listItem:y,paragraph:C,strong:E,text:I,thematicBreak:N},B=o=>{var r,t;if((r=o.position)!=null&&r.start){const{line:e,column:n,offset:m}=(t=o.position)==null?void 0:t.start;return`${o.type}${e}${n}${m}`}return`${o.type}${+new Date}`},s=({content:o,customComponents:r={},className:t})=>{const e=l(o,{extensions:[c()],mdastExtensions:[d.fromMarkdown]}),n={...v,...r},m=a=>{const i=n[a.type];return i?p.createElement(i,{key:B(a),node:a,handleNode:m}):null};return p.createElement(L,{direction:"column",gap:5,className:t},e.children.map(m))};s.displayName="MarkdownContent";export{s as MarkdownContent};
2
2
  //# sourceMappingURL=MarkdownContent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownContent.js","sources":["../../../src/components/markdown-content/MarkdownContent.tsx"],"sourcesContent":["import directive from 'mdast-util-directive'\nimport fromMarkdown from 'mdast-util-from-markdown'\nimport syntax from 'micromark-extension-directive'\nimport * as React from 'react'\n\nimport { styled } from '~/styled'\n\nimport { Flex } from '../flex/Flex'\nimport {\n MarkdownCode,\n MarkdownEmphasis,\n MarkdownHeading,\n MarkdownImage,\n MarkdownInlineCode,\n MarkdownLink,\n MarkdownList,\n MarkdownListItem,\n MarkdownParagraph,\n MarkdownStrong,\n MarkdownText,\n MarkdownThematicBreak\n} from './components'\n\ntype HandleNode = (node) => JSX.Element | null\n\nconst StyledMarkdownContent = styled(Flex, {\n base: [\n '[&>h1]:max-w-[65ch]',\n '[&>h2]:max-w-[65ch]',\n '[&>h3]:max-w-[65ch]',\n '[&>h4]:max-w-[65ch]',\n '[&>p]:max-w-[75ch]',\n '[&>ul]:max-w-[75ch]'\n ]\n})\n\ntype MarkdownContentProps = React.ComponentProps<\n typeof StyledMarkdownContent\n> & {\n content: string\n customComponents?: {\n [key: string]: (props: { node: any; handleNode: HandleNode }) => JSX.Element\n }\n}\n\nconst defaultComponentsMap = {\n code: MarkdownCode,\n emphasis: MarkdownEmphasis,\n heading: MarkdownHeading,\n inlineCode: MarkdownInlineCode,\n image: MarkdownImage,\n link: MarkdownLink,\n list: MarkdownList,\n listItem: MarkdownListItem,\n paragraph: MarkdownParagraph,\n strong: MarkdownStrong,\n text: MarkdownText,\n thematicBreak: MarkdownThematicBreak\n}\n\nconst generateNodeKey = (node) => {\n if (node.position?.start) {\n const { line, column, offset } = node.position?.start\n return `${node.type}${line}${column}${offset}`\n }\n\n return `${node.type}${+new Date()}`\n}\n\nexport const MarkdownContent = ({\n content,\n customComponents = {},\n className\n}: MarkdownContentProps) => {\n const AST = fromMarkdown(content, {\n extensions: [syntax()],\n mdastExtensions: [directive.fromMarkdown]\n })\n\n const componentsMap = {\n ...defaultComponentsMap,\n ...customComponents\n }\n\n const handleNode: HandleNode = (node) => {\n const MarkdownComponent = componentsMap[node.type]\n\n return MarkdownComponent ? (\n <MarkdownComponent\n key={generateNodeKey(node)}\n node={node}\n handleNode={handleNode}\n />\n ) : null\n }\n\n return (\n <StyledMarkdownContent direction=\"column\" gap={5} className={className}>\n {AST.children.map(handleNode)}\n </StyledMarkdownContent>\n )\n}\n\nMarkdownContent.displayName = 'MarkdownContent'\n"],"names":["StyledMarkdownContent","styled","Flex","defaultComponentsMap","MarkdownCode","MarkdownEmphasis","MarkdownHeading","MarkdownInlineCode","MarkdownImage","MarkdownLink","MarkdownList","MarkdownListItem","MarkdownParagraph","MarkdownStrong","MarkdownText","MarkdownThematicBreak","generateNodeKey","node","_a","_b","line","column","offset","MarkdownContent","content","customComponents","className","AST","fromMarkdown","syntax","directive","componentsMap","handleNode","MarkdownComponent","React"],"mappings":"q/BAyBA,MAAMA,EAAwBC,EAAOC,EAAM,CACzC,KAAM,CACJ,sBACA,sBACA,sBACA,sBACA,qBACA,qBACF,CACF,CAAC,EAWKC,EAAuB,CAC3B,KAAMC,EACN,SAAUC,EACV,QAASC,EACT,WAAYC,EACZ,MAAOC,EACP,KAAMC,EACN,KAAMC,EACN,SAAUC,EACV,UAAWC,EACX,OAAQC,EACR,KAAMC,EACN,cAAeC,CACjB,EAEMC,EAAmBC,GAAS,CA5DlC,IAAAC,EAAAC,EA6DE,IAAID,EAAAD,EAAK,WAAL,MAAAC,EAAe,MAAO,CACxB,KAAM,CAAE,KAAAE,EAAM,OAAAC,EAAQ,OAAAC,CAAO,GAAIH,EAAAF,EAAK,WAAL,KAAA,OAAAE,EAAe,MAChD,MAAO,GAAG,OAAAF,EAAK,IAAA,EAAO,OAAAG,CAAAA,EAAO,OAAAC,CAAS,EAAA,OAAAC,CACxC,CAAA,CAEA,MAAO,GAAG,OAAAL,EAAK,IAAA,EAAO,OAAC,CAAA,IAAI,IAC7B,CAAA,EAEaM,EAAkB,CAAC,CAC9B,QAAAC,EACA,iBAAAC,EAAmB,CAAA,EACnB,UAAAC,CACF,IAA4B,CAC1B,MAAMC,EAAMC,EAAaJ,EAAS,CAChC,WAAY,CAACK,GAAQ,EACrB,gBAAiB,CAACC,EAAU,YAAY,CAC1C,CAAC,EAEKC,EAAgB,CACpB,GAAG5B,EACH,GAAGsB,CACL,EAEMO,EAA0Bf,GAAS,CACvC,MAAMgB,EAAoBF,EAAcd,EAAK,IAAI,EAEjD,OAAOgB,EACLC,EAAA,cAACD,EAAA,CACC,IAAKjB,EAAgBC,CAAI,EACzB,KAAMA,EACN,WAAYe,CAAAA,CACd,EACE,IACN,EAEA,OACEE,EAAA,cAAClC,EAAA,CAAsB,UAAU,SAAS,IAAK,EAAG,UAAW0B,CAAAA,EAC1DC,EAAI,SAAS,IAAIK,CAAU,CAC9B,CAEJ,EAEAT,EAAgB,YAAc"}
1
+ {"version":3,"file":"MarkdownContent.js","sources":["../../../src/components/markdown-content/MarkdownContent.tsx"],"sourcesContent":["import directive from 'mdast-util-directive'\nimport fromMarkdown from 'mdast-util-from-markdown'\nimport syntax from 'micromark-extension-directive'\nimport * as React from 'react'\n\nimport { styled } from '~/styled'\n\nimport { Flex } from '../flex/Flex'\nimport {\n MarkdownCode,\n MarkdownEmphasis,\n MarkdownHeading,\n MarkdownImage,\n MarkdownInlineCode,\n MarkdownLink,\n MarkdownList,\n MarkdownListItem,\n MarkdownParagraph,\n MarkdownStrong,\n MarkdownText,\n MarkdownThematicBreak\n} from './components'\n\ntype HandleNode = (node) => JSX.Element | null\n\nconst StyledMarkdownContent = styled(Flex, {\n base: [\n '[&>h1]:max-w-[65ch]',\n '[&>h2]:max-w-[65ch]',\n '[&>h3]:max-w-[65ch]',\n '[&>h4]:max-w-[65ch]',\n '[&>p]:max-w-[75ch]',\n '[&>ul]:max-w-[75ch]'\n ]\n})\n\ntype MarkdownContentProps = React.ComponentProps<\n typeof StyledMarkdownContent\n> & {\n content: string\n customComponents?: {\n [key: string]: (props: { node: any; handleNode: HandleNode }) => JSX.Element\n }\n}\n\nconst defaultComponentsMap = {\n code: MarkdownCode,\n emphasis: MarkdownEmphasis,\n heading: MarkdownHeading,\n inlineCode: MarkdownInlineCode,\n image: MarkdownImage,\n link: MarkdownLink,\n list: MarkdownList,\n listItem: MarkdownListItem,\n paragraph: MarkdownParagraph,\n strong: MarkdownStrong,\n text: MarkdownText,\n thematicBreak: MarkdownThematicBreak\n}\n\nconst generateNodeKey = (node) => {\n if (node.position?.start) {\n const { line, column, offset } = node.position?.start\n return `${node.type}${line}${column}${offset}`\n }\n\n return `${node.type}${+new Date()}`\n}\n\nexport const MarkdownContent = ({\n content,\n customComponents = {},\n className\n}: MarkdownContentProps) => {\n const AST = fromMarkdown(content, {\n extensions: [syntax()],\n mdastExtensions: [directive.fromMarkdown]\n })\n\n const componentsMap = {\n ...defaultComponentsMap,\n ...customComponents\n }\n\n const handleNode: HandleNode = (node) => {\n const MarkdownComponent = componentsMap[node.type]\n\n return MarkdownComponent ? (\n <MarkdownComponent\n key={generateNodeKey(node)}\n node={node}\n handleNode={handleNode}\n />\n ) : null\n }\n\n return (\n <StyledMarkdownContent direction=\"column\" gap={5} className={className}>\n {AST.children.map(handleNode)}\n </StyledMarkdownContent>\n )\n}\n\nMarkdownContent.displayName = 'MarkdownContent'\n"],"names":["StyledMarkdownContent","styled","Flex","defaultComponentsMap","MarkdownCode","MarkdownEmphasis","MarkdownHeading","MarkdownInlineCode","MarkdownImage","MarkdownLink","MarkdownList","MarkdownListItem","MarkdownParagraph","MarkdownStrong","MarkdownText","MarkdownThematicBreak","generateNodeKey","node","_a","_b","line","column","offset","MarkdownContent","content","customComponents","className","AST","fromMarkdown","syntax","directive","componentsMap","handleNode","MarkdownComponent","React"],"mappings":"q/BAyBA,MAAMA,EAAwBC,EAAOC,EAAM,CACzC,KAAM,CACJ,sBACA,sBACA,sBACA,sBACA,qBACA,qBACF,CACF,CAAC,EAWKC,EAAuB,CAC3B,KAAMC,EACN,SAAUC,EACV,QAASC,EACT,WAAYC,EACZ,MAAOC,EACP,KAAMC,EACN,KAAMC,EACN,SAAUC,EACV,UAAWC,EACX,OAAQC,EACR,KAAMC,EACN,cAAeC,CACjB,EAEMC,EAAmBC,GAAS,CA5DlC,IAAAC,EAAAC,EA6DE,IAAID,EAAAD,EAAK,WAAL,MAAAC,EAAe,MAAO,CACxB,KAAM,CAAE,KAAAE,EAAM,OAAAC,EAAQ,OAAAC,CAAO,GAAIH,EAAAF,EAAK,WAAL,KAAAE,OAAAA,EAAe,MAChD,MAAO,GAAGF,EAAK,IAAI,GAAGG,CAAI,GAAGC,CAAM,GAAGC,CAAM,EAC9C,CAEA,MAAO,GAAGL,EAAK,IAAI,GAAG,CAAC,IAAI,IAAM,EACnC,EAEaM,EAAkB,CAAC,CAC9B,QAAAC,EACA,iBAAAC,EAAmB,CAAC,EACpB,UAAAC,CACF,IAA4B,CAC1B,MAAMC,EAAMC,EAAaJ,EAAS,CAChC,WAAY,CAACK,GAAQ,EACrB,gBAAiB,CAACC,EAAU,YAAY,CAC1C,CAAC,EAEKC,EAAgB,CACpB,GAAG5B,EACH,GAAGsB,CACL,EAEMO,EAA0Bf,GAAS,CACvC,MAAMgB,EAAoBF,EAAcd,EAAK,IAAI,EAEjD,OAAOgB,EACLC,EAAA,cAACD,EAAA,CACC,IAAKjB,EAAgBC,CAAI,EACzB,KAAMA,EACN,WAAYe,CAAAA,CACd,EACE,IACN,EAEA,OACEE,EAAA,cAAClC,EAAA,CAAsB,UAAU,SAAS,IAAK,EAAG,UAAW0B,CAAAA,EAC1DC,EAAI,SAAS,IAAIK,CAAU,CAC9B,CAEJ,EAEAT,EAAgB,YAAc"}
@@ -1,2 +1,2 @@
1
- import*as m from"react";import{Image as o}from"../../image/Image.js";const t=({node:e,className:a})=>{var r;return m.createElement(o,{src:e.url,alt:(r=e.alt)!=null?r:void 0,className:a})};export{t as MarkdownImage};
1
+ import*as m from"react";import{Image as o}from"../../image/Image.js";const r=({node:e,className:a})=>m.createElement(o,{src:e.url,alt:e.alt??void 0,className:a});export{r as MarkdownImage};
2
2
  //# sourceMappingURL=MarkdownImage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownImage.js","sources":["../../../../src/components/markdown-content/components/MarkdownImage.tsx"],"sourcesContent":["import type { Image as ImageType } from 'mdast'\nimport * as React from 'react'\n\nimport { Image } from '../../image/Image'\n\ntype MarkdownImageProps = {\n node: ImageType\n className?: string\n}\n\nexport const MarkdownImage = ({ node, className }: MarkdownImageProps) => (\n <Image src={node.url} alt={node.alt ?? undefined} className={className} />\n)\n"],"names":["MarkdownImage","node","className","_a","React","Image"],"mappings":"qEAUO,MAAMA,EAAgB,CAAC,CAAE,KAAAC,EAAM,UAAAC,CAAU,IAAuB,CAVvE,IAAAC,EAWE,OAAAC,EAAA,cAACC,EAAA,CAAM,IAAKJ,EAAK,IAAK,KAAKE,EAAAF,EAAK,MAAL,KAAAE,EAAY,OAAW,UAAWD,CAAW,CAAA,CAAA"}
1
+ {"version":3,"file":"MarkdownImage.js","sources":["../../../../src/components/markdown-content/components/MarkdownImage.tsx"],"sourcesContent":["import type { Image as ImageType } from 'mdast'\nimport * as React from 'react'\n\nimport { Image } from '../../image/Image'\n\ntype MarkdownImageProps = {\n node: ImageType\n className?: string\n}\n\nexport const MarkdownImage = ({ node, className }: MarkdownImageProps) => (\n <Image src={node.url} alt={node.alt ?? undefined} className={className} />\n)\n"],"names":["MarkdownImage","node","className","React","Image"],"mappings":"qEAUO,MAAMA,EAAgB,CAAC,CAAE,KAAAC,EAAM,UAAAC,CAAU,IAC9CC,EAAA,cAACC,EAAA,CAAM,IAAKH,EAAK,IAAK,IAAKA,EAAK,KAAO,OAAW,UAAWC,CAAW,CAAA"}
@@ -1,2 +1,2 @@
1
- import*as l from"react";import{Link as i}from"../../link/Link.js";const n=({node:e,handleNode:o})=>{var r,t;return l.createElement(i,{title:(r=e.title)!=null?r:void 0,href:e.url},(t=e.children)==null?void 0:t.map(o))};export{n as MarkdownLink};
1
+ import*as t from"react";import{Link as i}from"../../link/Link.js";const l=({node:e,handleNode:o})=>{var r;return t.createElement(i,{title:e.title??void 0,href:e.url},(r=e.children)==null?void 0:r.map(o))};export{l as MarkdownLink};
2
2
  //# sourceMappingURL=MarkdownLink.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownLink.js","sources":["../../../../src/components/markdown-content/components/MarkdownLink.tsx"],"sourcesContent":["import type { Content, Link as LinkType } from 'mdast'\nimport * as React from 'react'\n\nimport { Link } from '../../link'\n\ntype MarkdownLinkProps = {\n node: LinkType\n handleNode: (node: Content) => React.ReactElement\n}\n\nexport const MarkdownLink = ({ node, handleNode }: MarkdownLinkProps) => (\n <Link title={node.title ?? undefined} href={node.url}>\n {node.children?.map(handleNode)}\n </Link>\n)\n"],"names":["MarkdownLink","node","handleNode","_a","_b","React","Link"],"mappings":"wEAUaA,EAAe,CAAC,CAAE,KAAAC,EAAM,WAAAC,CAAW,IAAsB,CAVtE,IAAAC,EAAAC,EAWE,OAAAC,EAAA,cAACC,EAAA,CAAK,OAAOH,EAAAF,EAAK,QAAL,KAAAE,EAAc,OAAW,KAAMF,EAAK,MAC9CG,EAAAH,EAAK,WAAL,KAAAG,OAAAA,EAAe,IAAIF,CACtB,CAAA,CAAA"}
1
+ {"version":3,"file":"MarkdownLink.js","sources":["../../../../src/components/markdown-content/components/MarkdownLink.tsx"],"sourcesContent":["import type { Content, Link as LinkType } from 'mdast'\nimport * as React from 'react'\n\nimport { Link } from '../../link'\n\ntype MarkdownLinkProps = {\n node: LinkType\n handleNode: (node: Content) => React.ReactElement\n}\n\nexport const MarkdownLink = ({ node, handleNode }: MarkdownLinkProps) => (\n <Link title={node.title ?? undefined} href={node.url}>\n {node.children?.map(handleNode)}\n </Link>\n)\n"],"names":["MarkdownLink","node","handleNode","_a","React","Link"],"mappings":"kEAUa,MAAAA,EAAe,CAAC,CAAE,KAAAC,EAAM,WAAAC,CAAW,IAAsB,CAVtE,IAAAC,EAWE,OAAAC,EAAA,cAACC,EAAA,CAAK,MAAOJ,EAAK,OAAS,OAAW,KAAMA,EAAK,GAAA,GAC9CE,EAAAF,EAAK,WAAL,KAAAE,OAAAA,EAAe,IAAID,CACtB,CAAA,CAAA"}
@@ -1,2 +1,2 @@
1
- import*as i from"@radix-ui/react-navigation-menu";import f from"clsx";import e from"react";import{styled as o}from"../../styled.js";import{colorSchemes as y}from"./NavigationMenu.colorscheme.config.js";import{NavigationMenuContext as D}from"./NavigationMenuContext.js";import{NavigationMenuDropdown as M}from"./NavigationMenuDropdown.js";import{NavigationMenuDropdownContent as b}from"./NavigationMenuDropdownContent.js";import{NavigationMenuDropdownItem as x,NavigationMenuDropdownItemTitle as E}from"./NavigationMenuDropdownItem.js";import{NavigationMenuDropdownTrigger as T}from"./NavigationMenuDropdownTrigger.js";import{NavigationMenuLink as C}from"./NavigationMenuLink.js";const I=o(i.Root,{base:["flex","justify-center","relative"]}),L=o(i.List,{base:["flex","justify-center","items-center","gap-1","list-none"]}),j=o(i.Viewport,{base:["z-2147483647"]}),S=o("div",{base:["absolute","left-0","top-full","w-full","flex","justify-center"]}),m=({children:s,className:u,...p})=>{const[c,l]=e.useState(),[n,d]=e.useState(),[r,g]=e.useState(0),a=e.useRef(null);e.useLayoutEffect(()=>{a.current&&g(a.current.offsetWidth)},[e.Children.toArray(s).length]),e.useEffect(()=>{let t;return n===""&&(t=setTimeout(()=>l(null),200)),()=>{t!==null&&clearTimeout(t)}},[n]);const v=(t,w)=>{if(t&&r&&n===w){const N=r/2,h=r-t.offsetLeft-t.offsetWidth+t.offsetWidth/2;l(Math.round(N-h))}return t};return e.createElement(D.Provider,{value:{onNodeUpdate:v}},e.createElement(I,{className:f(u),style:y.light,onValueChange:d,...p},e.createElement(L,{ref:a},s),e.createElement(S,null,e.createElement(j,{style:{"--navigation-menu-viewport-offset":"".concat(c||0,"px")},className:f(["data-[state=open]:animate-fade-in","data-[state=closed]:animate-fade-out","translate-x-(--navigation-menu-viewport-offset)"])}))))},V=Object.assign(m,{Link:C,Dropdown:M,DropdownContent:b,DropdownItem:x,DropdownItemTitle:E,DropdownTrigger:T});m.displayName="NavigationMenu";export{V as NavigationMenu};
1
+ import*as i from"@radix-ui/react-navigation-menu";import f from"clsx";import e from"react";import{styled as o}from"../../styled.js";import{colorSchemes as y}from"./NavigationMenu.colorscheme.config.js";import{NavigationMenuContext as D}from"./NavigationMenuContext.js";import{NavigationMenuDropdown as M}from"./NavigationMenuDropdown.js";import{NavigationMenuDropdownContent as b}from"./NavigationMenuDropdownContent.js";import{NavigationMenuDropdownItem as x,NavigationMenuDropdownItemTitle as E}from"./NavigationMenuDropdownItem.js";import{NavigationMenuDropdownTrigger as T}from"./NavigationMenuDropdownTrigger.js";import{NavigationMenuLink as C}from"./NavigationMenuLink.js";const I=o(i.Root,{base:["flex","justify-center","relative"]}),L=o(i.List,{base:["flex","justify-center","items-center","gap-1","list-none"]}),j=o(i.Viewport,{base:["z-2147483647"]}),S=o("div",{base:["absolute","left-0","top-full","w-full","flex","justify-center"]}),m=({children:s,className:u,...p})=>{const[d,l]=e.useState(),[n,c]=e.useState(),[r,g]=e.useState(0),a=e.useRef(null);e.useLayoutEffect(()=>{a.current&&g(a.current.offsetWidth)},[e.Children.toArray(s).length]),e.useEffect(()=>{let t;return n===""&&(t=setTimeout(()=>l(null),200)),()=>{t!==null&&clearTimeout(t)}},[n]);const v=(t,w)=>{if(t&&r&&n===w){const N=r/2,h=r-t.offsetLeft-t.offsetWidth+t.offsetWidth/2;l(Math.round(N-h))}return t};return e.createElement(D.Provider,{value:{onNodeUpdate:v}},e.createElement(I,{className:f(u),style:y.light,onValueChange:c,...p},e.createElement(L,{ref:a},s),e.createElement(S,null,e.createElement(j,{style:{"--navigation-menu-viewport-offset":`${d||0}px`},className:f(["data-[state=open]:animate-fade-in","data-[state=closed]:animate-fade-out","translate-x-(--navigation-menu-viewport-offset)"])}))))},V=Object.assign(m,{Link:C,Dropdown:M,DropdownContent:b,DropdownItem:x,DropdownItemTitle:E,DropdownTrigger:T});m.displayName="NavigationMenu";export{V as NavigationMenu};
2
2
  //# sourceMappingURL=NavigationMenu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NavigationMenu.js","sources":["../../../src/components/navigation/NavigationMenu.tsx"],"sourcesContent":["import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'\nimport clsx from 'clsx'\nimport React from 'react'\n\nimport { styled } from '~/styled'\n\nimport { colorSchemes as navigationMenuColorSchemes } from './NavigationMenu.colorscheme.config'\nimport { NavigationMenuContext } from './NavigationMenuContext'\nimport { NavigationMenuDropdown } from './NavigationMenuDropdown'\nimport { NavigationMenuDropdownContent } from './NavigationMenuDropdownContent'\nimport {\n NavigationMenuDropdownItem,\n NavigationMenuDropdownItemTitle\n} from './NavigationMenuDropdownItem'\nimport { NavigationMenuDropdownTrigger } from './NavigationMenuDropdownTrigger'\nimport { NavigationMenuLink } from './NavigationMenuLink'\n\nconst StyledMenu = styled(NavigationMenuPrimitive.Root, {\n base: ['flex', 'justify-center', 'relative']\n})\n\nconst StyledList = styled(NavigationMenuPrimitive.List, {\n base: ['flex', 'justify-center', 'items-center', 'gap-1', 'list-none']\n})\n\nconst StyledViewport = styled(NavigationMenuPrimitive.Viewport, {\n base: ['z-2147483647']\n})\n\nconst ViewportPosition = styled('div', {\n base: ['absolute', 'left-0', 'top-full', 'w-full', 'flex', 'justify-center']\n})\n\nconst NavigationMenuComponent = ({\n children,\n className,\n ...props\n}: React.ComponentProps<typeof StyledMenu>) => {\n const [offset, setOffset] = React.useState<number | null | undefined>()\n const [activeItem, setActiveItem] = React.useState<string | undefined>()\n const [listWidth, setListWidth] = React.useState(0)\n const listRef = React.useRef<HTMLUListElement>(null)\n\n React.useLayoutEffect(() => {\n if (listRef.current) {\n setListWidth(listRef.current.offsetWidth)\n }\n }, [React.Children.toArray(children).length])\n\n React.useEffect(() => {\n let timer: ReturnType<typeof setTimeout>\n\n // Delay transitioning back to initial position\n // to allow enough time for fadeOut animation to complete\n if (activeItem === '') {\n timer = setTimeout(() => setOffset(null), 200)\n }\n\n return () => {\n if (timer !== null) {\n clearTimeout(timer)\n }\n }\n }, [activeItem])\n\n // https://github.com/radix-ui/primitives/issues/1462\n const onNodeUpdate = (trigger: HTMLButtonElement, itemValue: string) => {\n if (trigger && listWidth && activeItem === itemValue) {\n const listCenter = listWidth / 2\n\n const triggerOffsetRight =\n listWidth -\n trigger.offsetLeft -\n trigger.offsetWidth +\n trigger.offsetWidth / 2\n\n setOffset(Math.round(listCenter - triggerOffsetRight))\n }\n\n return trigger\n }\n\n return (\n <NavigationMenuContext.Provider value={{ onNodeUpdate }}>\n <StyledMenu\n className={clsx(className)}\n style={navigationMenuColorSchemes['light']}\n onValueChange={setActiveItem}\n {...props}\n >\n <StyledList ref={listRef}>{children}</StyledList>\n <ViewportPosition>\n <StyledViewport\n style={{ '--navigation-menu-viewport-offset': `${offset || 0}px` }}\n className={clsx([\n 'data-[state=open]:animate-fade-in',\n 'data-[state=closed]:animate-fade-out',\n 'translate-x-(--navigation-menu-viewport-offset)'\n ])}\n />\n </ViewportPosition>\n </StyledMenu>\n </NavigationMenuContext.Provider>\n )\n}\n\nexport const NavigationMenu = Object.assign(NavigationMenuComponent, {\n Link: NavigationMenuLink,\n Dropdown: NavigationMenuDropdown,\n DropdownContent: NavigationMenuDropdownContent,\n DropdownItem: NavigationMenuDropdownItem,\n DropdownItemTitle: NavigationMenuDropdownItemTitle,\n DropdownTrigger: NavigationMenuDropdownTrigger\n})\n\nNavigationMenuComponent.displayName = 'NavigationMenu'\n"],"names":["StyledMenu","styled","NavigationMenuPrimitive","StyledList","StyledViewport","ViewportPosition","NavigationMenuComponent","children","className","props","offset","setOffset","React","activeItem","setActiveItem","listWidth","setListWidth","listRef","timer","onNodeUpdate","trigger","itemValue","listCenter","triggerOffsetRight","NavigationMenuContext","clsx","navigationMenuColorSchemes","NavigationMenu","NavigationMenuLink","NavigationMenuDropdown","NavigationMenuDropdownContent","NavigationMenuDropdownItem","NavigationMenuDropdownItemTitle","NavigationMenuDropdownTrigger"],"mappings":"uqBAiBA,MAAMA,EAAaC,EAAOC,EAAwB,KAAM,CACtD,KAAM,CAAC,OAAQ,iBAAkB,UAAU,CAC7C,CAAC,EAEKC,EAAaF,EAAOC,EAAwB,KAAM,CACtD,KAAM,CAAC,OAAQ,iBAAkB,eAAgB,QAAS,WAAW,CACvE,CAAC,EAEKE,EAAiBH,EAAOC,EAAwB,SAAU,CAC9D,KAAM,CAAC,cAAc,CACvB,CAAC,EAEKG,EAAmBJ,EAAO,MAAO,CACrC,KAAM,CAAC,WAAY,SAAU,WAAY,SAAU,OAAQ,gBAAgB,CAC7E,CAAC,EAEKK,EAA0B,CAAC,CAC/B,SAAAC,EACA,UAAAC,EACA,GAAGC,CACL,IAA+C,CAC7C,KAAM,CAACC,EAAQC,CAAS,EAAIC,EAAM,SAAA,EAC5B,CAACC,EAAYC,CAAa,EAAIF,EAAM,SACpC,EAAA,CAACG,EAAWC,CAAY,EAAIJ,EAAM,SAAS,CAAC,EAC5CK,EAAUL,EAAM,OAAyB,IAAI,EAEnDA,EAAM,gBAAgB,IAAM,CACtBK,EAAQ,SACVD,EAAaC,EAAQ,QAAQ,WAAW,CAE5C,EAAG,CAACL,EAAM,SAAS,QAAQL,CAAQ,EAAE,MAAM,CAAC,EAE5CK,EAAM,UAAU,IAAM,CACpB,IAAIM,EAIJ,OAAIL,IAAe,KACjBK,EAAQ,WAAW,IAAMP,EAAU,IAAI,EAAG,GAAG,GAGxC,IAAM,CACPO,IAAU,MACZ,aAAaA,CAAK,CAEtB,CACF,EAAG,CAACL,CAAU,CAAC,EAGf,MAAMM,EAAe,CAACC,EAA4BC,IAAsB,CACtE,GAAID,GAAWL,GAAaF,IAAeQ,EAAW,CACpD,MAAMC,EAAaP,EAAY,EAEzBQ,EACJR,EACAK,EAAQ,WACRA,EAAQ,YACRA,EAAQ,YAAc,EAExBT,EAAU,KAAK,MAAMW,EAAaC,CAAkB,CAAC,CACvD,CAEA,OAAOH,CACT,EAEA,OACER,EAAA,cAACY,EAAsB,SAAtB,CAA+B,MAAO,CAAE,aAAAL,CAAa,CAAA,EACpDP,EAAA,cAACZ,EAAA,CACC,UAAWyB,EAAKjB,CAAS,EACzB,MAAOkB,EAA2B,MAClC,cAAeZ,EACd,GAAGL,GAEJG,EAAA,cAACT,EAAA,CAAW,IAAKc,CAAUV,EAAAA,CAAS,EACpCK,EAAA,cAACP,EAAA,KACCO,EAAA,cAACR,EAAA,CACC,MAAO,CAAE,oCAAqC,GAAG,OAAAM,GAAU,EAAC,IAAA,CAAK,EACjE,UAAWe,EAAK,CACd,oCACA,uCACA,iDACF,CAAC,CAAA,CACH,CACF,CACF,CACF,CAEJ,EAEaE,EAAiB,OAAO,OAAOrB,EAAyB,CACnE,KAAMsB,EACN,SAAUC,EACV,gBAAiBC,EACjB,aAAcC,EACd,kBAAmBC,EACnB,gBAAiBC,CACnB,CAAC,EAED3B,EAAwB,YAAc"}
1
+ {"version":3,"file":"NavigationMenu.js","sources":["../../../src/components/navigation/NavigationMenu.tsx"],"sourcesContent":["import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'\nimport clsx from 'clsx'\nimport React from 'react'\n\nimport { styled } from '~/styled'\n\nimport { colorSchemes as navigationMenuColorSchemes } from './NavigationMenu.colorscheme.config'\nimport { NavigationMenuContext } from './NavigationMenuContext'\nimport { NavigationMenuDropdown } from './NavigationMenuDropdown'\nimport { NavigationMenuDropdownContent } from './NavigationMenuDropdownContent'\nimport {\n NavigationMenuDropdownItem,\n NavigationMenuDropdownItemTitle\n} from './NavigationMenuDropdownItem'\nimport { NavigationMenuDropdownTrigger } from './NavigationMenuDropdownTrigger'\nimport { NavigationMenuLink } from './NavigationMenuLink'\n\nconst StyledMenu = styled(NavigationMenuPrimitive.Root, {\n base: ['flex', 'justify-center', 'relative']\n})\n\nconst StyledList = styled(NavigationMenuPrimitive.List, {\n base: ['flex', 'justify-center', 'items-center', 'gap-1', 'list-none']\n})\n\nconst StyledViewport = styled(NavigationMenuPrimitive.Viewport, {\n base: ['z-2147483647']\n})\n\nconst ViewportPosition = styled('div', {\n base: ['absolute', 'left-0', 'top-full', 'w-full', 'flex', 'justify-center']\n})\n\nconst NavigationMenuComponent = ({\n children,\n className,\n ...props\n}: React.ComponentProps<typeof StyledMenu>) => {\n const [offset, setOffset] = React.useState<number | null | undefined>()\n const [activeItem, setActiveItem] = React.useState<string | undefined>()\n const [listWidth, setListWidth] = React.useState(0)\n const listRef = React.useRef<HTMLUListElement>(null)\n\n React.useLayoutEffect(() => {\n if (listRef.current) {\n setListWidth(listRef.current.offsetWidth)\n }\n }, [React.Children.toArray(children).length])\n\n React.useEffect(() => {\n let timer: ReturnType<typeof setTimeout>\n\n // Delay transitioning back to initial position\n // to allow enough time for fadeOut animation to complete\n if (activeItem === '') {\n timer = setTimeout(() => setOffset(null), 200)\n }\n\n return () => {\n if (timer !== null) {\n clearTimeout(timer)\n }\n }\n }, [activeItem])\n\n // https://github.com/radix-ui/primitives/issues/1462\n const onNodeUpdate = (trigger: HTMLButtonElement, itemValue: string) => {\n if (trigger && listWidth && activeItem === itemValue) {\n const listCenter = listWidth / 2\n\n const triggerOffsetRight =\n listWidth -\n trigger.offsetLeft -\n trigger.offsetWidth +\n trigger.offsetWidth / 2\n\n setOffset(Math.round(listCenter - triggerOffsetRight))\n }\n\n return trigger\n }\n\n return (\n <NavigationMenuContext.Provider value={{ onNodeUpdate }}>\n <StyledMenu\n className={clsx(className)}\n style={navigationMenuColorSchemes['light']}\n onValueChange={setActiveItem}\n {...props}\n >\n <StyledList ref={listRef}>{children}</StyledList>\n <ViewportPosition>\n <StyledViewport\n style={{ '--navigation-menu-viewport-offset': `${offset || 0}px` }}\n className={clsx([\n 'data-[state=open]:animate-fade-in',\n 'data-[state=closed]:animate-fade-out',\n 'translate-x-(--navigation-menu-viewport-offset)'\n ])}\n />\n </ViewportPosition>\n </StyledMenu>\n </NavigationMenuContext.Provider>\n )\n}\n\nexport const NavigationMenu = Object.assign(NavigationMenuComponent, {\n Link: NavigationMenuLink,\n Dropdown: NavigationMenuDropdown,\n DropdownContent: NavigationMenuDropdownContent,\n DropdownItem: NavigationMenuDropdownItem,\n DropdownItemTitle: NavigationMenuDropdownItemTitle,\n DropdownTrigger: NavigationMenuDropdownTrigger\n})\n\nNavigationMenuComponent.displayName = 'NavigationMenu'\n"],"names":["StyledMenu","styled","NavigationMenuPrimitive","StyledList","StyledViewport","ViewportPosition","NavigationMenuComponent","children","className","props","offset","setOffset","React","activeItem","setActiveItem","listWidth","setListWidth","listRef","timer","onNodeUpdate","trigger","itemValue","listCenter","triggerOffsetRight","NavigationMenuContext","clsx","navigationMenuColorSchemes","NavigationMenu","NavigationMenuLink","NavigationMenuDropdown","NavigationMenuDropdownContent","NavigationMenuDropdownItem","NavigationMenuDropdownItemTitle","NavigationMenuDropdownTrigger"],"mappings":"uqBAiBA,MAAMA,EAAaC,EAAOC,EAAwB,KAAM,CACtD,KAAM,CAAC,OAAQ,iBAAkB,UAAU,CAC7C,CAAC,EAEKC,EAAaF,EAAOC,EAAwB,KAAM,CACtD,KAAM,CAAC,OAAQ,iBAAkB,eAAgB,QAAS,WAAW,CACvE,CAAC,EAEKE,EAAiBH,EAAOC,EAAwB,SAAU,CAC9D,KAAM,CAAC,cAAc,CACvB,CAAC,EAEKG,EAAmBJ,EAAO,MAAO,CACrC,KAAM,CAAC,WAAY,SAAU,WAAY,SAAU,OAAQ,gBAAgB,CAC7E,CAAC,EAEKK,EAA0B,CAAC,CAC/B,SAAAC,EACA,UAAAC,EACA,GAAGC,CACL,IAA+C,CAC7C,KAAM,CAACC,EAAQC,CAAS,EAAIC,EAAM,WAC5B,CAACC,EAAYC,CAAa,EAAIF,EAAM,SAA6B,EACjE,CAACG,EAAWC,CAAY,EAAIJ,EAAM,SAAS,CAAC,EAC5CK,EAAUL,EAAM,OAAyB,IAAI,EAEnDA,EAAM,gBAAgB,IAAM,CACtBK,EAAQ,SACVD,EAAaC,EAAQ,QAAQ,WAAW,CAE5C,EAAG,CAACL,EAAM,SAAS,QAAQL,CAAQ,EAAE,MAAM,CAAC,EAE5CK,EAAM,UAAU,IAAM,CACpB,IAAIM,EAIJ,OAAIL,IAAe,KACjBK,EAAQ,WAAW,IAAMP,EAAU,IAAI,EAAG,GAAG,GAGxC,IAAM,CACPO,IAAU,MACZ,aAAaA,CAAK,CAEtB,CACF,EAAG,CAACL,CAAU,CAAC,EAGf,MAAMM,EAAe,CAACC,EAA4BC,IAAsB,CACtE,GAAID,GAAWL,GAAaF,IAAeQ,EAAW,CACpD,MAAMC,EAAaP,EAAY,EAEzBQ,EACJR,EACAK,EAAQ,WACRA,EAAQ,YACRA,EAAQ,YAAc,EAExBT,EAAU,KAAK,MAAMW,EAAaC,CAAkB,CAAC,CACvD,CAEA,OAAOH,CACT,EAEA,OACER,EAAA,cAACY,EAAsB,SAAtB,CAA+B,MAAO,CAAE,aAAAL,CAAa,CACpDP,EAAAA,EAAA,cAACZ,EAAA,CACC,UAAWyB,EAAKjB,CAAS,EACzB,MAAOkB,EAA2B,MAClC,cAAeZ,EACd,GAAGL,CAEJG,EAAAA,EAAA,cAACT,EAAA,CAAW,IAAKc,CAAAA,EAAUV,CAAS,EACpCK,EAAA,cAACP,EAAA,KACCO,EAAA,cAACR,EAAA,CACC,MAAO,CAAE,oCAAqC,GAAGM,GAAU,CAAC,IAAK,EACjE,UAAWe,EAAK,CACd,oCACA,uCACA,iDACF,CAAC,CAAA,CACH,CACF,CACF,CACF,CAEJ,EAEaE,EAAiB,OAAO,OAAOrB,EAAyB,CACnE,KAAMsB,EACN,SAAUC,EACV,gBAAiBC,EACjB,aAAcC,EACd,kBAAmBC,EACnB,gBAAiBC,CACnB,CAAC,EAED3B,EAAwB,YAAc"}
@@ -1,2 +1,2 @@
1
- import{Minus as H,Plus as K}from"@atom-learning/icons";import L from"clsx";import*as n from"react";import{styled as V}from"../../styled.js";import"../../utilities/css-wrapper/CSSWrapper.js";import{getFieldIconSize as _}from"../../utilities/style/get-icon-size.js";import"../../utilities/no-overflow-wrapper/NoOverflowWrapper.js";import{Flex as B}from"../flex/Flex.js";import{Input as O}from"../input/Input.js";import{NumberInputStepper as A}from"./NumberInputStepper.js";const P=V(B,{base:[],variants:{appearance:{standard:[],modern:["gap-px"]}}}),I=n.forwardRef(({value:u,defaultValue:x=0,onValueChange:N,min:r=0,max:o=Number.MAX_SAFE_INTEGER,step:c=1,disabled:i=!1,readonly:m=!1,size:w="md",stepperButtonLabels:M,disabledTooltipContent:T,className:z,appearance:d="standard",...D},R)=>{const[t,E]=n.useState(u||x);n.useEffect(()=>{typeof u<"u"&&E(u)},[u]);const s=n.useRef(null);n.useImperativeHandle(R,()=>s.current);const y=n.useMemo(()=>_(w),[w]),g={increment:"increment",decrement:"decrement",...M},k={decrement:"Cannot enter values below ".concat(r),increment:"Cannot enter values above ".concat(o),...T},p=t>=o,b=t<=r,f=n.useCallback(e=>Math.min(Math.max(e,r),o),[o,r]),a=n.useCallback(e=>{N==null||N(e),E(e)},[N]),S=n.useCallback(e=>{const l=Number(e.target.value.replace(/\D/g,""));a(l)},[a]),v=n.useCallback(()=>{var e;if(p||m)return;(e=s==null?void 0:s.current)==null||e.focus();const l=Number(t)+c;a(f(l))},[f,p,m,c,a,t]),C=n.useCallback(()=>{var e;if(b||m)return;(e=s==null?void 0:s.current)==null||e.focus();const l=Number(t)-c;a(f(l))},[f,b,m,r,c,a,t]),F=n.useCallback(e=>{if(e.nativeEvent.isComposing)return;const l=e.key,h={ArrowUp:v,ArrowRight:v,ArrowDown:C,ArrowLeft:C,Home:()=>a(r),End:()=>a(o)}[l];h&&(e.preventDefault(),h(e))},[v,C,a,r,o]),G={type:"number",value:t,...D,onChange:S,onKeyDown:F,size:w,appearance:d,className:L("rounded-none","w-16","disabled:opacity-30","disabled:pointer-events-none"),ref:s,readOnly:m,disabled:i,"aria-valuemin":r,"aria-valuemax":o,"aria-valuenow":t,role:"spinbutton"};return n.createElement(P,{appearance:d,className:z},n.createElement(A,{onClick:C,icon:H,size:y,fieldAppearance:d,disabled:b||i,showTooltip:b&&!i,disabledTooltipContent:k.decrement,label:g.decrement,className:"border-r-none rounded-r-none"}),n.createElement(O,{...G}),n.createElement(A,{onClick:v,icon:K,size:y,fieldAppearance:d,disabled:p||i,showTooltip:p&&!i,disabledTooltipContent:k.increment,label:g.increment,className:"border-l-none rounded-l-none"}))});I.displayName="NumberInput";export{I as NumberInput};
1
+ import{Minus as H,Plus as K}from"@atom-learning/icons";import L from"clsx";import*as n from"react";import{styled as V}from"../../styled.js";import"../../utilities/css-wrapper/CSSWrapper.js";import{getFieldIconSize as _}from"../../utilities/style/get-icon-size.js";import"../../utilities/no-overflow-wrapper/NoOverflowWrapper.js";import{Flex as B}from"../flex/Flex.js";import{Input as O}from"../input/Input.js";import{NumberInputStepper as A}from"./NumberInputStepper.js";const P=V(B,{base:[],variants:{appearance:{standard:[],modern:["gap-px"]}}}),I=n.forwardRef(({value:u,defaultValue:x=0,onValueChange:N,min:r=0,max:o=Number.MAX_SAFE_INTEGER,step:c=1,disabled:i=!1,readonly:m=!1,size:w="md",stepperButtonLabels:M,disabledTooltipContent:T,className:z,appearance:d="standard",...D},R)=>{const[t,E]=n.useState(u||x);n.useEffect(()=>{typeof u<"u"&&E(u)},[u]);const s=n.useRef(null);n.useImperativeHandle(R,()=>s.current);const y=n.useMemo(()=>_(w),[w]),g={increment:"increment",decrement:"decrement",...M},k={decrement:`Cannot enter values below ${r}`,increment:`Cannot enter values above ${o}`,...T},p=t>=o,b=t<=r,f=n.useCallback(e=>Math.min(Math.max(e,r),o),[o,r]),a=n.useCallback(e=>{N==null||N(e),E(e)},[N]),S=n.useCallback(e=>{const l=Number(e.target.value.replace(/\D/g,""));a(l)},[a]),v=n.useCallback(()=>{var e;if(p||m)return;(e=s==null?void 0:s.current)==null||e.focus();const l=Number(t)+c;a(f(l))},[f,p,m,c,a,t]),C=n.useCallback(()=>{var e;if(b||m)return;(e=s==null?void 0:s.current)==null||e.focus();const l=Number(t)-c;a(f(l))},[f,b,m,r,c,a,t]),F=n.useCallback(e=>{if(e.nativeEvent.isComposing)return;const l=e.key,h={ArrowUp:v,ArrowRight:v,ArrowDown:C,ArrowLeft:C,Home:()=>a(r),End:()=>a(o)}[l];h&&(e.preventDefault(),h(e))},[v,C,a,r,o]),G={type:"number",value:t,...D,onChange:S,onKeyDown:F,size:w,appearance:d,className:L("rounded-none","w-16","disabled:opacity-30","disabled:pointer-events-none"),ref:s,readOnly:m,disabled:i,"aria-valuemin":r,"aria-valuemax":o,"aria-valuenow":t,role:"spinbutton"};return n.createElement(P,{appearance:d,className:z},n.createElement(A,{onClick:C,icon:H,size:y,fieldAppearance:d,disabled:b||i,showTooltip:b&&!i,disabledTooltipContent:k.decrement,label:g.decrement,className:"border-r-none rounded-r-none"}),n.createElement(O,{...G}),n.createElement(A,{onClick:v,icon:K,size:y,fieldAppearance:d,disabled:p||i,showTooltip:p&&!i,disabledTooltipContent:k.increment,label:g.increment,className:"border-l-none rounded-l-none"}))});I.displayName="NumberInput";export{I as NumberInput};
2
2
  //# sourceMappingURL=NumberInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NumberInput.js","sources":["../../../src/components/number-input/NumberInput.tsx"],"sourcesContent":["import { Minus, Plus } from '@atom-learning/icons'\nimport clsx from 'clsx'\nimport * as React from 'react'\n\nimport { styled } from '~/styled'\nimport { getFieldIconSize } from '~/utilities'\n\nimport { Flex } from '../flex'\nimport { Input } from '../input'\nimport { NumberInputStepper } from './NumberInputStepper'\n\nexport interface NumberInputProps {\n name: string\n min?: number\n max?: number\n step?: number\n value?: number\n defaultValue?: number\n disabled?: boolean\n readonly?: boolean\n size?: 'sm' | 'md' | 'lg'\n appearance?: 'standard' | 'modern'\n onValueChange?: (value: number) => void\n stepperButtonLabels?: { increment?: string; decrement?: string }\n disabledTooltipContent?: { increment?: string; decrement?: string }\n className?: string\n}\n\nconst NumberInputContainer = styled(Flex, {\n base: [],\n variants: {\n appearance: {\n standard: [],\n modern: ['gap-px']\n }\n }\n})\n\nexport const NumberInput = React.forwardRef<HTMLInputElement, NumberInputProps>(\n (\n {\n value,\n defaultValue = 0,\n onValueChange,\n min = 0,\n max = Number.MAX_SAFE_INTEGER,\n step = 1,\n disabled: isDisabled = false,\n readonly: isReadOnly = false,\n size = 'md',\n stepperButtonLabels: stepperButtonLabelsProp,\n disabledTooltipContent: disabledTooltipContentProp,\n className,\n appearance = 'standard',\n ...rest\n },\n ref\n ): JSX.Element => {\n const [internalValue, setInternalValue] = React.useState<number>(\n value || defaultValue\n )\n React.useEffect(() => {\n // Update the internal value to match what is passed in.\n if (typeof value !== 'undefined') setInternalValue(value)\n }, [value])\n\n const inputRef = React.useRef<HTMLInputElement | null>(null)\n\n React.useImperativeHandle(ref, () => inputRef.current as HTMLInputElement)\n\n const iconSize = React.useMemo(() => getFieldIconSize(size), [size])\n\n const stepperButtonLabels = {\n increment: 'increment',\n decrement: 'decrement',\n ...stepperButtonLabelsProp\n }\n\n const disabledTooltipContent = {\n decrement: `Cannot enter values below ${min}`,\n increment: `Cannot enter values above ${max}`,\n ...disabledTooltipContentProp\n }\n\n const isAtMax = internalValue >= max\n const isAtMin = internalValue <= min\n\n const clamp = React.useCallback(\n (internalValue: number) => Math.min(Math.max(internalValue, min), max),\n [max, min]\n )\n\n const updateValue = React.useCallback(\n (newValue: number) => {\n onValueChange?.(newValue)\n setInternalValue(newValue)\n },\n [onValueChange]\n )\n\n const onInputChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const parsedValue = Number(event.target.value.replace(/\\D/g, ''))\n updateValue(parsedValue)\n },\n [updateValue]\n )\n\n const increment = React.useCallback(() => {\n if (isAtMax || isReadOnly) return\n inputRef?.current?.focus()\n const newValue = Number(internalValue) + step\n updateValue(clamp(newValue))\n }, [clamp, isAtMax, isReadOnly, step, updateValue, internalValue])\n\n const decrement = React.useCallback(() => {\n if (isAtMin || isReadOnly) return\n inputRef?.current?.focus()\n const newValue = Number(internalValue) - step\n updateValue(clamp(newValue))\n }, [clamp, isAtMin, isReadOnly, min, step, updateValue, internalValue])\n\n const onKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (event.nativeEvent.isComposing) return\n\n /**\n * Keyboard Accessibility\n *\n * We want to increase or decrease the input's value\n * based on if the user the arrow keys.\n *\n * @see https://www.w3.org/TR/wai-aria-practices-1.1/#keyboard-interaction-17\n */\n const eventKey = event.key\n\n const keyMap: Record<string, React.KeyboardEventHandler> = {\n ArrowUp: increment,\n ArrowRight: increment,\n ArrowDown: decrement,\n ArrowLeft: decrement,\n Home: () => updateValue(min),\n End: () => updateValue(max)\n }\n\n const action = keyMap[eventKey]\n\n if (action) {\n event.preventDefault()\n action(event)\n }\n },\n [increment, decrement, updateValue, min, max]\n )\n\n const inputProps: React.ComponentProps<typeof Input> = {\n type: 'number',\n value: internalValue,\n ...rest,\n onChange: onInputChange,\n onKeyDown,\n size,\n appearance,\n className: clsx(\n 'rounded-none',\n 'w-16',\n 'disabled:opacity-30',\n 'disabled:pointer-events-none'\n ),\n ref: inputRef,\n readOnly: isReadOnly,\n disabled: isDisabled,\n 'aria-valuemin': min,\n 'aria-valuemax': max,\n 'aria-valuenow': internalValue,\n role: 'spinbutton'\n }\n\n return (\n <NumberInputContainer appearance={appearance} className={className}>\n <NumberInputStepper\n onClick={decrement}\n icon={Minus}\n size={iconSize}\n fieldAppearance={appearance}\n disabled={isAtMin || isDisabled}\n showTooltip={isAtMin && !isDisabled}\n disabledTooltipContent={disabledTooltipContent.decrement}\n label={stepperButtonLabels.decrement}\n className=\"border-r-none rounded-r-none\"\n />\n <Input {...inputProps} />\n <NumberInputStepper\n onClick={increment}\n icon={Plus}\n size={iconSize}\n fieldAppearance={appearance}\n disabled={isAtMax || isDisabled}\n showTooltip={isAtMax && !isDisabled}\n disabledTooltipContent={disabledTooltipContent.increment}\n label={stepperButtonLabels.increment}\n className=\"border-l-none rounded-l-none\"\n />\n </NumberInputContainer>\n )\n }\n)\n\nNumberInput.displayName = 'NumberInput'\n"],"names":["NumberInputContainer","styled","Flex","NumberInput","React","value","defaultValue","onValueChange","min","max","step","isDisabled","isReadOnly","size","stepperButtonLabelsProp","disabledTooltipContentProp","className","appearance","rest","ref","internalValue","setInternalValue","inputRef","iconSize","getFieldIconSize","stepperButtonLabels","disabledTooltipContent","isAtMax","isAtMin","clamp","updateValue","newValue","onInputChange","event","parsedValue","increment","_a","decrement","onKeyDown","eventKey","action","inputProps","clsx","NumberInputStepper","Minus","Input","Plus"],"mappings":"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"}
1
+ {"version":3,"file":"NumberInput.js","sources":["../../../src/components/number-input/NumberInput.tsx"],"sourcesContent":["import { Minus, Plus } from '@atom-learning/icons'\nimport clsx from 'clsx'\nimport * as React from 'react'\n\nimport { styled } from '~/styled'\nimport { getFieldIconSize } from '~/utilities'\n\nimport { Flex } from '../flex'\nimport { Input } from '../input'\nimport { NumberInputStepper } from './NumberInputStepper'\n\nexport interface NumberInputProps {\n name: string\n min?: number\n max?: number\n step?: number\n value?: number\n defaultValue?: number\n disabled?: boolean\n readonly?: boolean\n size?: 'sm' | 'md' | 'lg'\n appearance?: 'standard' | 'modern'\n onValueChange?: (value: number) => void\n stepperButtonLabels?: { increment?: string; decrement?: string }\n disabledTooltipContent?: { increment?: string; decrement?: string }\n className?: string\n}\n\nconst NumberInputContainer = styled(Flex, {\n base: [],\n variants: {\n appearance: {\n standard: [],\n modern: ['gap-px']\n }\n }\n})\n\nexport const NumberInput = React.forwardRef<HTMLInputElement, NumberInputProps>(\n (\n {\n value,\n defaultValue = 0,\n onValueChange,\n min = 0,\n max = Number.MAX_SAFE_INTEGER,\n step = 1,\n disabled: isDisabled = false,\n readonly: isReadOnly = false,\n size = 'md',\n stepperButtonLabels: stepperButtonLabelsProp,\n disabledTooltipContent: disabledTooltipContentProp,\n className,\n appearance = 'standard',\n ...rest\n },\n ref\n ): JSX.Element => {\n const [internalValue, setInternalValue] = React.useState<number>(\n value || defaultValue\n )\n React.useEffect(() => {\n // Update the internal value to match what is passed in.\n if (typeof value !== 'undefined') setInternalValue(value)\n }, [value])\n\n const inputRef = React.useRef<HTMLInputElement | null>(null)\n\n React.useImperativeHandle(ref, () => inputRef.current as HTMLInputElement)\n\n const iconSize = React.useMemo(() => getFieldIconSize(size), [size])\n\n const stepperButtonLabels = {\n increment: 'increment',\n decrement: 'decrement',\n ...stepperButtonLabelsProp\n }\n\n const disabledTooltipContent = {\n decrement: `Cannot enter values below ${min}`,\n increment: `Cannot enter values above ${max}`,\n ...disabledTooltipContentProp\n }\n\n const isAtMax = internalValue >= max\n const isAtMin = internalValue <= min\n\n const clamp = React.useCallback(\n (internalValue: number) => Math.min(Math.max(internalValue, min), max),\n [max, min]\n )\n\n const updateValue = React.useCallback(\n (newValue: number) => {\n onValueChange?.(newValue)\n setInternalValue(newValue)\n },\n [onValueChange]\n )\n\n const onInputChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const parsedValue = Number(event.target.value.replace(/\\D/g, ''))\n updateValue(parsedValue)\n },\n [updateValue]\n )\n\n const increment = React.useCallback(() => {\n if (isAtMax || isReadOnly) return\n inputRef?.current?.focus()\n const newValue = Number(internalValue) + step\n updateValue(clamp(newValue))\n }, [clamp, isAtMax, isReadOnly, step, updateValue, internalValue])\n\n const decrement = React.useCallback(() => {\n if (isAtMin || isReadOnly) return\n inputRef?.current?.focus()\n const newValue = Number(internalValue) - step\n updateValue(clamp(newValue))\n }, [clamp, isAtMin, isReadOnly, min, step, updateValue, internalValue])\n\n const onKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (event.nativeEvent.isComposing) return\n\n /**\n * Keyboard Accessibility\n *\n * We want to increase or decrease the input's value\n * based on if the user the arrow keys.\n *\n * @see https://www.w3.org/TR/wai-aria-practices-1.1/#keyboard-interaction-17\n */\n const eventKey = event.key\n\n const keyMap: Record<string, React.KeyboardEventHandler> = {\n ArrowUp: increment,\n ArrowRight: increment,\n ArrowDown: decrement,\n ArrowLeft: decrement,\n Home: () => updateValue(min),\n End: () => updateValue(max)\n }\n\n const action = keyMap[eventKey]\n\n if (action) {\n event.preventDefault()\n action(event)\n }\n },\n [increment, decrement, updateValue, min, max]\n )\n\n const inputProps: React.ComponentProps<typeof Input> = {\n type: 'number',\n value: internalValue,\n ...rest,\n onChange: onInputChange,\n onKeyDown,\n size,\n appearance,\n className: clsx(\n 'rounded-none',\n 'w-16',\n 'disabled:opacity-30',\n 'disabled:pointer-events-none'\n ),\n ref: inputRef,\n readOnly: isReadOnly,\n disabled: isDisabled,\n 'aria-valuemin': min,\n 'aria-valuemax': max,\n 'aria-valuenow': internalValue,\n role: 'spinbutton'\n }\n\n return (\n <NumberInputContainer appearance={appearance} className={className}>\n <NumberInputStepper\n onClick={decrement}\n icon={Minus}\n size={iconSize}\n fieldAppearance={appearance}\n disabled={isAtMin || isDisabled}\n showTooltip={isAtMin && !isDisabled}\n disabledTooltipContent={disabledTooltipContent.decrement}\n label={stepperButtonLabels.decrement}\n className=\"border-r-none rounded-r-none\"\n />\n <Input {...inputProps} />\n <NumberInputStepper\n onClick={increment}\n icon={Plus}\n size={iconSize}\n fieldAppearance={appearance}\n disabled={isAtMax || isDisabled}\n showTooltip={isAtMax && !isDisabled}\n disabledTooltipContent={disabledTooltipContent.increment}\n label={stepperButtonLabels.increment}\n className=\"border-l-none rounded-l-none\"\n />\n </NumberInputContainer>\n )\n }\n)\n\nNumberInput.displayName = 'NumberInput'\n"],"names":["NumberInputContainer","styled","Flex","NumberInput","React","value","defaultValue","onValueChange","min","max","step","isDisabled","isReadOnly","size","stepperButtonLabelsProp","disabledTooltipContentProp","className","appearance","rest","ref","internalValue","setInternalValue","inputRef","iconSize","getFieldIconSize","stepperButtonLabels","disabledTooltipContent","isAtMax","isAtMin","clamp","updateValue","newValue","onInputChange","event","parsedValue","increment","_a","decrement","onKeyDown","eventKey","action","inputProps","clsx","NumberInputStepper","Minus","Input","Plus"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import*as t from"@radix-ui/react-progress";import*as a from"react";import{styled as s}from"../../styled.js";const m=s(t.Root,{base:["rounded-full","bg-grey-200","relative","overflow-hidden","w-full"],variants:{size:{sm:["h-1"],md:["h-2"]},theme:{primary:["text-primary-800"],info:["text-info"],success:["text-success"],warning:["text-warning"],danger:["text-danger"],neutral:["bg-grey-400","text-grey-800"]}}},{enabledResponsiveVariants:!0}),d=s(t.Indicator,{base:["bg-current","rounded-full","box-border","h-full","absolute","transition-all","duration-300","ease-out"]}),o=({value:e,max:r=100,size:l="md",theme:n="primary",...i})=>a.createElement(m,{value:e,max:r,theme:n,size:l,...i},a.createElement(d,{className:"w-full translate-x-(--progress)",style:{"--progress":"-".concat(100-(e||0)/r*100,"%")}}));o.displayName="ProgressBar";export{o as ProgressBar};
1
+ import*as t from"@radix-ui/react-progress";import*as a from"react";import{styled as s}from"../../styled.js";const m=s(t.Root,{base:["rounded-full","bg-grey-200","relative","overflow-hidden","w-full"],variants:{size:{sm:["h-1"],md:["h-2"]},theme:{primary:["text-primary-800"],info:["text-info"],success:["text-success"],warning:["text-warning"],danger:["text-danger"],neutral:["bg-grey-400","text-grey-800"]}}},{enabledResponsiveVariants:!0}),d=s(t.Indicator,{base:["bg-current","rounded-full","box-border","h-full","absolute","transition-all","duration-300","ease-out"]}),o=({value:e,max:r=100,size:l="md",theme:n="primary",...i})=>a.createElement(m,{value:e,max:r,theme:n,size:l,...i},a.createElement(d,{className:"w-full translate-x-(--progress)",style:{"--progress":`-${100-(e||0)/r*100}%`}}));o.displayName="ProgressBar";export{o as ProgressBar};
2
2
  //# sourceMappingURL=ProgressBar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProgressBar.js","sources":["../../../src/components/progress-bar/ProgressBar.tsx"],"sourcesContent":["import * as Progress from '@radix-ui/react-progress'\nimport * as React from 'react'\n\nimport { styled } from '~/styled'\n\nconst StyledProgressBar = styled(\n Progress.Root,\n {\n base: [\n 'rounded-full',\n 'bg-grey-200',\n 'relative',\n 'overflow-hidden',\n 'w-full'\n ],\n variants: {\n size: {\n sm: ['h-1'],\n md: ['h-2']\n },\n theme: {\n primary: ['text-primary-800'],\n info: ['text-info'],\n success: ['text-success'],\n warning: ['text-warning'],\n danger: ['text-danger'],\n neutral: ['bg-grey-400', 'text-grey-800']\n }\n }\n },\n { enabledResponsiveVariants: true }\n)\n\nconst StyledIndicator = styled(Progress.Indicator, {\n base: [\n 'bg-current',\n 'rounded-full',\n 'box-border',\n 'h-full',\n 'absolute',\n 'transition-all',\n 'duration-300',\n 'ease-out'\n ]\n})\n\ntype ProgressBarProps = React.ComponentPropsWithoutRef<\n typeof StyledProgressBar\n> &\n (\n | { id: string; 'aria-label'?: string }\n | { 'aria-label': string; id?: string }\n )\n\nexport const ProgressBar = ({\n value,\n max = 100,\n size = 'md',\n theme = 'primary',\n ...remainingProps\n}: ProgressBarProps) => (\n <StyledProgressBar\n value={value}\n max={max}\n theme={theme}\n size={size}\n {...remainingProps}\n >\n <StyledIndicator\n className=\"w-full translate-x-(--progress)\"\n style={{\n '--progress': `-${100 - ((value || 0) / max) * 100}%`\n }}\n />\n </StyledProgressBar>\n)\n\nProgressBar.displayName = 'ProgressBar'\n"],"names":["StyledProgressBar","styled","Progress","StyledIndicator","ProgressBar","value","max","size","theme","remainingProps","React"],"mappings":"4GAKA,MAAMA,EAAoBC,EACxBC,EAAS,KACT,CACE,KAAM,CACJ,eACA,cACA,WACA,kBACA,QACF,EACA,SAAU,CACR,KAAM,CACJ,GAAI,CAAC,KAAK,EACV,GAAI,CAAC,KAAK,CACZ,EACA,MAAO,CACL,QAAS,CAAC,kBAAkB,EAC5B,KAAM,CAAC,WAAW,EAClB,QAAS,CAAC,cAAc,EACxB,QAAS,CAAC,cAAc,EACxB,OAAQ,CAAC,aAAa,EACtB,QAAS,CAAC,cAAe,eAAe,CAC1C,CACF,CACF,EACA,CAAE,0BAA2B,EAAK,CACpC,EAEMC,EAAkBF,EAAOC,EAAS,UAAW,CACjD,KAAM,CACJ,aACA,eACA,aACA,SACA,WACA,iBACA,eACA,UACF,CACF,CAAC,EAUYE,EAAc,CAAC,CAC1B,MAAAC,EACA,IAAAC,EAAM,IACN,KAAAC,EAAO,KACP,MAAAC,EAAQ,UACR,GAAGC,CACL,IACEC,EAAA,cAACV,EAAA,CACC,MAAOK,EACP,IAAKC,EACL,MAAOE,EACP,KAAMD,EACL,GAAGE,CAAAA,EAEJC,EAAA,cAACP,EAAA,CACC,UAAU,kCACV,MAAO,CACL,aAAc,IAAI,OAAQE,KAAAA,GAAS,GAAKC,EAAO,IAAG,GACpD,CAAA,CAAA,CACF,CACF,EAGFF,EAAY,YAAc"}
1
+ {"version":3,"file":"ProgressBar.js","sources":["../../../src/components/progress-bar/ProgressBar.tsx"],"sourcesContent":["import * as Progress from '@radix-ui/react-progress'\nimport * as React from 'react'\n\nimport { styled } from '~/styled'\n\nconst StyledProgressBar = styled(\n Progress.Root,\n {\n base: [\n 'rounded-full',\n 'bg-grey-200',\n 'relative',\n 'overflow-hidden',\n 'w-full'\n ],\n variants: {\n size: {\n sm: ['h-1'],\n md: ['h-2']\n },\n theme: {\n primary: ['text-primary-800'],\n info: ['text-info'],\n success: ['text-success'],\n warning: ['text-warning'],\n danger: ['text-danger'],\n neutral: ['bg-grey-400', 'text-grey-800']\n }\n }\n },\n { enabledResponsiveVariants: true }\n)\n\nconst StyledIndicator = styled(Progress.Indicator, {\n base: [\n 'bg-current',\n 'rounded-full',\n 'box-border',\n 'h-full',\n 'absolute',\n 'transition-all',\n 'duration-300',\n 'ease-out'\n ]\n})\n\ntype ProgressBarProps = React.ComponentPropsWithoutRef<\n typeof StyledProgressBar\n> &\n (\n | { id: string; 'aria-label'?: string }\n | { 'aria-label': string; id?: string }\n )\n\nexport const ProgressBar = ({\n value,\n max = 100,\n size = 'md',\n theme = 'primary',\n ...remainingProps\n}: ProgressBarProps) => (\n <StyledProgressBar\n value={value}\n max={max}\n theme={theme}\n size={size}\n {...remainingProps}\n >\n <StyledIndicator\n className=\"w-full translate-x-(--progress)\"\n style={{\n '--progress': `-${100 - ((value || 0) / max) * 100}%`\n }}\n />\n </StyledProgressBar>\n)\n\nProgressBar.displayName = 'ProgressBar'\n"],"names":["StyledProgressBar","styled","Progress","StyledIndicator","ProgressBar","value","max","size","theme","remainingProps","React"],"mappings":"4GAKA,MAAMA,EAAoBC,EACxBC,EAAS,KACT,CACE,KAAM,CACJ,eACA,cACA,WACA,kBACA,QACF,EACA,SAAU,CACR,KAAM,CACJ,GAAI,CAAC,KAAK,EACV,GAAI,CAAC,KAAK,CACZ,EACA,MAAO,CACL,QAAS,CAAC,kBAAkB,EAC5B,KAAM,CAAC,WAAW,EAClB,QAAS,CAAC,cAAc,EACxB,QAAS,CAAC,cAAc,EACxB,OAAQ,CAAC,aAAa,EACtB,QAAS,CAAC,cAAe,eAAe,CAC1C,CACF,CACF,EACA,CAAE,0BAA2B,EAAK,CACpC,EAEMC,EAAkBF,EAAOC,EAAS,UAAW,CACjD,KAAM,CACJ,aACA,eACA,aACA,SACA,WACA,iBACA,eACA,UACF,CACF,CAAC,EAUYE,EAAc,CAAC,CAC1B,MAAAC,EACA,IAAAC,EAAM,IACN,KAAAC,EAAO,KACP,MAAAC,EAAQ,UACR,GAAGC,CACL,IACEC,EAAA,cAACV,EAAA,CACC,MAAOK,EACP,IAAKC,EACL,MAAOE,EACP,KAAMD,EACL,GAAGE,CAAAA,EAEJC,EAAA,cAACP,EAAA,CACC,UAAU,kCACV,MAAO,CACL,aAAc,IAAI,KAAQE,GAAS,GAAKC,EAAO,GAAG,GACpD,CAAA,CACF,CACF,EAGFF,EAAY,YAAc"}
@@ -1,2 +1,2 @@
1
- import*as t from"react";import{styled as n}from"../../styled.js";import{Text as s}from"../text/Text.js";import{SegmentedControlContext as r}from"./SegmentedControlContext.js";const m=n(s,{base:["font-body","text-text-subtle","font-normal"],variants:{size:{sm:["text-xs"],md:["text-sm"],lg:["text-md"]}}},{enabledResponsiveVariants:!0}),i=e=>{const{size:o}=t.useContext(r);return t.createElement(m,{...e,size:o})};export{i as SegmentedControlDescription};
1
+ import*as t from"react";import{styled as n}from"../../styled.js";import{Text as r}from"../text/Text.js";import{SegmentedControlContext as s}from"./SegmentedControlContext.js";const m=n(r,{base:["font-body","text-text-subtle","font-normal"],variants:{size:{sm:["text-xs","leading-[1.6]"],md:["text-sm","leading-[1.53]"],lg:["text-md","leading-normal"]}}},{enabledResponsiveVariants:!0}),i=e=>{const{size:o}=t.useContext(s);return t.createElement(m,{...e,size:o})};export{i as SegmentedControlDescription};
2
2
  //# sourceMappingURL=SegmentedControlDescription.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SegmentedControlDescription.js","sources":["../../../src/components/segmented-control/SegmentedControlDescription.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { styled } from '~/styled'\n\nimport { Text } from '../text'\nimport { SegmentedControlContext } from './SegmentedControlContext'\n\nconst StyledText = styled(\n Text,\n {\n base: ['font-body', 'text-text-subtle', 'font-normal'],\n variants: {\n size: {\n sm: ['text-xs'],\n md: ['text-sm'],\n lg: ['text-md']\n }\n }\n },\n { enabledResponsiveVariants: true }\n)\n\nexport const SegmentedControlDescription = (\n props: Omit<React.ComponentProps<typeof StyledText>, 'size'>\n): JSX.Element => {\n const { size } = React.useContext(SegmentedControlContext)\n\n return <StyledText {...props} size={size} />\n}\n"],"names":["StyledText","styled","Text","SegmentedControlDescription","props","size","React","SegmentedControlContext"],"mappings":"+KAOA,MAAMA,EAAaC,EACjBC,EACA,CACE,KAAM,CAAC,YAAa,mBAAoB,aAAa,EACrD,SAAU,CACR,KAAM,CACJ,GAAI,CAAC,SAAS,EACd,GAAI,CAAC,SAAS,EACd,GAAI,CAAC,SAAS,CAChB,CACF,CACF,EACA,CAAE,0BAA2B,EAAK,CACpC,EAEaC,EACXC,GACgB,CAChB,KAAM,CAAE,KAAAC,CAAK,EAAIC,EAAM,WAAWC,CAAuB,EAEzD,OAAOD,EAAA,cAACN,EAAA,CAAY,GAAGI,EAAO,KAAMC,EAAM,CAC5C"}
1
+ {"version":3,"file":"SegmentedControlDescription.js","sources":["../../../src/components/segmented-control/SegmentedControlDescription.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { styled } from '~/styled'\n\nimport { Text } from '../text'\nimport { SegmentedControlContext } from './SegmentedControlContext'\n\nconst StyledText = styled(\n Text,\n {\n base: ['font-body', 'text-text-subtle', 'font-normal'],\n variants: {\n size: {\n sm: ['text-xs', 'leading-[1.6]'],\n md: ['text-sm', 'leading-[1.53]'],\n lg: ['text-md', 'leading-normal']\n }\n }\n },\n { enabledResponsiveVariants: true }\n)\n\nexport const SegmentedControlDescription = (\n props: Omit<React.ComponentProps<typeof StyledText>, 'size'>\n): JSX.Element => {\n const { size } = React.useContext(SegmentedControlContext)\n\n return <StyledText {...props} size={size} />\n}\n"],"names":["StyledText","styled","Text","SegmentedControlDescription","props","size","React","SegmentedControlContext"],"mappings":"+KAOA,MAAMA,EAAaC,EACjBC,EACA,CACE,KAAM,CAAC,YAAa,mBAAoB,aAAa,EACrD,SAAU,CACR,KAAM,CACJ,GAAI,CAAC,UAAW,eAAe,EAC/B,GAAI,CAAC,UAAW,gBAAgB,EAChC,GAAI,CAAC,UAAW,gBAAgB,CAClC,CACF,CACF,EACA,CAAE,0BAA2B,EAAK,CACpC,EAEaC,EACXC,GACgB,CAChB,KAAM,CAAE,KAAAC,CAAK,EAAIC,EAAM,WAAWC,CAAuB,EAEzD,OAAOD,EAAA,cAACN,EAAA,CAAY,GAAGI,EAAO,KAAMC,EAAM,CAC5C"}
@@ -1,2 +1,2 @@
1
- import*as t from"react";import{styled as r}from"../../styled.js";import{Text as n}from"../text/Text.js";import{SegmentedControlContext as m}from"./SegmentedControlContext.js";const s=r(n,{base:["font-body","text-text-regular"],variants:{size:{sm:["text-sm"],md:["text-md"],lg:["text-lg"]}}},{enabledResponsiveVariants:!0}),i=e=>{const{size:o}=t.useContext(m);return t.createElement(s,{...e,size:o})};export{i as SegmentedControlHeading};
1
+ import*as e from"react";import{styled as n}from"../../styled.js";import{Text as r}from"../text/Text.js";import{SegmentedControlContext as m}from"./SegmentedControlContext.js";const s=n(r,{base:["font-body","text-text-regular"],variants:{size:{sm:["text-sm","leading-[1.53]"],md:["text-md","leading-normal"],lg:["text-lg","leading-[1.52]"]}}},{enabledResponsiveVariants:!0}),a=t=>{const{size:o}=e.useContext(m);return e.createElement(s,{...t,size:o})};export{a as SegmentedControlHeading};
2
2
  //# sourceMappingURL=SegmentedControlHeading.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SegmentedControlHeading.js","sources":["../../../src/components/segmented-control/SegmentedControlHeading.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { styled } from '~/styled'\n\nimport { Text } from '../text'\nimport { SegmentedControlContext } from './SegmentedControlContext'\n\nconst StyledHeading = styled(\n Text,\n {\n base: ['font-body', 'text-text-regular'],\n variants: {\n size: {\n sm: ['text-sm'],\n md: ['text-md'],\n lg: ['text-lg']\n }\n }\n },\n { enabledResponsiveVariants: true }\n)\n\nexport const SegmentedControlHeading = (\n props: Omit<React.ComponentProps<typeof StyledHeading>, 'size'>\n): JSX.Element => {\n const { size } = React.useContext(SegmentedControlContext)\n\n return <StyledHeading {...props} size={size} />\n}\n"],"names":["StyledHeading","styled","Text","SegmentedControlHeading","props","size","React","SegmentedControlContext"],"mappings":"+KAOA,MAAMA,EAAgBC,EACpBC,EACA,CACE,KAAM,CAAC,YAAa,mBAAmB,EACvC,SAAU,CACR,KAAM,CACJ,GAAI,CAAC,SAAS,EACd,GAAI,CAAC,SAAS,EACd,GAAI,CAAC,SAAS,CAChB,CACF,CACF,EACA,CAAE,0BAA2B,EAAK,CACpC,EAEaC,EACXC,GACgB,CAChB,KAAM,CAAE,KAAAC,CAAK,EAAIC,EAAM,WAAWC,CAAuB,EAEzD,OAAOD,EAAA,cAACN,EAAA,CAAe,GAAGI,EAAO,KAAMC,EAAM,CAC/C"}
1
+ {"version":3,"file":"SegmentedControlHeading.js","sources":["../../../src/components/segmented-control/SegmentedControlHeading.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { styled } from '~/styled'\n\nimport { Text } from '../text'\nimport { SegmentedControlContext } from './SegmentedControlContext'\n\nconst StyledHeading = styled(\n Text,\n {\n base: ['font-body', 'text-text-regular'],\n variants: {\n size: {\n sm: ['text-sm', 'leading-[1.53]'],\n md: ['text-md', 'leading-normal'],\n lg: ['text-lg', 'leading-[1.52]']\n }\n }\n },\n { enabledResponsiveVariants: true }\n)\n\nexport const SegmentedControlHeading = (\n props: Omit<React.ComponentProps<typeof StyledHeading>, 'size'>\n): JSX.Element => {\n const { size } = React.useContext(SegmentedControlContext)\n\n return <StyledHeading {...props} size={size} />\n}\n"],"names":["StyledHeading","styled","Text","SegmentedControlHeading","props","size","React","SegmentedControlContext"],"mappings":"+KAOA,MAAMA,EAAgBC,EACpBC,EACA,CACE,KAAM,CAAC,YAAa,mBAAmB,EACvC,SAAU,CACR,KAAM,CACJ,GAAI,CAAC,UAAW,gBAAgB,EAChC,GAAI,CAAC,UAAW,gBAAgB,EAChC,GAAI,CAAC,UAAW,gBAAgB,CAClC,CACF,CACF,EACA,CAAE,0BAA2B,EAAK,CACpC,EAEaC,EACXC,GACgB,CAChB,KAAM,CAAE,KAAAC,CAAK,EAAIC,EAAM,WAAWC,CAAuB,EAEzD,OAAOD,EAAA,cAACN,EAAA,CAAe,GAAGI,EAAO,KAAMC,EAAM,CAC/C"}
@@ -1,2 +1,2 @@
1
- import{Track as p,Root as b,Range as h,Thumb as v}from"@radix-ui/react-slider";import*as e from"react";import{styled as t}from"../../styled.js";import{CSSWrapper as y}from"../../utilities/css-wrapper/CSSWrapper.js";import"../../utilities/no-overflow-wrapper/NoOverflowWrapper.js";import{SliderSteps as g}from"./SliderSteps.js";import{SliderValue as w}from"./SliderValue.js";const S=t(p,{base:["rounded-full","grow","relative","data-[orientation=horizontal]:h-1","data-[orientation=vertical]:w-1"],variants:{theme:{light:["bg-white"],tonal:["bg-grey-600"]}}}),x=t(b,{base:["items-center","flex","relative","touch-none","select-none","cursor-pointer","data-[orientation=horizontal]:h-4","data-[orientation=vertical]:flex-col","data-[orientation=vertical]:w-4","disabled:cursor-not-allowed","disabled:opacity-30"]}),E=t(h,{base:["bg-primary-800","rounded-full","h-full","absolute","disabled:cursor-not-allowed","disabled:opacity-30"]}),k=t(v,{base:["bg-primary-900","rounded-full","block","size-4","hover:bg-primary-1000","focus:outline-2","focus:outline-offset-2","focus:outline-primary-900","focus:outline-solid","disabled:cursor-not-allowed","disabled:opacity-30"]}),a=e.forwardRef(({value:r,defaultValue:l,min:i=0,max:n=100,theme:d="tonal",className:s,children:m,...u},c)=>{const o=r||l;return e.createElement(y,{className:s},e.createElement(x,{defaultValue:l,value:r,min:i,max:n,ref:c,...u},e.createElement(S,{theme:d},e.createElement(E,null)),(o==null?void 0:o.length)&&o.map((V,f)=>e.createElement(k,{key:"thumb".concat(f)}))),m)});a.Value=w,a.Steps=g,a.displayName="Slider";export{a as Slider};
1
+ import{Track as p,Root as b,Range as h,Thumb as v}from"@radix-ui/react-slider";import*as e from"react";import{styled as t}from"../../styled.js";import{CSSWrapper as y}from"../../utilities/css-wrapper/CSSWrapper.js";import"../../utilities/no-overflow-wrapper/NoOverflowWrapper.js";import{SliderSteps as g}from"./SliderSteps.js";import{SliderValue as w}from"./SliderValue.js";const S=t(p,{base:["rounded-full","grow","relative","data-[orientation=horizontal]:h-1","data-[orientation=vertical]:w-1"],variants:{theme:{light:["bg-white"],tonal:["bg-grey-600"]}}}),x=t(b,{base:["items-center","flex","relative","touch-none","select-none","cursor-pointer","data-[orientation=horizontal]:h-4","data-[orientation=vertical]:flex-col","data-[orientation=vertical]:w-4","disabled:cursor-not-allowed","disabled:opacity-30"]}),E=t(h,{base:["bg-primary-800","rounded-full","h-full","absolute","disabled:cursor-not-allowed","disabled:opacity-30"]}),k=t(v,{base:["bg-primary-900","rounded-full","block","size-4","hover:bg-primary-1000","focus:outline-2","focus:outline-offset-2","focus:outline-primary-900","focus:outline-solid","disabled:cursor-not-allowed","disabled:opacity-30"]}),a=e.forwardRef(({value:r,defaultValue:l,min:i=0,max:n=100,theme:d="tonal",className:s,children:m,...u},c)=>{const o=r||l;return e.createElement(y,{className:s},e.createElement(x,{defaultValue:l,value:r,min:i,max:n,ref:c,...u},e.createElement(S,{theme:d},e.createElement(E,null)),(o==null?void 0:o.length)&&o.map((V,f)=>e.createElement(k,{key:`thumb${f}`}))),m)});a.Value=w,a.Steps=g,a.displayName="Slider";export{a as Slider};
2
2
  //# sourceMappingURL=Slider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Slider.js","sources":["../../../src/components/slider/Slider.tsx"],"sourcesContent":["import { Range, Root, Thumb, Track } from '@radix-ui/react-slider'\nimport * as React from 'react'\n\nimport { styled } from '~/styled'\nimport { CSSWrapper } from '~/utilities'\n\nimport { SliderSteps } from './SliderSteps'\nimport { SliderValue } from './SliderValue'\n\nconst StyledTrack = styled(Track, {\n base: [\n 'rounded-full',\n 'grow',\n 'relative',\n 'data-[orientation=horizontal]:h-1',\n 'data-[orientation=vertical]:w-1'\n ],\n variants: {\n theme: {\n light: ['bg-white'],\n tonal: ['bg-grey-600']\n }\n }\n})\n\nconst StyledSlider = styled(Root, {\n base: [\n 'items-center',\n 'flex',\n 'relative',\n 'touch-none',\n 'select-none',\n 'cursor-pointer',\n 'data-[orientation=horizontal]:h-4',\n 'data-[orientation=vertical]:flex-col',\n 'data-[orientation=vertical]:w-4',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-30'\n ]\n})\n\nconst StyledRange = styled(Range, {\n base: [\n 'bg-primary-800',\n 'rounded-full',\n 'h-full',\n 'absolute',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-30'\n ]\n})\n\nconst StyledThumb = styled(Thumb, {\n base: [\n 'bg-primary-900',\n 'rounded-full',\n 'block',\n 'size-4',\n 'hover:bg-primary-1000',\n 'focus:outline-2',\n 'focus:outline-offset-2',\n 'focus:outline-primary-900',\n 'focus:outline-solid',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-30'\n ]\n})\n\nexport type SliderProps = React.ComponentProps<typeof StyledSlider> &\n Pick<React.ComponentProps<typeof StyledTrack>, 'theme'>\n\ntype SliderType = ReturnType<\n typeof React.forwardRef<HTMLSpanElement, SliderProps>\n> & {\n Value: typeof SliderValue\n Steps: typeof SliderSteps\n}\n\nexport const Slider = React.forwardRef<HTMLSpanElement, SliderProps>(\n (\n {\n value,\n defaultValue,\n min = 0,\n max = 100,\n theme = 'tonal',\n className,\n children,\n ...remainingProps\n },\n ref\n ) => {\n const values = value || defaultValue\n return (\n <CSSWrapper className={className}>\n <StyledSlider\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n ref={ref}\n {...remainingProps}\n >\n <StyledTrack theme={theme}>\n <StyledRange />\n </StyledTrack>\n {values?.length &&\n values.map((_, i) => <StyledThumb key={`thumb${i}`} />)}\n </StyledSlider>\n {children}\n </CSSWrapper>\n )\n }\n) as SliderType\n\nSlider.Value = SliderValue\nSlider.Steps = SliderSteps\n\nSlider.displayName = 'Slider'\n"],"names":["StyledTrack","styled","Track","StyledSlider","Root","StyledRange","Range","StyledThumb","Thumb","Slider","React","value","defaultValue","min","max","theme","className","children","remainingProps","ref","values","CSSWrapper","_","i","SliderValue","SliderSteps"],"mappings":"sXASA,MAAMA,EAAcC,EAAOC,EAAO,CAChC,KAAM,CACJ,eACA,OACA,WACA,oCACA,iCACF,EACA,SAAU,CACR,MAAO,CACL,MAAO,CAAC,UAAU,EAClB,MAAO,CAAC,aAAa,CACvB,CACF,CACF,CAAC,EAEKC,EAAeF,EAAOG,EAAM,CAChC,KAAM,CACJ,eACA,OACA,WACA,aACA,cACA,iBACA,oCACA,uCACA,kCACA,8BACA,qBACF,CACF,CAAC,EAEKC,EAAcJ,EAAOK,EAAO,CAChC,KAAM,CACJ,iBACA,eACA,SACA,WACA,8BACA,qBACF,CACF,CAAC,EAEKC,EAAcN,EAAOO,EAAO,CAChC,KAAM,CACJ,iBACA,eACA,QACA,SACA,wBACA,kBACA,yBACA,4BACA,sBACA,8BACA,qBACF,CACF,CAAC,EAYYC,EAASC,EAAM,WAC1B,CACE,CACE,MAAAC,EACA,aAAAC,EACA,IAAAC,EAAM,EACN,IAAAC,EAAM,IACN,MAAAC,EAAQ,QACR,UAAAC,EACA,SAAAC,EACA,GAAGC,CACL,EACAC,IACG,CACH,MAAMC,EAAST,GAASC,EACxB,OACEF,EAAA,cAACW,EAAA,CAAW,UAAWL,CAAAA,EACrBN,EAAA,cAACP,EAAA,CACC,aAAcS,EACd,MAAOD,EACP,IAAKE,EACL,IAAKC,EACL,IAAKK,EACJ,GAAGD,CAAAA,EAEJR,EAAA,cAACV,EAAA,CAAY,MAAOe,CAClBL,EAAAA,EAAA,cAACL,EAAA,IAAY,CACf,GACCe,GAAA,KAAA,OAAAA,EAAQ,SACPA,EAAO,IAAI,CAACE,EAAGC,IAAMb,EAAA,cAACH,EAAA,CAAY,IAAK,QAAQ,OAAAgB,CAAAA,CAAAA,CAAK,CAAE,CAC1D,EACCN,CACH,CAEJ,CACF,EAEAR,EAAO,MAAQe,EACff,EAAO,MAAQgB,EAEfhB,EAAO,YAAc"}
1
+ {"version":3,"file":"Slider.js","sources":["../../../src/components/slider/Slider.tsx"],"sourcesContent":["import { Range, Root, Thumb, Track } from '@radix-ui/react-slider'\nimport * as React from 'react'\n\nimport { styled } from '~/styled'\nimport { CSSWrapper } from '~/utilities'\n\nimport { SliderSteps } from './SliderSteps'\nimport { SliderValue } from './SliderValue'\n\nconst StyledTrack = styled(Track, {\n base: [\n 'rounded-full',\n 'grow',\n 'relative',\n 'data-[orientation=horizontal]:h-1',\n 'data-[orientation=vertical]:w-1'\n ],\n variants: {\n theme: {\n light: ['bg-white'],\n tonal: ['bg-grey-600']\n }\n }\n})\n\nconst StyledSlider = styled(Root, {\n base: [\n 'items-center',\n 'flex',\n 'relative',\n 'touch-none',\n 'select-none',\n 'cursor-pointer',\n 'data-[orientation=horizontal]:h-4',\n 'data-[orientation=vertical]:flex-col',\n 'data-[orientation=vertical]:w-4',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-30'\n ]\n})\n\nconst StyledRange = styled(Range, {\n base: [\n 'bg-primary-800',\n 'rounded-full',\n 'h-full',\n 'absolute',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-30'\n ]\n})\n\nconst StyledThumb = styled(Thumb, {\n base: [\n 'bg-primary-900',\n 'rounded-full',\n 'block',\n 'size-4',\n 'hover:bg-primary-1000',\n 'focus:outline-2',\n 'focus:outline-offset-2',\n 'focus:outline-primary-900',\n 'focus:outline-solid',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-30'\n ]\n})\n\nexport type SliderProps = React.ComponentProps<typeof StyledSlider> &\n Pick<React.ComponentProps<typeof StyledTrack>, 'theme'>\n\ntype SliderType = ReturnType<\n typeof React.forwardRef<HTMLSpanElement, SliderProps>\n> & {\n Value: typeof SliderValue\n Steps: typeof SliderSteps\n}\n\nexport const Slider = React.forwardRef<HTMLSpanElement, SliderProps>(\n (\n {\n value,\n defaultValue,\n min = 0,\n max = 100,\n theme = 'tonal',\n className,\n children,\n ...remainingProps\n },\n ref\n ) => {\n const values = value || defaultValue\n return (\n <CSSWrapper className={className}>\n <StyledSlider\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n ref={ref}\n {...remainingProps}\n >\n <StyledTrack theme={theme}>\n <StyledRange />\n </StyledTrack>\n {values?.length &&\n values.map((_, i) => <StyledThumb key={`thumb${i}`} />)}\n </StyledSlider>\n {children}\n </CSSWrapper>\n )\n }\n) as SliderType\n\nSlider.Value = SliderValue\nSlider.Steps = SliderSteps\n\nSlider.displayName = 'Slider'\n"],"names":["StyledTrack","styled","Track","StyledSlider","Root","StyledRange","Range","StyledThumb","Thumb","Slider","React","value","defaultValue","min","max","theme","className","children","remainingProps","ref","values","CSSWrapper","_","i","SliderValue","SliderSteps"],"mappings":"sXASA,MAAMA,EAAcC,EAAOC,EAAO,CAChC,KAAM,CACJ,eACA,OACA,WACA,oCACA,iCACF,EACA,SAAU,CACR,MAAO,CACL,MAAO,CAAC,UAAU,EAClB,MAAO,CAAC,aAAa,CACvB,CACF,CACF,CAAC,EAEKC,EAAeF,EAAOG,EAAM,CAChC,KAAM,CACJ,eACA,OACA,WACA,aACA,cACA,iBACA,oCACA,uCACA,kCACA,8BACA,qBACF,CACF,CAAC,EAEKC,EAAcJ,EAAOK,EAAO,CAChC,KAAM,CACJ,iBACA,eACA,SACA,WACA,8BACA,qBACF,CACF,CAAC,EAEKC,EAAcN,EAAOO,EAAO,CAChC,KAAM,CACJ,iBACA,eACA,QACA,SACA,wBACA,kBACA,yBACA,4BACA,sBACA,8BACA,qBACF,CACF,CAAC,EAYYC,EAASC,EAAM,WAC1B,CACE,CACE,MAAAC,EACA,aAAAC,EACA,IAAAC,EAAM,EACN,IAAAC,EAAM,IACN,MAAAC,EAAQ,QACR,UAAAC,EACA,SAAAC,EACA,GAAGC,CACL,EACAC,IACG,CACH,MAAMC,EAAST,GAASC,EACxB,OACEF,EAAA,cAACW,EAAA,CAAW,UAAWL,CAAAA,EACrBN,EAAA,cAACP,EAAA,CACC,aAAcS,EACd,MAAOD,EACP,IAAKE,EACL,IAAKC,EACL,IAAKK,EACJ,GAAGD,CAAAA,EAEJR,EAAA,cAACV,EAAA,CAAY,MAAOe,CAClBL,EAAAA,EAAA,cAACL,EAAA,IAAY,CACf,GACCe,GAAA,KAAA,OAAAA,EAAQ,SACPA,EAAO,IAAI,CAACE,EAAGC,IAAMb,EAAA,cAACH,EAAA,CAAY,IAAK,QAAQgB,CAAC,EAAA,CAAI,CAAE,CAC1D,EACCN,CACH,CAEJ,CACF,EAEAR,EAAO,MAAQe,EACff,EAAO,MAAQgB,EAEfhB,EAAO,YAAc"}
@@ -1,2 +1,2 @@
1
- import*as s from"react";import{styled as r}from"../../styled.js";import{Text as m}from"../text/Text.js";const o=r("div",{base:["h-3","mt-3","relative","w-full"]}),n=(l,e,a)=>(l-e)/(a-e)*100,c=(l,e,a)=>{const t=n(l,e,a);return t<=10?0:t>=90?100:50},p=({min:l,max:e,steps:a=[]})=>a.length===0?null:s.createElement(o,null,a.map(t=>s.createElement(m,{as:"span",key:t.value,style:{"--left":"".concat(n(t.value,l,e),"%"),"--translate-x":"-".concat(c(t.value,l,e),"%")},className:"text-grey-700 absolute left-(--left) translate-x-(--translate-x)"},t.label)));export{p as SliderSteps};
1
+ import*as s from"react";import{styled as m}from"../../styled.js";import{Text as n}from"../text/Text.js";const o=m("div",{base:["h-3","mt-3","relative","w-full"]}),r=(l,e,a)=>(l-e)/(a-e)*100,p=(l,e,a)=>{const t=r(l,e,a);return t<=10?0:t>=90?100:50},u=({min:l,max:e,steps:a=[]})=>a.length===0?null:s.createElement(o,null,a.map(t=>s.createElement(n,{as:"span",key:t.value,style:{"--left":`${r(t.value,l,e)}%`,"--translate-x":`-${p(t.value,l,e)}%`},className:"text-grey-700 absolute left-(--left) translate-x-(--translate-x)"},t.label)));export{u as SliderSteps};
2
2
  //# sourceMappingURL=SliderSteps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SliderSteps.js","sources":["../../../src/components/slider/SliderSteps.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { styled } from '~/styled'\n\nimport { Text } from '../text'\n\nexport type SliderStepsType = {\n steps?: { label: string; value: number }[]\n}\n\ntype SliderStepsProps = {\n min: number\n max: number\n} & SliderStepsType\n\nconst SliderStepsContainer = styled('div', {\n base: ['h-3', 'mt-3', 'relative', 'w-full']\n})\n\nconst getPercentValue = (value: number, min: number, max: number): number => {\n return ((value - min) / (max - min)) * 100\n}\n\nconst getTransformValue = (value: number, min: number, max: number): number => {\n const percentage = getPercentValue(value, min, max)\n\n if (percentage <= 10) return 0\n if (percentage >= 90) return 100\n return 50\n}\n\nexport const SliderSteps = ({ min, max, steps = [] }: SliderStepsProps) => {\n if (steps.length === 0) return null\n\n return (\n <SliderStepsContainer>\n {steps.map((step) => (\n <Text\n as=\"span\"\n key={step.value}\n style={{\n '--left': `${getPercentValue(step.value, min, max)}%`,\n '--translate-x': `-${getTransformValue(step.value, min, max)}%`\n }}\n className=\"text-grey-700 absolute left-(--left) translate-x-(--translate-x)\"\n >\n {step.label}\n </Text>\n ))}\n </SliderStepsContainer>\n )\n}\n"],"names":["SliderStepsContainer","styled","getPercentValue","value","min","max","getTransformValue","percentage","SliderSteps","steps","React","step","Text"],"mappings":"wGAeA,MAAMA,EAAuBC,EAAO,MAAO,CACzC,KAAM,CAAC,MAAO,OAAQ,WAAY,QAAQ,CAC5C,CAAC,EAEKC,EAAkB,CAACC,EAAeC,EAAaC,KAC1CF,EAAQC,IAAQC,EAAMD,GAAQ,IAGnCE,EAAoB,CAACH,EAAeC,EAAaC,IAAwB,CAC7E,MAAME,EAAaL,EAAgBC,EAAOC,EAAKC,CAAG,EAElD,OAAIE,GAAc,GAAW,EACzBA,GAAc,GAAW,IACtB,EACT,EAEaC,EAAc,CAAC,CAAE,IAAAJ,EAAK,IAAAC,EAAK,MAAAI,EAAQ,CAAG,CAAA,IAC7CA,EAAM,SAAW,EAAU,KAG7BC,EAAA,cAACV,EAAA,KACES,EAAM,IAAKE,GACVD,EAAA,cAACE,EAAA,CACC,GAAG,OACH,IAAKD,EAAK,MACV,MAAO,CACL,SAAU,GAAG,OAAAT,EAAgBS,EAAK,MAAOP,EAAKC,CAAG,EAAC,GAAA,EAClD,gBAAiB,IAAI,OAAAC,EAAkBK,EAAK,MAAOP,EAAKC,CAAG,EAAC,GAAA,CAC9D,EACA,UAAU,kEAETM,EAAAA,EAAK,KACR,CACD,CACH"}
1
+ {"version":3,"file":"SliderSteps.js","sources":["../../../src/components/slider/SliderSteps.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { styled } from '~/styled'\n\nimport { Text } from '../text'\n\nexport type SliderStepsType = {\n steps?: { label: string; value: number }[]\n}\n\ntype SliderStepsProps = {\n min: number\n max: number\n} & SliderStepsType\n\nconst SliderStepsContainer = styled('div', {\n base: ['h-3', 'mt-3', 'relative', 'w-full']\n})\n\nconst getPercentValue = (value: number, min: number, max: number): number => {\n return ((value - min) / (max - min)) * 100\n}\n\nconst getTransformValue = (value: number, min: number, max: number): number => {\n const percentage = getPercentValue(value, min, max)\n\n if (percentage <= 10) return 0\n if (percentage >= 90) return 100\n return 50\n}\n\nexport const SliderSteps = ({ min, max, steps = [] }: SliderStepsProps) => {\n if (steps.length === 0) return null\n\n return (\n <SliderStepsContainer>\n {steps.map((step) => (\n <Text\n as=\"span\"\n key={step.value}\n style={{\n '--left': `${getPercentValue(step.value, min, max)}%`,\n '--translate-x': `-${getTransformValue(step.value, min, max)}%`\n }}\n className=\"text-grey-700 absolute left-(--left) translate-x-(--translate-x)\"\n >\n {step.label}\n </Text>\n ))}\n </SliderStepsContainer>\n )\n}\n"],"names":["SliderStepsContainer","styled","getPercentValue","value","min","max","getTransformValue","percentage","SliderSteps","steps","React","step","Text"],"mappings":"wGAeA,MAAMA,EAAuBC,EAAO,MAAO,CACzC,KAAM,CAAC,MAAO,OAAQ,WAAY,QAAQ,CAC5C,CAAC,EAEKC,EAAkB,CAACC,EAAeC,EAAaC,KAC1CF,EAAQC,IAAQC,EAAMD,GAAQ,IAGnCE,EAAoB,CAACH,EAAeC,EAAaC,IAAwB,CAC7E,MAAME,EAAaL,EAAgBC,EAAOC,EAAKC,CAAG,EAElD,OAAIE,GAAc,GAAW,EACzBA,GAAc,GAAW,IACtB,EACT,EAEaC,EAAc,CAAC,CAAE,IAAAJ,EAAK,IAAAC,EAAK,MAAAI,EAAQ,EAAG,IAC7CA,EAAM,SAAW,EAAU,KAG7BC,EAAA,cAACV,EAAA,KACES,EAAM,IAAKE,GACVD,EAAA,cAACE,EAAA,CACC,GAAG,OACH,IAAKD,EAAK,MACV,MAAO,CACL,SAAU,GAAGT,EAAgBS,EAAK,MAAOP,EAAKC,CAAG,CAAC,IAClD,gBAAiB,IAAIC,EAAkBK,EAAK,MAAOP,EAAKC,CAAG,CAAC,GAC9D,EACA,UAAU,kEAETM,EAAAA,EAAK,KACR,CACD,CACH"}
@@ -1,2 +1,2 @@
1
- import*as r from"react";import{Text as a}from"../text/Text.js";const o=({value:e=[],outputLabel:t=l=>"Current value is ".concat(l)})=>r.createElement(a,{className:"text-grey-700 mt-4 w-full"},t(e.length===1?e[0]:e));export{o as SliderValue};
1
+ import*as r from"react";import{Text as a}from"../text/Text.js";const m=({value:e=[],outputLabel:t=l=>`Current value is ${l}`})=>r.createElement(a,{className:"text-grey-700 mt-4 w-full"},t(e.length===1?e[0]:e));export{m as SliderValue};
2
2
  //# sourceMappingURL=SliderValue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SliderValue.js","sources":["../../../src/components/slider/SliderValue.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { Text } from '../text'\n\nexport type SliderValueType = {\n outputLabel?: (value: number | number[]) => string\n}\n\ntype SliderValueProps = SliderValueType & {\n value?: number[]\n}\n\nexport const SliderValue = ({\n value = [],\n outputLabel = (value) => `Current value is ${value}`\n}: SliderValueProps) => {\n return (\n <Text className=\"text-grey-700 mt-4 w-full\">\n {outputLabel(value.length === 1 ? value[0] : value)}\n </Text>\n )\n}\n"],"names":["SliderValue","value","outputLabel","React","Text"],"mappings":"+DAYO,MAAMA,EAAc,CAAC,CAC1B,MAAAC,EAAQ,CAAA,EACR,YAAAC,EAAeD,GAAU,oBAAoB,OAAAA,EAC/C,IAEIE,EAAA,cAACC,EAAA,CAAK,UAAU,2BAAA,EACbF,EAAYD,EAAM,SAAW,EAAIA,EAAM,CAAC,EAAIA,CAAK,CACpD"}
1
+ {"version":3,"file":"SliderValue.js","sources":["../../../src/components/slider/SliderValue.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { Text } from '../text'\n\nexport type SliderValueType = {\n outputLabel?: (value: number | number[]) => string\n}\n\ntype SliderValueProps = SliderValueType & {\n value?: number[]\n}\n\nexport const SliderValue = ({\n value = [],\n outputLabel = (value) => `Current value is ${value}`\n}: SliderValueProps) => {\n return (\n <Text className=\"text-grey-700 mt-4 w-full\">\n {outputLabel(value.length === 1 ? value[0] : value)}\n </Text>\n )\n}\n"],"names":["SliderValue","value","outputLabel","React","Text"],"mappings":"+DAYO,MAAMA,EAAc,CAAC,CAC1B,MAAAC,EAAQ,CAAA,EACR,YAAAC,EAAeD,GAAU,oBAAoBA,CAAK,EACpD,IAEIE,EAAA,cAACC,EAAA,CAAK,UAAU,2BAAA,EACbF,EAAYD,EAAM,SAAW,EAAIA,EAAM,CAAC,EAAIA,CAAK,CACpD"}
@@ -1,2 +1,2 @@
1
- import{Ok as f}from"@atom-learning/icons";import*as l from"react";import{styled as v}from"../../styled.js";import{Flex as h}from"../flex/Flex.js";import{Icon as I}from"../icon/Icon.js";import{useStepper as D}from"./stepper-context/StepperContext.js";import{StepperStepBullet as T}from"./StepperStepBullet.js";import{StepperStepContainer as w}from"./StepperStepContainer.js";import{StepperStepLabel as L}from"./StepperStepLabel.js";import{Status as t}from"./types.js";const U=v(h,{base:["justify-between"],variants:{direction:{vertical:["flex-col"],horizontal:["flex-row"]}}}),g=({className:S})=>{const{steps:o,goToStep:m,activeStep:r,viewedSteps:n,allowSkip:c,direction:i,hideLabels:E,completedSteps:p,showCompletedIcons:u}=D(),d=s=>{const e=o[s];return e.status?e.status:p.length===o.length?t.SUCCESS:r===s&&p.includes(r)?t.REVIEWED:r===s?t.ACTIVE:p.includes(s)?t.COMPLETED:n.includes(s)?t.VIEWED:t.DEFAULT},C=s=>{var e;const a=(e=o[s])==null?void 0:e.status;return p.length===o.length?t.SUCCESS:a===t.SUCCESS?t.SUCCESS:a===t.COMPLETED||s<Math.max(...n)?t.ACTIVE:a===t.VIEWED?t.VIEWED:t.DEFAULT};return l.createElement(U,{className:S,direction:i},o.map((s,e)=>{const a=d(e),b=C(e);return l.createElement(w,{tabIndex:0,key:"step_".concat(e),direction:i,separator:b,status:a,style:{"--steps":o.length},className:i==="horizontal"?"w-[calc(100%/var(--steps, 0))]":"h-[calc(100%/var(--steps, 0))]",canInteract:c},l.createElement(T,{as:c?"button":"div",onClick:()=>c&&n.includes(e)?m==null?void 0:m(e):void 0,status:a,"aria-current":e===r?"step":void 0,"aria-label":s.label?"":"step ".concat(e+1),"aria-labelledby":s.label?"step-".concat(e):void 0,className:c&&n.includes(e)?"cursor-pointer":"cursor-auto"},s.status===t.SUCCESS||u&&a===t.COMPLETED?l.createElement(I,{is:f}):e+1),s.label&&!E&&l.createElement(L,{as:"span",id:"step-".concat(e),direction:i,status:a},s.label))}))};export{g as StepperSteps};
1
+ import{Ok as f}from"@atom-learning/icons";import*as l from"react";import{styled as v}from"../../styled.js";import{Flex as h}from"../flex/Flex.js";import{Icon as I}from"../icon/Icon.js";import{useStepper as D}from"./stepper-context/StepperContext.js";import{StepperStepBullet as T}from"./StepperStepBullet.js";import{StepperStepContainer as w}from"./StepperStepContainer.js";import{StepperStepLabel as L}from"./StepperStepLabel.js";import{Status as t}from"./types.js";const U=v(h,{base:["justify-between"],variants:{direction:{vertical:["flex-col"],horizontal:["flex-row"]}}}),g=({className:S})=>{const{steps:o,goToStep:m,activeStep:r,viewedSteps:i,allowSkip:n,direction:p,hideLabels:E,completedSteps:c,showCompletedIcons:u}=D(),d=s=>{const e=o[s];return e.status?e.status:c.length===o.length?t.SUCCESS:r===s&&c.includes(r)?t.REVIEWED:r===s?t.ACTIVE:c.includes(s)?t.COMPLETED:i.includes(s)?t.VIEWED:t.DEFAULT},C=s=>{var e;const a=(e=o[s])==null?void 0:e.status;return c.length===o.length?t.SUCCESS:a===t.SUCCESS?t.SUCCESS:a===t.COMPLETED||s<Math.max(...i)?t.ACTIVE:a===t.VIEWED?t.VIEWED:t.DEFAULT};return l.createElement(U,{className:S,direction:p},o.map((s,e)=>{const a=d(e),b=C(e);return l.createElement(w,{tabIndex:0,key:`step_${e}`,direction:p,separator:b,status:a,style:{"--steps":o.length},className:p==="horizontal"?"w-[calc(100%/var(--steps, 0))]":"h-[calc(100%/var(--steps, 0))]",canInteract:n},l.createElement(T,{as:n?"button":"div",onClick:()=>n&&i.includes(e)?m==null?void 0:m(e):void 0,status:a,"aria-current":e===r?"step":void 0,"aria-label":s.label?"":`step ${e+1}`,"aria-labelledby":s.label?`step-${e}`:void 0,className:n&&i.includes(e)?"cursor-pointer":"cursor-auto"},s.status===t.SUCCESS||u&&a===t.COMPLETED?l.createElement(I,{is:f}):e+1),s.label&&!E&&l.createElement(L,{as:"span",id:`step-${e}`,direction:p,status:a},s.label))}))};export{g as StepperSteps};
2
2
  //# sourceMappingURL=StepperSteps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StepperSteps.js","sources":["../../../src/components/stepper/StepperSteps.tsx"],"sourcesContent":["import { Ok } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { styled } from '~/styled'\n\nimport { Flex } from '../flex'\nimport { Icon } from '../icon'\nimport { useStepper } from './stepper-context/StepperContext'\nimport { StepperStepBullet } from './StepperStepBullet'\nimport { StepperStepContainer } from './StepperStepContainer'\nimport { StepperStepLabel } from './StepperStepLabel'\nimport { IStepperStepsProps, Status } from './types'\n\nconst StepperStepsContainer = styled(Flex, {\n base: ['justify-between'],\n variants: {\n direction: {\n vertical: ['flex-col'],\n horizontal: ['flex-row']\n }\n }\n})\n\nexport const StepperSteps = ({ className }: IStepperStepsProps) => {\n const {\n steps,\n goToStep,\n activeStep,\n viewedSteps,\n allowSkip,\n direction,\n hideLabels,\n completedSteps,\n showCompletedIcons\n } = useStepper()\n\n const getBulletStatus = (index: number) => {\n const activeBullet = steps[index]\n\n if (activeBullet.status) return activeBullet.status\n if (completedSteps.length === steps.length) return Status.SUCCESS\n if (activeStep === index && completedSteps.includes(activeStep))\n return Status.REVIEWED\n if (activeStep === index) return Status.ACTIVE\n if (completedSteps.includes(index)) return Status.COMPLETED\n if (viewedSteps.includes(index)) return Status.VIEWED\n return Status.DEFAULT\n }\n\n const getSeparatorStatus = (index: number) => {\n const bulletStatus = steps[index]?.status\n\n if (completedSteps.length === steps.length) {\n return Status.SUCCESS\n }\n\n if (bulletStatus === Status.SUCCESS) {\n return Status.SUCCESS\n }\n\n if (bulletStatus === Status.COMPLETED || index < Math.max(...viewedSteps)) {\n return Status.ACTIVE\n }\n\n if (bulletStatus === Status.VIEWED) {\n return Status.VIEWED\n }\n\n return Status.DEFAULT\n }\n\n return (\n <StepperStepsContainer className={className} direction={direction}>\n {steps.map((step, index) => {\n const bulletStatus = getBulletStatus(index)\n const separatorStatus = getSeparatorStatus(index)\n\n return (\n <StepperStepContainer\n tabIndex={0}\n key={`step_${index}`}\n direction={direction}\n separator={separatorStatus}\n status={bulletStatus}\n style={{ '--steps': steps.length }}\n className={\n direction === 'horizontal'\n ? 'w-[calc(100%/var(--steps, 0))]'\n : 'h-[calc(100%/var(--steps, 0))]'\n }\n canInteract={allowSkip}\n >\n <StepperStepBullet\n as={allowSkip ? 'button' : 'div'}\n onClick={() =>\n allowSkip && viewedSteps.includes(index)\n ? goToStep?.(index)\n : undefined\n }\n status={bulletStatus}\n aria-current={index === activeStep ? 'step' : undefined}\n aria-label={!step.label ? `step ${index + 1}` : ''}\n aria-labelledby={step.label ? `step-${index}` : undefined}\n className={\n allowSkip && viewedSteps.includes(index)\n ? 'cursor-pointer'\n : 'cursor-auto'\n }\n >\n {step.status === Status.SUCCESS ||\n (showCompletedIcons && bulletStatus === Status.COMPLETED) ? (\n <Icon is={Ok} />\n ) : (\n index + 1\n )}\n </StepperStepBullet>\n\n {step.label && !hideLabels && (\n <StepperStepLabel\n as=\"span\"\n id={`step-${index}`}\n direction={direction}\n status={bulletStatus}\n >\n {step.label}\n </StepperStepLabel>\n )}\n </StepperStepContainer>\n )\n })}\n </StepperStepsContainer>\n )\n}\n"],"names":["StepperStepsContainer","styled","Flex","StepperSteps","className","steps","goToStep","activeStep","viewedSteps","allowSkip","direction","hideLabels","completedSteps","showCompletedIcons","useStepper","getBulletStatus","index","activeBullet","Status","getSeparatorStatus","_a","bulletStatus","React","step","separatorStatus","StepperStepContainer","StepperStepBullet","Icon","Ok","StepperStepLabel"],"mappings":"mdAaA,MAAMA,EAAwBC,EAAOC,EAAM,CACzC,KAAM,CAAC,iBAAiB,EACxB,SAAU,CACR,UAAW,CACT,SAAU,CAAC,UAAU,EACrB,WAAY,CAAC,UAAU,CACzB,CACF,CACF,CAAC,EAEYC,EAAe,CAAC,CAAE,UAAAC,CAAU,IAA0B,CACjE,KAAM,CACJ,MAAAC,EACA,SAAAC,EACA,WAAAC,EACA,YAAAC,EACA,UAAAC,EACA,UAAAC,EACA,WAAAC,EACA,eAAAC,EACA,mBAAAC,CACF,EAAIC,EAAAA,EAEEC,EAAmBC,GAAkB,CACzC,MAAMC,EAAeZ,EAAMW,CAAK,EAEhC,OAAIC,EAAa,OAAeA,EAAa,OACzCL,EAAe,SAAWP,EAAM,OAAea,EAAO,QACtDX,IAAeS,GAASJ,EAAe,SAASL,CAAU,EACrDW,EAAO,SACZX,IAAeS,EAAcE,EAAO,OACpCN,EAAe,SAASI,CAAK,EAAUE,EAAO,UAC9CV,EAAY,SAASQ,CAAK,EAAUE,EAAO,OACxCA,EAAO,OAChB,EAEMC,EAAsBH,GAAkB,CAjDhD,IAAAI,EAkDI,MAAMC,GAAeD,EAAAf,EAAMW,CAAK,IAAX,YAAAI,EAAc,OAEnC,OAAIR,EAAe,SAAWP,EAAM,OAC3Ba,EAAO,QAGZG,IAAiBH,EAAO,QACnBA,EAAO,QAGZG,IAAiBH,EAAO,WAAaF,EAAQ,KAAK,IAAI,GAAGR,CAAW,EAC/DU,EAAO,OAGZG,IAAiBH,EAAO,OACnBA,EAAO,OAGTA,EAAO,OAChB,EAEA,OACEI,EAAA,cAACtB,EAAA,CAAsB,UAAWI,EAAW,UAAWM,GACrDL,EAAM,IAAI,CAACkB,EAAMP,IAAU,CAC1B,MAAMK,EAAeN,EAAgBC,CAAK,EACpCQ,EAAkBL,EAAmBH,CAAK,EAEhD,OACEM,EAAA,cAACG,EAAA,CACC,SAAU,EACV,IAAK,QAAQ,OAAAT,GACb,UAAWN,EACX,UAAWc,EACX,OAAQH,EACR,MAAO,CAAE,UAAWhB,EAAM,MAAO,EACjC,UACEK,IAAc,aACV,iCACA,iCAEN,YAAaD,CAEba,EAAAA,EAAA,cAACI,EAAA,CACC,GAAIjB,EAAY,SAAW,MAC3B,QAAS,IACPA,GAAaD,EAAY,SAASQ,CAAK,EACnCV,GAAA,KAAA,OAAAA,EAAWU,CACX,EAAA,OAEN,OAAQK,EACR,eAAcL,IAAUT,EAAa,OAAS,OAC9C,aAAagB,EAAK,MAA8B,GAAtB,QAAQ,OAAAP,EAAQ,CAC1C,EAAA,kBAAiBO,EAAK,MAAQ,QAAQ,OAAAP,CAAAA,EAAU,OAChD,UACEP,GAAaD,EAAY,SAASQ,CAAK,EACnC,iBACA,eAGLO,EAAK,SAAWL,EAAO,SACvBL,GAAsBQ,IAAiBH,EAAO,UAC7CI,EAAA,cAACK,EAAA,CAAK,GAAIC,CAAAA,CAAI,EAEdZ,EAAQ,CAEZ,EAECO,EAAK,OAAS,CAACZ,GACdW,EAAA,cAACO,EAAA,CACC,GAAG,OACH,GAAI,QAAQ,OAAAb,CACZ,EAAA,UAAWN,EACX,OAAQW,GAEPE,EAAK,KACR,CAEJ,CAEJ,CAAC,CACH,CAEJ"}
1
+ {"version":3,"file":"StepperSteps.js","sources":["../../../src/components/stepper/StepperSteps.tsx"],"sourcesContent":["import { Ok } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { styled } from '~/styled'\n\nimport { Flex } from '../flex'\nimport { Icon } from '../icon'\nimport { useStepper } from './stepper-context/StepperContext'\nimport { StepperStepBullet } from './StepperStepBullet'\nimport { StepperStepContainer } from './StepperStepContainer'\nimport { StepperStepLabel } from './StepperStepLabel'\nimport { IStepperStepsProps, Status } from './types'\n\nconst StepperStepsContainer = styled(Flex, {\n base: ['justify-between'],\n variants: {\n direction: {\n vertical: ['flex-col'],\n horizontal: ['flex-row']\n }\n }\n})\n\nexport const StepperSteps = ({ className }: IStepperStepsProps) => {\n const {\n steps,\n goToStep,\n activeStep,\n viewedSteps,\n allowSkip,\n direction,\n hideLabels,\n completedSteps,\n showCompletedIcons\n } = useStepper()\n\n const getBulletStatus = (index: number) => {\n const activeBullet = steps[index]\n\n if (activeBullet.status) return activeBullet.status\n if (completedSteps.length === steps.length) return Status.SUCCESS\n if (activeStep === index && completedSteps.includes(activeStep))\n return Status.REVIEWED\n if (activeStep === index) return Status.ACTIVE\n if (completedSteps.includes(index)) return Status.COMPLETED\n if (viewedSteps.includes(index)) return Status.VIEWED\n return Status.DEFAULT\n }\n\n const getSeparatorStatus = (index: number) => {\n const bulletStatus = steps[index]?.status\n\n if (completedSteps.length === steps.length) {\n return Status.SUCCESS\n }\n\n if (bulletStatus === Status.SUCCESS) {\n return Status.SUCCESS\n }\n\n if (bulletStatus === Status.COMPLETED || index < Math.max(...viewedSteps)) {\n return Status.ACTIVE\n }\n\n if (bulletStatus === Status.VIEWED) {\n return Status.VIEWED\n }\n\n return Status.DEFAULT\n }\n\n return (\n <StepperStepsContainer className={className} direction={direction}>\n {steps.map((step, index) => {\n const bulletStatus = getBulletStatus(index)\n const separatorStatus = getSeparatorStatus(index)\n\n return (\n <StepperStepContainer\n tabIndex={0}\n key={`step_${index}`}\n direction={direction}\n separator={separatorStatus}\n status={bulletStatus}\n style={{ '--steps': steps.length }}\n className={\n direction === 'horizontal'\n ? 'w-[calc(100%/var(--steps, 0))]'\n : 'h-[calc(100%/var(--steps, 0))]'\n }\n canInteract={allowSkip}\n >\n <StepperStepBullet\n as={allowSkip ? 'button' : 'div'}\n onClick={() =>\n allowSkip && viewedSteps.includes(index)\n ? goToStep?.(index)\n : undefined\n }\n status={bulletStatus}\n aria-current={index === activeStep ? 'step' : undefined}\n aria-label={!step.label ? `step ${index + 1}` : ''}\n aria-labelledby={step.label ? `step-${index}` : undefined}\n className={\n allowSkip && viewedSteps.includes(index)\n ? 'cursor-pointer'\n : 'cursor-auto'\n }\n >\n {step.status === Status.SUCCESS ||\n (showCompletedIcons && bulletStatus === Status.COMPLETED) ? (\n <Icon is={Ok} />\n ) : (\n index + 1\n )}\n </StepperStepBullet>\n\n {step.label && !hideLabels && (\n <StepperStepLabel\n as=\"span\"\n id={`step-${index}`}\n direction={direction}\n status={bulletStatus}\n >\n {step.label}\n </StepperStepLabel>\n )}\n </StepperStepContainer>\n )\n })}\n </StepperStepsContainer>\n )\n}\n"],"names":["StepperStepsContainer","styled","Flex","StepperSteps","className","steps","goToStep","activeStep","viewedSteps","allowSkip","direction","hideLabels","completedSteps","showCompletedIcons","useStepper","getBulletStatus","index","activeBullet","Status","getSeparatorStatus","_a","bulletStatus","React","step","separatorStatus","StepperStepContainer","StepperStepBullet","Icon","Ok","StepperStepLabel"],"mappings":"mdAaA,MAAMA,EAAwBC,EAAOC,EAAM,CACzC,KAAM,CAAC,iBAAiB,EACxB,SAAU,CACR,UAAW,CACT,SAAU,CAAC,UAAU,EACrB,WAAY,CAAC,UAAU,CACzB,CACF,CACF,CAAC,EAEYC,EAAe,CAAC,CAAE,UAAAC,CAAU,IAA0B,CACjE,KAAM,CACJ,MAAAC,EACA,SAAAC,EACA,WAAAC,EACA,YAAAC,EACA,UAAAC,EACA,UAAAC,EACA,WAAAC,EACA,eAAAC,EACA,mBAAAC,CACF,EAAIC,EAAAA,EAEEC,EAAmBC,GAAkB,CACzC,MAAMC,EAAeZ,EAAMW,CAAK,EAEhC,OAAIC,EAAa,OAAeA,EAAa,OACzCL,EAAe,SAAWP,EAAM,OAAea,EAAO,QACtDX,IAAeS,GAASJ,EAAe,SAASL,CAAU,EACrDW,EAAO,SACZX,IAAeS,EAAcE,EAAO,OACpCN,EAAe,SAASI,CAAK,EAAUE,EAAO,UAC9CV,EAAY,SAASQ,CAAK,EAAUE,EAAO,OACxCA,EAAO,OAChB,EAEMC,EAAsBH,GAAkB,CAjDhD,IAAAI,EAkDI,MAAMC,GAAeD,EAAAf,EAAMW,CAAK,IAAX,YAAAI,EAAc,OAEnC,OAAIR,EAAe,SAAWP,EAAM,OAC3Ba,EAAO,QAGZG,IAAiBH,EAAO,QACnBA,EAAO,QAGZG,IAAiBH,EAAO,WAAaF,EAAQ,KAAK,IAAI,GAAGR,CAAW,EAC/DU,EAAO,OAGZG,IAAiBH,EAAO,OACnBA,EAAO,OAGTA,EAAO,OAChB,EAEA,OACEI,EAAA,cAACtB,EAAA,CAAsB,UAAWI,EAAW,UAAWM,GACrDL,EAAM,IAAI,CAACkB,EAAMP,IAAU,CAC1B,MAAMK,EAAeN,EAAgBC,CAAK,EACpCQ,EAAkBL,EAAmBH,CAAK,EAEhD,OACEM,EAAA,cAACG,EAAA,CACC,SAAU,EACV,IAAK,QAAQT,CAAK,GAClB,UAAWN,EACX,UAAWc,EACX,OAAQH,EACR,MAAO,CAAE,UAAWhB,EAAM,MAAO,EACjC,UACEK,IAAc,aACV,iCACA,iCAEN,YAAaD,CAEba,EAAAA,EAAA,cAACI,EAAA,CACC,GAAIjB,EAAY,SAAW,MAC3B,QAAS,IACPA,GAAaD,EAAY,SAASQ,CAAK,EACnCV,GAAA,KAAA,OAAAA,EAAWU,CACX,EAAA,OAEN,OAAQK,EACR,eAAcL,IAAUT,EAAa,OAAS,OAC9C,aAAagB,EAAK,MAA8B,GAAtB,QAAQP,EAAQ,CAAC,GAC3C,kBAAiBO,EAAK,MAAQ,QAAQP,CAAK,GAAK,OAChD,UACEP,GAAaD,EAAY,SAASQ,CAAK,EACnC,iBACA,eAGLO,EAAK,SAAWL,EAAO,SACvBL,GAAsBQ,IAAiBH,EAAO,UAC7CI,EAAA,cAACK,EAAA,CAAK,GAAIC,CAAAA,CAAI,EAEdZ,EAAQ,CAEZ,EAECO,EAAK,OAAS,CAACZ,GACdW,EAAA,cAACO,EAAA,CACC,GAAG,OACH,GAAI,QAAQb,CAAK,GACjB,UAAWN,EACX,OAAQW,GAEPE,EAAK,KACR,CAEJ,CAEJ,CAAC,CACH,CAEJ"}