@vesture/react 0.3.1 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Button/Button.tsx","../src/components/Button/Button.css.ts","../src/components/Label/Label.tsx","../src/components/Label/Label.css.ts","../src/components/Input/Input.tsx","../src/components/Input/Input.css.ts","../src/components/Textarea/Textarea.tsx","../src/components/Textarea/Textarea.css.ts","../src/components/Select/Select.tsx","../src/components/Select/Select.css.ts","../src/components/Checkbox/Checkbox.tsx","../src/components/Checkbox/Checkbox.css.ts","../src/components/Radio/Radio.tsx","../src/components/Radio/Radio.css.ts","../src/components/Switch/Switch.tsx","../src/components/Switch/Switch.css.ts","../src/components/Card/Card.tsx","../src/components/Card/Card.css.ts","../src/components/Stack/Stack.tsx","../src/components/Stack/Stack.css.ts","../src/components/Divider/Divider.tsx","../src/components/Divider/Divider.css.ts","../src/components/Tooltip/Tooltip.tsx","../src/components/Tooltip/Tooltip.css.ts","../src/components/Popover/Popover.tsx","../src/components/Popover/Popover.css.ts","../src/components/Modal/Modal.tsx","../src/components/Modal/Modal.css.ts","../src/components/Toast/ToastProvider.tsx","../src/components/Toast/Toast.css.ts","../src/components/Toast/useToast.ts","../src/components/DropdownMenu/DropdownMenu.tsx","../src/components/DropdownMenu/DropdownMenu.css.ts","../src/components/DropdownMenu/MenuContext.ts","../src/components/DropdownMenu/DropdownMenuItem.tsx","../src/components/DropdownMenu/index.ts","../src/components/Breadcrumbs/Breadcrumbs.tsx","../src/components/Breadcrumbs/Breadcrumbs.css.ts","../src/components/Breadcrumbs/BreadcrumbsItem.tsx","../src/components/Breadcrumbs/index.ts","../src/components/Pagination/getPageRange.ts","../src/components/Pagination/Pagination.css.ts","../src/components/Pagination/Pagination.tsx","../src/components/Accordion/Accordion.tsx","../src/components/Accordion/Accordion.css.ts","../src/components/Accordion/AccordionContext.ts","../src/components/Accordion/AccordionContent.tsx","../src/components/Accordion/AccordionItem.tsx","../src/components/Accordion/AccordionTrigger.tsx","../src/components/Accordion/index.ts","../src/components/Tabs/Tabs.tsx","../src/components/Tabs/TabsContext.ts","../src/components/Tabs/Tabs.css.ts","../src/components/Tabs/TabsList.tsx","../src/components/Tabs/TabsPanel.tsx","../src/components/Tabs/TabsTrigger.tsx","../src/components/Tabs/index.ts","../src/components/Badge/Badge.tsx","../src/components/Badge/Badge.css.ts","../src/components/Avatar/Avatar.tsx","../src/components/Avatar/Avatar.css.ts","../src/components/Progress/Progress.css.ts","../src/components/Progress/Progress.tsx","../src/components/Spinner/Spinner.css.ts","../src/components/Spinner/Spinner.tsx","../src/components/Alert/Alert.css.ts","../src/components/Alert/Alert.tsx","../src/components/DataGrid/DataGrid.tsx","../src/components/DataGrid/DataGrid.css.ts","../src/components/Calendar/Calendar.tsx","../src/components/Calendar/Calendar.css.ts","../src/utils/date.ts","../src/components/DatePicker/DatePicker.tsx","../src/components/DatePicker/DatePicker.css.ts","../src/components/DateRangePicker/DateRangePicker.tsx","../src/components/DateRangePicker/DateRangePicker.css.ts","../src/components/NumberInput/NumberInput.tsx","../src/components/NumberInput/NumberInput.css.ts","../src/components/Slider/Slider.tsx","../src/components/Slider/Slider.css.ts","../src/components/Combobox/Combobox.tsx","../src/components/Combobox/Combobox.css.ts","../src/components/TreeView/TreeView.tsx","../src/components/TreeView/TreeView.css.ts","../src/components/CommandPalette/CommandPalette.tsx","../src/components/CommandPalette/CommandPalette.css.ts","../src/components/CommandPalette/useCommandPaletteShortcut.ts","../src/components/charts/LineChart/LineChart.tsx","../src/components/charts/LineChart/LineChart.render.ts","../../../node_modules/d3-shape/src/constant.js","../../../node_modules/d3-path/src/path.js","../../../node_modules/d3-shape/src/path.js","../../../node_modules/d3-shape/src/array.js","../../../node_modules/d3-shape/src/curve/linear.js","../../../node_modules/d3-shape/src/point.js","../../../node_modules/d3-shape/src/line.js","../../../node_modules/d3-shape/src/area.js","../src/components/charts/LineChart/LineChart.css.ts","../src/components/charts/LineChart/LineChart.interactive.tsx","../src/components/charts/BarChart/BarChart.tsx","../src/components/charts/BarChart/BarChart.render.ts","../src/components/charts/BarChart/BarChart.css.ts","../src/components/charts/BarChart/BarChart.interactive.tsx","../src/components/charts/AreaChart/AreaChart.tsx","../src/components/charts/AreaChart/AreaChart.render.ts","../src/components/charts/AreaChart/AreaChart.css.ts","../src/components/charts/AreaChart/AreaChart.interactive.tsx","../src/components/charts/PieChart/PieChart.tsx","../src/components/charts/PieChart/PieChart.render.ts","../src/components/charts/PieChart/PieChart.css.ts","../src/components/charts/PieChart/PieChart.interactive.tsx","../src/components/Scheduler/Scheduler.tsx","../src/components/Scheduler/Scheduler.css.ts","../src/components/Scheduler/scheduler-layout.ts","../src/index.ts"],"sourcesContent":["import { forwardRef } from \"react\";\nimport type { ButtonHTMLAttributes, ReactElement } from \"react\";\nimport { button, variant } from \"./Button.css\";\n\nexport type ButtonVariant = keyof typeof variant;\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: ButtonVariant;\n}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n function Button({ variant: variantProp = \"primary\", className, ...rest }, ref): ReactElement {\n const classes = [button, variant[variantProp], className].filter(Boolean).join(\" \");\n\n return <button ref={ref} className={classes} {...rest} />;\n }\n);\n","import 'src/components/Button/Button.css.ts.vanilla.css?source=#H4sIAAAAAAAAA52UTXObMBCG7_4VHOOZKGM7_UjJqT10csmpuXuEtMA2oKXSYkw7-e8diREGl6SeXACtnnc_JW6-tcxk9tnw2nfbvv212yR_Vkmi0TWV7NMETYUGRF7B8X6VJLLCwghkqF2aKDAM1pt_to4x74Uiw2B4ulXIJk0O0l4J4RqpQBzdfr977uWuK9YeyMmwyGWNVR_BYMpI95Hcbk6ow98wA73hUY_ohxPaARYlz-DB9Aga23qU3AVJKLT8V-LtD8H85B-jSgZVRlaDFVZqbF3UDStRj1nRlO1QcxnRqS3S3ZR23FdwRgdbpPspragimyZspXGNtGDYbzZSazSFYDobhhubUK6nYEbMVF_GVpDznDzVjTPSTnu7jKrWOl9AQxhPUKgFGcmIxlIDlvs0yaR6Liy1Rg8lX88acJ2MxqNwpdTUnXnSrZX-I2ZT08z8XbrToNX6TMxY-3Ly1qgFHyAdmmJUQ1BTy_4cpYkhA_erl9XN8u1Lc1KtEwd0mFUQ7uKphrF1YSUCGuMc1m951ehkVoEODmOPDbGQVUUd6JBiIxX63m5uPk59HaRFaXjfWKyl7aPT7ZDc2RxiimEhRsmQ46dhxK9yT3Acu_5lfUkOaUkHsKkhvhprXF-e2INXx4ifL4soFeMB3h3ya5DHmHeLMR0oMnoSdXeBf9faXKrR83bhrzDFh51I69cmw5OR3F6Y7BtD-U86P9jS6erAYryiJH83h1i3rzTm7P_3rsLmgd570hbG8vIXi1T-enoHAAA';\nexport var button = 'Button_button__w1yuq20';\nexport var variant = {primary:'Button_variant_primary__w1yuq21',secondary:'Button_variant_secondary__w1yuq22',ghost:'Button_variant_ghost__w1yuq23'};","import { forwardRef } from \"react\";\nimport type { LabelHTMLAttributes, ReactElement } from \"react\";\nimport { label, requiredMark } from \"./Label.css\";\n\nexport interface LabelProps extends LabelHTMLAttributes<HTMLLabelElement> {\n required?: boolean;\n disabled?: boolean;\n}\n\nexport const Label = forwardRef<HTMLLabelElement, LabelProps>(function Label(\n { required, disabled, className, children, ...rest },\n ref\n): ReactElement {\n const classes = [label, className].filter(Boolean).join(\" \");\n\n return (\n <label ref={ref} className={classes} data-disabled={disabled || undefined} {...rest}>\n {children}\n {required ? (\n <span className={requiredMark} aria-hidden=\"true\">\n *\n </span>\n ) : null}\n </label>\n );\n});\n","import 'src/components/Label/Label.css.ts.vanilla.css?source=LkxhYmVsX2xhYmVsX183a244djEwIHsKICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGdhcDogdmFyKC0tc3BhY2UteHNfXzJreWEyd2cpOwogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWJvZHlfXzJreWEydzEwKTsKICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZVNtX18ya3lhMncxMyk7CiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0TWVkaXVtX18ya3lhMncxOCk7CiAgbGluZS1oZWlnaHQ6IHZhcigtLWZvbnQtbGluZUhlaWdodE5vcm1hbF9fMmt5YTJ3MWIpOwogIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0X18ya3lhMnczKTsKfQouTGFiZWxfbGFiZWxfXzdrbjh2MTBbZGF0YS1kaXNhYmxlZF0gewogIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0TXV0ZWRfXzJreWEydzQpOwogIGN1cnNvcjogbm90LWFsbG93ZWQ7Cn0KLkxhYmVsX3JlcXVpcmVkTWFya19fN2tuOHYxMSB7CiAgY29sb3I6IHZhcigtLWNvbG9yLWRhbmdlcl9fMmt5YTJ3Yyk7Cn0';\nexport var label = 'Label_label__7kn8v10';\nexport var requiredMark = 'Label_requiredMark__7kn8v11';","import { forwardRef } from \"react\";\nimport type { InputHTMLAttributes, ReactElement } from \"react\";\nimport { input } from \"./Input.css\";\n\nexport interface InputProps extends InputHTMLAttributes<HTMLInputElement> {\n invalid?: boolean;\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(function Input(\n { invalid, className, ...rest },\n ref\n): ReactElement {\n const classes = [input, className].filter(Boolean).join(\" \");\n\n return <input ref={ref} className={classes} aria-invalid={invalid || undefined} {...rest} />;\n});\n","import 'src/components/Input/Input.css.ts.vanilla.css?source=#H4sIAAAAAAAAA5WTTW_bMAyG7_kVvgxtgClIum4HF7sO7aG77DgMAS3JMRFZNCTKqTfsvw9WKsdO87FegpB--IqfiyfbBF5j_F0X0HFol9mfWZYp9I2BLs8KQ3L7MMuyHSqu8my1XH7ozZIsixJqNF2eteBuhYiuglS3Xt9tO7jbrZbzAfX4W0_A3vGsBvQ-ogatFpXGTcUTuPc_Rvd3cjWYIayIYZIMuRQQDcH6hRP1KUIFyO3GUbBqSvrgSpB6kNzD5JR2woHC4BO_t0Q9ZE1j9rVBe3TsS_RuTHvujD6ioy_R3Zg-UeD-S6JVpBtQCu1GMDUJ9g1ILXydwGoCFsRM9f-xRpc8JQ-NwAnpxvM7jVLgfqZ5Zsnq3sEOrEdGsqJx1GjH_fKNqv-YFfQifAWKdkcBKjjo_6Qna5q4v4EfVmEl50fBjHWfcxmsPKGhwaPdDNF6_jD7O1ucOps8bwxIXZFR2sUbOrOVz4H10I37C4IVtdrllvg2V-ihMFrNo_C1pfjBjg5JX8q5JBm8aNFjYfQV7cZhDW447i-v-5lmMsw7WiIqJ7a9kEIqbd-y4Hz_riUWYAzttIrb0oDEfiGWi89nlX6CQxBoWzCovt6wC_rm15WaFNjN4Yjk-TRPir-rfW-felf3_gH172IjqwUAAA';\nexport var input = 'Input_input__baytuv0';","import { forwardRef } from \"react\";\nimport type { ReactElement, TextareaHTMLAttributes } from \"react\";\nimport { textarea } from \"./Textarea.css\";\n\nexport interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {\n invalid?: boolean;\n}\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea(\n { invalid, className, ...rest },\n ref\n): ReactElement {\n const classes = [textarea, className].filter(Boolean).join(\" \");\n\n return <textarea ref={ref} className={classes} aria-invalid={invalid || undefined} {...rest} />;\n});\n","import 'src/components/Textarea/Textarea.css.ts.vanilla.css?source=#H4sIAAAAAAAAA5WUwW7bMAyG73kKX4Y2wBQkXdeDi12HXbrLdhuGgJboWIgsGpTsxBv27oPkynGyrG5v0u-PpEj98uo7Hj0wwtanxXbTSnbFcZ39XmSZ0q4x0OdZYUjuHxdZdtDKV3m2Wa_fhW2trahQ7yqfZw9YB4nR6V-YZx2y1xJM0EqyXpRQa9PnWQd8K0SUClL9dnu37-HusFkvR_Q5wwkMwpMa0fuIGm1xrD6Bg_4lyl-JazBjWBHDJBniFBA3IrSfqA8RKkDud0ytVeeka7kEiWPKASZWyIJB6dYlftiJejw1TdnnOQ7oVEv0YUo73xu8oKOW6H5KX2lw-JJoFekGlNJ2Jzw1CXYNSBSuTmB1BhbkPdWvYw2W_pw8DUKfkTy9v-sotT7caZ5ZshgEz2Cd9pqsaJgaZB88Oun-fVbQUbgKFB0uAlTLEBapZE1n8mdwoxU2cnkR7HUdzly2Vl7JgeC03Y3RuHxc_FmsXnhked4YkFiRUcjxxf3HnE-tx3Eo9_N5K-qQc0v-NlfaQWFQLWP-OYt880ynFl7RQUmydaLTThcGZ0o0rGvg8cU_PJs2XdRogrgTMXNiu_mTpEaHObbsQnlLXoAxdEAVndSA1MEs69XH6c9qMNbLBX4AaxDadmC0-nTjucWbnzMdK7C707uTs01crfGmGf9b8U0j_gtyGWjqEwYAAA';\nexport var textarea = 'Textarea_textarea__1ucrsbx0';","import { forwardRef } from \"react\";\nimport type { ReactElement, SelectHTMLAttributes } from \"react\";\nimport { chevron, select, wrapper } from \"./Select.css\";\n\nexport interface SelectProps extends SelectHTMLAttributes<HTMLSelectElement> {\n invalid?: boolean;\n}\n\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(function Select(\n { invalid, className, children, ...rest },\n ref\n): ReactElement {\n const classes = [select, className].filter(Boolean).join(\" \");\n\n return (\n <span className={wrapper}>\n <select ref={ref} className={classes} aria-invalid={invalid || undefined} {...rest}>\n {children}\n </select>\n <span className={chevron} aria-hidden=\"true\" />\n </span>\n );\n});\n","import 'src/components/Select/Select.css.ts.vanilla.css?source=#H4sIAAAAAAAAA52VwW7bMAyG73kKXYo2wBQkWTtgLnYddukuPQ3DENASEwuRRUGSnWRD332wFCt2FiTbTrbojxQp6qdnr6hRhNXOgbXoVquFUAgf9Zz9mjBmyaugyBTMoYagWnyeMCaVtxoOBVNGK4O81CS23YedkqEq2GI-v3uevE1mx9g-PfrQixg6B7nszViXDzgwAgtmyMSd12QCX0Ot9KFgLbgHzqOpJHlYrZbbAyx3i_k0o179xBHYGV5kRh8jGouoUG2qMII7-5do_kquBp3dyugmSJPrHeKCB9yHnnofoRLEduOoMXJM-satQWAOmWByEh13IFXjez6teJ2zpiF7PLSEDm09vRvSPhw0ntHR1tOHIX2hwPSlp2WkLUipzIYHsj3sLQjkvu7BagSWFALVf8dqXIcxeToINSLdsH8J3eeWbSNKTeh6erpPonG-K9GSMgFdZwoOTLr03Dqy6EJ3RwcH8o6VtOe-Akm7MwfZOEhySVnUNDJ_Bp9vx0JMz5yDqrsy1o0RF2IgeGU22Run1wRWVNSiKwyFh0IqD6VGOY2qu9XZ1-DotM2NXdYkGs9b5VWp8UZ461QNLov0w_Ge9QeZ-xZXPEbu2fZ6Fn2BMYG-oYYCB61phzI23oJQXSPns6drwb6DU8CVaUEr-ek-uAbvf9yoTILZnCQhriZ7Mf4_neOfu_3fMYoKW0cmp7Y8m_dQetJNiCqJwn5KU_mCys4FeRxJ8-69n6pxcVQZxxZN8CcVRhGsydVFetUQ8NsDXz7dDadRmgSPds88aSUTasGhCcPZmfa7haWSMnQ-w1-agLmq7ifx9hs-k1QxKAcAAA';\nexport var chevron = 'Select_chevron__1ciea9l2';\nexport var select = 'Select_select__1ciea9l1';\nexport var wrapper = 'Select_wrapper__1ciea9l0';","import { forwardRef, useEffect, useRef } from \"react\";\nimport type { InputHTMLAttributes, ReactElement, ReactNode } from \"react\";\nimport { box, hiddenInput, wrapper } from \"./Checkbox.css\";\n\nexport interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"type\"> {\n label?: ReactNode;\n indeterminate?: boolean;\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(function Checkbox(\n { label, className, indeterminate = false, ...rest },\n ref\n): ReactElement {\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.indeterminate = indeterminate;\n }\n }, [indeterminate]);\n\n return (\n <label className={[wrapper, className].filter(Boolean).join(\" \")}>\n <input\n ref={(el) => {\n inputRef.current = el;\n if (typeof ref === \"function\") {\n ref(el);\n } else if (ref) {\n ref.current = el;\n }\n }}\n type=\"checkbox\"\n className={hiddenInput}\n {...rest}\n />\n <span className={box} aria-hidden=\"true\" />\n {label}\n </label>\n );\n});\n","import 'src/components/Checkbox/Checkbox.css.ts.vanilla.css?source=#H4sIAAAAAAAAA8VVTY-bMBC951f41o26XgW623bpsVKlHnpq75HBA0xjbMsektBq_3tlwASiZD9OPYA04-d5M-M39t3XGopdbo7bgxPWgttuP23SR5Fu2N8VYxK9VaLLGGqFGnip4PhlxZhQWGmOBI3PWAGawAV3JWzG9sLdcO6tKID7ZrtNd51ID_U6AEqjiZeiQdVFYO_KjewiMtmcoB7_wAIYHD-noMmHHloYZVyE9QYnOFJEjaDW-YCyBod0n1Z3V4vPauFvUNuWMole5Arkum_IFaofLYGMfPcLPm2IC6XMAeSSs0YpQX8PJJE36Tms8UhodMZE7o1qCUK8A0qqM5Z8tv0J1IBVTSe7Ea5CnbFNMIwVBVI3WjET1DU4pGUW4RvZ0zN2B0oQ7nv2Nwrhd-sJy44XRhNomi-9UEcIzH3tUO_G9HPjJDjuhMTWx9YP1kxfej3DjhwDdO6L6MMc7alTcIbufRHdzdEXFDCsRLQc0KLYVc60Wi6xvnWlKKbQSQ8mJ_TQdW6dseDC2Z0iDFtvFxkEKzRKSHM4CyFbJ4YTHIgbs3B_E34ajaQ45ydsUFe8bHVxIQYIj7qadsP6upiyTJQEbpyaUQbv3s0k8LBUwONgjkXmhsg0GUvtkXmjUC66aB02wnW_ZlP-OD8kN4R84-a-DaVxTcacIUFwc_8goVoPCyo4eGKPtyz81-eD9rQaLowidAMke8-embJr8hhzi3l9fEF5F-CvTWN-PlMZyWk_agkErkEtCP53Ma9LZl7SqLGzWyadayzczRqeG9bXKCXGuNTD0hSt53v0mKuXejhN8_SC9hbvY0T2_awn8WF6Pu5JoXcP15-lfy9kUuAHCAAA';\nexport var box = 'Checkbox_box__7029a22';\nexport var hiddenInput = 'Checkbox_hiddenInput__7029a21';\nexport var wrapper = 'Checkbox_wrapper__7029a20';","import { forwardRef } from \"react\";\nimport type { InputHTMLAttributes, ReactElement, ReactNode } from \"react\";\nimport { circle, hiddenInput, wrapper } from \"./Radio.css\";\n\nexport interface RadioProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"type\"> {\n label?: ReactNode;\n}\n\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>(function Radio(\n { label, className, ...rest },\n ref\n): ReactElement {\n return (\n <label className={[wrapper, className].filter(Boolean).join(\" \")}>\n <input ref={ref} type=\"radio\" className={hiddenInput} {...rest} />\n <span className={circle} aria-hidden=\"true\" />\n {label}\n </label>\n );\n});\n","import 'src/components/Radio/Radio.css.ts.vanilla.css?source=#H4sIAAAAAAAAA5WUTW_bMAyG7_kVurXBpiBOt2Lz7gN22GXbPWAk2uYiS5ok23WH_vfBH3IcI2nWI6lHfEmK1OYHSDL7xoG16Pb7_Pn4UNdb9nfFmCRvFbQpI61II88UPn1ZMQaKcs0pYOlTJlAHdJ07B5uyGtw9596CQO7L_X53bGHXFOsOyIwOPIOSVBvB3nUwso1ksj2hnp7xDOwcP6egyUOPCqOMi1hv8IBPIVIjVDnfUdbQkO7LanO58rQAf0_aViGV5OGgUK77blzR-V4FlFHsw5mYNoGDUqZBORMsSErU3zqFKJr0AtZ4CmR0yuDgjaoCdsEakqFIWfLJ9r0vkPIinOwSXE46ZdvOMBYEhXa0YhqkC3QUZikIckJhVN8t1B0qCFT36m8cgd-VD5S1XBgdUIf50Y06usDcF470cUz_YJxExx1Iqnzs-2DxrFIq9vzPekaPKgM890W6mdM-tAoXdO-LdDunLwzAcBJpOdAgjrkzlZbnrK9cBmIKnfRwcKCHvnPrjEXXvd4pwnD1_VkGndW1CqRpFiFk5WB4w0G4NGfur-CntUjEUj9QSTrnWaXFhRgInnQ-3cb19XFKU8gCunFpxkG4u5sNwWIGRvOND36lzdZRCa79NfsCPq-Xy_GyGjZcFCiOKNk79spm3FCKKo83ZuUC_r9pzDs6lZGc7mdGVJ7X5Omg8EYx0-xMf3Vv8T5GTK6eJRd_wdfjnrq7-Xj9D_wH_c1eTW4GAAA';\nexport var circle = 'Radio_circle__gzk3vv2';\nexport var hiddenInput = 'Radio_hiddenInput__gzk3vv1';\nexport var wrapper = 'Radio_wrapper__gzk3vv0';","import { forwardRef } from \"react\";\nimport type { InputHTMLAttributes, ReactElement, ReactNode } from \"react\";\nimport { hiddenInput, track, wrapper } from \"./Switch.css\";\n\nexport interface SwitchProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"type\"> {\n label?: ReactNode;\n}\n\nexport const Switch = forwardRef<HTMLInputElement, SwitchProps>(function Switch(\n { label, className, ...rest },\n ref\n): ReactElement {\n return (\n <label className={[wrapper, className].filter(Boolean).join(\" \")}>\n <input ref={ref} type=\"checkbox\" role=\"switch\" className={hiddenInput} {...rest} />\n <span className={track} aria-hidden=\"true\" />\n {label}\n </label>\n );\n});\n","import 'src/components/Switch/Switch.css.ts.vanilla.css?source=#H4sIAAAAAAAAA8WUPW_bMBCG9_wKbonRMrCcJgOzF8jQKUs34yyepIMpkiUpy2rR_15QEmXZiOJk6ninh_ee7uv-taWQV9vWgbXottusO3a-6Nbszw1jkrxV0AlGWpFGXig8Pt8wBopKzSlg7QXLUQd00V2CFewA7o5zbyFH7uvtdrPvYNNWqwgURgdeQE2qS2Dv2hnZJTJbn1BPv_EMjI7XKWj20KO5UcYlrDd4wGNI1Ag1zkfKGhrS_Xtzv_TvogJ_R9o2QUjysFMoV309FpR-NAFlkvt2JqdN4KCUaVHOJSuSEvVLlJhks17CGk-BjBYMdt6oJmAM15IMlWAPT7avf4VUVkGwzXqwa3AlacHW0TAWcgrdaKVESFfoKMyTCA7y_SS_uZB3qCDQoZf_5BxcyTa-5r5ypPdjkjvjJDruQFLjU30HixeNUqm2v1YzelQZ4Lkv0e2c9qFTeEH3vkR3c_qNRg9fEi0HGvJ96Uyj5TnrG1dAPoXOejg40ENxuXXGoos9OkUYnn49yyBasVQgTXsRQjYOhkYNwrU5c38HPy1All_qB6pJl7xodP5GDARPupxe4-qdoRECioBu3A4dUAfBbm-fFyc5GCtYNgyCwiJMxtjO7GJokv3JEVloTNzWF31A56fmPI59T3WeLlhvzU6YX-5i7yyMq_9zk4ablVeY71GyL-y9TV8qkXVUg5vO8dOVtXgD_3Ae8-GZSjhWU0HAn3ex-7OIhckbzw_kaafw2v8tdbQPkvI9zKKnW38l8Om-3j8un_p_dafqTFkHAAA';\nexport var hiddenInput = 'Switch_hiddenInput__1yxysfy1';\nexport var track = 'Switch_track__1yxysfy2';\nexport var wrapper = 'Switch_wrapper__1yxysfy0';","import { forwardRef } from \"react\";\nimport type { HTMLAttributes, ReactElement } from \"react\";\nimport { card, elevation } from \"./Card.css\";\n\nexport type CardElevation = keyof typeof elevation;\n\nexport interface CardProps extends HTMLAttributes<HTMLDivElement> {\n elevation?: CardElevation;\n}\n\nexport const Card = forwardRef<HTMLDivElement, CardProps>(function Card(\n { elevation: elevationProp = \"flat\", className, ...rest },\n ref\n): ReactElement {\n const classes = [card, elevation[elevationProp], className].filter(Boolean).join(\" \");\n\n return <div ref={ref} className={classes} {...rest} />;\n});\n","import 'src/components/Card/Card.css.ts.vanilla.css?source=LkNhcmRfY2FyZF9fbXY3dTJnMCB7CiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3Itc3VyZmFjZV9fMmt5YTJ3MSk7CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnX18ya3lhMndwKTsKICBib3JkZXItd2lkdGg6IHZhcigtLWJvcmRlci13aWR0aF9fMmt5YTJ3dyk7CiAgYm9yZGVyLXN0eWxlOiB2YXIoLS1ib3JkZXItc3R5bGVfXzJreWEyd3kpOwogIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItYm9yZGVyX18ya3lhMndkKTsKICBwYWRkaW5nOiB2YXIoLS1zcGFjZS1sZ19fMmt5YTJ3aik7Cn0KLkNhcmRfZWxldmF0aW9uX2ZsYXRfX212N3UyZzEgewogIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1ub25lX18ya3lhMndyKTsKfQouQ2FyZF9lbGV2YXRpb25fcmFpc2VkX19tdjd1MmcyIHsKICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctc21fXzJreWEyd3MpOwogIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXN1cmZhY2VSYWlzZWRfXzJreWEydzIpOwp9Ci5DYXJkX2VsZXZhdGlvbl9vdmVybGF5X19tdjd1MmczIHsKICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGdfXzJreWEyd3UpOwogIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXN1cmZhY2VSYWlzZWRfXzJreWEydzIpOwp9';\nexport var card = 'Card_card__mv7u2g0';\nexport var elevation = {flat:'Card_elevation_flat__mv7u2g1',raised:'Card_elevation_raised__mv7u2g2',overlay:'Card_elevation_overlay__mv7u2g3'};","import { forwardRef } from \"react\";\nimport type { HTMLAttributes, ReactElement } from \"react\";\nimport { align, direction, gap, justify, stack, wrapStyle } from \"./Stack.css\";\n\nexport type StackDirection = keyof typeof direction;\nexport type StackAlign = keyof typeof align;\nexport type StackJustify = keyof typeof justify;\nexport type StackGap = keyof typeof gap;\n\nexport interface StackProps extends HTMLAttributes<HTMLDivElement> {\n direction?: StackDirection;\n align?: StackAlign;\n justify?: StackJustify;\n gap?: StackGap;\n wrap?: boolean;\n}\n\nexport const Stack = forwardRef<HTMLDivElement, StackProps>(function Stack(\n {\n direction: directionProp = \"column\",\n align: alignProp = \"stretch\",\n justify: justifyProp = \"start\",\n gap: gapProp = \"md\",\n wrap = false,\n className,\n ...rest\n },\n ref\n): ReactElement {\n const classes = [\n stack,\n direction[directionProp],\n align[alignProp],\n justify[justifyProp],\n gap[gapProp],\n wrap ? wrapStyle : null,\n className\n ]\n .filter(Boolean)\n .join(\" \");\n\n return <div ref={ref} className={classes} {...rest} />;\n});\n","import 'src/components/Stack/Stack.css.ts.vanilla.css?source=#H4sIAAAAAAAAA33TS5KDIBAG4L2nYDmzIDU6b3OMHMAi2DEkiBaQUWsqd58C0sYHmQ2b_r-Gvyw3O8v4uTD-LAZh0zR9Ib8JIaUwrWRDTg4S-m1yTTYhWgoN3IpGFbrpkKSeuCQd5znRTReFvJGXWqHNojZkJpxJUSn3UG1RvnrpB1RYqE14LPWhFeWgLGi0b2sbAisHqkT0_uBCUGXkpRosPyL9WNNbYiJPF2PFYZi3_PTyNqK8URaUfdAUF8y7fsU3rPqinjT-_ufyeWvEe7AdwPh1WXyBaRkHestOtlSsLXqDeO9xxdqc_DD9RGlgLpCdB5Z11fPCmhotj1sXCPa4tPXYuoxbFwhWLK2s0ELcukCwp6XtJdrDg74S7Xlpszuu4ji7aznVnWbtzg4S0B_v_6Gb5cSd2-T6B5d3UXojBAAA';\nexport var align = {start:'Stack_align_start__yit1113',center:'Stack_align_center__yit1114',end:'Stack_align_end__yit1115',stretch:'Stack_align_stretch__yit1116'};\nexport var direction = {row:'Stack_direction_row__yit1111',column:'Stack_direction_column__yit1112'};\nexport var gap = {xs:'Stack_gap_xs__yit111b',sm:'Stack_gap_sm__yit111c',md:'Stack_gap_md__yit111d',lg:'Stack_gap_lg__yit111e',xl:'Stack_gap_xl__yit111f','2xl':'Stack_gap_2xl__yit111g'};\nexport var justify = {start:'Stack_justify_start__yit1117',center:'Stack_justify_center__yit1118',end:'Stack_justify_end__yit1119',between:'Stack_justify_between__yit111a'};\nexport var stack = 'Stack_stack__yit1110';\nexport var wrapStyle = 'Stack_wrapStyle__yit111h';","import { forwardRef } from \"react\";\nimport type { HTMLAttributes, ReactElement } from \"react\";\nimport { base, orientation } from \"./Divider.css\";\n\nexport type DividerOrientation = keyof typeof orientation;\n\nexport interface DividerProps extends HTMLAttributes<HTMLHRElement> {\n orientation?: DividerOrientation;\n}\n\nexport const Divider = forwardRef<HTMLHRElement, DividerProps>(function Divider(\n { orientation: orientationProp = \"horizontal\", className, ...rest },\n ref\n): ReactElement {\n const classes = [base, orientation[orientationProp], className].filter(Boolean).join(\" \");\n\n return (\n <hr\n ref={ref}\n className={classes}\n aria-orientation={orientationProp}\n {...rest}\n />\n );\n});\n","import 'src/components/Divider/Divider.css.ts.vanilla.css?source=LkRpdmlkZXJfYmFzZV9fMXFqZmFjNTAgewogIGJvcmRlcjogbm9uZTsKICBiYWNrZ3JvdW5kOiBub25lOwogIG1hcmdpbjogMDsKICBmbGV4LXNocmluazogMDsKfQouRGl2aWRlcl9vcmllbnRhdGlvbl9ob3Jpem9udGFsX18xcWpmYWM1MSB7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiB2YXIoLS1ib3JkZXItd2lkdGhfXzJreWEyd3cpOwogIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJvcmRlcl9fMmt5YTJ3ZCk7Cn0KLkRpdmlkZXJfb3JpZW50YXRpb25fdmVydGljYWxfXzFxamZhYzUyIHsKICB3aWR0aDogdmFyKC0tYm9yZGVyLXdpZHRoX18ya3lhMnd3KTsKICBhbGlnbi1zZWxmOiBzdHJldGNoOwogIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJvcmRlcl9fMmt5YTJ3ZCk7Cn0';\nexport var base = 'Divider_base__1qjfac50';\nexport var orientation = {horizontal:'Divider_orientation_horizontal__1qjfac51',vertical:'Divider_orientation_vertical__1qjfac52'};","import { cloneElement, isValidElement, useRef, useState } from \"react\";\nimport type { ReactElement, ReactNode, Ref } from \"react\";\nimport {\n FloatingArrow,\n FloatingPortal,\n arrow,\n autoUpdate,\n flip,\n offset,\n shift,\n useDismiss,\n useFloating,\n useFocus,\n useHover,\n useInteractions,\n useMergeRefs,\n useRole\n} from \"@floating-ui/react\";\nimport type { Placement } from \"@floating-ui/react\";\nimport { vars } from \"@vesture/tokens\";\nimport { tooltip } from \"./Tooltip.css\";\n\nexport interface TooltipProps {\n content: ReactNode;\n placement?: Placement;\n children: ReactElement<Record<string, unknown>>;\n}\n\nexport function Tooltip({ content, placement = \"top\", children }: TooltipProps): ReactElement {\n const [open, setOpen] = useState(false);\n const arrowRef = useRef<SVGSVGElement>(null);\n\n const { refs, floatingStyles, context } = useFloating({\n open,\n onOpenChange: setOpen,\n placement,\n whileElementsMounted: autoUpdate,\n middleware: [offset(8), flip(), shift({ padding: 8 }), arrow({ element: arrowRef })]\n });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n useHover(context, { move: false }),\n useFocus(context),\n useRole(context, { role: \"tooltip\" }),\n useDismiss(context)\n ]);\n\n const childRef = useMergeRefs([\n refs.setReference,\n (children as unknown as { ref?: Ref<unknown> }).ref ?? null\n ]);\n\n if (!isValidElement(children)) {\n return children;\n }\n\n return (\n <>\n {cloneElement(children, getReferenceProps({ ref: childRef, ...children.props }))}\n {open ? (\n <FloatingPortal>\n <div\n ref={refs.setFloating}\n className={tooltip}\n style={floatingStyles}\n {...getFloatingProps()}\n >\n {content}\n <FloatingArrow ref={arrowRef} context={context} fill={vars.color.text} />\n </div>\n </FloatingPortal>\n ) : null}\n </>\n );\n}\n","import 'src/components/Tooltip/Tooltip.css.ts.vanilla.css?source=LlRvb2x0aXBfdG9vbHRpcF9fZm9hd2wxMCB7CiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItdGV4dF9fMmt5YTJ3Myk7CiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHRJbnZlcnNlX18ya3lhMnc1KTsKICBmb250LWZhbWlseTogdmFyKC0tZm9udC1ib2R5X18ya3lhMncxMCk7CiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemVYc19fMmt5YTJ3MTIpOwogIGxpbmUtaGVpZ2h0OiB2YXIoLS1mb250LWxpbmVIZWlnaHROb3JtYWxfXzJreWEydzFiKTsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc21fXzJreWEyd24pOwogIHBhZGRpbmctdG9wOiB2YXIoLS1zcGFjZS14c19fMmt5YTJ3Zyk7CiAgcGFkZGluZy1ib3R0b206IHZhcigtLXNwYWNlLXhzX18ya3lhMndnKTsKICBwYWRkaW5nLWxlZnQ6IHZhcigtLXNwYWNlLXNtX18ya3lhMndoKTsKICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zcGFjZS1zbV9fMmt5YTJ3aCk7CiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LW1kX18ya3lhMnd0KTsKICBtYXgtd2lkdGg6IDI2MHB4OwogIHotaW5kZXg6IDEyMDA7Cn0';\nexport var tooltip = 'Tooltip_tooltip__foawl10';","import { cloneElement, isValidElement, useState } from \"react\";\nimport type { ReactElement, ReactNode, Ref } from \"react\";\nimport {\n FloatingFocusManager,\n FloatingPortal,\n autoUpdate,\n flip,\n offset,\n shift,\n useClick,\n useDismiss,\n useFloating,\n useInteractions,\n useMergeRefs,\n useRole\n} from \"@floating-ui/react\";\nimport type { Placement } from \"@floating-ui/react\";\nimport { popover } from \"./Popover.css\";\n\nexport interface PopoverProps {\n content: ReactNode;\n placement?: Placement;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n children: ReactElement<Record<string, unknown>>;\n}\n\nexport function Popover({\n content,\n placement = \"bottom-start\",\n open: controlledOpen,\n onOpenChange,\n children\n}: PopoverProps): ReactElement {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(false);\n const open = controlledOpen ?? uncontrolledOpen;\n const setOpen = onOpenChange ?? setUncontrolledOpen;\n\n const { refs, floatingStyles, context } = useFloating({\n open,\n onOpenChange: setOpen,\n placement,\n whileElementsMounted: autoUpdate,\n middleware: [offset(8), flip(), shift({ padding: 8 })]\n });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n useClick(context),\n useDismiss(context),\n useRole(context, { role: \"dialog\" })\n ]);\n\n const childRef = useMergeRefs([\n refs.setReference,\n (children as unknown as { ref?: Ref<unknown> }).ref ?? null\n ]);\n\n if (!isValidElement(children)) {\n return children;\n }\n\n return (\n <>\n {cloneElement(children, getReferenceProps({ ref: childRef, ...children.props }))}\n {open ? (\n <FloatingPortal>\n <FloatingFocusManager context={context} modal={false}>\n <div ref={refs.setFloating} className={popover} style={floatingStyles} {...getFloatingProps()}>\n {content}\n </div>\n </FloatingFocusManager>\n </FloatingPortal>\n ) : null}\n </>\n );\n}\n","import 'src/components/Popover/Popover.css.ts.vanilla.css?source=LlBvcG92ZXJfcG9wb3Zlcl9fa2U1ZWw3MCB7CiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3Itc3VyZmFjZVJhaXNlZF9fMmt5YTJ3Mik7CiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHRfXzJreWEydzMpOwogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWJvZHlfXzJreWEydzEwKTsKICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZVNtX18ya3lhMncxMyk7CiAgbGluZS1oZWlnaHQ6IHZhcigtLWZvbnQtbGluZUhlaWdodE5vcm1hbF9fMmt5YTJ3MWIpOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZ19fMmt5YTJ3cCk7CiAgYm9yZGVyLXdpZHRoOiB2YXIoLS1ib3JkZXItd2lkdGhfXzJreWEyd3cpOwogIGJvcmRlci1zdHlsZTogdmFyKC0tYm9yZGVyLXN0eWxlX18ya3lhMnd5KTsKICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWJvcmRlcl9fMmt5YTJ3ZCk7CiAgcGFkZGluZzogdmFyKC0tc3BhY2UtbWRfXzJreWEyd2kpOwogIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1sZ19fMmt5YTJ3dSk7CiAgbWluLXdpZHRoOiAyMDBweDsKICBtYXgtd2lkdGg6IDMyMHB4OwogIG91dGxpbmU6IG5vbmU7CiAgei1pbmRleDogMTEwMDsKfQ';\nexport var popover = 'Popover_popover__ke5el70';","import { useId } from \"react\";\nimport type { ReactElement, ReactNode } from \"react\";\nimport {\n FloatingFocusManager,\n FloatingOverlay,\n FloatingPortal,\n useDismiss,\n useFloating,\n useInteractions,\n useRole\n} from \"@floating-ui/react\";\nimport { closeButton, heading, modal, overlay } from \"./Modal.css\";\n\nexport interface ModalProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n title?: ReactNode;\n children?: ReactNode;\n}\n\nexport function Modal({ open, onOpenChange, title, children }: ModalProps): ReactElement | null {\n const { refs, context } = useFloating({ open, onOpenChange });\n const { getFloatingProps } = useInteractions([useDismiss(context), useRole(context)]);\n const titleId = useId();\n\n if (!open) {\n return null;\n }\n\n return (\n <FloatingPortal>\n <FloatingOverlay className={overlay} lockScroll>\n <FloatingFocusManager context={context}>\n <div\n ref={refs.setFloating}\n className={modal}\n aria-labelledby={title ? titleId : undefined}\n {...getFloatingProps()}\n >\n <button\n type=\"button\"\n className={closeButton}\n aria-label=\"Close\"\n onClick={() => onOpenChange(false)}\n >\n ✕\n </button>\n {title ? (\n <h2 id={titleId} className={heading}>\n {title}\n </h2>\n ) : null}\n {children}\n </div>\n </FloatingFocusManager>\n </FloatingOverlay>\n </FloatingPortal>\n );\n}\n","import 'src/components/Modal/Modal.css.ts.vanilla.css?source=#H4sIAAAAAAAAA52UzY7aMBDH7zyFL5UWqUYJ7Kq73tuey6UvgJx4knhxPKntQELVd6_sxCGgAlUlFDGTXzwf_xmvtii42uEBjOL9bpfCz28vHBLya0FIg1Y6iZqRQnYg3heESG3BMZL4_0LaRvGekUJB5x1cyVJT6aC2jOSgHRjv_mytk0VPc9QOtJu_yni-Lw22WjBiyow_JV_J-Fs9Lz3RcCGkLhk5cPNEqW14DlSVu9163_P18TNAJyq1gI6RdJMk74vfi9VQVh2esaj0qigDijt5gOtEhkg5KjTUtqbgOfzg0oKIQdchaAAuaQedi9AmQAVqRwteS9VHNLgyFH0k0ySgGRoBhhouZGsjPFizgpuR7aituMDj1JhgzcD2dvs6FaF9gI5SuIqRNEm-eLPmHR1dz69J00VfBbKsHCNvyaHyPj80hcIj7RnhrcPga52SGhjRqGGmRAXc5zFpsQ5a3OrOOFkxy9O5lVae4AL1ju9T0enLGT2O6c7gwfWBapIyfVsO5ZlS6nGuB4Nm6BzWl52rpw_lclZdrtDCR-sc6qnCzdW08cyial2YNofNvXMJMfPU_45M2ye17zj9_yUctV6_DlJHmaN9by7PSeFshqP6l2vlDNe24Qa0u7M-29adF224AvLWWI82KGPKt2dhe5Z2-Do0J9aUPhKNVX6qg3QProQpzL9eBg8CF5i3lh6klZmCIYFbSx7QePTBH_0H_iXAa8cFAAA';\nexport var closeButton = 'Modal_closeButton__1eq75ae3';\nexport var heading = 'Modal_heading__1eq75ae2';\nexport var modal = 'Modal_modal__1eq75ae1';\nexport var overlay = 'Modal_overlay__1eq75ae0';","import { createContext, useCallback, useMemo, useState } from \"react\";\nimport type { ReactElement, ReactNode } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { accent, body, closeButton, description, title, toast, viewport } from \"./Toast.css\";\n\nexport type ToastVariant = keyof typeof accent;\n\nexport interface ToastOptions {\n title: string;\n description?: string;\n variant?: ToastVariant;\n duration?: number;\n}\n\ninterface ToastItem extends ToastOptions {\n id: number;\n}\n\nexport interface ToastContextValue {\n toast: (options: ToastOptions) => number;\n dismiss: (id: number) => void;\n}\n\nexport const ToastContext = createContext<ToastContextValue | null>(null);\n\nconst DEFAULT_DURATION = 5000;\n\nexport function ToastProvider({ children }: { children?: ReactNode }): ReactElement {\n const [toasts, setToasts] = useState<ToastItem[]>([]);\n\n const dismiss = useCallback((id: number) => {\n setToasts((current) => current.filter((item) => item.id !== id));\n }, []);\n\n const pushToast = useCallback(\n (options: ToastOptions) => {\n const id = Date.now() + Math.random();\n setToasts((current) => [...current, { id, ...options }]);\n const duration = options.duration ?? DEFAULT_DURATION;\n if (duration > 0) {\n setTimeout(() => dismiss(id), duration);\n }\n return id;\n },\n [dismiss]\n );\n\n const value = useMemo<ToastContextValue>(() => ({ toast: pushToast, dismiss }), [pushToast, dismiss]);\n\n return (\n <ToastContext.Provider value={value}>\n {children}\n {createPortal(\n <div className={viewport} role=\"region\" aria-label=\"Notifications\">\n {toasts.map((item) => (\n <div key={item.id} className={`${toast} ${accent[item.variant ?? \"default\"]}`} role=\"status\">\n <div className={body}>\n <p className={title}>{item.title}</p>\n {item.description ? <p className={description}>{item.description}</p> : null}\n </div>\n <button\n type=\"button\"\n className={closeButton}\n aria-label=\"Dismiss\"\n onClick={() => dismiss(item.id)}\n >\n ✕\n </button>\n </div>\n ))}\n </div>,\n document.body\n )}\n </ToastContext.Provider>\n );\n}\n","import 'src/components/Toast/Toast.css.ts.vanilla.css?source=#H4sIAAAAAAAAA6WUsXLbMAyGdz8Fx3hgTrLTNlG2Tl3Soenuo0lIRkOROpKy5PT67j2Spkw7tuu7LtIR-vEJAAHc_9TMutUWYei0cavVqNpyZAX5PSOk0xYdalWRGkcQzzNC1to53VZky8wdpbZjHKhsVqvF244thl9zrzHYbNx1iUDbSbarSC1h9Ab_pgIN8PhDrmXfKv-lYd0xy7aJtQmsd4pKwFiR8qEovGFA4TYVWS6KLrBbNtK9jTPJ78qi2A6EkuWiG-fPsz-z-1gEF577CpShAh_iZBIbRdFBa6ORWseMuynQNeNvjdG9EknHtdSG2t7UjMMPhhZEclkElyA4VjsYXRItg6jWytGatSh3SRpMay12SVkWB6nFdzgSesPrFGwZqRIV0A3kdxnE3v4tmL9r0zI5ua1jktoIMNQwgb1NjvFE2yk7nWv3dxOluS2ph1xt3U7CiTrYknqXq88UMH5JapGrJdTucjivzmg1NfIYHDsmBKrm-OIPeeKePlK7YUIPky6csrHo80ZknINyKwE16-XUkYvQkXmkNyV3SrU952Btoi5voU4-EcvOYAdmFPrqROzDLdjJJ2LX52rAVOPzidRPt1CTS4TyowlH5_skwj4HWOjp4WObR9MLCOwPk_E4j_vENKgqUmRkAZYb7PzySvwvgX9hgl96d5j1h1NsOlCnT3bKOF1CkycWRz3-9zHmJcNKDCxUqanzkLnUFr72zh1CfsrqWxGlFZzuLWeYsh0zoNyV_XQmO94b66WdRuXA_M8yKo8G718pVRu9BXPtLvJteh1Va95bukWLawn7Wl0Y7SBN5K0n_wU0qE2BawcAAA';\nexport var accent = {'default':'Toast_accent_default__xnm1xa2',success:'Toast_accent_success__xnm1xa3',warning:'Toast_accent_warning__xnm1xa4',danger:'Toast_accent_danger__xnm1xa5'};\nexport var body = 'Toast_body__xnm1xa8';\nexport var closeButton = 'Toast_closeButton__xnm1xa9';\nexport var description = 'Toast_description__xnm1xa7';\nexport var title = 'Toast_title__xnm1xa6';\nexport var toast = 'Toast_toast__xnm1xa1';\nexport var viewport = 'Toast_viewport__xnm1xa0';","import { useContext } from \"react\";\nimport { ToastContext } from \"./ToastProvider\";\n\nexport function useToast() {\n const context = useContext(ToastContext);\n if (!context) {\n throw new Error(\"useToast must be used within a ToastProvider\");\n }\n return context;\n}\n","import { cloneElement, isValidElement, useRef, useState } from \"react\";\nimport type { ReactElement, ReactNode, Ref } from \"react\";\nimport {\n FloatingFocusManager,\n FloatingPortal,\n autoUpdate,\n flip,\n offset,\n shift,\n useClick,\n useDismiss,\n useFloating,\n useInteractions,\n useListNavigation,\n useMergeRefs,\n useRole\n} from \"@floating-ui/react\";\nimport type { Placement } from \"@floating-ui/react\";\nimport { menu } from \"./DropdownMenu.css\";\nimport { MenuContext } from \"./MenuContext\";\n\nexport interface DropdownMenuProps {\n trigger: ReactElement<Record<string, unknown>>;\n placement?: Placement;\n children?: ReactNode;\n}\n\nexport function DropdownMenu({\n trigger,\n placement = \"bottom-start\",\n children\n}: DropdownMenuProps): ReactElement {\n const [open, setOpen] = useState(false);\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n const elementsRef = useRef<Array<HTMLElement | null>>([]);\n\n const { refs, floatingStyles, context } = useFloating({\n open,\n onOpenChange: setOpen,\n placement,\n whileElementsMounted: autoUpdate,\n middleware: [offset(4), flip(), shift({ padding: 8 })]\n });\n\n const { getReferenceProps, getFloatingProps, getItemProps } = useInteractions([\n useClick(context),\n useDismiss(context),\n useRole(context, { role: \"menu\" }),\n useListNavigation(context, {\n listRef: elementsRef,\n activeIndex,\n onNavigate: setActiveIndex,\n loop: true\n })\n ]);\n\n const closeMenu = () => setOpen(false);\n\n const triggerRef = useMergeRefs([\n refs.setReference,\n (trigger as unknown as { ref?: Ref<unknown> }).ref ?? null\n ]);\n\n return (\n <>\n {cloneElement(trigger, getReferenceProps({ ref: triggerRef, ...trigger.props }))}\n {open ? (\n <FloatingPortal>\n <FloatingFocusManager context={context} modal={false}>\n <div ref={refs.setFloating} className={menu} style={floatingStyles} {...getFloatingProps()}>\n <MenuContext.Provider value={{ activeIndex, getItemProps, closeMenu }}>\n {(children ? (Array.isArray(children) ? children : [children]) : []).map((child, index) =>\n isValidElement(child)\n ? cloneElement(\n child as ReactElement<{ index?: number; elementsRef?: typeof elementsRef }>,\n { key: index, index, elementsRef }\n )\n : child\n )}\n </MenuContext.Provider>\n </div>\n </FloatingFocusManager>\n </FloatingPortal>\n ) : null}\n </>\n );\n}\n","import 'src/components/DropdownMenu/DropdownMenu.css.ts.vanilla.css?source=#H4sIAAAAAAAAA42TPW_cMAyG9_sVWoo0gwL70gKFD92yZknHojjQFu0TThYFfcR2ivz3QrrKH0XSy2JD1CNSfF_q7sGSETToR9Th2MfPsVQdiK9jwX7vGBPSGQVTxVqF42HH0p8LabHxknTFGlKh13GnA1OxvUlUDc25sxS0qNgz2M-cN6TIchdsCw0-gXQojsf9eYL9sL9NR8gKtNyCkMHlU5cVV11mzZodpPCnjK5jmR7WtPOTwn_oFMv0tKbTfbeXv-xkWiTagBBSdxl0Bhrko8tQ9zflyN0JBA0zl1arvkICe6lzU-W34iIlBa-kxopp0hgDL1xqgWPFyrIoDrvX3d3GROmxn00stybWippzzJGLFMWnuPQ4eg5KdrpiClu_6LCUXVvqLWhnwKJO6BtaxYy5t_vUW0va8xZ6qaaMplBNYspkWSyoky-4AWPgRz-j91enxs2wXnvFPZmtXwt42oA1eU_9x9go28dIK7vTFbQJ1kVFDUnt0b4xBv93_acADxwaL5_x-423AW9-pUm48i5ncW-vVaiEdFArFCntOwPwGPzyyr9sOtMUB07RgOKwe_0DcpFTKYcEAAA';\nexport var item = 'DropdownMenu_item__1lgad5x1';\nexport var menu = 'DropdownMenu_menu__1lgad5x0';","import { createContext, useContext } from \"react\";\nimport type { useInteractions } from \"@floating-ui/react\";\n\nexport interface MenuContextValue {\n activeIndex: number | null;\n getItemProps: ReturnType<typeof useInteractions>[\"getItemProps\"];\n closeMenu: () => void;\n}\n\nexport const MenuContext = createContext<MenuContextValue | null>(null);\n\nexport function useMenuContext(): MenuContextValue {\n const context = useContext(MenuContext);\n if (!context) {\n throw new Error(\"DropdownMenu.Item must be used within a DropdownMenu\");\n }\n return context;\n}\n","import { useMergeRefs } from \"@floating-ui/react\";\nimport type { ButtonHTMLAttributes, MutableRefObject, ReactElement } from \"react\";\nimport { item } from \"./DropdownMenu.css\";\nimport { useMenuContext } from \"./MenuContext\";\n\nexport interface DropdownMenuItemProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n onSelect?: () => void;\n}\n\ninterface InternalProps {\n index?: number;\n elementsRef?: MutableRefObject<Array<HTMLElement | null>>;\n}\n\nexport function DropdownMenuItem({\n onSelect,\n disabled,\n className,\n index,\n elementsRef,\n ...rest\n}: DropdownMenuItemProps & InternalProps): ReactElement {\n const { activeIndex, getItemProps, closeMenu } = useMenuContext();\n const isActive = activeIndex === index;\n\n const itemRef = useMergeRefs([\n (node: HTMLButtonElement | null) => {\n if (elementsRef && typeof index === \"number\") {\n elementsRef.current[index] = node;\n }\n }\n ]);\n\n return (\n <button\n ref={itemRef}\n type=\"button\"\n role=\"menuitem\"\n disabled={disabled}\n data-active={isActive || undefined}\n className={[item, className].filter(Boolean).join(\" \")}\n tabIndex={isActive ? 0 : -1}\n {...getItemProps({\n onClick: () => {\n onSelect?.();\n closeMenu();\n },\n ...rest\n })}\n />\n );\n}\n","import { DropdownMenu as DropdownMenuBase } from \"./DropdownMenu\";\nimport { DropdownMenuItem } from \"./DropdownMenuItem\";\n\nexport const DropdownMenu = Object.assign(DropdownMenuBase, { Item: DropdownMenuItem });\nexport type { DropdownMenuProps } from \"./DropdownMenu\";\nexport { DropdownMenuItem } from \"./DropdownMenuItem\";\nexport type { DropdownMenuItemProps } from \"./DropdownMenuItem\";\n","import { Children, Fragment, cloneElement, isValidElement } from \"react\";\nimport type { HTMLAttributes, ReactElement, ReactNode } from \"react\";\nimport { list, separator } from \"./Breadcrumbs.css\";\n\nexport interface BreadcrumbsProps extends Omit<HTMLAttributes<HTMLElement>, \"children\"> {\n separator?: ReactNode;\n children?: ReactNode;\n}\n\nexport function Breadcrumbs({\n separator: separatorNode = \"/\",\n children,\n ...rest\n}: BreadcrumbsProps): ReactElement {\n const items = Children.toArray(children).filter(isValidElement);\n\n return (\n <nav aria-label=\"Breadcrumb\" {...rest}>\n <ol className={list}>\n {items.map((child, index) => (\n <Fragment key={index}>\n {cloneElement(child as ReactElement<{ isLast?: boolean }>, {\n isLast: index === items.length - 1\n })}\n {index < items.length - 1 ? (\n <li className={separator} aria-hidden=\"true\">\n {separatorNode}\n </li>\n ) : null}\n </Fragment>\n ))}\n </ol>\n </nav>\n );\n}\n","import 'src/components/Breadcrumbs/Breadcrumbs.css.ts.vanilla.css?source=LkJyZWFkY3J1bWJzX2xpc3RfX3JsNWlteDAgewogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBmbGV4LXdyYXA6IHdyYXA7CiAgZ2FwOiB2YXIoLS1zcGFjZS14c19fMmt5YTJ3Zyk7CiAgbWFyZ2luOiAwOwogIHBhZGRpbmc6IDA7CiAgbGlzdC1zdHlsZTogbm9uZTsKICBmb250LWZhbWlseTogdmFyKC0tZm9udC1ib2R5X18ya3lhMncxMCk7CiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemVTbV9fMmt5YTJ3MTMpOwp9Ci5CcmVhZGNydW1ic19pdGVtX19ybDVpbXgxIHsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZ2FwOiB2YXIoLS1zcGFjZS14c19fMmt5YTJ3Zyk7Cn0KLkJyZWFkY3J1bWJzX2xpbmtfX3JsNWlteDIgewogIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0TXV0ZWRfXzJreWEydzQpOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc21fXzJreWEyd24pOwp9Ci5CcmVhZGNydW1ic19saW5rX19ybDVpbXgyOmhvdmVyIHsKICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dF9fMmt5YTJ3Myk7CiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Cn0KLkJyZWFkY3J1bWJzX2xpbmtfX3JsNWlteDI6Zm9jdXMtdmlzaWJsZSB7CiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWZvY3VzX18ya3lhMnd2KTsKfQouQnJlYWRjcnVtYnNfY3VycmVudF9fcmw1aW14MyB7CiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHRfXzJreWEydzMpOwogIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodE1lZGl1bV9fMmt5YTJ3MTgpOwp9Ci5CcmVhZGNydW1ic19zZXBhcmF0b3JfX3JsNWlteDQgewogIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0TXV0ZWRfXzJreWEydzQpOwp9';\nexport var current = 'Breadcrumbs_current__rl5imx3';\nexport var item = 'Breadcrumbs_item__rl5imx1';\nexport var link = 'Breadcrumbs_link__rl5imx2';\nexport var list = 'Breadcrumbs_list__rl5imx0';\nexport var separator = 'Breadcrumbs_separator__rl5imx4';","import type { AnchorHTMLAttributes, ReactElement, ReactNode } from \"react\";\nimport { current, item, link } from \"./Breadcrumbs.css\";\n\nexport interface BreadcrumbsItemProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n children: ReactNode;\n}\n\ninterface InternalProps {\n isLast?: boolean;\n}\n\nexport function BreadcrumbsItem({\n href,\n children,\n isLast,\n className,\n ...rest\n}: BreadcrumbsItemProps & InternalProps): ReactElement {\n return (\n <li className={item}>\n {isLast || !href ? (\n <span className={[current, className].filter(Boolean).join(\" \")} aria-current={isLast ? \"page\" : undefined}>\n {children}\n </span>\n ) : (\n <a href={href} className={[link, className].filter(Boolean).join(\" \")} {...rest}>\n {children}\n </a>\n )}\n </li>\n );\n}\n","import { Breadcrumbs as BreadcrumbsBase } from \"./Breadcrumbs\";\nimport { BreadcrumbsItem } from \"./BreadcrumbsItem\";\n\nexport const Breadcrumbs = Object.assign(BreadcrumbsBase, { Item: BreadcrumbsItem });\nexport type { BreadcrumbsProps } from \"./Breadcrumbs\";\nexport { BreadcrumbsItem } from \"./BreadcrumbsItem\";\nexport type { BreadcrumbsItemProps } from \"./BreadcrumbsItem\";\n","export type PageRangeItem = number | \"ellipsis\";\n\nfunction range(start: number, end: number): number[] {\n const output: number[] = [];\n for (let i = start; i <= end; i++) {\n output.push(i);\n }\n return output;\n}\n\nexport function getPageRange(page: number, totalPages: number, siblingCount = 1): PageRangeItem[] {\n const totalPageNumbers = siblingCount * 2 + 5;\n\n if (totalPageNumbers >= totalPages) {\n return range(1, totalPages);\n }\n\n const leftSiblingIndex = Math.max(page - siblingCount, 1);\n const rightSiblingIndex = Math.min(page + siblingCount, totalPages);\n\n const shouldShowLeftEllipsis = leftSiblingIndex > 2;\n const shouldShowRightEllipsis = rightSiblingIndex < totalPages - 1;\n\n if (!shouldShowLeftEllipsis && shouldShowRightEllipsis) {\n const leftItemCount = 3 + siblingCount * 2;\n return [...range(1, leftItemCount), \"ellipsis\", totalPages];\n }\n\n if (shouldShowLeftEllipsis && !shouldShowRightEllipsis) {\n const rightItemCount = 3 + siblingCount * 2;\n return [1, \"ellipsis\", ...range(totalPages - rightItemCount + 1, totalPages)];\n }\n\n return [1, \"ellipsis\", ...range(leftSiblingIndex, rightSiblingIndex), \"ellipsis\", totalPages];\n}\n","import 'src/components/Pagination/Pagination.css.ts.vanilla.css?source=#H4sIAAAAAAAAA71TsW7bMBDd_RXcEg8MHKcIEAZdsgco0G5FIZzJE3UNRRLkybZa5N8LSaZio4jjKeMj3717d4-8-QaWPDAFXznKXFVW9_VDuxJ_F0IYytFBr0TtcP-4EAIcWS-Jsc1KaPSMaTi2EJXYQrqWMkfQKPe5qtYvPax3djkQWkiWvBKrAUQwhrw9oKGrzNw7VMIHj4-L18XNkasIFp865uCLt9tTb-QdeZQfWPzdZaa6lzp4Rs_HVy15uSPDjRJ393EUaZBsw2_4YFk6rPn8pIWZJoFz1E1IBlOZumCZwFCXS-mEZGtKbZhqQb_YFDpvlOAEPkdI6Hm40sGFVMpHIBn3XOrvxvo6eJY1tOT6Qh2PNsH0hXm7eqNm-oMnxOHgeztTJ1XdpTz0joGm5X4YpWrCFpPyga-VoQwbh2Y55ns84fEsuUs1aJw7Ly_pUgfdZbmlTBuHk3zYy9yACbs5pBHJkVrUtxepF-Oj8Dvrf-4Y5wy_nGzLB5bgXNihuaDbT0gEUndpyPvr1cC4-nV2YzFRC2mO9X75zis58H4cPZaH_-ZH5yhmysXP-vM_46Ubfv0HFg56Gt0EAAA';\nexport var ellipsis = 'Pagination_ellipsis__gcyf9m2';\nexport var list = 'Pagination_list__gcyf9m0';\nexport var pageButton = 'Pagination_pageButton__gcyf9m1';","import type { ReactElement } from \"react\";\nimport { getPageRange } from \"./getPageRange\";\nimport { ellipsis, list, pageButton } from \"./Pagination.css\";\n\nexport interface PaginationProps {\n page: number;\n totalPages: number;\n onPageChange: (page: number) => void;\n siblingCount?: number;\n}\n\nexport function Pagination({\n page,\n totalPages,\n onPageChange,\n siblingCount = 1\n}: PaginationProps): ReactElement {\n const items = getPageRange(page, totalPages, siblingCount);\n\n return (\n <nav aria-label=\"Pagination\">\n <ul className={list}>\n <li>\n <button\n type=\"button\"\n className={pageButton}\n onClick={() => onPageChange(page - 1)}\n disabled={page <= 1}\n aria-label=\"Previous page\"\n >\n ‹\n </button>\n </li>\n {items.map((item, index) =>\n item === \"ellipsis\" ? (\n <li key={`ellipsis-${index}`} className={ellipsis} aria-hidden=\"true\">\n …\n </li>\n ) : (\n <li key={item}>\n <button\n type=\"button\"\n className={pageButton}\n onClick={() => onPageChange(item)}\n aria-current={item === page ? \"page\" : undefined}\n aria-label={`Page ${item}`}\n >\n {item}\n </button>\n </li>\n )\n )}\n <li>\n <button\n type=\"button\"\n className={pageButton}\n onClick={() => onPageChange(page + 1)}\n disabled={page >= totalPages}\n aria-label=\"Next page\"\n >\n ›\n </button>\n </li>\n </ul>\n </nav>\n );\n}\n","import { useState } from \"react\";\nimport type { HTMLAttributes, ReactElement } from \"react\";\nimport { root } from \"./Accordion.css\";\nimport { AccordionContext } from \"./AccordionContext\";\n\ntype CommonDivProps = Omit<HTMLAttributes<HTMLDivElement>, \"onChange\" | \"defaultValue\">;\n\ninterface AccordionSingleProps extends CommonDivProps {\n type: \"single\";\n value?: string | null;\n defaultValue?: string | null;\n onValueChange?: (value: string | null) => void;\n}\n\ninterface AccordionMultipleProps extends CommonDivProps {\n type: \"multiple\";\n value?: string[];\n defaultValue?: string[];\n onValueChange?: (value: string[]) => void;\n}\n\nexport type AccordionProps = AccordionSingleProps | AccordionMultipleProps;\n\nexport function Accordion(props: AccordionProps): ReactElement {\n const { type, children, value, defaultValue, onValueChange, className, ...rest } = props;\n const isControlled = value !== undefined;\n\n const [internalValues, setInternalValues] = useState<string[]>(() => {\n if (type === \"single\") {\n return props.defaultValue ? [props.defaultValue] : [];\n }\n return props.defaultValue ?? [];\n });\n\n const currentValues: string[] = isControlled\n ? type === \"single\"\n ? props.value\n ? [props.value]\n : []\n : (props.value ?? [])\n : internalValues;\n\n const toggle = (itemValue: string) => {\n const next =\n type === \"single\"\n ? currentValues.includes(itemValue)\n ? []\n : [itemValue]\n : currentValues.includes(itemValue)\n ? currentValues.filter((v) => v !== itemValue)\n : [...currentValues, itemValue];\n\n if (!isControlled) {\n setInternalValues(next);\n }\n\n if (type === \"single\") {\n props.onValueChange?.(next[0] ?? null);\n } else {\n props.onValueChange?.(next);\n }\n };\n\n const isOpen = (itemValue: string) => currentValues.includes(itemValue);\n\n return (\n <div className={[root, className].filter(Boolean).join(\" \")} {...rest}>\n <AccordionContext.Provider value={{ isOpen, toggle }}>{children}</AccordionContext.Provider>\n </div>\n );\n}\n","import 'src/components/Accordion/Accordion.css.ts.vanilla.css?source=#H4sIAAAAAAAAA61VsW7bMBDd_RVciiQDA8txi0BBC7RD0Q7p0A4disKgyZN0DUWq5MmOGvTfC1GULMt2mgCZhDu9e-J7vDtdvpfSOoXWrJy1tFolVZb_lss5e5gxptBXWjQpyzTc38xYeHKFDiShNSmTVtelad-srVPguBMKa5-yjXDnPEZc56vV4q4Ri211McJuUVHRQ8e5Hr0doz01GibokOvRzRgtrbauR4cg1vRoFdB2Ay7TdpuyApUCczP7O7vcWYIE5WBJEiyJ_GtLZMtnSohFz1MSi54k6JHDp1p44rJArU7rmE8oyGGet5-ILIvjXRGrk_n8VRsKjbnh7ed9yiQYAtemf9WeMGu4tIbAUMp8JSTwNdAWIPRQLqpeYffOl726YmRJyow1EGIh73Jna6P2nfG1y4Qc_ExC8REHCe6pB10FUGYN8UyUqJseGlJrq5qBbr6DevwDe8A2casG6HIH3QLmBe2Bu9QtKKwHpcl1KKmEUmjyfT_KgRg7SbXzrabKYu9yK4mHG0iZhoz-d6Np0c5A1xKPu_lVoIfhAItpux0yZ1bWnm_Q41pDbLp77guh2oGLukLEA7Sn3hx0srRm4L0KTGER-cKhuQttyxg5YTy2a4lXzlbgqEm7ZGZdOUGo2olug3XHKO1e-qPwQ18k8mJSTFiiyXlWG3mEA4RHMyy8BIKYH0qQ4LYC8_aMXA1nP9k79rjC4egpc5YEwXlyPVeQT82J4_Tdiaoa2b_cH9XcoQoj5lBxgrLSgoA7u_Upm2fupIGH-Oc5-cW6UujBDfUCXj5B-xG7H06IT1rxx0g_GzOifB0IDn8XjJVoeBFHe7o_I9WHsDwi05vA9KTxjiBOtopNfmKH3da0m8zlyy2yb7ut1K1HjQYGtSNwm_8U0pMLX7dX9g-NzEz2ZQgAAA';\nexport var contentBody = 'Accordion_contentBody__1pfgqc46';\nexport var contentInner = 'Accordion_contentInner__1pfgqc45';\nexport var contentWrapper = 'Accordion_contentWrapper__1pfgqc44';\nexport var icon = 'Accordion_icon__1pfgqc43';\nexport var item = 'Accordion_item__1pfgqc41';\nexport var root = 'Accordion_root__1pfgqc40';\nexport var trigger = 'Accordion_trigger__1pfgqc42';","import { createContext, useContext } from \"react\";\n\nexport interface AccordionContextValue {\n isOpen: (value: string) => boolean;\n toggle: (value: string) => void;\n}\n\nexport const AccordionContext = createContext<AccordionContextValue | null>(null);\n\nexport function useAccordionContext(): AccordionContextValue {\n const context = useContext(AccordionContext);\n if (!context) {\n throw new Error(\"Accordion.Item must be used within an Accordion\");\n }\n return context;\n}\n\nexport const AccordionItemContext = createContext<string | null>(null);\n\nexport function useAccordionItemContext(): string {\n const context = useContext(AccordionItemContext);\n if (context === null) {\n throw new Error(\"Accordion.Trigger and Accordion.Content must be used within an Accordion.Item\");\n }\n return context;\n}\n","import type { HTMLAttributes, ReactElement } from \"react\";\nimport { contentBody, contentInner, contentWrapper } from \"./Accordion.css\";\nimport { useAccordionContext, useAccordionItemContext } from \"./AccordionContext\";\n\nexport type AccordionContentProps = HTMLAttributes<HTMLDivElement>;\n\nexport function AccordionContent({ children, className, ...rest }: AccordionContentProps): ReactElement {\n const { isOpen } = useAccordionContext();\n const value = useAccordionItemContext();\n const open = isOpen(value);\n\n return (\n <div\n id={`accordion-panel-${value}`}\n role=\"region\"\n aria-labelledby={`accordion-trigger-${value}`}\n className={[contentWrapper, className].filter(Boolean).join(\" \")}\n data-open={open}\n {...rest}\n >\n <div className={contentInner}>\n <div className={contentBody}>{children}</div>\n </div>\n </div>\n );\n}\n","import type { ReactElement, ReactNode } from \"react\";\nimport { item } from \"./Accordion.css\";\nimport { AccordionItemContext } from \"./AccordionContext\";\n\nexport interface AccordionItemProps {\n value: string;\n children?: ReactNode;\n}\n\nexport function AccordionItem({ value, children }: AccordionItemProps): ReactElement {\n return (\n <div className={item}>\n <AccordionItemContext.Provider value={value}>{children}</AccordionItemContext.Provider>\n </div>\n );\n}\n","import type { ButtonHTMLAttributes, ReactElement } from \"react\";\nimport { icon, trigger } from \"./Accordion.css\";\nimport { useAccordionContext, useAccordionItemContext } from \"./AccordionContext\";\n\nexport type AccordionTriggerProps = ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport function AccordionTrigger({ children, className, ...rest }: AccordionTriggerProps): ReactElement {\n const { isOpen, toggle } = useAccordionContext();\n const value = useAccordionItemContext();\n const open = isOpen(value);\n\n return (\n <h3 style={{ margin: 0 }}>\n <button\n type=\"button\"\n id={`accordion-trigger-${value}`}\n className={[trigger, className].filter(Boolean).join(\" \")}\n aria-expanded={open}\n aria-controls={`accordion-panel-${value}`}\n data-open={open}\n onClick={() => toggle(value)}\n {...rest}\n >\n {children}\n <span className={icon} aria-hidden=\"true\">\n ▾\n </span>\n </button>\n </h3>\n );\n}\n","import { Accordion as AccordionBase } from \"./Accordion\";\nimport { AccordionContent } from \"./AccordionContent\";\nimport { AccordionItem } from \"./AccordionItem\";\nimport { AccordionTrigger } from \"./AccordionTrigger\";\n\nexport const Accordion = Object.assign(AccordionBase, {\n Item: AccordionItem,\n Trigger: AccordionTrigger,\n Content: AccordionContent\n});\nexport type { AccordionProps } from \"./Accordion\";\nexport { AccordionItem } from \"./AccordionItem\";\nexport type { AccordionItemProps } from \"./AccordionItem\";\nexport { AccordionTrigger } from \"./AccordionTrigger\";\nexport type { AccordionTriggerProps } from \"./AccordionTrigger\";\nexport { AccordionContent } from \"./AccordionContent\";\nexport type { AccordionContentProps } from \"./AccordionContent\";\n","import { useState } from \"react\";\nimport type { HTMLAttributes, ReactElement } from \"react\";\nimport { TabsContext } from \"./TabsContext\";\n\nexport interface TabsProps extends Omit<HTMLAttributes<HTMLDivElement>, \"defaultValue\" | \"onChange\"> {\n defaultValue?: string;\n value?: string;\n onValueChange?: (value: string) => void;\n}\n\nexport function Tabs({\n defaultValue,\n value: controlledValue,\n onValueChange,\n children,\n ...rest\n}: TabsProps): ReactElement {\n const [internalValue, setInternalValue] = useState(defaultValue ?? \"\");\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : internalValue;\n\n const setValue = (next: string) => {\n if (!isControlled) {\n setInternalValue(next);\n }\n onValueChange?.(next);\n };\n\n return (\n <div {...rest}>\n <TabsContext.Provider value={{ value, setValue }}>{children}</TabsContext.Provider>\n </div>\n );\n}\n","import { createContext, useContext } from \"react\";\n\nexport interface TabsContextValue {\n value: string;\n setValue: (value: string) => void;\n}\n\nexport const TabsContext = createContext<TabsContextValue | null>(null);\n\nexport function useTabsContext(): TabsContextValue {\n const context = useContext(TabsContext);\n if (!context) {\n throw new Error(\"Tabs.List, Tabs.Trigger, and Tabs.Panel must be used within a Tabs component\");\n }\n return context;\n}\n","import 'src/components/Tabs/Tabs.css.ts.vanilla.css?source=#H4sIAAAAAAAAA7VUwY6bMBC95yt8y-bgVZKtqspRP2FP21tVoQEPYMXYrj1AaLX_XmFiEqI0UrXqjZl5bzxv_MzzN8hDplWgLNsdu7wtfm7Z7xVjUgWnYRCs1Hg6rBirwAnWgX_iPDgokJ9Clu2PA-z7ajMCcuslep5bItvwXkmqE-FcirlE6u-QAg0ab0gxl0jDHVJhtfWJFIMzNZHk5rB6Xz1HpeRVVY2ls9hdFOtsUKSsEcyjBlIdXo4RzFgzxVAcK29bIwUjDyY48GhoLN2ZgfBEry2hTGN8irOX1hAvoVF6SPiYyq0cEnK3vUCD-oUL4Jh4a2boywXao6pqWoCn1CtK1V4oXyLFgZTKVMs7DTOq3iwKzSxDRXbR-jAqdlYZQv9gwaK2Hfq45r9sKXV-eXRPorRFG3ingso1xna5PfFQg7T9LCJGPEJT1-7aMh6kakOCT9GVaPNogu_gFfCAGgtC-XVNvsX1jw8Lu99WCChpXpshNCTYen1YmBXyYHVL0ZwaSxJsO376yQbbSff4RgTjOxdfcX32yH4Kry19Pb3zqgE_G_LzlQAHBvU8_n56P5OXONmbf8Stbf6P-_9h_TfTf8hV738A4dyWLD0FAAA';\nexport var list = 'Tabs_list__1kvbucq0';\nexport var panel = 'Tabs_panel__1kvbucq2';\nexport var trigger = 'Tabs_trigger__1kvbucq1';","import type { HTMLAttributes, KeyboardEvent, ReactElement } from \"react\";\nimport { list } from \"./Tabs.css\";\n\nexport type TabsListProps = HTMLAttributes<HTMLDivElement>;\n\nexport function TabsList({ children, className, onKeyDown, ...rest }: TabsListProps): ReactElement {\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented) {\n return;\n }\n\n const tabs = Array.from(event.currentTarget.querySelectorAll<HTMLElement>('[role=\"tab\"]'));\n if (tabs.length === 0) {\n return;\n }\n\n const currentIndex = tabs.indexOf(document.activeElement as HTMLElement);\n\n let nextIndex: number | null = null;\n if (event.key === \"ArrowRight\" || event.key === \"ArrowDown\") {\n nextIndex = currentIndex < 0 ? 0 : (currentIndex + 1) % tabs.length;\n } else if (event.key === \"ArrowLeft\" || event.key === \"ArrowUp\") {\n nextIndex = currentIndex < 0 ? tabs.length - 1 : (currentIndex - 1 + tabs.length) % tabs.length;\n } else if (event.key === \"Home\") {\n nextIndex = 0;\n } else if (event.key === \"End\") {\n nextIndex = tabs.length - 1;\n }\n\n if (nextIndex !== null) {\n event.preventDefault();\n tabs[nextIndex]?.focus();\n tabs[nextIndex]?.click();\n }\n };\n\n return (\n <div role=\"tablist\" className={[list, className].filter(Boolean).join(\" \")} onKeyDown={handleKeyDown} {...rest}>\n {children}\n </div>\n );\n}\n","import type { HTMLAttributes, ReactElement } from \"react\";\nimport { panel } from \"./Tabs.css\";\nimport { useTabsContext } from \"./TabsContext\";\n\nexport interface TabsPanelProps extends HTMLAttributes<HTMLDivElement> {\n value: string;\n}\n\nexport function TabsPanel({ value, children, className, ...rest }: TabsPanelProps): ReactElement | null {\n const { value: selected } = useTabsContext();\n if (selected !== value) {\n return null;\n }\n\n return (\n <div\n role=\"tabpanel\"\n id={`panel-${value}`}\n aria-labelledby={`tab-${value}`}\n tabIndex={0}\n className={[panel, className].filter(Boolean).join(\" \")}\n {...rest}\n >\n {children}\n </div>\n );\n}\n","import type { ButtonHTMLAttributes, ReactElement } from \"react\";\nimport { trigger } from \"./Tabs.css\";\nimport { useTabsContext } from \"./TabsContext\";\n\nexport interface TabsTriggerProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n value: string;\n}\n\nexport function TabsTrigger({ value, children, className, onClick, ...rest }: TabsTriggerProps): ReactElement {\n const { value: selected, setValue } = useTabsContext();\n const isSelected = selected === value;\n\n return (\n <button\n type=\"button\"\n role=\"tab\"\n id={`tab-${value}`}\n aria-selected={isSelected}\n aria-controls={`panel-${value}`}\n tabIndex={isSelected ? 0 : -1}\n className={[trigger, className].filter(Boolean).join(\" \")}\n onClick={(event) => {\n setValue(value);\n onClick?.(event);\n }}\n {...rest}\n >\n {children}\n </button>\n );\n}\n","import { Tabs as TabsBase } from \"./Tabs\";\nimport { TabsList } from \"./TabsList\";\nimport { TabsPanel } from \"./TabsPanel\";\nimport { TabsTrigger } from \"./TabsTrigger\";\n\nexport const Tabs = Object.assign(TabsBase, {\n List: TabsList,\n Trigger: TabsTrigger,\n Panel: TabsPanel\n});\nexport type { TabsProps } from \"./Tabs\";\nexport { TabsList } from \"./TabsList\";\nexport type { TabsListProps } from \"./TabsList\";\nexport { TabsTrigger } from \"./TabsTrigger\";\nexport type { TabsTriggerProps } from \"./TabsTrigger\";\nexport { TabsPanel } from \"./TabsPanel\";\nexport type { TabsPanelProps } from \"./TabsPanel\";\n","import { forwardRef } from \"react\";\nimport type { HTMLAttributes, ReactElement } from \"react\";\nimport { badge, variant } from \"./Badge.css\";\n\nexport type BadgeVariant = keyof typeof variant;\n\nexport interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {\n variant?: BadgeVariant;\n}\n\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(function Badge(\n { variant: variantProp = \"default\", className, ...rest },\n ref\n): ReactElement {\n const classes = [badge, variant[variantProp], className].filter(Boolean).join(\" \");\n\n return <span ref={ref} className={classes} {...rest} />;\n});\n","import 'src/components/Badge/Badge.css.ts.vanilla.css?source=#H4sIAAAAAAAAA6WRPW_DIBCGd_8KxnYgit0Pte7WqUu3Dt2sszkTFAwUcByn6n-vjGOSKGmiKguSXz93z8HNXoFxLMpwFmlj0lRv5uQ7IYQJZyT0ORFKCoW0lrh-SQgBKbiiwmPjclKh8miHmIPJyQrsDaXOQIV07YoiW_aQdfx2AEptGVpqgYnWTej4RetWyon-CrQBxoTi1GuTk8ys97NSe6-bo1hi7Q9HcM3UdHHQ1Aq-uIDWWnlaQyNkP4EhKjXrJzKd71AnNngADsFnfII026Ed7uv3ondkoo1zpE-hJLz94rhkyN9C_DEcsQpCVbcQHser5UTpzoJ5SX6S2bjuFVgByhcMa2ilj4tPw-JLqJbc6laxSVhpqS11ra2hwmgKovDrkPO4juPc3Z7QGisasH3UZme1kR47Pv6l3XIfe_bnU3bXVhU6F-13Fy69pceOcK29A6uE4tF-f9Ye6bFjea2dgeJoo_zhrHyCx37Vf92_f1gANVsEAAA';\nexport var badge = 'Badge_badge__1mp11oz0';\nexport var variant = {'default':'Badge_variant_default__1mp11oz1',primary:'Badge_variant_primary__1mp11oz2',success:'Badge_variant_success__1mp11oz3',warning:'Badge_variant_warning__1mp11oz4',danger:'Badge_variant_danger__1mp11oz5'};","import { forwardRef, useState } from \"react\";\nimport type { HTMLAttributes, ReactElement } from \"react\";\nimport { avatar, image, size, statusColor, statusDot, wrapper } from \"./Avatar.css\";\n\nexport type AvatarSize = keyof typeof size;\nexport type AvatarStatus = keyof typeof statusColor;\n\nexport interface AvatarProps extends HTMLAttributes<HTMLDivElement> {\n src?: string;\n name?: string;\n size?: AvatarSize;\n status?: AvatarStatus;\n}\n\nfunction getInitials(name: string): string {\n const parts = name.trim().split(/\\s+/);\n const first = parts[0]?.[0] ?? \"\";\n const last = parts.length > 1 ? (parts[parts.length - 1]?.[0] ?? \"\") : \"\";\n return (first + last).toUpperCase();\n}\n\nexport const Avatar = forwardRef<HTMLDivElement, AvatarProps>(function Avatar(\n { src, name, size: sizeProp = \"md\", status, className, ...rest },\n ref\n): ReactElement {\n const [imageFailed, setImageFailed] = useState(false);\n const showImage = src && !imageFailed;\n\n return (\n <div ref={ref} className={[wrapper, className].filter(Boolean).join(\" \")} {...rest}>\n <div className={[avatar, size[sizeProp]].join(\" \")}>\n {showImage ? (\n <img\n src={src}\n alt={name ?? \"\"}\n className={image}\n onError={() => setImageFailed(true)}\n />\n ) : name ? (\n <span aria-hidden=\"true\">{getInitials(name)}</span>\n ) : null}\n </div>\n {status ? (\n <span\n className={[statusDot, statusColor[status]].join(\" \")}\n role=\"status\"\n aria-label={status}\n />\n ) : null}\n </div>\n );\n});\n","import 'src/components/Avatar/Avatar.css.ts.vanilla.css?source=#H4sIAAAAAAAAA5VUwXKbMBC9-yt06UxzIIOJnbrk1GmvvjSX3pgFLVixkKi0GJNO_r2DQBic4JmcxK7evre77Or-xwkITNIYqCo0SVJE29ciDdm_FWOVtoKEVjEzKIHECZ9WjHFhKwltzISSQmGQSzx3_u4M7MEIdYxZ-LR6W90P5NAfA_facY8sPhykKFQgCEsbswwVoencL7UlkbdBphWhoulVqg1HExjgorYxO4H5GgxWkNdSJkl0bCFq_t45NGTHwuhacQ_NtNQmsLXJIUMPXjuwu5rjCM-0rwm5R24cMteKghxKIVuPd65U83bkDC_QBkVxoBm0d-2Ri7ocQ3YuRJ_Q5FI3MTsIzlF1vtqiCSxKzChmSiucttqKV0xs6XsduV43gtMhZtGucp0-DCl42yXRBc6y6hx_7JhPdPdOpuRe5mEqswnnMt5elnm-lP3wXkYWXmYzldk-zmW8vSyzH3_dejOTESUU6EW2U5F1GH6Zinhbpy-YUZCLbiC7nzTLmoBq-0uTp3y82iZIrZY1YT_ERLp0C8OY6VXc95jBvExvf3L4e_TA2YOnvmcyWhU-5jyNsdRKvIpxPo9up-gPFmdYsN8g7GV5rsbJdexnB0-0e1V867651i3vbpahHYcUFkmhgdZT7m5SNmCUuLQiXaRMaztSfr9JyUEV3dPaM2bLlef5tHS4Sfrhc_T2H4ay2bbPBQAA';\nexport var avatar = 'Avatar_avatar__g25zgb1';\nexport var image = 'Avatar_image__g25zgb5';\nexport var size = {sm:'Avatar_size_sm__g25zgb2',md:'Avatar_size_md__g25zgb3',lg:'Avatar_size_lg__g25zgb4'};\nexport var statusColor = {online:'Avatar_statusColor_online__g25zgb7',away:'Avatar_statusColor_away__g25zgb8',busy:'Avatar_statusColor_busy__g25zgb9',offline:'Avatar_statusColor_offline__g25zgba'};\nexport var statusDot = 'Avatar_statusDot__g25zgb6';\nexport var wrapper = 'Avatar_wrapper__g25zgb0';","import 'src/components/Progress/Progress.css.ts.vanilla.css?source=#H4sIAAAAAAAAA7WTTY_TMBCG7_0Vvqy0PXiVhLJC2QsnbiAkLnurJvE4HeKPYE_aBrT_HcVpUlKtEBJwssd-Z_z6Gft9i4MOYDGKz8E3AWPck1PIGCw5YPxiSOF-nz9m3a7FQvzYCJHdpUEIDuCi9sGW09QA4_O9zLPsbvu0EeJlI8QY_FZevF3UL5uHxQUHqNvl4CyV6HwkJu9KEdAA0xHHvBMpPpTpoDE8IDUHLsW77jyGlQ8KgwygqI-lOEK4l5dI6t6Y_b5oByhO35KHCuq2Cb53apbW3vggYx801DiL8yT2Rwza-FMpDqQUuqfVBTSNxS_-8-R_tjZb_TfeukAWwjCLH5M4AU6wZBd8h4GHciJ1s6v6ABPTqab1q-VPPlhYjOTqtjiTJddI3bv6lSoIkVyzZON2jWj10j78yuvNTb-hit70nPrNvitFNs4Mar5Mb9FeHsXuv4MGRzaRkg4sln_2jdaJ1xbkD0Vc7xHjtClr3zsuBTlNjiYSV9lftcFAhVf0u4ReUewMDKXQBtM_-tpHJj3I2jvG0UjsoEZZIZ9wfPpCaO9YarBkhvn8tFR5tTDLs-0ijfQdV8Jx4Tku0iJJE_p1HxjP_LFnVLN0l5QWQkNOVp7Z2zljcnleqjbj3X8Cvu6LRPYEAAA';\nexport var fill = 'Progress_fill__160p4ke1';\nexport var indeterminateFill = 'Progress_indeterminateFill__160p4ke3';\nexport var label = 'Progress_label__160p4ke4';\nexport var track = 'Progress_track__160p4ke0';","import type { HTMLAttributes, ReactElement } from \"react\";\nimport { fill, indeterminateFill, label, track } from \"./Progress.css\";\n\nexport interface ProgressProps extends HTMLAttributes<HTMLDivElement> {\n value?: number;\n max?: number;\n label?: string;\n}\n\nexport function Progress({ value, max = 100, label: labelText, className, ...rest }: ProgressProps): ReactElement {\n const isIndeterminate = value === undefined;\n const percentage = isIndeterminate ? undefined : Math.min(100, Math.max(0, (value / max) * 100));\n\n return (\n <div className={className} {...rest}>\n {labelText || !isIndeterminate ? (\n <div className={label}>\n <span>{labelText}</span>\n {!isIndeterminate ? <span>{Math.round(percentage!)}%</span> : null}\n </div>\n ) : null}\n <div\n className={track}\n role=\"progressbar\"\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuenow={isIndeterminate ? undefined : value}\n aria-label={labelText}\n >\n {isIndeterminate ? (\n <div className={indeterminateFill} />\n ) : (\n <div className={fill} style={{ width: `${percentage}%` }} />\n )}\n </div>\n </div>\n );\n}\n","import 'src/components/Spinner/Spinner.css.ts.vanilla.css?source=QGtleWZyYW1lcyBTcGlubmVyX3NwaW5fXzFoczV1amkwIHsKICAwJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsKICB9CiAgMTAwJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogIH0KfQouU3Bpbm5lcl9zcGlubmVyX18xaHM1dWppMSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1mdWxsX18ya3lhMndxKTsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItYm9yZGVyX18ya3lhMndkKTsKICBib3JkZXItdG9wLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5X18ya3lhMnc2KTsKICBhbmltYXRpb24tbmFtZTogU3Bpbm5lcl9zcGluX18xaHM1dWppMDsKICBhbmltYXRpb24tZHVyYXRpb246IDAuN3M7CiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7CiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyOwp9Ci5TcGlubmVyX3NpemVfc21fXzFoczV1amkyIHsKICB3aWR0aDogMTZweDsKICBoZWlnaHQ6IDE2cHg7CiAgYm9yZGVyLXdpZHRoOiAycHg7Cn0KLlNwaW5uZXJfc2l6ZV9tZF9fMWhzNXVqaTMgewogIHdpZHRoOiAyNHB4OwogIGhlaWdodDogMjRweDsKICBib3JkZXItd2lkdGg6IDNweDsKfQouU3Bpbm5lcl9zaXplX2xnX18xaHM1dWppNCB7CiAgd2lkdGg6IDM2cHg7CiAgaGVpZ2h0OiAzNnB4OwogIGJvcmRlci13aWR0aDogNHB4Owp9Ci5TcGlubmVyX3NyT25seV9fMWhzNXVqaTUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB3aWR0aDogMXB4OwogIGhlaWdodDogMXB4OwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luOiAtMXB4OwogIG92ZXJmbG93OiBoaWRkZW47CiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIGJvcmRlcjogMDsKfQ';\nexport var size = {sm:'Spinner_size_sm__1hs5uji2',md:'Spinner_size_md__1hs5uji3',lg:'Spinner_size_lg__1hs5uji4'};\nexport var spinner = 'Spinner_spinner__1hs5uji1';\nexport var srOnly = 'Spinner_srOnly__1hs5uji5';","import type { HTMLAttributes, ReactElement } from \"react\";\nimport { size, spinner, srOnly } from \"./Spinner.css\";\n\nexport type SpinnerSize = keyof typeof size;\n\nexport interface SpinnerProps extends HTMLAttributes<HTMLDivElement> {\n size?: SpinnerSize;\n label?: string;\n}\n\nexport function Spinner({\n size: sizeProp = \"md\",\n label = \"Loading\",\n className,\n ...rest\n}: SpinnerProps): ReactElement {\n return (\n <div\n role=\"status\"\n aria-label={label}\n className={[spinner, size[sizeProp], className].filter(Boolean).join(\" \")}\n {...rest}\n >\n <span className={srOnly}>{label}</span>\n </div>\n );\n}\n","import 'src/components/Alert/Alert.css.ts.vanilla.css?source=#H4sIAAAAAAAAA5WUwY7bIBCG73kKH9sDqzjZtqv01N730n2AiMDYHi0GF8Zx3KrvXoENwZF3m14iMfnmh_zzTx6-KbB05OHzWNJ-hJ9qW_zeFIVE1yk-HopKweXrpii4wlozJGjdVGSOuCX_Vc27Q3Hm9gNjruMCmGuPx93ryHdD89EDJ2MlWGa5xN5FdDqxVkbW5OyAkpqI5rVIDzntaFRwQ4dapMecFkYZG-lwmHsiLXNaQUVvP-eFrNF1bLxMjVy81tb0Wi4vcb2tuEhvKgPccSlR10sDr6ZggCqjiVW8RTVGMJRORo5JbntFHf6CBegLL2kq5T6gKz4QXChSHvqzeZgzIgRoOqKuTEpKGZKS27SiWBnRux949ahakXW9EOBcUt7do5yaJl2-ojtwq8PVs-7-Ht3UNOmeVnQl17WPyyz7eI9s7JlURa46jXEW-xTE_IYditKPqUUd87fNmgjJ53vu-jx1-VkPgHVDi_FPpWeQ2F9D8BRC0HJbo15KS3DCYkdodLrgS7jgjcg89wQpso-3uvHAyNz8UVzS9OrcD6GMg-89UXb_U-bxodBGw-2qkeXaddyCpnfSvfJU0Vvn0c6gJrD_uUUKNbBm9rxcrPT2X7_p0Jgz2PecXV3Gda2waeyMDk8KZrcuzDVcmiHZHk7TUkbps5f-Cx9CKI4LBgAA';\nexport var accent = {info:'Alert_accent_info__1t3yeql1',success:'Alert_accent_success__1t3yeql2',warning:'Alert_accent_warning__1t3yeql3',danger:'Alert_accent_danger__1t3yeql4'};\nexport var alert = 'Alert_alert__1t3yeql0';\nexport var body = 'Alert_body__1t3yeql5';\nexport var closeButton = 'Alert_closeButton__1t3yeql8';\nexport var description = 'Alert_description__1t3yeql7';\nexport var title = 'Alert_title__1t3yeql6';","import type { HTMLAttributes, ReactElement, ReactNode } from \"react\";\nimport { accent, alert, body, closeButton, description, title } from \"./Alert.css\";\n\nexport type AlertVariant = keyof typeof accent;\n\nexport interface AlertProps extends Omit<HTMLAttributes<HTMLDivElement>, \"title\"> {\n variant?: AlertVariant;\n title?: ReactNode;\n onDismiss?: () => void;\n}\n\nexport function Alert({\n variant = \"info\",\n title: titleText,\n onDismiss,\n children,\n className,\n ...rest\n}: AlertProps): ReactElement {\n return (\n <div\n role=\"alert\"\n className={[alert, accent[variant], className].filter(Boolean).join(\" \")}\n {...rest}\n >\n <div className={body}>\n {titleText ? <p className={title}>{titleText}</p> : null}\n {children ? <p className={description}>{children}</p> : null}\n </div>\n {onDismiss ? (\n <button type=\"button\" className={closeButton} aria-label=\"Dismiss\" onClick={onDismiss}>\n ✕\n </button>\n ) : null}\n </div>\n );\n}\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type {\n CSSProperties,\n ForwardedRef,\n InputHTMLAttributes,\n MouseEvent as ReactMouseEvent,\n PointerEvent as ReactPointerEvent,\n ReactElement,\n ReactNode,\n} from \"react\";\nimport { Button } from \"../Button\";\nimport { Pagination } from \"../Pagination\";\nimport { Spinner } from \"../Spinner\";\nimport {\n actionsCell as actionsCellClass,\n body as bodyClass,\n cell as cellClass,\n checkboxCell as checkboxCellClass,\n container as containerClass,\n editInput,\n emptyState as emptyStateClass,\n filterCell,\n filterInput,\n filterRow,\n gridWrapper,\n groupAggregateItem,\n groupAggregates,\n groupChevron,\n groupCount,\n groupLabel,\n groupRow,\n headerButton,\n headerCell,\n headerRow,\n iconButton,\n loadingOverlay,\n paginationFooter,\n pinnedCell,\n pinnedHeaderCell,\n pinnedLeftEdge,\n pinnedRightEdge,\n resizeHandle,\n row as rowClass,\n sortIcon,\n srOnly,\n toolbar as toolbarClass,\n} from \"./DataGrid.css\";\nimport type {\n DataGridColumn,\n FilterState,\n SortDirection,\n SortState,\n} from \"./types\";\n\nconst DEFAULT_COLUMN_WIDTH = 160;\nconst CHECKBOX_COLUMN_WIDTH = 44;\nconst ACTIONS_COLUMN_WIDTH = 72;\nconst FILTER_DEBOUNCE_MS = 200;\n\nfunction useDebouncedValue<V>(value: V, delay: number): V {\n const [debounced, setDebounced] = useState(value);\n useEffect(() => {\n const timer = setTimeout(() => setDebounced(value), delay);\n return () => clearTimeout(timer);\n }, [value, delay]);\n return debounced;\n}\n\ninterface FilterTextInputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, \"value\" | \"onChange\"> {\n value: string;\n onChange: (value: string) => void;\n}\n\nfunction FilterTextInput({\n value,\n onChange,\n ...rest\n}: FilterTextInputProps): ReactElement {\n const [draft, setDraft] = useState(value);\n const debounced = useDebouncedValue(draft, FILTER_DEBOUNCE_MS);\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n const mounted = useRef(false);\n\n useEffect(() => {\n if (!mounted.current) {\n mounted.current = true;\n return;\n }\n onChangeRef.current(debounced);\n }, [debounced]);\n\n useEffect(() => {\n setDraft(value);\n }, [value]);\n\n return (\n <input\n type=\"text\"\n value={draft}\n onChange={(e) => setDraft(e.target.value)}\n {...rest}\n />\n );\n}\n\nexport interface DataGridProps<T> {\n columns: DataGridColumn<T>[];\n data: T[];\n getRowId: (row: T) => string;\n rowHeight?: number;\n height?: number;\n overscan?: number;\n selectable?: boolean;\n selectedIds?: Set<string>;\n onSelectionChange?: (ids: Set<string>) => void;\n sort?: SortState | null;\n onSortChange?: (sort: SortState | null) => void;\n filters?: FilterState[];\n onFilterChange?: (filters: FilterState[]) => void;\n emptyMessage?: ReactNode;\n /** Enables inline row editing; called when a row's edit is saved. */\n onRowEdit?: (rowId: string, values: Record<string, string>) => void;\n /** When true, `data` is treated as already sorted/filtered/paginated by the caller. */\n serverSide?: boolean;\n /** Shows a loading overlay over the grid without unmounting existing rows. */\n loading?: boolean;\n /** True total row count on the server, used for pagination controls. */\n totalRowCount?: number;\n page?: number;\n pageSize?: number;\n onPageChange?: (page: number) => void;\n /** Renders an \"Export\" button in the grid's toolbar that exports the current view to Excel. */\n enableExport?: boolean;\n /** Groups rows by this column key (single-level). undefined = no grouping. */\n groupBy?: string;\n defaultGroupBy?: string;\n onGroupByChange?: (key: string | undefined) => void;\n /** Which group keys are expanded. Default: all expanded. */\n expandedGroups?: Set<string>;\n defaultExpandedGroups?: Set<string>;\n onExpandedGroupsChange?: (expanded: Set<string>) => void;\n /** Height of a group header row; defaults to rowHeight. */\n groupRowHeight?: number;\n onRowClick?: (row: T, event: ReactMouseEvent<HTMLDivElement>) => void;\n onRowDoubleClick?: (row: T, event: ReactMouseEvent<HTMLDivElement>) => void;\n onCellClick?: (\n row: T,\n column: DataGridColumn<T>,\n event: ReactMouseEvent<HTMLDivElement>,\n ) => void;\n}\n\nexport interface DataGridExportOptions {\n filename?: string;\n sheetName?: string;\n}\n\nexport interface DataGridHandle<T> {\n exportToExcel: (options?: DataGridExportOptions) => Promise<void>;\n}\n\nfunction getExportValue<T>(column: DataGridColumn<T>, row: T): string | number {\n if (column.exportValue) {\n return column.exportValue(row);\n }\n if (column.accessor) {\n return column.accessor(row);\n }\n return (row as Record<string, unknown>)[column.key] as string | number;\n}\n\nfunction getExportHeader<T>(column: DataGridColumn<T>): string {\n return typeof column.header === \"string\" ? column.header : column.key;\n}\n\nfunction compareValues(a: string | number, b: string | number): number {\n if (typeof a === \"number\" && typeof b === \"number\") {\n return a - b;\n }\n return String(a).localeCompare(String(b));\n}\n\nfunction getCellValue<T>(column: DataGridColumn<T>, row: T): string | number {\n if (column.accessor) {\n return column.accessor(row);\n }\n return (row as Record<string, unknown>)[column.key] as string | number;\n}\n\nfunction getGroupValue<T>(\n row: T,\n groupBy: string,\n column: DataGridColumn<T> | undefined\n): string {\n if (column) {\n return String(getCellValue(column, row) ?? \"\");\n }\n return String((row as Record<string, unknown>)[groupBy] ?? \"\");\n}\n\nfunction formatAggregateNumber(value: number): string | number {\n return Number.isInteger(value) ? value : value.toFixed(2);\n}\n\nfunction computeAggregate<T>(\n column: DataGridColumn<T>,\n rows: T[]\n): ReactNode {\n const { aggregate } = column;\n if (!aggregate) return null;\n if (typeof aggregate === \"function\") {\n return aggregate(rows);\n }\n if (aggregate === \"count\") {\n return rows.length;\n }\n const values = rows.map((r) => Number(getCellValue(column, r)) || 0);\n switch (aggregate) {\n case \"sum\":\n return formatAggregateNumber(values.reduce((a, b) => a + b, 0));\n case \"avg\":\n return formatAggregateNumber(\n values.length ? values.reduce((a, b) => a + b, 0) / values.length : 0\n );\n case \"min\":\n return formatAggregateNumber(values.length ? Math.min(...values) : 0);\n case \"max\":\n return formatAggregateNumber(values.length ? Math.max(...values) : 0);\n default:\n return null;\n }\n}\n\ninterface GroupFlatEntry<T> {\n type: \"group\";\n key: string;\n rows: T[];\n collapsed: boolean;\n}\n\ninterface DataFlatEntry<T> {\n type: \"data\";\n row: T;\n}\n\ntype FlatEntry<T> = GroupFlatEntry<T> | DataFlatEntry<T>;\n\nfunction DataGridInner<T>(\n {\n columns,\n data,\n getRowId,\n rowHeight = 40,\n height = 400,\n overscan = 5,\n selectable = false,\n selectedIds: controlledSelectedIds,\n onSelectionChange,\n sort: controlledSort,\n onSortChange,\n filters: controlledFilters,\n onFilterChange,\n emptyMessage = \"No data\",\n onRowEdit,\n serverSide = false,\n loading = false,\n totalRowCount,\n page,\n pageSize,\n onPageChange,\n enableExport = false,\n groupBy: controlledGroupBy,\n defaultGroupBy,\n onGroupByChange,\n expandedGroups: controlledExpandedGroups,\n defaultExpandedGroups,\n onExpandedGroupsChange,\n groupRowHeight,\n onRowClick,\n onRowDoubleClick,\n onCellClick,\n }: DataGridProps<T>,\n ref: ForwardedRef<DataGridHandle<T>>\n): ReactElement {\n const [uncontrolledSort, setUncontrolledSort] = useState<SortState | null>(\n null\n );\n const [uncontrolledFilters, setUncontrolledFilters] = useState<FilterState[]>(\n []\n );\n const [uncontrolledSelectedIds, setUncontrolledSelectedIds] = useState<\n Set<string>\n >(() => new Set());\n const [columnWidths, setColumnWidths] = useState<Record<string, number>>(() =>\n Object.fromEntries(\n columns.map((c) => [c.key, c.width ?? DEFAULT_COLUMN_WIDTH])\n )\n );\n const [scrollTop, setScrollTop] = useState(0);\n const [editingRowId, setEditingRowId] = useState<string | null>(null);\n const [editDraft, setEditDraft] = useState<Record<string, string>>({});\n const [uncontrolledGroupBy, setUncontrolledGroupBy] = useState<\n string | undefined\n >(defaultGroupBy);\n const [uncontrolledExpandedGroups, setUncontrolledExpandedGroups] =\n useState<Set<string> | undefined>(defaultExpandedGroups);\n\n const editingEnabled = Boolean(onRowEdit);\n\n const sort = controlledSort !== undefined ? controlledSort : uncontrolledSort;\n const filters =\n controlledFilters !== undefined ? controlledFilters : uncontrolledFilters;\n const selectedIds = controlledSelectedIds ?? uncontrolledSelectedIds;\n const groupBy =\n controlledGroupBy !== undefined ? controlledGroupBy : uncontrolledGroupBy;\n // undefined means \"all groups expanded\" until the user (or caller) toggles one.\n const expandedGroups =\n controlledExpandedGroups !== undefined\n ? controlledExpandedGroups\n : uncontrolledExpandedGroups;\n\n const setExpandedGroups = (next: Set<string>) => {\n if (controlledExpandedGroups === undefined) {\n setUncontrolledExpandedGroups(next);\n }\n onExpandedGroupsChange?.(next);\n };\n\n const isGroupExpanded = (key: string): boolean =>\n expandedGroups === undefined ? true : expandedGroups.has(key);\n\n const toggleGroupExpanded = (key: string, allGroupKeys: string[]) => {\n const current = expandedGroups ?? new Set(allGroupKeys);\n const next = new Set(current);\n if (next.has(key)) {\n next.delete(key);\n } else {\n next.add(key);\n }\n setExpandedGroups(next);\n };\n\n const setSort = (next: SortState | null) => {\n if (controlledSort === undefined) {\n setUncontrolledSort(next);\n }\n onSortChange?.(next);\n };\n\n const setFilters = (next: FilterState[]) => {\n if (controlledFilters === undefined) {\n setUncontrolledFilters(next);\n }\n onFilterChange?.(next);\n };\n\n const handleFilterChange = (key: string, value: string) => {\n const next = value\n ? [...filters.filter((f) => f.key !== key), { key, value }]\n : filters.filter((f) => f.key !== key);\n setFilters(next);\n };\n\n const getFilterValue = (key: string): string =>\n filters.find((f) => f.key === key)?.value ?? \"\";\n\n const setSelectedIds = (next: Set<string>) => {\n if (controlledSelectedIds === undefined) {\n setUncontrolledSelectedIds(next);\n }\n onSelectionChange?.(next);\n };\n\n const handleSortClick = (column: DataGridColumn<T>) => {\n if (!column.sortable) return;\n if (!sort || sort.key !== column.key) {\n setSort({ key: column.key, direction: \"asc\" });\n } else if (sort.direction === \"asc\") {\n setSort({ key: column.key, direction: \"desc\" });\n } else {\n setSort(null);\n }\n };\n\n const filteredData = useMemo(() => {\n if (serverSide || filters.length === 0) {\n return data;\n }\n return data.filter((row) =>\n filters.every((f) => {\n if (!f.value) return true;\n const column = columns.find((c) => c.key === f.key);\n if (!column) return true;\n const cellValue = String(getCellValue(column, row) ?? \"\").toLowerCase();\n return cellValue.includes(f.value.toLowerCase());\n })\n );\n }, [data, filters, columns, serverSide]);\n\n const sortedData = useMemo(() => {\n if (serverSide) {\n return data;\n }\n if (!sort || !sort.direction) {\n return filteredData;\n }\n const column = columns.find((c) => c.key === sort.key);\n if (!column) {\n return filteredData;\n }\n const sorted = [...filteredData].sort((a, b) =>\n compareValues(getCellValue(column, a), getCellValue(column, b))\n );\n return sort.direction === \"desc\" ? sorted.reverse() : sorted;\n }, [filteredData, sort, columns, serverSide, data]);\n\n const groupColumn = useMemo(\n () => (groupBy ? columns.find((c) => c.key === groupBy) : undefined),\n [columns, groupBy]\n );\n\n // Partitions sortedData into groups keyed by the groupBy column's value,\n // preserving each group's existing internal sort order.\n const groupedMap = useMemo(() => {\n if (!groupBy) return null;\n const map = new Map<string, T[]>();\n for (const row of sortedData) {\n const key = getGroupValue(row, groupBy, groupColumn);\n const existing = map.get(key);\n if (existing) {\n existing.push(row);\n } else {\n map.set(key, [row]);\n }\n }\n return map;\n }, [sortedData, groupBy, groupColumn]);\n\n // Flat render array: group-header entries followed by their data rows,\n // omitted entirely when a group is collapsed. This (not sortedData) is\n // what the virtualization windowing below operates on.\n const flatEntries = useMemo<FlatEntry<T>[]>(() => {\n if (!groupedMap) {\n return sortedData.map((row) => ({ type: \"data\", row }) as const);\n }\n const entries: FlatEntry<T>[] = [];\n for (const [key, rows] of groupedMap) {\n const collapsed = !isGroupExpanded(key);\n entries.push({ type: \"group\", key, rows, collapsed });\n if (!collapsed) {\n for (const row of rows) {\n entries.push({ type: \"data\", row });\n }\n }\n }\n return entries;\n }, [groupedMap, expandedGroups, sortedData]);\n\n // Select-all only ever operates on rows the user can currently see —\n // a collapsed group's rows are excluded, since selecting them would be\n // invisible to the user.\n const visibleDataRows = useMemo(\n () =>\n flatEntries\n .filter((e): e is DataFlatEntry<T> => e.type === \"data\")\n .map((e) => e.row),\n [flatEntries]\n );\n\n const exportToExcel = useCallback(\n async (options?: DataGridExportOptions) => {\n const XLSX = await import(\"xlsx\");\n const headerRowValues = columns.map((column) => getExportHeader(column));\n const rows = sortedData.map((row) =>\n columns.map((column) => getExportValue(column, row))\n );\n const worksheet = XLSX.utils.aoa_to_sheet([headerRowValues, ...rows]);\n const workbook = XLSX.utils.book_new();\n XLSX.utils.book_append_sheet(\n workbook,\n worksheet,\n options?.sheetName ?? \"Sheet1\"\n );\n XLSX.writeFile(workbook, options?.filename ?? \"export.xlsx\");\n },\n [columns, sortedData]\n );\n\n useImperativeHandle(ref, () => ({ exportToExcel }), [exportToExcel]);\n\n const selectFilterOptions = useMemo(() => {\n const map: Record<string, string[]> = {};\n for (const column of columns) {\n if (!column.filterable || column.filterType !== \"select\") continue;\n const values = new Set<string>();\n for (const row of data) {\n values.add(String(getCellValue(column, row) ?? \"\"));\n }\n map[column.key] = Array.from(values).sort();\n }\n return map;\n }, [columns, data]);\n\n const hasFilterableColumns = columns.some((c) => c.filterable);\n const showPagination =\n page !== undefined && pageSize !== undefined && onPageChange !== undefined;\n\n const allSelected =\n visibleDataRows.length > 0 &&\n visibleDataRows.every((r) => selectedIds.has(getRowId(r)));\n const someSelected =\n !allSelected && visibleDataRows.some((r) => selectedIds.has(getRowId(r)));\n\n const toggleAll = () => {\n if (allSelected) {\n setSelectedIds(new Set());\n } else {\n setSelectedIds(new Set(visibleDataRows.map(getRowId)));\n }\n };\n\n const toggleRow = (id: string) => {\n const next = new Set(selectedIds);\n if (next.has(id)) {\n next.delete(id);\n } else {\n next.add(id);\n }\n setSelectedIds(next);\n };\n\n const resizeState = useRef<{\n key: string;\n startX: number;\n startWidth: number;\n } | null>(null);\n\n const handleResizeStart = useCallback(\n (event: ReactPointerEvent<HTMLDivElement>, column: DataGridColumn<T>) => {\n if (column.resizable === false) return;\n event.preventDefault();\n event.stopPropagation();\n resizeState.current = {\n key: column.key,\n startX: event.clientX,\n startWidth: columnWidths[column.key] ?? DEFAULT_COLUMN_WIDTH,\n };\n const target = event.currentTarget;\n target.setPointerCapture(event.pointerId);\n },\n [columnWidths]\n );\n\n const handleResizeMove = useCallback(\n (event: ReactPointerEvent<HTMLDivElement>) => {\n const state = resizeState.current;\n if (!state) return;\n const delta = event.clientX - state.startX;\n const minWidth = columns.find((c) => c.key === state.key)?.minWidth ?? 60;\n const nextWidth = Math.max(minWidth, state.startWidth + delta);\n setColumnWidths((prev) => ({ ...prev, [state.key]: nextWidth }));\n },\n [columns]\n );\n\n const handleResizeEnd = useCallback(\n (event: ReactPointerEvent<HTMLDivElement>) => {\n resizeState.current = null;\n event.currentTarget.releasePointerCapture(event.pointerId);\n },\n []\n );\n\n const widthOf = useCallback(\n (column: DataGridColumn<T>) =>\n columnWidths[column.key] ?? column.width ?? DEFAULT_COLUMN_WIDTH,\n [columnWidths]\n );\n\n // --- Column layout: split into left-pinned / scrollable / right-pinned\n // groups (preserving each group's declared relative order), and compute a\n // sticky offset for every pinned column plus the checkbox/actions columns.\n const layout = useMemo(() => {\n const leftPinned = columns.filter((c) => c.pinned === \"left\");\n const rightPinned = columns.filter((c) => c.pinned === \"right\");\n const middle = columns.filter((c) => !c.pinned);\n const ordered = [...leftPinned, ...middle, ...rightPinned];\n\n const leftOffsets = new Map<string, number>();\n let leftAcc = selectable ? CHECKBOX_COLUMN_WIDTH : 0;\n for (const column of leftPinned) {\n leftOffsets.set(column.key, leftAcc);\n leftAcc += widthOf(column);\n }\n\n const rightOffsets = new Map<string, number>();\n let rightAcc = editingEnabled ? ACTIONS_COLUMN_WIDTH : 0;\n for (let i = rightPinned.length - 1; i >= 0; i--) {\n const column = rightPinned[i]!;\n rightOffsets.set(column.key, rightAcc);\n rightAcc += widthOf(column);\n }\n\n return {\n ordered,\n leftOffsets,\n rightOffsets,\n lastLeftKey: leftPinned[leftPinned.length - 1]?.key,\n firstRightKey: rightPinned[0]?.key,\n };\n }, [columns, selectable, editingEnabled, widthOf]);\n\n const pinnedStyle = (\n column: DataGridColumn<T>\n ): CSSProperties | undefined => {\n if (column.pinned === \"left\" && layout.leftOffsets.has(column.key)) {\n return { left: layout.leftOffsets.get(column.key) };\n }\n if (column.pinned === \"right\" && layout.rightOffsets.has(column.key)) {\n return { right: layout.rightOffsets.get(column.key) };\n }\n return undefined;\n };\n\n const pinnedClass = (column: DataGridColumn<T>): string => {\n const classes: string[] = [];\n if (column.pinned) {\n classes.push(pinnedCell);\n if (column.key === layout.lastLeftKey) classes.push(pinnedLeftEdge);\n if (column.key === layout.firstRightKey) classes.push(pinnedRightEdge);\n }\n return classes.join(\" \");\n };\n\n const headerPinnedClass = (column: DataGridColumn<T>): string => {\n const classes: string[] = [];\n if (column.pinned) {\n classes.push(pinnedHeaderCell);\n if (column.key === layout.lastLeftKey) classes.push(pinnedLeftEdge);\n if (column.key === layout.firstRightKey) classes.push(pinnedRightEdge);\n }\n return classes.join(\" \");\n };\n\n const startEditing = (rowData: T) => {\n const id = getRowId(rowData);\n const draft: Record<string, string> = {};\n for (const column of columns) {\n if (column.editable) {\n draft[column.key] = String(getCellValue(column, rowData) ?? \"\");\n }\n }\n setEditDraft(draft);\n setEditingRowId(id);\n };\n\n const cancelEditing = () => {\n setEditingRowId(null);\n setEditDraft({});\n };\n\n const saveEditing = () => {\n if (editingRowId) {\n onRowEdit?.(editingRowId, editDraft);\n }\n setEditingRowId(null);\n setEditDraft({});\n };\n\n const resolvedGroupRowHeight = groupRowHeight ?? rowHeight;\n\n // Offsets for the flat (group-header + data) array, since group headers\n // and data rows can have different heights once grouping is active.\n const rowOffsets: number[] | null = groupedMap\n ? (() => {\n const offsets = new Array<number>(flatEntries.length);\n let acc = 0;\n for (let i = 0; i < flatEntries.length; i++) {\n offsets[i] = acc;\n acc +=\n flatEntries[i]!.type === \"group\"\n ? resolvedGroupRowHeight\n : rowHeight;\n }\n return offsets;\n })()\n : null;\n\n function findIndexAtOffset(offsets: number[], target: number): number {\n let lo = 0;\n let hi = offsets.length - 1;\n let ans = 0;\n while (lo <= hi) {\n const mid = (lo + hi) >> 1;\n if (offsets[mid]! <= target) {\n ans = mid;\n lo = mid + 1;\n } else {\n hi = mid - 1;\n }\n }\n return ans;\n }\n\n let totalHeight: number;\n let startIndex: number;\n let endIndex: number;\n\n if (rowOffsets) {\n totalHeight = rowOffsets.length\n ? rowOffsets[rowOffsets.length - 1]! +\n (flatEntries[flatEntries.length - 1]!.type === \"group\"\n ? resolvedGroupRowHeight\n : rowHeight)\n : 0;\n const rawStart = rowOffsets.length\n ? findIndexAtOffset(rowOffsets, scrollTop)\n : 0;\n startIndex = Math.max(0, rawStart - overscan);\n const rawEnd = rowOffsets.length\n ? findIndexAtOffset(rowOffsets, scrollTop + height) + 1\n : 0;\n endIndex = Math.min(flatEntries.length, rawEnd + overscan);\n } else {\n totalHeight = sortedData.length * rowHeight;\n const visibleCount = Math.ceil(height / rowHeight) + overscan * 2;\n startIndex = Math.max(0, Math.floor(scrollTop / rowHeight) - overscan);\n endIndex = Math.min(flatEntries.length, startIndex + visibleCount);\n }\n\n const visibleEntries = flatEntries.slice(startIndex, endIndex);\n\n const totalWidth =\n (selectable ? CHECKBOX_COLUMN_WIDTH : 0) +\n (editingEnabled ? ACTIONS_COLUMN_WIDTH : 0) +\n columns.reduce((sum, c) => sum + widthOf(c), 0);\n\n return (\n <>\n <div className={gridWrapper}>\n {enableExport ? (\n <div className={toolbarClass}>\n <Button\n type=\"button\"\n variant=\"secondary\"\n onClick={() => {\n void exportToExcel();\n }}\n >\n Export\n </Button>\n </div>\n ) : null}\n <div\n className={containerClass}\n style={{ height }}\n onScroll={(e) => setScrollTop(e.currentTarget.scrollTop)}\n role=\"table\"\n >\n <div\n className={headerRow}\n style={{ width: totalWidth, minWidth: \"100%\" }}\n role=\"row\"\n >\n {selectable ? (\n <div\n className={[checkboxCellClass, pinnedHeaderCell].join(\" \")}\n style={{ left: 0 }}\n role=\"columnheader\"\n >\n <input\n type=\"checkbox\"\n checked={allSelected}\n ref={(el) => {\n if (el) el.indeterminate = someSelected;\n }}\n onChange={toggleAll}\n aria-label=\"Select all rows\"\n />\n </div>\n ) : null}\n {layout.ordered.map((column) => {\n const width = widthOf(column);\n const isSorted = sort?.key === column.key;\n const direction: SortDirection = isSorted\n ? sort!.direction\n : null;\n return (\n <div\n key={column.key}\n className={[headerCell, headerPinnedClass(column)]\n .filter(Boolean)\n .join(\" \")}\n style={{ width, ...pinnedStyle(column) }}\n role=\"columnheader\"\n aria-sort={\n direction === \"asc\"\n ? \"ascending\"\n : direction === \"desc\"\n ? \"descending\"\n : \"none\"\n }\n >\n {column.sortable ? (\n <button\n type=\"button\"\n className={headerButton}\n onClick={() => handleSortClick(column)}\n >\n {column.header}\n <span className={sortIcon} aria-hidden=\"true\">\n {direction === \"asc\"\n ? \"▲\"\n : direction === \"desc\"\n ? \"▼\"\n : \"\"}\n </span>\n </button>\n ) : (\n column.header\n )}\n {column.resizable !== false ? (\n <div\n className={resizeHandle}\n onPointerDown={(e) => handleResizeStart(e, column)}\n onPointerMove={handleResizeMove}\n onPointerUp={handleResizeEnd}\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-label={`Resize ${String(column.header)} column`}\n />\n ) : null}\n </div>\n );\n })}\n {editingEnabled ? (\n <div\n className={[actionsCellClass, pinnedHeaderCell].join(\" \")}\n style={{ right: 0 }}\n role=\"columnheader\"\n >\n <span className={srOnly}>Actions</span>\n </div>\n ) : null}\n </div>\n\n {hasFilterableColumns ? (\n <div\n className={filterRow}\n style={{ width: totalWidth, minWidth: \"100%\" }}\n role=\"row\"\n >\n {selectable ? (\n <div\n className={[checkboxCellClass, pinnedHeaderCell].join(\" \")}\n style={{ left: 0 }}\n role=\"cell\"\n />\n ) : null}\n {layout.ordered.map((column) => {\n const width = widthOf(column);\n return (\n <div\n key={column.key}\n className={[filterCell, headerPinnedClass(column)]\n .filter(Boolean)\n .join(\" \")}\n style={{ width, ...pinnedStyle(column) }}\n role=\"cell\"\n >\n {column.filterable ? (\n column.filterType === \"select\" ? (\n <select\n className={filterInput}\n value={getFilterValue(column.key)}\n onChange={(e) =>\n handleFilterChange(column.key, e.target.value)\n }\n aria-label={`Filter ${String(column.header)}`}\n >\n <option value=\"\">All</option>\n {(selectFilterOptions[column.key] ?? []).map(\n (value) => (\n <option key={value} value={value}>\n {value}\n </option>\n )\n )}\n </select>\n ) : (\n <FilterTextInput\n className={filterInput}\n value={getFilterValue(column.key)}\n onChange={(value) =>\n handleFilterChange(column.key, value)\n }\n placeholder={`Filter ${String(column.header)}`}\n aria-label={`Filter ${String(column.header)}`}\n />\n )\n ) : null}\n </div>\n );\n })}\n {editingEnabled ? (\n <div\n className={[actionsCellClass, pinnedHeaderCell].join(\" \")}\n style={{ right: 0 }}\n role=\"cell\"\n />\n ) : null}\n </div>\n ) : null}\n\n {sortedData.length === 0 ? (\n <div className={emptyStateClass}>{emptyMessage}</div>\n ) : (\n <div\n className={bodyClass}\n style={{\n height: totalHeight,\n width: totalWidth,\n minWidth: \"100%\",\n }}\n >\n {visibleEntries.map((entry, i) => {\n const index = startIndex + i;\n const top = rowOffsets\n ? rowOffsets[index]!\n : index * rowHeight;\n\n if (entry.type === \"group\") {\n const isExpanded = !entry.collapsed;\n const groupLabelText = groupColumn\n ? typeof groupColumn.header === \"string\"\n ? groupColumn.header\n : groupColumn.key\n : groupBy;\n const aggregateColumns = columns.filter((c) => c.aggregate);\n return (\n <div\n key={`group-${entry.key}`}\n className={groupRow}\n style={{\n top,\n height: resolvedGroupRowHeight,\n width: totalWidth,\n }}\n role=\"row\"\n >\n <button\n type=\"button\"\n className={groupChevron}\n data-expanded={isExpanded || undefined}\n onClick={() =>\n toggleGroupExpanded(\n entry.key,\n Array.from(groupedMap!.keys())\n )\n }\n aria-label={\n isExpanded\n ? `Collapse group ${entry.key}`\n : `Expand group ${entry.key}`\n }\n >\n ›\n </button>\n <span className={groupLabel}>\n {groupLabelText}: {entry.key}\n </span>\n <span className={groupCount}>\n {entry.rows.length} row\n {entry.rows.length === 1 ? \"\" : \"s\"}\n </span>\n {aggregateColumns.length > 0 ? (\n <span className={groupAggregates}>\n {aggregateColumns.map((c) => (\n <span key={c.key} className={groupAggregateItem}>\n {typeof c.header === \"string\"\n ? c.header\n : c.key}\n : {computeAggregate(c, entry.rows)}\n </span>\n ))}\n </span>\n ) : null}\n </div>\n );\n }\n\n const rowData = entry.row;\n const id = getRowId(rowData);\n const isSelected = selectedIds.has(id);\n const isEditing = editingRowId === id;\n const style: CSSProperties = {\n top,\n height: rowHeight,\n width: totalWidth,\n };\n\n return (\n <div\n key={id}\n className={rowClass}\n style={style}\n role=\"row\"\n data-selected={isSelected || undefined}\n data-editing={isEditing || undefined}\n onClick={\n onRowClick ? (e) => onRowClick(rowData, e) : undefined\n }\n onDoubleClick={\n onRowDoubleClick\n ? (e) => onRowDoubleClick(rowData, e)\n : undefined\n }\n >\n {selectable ? (\n <div\n className={[checkboxCellClass, pinnedCell].join(\" \")}\n style={{ left: 0 }}\n role=\"cell\"\n onClick={(e) => e.stopPropagation()}\n >\n <input\n type=\"checkbox\"\n checked={isSelected}\n onChange={() => toggleRow(id)}\n aria-label={`Select row ${index + 1}`}\n />\n </div>\n ) : null}\n {layout.ordered.map((column) => (\n <div\n key={column.key}\n className={[cellClass, pinnedClass(column)]\n .filter(Boolean)\n .join(\" \")}\n style={{\n width: widthOf(column),\n ...pinnedStyle(column),\n }}\n role=\"cell\"\n onClick={\n onCellClick\n ? (e) => onCellClick(rowData, column, e)\n : undefined\n }\n >\n {isEditing && column.editable ? (\n <input\n type=\"text\"\n className={editInput}\n value={editDraft[column.key] ?? \"\"}\n onChange={(e) =>\n setEditDraft((prev) => ({\n ...prev,\n [column.key]: e.target.value,\n }))\n }\n onKeyDown={(e) => {\n if (e.key === \"Enter\") saveEditing();\n if (e.key === \"Escape\") cancelEditing();\n }}\n aria-label={`Edit ${String(column.header)}`}\n autoFocus={\n column.key ===\n columns.find((c) => c.editable)?.key\n }\n />\n ) : column.render ? (\n column.render(rowData)\n ) : (\n String(getCellValue(column, rowData) ?? \"\")\n )}\n </div>\n ))}\n {editingEnabled ? (\n <div\n className={[actionsCellClass, pinnedCell].join(\" \")}\n style={{ right: 0 }}\n role=\"cell\"\n onClick={(e) => e.stopPropagation()}\n >\n {isEditing ? (\n <>\n <button\n type=\"button\"\n className={iconButton}\n onClick={saveEditing}\n aria-label={`Save row ${index + 1}`}\n >\n ✓\n </button>\n <button\n type=\"button\"\n className={iconButton}\n onClick={cancelEditing}\n aria-label={`Cancel editing row ${index + 1}`}\n >\n ✕\n </button>\n </>\n ) : (\n <button\n type=\"button\"\n className={iconButton}\n onClick={() => startEditing(rowData)}\n aria-label={`Edit row ${index + 1}`}\n >\n ✎\n </button>\n )}\n </div>\n ) : null}\n </div>\n );\n })}\n </div>\n )}\n </div>\n {loading ? (\n <div className={loadingOverlay}>\n <Spinner size=\"md\" />\n </div>\n ) : null}\n </div>\n {showPagination ? (\n <div className={paginationFooter}>\n <Pagination\n page={page!}\n totalPages={Math.max(\n 1,\n Math.ceil((totalRowCount ?? data.length) / pageSize!)\n )}\n onPageChange={onPageChange!}\n />\n </div>\n ) : null}\n </>\n );\n}\n\nexport const DataGrid = forwardRef(DataGridInner) as <T>(\n props: DataGridProps<T> & { ref?: ForwardedRef<DataGridHandle<T>> }\n) => ReactElement;\n","import 'src/components/DataGrid/DataGrid.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-1aS2_cNhC-51foUsQGKmN349iJgh7atGkCxAjgHFqgKAyuOJKYpUiWpHa1KfrfC4p6UI99aC0bSVrAB4s7HM588-DMSBc_I41-lQTfKfmB0e3d3XVO1vn1zPv7iecJrogmnAUeWipOMw2vnnjehmCdBN5c5OYpARInun4UCGPC4sCbmacUyZiwwPPLX_kaZET5JvASgjEwsxZSIgJPQqjPZt975d95cVBCNPhKoBACj_GNRMIsL7nEIIsT_nlyUSsQcqYRYSArHeYdHSRQpMka2oKgTPOGq18qt0byzPfdtbu7xWqLFpvNuUOt9JZCh7pYq6i3LnXIKZcVdfFQ7qmosUstESaZqsjtk5_iipYXtBFn2o9QSui2oiyWlhxvK8r5rCFV5DO0CM3Cx7QmfVaQDgiqIdcVlSFykU8AYZC3fFMhv-ggrzQJV1vDWXNRugYmSlC0DbyIQuEbn33CMOSBtyhAQOEqljxjuC2HymSEwhrfuYvYkmvN05EmLDeNs2S56SiD9pF6DZRWUD3b46Q9iBAlMfOJhlQFXghMgzTLMRKVEEWw-LmqBIit6SnkvkokYasS_TJM_cIe7lZV-0Jy7hJajY-jpRDpNmXjtqRFKW3u2EdaeOkGXEJn6QYwyRr3fbHPfW8yDTXzy4IyU8bMQCHUJsMwsDbOTVgUWay2dz7SKftW_ynTmrPK7peF3SezcJUTax0cSbVETAkkgWkHHcISkERXELcW2kk8zKQyOwQnVp6DugURDzPlr4kiSwqFpgWoCcIm5ZaKFE9-QVopsz6YABufYx2UFZf6XdhI8bw4d3fW-70-db4Y5TbuoRIMq7eIYZMp7MFXe-7OJv-Vrj-zCtvgmjnX65W9MSvwQ059e5hlk4WJj0J7gDX6QbGCxNx61ho7HNki_1FLzuJKZeiobK8Wy_N6Z_ZqSdPcDC_2YGPTRg-cXox8Ndne1fsI8A9kEZfbHxhpVCYuwD881TKDp39Oyx0w0YTFUzAPnQvv5ajEt_vmmvSSGapLTez7zQ9AKRGKqL2F6fDF0YIigXC15LlbA6BRkHzKlCbR1jf1LpjEvQ-tMjouL0V-rISQCr39qJGuM8dyKvnqe6V1ldHKFquT07AgjAF2MQ13lqB1nTk_4kq_RUQ1xy4OB_hhmR4u_B_x7G5yeLCjLbu3vboZT2Pf_ce-h0j_guM6EPqlzELk3sy7FLnnm39lvEROF3sxfz7I99ZkJJdx1GPsj-VsiwHlYhRPFbcnNBhl4rleHJ94SMhZu5BM2goQRgkD_3Q9SqEWV-3RRfXcK6KPrkOPKbiPaEd6lfaorr0Apx7HHMT26HKwPZ0YORsYOvg-3YHLOyJUt-YO5P-5w3AlapFyc8Onicqw3gChmxr2DRB20U5a203ezlsw3zGR6QrNVYFmNRidzb7rzeY67fZ0g7gTSpivZdjZzbGP7HO7xlsDPtcl5Zk22XioNR_ynskyouacLlE9Aaf3KwCKqAeGB0uAXeh8-RPFbzPFx5Lg3yQSonkBkh41naEcGeQ-rEFSVE922J5BDWEKdk5nxldl9QX8bLR1uEAh0dvAm128eP7q5LARKCYMGUXfcK4bAPl08fMVhYf1Q83FSHc3O8b5utlxgqPzTDhFn5hgpHjs2P2RDDBBwfKFZ64T3uv0fOB1AmvZ9BV_PUyz6FqK1kPxT-duA7mPpl86j39XM3XreFNvnl8Oto6eFaSIKF9ILkCaLFssRlymHQqcSWSDzx6U8tbyG6TqknUennc2a5KawIgyFg7wAKRI8y5i3n0ZMegI5YgqF4hhwHZyXYseeJKb4ebZyxmGeIjde7SEuk-yDfJRdfiOqfCo2XJfN56xulBU-4QZcIr9MXYLcUZRHZbz6wOfCfRemHVduyf8j3EsIUYaVKWBvt9rz26qtN-XlOm3-pLjgbU-ZT7dRuOdhrQCJLOd45DrtIbymOhWz7A-seN0Vr-t5lJIkiJZf_Ry9d_sLvt-cr_e8l-iIqunICYAAA';\nexport var actionsCell = 'DataGrid_actionsCell__7xivx7g';\nexport var body = 'DataGrid_body__7xivx77';\nexport var cell = 'DataGrid_cell__7xivx79';\nexport var checkboxCell = 'DataGrid_checkboxCell__7xivx7a';\nexport var container = 'DataGrid_container__7xivx71';\nexport var editInput = 'DataGrid_editInput__7xivx7v';\nexport var emptyState = 'DataGrid_emptyState__7xivx7b';\nexport var filterCell = 'DataGrid_filterCell__7xivx7j';\nexport var filterInput = 'DataGrid_filterInput__7xivx7k';\nexport var filterRow = 'DataGrid_filterRow__7xivx7i';\nexport var gridWrapper = 'DataGrid_gridWrapper__7xivx7m';\nexport var groupAggregateItem = 'DataGrid_groupAggregateItem__7xivx7u';\nexport var groupAggregates = 'DataGrid_groupAggregates__7xivx7t';\nexport var groupChevron = 'DataGrid_groupChevron__7xivx7q';\nexport var groupCount = 'DataGrid_groupCount__7xivx7s';\nexport var groupLabel = 'DataGrid_groupLabel__7xivx7r';\nexport var groupRow = 'DataGrid_groupRow__7xivx7p';\nexport var headerButton = 'DataGrid_headerButton__7xivx74';\nexport var headerCell = 'DataGrid_headerCell__7xivx73';\nexport var headerRow = 'DataGrid_headerRow__7xivx72';\nexport var iconButton = 'DataGrid_iconButton__7xivx7h';\nexport var loadingOverlay = 'DataGrid_loadingOverlay__7xivx7n';\nexport var paginationFooter = 'DataGrid_paginationFooter__7xivx7o';\nexport var pinnedCell = 'DataGrid_pinnedCell__7xivx7c';\nexport var pinnedHeaderCell = 'DataGrid_pinnedHeaderCell__7xivx7d';\nexport var pinnedLeftEdge = 'DataGrid_pinnedLeftEdge__7xivx7e';\nexport var pinnedRightEdge = 'DataGrid_pinnedRightEdge__7xivx7f';\nexport var resizeHandle = 'DataGrid_resizeHandle__7xivx76';\nexport var row = 'DataGrid_row__7xivx78';\nexport var sortIcon = 'DataGrid_sortIcon__7xivx75';\nexport var srOnly = 'DataGrid_srOnly__7xivx70';\nexport var toolbar = 'DataGrid_toolbar__7xivx7l';","import { useEffect, useMemo, useRef, useState } from \"react\";\nimport type { KeyboardEvent as ReactKeyboardEvent, ReactElement } from \"react\";\nimport {\n dayButton,\n dayCell,\n grid,\n header,\n monthLabel,\n navButton,\n root,\n weekRow,\n weekdayCell,\n} from \"./Calendar.css\";\nimport type { CalendarProps } from \"./types\";\nimport {\n addDays,\n addMonths,\n clampToMidnight,\n dateKey,\n endOfMonth,\n endOfWeek,\n isSameDay,\n isSameMonth,\n startOfMonth,\n startOfWeek,\n} from \"../../utils/date\";\n\nfunction getCalendarWeeks(month: Date, weekStartsOn: 0 | 1): Date[][] {\n const gridStart = startOfWeek(startOfMonth(month), weekStartsOn);\n const gridEnd = endOfWeek(endOfMonth(month), weekStartsOn);\n\n const weeks: Date[][] = [];\n let cursor = gridStart;\n while (cursor <= gridEnd) {\n const week: Date[] = [];\n for (let i = 0; i < 7; i++) {\n week.push(cursor);\n cursor = addDays(cursor, 1);\n }\n weeks.push(week);\n }\n return weeks;\n}\n\nfunction isDateDisabledBy(\n date: Date,\n minDate: Date | undefined,\n maxDate: Date | undefined,\n isDateDisabled: ((date: Date) => boolean) | undefined\n): boolean {\n const target = clampToMidnight(date);\n if (minDate && target < clampToMidnight(minDate)) return true;\n if (maxDate && target > clampToMidnight(maxDate)) return true;\n if (isDateDisabled?.(target)) return true;\n return false;\n}\n\n/** Walks forward/backward from `date` (inclusive) until an enabled date is found, or null if none within a year. */\nfunction findEnabledDate(\n date: Date,\n direction: 1 | -1,\n minDate: Date | undefined,\n maxDate: Date | undefined,\n isDateDisabled: ((date: Date) => boolean) | undefined\n): Date | null {\n let cursor = date;\n for (let i = 0; i < 366; i++) {\n if (!isDateDisabledBy(cursor, minDate, maxDate, isDateDisabled)) {\n return cursor;\n }\n cursor = addDays(cursor, direction);\n }\n return null;\n}\n\nfunction getFocusableDate(\n month: Date,\n value: Date | null,\n minDate: Date | undefined,\n maxDate: Date | undefined,\n isDateDisabled: ((date: Date) => boolean) | undefined\n): Date {\n if (\n value &&\n isSameMonth(value, month) &&\n !isDateDisabledBy(value, minDate, maxDate, isDateDisabled)\n ) {\n return clampToMidnight(value);\n }\n const today = clampToMidnight(new Date());\n if (\n isSameMonth(today, month) &&\n !isDateDisabledBy(today, minDate, maxDate, isDateDisabled)\n ) {\n return today;\n }\n const firstEnabled = findEnabledDate(\n startOfMonth(month),\n 1,\n minDate,\n maxDate,\n isDateDisabled\n );\n if (firstEnabled && isSameMonth(firstEnabled, month)) {\n return firstEnabled;\n }\n return startOfMonth(month);\n}\n\nexport function Calendar({\n value: controlledValue,\n defaultValue = null,\n onChange,\n month: controlledMonth,\n onMonthChange,\n minDate,\n maxDate,\n isDateDisabled,\n weekStartsOn = 1,\n locale = \"en-US\",\n rangeEnd,\n}: CalendarProps): ReactElement {\n const [uncontrolledValue, setUncontrolledValue] = useState<Date | null>(\n defaultValue\n );\n const value =\n controlledValue !== undefined ? controlledValue : uncontrolledValue;\n\n const setValue = (next: Date) => {\n if (controlledValue === undefined) {\n setUncontrolledValue(next);\n }\n onChange?.(next);\n };\n\n const [uncontrolledMonth, setUncontrolledMonth] = useState<Date>(() =>\n startOfMonth(controlledMonth ?? value ?? new Date())\n );\n const month =\n controlledMonth !== undefined\n ? startOfMonth(controlledMonth)\n : uncontrolledMonth;\n\n const setMonth = (next: Date) => {\n const normalized = startOfMonth(next);\n if (controlledMonth === undefined) {\n setUncontrolledMonth(normalized);\n }\n onMonthChange?.(normalized);\n };\n\n const [rovingDate, setRovingDate] = useState<Date>(() =>\n getFocusableDate(month, value, minDate, maxDate, isDateDisabled)\n );\n const shouldFocusRef = useRef(false);\n const dayRefs = useRef(new Map<string, HTMLButtonElement>());\n\n useEffect(() => {\n setRovingDate((prev) => {\n if (isSameMonth(prev, month)) return prev;\n return getFocusableDate(month, value, minDate, maxDate, isDateDisabled);\n });\n // Only the displayed month should re-derive the roving date; value/min/max changes\n // within the same month are handled by click/keyboard handlers directly.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [month]);\n\n useEffect(() => {\n if (!shouldFocusRef.current) return;\n shouldFocusRef.current = false;\n dayRefs.current.get(dateKey(rovingDate))?.focus();\n }, [rovingDate, month]);\n\n const weeks = useMemo(\n () => getCalendarWeeks(month, weekStartsOn),\n [month, weekStartsOn]\n );\n const today = useMemo(() => clampToMidnight(new Date()), []);\n\n const monthLabelFormatter = useMemo(\n () => new Intl.DateTimeFormat(locale, { month: \"long\", year: \"numeric\" }),\n [locale]\n );\n const weekdayFormatter = useMemo(\n () => new Intl.DateTimeFormat(locale, { weekday: \"short\" }),\n [locale]\n );\n\n const handleDayClick = (date: Date, disabled: boolean, inMonth: boolean) => {\n if (disabled) return;\n if (!inMonth) {\n setMonth(startOfMonth(date));\n return;\n }\n const normalized = clampToMidnight(date);\n setValue(normalized);\n setRovingDate(normalized);\n };\n\n const handleKeyDown = (\n event: ReactKeyboardEvent<HTMLButtonElement>,\n date: Date\n ) => {\n let targetRaw: Date;\n let direction: 1 | -1;\n switch (event.key) {\n case \"ArrowLeft\":\n targetRaw = addDays(date, -1);\n direction = -1;\n break;\n case \"ArrowRight\":\n targetRaw = addDays(date, 1);\n direction = 1;\n break;\n case \"ArrowUp\":\n targetRaw = addDays(date, -7);\n direction = -1;\n break;\n case \"ArrowDown\":\n targetRaw = addDays(date, 7);\n direction = 1;\n break;\n case \"Home\":\n targetRaw = startOfWeek(date, weekStartsOn);\n direction = -1;\n break;\n case \"End\":\n targetRaw = endOfWeek(date, weekStartsOn);\n direction = 1;\n break;\n case \"PageUp\":\n targetRaw = addMonths(date, -1);\n direction = -1;\n break;\n case \"PageDown\":\n targetRaw = addMonths(date, 1);\n direction = 1;\n break;\n default:\n return;\n }\n event.preventDefault();\n const target = findEnabledDate(\n targetRaw,\n direction,\n minDate,\n maxDate,\n isDateDisabled\n );\n if (!target) return;\n shouldFocusRef.current = true;\n setRovingDate(target);\n if (!isSameMonth(target, month)) {\n setMonth(startOfMonth(target));\n }\n };\n\n const monthLabelText = monthLabelFormatter.format(month);\n const clampedValue = value ? clampToMidnight(value) : null;\n const clampedRangeEnd = rangeEnd ? clampToMidnight(rangeEnd) : null;\n\n return (\n <div className={root} role=\"application\" aria-label={monthLabelText}>\n <div className={header}>\n <button\n type=\"button\"\n className={navButton}\n onClick={() => setMonth(addMonths(month, -1))}\n aria-label=\"Previous month\"\n >\n ‹\n </button>\n <span className={monthLabel}>{monthLabelText}</span>\n <button\n type=\"button\"\n className={navButton}\n onClick={() => setMonth(addMonths(month, 1))}\n aria-label=\"Next month\"\n >\n ›\n </button>\n </div>\n <div className={grid} role=\"grid\" aria-label={monthLabelText}>\n <div className={weekRow} role=\"row\">\n {weeks[0]!.map((date) => (\n <div\n key={dateKey(date)}\n className={weekdayCell}\n role=\"columnheader\"\n >\n {weekdayFormatter.format(date)}\n </div>\n ))}\n </div>\n {weeks.map((week, weekIndex) => (\n <div key={weekIndex} className={weekRow} role=\"row\">\n {week.map((date) => {\n const inMonth = isSameMonth(date, month);\n const disabled = isDateDisabledBy(\n date,\n minDate,\n maxDate,\n isDateDisabled\n );\n const isRangeEndDay = clampedRangeEnd\n ? isSameDay(date, clampedRangeEnd)\n : false;\n const selected =\n (clampedValue ? isSameDay(date, clampedValue) : false) ||\n isRangeEndDay;\n const inRange = Boolean(\n clampedValue &&\n clampedRangeEnd &&\n date > clampedValue &&\n date < clampedRangeEnd\n );\n const isToday = isSameDay(date, today);\n const tabIndex =\n inMonth && !disabled && isSameDay(date, rovingDate) ? 0 : -1;\n\n return (\n <div key={dateKey(date)} className={dayCell} role=\"gridcell\">\n <button\n type=\"button\"\n ref={(el) => {\n if (el) {\n dayRefs.current.set(dateKey(date), el);\n } else {\n dayRefs.current.delete(dateKey(date));\n }\n }}\n className={dayButton}\n data-outside={!inMonth || undefined}\n data-today={isToday || undefined}\n data-selected={selected || undefined}\n data-in-range={inRange || undefined}\n disabled={disabled}\n tabIndex={tabIndex}\n aria-selected={selected || undefined}\n aria-current={isToday ? \"date\" : undefined}\n aria-disabled={disabled || undefined}\n aria-label={date.toDateString()}\n onClick={() => handleDayClick(date, disabled, inMonth)}\n onKeyDown={\n inMonth ? (e) => handleKeyDown(e, date) : undefined\n }\n >\n {date.getDate()}\n </button>\n </div>\n );\n })}\n </div>\n ))}\n </div>\n </div>\n );\n}\n","import 'src/components/Calendar/Calendar.css.ts.vanilla.css?source=#H4sIAAAAAAAAA81XTU_cMBC98ytyAySM2OWjNKiXIvVULtBDpapazcaTxODYqT82m1b971Wc2tmEwGZbRHuKMnmeeZ43nnGOr4GjoKAWSkqzWMxsfXZa1CfRj70ookyXHOo4YoIzgSTluL7ai6LmSShTmBgmRRwlkttCNF8yKONoBeqAEF1CgkQXi8X8oYZ5lR82gBIoZSLrgwrqQcyBUikMSaFgvPZAZ1pKWnvk7KSDavYde8DGcBciz04dNJFcKg9zL8Tg2nhUC1pC8pApaQXtI7VVKSR4C0xjYDtvl0hFUZGKUZP7RZs2j6420drUHAdoZ_PoehM9Qr394tF0E62AMqs9vH3byLE8vNr7uXcchM8RnKff0s_60nvNgbNMEGaw0HGUoDCoGvO91YalNUmkMChMHLWKLtFUiFNKYpNJIYXJP8ISeWAzd2ycqBWyLDc9nVvTDVJmO7UvtxTGTcjE7GxAQMDqvTVGihD_9NmDMDUp3adelbT5WHPP58Exz3v7HMe8Xs0ZBUKXoFCYbSXWCSsenaWBm0lnMbFKN6hSMp--yapGkRPK53LWWKQ1jTGOhBTYGBwp1vQwUipZojJ1vMG6JXYULeWa6ByorAaLqFXQdsCWTCF75g-gw45myeFgsWEFExlJrUhGfCBoJrKwGrcXapzLFapYSHMQU6ZhyZEeuurd0tNCkAkxUplYTVZMsyXH1nlITqhY90Yc1PteTfDtSTu3XnshDQHOZYXUSVhCwhqVTo7P-x4zxWhwdjbew3aYW-tAPRtQrxAfbmUVYp2Px9rRI4X6GnnX9y7-rgs_23DmXTfhT3YcHorvfks__Rw2Npt30N269RP94Maabtq2x7oxE3eMUqmKOLJliSoBjf2cDvP55mXyOQgxqOHLfy3aI9C2OXFnlOzazPo1p0VqeSD77UXmRe_ayESOipld74iPR86fT40uMUfR_ztKRsr4xUfJWIyXGiVjvv9ulIx4_ELBAJHWaEbx3b5RFve_tt4ndq5JAYykUPfc7_IDMCkEE0SByPqb2EHWXa6Akwhp5JgYpJMIlYoVoMJP4MWWn6RR-NO4Txst5W3D_xfoMyz9Hg8AAA';\nexport var dayButton = 'Calendar_dayButton__1uy43my8';\nexport var dayCell = 'Calendar_dayCell__1uy43my7';\nexport var grid = 'Calendar_grid__1uy43my4';\nexport var header = 'Calendar_header__1uy43my1';\nexport var monthLabel = 'Calendar_monthLabel__1uy43my2';\nexport var navButton = 'Calendar_navButton__1uy43my3';\nexport var root = 'Calendar_root__1uy43my0';\nexport var weekRow = 'Calendar_weekRow__1uy43my5';\nexport var weekdayCell = 'Calendar_weekdayCell__1uy43my6';","export function startOfMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), 1);\n}\n\nexport function endOfMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0);\n}\n\nexport function addDays(date: Date, amount: number): Date {\n const next = new Date(date);\n next.setDate(next.getDate() + amount);\n return next;\n}\n\nexport function addMonths(date: Date, amount: number): Date {\n const next = new Date(date);\n next.setMonth(next.getMonth() + amount);\n return next;\n}\n\nexport function isSameDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nexport function isSameMonth(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();\n}\n\nexport function clampToMidnight(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n}\n\nexport function startOfWeek(date: Date, weekStartsOn: 0 | 1): Date {\n const diff = (date.getDay() - weekStartsOn + 7) % 7;\n return addDays(date, -diff);\n}\n\nexport function endOfWeek(date: Date, weekStartsOn: 0 | 1): Date {\n return addDays(startOfWeek(date, weekStartsOn), 6);\n}\n\nexport function dateKey(date: Date): string {\n return `${date.getFullYear()}-${date.getMonth()}-${date.getDate()}`;\n}\n","import { useEffect, useRef, useState } from \"react\";\nimport type { KeyboardEvent as ReactKeyboardEvent, ReactElement } from \"react\";\nimport {\n FloatingFocusManager,\n FloatingPortal,\n autoUpdate,\n flip,\n offset,\n shift,\n useDismiss,\n useFloating,\n useInteractions,\n useRole,\n} from \"@floating-ui/react\";\nimport { Calendar } from \"../Calendar\";\nimport { dateInput, iconButton, popover, wrapper } from \"./DatePicker.css\";\nimport type { DatePickerProps } from \"./types\";\n\nfunction startOfMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), 1);\n}\n\nfunction clampToMidnight(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n}\n\nfunction isDisabled(\n date: Date,\n minDate: Date | undefined,\n maxDate: Date | undefined,\n isDateDisabled: ((date: Date) => boolean) | undefined\n): boolean {\n const target = clampToMidnight(date);\n if (minDate && target < clampToMidnight(minDate)) return true;\n if (maxDate && target > clampToMidnight(maxDate)) return true;\n if (isDateDisabled?.(target)) return true;\n return false;\n}\n\n/** Which {month, day, year} order this locale's short numeric date format uses. */\nfunction getDatePartOrder(locale: string): Array<\"month\" | \"day\" | \"year\"> {\n const parts = new Intl.DateTimeFormat(locale).formatToParts(\n new Date(2000, 0, 2)\n );\n return parts\n .filter(\n (\n part\n ): part is Intl.DateTimeFormatPart & { type: \"month\" | \"day\" | \"year\" } =>\n part.type === \"month\" || part.type === \"day\" || part.type === \"year\"\n )\n .map((part) => part.type);\n}\n\nfunction getDatePlaceholder(locale: string): string {\n const parts = new Intl.DateTimeFormat(locale).formatToParts(\n new Date(2000, 0, 2)\n );\n return parts\n .map((part) => {\n switch (part.type) {\n case \"month\":\n return \"MM\";\n case \"day\":\n return \"DD\";\n case \"year\":\n return \"YYYY\";\n default:\n return part.value;\n }\n })\n .join(\"\");\n}\n\nfunction formatDate(date: Date, locale: string): string {\n return new Intl.DateTimeFormat(locale).format(date);\n}\n\n/** Parses locale-ordered numeric input like \"2/14/2024\" into a real calendar Date, or null if invalid. */\nfunction parseDate(text: string, locale: string): Date | null {\n const numbers = text.match(/\\d+/g);\n if (!numbers || numbers.length < 3) return null;\n\n const order = getDatePartOrder(locale);\n if (order.length < 3) return null;\n\n const values: Partial<Record<\"month\" | \"day\" | \"year\", number>> = {};\n order.forEach((type, i) => {\n values[type] = Number.parseInt(numbers[i]!, 10);\n });\n\n const { month, day, year } = values;\n if (!month || !day || !year) return null;\n\n const fullYear = year < 100 ? 2000 + year : year;\n const date = new Date(fullYear, month - 1, day);\n // Reject values that overflowed into the next month (e.g. Feb 31).\n if (\n date.getFullYear() !== fullYear ||\n date.getMonth() !== month - 1 ||\n date.getDate() !== day\n ) {\n return null;\n }\n return date;\n}\n\nexport function DatePicker({\n value: controlledValue,\n defaultValue = null,\n onChange,\n minDate,\n maxDate,\n isDateDisabled,\n weekStartsOn = 1,\n locale = \"en-US\",\n placeholder,\n disabled = false,\n open: controlledOpen,\n onOpenChange,\n}: DatePickerProps): ReactElement {\n const [uncontrolledValue, setUncontrolledValue] = useState<Date | null>(\n defaultValue\n );\n const value =\n controlledValue !== undefined ? controlledValue : uncontrolledValue;\n\n const setValue = (next: Date | null) => {\n if (controlledValue === undefined) {\n setUncontrolledValue(next);\n }\n onChange?.(next);\n };\n\n const [uncontrolledOpen, setUncontrolledOpen] = useState(false);\n const open = controlledOpen ?? uncontrolledOpen;\n const setOpen = onOpenChange ?? setUncontrolledOpen;\n\n const [month, setMonth] = useState<Date>(() =>\n startOfMonth(value ?? new Date())\n );\n const [inputText, setInputText] = useState(() =>\n value ? formatDate(value, locale) : \"\"\n );\n const inputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n setInputText(value ? formatDate(value, locale) : \"\");\n }, [value, locale]);\n\n useEffect(() => {\n if (open && value) {\n setMonth(startOfMonth(value));\n }\n // Only re-sync the displayed month at the moment the popover opens.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open]);\n\n const { refs, floatingStyles, context } = useFloating({\n open,\n onOpenChange: setOpen,\n placement: \"bottom-start\",\n whileElementsMounted: autoUpdate,\n middleware: [offset(8), flip(), shift({ padding: 8 })],\n });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n useDismiss(context),\n useRole(context, { role: \"dialog\" }),\n ]);\n\n const revertInputText = () => {\n setInputText(value ? formatDate(value, locale) : \"\");\n };\n\n const commitTypedValue = () => {\n const trimmed = inputText.trim();\n if (!trimmed) {\n if (value !== null) {\n setValue(null);\n }\n return;\n }\n\n const parsed = parseDate(trimmed, locale);\n if (!parsed || isDisabled(parsed, minDate, maxDate, isDateDisabled)) {\n revertInputText();\n return;\n }\n\n setValue(parsed);\n setMonth(startOfMonth(parsed));\n setInputText(formatDate(parsed, locale));\n };\n\n const handleInputKeyDown = (event: ReactKeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n commitTypedValue();\n }\n };\n\n const handleCalendarChange = (date: Date) => {\n setValue(date);\n setMonth(startOfMonth(date));\n setOpen(false);\n };\n\n const placeholderText = placeholder ?? getDatePlaceholder(locale);\n\n return (\n <div className={wrapper} ref={refs.setReference}>\n <input\n ref={inputRef}\n type=\"text\"\n className={dateInput}\n value={inputText}\n placeholder={placeholderText}\n disabled={disabled}\n onChange={(e) => setInputText(e.target.value)}\n onBlur={commitTypedValue}\n onKeyDown={handleInputKeyDown}\n aria-label=\"Date\"\n />\n <button\n type=\"button\"\n className={iconButton}\n disabled={disabled}\n aria-label={open ? \"Close calendar\" : \"Open calendar\"}\n {...getReferenceProps({\n onClick: () => {\n if (disabled) return;\n setOpen(!open);\n },\n })}\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <rect\n x=\"1.5\"\n y=\"2.5\"\n width=\"13\"\n height=\"12\"\n rx=\"1.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.3\"\n />\n <path d=\"M1.5 6h13\" stroke=\"currentColor\" strokeWidth=\"1.3\" />\n <path\n d=\"M4.5 1v3M11.5 1v3\"\n stroke=\"currentColor\"\n strokeWidth=\"1.3\"\n strokeLinecap=\"round\"\n />\n </svg>\n </button>\n {open ? (\n <FloatingPortal>\n <FloatingFocusManager\n context={context}\n modal={false}\n returnFocus={inputRef}\n >\n <div\n ref={refs.setFloating}\n className={popover}\n style={floatingStyles}\n {...getFloatingProps()}\n >\n <Calendar\n value={value}\n onChange={handleCalendarChange}\n month={month}\n onMonthChange={setMonth}\n minDate={minDate}\n maxDate={maxDate}\n isDateDisabled={isDateDisabled}\n weekStartsOn={weekStartsOn}\n locale={locale}\n />\n </div>\n </FloatingFocusManager>\n </FloatingPortal>\n ) : null}\n </div>\n );\n}\n","import 'src/components/DatePicker/DatePicker.css.ts.vanilla.css?source=#H4sIAAAAAAAAA82W3W_TMBDA3_tX5AVtlfCU7gOkTLwghOBhCMETQqi6xJfW1PFZ9qUfQ_vfUZwlbbqsDQOhvcWXn-_Ld2efvQPGzypboJuuHFiLbjqVr8vNBOLo1yiKLHnFikwSOdTAaonXoyiSylsNmyRSRiuDIte4ruQrJXmeRJM4fnE9uhud7WiXwPjR2JIb_ZOgv9WUasoWD3REUU6GRQ6F0pskWoI7FSKIUpKb6fR8sYHz1SQet6hXt9gBK8GNbNHLgAav56hmc-7AlfxDEH8iV4But6VhW0aaXLMhLATjmhvqIkApZIuZo9LILulLl0OGrcoaJifRCQdSlb7h65UoWq9pl71PUI3uyhp6tUt73mjco4OsoTe7dE-A9Z-GloG2IKUyM8FkG9hbyFD4ogHnHTAlZiqGsRpz7pLbRKgO6XbPr0bX7ZEtAkolV2eaRIZMKF12YOqSFtaRRcdV8e1E_zJKaS38HCSt9jbI0kHdDLXJgjri9-DbUphk473NrIrK57w0WY8OBK_MrN2N4-P9kyRWQ4Zz0hJdaKZHyvOmZGwzeDlE85yW6BJDfJpI5SHVKMfBwrEy-cqOtmEMiiKnrPRiqbxKNR4xYp0qwLV9_-q-dJvjakshrETQ3LDLIb40wdbZLJ2vHDDEArSmFcpQURYyVRVNfHZ1XOV3cAqEMkvQSr45YVfiyY8jUUows23HZQMc77XyR5l9aPPpiVUZmbclM5nGwfO9uwRST7rkuiGrGXJVD_u-hm4NzbYdlZMrkvpTA-O3U3EVvxgfuplAq5kRirHwSZShYXSV-GfpWeUbkZFhNLz7qzNm-4dL9wLpZ_7f0A7psODQ8LGbZTt6zYMra0_N0Jmy7RdLqsnhwOnbWm8m8HMexD3VfWBeHn4LfAHlt2k8H_rGOO5QX-v_s2b-6zFpyVYJaxRePDVVh0pct2don9nj6dGT2Lpc9r9dboUyEtdJNJnE8fXo7jdIcTnhvgsAAA';\nexport var dateInput = 'DatePicker_dateInput__d7uy1a1';\nexport var iconButton = 'DatePicker_iconButton__d7uy1a2';\nexport var popover = 'DatePicker_popover__d7uy1a3';\nexport var wrapper = 'DatePicker_wrapper__d7uy1a0';","import { useEffect, useState } from \"react\";\nimport type { KeyboardEvent as ReactKeyboardEvent, ReactElement } from \"react\";\nimport {\n FloatingFocusManager,\n FloatingPortal,\n autoUpdate,\n flip,\n offset,\n shift,\n useDismiss,\n useFloating,\n useInteractions,\n useRole,\n} from \"@floating-ui/react\";\nimport { Calendar } from \"../Calendar\";\nimport {\n dateInput,\n iconButton,\n popover,\n separator,\n wrapper,\n} from \"./DateRangePicker.css\";\nimport type { DateRange, DateRangePickerProps } from \"./types\";\n\nfunction startOfMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), 1);\n}\n\nfunction clampToMidnight(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n}\n\n/** -1 if a < b, 0 if same day, 1 if a > b — compares calendar dates, ignoring time of day. */\nfunction compareDates(a: Date, b: Date): number {\n const x = clampToMidnight(a).getTime();\n const y = clampToMidnight(b).getTime();\n if (x < y) return -1;\n if (x > y) return 1;\n return 0;\n}\n\nfunction isDisabled(\n date: Date,\n minDate: Date | undefined,\n maxDate: Date | undefined,\n isDateDisabled: ((date: Date) => boolean) | undefined\n): boolean {\n const target = clampToMidnight(date);\n if (minDate && target < clampToMidnight(minDate)) return true;\n if (maxDate && target > clampToMidnight(maxDate)) return true;\n if (isDateDisabled?.(target)) return true;\n return false;\n}\n\n/** Which {month, day, year} order this locale's short numeric date format uses. */\nfunction getDatePartOrder(locale: string): Array<\"month\" | \"day\" | \"year\"> {\n const parts = new Intl.DateTimeFormat(locale).formatToParts(\n new Date(2000, 0, 2)\n );\n return parts\n .filter(\n (\n part\n ): part is Intl.DateTimeFormatPart & { type: \"month\" | \"day\" | \"year\" } =>\n part.type === \"month\" || part.type === \"day\" || part.type === \"year\"\n )\n .map((part) => part.type);\n}\n\nfunction getDatePlaceholder(locale: string): string {\n const parts = new Intl.DateTimeFormat(locale).formatToParts(\n new Date(2000, 0, 2)\n );\n return parts\n .map((part) => {\n switch (part.type) {\n case \"month\":\n return \"MM\";\n case \"day\":\n return \"DD\";\n case \"year\":\n return \"YYYY\";\n default:\n return part.value;\n }\n })\n .join(\"\");\n}\n\nfunction formatDate(date: Date, locale: string): string {\n return new Intl.DateTimeFormat(locale).format(date);\n}\n\n/** Parses locale-ordered numeric input like \"2/14/2024\" into a real calendar Date, or null if invalid. */\nfunction parseDate(text: string, locale: string): Date | null {\n const numbers = text.match(/\\d+/g);\n if (!numbers || numbers.length < 3) return null;\n\n const order = getDatePartOrder(locale);\n if (order.length < 3) return null;\n\n const values: Partial<Record<\"month\" | \"day\" | \"year\", number>> = {};\n order.forEach((type, i) => {\n values[type] = Number.parseInt(numbers[i]!, 10);\n });\n\n const { month, day, year } = values;\n if (!month || !day || !year) return null;\n\n const fullYear = year < 100 ? 2000 + year : year;\n const date = new Date(fullYear, month - 1, day);\n // Reject values that overflowed into the next month (e.g. Feb 31).\n if (\n date.getFullYear() !== fullYear ||\n date.getMonth() !== month - 1 ||\n date.getDate() !== day\n ) {\n return null;\n }\n return date;\n}\n\nconst EMPTY_RANGE: DateRange = { start: null, end: null };\n\nexport function DateRangePicker({\n value: controlledValue,\n defaultValue = EMPTY_RANGE,\n onChange,\n minDate,\n maxDate,\n isDateDisabled,\n weekStartsOn = 1,\n locale = \"en-US\",\n startPlaceholder,\n endPlaceholder,\n disabled = false,\n open: controlledOpen,\n onOpenChange,\n}: DateRangePickerProps): ReactElement {\n const [uncontrolledValue, setUncontrolledValue] =\n useState<DateRange>(defaultValue);\n const value =\n controlledValue !== undefined ? controlledValue : uncontrolledValue;\n\n const setValue = (next: DateRange) => {\n if (controlledValue === undefined) {\n setUncontrolledValue(next);\n }\n onChange?.(next);\n };\n\n const [uncontrolledOpen, setUncontrolledOpen] = useState(false);\n const open = controlledOpen ?? uncontrolledOpen;\n const setOpen = onOpenChange ?? setUncontrolledOpen;\n\n const [month, setMonth] = useState<Date>(() =>\n startOfMonth(value.start ?? new Date())\n );\n const [startText, setStartText] = useState(() =>\n value.start ? formatDate(value.start, locale) : \"\"\n );\n const [endText, setEndText] = useState(() =>\n value.end ? formatDate(value.end, locale) : \"\"\n );\n\n useEffect(() => {\n setStartText(value.start ? formatDate(value.start, locale) : \"\");\n }, [value.start, locale]);\n\n useEffect(() => {\n setEndText(value.end ? formatDate(value.end, locale) : \"\");\n }, [value.end, locale]);\n\n useEffect(() => {\n if (open && value.start) {\n setMonth(startOfMonth(value.start));\n }\n // Only re-sync the displayed month at the moment the popover opens.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open]);\n\n const { refs, floatingStyles, context } = useFloating({\n open,\n onOpenChange: setOpen,\n placement: \"bottom-start\",\n whileElementsMounted: autoUpdate,\n middleware: [offset(8), flip(), shift({ padding: 8 })],\n });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n useDismiss(context),\n useRole(context, { role: \"dialog\" }),\n ]);\n\n const revertStartText = () => {\n setStartText(value.start ? formatDate(value.start, locale) : \"\");\n };\n\n const revertEndText = () => {\n setEndText(value.end ? formatDate(value.end, locale) : \"\");\n };\n\n const commitStartText = () => {\n const trimmed = startText.trim();\n if (!trimmed) {\n if (value.start !== null) {\n setValue({ start: null, end: value.end });\n }\n return;\n }\n\n const parsed = parseDate(trimmed, locale);\n if (\n !parsed ||\n isDisabled(parsed, minDate, maxDate, isDateDisabled) ||\n (value.end && compareDates(parsed, value.end) > 0)\n ) {\n revertStartText();\n return;\n }\n\n setValue({ start: parsed, end: value.end });\n setMonth(startOfMonth(parsed));\n };\n\n const commitEndText = () => {\n const trimmed = endText.trim();\n if (!trimmed) {\n if (value.end !== null) {\n setValue({ start: value.start, end: null });\n }\n return;\n }\n\n const parsed = parseDate(trimmed, locale);\n if (\n !parsed ||\n isDisabled(parsed, minDate, maxDate, isDateDisabled) ||\n (value.start && compareDates(parsed, value.start) < 0)\n ) {\n revertEndText();\n return;\n }\n\n setValue({ start: value.start, end: parsed });\n setMonth(startOfMonth(parsed));\n };\n\n const handleStartKeyDown = (event: ReactKeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n commitStartText();\n }\n };\n\n const handleEndKeyDown = (event: ReactKeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n commitEndText();\n }\n };\n\n const handleCalendarChange = (date: Date) => {\n const { start, end } = value;\n if (!start || (start && end)) {\n setValue({ start: date, end: null });\n setMonth(startOfMonth(date));\n return;\n }\n\n if (compareDates(date, start) < 0) {\n setValue({ start: date, end: start });\n } else {\n setValue({ start, end: date });\n }\n setOpen(false);\n };\n\n const startPlaceholderText = startPlaceholder ?? getDatePlaceholder(locale);\n const endPlaceholderText = endPlaceholder ?? getDatePlaceholder(locale);\n\n return (\n <div\n className={wrapper}\n data-disabled={disabled || undefined}\n ref={refs.setReference}\n >\n <input\n type=\"text\"\n className={dateInput}\n value={startText}\n placeholder={startPlaceholderText}\n disabled={disabled}\n onChange={(e) => setStartText(e.target.value)}\n onBlur={commitStartText}\n onKeyDown={handleStartKeyDown}\n aria-label=\"Start date\"\n />\n <span className={separator} aria-hidden=\"true\">\n –\n </span>\n <input\n type=\"text\"\n className={dateInput}\n value={endText}\n placeholder={endPlaceholderText}\n disabled={disabled}\n onChange={(e) => setEndText(e.target.value)}\n onBlur={commitEndText}\n onKeyDown={handleEndKeyDown}\n aria-label=\"End date\"\n />\n <button\n type=\"button\"\n className={iconButton}\n disabled={disabled}\n aria-label={open ? \"Close calendar\" : \"Open calendar\"}\n {...getReferenceProps({\n onClick: () => {\n if (disabled) return;\n setOpen(!open);\n },\n })}\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <rect\n x=\"1.5\"\n y=\"2.5\"\n width=\"13\"\n height=\"12\"\n rx=\"1.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.3\"\n />\n <path d=\"M1.5 6h13\" stroke=\"currentColor\" strokeWidth=\"1.3\" />\n <path\n d=\"M4.5 1v3M11.5 1v3\"\n stroke=\"currentColor\"\n strokeWidth=\"1.3\"\n strokeLinecap=\"round\"\n />\n </svg>\n </button>\n {open ? (\n <FloatingPortal>\n <FloatingFocusManager context={context} modal={false}>\n <div\n ref={refs.setFloating}\n className={popover}\n style={floatingStyles}\n {...getFloatingProps()}\n >\n <Calendar\n value={value.start}\n rangeEnd={value.end}\n onChange={handleCalendarChange}\n month={month}\n onMonthChange={setMonth}\n minDate={minDate}\n maxDate={maxDate}\n isDateDisabled={isDateDisabled}\n weekStartsOn={weekStartsOn}\n locale={locale}\n />\n </div>\n </FloatingFocusManager>\n </FloatingPortal>\n ) : null}\n </div>\n );\n}\n","import 'src/components/DateRangePicker/DateRangePicker.css.ts.vanilla.css?source=#H4sIAAAAAAAAA81WTW_bMAy951f4MrQBpiJO0x1c7DIMw3boMLTHYQgYi4m1yJIg0fno0P8-WI6UOHUTbwOGHk0_kU_kk56uPgLhPagFfhP5Eu10bcEYtNNpmtL4xk5Gya9BkhjtBAmtssSiBBIrvB0kCRfOSNhmiVBSKGRziZs6DlIsFBOEpcuSHBWhrcNrwanIknQ0elN_LsBkyQrsJWPOQI5s46bT8XIL4_ViWANmkC8XVleKB1yupbbMVXYOOQZw2oC15WiZBS4qF_DNFyt5wOpD7I5PAz2MBfT6EO1oK_EI7WMBvT1Ee6Zt2s2fgOYebYBzoRZM4pzazdhzFi2kFYuCTvdNV1SPI0uUVn5OZEE182PGaoOWtlmL6NtkpjfMFcD1-mgBryw0k29KlroV_gSO4iDy4dFiEmXNeV6pvCMHghNqEVfj8HbwNLg6K8is0Cu0Xpbnmv1AVu8r9C4w13nl2FpQIdSZOsaKEuw2lHi300BoZhyU_2I-ccCuetL5zoGAceFgJpG_vyBb4cUPzyuvrKsZKU0MpNRr5F4ABnJRz3h0ddNZgwPhF2UqilVSn68-wFmS1jlKocIBGe11vdfU4eH0EzdgUVH9a64VsTmUQm7D_n1opnlsVDoaRqgTj9gC1oG7qP904qH-hinwUP4eXMc_-_BXbUuQcdnML-uYGeEmava6dbhIH11JrgzAogWcaSJdnsYeHcN-Y8gyIyHHQku-0_gLG7irCGOLJt1S6sofdPSyfjoSOTRggfReleOoF-YKK9RyJ5O-bE-N_iE2Mr3u3pjItfpQEWkVCV17Qn_oSD8rR2K-ZblWhIoOfz3fWssudjdvVNvS76ktz27M_zOfo2N5yiH32lXPrPcoTf8JB3UZLUJXe1pTrB7s6dW7VJciG6PKlKbLeOyGjZ-cftncg3D7Zo773mN9aTX2thJOzCTu_O0fDKuzxvlrpodNGW3qDsa0k79t3inpyzhb88oehy9OZU-56n7wPTKhuLfydDS6HTz9BvtQj6bmCwAA';\nexport var dateInput = 'DateRangePicker_dateInput__11t25r41';\nexport var iconButton = 'DateRangePicker_iconButton__11t25r43';\nexport var popover = 'DateRangePicker_popover__11t25r44';\nexport var separator = 'DateRangePicker_separator__11t25r42';\nexport var wrapper = 'DateRangePicker_wrapper__11t25r40';","import { forwardRef, useEffect, useRef, useState } from \"react\";\nimport type { CSSProperties, FocusEvent, KeyboardEvent as ReactKeyboardEvent, ReactElement } from \"react\";\nimport { useMergeRefs } from \"@floating-ui/react\";\nimport { input, stepButton, stepperGroup, wrapper } from \"./NumberInput.css\";\n\nexport interface NumberInputProps {\n value?: number | null;\n defaultValue?: number | null;\n onChange?: (value: number | null) => void;\n min?: number;\n max?: number;\n step?: number;\n disabled?: boolean;\n invalid?: boolean;\n placeholder?: string;\n id?: string;\n name?: string;\n className?: string;\n style?: CSSProperties;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n}\n\nfunction clamp(value: number, min: number | undefined, max: number | undefined): number {\n let result = value;\n if (min !== undefined) result = Math.max(min, result);\n if (max !== undefined) result = Math.min(max, result);\n return result;\n}\n\nfunction formatValue(value: number | null): string {\n return value === null ? \"\" : String(value);\n}\n\nexport const NumberInput = forwardRef<HTMLInputElement, NumberInputProps>(function NumberInput(\n {\n value: controlledValue,\n defaultValue = null,\n onChange,\n min,\n max,\n step = 1,\n disabled = false,\n invalid,\n placeholder,\n id,\n name,\n className,\n style,\n ...rest\n },\n ref\n): ReactElement {\n const [uncontrolledValue, setUncontrolledValue] = useState<number | null>(defaultValue);\n const value = controlledValue !== undefined ? controlledValue : uncontrolledValue;\n\n const setValue = (next: number | null) => {\n if (controlledValue === undefined) {\n setUncontrolledValue(next);\n }\n onChange?.(next);\n };\n\n const [inputText, setInputText] = useState(() => formatValue(value));\n\n useEffect(() => {\n setInputText(formatValue(value));\n }, [value]);\n\n const inputRef = useRef<HTMLInputElement>(null);\n const mergedRef = useMergeRefs([inputRef, ref]);\n\n const commitTypedValue = () => {\n const trimmed = inputText.trim();\n if (!trimmed) {\n if (value !== null) setValue(null);\n return;\n }\n\n const parsed = Number(trimmed);\n if (Number.isNaN(parsed)) {\n setInputText(formatValue(value));\n return;\n }\n\n const clamped = clamp(parsed, min, max);\n setValue(clamped);\n setInputText(formatValue(clamped));\n };\n\n const step2 = (direction: 1 | -1) => {\n if (disabled) return;\n const base = value ?? min ?? 0;\n const next = clamp(base + direction * step, min, max);\n setValue(next);\n setInputText(formatValue(next));\n inputRef.current?.focus();\n };\n\n const handleKeyDown = (event: ReactKeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n commitTypedValue();\n return;\n }\n if (event.key === \"ArrowUp\") {\n event.preventDefault();\n step2(1);\n return;\n }\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n step2(-1);\n return;\n }\n if (event.key === \"Home\" && min !== undefined) {\n event.preventDefault();\n setValue(min);\n setInputText(formatValue(min));\n return;\n }\n if (event.key === \"End\" && max !== undefined) {\n event.preventDefault();\n setValue(max);\n setInputText(formatValue(max));\n }\n };\n\n const handleBlur = (_event: FocusEvent<HTMLInputElement>) => {\n commitTypedValue();\n };\n\n const classes = [wrapper, className].filter(Boolean).join(\" \");\n\n return (\n <span className={classes} style={style} data-disabled={disabled || undefined}>\n <input\n ref={mergedRef}\n id={id}\n name={name}\n type=\"text\"\n inputMode=\"decimal\"\n className={input}\n value={inputText}\n placeholder={placeholder}\n disabled={disabled}\n role=\"spinbutton\"\n aria-valuenow={value ?? undefined}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-invalid={invalid || undefined}\n onChange={(e) => setInputText(e.target.value)}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n {...rest}\n />\n <span className={stepperGroup}>\n <button\n type=\"button\"\n tabIndex={-1}\n className={stepButton}\n disabled={disabled || (max !== undefined && value !== null && value >= max)}\n aria-label=\"Increment\"\n onClick={() => step2(1)}\n >\n <svg width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M1 5l3-3 3 3\" stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n <button\n type=\"button\"\n tabIndex={-1}\n className={stepButton}\n disabled={disabled || (min !== undefined && value !== null && value <= min)}\n aria-label=\"Decrement\"\n onClick={() => step2(-1)}\n >\n <svg width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M1 3l3 3 3-3\" stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n </span>\n </span>\n );\n});\n","import 'src/components/NumberInput/NumberInput.css.ts.vanilla.css?source=#H4sIAAAAAAAAA6WWTW8aMRCG7_wKX6oEqY6ApD1s1EsP_Tgkh_YYVci7ngUXr8eyx8C26n-v1st-AWWJegF5eDwej-ed4e45FCm4r8YGWu6csBbccjnf7u9npZux3xPGLHpFCk3CHGhBaguPE8ak8laLMmHKaGWA5xr2lV1otTJcERQ-YZ4cULau7DslaZ2w-Wz25nHyZ3J38dwXKUhwqbxINcgfMQy0IlNUJmx2965ymAXn0SXMIHGhNe5AnjhW8bNxO49-2sBTjdnmJDTGcjTEc1EoXSZsK9wt59GUoiyXy8WmFIvdfDZtUa9-wQCsDE-yRR8iGpO0BrVa0wCu7F-i-RldIXS7LY3bMtTVJesNccEJ9tRQ9xFKRbZZOQxGDkkfXC4yaF3WMDoJjjshVfANX6940UaNffaQoBrt2xp616c9lRqO6Ghr6LJPn7lg_UtDy0hbIaUyK05oG9hbkQH3RQOuB2CKRFhcx2rIaUh2iVAD0vXfr0b37ZNtIoqBqjetCtNEpZATplYQtw4tuKqI-7d_y1Lcc78WEndHG2RwotZefWSBA_Mn4dtSmGfTo82kiirmPJjsjA8QXplVuxumY-pJEqtFBmvUElyU0j-K8ykQtPl7GPe7xi24xCDdJo3kp9H_WIl8J4fdFa64QY5Z8HyrvEo1jBxhnSqEaxX__lC0zUO1RRBXPHpu2O14JM1F6zy-vpW9CKcEV2YrtJIfbsgFuPkxciMpzKrTVTYa5NkzXpXD0xP_I4WeoJoSnx0G2wa5OBpRIvWoA9XCq3rF3MaxdBDuYdU0h8OyHQnNEKu-uVQODsLJUIfC9GbFYlbtPBPgx0CEpg3vPoZXuUvY_OxRg3mZgSFwlfln8KTykmdoCAz1fzr0ooTNujbadZv-LIi9wAoHhi7MkhO5dgVpUTWnXhobXV8155_tOCsXJH95lH0TynfBLq4dkdeENK7IwX-Qh-u8nqrlZD68QhB_AZjC83euCQAA';\nexport var input = 'NumberInput_input__1vx30yr1';\nexport var stepButton = 'NumberInput_stepButton__1vx30yr3';\nexport var stepperGroup = 'NumberInput_stepperGroup__1vx30yr2';\nexport var wrapper = 'NumberInput_wrapper__1vx30yr0';","import { useRef, useState } from \"react\";\nimport type { KeyboardEvent as ReactKeyboardEvent, PointerEvent as ReactPointerEvent, ReactElement } from \"react\";\nimport { range, root, thumb, track } from \"./Slider.css\";\nimport type { SliderProps, SliderValue } from \"./types\";\n\nfunction isRange(value: SliderValue): value is [number, number] {\n return Array.isArray(value);\n}\n\nfunction clampToStep(raw: number, min: number, max: number, step: number): number {\n const stepped = Math.round((raw - min) / step) * step + min;\n return Math.min(max, Math.max(min, Math.round(stepped * 1e6) / 1e6));\n}\n\nfunction percentOf(value: number, min: number, max: number): number {\n if (max === min) return 0;\n return ((value - min) / (max - min)) * 100;\n}\n\nexport function Slider({\n value: controlledValue,\n defaultValue = 0,\n onChange,\n min = 0,\n max = 100,\n step = 1,\n disabled = false,\n id,\n className,\n style,\n formatValue = (v) => String(v),\n ...rest\n}: SliderProps): ReactElement {\n const ariaLabel = rest[\"aria-label\"];\n const [uncontrolledValue, setUncontrolledValue] = useState<SliderValue>(defaultValue);\n const value = controlledValue !== undefined ? controlledValue : uncontrolledValue;\n\n const setValue = (next: SliderValue) => {\n if (controlledValue === undefined) {\n setUncontrolledValue(next);\n }\n onChange?.(next);\n };\n\n const trackRef = useRef<HTMLDivElement>(null);\n const thumbRefs = useRef<Record<\"single\" | 0 | 1, HTMLSpanElement | null>>({ single: null, 0: null, 1: null });\n const dragThumbIndex = useRef<0 | 1 | null>(null);\n const isDragging = useRef(false);\n\n const valueFromClientX = (clientX: number): number => {\n const trackEl = trackRef.current;\n if (!trackEl) return min;\n const rect = trackEl.getBoundingClientRect();\n const ratio = rect.width === 0 ? 0 : (clientX - rect.left) / rect.width;\n return clampToStep(min + ratio * (max - min), min, max, step);\n };\n\n const setThumbValue = (index: 0 | 1 | null, raw: number) => {\n if (index === null) {\n setValue(clampToStep(raw, min, max, step));\n return;\n }\n if (!isRange(value)) return;\n const [start, end] = value;\n if (index === 0) {\n setValue([Math.min(raw, end), end]);\n } else {\n setValue([start, Math.max(raw, start)]);\n }\n };\n\n const handlePointerMove = (event: PointerEvent) => {\n if (!isDragging.current) return;\n setThumbValue(dragThumbIndex.current, valueFromClientX(event.clientX));\n };\n\n const handlePointerUp = () => {\n isDragging.current = false;\n dragThumbIndex.current = null;\n window.removeEventListener(\"pointermove\", handlePointerMove);\n window.removeEventListener(\"pointerup\", handlePointerUp);\n };\n\n const startDrag = (index: 0 | 1 | null) => (event: ReactPointerEvent) => {\n if (disabled) return;\n event.preventDefault();\n thumbRefs.current[index ?? \"single\"]?.focus();\n isDragging.current = true;\n dragThumbIndex.current = index;\n setThumbValue(index, valueFromClientX(event.clientX));\n window.addEventListener(\"pointermove\", handlePointerMove);\n window.addEventListener(\"pointerup\", handlePointerUp);\n };\n\n const handleTrackPointerDown = (event: ReactPointerEvent) => {\n if (disabled) return;\n if (!isRange(value)) {\n startDrag(null)(event);\n return;\n }\n const target = valueFromClientX(event.clientX);\n const [start, end] = value;\n const nearestIndex: 0 | 1 = Math.abs(target - start) <= Math.abs(target - end) ? 0 : 1;\n startDrag(nearestIndex)(event);\n };\n\n const handleThumbKeyDown = (index: 0 | 1 | null) => (event: ReactKeyboardEvent) => {\n if (disabled) return;\n const current = index === null ? (value as number) : (value as [number, number])[index];\n let next: number | null = null;\n\n switch (event.key) {\n case \"ArrowRight\":\n case \"ArrowUp\":\n next = clampToStep(current + step, min, max, step);\n break;\n case \"ArrowLeft\":\n case \"ArrowDown\":\n next = clampToStep(current - step, min, max, step);\n break;\n case \"Home\":\n next = min;\n break;\n case \"End\":\n next = max;\n break;\n case \"PageUp\":\n next = clampToStep(current + step * 10, min, max, step);\n break;\n case \"PageDown\":\n next = clampToStep(current - step * 10, min, max, step);\n break;\n default:\n return;\n }\n\n event.preventDefault();\n setThumbValue(index, next);\n };\n\n const renderThumb = (index: 0 | 1 | null, current: number, label: string | undefined) => (\n <span\n key={index ?? \"single\"}\n ref={(node) => {\n thumbRefs.current[index ?? \"single\"] = node;\n }}\n role=\"slider\"\n tabIndex={disabled ? -1 : 0}\n aria-label={label}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={current}\n aria-valuetext={formatValue(current)}\n aria-disabled={disabled || undefined}\n className={thumb}\n style={{ left: `${percentOf(current, min, max)}%` }}\n onPointerDown={(event) => {\n event.stopPropagation();\n startDrag(index)(event);\n }}\n onKeyDown={handleThumbKeyDown(index)}\n />\n );\n\n const classes = [root, className].filter(Boolean).join(\" \");\n\n return (\n <span id={id} className={classes} style={style} data-disabled={disabled || undefined}>\n <span ref={trackRef} className={track} onPointerDown={handleTrackPointerDown}>\n {isRange(value) ? (\n <span\n className={range}\n style={{\n left: `${percentOf(value[0], min, max)}%`,\n right: `${100 - percentOf(value[1], min, max)}%`\n }}\n />\n ) : (\n <span className={range} style={{ left: 0, right: `${100 - percentOf(value, min, max)}%` }} />\n )}\n {isRange(value)\n ? [\n renderThumb(0, value[0], Array.isArray(ariaLabel) ? ariaLabel[0] : ariaLabel),\n renderThumb(1, value[1], Array.isArray(ariaLabel) ? ariaLabel[1] : ariaLabel)\n ]\n : renderThumb(null, value, typeof ariaLabel === \"string\" ? ariaLabel : undefined)}\n </span>\n </span>\n );\n}\n","import 'src/components/Slider/Slider.css.ts.vanilla.css?source=#H4sIAAAAAAAAA61UTW_bMAy991foUrQBqsDJlgzwsOuwe49FEdCSYguRRY-i8oFh_32wVbV2kCWXXoKQeHx-fCQ1f3ZWG9oQIm82y9qt1rYQf-6E0DZ0Dk6lsN5Zb-TWmeP3OyHA2dpLy6YNpVDGs6E-fbCam1IsiuK-DzvQ2vpaMnal2AM9Shk6UEaGdrNZ7k6wPDSzMbBCZmyvYf_ezS-JfdHAILUNUDmjXwft2IGyfCpFMV_1H1GRAlIpPLIE5_Bg9JiPCdQuEy4Ghg6DZYu-FGQcsN2bC002xtYNl-JrNzhTIWlDkkDbGHInKZLb6Fxu5vfQeAVqVxNGrzNUoUOSiSVj9Wysv0Ob_WaMqpGgkkiP3kwcAl-b3NHyrCOoArrIJtF0pSiS-jSA4vNa6ci2QKcMXk-GyE1sqyzxyy2Jq-R4HsA6OZ4HkOPPkR0ibUGZDF7MRtRvAhJ8nHtmQl_nmuO4JvDJmbOaIZfRpzF60HDTRyGYwIctUlumvw7YPMpVcf8k-t_J3tQEVR9j5P6W8768kQyey46wM9QfTYVHGRrQeHiaiDor0JEgTStpbXGS_gmB3y1Us7Nitm1_9dvo1QUOA8F-mLkwVxanbHBvaFifmwb-6qGZ9ds10i2qGOTeBls580aeTXl_o4ZIDtBMur9G2h_rPrGNB1NZX_-_6gXIfjxvPx6Yonl4nZBMX7V_eE48ZtIFAAA';\nexport var range = 'Slider_range__2gl56i2';\nexport var root = 'Slider_root__2gl56i0';\nexport var thumb = 'Slider_thumb__2gl56i3';\nexport var track = 'Slider_track__2gl56i1';","import { useEffect, useId, useRef, useState } from \"react\";\nimport type { KeyboardEvent as ReactKeyboardEvent, ReactElement } from \"react\";\nimport {\n FloatingPortal,\n autoUpdate,\n flip,\n offset,\n shift,\n useDismiss,\n useFloating,\n useInteractions,\n useRole\n} from \"@floating-ui/react\";\nimport {\n chip,\n chipRemove,\n chipsWrapper,\n emptyState,\n inputEl,\n listbox,\n option as optionClass,\n virtualSpacer,\n wrapper\n} from \"./Combobox.css\";\nimport type { ComboboxOption, ComboboxProps } from \"./types\";\n\n// Matches the .option class's padding (2 * space.sm = 16px) + line height\n// (sizeSm 14px * lineHeightNormal 1.5 = 21px) in Combobox.css.ts.\nconst DEFAULT_OPTION_HEIGHT = 37;\nconst OVERSCAN = 5;\n\nfunction defaultFilter(options: ComboboxOption[], inputText: string): ComboboxOption[] {\n const query = inputText.trim().toLowerCase();\n if (!query) return options;\n return options.filter((opt) => opt.label.toLowerCase().includes(query));\n}\n\nfunction labelFor(options: ComboboxOption[], value: string | null): string {\n if (!value) return \"\";\n return options.find((opt) => opt.value === value)?.label ?? \"\";\n}\n\nexport function Combobox({\n options,\n multiple = false,\n value: controlledValue,\n defaultValue,\n onChange,\n onInputChange,\n filterOptions = defaultFilter,\n placeholder,\n noOptionsMessage = \"No options\",\n disabled = false,\n invalid,\n loading = false,\n virtualizationThreshold = 50,\n optionHeight = DEFAULT_OPTION_HEIGHT,\n id,\n className,\n ...rest\n}: ComboboxProps): ReactElement {\n const fallbackDefault = multiple ? [] : null;\n const [uncontrolledValue, setUncontrolledValue] = useState<string | string[] | null>(\n defaultValue !== undefined ? defaultValue : fallbackDefault\n );\n const value = controlledValue !== undefined ? controlledValue : uncontrolledValue;\n\n const setValue = (next: string | string[] | null) => {\n if (controlledValue === undefined) {\n setUncontrolledValue(next);\n }\n onChange?.(next);\n };\n\n const selectedValues = multiple ? ((value as string[] | null) ?? []) : [];\n const singleValue = multiple ? null : (value as string | null);\n\n const [open, setOpen] = useState(false);\n const [inputText, setInputText] = useState(() => (multiple ? \"\" : labelFor(options, singleValue)));\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n\n useEffect(() => {\n if (!multiple) {\n setInputText(labelFor(options, singleValue));\n }\n // Only re-sync the displayed text when the committed single-select value changes.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [singleValue, multiple]);\n\n const inputRef = useRef<HTMLInputElement>(null);\n const listboxRef = useRef<HTMLDivElement | null>(null);\n const listboxId = useId();\n\n const [scrollTop, setScrollTop] = useState(0);\n const [viewportHeight, setViewportHeight] = useState(280);\n\n const filteredOptions = filterOptions(options, multiple ? inputText : open ? inputText : \"\");\n\n const isVirtualized = filteredOptions.length >= virtualizationThreshold;\n\n useEffect(() => {\n // A brand-new `options` array (e.g. an async re-fetch triggered by\n // onInputChange) means the previous scroll position/active row are\n // stale — land back at the top rather than mid-scroll.\n setScrollTop(0);\n setActiveIndex(null);\n if (listboxRef.current) listboxRef.current.scrollTop = 0;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [options]);\n\n useEffect(() => {\n if (!open) return;\n const node = listboxRef.current;\n if (!node) return;\n if (node.clientHeight > 0) setViewportHeight(node.clientHeight);\n if (typeof ResizeObserver === \"undefined\") return;\n const observer = new ResizeObserver((entries) => {\n const entry = entries[0];\n if (entry) setViewportHeight(entry.contentRect.height);\n });\n observer.observe(node);\n return () => observer.disconnect();\n }, [open]);\n\n const totalHeight = filteredOptions.length * optionHeight;\n const maxScrollTop = Math.max(0, totalHeight - viewportHeight);\n const effectiveScrollTop = Math.min(scrollTop, maxScrollTop);\n const visibleCount = Math.ceil(viewportHeight / optionHeight) + OVERSCAN * 2;\n const startIndex = isVirtualized\n ? Math.max(0, Math.floor(effectiveScrollTop / optionHeight) - OVERSCAN)\n : 0;\n const endIndex = isVirtualized\n ? Math.min(filteredOptions.length, startIndex + visibleCount)\n : filteredOptions.length;\n const visibleOptions = filteredOptions.slice(startIndex, endIndex);\n\n const { refs, floatingStyles, context } = useFloating({\n open,\n onOpenChange: setOpen,\n placement: \"bottom-start\",\n whileElementsMounted: autoUpdate,\n middleware: [offset(4), flip(), shift({ padding: 8 })]\n });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n useDismiss(context),\n useRole(context, { role: \"listbox\" })\n ]);\n\n const openList = () => {\n if (disabled) return;\n setOpen(true);\n setActiveIndex(null);\n };\n\n const closeList = () => {\n setOpen(false);\n setActiveIndex(null);\n };\n\n const selectOption = (opt: ComboboxOption) => {\n if (opt.disabled) return;\n\n if (multiple) {\n const next = selectedValues.includes(opt.value)\n ? selectedValues.filter((v) => v !== opt.value)\n : [...selectedValues, opt.value];\n setValue(next);\n setInputText(\"\");\n onInputChange?.(\"\");\n inputRef.current?.focus();\n return;\n }\n\n setValue(opt.value);\n setInputText(opt.label);\n closeList();\n };\n\n const removeChip = (optionValue: string) => {\n setValue(selectedValues.filter((v) => v !== optionValue));\n inputRef.current?.focus();\n };\n\n const handleInputChange = (text: string) => {\n setInputText(text);\n onInputChange?.(text);\n setOpen(true);\n setActiveIndex(null);\n };\n\n const scrollIndexIntoView = (index: number) => {\n if (!isVirtualized) return;\n const rowTop = index * optionHeight;\n const rowBottom = rowTop + optionHeight;\n let next = scrollTop;\n if (rowTop < scrollTop) {\n next = rowTop;\n } else if (rowBottom > scrollTop + viewportHeight) {\n next = rowBottom - viewportHeight;\n } else {\n return;\n }\n setScrollTop(next);\n if (listboxRef.current) listboxRef.current.scrollTop = next;\n };\n\n const moveActiveIndex = (direction: 1 | -1) => {\n if (filteredOptions.length === 0) return;\n let next = activeIndex ?? (direction === 1 ? -1 : filteredOptions.length);\n for (let step = 0; step < filteredOptions.length; step++) {\n next = (next + direction + filteredOptions.length) % filteredOptions.length;\n if (!filteredOptions[next]?.disabled) {\n setActiveIndex(next);\n scrollIndexIntoView(next);\n return;\n }\n }\n };\n\n const handleKeyDown = (event: ReactKeyboardEvent<HTMLInputElement>) => {\n if (disabled) return;\n\n switch (event.key) {\n case \"ArrowDown\":\n event.preventDefault();\n if (!open) {\n openList();\n } else {\n moveActiveIndex(1);\n }\n return;\n case \"ArrowUp\":\n event.preventDefault();\n if (open) moveActiveIndex(-1);\n return;\n case \"Enter\": {\n if (!open) return;\n event.preventDefault();\n const active = activeIndex !== null ? filteredOptions[activeIndex] : undefined;\n if (active) selectOption(active);\n return;\n }\n case \"Escape\":\n if (open) {\n event.preventDefault();\n closeList();\n if (!multiple) setInputText(labelFor(options, singleValue));\n }\n return;\n case \"Backspace\":\n if (multiple && inputText === \"\" && selectedValues.length > 0) {\n removeChip(selectedValues[selectedValues.length - 1]!);\n }\n return;\n default:\n }\n };\n\n const handleBlur = () => {\n if (!multiple) {\n setInputText(labelFor(options, singleValue));\n }\n closeList();\n };\n\n const classes = [wrapper, className].filter(Boolean).join(\" \");\n const activeOptionId = activeIndex !== null ? `${listboxId}-option-${activeIndex}` : undefined;\n\n return (\n <span className={classes} ref={refs.setReference} data-disabled={disabled || undefined}>\n {multiple && selectedValues.length > 0 ? (\n <span className={chipsWrapper}>\n {selectedValues.map((val) => (\n <span key={val} className={chip}>\n {labelFor(options, val)}\n <button\n type=\"button\"\n className={chipRemove}\n aria-label={`Remove ${labelFor(options, val)}`}\n disabled={disabled}\n onClick={() => removeChip(val)}\n >\n ×\n </button>\n </span>\n ))}\n </span>\n ) : null}\n <input\n ref={inputRef}\n id={id}\n type=\"text\"\n role=\"combobox\"\n className={inputEl}\n value={inputText}\n placeholder={placeholder}\n disabled={disabled}\n autoComplete=\"off\"\n aria-autocomplete=\"list\"\n aria-expanded={open}\n aria-controls={listboxId}\n aria-invalid={invalid || undefined}\n aria-activedescendant={activeOptionId}\n {...getReferenceProps({\n ...rest,\n onFocus: openList,\n onBlur: handleBlur,\n onChange: (e) => handleInputChange((e.target as HTMLInputElement).value),\n onKeyDown: handleKeyDown\n })}\n />\n {open ? (\n <FloatingPortal>\n <div\n ref={(node) => {\n refs.setFloating(node);\n listboxRef.current = node;\n }}\n id={listboxId}\n role=\"listbox\"\n aria-multiselectable={multiple || undefined}\n className={listbox}\n style={floatingStyles}\n onScroll={(e) => setScrollTop(e.currentTarget.scrollTop)}\n {...getFloatingProps()}\n >\n {loading ? (\n <div className={emptyState}>Loading…</div>\n ) : filteredOptions.length === 0 ? (\n <div className={emptyState}>{noOptionsMessage}</div>\n ) : isVirtualized ? (\n <div className={virtualSpacer} style={{ height: totalHeight }}>\n {visibleOptions.map((opt, i) => {\n const index = startIndex + i;\n const isSelected = multiple\n ? selectedValues.includes(opt.value)\n : opt.value === singleValue;\n return (\n <div\n key={opt.value}\n id={`${listboxId}-option-${index}`}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={opt.disabled || undefined}\n data-active={activeIndex === index || undefined}\n className={optionClass}\n style={{ position: \"absolute\", top: index * optionHeight, left: 0, right: 0, height: optionHeight }}\n onMouseDown={(event) => {\n event.preventDefault();\n selectOption(opt);\n }}\n onMouseEnter={() => setActiveIndex(index)}\n >\n {opt.label}\n </div>\n );\n })}\n </div>\n ) : (\n filteredOptions.map((opt, index) => {\n const isSelected = multiple ? selectedValues.includes(opt.value) : opt.value === singleValue;\n return (\n <div\n key={opt.value}\n id={`${listboxId}-option-${index}`}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={opt.disabled || undefined}\n data-active={activeIndex === index || undefined}\n className={optionClass}\n onMouseDown={(event) => {\n event.preventDefault();\n selectOption(opt);\n }}\n onMouseEnter={() => setActiveIndex(index)}\n >\n {opt.label}\n </div>\n );\n })\n )}\n </div>\n </FloatingPortal>\n ) : null}\n </span>\n );\n}\n","import 'src/components/Combobox/Combobox.css.ts.vanilla.css?source=#H4sIAAAAAAAAA9VXwW7bOBC95yt0WbQBloHkpGmgYk-LXewle2gOe1gUBiWOLSIUhyApy0rRfy9ImYokW5KTtkB7saDx43A4894MdfUnlhlmuF_XmioFer1e3cqC53H0-SKKFBpuOco00iCo5Tv4cBFFjBslaJNGGwF7Z3BP4hykkft1Jir4VhJuoTRplIO0oJ156zA7qt8SYhTNgezNer16bOiq3l46QM2ZLdIoiePf3GtG88etxkqysCxHgZqYSm9oDmFt4tdmqBlooinjlQn49o2ULGCxjz1s10L7toCu-2hjGwEjtLcFdNNH-0iHYbf_BDTzaEUZ43JLLC6kJgAztBbL87ACNnaINGVAFgOk5ttiAWo1lS0fiNKoQNsmHRz29yjDPTEFZViPFrBK05ZJ7Q4lDsx_U2O7Yubj3SwvXYibSuYnfAA1XG671XD54eLLxdUksdMN5pUhNbcFl57l0_VSmpdUN8H37aG84Yxduvwb8Y4DdrcQxv-MWkoYNzQTwD75QPJKGxeCREuoEFgDcxuiojl3uY6v3g2d5gVX5r-h58S7OkejC2IcbxQ2WA034FJwCSTsMyf8G7U_Q9QfKTfQyXXlc36iNhb2HWWuPWiD0hLDnzqJdoaHjsnJ9WKreKa9PBboqj3CWIsj87HspgR6QnbzVfgIJe4g1OK6R2DHGwnjBHsZKapB2plE3lf2OeU3bcoPZFTIQxF9oQtoQ056x0ijeL4A953z5Gb5UGmBO9CpRPs2DQq5bBWyzIMl38HhtOL6HrhUlf1LhOU3fpXjeholURLRyqI7ecllmCW38YHlo6JgZV3-zqqSz9uGllw0g1RmyLpmlMQLpB_lfFS-HtjZ__Hmf1GXVHTLsvO1NznFpubNqSk2xM6VIU2VoDkUKBjoOWYcEXvW68u4Ibix7nlY_m6m8TKu4TC7chRVKbueuHp1T5zrYaKbh-rnvO7Md8fJEft8rupypLvk7iC8ku47lq-C0TWUjcCaNGkn2iNFPhEumZd2EsfDWqNy1Qulvh2WOhOYP566vbpj8Cd_3EOWMvThOGoSPyrTyA2Ll824b-0MR-PwlZ3h1VP0-zSIH3TNPRp8Mzxob3E0d59G7R3uBV8sc36p5pQYEJBbYH-8sbqCN5-mGt3Ja6ovYH1c09Z0D4xXzzS4Oyec0B2Xwlm4UEz20x3XtqLiwVWlu86-n_kQHcit7wlKZZsHS2039-9aN78OCc9O64_oCF--AgiGYrwYEAAA';\nexport var chip = 'Combobox_chip__26nhic2';\nexport var chipRemove = 'Combobox_chipRemove__26nhic3';\nexport var chipsWrapper = 'Combobox_chipsWrapper__26nhic1';\nexport var emptyState = 'Combobox_emptyState__26nhic8';\nexport var inputEl = 'Combobox_inputEl__26nhic4';\nexport var listbox = 'Combobox_listbox__26nhic5';\nexport var option = 'Combobox_option__26nhic6';\nexport var virtualSpacer = 'Combobox_virtualSpacer__26nhic7';\nexport var wrapper = 'Combobox_wrapper__26nhic0';","import { useEffect, useMemo, useRef, useState } from \"react\";\nimport type { KeyboardEvent as ReactKeyboardEvent, ReactElement } from \"react\";\nimport { vars } from \"@vesture/tokens\";\nimport { Checkbox } from \"../Checkbox\";\nimport { Spinner } from \"../Spinner\";\nimport {\n chevron,\n checkboxCell,\n label as labelClass,\n loadingSlot,\n root,\n row as rowClass,\n rowContent,\n scroller,\n} from \"./TreeView.css\";\nimport type { TreeNode, TreeViewProps } from \"./types\";\n\ninterface FlatNode<T> {\n node: TreeNode<T>;\n depth: number;\n hasChildren: boolean;\n isExpanded: boolean;\n}\n\ninterface NodeIndexEntry<T> {\n node: TreeNode<T>;\n parentId: string | null;\n}\n\nfunction getChildren<T>(\n node: TreeNode<T>,\n loadedChildren: Map<string, TreeNode<T>[]>\n): TreeNode<T>[] | undefined {\n return node.children ?? loadedChildren.get(node.id);\n}\n\nfunction collectDescendantIds<T>(\n node: TreeNode<T>,\n loadedChildren: Map<string, TreeNode<T>[]>,\n acc: Set<string>\n): void {\n const children = getChildren(node, loadedChildren);\n if (!children) return;\n for (const child of children) {\n acc.add(child.id);\n collectDescendantIds(child, loadedChildren, acc);\n }\n}\n\nfunction hasAnyDescendantSelected<T>(\n node: TreeNode<T>,\n loadedChildren: Map<string, TreeNode<T>[]>,\n selected: Set<string>\n): boolean {\n const children = getChildren(node, loadedChildren);\n if (!children) return false;\n for (const child of children) {\n if (selected.has(child.id)) return true;\n if (hasAnyDescendantSelected(child, loadedChildren, selected)) return true;\n }\n return false;\n}\n\nfunction reconcileAncestors<T>(\n nodeId: string,\n next: Set<string>,\n nodeIndex: Map<string, NodeIndexEntry<T>>,\n loadedChildren: Map<string, TreeNode<T>[]>\n): void {\n let parentId = nodeIndex.get(nodeId)?.parentId ?? null;\n while (parentId) {\n const entry = nodeIndex.get(parentId);\n if (!entry) break;\n const children = getChildren(entry.node, loadedChildren) ?? [];\n const allChecked = children.length > 0 && children.every((c) => next.has(c.id));\n if (allChecked) {\n next.add(parentId);\n } else {\n next.delete(parentId);\n }\n parentId = entry.parentId;\n }\n}\n\nexport function TreeView<T = unknown>({\n nodes,\n expanded: controlledExpanded,\n defaultExpanded,\n onExpandedChange,\n selected: controlledSelected,\n defaultSelected,\n onSelectedChange,\n selectable = \"none\",\n onLoadChildren,\n height = 320,\n rowHeight = 32,\n}: TreeViewProps<T>): ReactElement {\n const [uncontrolledExpanded, setUncontrolledExpanded] = useState<Set<string>>(\n () => defaultExpanded ?? new Set()\n );\n const expandedSet =\n controlledExpanded !== undefined ? controlledExpanded : uncontrolledExpanded;\n const setExpandedSet = (next: Set<string>) => {\n if (controlledExpanded === undefined) {\n setUncontrolledExpanded(next);\n }\n onExpandedChange?.(next);\n };\n\n const [uncontrolledSelected, setUncontrolledSelected] = useState<Set<string>>(\n () => defaultSelected ?? new Set()\n );\n const selectedSet =\n controlledSelected !== undefined ? controlledSelected : uncontrolledSelected;\n const setSelectedSet = (next: Set<string>) => {\n if (controlledSelected === undefined) {\n setUncontrolledSelected(next);\n }\n onSelectedChange?.(next);\n };\n const selectedSetRef = useRef(selectedSet);\n selectedSetRef.current = selectedSet;\n\n const [loadedChildren, setLoadedChildren] = useState<Map<string, TreeNode<T>[]>>(\n () => new Map()\n );\n const [loadingIds, setLoadingIds] = useState<Set<string>>(() => new Set());\n const attemptedLoadRef = useRef<Set<string>>(new Set());\n\n const [scrollTop, setScrollTop] = useState(0);\n const [focusedId, setFocusedId] = useState<string | null>(\n () => nodes[0]?.id ?? null\n );\n const shouldFocusRef = useRef(false);\n const containerRef = useRef<HTMLDivElement>(null);\n const rowRefs = useRef(new Map<string, HTMLDivElement>());\n\n const nodeIndex = useMemo(() => {\n const map = new Map<string, NodeIndexEntry<T>>();\n function walk(list: TreeNode<T>[], parentId: string | null) {\n for (const node of list) {\n map.set(node.id, { node, parentId });\n const children = getChildren(node, loadedChildren);\n if (children) walk(children, node.id);\n }\n }\n walk(nodes, null);\n return map;\n }, [nodes, loadedChildren]);\n\n const flatNodes = useMemo(() => {\n const result: FlatNode<T>[] = [];\n function walk(list: TreeNode<T>[], depth: number) {\n for (const node of list) {\n const children = getChildren(node, loadedChildren);\n const nodeHasChildren = children\n ? children.length > 0\n : node.hasChildren === true;\n const isExpanded = expandedSet.has(node.id);\n result.push({ node, depth, hasChildren: nodeHasChildren, isExpanded });\n if (isExpanded && children) {\n walk(children, depth + 1);\n }\n }\n }\n walk(nodes, 0);\n return result;\n }, [nodes, expandedSet, loadedChildren]);\n\n useEffect(() => {\n if (focusedId !== null && flatNodes.some((f) => f.node.id === focusedId)) {\n return;\n }\n setFocusedId(flatNodes[0]?.node.id ?? null);\n }, [flatNodes, focusedId]);\n\n useEffect(() => {\n if (!shouldFocusRef.current || focusedId === null) return;\n shouldFocusRef.current = false;\n rowRefs.current.get(focusedId)?.focus();\n }, [focusedId, scrollTop]);\n\n async function loadChildrenFor(node: TreeNode<T>) {\n if (!onLoadChildren) return;\n if (attemptedLoadRef.current.has(node.id)) return;\n attemptedLoadRef.current.add(node.id);\n setLoadingIds((prev) => new Set(prev).add(node.id));\n try {\n const loaded = await onLoadChildren(node);\n setLoadedChildren((prev) => new Map(prev).set(node.id, loaded));\n if (selectable === \"multi\" && selectedSetRef.current.has(node.id)) {\n setSelectedSet(\n (() => {\n const next = new Set(selectedSetRef.current);\n for (const child of loaded) next.add(child.id);\n return next;\n })()\n );\n }\n } finally {\n setLoadingIds((prev) => {\n const next = new Set(prev);\n next.delete(node.id);\n return next;\n });\n }\n }\n\n function expandNode(node: TreeNode<T>) {\n const next = new Set(expandedSet);\n next.add(node.id);\n setExpandedSet(next);\n const children = getChildren(node, loadedChildren);\n if (node.hasChildren === true && children === undefined) {\n void loadChildrenFor(node);\n }\n }\n\n function collapseNode(node: TreeNode<T>) {\n const next = new Set(expandedSet);\n next.delete(node.id);\n setExpandedSet(next);\n }\n\n function toggleExpand(flat: FlatNode<T>) {\n if (flat.isExpanded) {\n collapseNode(flat.node);\n } else {\n expandNode(flat.node);\n }\n }\n\n function toggleSelect(node: TreeNode<T>) {\n if (selectable === \"none\") return;\n if (selectable === \"single\") {\n const isSelected = selectedSet.has(node.id);\n setSelectedSet(isSelected ? new Set() : new Set([node.id]));\n return;\n }\n const next = new Set(selectedSet);\n const willSelect = !next.has(node.id);\n const descendants = new Set<string>();\n collectDescendantIds(node, loadedChildren, descendants);\n if (willSelect) {\n next.add(node.id);\n descendants.forEach((id) => next.add(id));\n } else {\n next.delete(node.id);\n descendants.forEach((id) => next.delete(id));\n }\n reconcileAncestors(node.id, next, nodeIndex, loadedChildren);\n setSelectedSet(next);\n }\n\n function moveFocusTo(id: string) {\n const index = flatNodes.findIndex((f) => f.node.id === id);\n if (index === -1) return;\n const rowTop = index * rowHeight;\n const rowBottom = rowTop + rowHeight;\n let scrolled = false;\n if (containerRef.current) {\n if (rowTop < containerRef.current.scrollTop) {\n containerRef.current.scrollTop = rowTop;\n scrolled = true;\n } else if (rowBottom > containerRef.current.scrollTop + height) {\n containerRef.current.scrollTop = rowBottom - height;\n scrolled = true;\n }\n }\n setFocusedId(id);\n // setFocusedId is a no-op re-render when `id` already equals the current\n // focusedId (e.g. re-focusing the same row), so the DOM focus effect\n // (keyed on focusedId) won't fire — focus synchronously here instead,\n // falling back to the effect only when the row isn't mounted yet\n // (freshly scrolled into view by the branch above).\n const target = rowRefs.current.get(id);\n if (target && !scrolled) {\n target.focus();\n } else {\n shouldFocusRef.current = true;\n }\n }\n\n function handleKeyDown(\n event: ReactKeyboardEvent<HTMLDivElement>,\n flat: FlatNode<T>\n ) {\n const { node, depth, hasChildren, isExpanded } = flat;\n const index = flatNodes.findIndex((f) => f.node.id === node.id);\n\n switch (event.key) {\n case \"ArrowDown\": {\n event.preventDefault();\n const next = flatNodes[index + 1];\n if (next) moveFocusTo(next.node.id);\n break;\n }\n case \"ArrowUp\": {\n event.preventDefault();\n const prev = flatNodes[index - 1];\n if (prev) moveFocusTo(prev.node.id);\n break;\n }\n case \"Home\": {\n event.preventDefault();\n if (flatNodes[0]) moveFocusTo(flatNodes[0].node.id);\n break;\n }\n case \"End\": {\n event.preventDefault();\n const last = flatNodes[flatNodes.length - 1];\n if (last) moveFocusTo(last.node.id);\n break;\n }\n case \"ArrowRight\": {\n if (!hasChildren) break;\n event.preventDefault();\n if (!isExpanded) {\n expandNode(node);\n } else {\n const next = flatNodes[index + 1];\n if (next && next.depth === depth + 1) moveFocusTo(next.node.id);\n }\n break;\n }\n case \"ArrowLeft\": {\n event.preventDefault();\n if (isExpanded && hasChildren) {\n collapseNode(node);\n } else {\n const parentId = nodeIndex.get(node.id)?.parentId;\n if (parentId) moveFocusTo(parentId);\n }\n break;\n }\n case \" \":\n case \"Spacebar\": {\n if (selectable === \"none\") break;\n event.preventDefault();\n toggleSelect(node);\n break;\n }\n default:\n return;\n }\n }\n\n const totalHeight = flatNodes.length * rowHeight;\n const overscan = 5;\n const visibleCount = Math.ceil(height / rowHeight) + overscan * 2;\n const startIndex = Math.max(0, Math.floor(scrollTop / rowHeight) - overscan);\n const endIndex = Math.min(flatNodes.length, startIndex + visibleCount);\n const visibleFlatNodes = flatNodes.slice(startIndex, endIndex);\n\n return (\n <div\n ref={containerRef}\n className={scroller}\n style={{ height }}\n onScroll={(e) => setScrollTop(e.currentTarget.scrollTop)}\n role=\"tree\"\n >\n <div className={root} style={{ height: totalHeight }}>\n {visibleFlatNodes.map((flat, i) => {\n const index = startIndex + i;\n const { node, depth, hasChildren, isExpanded } = flat;\n const isLoading = loadingIds.has(node.id);\n const isSelected = selectedSet.has(node.id);\n const isIndeterminate =\n selectable === \"multi\" &&\n !isSelected &&\n hasAnyDescendantSelected(node, loadedChildren, selectedSet);\n\n return (\n <div\n key={node.id}\n ref={(el) => {\n if (el) {\n rowRefs.current.set(node.id, el);\n } else {\n rowRefs.current.delete(node.id);\n }\n }}\n className={rowClass}\n style={{ top: index * rowHeight, height: rowHeight }}\n role=\"treeitem\"\n aria-expanded={hasChildren ? isExpanded : undefined}\n aria-level={depth + 1}\n aria-selected={selectable !== \"none\" ? isSelected : undefined}\n tabIndex={node.id === focusedId ? 0 : -1}\n onFocus={() => setFocusedId(node.id)}\n onKeyDown={(e) => handleKeyDown(e, flat)}\n onClick={() => setFocusedId(node.id)}\n >\n <div\n className={rowContent}\n style={{ paddingLeft: `calc(${depth} * ${vars.space.lg})` }}\n >\n {hasChildren ? (\n isLoading ? (\n <span className={loadingSlot}>\n <Spinner size=\"sm\" />\n </span>\n ) : (\n <button\n type=\"button\"\n className={chevron}\n data-expanded={isExpanded || undefined}\n onMouseDown={(e) => e.preventDefault()}\n onClick={(e) => {\n e.stopPropagation();\n toggleExpand(flat);\n }}\n aria-hidden=\"true\"\n tabIndex={-1}\n >\n ›\n </button>\n )\n ) : (\n <span className={chevron} aria-hidden=\"true\" />\n )}\n {selectable === \"multi\" ? (\n <span\n className={checkboxCell}\n onMouseDown={(e) => e.preventDefault()}\n onClick={(e) => e.stopPropagation()}\n >\n <Checkbox\n checked={isSelected}\n indeterminate={isIndeterminate}\n onChange={() => toggleSelect(node)}\n tabIndex={-1}\n aria-label={`Select ${typeof node.label === \"string\" ? node.label : node.id}`}\n />\n </span>\n ) : null}\n <span className={labelClass} data-selected={isSelected || undefined}>\n {node.label}\n </span>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n","import 'src/components/TreeView/TreeView.css.ts.vanilla.css?source=#H4sIAAAAAAAAA9VVwW6cMBC971f4Uil7cLVs0jYlx0i95dJUvVTVytgDOGtsZA8LtOq_V9iLYdmISL31BuM3jzczb8z7bxbgu4T24Lg1SoE9HBK-V_v7fkd-bwipjZMojU6JBcVQnuBhQ4g5gc2VaVPCGjRDJDcaac4qqfqUnJi9odSHMiP6w2F_7Nm-TXbbCHXyF1wAh8BzFaG3HsqNMnaE-ReK0OGICqCM8WNhTaPFJdI1NmccvjLpQIwp-5BirABLWymwHJPmsRHdztEOewULtI-N6H6OfkV6OBnRYo62TMjGjfDwRquo2mwfNn827-OwrDEYB5WsDOpcYbLbvVsytJFgvyBgmTOqQU-gIMeU7IZHK4tyfBbS1Yr1KckVdEOAKVloKhEqlxKHFpCX3ikNKqkhJdpoT8gb64bG1EZqBLuiKs0Nbxw9SSczBV5jZjrqSiYG54VWhTfqoWO3TlfdmrOWg3kD27pxohev6R6NRtDTCG4933pTOIR6CSlYHeXXjAPtovRiezU1QmomhNQFPQ9gnunixpQLlbyEkzU6Sry7lCj1MBb6htKXxqHMe8pDvfOji90JYlQxinnxZZRwLXiJGQRQV1qpj2drhY2YDDOfElqmXc0saFy5Hp4anBb-bvuq69auoaeYnIRs36qxmmSIeCF-XWhtTQ0W-7O63NhqgRCNZWGzwocqcxH-wly80RK-XSSjrIbZ543mr3AAc1LHlibwlgl-CIaMQlczLUD89J6IslNiDTKEm887AcWCShk2mPBZzW6eD_-HpxYd4cfMdI-gVKzj47_UsfYVxTKY6D95-umfWUohQPs5Q4d0OgClZO2k870oJUIocNiF1rJ69Rthsg4UcBwn6x3dXnRsFnoCIZvpj3s_DPwvm8c-BRAIAAA';\nexport var checkboxCell = 'TreeView_checkboxCell__1c2l28y6';\nexport var chevron = 'TreeView_chevron__1c2l28y4';\nexport var label = 'TreeView_label__1c2l28y7';\nexport var loadingSlot = 'TreeView_loadingSlot__1c2l28y5';\nexport var root = 'TreeView_root__1c2l28y1';\nexport var row = 'TreeView_row__1c2l28y2';\nexport var rowContent = 'TreeView_rowContent__1c2l28y3';\nexport var scroller = 'TreeView_scroller__1c2l28y0';","import { useEffect, useId, useMemo, useRef, useState } from \"react\";\nimport type { CSSProperties, KeyboardEvent as ReactKeyboardEvent, ReactElement } from \"react\";\nimport {\n FloatingFocusManager,\n FloatingOverlay,\n FloatingPortal,\n useDismiss,\n useFloating,\n useInteractions,\n useRole\n} from \"@floating-ui/react\";\nimport {\n emptyState,\n groupHeader,\n inputEl,\n list,\n option as optionClass,\n optionDescription,\n optionIcon,\n optionLabel,\n overlay,\n palette,\n shortcut as shortcutClass,\n virtualSpacer\n} from \"./CommandPalette.css\";\nimport type { CommandItem, CommandPaletteProps } from \"./types\";\n\nconst DEFAULT_ROW_HEIGHT = 40;\nconst OVERSCAN = 5;\n\nfunction defaultFilterCommands(commands: CommandItem[], query: string): CommandItem[] {\n const q = query.trim().toLowerCase();\n if (!q) return commands;\n return commands.filter((command) => {\n const haystack = [command.label, command.group, ...(command.keywords ?? [])]\n .filter(Boolean)\n .join(\" \")\n .toLowerCase();\n return haystack.includes(q);\n });\n}\n\ninterface HeaderRow {\n type: \"header\";\n key: string;\n group: string;\n}\n\ninterface ItemRow {\n type: \"item\";\n key: string;\n command: CommandItem;\n itemIndex: number;\n}\n\ntype Row = HeaderRow | ItemRow;\n\n// Interleaves group header rows above each group's items (skipped by keyboard\n// nav, like a listbox with disabled separators) — mirrors DataGrid's group rows.\nfunction buildRows(commands: CommandItem[]): { rows: Row[]; itemRowIndices: number[] } {\n const rows: Row[] = [];\n const itemRowIndices: number[] = [];\n const seenGroups = new Set<string>();\n\n commands.forEach((command, itemIndex) => {\n if (command.group && !seenGroups.has(command.group)) {\n seenGroups.add(command.group);\n rows.push({ type: \"header\", key: `__group-${command.group}`, group: command.group });\n }\n itemRowIndices[itemIndex] = rows.length;\n rows.push({ type: \"item\", key: command.id, command, itemIndex });\n });\n\n return { rows, itemRowIndices };\n}\n\nexport function CommandPalette({\n open,\n onOpenChange,\n commands,\n placeholder = \"Type a command or search...\",\n emptyMessage = \"No matching commands\",\n filterCommands = defaultFilterCommands,\n virtualizationThreshold = 50,\n rowHeight = DEFAULT_ROW_HEIGHT,\n \"aria-label\": ariaLabel\n}: CommandPaletteProps): ReactElement | null {\n const [query, setQuery] = useState(\"\");\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n const [scrollTop, setScrollTop] = useState(0);\n const [viewportHeight, setViewportHeight] = useState(320);\n\n const inputRef = useRef<HTMLInputElement>(null);\n const listRef = useRef<HTMLDivElement | null>(null);\n const listId = useId();\n\n const { refs, context } = useFloating({ open, onOpenChange });\n const { getFloatingProps } = useInteractions([useDismiss(context), useRole(context, { role: \"dialog\" })]);\n\n const filteredCommands = useMemo(() => filterCommands(commands, query), [commands, filterCommands, query]);\n const { rows, itemRowIndices } = useMemo(() => buildRows(filteredCommands), [filteredCommands]);\n\n const isVirtualized = rows.length >= virtualizationThreshold;\n\n useEffect(() => {\n if (!open) return;\n setQuery(\"\");\n setActiveIndex(null);\n setScrollTop(0);\n if (listRef.current) listRef.current.scrollTop = 0;\n }, [open]);\n\n useEffect(() => {\n // A new query invalidates the previous selection/scroll position.\n setActiveIndex(null);\n setScrollTop(0);\n if (listRef.current) listRef.current.scrollTop = 0;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [query]);\n\n useEffect(() => {\n if (!open) return;\n const node = listRef.current;\n if (!node) return;\n if (node.clientHeight > 0) setViewportHeight(node.clientHeight);\n if (typeof ResizeObserver === \"undefined\") return;\n const observer = new ResizeObserver((entries) => {\n const entry = entries[0];\n if (entry) setViewportHeight(entry.contentRect.height);\n });\n observer.observe(node);\n return () => observer.disconnect();\n }, [open]);\n\n if (!open) {\n return null;\n }\n\n const totalHeight = rows.length * rowHeight;\n const maxScrollTop = Math.max(0, totalHeight - viewportHeight);\n const effectiveScrollTop = Math.min(scrollTop, maxScrollTop);\n const visibleCount = Math.ceil(viewportHeight / rowHeight) + OVERSCAN * 2;\n const startIndex = isVirtualized ? Math.max(0, Math.floor(effectiveScrollTop / rowHeight) - OVERSCAN) : 0;\n const endIndex = isVirtualized ? Math.min(rows.length, startIndex + visibleCount) : rows.length;\n const visibleRows = rows.slice(startIndex, endIndex);\n\n const scrollRowIntoView = (rowIndex: number) => {\n if (!isVirtualized) return;\n const rowTop = rowIndex * rowHeight;\n const rowBottom = rowTop + rowHeight;\n let next = scrollTop;\n if (rowTop < scrollTop) {\n next = rowTop;\n } else if (rowBottom > scrollTop + viewportHeight) {\n next = rowBottom - viewportHeight;\n } else {\n return;\n }\n setScrollTop(next);\n if (listRef.current) listRef.current.scrollTop = next;\n };\n\n const moveActiveIndex = (direction: 1 | -1) => {\n if (filteredCommands.length === 0) return;\n let next = activeIndex ?? (direction === 1 ? -1 : filteredCommands.length);\n for (let step = 0; step < filteredCommands.length; step++) {\n next = (next + direction + filteredCommands.length) % filteredCommands.length;\n if (!filteredCommands[next]?.disabled) {\n setActiveIndex(next);\n const rowIndex = itemRowIndices[next];\n if (rowIndex !== undefined) scrollRowIntoView(rowIndex);\n return;\n }\n }\n };\n\n const selectCommand = (command: CommandItem) => {\n if (command.disabled) return;\n command.onSelect();\n onOpenChange(false);\n };\n\n const handleKeyDown = (event: ReactKeyboardEvent<HTMLInputElement>) => {\n switch (event.key) {\n case \"ArrowDown\":\n event.preventDefault();\n moveActiveIndex(1);\n return;\n case \"ArrowUp\":\n event.preventDefault();\n moveActiveIndex(-1);\n return;\n case \"Enter\": {\n event.preventDefault();\n const active = activeIndex !== null ? filteredCommands[activeIndex] : undefined;\n if (active) selectCommand(active);\n return;\n }\n case \"Escape\":\n event.preventDefault();\n onOpenChange(false);\n return;\n default:\n }\n };\n\n const activeCommand = activeIndex !== null ? filteredCommands[activeIndex] : undefined;\n const activeOptionId = activeCommand ? `${listId}-option-${activeCommand.id}` : undefined;\n\n const renderRow = (row: Row, rowIndex: number, rowStyle?: CSSProperties) => {\n if (row.type === \"header\") {\n return (\n <div key={row.key} role=\"presentation\" className={groupHeader} style={rowStyle}>\n {row.group}\n </div>\n );\n }\n\n const { command, itemIndex } = row;\n const isActive = itemIndex === activeIndex;\n\n return (\n <div\n key={row.key}\n id={`${listId}-option-${command.id}`}\n role=\"option\"\n aria-selected={isActive}\n aria-disabled={command.disabled || undefined}\n data-active={isActive || undefined}\n className={optionClass}\n style={rowStyle}\n onMouseDown={(event) => {\n event.preventDefault();\n selectCommand(command);\n }}\n onMouseEnter={() => {\n if (!command.disabled) setActiveIndex(itemIndex);\n }}\n >\n {command.icon ? <span className={optionIcon}>{command.icon}</span> : null}\n <span className={optionLabel}>\n {command.label}\n {command.description ? <span className={optionDescription}>{command.description}</span> : null}\n </span>\n {command.shortcut ? <span className={shortcutClass}>{command.shortcut}</span> : null}\n </div>\n );\n };\n\n return (\n <FloatingPortal>\n <FloatingOverlay className={overlay} lockScroll>\n <FloatingFocusManager context={context} initialFocus={inputRef}>\n <div\n ref={refs.setFloating}\n className={palette}\n aria-label={ariaLabel ?? \"Command palette\"}\n {...getFloatingProps()}\n >\n <input\n ref={inputRef}\n type=\"text\"\n role=\"combobox\"\n className={inputEl}\n value={query}\n placeholder={placeholder}\n autoComplete=\"off\"\n aria-autocomplete=\"list\"\n aria-expanded={true}\n aria-controls={listId}\n aria-activedescendant={activeOptionId}\n onChange={(event) => setQuery(event.target.value)}\n onKeyDown={handleKeyDown}\n />\n <div\n ref={listRef}\n id={listId}\n role=\"listbox\"\n className={list}\n onScroll={(event) => setScrollTop(event.currentTarget.scrollTop)}\n >\n {filteredCommands.length === 0 ? (\n <div className={emptyState}>{emptyMessage}</div>\n ) : isVirtualized ? (\n <div className={virtualSpacer} style={{ height: totalHeight }}>\n {visibleRows.map((row, i) => {\n const rowIndex = startIndex + i;\n return renderRow(row, rowIndex, {\n position: \"absolute\",\n top: rowIndex * rowHeight,\n left: 0,\n right: 0,\n height: rowHeight\n });\n })}\n </div>\n ) : (\n rows.map((row, rowIndex) => renderRow(row, rowIndex))\n )}\n </div>\n </div>\n </FloatingFocusManager>\n </FloatingOverlay>\n </FloatingPortal>\n );\n}\n","import 'src/components/CommandPalette/CommandPalette.css.ts.vanilla.css?source=#H4sIAAAAAAAAA81XW4vbOBR-n1-hl9IW6sHOJL247NPuQhfaZdl5WVhKOLaObXVkyUhyYs8y_32RHDl2YudCW1oIJD7-jnT0feei3P4qyxIE_Qs4GoNruUHFoV2vo6U0-YqG5L8bQiqpmWFSxCRjDdL3N4QwodHEJLS_KdMVhzYmGcfGGoCzXATMYKk7Y6ANKGNffam1YVkbpFIYFCYmKQqDyr5KIH3IlawFjYnKE3gRviK7z-3ypUVUQCkTeWBkFZNotSmGRo6ZickG1Isg0BWkGPB8vV48tLDYfhm5K5YXF0ITaYwsT2MfAyYoNjGJ7sLw_c3Tze0BqdXu25MaOVKPWHNEUaYw7bhOJa9LcchMF0kquVSBrlUGKf4NTCP1QS1cUA4wRhtsjAfdOVAmhQkyKBlvPdSZEklbj4xCB02koqgCBZTV2oO7pwEh1Q7bBLoAKrc9ce5pAKwdcMuoKWISheEz-1hCE-xMq9dh1XhbgZ1gb8JOcZukGberF4xSdBTJ2nAmMCZCCpwSgYmqNr_zXoSFE-EgAhc5e2Qij_2JE9nsz--XP9pvrJFRIHQFCoW5kmZn1-wRR0Br-NhzF60uV3hUMd8q4b9LxfV02_19GnQOu1fO5p22E07atBwPnJzNO7UTThM0dgDvRF9elE5xXHFIsZCconK5NSPQp9rsi3U5uThn2vQr313bLXx5BG1MoDZyIMRYgkb7MPLJMDZMmRr4vQWrPp7lwUhQyMGwDR4V9PGCtj6qDwh0sNxq-nijETKYEbMFOpvpuvSnLM5m-hz2ONPnkBOZfgi9NC9OdYN_eumixR66xeHuA9MnpKzuw4jeOhe7aeBaVSZVGZO6qlCloJ2STjDlTuDIDm_DJZZTosrK5kGv5-ur9MzhjFoXN2h3GrdLTKxc32MIzutxvye3W9UOh35wDcDW_sGZ_5SqBN67JWfH7J4acbq3_3wZXytthagk64Q_n0X_UjAQQGo7y2eXUmcuQT2Rk63saHlQDALKNCQc6S_Pjarx-eer2vb-WELazONya6_Gc3v_kQ72fzMuEiZcupyplRNX5-6OXSgmHtydfC6Ij5Dgfma9vXay2DcxiUjUz5WSCT-rT2z7G-pUsbEE764k--JeeByELqQyab0fqeD2PiTt6mgmmkYpheyjib42cCwr094bGPx3SLrpO1f6ZR8nO1v6c9gfOey-eR8ejgVfL0__AwMAtED2DgAA';\nexport var emptyState = 'CommandPalette_emptyState__14otg5db';\nexport var groupHeader = 'CommandPalette_groupHeader__14otg5d5';\nexport var inputEl = 'CommandPalette_inputEl__14otg5d2';\nexport var list = 'CommandPalette_list__14otg5d3';\nexport var option = 'CommandPalette_option__14otg5d6';\nexport var optionDescription = 'CommandPalette_optionDescription__14otg5d9';\nexport var optionIcon = 'CommandPalette_optionIcon__14otg5d7';\nexport var optionLabel = 'CommandPalette_optionLabel__14otg5d8';\nexport var overlay = 'CommandPalette_overlay__14otg5d0';\nexport var palette = 'CommandPalette_palette__14otg5d1';\nexport var shortcut = 'CommandPalette_shortcut__14otg5da';\nexport var virtualSpacer = 'CommandPalette_virtualSpacer__14otg5d4';","import { useEffect } from \"react\";\n\nexport interface UseCommandPaletteShortcutOptions {\n key?: string;\n metaKey?: boolean;\n ctrlKey?: boolean;\n}\n\nfunction isMac(): boolean {\n if (typeof navigator === \"undefined\") return false;\n return /Mac|iPhone|iPad|iPod/.test(navigator.platform ?? navigator.userAgent ?? \"\");\n}\n\n/**\n * Attaches a document-level Cmd+K (Mac) / Ctrl+K (elsewhere) listener that\n * calls onOpenChange(true). Separate from CommandPalette so consumers can\n * wire their own trigger instead.\n */\nexport function useCommandPaletteShortcut(\n onOpenChange: (open: boolean) => void,\n options: UseCommandPaletteShortcutOptions = {}\n): void {\n const { key = \"k\", metaKey, ctrlKey } = options;\n\n useEffect(() => {\n const explicit = metaKey !== undefined || ctrlKey !== undefined;\n const useMeta = explicit ? Boolean(metaKey) : isMac();\n const useCtrl = explicit ? Boolean(ctrlKey) : !isMac();\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key.toLowerCase() !== key.toLowerCase()) return;\n if (event.metaKey !== useMeta) return;\n if (event.ctrlKey !== useCtrl) return;\n\n event.preventDefault();\n onOpenChange(true);\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [onOpenChange, key, metaKey, ctrlKey]);\n}\n","import type { ReactElement } from \"react\";\nimport { AxisBottom, AxisLeft } from \"@visx/axis\";\nimport { GridRows } from \"@visx/grid\";\nimport { Group } from \"@visx/group\";\nimport { LinePath } from \"@visx/shape\";\nimport { vars } from \"@vesture/tokens\";\nimport { buildLineChartLayout } from \"./LineChart.render\";\nimport { emptyState, root } from \"./LineChart.css\";\nimport type { LineChartBaseProps } from \"./types\";\n\nexport interface LineChartProps extends LineChartBaseProps {\n width: number;\n height: number;\n}\n\n/**\n * Server-safe, zero-JS line chart. Renders a static SVG with no event handlers — use it in\n * server components, static reports, or anywhere a hover tooltip/legend isn't needed. For a\n * dashboard-style chart with hover tooltips and a toggleable legend, use `InteractiveLineChart`\n * instead (it wraps this component and requires client-side JS).\n */\nexport function LineChart({\n data,\n series,\n width,\n height,\n margin,\n xScale\n}: LineChartProps): ReactElement {\n if (data.length === 0) {\n return (\n <div className={root} style={{ width, height }}>\n <div className={emptyState} style={{ width, height }}>\n No data\n </div>\n </div>\n );\n }\n\n const { scales, seriesLayouts } = buildLineChartLayout(data, series, width, height, margin, xScale);\n const { xScale: scaleX, yScale, innerWidth, innerHeight, margin: resolvedMargin } = scales;\n\n return (\n <div className={root}>\n <svg width={width} height={height} role=\"img\" aria-label=\"Line chart\">\n <Group left={resolvedMargin.left} top={resolvedMargin.top}>\n <GridRows scale={yScale} width={innerWidth} height={innerHeight} stroke={vars.chart.grid} />\n {seriesLayouts.map((s) => (\n <LinePath\n key={s.key}\n data={s.points}\n x={(p) => p.x}\n y={(p) => p.y}\n stroke={s.color}\n strokeWidth={2}\n fill=\"none\"\n />\n ))}\n <AxisBottom\n top={innerHeight}\n scale={scaleX}\n stroke={vars.chart.axis}\n tickStroke={vars.chart.axis}\n tickLabelProps={() => ({ fill: vars.chart.axis, fontSize: 11, textAnchor: \"middle\" })}\n />\n <AxisLeft\n scale={yScale}\n stroke={vars.chart.axis}\n tickStroke={vars.chart.axis}\n tickLabelProps={() => ({ fill: vars.chart.axis, fontSize: 11, textAnchor: \"end\", dx: \"-0.25em\" })}\n />\n </Group>\n </svg>\n </div>\n );\n}\n","import { scaleBand, scaleLinear, scaleTime } from \"@visx/scale\";\nimport { line as d3Line } from \"@visx/vendor/d3-shape\";\nimport type { ScaleBand, ScaleLinear, ScaleTime } from \"@visx/vendor/d3-scale\";\nimport { vars } from \"@vesture/tokens\";\nimport type {\n LineChartDataPoint,\n LineChartMargin,\n LineChartSeries,\n LineChartXScaleType\n} from \"./types\";\n\nexport const DEFAULT_MARGIN: LineChartMargin = { top: 16, right: 16, bottom: 32, left: 48 };\n\n/**\n * Fixed-order categorical cycle backing every chart component. A series index beyond 8\n * wraps back around to series1 — with more than 8 series, colors repeat and the legend\n * label becomes the only reliable way to tell those series apart.\n */\nexport const SERIES_COLOR_CYCLE: readonly string[] = [\n vars.chart.series1,\n vars.chart.series2,\n vars.chart.series3,\n vars.chart.series4,\n vars.chart.series5,\n vars.chart.series6,\n vars.chart.series7,\n vars.chart.series8\n];\n\nexport function getSeriesColor(series: LineChartSeries, index: number): string {\n return series.color ?? SERIES_COLOR_CYCLE[index % SERIES_COLOR_CYCLE.length]!;\n}\n\nexport function resolveMargin(margin?: Partial<LineChartMargin>): LineChartMargin {\n return { ...DEFAULT_MARGIN, ...margin };\n}\n\nexport function inferXScaleType(data: LineChartDataPoint[]): LineChartXScaleType {\n const first = data[0]?.x;\n if (first instanceof Date) return \"time\";\n if (typeof first === \"number\") return \"linear\";\n return \"band\";\n}\n\nexport function numericValue(value: string | number | Date | undefined): number | undefined {\n if (value === undefined) return undefined;\n const n = value instanceof Date ? value.getTime() : Number(value);\n return Number.isFinite(n) ? n : undefined;\n}\n\nexport type LineChartXScale =\n | ScaleTime<number, number>\n | ScaleLinear<number, number>\n | ScaleBand<string>;\n\nexport interface LineChartScales {\n xScale: LineChartXScale;\n yScale: ScaleLinear<number, number>;\n xScaleType: LineChartXScaleType;\n innerWidth: number;\n innerHeight: number;\n margin: LineChartMargin;\n}\n\nexport function buildScales(\n data: LineChartDataPoint[],\n series: LineChartSeries[],\n width: number,\n height: number,\n margin: LineChartMargin,\n xScaleType: LineChartXScaleType,\n /** When true, the y domain is computed from each data point's cumulative series sum rather\n * than the per-series max — used by AreaChart's stacked mode, which reuses this function\n * directly rather than re-deriving y-domain logic. LineChart itself never passes this. */\n stacked = false\n): LineChartScales {\n const innerWidth = Math.max(0, width - margin.left - margin.right);\n const innerHeight = Math.max(0, height - margin.top - margin.bottom);\n\n let xScale: LineChartXScale;\n if (xScaleType === \"time\") {\n const xValues = data.map((d) => new Date(d.x as string | number | Date).getTime());\n xScale = scaleTime({\n domain: [Math.min(...xValues), Math.max(...xValues)],\n range: [0, innerWidth]\n });\n } else if (xScaleType === \"linear\") {\n const xValues = data.map((d) => Number(d.x));\n xScale = scaleLinear({\n domain: [Math.min(...xValues), Math.max(...xValues)],\n range: [0, innerWidth]\n });\n } else {\n xScale = scaleBand({\n domain: data.map((d) => String(d.x)),\n range: [0, innerWidth],\n padding: 0.2\n });\n }\n\n const yValues = stacked\n ? data.map((d) => series.reduce((sum, s) => sum + (numericValue(d[s.key]) ?? 0), 0))\n : data.flatMap((d) =>\n series\n .map((s) => numericValue(d[s.key]))\n .filter((v): v is number => v !== undefined)\n );\n const yMin = stacked ? 0 : yValues.length > 0 ? Math.min(0, ...yValues) : 0;\n const yMax = yValues.length > 0 ? Math.max(...yValues) : 1;\n const yScale = scaleLinear({\n domain: [yMin, yMax],\n range: [innerHeight, 0],\n nice: true\n });\n\n return { xScale, yScale, xScaleType, innerWidth, innerHeight, margin };\n}\n\nexport function getXPixel(scales: LineChartScales, x: LineChartDataPoint[\"x\"]): number | undefined {\n const { xScale, xScaleType } = scales;\n if (xScaleType === \"band\") {\n const pos = (xScale as ScaleBand<string>)(String(x));\n if (pos === undefined) return undefined;\n return pos + (xScale as ScaleBand<string>).bandwidth() / 2;\n }\n if (xScaleType === \"time\") {\n return (xScale as ScaleTime<number, number>)(new Date(x as string | number | Date));\n }\n return (xScale as ScaleLinear<number, number>)(Number(x));\n}\n\nexport function getYPixel(scales: LineChartScales, value: string | number | Date | undefined): number | undefined {\n const n = numericValue(value);\n if (n === undefined) return undefined;\n return scales.yScale(n);\n}\n\nexport interface LineChartSeriesPoint {\n dataIndex: number;\n x: number;\n y: number;\n}\n\nexport interface LineChartSeriesLayout {\n key: string;\n label: string;\n color: string;\n /** Pixel-space points, already positioned within the scales' inner plot area. Points whose value is missing/non-numeric are omitted, which splits the line into gapped segments. */\n points: LineChartSeriesPoint[];\n /** SVG path `d` attribute for this series' points, generated with a linear curve. Empty string when fewer than 2 points are defined. */\n path: string;\n}\n\nconst pathGenerator = d3Line<LineChartSeriesPoint>()\n .x((p) => p.x)\n .y((p) => p.y);\n\n/**\n * The shared entry point: given data/series/dimensions, computes scales and per-series\n * pixel-space geometry once. Both the static `LineChart` (feeding this into visx's\n * `LinePath`) and `InteractiveLineChart` (feeding this into hover hit-testing) call this\n * same function rather than re-deriving scales/points independently.\n */\nexport function buildLineChartLayout(\n data: LineChartDataPoint[],\n series: LineChartSeries[],\n width: number,\n height: number,\n margin?: Partial<LineChartMargin>,\n xScaleType?: LineChartXScaleType\n): { scales: LineChartScales; seriesLayouts: LineChartSeriesLayout[] } {\n const resolvedMargin = resolveMargin(margin);\n const resolvedXScaleType = xScaleType ?? inferXScaleType(data);\n const scales = buildScales(data, series, width, height, resolvedMargin, resolvedXScaleType);\n\n const seriesLayouts: LineChartSeriesLayout[] = series.map((s, index) => {\n const points: LineChartSeriesPoint[] = [];\n data.forEach((d, dataIndex) => {\n const x = getXPixel(scales, d.x);\n const y = getYPixel(scales, d[s.key]);\n if (x !== undefined && y !== undefined) {\n points.push({ dataIndex, x, y });\n }\n });\n return {\n key: s.key,\n label: s.label,\n color: getSeriesColor(s, index),\n points,\n path: points.length >= 2 ? pathGenerator(points) ?? \"\" : \"\"\n };\n });\n\n return { scales, seriesLayouts };\n}\n\n/** Finds the data point whose x position is closest to `pixelX` (an offset within the plot's inner area, e.g. from a mousemove event minus the left margin). Used by the interactive hover overlay. */\nexport function findNearestDataIndex(\n data: LineChartDataPoint[],\n scales: LineChartScales,\n pixelX: number\n): number | null {\n if (data.length === 0) return null;\n\n let nearestIndex = 0;\n let nearestDistance = Infinity;\n data.forEach((d, index) => {\n const x = getXPixel(scales, d.x);\n if (x === undefined) return;\n const distance = Math.abs(x - pixelX);\n if (distance < nearestDistance) {\n nearestDistance = distance;\n nearestIndex = index;\n }\n });\n\n return nearestDistance === Infinity ? null : nearestIndex;\n}\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n let d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n if (d > 15) return append;\n const k = 10 ** d;\n return function(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\n\nexport class Path {\n constructor(digits) {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n moveTo(x, y) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append`Z`;\n }\n }\n lineTo(x, y) {\n this._append`L${this._x1 = +x},${this._y1 = +y}`;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n }\n arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append`M${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._append`L${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Otherwise, draw an arc!\n else {\n let x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n }\n\n this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n }\n }\n arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append`M${x0},${y0}`;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._append`L${x0},${y0}`;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n }\n }\n rect(x, y, w, h) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n }\n toString() {\n return this._;\n }\n}\n\nexport function path() {\n return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n return new Path(+digits);\n}\n","import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n let digits = 3;\n\n shape.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) {\n digits = null;\n } else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n return shape;\n };\n\n return () => new Path(digits);\n}\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(line);\n\n x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x0, y0, y1) {\n var x1 = null,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(area);\n\n x0 = typeof x0 === \"function\" ? x0 : (x0 === undefined) ? pointX : constant(+x0);\n y0 = typeof y0 === \"function\" ? y0 : (y0 === undefined) ? constant(0) : constant(+y0);\n y1 = typeof y1 === \"function\" ? y1 : (y1 === undefined) ? pointY : constant(+y1);\n\n function area(data) {\n var i,\n j,\n k,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","import 'src/components/charts/internal/chartSurfaces.css.ts.vanilla.css?source=#H4sIAAAAAAAAA7WUsW7bMBCGdz8FlwLNwEB20jRQtkzp0A51h24GJZ4kxhSpkifLStF3L0iLtJRKQYq0iwCevrsjf_68y7xiBretKVgOdme0xt1O3ajHep2QnytCGm0FCq1SYkAyFAe4WxHSCY5VStZJ8u5u9Wt1Oa0CdYP9FhlCqLX2tbiwjWR9SgoJR1eGSVEqKhBqm5IcFIJx4cfWoih6mmuFoHD8K9dSm5QcmHlPqe9Kx902-55turW9cGyhFdKC1UL2IcOHMs37iCZn1IonmIAusK0jenUxc1bUWqJowkE3z0RjmdWyRS9ao4U7BoUDKLQpUVr5eMbyfWl0q_j0YEPp-_g77qS5WNBiSPkGR4zwj38nxncb0Y1HpVBAKxBlhRPYxR98-Is2NZMxLfNpmTYcDDWMi9aGxNOK2ii4GrOD407oOBbobkxb7CU8o30s0P2YXhby3gNx98ZnNYxzoUqKuglJtmE50GOUp5yAmUbU9etYCQVOybMg1YQ0Y9Xn0Uwfqa0Y113k_IrW0UvowScqFIdjStabJFl2-VfdBaNf_dWLLtmLUi3123YM8yq0vJ62FMq7L5M6349m0m3jNxJMOSxfclzRymjQ4bFIcMIZofYpmdNDQgnuPZ429mFeC1-lM-7o7jurw_kihO9cM1MK9ae1pje7sJ9PCHXY082sWG-7pumoQsOUbZgBhWeFz1NtsKnXj5C8Nda9sWEG_q_x_HwougXF0TScneFn9R4E56CChh-9hgsVP7cI8fKufW8Xphxybdhp-nvNsTK6LavFvlOT377K5Otk6vKwfqPNfwNQ2XNIDggAAA';\nimport 'src/components/charts/LineChart/LineChart.css.ts.vanilla.css?source=LkxpbmVDaGFydF9vdmVybGF5UmVjdF9fMWtmdzBubzAgewogIGZpbGw6IHRyYW5zcGFyZW50OwogIGN1cnNvcjogY3Jvc3NoYWlyOwp9';\nexport var emptyState = 'chartSurfaces_emptyState__n6njm11';\nexport var legend = 'chartSurfaces_legend__n6njm15';\nexport var legendItem = 'chartSurfaces_legendItem__n6njm16';\nexport var legendItemHidden = 'chartSurfaces_legendItemHidden__n6njm17';\nexport var legendSwatch = 'chartSurfaces_legendSwatch__n6njm18';\nexport var overlayRect = 'LineChart_overlayRect__1kfw0no0';\nexport var root = 'chartSurfaces_root__n6njm10';\nexport var tooltip = 'chartSurfaces_tooltip__n6njm12';\nexport var tooltipRow = 'chartSurfaces_tooltipRow__n6njm13';\nexport var tooltipSwatch = 'chartSurfaces_tooltipSwatch__n6njm14';","\"use client\";\n\nimport { useMemo, useState } from \"react\";\nimport type { MouseEvent as ReactMouseEvent, ReactElement } from \"react\";\nimport { ParentSize } from \"@visx/responsive\";\nimport { TooltipWithBounds, useTooltip } from \"@visx/tooltip\";\nimport { LineChart } from \"./LineChart\";\nimport { buildLineChartLayout, findNearestDataIndex, getSeriesColor, getXPixel } from \"./LineChart.render\";\nimport {\n legend,\n legendItem,\n legendItemHidden,\n legendSwatch,\n overlayRect,\n root,\n tooltip as tooltipClass,\n tooltipRow,\n tooltipSwatch\n} from \"./LineChart.css\";\nimport type { LineChartBaseProps, LineChartDataPoint, LineChartSeries } from \"./types\";\n\ninterface TooltipDatum {\n dataPoint: LineChartDataPoint;\n visibleSeries: LineChartSeries[];\n}\n\nexport interface InteractiveLineChartProps extends LineChartBaseProps {\n /** Fixed chart height; width auto-tracks the parent container's size via ResizeObserver. */\n height?: number;\n}\n\n/**\n * Client-rendered line chart for dashboards: auto-sizes to its parent (via `@visx/responsive`'s\n * `ParentSize`), and adds a hover tooltip plus a click-to-toggle legend. Requires client-side JS\n * (\"use client\") — for server components or static output where no interaction is needed, use\n * the static `LineChart` instead.\n */\nexport function InteractiveLineChart({\n data,\n series,\n margin,\n xScale,\n height = 320\n}: InteractiveLineChartProps): ReactElement {\n const [hiddenKeys, setHiddenKeys] = useState<ReadonlySet<string>>(new Set());\n\n // Colors are assigned once from each series' original position, before any filtering, so a\n // series keeps its color when a sibling is toggled off (the cycle index would otherwise\n // shift for everything after the hidden series).\n const coloredSeries = useMemo(\n () => series.map((s, index) => ({ ...s, color: s.color ?? getSeriesColor(s, index) })),\n [series]\n );\n const visibleSeries = useMemo(\n () => coloredSeries.filter((s) => !hiddenKeys.has(s.key)),\n [coloredSeries, hiddenKeys]\n );\n\n const { tooltipData, tooltipLeft, tooltipTop, tooltipOpen, showTooltip, hideTooltip } =\n useTooltip<TooltipDatum>();\n\n function toggleSeries(key: string): void {\n setHiddenKeys((prev) => {\n const next = new Set(prev);\n if (next.has(key)) {\n next.delete(key);\n } else {\n next.add(key);\n }\n return next;\n });\n }\n\n return (\n <div className={root}>\n <ParentSize initialSize={{ width: 600, height }} style={{ height }}>\n {({ width }) => {\n if (width === 0) return null;\n\n const { scales } = buildLineChartLayout(data, visibleSeries, width, height, margin, xScale);\n\n function handleMouseMove(event: ReactMouseEvent<SVGRectElement>): void {\n const bounds = event.currentTarget.getBoundingClientRect();\n const pixelX = event.clientX - bounds.left;\n const dataIndex = findNearestDataIndex(data, scales, pixelX);\n if (dataIndex === null) {\n hideTooltip();\n return;\n }\n const dataPoint = data[dataIndex]!;\n const xPixel = getXPixel(scales, dataPoint.x) ?? pixelX;\n showTooltip({\n tooltipData: { dataPoint, visibleSeries },\n tooltipLeft: scales.margin.left + xPixel,\n tooltipTop: 0\n });\n }\n\n return (\n <div style={{ position: \"relative\", width, height }}>\n <LineChart\n data={data}\n series={visibleSeries}\n width={width}\n height={height}\n margin={margin}\n xScale={xScale}\n />\n <svg\n width={width}\n height={height}\n style={{ position: \"absolute\", top: 0, left: 0 }}\n aria-hidden=\"true\"\n >\n <rect\n className={overlayRect}\n data-testid=\"line-chart-overlay\"\n x={scales.margin.left}\n y={scales.margin.top}\n width={scales.innerWidth}\n height={scales.innerHeight}\n onMouseMove={handleMouseMove}\n onMouseLeave={() => hideTooltip()}\n />\n </svg>\n {tooltipOpen && tooltipData ? (\n <TooltipWithBounds left={tooltipLeft} top={tooltipTop} className={tooltipClass}>\n <div>{String(tooltipData.dataPoint.x)}</div>\n {tooltipData.visibleSeries.map((s) => (\n <div key={s.key} className={tooltipRow}>\n <span className={tooltipSwatch} style={{ background: s.color }} />\n <span>\n {s.label}: {String(tooltipData.dataPoint[s.key])}\n </span>\n </div>\n ))}\n </TooltipWithBounds>\n ) : null}\n </div>\n );\n }}\n </ParentSize>\n <div className={legend}>\n {coloredSeries.map((s) => {\n const hidden = hiddenKeys.has(s.key);\n return (\n <button\n key={s.key}\n type=\"button\"\n className={[legendItem, hidden ? legendItemHidden : null].filter(Boolean).join(\" \")}\n onClick={() => toggleSeries(s.key)}\n aria-pressed={!hidden}\n >\n <span className={legendSwatch} style={{ background: s.color }} />\n {s.label}\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n","import type { ReactElement } from \"react\";\nimport { AxisBottom, AxisLeft } from \"@visx/axis\";\nimport { GridRows } from \"@visx/grid\";\nimport { Group } from \"@visx/group\";\nimport { BarGroup, BarStack } from \"@visx/shape\";\nimport { vars } from \"@vesture/tokens\";\nimport { buildBarChartLayout, SERIES_COLOR_CYCLE } from \"./BarChart.render\";\nimport { emptyState, root } from \"./BarChart.css\";\nimport type { BarChartBaseProps } from \"./types\";\n\nexport interface BarChartProps extends BarChartBaseProps {\n width: number;\n height: number;\n}\n\n/**\n * Server-safe, zero-JS bar chart. Renders a static SVG with no event handlers — use it in\n * server components, static reports, or anywhere a hover tooltip/legend isn't needed. For a\n * dashboard-style chart with hover tooltips and a toggleable legend, use `InteractiveBarChart`\n * instead (it wraps this component and requires client-side JS).\n */\nexport function BarChart({\n data,\n series,\n width,\n height,\n margin,\n layout = \"grouped\"\n}: BarChartProps): ReactElement {\n if (data.length === 0) {\n return (\n <div className={root} style={{ width, height }}>\n <div className={emptyState} style={{ width, height }}>\n No data\n </div>\n </div>\n );\n }\n\n const { scales, colorMap } = buildBarChartLayout(data, series, width, height, margin, layout);\n const { x0Scale, x1Scale, xScale, yScale, innerWidth, innerHeight, margin: resolvedMargin } = scales;\n const keys = series.map((s) => s.key);\n const color = (key: string, index: number): string => colorMap[key] ?? SERIES_COLOR_CYCLE[index % 8]!;\n\n return (\n <div className={root}>\n <svg width={width} height={height} role=\"img\" aria-label=\"Bar chart\">\n <Group left={resolvedMargin.left} top={resolvedMargin.top}>\n <GridRows scale={yScale} width={innerWidth} height={innerHeight} stroke={vars.chart.grid} />\n {layout === \"stacked\" ? (\n <BarStack data={data} keys={keys} x={(d) => d.category} xScale={xScale} yScale={yScale} color={color} />\n ) : (\n <BarGroup\n data={data}\n keys={keys}\n height={innerHeight}\n x0={(d) => d.category}\n x0Scale={x0Scale}\n x1Scale={x1Scale!}\n yScale={yScale}\n color={color}\n />\n )}\n <AxisBottom\n top={innerHeight}\n scale={x0Scale}\n stroke={vars.chart.axis}\n tickStroke={vars.chart.axis}\n tickLabelProps={() => ({ fill: vars.chart.axis, fontSize: 11, textAnchor: \"middle\" })}\n />\n <AxisLeft\n scale={yScale}\n stroke={vars.chart.axis}\n tickStroke={vars.chart.axis}\n tickLabelProps={() => ({ fill: vars.chart.axis, fontSize: 11, textAnchor: \"end\", dx: \"-0.25em\" })}\n />\n </Group>\n </svg>\n </div>\n );\n}\n","import { scaleBand, scaleLinear } from \"@visx/scale\";\nimport type { ScaleBand, ScaleLinear } from \"@visx/vendor/d3-scale\";\nimport { vars } from \"@vesture/tokens\";\nimport type { BarChartDataPoint, BarChartLayout, BarChartMargin, BarChartSeries } from \"./types\";\n\nexport const DEFAULT_MARGIN: BarChartMargin = { top: 16, right: 16, bottom: 32, left: 48 };\n\n/**\n * Fixed-order categorical cycle backing every chart component. A series index beyond 8\n * wraps back around to series1 — with more than 8 series, colors repeat and the legend\n * label becomes the only reliable way to tell those series apart.\n */\nexport const SERIES_COLOR_CYCLE: readonly string[] = [\n vars.chart.series1,\n vars.chart.series2,\n vars.chart.series3,\n vars.chart.series4,\n vars.chart.series5,\n vars.chart.series6,\n vars.chart.series7,\n vars.chart.series8\n];\n\nexport function getSeriesColor(series: BarChartSeries, index: number): string {\n return series.color ?? SERIES_COLOR_CYCLE[index % SERIES_COLOR_CYCLE.length]!;\n}\n\n/** A `(key) => color` lookup, in the shape `@visx/shape`'s `BarGroup`/`BarStack` expect for their `color` prop. */\nexport function buildSeriesColorMap(series: BarChartSeries[]): Record<string, string> {\n const map: Record<string, string> = {};\n series.forEach((s, index) => {\n map[s.key] = getSeriesColor(s, index);\n });\n return map;\n}\n\nexport function resolveMargin(margin?: Partial<BarChartMargin>): BarChartMargin {\n return { ...DEFAULT_MARGIN, ...margin };\n}\n\nfunction numericValue(value: string | number | undefined): number {\n if (value === undefined) return 0;\n const n = Number(value);\n return Number.isFinite(n) ? n : 0;\n}\n\nexport interface BarChartScales {\n /** Category (band) scale — positions each category's bar/bar-group along x. */\n x0Scale: ScaleBand<string>;\n /** Per-series position within a category's group. Only set for `layout: \"grouped\"`. */\n x1Scale?: ScaleBand<string>;\n /** Alias for `x0Scale` — the scale `AxisBottom` and `BarStack`'s `xScale` prop consume. */\n xScale: ScaleBand<string>;\n yScale: ScaleLinear<number, number>;\n layout: BarChartLayout;\n innerWidth: number;\n innerHeight: number;\n margin: BarChartMargin;\n}\n\n/**\n * Computes the category/value scales for a bar chart. Bar *position* math (grouped\n * side-by-side offsets, stacked cumulative heights) is intentionally left to `@visx/shape`'s\n * `BarGroup`/`BarStack` components in the `.tsx` files, which already solve it correctly from\n * these scales — this only derives the scales and the color-per-series lookup, which both the\n * static `BarChart` and `InteractiveBarChart` consume identically.\n */\nexport function buildScales(\n data: BarChartDataPoint[],\n series: BarChartSeries[],\n width: number,\n height: number,\n margin: BarChartMargin,\n layout: BarChartLayout\n): BarChartScales {\n const innerWidth = Math.max(0, width - margin.left - margin.right);\n const innerHeight = Math.max(0, height - margin.top - margin.bottom);\n\n const x0Scale = scaleBand<string>({\n domain: data.map((d) => d.category),\n range: [0, innerWidth],\n padding: 0.2\n });\n\n const x1Scale =\n layout === \"grouped\"\n ? scaleBand<string>({\n domain: series.map((s) => s.key),\n range: [0, x0Scale.bandwidth()],\n padding: 0.1\n })\n : undefined;\n\n const yMax =\n layout === \"stacked\"\n ? Math.max(0, ...data.map((d) => series.reduce((sum, s) => sum + numericValue(d[s.key]), 0)))\n : Math.max(0, ...data.flatMap((d) => series.map((s) => numericValue(d[s.key]))));\n\n const yScale = scaleLinear<number>({\n domain: [0, yMax > 0 ? yMax : 1],\n range: [innerHeight, 0],\n nice: true\n });\n\n return { x0Scale, x1Scale, xScale: x0Scale, yScale, layout, innerWidth, innerHeight, margin };\n}\n\n/**\n * The shared entry point: given data/series/dimensions, resolves the margin and computes\n * scales + the series color map once. Both the static `BarChart` (feeding these into visx's\n * `BarGroup`/`BarStack`) and `InteractiveBarChart` (feeding these into per-bar hover handlers)\n * call this same function rather than re-deriving scales/colors independently.\n */\nexport function buildBarChartLayout(\n data: BarChartDataPoint[],\n series: BarChartSeries[],\n width: number,\n height: number,\n margin?: Partial<BarChartMargin>,\n layout: BarChartLayout = \"grouped\"\n): { scales: BarChartScales; colorMap: Record<string, string> } {\n const resolvedMargin = resolveMargin(margin);\n const scales = buildScales(data, series, width, height, resolvedMargin, layout);\n const colorMap = buildSeriesColorMap(series);\n return { scales, colorMap };\n}\n","import 'src/components/charts/internal/chartSurfaces.css.ts.vanilla.css?source=#H4sIAAAAAAAAA7WUsW7bMBCGdz8FlwLNwEB20jRQtkzp0A51h24GJZ4kxhSpkifLStF3L0iLtJRKQYq0iwCevrsjf_68y7xiBretKVgOdme0xt1O3ajHep2QnytCGm0FCq1SYkAyFAe4WxHSCY5VStZJ8u5u9Wt1Oa0CdYP9FhlCqLX2tbiwjWR9SgoJR1eGSVEqKhBqm5IcFIJx4cfWoih6mmuFoHD8K9dSm5QcmHlPqe9Kx902-55turW9cGyhFdKC1UL2IcOHMs37iCZn1IonmIAusK0jenUxc1bUWqJowkE3z0RjmdWyRS9ao4U7BoUDKLQpUVr5eMbyfWl0q_j0YEPp-_g77qS5WNBiSPkGR4zwj38nxncb0Y1HpVBAKxBlhRPYxR98-Is2NZMxLfNpmTYcDDWMi9aGxNOK2ii4GrOD407oOBbobkxb7CU8o30s0P2YXhby3gNx98ZnNYxzoUqKuglJtmE50GOUp5yAmUbU9etYCQVOybMg1YQ0Y9Xn0Uwfqa0Y113k_IrW0UvowScqFIdjStabJFl2-VfdBaNf_dWLLtmLUi3123YM8yq0vJ62FMq7L5M6349m0m3jNxJMOSxfclzRymjQ4bFIcMIZofYpmdNDQgnuPZ429mFeC1-lM-7o7jurw_kihO9cM1MK9ae1pje7sJ9PCHXY082sWG-7pumoQsOUbZgBhWeFz1NtsKnXj5C8Nda9sWEG_q_x_HwougXF0TScneFn9R4E56CChh-9hgsVP7cI8fKufW8Xphxybdhp-nvNsTK6LavFvlOT377K5Otk6vKwfqPNfwNQ2XNIDggAAA';\nexport var emptyState = 'chartSurfaces_emptyState__n6njm11';\nexport var legend = 'chartSurfaces_legend__n6njm15';\nexport var legendItem = 'chartSurfaces_legendItem__n6njm16';\nexport var legendItemHidden = 'chartSurfaces_legendItemHidden__n6njm17';\nexport var legendSwatch = 'chartSurfaces_legendSwatch__n6njm18';\nexport var root = 'chartSurfaces_root__n6njm10';\nexport var tooltip = 'chartSurfaces_tooltip__n6njm12';\nexport var tooltipRow = 'chartSurfaces_tooltipRow__n6njm13';\nexport var tooltipSwatch = 'chartSurfaces_tooltipSwatch__n6njm14';","\"use client\";\n\nimport { useMemo, useState } from \"react\";\nimport type { MouseEvent as ReactMouseEvent, ReactElement } from \"react\";\nimport { AxisBottom, AxisLeft } from \"@visx/axis\";\nimport { GridRows } from \"@visx/grid\";\nimport { Group } from \"@visx/group\";\nimport { ParentSize } from \"@visx/responsive\";\nimport { Bar, BarGroup, BarStack } from \"@visx/shape\";\nimport { TooltipWithBounds, useTooltip } from \"@visx/tooltip\";\nimport { vars } from \"@vesture/tokens\";\nimport { SERIES_COLOR_CYCLE, buildBarChartLayout, getSeriesColor } from \"./BarChart.render\";\nimport {\n emptyState,\n legend,\n legendItem,\n legendItemHidden,\n legendSwatch,\n root,\n tooltip as tooltipClass,\n tooltipRow,\n tooltipSwatch\n} from \"./BarChart.css\";\nimport type { BarChartBaseProps, BarChartDataPoint, BarChartSeries } from \"./types\";\n\ninterface TooltipDatum {\n category: string;\n series: BarChartSeries;\n value: number;\n}\n\nexport interface InteractiveBarChartProps extends BarChartBaseProps {\n /** Fixed chart height; width auto-tracks the parent container's size via ResizeObserver. */\n height?: number;\n}\n\n/**\n * Client-rendered bar chart for dashboards: auto-sizes to its parent (via `@visx/responsive`'s\n * `ParentSize`), and adds a per-bar hover tooltip plus a click-to-toggle legend. Requires\n * client-side JS (\"use client\") — for server components or static output where no interaction\n * is needed, use the static `BarChart` instead.\n */\nexport function InteractiveBarChart({\n data,\n series,\n margin,\n layout = \"grouped\",\n height = 320\n}: InteractiveBarChartProps): ReactElement {\n const [hiddenKeys, setHiddenKeys] = useState<ReadonlySet<string>>(new Set());\n\n // Colors are assigned once from each series' original position, before any filtering, so a\n // series keeps its color when a sibling is toggled off (the cycle index would otherwise\n // shift for everything after the hidden series).\n const coloredSeries = useMemo(\n () => series.map((s, index) => ({ ...s, color: s.color ?? getSeriesColor(s, index) })),\n [series]\n );\n const visibleSeries = useMemo(\n () => coloredSeries.filter((s) => !hiddenKeys.has(s.key)),\n [coloredSeries, hiddenKeys]\n );\n\n const { tooltipData, tooltipLeft, tooltipTop, tooltipOpen, showTooltip, hideTooltip } =\n useTooltip<TooltipDatum>();\n\n function toggleSeries(key: string): void {\n setHiddenKeys((prev) => {\n const next = new Set(prev);\n if (next.has(key)) {\n next.delete(key);\n } else {\n next.add(key);\n }\n return next;\n });\n }\n\n if (data.length === 0) {\n return (\n <div className={root} style={{ height }}>\n <div className={emptyState} style={{ height }}>\n No data\n </div>\n </div>\n );\n }\n\n return (\n <div className={root}>\n <ParentSize initialSize={{ width: 600, height }} style={{ height }}>\n {({ width }) => {\n if (width === 0) return null;\n\n const { scales, colorMap } = buildBarChartLayout(data, visibleSeries, width, height, margin, layout);\n const { x0Scale, x1Scale, xScale, yScale, innerWidth, innerHeight, margin: resolvedMargin } = scales;\n const keys = visibleSeries.map((s) => s.key);\n const seriesByKey = new Map(visibleSeries.map((s) => [s.key, s]));\n const color = (key: string, index: number): string => colorMap[key] ?? SERIES_COLOR_CYCLE[index % 8]!;\n\n function handleBarHover(\n categoryValue: string,\n seriesKey: string,\n value: number,\n event: ReactMouseEvent<SVGRectElement>\n ): void {\n const s = seriesByKey.get(seriesKey);\n if (!s) return;\n const bounds = event.currentTarget as SVGRectElement;\n const x = Number(bounds.getAttribute(\"x\") ?? 0);\n const y = Number(bounds.getAttribute(\"y\") ?? 0);\n const barWidth = Number(bounds.getAttribute(\"width\") ?? 0);\n showTooltip({\n tooltipData: { category: categoryValue, series: s, value },\n tooltipLeft: resolvedMargin.left + x + barWidth / 2,\n tooltipTop: resolvedMargin.top + y\n });\n }\n\n return (\n <div style={{ position: \"relative\", width, height }}>\n <svg width={width} height={height} role=\"img\" aria-label=\"Bar chart\">\n <Group left={resolvedMargin.left} top={resolvedMargin.top}>\n <GridRows scale={yScale} width={innerWidth} height={innerHeight} stroke={vars.chart.grid} />\n {layout === \"stacked\" ? (\n <BarStack<BarChartDataPoint, string>\n data={data}\n keys={keys}\n x={(d) => d.category}\n xScale={xScale}\n yScale={yScale}\n color={color}\n >\n {(barStacks) =>\n barStacks.map((barStack) =>\n barStack.bars.map((bar) => (\n <Bar\n key={`bar-stack-${barStack.index}-${bar.index}`}\n x={bar.x}\n y={bar.y}\n width={bar.width}\n height={bar.height}\n fill={bar.color}\n onMouseEnter={(event) =>\n handleBarHover(\n bar.bar.data.category,\n String(barStack.key),\n Number(bar.bar.data[barStack.key]),\n event\n )\n }\n onMouseLeave={() => hideTooltip()}\n />\n ))\n )\n }\n </BarStack>\n ) : (\n <BarGroup<BarChartDataPoint, string>\n data={data}\n keys={keys}\n height={innerHeight}\n x0={(d) => d.category}\n x0Scale={x0Scale}\n x1Scale={x1Scale!}\n yScale={yScale}\n color={color}\n >\n {(barGroups) =>\n barGroups.map((barGroup) => (\n <Group key={`bar-group-${barGroup.index}`} left={barGroup.x0}>\n {barGroup.bars.map((bar) => (\n <Bar\n key={`bar-group-bar-${barGroup.index}-${bar.key}`}\n x={bar.x}\n y={bar.y}\n width={bar.width}\n height={bar.height}\n fill={bar.color}\n onMouseEnter={(event) =>\n handleBarHover(data[barGroup.index]!.category, String(bar.key), bar.value, event)\n }\n onMouseLeave={() => hideTooltip()}\n />\n ))}\n </Group>\n ))\n }\n </BarGroup>\n )}\n <AxisBottom\n top={innerHeight}\n scale={x0Scale}\n stroke={vars.chart.axis}\n tickStroke={vars.chart.axis}\n tickLabelProps={() => ({ fill: vars.chart.axis, fontSize: 11, textAnchor: \"middle\" })}\n />\n <AxisLeft\n scale={yScale}\n stroke={vars.chart.axis}\n tickStroke={vars.chart.axis}\n tickLabelProps={() => ({\n fill: vars.chart.axis,\n fontSize: 11,\n textAnchor: \"end\",\n dx: \"-0.25em\"\n })}\n />\n </Group>\n </svg>\n {tooltipOpen && tooltipData ? (\n <TooltipWithBounds left={tooltipLeft} top={tooltipTop} className={tooltipClass}>\n <div>{tooltipData.category}</div>\n <div className={tooltipRow}>\n <span className={tooltipSwatch} style={{ background: tooltipData.series.color }} />\n <span>\n {tooltipData.series.label}: {tooltipData.value}\n </span>\n </div>\n </TooltipWithBounds>\n ) : null}\n </div>\n );\n }}\n </ParentSize>\n <div className={legend}>\n {coloredSeries.map((s) => {\n const hidden = hiddenKeys.has(s.key);\n return (\n <button\n key={s.key}\n type=\"button\"\n className={[legendItem, hidden ? legendItemHidden : null].filter(Boolean).join(\" \")}\n onClick={() => toggleSeries(s.key)}\n aria-pressed={!hidden}\n >\n <span className={legendSwatch} style={{ background: s.color }} />\n {s.label}\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n","import type { ReactElement } from \"react\";\nimport { AxisBottom, AxisLeft } from \"@visx/axis\";\nimport { GridRows } from \"@visx/grid\";\nimport { Group } from \"@visx/group\";\nimport { Area } from \"@visx/shape\";\nimport { vars } from \"@vesture/tokens\";\nimport { buildAreaChartLayout } from \"./AreaChart.render\";\nimport { emptyState, root } from \"./AreaChart.css\";\nimport type { AreaChartBaseProps } from \"./types\";\n\nexport interface AreaChartProps extends AreaChartBaseProps {\n width: number;\n height: number;\n}\n\n/**\n * Server-safe, zero-JS area chart. Renders a static SVG with no event handlers — use it in\n * server components, static reports, or anywhere a hover tooltip/legend isn't needed. For a\n * dashboard-style chart with hover tooltips and a toggleable legend, use `InteractiveAreaChart`\n * instead (it wraps this component and requires client-side JS).\n */\nexport function AreaChart({\n data,\n series,\n width,\n height,\n margin,\n xScale,\n stacked = false\n}: AreaChartProps): ReactElement {\n if (data.length === 0) {\n return (\n <div className={root} style={{ width, height }}>\n <div className={emptyState} style={{ width, height }}>\n No data\n </div>\n </div>\n );\n }\n\n const { scales, seriesLayouts } = buildAreaChartLayout(data, series, width, height, margin, xScale, stacked);\n const { xScale: scaleX, yScale, innerWidth, innerHeight, margin: resolvedMargin } = scales;\n\n return (\n <div className={root}>\n <svg width={width} height={height} role=\"img\" aria-label=\"Area chart\">\n <Group left={resolvedMargin.left} top={resolvedMargin.top}>\n <GridRows scale={yScale} width={innerWidth} height={innerHeight} stroke={vars.chart.grid} />\n {seriesLayouts.map((s) => (\n <Area\n key={s.key}\n data={s.points}\n x={(p) => p.x}\n y0={(p) => p.y0}\n y1={(p) => p.y1}\n fill={s.color}\n fillOpacity={s.opacity}\n stroke={s.color}\n strokeWidth={1.5}\n />\n ))}\n <AxisBottom\n top={innerHeight}\n scale={scaleX}\n stroke={vars.chart.axis}\n tickStroke={vars.chart.axis}\n tickLabelProps={() => ({ fill: vars.chart.axis, fontSize: 11, textAnchor: \"middle\" })}\n />\n <AxisLeft\n scale={yScale}\n stroke={vars.chart.axis}\n tickStroke={vars.chart.axis}\n tickLabelProps={() => ({ fill: vars.chart.axis, fontSize: 11, textAnchor: \"end\", dx: \"-0.25em\" })}\n />\n </Group>\n </svg>\n </div>\n );\n}\n","import { area as d3Area } from \"@visx/vendor/d3-shape\";\nimport {\n SERIES_COLOR_CYCLE,\n buildScales,\n findNearestDataIndex,\n getSeriesColor,\n getXPixel,\n inferXScaleType,\n numericValue,\n resolveMargin\n} from \"../LineChart/LineChart.render\";\nimport type { LineChartScales } from \"../LineChart/LineChart.render\";\nimport type { AreaChartDataPoint, AreaChartMargin, AreaChartSeries, AreaChartXScaleType } from \"./types\";\n\n// AreaChart shares LineChart's scale/margin/color/hover-lookup logic wholesale — the x/y\n// scale math, series color cycling, and nearest-point hit-testing are identical between the\n// two chart types (LineChart.render.ts's `buildScales` grew an optional `stacked` param for\n// exactly this reuse). Only area-specific geometry (baseline + stacking accumulation, area\n// path generation) is new here.\nexport { SERIES_COLOR_CYCLE, findNearestDataIndex, getSeriesColor, getXPixel, resolveMargin };\nexport type AreaChartScales = LineChartScales;\n\n/**\n * Fill opacity for overlapping (non-stacked) series, so every series' area remains visible\n * where they intersect rather than fully occluding one another. No existing component in this\n * library uses a semi-transparent fill (the closest precedent, disabled-state opacity, is a\n * different affordance), so this is a chart-specific constant rather than a token reference.\n */\nexport const OVERLAP_FILL_OPACITY = 0.35;\n\nexport interface AreaChartSeriesPoint {\n dataIndex: number;\n x: number;\n /** Pixel y of the filled region's bottom edge (baseline). */\n y0: number;\n /** Pixel y of the filled region's top edge (the series' value, or cumulative value when stacked). */\n y1: number;\n}\n\nexport interface AreaChartSeriesLayout {\n key: string;\n label: string;\n color: string;\n opacity: number;\n /** Pixel-space points, already positioned within the scales' inner plot area. */\n points: AreaChartSeriesPoint[];\n /** SVG path `d` attribute for this series' filled region. Empty string when fewer than 2 points are defined. */\n path: string;\n}\n\nconst areaGenerator = d3Area<AreaChartSeriesPoint>()\n .x((p) => p.x)\n .y0((p) => p.y0)\n .y1((p) => p.y1);\n\n/**\n * The shared entry point: given data/series/dimensions, computes scales (via LineChart's\n * `buildScales`, in stacked or overlapping y-domain mode) and per-series filled-region\n * geometry once. Both the static `AreaChart` (feeding this into visx's `AreaClosed`/`Area`)\n * and `InteractiveAreaChart` (feeding this into hover hit-testing) call this same function.\n */\nexport function buildAreaChartLayout(\n data: AreaChartDataPoint[],\n series: AreaChartSeries[],\n width: number,\n height: number,\n margin?: Partial<AreaChartMargin>,\n xScaleType?: AreaChartXScaleType,\n stacked = false\n): { scales: AreaChartScales; seriesLayouts: AreaChartSeriesLayout[] } {\n const resolvedMargin = resolveMargin(margin);\n const resolvedXScaleType = xScaleType ?? inferXScaleType(data);\n const scales = buildScales(data, series, width, height, resolvedMargin, resolvedXScaleType, stacked);\n\n // Running per-row cumulative total, only meaningful (and only mutated) in stacked mode: each\n // series' baseline is the sum of every series stacked below it, and its top becomes the next\n // series' baseline — the same \"first key at the bottom\" order @visx/shape's BarStack uses.\n const cumulative = data.map(() => 0);\n\n const seriesLayouts: AreaChartSeriesLayout[] = series.map((s, index) => {\n const points: AreaChartSeriesPoint[] = [];\n data.forEach((d, dataIndex) => {\n const rawValue = numericValue(d[s.key]);\n if (!stacked && rawValue === undefined) return;\n\n const x = getXPixel(scales, d.x);\n if (x === undefined) return;\n\n const baseline = stacked ? cumulative[dataIndex]! : 0;\n const top = stacked ? baseline + (rawValue ?? 0) : rawValue!;\n if (stacked) cumulative[dataIndex] = top;\n\n points.push({ dataIndex, x, y0: scales.yScale(baseline), y1: scales.yScale(top) });\n });\n\n return {\n key: s.key,\n label: s.label,\n color: getSeriesColor(s, index),\n opacity: stacked ? 1 : OVERLAP_FILL_OPACITY,\n points,\n path: points.length >= 2 ? areaGenerator(points) ?? \"\" : \"\"\n };\n });\n\n return { scales, seriesLayouts };\n}\n","import 'src/components/charts/internal/chartSurfaces.css.ts.vanilla.css?source=#H4sIAAAAAAAAA7WUsW7bMBCGdz8FlwLNwEB20jRQtkzp0A51h24GJZ4kxhSpkifLStF3L0iLtJRKQYq0iwCevrsjf_68y7xiBretKVgOdme0xt1O3ajHep2QnytCGm0FCq1SYkAyFAe4WxHSCY5VStZJ8u5u9Wt1Oa0CdYP9FhlCqLX2tbiwjWR9SgoJR1eGSVEqKhBqm5IcFIJx4cfWoih6mmuFoHD8K9dSm5QcmHlPqe9Kx902-55turW9cGyhFdKC1UL2IcOHMs37iCZn1IonmIAusK0jenUxc1bUWqJowkE3z0RjmdWyRS9ao4U7BoUDKLQpUVr5eMbyfWl0q_j0YEPp-_g77qS5WNBiSPkGR4zwj38nxncb0Y1HpVBAKxBlhRPYxR98-Is2NZMxLfNpmTYcDDWMi9aGxNOK2ii4GrOD407oOBbobkxb7CU8o30s0P2YXhby3gNx98ZnNYxzoUqKuglJtmE50GOUp5yAmUbU9etYCQVOybMg1YQ0Y9Xn0Uwfqa0Y113k_IrW0UvowScqFIdjStabJFl2-VfdBaNf_dWLLtmLUi3123YM8yq0vJ62FMq7L5M6349m0m3jNxJMOSxfclzRymjQ4bFIcMIZofYpmdNDQgnuPZ429mFeC1-lM-7o7jurw_kihO9cM1MK9ae1pje7sJ9PCHXY082sWG-7pumoQsOUbZgBhWeFz1NtsKnXj5C8Nda9sWEG_q_x_HwougXF0TScneFn9R4E56CChh-9hgsVP7cI8fKufW8Xphxybdhp-nvNsTK6LavFvlOT377K5Otk6vKwfqPNfwNQ2XNIDggAAA';\nimport 'src/components/charts/AreaChart/AreaChart.css.ts.vanilla.css?source=LkFyZWFDaGFydF9vdmVybGF5UmVjdF9fMWNxdGJoMzAgewogIGZpbGw6IHRyYW5zcGFyZW50OwogIGN1cnNvcjogY3Jvc3NoYWlyOwp9';\nexport var emptyState = 'chartSurfaces_emptyState__n6njm11';\nexport var legend = 'chartSurfaces_legend__n6njm15';\nexport var legendItem = 'chartSurfaces_legendItem__n6njm16';\nexport var legendItemHidden = 'chartSurfaces_legendItemHidden__n6njm17';\nexport var legendSwatch = 'chartSurfaces_legendSwatch__n6njm18';\nexport var overlayRect = 'AreaChart_overlayRect__1cqtbh30';\nexport var root = 'chartSurfaces_root__n6njm10';\nexport var tooltip = 'chartSurfaces_tooltip__n6njm12';\nexport var tooltipRow = 'chartSurfaces_tooltipRow__n6njm13';\nexport var tooltipSwatch = 'chartSurfaces_tooltipSwatch__n6njm14';","\"use client\";\n\nimport { useMemo, useState } from \"react\";\nimport type { MouseEvent as ReactMouseEvent, ReactElement } from \"react\";\nimport { ParentSize } from \"@visx/responsive\";\nimport { TooltipWithBounds, useTooltip } from \"@visx/tooltip\";\nimport { AreaChart } from \"./AreaChart\";\nimport { buildAreaChartLayout, findNearestDataIndex, getSeriesColor, getXPixel } from \"./AreaChart.render\";\nimport {\n legend,\n legendItem,\n legendItemHidden,\n legendSwatch,\n overlayRect,\n root,\n tooltip as tooltipClass,\n tooltipRow,\n tooltipSwatch\n} from \"./AreaChart.css\";\nimport type { AreaChartBaseProps, AreaChartDataPoint, AreaChartSeries } from \"./types\";\n\ninterface TooltipDatum {\n dataPoint: AreaChartDataPoint;\n visibleSeries: AreaChartSeries[];\n}\n\nexport interface InteractiveAreaChartProps extends AreaChartBaseProps {\n /** Fixed chart height; width auto-tracks the parent container's size via ResizeObserver. */\n height?: number;\n}\n\n/**\n * Client-rendered area chart for dashboards: auto-sizes to its parent (via `@visx/responsive`'s\n * `ParentSize`), and adds a nearest-point hover tooltip plus a click-to-toggle legend — the same\n * continuous-x-axis hover technique `InteractiveLineChart` uses (an area chart behaves like a\n * line chart for hover purposes, not like BarChart's discrete per-element hover). Requires\n * client-side JS (\"use client\") — for server components or static output where no interaction\n * is needed, use the static `AreaChart` instead.\n */\nexport function InteractiveAreaChart({\n data,\n series,\n margin,\n xScale,\n stacked = false,\n height = 320\n}: InteractiveAreaChartProps): ReactElement {\n const [hiddenKeys, setHiddenKeys] = useState<ReadonlySet<string>>(new Set());\n\n // Colors are assigned once from each series' original position, before any filtering, so a\n // series keeps its color when a sibling is toggled off (the cycle index would otherwise\n // shift for everything after the hidden series).\n const coloredSeries = useMemo(\n () => series.map((s, index) => ({ ...s, color: s.color ?? getSeriesColor(s, index) })),\n [series]\n );\n const visibleSeries = useMemo(\n () => coloredSeries.filter((s) => !hiddenKeys.has(s.key)),\n [coloredSeries, hiddenKeys]\n );\n\n const { tooltipData, tooltipLeft, tooltipTop, tooltipOpen, showTooltip, hideTooltip } =\n useTooltip<TooltipDatum>();\n\n function toggleSeries(key: string): void {\n setHiddenKeys((prev) => {\n const next = new Set(prev);\n if (next.has(key)) {\n next.delete(key);\n } else {\n next.add(key);\n }\n return next;\n });\n }\n\n return (\n <div className={root}>\n <ParentSize initialSize={{ width: 600, height }} style={{ height }}>\n {({ width }) => {\n if (width === 0) return null;\n\n const { scales } = buildAreaChartLayout(data, visibleSeries, width, height, margin, xScale, stacked);\n\n function handleMouseMove(event: ReactMouseEvent<SVGRectElement>): void {\n const bounds = event.currentTarget.getBoundingClientRect();\n const pixelX = event.clientX - bounds.left;\n const dataIndex = findNearestDataIndex(data, scales, pixelX);\n if (dataIndex === null) {\n hideTooltip();\n return;\n }\n const dataPoint = data[dataIndex]!;\n const xPixel = getXPixel(scales, dataPoint.x) ?? pixelX;\n showTooltip({\n tooltipData: { dataPoint, visibleSeries },\n tooltipLeft: scales.margin.left + xPixel,\n tooltipTop: 0\n });\n }\n\n return (\n <div style={{ position: \"relative\", width, height }}>\n <AreaChart\n data={data}\n series={visibleSeries}\n width={width}\n height={height}\n margin={margin}\n xScale={xScale}\n stacked={stacked}\n />\n <svg\n width={width}\n height={height}\n style={{ position: \"absolute\", top: 0, left: 0 }}\n aria-hidden=\"true\"\n >\n <rect\n className={overlayRect}\n data-testid=\"area-chart-overlay\"\n x={scales.margin.left}\n y={scales.margin.top}\n width={scales.innerWidth}\n height={scales.innerHeight}\n onMouseMove={handleMouseMove}\n onMouseLeave={() => hideTooltip()}\n />\n </svg>\n {tooltipOpen && tooltipData ? (\n <TooltipWithBounds left={tooltipLeft} top={tooltipTop} className={tooltipClass}>\n <div>{String(tooltipData.dataPoint.x)}</div>\n {tooltipData.visibleSeries.map((s) => (\n <div key={s.key} className={tooltipRow}>\n <span className={tooltipSwatch} style={{ background: s.color }} />\n <span>\n {s.label}: {String(tooltipData.dataPoint[s.key])}\n </span>\n </div>\n ))}\n </TooltipWithBounds>\n ) : null}\n </div>\n );\n }}\n </ParentSize>\n <div className={legend}>\n {coloredSeries.map((s) => {\n const hidden = hiddenKeys.has(s.key);\n return (\n <button\n key={s.key}\n type=\"button\"\n className={[legendItem, hidden ? legendItemHidden : null].filter(Boolean).join(\" \")}\n onClick={() => toggleSeries(s.key)}\n aria-pressed={!hidden}\n >\n <span className={legendSwatch} style={{ background: s.color }} />\n {s.label}\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n","import type { ReactElement } from \"react\";\nimport { Group } from \"@visx/group\";\nimport { Pie } from \"@visx/shape\";\nimport { vars } from \"@vesture/tokens\";\nimport { isLabelFittable, preparePieSlices } from \"./PieChart.render\";\nimport { emptyState, root } from \"./PieChart.css\";\nimport type { PieChartBaseProps } from \"./types\";\n\nexport interface PieChartProps extends PieChartBaseProps {\n width: number;\n height: number;\n}\n\n/** Padding, in pixels, between the pie's outer edge and the SVG bounds so slice strokes and labels never clip. */\nconst OUTER_PADDING = 8;\n\n/**\n * Server-safe, zero-JS pie/donut chart. Renders a static SVG with no event handlers — use it\n * in server components, static reports, or anywhere a hover tooltip/legend isn't needed. For a\n * dashboard-style chart with per-slice hover emphasis, a tooltip, and a toggleable legend, use\n * `InteractivePieChart` instead (it wraps this component and requires client-side JS).\n */\nexport function PieChart({\n data,\n width,\n height,\n innerRadius = 0,\n showLabels = true\n}: PieChartProps): ReactElement {\n const slices = preparePieSlices(data);\n\n if (slices.length === 0) {\n return (\n <div className={root} style={{ width, height }}>\n <div className={emptyState} style={{ width, height }}>\n No data\n </div>\n </div>\n );\n }\n\n const outerRadius = Math.max(0, Math.min(width, height) / 2 - OUTER_PADDING);\n const pieInnerRadius = outerRadius * innerRadius;\n\n return (\n <div className={root}>\n <svg width={width} height={height} role=\"img\" aria-label=\"Pie chart\">\n <Group top={height / 2} left={width / 2}>\n <Pie\n data={slices}\n pieValue={(s) => s.value}\n pieSort={null}\n outerRadius={outerRadius}\n innerRadius={pieInnerRadius}\n >\n {(pie) =>\n pie.arcs.map((arc) => {\n const [labelX, labelY] = pie.path.centroid(arc);\n const showLabel = showLabels && isLabelFittable(arc.startAngle, arc.endAngle, outerRadius);\n return (\n <g key={arc.data.key}>\n <path d={pie.path(arc) ?? \"\"} fill={arc.data.color} />\n {showLabel ? (\n <text\n x={labelX}\n y={labelY}\n textAnchor=\"middle\"\n dominantBaseline=\"middle\"\n fill={vars.color.textInverse}\n fontSize={vars.font.sizeXs}\n fontFamily={vars.font.body}\n >\n {`${Math.round(arc.data.percentage)}%`}\n </text>\n ) : null}\n </g>\n );\n })\n }\n </Pie>\n </Group>\n </svg>\n </div>\n );\n}\n","import { pie as d3Pie } from \"@visx/vendor/d3-shape\";\nimport { vars } from \"@vesture/tokens\";\nimport type { PieChartDataPoint } from \"./types\";\n\n// PieChart has no x/y scales or axes — nothing here shares LineChart.render.ts's machinery,\n// so unlike AreaChart, this is a standalone render module with its own color cycle.\n\n/**\n * Fixed-order categorical cycle backing every chart component. A slice index beyond 8 wraps\n * back around to series1 — with more than 8 slices, colors repeat and the legend label\n * becomes the only reliable way to tell those slices apart.\n */\nexport const SERIES_COLOR_CYCLE: readonly string[] = [\n vars.chart.series1,\n vars.chart.series2,\n vars.chart.series3,\n vars.chart.series4,\n vars.chart.series5,\n vars.chart.series6,\n vars.chart.series7,\n vars.chart.series8\n];\n\nexport function getSeriesColor(slice: PieChartDataPoint, index: number): string {\n return slice.color ?? SERIES_COLOR_CYCLE[index % SERIES_COLOR_CYCLE.length]!;\n}\n\nexport interface PieChartSlice {\n key: string;\n label: string;\n value: number;\n color: string;\n}\n\nexport interface PieChartSliceWithPercentage extends PieChartSlice {\n /** This slice's share of the total, as a 0-100 percentage of the slices passed in (not of the original, unfiltered data). */\n percentage: number;\n}\n\n/**\n * Recomputes each slice's percentage of the given set's total. Shared by the initial static\n * layout and by `InteractivePieChart`'s legend-toggle handler, which calls this again over\n * only the still-visible slices — hiding a slice redistributes the remaining percentages\n * rather than leaving them summing to less than 100.\n */\nexport function computePercentages(slices: PieChartSlice[]): PieChartSliceWithPercentage[] {\n const total = slices.reduce((sum, s) => sum + s.value, 0);\n return slices.map((s) => ({ ...s, percentage: total > 0 ? (s.value / total) * 100 : 0 }));\n}\n\n/**\n * Assigns each slice a stable color from its position in the original (unfiltered) `data`\n * array, so a slice keeps its color if a sibling is later hidden by the legend or excluded for\n * being zero/negative — the same stability rule Line/Bar/AreaChart use for series colors.\n */\nexport function colorSlices(data: PieChartDataPoint[]): PieChartSlice[] {\n return data.map((d, index) => ({ key: d.key, label: d.label, value: d.value, color: getSeriesColor(d, index) }));\n}\n\n/**\n * Filters out zero/negative values (a zero-width arc has nothing to render) and computes each\n * remaining slice's percentage of the visible total.\n */\nexport function preparePieSlices(data: PieChartDataPoint[]): PieChartSliceWithPercentage[] {\n const positive = colorSlices(data).filter((s) => s.value > 0);\n return computePercentages(positive);\n}\n\nexport interface PieChartArc extends PieChartSliceWithPercentage {\n startAngle: number;\n endAngle: number;\n}\n\n/**\n * Computes each slice's [startAngle, endAngle) via the same d3 `pie()` generator\n * `@visx/shape`'s `<Pie>` component uses internally (\"Pie utilities\") — exposed as a pure,\n * testable function independent of rendering. Preserves input order (no descending-by-value\n * sort), matching the order `<Pie>` produces when it's given `pieSort={null}` and this same\n * prepared data, so legend order and slice order stay predictable and in sync.\n */\nexport function computeArcAngles(slices: PieChartSliceWithPercentage[]): PieChartArc[] {\n const pieGenerator = d3Pie<PieChartSliceWithPercentage>()\n .value((s) => s.value)\n .sort(null);\n return pieGenerator(slices).map((arc) => ({ ...arc.data, startAngle: arc.startAngle, endAngle: arc.endAngle }));\n}\n\n/**\n * Minimum arc length (in pixels, measured along the outer radius) for an in-slice percentage\n * label to plausibly fit. A percentage label is at most 4 characters (\"100%\") set at\n * `vars.font.sizeXs` (12px); a proportional sans averages roughly 0.55em per glyph, so\n * 4 * 12 * 0.55 ≈ 26px — rounded up to 28px for a little breathing room.\n */\nexport const MIN_LABEL_ARC_LENGTH_PX = 28;\n\n/** True when a slice's angular span, at the given outer radius, is wide enough for a label per `MIN_LABEL_ARC_LENGTH_PX`. */\nexport function isLabelFittable(startAngle: number, endAngle: number, outerRadius: number): boolean {\n return (endAngle - startAngle) * outerRadius >= MIN_LABEL_ARC_LENGTH_PX;\n}\n\n/** Outward unit-direction `[dx, dy]` along a slice's angle bisector, using d3's arc angle convention (0 at -y/12 o'clock, clockwise positive). Used to offset a hovered slice outward. */\nexport function arcBisectorDirection(startAngle: number, endAngle: number): [number, number] {\n const bisector = (startAngle + endAngle) / 2;\n return [Math.sin(bisector), -Math.cos(bisector)];\n}\n","import 'src/components/charts/internal/chartSurfaces.css.ts.vanilla.css?source=#H4sIAAAAAAAAA7WUsW7bMBCGdz8FlwLNwEB20jRQtkzp0A51h24GJZ4kxhSpkifLStF3L0iLtJRKQYq0iwCevrsjf_68y7xiBretKVgOdme0xt1O3ajHep2QnytCGm0FCq1SYkAyFAe4WxHSCY5VStZJ8u5u9Wt1Oa0CdYP9FhlCqLX2tbiwjWR9SgoJR1eGSVEqKhBqm5IcFIJx4cfWoih6mmuFoHD8K9dSm5QcmHlPqe9Kx902-55turW9cGyhFdKC1UL2IcOHMs37iCZn1IonmIAusK0jenUxc1bUWqJowkE3z0RjmdWyRS9ao4U7BoUDKLQpUVr5eMbyfWl0q_j0YEPp-_g77qS5WNBiSPkGR4zwj38nxncb0Y1HpVBAKxBlhRPYxR98-Is2NZMxLfNpmTYcDDWMi9aGxNOK2ii4GrOD407oOBbobkxb7CU8o30s0P2YXhby3gNx98ZnNYxzoUqKuglJtmE50GOUp5yAmUbU9etYCQVOybMg1YQ0Y9Xn0Uwfqa0Y113k_IrW0UvowScqFIdjStabJFl2-VfdBaNf_dWLLtmLUi3123YM8yq0vJ62FMq7L5M6349m0m3jNxJMOSxfclzRymjQ4bFIcMIZofYpmdNDQgnuPZ429mFeC1-lM-7o7jurw_kihO9cM1MK9ae1pje7sJ9PCHXY082sWG-7pumoQsOUbZgBhWeFz1NtsKnXj5C8Nda9sWEG_q_x_HwougXF0TScneFn9R4E56CChh-9hgsVP7cI8fKufW8Xphxybdhp-nvNsTK6LavFvlOT377K5Otk6vKwfqPNfwNQ2XNIDggAAA';\nimport 'src/components/charts/PieChart/PieChart.css.ts.vanilla.css?source=LlBpZUNoYXJ0X2xlZ2VuZFBlcmNlbnRhZ2VfXzE5eGQ0cm4wIHsKICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dE11dGVkX18ya3lhMnc0KTsKICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZVhzX18ya3lhMncxMik7Cn0KLlBpZUNoYXJ0X3NsaWNlR3JvdXBfXzE5eGQ0cm4xIHsKICBjdXJzb3I6IHBvaW50ZXI7CiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLW1vdGlvbi1kdXJhdGlvbkZhc3RfXzJreWEydzFjKSB2YXIoLS1tb3Rpb24tZWFzaW5nX18ya3lhMncxZSk7Cn0';\nexport var emptyState = 'chartSurfaces_emptyState__n6njm11';\nexport var legend = 'chartSurfaces_legend__n6njm15';\nexport var legendItem = 'chartSurfaces_legendItem__n6njm16';\nexport var legendItemHidden = 'chartSurfaces_legendItemHidden__n6njm17';\nexport var legendPercentage = 'PieChart_legendPercentage__19xd4rn0';\nexport var legendSwatch = 'chartSurfaces_legendSwatch__n6njm18';\nexport var root = 'chartSurfaces_root__n6njm10';\nexport var sliceGroup = 'PieChart_sliceGroup__19xd4rn1';\nexport var tooltip = 'chartSurfaces_tooltip__n6njm12';\nexport var tooltipRow = 'chartSurfaces_tooltipRow__n6njm13';\nexport var tooltipSwatch = 'chartSurfaces_tooltipSwatch__n6njm14';","\"use client\";\n\nimport { useMemo, useState } from \"react\";\nimport type { ReactElement } from \"react\";\nimport { Group } from \"@visx/group\";\nimport { ParentSize } from \"@visx/responsive\";\nimport { Pie } from \"@visx/shape\";\nimport { TooltipWithBounds, useTooltip } from \"@visx/tooltip\";\nimport { vars } from \"@vesture/tokens\";\nimport { arcBisectorDirection, colorSlices, computePercentages, isLabelFittable } from \"./PieChart.render\";\nimport {\n emptyState,\n legend,\n legendItem,\n legendItemHidden,\n legendPercentage,\n legendSwatch,\n root,\n sliceGroup,\n tooltip as tooltipClass,\n tooltipRow,\n tooltipSwatch\n} from \"./PieChart.css\";\nimport type { PieChartBaseProps } from \"./types\";\n\nconst OUTER_PADDING = 8;\n/** How far a hovered slice offsets outward along its angle bisector, in pixels. */\nconst HOVER_OFFSET_PX = 8;\n\ninterface TooltipDatum {\n key: string;\n label: string;\n value: number;\n percentage: number;\n color: string;\n}\n\nexport interface InteractivePieChartProps extends PieChartBaseProps {\n /** Fixed chart height; width auto-tracks the parent container's size via ResizeObserver. */\n height?: number;\n}\n\n/**\n * Client-rendered pie/donut chart for dashboards: auto-sizes to its parent (via\n * `@visx/responsive`'s `ParentSize`), and adds per-slice hover emphasis, a tooltip, and a\n * click-to-toggle legend. Requires client-side JS (\"use client\") — for server components or\n * static output where no interaction is needed, use the static `PieChart` instead.\n *\n * Unlike Line/Bar/AreaChart's legend toggle (which just removes a series), hiding a slice here\n * *redistributes* the remaining slices' percentages, since a pie's slices must sum to 100 — see\n * `computePercentages` in `PieChart.render.ts`, re-run over only the still-visible slices.\n */\nexport function InteractivePieChart({\n data,\n innerRadius = 0,\n showLabels = true,\n height = 320\n}: InteractivePieChartProps): ReactElement {\n const [hiddenKeys, setHiddenKeys] = useState<ReadonlySet<string>>(new Set());\n const [hoveredKey, setHoveredKey] = useState<string | null>(null);\n\n // Colors are assigned once from each slice's original position, before any filtering, so a\n // slice keeps its color when a sibling is hidden or excluded for being zero/negative.\n const coloredSlices = useMemo(() => colorSlices(data), [data]);\n const visibleSlices = useMemo(\n () => coloredSlices.filter((s) => s.value > 0 && !hiddenKeys.has(s.key)),\n [coloredSlices, hiddenKeys]\n );\n const slices = useMemo(() => computePercentages(visibleSlices), [visibleSlices]);\n const percentageByKey = useMemo(() => new Map(slices.map((s) => [s.key, s.percentage])), [slices]);\n\n const { tooltipData, tooltipLeft, tooltipTop, tooltipOpen, showTooltip, hideTooltip } =\n useTooltip<TooltipDatum>();\n\n function toggleSlice(key: string): void {\n setHiddenKeys((prev) => {\n const next = new Set(prev);\n if (next.has(key)) {\n next.delete(key);\n } else {\n next.add(key);\n }\n return next;\n });\n }\n\n if (slices.length === 0) {\n return (\n <div className={root} style={{ height }}>\n <div className={emptyState} style={{ height }}>\n No data\n </div>\n </div>\n );\n }\n\n return (\n <div className={root}>\n <ParentSize initialSize={{ width: 600, height }} style={{ height }}>\n {({ width }) => {\n if (width === 0) return null;\n\n const outerRadius = Math.max(0, Math.min(width, height) / 2 - OUTER_PADDING);\n const pieInnerRadius = outerRadius * innerRadius;\n\n function handleSliceHover(datum: TooltipDatum, centroidX: number, centroidY: number): void {\n showTooltip({\n tooltipData: datum,\n tooltipLeft: width / 2 + centroidX,\n tooltipTop: height / 2 + centroidY\n });\n setHoveredKey(datum.key);\n }\n\n function handleSliceLeave(): void {\n hideTooltip();\n setHoveredKey(null);\n }\n\n return (\n <div style={{ position: \"relative\", width, height }}>\n <svg width={width} height={height} role=\"img\" aria-label=\"Pie chart\">\n <Group top={height / 2} left={width / 2}>\n <Pie\n data={slices}\n pieValue={(s) => s.value}\n pieSort={null}\n outerRadius={outerRadius}\n innerRadius={pieInnerRadius}\n >\n {(pie) =>\n pie.arcs.map((arc) => {\n const [centroidX, centroidY] = pie.path.centroid(arc);\n const showLabel = showLabels && isLabelFittable(arc.startAngle, arc.endAngle, outerRadius);\n const isHovered = hoveredKey === arc.data.key;\n const [dx, dy] = arcBisectorDirection(arc.startAngle, arc.endAngle);\n const transform = isHovered\n ? `translate(${dx * HOVER_OFFSET_PX}px, ${dy * HOVER_OFFSET_PX}px)`\n : undefined;\n return (\n <g key={arc.data.key} className={sliceGroup} style={{ transform }}>\n <path\n d={pie.path(arc) ?? \"\"}\n fill={arc.data.color}\n data-testid={`pie-slice-${arc.data.key}`}\n onMouseEnter={() => handleSliceHover(arc.data, centroidX, centroidY)}\n onMouseLeave={handleSliceLeave}\n />\n {showLabel ? (\n <text\n x={centroidX}\n y={centroidY}\n textAnchor=\"middle\"\n dominantBaseline=\"middle\"\n fill={vars.color.textInverse}\n fontSize={vars.font.sizeXs}\n fontFamily={vars.font.body}\n style={{ pointerEvents: \"none\" }}\n >\n {`${Math.round(arc.data.percentage)}%`}\n </text>\n ) : null}\n </g>\n );\n })\n }\n </Pie>\n </Group>\n </svg>\n {tooltipOpen && tooltipData ? (\n <TooltipWithBounds left={tooltipLeft} top={tooltipTop} className={tooltipClass}>\n <div className={tooltipRow}>\n <span className={tooltipSwatch} style={{ background: tooltipData.color }} />\n <span>\n {tooltipData.label}: {tooltipData.value} ({Math.round(tooltipData.percentage)}%)\n </span>\n </div>\n </TooltipWithBounds>\n ) : null}\n </div>\n );\n }}\n </ParentSize>\n <div className={legend}>\n {coloredSlices\n .filter((s) => s.value > 0)\n .map((s) => {\n const hidden = hiddenKeys.has(s.key);\n const percentage = percentageByKey.get(s.key);\n return (\n <button\n key={s.key}\n type=\"button\"\n className={[legendItem, hidden ? legendItemHidden : null].filter(Boolean).join(\" \")}\n onClick={() => toggleSlice(s.key)}\n aria-pressed={!hidden}\n >\n <span className={legendSwatch} style={{ background: s.color }} />\n {s.label}\n {!hidden && percentage !== undefined ? (\n <span className={legendPercentage}>{Math.round(percentage)}%</span>\n ) : null}\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n","import { useMemo, useRef, useState } from \"react\";\nimport type {\n KeyboardEvent as ReactKeyboardEvent,\n PointerEvent as ReactPointerEvent,\n ReactElement,\n} from \"react\";\nimport {\n allDayCell,\n allDayEventBlock,\n allDayGutter,\n allDayRow,\n dayColumn,\n dayHeaderCell,\n dayHeaderDateNumber,\n dayHeaderGutter,\n dayHeaderRow,\n dragPreview,\n dragPreviewLabel,\n eventBlock,\n eventTime,\n eventTitle,\n header,\n headerNav,\n hourLabel,\n navButton,\n nowLine,\n nowLineDot,\n rangeLabel,\n resizeHandle,\n root,\n scrollArea,\n timeGutter,\n todayButton,\n visuallyHidden,\n} from \"./Scheduler.css\";\nimport {\n computeMoveResult,\n computeResizeResult,\n getEventColor,\n getVerticalMetrics,\n layoutOverlappingEvents,\n SLOT_HEIGHT_PX,\n} from \"./scheduler-layout\";\nimport type { SchedulerEvent, SchedulerProps } from \"./types\";\nimport { addDays, clampToMidnight, isSameDay, startOfWeek } from \"../../utils/date\";\n\nfunction formatEventTime(date: Date, locale: string): string {\n return new Intl.DateTimeFormat(locale, {\n hour: \"numeric\",\n minute: \"2-digit\",\n }).format(date);\n}\n\ninterface DragState {\n kind: \"move\" | \"resize\";\n event: SchedulerEvent;\n pointerId: number;\n startClientX: number;\n startClientY: number;\n startDayIndex: number;\n currentDayIndex: number;\n currentStart: Date;\n currentEnd: Date;\n moved: boolean;\n}\n\nexport function Scheduler({\n events,\n date,\n onDateChange,\n weekStartsOn = 1,\n startHour = 0,\n endHour = 24,\n slotDuration = 30,\n onEventClick,\n onEventChange,\n editable = false,\n minEventDuration,\n selectedEventId,\n locale = \"en-US\",\n className,\n}: SchedulerProps): ReactElement {\n const weekStart = useMemo(\n () => startOfWeek(clampToMidnight(date), weekStartsOn),\n [date, weekStartsOn]\n );\n const days = useMemo(\n () => Array.from({ length: 7 }, (_, i) => addDays(weekStart, i)),\n [weekStart]\n );\n const today = useMemo(() => clampToMidnight(new Date()), []);\n const now = useMemo(() => new Date(), []);\n\n const weekdayFormatter = useMemo(\n () => new Intl.DateTimeFormat(locale, { weekday: \"short\" }),\n [locale]\n );\n const dayNumberFormatter = useMemo(\n () => new Intl.DateTimeFormat(locale, { day: \"numeric\" }),\n [locale]\n );\n const monthDayFormatter = useMemo(\n () => new Intl.DateTimeFormat(locale, { month: \"short\", day: \"numeric\" }),\n [locale]\n );\n const yearFormatter = useMemo(\n () => new Intl.DateTimeFormat(locale, { year: \"numeric\" }),\n [locale]\n );\n const hourFormatter = useMemo(\n () => new Intl.DateTimeFormat(locale, { hour: \"numeric\" }),\n [locale]\n );\n const weekdayLongFormatter = useMemo(\n () => new Intl.DateTimeFormat(locale, { weekday: \"long\" }),\n [locale]\n );\n\n const weekEnd = days[6]!;\n const rangeLabelText = `${monthDayFormatter.format(weekStart)} – ${monthDayFormatter.format(weekEnd)}, ${yearFormatter.format(weekEnd)}`;\n\n const totalMinutes = (endHour - startHour) * 60;\n const slotsCount = Math.max(1, Math.ceil(totalMinutes / slotDuration));\n const totalHeightPx = slotsCount * SLOT_HEIGHT_PX;\n const resolvedMinEventDuration = minEventDuration ?? slotDuration;\n\n const hourMarks = useMemo(() => {\n const marks: { hour: number; label: string; top: number }[] = [];\n for (let hour = startHour; hour <= endHour; hour++) {\n const labelDate = new Date(2000, 0, 1, hour === 24 ? 0 : hour, 0);\n marks.push({\n hour,\n label: hourFormatter.format(labelDate),\n top: ((hour - startHour) * 60 / totalMinutes) * 100,\n });\n }\n return marks;\n }, [startHour, endHour, totalMinutes, hourFormatter]);\n\n const nowMinutes = now.getHours() * 60 + now.getMinutes();\n const showNowLine = nowMinutes >= startHour * 60 && nowMinutes < endHour * 60;\n const nowTop = ((nowMinutes - startHour * 60) / totalMinutes) * 100;\n\n const allDayEventsByDay = useMemo(\n () =>\n days.map((day) =>\n events.filter((event) => event.allDay && isSameDay(event.start, day))\n ),\n [days, events]\n );\n\n const timedEventsByDay = useMemo(\n () =>\n days.map((day) => {\n const dayEvents = events.filter(\n (event) => !event.allDay && isSameDay(event.start, day)\n );\n const layout = layoutOverlappingEvents(\n dayEvents.map((event) => ({\n id: event.id,\n start: event.start,\n end: event.end,\n }))\n );\n const layoutById = new Map(layout.map((l) => [l.id, l]));\n return dayEvents\n .map((event) => {\n const metrics = getVerticalMetrics(\n event.start,\n event.end,\n startHour,\n endHour\n );\n if (!metrics) return null;\n const placement = layoutById.get(event.id)!;\n return { event, metrics, placement };\n })\n .filter(\n (\n entry\n ): entry is {\n event: SchedulerEvent;\n metrics: NonNullable<ReturnType<typeof getVerticalMetrics>>;\n placement: ReturnType<typeof layoutOverlappingEvents>[number];\n } => entry !== null\n );\n }),\n [days, events, startHour, endHour]\n );\n\n const [drag, setDrag] = useState<DragState | null>(null);\n const [announcement, setAnnouncement] = useState(\"\");\n const suppressClickRef = useRef(false);\n const dayColumnRefs = useRef<(HTMLDivElement | null)[]>([]);\n\n const announceMove = (event: SchedulerEvent, start: Date, end: Date) => {\n setAnnouncement(\n `${event.title} moved to ${weekdayLongFormatter.format(start)}, ${formatEventTime(start, locale)} to ${formatEventTime(end, locale)}.`\n );\n };\n\n const announceResize = (event: SchedulerEvent, end: Date) => {\n setAnnouncement(\n `${event.title} resized to end at ${formatEventTime(end, locale)}.`\n );\n };\n\n const handleEventActivate = (event: SchedulerEvent) => {\n if (suppressClickRef.current) {\n suppressClickRef.current = false;\n return;\n }\n onEventClick?.(event);\n };\n\n const handleMovePointerDown =\n (event: SchedulerEvent, dayIndex: number) => (pointerEvent: ReactPointerEvent<HTMLButtonElement>) => {\n if (!editable) return;\n pointerEvent.preventDefault();\n const target = pointerEvent.currentTarget;\n try {\n target.setPointerCapture(pointerEvent.pointerId);\n } catch {\n // Pointer capture isn't implemented in every test/DOM environment; drag still\n // works without it as long as the pointer stays over the captured element.\n }\n target.focus();\n setDrag({\n kind: \"move\",\n event,\n pointerId: pointerEvent.pointerId,\n startClientX: pointerEvent.clientX,\n startClientY: pointerEvent.clientY,\n startDayIndex: dayIndex,\n currentDayIndex: dayIndex,\n currentStart: event.start,\n currentEnd: event.end,\n moved: false,\n });\n };\n\n const handleResizePointerDown =\n (event: SchedulerEvent, dayIndex: number) => (pointerEvent: ReactPointerEvent<HTMLSpanElement>) => {\n if (!editable) return;\n pointerEvent.preventDefault();\n pointerEvent.stopPropagation();\n const target = pointerEvent.currentTarget;\n try {\n target.setPointerCapture(pointerEvent.pointerId);\n } catch {\n // See handleMovePointerDown.\n }\n setDrag({\n kind: \"resize\",\n event,\n pointerId: pointerEvent.pointerId,\n startClientX: pointerEvent.clientX,\n startClientY: pointerEvent.clientY,\n startDayIndex: dayIndex,\n currentDayIndex: dayIndex,\n currentStart: event.start,\n currentEnd: event.end,\n moved: false,\n });\n };\n\n const handleDragPointerMove = (\n pointerEvent: ReactPointerEvent<HTMLButtonElement | HTMLSpanElement>\n ) => {\n if (!drag || pointerEvent.pointerId !== drag.pointerId) return;\n // The resize handle is nested inside the event button, and both have pointer handlers —\n // without this, a resize-handle event would bubble up and re-run the button's copy too.\n pointerEvent.stopPropagation();\n const deltaY = pointerEvent.clientY - drag.startClientY;\n\n if (drag.kind === \"move\") {\n const deltaX = pointerEvent.clientX - drag.startClientX;\n const columnWidth =\n dayColumnRefs.current[drag.startDayIndex]?.getBoundingClientRect().width ?? 0;\n const dayDelta = columnWidth > 0 ? Math.round(deltaX / columnWidth) : 0;\n const targetDayIndex = Math.min(6, Math.max(0, drag.startDayIndex + dayDelta));\n const targetDay = days[targetDayIndex]!;\n const { start, end } = computeMoveResult({\n originalStart: drag.event.start,\n originalEnd: drag.event.end,\n targetDay,\n deltaYPx: deltaY,\n slotDuration,\n startHour,\n endHour,\n });\n const moved =\n targetDayIndex !== drag.startDayIndex ||\n start.getTime() !== drag.event.start.getTime();\n setDrag({ ...drag, currentDayIndex: targetDayIndex, currentStart: start, currentEnd: end, moved });\n } else {\n const { end } = computeResizeResult({\n originalStart: drag.event.start,\n originalEnd: drag.event.end,\n deltaYPx: deltaY,\n slotDuration,\n minEventDuration: resolvedMinEventDuration,\n endHour,\n });\n const moved = end.getTime() !== drag.event.end.getTime();\n setDrag({ ...drag, currentEnd: end, moved });\n }\n };\n\n const handleDragPointerUp = (\n pointerEvent: ReactPointerEvent<HTMLButtonElement | HTMLSpanElement>\n ) => {\n if (!drag || pointerEvent.pointerId !== drag.pointerId) return;\n pointerEvent.stopPropagation();\n const finished = drag;\n setDrag(null);\n\n if (finished.kind === \"move\") {\n if (!finished.moved) {\n suppressClickRef.current = true;\n onEventClick?.(finished.event);\n return;\n }\n onEventChange?.(finished.event, finished.currentStart, finished.currentEnd);\n announceMove(finished.event, finished.currentStart, finished.currentEnd);\n return;\n }\n\n if (!finished.moved) return;\n onEventChange?.(finished.event, finished.currentStart, finished.currentEnd);\n announceResize(finished.event, finished.currentEnd);\n };\n\n const handleDragPointerCancel = (\n pointerEvent: ReactPointerEvent<HTMLButtonElement | HTMLSpanElement>\n ) => {\n if (!drag || pointerEvent.pointerId !== drag.pointerId) return;\n pointerEvent.stopPropagation();\n setDrag(null);\n };\n\n const handleEventKeyDown = (\n keyboardEvent: ReactKeyboardEvent<HTMLButtonElement>,\n event: SchedulerEvent,\n dayIndex: number\n ) => {\n if (!editable) return;\n\n if (keyboardEvent.shiftKey && (keyboardEvent.key === \"ArrowDown\" || keyboardEvent.key === \"ArrowUp\")) {\n keyboardEvent.preventDefault();\n const direction = keyboardEvent.key === \"ArrowDown\" ? 1 : -1;\n const { end } = computeResizeResult({\n originalStart: event.start,\n originalEnd: event.end,\n deltaYPx: direction * SLOT_HEIGHT_PX,\n slotDuration,\n minEventDuration: resolvedMinEventDuration,\n endHour,\n });\n if (end.getTime() === event.end.getTime()) return;\n onEventChange?.(event, event.start, end);\n announceResize(event, end);\n return;\n }\n\n switch (keyboardEvent.key) {\n case \"ArrowUp\":\n case \"ArrowDown\": {\n keyboardEvent.preventDefault();\n const direction = keyboardEvent.key === \"ArrowDown\" ? 1 : -1;\n const { start, end } = computeMoveResult({\n originalStart: event.start,\n originalEnd: event.end,\n targetDay: days[dayIndex]!,\n deltaYPx: direction * SLOT_HEIGHT_PX,\n slotDuration,\n startHour,\n endHour,\n });\n if (start.getTime() === event.start.getTime()) return;\n onEventChange?.(event, start, end);\n announceMove(event, start, end);\n break;\n }\n case \"ArrowLeft\":\n case \"ArrowRight\": {\n keyboardEvent.preventDefault();\n const direction = keyboardEvent.key === \"ArrowRight\" ? 1 : -1;\n const targetDayIndex = Math.min(6, Math.max(0, dayIndex + direction));\n if (targetDayIndex === dayIndex) return;\n const { start, end } = computeMoveResult({\n originalStart: event.start,\n originalEnd: event.end,\n targetDay: days[targetDayIndex]!,\n deltaYPx: 0,\n slotDuration,\n startHour,\n endHour,\n });\n onEventChange?.(event, start, end);\n announceMove(event, start, end);\n break;\n }\n default:\n return;\n }\n };\n\n const dragPreviewMetrics =\n drag && drag.kind === \"move\"\n ? getVerticalMetrics(drag.currentStart, drag.currentEnd, startHour, endHour)\n : null;\n\n return (\n <div className={[root, className].filter(Boolean).join(\" \")}>\n <div\n aria-live=\"polite\"\n className={visuallyHidden}\n >\n {announcement}\n </div>\n <div className={header}>\n <span className={rangeLabel}>{rangeLabelText}</span>\n <div className={headerNav}>\n <button\n type=\"button\"\n className={navButton}\n aria-label=\"Previous week\"\n onClick={() => onDateChange?.(addDays(date, -7))}\n >\n ‹\n </button>\n <button\n type=\"button\"\n className={todayButton}\n onClick={() => onDateChange?.(new Date())}\n >\n Today\n </button>\n <button\n type=\"button\"\n className={navButton}\n aria-label=\"Next week\"\n onClick={() => onDateChange?.(addDays(date, 7))}\n >\n ›\n </button>\n </div>\n </div>\n\n <div className={dayHeaderRow}>\n <div className={dayHeaderGutter} />\n {days.map((day) => {\n const isToday = isSameDay(day, today);\n return (\n <div key={day.toISOString()} className={dayHeaderCell} data-today={isToday || undefined}>\n <span>{weekdayFormatter.format(day)}</span>\n <span className={dayHeaderDateNumber} data-today={isToday || undefined}>\n {dayNumberFormatter.format(day)}\n </span>\n </div>\n );\n })}\n </div>\n\n <div className={allDayRow}>\n <div className={allDayGutter}>All day</div>\n {days.map((day, dayIndex) => (\n <div key={day.toISOString()} className={allDayCell}>\n {allDayEventsByDay[dayIndex]!.map((event) => {\n const color = getEventColor(event.id, event.color);\n const selected = event.id === selectedEventId;\n return (\n <button\n key={event.id}\n type=\"button\"\n className={allDayEventBlock}\n style={{ background: color }}\n data-selected={selected || undefined}\n onClick={() => handleEventActivate(event)}\n >\n {event.title}\n </button>\n );\n })}\n </div>\n ))}\n </div>\n\n <div className={scrollArea}>\n <div className={timeGutter} style={{ height: totalHeightPx }}>\n {hourMarks.map((mark) => (\n <span\n key={mark.hour}\n className={hourLabel}\n style={{ top: `${mark.top}%` }}\n >\n {mark.label}\n </span>\n ))}\n </div>\n {days.map((day, dayIndex) => {\n const isToday = isSameDay(day, today);\n return (\n <div\n key={day.toISOString()}\n ref={(el) => {\n dayColumnRefs.current[dayIndex] = el;\n }}\n className={dayColumn}\n style={{ height: totalHeightPx }}\n >\n {isToday && showNowLine ? (\n <div className={nowLine} style={{ top: `${nowTop}%` }}>\n <span className={nowLineDot} />\n </div>\n ) : null}\n {timedEventsByDay[dayIndex]!.map(({ event, metrics, placement }) => {\n const color = getEventColor(event.id, event.color);\n const selected = event.id === selectedEventId;\n const isResizingThis =\n drag?.kind === \"resize\" && drag.event.id === event.id;\n const isDraggingThis = drag?.event.id === event.id;\n const displayMetrics =\n isResizingThis\n ? getVerticalMetrics(event.start, drag!.currentEnd, startHour, endHour) ??\n metrics\n : metrics;\n const displayEnd = isResizingThis ? drag!.currentEnd : event.end;\n const width = 100 / placement.columnCount;\n const left = placement.columnIndex * width;\n const showTime = displayMetrics.height > 6;\n return (\n <button\n key={event.id}\n type=\"button\"\n className={eventBlock}\n data-selected={selected || undefined}\n data-editable={editable || undefined}\n data-dragging={isDraggingThis || undefined}\n style={{\n top: `${displayMetrics.top}%`,\n height: `${displayMetrics.height}%`,\n left: `${left}%`,\n width: `${width}%`,\n background: color,\n }}\n onClick={() => handleEventActivate(event)}\n onPointerDown={editable ? handleMovePointerDown(event, dayIndex) : undefined}\n onPointerMove={editable ? handleDragPointerMove : undefined}\n onPointerUp={editable ? handleDragPointerUp : undefined}\n onPointerCancel={editable ? handleDragPointerCancel : undefined}\n onKeyDown={editable ? (e) => handleEventKeyDown(e, event, dayIndex) : undefined}\n >\n <span className={eventTitle}>{event.title}</span>\n {showTime ? (\n <span className={eventTime}>\n {formatEventTime(event.start, locale)} –{\" \"}\n {formatEventTime(displayEnd, locale)}\n </span>\n ) : null}\n {editable ? (\n <span\n className={resizeHandle}\n onPointerDown={handleResizePointerDown(event, dayIndex)}\n onPointerMove={handleDragPointerMove}\n onPointerUp={handleDragPointerUp}\n onPointerCancel={handleDragPointerCancel}\n />\n ) : null}\n </button>\n );\n })}\n {drag &&\n drag.kind === \"move\" &&\n drag.currentDayIndex === dayIndex &&\n dragPreviewMetrics ? (\n <div\n className={dragPreview}\n style={{\n top: `${dragPreviewMetrics.top}%`,\n height: `${dragPreviewMetrics.height}%`,\n left: 0,\n width: \"100%\",\n }}\n >\n <span className={dragPreviewLabel}>{drag.event.title}</span>\n <span className={dragPreviewLabel}>\n {formatEventTime(drag.currentStart, locale)} –{\" \"}\n {formatEventTime(drag.currentEnd, locale)}\n </span>\n </div>\n ) : null}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n","import 'src/components/Scheduler/Scheduler.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-1ZS2_cNhC--1foEsQGzEC7ftRR0EOTtHWBOCiSHFoUhUGJsxJjilRIaneVov-9EClRj5XWErpOnKKAEVvkcDjPb2aYZ--jBEjOQN5KIfTt7UKL5xfJ0vf-OvI8QlXGcBF4KwbbF0ee-Y0IlRBpKnjgRYLlKTc7gmu0willReCtsTxGyCyFghS3t8u7Ai83C__EkSr6GTqE5cL71JGeGdJIMCFrMvOBNGx1TWWJQhzdxVLknHQpVS5XOIJ3mCog9ZGlPSIkAYk2lOikPtReq6k3bWqlCwY9arNWUxdt6gHR7U5NTdrUEhOaq5rcfqHUSS0MrViDXDGxCbyEEgL8xdHfR88aByaADfvKhYthF2JGY46ohlQFXgRcgyyXP-ZK01WBIsE1cB14KsMRoBD0BsB4OMZZLZ_dU85biREvw4RQHu8nqvQNhdYinemA6tA8P1SHJrljwJxv8dpZdDnLojv22qr6rrh_F8frl7nWgru7zrp3Uc4oBzTXic1Wx9KVPKyW584YLAEaJ3o_zZdLHC0xVxmWwPV9edLEGN8BhB6bSYAS5VKVVJmgtfnGMevGJeni3Jw2jqptuTB5m-tyMfC44FAuGKFoCaEokyIDqYugJbUV7NQLxRapBBOx6R0iucQWgK0wqegs_4SV02gRnfQOa5pSHqNVzqMBHoAV5bE7DRMiNUhKYAq40McBoQqHDMiJCd97kNndMuWSlYhyhdZU0ZCB5e7M42LWfCFDWjNf95lrQXDRY39-4GybkkoVXCIGKz0JWJHcZToCr4-8sH3VhN1pMv5L6TkY3IdP0OFrDpaiEvMY3uAQmON-YfgZJ246ydVaugFC88a7V_d0mz3k7khAcHFt6v87sXEyXHZRIpaUmEIvKUEa0oxhDci2xC7i16B0LgGpmjWKc63rdDz1Li6z7YknIQOsj7879RYr-Y31Sc5Ur4A1_rqaO0DMB1nTYC2zbRsitdjbdDWEVt39tOOh85ujXCz3DSo3uW5GD9selMvI5PtKyDTw8iwDGWEF08z6B8EaI5N_3z_VMoenfxpLDwiQSZpi6aavy0anORk0LNRrrOFtnoateeN5k6HTGqVJ0N43l8Xo6UI9rL1eCtZo9bxvLczYa1y0EQT_jyADCGLt9LPRypkq_Hfja7P1AFk8IH0nS6O54DcAZfuhKaUczZjXyh5zZgiYI_MCwByZ734VScHYDxKwMyD5gnlSv6qgIvBwroUxL946816e-6Vjuv0PTaEXr7bhyYRt4wJPAsOarvtglYhcdjubVe8gDpVguTad6EDH34-EFjaaP0vT_H6MLvwnD1fDNgnVYOUpEXkjcbaLya-Me5ya8ah9Hm2UtvtjRFMcQ2CmeyxRXE4ywPWxFp7FvdOaWYKlRmWkOvPyE2-RbU_bo0250L_BhmZQhSgqetvWiQvff-Itz3cikovNG8rBmTvZE1V24vRbAea3h1a_ZSwtstojFTy1Niq7K8Fsera2BuxLyqbe2dfOPZ8R5QS2gbc0yGfHNwRr4FoN1vpKzdetp2p6r6bo3IpumsP6o9Lqyn7Vul91lBwcXlc5cyD7ae8D9K7GHV2Mmi-ZiO6cLh_36DKjnOw-FM-cx7_WK5-rfcts69VeKztAU_YD48-RgX8EvX7ha5DKyXAxZ-J_hPP9UMwcbu4e4m4baAUMIg2k00Mf_BYgVJevE91OvfJ1LHFosziPEoQr6w1gxDh_InEcUx53-IsMR7T0t__s_EXvvpDyuP82ASUQX2NOWIO2d_PRth5AazxyL8YVztZicIXslZN0LzX8VcKaQjN0sMcIKt1qUmEHwSoBsosS905pYwg8SNxy-NkY6AyXolbBOhs3fLe9Sw__cLXTuXX-y6FFXK5fm-UP5T_uFJ4-fw953SByswGM0UxRNa0zXFOVY8aKa8POmYnvCdIqZBa9ROmNS75t3GVMeeChandI_IjRrOyyIn3sn3rVz3hfWwejuWFg8vtxF25Ed3wJy822Ir7_5NssyZdfriTPCP9vpnqPB8zhavj4HQ9UyT9Q3aqE2aOFu4MjWaV92ij_6Z4n0ENp0hSwq4uDqfYPbk-lZwskAAA';\nexport var allDayCell = 'Scheduler_allDayCell__1to95h2c';\nexport var allDayEventBlock = 'Scheduler_allDayEventBlock__1to95h2o';\nexport var allDayGutter = 'Scheduler_allDayGutter__1to95h2b';\nexport var allDayRow = 'Scheduler_allDayRow__1to95h2a';\nexport var dayColumn = 'Scheduler_dayColumn__1to95h2g';\nexport var dayHeaderCell = 'Scheduler_dayHeaderCell__1to95h28';\nexport var dayHeaderDateNumber = 'Scheduler_dayHeaderDateNumber__1to95h29';\nexport var dayHeaderGutter = 'Scheduler_dayHeaderGutter__1to95h27';\nexport var dayHeaderRow = 'Scheduler_dayHeaderRow__1to95h26';\nexport var dragPreview = 'Scheduler_dragPreview__1to95h2l';\nexport var dragPreviewLabel = 'Scheduler_dragPreviewLabel__1to95h2m';\nexport var eventBlock = 'Scheduler_eventBlock__1to95h2j';\nexport var eventTime = 'Scheduler_eventTime__1to95h2q';\nexport var eventTitle = 'Scheduler_eventTitle__1to95h2p';\nexport var header = 'Scheduler_header__1to95h21';\nexport var headerNav = 'Scheduler_headerNav__1to95h22';\nexport var hourLabel = 'Scheduler_hourLabel__1to95h2f';\nexport var navButton = 'Scheduler_navButton__1to95h23';\nexport var nowLine = 'Scheduler_nowLine__1to95h2h';\nexport var nowLineDot = 'Scheduler_nowLineDot__1to95h2i';\nexport var rangeLabel = 'Scheduler_rangeLabel__1to95h25';\nexport var resizeHandle = 'Scheduler_resizeHandle__1to95h2k';\nexport var root = 'Scheduler_root__1to95h20';\nexport var scrollArea = 'Scheduler_scrollArea__1to95h2d';\nexport var timeGutter = 'Scheduler_timeGutter__1to95h2e';\nexport var todayButton = 'Scheduler_todayButton__1to95h24';\nexport var visuallyHidden = 'Scheduler_visuallyHidden__1to95h2n';","import { vars } from \"@vesture/tokens\";\n\n/** Pixel height of one `slotDuration` row in the time grid — shared between layout math and Scheduler.css.ts's gridline background sizing. */\nexport const SLOT_HEIGHT_PX = 24;\n\nexport interface OverlapLayoutInput {\n id: string;\n start: Date;\n end: Date;\n}\n\nexport interface OverlapLayoutResult {\n id: string;\n /** 0-based column within this event's overlap cluster. */\n columnIndex: number;\n /** Total columns in this event's overlap cluster — width = 100% / columnCount. */\n columnCount: number;\n}\n\n/**\n * Cluster-and-pack overlap layout for a single day's timed (non-all-day) events.\n *\n * 1. Sort by start time.\n * 2. Sweep forward, grouping events into overlap clusters: an event joins the current\n * cluster if it starts before the cluster's running max end time, so two events that\n * don't directly overlap can still land in the same cluster when a third event bridges\n * them (sorting by start makes this sweep equivalent to transitive-overlap grouping).\n * 3. Within each cluster, greedily assign each event the lowest-index column whose\n * previous occupant has already ended by this event's start (classic interval-graph\n * coloring). Touching endpoints (a.end === b.start) do not count as overlapping.\n */\nexport function layoutOverlappingEvents(\n events: OverlapLayoutInput[]\n): OverlapLayoutResult[] {\n if (events.length === 0) return [];\n\n const sorted = [...events].sort((a, b) => {\n const startDiff = a.start.getTime() - b.start.getTime();\n if (startDiff !== 0) return startDiff;\n return a.end.getTime() - b.end.getTime();\n });\n\n const results = new Map<string, OverlapLayoutResult>();\n\n let cluster: OverlapLayoutInput[] = [];\n let clusterEnd = -Infinity;\n\n const flushCluster = () => {\n if (cluster.length === 0) return;\n const columnEndTimes: number[] = [];\n for (const event of cluster) {\n const startTime = event.start.getTime();\n let columnIndex = columnEndTimes.findIndex((end) => end <= startTime);\n if (columnIndex === -1) {\n columnIndex = columnEndTimes.length;\n columnEndTimes.push(event.end.getTime());\n } else {\n columnEndTimes[columnIndex] = event.end.getTime();\n }\n results.set(event.id, { id: event.id, columnIndex, columnCount: 0 });\n }\n const columnCount = columnEndTimes.length;\n for (const event of cluster) {\n results.get(event.id)!.columnCount = columnCount;\n }\n cluster = [];\n };\n\n for (const event of sorted) {\n const startTime = event.start.getTime();\n const endTime = event.end.getTime();\n if (cluster.length === 0 || startTime < clusterEnd) {\n cluster.push(event);\n clusterEnd = Math.max(clusterEnd, endTime);\n } else {\n flushCluster();\n cluster.push(event);\n clusterEnd = endTime;\n }\n }\n flushCluster();\n\n return events.map((event) => results.get(event.id)!);\n}\n\nexport interface VerticalMetrics {\n /** Percentage (0-100) from the top of the visible grid. */\n top: number;\n /** Percentage (0-100) of the visible grid's height. */\n height: number;\n}\n\n/**\n * Maps an event's start/end into a percentage-based vertical position within the visible\n * `[startHour, endHour)` range, clipping either edge that falls outside it. Returns `null`\n * when the event doesn't intersect the visible range at all — clip-don't-exclude is the\n * chosen behavior for partially-visible events (an event that starts before the grid but\n * runs into it should still show a truncated block), but events entirely outside the range\n * are dropped rather than rendered as zero-height slivers.\n */\nexport function getVerticalMetrics(\n start: Date,\n end: Date,\n startHour: number,\n endHour: number\n): VerticalMetrics | null {\n const rangeStartMinutes = startHour * 60;\n const rangeEndMinutes = endHour * 60;\n const totalMinutes = rangeEndMinutes - rangeStartMinutes;\n if (totalMinutes <= 0) return null;\n\n const startMinutes = start.getHours() * 60 + start.getMinutes();\n const endMinutes = end.getHours() * 60 + end.getMinutes();\n\n const clippedStart = Math.max(startMinutes, rangeStartMinutes);\n const clippedEnd = Math.min(endMinutes, rangeEndMinutes);\n if (clippedEnd <= clippedStart) return null;\n\n return {\n top: ((clippedStart - rangeStartMinutes) / totalMinutes) * 100,\n height: ((clippedEnd - clippedStart) / totalMinutes) * 100,\n };\n}\n\n/**\n * Converts a pointer's vertical pixel delta into a snapped minutes delta, using the same\n * SLOT_HEIGHT_PX-per-slotDuration relationship the time grid renders with — this is the one\n * place pixel-to-time conversion happens; drag-to-move, resize, and their keyboard\n * equivalents all funnel through this rather than re-deriving the mapping.\n */\nexport function pixelDeltaToSnappedMinutes(deltaPx: number, slotDuration: number): number {\n const rawSlots = deltaPx / SLOT_HEIGHT_PX;\n return Math.round(rawSlots) * slotDuration;\n}\n\nexport function minutesOfDay(date: Date): number {\n return date.getHours() * 60 + date.getMinutes();\n}\n\n/** Builds a Date on `day`'s calendar date at `minutesOfDay` time-of-day. */\nexport function combineDayAndMinutes(day: Date, minutesOfDayValue: number): Date {\n const result = new Date(day.getFullYear(), day.getMonth(), day.getDate());\n result.setMinutes(minutesOfDayValue);\n return result;\n}\n\nexport interface MoveResult {\n start: Date;\n end: Date;\n}\n\n/**\n * Computes a moved event's new start/end from a pixel delta + target day, snapped to\n * slotDuration and clamped so the event never starts before startHour or ends after endHour.\n * Duration is always preserved exactly — a move never changes an event's length.\n */\nexport function computeMoveResult(params: {\n originalStart: Date;\n originalEnd: Date;\n targetDay: Date;\n deltaYPx: number;\n slotDuration: number;\n startHour: number;\n endHour: number;\n}): MoveResult {\n const { originalStart, originalEnd, targetDay, deltaYPx, slotDuration, startHour, endHour } =\n params;\n const durationMinutes = (originalEnd.getTime() - originalStart.getTime()) / 60000;\n const deltaMinutes = pixelDeltaToSnappedMinutes(deltaYPx, slotDuration);\n const rawStartMinutes = minutesOfDay(originalStart) + deltaMinutes;\n\n const rangeStart = startHour * 60;\n const rangeEnd = endHour * 60;\n const maxStart = Math.max(rangeStart, rangeEnd - durationMinutes);\n const clampedStartMinutes = Math.min(Math.max(rawStartMinutes, rangeStart), maxStart);\n\n const start = combineDayAndMinutes(targetDay, clampedStartMinutes);\n const end = new Date(start.getTime() + durationMinutes * 60000);\n return { start, end };\n}\n\n/**\n * Computes a resized event's new end time from a pixel delta, snapped to slotDuration and\n * clamped to [originalStart + minEventDuration, endHour]. Start time never changes.\n */\nexport function computeResizeResult(params: {\n originalStart: Date;\n originalEnd: Date;\n deltaYPx: number;\n slotDuration: number;\n minEventDuration: number;\n endHour: number;\n}): { end: Date } {\n const { originalStart, originalEnd, deltaYPx, slotDuration, minEventDuration, endHour } =\n params;\n const deltaMinutes = pixelDeltaToSnappedMinutes(deltaYPx, slotDuration);\n const rawEndMinutes = minutesOfDay(originalEnd) + deltaMinutes;\n const startMinutes = minutesOfDay(originalStart);\n const rangeEnd = endHour * 60;\n const clampedEndMinutes = Math.min(\n Math.max(rawEndMinutes, startMinutes + minEventDuration),\n rangeEnd\n );\n const end = combineDayAndMinutes(originalStart, clampedEndMinutes);\n return { end };\n}\n\n/** Same fixed-order categorical cycle the chart components use, for visual consistency. */\nexport const SERIES_COLOR_CYCLE: readonly string[] = [\n vars.chart.series1,\n vars.chart.series2,\n vars.chart.series3,\n vars.chart.series4,\n vars.chart.series5,\n vars.chart.series6,\n vars.chart.series7,\n vars.chart.series8,\n];\n\n/** Stable djb2-style string hash, used to key an event's fallback color to its id so the same event always gets the same color across re-renders. */\nexport function hashStringToIndex(value: string, bucketCount: number): number {\n let hash = 5381;\n for (let i = 0; i < value.length; i++) {\n hash = (hash * 33) ^ value.charCodeAt(i);\n }\n return Math.abs(hash) % bucketCount;\n}\n\nexport function getEventColor(id: string, override: string | undefined): string {\n if (override) return override;\n return SERIES_COLOR_CYCLE[hashStringToIndex(id, SERIES_COLOR_CYCLE.length)]!;\n}\n","export { Button } from \"./components/Button\";\nexport type { ButtonProps, ButtonVariant } from \"./components/Button\";\n\nexport { Label } from \"./components/Label\";\nexport type { LabelProps } from \"./components/Label\";\n\nexport { Input } from \"./components/Input\";\nexport type { InputProps } from \"./components/Input\";\n\nexport { Textarea } from \"./components/Textarea\";\nexport type { TextareaProps } from \"./components/Textarea\";\n\nexport { Select } from \"./components/Select\";\nexport type { SelectProps } from \"./components/Select\";\n\nexport { Checkbox } from \"./components/Checkbox\";\nexport type { CheckboxProps } from \"./components/Checkbox\";\n\nexport { Radio } from \"./components/Radio\";\nexport type { RadioProps } from \"./components/Radio\";\n\nexport { Switch } from \"./components/Switch\";\nexport type { SwitchProps } from \"./components/Switch\";\n\nexport { Card } from \"./components/Card\";\nexport type { CardElevation, CardProps } from \"./components/Card\";\n\nexport { Stack } from \"./components/Stack\";\nexport type {\n StackAlign,\n StackDirection,\n StackGap,\n StackJustify,\n StackProps,\n} from \"./components/Stack\";\n\nexport { Divider } from \"./components/Divider\";\nexport type { DividerOrientation, DividerProps } from \"./components/Divider\";\n\nexport { Tooltip } from \"./components/Tooltip\";\nexport type { TooltipProps } from \"./components/Tooltip\";\n\nexport { Popover } from \"./components/Popover\";\nexport type { PopoverProps } from \"./components/Popover\";\n\nexport { Modal } from \"./components/Modal\";\nexport type { ModalProps } from \"./components/Modal\";\n\nexport { ToastProvider, useToast } from \"./components/Toast\";\nexport type {\n ToastContextValue,\n ToastOptions,\n ToastVariant,\n} from \"./components/Toast\";\n\nexport { DropdownMenu, DropdownMenuItem } from \"./components/DropdownMenu\";\nexport type {\n DropdownMenuItemProps,\n DropdownMenuProps,\n} from \"./components/DropdownMenu\";\n\nexport { Breadcrumbs, BreadcrumbsItem } from \"./components/Breadcrumbs\";\nexport type {\n BreadcrumbsItemProps,\n BreadcrumbsProps,\n} from \"./components/Breadcrumbs\";\n\nexport { Pagination } from \"./components/Pagination\";\nexport type { PaginationProps } from \"./components/Pagination\";\n\nexport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"./components/Accordion\";\nexport type {\n AccordionContentProps,\n AccordionItemProps,\n AccordionProps,\n AccordionTriggerProps,\n} from \"./components/Accordion\";\n\nexport { Tabs, TabsList, TabsPanel, TabsTrigger } from \"./components/Tabs\";\nexport type {\n TabsListProps,\n TabsPanelProps,\n TabsProps,\n TabsTriggerProps,\n} from \"./components/Tabs\";\n\nexport { Badge } from \"./components/Badge\";\nexport type { BadgeProps, BadgeVariant } from \"./components/Badge\";\n\nexport { Avatar } from \"./components/Avatar\";\nexport type {\n AvatarProps,\n AvatarSize,\n AvatarStatus,\n} from \"./components/Avatar\";\n\nexport { Progress } from \"./components/Progress\";\nexport type { ProgressProps } from \"./components/Progress\";\n\nexport { Spinner } from \"./components/Spinner\";\nexport type { SpinnerProps, SpinnerSize } from \"./components/Spinner\";\n\nexport { Alert } from \"./components/Alert\";\nexport type { AlertProps, AlertVariant } from \"./components/Alert\";\n\nexport { DataGrid } from \"./components/DataGrid\";\nexport type {\n DataGridColumn,\n DataGridExportOptions,\n DataGridHandle,\n DataGridProps,\n SortDirection,\n SortState,\n} from \"./components/DataGrid\";\n\nexport { Calendar } from \"./components/Calendar\";\nexport type { CalendarProps } from \"./components/Calendar\";\n\nexport { DatePicker } from \"./components/DatePicker\";\nexport type { DatePickerProps } from \"./components/DatePicker\";\n\nexport { DateRangePicker } from \"./components/DateRangePicker\";\nexport type {\n DateRange,\n DateRangePickerProps,\n} from \"./components/DateRangePicker\";\n\nexport { NumberInput } from \"./components/NumberInput\";\nexport type { NumberInputProps } from \"./components/NumberInput\";\n\nexport { Slider } from \"./components/Slider\";\nexport type { SliderProps, SliderValue } from \"./components/Slider\";\n\nexport { Combobox } from \"./components/Combobox\";\nexport type {\n ComboboxOption,\n ComboboxProps,\n} from \"./components/Combobox\";\n\nexport { TreeView } from \"./components/TreeView\";\nexport type {\n TreeNode,\n TreeViewProps,\n TreeViewSelectable,\n} from \"./components/TreeView\";\n\nexport { CommandPalette, useCommandPaletteShortcut } from \"./components/CommandPalette\";\nexport type {\n CommandItem,\n CommandPaletteProps,\n UseCommandPaletteShortcutOptions,\n} from \"./components/CommandPalette\";\n\nexport { LineChart, InteractiveLineChart } from \"./components/charts/LineChart\";\nexport type {\n LineChartBaseProps,\n LineChartDataPoint,\n LineChartMargin,\n LineChartProps,\n LineChartSeries,\n LineChartXScaleType,\n InteractiveLineChartProps\n} from \"./components/charts/LineChart\";\n\nexport { BarChart, InteractiveBarChart } from \"./components/charts/BarChart\";\nexport type {\n BarChartBaseProps,\n BarChartDataPoint,\n BarChartLayout,\n BarChartMargin,\n BarChartProps,\n BarChartSeries,\n InteractiveBarChartProps\n} from \"./components/charts/BarChart\";\n\nexport { AreaChart, InteractiveAreaChart } from \"./components/charts/AreaChart\";\nexport type {\n AreaChartBaseProps,\n AreaChartDataPoint,\n AreaChartMargin,\n AreaChartProps,\n AreaChartSeries,\n AreaChartXScaleType,\n InteractiveAreaChartProps\n} from \"./components/charts/AreaChart\";\n\nexport { PieChart, InteractivePieChart } from \"./components/charts/PieChart\";\nexport type {\n PieChartBaseProps,\n PieChartDataPoint,\n PieChartProps,\n InteractivePieChartProps\n} from \"./components/charts/PieChart\";\n\nexport { Scheduler } from \"./components/Scheduler\";\nexport type { SchedulerEvent, SchedulerProps } from \"./components/Scheduler\";\n\nexport { vars, defaultThemeClass, defaultThemeVars } from \"@vesture/tokens\";\n"],"mappings":"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","names":["Button","forwardRef","jsx","forwardRef","Label","forwardRef","jsx","forwardRef","Input","forwardRef","jsx","forwardRef","Textarea","forwardRef","jsx","jsxs","forwardRef","Select","forwardRef","wrapper","jsx","jsxs","forwardRef","Checkbox","label","wrapper","forwardRef","hiddenInput","wrapper","jsx","jsxs","forwardRef","Radio","label","wrapper","hiddenInput","forwardRef","hiddenInput","wrapper","jsx","jsxs","forwardRef","Switch","label","wrapper","hiddenInput","forwardRef","jsx","forwardRef","Card","forwardRef","jsx","forwardRef","Stack","forwardRef","jsx","forwardRef","Divider","useRef","jsx","jsxs","useRef","cloneElement","isValidElement","useState","FloatingPortal","autoUpdate","flip","offset","shift","useDismiss","useFloating","useInteractions","useMergeRefs","useRole","Fragment","jsx","jsxs","useState","useFloating","autoUpdate","offset","flip","shift","useInteractions","useDismiss","useRole","useMergeRefs","isValidElement","cloneElement","FloatingPortal","FloatingFocusManager","FloatingPortal","useDismiss","useFloating","useInteractions","useRole","jsx","jsxs","title","useFloating","useInteractions","useDismiss","useRole","FloatingPortal","FloatingFocusManager","useState","closeButton","jsx","jsxs","useState","current","item","closeButton","cloneElement","isValidElement","useRef","useState","FloatingFocusManager","FloatingPortal","autoUpdate","flip","offset","shift","useClick","useDismiss","useFloating","useInteractions","useMergeRefs","useRole","createContext","useContext","Fragment","jsx","jsxs","trigger","useState","useRef","useFloating","autoUpdate","offset","flip","shift","useInteractions","useClick","useDismiss","useRole","useMergeRefs","cloneElement","FloatingPortal","FloatingFocusManager","isValidElement","useMergeRefs","jsx","useMergeRefs","DropdownMenu","Fragment","cloneElement","isValidElement","item","jsx","jsxs","isValidElement","Fragment","cloneElement","jsx","item","Breadcrumbs","list","jsx","jsxs","list","item","useState","item","createContext","useContext","jsx","useState","jsx","jsx","item","jsx","jsxs","Accordion","useState","createContext","useContext","jsx","useState","list","trigger","jsx","list","jsx","jsx","trigger","Tabs","forwardRef","variant","jsx","forwardRef","Badge","variant","forwardRef","useState","wrapper","jsx","jsxs","forwardRef","Avatar","useState","wrapper","label","track","jsx","jsxs","label","track","size","jsx","label","size","accent","body","closeButton","description","title","jsx","jsxs","variant","accent","body","title","description","closeButton","forwardRef","useCallback","useEffect","useMemo","useRef","useState","body","srOnly","Fragment","jsx","jsxs","useState","useEffect","useRef","row","current","useMemo","useCallback","direction","srOnly","body","forwardRef","useEffect","useMemo","useRef","useState","root","jsx","jsxs","direction","useState","useRef","useEffect","useMemo","root","useEffect","useRef","useState","FloatingFocusManager","FloatingPortal","autoUpdate","flip","offset","shift","useDismiss","useFloating","useInteractions","useRole","iconButton","popover","wrapper","jsx","jsxs","startOfMonth","clampToMidnight","useState","useRef","useEffect","useFloating","autoUpdate","offset","flip","shift","useInteractions","useDismiss","useRole","wrapper","iconButton","FloatingPortal","FloatingFocusManager","popover","useEffect","useState","FloatingFocusManager","FloatingPortal","autoUpdate","flip","offset","shift","useDismiss","useFloating","useInteractions","useRole","dateInput","iconButton","popover","separator","wrapper","jsx","jsxs","startOfMonth","clampToMidnight","x","y","isDisabled","getDatePartOrder","getDatePlaceholder","formatDate","parseDate","useState","useEffect","useFloating","autoUpdate","offset","flip","shift","useInteractions","useDismiss","useRole","wrapper","dateInput","separator","iconButton","FloatingPortal","FloatingFocusManager","popover","forwardRef","useEffect","useRef","useState","useMergeRefs","input","wrapper","jsx","jsxs","forwardRef","NumberInput","useState","useEffect","useRef","useMergeRefs","direction","base","wrapper","input","useRef","useState","range","root","track","jsx","jsxs","formatValue","useState","useRef","current","label","root","track","range","useEffect","useId","useRef","useState","FloatingPortal","autoUpdate","flip","offset","shift","useDismiss","useFloating","useInteractions","useRole","emptyState","wrapper","jsx","jsxs","useState","useEffect","useRef","useId","useFloating","autoUpdate","offset","flip","shift","useInteractions","useDismiss","useRole","direction","wrapper","FloatingPortal","emptyState","useEffect","useMemo","useRef","useState","vars","checkboxCell","chevron","label","root","row","jsx","jsxs","useState","useRef","useMemo","list","useEffect","root","row","vars","chevron","checkboxCell","label","useEffect","useId","useMemo","useRef","useState","FloatingFocusManager","FloatingOverlay","FloatingPortal","useDismiss","useFloating","useInteractions","useRole","emptyState","inputEl","list","option","overlay","virtualSpacer","jsx","jsxs","OVERSCAN","useState","useRef","useId","useFloating","useInteractions","useDismiss","useRole","useMemo","useEffect","direction","row","option","FloatingPortal","FloatingOverlay","overlay","FloatingFocusManager","inputEl","list","emptyState","virtualSpacer","useEffect","vars","x","x","y","x","x","y","x","y","path","path","vars","x","y","emptyState","root","tooltip","jsx","jsxs","root","emptyState","vars","useMemo","useState","jsx","jsxs","useState","useMemo","root","tooltip","AxisBottom","AxisLeft","GridRows","Group","vars","scaleBand","scaleLinear","vars","DEFAULT_MARGIN","SERIES_COLOR_CYCLE","getSeriesColor","resolveMargin","numericValue","buildScales","emptyState","legend","legendItem","legendItemHidden","legendSwatch","root","tooltip","tooltipRow","tooltipSwatch","jsx","jsxs","root","emptyState","SERIES_COLOR_CYCLE","Group","GridRows","vars","AxisBottom","AxisLeft","useMemo","useState","AxisBottom","AxisLeft","GridRows","Group","ParentSize","BarGroup","BarStack","TooltipWithBounds","useTooltip","vars","jsx","jsxs","useState","useMemo","getSeriesColor","useTooltip","root","emptyState","ParentSize","SERIES_COLOR_CYCLE","x","y","Group","GridRows","vars","BarStack","BarGroup","AxisBottom","AxisLeft","TooltipWithBounds","tooltip","tooltipRow","tooltipSwatch","legend","legendItem","legendItemHidden","legendSwatch","AxisBottom","AxisLeft","GridRows","Group","vars","x","emptyState","legend","legendItem","legendItemHidden","legendSwatch","overlayRect","root","tooltip","tooltipRow","tooltipSwatch","jsx","jsxs","root","emptyState","Group","GridRows","vars","AxisBottom","AxisLeft","useMemo","useState","ParentSize","TooltipWithBounds","useTooltip","jsx","jsxs","useState","useMemo","useTooltip","root","ParentSize","overlayRect","TooltipWithBounds","tooltip","tooltipRow","tooltipSwatch","legend","legendItem","legendItemHidden","legendSwatch","Group","vars","vars","SERIES_COLOR_CYCLE","getSeriesColor","slice","emptyState","legend","legendItem","legendItemHidden","legendSwatch","root","tooltip","tooltipRow","tooltipSwatch","jsx","jsxs","root","emptyState","Group","vars","useMemo","useState","Group","ParentSize","Pie","TooltipWithBounds","useTooltip","vars","jsx","jsxs","OUTER_PADDING","useState","useMemo","useTooltip","root","emptyState","ParentSize","Group","Pie","vars","TooltipWithBounds","tooltip","tooltipRow","tooltipSwatch","legend","legendItem","legendItemHidden","legendSwatch","useMemo","useRef","useState","header","navButton","resizeHandle","root","vars","SERIES_COLOR_CYCLE","jsx","jsxs","useMemo","useState","useRef","direction","root","header","navButton","resizeHandle","vars"]}
1
+ {"version":3,"sources":["../src/components/Button/Button.tsx","../src/components/Label/Label.tsx","../src/components/Label/Label.css.ts","../src/components/Input/Input.tsx","../src/components/Input/Input.css.ts","../src/components/Textarea/Textarea.tsx","../src/components/Textarea/Textarea.css.ts","../src/components/Select/Select.tsx","../src/components/Select/Select.css.ts","../src/components/Checkbox/Checkbox.tsx","../src/components/Checkbox/Checkbox.css.ts","../src/components/Radio/Radio.tsx","../src/components/Radio/Radio.css.ts","../src/components/Switch/Switch.tsx","../src/components/Switch/Switch.css.ts","../src/components/Card/Card.tsx","../src/components/Stack/Stack.tsx","../src/components/Stack/Stack.css.ts","../src/components/Divider/Divider.tsx","../src/components/Divider/Divider.css.ts","../src/components/Tooltip/Tooltip.tsx","../src/components/Tooltip/Tooltip.css.ts","../src/components/Popover/Popover.tsx","../src/components/Popover/Popover.css.ts","../src/components/Modal/Modal.tsx","../src/components/Modal/Modal.css.ts","../src/components/Toast/ToastProvider.tsx","../src/components/Toast/Toast.css.ts","../src/components/Toast/useToast.ts","../src/components/DropdownMenu/DropdownMenu.tsx","../src/components/DropdownMenu/DropdownMenu.css.ts","../src/components/DropdownMenu/MenuContext.ts","../src/components/DropdownMenu/DropdownMenuItem.tsx","../src/components/DropdownMenu/index.ts","../src/components/Breadcrumbs/Breadcrumbs.tsx","../src/components/Breadcrumbs/Breadcrumbs.css.ts","../src/components/Breadcrumbs/BreadcrumbsItem.tsx","../src/components/Breadcrumbs/index.ts","../src/components/Pagination/getPageRange.ts","../src/components/Pagination/Pagination.css.ts","../src/components/Pagination/Pagination.tsx","../src/components/Accordion/Accordion.tsx","../src/components/Accordion/Accordion.css.ts","../src/components/Accordion/AccordionContext.ts","../src/components/Accordion/AccordionContent.tsx","../src/components/Accordion/AccordionItem.tsx","../src/components/Accordion/AccordionTrigger.tsx","../src/components/Accordion/index.ts","../src/components/Tabs/Tabs.tsx","../src/components/Tabs/TabsContext.ts","../src/components/Tabs/Tabs.css.ts","../src/components/Tabs/TabsList.tsx","../src/components/Tabs/TabsPanel.tsx","../src/components/Tabs/TabsTrigger.tsx","../src/components/Tabs/index.ts","../src/components/Badge/Badge.tsx","../src/components/Badge/Badge.css.ts","../src/components/Avatar/Avatar.tsx","../src/components/Avatar/Avatar.css.ts","../src/components/Progress/Progress.css.ts","../src/components/Progress/Progress.tsx","../src/components/Spinner/Spinner.css.ts","../src/components/Spinner/Spinner.tsx","../src/components/Alert/Alert.css.ts","../src/components/Alert/Alert.tsx","../src/components/DataGrid/DataGrid.tsx","../src/components/DataGrid/DataGrid.css.ts","../src/components/Calendar/Calendar.tsx","../src/components/Calendar/Calendar.css.ts","../src/utils/date.ts","../src/components/DatePicker/DatePicker.tsx","../src/components/DatePicker/DatePicker.css.ts","../src/components/DateRangePicker/DateRangePicker.tsx","../src/components/DateRangePicker/DateRangePicker.css.ts","../src/components/NumberInput/NumberInput.tsx","../src/components/NumberInput/NumberInput.css.ts","../src/components/Slider/Slider.tsx","../src/components/Slider/Slider.css.ts","../src/components/Combobox/Combobox.tsx","../src/components/Combobox/Combobox.css.ts","../src/components/TreeView/TreeView.tsx","../src/components/TreeView/TreeView.css.ts","../src/components/CommandPalette/CommandPalette.tsx","../src/components/CommandPalette/CommandPalette.css.ts","../src/components/CommandPalette/useCommandPaletteShortcut.ts","../src/components/charts/LineChart/LineChart.tsx","../src/components/charts/LineChart/LineChart.render.ts","../../../node_modules/d3-shape/src/constant.js","../../../node_modules/d3-path/src/path.js","../../../node_modules/d3-shape/src/path.js","../../../node_modules/d3-shape/src/array.js","../../../node_modules/d3-shape/src/curve/linear.js","../../../node_modules/d3-shape/src/point.js","../../../node_modules/d3-shape/src/line.js","../../../node_modules/d3-shape/src/area.js","../src/components/charts/LineChart/LineChart.css.ts","../src/components/charts/LineChart/LineChart.interactive.tsx","../src/components/charts/BarChart/BarChart.tsx","../src/components/charts/BarChart/BarChart.render.ts","../src/components/charts/BarChart/BarChart.css.ts","../src/components/charts/BarChart/BarChart.interactive.tsx","../src/components/charts/AreaChart/AreaChart.tsx","../src/components/charts/AreaChart/AreaChart.render.ts","../src/components/charts/AreaChart/AreaChart.css.ts","../src/components/charts/AreaChart/AreaChart.interactive.tsx","../src/components/charts/PieChart/PieChart.tsx","../src/components/charts/PieChart/PieChart.render.ts","../src/components/charts/PieChart/PieChart.css.ts","../src/components/charts/PieChart/PieChart.interactive.tsx","../src/components/Scheduler/Scheduler.tsx","../src/components/Scheduler/Scheduler.css.ts","../src/components/Scheduler/scheduler-layout.ts","../src/index.ts"],"sourcesContent":["import { forwardRef } from \"react\";\nimport type { ButtonHTMLAttributes, ReactElement } from \"react\";\nimport { button, variant } from \"./Button.css\";\n\nexport type ButtonVariant = keyof typeof variant;\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: ButtonVariant;\n}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n function Button({ variant: variantProp = \"primary\", className, ...rest }, ref): ReactElement {\n const classes = [button, variant[variantProp], className].filter(Boolean).join(\" \");\n\n return <button ref={ref} className={classes} {...rest} />;\n }\n);\n","import { forwardRef } from \"react\";\nimport type { LabelHTMLAttributes, ReactElement } from \"react\";\nimport { label, requiredMark } from \"./Label.css\";\n\nexport interface LabelProps extends LabelHTMLAttributes<HTMLLabelElement> {\n required?: boolean;\n disabled?: boolean;\n}\n\nexport const Label = forwardRef<HTMLLabelElement, LabelProps>(function Label(\n { required, disabled, className, children, ...rest },\n ref\n): ReactElement {\n const classes = [label, className].filter(Boolean).join(\" \");\n\n return (\n <label ref={ref} className={classes} data-disabled={disabled || undefined} {...rest}>\n {children}\n {required ? (\n <span className={requiredMark} aria-hidden=\"true\">\n *\n </span>\n ) : null}\n </label>\n );\n});\n","import 'src/components/Label/Label.css.ts.vanilla.css?source=LkxhYmVsX2xhYmVsX183a244djEwIHsKICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGdhcDogdmFyKC0tc3BhY2UteHNfXzJreWEyd2cpOwogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWJvZHlfXzJreWEydzEwKTsKICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZVNtX18ya3lhMncxMyk7CiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0TWVkaXVtX18ya3lhMncxOCk7CiAgbGluZS1oZWlnaHQ6IHZhcigtLWZvbnQtbGluZUhlaWdodE5vcm1hbF9fMmt5YTJ3MWIpOwogIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0X18ya3lhMnczKTsKfQouTGFiZWxfbGFiZWxfXzdrbjh2MTBbZGF0YS1kaXNhYmxlZF0gewogIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0TXV0ZWRfXzJreWEydzQpOwogIGN1cnNvcjogbm90LWFsbG93ZWQ7Cn0KLkxhYmVsX3JlcXVpcmVkTWFya19fN2tuOHYxMSB7CiAgY29sb3I6IHZhcigtLWNvbG9yLWRhbmdlcl9fMmt5YTJ3Yyk7Cn0';\nexport var label = 'Label_label__7kn8v10';\nexport var requiredMark = 'Label_requiredMark__7kn8v11';","import { forwardRef } from \"react\";\nimport type { InputHTMLAttributes, ReactElement } from \"react\";\nimport { input } from \"./Input.css\";\n\nexport interface InputProps extends InputHTMLAttributes<HTMLInputElement> {\n invalid?: boolean;\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(function Input(\n { invalid, className, ...rest },\n ref\n): ReactElement {\n const classes = [input, className].filter(Boolean).join(\" \");\n\n return <input ref={ref} className={classes} aria-invalid={invalid || undefined} {...rest} />;\n});\n","import 'src/components/Input/Input.css.ts.vanilla.css?source=#H4sIAAAAAAAAA5WTTW_bMAyG7_kVvgxtgClIum4HF7sO7aG77DgMAS3JMRFZNCTKqTfsvw9WKsdO87FegpB--IqfiyfbBF5j_F0X0HFol9mfWZYp9I2BLs8KQ3L7MMuyHSqu8my1XH7ozZIsixJqNF2eteBuhYiuglS3Xt9tO7jbrZbzAfX4W0_A3vGsBvQ-ogatFpXGTcUTuPc_Rvd3cjWYIayIYZIMuRQQDcH6hRP1KUIFyO3GUbBqSvrgSpB6kNzD5JR2woHC4BO_t0Q9ZE1j9rVBe3TsS_RuTHvujD6ioy_R3Zg-UeD-S6JVpBtQCu1GMDUJ9g1ILXydwGoCFsRM9f-xRpc8JQ-NwAnpxvM7jVLgfqZ5Zsnq3sEOrEdGsqJx1GjH_fKNqv-YFfQifAWKdkcBKjjo_6Qna5q4v4EfVmEl50fBjHWfcxmsPKGhwaPdDNF6_jD7O1ucOps8bwxIXZFR2sUbOrOVz4H10I37C4IVtdrllvg2V-ihMFrNo_C1pfjBjg5JX8q5JBm8aNFjYfQV7cZhDW447i-v-5lmMsw7WiIqJ7a9kEIqbd-y4Hz_riUWYAzttIrb0oDEfiGWi89nlX6CQxBoWzCovt6wC_rm15WaFNjN4Yjk-TRPir-rfW-felf3_gH172IjqwUAAA';\nexport var input = 'Input_input__baytuv0';","import { forwardRef } from \"react\";\nimport type { ReactElement, TextareaHTMLAttributes } from \"react\";\nimport { textarea } from \"./Textarea.css\";\n\nexport interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {\n invalid?: boolean;\n}\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea(\n { invalid, className, ...rest },\n ref\n): ReactElement {\n const classes = [textarea, className].filter(Boolean).join(\" \");\n\n return <textarea ref={ref} className={classes} aria-invalid={invalid || undefined} {...rest} />;\n});\n","import 'src/components/Textarea/Textarea.css.ts.vanilla.css?source=#H4sIAAAAAAAAA5WUwW7bMAyG73kKX4Y2wBQkXdeDi12HXbrLdhuGgJboWIgsGpTsxBv27oPkynGyrG5v0u-PpEj98uo7Hj0wwtanxXbTSnbFcZ39XmSZ0q4x0OdZYUjuHxdZdtDKV3m2Wa_fhW2trahQ7yqfZw9YB4nR6V-YZx2y1xJM0EqyXpRQa9PnWQd8K0SUClL9dnu37-HusFkvR_Q5wwkMwpMa0fuIGm1xrD6Bg_4lyl-JazBjWBHDJBniFBA3IrSfqA8RKkDud0ytVeeka7kEiWPKASZWyIJB6dYlftiJejw1TdnnOQ7oVEv0YUo73xu8oKOW6H5KX2lw-JJoFekGlNJ2Jzw1CXYNSBSuTmB1BhbkPdWvYw2W_pw8DUKfkTy9v-sotT7caZ5ZshgEz2Cd9pqsaJgaZB88Oun-fVbQUbgKFB0uAlTLEBapZE1n8mdwoxU2cnkR7HUdzly2Vl7JgeC03Y3RuHxc_FmsXnhked4YkFiRUcjxxf3HnE-tx3Eo9_N5K-qQc0v-NlfaQWFQLWP-OYt880ynFl7RQUmydaLTThcGZ0o0rGvg8cU_PJs2XdRogrgTMXNiu_mTpEaHObbsQnlLXoAxdEAVndSA1MEs69XH6c9qMNbLBX4AaxDadmC0-nTjucWbnzMdK7C707uTs01crfGmGf9b8U0j_gtyGWjqEwYAAA';\nexport var textarea = 'Textarea_textarea__1ucrsbx0';","import { forwardRef } from \"react\";\nimport type { ReactElement, SelectHTMLAttributes } from \"react\";\nimport { chevron, select, wrapper } from \"./Select.css\";\n\nexport interface SelectProps extends SelectHTMLAttributes<HTMLSelectElement> {\n invalid?: boolean;\n}\n\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(function Select(\n { invalid, className, children, ...rest },\n ref\n): ReactElement {\n const classes = [select, className].filter(Boolean).join(\" \");\n\n return (\n <span className={wrapper}>\n <select ref={ref} className={classes} aria-invalid={invalid || undefined} {...rest}>\n {children}\n </select>\n <span className={chevron} aria-hidden=\"true\" />\n </span>\n );\n});\n","import 'src/components/Select/Select.css.ts.vanilla.css?source=#H4sIAAAAAAAAA52VwW7bMAyG73kKXYo2wBQkWTtgLnYddukuPQ3DENASEwuRRUGSnWRD332wFCt2FiTbTrbojxQp6qdnr6hRhNXOgbXoVquFUAgf9Zz9mjBmyaugyBTMoYagWnyeMCaVtxoOBVNGK4O81CS23YedkqEq2GI-v3uevE1mx9g-PfrQixg6B7nszViXDzgwAgtmyMSd12QCX0Ot9KFgLbgHzqOpJHlYrZbbAyx3i_k0o179xBHYGV5kRh8jGouoUG2qMII7-5do_kquBp3dyugmSJPrHeKCB9yHnnofoRLEduOoMXJM-satQWAOmWByEh13IFXjez6teJ2zpiF7PLSEDm09vRvSPhw0ntHR1tOHIX2hwPSlp2WkLUipzIYHsj3sLQjkvu7BagSWFALVf8dqXIcxeToINSLdsH8J3eeWbSNKTeh6erpPonG-K9GSMgFdZwoOTLr03Dqy6EJ3RwcH8o6VtOe-Akm7MwfZOEhySVnUNDJ_Bp9vx0JMz5yDqrsy1o0RF2IgeGU22Run1wRWVNSiKwyFh0IqD6VGOY2qu9XZ1-DotM2NXdYkGs9b5VWp8UZ461QNLov0w_Ge9QeZ-xZXPEbu2fZ6Fn2BMYG-oYYCB61phzI23oJQXSPns6drwb6DU8CVaUEr-ek-uAbvf9yoTILZnCQhriZ7Mf4_neOfu_3fMYoKW0cmp7Y8m_dQetJNiCqJwn5KU_mCys4FeRxJ8-69n6pxcVQZxxZN8CcVRhGsydVFetUQ8NsDXz7dDadRmgSPds88aSUTasGhCcPZmfa7haWSMnQ-w1-agLmq7ifx9hs-k1QxKAcAAA';\nexport var chevron = 'Select_chevron__1ciea9l2';\nexport var select = 'Select_select__1ciea9l1';\nexport var wrapper = 'Select_wrapper__1ciea9l0';","import { forwardRef, useEffect, useRef } from \"react\";\nimport type { InputHTMLAttributes, ReactElement, ReactNode } from \"react\";\nimport { box, hiddenInput, wrapper } from \"./Checkbox.css\";\n\nexport interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"type\"> {\n label?: ReactNode;\n indeterminate?: boolean;\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(function Checkbox(\n { label, className, indeterminate = false, ...rest },\n ref\n): ReactElement {\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.indeterminate = indeterminate;\n }\n }, [indeterminate]);\n\n return (\n <label className={[wrapper, className].filter(Boolean).join(\" \")}>\n <input\n ref={(el) => {\n inputRef.current = el;\n if (typeof ref === \"function\") {\n ref(el);\n } else if (ref) {\n ref.current = el;\n }\n }}\n type=\"checkbox\"\n className={hiddenInput}\n {...rest}\n />\n <span className={box} aria-hidden=\"true\" />\n {label}\n </label>\n );\n});\n","import 'src/components/Checkbox/Checkbox.css.ts.vanilla.css?source=#H4sIAAAAAAAAA8VVTY-bMBC951f41o26XgW623bpsVKlHnpq75HBA0xjbMsektBq_3tlwASiZD9OPYA04-d5M-M39t3XGopdbo7bgxPWgttuP23SR5Fu2N8VYxK9VaLLGGqFGnip4PhlxZhQWGmOBI3PWAGawAV3JWzG9sLdcO6tKID7ZrtNd51ID_U6AEqjiZeiQdVFYO_KjewiMtmcoB7_wAIYHD-noMmHHloYZVyE9QYnOFJEjaDW-YCyBod0n1Z3V4vPauFvUNuWMole5Arkum_IFaofLYGMfPcLPm2IC6XMAeSSs0YpQX8PJJE36Tms8UhodMZE7o1qCUK8A0qqM5Z8tv0J1IBVTSe7Ea5CnbFNMIwVBVI3WjET1DU4pGUW4RvZ0zN2B0oQ7nv2Nwrhd-sJy44XRhNomi-9UEcIzH3tUO_G9HPjJDjuhMTWx9YP1kxfej3DjhwDdO6L6MMc7alTcIbufRHdzdEXFDCsRLQc0KLYVc60Wi6xvnWlKKbQSQ8mJ_TQdW6dseDC2Z0iDFtvFxkEKzRKSHM4CyFbJ4YTHIgbs3B_E34ajaQ45ydsUFe8bHVxIQYIj7qadsP6upiyTJQEbpyaUQbv3s0k8LBUwONgjkXmhsg0GUvtkXmjUC66aB02wnW_ZlP-OD8kN4R84-a-DaVxTcacIUFwc_8goVoPCyo4eGKPtyz81-eD9rQaLowidAMke8-embJr8hhzi3l9fEF5F-CvTWN-PlMZyWk_agkErkEtCP53Ma9LZl7SqLGzWyadayzczRqeG9bXKCXGuNTD0hSt53v0mKuXejhN8_SC9hbvY0T2_awn8WF6Pu5JoXcP15-lfy9kUuAHCAAA';\nexport var box = 'Checkbox_box__7029a22';\nexport var hiddenInput = 'Checkbox_hiddenInput__7029a21';\nexport var wrapper = 'Checkbox_wrapper__7029a20';","import { forwardRef } from \"react\";\nimport type { InputHTMLAttributes, ReactElement, ReactNode } from \"react\";\nimport { circle, hiddenInput, wrapper } from \"./Radio.css\";\n\nexport interface RadioProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"type\"> {\n label?: ReactNode;\n}\n\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>(function Radio(\n { label, className, ...rest },\n ref\n): ReactElement {\n return (\n <label className={[wrapper, className].filter(Boolean).join(\" \")}>\n <input ref={ref} type=\"radio\" className={hiddenInput} {...rest} />\n <span className={circle} aria-hidden=\"true\" />\n {label}\n </label>\n );\n});\n","import 'src/components/Radio/Radio.css.ts.vanilla.css?source=#H4sIAAAAAAAAA5WUTW_bMAyG7_kVurXBpiBOt2Lz7gN22GXbPWAk2uYiS5ok23WH_vfBH3IcI2nWI6lHfEmK1OYHSDL7xoG16Pb7_Pn4UNdb9nfFmCRvFbQpI61II88UPn1ZMQaKcs0pYOlTJlAHdJ07B5uyGtw9596CQO7L_X53bGHXFOsOyIwOPIOSVBvB3nUwso1ksj2hnp7xDOwcP6egyUOPCqOMi1hv8IBPIVIjVDnfUdbQkO7LanO58rQAf0_aViGV5OGgUK77blzR-V4FlFHsw5mYNoGDUqZBORMsSErU3zqFKJr0AtZ4CmR0yuDgjaoCdsEakqFIWfLJ9r0vkPIinOwSXE46ZdvOMBYEhXa0YhqkC3QUZikIckJhVN8t1B0qCFT36m8cgd-VD5S1XBgdUIf50Y06usDcF470cUz_YJxExx1Iqnzs-2DxrFIq9vzPekaPKgM890W6mdM-tAoXdO-LdDunLwzAcBJpOdAgjrkzlZbnrK9cBmIKnfRwcKCHvnPrjEXXvd4pwnD1_VkGndW1CqRpFiFk5WB4w0G4NGfur-CntUjEUj9QSTrnWaXFhRgInnQ-3cb19XFKU8gCunFpxkG4u5sNwWIGRvOND36lzdZRCa79NfsCPq-Xy_GyGjZcFCiOKNk79spm3FCKKo83ZuUC_r9pzDs6lZGc7mdGVJ7X5Omg8EYx0-xMf3Vv8T5GTK6eJRd_wdfjnrq7-Xj9D_wH_c1eTW4GAAA';\nexport var circle = 'Radio_circle__gzk3vv2';\nexport var hiddenInput = 'Radio_hiddenInput__gzk3vv1';\nexport var wrapper = 'Radio_wrapper__gzk3vv0';","import { forwardRef } from \"react\";\nimport type { InputHTMLAttributes, ReactElement, ReactNode } from \"react\";\nimport { hiddenInput, track, wrapper } from \"./Switch.css\";\n\nexport interface SwitchProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"type\"> {\n label?: ReactNode;\n}\n\nexport const Switch = forwardRef<HTMLInputElement, SwitchProps>(function Switch(\n { label, className, ...rest },\n ref\n): ReactElement {\n return (\n <label className={[wrapper, className].filter(Boolean).join(\" \")}>\n <input ref={ref} type=\"checkbox\" role=\"switch\" className={hiddenInput} {...rest} />\n <span className={track} aria-hidden=\"true\" />\n {label}\n </label>\n );\n});\n","import 'src/components/Switch/Switch.css.ts.vanilla.css?source=#H4sIAAAAAAAAA8WUPW_bMBCG9_wKbonRMrCcJgOzF8jQKUs34yyepIMpkiUpy2rR_15QEmXZiOJk6ninh_ee7uv-taWQV9vWgbXottusO3a-6Nbszw1jkrxV0AlGWpFGXig8Pt8wBopKzSlg7QXLUQd00V2CFewA7o5zbyFH7uvtdrPvYNNWqwgURgdeQE2qS2Dv2hnZJTJbn1BPv_EMjI7XKWj20KO5UcYlrDd4wGNI1Ag1zkfKGhrS_Xtzv_TvogJ_R9o2QUjysFMoV309FpR-NAFlkvt2JqdN4KCUaVHOJSuSEvVLlJhks17CGk-BjBYMdt6oJmAM15IMlWAPT7avf4VUVkGwzXqwa3AlacHW0TAWcgrdaKVESFfoKMyTCA7y_SS_uZB3qCDQoZf_5BxcyTa-5r5ypPdjkjvjJDruQFLjU30HixeNUqm2v1YzelQZ4Lkv0e2c9qFTeEH3vkR3c_qNRg9fEi0HGvJ96Uyj5TnrG1dAPoXOejg40ENxuXXGoos9OkUYnn49yyBasVQgTXsRQjYOhkYNwrU5c38HPy1All_qB6pJl7xodP5GDARPupxe4-qdoRECioBu3A4dUAfBbm-fFyc5GCtYNgyCwiJMxtjO7GJokv3JEVloTNzWF31A56fmPI59T3WeLlhvzU6YX-5i7yyMq_9zk4ablVeY71GyL-y9TV8qkXVUg5vO8dOVtXgD_3Ae8-GZSjhWU0HAn3ex-7OIhckbzw_kaafw2v8tdbQPkvI9zKKnW38l8Om-3j8un_p_dafqTFkHAAA';\nexport var hiddenInput = 'Switch_hiddenInput__1yxysfy1';\nexport var track = 'Switch_track__1yxysfy2';\nexport var wrapper = 'Switch_wrapper__1yxysfy0';","import { forwardRef } from \"react\";\nimport type { HTMLAttributes, ReactElement } from \"react\";\nimport { card, elevation } from \"./Card.css\";\n\nexport type CardElevation = keyof typeof elevation;\n\nexport interface CardProps extends HTMLAttributes<HTMLDivElement> {\n elevation?: CardElevation;\n}\n\nexport const Card = forwardRef<HTMLDivElement, CardProps>(function Card(\n { elevation: elevationProp = \"flat\", className, ...rest },\n ref\n): ReactElement {\n const classes = [card, elevation[elevationProp], className].filter(Boolean).join(\" \");\n\n return <div ref={ref} className={classes} {...rest} />;\n});\n","import { forwardRef } from \"react\";\nimport type { HTMLAttributes, ReactElement } from \"react\";\nimport { align, direction, gap, justify, stack, wrapStyle } from \"./Stack.css\";\n\nexport type StackDirection = keyof typeof direction;\nexport type StackAlign = keyof typeof align;\nexport type StackJustify = keyof typeof justify;\nexport type StackGap = keyof typeof gap;\n\nexport interface StackProps extends HTMLAttributes<HTMLDivElement> {\n direction?: StackDirection;\n align?: StackAlign;\n justify?: StackJustify;\n gap?: StackGap;\n wrap?: boolean;\n}\n\nexport const Stack = forwardRef<HTMLDivElement, StackProps>(function Stack(\n {\n direction: directionProp = \"column\",\n align: alignProp = \"stretch\",\n justify: justifyProp = \"start\",\n gap: gapProp = \"md\",\n wrap = false,\n className,\n ...rest\n },\n ref\n): ReactElement {\n const classes = [\n stack,\n direction[directionProp],\n align[alignProp],\n justify[justifyProp],\n gap[gapProp],\n wrap ? wrapStyle : null,\n className\n ]\n .filter(Boolean)\n .join(\" \");\n\n return <div ref={ref} className={classes} {...rest} />;\n});\n","import 'src/components/Stack/Stack.css.ts.vanilla.css?source=#H4sIAAAAAAAAA33TS5KDIBAG4L2nYDmzIDU6b3OMHMAi2DEkiBaQUWsqd58C0sYHmQ2b_r-Gvyw3O8v4uTD-LAZh0zR9Ib8JIaUwrWRDTg4S-m1yTTYhWgoN3IpGFbrpkKSeuCQd5znRTReFvJGXWqHNojZkJpxJUSn3UG1RvnrpB1RYqE14LPWhFeWgLGi0b2sbAisHqkT0_uBCUGXkpRosPyL9WNNbYiJPF2PFYZi3_PTyNqK8URaUfdAUF8y7fsU3rPqinjT-_ufyeWvEe7AdwPh1WXyBaRkHestOtlSsLXqDeO9xxdqc_DD9RGlgLpCdB5Z11fPCmhotj1sXCPa4tPXYuoxbFwhWLK2s0ELcukCwp6XtJdrDg74S7Xlpszuu4ji7aznVnWbtzg4S0B_v_6Gb5cSd2-T6B5d3UXojBAAA';\nexport var align = {start:'Stack_align_start__yit1113',center:'Stack_align_center__yit1114',end:'Stack_align_end__yit1115',stretch:'Stack_align_stretch__yit1116'};\nexport var direction = {row:'Stack_direction_row__yit1111',column:'Stack_direction_column__yit1112'};\nexport var gap = {xs:'Stack_gap_xs__yit111b',sm:'Stack_gap_sm__yit111c',md:'Stack_gap_md__yit111d',lg:'Stack_gap_lg__yit111e',xl:'Stack_gap_xl__yit111f','2xl':'Stack_gap_2xl__yit111g'};\nexport var justify = {start:'Stack_justify_start__yit1117',center:'Stack_justify_center__yit1118',end:'Stack_justify_end__yit1119',between:'Stack_justify_between__yit111a'};\nexport var stack = 'Stack_stack__yit1110';\nexport var wrapStyle = 'Stack_wrapStyle__yit111h';","import { forwardRef } from \"react\";\nimport type { HTMLAttributes, ReactElement } from \"react\";\nimport { base, orientation } from \"./Divider.css\";\n\nexport type DividerOrientation = keyof typeof orientation;\n\nexport interface DividerProps extends HTMLAttributes<HTMLHRElement> {\n orientation?: DividerOrientation;\n}\n\nexport const Divider = forwardRef<HTMLHRElement, DividerProps>(function Divider(\n { orientation: orientationProp = \"horizontal\", className, ...rest },\n ref\n): ReactElement {\n const classes = [base, orientation[orientationProp], className].filter(Boolean).join(\" \");\n\n return (\n <hr\n ref={ref}\n className={classes}\n aria-orientation={orientationProp}\n {...rest}\n />\n );\n});\n","import 'src/components/Divider/Divider.css.ts.vanilla.css?source=LkRpdmlkZXJfYmFzZV9fMXFqZmFjNTAgewogIGJvcmRlcjogbm9uZTsKICBiYWNrZ3JvdW5kOiBub25lOwogIG1hcmdpbjogMDsKICBmbGV4LXNocmluazogMDsKfQouRGl2aWRlcl9vcmllbnRhdGlvbl9ob3Jpem9udGFsX18xcWpmYWM1MSB7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiB2YXIoLS1ib3JkZXItd2lkdGhfXzJreWEyd3cpOwogIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJvcmRlcl9fMmt5YTJ3ZCk7Cn0KLkRpdmlkZXJfb3JpZW50YXRpb25fdmVydGljYWxfXzFxamZhYzUyIHsKICB3aWR0aDogdmFyKC0tYm9yZGVyLXdpZHRoX18ya3lhMnd3KTsKICBhbGlnbi1zZWxmOiBzdHJldGNoOwogIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJvcmRlcl9fMmt5YTJ3ZCk7Cn0';\nexport var base = 'Divider_base__1qjfac50';\nexport var orientation = {horizontal:'Divider_orientation_horizontal__1qjfac51',vertical:'Divider_orientation_vertical__1qjfac52'};","import { cloneElement, isValidElement, useRef, useState } from \"react\";\nimport type { ReactElement, ReactNode, Ref } from \"react\";\nimport {\n FloatingArrow,\n FloatingPortal,\n arrow,\n autoUpdate,\n flip,\n offset,\n shift,\n useDismiss,\n useFloating,\n useFocus,\n useHover,\n useInteractions,\n useMergeRefs,\n useRole\n} from \"@floating-ui/react\";\nimport type { Placement } from \"@floating-ui/react\";\nimport { vars } from \"@vesture/tokens\";\nimport { tooltip } from \"./Tooltip.css\";\n\nexport interface TooltipProps {\n content: ReactNode;\n placement?: Placement;\n children: ReactElement<Record<string, unknown>>;\n}\n\nexport function Tooltip({ content, placement = \"top\", children }: TooltipProps): ReactElement {\n const [open, setOpen] = useState(false);\n const arrowRef = useRef<SVGSVGElement>(null);\n\n const { refs, floatingStyles, context } = useFloating({\n open,\n onOpenChange: setOpen,\n placement,\n whileElementsMounted: autoUpdate,\n middleware: [offset(8), flip(), shift({ padding: 8 }), arrow({ element: arrowRef })]\n });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n useHover(context, { move: false }),\n useFocus(context),\n useRole(context, { role: \"tooltip\" }),\n useDismiss(context)\n ]);\n\n const childRef = useMergeRefs([\n refs.setReference,\n (children as unknown as { ref?: Ref<unknown> }).ref ?? null\n ]);\n\n if (!isValidElement(children)) {\n return children;\n }\n\n return (\n <>\n {cloneElement(children, getReferenceProps({ ref: childRef, ...children.props }))}\n {open ? (\n <FloatingPortal>\n <div\n ref={refs.setFloating}\n className={tooltip}\n style={floatingStyles}\n {...getFloatingProps()}\n >\n {content}\n <FloatingArrow ref={arrowRef} context={context} fill={vars.color.text} />\n </div>\n </FloatingPortal>\n ) : null}\n </>\n );\n}\n","import 'src/components/Tooltip/Tooltip.css.ts.vanilla.css?source=LlRvb2x0aXBfdG9vbHRpcF9fZm9hd2wxMCB7CiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItdGV4dF9fMmt5YTJ3Myk7CiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHRJbnZlcnNlX18ya3lhMnc1KTsKICBmb250LWZhbWlseTogdmFyKC0tZm9udC1ib2R5X18ya3lhMncxMCk7CiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemVYc19fMmt5YTJ3MTIpOwogIGxpbmUtaGVpZ2h0OiB2YXIoLS1mb250LWxpbmVIZWlnaHROb3JtYWxfXzJreWEydzFiKTsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc21fXzJreWEyd24pOwogIHBhZGRpbmctdG9wOiB2YXIoLS1zcGFjZS14c19fMmt5YTJ3Zyk7CiAgcGFkZGluZy1ib3R0b206IHZhcigtLXNwYWNlLXhzX18ya3lhMndnKTsKICBwYWRkaW5nLWxlZnQ6IHZhcigtLXNwYWNlLXNtX18ya3lhMndoKTsKICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zcGFjZS1zbV9fMmt5YTJ3aCk7CiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LW1kX18ya3lhMnd0KTsKICBtYXgtd2lkdGg6IDI2MHB4OwogIHotaW5kZXg6IDEyMDA7Cn0';\nexport var tooltip = 'Tooltip_tooltip__foawl10';","import { cloneElement, isValidElement, useState } from \"react\";\nimport type { ReactElement, ReactNode, Ref } from \"react\";\nimport {\n FloatingFocusManager,\n FloatingPortal,\n autoUpdate,\n flip,\n offset,\n shift,\n useClick,\n useDismiss,\n useFloating,\n useInteractions,\n useMergeRefs,\n useRole\n} from \"@floating-ui/react\";\nimport type { Placement } from \"@floating-ui/react\";\nimport { popover } from \"./Popover.css\";\n\nexport interface PopoverProps {\n content: ReactNode;\n placement?: Placement;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n children: ReactElement<Record<string, unknown>>;\n}\n\nexport function Popover({\n content,\n placement = \"bottom-start\",\n open: controlledOpen,\n onOpenChange,\n children\n}: PopoverProps): ReactElement {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(false);\n const open = controlledOpen ?? uncontrolledOpen;\n const setOpen = onOpenChange ?? setUncontrolledOpen;\n\n const { refs, floatingStyles, context } = useFloating({\n open,\n onOpenChange: setOpen,\n placement,\n whileElementsMounted: autoUpdate,\n middleware: [offset(8), flip(), shift({ padding: 8 })]\n });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n useClick(context),\n useDismiss(context),\n useRole(context, { role: \"dialog\" })\n ]);\n\n const childRef = useMergeRefs([\n refs.setReference,\n (children as unknown as { ref?: Ref<unknown> }).ref ?? null\n ]);\n\n if (!isValidElement(children)) {\n return children;\n }\n\n return (\n <>\n {cloneElement(children, getReferenceProps({ ref: childRef, ...children.props }))}\n {open ? (\n <FloatingPortal>\n <FloatingFocusManager context={context} modal={false}>\n <div ref={refs.setFloating} className={popover} style={floatingStyles} {...getFloatingProps()}>\n {content}\n </div>\n </FloatingFocusManager>\n </FloatingPortal>\n ) : null}\n </>\n );\n}\n","import 'src/components/Popover/Popover.css.ts.vanilla.css?source=LlBvcG92ZXJfcG9wb3Zlcl9fa2U1ZWw3MCB7CiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3Itc3VyZmFjZVJhaXNlZF9fMmt5YTJ3Mik7CiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHRfXzJreWEydzMpOwogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWJvZHlfXzJreWEydzEwKTsKICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZVNtX18ya3lhMncxMyk7CiAgbGluZS1oZWlnaHQ6IHZhcigtLWZvbnQtbGluZUhlaWdodE5vcm1hbF9fMmt5YTJ3MWIpOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZ19fMmt5YTJ3cCk7CiAgYm9yZGVyLXdpZHRoOiB2YXIoLS1ib3JkZXItd2lkdGhfXzJreWEyd3cpOwogIGJvcmRlci1zdHlsZTogdmFyKC0tYm9yZGVyLXN0eWxlX18ya3lhMnd5KTsKICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWJvcmRlcl9fMmt5YTJ3ZCk7CiAgcGFkZGluZzogdmFyKC0tc3BhY2UtbWRfXzJreWEyd2kpOwogIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1sZ19fMmt5YTJ3dSk7CiAgbWluLXdpZHRoOiAyMDBweDsKICBtYXgtd2lkdGg6IDMyMHB4OwogIG91dGxpbmU6IG5vbmU7CiAgei1pbmRleDogMTEwMDsKfQ';\nexport var popover = 'Popover_popover__ke5el70';","import { useId } from \"react\";\nimport type { ReactElement, ReactNode } from \"react\";\nimport {\n FloatingFocusManager,\n FloatingOverlay,\n FloatingPortal,\n useDismiss,\n useFloating,\n useInteractions,\n useRole\n} from \"@floating-ui/react\";\nimport { closeButton, heading, modal, overlay } from \"./Modal.css\";\n\nexport interface ModalProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n title?: ReactNode;\n children?: ReactNode;\n}\n\nexport function Modal({ open, onOpenChange, title, children }: ModalProps): ReactElement | null {\n const { refs, context } = useFloating({ open, onOpenChange });\n const { getFloatingProps } = useInteractions([useDismiss(context), useRole(context)]);\n const titleId = useId();\n\n if (!open) {\n return null;\n }\n\n return (\n <FloatingPortal>\n <FloatingOverlay className={overlay} lockScroll>\n <FloatingFocusManager context={context}>\n <div\n ref={refs.setFloating}\n className={modal}\n aria-labelledby={title ? titleId : undefined}\n {...getFloatingProps()}\n >\n <button\n type=\"button\"\n className={closeButton}\n aria-label=\"Close\"\n onClick={() => onOpenChange(false)}\n >\n ✕\n </button>\n {title ? (\n <h2 id={titleId} className={heading}>\n {title}\n </h2>\n ) : null}\n {children}\n </div>\n </FloatingFocusManager>\n </FloatingOverlay>\n </FloatingPortal>\n );\n}\n","import 'src/components/Modal/Modal.css.ts.vanilla.css?source=#H4sIAAAAAAAAA52UzY7aMBDH7zyFL5UWqUYJ7Kq73tuey6UvgJx4knhxPKntQELVd6_sxCGgAlUlFDGTXzwf_xmvtii42uEBjOL9bpfCz28vHBLya0FIg1Y6iZqRQnYg3heESG3BMZL4_0LaRvGekUJB5x1cyVJT6aC2jOSgHRjv_mytk0VPc9QOtJu_yni-Lw22WjBiyow_JV_J-Fs9Lz3RcCGkLhk5cPNEqW14DlSVu9163_P18TNAJyq1gI6RdJMk74vfi9VQVh2esaj0qigDijt5gOtEhkg5KjTUtqbgOfzg0oKIQdchaAAuaQedi9AmQAVqRwteS9VHNLgyFH0k0ySgGRoBhhouZGsjPFizgpuR7aituMDj1JhgzcD2dvs6FaF9gI5SuIqRNEm-eLPmHR1dz69J00VfBbKsHCNvyaHyPj80hcIj7RnhrcPga52SGhjRqGGmRAXc5zFpsQ5a3OrOOFkxy9O5lVae4AL1ju9T0enLGT2O6c7gwfWBapIyfVsO5ZlS6nGuB4Nm6BzWl52rpw_lclZdrtDCR-sc6qnCzdW08cyial2YNofNvXMJMfPU_45M2ye17zj9_yUctV6_DlJHmaN9by7PSeFshqP6l2vlDNe24Qa0u7M-29adF224AvLWWI82KGPKt2dhe5Z2-Do0J9aUPhKNVX6qg3QProQpzL9eBg8CF5i3lh6klZmCIYFbSx7QePTBH_0H_iXAa8cFAAA';\nexport var closeButton = 'Modal_closeButton__1eq75ae3';\nexport var heading = 'Modal_heading__1eq75ae2';\nexport var modal = 'Modal_modal__1eq75ae1';\nexport var overlay = 'Modal_overlay__1eq75ae0';","import { createContext, useCallback, useMemo, useState } from \"react\";\nimport type { ReactElement, ReactNode } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { accent, body, closeButton, description, title, toast, viewport } from \"./Toast.css\";\n\nexport type ToastVariant = keyof typeof accent;\n\nexport interface ToastOptions {\n title: string;\n description?: string;\n variant?: ToastVariant;\n duration?: number;\n}\n\ninterface ToastItem extends ToastOptions {\n id: number;\n}\n\nexport interface ToastContextValue {\n toast: (options: ToastOptions) => number;\n dismiss: (id: number) => void;\n}\n\nexport const ToastContext = createContext<ToastContextValue | null>(null);\n\nconst DEFAULT_DURATION = 5000;\n\nexport function ToastProvider({ children }: { children?: ReactNode }): ReactElement {\n const [toasts, setToasts] = useState<ToastItem[]>([]);\n\n const dismiss = useCallback((id: number) => {\n setToasts((current) => current.filter((item) => item.id !== id));\n }, []);\n\n const pushToast = useCallback(\n (options: ToastOptions) => {\n const id = Date.now() + Math.random();\n setToasts((current) => [...current, { id, ...options }]);\n const duration = options.duration ?? DEFAULT_DURATION;\n if (duration > 0) {\n setTimeout(() => dismiss(id), duration);\n }\n return id;\n },\n [dismiss]\n );\n\n const value = useMemo<ToastContextValue>(() => ({ toast: pushToast, dismiss }), [pushToast, dismiss]);\n\n return (\n <ToastContext.Provider value={value}>\n {children}\n {createPortal(\n <div className={viewport} role=\"region\" aria-label=\"Notifications\">\n {toasts.map((item) => (\n <div key={item.id} className={`${toast} ${accent[item.variant ?? \"default\"]}`} role=\"status\">\n <div className={body}>\n <p className={title}>{item.title}</p>\n {item.description ? <p className={description}>{item.description}</p> : null}\n </div>\n <button\n type=\"button\"\n className={closeButton}\n aria-label=\"Dismiss\"\n onClick={() => dismiss(item.id)}\n >\n ✕\n </button>\n </div>\n ))}\n </div>,\n document.body\n )}\n </ToastContext.Provider>\n );\n}\n","import 'src/components/Toast/Toast.css.ts.vanilla.css?source=#H4sIAAAAAAAAA6WUsXLbMAyGdz8Fx3hgTrLTNlG2Tl3Soenuo0lIRkOROpKy5PT67j2Spkw7tuu7LtIR-vEJAAHc_9TMutUWYei0cavVqNpyZAX5PSOk0xYdalWRGkcQzzNC1to53VZky8wdpbZjHKhsVqvF244thl9zrzHYbNx1iUDbSbarSC1h9Ab_pgIN8PhDrmXfKv-lYd0xy7aJtQmsd4pKwFiR8qEovGFA4TYVWS6KLrBbNtK9jTPJ78qi2A6EkuWiG-fPsz-z-1gEF577CpShAh_iZBIbRdFBa6ORWseMuynQNeNvjdG9EknHtdSG2t7UjMMPhhZEclkElyA4VjsYXRItg6jWytGatSh3SRpMay12SVkWB6nFdzgSesPrFGwZqRIV0A3kdxnE3v4tmL9r0zI5ua1jktoIMNQwgb1NjvFE2yk7nWv3dxOluS2ph1xt3U7CiTrYknqXq88UMH5JapGrJdTucjivzmg1NfIYHDsmBKrm-OIPeeKePlK7YUIPky6csrHo80ZknINyKwE16-XUkYvQkXmkNyV3SrU952Btoi5voU4-EcvOYAdmFPrqROzDLdjJJ2LX52rAVOPzidRPt1CTS4TyowlH5_skwj4HWOjp4WObR9MLCOwPk_E4j_vENKgqUmRkAZYb7PzySvwvgX9hgl96d5j1h1NsOlCnT3bKOF1CkycWRz3-9zHmJcNKDCxUqanzkLnUFr72zh1CfsrqWxGlFZzuLWeYsh0zoNyV_XQmO94b66WdRuXA_M8yKo8G718pVRu9BXPtLvJteh1Va95bukWLawn7Wl0Y7SBN5K0n_wU0qE2BawcAAA';\nexport var accent = {'default':'Toast_accent_default__xnm1xa2',success:'Toast_accent_success__xnm1xa3',warning:'Toast_accent_warning__xnm1xa4',danger:'Toast_accent_danger__xnm1xa5'};\nexport var body = 'Toast_body__xnm1xa8';\nexport var closeButton = 'Toast_closeButton__xnm1xa9';\nexport var description = 'Toast_description__xnm1xa7';\nexport var title = 'Toast_title__xnm1xa6';\nexport var toast = 'Toast_toast__xnm1xa1';\nexport var viewport = 'Toast_viewport__xnm1xa0';","import { useContext } from \"react\";\nimport { ToastContext } from \"./ToastProvider\";\n\nexport function useToast() {\n const context = useContext(ToastContext);\n if (!context) {\n throw new Error(\"useToast must be used within a ToastProvider\");\n }\n return context;\n}\n","import { cloneElement, isValidElement, useRef, useState } from \"react\";\nimport type { ReactElement, ReactNode, Ref } from \"react\";\nimport {\n FloatingFocusManager,\n FloatingPortal,\n autoUpdate,\n flip,\n offset,\n shift,\n useClick,\n useDismiss,\n useFloating,\n useInteractions,\n useListNavigation,\n useMergeRefs,\n useRole\n} from \"@floating-ui/react\";\nimport type { Placement } from \"@floating-ui/react\";\nimport { menu } from \"./DropdownMenu.css\";\nimport { MenuContext } from \"./MenuContext\";\n\nexport interface DropdownMenuProps {\n trigger: ReactElement<Record<string, unknown>>;\n placement?: Placement;\n children?: ReactNode;\n}\n\nexport function DropdownMenu({\n trigger,\n placement = \"bottom-start\",\n children\n}: DropdownMenuProps): ReactElement {\n const [open, setOpen] = useState(false);\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n const elementsRef = useRef<Array<HTMLElement | null>>([]);\n\n const { refs, floatingStyles, context } = useFloating({\n open,\n onOpenChange: setOpen,\n placement,\n whileElementsMounted: autoUpdate,\n middleware: [offset(4), flip(), shift({ padding: 8 })]\n });\n\n const { getReferenceProps, getFloatingProps, getItemProps } = useInteractions([\n useClick(context),\n useDismiss(context),\n useRole(context, { role: \"menu\" }),\n useListNavigation(context, {\n listRef: elementsRef,\n activeIndex,\n onNavigate: setActiveIndex,\n loop: true\n })\n ]);\n\n const closeMenu = () => setOpen(false);\n\n const triggerRef = useMergeRefs([\n refs.setReference,\n (trigger as unknown as { ref?: Ref<unknown> }).ref ?? null\n ]);\n\n return (\n <>\n {cloneElement(trigger, getReferenceProps({ ref: triggerRef, ...trigger.props }))}\n {open ? (\n <FloatingPortal>\n <FloatingFocusManager context={context} modal={false}>\n <div ref={refs.setFloating} className={menu} style={floatingStyles} {...getFloatingProps()}>\n <MenuContext.Provider value={{ activeIndex, getItemProps, closeMenu }}>\n {(children ? (Array.isArray(children) ? children : [children]) : []).map((child, index) =>\n isValidElement(child)\n ? cloneElement(\n child as ReactElement<{ index?: number; elementsRef?: typeof elementsRef }>,\n { key: index, index, elementsRef }\n )\n : child\n )}\n </MenuContext.Provider>\n </div>\n </FloatingFocusManager>\n </FloatingPortal>\n ) : null}\n </>\n );\n}\n","import 'src/components/DropdownMenu/DropdownMenu.css.ts.vanilla.css?source=#H4sIAAAAAAAAA42TPW_cMAyG9_sVWoo0gwL70gKFD92yZknHojjQFu0TThYFfcR2ivz3QrrKH0XSy2JD1CNSfF_q7sGSETToR9Th2MfPsVQdiK9jwX7vGBPSGQVTxVqF42HH0p8LabHxknTFGlKh13GnA1OxvUlUDc25sxS0qNgz2M-cN6TIchdsCw0-gXQojsf9eYL9sL9NR8gKtNyCkMHlU5cVV11mzZodpPCnjK5jmR7WtPOTwn_oFMv0tKbTfbeXv-xkWiTagBBSdxl0Bhrko8tQ9zflyN0JBA0zl1arvkICe6lzU-W34iIlBa-kxopp0hgDL1xqgWPFyrIoDrvX3d3GROmxn00stybWippzzJGLFMWnuPQ4eg5KdrpiClu_6LCUXVvqLWhnwKJO6BtaxYy5t_vUW0va8xZ6qaaMplBNYspkWSyoky-4AWPgRz-j91enxs2wXnvFPZmtXwt42oA1eU_9x9go28dIK7vTFbQJ1kVFDUnt0b4xBv93_acADxwaL5_x-423AW9-pUm48i5ncW-vVaiEdFArFCntOwPwGPzyyr9sOtMUB07RgOKwe_0DcpFTKYcEAAA';\nexport var item = 'DropdownMenu_item__1lgad5x1';\nexport var menu = 'DropdownMenu_menu__1lgad5x0';","import { createContext, useContext } from \"react\";\nimport type { useInteractions } from \"@floating-ui/react\";\n\nexport interface MenuContextValue {\n activeIndex: number | null;\n getItemProps: ReturnType<typeof useInteractions>[\"getItemProps\"];\n closeMenu: () => void;\n}\n\nexport const MenuContext = createContext<MenuContextValue | null>(null);\n\nexport function useMenuContext(): MenuContextValue {\n const context = useContext(MenuContext);\n if (!context) {\n throw new Error(\"DropdownMenu.Item must be used within a DropdownMenu\");\n }\n return context;\n}\n","import { useMergeRefs } from \"@floating-ui/react\";\nimport type { ButtonHTMLAttributes, MutableRefObject, ReactElement } from \"react\";\nimport { item } from \"./DropdownMenu.css\";\nimport { useMenuContext } from \"./MenuContext\";\n\nexport interface DropdownMenuItemProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n onSelect?: () => void;\n}\n\ninterface InternalProps {\n index?: number;\n elementsRef?: MutableRefObject<Array<HTMLElement | null>>;\n}\n\nexport function DropdownMenuItem({\n onSelect,\n disabled,\n className,\n index,\n elementsRef,\n ...rest\n}: DropdownMenuItemProps & InternalProps): ReactElement {\n const { activeIndex, getItemProps, closeMenu } = useMenuContext();\n const isActive = activeIndex === index;\n\n const itemRef = useMergeRefs([\n (node: HTMLButtonElement | null) => {\n if (elementsRef && typeof index === \"number\") {\n elementsRef.current[index] = node;\n }\n }\n ]);\n\n return (\n <button\n ref={itemRef}\n type=\"button\"\n role=\"menuitem\"\n disabled={disabled}\n data-active={isActive || undefined}\n className={[item, className].filter(Boolean).join(\" \")}\n tabIndex={isActive ? 0 : -1}\n {...getItemProps({\n onClick: () => {\n onSelect?.();\n closeMenu();\n },\n ...rest\n })}\n />\n );\n}\n","import { DropdownMenu as DropdownMenuBase } from \"./DropdownMenu\";\nimport { DropdownMenuItem } from \"./DropdownMenuItem\";\n\nexport const DropdownMenu = Object.assign(DropdownMenuBase, { Item: DropdownMenuItem });\nexport type { DropdownMenuProps } from \"./DropdownMenu\";\nexport { DropdownMenuItem } from \"./DropdownMenuItem\";\nexport type { DropdownMenuItemProps } from \"./DropdownMenuItem\";\n","import { Children, Fragment, cloneElement, isValidElement } from \"react\";\nimport type { HTMLAttributes, ReactElement, ReactNode } from \"react\";\nimport { list, separator } from \"./Breadcrumbs.css\";\n\nexport interface BreadcrumbsProps extends Omit<HTMLAttributes<HTMLElement>, \"children\"> {\n separator?: ReactNode;\n children?: ReactNode;\n}\n\nexport function Breadcrumbs({\n separator: separatorNode = \"/\",\n children,\n ...rest\n}: BreadcrumbsProps): ReactElement {\n const items = Children.toArray(children).filter(isValidElement);\n\n return (\n <nav aria-label=\"Breadcrumb\" {...rest}>\n <ol className={list}>\n {items.map((child, index) => (\n <Fragment key={index}>\n {cloneElement(child as ReactElement<{ isLast?: boolean }>, {\n isLast: index === items.length - 1\n })}\n {index < items.length - 1 ? (\n <li className={separator} aria-hidden=\"true\">\n {separatorNode}\n </li>\n ) : null}\n </Fragment>\n ))}\n </ol>\n </nav>\n );\n}\n","import 'src/components/Breadcrumbs/Breadcrumbs.css.ts.vanilla.css?source=LkJyZWFkY3J1bWJzX2xpc3RfX3JsNWlteDAgewogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBmbGV4LXdyYXA6IHdyYXA7CiAgZ2FwOiB2YXIoLS1zcGFjZS14c19fMmt5YTJ3Zyk7CiAgbWFyZ2luOiAwOwogIHBhZGRpbmc6IDA7CiAgbGlzdC1zdHlsZTogbm9uZTsKICBmb250LWZhbWlseTogdmFyKC0tZm9udC1ib2R5X18ya3lhMncxMCk7CiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemVTbV9fMmt5YTJ3MTMpOwp9Ci5CcmVhZGNydW1ic19pdGVtX19ybDVpbXgxIHsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZ2FwOiB2YXIoLS1zcGFjZS14c19fMmt5YTJ3Zyk7Cn0KLkJyZWFkY3J1bWJzX2xpbmtfX3JsNWlteDIgewogIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0TXV0ZWRfXzJreWEydzQpOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc21fXzJreWEyd24pOwp9Ci5CcmVhZGNydW1ic19saW5rX19ybDVpbXgyOmhvdmVyIHsKICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dF9fMmt5YTJ3Myk7CiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Cn0KLkJyZWFkY3J1bWJzX2xpbmtfX3JsNWlteDI6Zm9jdXMtdmlzaWJsZSB7CiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWZvY3VzX18ya3lhMnd2KTsKfQouQnJlYWRjcnVtYnNfY3VycmVudF9fcmw1aW14MyB7CiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHRfXzJreWEydzMpOwogIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodE1lZGl1bV9fMmt5YTJ3MTgpOwp9Ci5CcmVhZGNydW1ic19zZXBhcmF0b3JfX3JsNWlteDQgewogIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0TXV0ZWRfXzJreWEydzQpOwp9';\nexport var current = 'Breadcrumbs_current__rl5imx3';\nexport var item = 'Breadcrumbs_item__rl5imx1';\nexport var link = 'Breadcrumbs_link__rl5imx2';\nexport var list = 'Breadcrumbs_list__rl5imx0';\nexport var separator = 'Breadcrumbs_separator__rl5imx4';","import type { AnchorHTMLAttributes, ReactElement, ReactNode } from \"react\";\nimport { current, item, link } from \"./Breadcrumbs.css\";\n\nexport interface BreadcrumbsItemProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n children: ReactNode;\n}\n\ninterface InternalProps {\n isLast?: boolean;\n}\n\nexport function BreadcrumbsItem({\n href,\n children,\n isLast,\n className,\n ...rest\n}: BreadcrumbsItemProps & InternalProps): ReactElement {\n return (\n <li className={item}>\n {isLast || !href ? (\n <span className={[current, className].filter(Boolean).join(\" \")} aria-current={isLast ? \"page\" : undefined}>\n {children}\n </span>\n ) : (\n <a href={href} className={[link, className].filter(Boolean).join(\" \")} {...rest}>\n {children}\n </a>\n )}\n </li>\n );\n}\n","import { Breadcrumbs as BreadcrumbsBase } from \"./Breadcrumbs\";\nimport { BreadcrumbsItem } from \"./BreadcrumbsItem\";\n\nexport const Breadcrumbs = Object.assign(BreadcrumbsBase, { Item: BreadcrumbsItem });\nexport type { BreadcrumbsProps } from \"./Breadcrumbs\";\nexport { BreadcrumbsItem } from \"./BreadcrumbsItem\";\nexport type { BreadcrumbsItemProps } from \"./BreadcrumbsItem\";\n","export type PageRangeItem = number | \"ellipsis\";\n\nfunction range(start: number, end: number): number[] {\n const output: number[] = [];\n for (let i = start; i <= end; i++) {\n output.push(i);\n }\n return output;\n}\n\nexport function getPageRange(page: number, totalPages: number, siblingCount = 1): PageRangeItem[] {\n const totalPageNumbers = siblingCount * 2 + 5;\n\n if (totalPageNumbers >= totalPages) {\n return range(1, totalPages);\n }\n\n const leftSiblingIndex = Math.max(page - siblingCount, 1);\n const rightSiblingIndex = Math.min(page + siblingCount, totalPages);\n\n const shouldShowLeftEllipsis = leftSiblingIndex > 2;\n const shouldShowRightEllipsis = rightSiblingIndex < totalPages - 1;\n\n if (!shouldShowLeftEllipsis && shouldShowRightEllipsis) {\n const leftItemCount = 3 + siblingCount * 2;\n return [...range(1, leftItemCount), \"ellipsis\", totalPages];\n }\n\n if (shouldShowLeftEllipsis && !shouldShowRightEllipsis) {\n const rightItemCount = 3 + siblingCount * 2;\n return [1, \"ellipsis\", ...range(totalPages - rightItemCount + 1, totalPages)];\n }\n\n return [1, \"ellipsis\", ...range(leftSiblingIndex, rightSiblingIndex), \"ellipsis\", totalPages];\n}\n","import 'src/components/Pagination/Pagination.css.ts.vanilla.css?source=#H4sIAAAAAAAAA71TsW7bMBDd_RXcEg8MHKcIEAZdsgco0G5FIZzJE3UNRRLkybZa5N8LSaZio4jjKeMj3717d4-8-QaWPDAFXznKXFVW9_VDuxJ_F0IYytFBr0TtcP-4EAIcWS-Jsc1KaPSMaTi2EJXYQrqWMkfQKPe5qtYvPax3djkQWkiWvBKrAUQwhrw9oKGrzNw7VMIHj4-L18XNkasIFp865uCLt9tTb-QdeZQfWPzdZaa6lzp4Rs_HVy15uSPDjRJ393EUaZBsw2_4YFk6rPn8pIWZJoFz1E1IBlOZumCZwFCXS-mEZGtKbZhqQb_YFDpvlOAEPkdI6Hm40sGFVMpHIBn3XOrvxvo6eJY1tOT6Qh2PNsH0hXm7eqNm-oMnxOHgeztTJ1XdpTz0joGm5X4YpWrCFpPyga-VoQwbh2Y55ns84fEsuUs1aJw7Ly_pUgfdZbmlTBuHk3zYy9yACbs5pBHJkVrUtxepF-Oj8Dvrf-4Y5wy_nGzLB5bgXNihuaDbT0gEUndpyPvr1cC4-nV2YzFRC2mO9X75zis58H4cPZaH_-ZH5yhmysXP-vM_46Ubfv0HFg56Gt0EAAA';\nexport var ellipsis = 'Pagination_ellipsis__gcyf9m2';\nexport var list = 'Pagination_list__gcyf9m0';\nexport var pageButton = 'Pagination_pageButton__gcyf9m1';","import type { ReactElement } from \"react\";\nimport { getPageRange } from \"./getPageRange\";\nimport { ellipsis, list, pageButton } from \"./Pagination.css\";\n\nexport interface PaginationProps {\n page: number;\n totalPages: number;\n onPageChange: (page: number) => void;\n siblingCount?: number;\n}\n\nexport function Pagination({\n page,\n totalPages,\n onPageChange,\n siblingCount = 1\n}: PaginationProps): ReactElement {\n const items = getPageRange(page, totalPages, siblingCount);\n\n return (\n <nav aria-label=\"Pagination\">\n <ul className={list}>\n <li>\n <button\n type=\"button\"\n className={pageButton}\n onClick={() => onPageChange(page - 1)}\n disabled={page <= 1}\n aria-label=\"Previous page\"\n >\n ‹\n </button>\n </li>\n {items.map((item, index) =>\n item === \"ellipsis\" ? (\n <li key={`ellipsis-${index}`} className={ellipsis} aria-hidden=\"true\">\n …\n </li>\n ) : (\n <li key={item}>\n <button\n type=\"button\"\n className={pageButton}\n onClick={() => onPageChange(item)}\n aria-current={item === page ? \"page\" : undefined}\n aria-label={`Page ${item}`}\n >\n {item}\n </button>\n </li>\n )\n )}\n <li>\n <button\n type=\"button\"\n className={pageButton}\n onClick={() => onPageChange(page + 1)}\n disabled={page >= totalPages}\n aria-label=\"Next page\"\n >\n ›\n </button>\n </li>\n </ul>\n </nav>\n );\n}\n","import { useState } from \"react\";\nimport type { HTMLAttributes, ReactElement } from \"react\";\nimport { root } from \"./Accordion.css\";\nimport { AccordionContext } from \"./AccordionContext\";\n\ntype CommonDivProps = Omit<HTMLAttributes<HTMLDivElement>, \"onChange\" | \"defaultValue\">;\n\ninterface AccordionSingleProps extends CommonDivProps {\n type: \"single\";\n value?: string | null;\n defaultValue?: string | null;\n onValueChange?: (value: string | null) => void;\n}\n\ninterface AccordionMultipleProps extends CommonDivProps {\n type: \"multiple\";\n value?: string[];\n defaultValue?: string[];\n onValueChange?: (value: string[]) => void;\n}\n\nexport type AccordionProps = AccordionSingleProps | AccordionMultipleProps;\n\nexport function Accordion(props: AccordionProps): ReactElement {\n const { type, children, value, defaultValue, onValueChange, className, ...rest } = props;\n const isControlled = value !== undefined;\n\n const [internalValues, setInternalValues] = useState<string[]>(() => {\n if (type === \"single\") {\n return props.defaultValue ? [props.defaultValue] : [];\n }\n return props.defaultValue ?? [];\n });\n\n const currentValues: string[] = isControlled\n ? type === \"single\"\n ? props.value\n ? [props.value]\n : []\n : (props.value ?? [])\n : internalValues;\n\n const toggle = (itemValue: string) => {\n const next =\n type === \"single\"\n ? currentValues.includes(itemValue)\n ? []\n : [itemValue]\n : currentValues.includes(itemValue)\n ? currentValues.filter((v) => v !== itemValue)\n : [...currentValues, itemValue];\n\n if (!isControlled) {\n setInternalValues(next);\n }\n\n if (type === \"single\") {\n props.onValueChange?.(next[0] ?? null);\n } else {\n props.onValueChange?.(next);\n }\n };\n\n const isOpen = (itemValue: string) => currentValues.includes(itemValue);\n\n return (\n <div className={[root, className].filter(Boolean).join(\" \")} {...rest}>\n <AccordionContext.Provider value={{ isOpen, toggle }}>{children}</AccordionContext.Provider>\n </div>\n );\n}\n","import 'src/components/Accordion/Accordion.css.ts.vanilla.css?source=#H4sIAAAAAAAAA61VsW7bMBDd_RVciiQDA8txi0BBC7RD0Q7p0A4disKgyZN0DUWq5MmOGvTfC1GULMt2mgCZhDu9e-J7vDtdvpfSOoXWrJy1tFolVZb_lss5e5gxptBXWjQpyzTc38xYeHKFDiShNSmTVtelad-srVPguBMKa5-yjXDnPEZc56vV4q4Ri211McJuUVHRQ8e5Hr0doz01GibokOvRzRgtrbauR4cg1vRoFdB2Ay7TdpuyApUCczP7O7vcWYIE5WBJEiyJ_GtLZMtnSohFz1MSi54k6JHDp1p44rJArU7rmE8oyGGet5-ILIvjXRGrk_n8VRsKjbnh7ed9yiQYAtemf9WeMGu4tIbAUMp8JSTwNdAWIPRQLqpeYffOl726YmRJyow1EGIh73Jna6P2nfG1y4Qc_ExC8REHCe6pB10FUGYN8UyUqJseGlJrq5qBbr6DevwDe8A2casG6HIH3QLmBe2Bu9QtKKwHpcl1KKmEUmjyfT_KgRg7SbXzrabKYu9yK4mHG0iZhoz-d6Np0c5A1xKPu_lVoIfhAItpux0yZ1bWnm_Q41pDbLp77guh2oGLukLEA7Sn3hx0srRm4L0KTGER-cKhuQttyxg5YTy2a4lXzlbgqEm7ZGZdOUGo2olug3XHKO1e-qPwQ18k8mJSTFiiyXlWG3mEA4RHMyy8BIKYH0qQ4LYC8_aMXA1nP9k79rjC4egpc5YEwXlyPVeQT82J4_Tdiaoa2b_cH9XcoQoj5lBxgrLSgoA7u_Upm2fupIGH-Oc5-cW6UujBDfUCXj5B-xG7H06IT1rxx0g_GzOifB0IDn8XjJVoeBFHe7o_I9WHsDwi05vA9KTxjiBOtopNfmKH3da0m8zlyy2yb7ut1K1HjQYGtSNwm_8U0pMLX7dX9g-NzEz2ZQgAAA';\nexport var contentBody = 'Accordion_contentBody__1pfgqc46';\nexport var contentInner = 'Accordion_contentInner__1pfgqc45';\nexport var contentWrapper = 'Accordion_contentWrapper__1pfgqc44';\nexport var icon = 'Accordion_icon__1pfgqc43';\nexport var item = 'Accordion_item__1pfgqc41';\nexport var root = 'Accordion_root__1pfgqc40';\nexport var trigger = 'Accordion_trigger__1pfgqc42';","import { createContext, useContext } from \"react\";\n\nexport interface AccordionContextValue {\n isOpen: (value: string) => boolean;\n toggle: (value: string) => void;\n}\n\nexport const AccordionContext = createContext<AccordionContextValue | null>(null);\n\nexport function useAccordionContext(): AccordionContextValue {\n const context = useContext(AccordionContext);\n if (!context) {\n throw new Error(\"Accordion.Item must be used within an Accordion\");\n }\n return context;\n}\n\nexport const AccordionItemContext = createContext<string | null>(null);\n\nexport function useAccordionItemContext(): string {\n const context = useContext(AccordionItemContext);\n if (context === null) {\n throw new Error(\"Accordion.Trigger and Accordion.Content must be used within an Accordion.Item\");\n }\n return context;\n}\n","import type { HTMLAttributes, ReactElement } from \"react\";\nimport { contentBody, contentInner, contentWrapper } from \"./Accordion.css\";\nimport { useAccordionContext, useAccordionItemContext } from \"./AccordionContext\";\n\nexport type AccordionContentProps = HTMLAttributes<HTMLDivElement>;\n\nexport function AccordionContent({ children, className, ...rest }: AccordionContentProps): ReactElement {\n const { isOpen } = useAccordionContext();\n const value = useAccordionItemContext();\n const open = isOpen(value);\n\n return (\n <div\n id={`accordion-panel-${value}`}\n role=\"region\"\n aria-labelledby={`accordion-trigger-${value}`}\n className={[contentWrapper, className].filter(Boolean).join(\" \")}\n data-open={open}\n {...rest}\n >\n <div className={contentInner}>\n <div className={contentBody}>{children}</div>\n </div>\n </div>\n );\n}\n","import type { ReactElement, ReactNode } from \"react\";\nimport { item } from \"./Accordion.css\";\nimport { AccordionItemContext } from \"./AccordionContext\";\n\nexport interface AccordionItemProps {\n value: string;\n children?: ReactNode;\n}\n\nexport function AccordionItem({ value, children }: AccordionItemProps): ReactElement {\n return (\n <div className={item}>\n <AccordionItemContext.Provider value={value}>{children}</AccordionItemContext.Provider>\n </div>\n );\n}\n","import type { ButtonHTMLAttributes, ReactElement } from \"react\";\nimport { icon, trigger } from \"./Accordion.css\";\nimport { useAccordionContext, useAccordionItemContext } from \"./AccordionContext\";\n\nexport type AccordionTriggerProps = ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport function AccordionTrigger({ children, className, ...rest }: AccordionTriggerProps): ReactElement {\n const { isOpen, toggle } = useAccordionContext();\n const value = useAccordionItemContext();\n const open = isOpen(value);\n\n return (\n <h3 style={{ margin: 0 }}>\n <button\n type=\"button\"\n id={`accordion-trigger-${value}`}\n className={[trigger, className].filter(Boolean).join(\" \")}\n aria-expanded={open}\n aria-controls={`accordion-panel-${value}`}\n data-open={open}\n onClick={() => toggle(value)}\n {...rest}\n >\n {children}\n <span className={icon} aria-hidden=\"true\">\n ▾\n </span>\n </button>\n </h3>\n );\n}\n","import { Accordion as AccordionBase } from \"./Accordion\";\nimport { AccordionContent } from \"./AccordionContent\";\nimport { AccordionItem } from \"./AccordionItem\";\nimport { AccordionTrigger } from \"./AccordionTrigger\";\n\nexport const Accordion = Object.assign(AccordionBase, {\n Item: AccordionItem,\n Trigger: AccordionTrigger,\n Content: AccordionContent\n});\nexport type { AccordionProps } from \"./Accordion\";\nexport { AccordionItem } from \"./AccordionItem\";\nexport type { AccordionItemProps } from \"./AccordionItem\";\nexport { AccordionTrigger } from \"./AccordionTrigger\";\nexport type { AccordionTriggerProps } from \"./AccordionTrigger\";\nexport { AccordionContent } from \"./AccordionContent\";\nexport type { AccordionContentProps } from \"./AccordionContent\";\n","import { useState } from \"react\";\nimport type { HTMLAttributes, ReactElement } from \"react\";\nimport { TabsContext } from \"./TabsContext\";\n\nexport interface TabsProps extends Omit<HTMLAttributes<HTMLDivElement>, \"defaultValue\" | \"onChange\"> {\n defaultValue?: string;\n value?: string;\n onValueChange?: (value: string) => void;\n}\n\nexport function Tabs({\n defaultValue,\n value: controlledValue,\n onValueChange,\n children,\n ...rest\n}: TabsProps): ReactElement {\n const [internalValue, setInternalValue] = useState(defaultValue ?? \"\");\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : internalValue;\n\n const setValue = (next: string) => {\n if (!isControlled) {\n setInternalValue(next);\n }\n onValueChange?.(next);\n };\n\n return (\n <div {...rest}>\n <TabsContext.Provider value={{ value, setValue }}>{children}</TabsContext.Provider>\n </div>\n );\n}\n","import { createContext, useContext } from \"react\";\n\nexport interface TabsContextValue {\n value: string;\n setValue: (value: string) => void;\n}\n\nexport const TabsContext = createContext<TabsContextValue | null>(null);\n\nexport function useTabsContext(): TabsContextValue {\n const context = useContext(TabsContext);\n if (!context) {\n throw new Error(\"Tabs.List, Tabs.Trigger, and Tabs.Panel must be used within a Tabs component\");\n }\n return context;\n}\n","import 'src/components/Tabs/Tabs.css.ts.vanilla.css?source=#H4sIAAAAAAAAA7VUwY6bMBC95yt8y-bgVZKtqspRP2FP21tVoQEPYMXYrj1AaLX_XmFiEqI0UrXqjZl5bzxv_MzzN8hDplWgLNsdu7wtfm7Z7xVjUgWnYRCs1Hg6rBirwAnWgX_iPDgokJ9Clu2PA-z7ajMCcuslep5bItvwXkmqE-FcirlE6u-QAg0ab0gxl0jDHVJhtfWJFIMzNZHk5rB6Xz1HpeRVVY2ls9hdFOtsUKSsEcyjBlIdXo4RzFgzxVAcK29bIwUjDyY48GhoLN2ZgfBEry2hTGN8irOX1hAvoVF6SPiYyq0cEnK3vUCD-oUL4Jh4a2boywXao6pqWoCn1CtK1V4oXyLFgZTKVMs7DTOq3iwKzSxDRXbR-jAqdlYZQv9gwaK2Hfq45r9sKXV-eXRPorRFG3ingso1xna5PfFQg7T9LCJGPEJT1-7aMh6kakOCT9GVaPNogu_gFfCAGgtC-XVNvsX1jw8Lu99WCChpXpshNCTYen1YmBXyYHVL0ZwaSxJsO376yQbbSff4RgTjOxdfcX32yH4Kry19Pb3zqgE_G_LzlQAHBvU8_n56P5OXONmbf8Stbf6P-_9h_TfTf8hV738A4dyWLD0FAAA';\nexport var list = 'Tabs_list__1kvbucq0';\nexport var panel = 'Tabs_panel__1kvbucq2';\nexport var trigger = 'Tabs_trigger__1kvbucq1';","import type { HTMLAttributes, KeyboardEvent, ReactElement } from \"react\";\nimport { list } from \"./Tabs.css\";\n\nexport type TabsListProps = HTMLAttributes<HTMLDivElement>;\n\nexport function TabsList({ children, className, onKeyDown, ...rest }: TabsListProps): ReactElement {\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented) {\n return;\n }\n\n const tabs = Array.from(event.currentTarget.querySelectorAll<HTMLElement>('[role=\"tab\"]'));\n if (tabs.length === 0) {\n return;\n }\n\n const currentIndex = tabs.indexOf(document.activeElement as HTMLElement);\n\n let nextIndex: number | null = null;\n if (event.key === \"ArrowRight\" || event.key === \"ArrowDown\") {\n nextIndex = currentIndex < 0 ? 0 : (currentIndex + 1) % tabs.length;\n } else if (event.key === \"ArrowLeft\" || event.key === \"ArrowUp\") {\n nextIndex = currentIndex < 0 ? tabs.length - 1 : (currentIndex - 1 + tabs.length) % tabs.length;\n } else if (event.key === \"Home\") {\n nextIndex = 0;\n } else if (event.key === \"End\") {\n nextIndex = tabs.length - 1;\n }\n\n if (nextIndex !== null) {\n event.preventDefault();\n tabs[nextIndex]?.focus();\n tabs[nextIndex]?.click();\n }\n };\n\n return (\n <div role=\"tablist\" className={[list, className].filter(Boolean).join(\" \")} onKeyDown={handleKeyDown} {...rest}>\n {children}\n </div>\n );\n}\n","import type { HTMLAttributes, ReactElement } from \"react\";\nimport { panel } from \"./Tabs.css\";\nimport { useTabsContext } from \"./TabsContext\";\n\nexport interface TabsPanelProps extends HTMLAttributes<HTMLDivElement> {\n value: string;\n}\n\nexport function TabsPanel({ value, children, className, ...rest }: TabsPanelProps): ReactElement | null {\n const { value: selected } = useTabsContext();\n if (selected !== value) {\n return null;\n }\n\n return (\n <div\n role=\"tabpanel\"\n id={`panel-${value}`}\n aria-labelledby={`tab-${value}`}\n tabIndex={0}\n className={[panel, className].filter(Boolean).join(\" \")}\n {...rest}\n >\n {children}\n </div>\n );\n}\n","import type { ButtonHTMLAttributes, ReactElement } from \"react\";\nimport { trigger } from \"./Tabs.css\";\nimport { useTabsContext } from \"./TabsContext\";\n\nexport interface TabsTriggerProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n value: string;\n}\n\nexport function TabsTrigger({ value, children, className, onClick, ...rest }: TabsTriggerProps): ReactElement {\n const { value: selected, setValue } = useTabsContext();\n const isSelected = selected === value;\n\n return (\n <button\n type=\"button\"\n role=\"tab\"\n id={`tab-${value}`}\n aria-selected={isSelected}\n aria-controls={`panel-${value}`}\n tabIndex={isSelected ? 0 : -1}\n className={[trigger, className].filter(Boolean).join(\" \")}\n onClick={(event) => {\n setValue(value);\n onClick?.(event);\n }}\n {...rest}\n >\n {children}\n </button>\n );\n}\n","import { Tabs as TabsBase } from \"./Tabs\";\nimport { TabsList } from \"./TabsList\";\nimport { TabsPanel } from \"./TabsPanel\";\nimport { TabsTrigger } from \"./TabsTrigger\";\n\nexport const Tabs = Object.assign(TabsBase, {\n List: TabsList,\n Trigger: TabsTrigger,\n Panel: TabsPanel\n});\nexport type { TabsProps } from \"./Tabs\";\nexport { TabsList } from \"./TabsList\";\nexport type { TabsListProps } from \"./TabsList\";\nexport { TabsTrigger } from \"./TabsTrigger\";\nexport type { TabsTriggerProps } from \"./TabsTrigger\";\nexport { TabsPanel } from \"./TabsPanel\";\nexport type { TabsPanelProps } from \"./TabsPanel\";\n","import { forwardRef } from \"react\";\nimport type { HTMLAttributes, ReactElement } from \"react\";\nimport { badge, variant } from \"./Badge.css\";\n\nexport type BadgeVariant = keyof typeof variant;\n\nexport interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {\n variant?: BadgeVariant;\n}\n\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(function Badge(\n { variant: variantProp = \"default\", className, ...rest },\n ref\n): ReactElement {\n const classes = [badge, variant[variantProp], className].filter(Boolean).join(\" \");\n\n return <span ref={ref} className={classes} {...rest} />;\n});\n","import 'src/components/Badge/Badge.css.ts.vanilla.css?source=#H4sIAAAAAAAAA6WRPW_DIBCGd_8KxnYgit0Pte7WqUu3Dt2sszkTFAwUcByn6n-vjGOSKGmiKguSXz93z8HNXoFxLMpwFmlj0lRv5uQ7IYQJZyT0ORFKCoW0lrh-SQgBKbiiwmPjclKh8miHmIPJyQrsDaXOQIV07YoiW_aQdfx2AEptGVpqgYnWTej4RetWyon-CrQBxoTi1GuTk8ys97NSe6-bo1hi7Q9HcM3UdHHQ1Aq-uIDWWnlaQyNkP4EhKjXrJzKd71AnNngADsFnfII026Ed7uv3ondkoo1zpE-hJLz94rhkyN9C_DEcsQpCVbcQHser5UTpzoJ5SX6S2bjuFVgByhcMa2ilj4tPw-JLqJbc6laxSVhpqS11ra2hwmgKovDrkPO4juPc3Z7QGisasH3UZme1kR47Pv6l3XIfe_bnU3bXVhU6F-13Fy69pceOcK29A6uE4tF-f9Ye6bFjea2dgeJoo_zhrHyCx37Vf92_f1gANVsEAAA';\nexport var badge = 'Badge_badge__1mp11oz0';\nexport var variant = {'default':'Badge_variant_default__1mp11oz1',primary:'Badge_variant_primary__1mp11oz2',success:'Badge_variant_success__1mp11oz3',warning:'Badge_variant_warning__1mp11oz4',danger:'Badge_variant_danger__1mp11oz5'};","import { forwardRef, useState } from \"react\";\nimport type { HTMLAttributes, ReactElement } from \"react\";\nimport { avatar, image, size, statusColor, statusDot, wrapper } from \"./Avatar.css\";\n\nexport type AvatarSize = keyof typeof size;\nexport type AvatarStatus = keyof typeof statusColor;\n\nexport interface AvatarProps extends HTMLAttributes<HTMLDivElement> {\n src?: string;\n name?: string;\n size?: AvatarSize;\n status?: AvatarStatus;\n}\n\nfunction getInitials(name: string): string {\n const parts = name.trim().split(/\\s+/);\n const first = parts[0]?.[0] ?? \"\";\n const last = parts.length > 1 ? (parts[parts.length - 1]?.[0] ?? \"\") : \"\";\n return (first + last).toUpperCase();\n}\n\nexport const Avatar = forwardRef<HTMLDivElement, AvatarProps>(function Avatar(\n { src, name, size: sizeProp = \"md\", status, className, ...rest },\n ref\n): ReactElement {\n const [imageFailed, setImageFailed] = useState(false);\n const showImage = src && !imageFailed;\n\n return (\n <div ref={ref} className={[wrapper, className].filter(Boolean).join(\" \")} {...rest}>\n <div className={[avatar, size[sizeProp]].join(\" \")}>\n {showImage ? (\n <img\n src={src}\n alt={name ?? \"\"}\n className={image}\n onError={() => setImageFailed(true)}\n />\n ) : name ? (\n <span aria-hidden=\"true\">{getInitials(name)}</span>\n ) : null}\n </div>\n {status ? (\n <span\n className={[statusDot, statusColor[status]].join(\" \")}\n role=\"status\"\n aria-label={status}\n />\n ) : null}\n </div>\n );\n});\n","import 'src/components/Avatar/Avatar.css.ts.vanilla.css?source=#H4sIAAAAAAAAA5VUwXKbMBC9-yt06UxzIIOJnbrk1GmvvjSX3pgFLVixkKi0GJNO_r2DQBic4JmcxK7evre77Or-xwkITNIYqCo0SVJE29ciDdm_FWOVtoKEVjEzKIHECZ9WjHFhKwltzISSQmGQSzx3_u4M7MEIdYxZ-LR6W90P5NAfA_facY8sPhykKFQgCEsbswwVoencL7UlkbdBphWhoulVqg1HExjgorYxO4H5GgxWkNdSJkl0bCFq_t45NGTHwuhacQ_NtNQmsLXJIUMPXjuwu5rjCM-0rwm5R24cMteKghxKIVuPd65U83bkDC_QBkVxoBm0d-2Ri7ocQ3YuRJ_Q5FI3MTsIzlF1vtqiCSxKzChmSiucttqKV0xs6XsduV43gtMhZtGucp0-DCl42yXRBc6y6hx_7JhPdPdOpuRe5mEqswnnMt5elnm-lP3wXkYWXmYzldk-zmW8vSyzH3_dejOTESUU6EW2U5F1GH6Zinhbpy-YUZCLbiC7nzTLmoBq-0uTp3y82iZIrZY1YT_ERLp0C8OY6VXc95jBvExvf3L4e_TA2YOnvmcyWhU-5jyNsdRKvIpxPo9up-gPFmdYsN8g7GV5rsbJdexnB0-0e1V867651i3vbpahHYcUFkmhgdZT7m5SNmCUuLQiXaRMaztSfr9JyUEV3dPaM2bLlef5tHS4Sfrhc_T2H4ay2bbPBQAA';\nexport var avatar = 'Avatar_avatar__g25zgb1';\nexport var image = 'Avatar_image__g25zgb5';\nexport var size = {sm:'Avatar_size_sm__g25zgb2',md:'Avatar_size_md__g25zgb3',lg:'Avatar_size_lg__g25zgb4'};\nexport var statusColor = {online:'Avatar_statusColor_online__g25zgb7',away:'Avatar_statusColor_away__g25zgb8',busy:'Avatar_statusColor_busy__g25zgb9',offline:'Avatar_statusColor_offline__g25zgba'};\nexport var statusDot = 'Avatar_statusDot__g25zgb6';\nexport var wrapper = 'Avatar_wrapper__g25zgb0';","import 'src/components/Progress/Progress.css.ts.vanilla.css?source=#H4sIAAAAAAAAA7WTTY_TMBCG7_0Vvqy0PXiVhLJC2QsnbiAkLnurJvE4HeKPYE_aBrT_HcVpUlKtEBJwssd-Z_z6Gft9i4MOYDGKz8E3AWPck1PIGCw5YPxiSOF-nz9m3a7FQvzYCJHdpUEIDuCi9sGW09QA4_O9zLPsbvu0EeJlI8QY_FZevF3UL5uHxQUHqNvl4CyV6HwkJu9KEdAA0xHHvBMpPpTpoDE8IDUHLsW77jyGlQ8KgwygqI-lOEK4l5dI6t6Y_b5oByhO35KHCuq2Cb53apbW3vggYx801DiL8yT2Rwza-FMpDqQUuqfVBTSNxS_-8-R_tjZb_TfeukAWwjCLH5M4AU6wZBd8h4GHciJ1s6v6ABPTqab1q-VPPlhYjOTqtjiTJddI3bv6lSoIkVyzZON2jWj10j78yuvNTb-hit70nPrNvitFNs4Mar5Mb9FeHsXuv4MGRzaRkg4sln_2jdaJ1xbkD0Vc7xHjtClr3zsuBTlNjiYSV9lftcFAhVf0u4ReUewMDKXQBtM_-tpHJj3I2jvG0UjsoEZZIZ9wfPpCaO9YarBkhvn8tFR5tTDLs-0ijfQdV8Jx4Tku0iJJE_p1HxjP_LFnVLN0l5QWQkNOVp7Z2zljcnleqjbj3X8Cvu6LRPYEAAA';\nexport var fill = 'Progress_fill__160p4ke1';\nexport var indeterminateFill = 'Progress_indeterminateFill__160p4ke3';\nexport var label = 'Progress_label__160p4ke4';\nexport var track = 'Progress_track__160p4ke0';","import type { HTMLAttributes, ReactElement } from \"react\";\nimport { fill, indeterminateFill, label, track } from \"./Progress.css\";\n\nexport interface ProgressProps extends HTMLAttributes<HTMLDivElement> {\n value?: number;\n max?: number;\n label?: string;\n}\n\nexport function Progress({ value, max = 100, label: labelText, className, ...rest }: ProgressProps): ReactElement {\n const isIndeterminate = value === undefined;\n const percentage = isIndeterminate ? undefined : Math.min(100, Math.max(0, (value / max) * 100));\n\n return (\n <div className={className} {...rest}>\n {labelText || !isIndeterminate ? (\n <div className={label}>\n <span>{labelText}</span>\n {!isIndeterminate ? <span>{Math.round(percentage!)}%</span> : null}\n </div>\n ) : null}\n <div\n className={track}\n role=\"progressbar\"\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuenow={isIndeterminate ? undefined : value}\n aria-label={labelText}\n >\n {isIndeterminate ? (\n <div className={indeterminateFill} />\n ) : (\n <div className={fill} style={{ width: `${percentage}%` }} />\n )}\n </div>\n </div>\n );\n}\n","import 'src/components/Spinner/Spinner.css.ts.vanilla.css?source=QGtleWZyYW1lcyBTcGlubmVyX3NwaW5fXzFoczV1amkwIHsKICAwJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsKICB9CiAgMTAwJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogIH0KfQouU3Bpbm5lcl9zcGlubmVyX18xaHM1dWppMSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1mdWxsX18ya3lhMndxKTsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItYm9yZGVyX18ya3lhMndkKTsKICBib3JkZXItdG9wLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5X18ya3lhMnc2KTsKICBhbmltYXRpb24tbmFtZTogU3Bpbm5lcl9zcGluX18xaHM1dWppMDsKICBhbmltYXRpb24tZHVyYXRpb246IDAuN3M7CiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7CiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyOwp9Ci5TcGlubmVyX3NpemVfc21fXzFoczV1amkyIHsKICB3aWR0aDogMTZweDsKICBoZWlnaHQ6IDE2cHg7CiAgYm9yZGVyLXdpZHRoOiAycHg7Cn0KLlNwaW5uZXJfc2l6ZV9tZF9fMWhzNXVqaTMgewogIHdpZHRoOiAyNHB4OwogIGhlaWdodDogMjRweDsKICBib3JkZXItd2lkdGg6IDNweDsKfQouU3Bpbm5lcl9zaXplX2xnX18xaHM1dWppNCB7CiAgd2lkdGg6IDM2cHg7CiAgaGVpZ2h0OiAzNnB4OwogIGJvcmRlci13aWR0aDogNHB4Owp9Ci5TcGlubmVyX3NyT25seV9fMWhzNXVqaTUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB3aWR0aDogMXB4OwogIGhlaWdodDogMXB4OwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luOiAtMXB4OwogIG92ZXJmbG93OiBoaWRkZW47CiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIGJvcmRlcjogMDsKfQ';\nexport var size = {sm:'Spinner_size_sm__1hs5uji2',md:'Spinner_size_md__1hs5uji3',lg:'Spinner_size_lg__1hs5uji4'};\nexport var spinner = 'Spinner_spinner__1hs5uji1';\nexport var srOnly = 'Spinner_srOnly__1hs5uji5';","import type { HTMLAttributes, ReactElement } from \"react\";\nimport { size, spinner, srOnly } from \"./Spinner.css\";\n\nexport type SpinnerSize = keyof typeof size;\n\nexport interface SpinnerProps extends HTMLAttributes<HTMLDivElement> {\n size?: SpinnerSize;\n label?: string;\n}\n\nexport function Spinner({\n size: sizeProp = \"md\",\n label = \"Loading\",\n className,\n ...rest\n}: SpinnerProps): ReactElement {\n return (\n <div\n role=\"status\"\n aria-label={label}\n className={[spinner, size[sizeProp], className].filter(Boolean).join(\" \")}\n {...rest}\n >\n <span className={srOnly}>{label}</span>\n </div>\n );\n}\n","import 'src/components/Alert/Alert.css.ts.vanilla.css?source=#H4sIAAAAAAAAA5WUwY7bIBCG73kKH9sDqzjZtqv01N730n2AiMDYHi0GF8Zx3KrvXoENwZF3m14iMfnmh_zzTx6-KbB05OHzWNJ-hJ9qW_zeFIVE1yk-HopKweXrpii4wlozJGjdVGSOuCX_Vc27Q3Hm9gNjruMCmGuPx93ryHdD89EDJ2MlWGa5xN5FdDqxVkbW5OyAkpqI5rVIDzntaFRwQ4dapMecFkYZG-lwmHsiLXNaQUVvP-eFrNF1bLxMjVy81tb0Wi4vcb2tuEhvKgPccSlR10sDr6ZggCqjiVW8RTVGMJRORo5JbntFHf6CBegLL2kq5T6gKz4QXChSHvqzeZgzIgRoOqKuTEpKGZKS27SiWBnRux949ahakXW9EOBcUt7do5yaJl2-ojtwq8PVs-7-Ht3UNOmeVnQl17WPyyz7eI9s7JlURa46jXEW-xTE_IYditKPqUUd87fNmgjJ53vu-jx1-VkPgHVDi_FPpWeQ2F9D8BRC0HJbo15KS3DCYkdodLrgS7jgjcg89wQpso-3uvHAyNz8UVzS9OrcD6GMg-89UXb_U-bxodBGw-2qkeXaddyCpnfSvfJU0Vvn0c6gJrD_uUUKNbBm9rxcrPT2X7_p0Jgz2PecXV3Gda2waeyMDk8KZrcuzDVcmiHZHk7TUkbps5f-Cx9CKI4LBgAA';\nexport var accent = {info:'Alert_accent_info__1t3yeql1',success:'Alert_accent_success__1t3yeql2',warning:'Alert_accent_warning__1t3yeql3',danger:'Alert_accent_danger__1t3yeql4'};\nexport var alert = 'Alert_alert__1t3yeql0';\nexport var body = 'Alert_body__1t3yeql5';\nexport var closeButton = 'Alert_closeButton__1t3yeql8';\nexport var description = 'Alert_description__1t3yeql7';\nexport var title = 'Alert_title__1t3yeql6';","import type { HTMLAttributes, ReactElement, ReactNode } from \"react\";\nimport { accent, alert, body, closeButton, description, title } from \"./Alert.css\";\n\nexport type AlertVariant = keyof typeof accent;\n\nexport interface AlertProps extends Omit<HTMLAttributes<HTMLDivElement>, \"title\"> {\n variant?: AlertVariant;\n title?: ReactNode;\n onDismiss?: () => void;\n}\n\nexport function Alert({\n variant = \"info\",\n title: titleText,\n onDismiss,\n children,\n className,\n ...rest\n}: AlertProps): ReactElement {\n return (\n <div\n role=\"alert\"\n className={[alert, accent[variant], className].filter(Boolean).join(\" \")}\n {...rest}\n >\n <div className={body}>\n {titleText ? <p className={title}>{titleText}</p> : null}\n {children ? <p className={description}>{children}</p> : null}\n </div>\n {onDismiss ? (\n <button type=\"button\" className={closeButton} aria-label=\"Dismiss\" onClick={onDismiss}>\n ✕\n </button>\n ) : null}\n </div>\n );\n}\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type {\n CSSProperties,\n ForwardedRef,\n InputHTMLAttributes,\n MouseEvent as ReactMouseEvent,\n PointerEvent as ReactPointerEvent,\n ReactElement,\n ReactNode,\n} from \"react\";\nimport { Button } from \"../Button\";\nimport { Pagination } from \"../Pagination\";\nimport { Spinner } from \"../Spinner\";\nimport {\n actionsCell as actionsCellClass,\n body as bodyClass,\n cell as cellClass,\n checkboxCell as checkboxCellClass,\n container as containerClass,\n editInput,\n emptyState as emptyStateClass,\n filterCell,\n filterInput,\n filterRow,\n gridWrapper,\n groupAggregateItem,\n groupAggregates,\n groupChevron,\n groupCount,\n groupLabel,\n groupRow,\n headerButton,\n headerCell,\n headerRow,\n iconButton,\n loadingOverlay,\n paginationFooter,\n pinnedCell,\n pinnedHeaderCell,\n pinnedLeftEdge,\n pinnedRightEdge,\n resizeHandle,\n row as rowClass,\n sortIcon,\n srOnly,\n toolbar as toolbarClass,\n} from \"./DataGrid.css\";\nimport type {\n DataGridColumn,\n FilterState,\n SortDirection,\n SortState,\n} from \"./types\";\n\nconst DEFAULT_COLUMN_WIDTH = 160;\nconst CHECKBOX_COLUMN_WIDTH = 44;\nconst ACTIONS_COLUMN_WIDTH = 72;\nconst FILTER_DEBOUNCE_MS = 200;\n\nfunction useDebouncedValue<V>(value: V, delay: number): V {\n const [debounced, setDebounced] = useState(value);\n useEffect(() => {\n const timer = setTimeout(() => setDebounced(value), delay);\n return () => clearTimeout(timer);\n }, [value, delay]);\n return debounced;\n}\n\ninterface FilterTextInputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, \"value\" | \"onChange\"> {\n value: string;\n onChange: (value: string) => void;\n}\n\nfunction FilterTextInput({\n value,\n onChange,\n ...rest\n}: FilterTextInputProps): ReactElement {\n const [draft, setDraft] = useState(value);\n const debounced = useDebouncedValue(draft, FILTER_DEBOUNCE_MS);\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n const mounted = useRef(false);\n\n useEffect(() => {\n if (!mounted.current) {\n mounted.current = true;\n return;\n }\n onChangeRef.current(debounced);\n }, [debounced]);\n\n useEffect(() => {\n setDraft(value);\n }, [value]);\n\n return (\n <input\n type=\"text\"\n value={draft}\n onChange={(e) => setDraft(e.target.value)}\n {...rest}\n />\n );\n}\n\nexport interface DataGridProps<T> {\n columns: DataGridColumn<T>[];\n data: T[];\n getRowId: (row: T) => string;\n rowHeight?: number;\n height?: number;\n overscan?: number;\n selectable?: boolean;\n selectedIds?: Set<string>;\n onSelectionChange?: (ids: Set<string>) => void;\n sort?: SortState | null;\n onSortChange?: (sort: SortState | null) => void;\n filters?: FilterState[];\n onFilterChange?: (filters: FilterState[]) => void;\n emptyMessage?: ReactNode;\n /** Enables inline row editing; called when a row's edit is saved. */\n onRowEdit?: (rowId: string, values: Record<string, string>) => void;\n /** When true, `data` is treated as already sorted/filtered/paginated by the caller. */\n serverSide?: boolean;\n /** Shows a loading overlay over the grid without unmounting existing rows. */\n loading?: boolean;\n /** True total row count on the server, used for pagination controls. */\n totalRowCount?: number;\n page?: number;\n pageSize?: number;\n onPageChange?: (page: number) => void;\n /** Renders an \"Export\" button in the grid's toolbar that exports the current view to Excel. */\n enableExport?: boolean;\n /** Groups rows by this column key (single-level). undefined = no grouping. */\n groupBy?: string;\n defaultGroupBy?: string;\n onGroupByChange?: (key: string | undefined) => void;\n /** Which group keys are expanded. Default: all expanded. */\n expandedGroups?: Set<string>;\n defaultExpandedGroups?: Set<string>;\n onExpandedGroupsChange?: (expanded: Set<string>) => void;\n /** Height of a group header row; defaults to rowHeight. */\n groupRowHeight?: number;\n onRowClick?: (row: T, event: ReactMouseEvent<HTMLDivElement>) => void;\n onRowDoubleClick?: (row: T, event: ReactMouseEvent<HTMLDivElement>) => void;\n onCellClick?: (\n row: T,\n column: DataGridColumn<T>,\n event: ReactMouseEvent<HTMLDivElement>,\n ) => void;\n}\n\nexport interface DataGridExportOptions {\n filename?: string;\n sheetName?: string;\n}\n\nexport interface DataGridHandle<T> {\n exportToExcel: (options?: DataGridExportOptions) => Promise<void>;\n}\n\nfunction getExportValue<T>(column: DataGridColumn<T>, row: T): string | number {\n if (column.exportValue) {\n return column.exportValue(row);\n }\n if (column.accessor) {\n return column.accessor(row);\n }\n return (row as Record<string, unknown>)[column.key] as string | number;\n}\n\nfunction getExportHeader<T>(column: DataGridColumn<T>): string {\n return typeof column.header === \"string\" ? column.header : column.key;\n}\n\nfunction compareValues(a: string | number, b: string | number): number {\n if (typeof a === \"number\" && typeof b === \"number\") {\n return a - b;\n }\n return String(a).localeCompare(String(b));\n}\n\nfunction getCellValue<T>(column: DataGridColumn<T>, row: T): string | number {\n if (column.accessor) {\n return column.accessor(row);\n }\n return (row as Record<string, unknown>)[column.key] as string | number;\n}\n\nfunction getGroupValue<T>(\n row: T,\n groupBy: string,\n column: DataGridColumn<T> | undefined\n): string {\n if (column) {\n return String(getCellValue(column, row) ?? \"\");\n }\n return String((row as Record<string, unknown>)[groupBy] ?? \"\");\n}\n\nfunction formatAggregateNumber(value: number): string | number {\n return Number.isInteger(value) ? value : value.toFixed(2);\n}\n\nfunction computeAggregate<T>(\n column: DataGridColumn<T>,\n rows: T[]\n): ReactNode {\n const { aggregate } = column;\n if (!aggregate) return null;\n if (typeof aggregate === \"function\") {\n return aggregate(rows);\n }\n if (aggregate === \"count\") {\n return rows.length;\n }\n const values = rows.map((r) => Number(getCellValue(column, r)) || 0);\n switch (aggregate) {\n case \"sum\":\n return formatAggregateNumber(values.reduce((a, b) => a + b, 0));\n case \"avg\":\n return formatAggregateNumber(\n values.length ? values.reduce((a, b) => a + b, 0) / values.length : 0\n );\n case \"min\":\n return formatAggregateNumber(values.length ? Math.min(...values) : 0);\n case \"max\":\n return formatAggregateNumber(values.length ? Math.max(...values) : 0);\n default:\n return null;\n }\n}\n\ninterface GroupFlatEntry<T> {\n type: \"group\";\n key: string;\n rows: T[];\n collapsed: boolean;\n}\n\ninterface DataFlatEntry<T> {\n type: \"data\";\n row: T;\n}\n\ntype FlatEntry<T> = GroupFlatEntry<T> | DataFlatEntry<T>;\n\nfunction DataGridInner<T>(\n {\n columns,\n data,\n getRowId,\n rowHeight = 40,\n height = 400,\n overscan = 5,\n selectable = false,\n selectedIds: controlledSelectedIds,\n onSelectionChange,\n sort: controlledSort,\n onSortChange,\n filters: controlledFilters,\n onFilterChange,\n emptyMessage = \"No data\",\n onRowEdit,\n serverSide = false,\n loading = false,\n totalRowCount,\n page,\n pageSize,\n onPageChange,\n enableExport = false,\n groupBy: controlledGroupBy,\n defaultGroupBy,\n onGroupByChange,\n expandedGroups: controlledExpandedGroups,\n defaultExpandedGroups,\n onExpandedGroupsChange,\n groupRowHeight,\n onRowClick,\n onRowDoubleClick,\n onCellClick,\n }: DataGridProps<T>,\n ref: ForwardedRef<DataGridHandle<T>>\n): ReactElement {\n const [uncontrolledSort, setUncontrolledSort] = useState<SortState | null>(\n null\n );\n const [uncontrolledFilters, setUncontrolledFilters] = useState<FilterState[]>(\n []\n );\n const [uncontrolledSelectedIds, setUncontrolledSelectedIds] = useState<\n Set<string>\n >(() => new Set());\n const [columnWidths, setColumnWidths] = useState<Record<string, number>>(() =>\n Object.fromEntries(\n columns.map((c) => [c.key, c.width ?? DEFAULT_COLUMN_WIDTH])\n )\n );\n const [scrollTop, setScrollTop] = useState(0);\n const [editingRowId, setEditingRowId] = useState<string | null>(null);\n const [editDraft, setEditDraft] = useState<Record<string, string>>({});\n const [uncontrolledGroupBy, setUncontrolledGroupBy] = useState<\n string | undefined\n >(defaultGroupBy);\n const [uncontrolledExpandedGroups, setUncontrolledExpandedGroups] =\n useState<Set<string> | undefined>(defaultExpandedGroups);\n\n const editingEnabled = Boolean(onRowEdit);\n\n const sort = controlledSort !== undefined ? controlledSort : uncontrolledSort;\n const filters =\n controlledFilters !== undefined ? controlledFilters : uncontrolledFilters;\n const selectedIds = controlledSelectedIds ?? uncontrolledSelectedIds;\n const groupBy =\n controlledGroupBy !== undefined ? controlledGroupBy : uncontrolledGroupBy;\n // undefined means \"all groups expanded\" until the user (or caller) toggles one.\n const expandedGroups =\n controlledExpandedGroups !== undefined\n ? controlledExpandedGroups\n : uncontrolledExpandedGroups;\n\n const setExpandedGroups = (next: Set<string>) => {\n if (controlledExpandedGroups === undefined) {\n setUncontrolledExpandedGroups(next);\n }\n onExpandedGroupsChange?.(next);\n };\n\n const isGroupExpanded = (key: string): boolean =>\n expandedGroups === undefined ? true : expandedGroups.has(key);\n\n const toggleGroupExpanded = (key: string, allGroupKeys: string[]) => {\n const current = expandedGroups ?? new Set(allGroupKeys);\n const next = new Set(current);\n if (next.has(key)) {\n next.delete(key);\n } else {\n next.add(key);\n }\n setExpandedGroups(next);\n };\n\n const setSort = (next: SortState | null) => {\n if (controlledSort === undefined) {\n setUncontrolledSort(next);\n }\n onSortChange?.(next);\n };\n\n const setFilters = (next: FilterState[]) => {\n if (controlledFilters === undefined) {\n setUncontrolledFilters(next);\n }\n onFilterChange?.(next);\n };\n\n const handleFilterChange = (key: string, value: string) => {\n const next = value\n ? [...filters.filter((f) => f.key !== key), { key, value }]\n : filters.filter((f) => f.key !== key);\n setFilters(next);\n };\n\n const getFilterValue = (key: string): string =>\n filters.find((f) => f.key === key)?.value ?? \"\";\n\n const setSelectedIds = (next: Set<string>) => {\n if (controlledSelectedIds === undefined) {\n setUncontrolledSelectedIds(next);\n }\n onSelectionChange?.(next);\n };\n\n const handleSortClick = (column: DataGridColumn<T>) => {\n if (!column.sortable) return;\n if (!sort || sort.key !== column.key) {\n setSort({ key: column.key, direction: \"asc\" });\n } else if (sort.direction === \"asc\") {\n setSort({ key: column.key, direction: \"desc\" });\n } else {\n setSort(null);\n }\n };\n\n const filteredData = useMemo(() => {\n if (serverSide || filters.length === 0) {\n return data;\n }\n return data.filter((row) =>\n filters.every((f) => {\n if (!f.value) return true;\n const column = columns.find((c) => c.key === f.key);\n if (!column) return true;\n const cellValue = String(getCellValue(column, row) ?? \"\").toLowerCase();\n return cellValue.includes(f.value.toLowerCase());\n })\n );\n }, [data, filters, columns, serverSide]);\n\n const sortedData = useMemo(() => {\n if (serverSide) {\n return data;\n }\n if (!sort || !sort.direction) {\n return filteredData;\n }\n const column = columns.find((c) => c.key === sort.key);\n if (!column) {\n return filteredData;\n }\n const sorted = [...filteredData].sort((a, b) =>\n compareValues(getCellValue(column, a), getCellValue(column, b))\n );\n return sort.direction === \"desc\" ? sorted.reverse() : sorted;\n }, [filteredData, sort, columns, serverSide, data]);\n\n const groupColumn = useMemo(\n () => (groupBy ? columns.find((c) => c.key === groupBy) : undefined),\n [columns, groupBy]\n );\n\n // Partitions sortedData into groups keyed by the groupBy column's value,\n // preserving each group's existing internal sort order.\n const groupedMap = useMemo(() => {\n if (!groupBy) return null;\n const map = new Map<string, T[]>();\n for (const row of sortedData) {\n const key = getGroupValue(row, groupBy, groupColumn);\n const existing = map.get(key);\n if (existing) {\n existing.push(row);\n } else {\n map.set(key, [row]);\n }\n }\n return map;\n }, [sortedData, groupBy, groupColumn]);\n\n // Flat render array: group-header entries followed by their data rows,\n // omitted entirely when a group is collapsed. This (not sortedData) is\n // what the virtualization windowing below operates on.\n const flatEntries = useMemo<FlatEntry<T>[]>(() => {\n if (!groupedMap) {\n return sortedData.map((row) => ({ type: \"data\", row }) as const);\n }\n const entries: FlatEntry<T>[] = [];\n for (const [key, rows] of groupedMap) {\n const collapsed = !isGroupExpanded(key);\n entries.push({ type: \"group\", key, rows, collapsed });\n if (!collapsed) {\n for (const row of rows) {\n entries.push({ type: \"data\", row });\n }\n }\n }\n return entries;\n }, [groupedMap, expandedGroups, sortedData]);\n\n // Select-all only ever operates on rows the user can currently see —\n // a collapsed group's rows are excluded, since selecting them would be\n // invisible to the user.\n const visibleDataRows = useMemo(\n () =>\n flatEntries\n .filter((e): e is DataFlatEntry<T> => e.type === \"data\")\n .map((e) => e.row),\n [flatEntries]\n );\n\n const exportToExcel = useCallback(\n async (options?: DataGridExportOptions) => {\n const XLSX = await import(\"xlsx\");\n const headerRowValues = columns.map((column) => getExportHeader(column));\n const rows = sortedData.map((row) =>\n columns.map((column) => getExportValue(column, row))\n );\n const worksheet = XLSX.utils.aoa_to_sheet([headerRowValues, ...rows]);\n const workbook = XLSX.utils.book_new();\n XLSX.utils.book_append_sheet(\n workbook,\n worksheet,\n options?.sheetName ?? \"Sheet1\"\n );\n XLSX.writeFile(workbook, options?.filename ?? \"export.xlsx\");\n },\n [columns, sortedData]\n );\n\n useImperativeHandle(ref, () => ({ exportToExcel }), [exportToExcel]);\n\n const selectFilterOptions = useMemo(() => {\n const map: Record<string, string[]> = {};\n for (const column of columns) {\n if (!column.filterable || column.filterType !== \"select\") continue;\n const values = new Set<string>();\n for (const row of data) {\n values.add(String(getCellValue(column, row) ?? \"\"));\n }\n map[column.key] = Array.from(values).sort();\n }\n return map;\n }, [columns, data]);\n\n const hasFilterableColumns = columns.some((c) => c.filterable);\n const showPagination =\n page !== undefined && pageSize !== undefined && onPageChange !== undefined;\n\n const allSelected =\n visibleDataRows.length > 0 &&\n visibleDataRows.every((r) => selectedIds.has(getRowId(r)));\n const someSelected =\n !allSelected && visibleDataRows.some((r) => selectedIds.has(getRowId(r)));\n\n const toggleAll = () => {\n if (allSelected) {\n setSelectedIds(new Set());\n } else {\n setSelectedIds(new Set(visibleDataRows.map(getRowId)));\n }\n };\n\n const toggleRow = (id: string) => {\n const next = new Set(selectedIds);\n if (next.has(id)) {\n next.delete(id);\n } else {\n next.add(id);\n }\n setSelectedIds(next);\n };\n\n const resizeState = useRef<{\n key: string;\n startX: number;\n startWidth: number;\n } | null>(null);\n\n const handleResizeStart = useCallback(\n (event: ReactPointerEvent<HTMLDivElement>, column: DataGridColumn<T>) => {\n if (column.resizable === false) return;\n event.preventDefault();\n event.stopPropagation();\n resizeState.current = {\n key: column.key,\n startX: event.clientX,\n startWidth: columnWidths[column.key] ?? DEFAULT_COLUMN_WIDTH,\n };\n const target = event.currentTarget;\n target.setPointerCapture(event.pointerId);\n },\n [columnWidths]\n );\n\n const handleResizeMove = useCallback(\n (event: ReactPointerEvent<HTMLDivElement>) => {\n const state = resizeState.current;\n if (!state) return;\n const delta = event.clientX - state.startX;\n const minWidth = columns.find((c) => c.key === state.key)?.minWidth ?? 60;\n const nextWidth = Math.max(minWidth, state.startWidth + delta);\n setColumnWidths((prev) => ({ ...prev, [state.key]: nextWidth }));\n },\n [columns]\n );\n\n const handleResizeEnd = useCallback(\n (event: ReactPointerEvent<HTMLDivElement>) => {\n resizeState.current = null;\n event.currentTarget.releasePointerCapture(event.pointerId);\n },\n []\n );\n\n const widthOf = useCallback(\n (column: DataGridColumn<T>) =>\n columnWidths[column.key] ?? column.width ?? DEFAULT_COLUMN_WIDTH,\n [columnWidths]\n );\n\n // --- Column layout: split into left-pinned / scrollable / right-pinned\n // groups (preserving each group's declared relative order), and compute a\n // sticky offset for every pinned column plus the checkbox/actions columns.\n const layout = useMemo(() => {\n const leftPinned = columns.filter((c) => c.pinned === \"left\");\n const rightPinned = columns.filter((c) => c.pinned === \"right\");\n const middle = columns.filter((c) => !c.pinned);\n const ordered = [...leftPinned, ...middle, ...rightPinned];\n\n const leftOffsets = new Map<string, number>();\n let leftAcc = selectable ? CHECKBOX_COLUMN_WIDTH : 0;\n for (const column of leftPinned) {\n leftOffsets.set(column.key, leftAcc);\n leftAcc += widthOf(column);\n }\n\n const rightOffsets = new Map<string, number>();\n let rightAcc = editingEnabled ? ACTIONS_COLUMN_WIDTH : 0;\n for (let i = rightPinned.length - 1; i >= 0; i--) {\n const column = rightPinned[i]!;\n rightOffsets.set(column.key, rightAcc);\n rightAcc += widthOf(column);\n }\n\n return {\n ordered,\n leftOffsets,\n rightOffsets,\n lastLeftKey: leftPinned[leftPinned.length - 1]?.key,\n firstRightKey: rightPinned[0]?.key,\n };\n }, [columns, selectable, editingEnabled, widthOf]);\n\n const pinnedStyle = (\n column: DataGridColumn<T>\n ): CSSProperties | undefined => {\n if (column.pinned === \"left\" && layout.leftOffsets.has(column.key)) {\n return { left: layout.leftOffsets.get(column.key) };\n }\n if (column.pinned === \"right\" && layout.rightOffsets.has(column.key)) {\n return { right: layout.rightOffsets.get(column.key) };\n }\n return undefined;\n };\n\n const pinnedClass = (column: DataGridColumn<T>): string => {\n const classes: string[] = [];\n if (column.pinned) {\n classes.push(pinnedCell);\n if (column.key === layout.lastLeftKey) classes.push(pinnedLeftEdge);\n if (column.key === layout.firstRightKey) classes.push(pinnedRightEdge);\n }\n return classes.join(\" \");\n };\n\n const headerPinnedClass = (column: DataGridColumn<T>): string => {\n const classes: string[] = [];\n if (column.pinned) {\n classes.push(pinnedHeaderCell);\n if (column.key === layout.lastLeftKey) classes.push(pinnedLeftEdge);\n if (column.key === layout.firstRightKey) classes.push(pinnedRightEdge);\n }\n return classes.join(\" \");\n };\n\n const startEditing = (rowData: T) => {\n const id = getRowId(rowData);\n const draft: Record<string, string> = {};\n for (const column of columns) {\n if (column.editable) {\n draft[column.key] = String(getCellValue(column, rowData) ?? \"\");\n }\n }\n setEditDraft(draft);\n setEditingRowId(id);\n };\n\n const cancelEditing = () => {\n setEditingRowId(null);\n setEditDraft({});\n };\n\n const saveEditing = () => {\n if (editingRowId) {\n onRowEdit?.(editingRowId, editDraft);\n }\n setEditingRowId(null);\n setEditDraft({});\n };\n\n const resolvedGroupRowHeight = groupRowHeight ?? rowHeight;\n\n // Offsets for the flat (group-header + data) array, since group headers\n // and data rows can have different heights once grouping is active.\n const rowOffsets: number[] | null = groupedMap\n ? (() => {\n const offsets = new Array<number>(flatEntries.length);\n let acc = 0;\n for (let i = 0; i < flatEntries.length; i++) {\n offsets[i] = acc;\n acc +=\n flatEntries[i]!.type === \"group\"\n ? resolvedGroupRowHeight\n : rowHeight;\n }\n return offsets;\n })()\n : null;\n\n function findIndexAtOffset(offsets: number[], target: number): number {\n let lo = 0;\n let hi = offsets.length - 1;\n let ans = 0;\n while (lo <= hi) {\n const mid = (lo + hi) >> 1;\n if (offsets[mid]! <= target) {\n ans = mid;\n lo = mid + 1;\n } else {\n hi = mid - 1;\n }\n }\n return ans;\n }\n\n let totalHeight: number;\n let startIndex: number;\n let endIndex: number;\n\n if (rowOffsets) {\n totalHeight = rowOffsets.length\n ? rowOffsets[rowOffsets.length - 1]! +\n (flatEntries[flatEntries.length - 1]!.type === \"group\"\n ? resolvedGroupRowHeight\n : rowHeight)\n : 0;\n const rawStart = rowOffsets.length\n ? findIndexAtOffset(rowOffsets, scrollTop)\n : 0;\n startIndex = Math.max(0, rawStart - overscan);\n const rawEnd = rowOffsets.length\n ? findIndexAtOffset(rowOffsets, scrollTop + height) + 1\n : 0;\n endIndex = Math.min(flatEntries.length, rawEnd + overscan);\n } else {\n totalHeight = sortedData.length * rowHeight;\n const visibleCount = Math.ceil(height / rowHeight) + overscan * 2;\n startIndex = Math.max(0, Math.floor(scrollTop / rowHeight) - overscan);\n endIndex = Math.min(flatEntries.length, startIndex + visibleCount);\n }\n\n const visibleEntries = flatEntries.slice(startIndex, endIndex);\n\n const totalWidth =\n (selectable ? CHECKBOX_COLUMN_WIDTH : 0) +\n (editingEnabled ? ACTIONS_COLUMN_WIDTH : 0) +\n columns.reduce((sum, c) => sum + widthOf(c), 0);\n\n return (\n <>\n <div className={gridWrapper}>\n {enableExport ? (\n <div className={toolbarClass}>\n <Button\n type=\"button\"\n variant=\"secondary\"\n onClick={() => {\n void exportToExcel();\n }}\n >\n Export\n </Button>\n </div>\n ) : null}\n <div\n className={containerClass}\n style={{ height }}\n onScroll={(e) => setScrollTop(e.currentTarget.scrollTop)}\n role=\"table\"\n >\n <div\n className={headerRow}\n style={{ width: totalWidth, minWidth: \"100%\" }}\n role=\"row\"\n >\n {selectable ? (\n <div\n className={[checkboxCellClass, pinnedHeaderCell].join(\" \")}\n style={{ left: 0 }}\n role=\"columnheader\"\n >\n <input\n type=\"checkbox\"\n checked={allSelected}\n ref={(el) => {\n if (el) el.indeterminate = someSelected;\n }}\n onChange={toggleAll}\n aria-label=\"Select all rows\"\n />\n </div>\n ) : null}\n {layout.ordered.map((column) => {\n const width = widthOf(column);\n const isSorted = sort?.key === column.key;\n const direction: SortDirection = isSorted\n ? sort!.direction\n : null;\n return (\n <div\n key={column.key}\n className={[headerCell, headerPinnedClass(column)]\n .filter(Boolean)\n .join(\" \")}\n style={{ width, ...pinnedStyle(column) }}\n role=\"columnheader\"\n aria-sort={\n direction === \"asc\"\n ? \"ascending\"\n : direction === \"desc\"\n ? \"descending\"\n : \"none\"\n }\n >\n {column.sortable ? (\n <button\n type=\"button\"\n className={headerButton}\n onClick={() => handleSortClick(column)}\n >\n {column.header}\n <span className={sortIcon} aria-hidden=\"true\">\n {direction === \"asc\"\n ? \"▲\"\n : direction === \"desc\"\n ? \"▼\"\n : \"\"}\n </span>\n </button>\n ) : (\n column.header\n )}\n {column.resizable !== false ? (\n <div\n className={resizeHandle}\n onPointerDown={(e) => handleResizeStart(e, column)}\n onPointerMove={handleResizeMove}\n onPointerUp={handleResizeEnd}\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-label={`Resize ${String(column.header)} column`}\n />\n ) : null}\n </div>\n );\n })}\n {editingEnabled ? (\n <div\n className={[actionsCellClass, pinnedHeaderCell].join(\" \")}\n style={{ right: 0 }}\n role=\"columnheader\"\n >\n <span className={srOnly}>Actions</span>\n </div>\n ) : null}\n </div>\n\n {hasFilterableColumns ? (\n <div\n className={filterRow}\n style={{ width: totalWidth, minWidth: \"100%\" }}\n role=\"row\"\n >\n {selectable ? (\n <div\n className={[checkboxCellClass, pinnedHeaderCell].join(\" \")}\n style={{ left: 0 }}\n role=\"cell\"\n />\n ) : null}\n {layout.ordered.map((column) => {\n const width = widthOf(column);\n return (\n <div\n key={column.key}\n className={[filterCell, headerPinnedClass(column)]\n .filter(Boolean)\n .join(\" \")}\n style={{ width, ...pinnedStyle(column) }}\n role=\"cell\"\n >\n {column.filterable ? (\n column.filterType === \"select\" ? (\n <select\n className={filterInput}\n value={getFilterValue(column.key)}\n onChange={(e) =>\n handleFilterChange(column.key, e.target.value)\n }\n aria-label={`Filter ${String(column.header)}`}\n >\n <option value=\"\">All</option>\n {(selectFilterOptions[column.key] ?? []).map(\n (value) => (\n <option key={value} value={value}>\n {value}\n </option>\n )\n )}\n </select>\n ) : (\n <FilterTextInput\n className={filterInput}\n value={getFilterValue(column.key)}\n onChange={(value) =>\n handleFilterChange(column.key, value)\n }\n placeholder={`Filter ${String(column.header)}`}\n aria-label={`Filter ${String(column.header)}`}\n />\n )\n ) : null}\n </div>\n );\n })}\n {editingEnabled ? (\n <div\n className={[actionsCellClass, pinnedHeaderCell].join(\" \")}\n style={{ right: 0 }}\n role=\"cell\"\n />\n ) : null}\n </div>\n ) : null}\n\n {sortedData.length === 0 ? (\n <div className={emptyStateClass}>{emptyMessage}</div>\n ) : (\n <div\n className={bodyClass}\n style={{\n height: totalHeight,\n width: totalWidth,\n minWidth: \"100%\",\n }}\n >\n {visibleEntries.map((entry, i) => {\n const index = startIndex + i;\n const top = rowOffsets\n ? rowOffsets[index]!\n : index * rowHeight;\n\n if (entry.type === \"group\") {\n const isExpanded = !entry.collapsed;\n const groupLabelText = groupColumn\n ? typeof groupColumn.header === \"string\"\n ? groupColumn.header\n : groupColumn.key\n : groupBy;\n const aggregateColumns = columns.filter((c) => c.aggregate);\n return (\n <div\n key={`group-${entry.key}`}\n className={groupRow}\n style={{\n top,\n height: resolvedGroupRowHeight,\n width: totalWidth,\n }}\n role=\"row\"\n >\n <button\n type=\"button\"\n className={groupChevron}\n data-expanded={isExpanded || undefined}\n onClick={() =>\n toggleGroupExpanded(\n entry.key,\n Array.from(groupedMap!.keys())\n )\n }\n aria-label={\n isExpanded\n ? `Collapse group ${entry.key}`\n : `Expand group ${entry.key}`\n }\n >\n ›\n </button>\n <span className={groupLabel}>\n {groupLabelText}: {entry.key}\n </span>\n <span className={groupCount}>\n {entry.rows.length} row\n {entry.rows.length === 1 ? \"\" : \"s\"}\n </span>\n {aggregateColumns.length > 0 ? (\n <span className={groupAggregates}>\n {aggregateColumns.map((c) => (\n <span key={c.key} className={groupAggregateItem}>\n {typeof c.header === \"string\"\n ? c.header\n : c.key}\n : {computeAggregate(c, entry.rows)}\n </span>\n ))}\n </span>\n ) : null}\n </div>\n );\n }\n\n const rowData = entry.row;\n const id = getRowId(rowData);\n const isSelected = selectedIds.has(id);\n const isEditing = editingRowId === id;\n const style: CSSProperties = {\n top,\n height: rowHeight,\n width: totalWidth,\n };\n\n return (\n <div\n key={id}\n className={rowClass}\n style={style}\n role=\"row\"\n data-selected={isSelected || undefined}\n data-editing={isEditing || undefined}\n onClick={\n onRowClick ? (e) => onRowClick(rowData, e) : undefined\n }\n onDoubleClick={\n onRowDoubleClick\n ? (e) => onRowDoubleClick(rowData, e)\n : undefined\n }\n >\n {selectable ? (\n <div\n className={[checkboxCellClass, pinnedCell].join(\" \")}\n style={{ left: 0 }}\n role=\"cell\"\n onClick={(e) => e.stopPropagation()}\n >\n <input\n type=\"checkbox\"\n checked={isSelected}\n onChange={() => toggleRow(id)}\n aria-label={`Select row ${index + 1}`}\n />\n </div>\n ) : null}\n {layout.ordered.map((column) => (\n <div\n key={column.key}\n className={[cellClass, pinnedClass(column)]\n .filter(Boolean)\n .join(\" \")}\n style={{\n width: widthOf(column),\n ...pinnedStyle(column),\n }}\n role=\"cell\"\n onClick={\n onCellClick\n ? (e) => onCellClick(rowData, column, e)\n : undefined\n }\n >\n {isEditing && column.editable ? (\n <input\n type=\"text\"\n className={editInput}\n value={editDraft[column.key] ?? \"\"}\n onChange={(e) =>\n setEditDraft((prev) => ({\n ...prev,\n [column.key]: e.target.value,\n }))\n }\n onKeyDown={(e) => {\n if (e.key === \"Enter\") saveEditing();\n if (e.key === \"Escape\") cancelEditing();\n }}\n aria-label={`Edit ${String(column.header)}`}\n autoFocus={\n column.key ===\n columns.find((c) => c.editable)?.key\n }\n />\n ) : column.render ? (\n column.render(rowData)\n ) : (\n String(getCellValue(column, rowData) ?? \"\")\n )}\n </div>\n ))}\n {editingEnabled ? (\n <div\n className={[actionsCellClass, pinnedCell].join(\" \")}\n style={{ right: 0 }}\n role=\"cell\"\n onClick={(e) => e.stopPropagation()}\n >\n {isEditing ? (\n <>\n <button\n type=\"button\"\n className={iconButton}\n onClick={saveEditing}\n aria-label={`Save row ${index + 1}`}\n >\n ✓\n </button>\n <button\n type=\"button\"\n className={iconButton}\n onClick={cancelEditing}\n aria-label={`Cancel editing row ${index + 1}`}\n >\n ✕\n </button>\n </>\n ) : (\n <button\n type=\"button\"\n className={iconButton}\n onClick={() => startEditing(rowData)}\n aria-label={`Edit row ${index + 1}`}\n >\n ✎\n </button>\n )}\n </div>\n ) : null}\n </div>\n );\n })}\n </div>\n )}\n </div>\n {loading ? (\n <div className={loadingOverlay}>\n <Spinner size=\"md\" />\n </div>\n ) : null}\n </div>\n {showPagination ? (\n <div className={paginationFooter}>\n <Pagination\n page={page!}\n totalPages={Math.max(\n 1,\n Math.ceil((totalRowCount ?? data.length) / pageSize!)\n )}\n onPageChange={onPageChange!}\n />\n </div>\n ) : null}\n </>\n );\n}\n\nexport const DataGrid = forwardRef(DataGridInner) as <T>(\n props: DataGridProps<T> & { ref?: ForwardedRef<DataGridHandle<T>> }\n) => ReactElement;\n","import 'src/components/DataGrid/DataGrid.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-1aS2_cNhC-51foUsQGKmN349iJgh7atGkCxAjgHFqgKAyuOJKYpUiWpHa1KfrfC4p6UI99aC0bSVrAB4s7HM588-DMSBc_I41-lQTfKfmB0e3d3XVO1vn1zPv7iecJrogmnAUeWipOMw2vnnjehmCdBN5c5OYpARInun4UCGPC4sCbmacUyZiwwPPLX_kaZET5JvASgjEwsxZSIgJPQqjPZt975d95cVBCNPhKoBACj_GNRMIsL7nEIIsT_nlyUSsQcqYRYSArHeYdHSRQpMka2oKgTPOGq18qt0byzPfdtbu7xWqLFpvNuUOt9JZCh7pYq6i3LnXIKZcVdfFQ7qmosUstESaZqsjtk5_iipYXtBFn2o9QSui2oiyWlhxvK8r5rCFV5DO0CM3Cx7QmfVaQDgiqIdcVlSFykU8AYZC3fFMhv-ggrzQJV1vDWXNRugYmSlC0DbyIQuEbn33CMOSBtyhAQOEqljxjuC2HymSEwhrfuYvYkmvN05EmLDeNs2S56SiD9pF6DZRWUD3b46Q9iBAlMfOJhlQFXghMgzTLMRKVEEWw-LmqBIit6SnkvkokYasS_TJM_cIe7lZV-0Jy7hJajY-jpRDpNmXjtqRFKW3u2EdaeOkGXEJn6QYwyRr3fbHPfW8yDTXzy4IyU8bMQCHUJsMwsDbOTVgUWay2dz7SKftW_ynTmrPK7peF3SezcJUTax0cSbVETAkkgWkHHcISkERXELcW2kk8zKQyOwQnVp6DugURDzPlr4kiSwqFpgWoCcIm5ZaKFE9-QVopsz6YABufYx2UFZf6XdhI8bw4d3fW-70-db4Y5TbuoRIMq7eIYZMp7MFXe-7OJv-Vrj-zCtvgmjnX65W9MSvwQ059e5hlk4WJj0J7gDX6QbGCxNx61ho7HNki_1FLzuJKZeiobK8Wy_N6Z_ZqSdPcDC_2YGPTRg-cXox8Ndne1fsI8A9kEZfbHxhpVCYuwD881TKDp39Oyx0w0YTFUzAPnQvv5ajEt_vmmvSSGapLTez7zQ9AKRGKqL2F6fDF0YIigXC15LlbA6BRkHzKlCbR1jf1LpjEvQ-tMjouL0V-rISQCr39qJGuM8dyKvnqe6V1ldHKFquT07AgjAF2MQ13lqB1nTk_4kq_RUQ1xy4OB_hhmR4u_B_x7G5yeLCjLbu3vboZT2Pf_ce-h0j_guM6EPqlzELk3sy7FLnnm39lvEROF3sxfz7I99ZkJJdx1GPsj-VsiwHlYhRPFbcnNBhl4rleHJ94SMhZu5BM2goQRgkD_3Q9SqEWV-3RRfXcK6KPrkOPKbiPaEd6lfaorr0Apx7HHMT26HKwPZ0YORsYOvg-3YHLOyJUt-YO5P-5w3AlapFyc8Onicqw3gChmxr2DRB20U5a203ezlsw3zGR6QrNVYFmNRidzb7rzeY67fZ0g7gTSpivZdjZzbGP7HO7xlsDPtcl5Zk22XioNR_ynskyouacLlE9Aaf3KwCKqAeGB0uAXeh8-RPFbzPFx5Lg3yQSonkBkh41naEcGeQ-rEFSVE922J5BDWEKdk5nxldl9QX8bLR1uEAh0dvAm128eP7q5LARKCYMGUXfcK4bAPl08fMVhYf1Q83FSHc3O8b5utlxgqPzTDhFn5hgpHjs2P2RDDBBwfKFZ64T3uv0fOB1AmvZ9BV_PUyz6FqK1kPxT-duA7mPpl86j39XM3XreFNvnl8Oto6eFaSIKF9ILkCaLFssRlymHQqcSWSDzx6U8tbyG6TqknUennc2a5KawIgyFg7wAKRI8y5i3n0ZMegI5YgqF4hhwHZyXYseeJKb4ebZyxmGeIjde7SEuk-yDfJRdfiOqfCo2XJfN56xulBU-4QZcIr9MXYLcUZRHZbz6wOfCfRemHVduyf8j3EsIUYaVKWBvt9rz26qtN-XlOm3-pLjgbU-ZT7dRuOdhrQCJLOd45DrtIbymOhWz7A-seN0Vr-t5lJIkiJZf_Ry9d_sLvt-cr_e8l-iIqunICYAAA';\nexport var actionsCell = 'DataGrid_actionsCell__7xivx7g';\nexport var body = 'DataGrid_body__7xivx77';\nexport var cell = 'DataGrid_cell__7xivx79';\nexport var checkboxCell = 'DataGrid_checkboxCell__7xivx7a';\nexport var container = 'DataGrid_container__7xivx71';\nexport var editInput = 'DataGrid_editInput__7xivx7v';\nexport var emptyState = 'DataGrid_emptyState__7xivx7b';\nexport var filterCell = 'DataGrid_filterCell__7xivx7j';\nexport var filterInput = 'DataGrid_filterInput__7xivx7k';\nexport var filterRow = 'DataGrid_filterRow__7xivx7i';\nexport var gridWrapper = 'DataGrid_gridWrapper__7xivx7m';\nexport var groupAggregateItem = 'DataGrid_groupAggregateItem__7xivx7u';\nexport var groupAggregates = 'DataGrid_groupAggregates__7xivx7t';\nexport var groupChevron = 'DataGrid_groupChevron__7xivx7q';\nexport var groupCount = 'DataGrid_groupCount__7xivx7s';\nexport var groupLabel = 'DataGrid_groupLabel__7xivx7r';\nexport var groupRow = 'DataGrid_groupRow__7xivx7p';\nexport var headerButton = 'DataGrid_headerButton__7xivx74';\nexport var headerCell = 'DataGrid_headerCell__7xivx73';\nexport var headerRow = 'DataGrid_headerRow__7xivx72';\nexport var iconButton = 'DataGrid_iconButton__7xivx7h';\nexport var loadingOverlay = 'DataGrid_loadingOverlay__7xivx7n';\nexport var paginationFooter = 'DataGrid_paginationFooter__7xivx7o';\nexport var pinnedCell = 'DataGrid_pinnedCell__7xivx7c';\nexport var pinnedHeaderCell = 'DataGrid_pinnedHeaderCell__7xivx7d';\nexport var pinnedLeftEdge = 'DataGrid_pinnedLeftEdge__7xivx7e';\nexport var pinnedRightEdge = 'DataGrid_pinnedRightEdge__7xivx7f';\nexport var resizeHandle = 'DataGrid_resizeHandle__7xivx76';\nexport var row = 'DataGrid_row__7xivx78';\nexport var sortIcon = 'DataGrid_sortIcon__7xivx75';\nexport var srOnly = 'DataGrid_srOnly__7xivx70';\nexport var toolbar = 'DataGrid_toolbar__7xivx7l';","import { useEffect, useMemo, useRef, useState } from \"react\";\nimport type { KeyboardEvent as ReactKeyboardEvent, ReactElement } from \"react\";\nimport {\n dayButton,\n dayCell,\n grid,\n header,\n monthLabel,\n navButton,\n root,\n weekRow,\n weekdayCell,\n} from \"./Calendar.css\";\nimport type { CalendarProps } from \"./types\";\nimport {\n addDays,\n addMonths,\n clampToMidnight,\n dateKey,\n endOfMonth,\n endOfWeek,\n isSameDay,\n isSameMonth,\n startOfMonth,\n startOfWeek,\n} from \"../../utils/date\";\n\nfunction getCalendarWeeks(month: Date, weekStartsOn: 0 | 1): Date[][] {\n const gridStart = startOfWeek(startOfMonth(month), weekStartsOn);\n const gridEnd = endOfWeek(endOfMonth(month), weekStartsOn);\n\n const weeks: Date[][] = [];\n let cursor = gridStart;\n while (cursor <= gridEnd) {\n const week: Date[] = [];\n for (let i = 0; i < 7; i++) {\n week.push(cursor);\n cursor = addDays(cursor, 1);\n }\n weeks.push(week);\n }\n return weeks;\n}\n\nfunction isDateDisabledBy(\n date: Date,\n minDate: Date | undefined,\n maxDate: Date | undefined,\n isDateDisabled: ((date: Date) => boolean) | undefined\n): boolean {\n const target = clampToMidnight(date);\n if (minDate && target < clampToMidnight(minDate)) return true;\n if (maxDate && target > clampToMidnight(maxDate)) return true;\n if (isDateDisabled?.(target)) return true;\n return false;\n}\n\n/** Walks forward/backward from `date` (inclusive) until an enabled date is found, or null if none within a year. */\nfunction findEnabledDate(\n date: Date,\n direction: 1 | -1,\n minDate: Date | undefined,\n maxDate: Date | undefined,\n isDateDisabled: ((date: Date) => boolean) | undefined\n): Date | null {\n let cursor = date;\n for (let i = 0; i < 366; i++) {\n if (!isDateDisabledBy(cursor, minDate, maxDate, isDateDisabled)) {\n return cursor;\n }\n cursor = addDays(cursor, direction);\n }\n return null;\n}\n\nfunction getFocusableDate(\n month: Date,\n value: Date | null,\n minDate: Date | undefined,\n maxDate: Date | undefined,\n isDateDisabled: ((date: Date) => boolean) | undefined\n): Date {\n if (\n value &&\n isSameMonth(value, month) &&\n !isDateDisabledBy(value, minDate, maxDate, isDateDisabled)\n ) {\n return clampToMidnight(value);\n }\n const today = clampToMidnight(new Date());\n if (\n isSameMonth(today, month) &&\n !isDateDisabledBy(today, minDate, maxDate, isDateDisabled)\n ) {\n return today;\n }\n const firstEnabled = findEnabledDate(\n startOfMonth(month),\n 1,\n minDate,\n maxDate,\n isDateDisabled\n );\n if (firstEnabled && isSameMonth(firstEnabled, month)) {\n return firstEnabled;\n }\n return startOfMonth(month);\n}\n\nexport function Calendar({\n value: controlledValue,\n defaultValue = null,\n onChange,\n month: controlledMonth,\n onMonthChange,\n minDate,\n maxDate,\n isDateDisabled,\n weekStartsOn = 1,\n locale = \"en-US\",\n rangeEnd,\n}: CalendarProps): ReactElement {\n const [uncontrolledValue, setUncontrolledValue] = useState<Date | null>(\n defaultValue\n );\n const value =\n controlledValue !== undefined ? controlledValue : uncontrolledValue;\n\n const setValue = (next: Date) => {\n if (controlledValue === undefined) {\n setUncontrolledValue(next);\n }\n onChange?.(next);\n };\n\n const [uncontrolledMonth, setUncontrolledMonth] = useState<Date>(() =>\n startOfMonth(controlledMonth ?? value ?? new Date())\n );\n const month =\n controlledMonth !== undefined\n ? startOfMonth(controlledMonth)\n : uncontrolledMonth;\n\n const setMonth = (next: Date) => {\n const normalized = startOfMonth(next);\n if (controlledMonth === undefined) {\n setUncontrolledMonth(normalized);\n }\n onMonthChange?.(normalized);\n };\n\n const [rovingDate, setRovingDate] = useState<Date>(() =>\n getFocusableDate(month, value, minDate, maxDate, isDateDisabled)\n );\n const shouldFocusRef = useRef(false);\n const dayRefs = useRef(new Map<string, HTMLButtonElement>());\n\n useEffect(() => {\n setRovingDate((prev) => {\n if (isSameMonth(prev, month)) return prev;\n return getFocusableDate(month, value, minDate, maxDate, isDateDisabled);\n });\n // Only the displayed month should re-derive the roving date; value/min/max changes\n // within the same month are handled by click/keyboard handlers directly.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [month]);\n\n useEffect(() => {\n if (!shouldFocusRef.current) return;\n shouldFocusRef.current = false;\n dayRefs.current.get(dateKey(rovingDate))?.focus();\n }, [rovingDate, month]);\n\n const weeks = useMemo(\n () => getCalendarWeeks(month, weekStartsOn),\n [month, weekStartsOn]\n );\n const today = useMemo(() => clampToMidnight(new Date()), []);\n\n const monthLabelFormatter = useMemo(\n () => new Intl.DateTimeFormat(locale, { month: \"long\", year: \"numeric\" }),\n [locale]\n );\n const weekdayFormatter = useMemo(\n () => new Intl.DateTimeFormat(locale, { weekday: \"short\" }),\n [locale]\n );\n\n const handleDayClick = (date: Date, disabled: boolean, inMonth: boolean) => {\n if (disabled) return;\n if (!inMonth) {\n setMonth(startOfMonth(date));\n return;\n }\n const normalized = clampToMidnight(date);\n setValue(normalized);\n setRovingDate(normalized);\n };\n\n const handleKeyDown = (\n event: ReactKeyboardEvent<HTMLButtonElement>,\n date: Date\n ) => {\n let targetRaw: Date;\n let direction: 1 | -1;\n switch (event.key) {\n case \"ArrowLeft\":\n targetRaw = addDays(date, -1);\n direction = -1;\n break;\n case \"ArrowRight\":\n targetRaw = addDays(date, 1);\n direction = 1;\n break;\n case \"ArrowUp\":\n targetRaw = addDays(date, -7);\n direction = -1;\n break;\n case \"ArrowDown\":\n targetRaw = addDays(date, 7);\n direction = 1;\n break;\n case \"Home\":\n targetRaw = startOfWeek(date, weekStartsOn);\n direction = -1;\n break;\n case \"End\":\n targetRaw = endOfWeek(date, weekStartsOn);\n direction = 1;\n break;\n case \"PageUp\":\n targetRaw = addMonths(date, -1);\n direction = -1;\n break;\n case \"PageDown\":\n targetRaw = addMonths(date, 1);\n direction = 1;\n break;\n default:\n return;\n }\n event.preventDefault();\n const target = findEnabledDate(\n targetRaw,\n direction,\n minDate,\n maxDate,\n isDateDisabled\n );\n if (!target) return;\n shouldFocusRef.current = true;\n setRovingDate(target);\n if (!isSameMonth(target, month)) {\n setMonth(startOfMonth(target));\n }\n };\n\n const monthLabelText = monthLabelFormatter.format(month);\n const clampedValue = value ? clampToMidnight(value) : null;\n const clampedRangeEnd = rangeEnd ? clampToMidnight(rangeEnd) : null;\n\n return (\n <div className={root} role=\"application\" aria-label={monthLabelText}>\n <div className={header}>\n <button\n type=\"button\"\n className={navButton}\n onClick={() => setMonth(addMonths(month, -1))}\n aria-label=\"Previous month\"\n >\n ‹\n </button>\n <span className={monthLabel}>{monthLabelText}</span>\n <button\n type=\"button\"\n className={navButton}\n onClick={() => setMonth(addMonths(month, 1))}\n aria-label=\"Next month\"\n >\n ›\n </button>\n </div>\n <div className={grid} role=\"grid\" aria-label={monthLabelText}>\n <div className={weekRow} role=\"row\">\n {weeks[0]!.map((date) => (\n <div\n key={dateKey(date)}\n className={weekdayCell}\n role=\"columnheader\"\n >\n {weekdayFormatter.format(date)}\n </div>\n ))}\n </div>\n {weeks.map((week, weekIndex) => (\n <div key={weekIndex} className={weekRow} role=\"row\">\n {week.map((date) => {\n const inMonth = isSameMonth(date, month);\n const disabled = isDateDisabledBy(\n date,\n minDate,\n maxDate,\n isDateDisabled\n );\n const isRangeEndDay = clampedRangeEnd\n ? isSameDay(date, clampedRangeEnd)\n : false;\n const selected =\n (clampedValue ? isSameDay(date, clampedValue) : false) ||\n isRangeEndDay;\n const inRange = Boolean(\n clampedValue &&\n clampedRangeEnd &&\n date > clampedValue &&\n date < clampedRangeEnd\n );\n const isToday = isSameDay(date, today);\n const tabIndex =\n inMonth && !disabled && isSameDay(date, rovingDate) ? 0 : -1;\n\n return (\n <div key={dateKey(date)} className={dayCell} role=\"gridcell\">\n <button\n type=\"button\"\n ref={(el) => {\n if (el) {\n dayRefs.current.set(dateKey(date), el);\n } else {\n dayRefs.current.delete(dateKey(date));\n }\n }}\n className={dayButton}\n data-outside={!inMonth || undefined}\n data-today={isToday || undefined}\n data-selected={selected || undefined}\n data-in-range={inRange || undefined}\n disabled={disabled}\n tabIndex={tabIndex}\n aria-selected={selected || undefined}\n aria-current={isToday ? \"date\" : undefined}\n aria-disabled={disabled || undefined}\n aria-label={date.toDateString()}\n onClick={() => handleDayClick(date, disabled, inMonth)}\n onKeyDown={\n inMonth ? (e) => handleKeyDown(e, date) : undefined\n }\n >\n {date.getDate()}\n </button>\n </div>\n );\n })}\n </div>\n ))}\n </div>\n </div>\n );\n}\n","import 'src/components/Calendar/Calendar.css.ts.vanilla.css?source=#H4sIAAAAAAAAA81XTU_cMBC98ytyAySM2OWjNKiXIvVULtBDpapazcaTxODYqT82m1b971Wc2tmEwGZbRHuKMnmeeZ43nnGOr4GjoKAWSkqzWMxsfXZa1CfRj70ookyXHOo4YoIzgSTluL7ai6LmSShTmBgmRRwlkttCNF8yKONoBeqAEF1CgkQXi8X8oYZ5lR82gBIoZSLrgwrqQcyBUikMSaFgvPZAZ1pKWnvk7KSDavYde8DGcBciz04dNJFcKg9zL8Tg2nhUC1pC8pApaQXtI7VVKSR4C0xjYDtvl0hFUZGKUZP7RZs2j6420drUHAdoZ_PoehM9Qr394tF0E62AMqs9vH3byLE8vNr7uXcchM8RnKff0s_60nvNgbNMEGaw0HGUoDCoGvO91YalNUmkMChMHLWKLtFUiFNKYpNJIYXJP8ISeWAzd2ycqBWyLDc9nVvTDVJmO7UvtxTGTcjE7GxAQMDqvTVGihD_9NmDMDUp3adelbT5WHPP58Exz3v7HMe8Xs0ZBUKXoFCYbSXWCSsenaWBm0lnMbFKN6hSMp--yapGkRPK53LWWKQ1jTGOhBTYGBwp1vQwUipZojJ1vMG6JXYULeWa6ByorAaLqFXQdsCWTCF75g-gw45myeFgsWEFExlJrUhGfCBoJrKwGrcXapzLFapYSHMQU6ZhyZEeuurd0tNCkAkxUplYTVZMsyXH1nlITqhY90Yc1PteTfDtSTu3XnshDQHOZYXUSVhCwhqVTo7P-x4zxWhwdjbew3aYW-tAPRtQrxAfbmUVYp2Px9rRI4X6GnnX9y7-rgs_23DmXTfhT3YcHorvfks__Rw2Npt30N269RP94Maabtq2x7oxE3eMUqmKOLJliSoBjf2cDvP55mXyOQgxqOHLfy3aI9C2OXFnlOzazPo1p0VqeSD77UXmRe_ayESOipld74iPR86fT40uMUfR_ztKRsr4xUfJWIyXGiVjvv9ulIx4_ELBAJHWaEbx3b5RFve_tt4ndq5JAYykUPfc7_IDMCkEE0SByPqb2EHWXa6Akwhp5JgYpJMIlYoVoMJP4MWWn6RR-NO4Txst5W3D_xfoMyz9Hg8AAA';\nexport var dayButton = 'Calendar_dayButton__1uy43my8';\nexport var dayCell = 'Calendar_dayCell__1uy43my7';\nexport var grid = 'Calendar_grid__1uy43my4';\nexport var header = 'Calendar_header__1uy43my1';\nexport var monthLabel = 'Calendar_monthLabel__1uy43my2';\nexport var navButton = 'Calendar_navButton__1uy43my3';\nexport var root = 'Calendar_root__1uy43my0';\nexport var weekRow = 'Calendar_weekRow__1uy43my5';\nexport var weekdayCell = 'Calendar_weekdayCell__1uy43my6';","export function startOfMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), 1);\n}\n\nexport function endOfMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0);\n}\n\nexport function addDays(date: Date, amount: number): Date {\n const next = new Date(date);\n next.setDate(next.getDate() + amount);\n return next;\n}\n\nexport function addMonths(date: Date, amount: number): Date {\n const next = new Date(date);\n next.setMonth(next.getMonth() + amount);\n return next;\n}\n\nexport function isSameDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nexport function isSameMonth(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();\n}\n\nexport function clampToMidnight(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n}\n\nexport function startOfWeek(date: Date, weekStartsOn: 0 | 1): Date {\n const diff = (date.getDay() - weekStartsOn + 7) % 7;\n return addDays(date, -diff);\n}\n\nexport function endOfWeek(date: Date, weekStartsOn: 0 | 1): Date {\n return addDays(startOfWeek(date, weekStartsOn), 6);\n}\n\nexport function dateKey(date: Date): string {\n return `${date.getFullYear()}-${date.getMonth()}-${date.getDate()}`;\n}\n","import { useEffect, useRef, useState } from \"react\";\nimport type { KeyboardEvent as ReactKeyboardEvent, ReactElement } from \"react\";\nimport {\n FloatingFocusManager,\n FloatingPortal,\n autoUpdate,\n flip,\n offset,\n shift,\n useDismiss,\n useFloating,\n useInteractions,\n useRole,\n} from \"@floating-ui/react\";\nimport { Calendar } from \"../Calendar\";\nimport { dateInput, iconButton, popover, wrapper } from \"./DatePicker.css\";\nimport type { DatePickerProps } from \"./types\";\n\nfunction startOfMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), 1);\n}\n\nfunction clampToMidnight(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n}\n\nfunction isDisabled(\n date: Date,\n minDate: Date | undefined,\n maxDate: Date | undefined,\n isDateDisabled: ((date: Date) => boolean) | undefined\n): boolean {\n const target = clampToMidnight(date);\n if (minDate && target < clampToMidnight(minDate)) return true;\n if (maxDate && target > clampToMidnight(maxDate)) return true;\n if (isDateDisabled?.(target)) return true;\n return false;\n}\n\n/** Which {month, day, year} order this locale's short numeric date format uses. */\nfunction getDatePartOrder(locale: string): Array<\"month\" | \"day\" | \"year\"> {\n const parts = new Intl.DateTimeFormat(locale).formatToParts(\n new Date(2000, 0, 2)\n );\n return parts\n .filter(\n (\n part\n ): part is Intl.DateTimeFormatPart & { type: \"month\" | \"day\" | \"year\" } =>\n part.type === \"month\" || part.type === \"day\" || part.type === \"year\"\n )\n .map((part) => part.type);\n}\n\nfunction getDatePlaceholder(locale: string): string {\n const parts = new Intl.DateTimeFormat(locale).formatToParts(\n new Date(2000, 0, 2)\n );\n return parts\n .map((part) => {\n switch (part.type) {\n case \"month\":\n return \"MM\";\n case \"day\":\n return \"DD\";\n case \"year\":\n return \"YYYY\";\n default:\n return part.value;\n }\n })\n .join(\"\");\n}\n\nfunction formatDate(date: Date, locale: string): string {\n return new Intl.DateTimeFormat(locale).format(date);\n}\n\n/** Parses locale-ordered numeric input like \"2/14/2024\" into a real calendar Date, or null if invalid. */\nfunction parseDate(text: string, locale: string): Date | null {\n const numbers = text.match(/\\d+/g);\n if (!numbers || numbers.length < 3) return null;\n\n const order = getDatePartOrder(locale);\n if (order.length < 3) return null;\n\n const values: Partial<Record<\"month\" | \"day\" | \"year\", number>> = {};\n order.forEach((type, i) => {\n values[type] = Number.parseInt(numbers[i]!, 10);\n });\n\n const { month, day, year } = values;\n if (!month || !day || !year) return null;\n\n const fullYear = year < 100 ? 2000 + year : year;\n const date = new Date(fullYear, month - 1, day);\n // Reject values that overflowed into the next month (e.g. Feb 31).\n if (\n date.getFullYear() !== fullYear ||\n date.getMonth() !== month - 1 ||\n date.getDate() !== day\n ) {\n return null;\n }\n return date;\n}\n\nexport function DatePicker({\n value: controlledValue,\n defaultValue = null,\n onChange,\n minDate,\n maxDate,\n isDateDisabled,\n weekStartsOn = 1,\n locale = \"en-US\",\n placeholder,\n disabled = false,\n open: controlledOpen,\n onOpenChange,\n}: DatePickerProps): ReactElement {\n const [uncontrolledValue, setUncontrolledValue] = useState<Date | null>(\n defaultValue\n );\n const value =\n controlledValue !== undefined ? controlledValue : uncontrolledValue;\n\n const setValue = (next: Date | null) => {\n if (controlledValue === undefined) {\n setUncontrolledValue(next);\n }\n onChange?.(next);\n };\n\n const [uncontrolledOpen, setUncontrolledOpen] = useState(false);\n const open = controlledOpen ?? uncontrolledOpen;\n const setOpen = onOpenChange ?? setUncontrolledOpen;\n\n const [month, setMonth] = useState<Date>(() =>\n startOfMonth(value ?? new Date())\n );\n const [inputText, setInputText] = useState(() =>\n value ? formatDate(value, locale) : \"\"\n );\n const inputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n setInputText(value ? formatDate(value, locale) : \"\");\n }, [value, locale]);\n\n useEffect(() => {\n if (open && value) {\n setMonth(startOfMonth(value));\n }\n // Only re-sync the displayed month at the moment the popover opens.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open]);\n\n const { refs, floatingStyles, context } = useFloating({\n open,\n onOpenChange: setOpen,\n placement: \"bottom-start\",\n whileElementsMounted: autoUpdate,\n middleware: [offset(8), flip(), shift({ padding: 8 })],\n });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n useDismiss(context),\n useRole(context, { role: \"dialog\" }),\n ]);\n\n const revertInputText = () => {\n setInputText(value ? formatDate(value, locale) : \"\");\n };\n\n const commitTypedValue = () => {\n const trimmed = inputText.trim();\n if (!trimmed) {\n if (value !== null) {\n setValue(null);\n }\n return;\n }\n\n const parsed = parseDate(trimmed, locale);\n if (!parsed || isDisabled(parsed, minDate, maxDate, isDateDisabled)) {\n revertInputText();\n return;\n }\n\n setValue(parsed);\n setMonth(startOfMonth(parsed));\n setInputText(formatDate(parsed, locale));\n };\n\n const handleInputKeyDown = (event: ReactKeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n commitTypedValue();\n }\n };\n\n const handleCalendarChange = (date: Date) => {\n setValue(date);\n setMonth(startOfMonth(date));\n setOpen(false);\n };\n\n const placeholderText = placeholder ?? getDatePlaceholder(locale);\n\n return (\n <div className={wrapper} ref={refs.setReference}>\n <input\n ref={inputRef}\n type=\"text\"\n className={dateInput}\n value={inputText}\n placeholder={placeholderText}\n disabled={disabled}\n onChange={(e) => setInputText(e.target.value)}\n onBlur={commitTypedValue}\n onKeyDown={handleInputKeyDown}\n aria-label=\"Date\"\n />\n <button\n type=\"button\"\n className={iconButton}\n disabled={disabled}\n aria-label={open ? \"Close calendar\" : \"Open calendar\"}\n {...getReferenceProps({\n onClick: () => {\n if (disabled) return;\n setOpen(!open);\n },\n })}\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <rect\n x=\"1.5\"\n y=\"2.5\"\n width=\"13\"\n height=\"12\"\n rx=\"1.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.3\"\n />\n <path d=\"M1.5 6h13\" stroke=\"currentColor\" strokeWidth=\"1.3\" />\n <path\n d=\"M4.5 1v3M11.5 1v3\"\n stroke=\"currentColor\"\n strokeWidth=\"1.3\"\n strokeLinecap=\"round\"\n />\n </svg>\n </button>\n {open ? (\n <FloatingPortal>\n <FloatingFocusManager\n context={context}\n modal={false}\n returnFocus={inputRef}\n >\n <div\n ref={refs.setFloating}\n className={popover}\n style={floatingStyles}\n {...getFloatingProps()}\n >\n <Calendar\n value={value}\n onChange={handleCalendarChange}\n month={month}\n onMonthChange={setMonth}\n minDate={minDate}\n maxDate={maxDate}\n isDateDisabled={isDateDisabled}\n weekStartsOn={weekStartsOn}\n locale={locale}\n />\n </div>\n </FloatingFocusManager>\n </FloatingPortal>\n ) : null}\n </div>\n );\n}\n","import 'src/components/DatePicker/DatePicker.css.ts.vanilla.css?source=#H4sIAAAAAAAAA82W3W_TMBDA3_tX5AVtlfCU7gOkTLwghOBhCMETQqi6xJfW1PFZ9qUfQ_vfUZwlbbqsDQOhvcWXn-_Ld2efvQPGzypboJuuHFiLbjqVr8vNBOLo1yiKLHnFikwSOdTAaonXoyiSylsNmyRSRiuDIte4ruQrJXmeRJM4fnE9uhud7WiXwPjR2JIb_ZOgv9WUasoWD3REUU6GRQ6F0pskWoI7FSKIUpKb6fR8sYHz1SQet6hXt9gBK8GNbNHLgAav56hmc-7AlfxDEH8iV4But6VhW0aaXLMhLATjmhvqIkApZIuZo9LILulLl0OGrcoaJifRCQdSlb7h65UoWq9pl71PUI3uyhp6tUt73mjco4OsoTe7dE-A9Z-GloG2IKUyM8FkG9hbyFD4ogHnHTAlZiqGsRpz7pLbRKgO6XbPr0bX7ZEtAkolV2eaRIZMKF12YOqSFtaRRcdV8e1E_zJKaS38HCSt9jbI0kHdDLXJgjri9-DbUphk473NrIrK57w0WY8OBK_MrN2N4-P9kyRWQ4Zz0hJdaKZHyvOmZGwzeDlE85yW6BJDfJpI5SHVKMfBwrEy-cqOtmEMiiKnrPRiqbxKNR4xYp0qwLV9_-q-dJvjakshrETQ3LDLIb40wdbZLJ2vHDDEArSmFcpQURYyVRVNfHZ1XOV3cAqEMkvQSr45YVfiyY8jUUows23HZQMc77XyR5l9aPPpiVUZmbclM5nGwfO9uwRST7rkuiGrGXJVD_u-hm4NzbYdlZMrkvpTA-O3U3EVvxgfuplAq5kRirHwSZShYXSV-GfpWeUbkZFhNLz7qzNm-4dL9wLpZ_7f0A7psODQ8LGbZTt6zYMra0_N0Jmy7RdLqsnhwOnbWm8m8HMexD3VfWBeHn4LfAHlt2k8H_rGOO5QX-v_s2b-6zFpyVYJaxRePDVVh0pct2don9nj6dGT2Lpc9r9dboUyEtdJNJnE8fXo7jdIcTnhvgsAAA';\nexport var dateInput = 'DatePicker_dateInput__d7uy1a1';\nexport var iconButton = 'DatePicker_iconButton__d7uy1a2';\nexport var popover = 'DatePicker_popover__d7uy1a3';\nexport var wrapper = 'DatePicker_wrapper__d7uy1a0';","import { useEffect, useState } from \"react\";\nimport type { KeyboardEvent as ReactKeyboardEvent, ReactElement } from \"react\";\nimport {\n FloatingFocusManager,\n FloatingPortal,\n autoUpdate,\n flip,\n offset,\n shift,\n useDismiss,\n useFloating,\n useInteractions,\n useRole,\n} from \"@floating-ui/react\";\nimport { Calendar } from \"../Calendar\";\nimport {\n dateInput,\n iconButton,\n popover,\n separator,\n wrapper,\n} from \"./DateRangePicker.css\";\nimport type { DateRange, DateRangePickerProps } from \"./types\";\n\nfunction startOfMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), 1);\n}\n\nfunction clampToMidnight(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n}\n\n/** -1 if a < b, 0 if same day, 1 if a > b — compares calendar dates, ignoring time of day. */\nfunction compareDates(a: Date, b: Date): number {\n const x = clampToMidnight(a).getTime();\n const y = clampToMidnight(b).getTime();\n if (x < y) return -1;\n if (x > y) return 1;\n return 0;\n}\n\nfunction isDisabled(\n date: Date,\n minDate: Date | undefined,\n maxDate: Date | undefined,\n isDateDisabled: ((date: Date) => boolean) | undefined\n): boolean {\n const target = clampToMidnight(date);\n if (minDate && target < clampToMidnight(minDate)) return true;\n if (maxDate && target > clampToMidnight(maxDate)) return true;\n if (isDateDisabled?.(target)) return true;\n return false;\n}\n\n/** Which {month, day, year} order this locale's short numeric date format uses. */\nfunction getDatePartOrder(locale: string): Array<\"month\" | \"day\" | \"year\"> {\n const parts = new Intl.DateTimeFormat(locale).formatToParts(\n new Date(2000, 0, 2)\n );\n return parts\n .filter(\n (\n part\n ): part is Intl.DateTimeFormatPart & { type: \"month\" | \"day\" | \"year\" } =>\n part.type === \"month\" || part.type === \"day\" || part.type === \"year\"\n )\n .map((part) => part.type);\n}\n\nfunction getDatePlaceholder(locale: string): string {\n const parts = new Intl.DateTimeFormat(locale).formatToParts(\n new Date(2000, 0, 2)\n );\n return parts\n .map((part) => {\n switch (part.type) {\n case \"month\":\n return \"MM\";\n case \"day\":\n return \"DD\";\n case \"year\":\n return \"YYYY\";\n default:\n return part.value;\n }\n })\n .join(\"\");\n}\n\nfunction formatDate(date: Date, locale: string): string {\n return new Intl.DateTimeFormat(locale).format(date);\n}\n\n/** Parses locale-ordered numeric input like \"2/14/2024\" into a real calendar Date, or null if invalid. */\nfunction parseDate(text: string, locale: string): Date | null {\n const numbers = text.match(/\\d+/g);\n if (!numbers || numbers.length < 3) return null;\n\n const order = getDatePartOrder(locale);\n if (order.length < 3) return null;\n\n const values: Partial<Record<\"month\" | \"day\" | \"year\", number>> = {};\n order.forEach((type, i) => {\n values[type] = Number.parseInt(numbers[i]!, 10);\n });\n\n const { month, day, year } = values;\n if (!month || !day || !year) return null;\n\n const fullYear = year < 100 ? 2000 + year : year;\n const date = new Date(fullYear, month - 1, day);\n // Reject values that overflowed into the next month (e.g. Feb 31).\n if (\n date.getFullYear() !== fullYear ||\n date.getMonth() !== month - 1 ||\n date.getDate() !== day\n ) {\n return null;\n }\n return date;\n}\n\nconst EMPTY_RANGE: DateRange = { start: null, end: null };\n\nexport function DateRangePicker({\n value: controlledValue,\n defaultValue = EMPTY_RANGE,\n onChange,\n minDate,\n maxDate,\n isDateDisabled,\n weekStartsOn = 1,\n locale = \"en-US\",\n startPlaceholder,\n endPlaceholder,\n disabled = false,\n open: controlledOpen,\n onOpenChange,\n}: DateRangePickerProps): ReactElement {\n const [uncontrolledValue, setUncontrolledValue] =\n useState<DateRange>(defaultValue);\n const value =\n controlledValue !== undefined ? controlledValue : uncontrolledValue;\n\n const setValue = (next: DateRange) => {\n if (controlledValue === undefined) {\n setUncontrolledValue(next);\n }\n onChange?.(next);\n };\n\n const [uncontrolledOpen, setUncontrolledOpen] = useState(false);\n const open = controlledOpen ?? uncontrolledOpen;\n const setOpen = onOpenChange ?? setUncontrolledOpen;\n\n const [month, setMonth] = useState<Date>(() =>\n startOfMonth(value.start ?? new Date())\n );\n const [startText, setStartText] = useState(() =>\n value.start ? formatDate(value.start, locale) : \"\"\n );\n const [endText, setEndText] = useState(() =>\n value.end ? formatDate(value.end, locale) : \"\"\n );\n\n useEffect(() => {\n setStartText(value.start ? formatDate(value.start, locale) : \"\");\n }, [value.start, locale]);\n\n useEffect(() => {\n setEndText(value.end ? formatDate(value.end, locale) : \"\");\n }, [value.end, locale]);\n\n useEffect(() => {\n if (open && value.start) {\n setMonth(startOfMonth(value.start));\n }\n // Only re-sync the displayed month at the moment the popover opens.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open]);\n\n const { refs, floatingStyles, context } = useFloating({\n open,\n onOpenChange: setOpen,\n placement: \"bottom-start\",\n whileElementsMounted: autoUpdate,\n middleware: [offset(8), flip(), shift({ padding: 8 })],\n });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n useDismiss(context),\n useRole(context, { role: \"dialog\" }),\n ]);\n\n const revertStartText = () => {\n setStartText(value.start ? formatDate(value.start, locale) : \"\");\n };\n\n const revertEndText = () => {\n setEndText(value.end ? formatDate(value.end, locale) : \"\");\n };\n\n const commitStartText = () => {\n const trimmed = startText.trim();\n if (!trimmed) {\n if (value.start !== null) {\n setValue({ start: null, end: value.end });\n }\n return;\n }\n\n const parsed = parseDate(trimmed, locale);\n if (\n !parsed ||\n isDisabled(parsed, minDate, maxDate, isDateDisabled) ||\n (value.end && compareDates(parsed, value.end) > 0)\n ) {\n revertStartText();\n return;\n }\n\n setValue({ start: parsed, end: value.end });\n setMonth(startOfMonth(parsed));\n };\n\n const commitEndText = () => {\n const trimmed = endText.trim();\n if (!trimmed) {\n if (value.end !== null) {\n setValue({ start: value.start, end: null });\n }\n return;\n }\n\n const parsed = parseDate(trimmed, locale);\n if (\n !parsed ||\n isDisabled(parsed, minDate, maxDate, isDateDisabled) ||\n (value.start && compareDates(parsed, value.start) < 0)\n ) {\n revertEndText();\n return;\n }\n\n setValue({ start: value.start, end: parsed });\n setMonth(startOfMonth(parsed));\n };\n\n const handleStartKeyDown = (event: ReactKeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n commitStartText();\n }\n };\n\n const handleEndKeyDown = (event: ReactKeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n commitEndText();\n }\n };\n\n const handleCalendarChange = (date: Date) => {\n const { start, end } = value;\n if (!start || (start && end)) {\n setValue({ start: date, end: null });\n setMonth(startOfMonth(date));\n return;\n }\n\n if (compareDates(date, start) < 0) {\n setValue({ start: date, end: start });\n } else {\n setValue({ start, end: date });\n }\n setOpen(false);\n };\n\n const startPlaceholderText = startPlaceholder ?? getDatePlaceholder(locale);\n const endPlaceholderText = endPlaceholder ?? getDatePlaceholder(locale);\n\n return (\n <div\n className={wrapper}\n data-disabled={disabled || undefined}\n ref={refs.setReference}\n >\n <input\n type=\"text\"\n className={dateInput}\n value={startText}\n placeholder={startPlaceholderText}\n disabled={disabled}\n onChange={(e) => setStartText(e.target.value)}\n onBlur={commitStartText}\n onKeyDown={handleStartKeyDown}\n aria-label=\"Start date\"\n />\n <span className={separator} aria-hidden=\"true\">\n –\n </span>\n <input\n type=\"text\"\n className={dateInput}\n value={endText}\n placeholder={endPlaceholderText}\n disabled={disabled}\n onChange={(e) => setEndText(e.target.value)}\n onBlur={commitEndText}\n onKeyDown={handleEndKeyDown}\n aria-label=\"End date\"\n />\n <button\n type=\"button\"\n className={iconButton}\n disabled={disabled}\n aria-label={open ? \"Close calendar\" : \"Open calendar\"}\n {...getReferenceProps({\n onClick: () => {\n if (disabled) return;\n setOpen(!open);\n },\n })}\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <rect\n x=\"1.5\"\n y=\"2.5\"\n width=\"13\"\n height=\"12\"\n rx=\"1.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.3\"\n />\n <path d=\"M1.5 6h13\" stroke=\"currentColor\" strokeWidth=\"1.3\" />\n <path\n d=\"M4.5 1v3M11.5 1v3\"\n stroke=\"currentColor\"\n strokeWidth=\"1.3\"\n strokeLinecap=\"round\"\n />\n </svg>\n </button>\n {open ? (\n <FloatingPortal>\n <FloatingFocusManager context={context} modal={false}>\n <div\n ref={refs.setFloating}\n className={popover}\n style={floatingStyles}\n {...getFloatingProps()}\n >\n <Calendar\n value={value.start}\n rangeEnd={value.end}\n onChange={handleCalendarChange}\n month={month}\n onMonthChange={setMonth}\n minDate={minDate}\n maxDate={maxDate}\n isDateDisabled={isDateDisabled}\n weekStartsOn={weekStartsOn}\n locale={locale}\n />\n </div>\n </FloatingFocusManager>\n </FloatingPortal>\n ) : null}\n </div>\n );\n}\n","import 'src/components/DateRangePicker/DateRangePicker.css.ts.vanilla.css?source=#H4sIAAAAAAAAA81WTW_bMAy951f4MrQBpiJO0x1c7DIMw3boMLTHYQgYi4m1yJIg0fno0P8-WI6UOHUTbwOGHk0_kU_kk56uPgLhPagFfhP5Eu10bcEYtNNpmtL4xk5Gya9BkhjtBAmtssSiBBIrvB0kCRfOSNhmiVBSKGRziZs6DlIsFBOEpcuSHBWhrcNrwanIknQ0elN_LsBkyQrsJWPOQI5s46bT8XIL4_ViWANmkC8XVleKB1yupbbMVXYOOQZw2oC15WiZBS4qF_DNFyt5wOpD7I5PAz2MBfT6EO1oK_EI7WMBvT1Ee6Zt2s2fgOYebYBzoRZM4pzazdhzFi2kFYuCTvdNV1SPI0uUVn5OZEE182PGaoOWtlmL6NtkpjfMFcD1-mgBryw0k29KlroV_gSO4iDy4dFiEmXNeV6pvCMHghNqEVfj8HbwNLg6K8is0Cu0Xpbnmv1AVu8r9C4w13nl2FpQIdSZOsaKEuw2lHi300BoZhyU_2I-ccCuetL5zoGAceFgJpG_vyBb4cUPzyuvrKsZKU0MpNRr5F4ABnJRz3h0ddNZgwPhF2UqilVSn68-wFmS1jlKocIBGe11vdfU4eH0EzdgUVH9a64VsTmUQm7D_n1opnlsVDoaRqgTj9gC1oG7qP904qH-hinwUP4eXMc_-_BXbUuQcdnML-uYGeEmava6dbhIH11JrgzAogWcaSJdnsYeHcN-Y8gyIyHHQku-0_gLG7irCGOLJt1S6sofdPSyfjoSOTRggfReleOoF-YKK9RyJ5O-bE-N_iE2Mr3u3pjItfpQEWkVCV17Qn_oSD8rR2K-ZblWhIoOfz3fWssudjdvVNvS76ktz27M_zOfo2N5yiH32lXPrPcoTf8JB3UZLUJXe1pTrB7s6dW7VJciG6PKlKbLeOyGjZ-cftncg3D7Zo773mN9aTX2thJOzCTu_O0fDKuzxvlrpodNGW3qDsa0k79t3inpyzhb88oehy9OZU-56n7wPTKhuLfydDS6HTz9BvtQj6bmCwAA';\nexport var dateInput = 'DateRangePicker_dateInput__11t25r41';\nexport var iconButton = 'DateRangePicker_iconButton__11t25r43';\nexport var popover = 'DateRangePicker_popover__11t25r44';\nexport var separator = 'DateRangePicker_separator__11t25r42';\nexport var wrapper = 'DateRangePicker_wrapper__11t25r40';","import { forwardRef, useEffect, useRef, useState } from \"react\";\nimport type { CSSProperties, FocusEvent, KeyboardEvent as ReactKeyboardEvent, ReactElement } from \"react\";\nimport { useMergeRefs } from \"@floating-ui/react\";\nimport { input, stepButton, stepperGroup, wrapper } from \"./NumberInput.css\";\n\nexport interface NumberInputProps {\n value?: number | null;\n defaultValue?: number | null;\n onChange?: (value: number | null) => void;\n min?: number;\n max?: number;\n step?: number;\n disabled?: boolean;\n invalid?: boolean;\n placeholder?: string;\n id?: string;\n name?: string;\n className?: string;\n style?: CSSProperties;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n}\n\nfunction clamp(value: number, min: number | undefined, max: number | undefined): number {\n let result = value;\n if (min !== undefined) result = Math.max(min, result);\n if (max !== undefined) result = Math.min(max, result);\n return result;\n}\n\nfunction formatValue(value: number | null): string {\n return value === null ? \"\" : String(value);\n}\n\nexport const NumberInput = forwardRef<HTMLInputElement, NumberInputProps>(function NumberInput(\n {\n value: controlledValue,\n defaultValue = null,\n onChange,\n min,\n max,\n step = 1,\n disabled = false,\n invalid,\n placeholder,\n id,\n name,\n className,\n style,\n ...rest\n },\n ref\n): ReactElement {\n const [uncontrolledValue, setUncontrolledValue] = useState<number | null>(defaultValue);\n const value = controlledValue !== undefined ? controlledValue : uncontrolledValue;\n\n const setValue = (next: number | null) => {\n if (controlledValue === undefined) {\n setUncontrolledValue(next);\n }\n onChange?.(next);\n };\n\n const [inputText, setInputText] = useState(() => formatValue(value));\n\n useEffect(() => {\n setInputText(formatValue(value));\n }, [value]);\n\n const inputRef = useRef<HTMLInputElement>(null);\n const mergedRef = useMergeRefs([inputRef, ref]);\n\n const commitTypedValue = () => {\n const trimmed = inputText.trim();\n if (!trimmed) {\n if (value !== null) setValue(null);\n return;\n }\n\n const parsed = Number(trimmed);\n if (Number.isNaN(parsed)) {\n setInputText(formatValue(value));\n return;\n }\n\n const clamped = clamp(parsed, min, max);\n setValue(clamped);\n setInputText(formatValue(clamped));\n };\n\n const step2 = (direction: 1 | -1) => {\n if (disabled) return;\n const base = value ?? min ?? 0;\n const next = clamp(base + direction * step, min, max);\n setValue(next);\n setInputText(formatValue(next));\n inputRef.current?.focus();\n };\n\n const handleKeyDown = (event: ReactKeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n commitTypedValue();\n return;\n }\n if (event.key === \"ArrowUp\") {\n event.preventDefault();\n step2(1);\n return;\n }\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n step2(-1);\n return;\n }\n if (event.key === \"Home\" && min !== undefined) {\n event.preventDefault();\n setValue(min);\n setInputText(formatValue(min));\n return;\n }\n if (event.key === \"End\" && max !== undefined) {\n event.preventDefault();\n setValue(max);\n setInputText(formatValue(max));\n }\n };\n\n const handleBlur = (_event: FocusEvent<HTMLInputElement>) => {\n commitTypedValue();\n };\n\n const classes = [wrapper, className].filter(Boolean).join(\" \");\n\n return (\n <span className={classes} style={style} data-disabled={disabled || undefined}>\n <input\n ref={mergedRef}\n id={id}\n name={name}\n type=\"text\"\n inputMode=\"decimal\"\n className={input}\n value={inputText}\n placeholder={placeholder}\n disabled={disabled}\n role=\"spinbutton\"\n aria-valuenow={value ?? undefined}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-invalid={invalid || undefined}\n onChange={(e) => setInputText(e.target.value)}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n {...rest}\n />\n <span className={stepperGroup}>\n <button\n type=\"button\"\n tabIndex={-1}\n className={stepButton}\n disabled={disabled || (max !== undefined && value !== null && value >= max)}\n aria-label=\"Increment\"\n onClick={() => step2(1)}\n >\n <svg width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M1 5l3-3 3 3\" stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n <button\n type=\"button\"\n tabIndex={-1}\n className={stepButton}\n disabled={disabled || (min !== undefined && value !== null && value <= min)}\n aria-label=\"Decrement\"\n onClick={() => step2(-1)}\n >\n <svg width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M1 3l3 3 3-3\" stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n </span>\n </span>\n );\n});\n","import 'src/components/NumberInput/NumberInput.css.ts.vanilla.css?source=#H4sIAAAAAAAAA6WWTW8aMRCG7_wKX6oEqY6ApD1s1EsP_Tgkh_YYVci7ngUXr8eyx8C26n-v1st-AWWJegF5eDwej-ed4e45FCm4r8YGWu6csBbccjnf7u9npZux3xPGLHpFCk3CHGhBaguPE8ak8laLMmHKaGWA5xr2lV1otTJcERQ-YZ4cULau7DslaZ2w-Wz25nHyZ3J38dwXKUhwqbxINcgfMQy0IlNUJmx2965ymAXn0SXMIHGhNe5AnjhW8bNxO49-2sBTjdnmJDTGcjTEc1EoXSZsK9wt59GUoiyXy8WmFIvdfDZtUa9-wQCsDE-yRR8iGpO0BrVa0wCu7F-i-RldIXS7LY3bMtTVJesNccEJ9tRQ9xFKRbZZOQxGDkkfXC4yaF3WMDoJjjshVfANX6940UaNffaQoBrt2xp616c9lRqO6Ghr6LJPn7lg_UtDy0hbIaUyK05oG9hbkQH3RQOuB2CKRFhcx2rIaUh2iVAD0vXfr0b37ZNtIoqBqjetCtNEpZATplYQtw4tuKqI-7d_y1Lcc78WEndHG2RwotZefWSBA_Mn4dtSmGfTo82kiirmPJjsjA8QXplVuxumY-pJEqtFBmvUElyU0j-K8ykQtPl7GPe7xi24xCDdJo3kp9H_WIl8J4fdFa64QY5Z8HyrvEo1jBxhnSqEaxX__lC0zUO1RRBXPHpu2O14JM1F6zy-vpW9CKcEV2YrtJIfbsgFuPkxciMpzKrTVTYa5NkzXpXD0xP_I4WeoJoSnx0G2wa5OBpRIvWoA9XCq3rF3MaxdBDuYdU0h8OyHQnNEKu-uVQODsLJUIfC9GbFYlbtPBPgx0CEpg3vPoZXuUvY_OxRg3mZgSFwlfln8KTykmdoCAz1fzr0ooTNujbadZv-LIi9wAoHhi7MkhO5dgVpUTWnXhobXV8155_tOCsXJH95lH0TynfBLq4dkdeENK7IwX-Qh-u8nqrlZD68QhB_AZjC83euCQAA';\nexport var input = 'NumberInput_input__1vx30yr1';\nexport var stepButton = 'NumberInput_stepButton__1vx30yr3';\nexport var stepperGroup = 'NumberInput_stepperGroup__1vx30yr2';\nexport var wrapper = 'NumberInput_wrapper__1vx30yr0';","import { useRef, useState } from \"react\";\nimport type { KeyboardEvent as ReactKeyboardEvent, PointerEvent as ReactPointerEvent, ReactElement } from \"react\";\nimport { range, root, thumb, track } from \"./Slider.css\";\nimport type { SliderProps, SliderValue } from \"./types\";\n\nfunction isRange(value: SliderValue): value is [number, number] {\n return Array.isArray(value);\n}\n\nfunction clampToStep(raw: number, min: number, max: number, step: number): number {\n const stepped = Math.round((raw - min) / step) * step + min;\n return Math.min(max, Math.max(min, Math.round(stepped * 1e6) / 1e6));\n}\n\nfunction percentOf(value: number, min: number, max: number): number {\n if (max === min) return 0;\n return ((value - min) / (max - min)) * 100;\n}\n\nexport function Slider({\n value: controlledValue,\n defaultValue = 0,\n onChange,\n min = 0,\n max = 100,\n step = 1,\n disabled = false,\n id,\n className,\n style,\n formatValue = (v) => String(v),\n ...rest\n}: SliderProps): ReactElement {\n const ariaLabel = rest[\"aria-label\"];\n const [uncontrolledValue, setUncontrolledValue] = useState<SliderValue>(defaultValue);\n const value = controlledValue !== undefined ? controlledValue : uncontrolledValue;\n\n const setValue = (next: SliderValue) => {\n if (controlledValue === undefined) {\n setUncontrolledValue(next);\n }\n onChange?.(next);\n };\n\n const trackRef = useRef<HTMLDivElement>(null);\n const thumbRefs = useRef<Record<\"single\" | 0 | 1, HTMLSpanElement | null>>({ single: null, 0: null, 1: null });\n const dragThumbIndex = useRef<0 | 1 | null>(null);\n const isDragging = useRef(false);\n\n const valueFromClientX = (clientX: number): number => {\n const trackEl = trackRef.current;\n if (!trackEl) return min;\n const rect = trackEl.getBoundingClientRect();\n const ratio = rect.width === 0 ? 0 : (clientX - rect.left) / rect.width;\n return clampToStep(min + ratio * (max - min), min, max, step);\n };\n\n const setThumbValue = (index: 0 | 1 | null, raw: number) => {\n if (index === null) {\n setValue(clampToStep(raw, min, max, step));\n return;\n }\n if (!isRange(value)) return;\n const [start, end] = value;\n if (index === 0) {\n setValue([Math.min(raw, end), end]);\n } else {\n setValue([start, Math.max(raw, start)]);\n }\n };\n\n const handlePointerMove = (event: PointerEvent) => {\n if (!isDragging.current) return;\n setThumbValue(dragThumbIndex.current, valueFromClientX(event.clientX));\n };\n\n const handlePointerUp = () => {\n isDragging.current = false;\n dragThumbIndex.current = null;\n window.removeEventListener(\"pointermove\", handlePointerMove);\n window.removeEventListener(\"pointerup\", handlePointerUp);\n };\n\n const startDrag = (index: 0 | 1 | null) => (event: ReactPointerEvent) => {\n if (disabled) return;\n event.preventDefault();\n thumbRefs.current[index ?? \"single\"]?.focus();\n isDragging.current = true;\n dragThumbIndex.current = index;\n setThumbValue(index, valueFromClientX(event.clientX));\n window.addEventListener(\"pointermove\", handlePointerMove);\n window.addEventListener(\"pointerup\", handlePointerUp);\n };\n\n const handleTrackPointerDown = (event: ReactPointerEvent) => {\n if (disabled) return;\n if (!isRange(value)) {\n startDrag(null)(event);\n return;\n }\n const target = valueFromClientX(event.clientX);\n const [start, end] = value;\n const nearestIndex: 0 | 1 = Math.abs(target - start) <= Math.abs(target - end) ? 0 : 1;\n startDrag(nearestIndex)(event);\n };\n\n const handleThumbKeyDown = (index: 0 | 1 | null) => (event: ReactKeyboardEvent) => {\n if (disabled) return;\n const current = index === null ? (value as number) : (value as [number, number])[index];\n let next: number | null = null;\n\n switch (event.key) {\n case \"ArrowRight\":\n case \"ArrowUp\":\n next = clampToStep(current + step, min, max, step);\n break;\n case \"ArrowLeft\":\n case \"ArrowDown\":\n next = clampToStep(current - step, min, max, step);\n break;\n case \"Home\":\n next = min;\n break;\n case \"End\":\n next = max;\n break;\n case \"PageUp\":\n next = clampToStep(current + step * 10, min, max, step);\n break;\n case \"PageDown\":\n next = clampToStep(current - step * 10, min, max, step);\n break;\n default:\n return;\n }\n\n event.preventDefault();\n setThumbValue(index, next);\n };\n\n const renderThumb = (index: 0 | 1 | null, current: number, label: string | undefined) => (\n <span\n key={index ?? \"single\"}\n ref={(node) => {\n thumbRefs.current[index ?? \"single\"] = node;\n }}\n role=\"slider\"\n tabIndex={disabled ? -1 : 0}\n aria-label={label}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={current}\n aria-valuetext={formatValue(current)}\n aria-disabled={disabled || undefined}\n className={thumb}\n style={{ left: `${percentOf(current, min, max)}%` }}\n onPointerDown={(event) => {\n event.stopPropagation();\n startDrag(index)(event);\n }}\n onKeyDown={handleThumbKeyDown(index)}\n />\n );\n\n const classes = [root, className].filter(Boolean).join(\" \");\n\n return (\n <span id={id} className={classes} style={style} data-disabled={disabled || undefined}>\n <span ref={trackRef} className={track} onPointerDown={handleTrackPointerDown}>\n {isRange(value) ? (\n <span\n className={range}\n style={{\n left: `${percentOf(value[0], min, max)}%`,\n right: `${100 - percentOf(value[1], min, max)}%`\n }}\n />\n ) : (\n <span className={range} style={{ left: 0, right: `${100 - percentOf(value, min, max)}%` }} />\n )}\n {isRange(value)\n ? [\n renderThumb(0, value[0], Array.isArray(ariaLabel) ? ariaLabel[0] : ariaLabel),\n renderThumb(1, value[1], Array.isArray(ariaLabel) ? ariaLabel[1] : ariaLabel)\n ]\n : renderThumb(null, value, typeof ariaLabel === \"string\" ? ariaLabel : undefined)}\n </span>\n </span>\n );\n}\n","import 'src/components/Slider/Slider.css.ts.vanilla.css?source=#H4sIAAAAAAAAA61UTW_bMAy991foUrQBqsDJlgzwsOuwe49FEdCSYguRRY-i8oFh_32wVbV2kCWXXoKQeHx-fCQ1f3ZWG9oQIm82y9qt1rYQf-6E0DZ0Dk6lsN5Zb-TWmeP3OyHA2dpLy6YNpVDGs6E-fbCam1IsiuK-DzvQ2vpaMnal2AM9Shk6UEaGdrNZ7k6wPDSzMbBCZmyvYf_ezS-JfdHAILUNUDmjXwft2IGyfCpFMV_1H1GRAlIpPLIE5_Bg9JiPCdQuEy4Ghg6DZYu-FGQcsN2bC002xtYNl-JrNzhTIWlDkkDbGHInKZLb6Fxu5vfQeAVqVxNGrzNUoUOSiSVj9Wysv0Ob_WaMqpGgkkiP3kwcAl-b3NHyrCOoArrIJtF0pSiS-jSA4vNa6ci2QKcMXk-GyE1sqyzxyy2Jq-R4HsA6OZ4HkOPPkR0ibUGZDF7MRtRvAhJ8nHtmQl_nmuO4JvDJmbOaIZfRpzF60HDTRyGYwIctUlumvw7YPMpVcf8k-t_J3tQEVR9j5P6W8768kQyey46wM9QfTYVHGRrQeHiaiDor0JEgTStpbXGS_gmB3y1Us7Nitm1_9dvo1QUOA8F-mLkwVxanbHBvaFifmwb-6qGZ9ds10i2qGOTeBls580aeTXl_o4ZIDtBMur9G2h_rPrGNB1NZX_-_6gXIfjxvPx6Yonl4nZBMX7V_eE48ZtIFAAA';\nexport var range = 'Slider_range__2gl56i2';\nexport var root = 'Slider_root__2gl56i0';\nexport var thumb = 'Slider_thumb__2gl56i3';\nexport var track = 'Slider_track__2gl56i1';","import { useEffect, useId, useRef, useState } from \"react\";\nimport type { KeyboardEvent as ReactKeyboardEvent, ReactElement } from \"react\";\nimport {\n FloatingPortal,\n autoUpdate,\n flip,\n offset,\n shift,\n useDismiss,\n useFloating,\n useInteractions,\n useRole\n} from \"@floating-ui/react\";\nimport {\n chip,\n chipRemove,\n chipsWrapper,\n emptyState,\n inputEl,\n listbox,\n option as optionClass,\n virtualSpacer,\n wrapper\n} from \"./Combobox.css\";\nimport type { ComboboxOption, ComboboxProps } from \"./types\";\n\n// Matches the .option class's padding (2 * space.sm = 16px) + line height\n// (sizeSm 14px * lineHeightNormal 1.5 = 21px) in Combobox.css.ts.\nconst DEFAULT_OPTION_HEIGHT = 37;\nconst OVERSCAN = 5;\n\nfunction defaultFilter(options: ComboboxOption[], inputText: string): ComboboxOption[] {\n const query = inputText.trim().toLowerCase();\n if (!query) return options;\n return options.filter((opt) => opt.label.toLowerCase().includes(query));\n}\n\nfunction labelFor(options: ComboboxOption[], value: string | null): string {\n if (!value) return \"\";\n return options.find((opt) => opt.value === value)?.label ?? \"\";\n}\n\nexport function Combobox({\n options,\n multiple = false,\n value: controlledValue,\n defaultValue,\n onChange,\n onInputChange,\n filterOptions = defaultFilter,\n placeholder,\n noOptionsMessage = \"No options\",\n disabled = false,\n invalid,\n loading = false,\n virtualizationThreshold = 50,\n optionHeight = DEFAULT_OPTION_HEIGHT,\n id,\n className,\n ...rest\n}: ComboboxProps): ReactElement {\n const fallbackDefault = multiple ? [] : null;\n const [uncontrolledValue, setUncontrolledValue] = useState<string | string[] | null>(\n defaultValue !== undefined ? defaultValue : fallbackDefault\n );\n const value = controlledValue !== undefined ? controlledValue : uncontrolledValue;\n\n const setValue = (next: string | string[] | null) => {\n if (controlledValue === undefined) {\n setUncontrolledValue(next);\n }\n onChange?.(next);\n };\n\n const selectedValues = multiple ? ((value as string[] | null) ?? []) : [];\n const singleValue = multiple ? null : (value as string | null);\n\n const [open, setOpen] = useState(false);\n const [inputText, setInputText] = useState(() => (multiple ? \"\" : labelFor(options, singleValue)));\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n\n useEffect(() => {\n if (!multiple) {\n setInputText(labelFor(options, singleValue));\n }\n // Only re-sync the displayed text when the committed single-select value changes.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [singleValue, multiple]);\n\n const inputRef = useRef<HTMLInputElement>(null);\n const listboxRef = useRef<HTMLDivElement | null>(null);\n const listboxId = useId();\n\n const [scrollTop, setScrollTop] = useState(0);\n const [viewportHeight, setViewportHeight] = useState(280);\n\n const filteredOptions = filterOptions(options, multiple ? inputText : open ? inputText : \"\");\n\n const isVirtualized = filteredOptions.length >= virtualizationThreshold;\n\n useEffect(() => {\n // A brand-new `options` array (e.g. an async re-fetch triggered by\n // onInputChange) means the previous scroll position/active row are\n // stale — land back at the top rather than mid-scroll.\n setScrollTop(0);\n setActiveIndex(null);\n if (listboxRef.current) listboxRef.current.scrollTop = 0;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [options]);\n\n useEffect(() => {\n if (!open) return;\n const node = listboxRef.current;\n if (!node) return;\n if (node.clientHeight > 0) setViewportHeight(node.clientHeight);\n if (typeof ResizeObserver === \"undefined\") return;\n const observer = new ResizeObserver((entries) => {\n const entry = entries[0];\n if (entry) setViewportHeight(entry.contentRect.height);\n });\n observer.observe(node);\n return () => observer.disconnect();\n }, [open]);\n\n const totalHeight = filteredOptions.length * optionHeight;\n const maxScrollTop = Math.max(0, totalHeight - viewportHeight);\n const effectiveScrollTop = Math.min(scrollTop, maxScrollTop);\n const visibleCount = Math.ceil(viewportHeight / optionHeight) + OVERSCAN * 2;\n const startIndex = isVirtualized\n ? Math.max(0, Math.floor(effectiveScrollTop / optionHeight) - OVERSCAN)\n : 0;\n const endIndex = isVirtualized\n ? Math.min(filteredOptions.length, startIndex + visibleCount)\n : filteredOptions.length;\n const visibleOptions = filteredOptions.slice(startIndex, endIndex);\n\n const { refs, floatingStyles, context } = useFloating({\n open,\n onOpenChange: setOpen,\n placement: \"bottom-start\",\n whileElementsMounted: autoUpdate,\n middleware: [offset(4), flip(), shift({ padding: 8 })]\n });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n useDismiss(context),\n useRole(context, { role: \"listbox\" })\n ]);\n\n const openList = () => {\n if (disabled) return;\n setOpen(true);\n setActiveIndex(null);\n };\n\n const closeList = () => {\n setOpen(false);\n setActiveIndex(null);\n };\n\n const selectOption = (opt: ComboboxOption) => {\n if (opt.disabled) return;\n\n if (multiple) {\n const next = selectedValues.includes(opt.value)\n ? selectedValues.filter((v) => v !== opt.value)\n : [...selectedValues, opt.value];\n setValue(next);\n setInputText(\"\");\n onInputChange?.(\"\");\n inputRef.current?.focus();\n return;\n }\n\n setValue(opt.value);\n setInputText(opt.label);\n closeList();\n };\n\n const removeChip = (optionValue: string) => {\n setValue(selectedValues.filter((v) => v !== optionValue));\n inputRef.current?.focus();\n };\n\n const handleInputChange = (text: string) => {\n setInputText(text);\n onInputChange?.(text);\n setOpen(true);\n setActiveIndex(null);\n };\n\n const scrollIndexIntoView = (index: number) => {\n if (!isVirtualized) return;\n const rowTop = index * optionHeight;\n const rowBottom = rowTop + optionHeight;\n let next = scrollTop;\n if (rowTop < scrollTop) {\n next = rowTop;\n } else if (rowBottom > scrollTop + viewportHeight) {\n next = rowBottom - viewportHeight;\n } else {\n return;\n }\n setScrollTop(next);\n if (listboxRef.current) listboxRef.current.scrollTop = next;\n };\n\n const moveActiveIndex = (direction: 1 | -1) => {\n if (filteredOptions.length === 0) return;\n let next = activeIndex ?? (direction === 1 ? -1 : filteredOptions.length);\n for (let step = 0; step < filteredOptions.length; step++) {\n next = (next + direction + filteredOptions.length) % filteredOptions.length;\n if (!filteredOptions[next]?.disabled) {\n setActiveIndex(next);\n scrollIndexIntoView(next);\n return;\n }\n }\n };\n\n const handleKeyDown = (event: ReactKeyboardEvent<HTMLInputElement>) => {\n if (disabled) return;\n\n switch (event.key) {\n case \"ArrowDown\":\n event.preventDefault();\n if (!open) {\n openList();\n } else {\n moveActiveIndex(1);\n }\n return;\n case \"ArrowUp\":\n event.preventDefault();\n if (open) moveActiveIndex(-1);\n return;\n case \"Enter\": {\n if (!open) return;\n event.preventDefault();\n const active = activeIndex !== null ? filteredOptions[activeIndex] : undefined;\n if (active) selectOption(active);\n return;\n }\n case \"Escape\":\n if (open) {\n event.preventDefault();\n closeList();\n if (!multiple) setInputText(labelFor(options, singleValue));\n }\n return;\n case \"Backspace\":\n if (multiple && inputText === \"\" && selectedValues.length > 0) {\n removeChip(selectedValues[selectedValues.length - 1]!);\n }\n return;\n default:\n }\n };\n\n const handleBlur = () => {\n if (!multiple) {\n setInputText(labelFor(options, singleValue));\n }\n closeList();\n };\n\n const classes = [wrapper, className].filter(Boolean).join(\" \");\n const activeOptionId = activeIndex !== null ? `${listboxId}-option-${activeIndex}` : undefined;\n\n return (\n <span className={classes} ref={refs.setReference} data-disabled={disabled || undefined}>\n {multiple && selectedValues.length > 0 ? (\n <span className={chipsWrapper}>\n {selectedValues.map((val) => (\n <span key={val} className={chip}>\n {labelFor(options, val)}\n <button\n type=\"button\"\n className={chipRemove}\n aria-label={`Remove ${labelFor(options, val)}`}\n disabled={disabled}\n onClick={() => removeChip(val)}\n >\n ×\n </button>\n </span>\n ))}\n </span>\n ) : null}\n <input\n ref={inputRef}\n id={id}\n type=\"text\"\n role=\"combobox\"\n className={inputEl}\n value={inputText}\n placeholder={placeholder}\n disabled={disabled}\n autoComplete=\"off\"\n aria-autocomplete=\"list\"\n aria-expanded={open}\n aria-controls={listboxId}\n aria-invalid={invalid || undefined}\n aria-activedescendant={activeOptionId}\n {...getReferenceProps({\n ...rest,\n onFocus: openList,\n onBlur: handleBlur,\n onChange: (e) => handleInputChange((e.target as HTMLInputElement).value),\n onKeyDown: handleKeyDown\n })}\n />\n {open ? (\n <FloatingPortal>\n <div\n ref={(node) => {\n refs.setFloating(node);\n listboxRef.current = node;\n }}\n id={listboxId}\n role=\"listbox\"\n aria-multiselectable={multiple || undefined}\n className={listbox}\n style={floatingStyles}\n onScroll={(e) => setScrollTop(e.currentTarget.scrollTop)}\n {...getFloatingProps()}\n >\n {loading ? (\n <div className={emptyState}>Loading…</div>\n ) : filteredOptions.length === 0 ? (\n <div className={emptyState}>{noOptionsMessage}</div>\n ) : isVirtualized ? (\n <div className={virtualSpacer} style={{ height: totalHeight }}>\n {visibleOptions.map((opt, i) => {\n const index = startIndex + i;\n const isSelected = multiple\n ? selectedValues.includes(opt.value)\n : opt.value === singleValue;\n return (\n <div\n key={opt.value}\n id={`${listboxId}-option-${index}`}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={opt.disabled || undefined}\n data-active={activeIndex === index || undefined}\n className={optionClass}\n style={{ position: \"absolute\", top: index * optionHeight, left: 0, right: 0, height: optionHeight }}\n onMouseDown={(event) => {\n event.preventDefault();\n selectOption(opt);\n }}\n onMouseEnter={() => setActiveIndex(index)}\n >\n {opt.label}\n </div>\n );\n })}\n </div>\n ) : (\n filteredOptions.map((opt, index) => {\n const isSelected = multiple ? selectedValues.includes(opt.value) : opt.value === singleValue;\n return (\n <div\n key={opt.value}\n id={`${listboxId}-option-${index}`}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={opt.disabled || undefined}\n data-active={activeIndex === index || undefined}\n className={optionClass}\n onMouseDown={(event) => {\n event.preventDefault();\n selectOption(opt);\n }}\n onMouseEnter={() => setActiveIndex(index)}\n >\n {opt.label}\n </div>\n );\n })\n )}\n </div>\n </FloatingPortal>\n ) : null}\n </span>\n );\n}\n","import 'src/components/Combobox/Combobox.css.ts.vanilla.css?source=#H4sIAAAAAAAAA9VXwW7bOBC95yt0WbQBloHkpGmgYk-LXewle2gOe1gUBiWOLSIUhyApy0rRfy9ImYokW5KTtkB7saDx43A4894MdfUnlhlmuF_XmioFer1e3cqC53H0-SKKFBpuOco00iCo5Tv4cBFFjBslaJNGGwF7Z3BP4hykkft1Jir4VhJuoTRplIO0oJ156zA7qt8SYhTNgezNer16bOiq3l46QM2ZLdIoiePf3GtG88etxkqysCxHgZqYSm9oDmFt4tdmqBlooinjlQn49o2ULGCxjz1s10L7toCu-2hjGwEjtLcFdNNH-0iHYbf_BDTzaEUZ43JLLC6kJgAztBbL87ACNnaINGVAFgOk5ttiAWo1lS0fiNKoQNsmHRz29yjDPTEFZViPFrBK05ZJ7Q4lDsx_U2O7Yubj3SwvXYibSuYnfAA1XG671XD54eLLxdUksdMN5pUhNbcFl57l0_VSmpdUN8H37aG84Yxduvwb8Y4DdrcQxv-MWkoYNzQTwD75QPJKGxeCREuoEFgDcxuiojl3uY6v3g2d5gVX5r-h58S7OkejC2IcbxQ2WA034FJwCSTsMyf8G7U_Q9QfKTfQyXXlc36iNhb2HWWuPWiD0hLDnzqJdoaHjsnJ9WKreKa9PBboqj3CWIsj87HspgR6QnbzVfgIJe4g1OK6R2DHGwnjBHsZKapB2plE3lf2OeU3bcoPZFTIQxF9oQtoQ056x0ijeL4A953z5Gb5UGmBO9CpRPs2DQq5bBWyzIMl38HhtOL6HrhUlf1LhOU3fpXjeholURLRyqI7ecllmCW38YHlo6JgZV3-zqqSz9uGllw0g1RmyLpmlMQLpB_lfFS-HtjZ__Hmf1GXVHTLsvO1NznFpubNqSk2xM6VIU2VoDkUKBjoOWYcEXvW68u4Ibix7nlY_m6m8TKu4TC7chRVKbueuHp1T5zrYaKbh-rnvO7Md8fJEft8rupypLvk7iC8ku47lq-C0TWUjcCaNGkn2iNFPhEumZd2EsfDWqNy1Qulvh2WOhOYP566vbpj8Cd_3EOWMvThOGoSPyrTyA2Ll824b-0MR-PwlZ3h1VP0-zSIH3TNPRp8Mzxob3E0d59G7R3uBV8sc36p5pQYEJBbYH-8sbqCN5-mGt3Ja6ovYH1c09Z0D4xXzzS4Oyec0B2Xwlm4UEz20x3XtqLiwVWlu86-n_kQHcit7wlKZZsHS2039-9aN78OCc9O64_oCF--AgiGYrwYEAAA';\nexport var chip = 'Combobox_chip__26nhic2';\nexport var chipRemove = 'Combobox_chipRemove__26nhic3';\nexport var chipsWrapper = 'Combobox_chipsWrapper__26nhic1';\nexport var emptyState = 'Combobox_emptyState__26nhic8';\nexport var inputEl = 'Combobox_inputEl__26nhic4';\nexport var listbox = 'Combobox_listbox__26nhic5';\nexport var option = 'Combobox_option__26nhic6';\nexport var virtualSpacer = 'Combobox_virtualSpacer__26nhic7';\nexport var wrapper = 'Combobox_wrapper__26nhic0';","import { useEffect, useMemo, useRef, useState } from \"react\";\nimport type { KeyboardEvent as ReactKeyboardEvent, ReactElement } from \"react\";\nimport { vars } from \"@vesture/tokens\";\nimport { Checkbox } from \"../Checkbox\";\nimport { Spinner } from \"../Spinner\";\nimport {\n chevron,\n checkboxCell,\n label as labelClass,\n loadingSlot,\n root,\n row as rowClass,\n rowContent,\n scroller,\n} from \"./TreeView.css\";\nimport type { TreeNode, TreeViewProps } from \"./types\";\n\ninterface FlatNode<T> {\n node: TreeNode<T>;\n depth: number;\n hasChildren: boolean;\n isExpanded: boolean;\n}\n\ninterface NodeIndexEntry<T> {\n node: TreeNode<T>;\n parentId: string | null;\n}\n\nfunction getChildren<T>(\n node: TreeNode<T>,\n loadedChildren: Map<string, TreeNode<T>[]>\n): TreeNode<T>[] | undefined {\n return node.children ?? loadedChildren.get(node.id);\n}\n\nfunction collectDescendantIds<T>(\n node: TreeNode<T>,\n loadedChildren: Map<string, TreeNode<T>[]>,\n acc: Set<string>\n): void {\n const children = getChildren(node, loadedChildren);\n if (!children) return;\n for (const child of children) {\n acc.add(child.id);\n collectDescendantIds(child, loadedChildren, acc);\n }\n}\n\nfunction hasAnyDescendantSelected<T>(\n node: TreeNode<T>,\n loadedChildren: Map<string, TreeNode<T>[]>,\n selected: Set<string>\n): boolean {\n const children = getChildren(node, loadedChildren);\n if (!children) return false;\n for (const child of children) {\n if (selected.has(child.id)) return true;\n if (hasAnyDescendantSelected(child, loadedChildren, selected)) return true;\n }\n return false;\n}\n\nfunction reconcileAncestors<T>(\n nodeId: string,\n next: Set<string>,\n nodeIndex: Map<string, NodeIndexEntry<T>>,\n loadedChildren: Map<string, TreeNode<T>[]>\n): void {\n let parentId = nodeIndex.get(nodeId)?.parentId ?? null;\n while (parentId) {\n const entry = nodeIndex.get(parentId);\n if (!entry) break;\n const children = getChildren(entry.node, loadedChildren) ?? [];\n const allChecked = children.length > 0 && children.every((c) => next.has(c.id));\n if (allChecked) {\n next.add(parentId);\n } else {\n next.delete(parentId);\n }\n parentId = entry.parentId;\n }\n}\n\nexport function TreeView<T = unknown>({\n nodes,\n expanded: controlledExpanded,\n defaultExpanded,\n onExpandedChange,\n selected: controlledSelected,\n defaultSelected,\n onSelectedChange,\n selectable = \"none\",\n onLoadChildren,\n height = 320,\n rowHeight = 32,\n}: TreeViewProps<T>): ReactElement {\n const [uncontrolledExpanded, setUncontrolledExpanded] = useState<Set<string>>(\n () => defaultExpanded ?? new Set()\n );\n const expandedSet =\n controlledExpanded !== undefined ? controlledExpanded : uncontrolledExpanded;\n const setExpandedSet = (next: Set<string>) => {\n if (controlledExpanded === undefined) {\n setUncontrolledExpanded(next);\n }\n onExpandedChange?.(next);\n };\n\n const [uncontrolledSelected, setUncontrolledSelected] = useState<Set<string>>(\n () => defaultSelected ?? new Set()\n );\n const selectedSet =\n controlledSelected !== undefined ? controlledSelected : uncontrolledSelected;\n const setSelectedSet = (next: Set<string>) => {\n if (controlledSelected === undefined) {\n setUncontrolledSelected(next);\n }\n onSelectedChange?.(next);\n };\n const selectedSetRef = useRef(selectedSet);\n selectedSetRef.current = selectedSet;\n\n const [loadedChildren, setLoadedChildren] = useState<Map<string, TreeNode<T>[]>>(\n () => new Map()\n );\n const [loadingIds, setLoadingIds] = useState<Set<string>>(() => new Set());\n const attemptedLoadRef = useRef<Set<string>>(new Set());\n\n const [scrollTop, setScrollTop] = useState(0);\n const [focusedId, setFocusedId] = useState<string | null>(\n () => nodes[0]?.id ?? null\n );\n const shouldFocusRef = useRef(false);\n const containerRef = useRef<HTMLDivElement>(null);\n const rowRefs = useRef(new Map<string, HTMLDivElement>());\n\n const nodeIndex = useMemo(() => {\n const map = new Map<string, NodeIndexEntry<T>>();\n function walk(list: TreeNode<T>[], parentId: string | null) {\n for (const node of list) {\n map.set(node.id, { node, parentId });\n const children = getChildren(node, loadedChildren);\n if (children) walk(children, node.id);\n }\n }\n walk(nodes, null);\n return map;\n }, [nodes, loadedChildren]);\n\n const flatNodes = useMemo(() => {\n const result: FlatNode<T>[] = [];\n function walk(list: TreeNode<T>[], depth: number) {\n for (const node of list) {\n const children = getChildren(node, loadedChildren);\n const nodeHasChildren = children\n ? children.length > 0\n : node.hasChildren === true;\n const isExpanded = expandedSet.has(node.id);\n result.push({ node, depth, hasChildren: nodeHasChildren, isExpanded });\n if (isExpanded && children) {\n walk(children, depth + 1);\n }\n }\n }\n walk(nodes, 0);\n return result;\n }, [nodes, expandedSet, loadedChildren]);\n\n useEffect(() => {\n if (focusedId !== null && flatNodes.some((f) => f.node.id === focusedId)) {\n return;\n }\n setFocusedId(flatNodes[0]?.node.id ?? null);\n }, [flatNodes, focusedId]);\n\n useEffect(() => {\n if (!shouldFocusRef.current || focusedId === null) return;\n shouldFocusRef.current = false;\n rowRefs.current.get(focusedId)?.focus();\n }, [focusedId, scrollTop]);\n\n async function loadChildrenFor(node: TreeNode<T>) {\n if (!onLoadChildren) return;\n if (attemptedLoadRef.current.has(node.id)) return;\n attemptedLoadRef.current.add(node.id);\n setLoadingIds((prev) => new Set(prev).add(node.id));\n try {\n const loaded = await onLoadChildren(node);\n setLoadedChildren((prev) => new Map(prev).set(node.id, loaded));\n if (selectable === \"multi\" && selectedSetRef.current.has(node.id)) {\n setSelectedSet(\n (() => {\n const next = new Set(selectedSetRef.current);\n for (const child of loaded) next.add(child.id);\n return next;\n })()\n );\n }\n } finally {\n setLoadingIds((prev) => {\n const next = new Set(prev);\n next.delete(node.id);\n return next;\n });\n }\n }\n\n function expandNode(node: TreeNode<T>) {\n const next = new Set(expandedSet);\n next.add(node.id);\n setExpandedSet(next);\n const children = getChildren(node, loadedChildren);\n if (node.hasChildren === true && children === undefined) {\n void loadChildrenFor(node);\n }\n }\n\n function collapseNode(node: TreeNode<T>) {\n const next = new Set(expandedSet);\n next.delete(node.id);\n setExpandedSet(next);\n }\n\n function toggleExpand(flat: FlatNode<T>) {\n if (flat.isExpanded) {\n collapseNode(flat.node);\n } else {\n expandNode(flat.node);\n }\n }\n\n function toggleSelect(node: TreeNode<T>) {\n if (selectable === \"none\") return;\n if (selectable === \"single\") {\n const isSelected = selectedSet.has(node.id);\n setSelectedSet(isSelected ? new Set() : new Set([node.id]));\n return;\n }\n const next = new Set(selectedSet);\n const willSelect = !next.has(node.id);\n const descendants = new Set<string>();\n collectDescendantIds(node, loadedChildren, descendants);\n if (willSelect) {\n next.add(node.id);\n descendants.forEach((id) => next.add(id));\n } else {\n next.delete(node.id);\n descendants.forEach((id) => next.delete(id));\n }\n reconcileAncestors(node.id, next, nodeIndex, loadedChildren);\n setSelectedSet(next);\n }\n\n function moveFocusTo(id: string) {\n const index = flatNodes.findIndex((f) => f.node.id === id);\n if (index === -1) return;\n const rowTop = index * rowHeight;\n const rowBottom = rowTop + rowHeight;\n let scrolled = false;\n if (containerRef.current) {\n if (rowTop < containerRef.current.scrollTop) {\n containerRef.current.scrollTop = rowTop;\n scrolled = true;\n } else if (rowBottom > containerRef.current.scrollTop + height) {\n containerRef.current.scrollTop = rowBottom - height;\n scrolled = true;\n }\n }\n setFocusedId(id);\n // setFocusedId is a no-op re-render when `id` already equals the current\n // focusedId (e.g. re-focusing the same row), so the DOM focus effect\n // (keyed on focusedId) won't fire — focus synchronously here instead,\n // falling back to the effect only when the row isn't mounted yet\n // (freshly scrolled into view by the branch above).\n const target = rowRefs.current.get(id);\n if (target && !scrolled) {\n target.focus();\n } else {\n shouldFocusRef.current = true;\n }\n }\n\n function handleKeyDown(\n event: ReactKeyboardEvent<HTMLDivElement>,\n flat: FlatNode<T>\n ) {\n const { node, depth, hasChildren, isExpanded } = flat;\n const index = flatNodes.findIndex((f) => f.node.id === node.id);\n\n switch (event.key) {\n case \"ArrowDown\": {\n event.preventDefault();\n const next = flatNodes[index + 1];\n if (next) moveFocusTo(next.node.id);\n break;\n }\n case \"ArrowUp\": {\n event.preventDefault();\n const prev = flatNodes[index - 1];\n if (prev) moveFocusTo(prev.node.id);\n break;\n }\n case \"Home\": {\n event.preventDefault();\n if (flatNodes[0]) moveFocusTo(flatNodes[0].node.id);\n break;\n }\n case \"End\": {\n event.preventDefault();\n const last = flatNodes[flatNodes.length - 1];\n if (last) moveFocusTo(last.node.id);\n break;\n }\n case \"ArrowRight\": {\n if (!hasChildren) break;\n event.preventDefault();\n if (!isExpanded) {\n expandNode(node);\n } else {\n const next = flatNodes[index + 1];\n if (next && next.depth === depth + 1) moveFocusTo(next.node.id);\n }\n break;\n }\n case \"ArrowLeft\": {\n event.preventDefault();\n if (isExpanded && hasChildren) {\n collapseNode(node);\n } else {\n const parentId = nodeIndex.get(node.id)?.parentId;\n if (parentId) moveFocusTo(parentId);\n }\n break;\n }\n case \" \":\n case \"Spacebar\": {\n if (selectable === \"none\") break;\n event.preventDefault();\n toggleSelect(node);\n break;\n }\n default:\n return;\n }\n }\n\n const totalHeight = flatNodes.length * rowHeight;\n const overscan = 5;\n const visibleCount = Math.ceil(height / rowHeight) + overscan * 2;\n const startIndex = Math.max(0, Math.floor(scrollTop / rowHeight) - overscan);\n const endIndex = Math.min(flatNodes.length, startIndex + visibleCount);\n const visibleFlatNodes = flatNodes.slice(startIndex, endIndex);\n\n return (\n <div\n ref={containerRef}\n className={scroller}\n style={{ height }}\n onScroll={(e) => setScrollTop(e.currentTarget.scrollTop)}\n role=\"tree\"\n >\n <div className={root} style={{ height: totalHeight }}>\n {visibleFlatNodes.map((flat, i) => {\n const index = startIndex + i;\n const { node, depth, hasChildren, isExpanded } = flat;\n const isLoading = loadingIds.has(node.id);\n const isSelected = selectedSet.has(node.id);\n const isIndeterminate =\n selectable === \"multi\" &&\n !isSelected &&\n hasAnyDescendantSelected(node, loadedChildren, selectedSet);\n\n return (\n <div\n key={node.id}\n ref={(el) => {\n if (el) {\n rowRefs.current.set(node.id, el);\n } else {\n rowRefs.current.delete(node.id);\n }\n }}\n className={rowClass}\n style={{ top: index * rowHeight, height: rowHeight }}\n role=\"treeitem\"\n aria-expanded={hasChildren ? isExpanded : undefined}\n aria-level={depth + 1}\n aria-selected={selectable !== \"none\" ? isSelected : undefined}\n tabIndex={node.id === focusedId ? 0 : -1}\n onFocus={() => setFocusedId(node.id)}\n onKeyDown={(e) => handleKeyDown(e, flat)}\n onClick={() => setFocusedId(node.id)}\n >\n <div\n className={rowContent}\n style={{ paddingLeft: `calc(${depth} * ${vars.space.lg})` }}\n >\n {hasChildren ? (\n isLoading ? (\n <span className={loadingSlot}>\n <Spinner size=\"sm\" />\n </span>\n ) : (\n <button\n type=\"button\"\n className={chevron}\n data-expanded={isExpanded || undefined}\n onMouseDown={(e) => e.preventDefault()}\n onClick={(e) => {\n e.stopPropagation();\n toggleExpand(flat);\n }}\n aria-hidden=\"true\"\n tabIndex={-1}\n >\n ›\n </button>\n )\n ) : (\n <span className={chevron} aria-hidden=\"true\" />\n )}\n {selectable === \"multi\" ? (\n <span\n className={checkboxCell}\n onMouseDown={(e) => e.preventDefault()}\n onClick={(e) => e.stopPropagation()}\n >\n <Checkbox\n checked={isSelected}\n indeterminate={isIndeterminate}\n onChange={() => toggleSelect(node)}\n tabIndex={-1}\n aria-label={`Select ${typeof node.label === \"string\" ? node.label : node.id}`}\n />\n </span>\n ) : null}\n <span className={labelClass} data-selected={isSelected || undefined}>\n {node.label}\n </span>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n","import 'src/components/TreeView/TreeView.css.ts.vanilla.css?source=#H4sIAAAAAAAAA9VVwW6cMBC971f4Uil7cLVs0jYlx0i95dJUvVTVytgDOGtsZA8LtOq_V9iLYdmISL31BuM3jzczb8z7bxbgu4T24Lg1SoE9HBK-V_v7fkd-bwipjZMojU6JBcVQnuBhQ4g5gc2VaVPCGjRDJDcaac4qqfqUnJi9odSHMiP6w2F_7Nm-TXbbCHXyF1wAh8BzFaG3HsqNMnaE-ReK0OGICqCM8WNhTaPFJdI1NmccvjLpQIwp-5BirABLWymwHJPmsRHdztEOewULtI-N6H6OfkV6OBnRYo62TMjGjfDwRquo2mwfNn827-OwrDEYB5WsDOpcYbLbvVsytJFgvyBgmTOqQU-gIMeU7IZHK4tyfBbS1Yr1KckVdEOAKVloKhEqlxKHFpCX3ikNKqkhJdpoT8gb64bG1EZqBLuiKs0Nbxw9SSczBV5jZjrqSiYG54VWhTfqoWO3TlfdmrOWg3kD27pxohev6R6NRtDTCG4933pTOIR6CSlYHeXXjAPtovRiezU1QmomhNQFPQ9gnunixpQLlbyEkzU6Sry7lCj1MBb6htKXxqHMe8pDvfOji90JYlQxinnxZZRwLXiJGQRQV1qpj2drhY2YDDOfElqmXc0saFy5Hp4anBb-bvuq69auoaeYnIRs36qxmmSIeCF-XWhtTQ0W-7O63NhqgRCNZWGzwocqcxH-wly80RK-XSSjrIbZ543mr3AAc1LHlibwlgl-CIaMQlczLUD89J6IslNiDTKEm887AcWCShk2mPBZzW6eD_-HpxYd4cfMdI-gVKzj47_UsfYVxTKY6D95-umfWUohQPs5Q4d0OgClZO2k870oJUIocNiF1rJ69Rthsg4UcBwn6x3dXnRsFnoCIZvpj3s_DPwvm8c-BRAIAAA';\nexport var checkboxCell = 'TreeView_checkboxCell__1c2l28y6';\nexport var chevron = 'TreeView_chevron__1c2l28y4';\nexport var label = 'TreeView_label__1c2l28y7';\nexport var loadingSlot = 'TreeView_loadingSlot__1c2l28y5';\nexport var root = 'TreeView_root__1c2l28y1';\nexport var row = 'TreeView_row__1c2l28y2';\nexport var rowContent = 'TreeView_rowContent__1c2l28y3';\nexport var scroller = 'TreeView_scroller__1c2l28y0';","import { useEffect, useId, useMemo, useRef, useState } from \"react\";\nimport type { CSSProperties, KeyboardEvent as ReactKeyboardEvent, ReactElement } from \"react\";\nimport {\n FloatingFocusManager,\n FloatingOverlay,\n FloatingPortal,\n useDismiss,\n useFloating,\n useInteractions,\n useRole\n} from \"@floating-ui/react\";\nimport {\n emptyState,\n groupHeader,\n inputEl,\n list,\n option as optionClass,\n optionDescription,\n optionIcon,\n optionLabel,\n overlay,\n palette,\n shortcut as shortcutClass,\n virtualSpacer\n} from \"./CommandPalette.css\";\nimport type { CommandItem, CommandPaletteProps } from \"./types\";\n\nconst DEFAULT_ROW_HEIGHT = 40;\nconst OVERSCAN = 5;\n\nfunction defaultFilterCommands(commands: CommandItem[], query: string): CommandItem[] {\n const q = query.trim().toLowerCase();\n if (!q) return commands;\n return commands.filter((command) => {\n const haystack = [command.label, command.group, ...(command.keywords ?? [])]\n .filter(Boolean)\n .join(\" \")\n .toLowerCase();\n return haystack.includes(q);\n });\n}\n\ninterface HeaderRow {\n type: \"header\";\n key: string;\n group: string;\n}\n\ninterface ItemRow {\n type: \"item\";\n key: string;\n command: CommandItem;\n itemIndex: number;\n}\n\ntype Row = HeaderRow | ItemRow;\n\n// Interleaves group header rows above each group's items (skipped by keyboard\n// nav, like a listbox with disabled separators) — mirrors DataGrid's group rows.\nfunction buildRows(commands: CommandItem[]): { rows: Row[]; itemRowIndices: number[] } {\n const rows: Row[] = [];\n const itemRowIndices: number[] = [];\n const seenGroups = new Set<string>();\n\n commands.forEach((command, itemIndex) => {\n if (command.group && !seenGroups.has(command.group)) {\n seenGroups.add(command.group);\n rows.push({ type: \"header\", key: `__group-${command.group}`, group: command.group });\n }\n itemRowIndices[itemIndex] = rows.length;\n rows.push({ type: \"item\", key: command.id, command, itemIndex });\n });\n\n return { rows, itemRowIndices };\n}\n\nexport function CommandPalette({\n open,\n onOpenChange,\n commands,\n placeholder = \"Type a command or search...\",\n emptyMessage = \"No matching commands\",\n filterCommands = defaultFilterCommands,\n virtualizationThreshold = 50,\n rowHeight = DEFAULT_ROW_HEIGHT,\n \"aria-label\": ariaLabel\n}: CommandPaletteProps): ReactElement | null {\n const [query, setQuery] = useState(\"\");\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n const [scrollTop, setScrollTop] = useState(0);\n const [viewportHeight, setViewportHeight] = useState(320);\n\n const inputRef = useRef<HTMLInputElement>(null);\n const listRef = useRef<HTMLDivElement | null>(null);\n const listId = useId();\n\n const { refs, context } = useFloating({ open, onOpenChange });\n const { getFloatingProps } = useInteractions([useDismiss(context), useRole(context, { role: \"dialog\" })]);\n\n const filteredCommands = useMemo(() => filterCommands(commands, query), [commands, filterCommands, query]);\n const { rows, itemRowIndices } = useMemo(() => buildRows(filteredCommands), [filteredCommands]);\n\n const isVirtualized = rows.length >= virtualizationThreshold;\n\n useEffect(() => {\n if (!open) return;\n setQuery(\"\");\n setActiveIndex(null);\n setScrollTop(0);\n if (listRef.current) listRef.current.scrollTop = 0;\n }, [open]);\n\n useEffect(() => {\n // A new query invalidates the previous selection/scroll position.\n setActiveIndex(null);\n setScrollTop(0);\n if (listRef.current) listRef.current.scrollTop = 0;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [query]);\n\n useEffect(() => {\n if (!open) return;\n const node = listRef.current;\n if (!node) return;\n if (node.clientHeight > 0) setViewportHeight(node.clientHeight);\n if (typeof ResizeObserver === \"undefined\") return;\n const observer = new ResizeObserver((entries) => {\n const entry = entries[0];\n if (entry) setViewportHeight(entry.contentRect.height);\n });\n observer.observe(node);\n return () => observer.disconnect();\n }, [open]);\n\n if (!open) {\n return null;\n }\n\n const totalHeight = rows.length * rowHeight;\n const maxScrollTop = Math.max(0, totalHeight - viewportHeight);\n const effectiveScrollTop = Math.min(scrollTop, maxScrollTop);\n const visibleCount = Math.ceil(viewportHeight / rowHeight) + OVERSCAN * 2;\n const startIndex = isVirtualized ? Math.max(0, Math.floor(effectiveScrollTop / rowHeight) - OVERSCAN) : 0;\n const endIndex = isVirtualized ? Math.min(rows.length, startIndex + visibleCount) : rows.length;\n const visibleRows = rows.slice(startIndex, endIndex);\n\n const scrollRowIntoView = (rowIndex: number) => {\n if (!isVirtualized) return;\n const rowTop = rowIndex * rowHeight;\n const rowBottom = rowTop + rowHeight;\n let next = scrollTop;\n if (rowTop < scrollTop) {\n next = rowTop;\n } else if (rowBottom > scrollTop + viewportHeight) {\n next = rowBottom - viewportHeight;\n } else {\n return;\n }\n setScrollTop(next);\n if (listRef.current) listRef.current.scrollTop = next;\n };\n\n const moveActiveIndex = (direction: 1 | -1) => {\n if (filteredCommands.length === 0) return;\n let next = activeIndex ?? (direction === 1 ? -1 : filteredCommands.length);\n for (let step = 0; step < filteredCommands.length; step++) {\n next = (next + direction + filteredCommands.length) % filteredCommands.length;\n if (!filteredCommands[next]?.disabled) {\n setActiveIndex(next);\n const rowIndex = itemRowIndices[next];\n if (rowIndex !== undefined) scrollRowIntoView(rowIndex);\n return;\n }\n }\n };\n\n const selectCommand = (command: CommandItem) => {\n if (command.disabled) return;\n command.onSelect();\n onOpenChange(false);\n };\n\n const handleKeyDown = (event: ReactKeyboardEvent<HTMLInputElement>) => {\n switch (event.key) {\n case \"ArrowDown\":\n event.preventDefault();\n moveActiveIndex(1);\n return;\n case \"ArrowUp\":\n event.preventDefault();\n moveActiveIndex(-1);\n return;\n case \"Enter\": {\n event.preventDefault();\n const active = activeIndex !== null ? filteredCommands[activeIndex] : undefined;\n if (active) selectCommand(active);\n return;\n }\n case \"Escape\":\n event.preventDefault();\n onOpenChange(false);\n return;\n default:\n }\n };\n\n const activeCommand = activeIndex !== null ? filteredCommands[activeIndex] : undefined;\n const activeOptionId = activeCommand ? `${listId}-option-${activeCommand.id}` : undefined;\n\n const renderRow = (row: Row, rowIndex: number, rowStyle?: CSSProperties) => {\n if (row.type === \"header\") {\n return (\n <div key={row.key} role=\"presentation\" className={groupHeader} style={rowStyle}>\n {row.group}\n </div>\n );\n }\n\n const { command, itemIndex } = row;\n const isActive = itemIndex === activeIndex;\n\n return (\n <div\n key={row.key}\n id={`${listId}-option-${command.id}`}\n role=\"option\"\n aria-selected={isActive}\n aria-disabled={command.disabled || undefined}\n data-active={isActive || undefined}\n className={optionClass}\n style={rowStyle}\n onMouseDown={(event) => {\n event.preventDefault();\n selectCommand(command);\n }}\n onMouseEnter={() => {\n if (!command.disabled) setActiveIndex(itemIndex);\n }}\n >\n {command.icon ? <span className={optionIcon}>{command.icon}</span> : null}\n <span className={optionLabel}>\n {command.label}\n {command.description ? <span className={optionDescription}>{command.description}</span> : null}\n </span>\n {command.shortcut ? <span className={shortcutClass}>{command.shortcut}</span> : null}\n </div>\n );\n };\n\n return (\n <FloatingPortal>\n <FloatingOverlay className={overlay} lockScroll>\n <FloatingFocusManager context={context} initialFocus={inputRef}>\n <div\n ref={refs.setFloating}\n className={palette}\n aria-label={ariaLabel ?? \"Command palette\"}\n {...getFloatingProps()}\n >\n <input\n ref={inputRef}\n type=\"text\"\n role=\"combobox\"\n className={inputEl}\n value={query}\n placeholder={placeholder}\n autoComplete=\"off\"\n aria-autocomplete=\"list\"\n aria-expanded={true}\n aria-controls={listId}\n aria-activedescendant={activeOptionId}\n onChange={(event) => setQuery(event.target.value)}\n onKeyDown={handleKeyDown}\n />\n <div\n ref={listRef}\n id={listId}\n role=\"listbox\"\n className={list}\n onScroll={(event) => setScrollTop(event.currentTarget.scrollTop)}\n >\n {filteredCommands.length === 0 ? (\n <div className={emptyState}>{emptyMessage}</div>\n ) : isVirtualized ? (\n <div className={virtualSpacer} style={{ height: totalHeight }}>\n {visibleRows.map((row, i) => {\n const rowIndex = startIndex + i;\n return renderRow(row, rowIndex, {\n position: \"absolute\",\n top: rowIndex * rowHeight,\n left: 0,\n right: 0,\n height: rowHeight\n });\n })}\n </div>\n ) : (\n rows.map((row, rowIndex) => renderRow(row, rowIndex))\n )}\n </div>\n </div>\n </FloatingFocusManager>\n </FloatingOverlay>\n </FloatingPortal>\n );\n}\n","import 'src/components/CommandPalette/CommandPalette.css.ts.vanilla.css?source=#H4sIAAAAAAAAA81XW4vbOBR-n1-hl9IW6sHOJL247NPuQhfaZdl5WVhKOLaObXVkyUhyYs8y_32RHDl2YudCW1oIJD7-jnT0feei3P4qyxIE_Qs4GoNruUHFoV2vo6U0-YqG5L8bQiqpmWFSxCRjDdL3N4QwodHEJLS_KdMVhzYmGcfGGoCzXATMYKk7Y6ANKGNffam1YVkbpFIYFCYmKQqDyr5KIH3IlawFjYnKE3gRviK7z-3ypUVUQCkTeWBkFZNotSmGRo6ZickG1Isg0BWkGPB8vV48tLDYfhm5K5YXF0ITaYwsT2MfAyYoNjGJ7sLw_c3Tze0BqdXu25MaOVKPWHNEUaYw7bhOJa9LcchMF0kquVSBrlUGKf4NTCP1QS1cUA4wRhtsjAfdOVAmhQkyKBlvPdSZEklbj4xCB02koqgCBZTV2oO7pwEh1Q7bBLoAKrc9ce5pAKwdcMuoKWISheEz-1hCE-xMq9dh1XhbgZ1gb8JOcZukGberF4xSdBTJ2nAmMCZCCpwSgYmqNr_zXoSFE-EgAhc5e2Qij_2JE9nsz--XP9pvrJFRIHQFCoW5kmZn1-wRR0Br-NhzF60uV3hUMd8q4b9LxfV02_19GnQOu1fO5p22E07atBwPnJzNO7UTThM0dgDvRF9elE5xXHFIsZCconK5NSPQp9rsi3U5uThn2vQr313bLXx5BG1MoDZyIMRYgkb7MPLJMDZMmRr4vQWrPp7lwUhQyMGwDR4V9PGCtj6qDwh0sNxq-nijETKYEbMFOpvpuvSnLM5m-hz2ONPnkBOZfgi9NC9OdYN_eumixR66xeHuA9MnpKzuw4jeOhe7aeBaVSZVGZO6qlCloJ2STjDlTuDIDm_DJZZTosrK5kGv5-ur9MzhjFoXN2h3GrdLTKxc32MIzutxvye3W9UOh35wDcDW_sGZ_5SqBN67JWfH7J4acbq3_3wZXytthagk64Q_n0X_UjAQQGo7y2eXUmcuQT2Rk63saHlQDALKNCQc6S_Pjarx-eer2vb-WELazONya6_Gc3v_kQ72fzMuEiZcupyplRNX5-6OXSgmHtydfC6Ij5Dgfma9vXay2DcxiUjUz5WSCT-rT2z7G-pUsbEE764k--JeeByELqQyab0fqeD2PiTt6mgmmkYpheyjib42cCwr094bGPx3SLrpO1f6ZR8nO1v6c9gfOey-eR8ejgVfL0__AwMAtED2DgAA';\nexport var emptyState = 'CommandPalette_emptyState__14otg5db';\nexport var groupHeader = 'CommandPalette_groupHeader__14otg5d5';\nexport var inputEl = 'CommandPalette_inputEl__14otg5d2';\nexport var list = 'CommandPalette_list__14otg5d3';\nexport var option = 'CommandPalette_option__14otg5d6';\nexport var optionDescription = 'CommandPalette_optionDescription__14otg5d9';\nexport var optionIcon = 'CommandPalette_optionIcon__14otg5d7';\nexport var optionLabel = 'CommandPalette_optionLabel__14otg5d8';\nexport var overlay = 'CommandPalette_overlay__14otg5d0';\nexport var palette = 'CommandPalette_palette__14otg5d1';\nexport var shortcut = 'CommandPalette_shortcut__14otg5da';\nexport var virtualSpacer = 'CommandPalette_virtualSpacer__14otg5d4';","import { useEffect } from \"react\";\n\nexport interface UseCommandPaletteShortcutOptions {\n key?: string;\n metaKey?: boolean;\n ctrlKey?: boolean;\n}\n\nfunction isMac(): boolean {\n if (typeof navigator === \"undefined\") return false;\n return /Mac|iPhone|iPad|iPod/.test(navigator.platform ?? navigator.userAgent ?? \"\");\n}\n\n/**\n * Attaches a document-level Cmd+K (Mac) / Ctrl+K (elsewhere) listener that\n * calls onOpenChange(true). Separate from CommandPalette so consumers can\n * wire their own trigger instead.\n */\nexport function useCommandPaletteShortcut(\n onOpenChange: (open: boolean) => void,\n options: UseCommandPaletteShortcutOptions = {}\n): void {\n const { key = \"k\", metaKey, ctrlKey } = options;\n\n useEffect(() => {\n const explicit = metaKey !== undefined || ctrlKey !== undefined;\n const useMeta = explicit ? Boolean(metaKey) : isMac();\n const useCtrl = explicit ? Boolean(ctrlKey) : !isMac();\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key.toLowerCase() !== key.toLowerCase()) return;\n if (event.metaKey !== useMeta) return;\n if (event.ctrlKey !== useCtrl) return;\n\n event.preventDefault();\n onOpenChange(true);\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [onOpenChange, key, metaKey, ctrlKey]);\n}\n","import type { ReactElement } from \"react\";\nimport { AxisBottom, AxisLeft } from \"@visx/axis\";\nimport { GridRows } from \"@visx/grid\";\nimport { Group } from \"@visx/group\";\nimport { LinePath } from \"@visx/shape\";\nimport { vars } from \"@vesture/tokens\";\nimport { buildLineChartLayout } from \"./LineChart.render\";\nimport { emptyState, root } from \"./LineChart.css\";\nimport type { LineChartBaseProps } from \"./types\";\n\nexport interface LineChartProps extends LineChartBaseProps {\n width: number;\n height: number;\n}\n\n/**\n * Server-safe, zero-JS line chart. Renders a static SVG with no event handlers — use it in\n * server components, static reports, or anywhere a hover tooltip/legend isn't needed. For a\n * dashboard-style chart with hover tooltips and a toggleable legend, use `InteractiveLineChart`\n * instead (it wraps this component and requires client-side JS).\n */\nexport function LineChart({\n data,\n series,\n width,\n height,\n margin,\n xScale\n}: LineChartProps): ReactElement {\n if (data.length === 0) {\n return (\n <div className={root} style={{ width, height }}>\n <div className={emptyState} style={{ width, height }}>\n No data\n </div>\n </div>\n );\n }\n\n const { scales, seriesLayouts } = buildLineChartLayout(data, series, width, height, margin, xScale);\n const { xScale: scaleX, yScale, innerWidth, innerHeight, margin: resolvedMargin } = scales;\n\n return (\n <div className={root}>\n <svg width={width} height={height} role=\"img\" aria-label=\"Line chart\">\n <Group left={resolvedMargin.left} top={resolvedMargin.top}>\n <GridRows scale={yScale} width={innerWidth} height={innerHeight} stroke={vars.chart.grid} />\n {seriesLayouts.map((s) => (\n <LinePath\n key={s.key}\n data={s.points}\n x={(p) => p.x}\n y={(p) => p.y}\n stroke={s.color}\n strokeWidth={2}\n fill=\"none\"\n />\n ))}\n <AxisBottom\n top={innerHeight}\n scale={scaleX}\n stroke={vars.chart.axis}\n tickStroke={vars.chart.axis}\n tickLabelProps={() => ({ fill: vars.chart.axis, fontSize: 11, textAnchor: \"middle\" })}\n />\n <AxisLeft\n scale={yScale}\n stroke={vars.chart.axis}\n tickStroke={vars.chart.axis}\n tickLabelProps={() => ({ fill: vars.chart.axis, fontSize: 11, textAnchor: \"end\", dx: \"-0.25em\" })}\n />\n </Group>\n </svg>\n </div>\n );\n}\n","import { scaleBand, scaleLinear, scaleTime } from \"@visx/scale\";\nimport { line as d3Line } from \"@visx/vendor/d3-shape\";\nimport type { ScaleBand, ScaleLinear, ScaleTime } from \"@visx/vendor/d3-scale\";\nimport { vars } from \"@vesture/tokens\";\nimport type {\n LineChartDataPoint,\n LineChartMargin,\n LineChartSeries,\n LineChartXScaleType\n} from \"./types\";\n\nexport const DEFAULT_MARGIN: LineChartMargin = { top: 16, right: 16, bottom: 32, left: 48 };\n\n/**\n * Fixed-order categorical cycle backing every chart component. A series index beyond 8\n * wraps back around to series1 — with more than 8 series, colors repeat and the legend\n * label becomes the only reliable way to tell those series apart.\n */\nexport const SERIES_COLOR_CYCLE: readonly string[] = [\n vars.chart.series1,\n vars.chart.series2,\n vars.chart.series3,\n vars.chart.series4,\n vars.chart.series5,\n vars.chart.series6,\n vars.chart.series7,\n vars.chart.series8\n];\n\nexport function getSeriesColor(series: LineChartSeries, index: number): string {\n return series.color ?? SERIES_COLOR_CYCLE[index % SERIES_COLOR_CYCLE.length]!;\n}\n\nexport function resolveMargin(margin?: Partial<LineChartMargin>): LineChartMargin {\n return { ...DEFAULT_MARGIN, ...margin };\n}\n\nexport function inferXScaleType(data: LineChartDataPoint[]): LineChartXScaleType {\n const first = data[0]?.x;\n if (first instanceof Date) return \"time\";\n if (typeof first === \"number\") return \"linear\";\n return \"band\";\n}\n\nexport function numericValue(value: string | number | Date | undefined): number | undefined {\n if (value === undefined) return undefined;\n const n = value instanceof Date ? value.getTime() : Number(value);\n return Number.isFinite(n) ? n : undefined;\n}\n\nexport type LineChartXScale =\n | ScaleTime<number, number>\n | ScaleLinear<number, number>\n | ScaleBand<string>;\n\nexport interface LineChartScales {\n xScale: LineChartXScale;\n yScale: ScaleLinear<number, number>;\n xScaleType: LineChartXScaleType;\n innerWidth: number;\n innerHeight: number;\n margin: LineChartMargin;\n}\n\nexport function buildScales(\n data: LineChartDataPoint[],\n series: LineChartSeries[],\n width: number,\n height: number,\n margin: LineChartMargin,\n xScaleType: LineChartXScaleType,\n /** When true, the y domain is computed from each data point's cumulative series sum rather\n * than the per-series max — used by AreaChart's stacked mode, which reuses this function\n * directly rather than re-deriving y-domain logic. LineChart itself never passes this. */\n stacked = false\n): LineChartScales {\n const innerWidth = Math.max(0, width - margin.left - margin.right);\n const innerHeight = Math.max(0, height - margin.top - margin.bottom);\n\n let xScale: LineChartXScale;\n if (xScaleType === \"time\") {\n const xValues = data.map((d) => new Date(d.x as string | number | Date).getTime());\n xScale = scaleTime({\n domain: [Math.min(...xValues), Math.max(...xValues)],\n range: [0, innerWidth]\n });\n } else if (xScaleType === \"linear\") {\n const xValues = data.map((d) => Number(d.x));\n xScale = scaleLinear({\n domain: [Math.min(...xValues), Math.max(...xValues)],\n range: [0, innerWidth]\n });\n } else {\n xScale = scaleBand({\n domain: data.map((d) => String(d.x)),\n range: [0, innerWidth],\n padding: 0.2\n });\n }\n\n const yValues = stacked\n ? data.map((d) => series.reduce((sum, s) => sum + (numericValue(d[s.key]) ?? 0), 0))\n : data.flatMap((d) =>\n series\n .map((s) => numericValue(d[s.key]))\n .filter((v): v is number => v !== undefined)\n );\n const yMin = stacked ? 0 : yValues.length > 0 ? Math.min(0, ...yValues) : 0;\n const yMax = yValues.length > 0 ? Math.max(...yValues) : 1;\n const yScale = scaleLinear({\n domain: [yMin, yMax],\n range: [innerHeight, 0],\n nice: true\n });\n\n return { xScale, yScale, xScaleType, innerWidth, innerHeight, margin };\n}\n\nexport function getXPixel(scales: LineChartScales, x: LineChartDataPoint[\"x\"]): number | undefined {\n const { xScale, xScaleType } = scales;\n if (xScaleType === \"band\") {\n const pos = (xScale as ScaleBand<string>)(String(x));\n if (pos === undefined) return undefined;\n return pos + (xScale as ScaleBand<string>).bandwidth() / 2;\n }\n if (xScaleType === \"time\") {\n return (xScale as ScaleTime<number, number>)(new Date(x as string | number | Date));\n }\n return (xScale as ScaleLinear<number, number>)(Number(x));\n}\n\nexport function getYPixel(scales: LineChartScales, value: string | number | Date | undefined): number | undefined {\n const n = numericValue(value);\n if (n === undefined) return undefined;\n return scales.yScale(n);\n}\n\nexport interface LineChartSeriesPoint {\n dataIndex: number;\n x: number;\n y: number;\n}\n\nexport interface LineChartSeriesLayout {\n key: string;\n label: string;\n color: string;\n /** Pixel-space points, already positioned within the scales' inner plot area. Points whose value is missing/non-numeric are omitted, which splits the line into gapped segments. */\n points: LineChartSeriesPoint[];\n /** SVG path `d` attribute for this series' points, generated with a linear curve. Empty string when fewer than 2 points are defined. */\n path: string;\n}\n\nconst pathGenerator = d3Line<LineChartSeriesPoint>()\n .x((p) => p.x)\n .y((p) => p.y);\n\n/**\n * The shared entry point: given data/series/dimensions, computes scales and per-series\n * pixel-space geometry once. Both the static `LineChart` (feeding this into visx's\n * `LinePath`) and `InteractiveLineChart` (feeding this into hover hit-testing) call this\n * same function rather than re-deriving scales/points independently.\n */\nexport function buildLineChartLayout(\n data: LineChartDataPoint[],\n series: LineChartSeries[],\n width: number,\n height: number,\n margin?: Partial<LineChartMargin>,\n xScaleType?: LineChartXScaleType\n): { scales: LineChartScales; seriesLayouts: LineChartSeriesLayout[] } {\n const resolvedMargin = resolveMargin(margin);\n const resolvedXScaleType = xScaleType ?? inferXScaleType(data);\n const scales = buildScales(data, series, width, height, resolvedMargin, resolvedXScaleType);\n\n const seriesLayouts: LineChartSeriesLayout[] = series.map((s, index) => {\n const points: LineChartSeriesPoint[] = [];\n data.forEach((d, dataIndex) => {\n const x = getXPixel(scales, d.x);\n const y = getYPixel(scales, d[s.key]);\n if (x !== undefined && y !== undefined) {\n points.push({ dataIndex, x, y });\n }\n });\n return {\n key: s.key,\n label: s.label,\n color: getSeriesColor(s, index),\n points,\n path: points.length >= 2 ? pathGenerator(points) ?? \"\" : \"\"\n };\n });\n\n return { scales, seriesLayouts };\n}\n\n/** Finds the data point whose x position is closest to `pixelX` (an offset within the plot's inner area, e.g. from a mousemove event minus the left margin). Used by the interactive hover overlay. */\nexport function findNearestDataIndex(\n data: LineChartDataPoint[],\n scales: LineChartScales,\n pixelX: number\n): number | null {\n if (data.length === 0) return null;\n\n let nearestIndex = 0;\n let nearestDistance = Infinity;\n data.forEach((d, index) => {\n const x = getXPixel(scales, d.x);\n if (x === undefined) return;\n const distance = Math.abs(x - pixelX);\n if (distance < nearestDistance) {\n nearestDistance = distance;\n nearestIndex = index;\n }\n });\n\n return nearestDistance === Infinity ? null : nearestIndex;\n}\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n let d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n if (d > 15) return append;\n const k = 10 ** d;\n return function(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\n\nexport class Path {\n constructor(digits) {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n moveTo(x, y) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append`Z`;\n }\n }\n lineTo(x, y) {\n this._append`L${this._x1 = +x},${this._y1 = +y}`;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n }\n arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append`M${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._append`L${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Otherwise, draw an arc!\n else {\n let x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n }\n\n this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n }\n }\n arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append`M${x0},${y0}`;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._append`L${x0},${y0}`;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n }\n }\n rect(x, y, w, h) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n }\n toString() {\n return this._;\n }\n}\n\nexport function path() {\n return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n return new Path(+digits);\n}\n","import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n let digits = 3;\n\n shape.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) {\n digits = null;\n } else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n return shape;\n };\n\n return () => new Path(digits);\n}\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(line);\n\n x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x0, y0, y1) {\n var x1 = null,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(area);\n\n x0 = typeof x0 === \"function\" ? x0 : (x0 === undefined) ? pointX : constant(+x0);\n y0 = typeof y0 === \"function\" ? y0 : (y0 === undefined) ? constant(0) : constant(+y0);\n y1 = typeof y1 === \"function\" ? y1 : (y1 === undefined) ? pointY : constant(+y1);\n\n function area(data) {\n var i,\n j,\n k,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","import 'src/components/charts/internal/chartSurfaces.css.ts.vanilla.css?source=#H4sIAAAAAAAAA7WUsW7bMBCGdz8FlwLNwEB20jRQtkzp0A51h24GJZ4kxhSpkifLStF3L0iLtJRKQYq0iwCevrsjf_68y7xiBretKVgOdme0xt1O3ajHep2QnytCGm0FCq1SYkAyFAe4WxHSCY5VStZJ8u5u9Wt1Oa0CdYP9FhlCqLX2tbiwjWR9SgoJR1eGSVEqKhBqm5IcFIJx4cfWoih6mmuFoHD8K9dSm5QcmHlPqe9Kx902-55turW9cGyhFdKC1UL2IcOHMs37iCZn1IonmIAusK0jenUxc1bUWqJowkE3z0RjmdWyRS9ao4U7BoUDKLQpUVr5eMbyfWl0q_j0YEPp-_g77qS5WNBiSPkGR4zwj38nxncb0Y1HpVBAKxBlhRPYxR98-Is2NZMxLfNpmTYcDDWMi9aGxNOK2ii4GrOD407oOBbobkxb7CU8o30s0P2YXhby3gNx98ZnNYxzoUqKuglJtmE50GOUp5yAmUbU9etYCQVOybMg1YQ0Y9Xn0Uwfqa0Y113k_IrW0UvowScqFIdjStabJFl2-VfdBaNf_dWLLtmLUi3123YM8yq0vJ62FMq7L5M6349m0m3jNxJMOSxfclzRymjQ4bFIcMIZofYpmdNDQgnuPZ429mFeC1-lM-7o7jurw_kihO9cM1MK9ae1pje7sJ9PCHXY082sWG-7pumoQsOUbZgBhWeFz1NtsKnXj5C8Nda9sWEG_q_x_HwougXF0TScneFn9R4E56CChh-9hgsVP7cI8fKufW8Xphxybdhp-nvNsTK6LavFvlOT377K5Otk6vKwfqPNfwNQ2XNIDggAAA';\nimport 'src/components/charts/LineChart/LineChart.css.ts.vanilla.css?source=LkxpbmVDaGFydF9vdmVybGF5UmVjdF9fMWtmdzBubzAgewogIGZpbGw6IHRyYW5zcGFyZW50OwogIGN1cnNvcjogY3Jvc3NoYWlyOwp9';\nexport var emptyState = 'chartSurfaces_emptyState__n6njm11';\nexport var legend = 'chartSurfaces_legend__n6njm15';\nexport var legendItem = 'chartSurfaces_legendItem__n6njm16';\nexport var legendItemHidden = 'chartSurfaces_legendItemHidden__n6njm17';\nexport var legendSwatch = 'chartSurfaces_legendSwatch__n6njm18';\nexport var overlayRect = 'LineChart_overlayRect__1kfw0no0';\nexport var root = 'chartSurfaces_root__n6njm10';\nexport var tooltip = 'chartSurfaces_tooltip__n6njm12';\nexport var tooltipRow = 'chartSurfaces_tooltipRow__n6njm13';\nexport var tooltipSwatch = 'chartSurfaces_tooltipSwatch__n6njm14';","\"use client\";\n\nimport { useMemo, useState } from \"react\";\nimport type { MouseEvent as ReactMouseEvent, ReactElement } from \"react\";\nimport { ParentSize } from \"@visx/responsive\";\nimport { TooltipWithBounds, useTooltip } from \"@visx/tooltip\";\nimport { LineChart } from \"./LineChart\";\nimport { buildLineChartLayout, findNearestDataIndex, getSeriesColor, getXPixel } from \"./LineChart.render\";\nimport {\n legend,\n legendItem,\n legendItemHidden,\n legendSwatch,\n overlayRect,\n root,\n tooltip as tooltipClass,\n tooltipRow,\n tooltipSwatch\n} from \"./LineChart.css\";\nimport type { LineChartBaseProps, LineChartDataPoint, LineChartSeries } from \"./types\";\n\ninterface TooltipDatum {\n dataPoint: LineChartDataPoint;\n visibleSeries: LineChartSeries[];\n}\n\nexport interface InteractiveLineChartProps extends LineChartBaseProps {\n /** Fixed chart height; width auto-tracks the parent container's size via ResizeObserver. */\n height?: number;\n}\n\n/**\n * Client-rendered line chart for dashboards: auto-sizes to its parent (via `@visx/responsive`'s\n * `ParentSize`), and adds a hover tooltip plus a click-to-toggle legend. Requires client-side JS\n * (\"use client\") — for server components or static output where no interaction is needed, use\n * the static `LineChart` instead.\n */\nexport function InteractiveLineChart({\n data,\n series,\n margin,\n xScale,\n height = 320\n}: InteractiveLineChartProps): ReactElement {\n const [hiddenKeys, setHiddenKeys] = useState<ReadonlySet<string>>(new Set());\n\n // Colors are assigned once from each series' original position, before any filtering, so a\n // series keeps its color when a sibling is toggled off (the cycle index would otherwise\n // shift for everything after the hidden series).\n const coloredSeries = useMemo(\n () => series.map((s, index) => ({ ...s, color: s.color ?? getSeriesColor(s, index) })),\n [series]\n );\n const visibleSeries = useMemo(\n () => coloredSeries.filter((s) => !hiddenKeys.has(s.key)),\n [coloredSeries, hiddenKeys]\n );\n\n const { tooltipData, tooltipLeft, tooltipTop, tooltipOpen, showTooltip, hideTooltip } =\n useTooltip<TooltipDatum>();\n\n function toggleSeries(key: string): void {\n setHiddenKeys((prev) => {\n const next = new Set(prev);\n if (next.has(key)) {\n next.delete(key);\n } else {\n next.add(key);\n }\n return next;\n });\n }\n\n return (\n <div className={root}>\n <ParentSize initialSize={{ width: 600, height }} style={{ height }}>\n {({ width }) => {\n if (width === 0) return null;\n\n const { scales } = buildLineChartLayout(data, visibleSeries, width, height, margin, xScale);\n\n function handleMouseMove(event: ReactMouseEvent<SVGRectElement>): void {\n const bounds = event.currentTarget.getBoundingClientRect();\n const pixelX = event.clientX - bounds.left;\n const dataIndex = findNearestDataIndex(data, scales, pixelX);\n if (dataIndex === null) {\n hideTooltip();\n return;\n }\n const dataPoint = data[dataIndex]!;\n const xPixel = getXPixel(scales, dataPoint.x) ?? pixelX;\n showTooltip({\n tooltipData: { dataPoint, visibleSeries },\n tooltipLeft: scales.margin.left + xPixel,\n tooltipTop: 0\n });\n }\n\n return (\n <div style={{ position: \"relative\", width, height }}>\n <LineChart\n data={data}\n series={visibleSeries}\n width={width}\n height={height}\n margin={margin}\n xScale={xScale}\n />\n <svg\n width={width}\n height={height}\n style={{ position: \"absolute\", top: 0, left: 0 }}\n aria-hidden=\"true\"\n >\n <rect\n className={overlayRect}\n data-testid=\"line-chart-overlay\"\n x={scales.margin.left}\n y={scales.margin.top}\n width={scales.innerWidth}\n height={scales.innerHeight}\n onMouseMove={handleMouseMove}\n onMouseLeave={() => hideTooltip()}\n />\n </svg>\n {tooltipOpen && tooltipData ? (\n <TooltipWithBounds left={tooltipLeft} top={tooltipTop} className={tooltipClass}>\n <div>{String(tooltipData.dataPoint.x)}</div>\n {tooltipData.visibleSeries.map((s) => (\n <div key={s.key} className={tooltipRow}>\n <span className={tooltipSwatch} style={{ background: s.color }} />\n <span>\n {s.label}: {String(tooltipData.dataPoint[s.key])}\n </span>\n </div>\n ))}\n </TooltipWithBounds>\n ) : null}\n </div>\n );\n }}\n </ParentSize>\n <div className={legend}>\n {coloredSeries.map((s) => {\n const hidden = hiddenKeys.has(s.key);\n return (\n <button\n key={s.key}\n type=\"button\"\n className={[legendItem, hidden ? legendItemHidden : null].filter(Boolean).join(\" \")}\n onClick={() => toggleSeries(s.key)}\n aria-pressed={!hidden}\n >\n <span className={legendSwatch} style={{ background: s.color }} />\n {s.label}\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n","import type { ReactElement } from \"react\";\nimport { AxisBottom, AxisLeft } from \"@visx/axis\";\nimport { GridRows } from \"@visx/grid\";\nimport { Group } from \"@visx/group\";\nimport { BarGroup, BarStack } from \"@visx/shape\";\nimport { vars } from \"@vesture/tokens\";\nimport { buildBarChartLayout, SERIES_COLOR_CYCLE } from \"./BarChart.render\";\nimport { emptyState, root } from \"./BarChart.css\";\nimport type { BarChartBaseProps } from \"./types\";\n\nexport interface BarChartProps extends BarChartBaseProps {\n width: number;\n height: number;\n}\n\n/**\n * Server-safe, zero-JS bar chart. Renders a static SVG with no event handlers — use it in\n * server components, static reports, or anywhere a hover tooltip/legend isn't needed. For a\n * dashboard-style chart with hover tooltips and a toggleable legend, use `InteractiveBarChart`\n * instead (it wraps this component and requires client-side JS).\n */\nexport function BarChart({\n data,\n series,\n width,\n height,\n margin,\n layout = \"grouped\"\n}: BarChartProps): ReactElement {\n if (data.length === 0) {\n return (\n <div className={root} style={{ width, height }}>\n <div className={emptyState} style={{ width, height }}>\n No data\n </div>\n </div>\n );\n }\n\n const { scales, colorMap } = buildBarChartLayout(data, series, width, height, margin, layout);\n const { x0Scale, x1Scale, xScale, yScale, innerWidth, innerHeight, margin: resolvedMargin } = scales;\n const keys = series.map((s) => s.key);\n const color = (key: string, index: number): string => colorMap[key] ?? SERIES_COLOR_CYCLE[index % 8]!;\n\n return (\n <div className={root}>\n <svg width={width} height={height} role=\"img\" aria-label=\"Bar chart\">\n <Group left={resolvedMargin.left} top={resolvedMargin.top}>\n <GridRows scale={yScale} width={innerWidth} height={innerHeight} stroke={vars.chart.grid} />\n {layout === \"stacked\" ? (\n <BarStack data={data} keys={keys} x={(d) => d.category} xScale={xScale} yScale={yScale} color={color} />\n ) : (\n <BarGroup\n data={data}\n keys={keys}\n height={innerHeight}\n x0={(d) => d.category}\n x0Scale={x0Scale}\n x1Scale={x1Scale!}\n yScale={yScale}\n color={color}\n />\n )}\n <AxisBottom\n top={innerHeight}\n scale={x0Scale}\n stroke={vars.chart.axis}\n tickStroke={vars.chart.axis}\n tickLabelProps={() => ({ fill: vars.chart.axis, fontSize: 11, textAnchor: \"middle\" })}\n />\n <AxisLeft\n scale={yScale}\n stroke={vars.chart.axis}\n tickStroke={vars.chart.axis}\n tickLabelProps={() => ({ fill: vars.chart.axis, fontSize: 11, textAnchor: \"end\", dx: \"-0.25em\" })}\n />\n </Group>\n </svg>\n </div>\n );\n}\n","import { scaleBand, scaleLinear } from \"@visx/scale\";\nimport type { ScaleBand, ScaleLinear } from \"@visx/vendor/d3-scale\";\nimport { vars } from \"@vesture/tokens\";\nimport type { BarChartDataPoint, BarChartLayout, BarChartMargin, BarChartSeries } from \"./types\";\n\nexport const DEFAULT_MARGIN: BarChartMargin = { top: 16, right: 16, bottom: 32, left: 48 };\n\n/**\n * Fixed-order categorical cycle backing every chart component. A series index beyond 8\n * wraps back around to series1 — with more than 8 series, colors repeat and the legend\n * label becomes the only reliable way to tell those series apart.\n */\nexport const SERIES_COLOR_CYCLE: readonly string[] = [\n vars.chart.series1,\n vars.chart.series2,\n vars.chart.series3,\n vars.chart.series4,\n vars.chart.series5,\n vars.chart.series6,\n vars.chart.series7,\n vars.chart.series8\n];\n\nexport function getSeriesColor(series: BarChartSeries, index: number): string {\n return series.color ?? SERIES_COLOR_CYCLE[index % SERIES_COLOR_CYCLE.length]!;\n}\n\n/** A `(key) => color` lookup, in the shape `@visx/shape`'s `BarGroup`/`BarStack` expect for their `color` prop. */\nexport function buildSeriesColorMap(series: BarChartSeries[]): Record<string, string> {\n const map: Record<string, string> = {};\n series.forEach((s, index) => {\n map[s.key] = getSeriesColor(s, index);\n });\n return map;\n}\n\nexport function resolveMargin(margin?: Partial<BarChartMargin>): BarChartMargin {\n return { ...DEFAULT_MARGIN, ...margin };\n}\n\nfunction numericValue(value: string | number | undefined): number {\n if (value === undefined) return 0;\n const n = Number(value);\n return Number.isFinite(n) ? n : 0;\n}\n\nexport interface BarChartScales {\n /** Category (band) scale — positions each category's bar/bar-group along x. */\n x0Scale: ScaleBand<string>;\n /** Per-series position within a category's group. Only set for `layout: \"grouped\"`. */\n x1Scale?: ScaleBand<string>;\n /** Alias for `x0Scale` — the scale `AxisBottom` and `BarStack`'s `xScale` prop consume. */\n xScale: ScaleBand<string>;\n yScale: ScaleLinear<number, number>;\n layout: BarChartLayout;\n innerWidth: number;\n innerHeight: number;\n margin: BarChartMargin;\n}\n\n/**\n * Computes the category/value scales for a bar chart. Bar *position* math (grouped\n * side-by-side offsets, stacked cumulative heights) is intentionally left to `@visx/shape`'s\n * `BarGroup`/`BarStack` components in the `.tsx` files, which already solve it correctly from\n * these scales — this only derives the scales and the color-per-series lookup, which both the\n * static `BarChart` and `InteractiveBarChart` consume identically.\n */\nexport function buildScales(\n data: BarChartDataPoint[],\n series: BarChartSeries[],\n width: number,\n height: number,\n margin: BarChartMargin,\n layout: BarChartLayout\n): BarChartScales {\n const innerWidth = Math.max(0, width - margin.left - margin.right);\n const innerHeight = Math.max(0, height - margin.top - margin.bottom);\n\n const x0Scale = scaleBand<string>({\n domain: data.map((d) => d.category),\n range: [0, innerWidth],\n padding: 0.2\n });\n\n const x1Scale =\n layout === \"grouped\"\n ? scaleBand<string>({\n domain: series.map((s) => s.key),\n range: [0, x0Scale.bandwidth()],\n padding: 0.1\n })\n : undefined;\n\n const yMax =\n layout === \"stacked\"\n ? Math.max(0, ...data.map((d) => series.reduce((sum, s) => sum + numericValue(d[s.key]), 0)))\n : Math.max(0, ...data.flatMap((d) => series.map((s) => numericValue(d[s.key]))));\n\n const yScale = scaleLinear<number>({\n domain: [0, yMax > 0 ? yMax : 1],\n range: [innerHeight, 0],\n nice: true\n });\n\n return { x0Scale, x1Scale, xScale: x0Scale, yScale, layout, innerWidth, innerHeight, margin };\n}\n\n/**\n * The shared entry point: given data/series/dimensions, resolves the margin and computes\n * scales + the series color map once. Both the static `BarChart` (feeding these into visx's\n * `BarGroup`/`BarStack`) and `InteractiveBarChart` (feeding these into per-bar hover handlers)\n * call this same function rather than re-deriving scales/colors independently.\n */\nexport function buildBarChartLayout(\n data: BarChartDataPoint[],\n series: BarChartSeries[],\n width: number,\n height: number,\n margin?: Partial<BarChartMargin>,\n layout: BarChartLayout = \"grouped\"\n): { scales: BarChartScales; colorMap: Record<string, string> } {\n const resolvedMargin = resolveMargin(margin);\n const scales = buildScales(data, series, width, height, resolvedMargin, layout);\n const colorMap = buildSeriesColorMap(series);\n return { scales, colorMap };\n}\n","import 'src/components/charts/internal/chartSurfaces.css.ts.vanilla.css?source=#H4sIAAAAAAAAA7WUsW7bMBCGdz8FlwLNwEB20jRQtkzp0A51h24GJZ4kxhSpkifLStF3L0iLtJRKQYq0iwCevrsjf_68y7xiBretKVgOdme0xt1O3ajHep2QnytCGm0FCq1SYkAyFAe4WxHSCY5VStZJ8u5u9Wt1Oa0CdYP9FhlCqLX2tbiwjWR9SgoJR1eGSVEqKhBqm5IcFIJx4cfWoih6mmuFoHD8K9dSm5QcmHlPqe9Kx902-55turW9cGyhFdKC1UL2IcOHMs37iCZn1IonmIAusK0jenUxc1bUWqJowkE3z0RjmdWyRS9ao4U7BoUDKLQpUVr5eMbyfWl0q_j0YEPp-_g77qS5WNBiSPkGR4zwj38nxncb0Y1HpVBAKxBlhRPYxR98-Is2NZMxLfNpmTYcDDWMi9aGxNOK2ii4GrOD407oOBbobkxb7CU8o30s0P2YXhby3gNx98ZnNYxzoUqKuglJtmE50GOUp5yAmUbU9etYCQVOybMg1YQ0Y9Xn0Uwfqa0Y113k_IrW0UvowScqFIdjStabJFl2-VfdBaNf_dWLLtmLUi3123YM8yq0vJ62FMq7L5M6349m0m3jNxJMOSxfclzRymjQ4bFIcMIZofYpmdNDQgnuPZ429mFeC1-lM-7o7jurw_kihO9cM1MK9ae1pje7sJ9PCHXY082sWG-7pumoQsOUbZgBhWeFz1NtsKnXj5C8Nda9sWEG_q_x_HwougXF0TScneFn9R4E56CChh-9hgsVP7cI8fKufW8Xphxybdhp-nvNsTK6LavFvlOT377K5Otk6vKwfqPNfwNQ2XNIDggAAA';\nexport var emptyState = 'chartSurfaces_emptyState__n6njm11';\nexport var legend = 'chartSurfaces_legend__n6njm15';\nexport var legendItem = 'chartSurfaces_legendItem__n6njm16';\nexport var legendItemHidden = 'chartSurfaces_legendItemHidden__n6njm17';\nexport var legendSwatch = 'chartSurfaces_legendSwatch__n6njm18';\nexport var root = 'chartSurfaces_root__n6njm10';\nexport var tooltip = 'chartSurfaces_tooltip__n6njm12';\nexport var tooltipRow = 'chartSurfaces_tooltipRow__n6njm13';\nexport var tooltipSwatch = 'chartSurfaces_tooltipSwatch__n6njm14';","\"use client\";\n\nimport { useMemo, useState } from \"react\";\nimport type { MouseEvent as ReactMouseEvent, ReactElement } from \"react\";\nimport { AxisBottom, AxisLeft } from \"@visx/axis\";\nimport { GridRows } from \"@visx/grid\";\nimport { Group } from \"@visx/group\";\nimport { ParentSize } from \"@visx/responsive\";\nimport { Bar, BarGroup, BarStack } from \"@visx/shape\";\nimport { TooltipWithBounds, useTooltip } from \"@visx/tooltip\";\nimport { vars } from \"@vesture/tokens\";\nimport { SERIES_COLOR_CYCLE, buildBarChartLayout, getSeriesColor } from \"./BarChart.render\";\nimport {\n emptyState,\n legend,\n legendItem,\n legendItemHidden,\n legendSwatch,\n root,\n tooltip as tooltipClass,\n tooltipRow,\n tooltipSwatch\n} from \"./BarChart.css\";\nimport type { BarChartBaseProps, BarChartDataPoint, BarChartSeries } from \"./types\";\n\ninterface TooltipDatum {\n category: string;\n series: BarChartSeries;\n value: number;\n}\n\nexport interface InteractiveBarChartProps extends BarChartBaseProps {\n /** Fixed chart height; width auto-tracks the parent container's size via ResizeObserver. */\n height?: number;\n}\n\n/**\n * Client-rendered bar chart for dashboards: auto-sizes to its parent (via `@visx/responsive`'s\n * `ParentSize`), and adds a per-bar hover tooltip plus a click-to-toggle legend. Requires\n * client-side JS (\"use client\") — for server components or static output where no interaction\n * is needed, use the static `BarChart` instead.\n */\nexport function InteractiveBarChart({\n data,\n series,\n margin,\n layout = \"grouped\",\n height = 320\n}: InteractiveBarChartProps): ReactElement {\n const [hiddenKeys, setHiddenKeys] = useState<ReadonlySet<string>>(new Set());\n\n // Colors are assigned once from each series' original position, before any filtering, so a\n // series keeps its color when a sibling is toggled off (the cycle index would otherwise\n // shift for everything after the hidden series).\n const coloredSeries = useMemo(\n () => series.map((s, index) => ({ ...s, color: s.color ?? getSeriesColor(s, index) })),\n [series]\n );\n const visibleSeries = useMemo(\n () => coloredSeries.filter((s) => !hiddenKeys.has(s.key)),\n [coloredSeries, hiddenKeys]\n );\n\n const { tooltipData, tooltipLeft, tooltipTop, tooltipOpen, showTooltip, hideTooltip } =\n useTooltip<TooltipDatum>();\n\n function toggleSeries(key: string): void {\n setHiddenKeys((prev) => {\n const next = new Set(prev);\n if (next.has(key)) {\n next.delete(key);\n } else {\n next.add(key);\n }\n return next;\n });\n }\n\n if (data.length === 0) {\n return (\n <div className={root} style={{ height }}>\n <div className={emptyState} style={{ height }}>\n No data\n </div>\n </div>\n );\n }\n\n return (\n <div className={root}>\n <ParentSize initialSize={{ width: 600, height }} style={{ height }}>\n {({ width }) => {\n if (width === 0) return null;\n\n const { scales, colorMap } = buildBarChartLayout(data, visibleSeries, width, height, margin, layout);\n const { x0Scale, x1Scale, xScale, yScale, innerWidth, innerHeight, margin: resolvedMargin } = scales;\n const keys = visibleSeries.map((s) => s.key);\n const seriesByKey = new Map(visibleSeries.map((s) => [s.key, s]));\n const color = (key: string, index: number): string => colorMap[key] ?? SERIES_COLOR_CYCLE[index % 8]!;\n\n function handleBarHover(\n categoryValue: string,\n seriesKey: string,\n value: number,\n event: ReactMouseEvent<SVGRectElement>\n ): void {\n const s = seriesByKey.get(seriesKey);\n if (!s) return;\n const bounds = event.currentTarget as SVGRectElement;\n const x = Number(bounds.getAttribute(\"x\") ?? 0);\n const y = Number(bounds.getAttribute(\"y\") ?? 0);\n const barWidth = Number(bounds.getAttribute(\"width\") ?? 0);\n showTooltip({\n tooltipData: { category: categoryValue, series: s, value },\n tooltipLeft: resolvedMargin.left + x + barWidth / 2,\n tooltipTop: resolvedMargin.top + y\n });\n }\n\n return (\n <div style={{ position: \"relative\", width, height }}>\n <svg width={width} height={height} role=\"img\" aria-label=\"Bar chart\">\n <Group left={resolvedMargin.left} top={resolvedMargin.top}>\n <GridRows scale={yScale} width={innerWidth} height={innerHeight} stroke={vars.chart.grid} />\n {layout === \"stacked\" ? (\n <BarStack<BarChartDataPoint, string>\n data={data}\n keys={keys}\n x={(d) => d.category}\n xScale={xScale}\n yScale={yScale}\n color={color}\n >\n {(barStacks) =>\n barStacks.map((barStack) =>\n barStack.bars.map((bar) => (\n <Bar\n key={`bar-stack-${barStack.index}-${bar.index}`}\n x={bar.x}\n y={bar.y}\n width={bar.width}\n height={bar.height}\n fill={bar.color}\n onMouseEnter={(event) =>\n handleBarHover(\n bar.bar.data.category,\n String(barStack.key),\n Number(bar.bar.data[barStack.key]),\n event\n )\n }\n onMouseLeave={() => hideTooltip()}\n />\n ))\n )\n }\n </BarStack>\n ) : (\n <BarGroup<BarChartDataPoint, string>\n data={data}\n keys={keys}\n height={innerHeight}\n x0={(d) => d.category}\n x0Scale={x0Scale}\n x1Scale={x1Scale!}\n yScale={yScale}\n color={color}\n >\n {(barGroups) =>\n barGroups.map((barGroup) => (\n <Group key={`bar-group-${barGroup.index}`} left={barGroup.x0}>\n {barGroup.bars.map((bar) => (\n <Bar\n key={`bar-group-bar-${barGroup.index}-${bar.key}`}\n x={bar.x}\n y={bar.y}\n width={bar.width}\n height={bar.height}\n fill={bar.color}\n onMouseEnter={(event) =>\n handleBarHover(data[barGroup.index]!.category, String(bar.key), bar.value, event)\n }\n onMouseLeave={() => hideTooltip()}\n />\n ))}\n </Group>\n ))\n }\n </BarGroup>\n )}\n <AxisBottom\n top={innerHeight}\n scale={x0Scale}\n stroke={vars.chart.axis}\n tickStroke={vars.chart.axis}\n tickLabelProps={() => ({ fill: vars.chart.axis, fontSize: 11, textAnchor: \"middle\" })}\n />\n <AxisLeft\n scale={yScale}\n stroke={vars.chart.axis}\n tickStroke={vars.chart.axis}\n tickLabelProps={() => ({\n fill: vars.chart.axis,\n fontSize: 11,\n textAnchor: \"end\",\n dx: \"-0.25em\"\n })}\n />\n </Group>\n </svg>\n {tooltipOpen && tooltipData ? (\n <TooltipWithBounds left={tooltipLeft} top={tooltipTop} className={tooltipClass}>\n <div>{tooltipData.category}</div>\n <div className={tooltipRow}>\n <span className={tooltipSwatch} style={{ background: tooltipData.series.color }} />\n <span>\n {tooltipData.series.label}: {tooltipData.value}\n </span>\n </div>\n </TooltipWithBounds>\n ) : null}\n </div>\n );\n }}\n </ParentSize>\n <div className={legend}>\n {coloredSeries.map((s) => {\n const hidden = hiddenKeys.has(s.key);\n return (\n <button\n key={s.key}\n type=\"button\"\n className={[legendItem, hidden ? legendItemHidden : null].filter(Boolean).join(\" \")}\n onClick={() => toggleSeries(s.key)}\n aria-pressed={!hidden}\n >\n <span className={legendSwatch} style={{ background: s.color }} />\n {s.label}\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n","import type { ReactElement } from \"react\";\nimport { AxisBottom, AxisLeft } from \"@visx/axis\";\nimport { GridRows } from \"@visx/grid\";\nimport { Group } from \"@visx/group\";\nimport { Area } from \"@visx/shape\";\nimport { vars } from \"@vesture/tokens\";\nimport { buildAreaChartLayout } from \"./AreaChart.render\";\nimport { emptyState, root } from \"./AreaChart.css\";\nimport type { AreaChartBaseProps } from \"./types\";\n\nexport interface AreaChartProps extends AreaChartBaseProps {\n width: number;\n height: number;\n}\n\n/**\n * Server-safe, zero-JS area chart. Renders a static SVG with no event handlers — use it in\n * server components, static reports, or anywhere a hover tooltip/legend isn't needed. For a\n * dashboard-style chart with hover tooltips and a toggleable legend, use `InteractiveAreaChart`\n * instead (it wraps this component and requires client-side JS).\n */\nexport function AreaChart({\n data,\n series,\n width,\n height,\n margin,\n xScale,\n stacked = false\n}: AreaChartProps): ReactElement {\n if (data.length === 0) {\n return (\n <div className={root} style={{ width, height }}>\n <div className={emptyState} style={{ width, height }}>\n No data\n </div>\n </div>\n );\n }\n\n const { scales, seriesLayouts } = buildAreaChartLayout(data, series, width, height, margin, xScale, stacked);\n const { xScale: scaleX, yScale, innerWidth, innerHeight, margin: resolvedMargin } = scales;\n\n return (\n <div className={root}>\n <svg width={width} height={height} role=\"img\" aria-label=\"Area chart\">\n <Group left={resolvedMargin.left} top={resolvedMargin.top}>\n <GridRows scale={yScale} width={innerWidth} height={innerHeight} stroke={vars.chart.grid} />\n {seriesLayouts.map((s) => (\n <Area\n key={s.key}\n data={s.points}\n x={(p) => p.x}\n y0={(p) => p.y0}\n y1={(p) => p.y1}\n fill={s.color}\n fillOpacity={s.opacity}\n stroke={s.color}\n strokeWidth={1.5}\n />\n ))}\n <AxisBottom\n top={innerHeight}\n scale={scaleX}\n stroke={vars.chart.axis}\n tickStroke={vars.chart.axis}\n tickLabelProps={() => ({ fill: vars.chart.axis, fontSize: 11, textAnchor: \"middle\" })}\n />\n <AxisLeft\n scale={yScale}\n stroke={vars.chart.axis}\n tickStroke={vars.chart.axis}\n tickLabelProps={() => ({ fill: vars.chart.axis, fontSize: 11, textAnchor: \"end\", dx: \"-0.25em\" })}\n />\n </Group>\n </svg>\n </div>\n );\n}\n","import { area as d3Area } from \"@visx/vendor/d3-shape\";\nimport {\n SERIES_COLOR_CYCLE,\n buildScales,\n findNearestDataIndex,\n getSeriesColor,\n getXPixel,\n inferXScaleType,\n numericValue,\n resolveMargin\n} from \"../LineChart/LineChart.render\";\nimport type { LineChartScales } from \"../LineChart/LineChart.render\";\nimport type { AreaChartDataPoint, AreaChartMargin, AreaChartSeries, AreaChartXScaleType } from \"./types\";\n\n// AreaChart shares LineChart's scale/margin/color/hover-lookup logic wholesale — the x/y\n// scale math, series color cycling, and nearest-point hit-testing are identical between the\n// two chart types (LineChart.render.ts's `buildScales` grew an optional `stacked` param for\n// exactly this reuse). Only area-specific geometry (baseline + stacking accumulation, area\n// path generation) is new here.\nexport { SERIES_COLOR_CYCLE, findNearestDataIndex, getSeriesColor, getXPixel, resolveMargin };\nexport type AreaChartScales = LineChartScales;\n\n/**\n * Fill opacity for overlapping (non-stacked) series, so every series' area remains visible\n * where they intersect rather than fully occluding one another. No existing component in this\n * library uses a semi-transparent fill (the closest precedent, disabled-state opacity, is a\n * different affordance), so this is a chart-specific constant rather than a token reference.\n */\nexport const OVERLAP_FILL_OPACITY = 0.35;\n\nexport interface AreaChartSeriesPoint {\n dataIndex: number;\n x: number;\n /** Pixel y of the filled region's bottom edge (baseline). */\n y0: number;\n /** Pixel y of the filled region's top edge (the series' value, or cumulative value when stacked). */\n y1: number;\n}\n\nexport interface AreaChartSeriesLayout {\n key: string;\n label: string;\n color: string;\n opacity: number;\n /** Pixel-space points, already positioned within the scales' inner plot area. */\n points: AreaChartSeriesPoint[];\n /** SVG path `d` attribute for this series' filled region. Empty string when fewer than 2 points are defined. */\n path: string;\n}\n\nconst areaGenerator = d3Area<AreaChartSeriesPoint>()\n .x((p) => p.x)\n .y0((p) => p.y0)\n .y1((p) => p.y1);\n\n/**\n * The shared entry point: given data/series/dimensions, computes scales (via LineChart's\n * `buildScales`, in stacked or overlapping y-domain mode) and per-series filled-region\n * geometry once. Both the static `AreaChart` (feeding this into visx's `AreaClosed`/`Area`)\n * and `InteractiveAreaChart` (feeding this into hover hit-testing) call this same function.\n */\nexport function buildAreaChartLayout(\n data: AreaChartDataPoint[],\n series: AreaChartSeries[],\n width: number,\n height: number,\n margin?: Partial<AreaChartMargin>,\n xScaleType?: AreaChartXScaleType,\n stacked = false\n): { scales: AreaChartScales; seriesLayouts: AreaChartSeriesLayout[] } {\n const resolvedMargin = resolveMargin(margin);\n const resolvedXScaleType = xScaleType ?? inferXScaleType(data);\n const scales = buildScales(data, series, width, height, resolvedMargin, resolvedXScaleType, stacked);\n\n // Running per-row cumulative total, only meaningful (and only mutated) in stacked mode: each\n // series' baseline is the sum of every series stacked below it, and its top becomes the next\n // series' baseline — the same \"first key at the bottom\" order @visx/shape's BarStack uses.\n const cumulative = data.map(() => 0);\n\n const seriesLayouts: AreaChartSeriesLayout[] = series.map((s, index) => {\n const points: AreaChartSeriesPoint[] = [];\n data.forEach((d, dataIndex) => {\n const rawValue = numericValue(d[s.key]);\n if (!stacked && rawValue === undefined) return;\n\n const x = getXPixel(scales, d.x);\n if (x === undefined) return;\n\n const baseline = stacked ? cumulative[dataIndex]! : 0;\n const top = stacked ? baseline + (rawValue ?? 0) : rawValue!;\n if (stacked) cumulative[dataIndex] = top;\n\n points.push({ dataIndex, x, y0: scales.yScale(baseline), y1: scales.yScale(top) });\n });\n\n return {\n key: s.key,\n label: s.label,\n color: getSeriesColor(s, index),\n opacity: stacked ? 1 : OVERLAP_FILL_OPACITY,\n points,\n path: points.length >= 2 ? areaGenerator(points) ?? \"\" : \"\"\n };\n });\n\n return { scales, seriesLayouts };\n}\n","import 'src/components/charts/internal/chartSurfaces.css.ts.vanilla.css?source=#H4sIAAAAAAAAA7WUsW7bMBCGdz8FlwLNwEB20jRQtkzp0A51h24GJZ4kxhSpkifLStF3L0iLtJRKQYq0iwCevrsjf_68y7xiBretKVgOdme0xt1O3ajHep2QnytCGm0FCq1SYkAyFAe4WxHSCY5VStZJ8u5u9Wt1Oa0CdYP9FhlCqLX2tbiwjWR9SgoJR1eGSVEqKhBqm5IcFIJx4cfWoih6mmuFoHD8K9dSm5QcmHlPqe9Kx902-55turW9cGyhFdKC1UL2IcOHMs37iCZn1IonmIAusK0jenUxc1bUWqJowkE3z0RjmdWyRS9ao4U7BoUDKLQpUVr5eMbyfWl0q_j0YEPp-_g77qS5WNBiSPkGR4zwj38nxncb0Y1HpVBAKxBlhRPYxR98-Is2NZMxLfNpmTYcDDWMi9aGxNOK2ii4GrOD407oOBbobkxb7CU8o30s0P2YXhby3gNx98ZnNYxzoUqKuglJtmE50GOUp5yAmUbU9etYCQVOybMg1YQ0Y9Xn0Uwfqa0Y113k_IrW0UvowScqFIdjStabJFl2-VfdBaNf_dWLLtmLUi3123YM8yq0vJ62FMq7L5M6349m0m3jNxJMOSxfclzRymjQ4bFIcMIZofYpmdNDQgnuPZ429mFeC1-lM-7o7jurw_kihO9cM1MK9ae1pje7sJ9PCHXY082sWG-7pumoQsOUbZgBhWeFz1NtsKnXj5C8Nda9sWEG_q_x_HwougXF0TScneFn9R4E56CChh-9hgsVP7cI8fKufW8Xphxybdhp-nvNsTK6LavFvlOT377K5Otk6vKwfqPNfwNQ2XNIDggAAA';\nimport 'src/components/charts/AreaChart/AreaChart.css.ts.vanilla.css?source=LkFyZWFDaGFydF9vdmVybGF5UmVjdF9fMWNxdGJoMzAgewogIGZpbGw6IHRyYW5zcGFyZW50OwogIGN1cnNvcjogY3Jvc3NoYWlyOwp9';\nexport var emptyState = 'chartSurfaces_emptyState__n6njm11';\nexport var legend = 'chartSurfaces_legend__n6njm15';\nexport var legendItem = 'chartSurfaces_legendItem__n6njm16';\nexport var legendItemHidden = 'chartSurfaces_legendItemHidden__n6njm17';\nexport var legendSwatch = 'chartSurfaces_legendSwatch__n6njm18';\nexport var overlayRect = 'AreaChart_overlayRect__1cqtbh30';\nexport var root = 'chartSurfaces_root__n6njm10';\nexport var tooltip = 'chartSurfaces_tooltip__n6njm12';\nexport var tooltipRow = 'chartSurfaces_tooltipRow__n6njm13';\nexport var tooltipSwatch = 'chartSurfaces_tooltipSwatch__n6njm14';","\"use client\";\n\nimport { useMemo, useState } from \"react\";\nimport type { MouseEvent as ReactMouseEvent, ReactElement } from \"react\";\nimport { ParentSize } from \"@visx/responsive\";\nimport { TooltipWithBounds, useTooltip } from \"@visx/tooltip\";\nimport { AreaChart } from \"./AreaChart\";\nimport { buildAreaChartLayout, findNearestDataIndex, getSeriesColor, getXPixel } from \"./AreaChart.render\";\nimport {\n legend,\n legendItem,\n legendItemHidden,\n legendSwatch,\n overlayRect,\n root,\n tooltip as tooltipClass,\n tooltipRow,\n tooltipSwatch\n} from \"./AreaChart.css\";\nimport type { AreaChartBaseProps, AreaChartDataPoint, AreaChartSeries } from \"./types\";\n\ninterface TooltipDatum {\n dataPoint: AreaChartDataPoint;\n visibleSeries: AreaChartSeries[];\n}\n\nexport interface InteractiveAreaChartProps extends AreaChartBaseProps {\n /** Fixed chart height; width auto-tracks the parent container's size via ResizeObserver. */\n height?: number;\n}\n\n/**\n * Client-rendered area chart for dashboards: auto-sizes to its parent (via `@visx/responsive`'s\n * `ParentSize`), and adds a nearest-point hover tooltip plus a click-to-toggle legend — the same\n * continuous-x-axis hover technique `InteractiveLineChart` uses (an area chart behaves like a\n * line chart for hover purposes, not like BarChart's discrete per-element hover). Requires\n * client-side JS (\"use client\") — for server components or static output where no interaction\n * is needed, use the static `AreaChart` instead.\n */\nexport function InteractiveAreaChart({\n data,\n series,\n margin,\n xScale,\n stacked = false,\n height = 320\n}: InteractiveAreaChartProps): ReactElement {\n const [hiddenKeys, setHiddenKeys] = useState<ReadonlySet<string>>(new Set());\n\n // Colors are assigned once from each series' original position, before any filtering, so a\n // series keeps its color when a sibling is toggled off (the cycle index would otherwise\n // shift for everything after the hidden series).\n const coloredSeries = useMemo(\n () => series.map((s, index) => ({ ...s, color: s.color ?? getSeriesColor(s, index) })),\n [series]\n );\n const visibleSeries = useMemo(\n () => coloredSeries.filter((s) => !hiddenKeys.has(s.key)),\n [coloredSeries, hiddenKeys]\n );\n\n const { tooltipData, tooltipLeft, tooltipTop, tooltipOpen, showTooltip, hideTooltip } =\n useTooltip<TooltipDatum>();\n\n function toggleSeries(key: string): void {\n setHiddenKeys((prev) => {\n const next = new Set(prev);\n if (next.has(key)) {\n next.delete(key);\n } else {\n next.add(key);\n }\n return next;\n });\n }\n\n return (\n <div className={root}>\n <ParentSize initialSize={{ width: 600, height }} style={{ height }}>\n {({ width }) => {\n if (width === 0) return null;\n\n const { scales } = buildAreaChartLayout(data, visibleSeries, width, height, margin, xScale, stacked);\n\n function handleMouseMove(event: ReactMouseEvent<SVGRectElement>): void {\n const bounds = event.currentTarget.getBoundingClientRect();\n const pixelX = event.clientX - bounds.left;\n const dataIndex = findNearestDataIndex(data, scales, pixelX);\n if (dataIndex === null) {\n hideTooltip();\n return;\n }\n const dataPoint = data[dataIndex]!;\n const xPixel = getXPixel(scales, dataPoint.x) ?? pixelX;\n showTooltip({\n tooltipData: { dataPoint, visibleSeries },\n tooltipLeft: scales.margin.left + xPixel,\n tooltipTop: 0\n });\n }\n\n return (\n <div style={{ position: \"relative\", width, height }}>\n <AreaChart\n data={data}\n series={visibleSeries}\n width={width}\n height={height}\n margin={margin}\n xScale={xScale}\n stacked={stacked}\n />\n <svg\n width={width}\n height={height}\n style={{ position: \"absolute\", top: 0, left: 0 }}\n aria-hidden=\"true\"\n >\n <rect\n className={overlayRect}\n data-testid=\"area-chart-overlay\"\n x={scales.margin.left}\n y={scales.margin.top}\n width={scales.innerWidth}\n height={scales.innerHeight}\n onMouseMove={handleMouseMove}\n onMouseLeave={() => hideTooltip()}\n />\n </svg>\n {tooltipOpen && tooltipData ? (\n <TooltipWithBounds left={tooltipLeft} top={tooltipTop} className={tooltipClass}>\n <div>{String(tooltipData.dataPoint.x)}</div>\n {tooltipData.visibleSeries.map((s) => (\n <div key={s.key} className={tooltipRow}>\n <span className={tooltipSwatch} style={{ background: s.color }} />\n <span>\n {s.label}: {String(tooltipData.dataPoint[s.key])}\n </span>\n </div>\n ))}\n </TooltipWithBounds>\n ) : null}\n </div>\n );\n }}\n </ParentSize>\n <div className={legend}>\n {coloredSeries.map((s) => {\n const hidden = hiddenKeys.has(s.key);\n return (\n <button\n key={s.key}\n type=\"button\"\n className={[legendItem, hidden ? legendItemHidden : null].filter(Boolean).join(\" \")}\n onClick={() => toggleSeries(s.key)}\n aria-pressed={!hidden}\n >\n <span className={legendSwatch} style={{ background: s.color }} />\n {s.label}\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n","import type { ReactElement } from \"react\";\nimport { Group } from \"@visx/group\";\nimport { Pie } from \"@visx/shape\";\nimport { vars } from \"@vesture/tokens\";\nimport { isLabelFittable, preparePieSlices } from \"./PieChart.render\";\nimport { emptyState, root } from \"./PieChart.css\";\nimport type { PieChartBaseProps } from \"./types\";\n\nexport interface PieChartProps extends PieChartBaseProps {\n width: number;\n height: number;\n}\n\n/** Padding, in pixels, between the pie's outer edge and the SVG bounds so slice strokes and labels never clip. */\nconst OUTER_PADDING = 8;\n\n/**\n * Server-safe, zero-JS pie/donut chart. Renders a static SVG with no event handlers — use it\n * in server components, static reports, or anywhere a hover tooltip/legend isn't needed. For a\n * dashboard-style chart with per-slice hover emphasis, a tooltip, and a toggleable legend, use\n * `InteractivePieChart` instead (it wraps this component and requires client-side JS).\n */\nexport function PieChart({\n data,\n width,\n height,\n innerRadius = 0,\n showLabels = true\n}: PieChartProps): ReactElement {\n const slices = preparePieSlices(data);\n\n if (slices.length === 0) {\n return (\n <div className={root} style={{ width, height }}>\n <div className={emptyState} style={{ width, height }}>\n No data\n </div>\n </div>\n );\n }\n\n const outerRadius = Math.max(0, Math.min(width, height) / 2 - OUTER_PADDING);\n const pieInnerRadius = outerRadius * innerRadius;\n\n return (\n <div className={root}>\n <svg width={width} height={height} role=\"img\" aria-label=\"Pie chart\">\n <Group top={height / 2} left={width / 2}>\n <Pie\n data={slices}\n pieValue={(s) => s.value}\n pieSort={null}\n outerRadius={outerRadius}\n innerRadius={pieInnerRadius}\n >\n {(pie) =>\n pie.arcs.map((arc) => {\n const [labelX, labelY] = pie.path.centroid(arc);\n const showLabel = showLabels && isLabelFittable(arc.startAngle, arc.endAngle, outerRadius);\n return (\n <g key={arc.data.key}>\n <path d={pie.path(arc) ?? \"\"} fill={arc.data.color} />\n {showLabel ? (\n <text\n x={labelX}\n y={labelY}\n textAnchor=\"middle\"\n dominantBaseline=\"middle\"\n fill={vars.color.textInverse}\n fontSize={vars.font.sizeXs}\n fontFamily={vars.font.body}\n >\n {`${Math.round(arc.data.percentage)}%`}\n </text>\n ) : null}\n </g>\n );\n })\n }\n </Pie>\n </Group>\n </svg>\n </div>\n );\n}\n","import { pie as d3Pie } from \"@visx/vendor/d3-shape\";\nimport { vars } from \"@vesture/tokens\";\nimport type { PieChartDataPoint } from \"./types\";\n\n// PieChart has no x/y scales or axes — nothing here shares LineChart.render.ts's machinery,\n// so unlike AreaChart, this is a standalone render module with its own color cycle.\n\n/**\n * Fixed-order categorical cycle backing every chart component. A slice index beyond 8 wraps\n * back around to series1 — with more than 8 slices, colors repeat and the legend label\n * becomes the only reliable way to tell those slices apart.\n */\nexport const SERIES_COLOR_CYCLE: readonly string[] = [\n vars.chart.series1,\n vars.chart.series2,\n vars.chart.series3,\n vars.chart.series4,\n vars.chart.series5,\n vars.chart.series6,\n vars.chart.series7,\n vars.chart.series8\n];\n\nexport function getSeriesColor(slice: PieChartDataPoint, index: number): string {\n return slice.color ?? SERIES_COLOR_CYCLE[index % SERIES_COLOR_CYCLE.length]!;\n}\n\nexport interface PieChartSlice {\n key: string;\n label: string;\n value: number;\n color: string;\n}\n\nexport interface PieChartSliceWithPercentage extends PieChartSlice {\n /** This slice's share of the total, as a 0-100 percentage of the slices passed in (not of the original, unfiltered data). */\n percentage: number;\n}\n\n/**\n * Recomputes each slice's percentage of the given set's total. Shared by the initial static\n * layout and by `InteractivePieChart`'s legend-toggle handler, which calls this again over\n * only the still-visible slices — hiding a slice redistributes the remaining percentages\n * rather than leaving them summing to less than 100.\n */\nexport function computePercentages(slices: PieChartSlice[]): PieChartSliceWithPercentage[] {\n const total = slices.reduce((sum, s) => sum + s.value, 0);\n return slices.map((s) => ({ ...s, percentage: total > 0 ? (s.value / total) * 100 : 0 }));\n}\n\n/**\n * Assigns each slice a stable color from its position in the original (unfiltered) `data`\n * array, so a slice keeps its color if a sibling is later hidden by the legend or excluded for\n * being zero/negative — the same stability rule Line/Bar/AreaChart use for series colors.\n */\nexport function colorSlices(data: PieChartDataPoint[]): PieChartSlice[] {\n return data.map((d, index) => ({ key: d.key, label: d.label, value: d.value, color: getSeriesColor(d, index) }));\n}\n\n/**\n * Filters out zero/negative values (a zero-width arc has nothing to render) and computes each\n * remaining slice's percentage of the visible total.\n */\nexport function preparePieSlices(data: PieChartDataPoint[]): PieChartSliceWithPercentage[] {\n const positive = colorSlices(data).filter((s) => s.value > 0);\n return computePercentages(positive);\n}\n\nexport interface PieChartArc extends PieChartSliceWithPercentage {\n startAngle: number;\n endAngle: number;\n}\n\n/**\n * Computes each slice's [startAngle, endAngle) via the same d3 `pie()` generator\n * `@visx/shape`'s `<Pie>` component uses internally (\"Pie utilities\") — exposed as a pure,\n * testable function independent of rendering. Preserves input order (no descending-by-value\n * sort), matching the order `<Pie>` produces when it's given `pieSort={null}` and this same\n * prepared data, so legend order and slice order stay predictable and in sync.\n */\nexport function computeArcAngles(slices: PieChartSliceWithPercentage[]): PieChartArc[] {\n const pieGenerator = d3Pie<PieChartSliceWithPercentage>()\n .value((s) => s.value)\n .sort(null);\n return pieGenerator(slices).map((arc) => ({ ...arc.data, startAngle: arc.startAngle, endAngle: arc.endAngle }));\n}\n\n/**\n * Minimum arc length (in pixels, measured along the outer radius) for an in-slice percentage\n * label to plausibly fit. A percentage label is at most 4 characters (\"100%\") set at\n * `vars.font.sizeXs` (12px); a proportional sans averages roughly 0.55em per glyph, so\n * 4 * 12 * 0.55 ≈ 26px — rounded up to 28px for a little breathing room.\n */\nexport const MIN_LABEL_ARC_LENGTH_PX = 28;\n\n/** True when a slice's angular span, at the given outer radius, is wide enough for a label per `MIN_LABEL_ARC_LENGTH_PX`. */\nexport function isLabelFittable(startAngle: number, endAngle: number, outerRadius: number): boolean {\n return (endAngle - startAngle) * outerRadius >= MIN_LABEL_ARC_LENGTH_PX;\n}\n\n/** Outward unit-direction `[dx, dy]` along a slice's angle bisector, using d3's arc angle convention (0 at -y/12 o'clock, clockwise positive). Used to offset a hovered slice outward. */\nexport function arcBisectorDirection(startAngle: number, endAngle: number): [number, number] {\n const bisector = (startAngle + endAngle) / 2;\n return [Math.sin(bisector), -Math.cos(bisector)];\n}\n","import 'src/components/charts/internal/chartSurfaces.css.ts.vanilla.css?source=#H4sIAAAAAAAAA7WUsW7bMBCGdz8FlwLNwEB20jRQtkzp0A51h24GJZ4kxhSpkifLStF3L0iLtJRKQYq0iwCevrsjf_68y7xiBretKVgOdme0xt1O3ajHep2QnytCGm0FCq1SYkAyFAe4WxHSCY5VStZJ8u5u9Wt1Oa0CdYP9FhlCqLX2tbiwjWR9SgoJR1eGSVEqKhBqm5IcFIJx4cfWoih6mmuFoHD8K9dSm5QcmHlPqe9Kx902-55turW9cGyhFdKC1UL2IcOHMs37iCZn1IonmIAusK0jenUxc1bUWqJowkE3z0RjmdWyRS9ao4U7BoUDKLQpUVr5eMbyfWl0q_j0YEPp-_g77qS5WNBiSPkGR4zwj38nxncb0Y1HpVBAKxBlhRPYxR98-Is2NZMxLfNpmTYcDDWMi9aGxNOK2ii4GrOD407oOBbobkxb7CU8o30s0P2YXhby3gNx98ZnNYxzoUqKuglJtmE50GOUp5yAmUbU9etYCQVOybMg1YQ0Y9Xn0Uwfqa0Y113k_IrW0UvowScqFIdjStabJFl2-VfdBaNf_dWLLtmLUi3123YM8yq0vJ62FMq7L5M6349m0m3jNxJMOSxfclzRymjQ4bFIcMIZofYpmdNDQgnuPZ429mFeC1-lM-7o7jurw_kihO9cM1MK9ae1pje7sJ9PCHXY082sWG-7pumoQsOUbZgBhWeFz1NtsKnXj5C8Nda9sWEG_q_x_HwougXF0TScneFn9R4E56CChh-9hgsVP7cI8fKufW8Xphxybdhp-nvNsTK6LavFvlOT377K5Otk6vKwfqPNfwNQ2XNIDggAAA';\nimport 'src/components/charts/PieChart/PieChart.css.ts.vanilla.css?source=LlBpZUNoYXJ0X2xlZ2VuZFBlcmNlbnRhZ2VfXzE5eGQ0cm4wIHsKICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dE11dGVkX18ya3lhMnc0KTsKICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZVhzX18ya3lhMncxMik7Cn0KLlBpZUNoYXJ0X3NsaWNlR3JvdXBfXzE5eGQ0cm4xIHsKICBjdXJzb3I6IHBvaW50ZXI7CiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLW1vdGlvbi1kdXJhdGlvbkZhc3RfXzJreWEydzFjKSB2YXIoLS1tb3Rpb24tZWFzaW5nX18ya3lhMncxZSk7Cn0';\nexport var emptyState = 'chartSurfaces_emptyState__n6njm11';\nexport var legend = 'chartSurfaces_legend__n6njm15';\nexport var legendItem = 'chartSurfaces_legendItem__n6njm16';\nexport var legendItemHidden = 'chartSurfaces_legendItemHidden__n6njm17';\nexport var legendPercentage = 'PieChart_legendPercentage__19xd4rn0';\nexport var legendSwatch = 'chartSurfaces_legendSwatch__n6njm18';\nexport var root = 'chartSurfaces_root__n6njm10';\nexport var sliceGroup = 'PieChart_sliceGroup__19xd4rn1';\nexport var tooltip = 'chartSurfaces_tooltip__n6njm12';\nexport var tooltipRow = 'chartSurfaces_tooltipRow__n6njm13';\nexport var tooltipSwatch = 'chartSurfaces_tooltipSwatch__n6njm14';","\"use client\";\n\nimport { useMemo, useState } from \"react\";\nimport type { ReactElement } from \"react\";\nimport { Group } from \"@visx/group\";\nimport { ParentSize } from \"@visx/responsive\";\nimport { Pie } from \"@visx/shape\";\nimport { TooltipWithBounds, useTooltip } from \"@visx/tooltip\";\nimport { vars } from \"@vesture/tokens\";\nimport { arcBisectorDirection, colorSlices, computePercentages, isLabelFittable } from \"./PieChart.render\";\nimport {\n emptyState,\n legend,\n legendItem,\n legendItemHidden,\n legendPercentage,\n legendSwatch,\n root,\n sliceGroup,\n tooltip as tooltipClass,\n tooltipRow,\n tooltipSwatch\n} from \"./PieChart.css\";\nimport type { PieChartBaseProps } from \"./types\";\n\nconst OUTER_PADDING = 8;\n/** How far a hovered slice offsets outward along its angle bisector, in pixels. */\nconst HOVER_OFFSET_PX = 8;\n\ninterface TooltipDatum {\n key: string;\n label: string;\n value: number;\n percentage: number;\n color: string;\n}\n\nexport interface InteractivePieChartProps extends PieChartBaseProps {\n /** Fixed chart height; width auto-tracks the parent container's size via ResizeObserver. */\n height?: number;\n}\n\n/**\n * Client-rendered pie/donut chart for dashboards: auto-sizes to its parent (via\n * `@visx/responsive`'s `ParentSize`), and adds per-slice hover emphasis, a tooltip, and a\n * click-to-toggle legend. Requires client-side JS (\"use client\") — for server components or\n * static output where no interaction is needed, use the static `PieChart` instead.\n *\n * Unlike Line/Bar/AreaChart's legend toggle (which just removes a series), hiding a slice here\n * *redistributes* the remaining slices' percentages, since a pie's slices must sum to 100 — see\n * `computePercentages` in `PieChart.render.ts`, re-run over only the still-visible slices.\n */\nexport function InteractivePieChart({\n data,\n innerRadius = 0,\n showLabels = true,\n height = 320\n}: InteractivePieChartProps): ReactElement {\n const [hiddenKeys, setHiddenKeys] = useState<ReadonlySet<string>>(new Set());\n const [hoveredKey, setHoveredKey] = useState<string | null>(null);\n\n // Colors are assigned once from each slice's original position, before any filtering, so a\n // slice keeps its color when a sibling is hidden or excluded for being zero/negative.\n const coloredSlices = useMemo(() => colorSlices(data), [data]);\n const visibleSlices = useMemo(\n () => coloredSlices.filter((s) => s.value > 0 && !hiddenKeys.has(s.key)),\n [coloredSlices, hiddenKeys]\n );\n const slices = useMemo(() => computePercentages(visibleSlices), [visibleSlices]);\n const percentageByKey = useMemo(() => new Map(slices.map((s) => [s.key, s.percentage])), [slices]);\n\n const { tooltipData, tooltipLeft, tooltipTop, tooltipOpen, showTooltip, hideTooltip } =\n useTooltip<TooltipDatum>();\n\n function toggleSlice(key: string): void {\n setHiddenKeys((prev) => {\n const next = new Set(prev);\n if (next.has(key)) {\n next.delete(key);\n } else {\n next.add(key);\n }\n return next;\n });\n }\n\n if (slices.length === 0) {\n return (\n <div className={root} style={{ height }}>\n <div className={emptyState} style={{ height }}>\n No data\n </div>\n </div>\n );\n }\n\n return (\n <div className={root}>\n <ParentSize initialSize={{ width: 600, height }} style={{ height }}>\n {({ width }) => {\n if (width === 0) return null;\n\n const outerRadius = Math.max(0, Math.min(width, height) / 2 - OUTER_PADDING);\n const pieInnerRadius = outerRadius * innerRadius;\n\n function handleSliceHover(datum: TooltipDatum, centroidX: number, centroidY: number): void {\n showTooltip({\n tooltipData: datum,\n tooltipLeft: width / 2 + centroidX,\n tooltipTop: height / 2 + centroidY\n });\n setHoveredKey(datum.key);\n }\n\n function handleSliceLeave(): void {\n hideTooltip();\n setHoveredKey(null);\n }\n\n return (\n <div style={{ position: \"relative\", width, height }}>\n <svg width={width} height={height} role=\"img\" aria-label=\"Pie chart\">\n <Group top={height / 2} left={width / 2}>\n <Pie\n data={slices}\n pieValue={(s) => s.value}\n pieSort={null}\n outerRadius={outerRadius}\n innerRadius={pieInnerRadius}\n >\n {(pie) =>\n pie.arcs.map((arc) => {\n const [centroidX, centroidY] = pie.path.centroid(arc);\n const showLabel = showLabels && isLabelFittable(arc.startAngle, arc.endAngle, outerRadius);\n const isHovered = hoveredKey === arc.data.key;\n const [dx, dy] = arcBisectorDirection(arc.startAngle, arc.endAngle);\n const transform = isHovered\n ? `translate(${dx * HOVER_OFFSET_PX}px, ${dy * HOVER_OFFSET_PX}px)`\n : undefined;\n return (\n <g key={arc.data.key} className={sliceGroup} style={{ transform }}>\n <path\n d={pie.path(arc) ?? \"\"}\n fill={arc.data.color}\n data-testid={`pie-slice-${arc.data.key}`}\n onMouseEnter={() => handleSliceHover(arc.data, centroidX, centroidY)}\n onMouseLeave={handleSliceLeave}\n />\n {showLabel ? (\n <text\n x={centroidX}\n y={centroidY}\n textAnchor=\"middle\"\n dominantBaseline=\"middle\"\n fill={vars.color.textInverse}\n fontSize={vars.font.sizeXs}\n fontFamily={vars.font.body}\n style={{ pointerEvents: \"none\" }}\n >\n {`${Math.round(arc.data.percentage)}%`}\n </text>\n ) : null}\n </g>\n );\n })\n }\n </Pie>\n </Group>\n </svg>\n {tooltipOpen && tooltipData ? (\n <TooltipWithBounds left={tooltipLeft} top={tooltipTop} className={tooltipClass}>\n <div className={tooltipRow}>\n <span className={tooltipSwatch} style={{ background: tooltipData.color }} />\n <span>\n {tooltipData.label}: {tooltipData.value} ({Math.round(tooltipData.percentage)}%)\n </span>\n </div>\n </TooltipWithBounds>\n ) : null}\n </div>\n );\n }}\n </ParentSize>\n <div className={legend}>\n {coloredSlices\n .filter((s) => s.value > 0)\n .map((s) => {\n const hidden = hiddenKeys.has(s.key);\n const percentage = percentageByKey.get(s.key);\n return (\n <button\n key={s.key}\n type=\"button\"\n className={[legendItem, hidden ? legendItemHidden : null].filter(Boolean).join(\" \")}\n onClick={() => toggleSlice(s.key)}\n aria-pressed={!hidden}\n >\n <span className={legendSwatch} style={{ background: s.color }} />\n {s.label}\n {!hidden && percentage !== undefined ? (\n <span className={legendPercentage}>{Math.round(percentage)}%</span>\n ) : null}\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n","import { useMemo, useRef, useState } from \"react\";\nimport type {\n KeyboardEvent as ReactKeyboardEvent,\n PointerEvent as ReactPointerEvent,\n ReactElement,\n} from \"react\";\nimport {\n allDayCell,\n allDayEventBlock,\n allDayGutter,\n allDayRow,\n dayColumn,\n dayHeaderCell,\n dayHeaderDateNumber,\n dayHeaderGutter,\n dayHeaderRow,\n dragPreview,\n dragPreviewLabel,\n eventBlock,\n eventTime,\n eventTitle,\n header,\n headerNav,\n hourLabel,\n navButton,\n nowLine,\n nowLineDot,\n rangeLabel,\n resizeHandle,\n root,\n scrollArea,\n timeGutter,\n todayButton,\n visuallyHidden,\n} from \"./Scheduler.css\";\nimport {\n computeMoveResult,\n computeResizeResult,\n getEventColor,\n getVerticalMetrics,\n layoutOverlappingEvents,\n SLOT_HEIGHT_PX,\n} from \"./scheduler-layout\";\nimport type { SchedulerEvent, SchedulerProps } from \"./types\";\nimport { addDays, clampToMidnight, isSameDay, startOfWeek } from \"../../utils/date\";\n\nfunction formatEventTime(date: Date, locale: string): string {\n return new Intl.DateTimeFormat(locale, {\n hour: \"numeric\",\n minute: \"2-digit\",\n }).format(date);\n}\n\ninterface DragState {\n kind: \"move\" | \"resize\";\n event: SchedulerEvent;\n pointerId: number;\n startClientX: number;\n startClientY: number;\n startDayIndex: number;\n currentDayIndex: number;\n currentStart: Date;\n currentEnd: Date;\n moved: boolean;\n}\n\nexport function Scheduler({\n events,\n date,\n onDateChange,\n weekStartsOn = 1,\n startHour = 0,\n endHour = 24,\n slotDuration = 30,\n onEventClick,\n onEventChange,\n editable = false,\n minEventDuration,\n selectedEventId,\n locale = \"en-US\",\n className,\n}: SchedulerProps): ReactElement {\n const weekStart = useMemo(\n () => startOfWeek(clampToMidnight(date), weekStartsOn),\n [date, weekStartsOn]\n );\n const days = useMemo(\n () => Array.from({ length: 7 }, (_, i) => addDays(weekStart, i)),\n [weekStart]\n );\n const today = useMemo(() => clampToMidnight(new Date()), []);\n const now = useMemo(() => new Date(), []);\n\n const weekdayFormatter = useMemo(\n () => new Intl.DateTimeFormat(locale, { weekday: \"short\" }),\n [locale]\n );\n const dayNumberFormatter = useMemo(\n () => new Intl.DateTimeFormat(locale, { day: \"numeric\" }),\n [locale]\n );\n const monthDayFormatter = useMemo(\n () => new Intl.DateTimeFormat(locale, { month: \"short\", day: \"numeric\" }),\n [locale]\n );\n const yearFormatter = useMemo(\n () => new Intl.DateTimeFormat(locale, { year: \"numeric\" }),\n [locale]\n );\n const hourFormatter = useMemo(\n () => new Intl.DateTimeFormat(locale, { hour: \"numeric\" }),\n [locale]\n );\n const weekdayLongFormatter = useMemo(\n () => new Intl.DateTimeFormat(locale, { weekday: \"long\" }),\n [locale]\n );\n\n const weekEnd = days[6]!;\n const rangeLabelText = `${monthDayFormatter.format(weekStart)} – ${monthDayFormatter.format(weekEnd)}, ${yearFormatter.format(weekEnd)}`;\n\n const totalMinutes = (endHour - startHour) * 60;\n const slotsCount = Math.max(1, Math.ceil(totalMinutes / slotDuration));\n const totalHeightPx = slotsCount * SLOT_HEIGHT_PX;\n const resolvedMinEventDuration = minEventDuration ?? slotDuration;\n\n const hourMarks = useMemo(() => {\n const marks: { hour: number; label: string; top: number }[] = [];\n for (let hour = startHour; hour <= endHour; hour++) {\n const labelDate = new Date(2000, 0, 1, hour === 24 ? 0 : hour, 0);\n marks.push({\n hour,\n label: hourFormatter.format(labelDate),\n top: ((hour - startHour) * 60 / totalMinutes) * 100,\n });\n }\n return marks;\n }, [startHour, endHour, totalMinutes, hourFormatter]);\n\n const nowMinutes = now.getHours() * 60 + now.getMinutes();\n const showNowLine = nowMinutes >= startHour * 60 && nowMinutes < endHour * 60;\n const nowTop = ((nowMinutes - startHour * 60) / totalMinutes) * 100;\n\n const allDayEventsByDay = useMemo(\n () =>\n days.map((day) =>\n events.filter((event) => event.allDay && isSameDay(event.start, day))\n ),\n [days, events]\n );\n\n const timedEventsByDay = useMemo(\n () =>\n days.map((day) => {\n const dayEvents = events.filter(\n (event) => !event.allDay && isSameDay(event.start, day)\n );\n const layout = layoutOverlappingEvents(\n dayEvents.map((event) => ({\n id: event.id,\n start: event.start,\n end: event.end,\n }))\n );\n const layoutById = new Map(layout.map((l) => [l.id, l]));\n return dayEvents\n .map((event) => {\n const metrics = getVerticalMetrics(\n event.start,\n event.end,\n startHour,\n endHour\n );\n if (!metrics) return null;\n const placement = layoutById.get(event.id)!;\n return { event, metrics, placement };\n })\n .filter(\n (\n entry\n ): entry is {\n event: SchedulerEvent;\n metrics: NonNullable<ReturnType<typeof getVerticalMetrics>>;\n placement: ReturnType<typeof layoutOverlappingEvents>[number];\n } => entry !== null\n );\n }),\n [days, events, startHour, endHour]\n );\n\n const [drag, setDrag] = useState<DragState | null>(null);\n const [announcement, setAnnouncement] = useState(\"\");\n const suppressClickRef = useRef(false);\n const dayColumnRefs = useRef<(HTMLDivElement | null)[]>([]);\n\n const announceMove = (event: SchedulerEvent, start: Date, end: Date) => {\n setAnnouncement(\n `${event.title} moved to ${weekdayLongFormatter.format(start)}, ${formatEventTime(start, locale)} to ${formatEventTime(end, locale)}.`\n );\n };\n\n const announceResize = (event: SchedulerEvent, end: Date) => {\n setAnnouncement(\n `${event.title} resized to end at ${formatEventTime(end, locale)}.`\n );\n };\n\n const handleEventActivate = (event: SchedulerEvent) => {\n if (suppressClickRef.current) {\n suppressClickRef.current = false;\n return;\n }\n onEventClick?.(event);\n };\n\n const handleMovePointerDown =\n (event: SchedulerEvent, dayIndex: number) => (pointerEvent: ReactPointerEvent<HTMLButtonElement>) => {\n if (!editable) return;\n pointerEvent.preventDefault();\n const target = pointerEvent.currentTarget;\n try {\n target.setPointerCapture(pointerEvent.pointerId);\n } catch {\n // Pointer capture isn't implemented in every test/DOM environment; drag still\n // works without it as long as the pointer stays over the captured element.\n }\n target.focus();\n setDrag({\n kind: \"move\",\n event,\n pointerId: pointerEvent.pointerId,\n startClientX: pointerEvent.clientX,\n startClientY: pointerEvent.clientY,\n startDayIndex: dayIndex,\n currentDayIndex: dayIndex,\n currentStart: event.start,\n currentEnd: event.end,\n moved: false,\n });\n };\n\n const handleResizePointerDown =\n (event: SchedulerEvent, dayIndex: number) => (pointerEvent: ReactPointerEvent<HTMLSpanElement>) => {\n if (!editable) return;\n pointerEvent.preventDefault();\n pointerEvent.stopPropagation();\n const target = pointerEvent.currentTarget;\n try {\n target.setPointerCapture(pointerEvent.pointerId);\n } catch {\n // See handleMovePointerDown.\n }\n setDrag({\n kind: \"resize\",\n event,\n pointerId: pointerEvent.pointerId,\n startClientX: pointerEvent.clientX,\n startClientY: pointerEvent.clientY,\n startDayIndex: dayIndex,\n currentDayIndex: dayIndex,\n currentStart: event.start,\n currentEnd: event.end,\n moved: false,\n });\n };\n\n const handleDragPointerMove = (\n pointerEvent: ReactPointerEvent<HTMLButtonElement | HTMLSpanElement>\n ) => {\n if (!drag || pointerEvent.pointerId !== drag.pointerId) return;\n // The resize handle is nested inside the event button, and both have pointer handlers —\n // without this, a resize-handle event would bubble up and re-run the button's copy too.\n pointerEvent.stopPropagation();\n const deltaY = pointerEvent.clientY - drag.startClientY;\n\n if (drag.kind === \"move\") {\n const deltaX = pointerEvent.clientX - drag.startClientX;\n const columnWidth =\n dayColumnRefs.current[drag.startDayIndex]?.getBoundingClientRect().width ?? 0;\n const dayDelta = columnWidth > 0 ? Math.round(deltaX / columnWidth) : 0;\n const targetDayIndex = Math.min(6, Math.max(0, drag.startDayIndex + dayDelta));\n const targetDay = days[targetDayIndex]!;\n const { start, end } = computeMoveResult({\n originalStart: drag.event.start,\n originalEnd: drag.event.end,\n targetDay,\n deltaYPx: deltaY,\n slotDuration,\n startHour,\n endHour,\n });\n const moved =\n targetDayIndex !== drag.startDayIndex ||\n start.getTime() !== drag.event.start.getTime();\n setDrag({ ...drag, currentDayIndex: targetDayIndex, currentStart: start, currentEnd: end, moved });\n } else {\n const { end } = computeResizeResult({\n originalStart: drag.event.start,\n originalEnd: drag.event.end,\n deltaYPx: deltaY,\n slotDuration,\n minEventDuration: resolvedMinEventDuration,\n endHour,\n });\n const moved = end.getTime() !== drag.event.end.getTime();\n setDrag({ ...drag, currentEnd: end, moved });\n }\n };\n\n const handleDragPointerUp = (\n pointerEvent: ReactPointerEvent<HTMLButtonElement | HTMLSpanElement>\n ) => {\n if (!drag || pointerEvent.pointerId !== drag.pointerId) return;\n pointerEvent.stopPropagation();\n const finished = drag;\n setDrag(null);\n\n if (finished.kind === \"move\") {\n if (!finished.moved) {\n suppressClickRef.current = true;\n onEventClick?.(finished.event);\n return;\n }\n onEventChange?.(finished.event, finished.currentStart, finished.currentEnd);\n announceMove(finished.event, finished.currentStart, finished.currentEnd);\n return;\n }\n\n if (!finished.moved) return;\n onEventChange?.(finished.event, finished.currentStart, finished.currentEnd);\n announceResize(finished.event, finished.currentEnd);\n };\n\n const handleDragPointerCancel = (\n pointerEvent: ReactPointerEvent<HTMLButtonElement | HTMLSpanElement>\n ) => {\n if (!drag || pointerEvent.pointerId !== drag.pointerId) return;\n pointerEvent.stopPropagation();\n setDrag(null);\n };\n\n const handleEventKeyDown = (\n keyboardEvent: ReactKeyboardEvent<HTMLButtonElement>,\n event: SchedulerEvent,\n dayIndex: number\n ) => {\n if (!editable) return;\n\n if (keyboardEvent.shiftKey && (keyboardEvent.key === \"ArrowDown\" || keyboardEvent.key === \"ArrowUp\")) {\n keyboardEvent.preventDefault();\n const direction = keyboardEvent.key === \"ArrowDown\" ? 1 : -1;\n const { end } = computeResizeResult({\n originalStart: event.start,\n originalEnd: event.end,\n deltaYPx: direction * SLOT_HEIGHT_PX,\n slotDuration,\n minEventDuration: resolvedMinEventDuration,\n endHour,\n });\n if (end.getTime() === event.end.getTime()) return;\n onEventChange?.(event, event.start, end);\n announceResize(event, end);\n return;\n }\n\n switch (keyboardEvent.key) {\n case \"ArrowUp\":\n case \"ArrowDown\": {\n keyboardEvent.preventDefault();\n const direction = keyboardEvent.key === \"ArrowDown\" ? 1 : -1;\n const { start, end } = computeMoveResult({\n originalStart: event.start,\n originalEnd: event.end,\n targetDay: days[dayIndex]!,\n deltaYPx: direction * SLOT_HEIGHT_PX,\n slotDuration,\n startHour,\n endHour,\n });\n if (start.getTime() === event.start.getTime()) return;\n onEventChange?.(event, start, end);\n announceMove(event, start, end);\n break;\n }\n case \"ArrowLeft\":\n case \"ArrowRight\": {\n keyboardEvent.preventDefault();\n const direction = keyboardEvent.key === \"ArrowRight\" ? 1 : -1;\n const targetDayIndex = Math.min(6, Math.max(0, dayIndex + direction));\n if (targetDayIndex === dayIndex) return;\n const { start, end } = computeMoveResult({\n originalStart: event.start,\n originalEnd: event.end,\n targetDay: days[targetDayIndex]!,\n deltaYPx: 0,\n slotDuration,\n startHour,\n endHour,\n });\n onEventChange?.(event, start, end);\n announceMove(event, start, end);\n break;\n }\n default:\n return;\n }\n };\n\n const dragPreviewMetrics =\n drag && drag.kind === \"move\"\n ? getVerticalMetrics(drag.currentStart, drag.currentEnd, startHour, endHour)\n : null;\n\n return (\n <div className={[root, className].filter(Boolean).join(\" \")}>\n <div\n aria-live=\"polite\"\n className={visuallyHidden}\n >\n {announcement}\n </div>\n <div className={header}>\n <span className={rangeLabel}>{rangeLabelText}</span>\n <div className={headerNav}>\n <button\n type=\"button\"\n className={navButton}\n aria-label=\"Previous week\"\n onClick={() => onDateChange?.(addDays(date, -7))}\n >\n ‹\n </button>\n <button\n type=\"button\"\n className={todayButton}\n onClick={() => onDateChange?.(new Date())}\n >\n Today\n </button>\n <button\n type=\"button\"\n className={navButton}\n aria-label=\"Next week\"\n onClick={() => onDateChange?.(addDays(date, 7))}\n >\n ›\n </button>\n </div>\n </div>\n\n <div className={dayHeaderRow}>\n <div className={dayHeaderGutter} />\n {days.map((day) => {\n const isToday = isSameDay(day, today);\n return (\n <div key={day.toISOString()} className={dayHeaderCell} data-today={isToday || undefined}>\n <span>{weekdayFormatter.format(day)}</span>\n <span className={dayHeaderDateNumber} data-today={isToday || undefined}>\n {dayNumberFormatter.format(day)}\n </span>\n </div>\n );\n })}\n </div>\n\n <div className={allDayRow}>\n <div className={allDayGutter}>All day</div>\n {days.map((day, dayIndex) => (\n <div key={day.toISOString()} className={allDayCell}>\n {allDayEventsByDay[dayIndex]!.map((event) => {\n const color = getEventColor(event.id, event.color);\n const selected = event.id === selectedEventId;\n return (\n <button\n key={event.id}\n type=\"button\"\n className={allDayEventBlock}\n style={{ background: color }}\n data-selected={selected || undefined}\n onClick={() => handleEventActivate(event)}\n >\n {event.title}\n </button>\n );\n })}\n </div>\n ))}\n </div>\n\n <div className={scrollArea}>\n <div className={timeGutter} style={{ height: totalHeightPx }}>\n {hourMarks.map((mark) => (\n <span\n key={mark.hour}\n className={hourLabel}\n style={{ top: `${mark.top}%` }}\n >\n {mark.label}\n </span>\n ))}\n </div>\n {days.map((day, dayIndex) => {\n const isToday = isSameDay(day, today);\n return (\n <div\n key={day.toISOString()}\n ref={(el) => {\n dayColumnRefs.current[dayIndex] = el;\n }}\n className={dayColumn}\n style={{ height: totalHeightPx }}\n >\n {isToday && showNowLine ? (\n <div className={nowLine} style={{ top: `${nowTop}%` }}>\n <span className={nowLineDot} />\n </div>\n ) : null}\n {timedEventsByDay[dayIndex]!.map(({ event, metrics, placement }) => {\n const color = getEventColor(event.id, event.color);\n const selected = event.id === selectedEventId;\n const isResizingThis =\n drag?.kind === \"resize\" && drag.event.id === event.id;\n const isDraggingThis = drag?.event.id === event.id;\n const displayMetrics =\n isResizingThis\n ? getVerticalMetrics(event.start, drag!.currentEnd, startHour, endHour) ??\n metrics\n : metrics;\n const displayEnd = isResizingThis ? drag!.currentEnd : event.end;\n const width = 100 / placement.columnCount;\n const left = placement.columnIndex * width;\n const showTime = displayMetrics.height > 6;\n return (\n <button\n key={event.id}\n type=\"button\"\n className={eventBlock}\n data-selected={selected || undefined}\n data-editable={editable || undefined}\n data-dragging={isDraggingThis || undefined}\n style={{\n top: `${displayMetrics.top}%`,\n height: `${displayMetrics.height}%`,\n left: `${left}%`,\n width: `${width}%`,\n background: color,\n }}\n onClick={() => handleEventActivate(event)}\n onPointerDown={editable ? handleMovePointerDown(event, dayIndex) : undefined}\n onPointerMove={editable ? handleDragPointerMove : undefined}\n onPointerUp={editable ? handleDragPointerUp : undefined}\n onPointerCancel={editable ? handleDragPointerCancel : undefined}\n onKeyDown={editable ? (e) => handleEventKeyDown(e, event, dayIndex) : undefined}\n >\n <span className={eventTitle}>{event.title}</span>\n {showTime ? (\n <span className={eventTime}>\n {formatEventTime(event.start, locale)} –{\" \"}\n {formatEventTime(displayEnd, locale)}\n </span>\n ) : null}\n {editable ? (\n <span\n className={resizeHandle}\n onPointerDown={handleResizePointerDown(event, dayIndex)}\n onPointerMove={handleDragPointerMove}\n onPointerUp={handleDragPointerUp}\n onPointerCancel={handleDragPointerCancel}\n />\n ) : null}\n </button>\n );\n })}\n {drag &&\n drag.kind === \"move\" &&\n drag.currentDayIndex === dayIndex &&\n dragPreviewMetrics ? (\n <div\n className={dragPreview}\n style={{\n top: `${dragPreviewMetrics.top}%`,\n height: `${dragPreviewMetrics.height}%`,\n left: 0,\n width: \"100%\",\n }}\n >\n <span className={dragPreviewLabel}>{drag.event.title}</span>\n <span className={dragPreviewLabel}>\n {formatEventTime(drag.currentStart, locale)} –{\" \"}\n {formatEventTime(drag.currentEnd, locale)}\n </span>\n </div>\n ) : null}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n","import 'src/components/Scheduler/Scheduler.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-1ZS2_cNhC--1foEsQGzEC7ftRR0EOTtHWBOCiSHFoUhUGJsxJjilRIaneVov-9EClRj5XWErpOnKKAEVvkcDjPb2aYZ--jBEjOQN5KIfTt7UKL5xfJ0vf-OvI8QlXGcBF4KwbbF0ee-Y0IlRBpKnjgRYLlKTc7gmu0willReCtsTxGyCyFghS3t8u7Ai83C__EkSr6GTqE5cL71JGeGdJIMCFrMvOBNGx1TWWJQhzdxVLknHQpVS5XOIJ3mCog9ZGlPSIkAYk2lOikPtReq6k3bWqlCwY9arNWUxdt6gHR7U5NTdrUEhOaq5rcfqHUSS0MrViDXDGxCbyEEgL8xdHfR88aByaADfvKhYthF2JGY46ohlQFXgRcgyyXP-ZK01WBIsE1cB14KsMRoBD0BsB4OMZZLZ_dU85biREvw4RQHu8nqvQNhdYinemA6tA8P1SHJrljwJxv8dpZdDnLojv22qr6rrh_F8frl7nWgru7zrp3Uc4oBzTXic1Wx9KVPKyW584YLAEaJ3o_zZdLHC0xVxmWwPV9edLEGN8BhB6bSYAS5VKVVJmgtfnGMevGJeni3Jw2jqptuTB5m-tyMfC44FAuGKFoCaEokyIDqYugJbUV7NQLxRapBBOx6R0iucQWgK0wqegs_4SV02gRnfQOa5pSHqNVzqMBHoAV5bE7DRMiNUhKYAq40McBoQqHDMiJCd97kNndMuWSlYhyhdZU0ZCB5e7M42LWfCFDWjNf95lrQXDRY39-4GybkkoVXCIGKz0JWJHcZToCr4-8sH3VhN1pMv5L6TkY3IdP0OFrDpaiEvMY3uAQmON-YfgZJ246ydVaugFC88a7V_d0mz3k7khAcHFt6v87sXEyXHZRIpaUmEIvKUEa0oxhDci2xC7i16B0LgGpmjWKc63rdDz1Li6z7YknIQOsj7879RYr-Y31Sc5Ur4A1_rqaO0DMB1nTYC2zbRsitdjbdDWEVt39tOOh85ujXCz3DSo3uW5GD9selMvI5PtKyDTw8iwDGWEF08z6B8EaI5N_3z_VMoenfxpLDwiQSZpi6aavy0anORk0LNRrrOFtnoateeN5k6HTGqVJ0N43l8Xo6UI9rL1eCtZo9bxvLczYa1y0EQT_jyADCGLt9LPRypkq_Hfja7P1AFk8IH0nS6O54DcAZfuhKaUczZjXyh5zZgiYI_MCwByZ734VScHYDxKwMyD5gnlSv6qgIvBwroUxL946816e-6Vjuv0PTaEXr7bhyYRt4wJPAsOarvtglYhcdjubVe8gDpVguTad6EDH34-EFjaaP0vT_H6MLvwnD1fDNgnVYOUpEXkjcbaLya-Me5ya8ah9Hm2UtvtjRFMcQ2CmeyxRXE4ywPWxFp7FvdOaWYKlRmWkOvPyE2-RbU_bo0250L_BhmZQhSgqetvWiQvff-Itz3cikovNG8rBmTvZE1V24vRbAea3h1a_ZSwtstojFTy1Niq7K8Fsera2BuxLyqbe2dfOPZ8R5QS2gbc0yGfHNwRr4FoN1vpKzdetp2p6r6bo3IpumsP6o9Lqyn7Vul91lBwcXlc5cyD7ae8D9K7GHV2Mmi-ZiO6cLh_36DKjnOw-FM-cx7_WK5-rfcts69VeKztAU_YD48-RgX8EvX7ha5DKyXAxZ-J_hPP9UMwcbu4e4m4baAUMIg2k00Mf_BYgVJevE91OvfJ1LHFosziPEoQr6w1gxDh_InEcUx53-IsMR7T0t__s_EXvvpDyuP82ASUQX2NOWIO2d_PRth5AazxyL8YVztZicIXslZN0LzX8VcKaQjN0sMcIKt1qUmEHwSoBsosS905pYwg8SNxy-NkY6AyXolbBOhs3fLe9Sw__cLXTuXX-y6FFXK5fm-UP5T_uFJ4-fw953SByswGM0UxRNa0zXFOVY8aKa8POmYnvCdIqZBa9ROmNS75t3GVMeeChandI_IjRrOyyIn3sn3rVz3hfWwejuWFg8vtxF25Ed3wJy822Ir7_5NssyZdfriTPCP9vpnqPB8zhavj4HQ9UyT9Q3aqE2aOFu4MjWaV92ij_6Z4n0ENp0hSwq4uDqfYPbk-lZwskAAA';\nexport var allDayCell = 'Scheduler_allDayCell__1to95h2c';\nexport var allDayEventBlock = 'Scheduler_allDayEventBlock__1to95h2o';\nexport var allDayGutter = 'Scheduler_allDayGutter__1to95h2b';\nexport var allDayRow = 'Scheduler_allDayRow__1to95h2a';\nexport var dayColumn = 'Scheduler_dayColumn__1to95h2g';\nexport var dayHeaderCell = 'Scheduler_dayHeaderCell__1to95h28';\nexport var dayHeaderDateNumber = 'Scheduler_dayHeaderDateNumber__1to95h29';\nexport var dayHeaderGutter = 'Scheduler_dayHeaderGutter__1to95h27';\nexport var dayHeaderRow = 'Scheduler_dayHeaderRow__1to95h26';\nexport var dragPreview = 'Scheduler_dragPreview__1to95h2l';\nexport var dragPreviewLabel = 'Scheduler_dragPreviewLabel__1to95h2m';\nexport var eventBlock = 'Scheduler_eventBlock__1to95h2j';\nexport var eventTime = 'Scheduler_eventTime__1to95h2q';\nexport var eventTitle = 'Scheduler_eventTitle__1to95h2p';\nexport var header = 'Scheduler_header__1to95h21';\nexport var headerNav = 'Scheduler_headerNav__1to95h22';\nexport var hourLabel = 'Scheduler_hourLabel__1to95h2f';\nexport var navButton = 'Scheduler_navButton__1to95h23';\nexport var nowLine = 'Scheduler_nowLine__1to95h2h';\nexport var nowLineDot = 'Scheduler_nowLineDot__1to95h2i';\nexport var rangeLabel = 'Scheduler_rangeLabel__1to95h25';\nexport var resizeHandle = 'Scheduler_resizeHandle__1to95h2k';\nexport var root = 'Scheduler_root__1to95h20';\nexport var scrollArea = 'Scheduler_scrollArea__1to95h2d';\nexport var timeGutter = 'Scheduler_timeGutter__1to95h2e';\nexport var todayButton = 'Scheduler_todayButton__1to95h24';\nexport var visuallyHidden = 'Scheduler_visuallyHidden__1to95h2n';","import { vars } from \"@vesture/tokens\";\n\n/** Pixel height of one `slotDuration` row in the time grid — shared between layout math and Scheduler.css.ts's gridline background sizing. */\nexport const SLOT_HEIGHT_PX = 24;\n\nexport interface OverlapLayoutInput {\n id: string;\n start: Date;\n end: Date;\n}\n\nexport interface OverlapLayoutResult {\n id: string;\n /** 0-based column within this event's overlap cluster. */\n columnIndex: number;\n /** Total columns in this event's overlap cluster — width = 100% / columnCount. */\n columnCount: number;\n}\n\n/**\n * Cluster-and-pack overlap layout for a single day's timed (non-all-day) events.\n *\n * 1. Sort by start time.\n * 2. Sweep forward, grouping events into overlap clusters: an event joins the current\n * cluster if it starts before the cluster's running max end time, so two events that\n * don't directly overlap can still land in the same cluster when a third event bridges\n * them (sorting by start makes this sweep equivalent to transitive-overlap grouping).\n * 3. Within each cluster, greedily assign each event the lowest-index column whose\n * previous occupant has already ended by this event's start (classic interval-graph\n * coloring). Touching endpoints (a.end === b.start) do not count as overlapping.\n */\nexport function layoutOverlappingEvents(\n events: OverlapLayoutInput[]\n): OverlapLayoutResult[] {\n if (events.length === 0) return [];\n\n const sorted = [...events].sort((a, b) => {\n const startDiff = a.start.getTime() - b.start.getTime();\n if (startDiff !== 0) return startDiff;\n return a.end.getTime() - b.end.getTime();\n });\n\n const results = new Map<string, OverlapLayoutResult>();\n\n let cluster: OverlapLayoutInput[] = [];\n let clusterEnd = -Infinity;\n\n const flushCluster = () => {\n if (cluster.length === 0) return;\n const columnEndTimes: number[] = [];\n for (const event of cluster) {\n const startTime = event.start.getTime();\n let columnIndex = columnEndTimes.findIndex((end) => end <= startTime);\n if (columnIndex === -1) {\n columnIndex = columnEndTimes.length;\n columnEndTimes.push(event.end.getTime());\n } else {\n columnEndTimes[columnIndex] = event.end.getTime();\n }\n results.set(event.id, { id: event.id, columnIndex, columnCount: 0 });\n }\n const columnCount = columnEndTimes.length;\n for (const event of cluster) {\n results.get(event.id)!.columnCount = columnCount;\n }\n cluster = [];\n };\n\n for (const event of sorted) {\n const startTime = event.start.getTime();\n const endTime = event.end.getTime();\n if (cluster.length === 0 || startTime < clusterEnd) {\n cluster.push(event);\n clusterEnd = Math.max(clusterEnd, endTime);\n } else {\n flushCluster();\n cluster.push(event);\n clusterEnd = endTime;\n }\n }\n flushCluster();\n\n return events.map((event) => results.get(event.id)!);\n}\n\nexport interface VerticalMetrics {\n /** Percentage (0-100) from the top of the visible grid. */\n top: number;\n /** Percentage (0-100) of the visible grid's height. */\n height: number;\n}\n\n/**\n * Maps an event's start/end into a percentage-based vertical position within the visible\n * `[startHour, endHour)` range, clipping either edge that falls outside it. Returns `null`\n * when the event doesn't intersect the visible range at all — clip-don't-exclude is the\n * chosen behavior for partially-visible events (an event that starts before the grid but\n * runs into it should still show a truncated block), but events entirely outside the range\n * are dropped rather than rendered as zero-height slivers.\n */\nexport function getVerticalMetrics(\n start: Date,\n end: Date,\n startHour: number,\n endHour: number\n): VerticalMetrics | null {\n const rangeStartMinutes = startHour * 60;\n const rangeEndMinutes = endHour * 60;\n const totalMinutes = rangeEndMinutes - rangeStartMinutes;\n if (totalMinutes <= 0) return null;\n\n const startMinutes = start.getHours() * 60 + start.getMinutes();\n const endMinutes = end.getHours() * 60 + end.getMinutes();\n\n const clippedStart = Math.max(startMinutes, rangeStartMinutes);\n const clippedEnd = Math.min(endMinutes, rangeEndMinutes);\n if (clippedEnd <= clippedStart) return null;\n\n return {\n top: ((clippedStart - rangeStartMinutes) / totalMinutes) * 100,\n height: ((clippedEnd - clippedStart) / totalMinutes) * 100,\n };\n}\n\n/**\n * Converts a pointer's vertical pixel delta into a snapped minutes delta, using the same\n * SLOT_HEIGHT_PX-per-slotDuration relationship the time grid renders with — this is the one\n * place pixel-to-time conversion happens; drag-to-move, resize, and their keyboard\n * equivalents all funnel through this rather than re-deriving the mapping.\n */\nexport function pixelDeltaToSnappedMinutes(deltaPx: number, slotDuration: number): number {\n const rawSlots = deltaPx / SLOT_HEIGHT_PX;\n return Math.round(rawSlots) * slotDuration;\n}\n\nexport function minutesOfDay(date: Date): number {\n return date.getHours() * 60 + date.getMinutes();\n}\n\n/** Builds a Date on `day`'s calendar date at `minutesOfDay` time-of-day. */\nexport function combineDayAndMinutes(day: Date, minutesOfDayValue: number): Date {\n const result = new Date(day.getFullYear(), day.getMonth(), day.getDate());\n result.setMinutes(minutesOfDayValue);\n return result;\n}\n\nexport interface MoveResult {\n start: Date;\n end: Date;\n}\n\n/**\n * Computes a moved event's new start/end from a pixel delta + target day, snapped to\n * slotDuration and clamped so the event never starts before startHour or ends after endHour.\n * Duration is always preserved exactly — a move never changes an event's length.\n */\nexport function computeMoveResult(params: {\n originalStart: Date;\n originalEnd: Date;\n targetDay: Date;\n deltaYPx: number;\n slotDuration: number;\n startHour: number;\n endHour: number;\n}): MoveResult {\n const { originalStart, originalEnd, targetDay, deltaYPx, slotDuration, startHour, endHour } =\n params;\n const durationMinutes = (originalEnd.getTime() - originalStart.getTime()) / 60000;\n const deltaMinutes = pixelDeltaToSnappedMinutes(deltaYPx, slotDuration);\n const rawStartMinutes = minutesOfDay(originalStart) + deltaMinutes;\n\n const rangeStart = startHour * 60;\n const rangeEnd = endHour * 60;\n const maxStart = Math.max(rangeStart, rangeEnd - durationMinutes);\n const clampedStartMinutes = Math.min(Math.max(rawStartMinutes, rangeStart), maxStart);\n\n const start = combineDayAndMinutes(targetDay, clampedStartMinutes);\n const end = new Date(start.getTime() + durationMinutes * 60000);\n return { start, end };\n}\n\n/**\n * Computes a resized event's new end time from a pixel delta, snapped to slotDuration and\n * clamped to [originalStart + minEventDuration, endHour]. Start time never changes.\n */\nexport function computeResizeResult(params: {\n originalStart: Date;\n originalEnd: Date;\n deltaYPx: number;\n slotDuration: number;\n minEventDuration: number;\n endHour: number;\n}): { end: Date } {\n const { originalStart, originalEnd, deltaYPx, slotDuration, minEventDuration, endHour } =\n params;\n const deltaMinutes = pixelDeltaToSnappedMinutes(deltaYPx, slotDuration);\n const rawEndMinutes = minutesOfDay(originalEnd) + deltaMinutes;\n const startMinutes = minutesOfDay(originalStart);\n const rangeEnd = endHour * 60;\n const clampedEndMinutes = Math.min(\n Math.max(rawEndMinutes, startMinutes + minEventDuration),\n rangeEnd\n );\n const end = combineDayAndMinutes(originalStart, clampedEndMinutes);\n return { end };\n}\n\n/** Same fixed-order categorical cycle the chart components use, for visual consistency. */\nexport const SERIES_COLOR_CYCLE: readonly string[] = [\n vars.chart.series1,\n vars.chart.series2,\n vars.chart.series3,\n vars.chart.series4,\n vars.chart.series5,\n vars.chart.series6,\n vars.chart.series7,\n vars.chart.series8,\n];\n\n/** Stable djb2-style string hash, used to key an event's fallback color to its id so the same event always gets the same color across re-renders. */\nexport function hashStringToIndex(value: string, bucketCount: number): number {\n let hash = 5381;\n for (let i = 0; i < value.length; i++) {\n hash = (hash * 33) ^ value.charCodeAt(i);\n }\n return Math.abs(hash) % bucketCount;\n}\n\nexport function getEventColor(id: string, override: string | undefined): string {\n if (override) return override;\n return SERIES_COLOR_CYCLE[hashStringToIndex(id, SERIES_COLOR_CYCLE.length)]!;\n}\n","export { Button } from \"./components/Button\";\nexport type { ButtonProps, ButtonVariant } from \"./components/Button\";\n\nexport { Label } from \"./components/Label\";\nexport type { LabelProps } from \"./components/Label\";\n\nexport { Input } from \"./components/Input\";\nexport type { InputProps } from \"./components/Input\";\n\nexport { Textarea } from \"./components/Textarea\";\nexport type { TextareaProps } from \"./components/Textarea\";\n\nexport { Select } from \"./components/Select\";\nexport type { SelectProps } from \"./components/Select\";\n\nexport { Checkbox } from \"./components/Checkbox\";\nexport type { CheckboxProps } from \"./components/Checkbox\";\n\nexport { Radio } from \"./components/Radio\";\nexport type { RadioProps } from \"./components/Radio\";\n\nexport { Switch } from \"./components/Switch\";\nexport type { SwitchProps } from \"./components/Switch\";\n\nexport { Card } from \"./components/Card\";\nexport type { CardElevation, CardProps } from \"./components/Card\";\n\nexport { Stack } from \"./components/Stack\";\nexport type {\n StackAlign,\n StackDirection,\n StackGap,\n StackJustify,\n StackProps,\n} from \"./components/Stack\";\n\nexport { Divider } from \"./components/Divider\";\nexport type { DividerOrientation, DividerProps } from \"./components/Divider\";\n\nexport { Tooltip } from \"./components/Tooltip\";\nexport type { TooltipProps } from \"./components/Tooltip\";\n\nexport { Popover } from \"./components/Popover\";\nexport type { PopoverProps } from \"./components/Popover\";\n\nexport { Modal } from \"./components/Modal\";\nexport type { ModalProps } from \"./components/Modal\";\n\nexport { ToastProvider, useToast } from \"./components/Toast\";\nexport type {\n ToastContextValue,\n ToastOptions,\n ToastVariant,\n} from \"./components/Toast\";\n\nexport { DropdownMenu, DropdownMenuItem } from \"./components/DropdownMenu\";\nexport type {\n DropdownMenuItemProps,\n DropdownMenuProps,\n} from \"./components/DropdownMenu\";\n\nexport { Breadcrumbs, BreadcrumbsItem } from \"./components/Breadcrumbs\";\nexport type {\n BreadcrumbsItemProps,\n BreadcrumbsProps,\n} from \"./components/Breadcrumbs\";\n\nexport { Pagination } from \"./components/Pagination\";\nexport type { PaginationProps } from \"./components/Pagination\";\n\nexport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"./components/Accordion\";\nexport type {\n AccordionContentProps,\n AccordionItemProps,\n AccordionProps,\n AccordionTriggerProps,\n} from \"./components/Accordion\";\n\nexport { Tabs, TabsList, TabsPanel, TabsTrigger } from \"./components/Tabs\";\nexport type {\n TabsListProps,\n TabsPanelProps,\n TabsProps,\n TabsTriggerProps,\n} from \"./components/Tabs\";\n\nexport { Badge } from \"./components/Badge\";\nexport type { BadgeProps, BadgeVariant } from \"./components/Badge\";\n\nexport { Avatar } from \"./components/Avatar\";\nexport type {\n AvatarProps,\n AvatarSize,\n AvatarStatus,\n} from \"./components/Avatar\";\n\nexport { Progress } from \"./components/Progress\";\nexport type { ProgressProps } from \"./components/Progress\";\n\nexport { Spinner } from \"./components/Spinner\";\nexport type { SpinnerProps, SpinnerSize } from \"./components/Spinner\";\n\nexport { Alert } from \"./components/Alert\";\nexport type { AlertProps, AlertVariant } from \"./components/Alert\";\n\nexport { DataGrid } from \"./components/DataGrid\";\nexport type {\n DataGridColumn,\n DataGridExportOptions,\n DataGridHandle,\n DataGridProps,\n SortDirection,\n SortState,\n} from \"./components/DataGrid\";\n\nexport { Calendar } from \"./components/Calendar\";\nexport type { CalendarProps } from \"./components/Calendar\";\n\nexport { DatePicker } from \"./components/DatePicker\";\nexport type { DatePickerProps } from \"./components/DatePicker\";\n\nexport { DateRangePicker } from \"./components/DateRangePicker\";\nexport type {\n DateRange,\n DateRangePickerProps,\n} from \"./components/DateRangePicker\";\n\nexport { NumberInput } from \"./components/NumberInput\";\nexport type { NumberInputProps } from \"./components/NumberInput\";\n\nexport { Slider } from \"./components/Slider\";\nexport type { SliderProps, SliderValue } from \"./components/Slider\";\n\nexport { Combobox } from \"./components/Combobox\";\nexport type {\n ComboboxOption,\n ComboboxProps,\n} from \"./components/Combobox\";\n\nexport { TreeView } from \"./components/TreeView\";\nexport type {\n TreeNode,\n TreeViewProps,\n TreeViewSelectable,\n} from \"./components/TreeView\";\n\nexport { CommandPalette, useCommandPaletteShortcut } from \"./components/CommandPalette\";\nexport type {\n CommandItem,\n CommandPaletteProps,\n UseCommandPaletteShortcutOptions,\n} from \"./components/CommandPalette\";\n\nexport { LineChart, InteractiveLineChart } from \"./components/charts/LineChart\";\nexport type {\n LineChartBaseProps,\n LineChartDataPoint,\n LineChartMargin,\n LineChartProps,\n LineChartSeries,\n LineChartXScaleType,\n InteractiveLineChartProps\n} from \"./components/charts/LineChart\";\n\nexport { BarChart, InteractiveBarChart } from \"./components/charts/BarChart\";\nexport type {\n BarChartBaseProps,\n BarChartDataPoint,\n BarChartLayout,\n BarChartMargin,\n BarChartProps,\n BarChartSeries,\n InteractiveBarChartProps\n} from \"./components/charts/BarChart\";\n\nexport { AreaChart, InteractiveAreaChart } from \"./components/charts/AreaChart\";\nexport type {\n AreaChartBaseProps,\n AreaChartDataPoint,\n AreaChartMargin,\n AreaChartProps,\n AreaChartSeries,\n AreaChartXScaleType,\n InteractiveAreaChartProps\n} from \"./components/charts/AreaChart\";\n\nexport { PieChart, InteractivePieChart } from \"./components/charts/PieChart\";\nexport type {\n PieChartBaseProps,\n PieChartDataPoint,\n PieChartProps,\n InteractivePieChartProps\n} from \"./components/charts/PieChart\";\n\nexport { Scheduler } from \"./components/Scheduler\";\nexport type { SchedulerEvent, SchedulerProps } from \"./components/Scheduler\";\n\nexport { vars, defaultThemeClass, defaultThemeVars } from \"@vesture/tokens\";\n"],"mappings":"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","names":["Button","forwardRef","jsx","forwardRef","Label","forwardRef","jsx","forwardRef","Input","forwardRef","jsx","forwardRef","Textarea","forwardRef","jsx","jsxs","forwardRef","Select","forwardRef","wrapper","jsx","jsxs","forwardRef","Checkbox","label","wrapper","forwardRef","hiddenInput","wrapper","jsx","jsxs","forwardRef","Radio","label","wrapper","hiddenInput","forwardRef","hiddenInput","wrapper","jsx","jsxs","forwardRef","Switch","label","wrapper","hiddenInput","forwardRef","jsx","forwardRef","Card","forwardRef","jsx","forwardRef","Stack","forwardRef","jsx","forwardRef","Divider","useRef","jsx","jsxs","useRef","cloneElement","isValidElement","useState","FloatingPortal","autoUpdate","flip","offset","shift","useDismiss","useFloating","useInteractions","useMergeRefs","useRole","Fragment","jsx","jsxs","useState","useFloating","autoUpdate","offset","flip","shift","useInteractions","useDismiss","useRole","useMergeRefs","isValidElement","cloneElement","FloatingPortal","FloatingFocusManager","FloatingPortal","useDismiss","useFloating","useInteractions","useRole","jsx","jsxs","title","useFloating","useInteractions","useDismiss","useRole","FloatingPortal","FloatingFocusManager","useState","closeButton","jsx","jsxs","useState","current","item","closeButton","cloneElement","isValidElement","useRef","useState","FloatingFocusManager","FloatingPortal","autoUpdate","flip","offset","shift","useClick","useDismiss","useFloating","useInteractions","useMergeRefs","useRole","createContext","useContext","Fragment","jsx","jsxs","trigger","useState","useRef","useFloating","autoUpdate","offset","flip","shift","useInteractions","useClick","useDismiss","useRole","useMergeRefs","cloneElement","FloatingPortal","FloatingFocusManager","isValidElement","useMergeRefs","jsx","useMergeRefs","DropdownMenu","Fragment","cloneElement","isValidElement","item","jsx","jsxs","isValidElement","Fragment","cloneElement","jsx","item","Breadcrumbs","list","jsx","jsxs","list","item","useState","item","createContext","useContext","jsx","useState","jsx","jsx","item","jsx","jsxs","Accordion","useState","createContext","useContext","jsx","useState","list","trigger","jsx","list","jsx","jsx","trigger","Tabs","forwardRef","variant","jsx","forwardRef","Badge","variant","forwardRef","useState","wrapper","jsx","jsxs","forwardRef","Avatar","useState","wrapper","label","track","jsx","jsxs","label","track","size","jsx","label","size","accent","body","closeButton","description","title","jsx","jsxs","variant","accent","body","title","description","closeButton","forwardRef","useCallback","useEffect","useMemo","useRef","useState","body","srOnly","Fragment","jsx","jsxs","useState","useEffect","useRef","row","current","useMemo","useCallback","direction","srOnly","body","forwardRef","useEffect","useMemo","useRef","useState","root","jsx","jsxs","direction","useState","useRef","useEffect","useMemo","root","useEffect","useRef","useState","FloatingFocusManager","FloatingPortal","autoUpdate","flip","offset","shift","useDismiss","useFloating","useInteractions","useRole","iconButton","popover","wrapper","jsx","jsxs","startOfMonth","clampToMidnight","useState","useRef","useEffect","useFloating","autoUpdate","offset","flip","shift","useInteractions","useDismiss","useRole","wrapper","iconButton","FloatingPortal","FloatingFocusManager","popover","useEffect","useState","FloatingFocusManager","FloatingPortal","autoUpdate","flip","offset","shift","useDismiss","useFloating","useInteractions","useRole","dateInput","iconButton","popover","separator","wrapper","jsx","jsxs","startOfMonth","clampToMidnight","x","y","isDisabled","getDatePartOrder","getDatePlaceholder","formatDate","parseDate","useState","useEffect","useFloating","autoUpdate","offset","flip","shift","useInteractions","useDismiss","useRole","wrapper","dateInput","separator","iconButton","FloatingPortal","FloatingFocusManager","popover","forwardRef","useEffect","useRef","useState","useMergeRefs","input","wrapper","jsx","jsxs","forwardRef","NumberInput","useState","useEffect","useRef","useMergeRefs","direction","base","wrapper","input","useRef","useState","range","root","track","jsx","jsxs","formatValue","useState","useRef","current","label","root","track","range","useEffect","useId","useRef","useState","FloatingPortal","autoUpdate","flip","offset","shift","useDismiss","useFloating","useInteractions","useRole","emptyState","wrapper","jsx","jsxs","useState","useEffect","useRef","useId","useFloating","autoUpdate","offset","flip","shift","useInteractions","useDismiss","useRole","direction","wrapper","FloatingPortal","emptyState","useEffect","useMemo","useRef","useState","vars","checkboxCell","chevron","label","root","row","jsx","jsxs","useState","useRef","useMemo","list","useEffect","root","row","vars","chevron","checkboxCell","label","useEffect","useId","useMemo","useRef","useState","FloatingFocusManager","FloatingOverlay","FloatingPortal","useDismiss","useFloating","useInteractions","useRole","emptyState","inputEl","list","option","overlay","virtualSpacer","jsx","jsxs","OVERSCAN","useState","useRef","useId","useFloating","useInteractions","useDismiss","useRole","useMemo","useEffect","direction","row","option","FloatingPortal","FloatingOverlay","overlay","FloatingFocusManager","inputEl","list","emptyState","virtualSpacer","useEffect","vars","x","x","y","x","x","y","x","y","path","path","vars","x","y","emptyState","root","tooltip","jsx","jsxs","root","emptyState","vars","useMemo","useState","jsx","jsxs","useState","useMemo","root","tooltip","AxisBottom","AxisLeft","GridRows","Group","vars","scaleBand","scaleLinear","vars","DEFAULT_MARGIN","SERIES_COLOR_CYCLE","getSeriesColor","resolveMargin","numericValue","buildScales","emptyState","legend","legendItem","legendItemHidden","legendSwatch","root","tooltip","tooltipRow","tooltipSwatch","jsx","jsxs","root","emptyState","SERIES_COLOR_CYCLE","Group","GridRows","vars","AxisBottom","AxisLeft","useMemo","useState","AxisBottom","AxisLeft","GridRows","Group","ParentSize","BarGroup","BarStack","TooltipWithBounds","useTooltip","vars","jsx","jsxs","useState","useMemo","getSeriesColor","useTooltip","root","emptyState","ParentSize","SERIES_COLOR_CYCLE","x","y","Group","GridRows","vars","BarStack","BarGroup","AxisBottom","AxisLeft","TooltipWithBounds","tooltip","tooltipRow","tooltipSwatch","legend","legendItem","legendItemHidden","legendSwatch","AxisBottom","AxisLeft","GridRows","Group","vars","x","emptyState","legend","legendItem","legendItemHidden","legendSwatch","overlayRect","root","tooltip","tooltipRow","tooltipSwatch","jsx","jsxs","root","emptyState","Group","GridRows","vars","AxisBottom","AxisLeft","useMemo","useState","ParentSize","TooltipWithBounds","useTooltip","jsx","jsxs","useState","useMemo","useTooltip","root","ParentSize","overlayRect","TooltipWithBounds","tooltip","tooltipRow","tooltipSwatch","legend","legendItem","legendItemHidden","legendSwatch","Group","vars","vars","SERIES_COLOR_CYCLE","getSeriesColor","slice","emptyState","legend","legendItem","legendItemHidden","legendSwatch","root","tooltip","tooltipRow","tooltipSwatch","jsx","jsxs","root","emptyState","Group","vars","useMemo","useState","Group","ParentSize","Pie","TooltipWithBounds","useTooltip","vars","jsx","jsxs","OUTER_PADDING","useState","useMemo","useTooltip","root","emptyState","ParentSize","Group","Pie","vars","TooltipWithBounds","tooltip","tooltipRow","tooltipSwatch","legend","legendItem","legendItemHidden","legendSwatch","useMemo","useRef","useState","header","navButton","resizeHandle","root","vars","SERIES_COLOR_CYCLE","jsx","jsxs","useMemo","useState","useRef","direction","root","header","navButton","resizeHandle","vars"]}